1 #include <linux/if_vlan.h>
2 #include <linux/netdevice.h>
3 #include <net/net_namespace.h>
4 #include <net/netns/generic.h>
6 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
7 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
8 static int net_assign_generic(struct net *net, int id, void *data);
11 int __net_init compat_init_net(struct net *net, struct rpl_pernet_operations *pnet)
14 void *ovs_net = kzalloc(pnet->size, GFP_KERNEL);
19 err = net_assign_generic(net, *pnet->id, ovs_net);
24 err = pnet->init(net);
35 void __net_exit compat_exit_net(struct net *net, struct rpl_pernet_operations *pnet)
37 void *ovs_net = net_generic(net, *pnet->id);
45 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
46 #define MAX_DATA_COUNT 2
47 static struct net *net;
49 static void *__ovs_net_data[MAX_DATA_COUNT];
52 static int net_assign_generic(struct net *net, int id, void *data)
54 BUG_ON(id >= MAX_DATA_COUNT);
55 __ovs_net_data[id] = data;
59 void *net_generic(const struct net *net, int id)
61 return __ovs_net_data[id];
64 int rpl_register_pernet_gen_device(struct rpl_pernet_operations *rpl_pnet)
66 *rpl_pnet->id = count++;
67 return compat_init_net(net, rpl_pnet);
70 void rpl_unregister_pernet_gen_device(struct rpl_pernet_operations *rpl_pnet)
72 compat_exit_net(net, rpl_pnet);