Commit 71fceff0 authored by David S. Miller's avatar David S. Miller

ipv4: Use less conflicting local var name in change_nexthops() loop macro.

As noticed by H Hartley Sweeten, since change_nexthops() uses 'nh'
as it's iterator variable, it can conflict with other existing
local vars.

Use "nexthop_nh" to avoid the conflict and make it easier to figure
out where this magic variable comes from.
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4d0392be
...@@ -62,8 +62,8 @@ static DEFINE_SPINLOCK(fib_multipath_lock); ...@@ -62,8 +62,8 @@ static DEFINE_SPINLOCK(fib_multipath_lock);
#define for_nexthops(fi) { int nhsel; const struct fib_nh * nh; \ #define for_nexthops(fi) { int nhsel; const struct fib_nh * nh; \
for (nhsel=0, nh = (fi)->fib_nh; nhsel < (fi)->fib_nhs; nh++, nhsel++) for (nhsel=0, nh = (fi)->fib_nh; nhsel < (fi)->fib_nhs; nh++, nhsel++)
#define change_nexthops(fi) { int nhsel; struct fib_nh * nh; \ #define change_nexthops(fi) { int nhsel; struct fib_nh *nexthop_nh; \
for (nhsel=0, nh = (struct fib_nh *)((fi)->fib_nh); nhsel < (fi)->fib_nhs; nh++, nhsel++) for (nhsel=0, nexthop_nh = (struct fib_nh *)((fi)->fib_nh); nhsel < (fi)->fib_nhs; nexthop_nh++, nhsel++)
#else /* CONFIG_IP_ROUTE_MULTIPATH */ #else /* CONFIG_IP_ROUTE_MULTIPATH */
...@@ -72,7 +72,7 @@ for (nhsel=0, nh = (struct fib_nh *)((fi)->fib_nh); nhsel < (fi)->fib_nhs; nh++, ...@@ -72,7 +72,7 @@ for (nhsel=0, nh = (struct fib_nh *)((fi)->fib_nh); nhsel < (fi)->fib_nhs; nh++,
#define for_nexthops(fi) { int nhsel = 0; const struct fib_nh * nh = (fi)->fib_nh; \ #define for_nexthops(fi) { int nhsel = 0; const struct fib_nh * nh = (fi)->fib_nh; \
for (nhsel=0; nhsel < 1; nhsel++) for (nhsel=0; nhsel < 1; nhsel++)
#define change_nexthops(fi) { int nhsel = 0; struct fib_nh * nh = (struct fib_nh *)((fi)->fib_nh); \ #define change_nexthops(fi) { int nhsel = 0; struct fib_nh *nexthop_nh = (struct fib_nh *)((fi)->fib_nh); \
for (nhsel=0; nhsel < 1; nhsel++) for (nhsel=0; nhsel < 1; nhsel++)
#endif /* CONFIG_IP_ROUTE_MULTIPATH */ #endif /* CONFIG_IP_ROUTE_MULTIPATH */
...@@ -145,9 +145,9 @@ void free_fib_info(struct fib_info *fi) ...@@ -145,9 +145,9 @@ void free_fib_info(struct fib_info *fi)
return; return;
} }
change_nexthops(fi) { change_nexthops(fi) {
if (nh->nh_dev) if (nexthop_nh->nh_dev)
dev_put(nh->nh_dev); dev_put(nexthop_nh->nh_dev);
nh->nh_dev = NULL; nexthop_nh->nh_dev = NULL;
} endfor_nexthops(fi); } endfor_nexthops(fi);
fib_info_cnt--; fib_info_cnt--;
release_net(fi->fib_net); release_net(fi->fib_net);
...@@ -162,9 +162,9 @@ void fib_release_info(struct fib_info *fi) ...@@ -162,9 +162,9 @@ void fib_release_info(struct fib_info *fi)
if (fi->fib_prefsrc) if (fi->fib_prefsrc)
hlist_del(&fi->fib_lhash); hlist_del(&fi->fib_lhash);
change_nexthops(fi) { change_nexthops(fi) {
if (!nh->nh_dev) if (!nexthop_nh->nh_dev)
continue; continue;
hlist_del(&nh->nh_hash); hlist_del(&nexthop_nh->nh_hash);
} endfor_nexthops(fi) } endfor_nexthops(fi)
fi->fib_dead = 1; fi->fib_dead = 1;
fib_info_put(fi); fib_info_put(fi);
...@@ -395,19 +395,20 @@ static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh, ...@@ -395,19 +395,20 @@ static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh,
if (!rtnh_ok(rtnh, remaining)) if (!rtnh_ok(rtnh, remaining))
return -EINVAL; return -EINVAL;
nh->nh_flags = (cfg->fc_flags & ~0xFF) | rtnh->rtnh_flags; nexthop_nh->nh_flags =
nh->nh_oif = rtnh->rtnh_ifindex; (cfg->fc_flags & ~0xFF) | rtnh->rtnh_flags;
nh->nh_weight = rtnh->rtnh_hops + 1; nexthop_nh->nh_oif = rtnh->rtnh_ifindex;
nexthop_nh->nh_weight = rtnh->rtnh_hops + 1;
attrlen = rtnh_attrlen(rtnh); attrlen = rtnh_attrlen(rtnh);
if (attrlen > 0) { if (attrlen > 0) {
struct nlattr *nla, *attrs = rtnh_attrs(rtnh); struct nlattr *nla, *attrs = rtnh_attrs(rtnh);
nla = nla_find(attrs, attrlen, RTA_GATEWAY); nla = nla_find(attrs, attrlen, RTA_GATEWAY);
nh->nh_gw = nla ? nla_get_be32(nla) : 0; nexthop_nh->nh_gw = nla ? nla_get_be32(nla) : 0;
#ifdef CONFIG_NET_CLS_ROUTE #ifdef CONFIG_NET_CLS_ROUTE
nla = nla_find(attrs, attrlen, RTA_FLOW); nla = nla_find(attrs, attrlen, RTA_FLOW);
nh->nh_tclassid = nla ? nla_get_u32(nla) : 0; nexthop_nh->nh_tclassid = nla ? nla_get_u32(nla) : 0;
#endif #endif
} }
...@@ -738,7 +739,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg) ...@@ -738,7 +739,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
fi->fib_nhs = nhs; fi->fib_nhs = nhs;
change_nexthops(fi) { change_nexthops(fi) {
nh->nh_parent = fi; nexthop_nh->nh_parent = fi;
} endfor_nexthops(fi) } endfor_nexthops(fi)
if (cfg->fc_mx) { if (cfg->fc_mx) {
...@@ -808,7 +809,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg) ...@@ -808,7 +809,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
goto failure; goto failure;
} else { } else {
change_nexthops(fi) { change_nexthops(fi) {
if ((err = fib_check_nh(cfg, fi, nh)) != 0) if ((err = fib_check_nh(cfg, fi, nexthop_nh)) != 0)
goto failure; goto failure;
} endfor_nexthops(fi) } endfor_nexthops(fi)
} }
...@@ -843,11 +844,11 @@ struct fib_info *fib_create_info(struct fib_config *cfg) ...@@ -843,11 +844,11 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
struct hlist_head *head; struct hlist_head *head;
unsigned int hash; unsigned int hash;
if (!nh->nh_dev) if (!nexthop_nh->nh_dev)
continue; continue;
hash = fib_devindex_hashfn(nh->nh_dev->ifindex); hash = fib_devindex_hashfn(nexthop_nh->nh_dev->ifindex);
head = &fib_info_devhash[hash]; head = &fib_info_devhash[hash];
hlist_add_head(&nh->nh_hash, head); hlist_add_head(&nexthop_nh->nh_hash, head);
} endfor_nexthops(fi) } endfor_nexthops(fi)
spin_unlock_bh(&fib_info_lock); spin_unlock_bh(&fib_info_lock);
return fi; return fi;
...@@ -1080,21 +1081,21 @@ int fib_sync_down_dev(struct net_device *dev, int force) ...@@ -1080,21 +1081,21 @@ int fib_sync_down_dev(struct net_device *dev, int force)
prev_fi = fi; prev_fi = fi;
dead = 0; dead = 0;
change_nexthops(fi) { change_nexthops(fi) {
if (nh->nh_flags&RTNH_F_DEAD) if (nexthop_nh->nh_flags&RTNH_F_DEAD)
dead++; dead++;
else if (nh->nh_dev == dev && else if (nexthop_nh->nh_dev == dev &&
nh->nh_scope != scope) { nexthop_nh->nh_scope != scope) {
nh->nh_flags |= RTNH_F_DEAD; nexthop_nh->nh_flags |= RTNH_F_DEAD;
#ifdef CONFIG_IP_ROUTE_MULTIPATH #ifdef CONFIG_IP_ROUTE_MULTIPATH
spin_lock_bh(&fib_multipath_lock); spin_lock_bh(&fib_multipath_lock);
fi->fib_power -= nh->nh_power; fi->fib_power -= nexthop_nh->nh_power;
nh->nh_power = 0; nexthop_nh->nh_power = 0;
spin_unlock_bh(&fib_multipath_lock); spin_unlock_bh(&fib_multipath_lock);
#endif #endif
dead++; dead++;
} }
#ifdef CONFIG_IP_ROUTE_MULTIPATH #ifdef CONFIG_IP_ROUTE_MULTIPATH
if (force > 1 && nh->nh_dev == dev) { if (force > 1 && nexthop_nh->nh_dev == dev) {
dead = fi->fib_nhs; dead = fi->fib_nhs;
break; break;
} }
...@@ -1144,18 +1145,20 @@ int fib_sync_up(struct net_device *dev) ...@@ -1144,18 +1145,20 @@ int fib_sync_up(struct net_device *dev)
prev_fi = fi; prev_fi = fi;
alive = 0; alive = 0;
change_nexthops(fi) { change_nexthops(fi) {
if (!(nh->nh_flags&RTNH_F_DEAD)) { if (!(nexthop_nh->nh_flags&RTNH_F_DEAD)) {
alive++; alive++;
continue; continue;
} }
if (nh->nh_dev == NULL || !(nh->nh_dev->flags&IFF_UP)) if (nexthop_nh->nh_dev == NULL ||
!(nexthop_nh->nh_dev->flags&IFF_UP))
continue; continue;
if (nh->nh_dev != dev || !__in_dev_get_rtnl(dev)) if (nexthop_nh->nh_dev != dev ||
!__in_dev_get_rtnl(dev))
continue; continue;
alive++; alive++;
spin_lock_bh(&fib_multipath_lock); spin_lock_bh(&fib_multipath_lock);
nh->nh_power = 0; nexthop_nh->nh_power = 0;
nh->nh_flags &= ~RTNH_F_DEAD; nexthop_nh->nh_flags &= ~RTNH_F_DEAD;
spin_unlock_bh(&fib_multipath_lock); spin_unlock_bh(&fib_multipath_lock);
} endfor_nexthops(fi) } endfor_nexthops(fi)
...@@ -1182,9 +1185,9 @@ void fib_select_multipath(const struct flowi *flp, struct fib_result *res) ...@@ -1182,9 +1185,9 @@ void fib_select_multipath(const struct flowi *flp, struct fib_result *res)
if (fi->fib_power <= 0) { if (fi->fib_power <= 0) {
int power = 0; int power = 0;
change_nexthops(fi) { change_nexthops(fi) {
if (!(nh->nh_flags&RTNH_F_DEAD)) { if (!(nexthop_nh->nh_flags&RTNH_F_DEAD)) {
power += nh->nh_weight; power += nexthop_nh->nh_weight;
nh->nh_power = nh->nh_weight; nexthop_nh->nh_power = nexthop_nh->nh_weight;
} }
} endfor_nexthops(fi); } endfor_nexthops(fi);
fi->fib_power = power; fi->fib_power = power;
...@@ -1204,9 +1207,10 @@ void fib_select_multipath(const struct flowi *flp, struct fib_result *res) ...@@ -1204,9 +1207,10 @@ void fib_select_multipath(const struct flowi *flp, struct fib_result *res)
w = jiffies % fi->fib_power; w = jiffies % fi->fib_power;
change_nexthops(fi) { change_nexthops(fi) {
if (!(nh->nh_flags&RTNH_F_DEAD) && nh->nh_power) { if (!(nexthop_nh->nh_flags&RTNH_F_DEAD) &&
if ((w -= nh->nh_power) <= 0) { nexthop_nh->nh_power) {
nh->nh_power--; if ((w -= nexthop_nh->nh_power) <= 0) {
nexthop_nh->nh_power--;
fi->fib_power--; fi->fib_power--;
res->nh_sel = nhsel; res->nh_sel = nhsel;
spin_unlock_bh(&fib_multipath_lock); spin_unlock_bh(&fib_multipath_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment