Signed-off-by: Thomas Graf <[EMAIL PROTECTED]>

Index: net-2.6.22/include/net/dn_fib.h
===================================================================
--- net-2.6.22.orig/include/net/dn_fib.h        2007-03-20 23:53:20.000000000 
+0100
+++ net-2.6.22/include/net/dn_fib.h     2007-03-21 00:52:38.000000000 +0100
@@ -148,17 +148,8 @@ extern void dn_fib_rules_cleanup(void);
 extern unsigned dnet_addr_type(__le16 addr);
 extern int dn_fib_lookup(struct flowi *fl, struct dn_fib_res *res);
 
-/*
- * rtnetlink interface
- */
-extern int dn_fib_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh, void 
*arg);
-extern int dn_fib_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh, void 
*arg);
 extern int dn_fib_dump(struct sk_buff *skb, struct netlink_callback *cb);
 
-extern int dn_fib_rtm_delrule(struct sk_buff *skb, struct nlmsghdr *nlh, void 
*arg);
-extern int dn_fib_rtm_newrule(struct sk_buff *skb, struct nlmsghdr *nlh, void 
*arg);
-extern int dn_fib_dump_rules(struct sk_buff *skb, struct netlink_callback *cb);
-
 extern void dn_fib_free_info(struct dn_fib_info *fi);
 
 static inline void dn_fib_info_put(struct dn_fib_info *fi)
Index: net-2.6.22/net/decnet/dn_rules.c
===================================================================
--- net-2.6.22.orig/net/decnet/dn_rules.c       2007-03-20 23:53:21.000000000 
+0100
+++ net-2.6.22/net/decnet/dn_rules.c    2007-03-21 00:52:38.000000000 +0100
@@ -241,7 +241,7 @@ static u32 dn_fib_rule_default_pref(void
        return 0;
 }
 
-int dn_fib_dump_rules(struct sk_buff *skb, struct netlink_callback *cb)
+static int nl_dn_rules_dump(struct sk_buff *skb, struct netlink_callback *cb)
 {
        return fib_rules_dump(skb, cb, AF_DECnet);
 }
@@ -265,10 +265,12 @@ void __init dn_fib_rules_init(void)
 {
        list_add_tail(&default_rule.common.list, &dn_fib_rules);
        fib_rules_register(&dn_fib_rules_ops);
+       rtnl_register(PF_DECnet, RTM_GETRULE, NULL, nl_dn_rules_dump);
 }
 
 void __exit dn_fib_rules_cleanup(void)
 {
+       rtnl_unregister(PF_DECnet, RTM_GETRULE);
        fib_rules_unregister(&dn_fib_rules_ops);
 }
 
Index: net-2.6.22/net/decnet/dn_fib.c
===================================================================
--- net-2.6.22.orig/net/decnet/dn_fib.c 2007-03-20 23:53:20.000000000 +0100
+++ net-2.6.22/net/decnet/dn_fib.c      2007-03-21 00:52:38.000000000 +0100
@@ -501,7 +501,7 @@ static int dn_fib_check_attr(struct rtms
        return 0;
 }
 
