diff options
author | David S. Miller <davem@davemloft.net> | 2011-03-08 20:03:21 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-08 20:03:21 +0100 |
commit | a7ac8fc1d8d26c975c460a69aa7b9d5b5d5d29b0 (patch) | |
tree | d7487dfcbe87a8e57ce666d9febd1199e46c7b46 | |
parent | ipv4: Cache source address in nexthop entries. (diff) | |
download | linux-a7ac8fc1d8d26c975c460a69aa7b9d5b5d5d29b0.tar.xz linux-a7ac8fc1d8d26c975c460a69aa7b9d5b5d5d29b0.zip |
ipv4: Fix scope value used in route src-address caching.
We have to use cfg->fc_scope not the final nh_scope value.
Reported-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/ip_fib.h | 1 | ||||
-rw-r--r-- | net/ipv4/fib_semantics.c | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h index 0e140830b85a..3f6c943faedc 100644 --- a/include/net/ip_fib.h +++ b/include/net/ip_fib.h @@ -51,6 +51,7 @@ struct fib_nh { struct fib_info *nh_parent; unsigned nh_flags; unsigned char nh_scope; + unsigned char nh_cfg_scope; #ifdef CONFIG_IP_ROUTE_MULTIPATH int nh_weight; int nh_power; diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c index 952c737f2a27..d73d7581b51f 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c @@ -854,9 +854,10 @@ struct fib_info *fib_create_info(struct fib_config *cfg) } change_nexthops(fi) { + nexthop_nh->nh_cfg_scope = cfg->fc_scope; nexthop_nh->nh_saddr = inet_select_addr(nexthop_nh->nh_dev, nexthop_nh->nh_gw, - nexthop_nh->nh_scope); + nexthop_nh->nh_cfg_scope); } endfor_nexthops(fi) link_it: @@ -1141,7 +1142,7 @@ void fib_update_nh_saddrs(struct net_device *dev) continue; nh->nh_saddr = inet_select_addr(nh->nh_dev, nh->nh_gw, - nh->nh_scope); + nh->nh_cfg_scope); } } |