* rt_netlink.c (netlink_talk_filter): Show always warning message,
	  it's not for debug.
	* rt_netlink.c (netlink_talk): Don't assume we use netlink_cmd
	  although we do now actually.
	* rt_netlink.c (netlink_route, netlink_route_multipath): Always use
	  netlink_cmd to send messages to the kernel.

	[backport candidate]
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index a75bd61..150c08a 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,12 @@
+2005-03-31 Hasso Tepper <hasso at quagga.net>
+
+	* rt_netlink.c (netlink_talk_filter): Show always warning message,
+	  it's not for debug.
+	* rt_netlink.c (netlink_talk): Don't assume we use netlink_cmd
+	  although we do now actually.
+	* rt_netlink.c (netlink_route, netlink_route_multipath): Always use
+	  netlink_cmd to send messages to the kernel.
+
 2005-03-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* irdp.h: Add prototype for irdp_sock_init, and fix protos for
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index 7a78602..042ee33 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -1221,8 +1221,7 @@
 static int
 netlink_talk_filter (struct sockaddr_nl *snl, struct nlmsghdr *h)
 {
-  if (IS_ZEBRA_DEBUG_KERNEL)
-    zlog_debug ("netlink_talk: ignoring message type 0x%04x", h->nlmsg_type);
+  zlog_warn ("netlink_talk: ignoring message type 0x%04x", h->nlmsg_type);
   return 0;
 }
 
@@ -1241,13 +1240,13 @@
   memset (&snl, 0, sizeof snl);
   snl.nl_family = AF_NETLINK;
 
-  n->nlmsg_seq = ++netlink_cmd.seq;
+  n->nlmsg_seq = ++nl->seq;
 
   /* Request an acknowledgement by setting NLM_F_ACK */
   n->nlmsg_flags |= NLM_F_ACK;
 
   if (IS_ZEBRA_DEBUG_KERNEL)
-    zlog_debug ("netlink_talk: %s type %s(%u), seq=%u", netlink_cmd.name,
+    zlog_debug ("netlink_talk: %s type %s(%u), seq=%u", nl->name,
                lookup (nlmsg_str, n->nlmsg_type), n->nlmsg_type,
                n->nlmsg_seq);
 
@@ -1357,7 +1356,7 @@
   snl.nl_family = AF_NETLINK;
 
   /* Talk to netlink socket. */
-  ret = netlink_talk (&req.n, &netlink);
+  ret = netlink_talk (&req.n, &netlink_cmd);
   if (ret < 0)
     return -1;
 
@@ -1373,7 +1372,6 @@
   struct sockaddr_nl snl;
   struct nexthop *nexthop = NULL;
   int nexthop_num = 0;
-  struct nlsock *nl;
   int discard;
 
   struct
@@ -1639,13 +1637,8 @@
   memset (&snl, 0, sizeof snl);
   snl.nl_family = AF_NETLINK;
 
-  if (family == AF_INET)
-    nl = &netlink_cmd;
-  else
-    nl = &netlink;
-
   /* Talk to netlink socket. */
-  return netlink_talk (&req.n, nl);
+  return netlink_talk (&req.n, &netlink_cmd);
 }
 
 int