diff options
author | Julian Anastasov <ja@ssi.bg> | 2011-05-10 08:46:05 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-05-12 18:24:46 -0400 |
commit | c92f5ca2e5120796c56455e0a4b7cc0dfd6ceb49 (patch) | |
tree | 97048375d75069d308a5ae47b137ba30ff2edd8d /include/net | |
parent | 44e3125ccd521585e73e6dd228b283ab26993c68 (diff) |
ipvs: Remove all remaining references to rt->rt_{src,dst}
Remove all remaining references to rt->rt_{src,dst}
by using dest->dst_saddr to cache saddr (used for TUN mode).
For ICMP in FORWARD hook just restrict the rt_mode for NAT
to disable LOCALNODE. All other modes do not allow
IP_VS_RT_MODE_RDR, so we should be safe with the ICMP
forwarding. Using cp->daddr as replacement for rt_dst
is safe for all modes except BYPASS, even when cp->dest is
NULL because it is cp->daddr that is used to assign cp->dest
for sync-ed connections.
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/ip_vs.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h index 9d1f510ab6d0..4fff432aeade 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h | |||
@@ -665,9 +665,7 @@ struct ip_vs_dest { | |||
665 | struct dst_entry *dst_cache; /* destination cache entry */ | 665 | struct dst_entry *dst_cache; /* destination cache entry */ |
666 | u32 dst_rtos; /* RT_TOS(tos) for dst */ | 666 | u32 dst_rtos; /* RT_TOS(tos) for dst */ |
667 | u32 dst_cookie; | 667 | u32 dst_cookie; |
668 | #ifdef CONFIG_IP_VS_IPV6 | 668 | union nf_inet_addr dst_saddr; |
669 | struct in6_addr dst_saddr; | ||
670 | #endif | ||
671 | 669 | ||
672 | /* for virtual service */ | 670 | /* for virtual service */ |
673 | struct ip_vs_service *svc; /* service it belongs to */ | 671 | struct ip_vs_service *svc; /* service it belongs to */ |
@@ -1253,7 +1251,8 @@ extern int ip_vs_tunnel_xmit | |||
1253 | extern int ip_vs_dr_xmit | 1251 | extern int ip_vs_dr_xmit |
1254 | (struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp); | 1252 | (struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp); |
1255 | extern int ip_vs_icmp_xmit | 1253 | extern int ip_vs_icmp_xmit |
1256 | (struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp, int offset); | 1254 | (struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp, |
1255 | int offset, unsigned int hooknum); | ||
1257 | extern void ip_vs_dst_reset(struct ip_vs_dest *dest); | 1256 | extern void ip_vs_dst_reset(struct ip_vs_dest *dest); |
1258 | 1257 | ||
1259 | #ifdef CONFIG_IP_VS_IPV6 | 1258 | #ifdef CONFIG_IP_VS_IPV6 |
@@ -1267,7 +1266,7 @@ extern int ip_vs_dr_xmit_v6 | |||
1267 | (struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp); | 1266 | (struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp); |
1268 | extern int ip_vs_icmp_xmit_v6 | 1267 | extern int ip_vs_icmp_xmit_v6 |
1269 | (struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp, | 1268 | (struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp, |
1270 | int offset); | 1269 | int offset, unsigned int hooknum); |
1271 | #endif | 1270 | #endif |
1272 | 1271 | ||
1273 | #ifdef CONFIG_SYSCTL | 1272 | #ifdef CONFIG_SYSCTL |