]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/decnet/dn_rules.c
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6-omap-h63xx.git] / net / decnet / dn_rules.c
index 17a1932216d63f01d8b3d4ff6e802d825eecc008..ffebea04cc99b9f6c5820734f057f9307ed5e333 100644 (file)
@@ -48,17 +48,6 @@ struct dn_fib_rule
        u8                      flags;
 };
 
-static struct dn_fib_rule default_rule = {
-       .common = {
-               .refcnt =               ATOMIC_INIT(2),
-               .pref =                 0x7fff,
-               .table =                RT_TABLE_MAIN,
-               .action =               FR_ACT_TO_TBL,
-       },
-};
-
-static LIST_HEAD(dn_fib_rules);
-
 
 int dn_fib_lookup(struct flowi *flp, struct dn_fib_res *res)
 {
@@ -108,7 +97,7 @@ errout:
        return err;
 }
 
-static struct nla_policy dn_fib_rule_policy[FRA_MAX+1] __read_mostly = {
+static const struct nla_policy dn_fib_rule_policy[FRA_MAX+1] = {
        FRA_GENERIC_POLICY,
 };
 
@@ -228,9 +217,9 @@ static u32 dn_fib_rule_default_pref(void)
        struct list_head *pos;
        struct fib_rule *rule;
 
-       if (!list_empty(&dn_fib_rules)) {
-               pos = dn_fib_rules.next;
-               if (pos->next != &dn_fib_rules) {
+       if (!list_empty(&dn_fib_rules_ops.rules_list)) {
+               pos = dn_fib_rules_ops.rules_list.next;
+               if (pos->next != &dn_fib_rules_ops.rules_list) {
                        rule = list_entry(pos->next, struct fib_rule, list);
                        if (rule->pref)
                                return rule->pref - 1;
@@ -258,13 +247,14 @@ static struct fib_rules_ops dn_fib_rules_ops = {
        .flush_cache    = dn_fib_rule_flush_cache,
        .nlgroup        = RTNLGRP_DECnet_RULE,
        .policy         = dn_fib_rule_policy,
-       .rules_list     = &dn_fib_rules,
+       .rules_list     = LIST_HEAD_INIT(dn_fib_rules_ops.rules_list),
        .owner          = THIS_MODULE,
 };
 
 void __init dn_fib_rules_init(void)
 {
-       list_add_tail(&default_rule.common.list, &dn_fib_rules);
+       BUG_ON(fib_default_rule_add(&dn_fib_rules_ops, 0x7fff,
+                                   RT_TABLE_MAIN, 0));
        fib_rules_register(&dn_fib_rules_ops);
 }