[RTNETLINK]: Use rtnl_unicast() for rtnetlink unicasts
authorThomas Graf <tgraf@suug.ch>
Tue, 15 Aug 2006 07:30:25 +0000 (00:30 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Fri, 22 Sep 2006 21:54:48 +0000 (14:54 -0700)
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/rtnetlink.h
net/core/rtnetlink.c
net/decnet/dn_route.c
net/ipv4/ipmr.c
net/ipv4/route.c
net/ipv6/addrconf.c
net/ipv6/route.c
net/sched/act_api.c

index 7e4aa48680a7318e1322bb1fe740634e67b36ee2..0e4f478e2cb56b34bacb8838592a57d32ebc80cc 100644 (file)
@@ -584,6 +584,7 @@ struct rtnetlink_link
 
 extern struct rtnetlink_link * rtnetlink_links[NPROTO];
 extern int rtnetlink_send(struct sk_buff *skb, u32 pid, u32 group, int echo);
+extern int rtnl_unicast(struct sk_buff *skb, u32 pid);
 extern int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics);
 
 extern void __rta_fill(struct sk_buff *skb, int attrtype, int attrlen, const void *data);
index a1b783a6afc61e7fd736a580c9f8cdf0d1121d37..e02fa6a33f4269d506bc47b5c71b4f76a49dd50f 100644 (file)
@@ -166,6 +166,11 @@ int rtnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo)
        return err;
 }
 
+int rtnl_unicast(struct sk_buff *skb, u32 pid)
+{
+       return nlmsg_unicast(rtnl, skb, pid);
+}
+
 int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics)
 {
        struct rtattr *mx = (struct rtattr*)skb->tail;
@@ -574,9 +579,7 @@ static int rtnl_getlink(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
                goto errout;
        }
 
-       err = netlink_unicast(rtnl, skb, NETLINK_CB(skb).pid, MSG_DONTWAIT);
-       if (err > 0)
-               err = 0;
+       err = rtnl_unicast(skb, NETLINK_CB(skb).pid);
 errout:
        kfree(iw_buf);
        dev_put(dev);
@@ -825,3 +828,4 @@ EXPORT_SYMBOL(rtnl);
 EXPORT_SYMBOL(rtnl_lock);
 EXPORT_SYMBOL(rtnl_trylock);
 EXPORT_SYMBOL(rtnl_unlock);
+EXPORT_SYMBOL(rtnl_unicast);
index 4c963213fba51a4a01eedaba5b2f8e8422d9eed0..c5daf3557c1f12bca571a086f0970b307028984c 100644 (file)
@@ -1611,9 +1611,7 @@ int dn_cache_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, void *arg)
                goto out_free;
        }
 
-       err = netlink_unicast(rtnl, skb, NETLINK_CB(in_skb).pid, MSG_DONTWAIT);
-
-       return err;
+       return rtnl_unicast(skb, NETLINK_CB(in_skb).pid);
 
 out_free:
        kfree_skb(skb);
index 85893eef6b16c5488ab01d0be5c168874b338293..98f0aa0d421604025c57faad16562ca12005724e 100644 (file)
@@ -312,7 +312,8 @@ static void ipmr_destroy_unres(struct mfc_cache *c)
                        e = NLMSG_DATA(nlh);
                        e->error = -ETIMEDOUT;
                        memset(&e->msg, 0, sizeof(e->msg));
-                       netlink_unicast(rtnl, skb, NETLINK_CB(skb).dst_pid, MSG_DONTWAIT);
+
+                       rtnl_unicast(skb, NETLINK_CB(skb).pid);
                } else
                        kfree_skb(skb);
        }
@@ -512,7 +513,6 @@ static void ipmr_cache_resolve(struct mfc_cache *uc, struct mfc_cache *c)
 
        while((skb=__skb_dequeue(&uc->mfc_un.unres.unresolved))) {
                if (skb->nh.iph->version == 0) {
-                       int err;
                        struct nlmsghdr *nlh = (struct nlmsghdr *)skb_pull(skb, sizeof(struct iphdr));
 
                        if (ipmr_fill_mroute(skb, c, NLMSG_DATA(nlh)) > 0) {
@@ -525,7 +525,8 @@ static void ipmr_cache_resolve(struct mfc_cache *uc, struct mfc_cache *c)
                                e->error = -EMSGSIZE;
                                memset(&e->msg, 0, sizeof(e->msg));
                        }
-                       err = netlink_unicast(rtnl, skb, NETLINK_CB(skb).dst_pid, MSG_DONTWAIT);
+
+                       rtnl_unicast(skb, NETLINK_CB(skb).pid);
                } else
                        ip_mr_forward(skb, c, 0);
        }
index 12128b82c9dcb99f60890df2842d4c0ba7458df2..b8f6cadc5b3a95c508a8c4cdfc66d323289823d4 100644 (file)
@@ -2809,10 +2809,9 @@ int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr* nlh, void *arg)
                goto out_free;
        }
 
-       err = netlink_unicast(rtnl, skb, NETLINK_CB(in_skb).pid, MSG_DONTWAIT);
-       if (err > 0)
-               err = 0;
-out:   return err;
+       err = rtnl_unicast(skb, NETLINK_CB(in_skb).pid);
+out:
+       return err;
 
 out_free:
        kfree_skb(skb);
index 9ba1e811ba502963e77d7cddbe63a8bec46dc0f5..4f991a2234d0b02a30729a934fa3264c1531008a 100644 (file)
@@ -3268,9 +3268,7 @@ static int inet6_rtm_getaddr(struct sk_buff *in_skb,
                goto out_free;
        }
 
-       err = netlink_unicast(rtnl, skb, NETLINK_CB(in_skb).pid, MSG_DONTWAIT);
-       if (err > 0)
-               err = 0;
+       err = rtnl_unicast(skb, NETLINK_CB(in_skb).pid);
 out:
        in6_ifa_put(ifa);
        return err;
index 9ce28277f47fd91bef55c5f58891792b0b48fb0a..024c8e26c2ecc4f285381c370999adb64bd44422 100644 (file)
@@ -2044,9 +2044,7 @@ int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr* nlh, void *arg)
                goto out_free;
        }
 
-       err = netlink_unicast(rtnl, skb, NETLINK_CB(in_skb).pid, MSG_DONTWAIT);
-       if (err > 0)
-               err = 0;
+       err = rtnl_unicast(skb, NETLINK_CB(in_skb).pid);
 out:
        return err;
 out_free:
index a2587b52e531d7284bb85078d9d3c783a4f5dde2..6990747d6d5ac31c4e2b08e5a4f22f5ee031679e 100644 (file)
@@ -459,7 +459,6 @@ static int
 act_get_notify(u32 pid, struct nlmsghdr *n, struct tc_action *a, int event)
 {
        struct sk_buff *skb;
-       int err = 0;
 
        skb = alloc_skb(NLMSG_GOODSIZE, GFP_KERNEL);
        if (!skb)
@@ -468,10 +467,8 @@ act_get_notify(u32 pid, struct nlmsghdr *n, struct tc_action *a, int event)
                kfree_skb(skb);
                return -EINVAL;
        }
-       err = netlink_unicast(rtnl, skb, pid, MSG_DONTWAIT);
-       if (err > 0)
-               err = 0;
-       return err;
+
+       return rtnl_unicast(skb, pid);
 }
 
 static struct tc_action *