summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2004-09-22 23:20:02 -0700
committerDavid S. Miller <davem@kernel.bkbits.net>2004-09-22 23:20:02 -0700
commit559b540de3d2d92c26e0753e473b4fcbd03116fd (patch)
treeff78187271fca49a498e432eb8fc2a765415ce3e
parent5066446ff2a1448a2c9f40fe4e24e18afde2d689 (diff)
[IPV4]: Missing TOS checks after fib_find_alias
It looks like some of the places where FIB_SCAN_TOS macros were used have lost the tos check. This patch adds them back. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv4/fib_hash.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c
index deb43438f48f..15cd8e55b796 100644
--- a/net/ipv4/fib_hash.c
+++ b/net/ipv4/fib_hash.c
@@ -538,6 +538,8 @@ fn_hash_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
*/
fa_orig = fa;
list_for_each_entry(fa, fa_orig->fa_list.prev, fa_list) {
+ if (fa->fa_tos != tos)
+ break;
if (fa->fa_info->fib_priority != fi->fib_priority)
break;
if (fa->fa_type == type &&
@@ -639,6 +641,9 @@ fn_hash_delete(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta,
list_for_each_entry(fa, fa_head, fa_list) {
struct fib_info *fi = fa->fa_info;
+ if (fa->fa_tos != tos)
+ break;
+
if ((!r->rtm_type ||
fa->fa_type == r->rtm_type) &&
(r->rtm_scope == RT_SCOPE_NOWHERE ||