ipvs: Eliminate rt->rt_dst usage in __ip_vs_get_out_rt().
We can simply track what destination address is used based upon which code block is taken at the top of the function. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e58b34425b
commit
44e3125ccd
@ -110,6 +110,7 @@ __ip_vs_get_out_rt(struct sk_buff *skb, struct ip_vs_dest *dest,
|
|||||||
&dest->addr.ip,
|
&dest->addr.ip,
|
||||||
atomic_read(&rt->dst.__refcnt), rtos);
|
atomic_read(&rt->dst.__refcnt), rtos);
|
||||||
}
|
}
|
||||||
|
daddr = dest->addr.ip;
|
||||||
spin_unlock(&dest->dst_lock);
|
spin_unlock(&dest->dst_lock);
|
||||||
} else {
|
} else {
|
||||||
rt = ip_route_output(net, daddr, 0, rtos, 0);
|
rt = ip_route_output(net, daddr, 0, rtos, 0);
|
||||||
@ -125,7 +126,7 @@ __ip_vs_get_out_rt(struct sk_buff *skb, struct ip_vs_dest *dest,
|
|||||||
rt_mode)) {
|
rt_mode)) {
|
||||||
IP_VS_DBG_RL("Stopping traffic to %s address, dest: %pI4\n",
|
IP_VS_DBG_RL("Stopping traffic to %s address, dest: %pI4\n",
|
||||||
(rt->rt_flags & RTCF_LOCAL) ?
|
(rt->rt_flags & RTCF_LOCAL) ?
|
||||||
"local":"non-local", &rt->rt_dst);
|
"local":"non-local", &daddr);
|
||||||
ip_rt_put(rt);
|
ip_rt_put(rt);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -133,14 +134,14 @@ __ip_vs_get_out_rt(struct sk_buff *skb, struct ip_vs_dest *dest,
|
|||||||
!((ort = skb_rtable(skb)) && ort->rt_flags & RTCF_LOCAL)) {
|
!((ort = skb_rtable(skb)) && ort->rt_flags & RTCF_LOCAL)) {
|
||||||
IP_VS_DBG_RL("Redirect from non-local address %pI4 to local "
|
IP_VS_DBG_RL("Redirect from non-local address %pI4 to local "
|
||||||
"requires NAT method, dest: %pI4\n",
|
"requires NAT method, dest: %pI4\n",
|
||||||
&ip_hdr(skb)->daddr, &rt->rt_dst);
|
&ip_hdr(skb)->daddr, &daddr);
|
||||||
ip_rt_put(rt);
|
ip_rt_put(rt);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (unlikely(!local && ipv4_is_loopback(ip_hdr(skb)->saddr))) {
|
if (unlikely(!local && ipv4_is_loopback(ip_hdr(skb)->saddr))) {
|
||||||
IP_VS_DBG_RL("Stopping traffic from loopback address %pI4 "
|
IP_VS_DBG_RL("Stopping traffic from loopback address %pI4 "
|
||||||
"to non-local address, dest: %pI4\n",
|
"to non-local address, dest: %pI4\n",
|
||||||
&ip_hdr(skb)->saddr, &rt->rt_dst);
|
&ip_hdr(skb)->saddr, &daddr);
|
||||||
ip_rt_put(rt);
|
ip_rt_put(rt);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user