ipvs: Wrap sysctl_cache_bypass and remove ifdefs in ip_vs_leave
With sysctl_cache_bypass now a compile time constant the compiler can figue out that it can elimiate all of the code that depends on sysctl_cache_bypass being true. Also remove the duplicate computation of net previously necessitated by #ifdef CONFIG_SYSCTL Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Acked-by: Julian Anastasov <ja@ssi.bg> Signed-off-by: Simon Horman <horms@verge.net.au>
This commit is contained in:
parent
7c08d78e6f
commit
5703294874
|
@ -1101,6 +1101,11 @@ static inline int sysctl_ignore_tunneled(struct netns_ipvs *ipvs)
|
||||||
return ipvs->sysctl_ignore_tunneled;
|
return ipvs->sysctl_ignore_tunneled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int sysctl_cache_bypass(struct netns_ipvs *ipvs)
|
||||||
|
{
|
||||||
|
return ipvs->sysctl_cache_bypass;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static inline int sysctl_sync_threshold(struct netns_ipvs *ipvs)
|
static inline int sysctl_sync_threshold(struct netns_ipvs *ipvs)
|
||||||
|
@ -1183,6 +1188,11 @@ static inline int sysctl_ignore_tunneled(struct netns_ipvs *ipvs)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int sysctl_cache_bypass(struct netns_ipvs *ipvs)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* IPVS core functions
|
/* IPVS core functions
|
||||||
|
|
|
@ -568,17 +568,14 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
|
||||||
struct ip_vs_proto_data *pd, struct ip_vs_iphdr *iph)
|
struct ip_vs_proto_data *pd, struct ip_vs_iphdr *iph)
|
||||||
{
|
{
|
||||||
__be16 _ports[2], *pptr, dport;
|
__be16 _ports[2], *pptr, dport;
|
||||||
#ifdef CONFIG_SYSCTL
|
|
||||||
struct net *net;
|
struct net *net;
|
||||||
struct netns_ipvs *ipvs;
|
struct netns_ipvs *ipvs;
|
||||||
#endif
|
|
||||||
|
|
||||||
pptr = frag_safe_skb_hp(skb, iph->len, sizeof(_ports), _ports, iph);
|
pptr = frag_safe_skb_hp(skb, iph->len, sizeof(_ports), _ports, iph);
|
||||||
if (!pptr)
|
if (!pptr)
|
||||||
return NF_DROP;
|
return NF_DROP;
|
||||||
dport = likely(!ip_vs_iph_inverse(iph)) ? pptr[1] : pptr[0];
|
dport = likely(!ip_vs_iph_inverse(iph)) ? pptr[1] : pptr[0];
|
||||||
|
|
||||||
#ifdef CONFIG_SYSCTL
|
|
||||||
net = skb_net(skb);
|
net = skb_net(skb);
|
||||||
|
|
||||||
|
|
||||||
|
@ -586,7 +583,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
|
||||||
and the destination is a non-local unicast, then create
|
and the destination is a non-local unicast, then create
|
||||||
a cache_bypass connection entry */
|
a cache_bypass connection entry */
|
||||||
ipvs = net_ipvs(net);
|
ipvs = net_ipvs(net);
|
||||||
if (ipvs->sysctl_cache_bypass && svc->fwmark &&
|
if (sysctl_cache_bypass(ipvs) && svc->fwmark &&
|
||||||
!(iph->hdr_flags & (IP_VS_HDR_INVERSE | IP_VS_HDR_ICMP)) &&
|
!(iph->hdr_flags & (IP_VS_HDR_INVERSE | IP_VS_HDR_ICMP)) &&
|
||||||
ip_vs_addr_is_unicast(net, svc->af, &iph->daddr)) {
|
ip_vs_addr_is_unicast(net, svc->af, &iph->daddr)) {
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -624,7 +621,6 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
|
||||||
ip_vs_conn_put(cp);
|
ip_vs_conn_put(cp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When the virtual ftp service is presented, packets destined
|
* When the virtual ftp service is presented, packets destined
|
||||||
|
@ -647,11 +643,8 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_IP_VS_IPV6
|
#ifdef CONFIG_IP_VS_IPV6
|
||||||
if (svc->af == AF_INET6) {
|
if (svc->af == AF_INET6) {
|
||||||
if (!skb->dev) {
|
if (!skb->dev)
|
||||||
struct net *net_ = dev_net(skb_dst(skb)->dev);
|
skb->dev = net->loopback_dev;
|
||||||
|
|
||||||
skb->dev = net_->loopback_dev;
|
|
||||||
}
|
|
||||||
icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0);
|
icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue