lkml.org 
[lkml]   [2010]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/6] netns: Teach network device kobjects which namespace they are in.
    Quoting Eric W. Biederman (ebiederm@xmission.com):
    > diff --git a/net/Kconfig b/net/Kconfig
    > index 041c35e..265e33b 100644
    > --- a/net/Kconfig
    > +++ b/net/Kconfig
    > @@ -45,6 +45,14 @@ config COMPAT_NETLINK_MESSAGES
    >
    > menu "Networking options"
    >
    > +config NET_NS
    > + bool "Network namespace support"
    > + default n
    > + depends on EXPERIMENTAL && NAMESPACES
    > + help
    > + Allow user space to create what appear to be multiple instances
    > + of the network stack.
    > +

    Hi Eric,

    I'm confused - NET_NS is defined in init/Kconfig right now. Is the tree
    you're working from very different from mine, or is this the unfortunate
    rekult of the patches sitting so long?

    > source "net/packet/Kconfig"
    > source "net/unix/Kconfig"
    > source "net/xfrm/Kconfig"
    > diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
    > index 099c753..1b98e36 100644
    > --- a/net/core/net-sysfs.c
    > +++ b/net/core/net-sysfs.c
    > @@ -13,7 +13,9 @@
    > #include <linux/kernel.h>
    > #include <linux/netdevice.h>
    > #include <linux/if_arp.h>
    > +#include <linux/nsproxy.h>
    > #include <net/sock.h>
    > +#include <net/net_namespace.h>
    > #include <linux/rtnetlink.h>
    > #include <linux/wireless.h>
    > #include <net/wext.h>
    > @@ -466,6 +468,37 @@ static struct attribute_group wireless_group = {
    > };
    > #endif
    >
    > +static const void *net_current_ns(void)
    > +{
    > + return current->nsproxy->net_ns;
    > +}
    > +
    > +static const void *net_initial_ns(void)
    > +{
    > + return &init_net;
    > +}
    > +
    > +static const void *net_netlink_ns(struct sock *sk)
    > +{
    > + return sock_net(sk);
    > +}
    > +
    > +static struct kobj_ns_type_operations net_ns_type_operations = {
    > + .type = KOBJ_NS_TYPE_NET,
    > + .current_ns = net_current_ns,
    > + .netlink_ns = net_netlink_ns,
    > + .initial_ns = net_initial_ns,
    > +};
    > +
    > +static void net_kobj_ns_exit(struct net *net)
    > +{
    > + kobj_ns_exit(KOBJ_NS_TYPE_NET, net);
    > +}
    > +
    > +static struct pernet_operations sysfs_net_ops = {
    > + .exit = net_kobj_ns_exit,
    > +};
    > +
    > #endif /* CONFIG_SYSFS */

    ...

    > int netdev_kobject_init(void)
    > {
    > + kobj_ns_type_register(&net_ns_type_operations);
    > +#ifdef CONFIG_SYSFS
    > + register_pernet_subsys(&sysfs_net_ops);
    > +#endif
    > return class_register(&net_class);

    I think the kobj_ns_type_register() needs to be under
    ifdef CONFIG_SYSFS as well, bc net_ns_type_operations is defined
    under ifdef CONFIG_SYSFS.

    -serge


    \
     
     \ /
      Last update: 2010-05-05 17:21    [W:0.026 / U:0.848 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site