|
@@ -49,33 +49,6 @@ struct fib4_rule
|
|
#endif
|
|
#endif
|
|
};
|
|
};
|
|
|
|
|
|
-static struct fib4_rule default_rule = {
|
|
|
|
- .common = {
|
|
|
|
- .refcnt = ATOMIC_INIT(2),
|
|
|
|
- .pref = 0x7FFF,
|
|
|
|
- .table = RT_TABLE_DEFAULT,
|
|
|
|
- .action = FR_ACT_TO_TBL,
|
|
|
|
- },
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-static struct fib4_rule main_rule = {
|
|
|
|
- .common = {
|
|
|
|
- .refcnt = ATOMIC_INIT(2),
|
|
|
|
- .pref = 0x7FFE,
|
|
|
|
- .table = RT_TABLE_MAIN,
|
|
|
|
- .action = FR_ACT_TO_TBL,
|
|
|
|
- },
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-static struct fib4_rule local_rule = {
|
|
|
|
- .common = {
|
|
|
|
- .refcnt = ATOMIC_INIT(2),
|
|
|
|
- .table = RT_TABLE_LOCAL,
|
|
|
|
- .action = FR_ACT_TO_TBL,
|
|
|
|
- .flags = FIB_RULE_PERMANENT,
|
|
|
|
- },
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
#ifdef CONFIG_NET_CLS_ROUTE
|
|
#ifdef CONFIG_NET_CLS_ROUTE
|
|
u32 fib_rules_tclass(struct fib_result *res)
|
|
u32 fib_rules_tclass(struct fib_result *res)
|
|
{
|
|
{
|
|
@@ -319,11 +292,27 @@ static struct fib_rules_ops fib4_rules_ops = {
|
|
.owner = THIS_MODULE,
|
|
.owner = THIS_MODULE,
|
|
};
|
|
};
|
|
|
|
|
|
-void __init fib4_rules_init(void)
|
|
|
|
|
|
+static int __init fib_default_rules_init(void)
|
|
{
|
|
{
|
|
- list_add_tail(&local_rule.common.list, &fib4_rules_ops.rules_list);
|
|
|
|
- list_add_tail(&main_rule.common.list, &fib4_rules_ops.rules_list);
|
|
|
|
- list_add_tail(&default_rule.common.list, &fib4_rules_ops.rules_list);
|
|
|
|
|
|
+ int err;
|
|
|
|
+
|
|
|
|
+ err = fib_default_rule_add(&fib4_rules_ops, 0,
|
|
|
|
+ RT_TABLE_LOCAL, FIB_RULE_PERMANENT);
|
|
|
|
+ if (err < 0)
|
|
|
|
+ return err;
|
|
|
|
+ err = fib_default_rule_add(&fib4_rules_ops, 0x7FFE,
|
|
|
|
+ RT_TABLE_MAIN, 0);
|
|
|
|
+ if (err < 0)
|
|
|
|
+ return err;
|
|
|
|
+ err = fib_default_rule_add(&fib4_rules_ops, 0x7FFF,
|
|
|
|
+ RT_TABLE_DEFAULT, 0);
|
|
|
|
+ if (err < 0)
|
|
|
|
+ return err;
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
|
|
|
|
+void __init fib4_rules_init(void)
|
|
|
|
+{
|
|
|
|
+ BUG_ON(fib_default_rules_init());
|
|
fib_rules_register(&fib4_rules_ops);
|
|
fib_rules_register(&fib4_rules_ops);
|
|
}
|
|
}
|