aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorJulian Anastasov <ja@ssi.bg>2011-05-10 08:46:05 -0400
committerDavid S. Miller <davem@davemloft.net>2011-05-12 18:24:46 -0400
commitc92f5ca2e5120796c56455e0a4b7cc0dfd6ceb49 (patch)
tree97048375d75069d308a5ae47b137ba30ff2edd8d /include/net
parent44e3125ccd521585e73e6dd228b283ab26993c68 (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.h9
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
1253extern int ip_vs_dr_xmit 1251extern 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);
1255extern int ip_vs_icmp_xmit 1253extern 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);
1257extern void ip_vs_dst_reset(struct ip_vs_dest *dest); 1256extern 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);
1268extern int ip_vs_icmp_xmit_v6 1267extern 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