ipv4: Fix scope value used in route src-address caching.
authorDavid S. Miller <davem@davemloft.net>
Tue, 8 Mar 2011 19:03:21 +0000 (11:03 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 8 Mar 2011 19:03:21 +0000 (11:03 -0800)
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>
include/net/ip_fib.h
net/ipv4/fib_semantics.c

index 0e140830b85a2e5fb58a7a4be4030caeffbae07f..3f6c943faedc3535e526cb5c562044dd2d32fa21 100644 (file)
@@ -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;
index 952c737f2a274ab42257f8f4b2e3419e2fdafb7d..d73d7581b51f42687fa8b4d0d3a1c1031802ef2c 100644 (file)
@@ -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);
        }
 }