diff options
author | David S. Miller <davem@davemloft.net> | 2010-12-27 01:37:05 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-27 01:37:05 -0500 |
commit | 17f7f4d9fcce8f1b75b5f735569309dee7665968 (patch) | |
tree | 14d7e49ca0053a0fcab3c33b5023bf3f90c5c08a /net/ipv4/fib_frontend.c | |
parent | 041110a439e21cd40709ead4ffbfa8034619ad77 (diff) | |
parent | d7c1255a3a21e98bdc64df8ccf005a174d7e6289 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
net/ipv4/fib_frontend.c
Diffstat (limited to 'net/ipv4/fib_frontend.c')
-rw-r--r-- | net/ipv4/fib_frontend.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 9f8bb68911e4..1d2cdd43a878 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c | |||
@@ -159,13 +159,19 @@ struct net_device *__ip_dev_find(struct net *net, __be32 addr, bool devref) | |||
159 | { | 159 | { |
160 | struct flowi fl = { | 160 | struct flowi fl = { |
161 | .fl4_dst = addr, | 161 | .fl4_dst = addr, |
162 | .flags = FLOWI_FLAG_MATCH_ANY_IIF | ||
163 | }; | 162 | }; |
164 | struct fib_result res = { 0 }; | 163 | struct fib_result res = { 0 }; |
165 | struct net_device *dev = NULL; | 164 | struct net_device *dev = NULL; |
165 | struct fib_table *local_table; | ||
166 | |||
167 | #ifdef CONFIG_IP_MULTIPLE_TABLES | ||
168 | res.r = NULL; | ||
169 | #endif | ||
166 | 170 | ||
167 | rcu_read_lock(); | 171 | rcu_read_lock(); |
168 | if (fib_lookup(net, &fl, &res)) { | 172 | local_table = fib_get_table(net, RT_TABLE_LOCAL); |
173 | if (!local_table || | ||
174 | fib_table_lookup(local_table, &fl, &res, FIB_LOOKUP_NOREF)) { | ||
169 | rcu_read_unlock(); | 175 | rcu_read_unlock(); |
170 | return NULL; | 176 | return NULL; |
171 | } | 177 | } |