netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pavel Emelyanov <xemul@openvz.org>
To: David Miller <davem@davemloft.net>
Cc: Patrick McHardy <kaber@trash.net>,
	Linux Netdev List <netdev@vger.kernel.org>
Subject: [PATCH net-2.6.26 4/10][VLAN]: Introduce the vlan_net structure and init/exit net ops.
Date: Tue, 15 Apr 2008 16:07:13 +0400	[thread overview]
Message-ID: <48049A71.1030900@openvz.org> (raw)
In-Reply-To: <4804989F.1060503@openvz.org>

Unlike TUN, it is empty from the very beginning, and will 
be eventually populated later.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>

---
 net/8021q/vlan.c |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 net/8021q/vlan.h |    5 +++++
 2 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index cf8d810..9296601 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -32,6 +32,7 @@
 #include <linux/rtnetlink.h>
 #include <linux/notifier.h>
 #include <net/net_namespace.h>
+#include <net/netns/generic.h>
 
 #include <linux/if_vlan.h>
 #include "vlan.h"
@@ -41,6 +42,8 @@
 
 /* Global VLAN variables */
 
+int vlan_net_id;
+
 /* Our listing of VLAN group(s) */
 static struct hlist_head vlan_group_hash[VLAN_GRP_HASH_SIZE];
 
@@ -625,6 +628,41 @@ out:
 	return err;
 }
 
+static int vlan_init_net(struct net *net)
+{
+	int err;
+	struct vlan_net *vn;
+
+	err = -ENOMEM;
+	vn = kzalloc(sizeof(struct vlan_net), GFP_KERNEL);
+	if (vn == NULL)
+		goto err_alloc;
+
+	err = net_assign_generic(net, vlan_net_id, vn);
+	if (err < 0)
+		goto err_assign;
+
+	return 0;
+
+err_assign:
+	kfree(vn);
+err_alloc:
+	return err;
+}
+
+static void vlan_exit_net(struct net *net)
+{
+	struct vlan_net *vn;
+
+	vn = net_generic(net, vlan_net_id);
+	kfree(vn);
+}
+
+static struct pernet_operations vlan_net_ops = {
+	.init = vlan_init_net,
+	.exit = vlan_exit_net,
+};
+
 static int __init vlan_proto_init(void)
 {
 	int err;
@@ -632,6 +670,10 @@ static int __init vlan_proto_init(void)
 	pr_info("%s v%s %s\n", vlan_fullname, vlan_version, vlan_copyright);
 	pr_info("All bugs added by %s\n", vlan_buggyright);
 
+	err = register_pernet_gen_device(&vlan_net_id, &vlan_net_ops);
+	if (err < 0)
+		goto err0;
+
 	err = vlan_proc_init();
 	if (err < 0)
 		goto err1;
@@ -653,6 +695,8 @@ err3:
 err2:
 	vlan_proc_cleanup();
 err1:
+	unregister_pernet_gen_device(vlan_net_id, &vlan_net_ops);
+err0:
 	return err;
 }
 
@@ -673,6 +717,8 @@ static void __exit vlan_cleanup_module(void)
 
 	vlan_proc_cleanup();
 
+	unregister_pernet_gen_device(vlan_net_id, &vlan_net_ops);
+
 	synchronize_net();
 }
 
diff --git a/net/8021q/vlan.h b/net/8021q/vlan.h
index 51271ae..f27d8d6 100644
--- a/net/8021q/vlan.h
+++ b/net/8021q/vlan.h
@@ -50,4 +50,9 @@ static inline int is_vlan_dev(struct net_device *dev)
 	return dev->priv_flags & IFF_802_1Q_VLAN;
 }
 
+extern int vlan_net_id;
+
+struct vlan_net {
+};
+
 #endif /* !(__BEN_VLAN_802_1Q_INC__) */
-- 
1.5.3.4


  parent reply	other threads:[~2008-04-15 11:32 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-15 11:59 [PATCH net-2.6.26 0/10][VLAN]: Make VLAN devices work in net namespaces Pavel Emelyanov
2008-04-15 12:01 ` [PATCH net-2.6.26 1/10][RTNL]: Relax for_each_netdev_safe in __rtnl_link_unregister Pavel Emelyanov
2008-04-15 12:00   ` Patrick McHardy
2008-04-15 12:03 ` [PATCH net-2.6.26 2/10][RTNL]: Introduce the rtnl_kill_links helper Pavel Emelyanov
2008-04-15 12:01   ` Patrick McHardy
2008-04-15 12:05 ` [PATCH net-2.6.26 3/10][VLAN]: Tag vlan_group_device with net device, not ifindex Pavel Emelyanov
2008-04-15 12:03   ` Patrick McHardy
2008-04-15 12:07 ` Pavel Emelyanov [this message]
2008-04-15 12:09   ` [PATCH net-2.6.26 4/10][VLAN]: Introduce the vlan_net structure and init/exit net ops Patrick McHardy
2008-04-15 12:50     ` Pavel Emelyanov
2008-04-15 12:24   ` Patrick McHardy
2008-04-15 12:09 ` [PATCH net-2.6.26 5/10][VLAN]: Add a net argument to proc init and cleanup calls Pavel Emelyanov
2008-04-15 12:26   ` Patrick McHardy
2008-04-15 13:05     ` Pavel Emelyanov
2008-04-15 12:31       ` Patrick McHardy
2008-04-15 12:12 ` [PATCH net-2.6.26 6/10][VLAN]: Create proc entries in the proper net Pavel Emelyanov
2008-04-15 12:28   ` Patrick McHardy
2008-04-15 12:13 ` [PATCH net-2.6.26 7/10][VLAN]: Make the /proc/net/vlan/conf file show per-net info Pavel Emelyanov
2008-04-15 12:28   ` Patrick McHardy
2008-04-15 12:15 ` [PATCH net-2.6.26 8/10][VLAN]: Make the vlan_name_type per-net Pavel Emelyanov
2008-04-15 12:17 ` [PATCH net-2.6.26 9/10][VLAN]: Allow vlan devices registration in net namespaces Pavel Emelyanov
2008-04-15 12:19 ` [PATCH net-2.6.26 10/10][VLAN]: Handle vlan devices net namespace changing Pavel Emelyanov
2008-04-15 12:30   ` Patrick McHardy
2008-04-16  8:02 ` [PATCH net-2.6.26 0/10][VLAN]: Make VLAN devices work in net namespaces David Miller

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=48049A71.1030900@openvz.org \
    --to=xemul@openvz.org \
    --cc=davem@davemloft.net \
    --cc=kaber@trash.net \
    --cc=netdev@vger.kernel.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).