netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Simon Horman <horms@verge.net.au>
To: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: lvs-devel@vger.kernel.org, netdev@vger.kernel.org,
	netfilter-devel@vger.kernel.org,
	Wensong Zhang <wensong@linux-vs.org>,
	Julian Anastasov <ja@ssi.bg>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Simon Horman <horms@verge.net.au>
Subject: [PATCH nf-next 04/84] ipvs: Store ipvs not net in struct ip_vs_conn
Date: Thu, 24 Sep 2015 09:51:49 +0900	[thread overview]
Message-ID: <1443055989-1306-5-git-send-email-horms@verge.net.au> (raw)
In-Reply-To: <1443055989-1306-1-git-send-email-horms@verge.net.au>

From: "Eric W. Biederman" <ebiederm@xmission.com>

In practice struct netns_ipvs is as meaningful as struct net and more
useful as it holds the ipvs specific data.  So store a pointer to
struct netns_ipvs.

Update the accesses of conn->net to access conn->ipvs->net instead.

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>
---
 include/net/ip_vs.h                   | 31 +------------------------------
 net/netfilter/ipvs/ip_vs_conn.c       | 30 +++++++++++++++---------------
 net/netfilter/ipvs/ip_vs_ftp.c        |  6 +++---
 net/netfilter/ipvs/ip_vs_nfct.c       |  3 +--
 net/netfilter/ipvs/ip_vs_proto_sctp.c |  2 +-
 net/netfilter/ipvs/ip_vs_proto_tcp.c  |  2 +-
 net/netfilter/ipvs/ip_vs_proto_udp.c  |  2 +-
 net/netfilter/ipvs/ip_vs_xmit.c       |  4 ++--
 8 files changed, 25 insertions(+), 55 deletions(-)

diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
index 1096a71ab6ed..3bf6da8fdaf1 100644
--- a/include/net/ip_vs.h
+++ b/include/net/ip_vs.h
@@ -572,9 +572,7 @@ struct ip_vs_conn {
 	volatile __u32          flags;          /* status flags */
 	__u16                   protocol;       /* Which protocol (TCP/UDP) */
 	__u16			daf;		/* Address family of the dest */
-#ifdef CONFIG_NET_NS
-	struct net              *net;           /* Name space */
-#endif
+	struct netns_ipvs	*ipvs;
 
 	/* counter and timer */
 	atomic_t		refcnt;		/* reference count */
@@ -621,33 +619,6 @@ struct ip_vs_conn {
 	struct rcu_head		rcu_head;
 };
 
-/* To save some memory in conn table when name space is disabled. */
-static inline struct net *ip_vs_conn_net(const struct ip_vs_conn *cp)
-{
-#ifdef CONFIG_NET_NS
-	return cp->net;
-#else
-	return &init_net;
-#endif
-}
-
-static inline void ip_vs_conn_net_set(struct ip_vs_conn *cp, struct net *net)
-{
-#ifdef CONFIG_NET_NS
-	cp->net = net;
-#endif
-}
-
-static inline int ip_vs_conn_net_eq(const struct ip_vs_conn *cp,
-				    struct net *net)
-{
-#ifdef CONFIG_NET_NS
-	return cp->net == net;
-#else
-	return 1;
-#endif
-}
-
 /* Extended internal versions of struct ip_vs_service_user and ip_vs_dest_user
  * for IPv6 support.
  *
diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
index f71b3146a5a1..dd8e5a12d545 100644
--- a/net/netfilter/ipvs/ip_vs_conn.c
+++ b/net/netfilter/ipvs/ip_vs_conn.c
@@ -148,7 +148,7 @@ static unsigned int ip_vs_conn_hashkey_conn(const struct ip_vs_conn *cp)
 {
 	struct ip_vs_conn_param p;
 
-	ip_vs_conn_fill_param(ip_vs_conn_net(cp), cp->af, cp->protocol,
+	ip_vs_conn_fill_param(cp->ipvs->net, cp->af, cp->protocol,
 			      &cp->caddr, cp->cport, NULL, 0, &p);
 
 	if (cp->pe) {
@@ -279,7 +279,7 @@ __ip_vs_conn_in_get(const struct ip_vs_conn_param *p)
 		    ip_vs_addr_equal(p->af, p->vaddr, &cp->vaddr) &&
 		    ((!p->cport) ^ (!(cp->flags & IP_VS_CONN_F_NO_CPORT))) &&
 		    p->protocol == cp->protocol &&
-		    ip_vs_conn_net_eq(cp, p->net)) {
+		    net_eq(cp->ipvs->net, p->net)) {
 			if (!__ip_vs_conn_get(cp))
 				continue;
 			/* HIT */
@@ -359,7 +359,7 @@ struct ip_vs_conn *ip_vs_ct_in_get(const struct ip_vs_conn_param *p)
 
 	hlist_for_each_entry_rcu(cp, &ip_vs_conn_tab[hash], c_list) {
 		if (unlikely(p->pe_data && p->pe->ct_match)) {
-			if (!ip_vs_conn_net_eq(cp, p->net))
+			if (!net_eq(cp->ipvs->net, p->net))
 				continue;
 			if (p->pe == cp->pe && p->pe->ct_match(p, cp)) {
 				if (__ip_vs_conn_get(cp))
@@ -377,7 +377,7 @@ struct ip_vs_conn *ip_vs_ct_in_get(const struct ip_vs_conn_param *p)
 		    p->vport == cp->vport && p->cport == cp->cport &&
 		    cp->flags & IP_VS_CONN_F_TEMPLATE &&
 		    p->protocol == cp->protocol &&
-		    ip_vs_conn_net_eq(cp, p->net)) {
+		    net_eq(cp->ipvs->net, p->net)) {
 			if (__ip_vs_conn_get(cp))
 				goto out;
 		}
@@ -418,7 +418,7 @@ struct ip_vs_conn *ip_vs_conn_out_get(const struct ip_vs_conn_param *p)
 		    ip_vs_addr_equal(p->af, p->vaddr, &cp->caddr) &&
 		    ip_vs_addr_equal(p->af, p->caddr, &cp->daddr) &&
 		    p->protocol == cp->protocol &&
-		    ip_vs_conn_net_eq(cp, p->net)) {
+		    net_eq(cp->ipvs->net, p->net)) {
 			if (!__ip_vs_conn_get(cp))
 				continue;
 			/* HIT */
@@ -638,7 +638,7 @@ void ip_vs_try_bind_dest(struct ip_vs_conn *cp)
 	 * so we can make the assumption that the svc_af is the same as the
 	 * dest_af
 	 */
-	dest = ip_vs_find_dest(ip_vs_conn_net(cp), cp->af, cp->af, &cp->daddr,
+	dest = ip_vs_find_dest(cp->ipvs->net, cp->af, cp->af, &cp->daddr,
 			       cp->dport, &cp->vaddr, cp->vport,
 			       cp->protocol, cp->fwmark, cp->flags);
 	if (dest) {
@@ -668,7 +668,7 @@ void ip_vs_try_bind_dest(struct ip_vs_conn *cp)
 #endif
 			ip_vs_bind_xmit(cp);
 
-		pd = ip_vs_proto_data_get(ip_vs_conn_net(cp), cp->protocol);
+		pd = ip_vs_proto_data_get(cp->ipvs->net, cp->protocol);
 		if (pd && atomic_read(&pd->appcnt))
 			ip_vs_bind_app(cp, pd->pp);
 	}
@@ -746,7 +746,7 @@ static int expire_quiescent_template(struct netns_ipvs *ipvs,
 int ip_vs_check_template(struct ip_vs_conn *ct)
 {
 	struct ip_vs_dest *dest = ct->dest;
-	struct netns_ipvs *ipvs = net_ipvs(ip_vs_conn_net(ct));
+	struct netns_ipvs *ipvs = ct->ipvs;
 
 	/*
 	 * Checking the dest server status.
@@ -800,8 +800,8 @@ static void ip_vs_conn_rcu_free(struct rcu_head *head)
 static void ip_vs_conn_expire(unsigned long data)
 {
 	struct ip_vs_conn *cp = (struct ip_vs_conn *)data;
-	struct net *net = ip_vs_conn_net(cp);
-	struct netns_ipvs *ipvs = net_ipvs(net);
+	struct netns_ipvs *ipvs = cp->ipvs;
+	struct net *net = ipvs->net;
 
 	/*
 	 *	do I control anybody?
@@ -887,7 +887,7 @@ ip_vs_conn_new(const struct ip_vs_conn_param *p, int dest_af,
 
 	INIT_HLIST_NODE(&cp->c_list);
 	setup_timer(&cp->timer, ip_vs_conn_expire, (unsigned long)cp);
-	ip_vs_conn_net_set(cp, p->net);
+	cp->ipvs	   = ipvs;
 	cp->af		   = p->af;
 	cp->daf		   = dest_af;
 	cp->protocol	   = p->protocol;
@@ -1061,7 +1061,7 @@ static int ip_vs_conn_seq_show(struct seq_file *seq, void *v)
 		size_t len = 0;
 		char dbuf[IP_VS_ADDRSTRLEN];
 
-		if (!ip_vs_conn_net_eq(cp, net))
+		if (!net_eq(cp->ipvs->net, net))
 			return 0;
 		if (cp->pe_data) {
 			pe_data[0] = ' ';
@@ -1146,7 +1146,7 @@ static int ip_vs_conn_sync_seq_show(struct seq_file *seq, void *v)
 		const struct ip_vs_conn *cp = v;
 		struct net *net = seq_file_net(seq);
 
-		if (!ip_vs_conn_net_eq(cp, net))
+		if (!net_eq(cp->ipvs->net, net))
 			return 0;
 
 #ifdef CONFIG_IP_VS_IPV6
@@ -1256,7 +1256,7 @@ void ip_vs_random_dropentry(struct net *net)
 			if (cp->flags & IP_VS_CONN_F_TEMPLATE)
 				/* connection template */
 				continue;
-			if (!ip_vs_conn_net_eq(cp, net))
+			if (!net_eq(cp->ipvs->net, net))
 				continue;
 			if (cp->protocol == IPPROTO_TCP) {
 				switch(cp->state) {
@@ -1319,7 +1319,7 @@ flush_again:
 	for (idx = 0; idx < ip_vs_conn_tab_size; idx++) {
 
 		hlist_for_each_entry_rcu(cp, &ip_vs_conn_tab[idx], c_list) {
-			if (!ip_vs_conn_net_eq(cp, net))
+			if (cp->ipvs != ipvs)
 				continue;
 			IP_VS_DBG(4, "del connection\n");
 			ip_vs_conn_expire_now(cp);
diff --git a/net/netfilter/ipvs/ip_vs_ftp.c b/net/netfilter/ipvs/ip_vs_ftp.c
index 5d3daae98bf0..5ccbf3c16dd4 100644
--- a/net/netfilter/ipvs/ip_vs_ftp.c
+++ b/net/netfilter/ipvs/ip_vs_ftp.c
@@ -223,14 +223,14 @@ static int ip_vs_ftp_out(struct ip_vs_app *app, struct ip_vs_conn *cp,
 		 */
 		{
 			struct ip_vs_conn_param p;
-			ip_vs_conn_fill_param(ip_vs_conn_net(cp), AF_INET,
+			ip_vs_conn_fill_param(cp->ipvs->net, AF_INET,
 					      iph->protocol, &from, port,
 					      &cp->caddr, 0, &p);
 			n_cp = ip_vs_conn_out_get(&p);
 		}
 		if (!n_cp) {
 			struct ip_vs_conn_param p;
-			ip_vs_conn_fill_param(ip_vs_conn_net(cp),
+			ip_vs_conn_fill_param(cp->ipvs->net,
 					      AF_INET, IPPROTO_TCP, &cp->caddr,
 					      0, &cp->vaddr, port, &p);
 			/* As above, this is ipv4 only */
@@ -392,7 +392,7 @@ static int ip_vs_ftp_in(struct ip_vs_app *app, struct ip_vs_conn *cp,
 
 	{
 		struct ip_vs_conn_param p;
-		ip_vs_conn_fill_param(ip_vs_conn_net(cp), AF_INET,
+		ip_vs_conn_fill_param(cp->ipvs->net, AF_INET,
 				      iph->protocol, &to, port, &cp->vaddr,
 				      htons(ntohs(cp->vport)-1), &p);
 		n_cp = ip_vs_conn_in_get(&p);
diff --git a/net/netfilter/ipvs/ip_vs_nfct.c b/net/netfilter/ipvs/ip_vs_nfct.c
index 136184572fc9..dae3c069966f 100644
--- a/net/netfilter/ipvs/ip_vs_nfct.c
+++ b/net/netfilter/ipvs/ip_vs_nfct.c
@@ -274,8 +274,7 @@ void ip_vs_conn_drop_conntrack(struct ip_vs_conn *cp)
 		" for conn " FMT_CONN "\n",
 		__func__, ARG_TUPLE(&tuple), ARG_CONN(cp));
 
-	h = nf_conntrack_find_get(ip_vs_conn_net(cp), &nf_ct_zone_dflt,
-				  &tuple);
+	h = nf_conntrack_find_get(cp->ipvs->net, &nf_ct_zone_dflt, &tuple);
 	if (h) {
 		ct = nf_ct_tuplehash_to_ctrack(h);
 		/* Show what happens instead of calling nf_ct_kill() */
diff --git a/net/netfilter/ipvs/ip_vs_proto_sctp.c b/net/netfilter/ipvs/ip_vs_proto_sctp.c
index ac628a9afdb5..ce615866bd63 100644
--- a/net/netfilter/ipvs/ip_vs_proto_sctp.c
+++ b/net/netfilter/ipvs/ip_vs_proto_sctp.c
@@ -521,7 +521,7 @@ static void sctp_unregister_app(struct net *net, struct ip_vs_app *inc)
 
 static int sctp_app_conn_bind(struct ip_vs_conn *cp)
 {
-	struct netns_ipvs *ipvs = net_ipvs(ip_vs_conn_net(cp));
+	struct netns_ipvs *ipvs = cp->ipvs;
 	int hash;
 	struct ip_vs_app *inc;
 	int result = 0;
diff --git a/net/netfilter/ipvs/ip_vs_proto_tcp.c b/net/netfilter/ipvs/ip_vs_proto_tcp.c
index 8f43cf6044e9..e00623a88518 100644
--- a/net/netfilter/ipvs/ip_vs_proto_tcp.c
+++ b/net/netfilter/ipvs/ip_vs_proto_tcp.c
@@ -633,7 +633,7 @@ tcp_unregister_app(struct net *net, struct ip_vs_app *inc)
 static int
 tcp_app_conn_bind(struct ip_vs_conn *cp)
 {
-	struct netns_ipvs *ipvs = net_ipvs(ip_vs_conn_net(cp));
+	struct netns_ipvs *ipvs = cp->ipvs;
 	int hash;
 	struct ip_vs_app *inc;
 	int result = 0;
diff --git a/net/netfilter/ipvs/ip_vs_proto_udp.c b/net/netfilter/ipvs/ip_vs_proto_udp.c
index f3aa821efb89..3b0a2dc1826b 100644
--- a/net/netfilter/ipvs/ip_vs_proto_udp.c
+++ b/net/netfilter/ipvs/ip_vs_proto_udp.c
@@ -400,7 +400,7 @@ udp_unregister_app(struct net *net, struct ip_vs_app *inc)
 
 static int udp_app_conn_bind(struct ip_vs_conn *cp)
 {
-	struct netns_ipvs *ipvs = net_ipvs(ip_vs_conn_net(cp));
+	struct netns_ipvs *ipvs = cp->ipvs;
 	int hash;
 	struct ip_vs_app *inc;
 	int result = 0;
diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
index 9dbb7ccadecb..5b5ec0b688de 100644
--- a/net/netfilter/ipvs/ip_vs_xmit.c
+++ b/net/netfilter/ipvs/ip_vs_xmit.c
@@ -574,7 +574,7 @@ static inline int ip_vs_nat_send_or_cont(int pf, struct sk_buff *skb,
 		skb_forward_csum(skb);
 		if (!skb->sk)
 			skb_sender_cpu_clear(skb);
-		NF_HOOK(pf, NF_INET_LOCAL_OUT, ip_vs_conn_net(cp), NULL, skb,
+		NF_HOOK(pf, NF_INET_LOCAL_OUT, cp->ipvs->net, NULL, skb,
 			NULL, skb_dst(skb)->dev, dst_output_okfn);
 	} else
 		ret = NF_ACCEPT;
@@ -596,7 +596,7 @@ static inline int ip_vs_send_or_cont(int pf, struct sk_buff *skb,
 		skb_forward_csum(skb);
 		if (!skb->sk)
 			skb_sender_cpu_clear(skb);
-		NF_HOOK(pf, NF_INET_LOCAL_OUT, ip_vs_conn_net(cp), NULL, skb,
+		NF_HOOK(pf, NF_INET_LOCAL_OUT, cp->ipvs->net, NULL, skb,
 			NULL, skb_dst(skb)->dev, dst_output_okfn);
 	} else
 		ret = NF_ACCEPT;
-- 
2.1.4

  parent reply	other threads:[~2015-09-24  0:51 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-24  0:51 [GIT PULL nf-next 00/84] Second Round of IPVS Updates for v4.4 Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 01/84] ipvs: Hoist computation of ipvs earlier in sctp_conn_schedule Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 02/84] ipvs: Don't use current in proc_do_defense_mode Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 03/84] ipvs: Use state->net in the ipvs forward functions Simon Horman
2015-09-24  0:51 ` Simon Horman [this message]
2015-09-24  0:51 ` [PATCH nf-next 05/84] ipvs: Store ipvs not net in struct ip_vs_conn_param Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 06/84] ipvs: Pass ipvs not net to ip_vs_fill_conn Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 07/84] ipvs: Store ipvs not net in struct ip_vs_service Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 08/84] ipvs: Pass ipvs not net to ip_vs_svc_fwm_hashkey Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 09/84] ipvs: Pass ipvs not net to __ip_vs_svc_fwm_find Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 10/84] ipvs: Pass ipvs not net to ip_vs_svc_hashkey Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 11/84] ipvs: Pass ipvs not net to __ip_vs_service_find Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 12/84] ipvs: Pass ipvs not net to ip_vs_service_find Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 13/84] ipvs: Pass ipvs not net to ip_vs_has_real_service Simon Horman
2015-09-24  0:51 ` [PATCH nf-next 14/84] ipvs: Pass ipvs not net to ip_vs_find_dest Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 15/84] ipvs: Pass ipvs not net to ip_vs_trash_cleanup Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 16/84] ipvs: Pass ipvs not net to __ip_vs_del_dest Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 17/84] ipvs: Pass ipvs not net to ip_vs_dest_trash_expire Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 18/84] ipvs: Cache ipvs in ip_vs_genl_set_cmd Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 19/84] ipvs: Pass ipvs not net to ip_vs_add_service Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 20/84] ipvs: Pass ipvs not net to ip_vs_flush Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 21/84] ipvs: Pass ipvs not net to ip_vs_service_net_cleanup Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 22/84] ipvs: Pass ipvs not net to ip_vs_zero_all Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 23/84] ipvs: Cache ipvs in ip_vs_in_icmp and ip_vs_in_icmp_v6 Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 24/84] ipvs: Pass ipvs not net to ip_vs_proto_data_get Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 25/84] ipvs: Pass ipvs not net to ip_vs_set_timeout Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 26/84] ipvs: Pass ipvs not net to __ip_vs_get_service_entries Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 27/84] ipvs: Pass ipvs not net to __ip_vs_get_dest_entries Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 28/84] ipvs: Pass ipvs not net to __ip_vs_get_timeouts Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 29/84] ipvs: Pass ipvs not net to ip_vs_genl_parse_service Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 30/84] ipvs: Pass ipvs not net to ip_vs_genl_find_service Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 31/84] ipvs: Pass ipvs not net to ip_vs_genl_new_daemon Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 32/84] ipvs: Pass ipvs not net to ip_vs_genl_del_daemon Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 33/84] ipvs: Pass ipvs not net to start_sync_thread Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 34/84] ipvs: Pass ipvs not net to stop_sync_thread Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 35/84] ipvs: Pass ipvs not net to make_send_sock Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 36/84] ipvs: Pass ipvs not net to make_receive_sock Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 37/84] ipvs: Store ipvs not net in struct ip_vs_sync_thread_data Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 38/84] ipvs: Pass ipvs not net to ip_vs_process_message Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 39/84] ipvs: Pass ipvs not net to ip_vs_sync_conn_v0 Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 40/84] ipvs: Pass ipvs not net to ip_vs_sync_conn Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 41/84] ipvs: Pass ipvs not net to ip_vs_proc_conn Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 42/84] ipvs: Pass ipvs not net to ip_vs_proc_sync_conn Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 43/84] ipvs: Pass ipvs not net to ip_vs_sync_net_init Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 44/84] ipvs: Pass ipvs not net to ip_vs_sync_net_cleanup Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 45/84] ipvs: Pass ipvs not net to ip_vs_genl_set_config Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 46/84] ipvs: Pass ipvs not net to ip_vs_start_estimator aned ip_vs_stop_estimator Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 47/84] ipvs: Pass ipvs not net to ip_vs_random_drop_entry Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 48/84] ipvs: Pass ipvs not net to ip_vs_control_net_(init|cleanup)_sysctl Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 49/84] ipvs: Pass ipvs not net into ip_vs_control_net_(init|cleanup) Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 50/84] ipvs: Pass ipvs not net to estimation_timer Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 51/84] ipvs: Pass ipvs not net to ip_vs_estimator_net_init and ip_vs_estimator_cleanup Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 52/84] ipvs: Pass ipvs not net into register_app and unregister_app Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 53/84] ipvs: Pass ipvs not net into ip_vs_app_inc_new Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 54/84] ipvs: Pass ipvs not net to register_ip_vs_app_inc Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 55/84] ipvs: Pass ipvs not net to register_ip_vs_app and unregister_ip_vs_app Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 56/84] ipvs: Pass ipvs not net into ip_vs_app_inc_release Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 57/84] ipvs: Pass ipvs not net into ip_vs_app_net_init and ip_vs_app_net_cleanup Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 58/84] ipvs: Pass ipvs not net into [un]register_ip_vs_proto_netns Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 59/84] ipvs: Pass ipvs not net into init_netns and exit_netns Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 60/84] ipvs: Pass ipvs into ip_vs_conn_fill_param_proto Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 61/84] ipvs: Pass ipvs into .conn_in_get and ip_vs_conn_in_get_proto Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 62/84] ipvs: Pass ipvs into conn_out_get Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 63/84] ipvs: Pass ipvs not net to ip_vs_conn_hashkey Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 64/84] ipvs: Pass ipvs not net into ip_vs_conn_net_flush Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 65/84] ipvs: Pass ipvs not net into ip_vs_conn_net_init and ip_vs_conn_net_cleanup Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 66/84] ipvs: Pass ipvs into .conn_schedule and ip_vs_try_to_schedule Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 67/84] ipvs: Better derivation of ipvs in ip_vs_tunnel_xmit Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 68/84] ipvs: Pass ipvs into __ip_vs_get_out_rt Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 69/84] ipvs: Pass ipvs into __ip_vs_get_out_rt_v6 Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 70/84] ipvs: Pass ipvs into ensure_mtu_is adequate Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 71/84] ipvs: Better derivation of ipvs in ip_vs_in_stats and ip_vs_out_stats Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 72/84] ipvs: Wrap sysctl_cache_bypass and remove ifdefs in ip_vs_leave Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 73/84] ipvs: Simplify ipvs and net access " Simon Horman
2015-09-24  0:52 ` [PATCH nf-next 74/84] ipvs: Pass ipvs not net into sysctl_nat_icmp_send Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 75/84] ipvs: Pass ipvs into ip_vs_out Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 76/84] ipvs: Pass ipvs into ip_vs_in Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 77/84] ipvs: Pass ipvs into ip_vs_in_icmp and ip_vs_in_icmp_v6 Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 78/84] ipvs: Pass ipvs into ip_vs_out_icmp and ip_vs_out_icmp_v6 Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 79/84] ipvs: Pass ipvs through ip_vs_route_me_harder into sysctl_snat_reroute Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 80/84] ipvs: Remove net argument from ip_vs_tcp_conn_listen Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 81/84] ipvs: Pass ipvs not net to ip_vs_protocol_net_(init|cleanup) Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 82/84] ipvs: Remove skb_net Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 83/84] ipvs: Remove skb_sknet Simon Horman
2015-09-24  0:53 ` [PATCH nf-next 84/84] ipvs: Pass ipvs into ip_vs_gather_frags Simon Horman
2015-09-25  0:01 ` [GIT PULL nf-next 00/84] Second Round of IPVS Updates for v4.4 Pablo Neira Ayuso
2015-09-28 15:23   ` [PATCH] ipvs: Don't protect ip_vs_addr_is_unicast with CONFIG_SYSCTL Eric W. Biederman
2015-09-28 18:45     ` Julian Anastasov
2015-09-29  0:55       ` Simon Horman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1443055989-1306-5-git-send-email-horms@verge.net.au \
    --to=horms@verge.net.au \
    --cc=ebiederm@xmission.com \
    --cc=ja@ssi.bg \
    --cc=lvs-devel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=pablo@netfilter.org \
    --cc=wensong@linux-vs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).