Patchwork nets: Introduce read_pnet() and write_pnet() helpers

login
register
mail settings
Submitter Eric Dumazet
Date Nov. 12, 2008, 6:20 a.m.
Message ID <491A75BE.1010907@cosmosbay.com>
Download mbox | patch
Permalink /patch/8314/
State Accepted
Delegated to: David Miller
Headers show

Comments

Eric Dumazet - Nov. 12, 2008, 6:20 a.m.
So in this version I splited the patches to make them clear

I removed the DECLARE_PNET since it was apparently using too
many capital letters :)

Thanks

[PATCH] nets: Introduce read_pnet() and write_pnet() helpers

This patch introduces two helpers that deal with reading and writing
struct net pointers in various network structures.

Their implementation depends on CONFIG_NET_NS

For symmetry, both functions work with "struct net **pnet".

Their usage should reduce the number of #ifdef CONFIG_NET_NS,
without adding many helpers for each network structure
that hold a "struct net *pointer"

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
---
 include/net/net_namespace.h |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+)
David Miller - Nov. 12, 2008, 8:53 a.m.
From: Eric Dumazet <dada1@cosmosbay.com>
Date: Wed, 12 Nov 2008 07:20:46 +0100

> [PATCH] nets: Introduce read_pnet() and write_pnet() helpers
> 
> This patch introduces two helpers that deal with reading and writing
> struct net pointers in various network structures.
> 
> Their implementation depends on CONFIG_NET_NS
> 
> For symmetry, both functions work with "struct net **pnet".
> 
> Their usage should reduce the number of #ifdef CONFIG_NET_NS,
> without adding many helpers for each network structure
> that hold a "struct net *pointer"
> 
> Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
index 700c53a..3195577 100644
--- a/include/net/net_namespace.h
+++ b/include/net/net_namespace.h
@@ -192,6 +192,24 @@  static inline void release_net(struct net *net)
 }
 #endif
 
+#ifdef CONFIG_NET_NS
+
+static inline void write_pnet(struct net **pnet, struct net *net)
+{
+	*pnet = net;
+}
+
+static inline struct net *read_pnet(struct net * const *pnet)
+{
+	return *pnet;
+}
+
+#else
+
+#define write_pnet(pnet, net)	do { (void)(net);} while (0)
+#define read_pnet(pnet)		(&init_net)
+
+#endif
 
 #define for_each_net(VAR)				\
 	list_for_each_entry(VAR, &net_namespace_list, list)