-int dn_fib_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
+int nl_route_del(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
 {
        struct dn_fib_table *tb;
        struct rtattr **rta = arg;
@@ -517,7 +517,7 @@ int dn_fib_rtm_delroute(struct sk_buff *
        return -ESRCH;
 }
 
-int dn_fib_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
+static int nl_route_new(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
 {
        struct dn_fib_table *tb;
        struct rtattr **rta = arg;
@@ -745,11 +745,13 @@ void __exit dn_fib_cleanup(void)
 
 void __init dn_fib_init(void)
 {
-
        dn_fib_table_init();
        dn_fib_rules_init();
 
        register_dnaddr_notifier(&dn_fib_dnaddr_notifier);
+
+       rtnl_register(PF_DECnet, RTM_NEWROUTE, nl_route_new, NULL);
+       rtnl_register(PF_DECnet, RTM_DELROUTE, nl_route_del, NULL);
 }
 
 
Index: net-2.6.22/net/decnet/af_decnet.c
===================================================================
--- net-2.6.22.orig/net/decnet/af_decnet.c      2007-03-20 23:53:20.000000000 
+0100
+++ net-2.6.22/net/decnet/af_decnet.c   2007-03-21 00:52:38.000000000 +0100
@@ -2413,6 +2413,7 @@ module_init(decnet_init);
 static void __exit decnet_exit(void)
 {
        sock_unregister(AF_DECnet);
+       rtnl_unregister_all(PF_DECnet);
        dev_remove_pack(&dn_dix_packet_type);
 
        dn_unregister_sysctl();
Index: net-2.6.22/net/decnet/dn_dev.c
===================================================================
--- net-2.6.22.orig/net/decnet/dn_dev.c 2007-03-20 23:53:20.000000000 +0100
+++ net-2.6.22/net/decnet/dn_dev.c      2007-03-21 00:52:38.000000000 +0100
@@ -645,7 +645,7 @@ static struct nla_policy dn_ifa_policy[I
                                    .len = IFNAMSIZ - 1 },
 };
 
-static int dn_nl_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
+static int nl_addr_del(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
 {
        struct nlattr *tb[IFA_MAX+1];
        struct dn_dev *dn_db;
@@ -677,7 +677,7 @@ errout:
        return err;
 }
 
-static int dn_nl_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
+static int nl_addr_new(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
 {
        struct nlattr *tb[IFA_MAX+1];
        struct net_device *dev;
@@ -789,7 +789,7 @@ errout:
                rtnl_set_sk_err(RTNLGRP_DECnet_IFADDR, err);
 }
 
-static int dn_nl_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb)
+static int nl_addr_dump(struct sk_buff *skb, struct netlink_callback *cb)
 {
        int idx, dn_idx = 0, skip_ndevs, skip_naddr;
        struct net_device *dev;
@@ -1447,24 +1447,6 @@ static const struct file_operations dn_d
 
 #endif /* CONFIG_PROC_FS */
 
-static struct rtnetlink_link dnet_rtnetlink_table[RTM_NR_MSGTYPES] =
-{
-       [RTM_NEWADDR  - RTM_BASE] = { .doit     = dn_nl_newaddr,        },
-       [RTM_DELADDR  - RTM_BASE] = { .doit     = dn_nl_deladdr,        },
-       [RTM_GETADDR  - RTM_BASE] = { .dumpit   = dn_nl_dump_ifaddr,    },
-#ifdef CONFIG_DECNET_ROUTER
-       [RTM_NEWROUTE - RTM_BASE] = { .doit     = dn_fib_rtm_newroute,  },
-       [RTM_DELROUTE - RTM_BASE] = { .doit     = dn_fib_rtm_delroute,  },
-       [RTM_GETROUTE - RTM_BASE] = { .doit     = dn_cache_getroute,
-                                     .dumpit   = dn_fib_dump,          },
-       [RTM_GETRULE  - RTM_BASE] = { .dumpit   = dn_fib_dump_rules,    },
-#else
-       [RTM_GETROUTE - RTM_BASE] = { .doit     = dn_cache_getroute,
-                                     .dumpit   = dn_cache_dump,        },
-#endif
-
-};
-
 static int __initdata addr[2];
 module_param_array(addr, int, NULL, 0444);
 MODULE_PARM_DESC(addr, "The DECnet address of this machine: area,node");
@@ -1485,7 +1467,9 @@ void __init dn_dev_init(void)
 
        dn_dev_devices_on();
 
-       rtnetlink_links[PF_DECnet] = dnet_rtnetlink_table;
+       rtnl_register(PF_DECnet, RTM_NEWADDR, nl_addr_new, NULL);
+       rtnl_register(PF_DECnet, RTM_DELADDR, nl_addr_del, NULL);
+       rtnl_register(PF_DECnet, RTM_GETADDR, NULL, nl_addr_dump);
 
        proc_net_fops_create("decnet_dev", S_IRUGO, &dn_dev_seq_fops);
 
@@ -1500,8 +1484,6 @@ void __init dn_dev_init(void)
 
 void __exit dn_dev_cleanup(void)
 {
-       rtnetlink_links[PF_DECnet] = NULL;
-
 #ifdef CONFIG_SYSCTL
        {
                int i;
Index: net-2.6.22/include/net/dn_route.h
===================================================================
--- net-2.6.22.orig/include/net/dn_route.h      2007-03-20 23:53:20.000000000 
+0100
+++ net-2.6.22/include/net/dn_route.h   2007-03-21 00:52:38.000000000 +0100
@@ -18,7 +18,6 @@
 extern struct sk_buff *dn_alloc_skb(struct sock *sk, int size, gfp_t pri);
 extern int dn_route_output_sock(struct dst_entry **pprt, struct flowi *, 
struct sock *sk, int flags);
 extern int dn_cache_dump(struct sk_buff *skb, struct netlink_callback *cb);
-extern int dn_cache_getroute(struct sk_buff *skb, struct nlmsghdr *nlh, void 
*arg);
 extern void dn_rt_cache_flush(int delay);
 
 /* Masks for flags field */
Index: net-2.6.22/net/decnet/dn_route.c
===================================================================
--- net-2.6.22.orig/net/decnet/dn_route.c       2007-03-20 23:53:20.000000000 
+0100
+++ net-2.6.22/net/decnet/dn_route.c    2007-03-21 00:52:38.000000000 +0100
@@ -1522,7 +1522,7 @@ rtattr_failure:
 /*
  * This is called by both endnodes and routers now.
  */
-int dn_cache_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, void *arg)
+static int dn_cache_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, 
void *arg)
 {
        struct rtattr **rta = arg;
        struct rtmsg *rtm = NLMSG_DATA(nlh);
@@ -1813,6 +1813,13 @@ void __init dn_route_init(void)
        dn_dst_ops.gc_thresh = (dn_rt_hash_mask + 1);
 
        proc_net_fops_create("decnet_cache", S_IRUGO, &dn_rt_cache_seq_fops);
+
+#ifdef CONFIG_DECNET_ROUTER
+       rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute, dn_fib_dump);
+#else
+       rtnl_register(PF_DECnet, RTM_GETROUTE, dn_cache_getroute,
+                     dn_cache_dump);
+#endif
 }
 
 void __exit dn_route_cleanup(void)

--

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to