Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84b3cee3 authored by Simon Horman's avatar Simon Horman
Browse files

IPVS: Add sysctl_snat_reroute()



In preparation for not including sysctl_snat_reroute in
struct netns_ipvs when CONFIG_SYCTL is not defined.

Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
parent ba4fd7e9
Loading
Loading
Loading
Loading
+16 −4
Original line number Original line Diff line number Diff line
@@ -599,6 +599,20 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
	return NF_DROP;
	return NF_DROP;
}
}


#ifdef CONFIG_SYSCTL

static int sysctl_snat_reroute(struct sk_buff *skb)
{
	struct netns_ipvs *ipvs = net_ipvs(skb_net(skb));
	return ipvs->sysctl_snat_reroute;
}

#else

static int sysctl_snat_reroute(struct sk_buff *skb) { return 0; }

#endif

__sum16 ip_vs_checksum_complete(struct sk_buff *skb, int offset)
__sum16 ip_vs_checksum_complete(struct sk_buff *skb, int offset)
{
{
	return csum_fold(skb_checksum(skb, offset, skb->len - offset, 0));
	return csum_fold(skb_checksum(skb, offset, skb->len - offset, 0));
@@ -633,15 +647,13 @@ static inline int ip_vs_gather_frags_v6(struct sk_buff *skb, u_int32_t user)


static int ip_vs_route_me_harder(int af, struct sk_buff *skb)
static int ip_vs_route_me_harder(int af, struct sk_buff *skb)
{
{
	struct netns_ipvs *ipvs = net_ipvs(skb_net(skb));

#ifdef CONFIG_IP_VS_IPV6
#ifdef CONFIG_IP_VS_IPV6
	if (af == AF_INET6) {
	if (af == AF_INET6) {
		if (ipvs->sysctl_snat_reroute && ip6_route_me_harder(skb) != 0)
		if (sysctl_snat_reroute(skb) && ip6_route_me_harder(skb) != 0)
			return 1;
			return 1;
	} else
	} else
#endif
#endif
		if ((ipvs->sysctl_snat_reroute ||
		if ((sysctl_snat_reroute(skb) ||
		     skb_rtable(skb)->rt_flags & RTCF_LOCAL) &&
		     skb_rtable(skb)->rt_flags & RTCF_LOCAL) &&
		    ip_route_me_harder(skb, RTN_LOCAL) != 0)
		    ip_route_me_harder(skb, RTN_LOCAL) != 0)
			return 1;
			return 1;