IPVS: Minimise ip_vs_leave when CONFIG_SYSCTL is undefined
authorSimon Horman <horms@verge.net.au>
Fri, 4 Feb 2011 09:33:02 +0000 (18:33 +0900)
committerSimon Horman <horms@verge.net.au>
Tue, 15 Mar 2011 00:37:00 +0000 (09:37 +0900)
Much of ip_vs_leave() is unnecessary if CONFIG_SYSCTL is undefined.

I tried an approach of breaking the now #ifdef'ed portions out
into a separate function. However this appeared to grow the
compiled code on x86_64 by about 200 bytes in the case where
CONFIG_SYSCTL is defined. So I have gone with the simpler though
less elegant #ifdef'ed solution for now.

Signed-off-by: Simon Horman <horms@verge.net.au>
net/netfilter/ipvs/ip_vs_core.c

index d418bc60d00d58896ab44c83d4b4a6bf537fe809..07accf6b2401a05aa89b4a543e89741781547ff6 100644 (file)
@@ -499,11 +499,13 @@ ip_vs_schedule(struct ip_vs_service *svc, struct sk_buff *skb,
 int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
                struct ip_vs_proto_data *pd)
 {
-       struct net *net;
-       struct netns_ipvs *ipvs;
        __be16 _ports[2], *pptr;
        struct ip_vs_iphdr iph;
+#ifdef CONFIG_SYSCTL
+       struct net *net;
+       struct netns_ipvs *ipvs;
        int unicast;
+#endif
 
        ip_vs_fill_iphdr(svc->af, skb_network_header(skb), &iph);
 
@@ -512,6 +514,8 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
                ip_vs_service_put(svc);
                return NF_DROP;
        }
+
+#ifdef CONFIG_SYSCTL
        net = skb_net(skb);
 
 #ifdef CONFIG_IP_VS_IPV6
@@ -563,6 +567,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
                ip_vs_conn_put(cp);
                return ret;
        }
+#endif
 
        /*
         * When the virtual ftp service is presented, packets destined