diff options
Diffstat (limited to 'net/ipv4/fib_rules.c')
-rw-r--r-- | net/ipv4/fib_rules.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c index 92d9d97ec5e3..ca2d07b1c706 100644 --- a/net/ipv4/fib_rules.c +++ b/net/ipv4/fib_rules.c | |||
@@ -94,7 +94,7 @@ static int fib4_rule_action(struct fib_rule *rule, struct flowi *flp, | |||
94 | if ((tbl = fib_get_table(rule->fr_net, rule->table)) == NULL) | 94 | if ((tbl = fib_get_table(rule->fr_net, rule->table)) == NULL) |
95 | goto errout; | 95 | goto errout; |
96 | 96 | ||
97 | err = tbl->tb_lookup(tbl, flp, (struct fib_result *) arg->result); | 97 | err = fib_table_lookup(tbl, flp, (struct fib_result *) arg->result); |
98 | if (err > 0) | 98 | if (err > 0) |
99 | err = -EAGAIN; | 99 | err = -EAGAIN; |
100 | errout: | 100 | errout: |
@@ -284,7 +284,7 @@ static int fib_default_rules_init(struct fib_rules_ops *ops) | |||
284 | { | 284 | { |
285 | int err; | 285 | int err; |
286 | 286 | ||
287 | err = fib_default_rule_add(ops, 0, RT_TABLE_LOCAL, FIB_RULE_PERMANENT); | 287 | err = fib_default_rule_add(ops, 0, RT_TABLE_LOCAL, 0); |
288 | if (err < 0) | 288 | if (err < 0) |
289 | return err; | 289 | return err; |
290 | err = fib_default_rule_add(ops, 0x7FFE, RT_TABLE_MAIN, 0); | 290 | err = fib_default_rule_add(ops, 0x7FFE, RT_TABLE_MAIN, 0); |
@@ -301,13 +301,9 @@ int __net_init fib4_rules_init(struct net *net) | |||
301 | int err; | 301 | int err; |
302 | struct fib_rules_ops *ops; | 302 | struct fib_rules_ops *ops; |
303 | 303 | ||
304 | ops = kmemdup(&fib4_rules_ops_template, sizeof(*ops), GFP_KERNEL); | 304 | ops = fib_rules_register(&fib4_rules_ops_template, net); |
305 | if (ops == NULL) | 305 | if (IS_ERR(ops)) |
306 | return -ENOMEM; | 306 | return PTR_ERR(ops); |
307 | INIT_LIST_HEAD(&ops->rules_list); | ||
308 | ops->fro_net = net; | ||
309 | |||
310 | fib_rules_register(ops); | ||
311 | 307 | ||
312 | err = fib_default_rules_init(ops); | 308 | err = fib_default_rules_init(ops); |
313 | if (err < 0) | 309 | if (err < 0) |
@@ -318,12 +314,10 @@ int __net_init fib4_rules_init(struct net *net) | |||
318 | fail: | 314 | fail: |
319 | /* also cleans all rules already added */ | 315 | /* also cleans all rules already added */ |
320 | fib_rules_unregister(ops); | 316 | fib_rules_unregister(ops); |
321 | kfree(ops); | ||
322 | return err; | 317 | return err; |
323 | } | 318 | } |
324 | 319 | ||
325 | void __net_exit fib4_rules_exit(struct net *net) | 320 | void __net_exit fib4_rules_exit(struct net *net) |
326 | { | 321 | { |
327 | fib_rules_unregister(net->ipv4.rules_ops); | 322 | fib_rules_unregister(net->ipv4.rules_ops); |
328 | kfree(net->ipv4.rules_ops); | ||
329 | } | 323 | } |