|
@@ -607,9 +607,16 @@ static int sysctl_snat_reroute(struct sk_buff *skb)
|
|
|
return ipvs->sysctl_snat_reroute;
|
|
|
}
|
|
|
|
|
|
+static int sysctl_nat_icmp_send(struct net *net)
|
|
|
+{
|
|
|
+ struct netns_ipvs *ipvs = net_ipvs(net);
|
|
|
+ return ipvs->sysctl_nat_icmp_send;
|
|
|
+}
|
|
|
+
|
|
|
#else
|
|
|
|
|
|
static int sysctl_snat_reroute(struct sk_buff *skb) { return 0; }
|
|
|
+static int sysctl_nat_icmp_send(struct net *net) { return 0; }
|
|
|
|
|
|
#endif
|
|
|
|
|
@@ -1074,7 +1081,6 @@ ip_vs_out(unsigned int hooknum, struct sk_buff *skb, int af)
|
|
|
struct ip_vs_protocol *pp;
|
|
|
struct ip_vs_proto_data *pd;
|
|
|
struct ip_vs_conn *cp;
|
|
|
- struct netns_ipvs *ipvs;
|
|
|
|
|
|
EnterFunction(11);
|
|
|
|
|
@@ -1149,11 +1155,10 @@ ip_vs_out(unsigned int hooknum, struct sk_buff *skb, int af)
|
|
|
* Check if the packet belongs to an existing entry
|
|
|
*/
|
|
|
cp = pp->conn_out_get(af, skb, &iph, iph.len, 0);
|
|
|
- ipvs = net_ipvs(net);
|
|
|
|
|
|
if (likely(cp))
|
|
|
return handle_response(af, skb, pd, cp, iph.len);
|
|
|
- if (ipvs->sysctl_nat_icmp_send &&
|
|
|
+ if (sysctl_nat_icmp_send(net) &&
|
|
|
(pp->protocol == IPPROTO_TCP ||
|
|
|
pp->protocol == IPPROTO_UDP ||
|
|
|
pp->protocol == IPPROTO_SCTP)) {
|