diff options
Diffstat (limited to 'net/ipv4/fib_rules.c')
-rw-r--r-- | net/ipv4/fib_rules.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c index 76daeb5ff564..7981a24f5c7b 100644 --- a/net/ipv4/fib_rules.c +++ b/net/ipv4/fib_rules.c | |||
@@ -6,7 +6,7 @@ | |||
6 | * IPv4 Forwarding Information Base: policy rules. | 6 | * IPv4 Forwarding Information Base: policy rules. |
7 | * | 7 | * |
8 | * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> | 8 | * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> |
9 | * Thomas Graf <tgraf@suug.ch> | 9 | * Thomas Graf <tgraf@suug.ch> |
10 | * | 10 | * |
11 | * This program is free software; you can redistribute it and/or | 11 | * This program is free software; you can redistribute it and/or |
12 | * modify it under the terms of the GNU General Public License | 12 | * modify it under the terms of the GNU General Public License |
@@ -14,7 +14,7 @@ | |||
14 | * 2 of the License, or (at your option) any later version. | 14 | * 2 of the License, or (at your option) any later version. |
15 | * | 15 | * |
16 | * Fixes: | 16 | * Fixes: |
17 | * Rani Assaf : local_rule cannot be deleted | 17 | * Rani Assaf : local_rule cannot be deleted |
18 | * Marc Boucher : routing by fwmark | 18 | * Marc Boucher : routing by fwmark |
19 | */ | 19 | */ |
20 | 20 | ||
@@ -32,8 +32,7 @@ | |||
32 | #include <net/ip_fib.h> | 32 | #include <net/ip_fib.h> |
33 | #include <net/fib_rules.h> | 33 | #include <net/fib_rules.h> |
34 | 34 | ||
35 | struct fib4_rule | 35 | struct fib4_rule { |
36 | { | ||
37 | struct fib_rule common; | 36 | struct fib_rule common; |
38 | u8 dst_len; | 37 | u8 dst_len; |
39 | u8 src_len; | 38 | u8 src_len; |
@@ -58,6 +57,7 @@ int fib_lookup(struct net *net, struct flowi *flp, struct fib_result *res) | |||
58 | { | 57 | { |
59 | struct fib_lookup_arg arg = { | 58 | struct fib_lookup_arg arg = { |
60 | .result = res, | 59 | .result = res, |
60 | .flags = FIB_LOOKUP_NOREF, | ||
61 | }; | 61 | }; |
62 | int err; | 62 | int err; |
63 | 63 | ||
@@ -91,10 +91,11 @@ static int fib4_rule_action(struct fib_rule *rule, struct flowi *flp, | |||
91 | goto errout; | 91 | goto errout; |
92 | } | 92 | } |
93 | 93 | ||
94 | if ((tbl = fib_get_table(rule->fr_net, rule->table)) == NULL) | 94 | tbl = fib_get_table(rule->fr_net, rule->table); |
95 | if (!tbl) | ||
95 | goto errout; | 96 | goto errout; |
96 | 97 | ||
97 | err = fib_table_lookup(tbl, flp, (struct fib_result *) arg->result); | 98 | err = fib_table_lookup(tbl, flp, (struct fib_result *) arg->result, arg->flags); |
98 | if (err > 0) | 99 | if (err > 0) |
99 | err = -EAGAIN; | 100 | err = -EAGAIN; |
100 | errout: | 101 | errout: |