* [PATCH] kni: create KNI interface in current network namespace @ 2014-11-21 3:10 Takayuki Usui [not found] ` <1416539426-20684-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 10+ messages in thread From: Takayuki Usui @ 2014-11-21 3:10 UTC (permalink / raw) To: dev-VfR2kkLFssw With this patch, KNI interface (e.g. vEth0) is created in the network namespace where the DPDK application is running. Otherwise, all interfaces are created in the default namespace in the host. Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> --- lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c index ba77776..f4a9965 100644 --- a/lib/librte_eal/linuxapp/kni/kni_misc.c +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c @@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) return -EBUSY; } + dev_net_set(net_dev, get_net_ns_by_pid(current->pid)); + kni = netdev_priv(net_dev); kni->net_dev = net_dev; -- 2.1.3 ^ permalink raw reply related [flat|nested] 10+ messages in thread
[parent not found: <1416539426-20684-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org>]
* Re: [PATCH] kni: create KNI interface in current network namespace [not found] ` <1416539426-20684-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> @ 2014-11-26 21:26 ` Thomas Monjalon 2014-12-01 5:45 ` Hemant-KZfg59tc24xl57MIdRCFDg 2014-11-27 9:06 ` Nicolas Dichtel 1 sibling, 1 reply; 10+ messages in thread From: Thomas Monjalon @ 2014-11-26 21:26 UTC (permalink / raw) To: dev-VfR2kkLFssw Anyone to review this KNI patch? 2014-11-21 12:10, Takayuki Usui: > With this patch, KNI interface (e.g. vEth0) is created in the > network namespace where the DPDK application is running. > Otherwise, all interfaces are created in the default namespace > in the host. > > Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> > --- > lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c > index ba77776..f4a9965 100644 > --- a/lib/librte_eal/linuxapp/kni/kni_misc.c > +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c > @@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) > return -EBUSY; > } > > + dev_net_set(net_dev, get_net_ns_by_pid(current->pid)); > + > kni = netdev_priv(net_dev); > > kni->net_dev = net_dev; ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kni: create KNI interface in current network namespace 2014-11-26 21:26 ` Thomas Monjalon @ 2014-12-01 5:45 ` Hemant-KZfg59tc24xl57MIdRCFDg [not found] ` <BY2PR0301MB0693EA8FA0BDAF0AE6B55F52C27D0-swgC6WJTr6E3qekZfdyv35wN6zqB+hSMnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org> 0 siblings, 1 reply; 10+ messages in thread From: Hemant-KZfg59tc24xl57MIdRCFDg @ 2014-12-01 5:45 UTC (permalink / raw) To: dev-VfR2kkLFssw@public.gmane.org > 2014-11-21 12:10, Takayuki Usui: > > With this patch, KNI interface (e.g. vEth0) is created in the network > > namespace where the DPDK application is running. > > Otherwise, all interfaces are created in the default namespace in the > > host. > > > > Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> > > --- > > lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c > > b/lib/librte_eal/linuxapp/kni/kni_misc.c > > index ba77776..f4a9965 100644 > > --- a/lib/librte_eal/linuxapp/kni/kni_misc.c > > +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c > > @@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned > long ioctl_param) > > return -EBUSY; > > } > > > > + dev_net_set(net_dev, get_net_ns_by_pid(current->pid)); > > + Another way to get it done is by the following. It will be init_net for the root container. #ifdef CONFIG_NET_NS net_dev->nd_net = current->nsproxy->net_ns; #endif > > kni = netdev_priv(net_dev); > > > > kni->net_dev = net_dev; ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <BY2PR0301MB0693EA8FA0BDAF0AE6B55F52C27D0-swgC6WJTr6E3qekZfdyv35wN6zqB+hSMnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>]
* Re: [PATCH] kni: create KNI interface in current network namespace [not found] ` <BY2PR0301MB0693EA8FA0BDAF0AE6B55F52C27D0-swgC6WJTr6E3qekZfdyv35wN6zqB+hSMnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org> @ 2014-12-01 10:42 ` Nicolas Dichtel 0 siblings, 0 replies; 10+ messages in thread From: Nicolas Dichtel @ 2014-12-01 10:42 UTC (permalink / raw) To: Hemant-KZfg59tc24xl57MIdRCFDg@public.gmane.org, dev-VfR2kkLFssw@public.gmane.org Le 01/12/2014 06:45, Hemant-KZfg59tc24xl57MIdRCFDg@public.gmane.org a écrit : >> 2014-11-21 12:10, Takayuki Usui: >>> With this patch, KNI interface (e.g. vEth0) is created in the network >>> namespace where the DPDK application is running. >>> Otherwise, all interfaces are created in the default namespace in the >>> host. >>> >>> Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> >>> --- >>> lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c >>> b/lib/librte_eal/linuxapp/kni/kni_misc.c >>> index ba77776..f4a9965 100644 >>> --- a/lib/librte_eal/linuxapp/kni/kni_misc.c >>> +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c >>> @@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned >> long ioctl_param) >>> return -EBUSY; >>> } >>> >>> + dev_net_set(net_dev, get_net_ns_by_pid(current->pid)); >>> + > > Another way to get it done is by the following. It will be init_net for the root container. > > #ifdef CONFIG_NET_NS > net_dev->nd_net = current->nsproxy->net_ns; > #endif No. It's always better to use existing helpers, it hides this kind of ifdef and more importantly, it do the right things (call release_net()/hold_net())! Reimplemented helpers is error prone. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kni: create KNI interface in current network namespace [not found] ` <1416539426-20684-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> 2014-11-26 21:26 ` Thomas Monjalon @ 2014-11-27 9:06 ` Nicolas Dichtel [not found] ` <5476E97D.5040304-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> 1 sibling, 1 reply; 10+ messages in thread From: Nicolas Dichtel @ 2014-11-27 9:06 UTC (permalink / raw) To: Takayuki Usui, dev-VfR2kkLFssw Le 21/11/2014 04:10, Takayuki Usui a écrit : > With this patch, KNI interface (e.g. vEth0) is created in the > network namespace where the DPDK application is running. > Otherwise, all interfaces are created in the default namespace > in the host. > > Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> > --- > lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c > index ba77776..f4a9965 100644 > --- a/lib/librte_eal/linuxapp/kni/kni_misc.c > +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c > @@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) > return -EBUSY; > } > > + dev_net_set(net_dev, get_net_ns_by_pid(current->pid)); You should test the returned value and release the refcnt. net = get_net_ns_by_pid(current->pid) if (IS_ERR(net)) ... put_net(net); > + > kni = netdev_priv(net_dev); > > kni->net_dev = net_dev; > ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <5476E97D.5040304-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>]
* [PATCH v2] kni: create KNI interface in current network namespace [not found] ` <5476E97D.5040304-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> @ 2014-12-02 2:19 ` Takayuki Usui [not found] ` <1417486763-12883-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 10+ messages in thread From: Takayuki Usui @ 2014-12-02 2:19 UTC (permalink / raw) To: dev-VfR2kkLFssw With this patch, KNI interface (e.g. vEth0) is created in the network namespace where the DPDK application is running. Otherwise, all interfaces are created in the default namespace in the host. put_net() is required, since get_net_ns_by_pid() increments the reference counter of the network namespace with get_net(). Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> --- lib/librte_eal/linuxapp/kni/kni_misc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c index ba77776..33c7a48 100644 --- a/lib/librte_eal/linuxapp/kni/kni_misc.c +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c @@ -311,6 +311,7 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) struct net_device *net_dev = NULL; struct net_device *lad_dev = NULL; struct kni_dev *kni, *dev, *n; + struct net *net; printk(KERN_INFO "KNI: Creating kni...\n"); /* Check the buffer size, to avoid warning */ @@ -354,6 +355,12 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) return -EBUSY; } + net = get_net_ns_by_pid(current->pid); + if (IS_ERR(net)) + return PTR_ERR(net); + dev_net_set(net_dev, net); + put_net(net); + kni = netdev_priv(net_dev); kni->net_dev = net_dev; -- 2.1.3 ^ permalink raw reply related [flat|nested] 10+ messages in thread
[parent not found: <1417486763-12883-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org>]
* Re: [PATCH v2] kni: create KNI interface in current network namespace [not found] ` <1417486763-12883-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> @ 2014-12-02 9:04 ` Nicolas Dichtel [not found] ` <547D809E.8020607-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 10+ messages in thread From: Nicolas Dichtel @ 2014-12-02 9:04 UTC (permalink / raw) To: Takayuki Usui, dev-VfR2kkLFssw Le 02/12/2014 03:19, Takayuki Usui a écrit : > With this patch, KNI interface (e.g. vEth0) is created in the > network namespace where the DPDK application is running. > Otherwise, all interfaces are created in the default namespace > in the host. > > put_net() is required, since get_net_ns_by_pid() increments > the reference counter of the network namespace with get_net(). > > Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> > --- > lib/librte_eal/linuxapp/kni/kni_misc.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c > index ba77776..33c7a48 100644 > --- a/lib/librte_eal/linuxapp/kni/kni_misc.c > +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c > @@ -311,6 +311,7 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) > struct net_device *net_dev = NULL; > struct net_device *lad_dev = NULL; > struct kni_dev *kni, *dev, *n; > + struct net *net; > > printk(KERN_INFO "KNI: Creating kni...\n"); > /* Check the buffer size, to avoid warning */ > @@ -354,6 +355,12 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) > return -EBUSY; > } > > + net = get_net_ns_by_pid(current->pid); > + if (IS_ERR(net)) In case of error, you should call free_netdev(net_dev) to avoid a memory leak. > + return PTR_ERR(net); > + dev_net_set(net_dev, net); > + put_net(net); > + > kni = netdev_priv(net_dev); > > kni->net_dev = net_dev; > ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <547D809E.8020607-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>]
* [PATCH v3] kni: create KNI interface in current network namespace [not found] ` <547D809E.8020607-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> @ 2014-12-03 1:37 ` Takayuki Usui [not found] ` <1417570646-7724-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> 0 siblings, 1 reply; 10+ messages in thread From: Takayuki Usui @ 2014-12-03 1:37 UTC (permalink / raw) To: dev-VfR2kkLFssw With this patch, KNI interface (e.g. vEth0) is created in the network namespace where the DPDK application is running. Otherwise, all interfaces are created in the default namespace in the host. put_net() is required, since get_net_ns_by_pid() increments the reference counter of the network namespace with get_net(). Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> --- lib/librte_eal/linuxapp/kni/kni_misc.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c index ba77776..868b325 100644 --- a/lib/librte_eal/linuxapp/kni/kni_misc.c +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c @@ -311,6 +311,7 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) struct net_device *net_dev = NULL; struct net_device *lad_dev = NULL; struct kni_dev *kni, *dev, *n; + struct net *net; printk(KERN_INFO "KNI: Creating kni...\n"); /* Check the buffer size, to avoid warning */ @@ -354,6 +355,14 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) return -EBUSY; } + net = get_net_ns_by_pid(current->pid); + if (IS_ERR(net)) { + free_netdev(net_dev); + return PTR_ERR(net); + } + dev_net_set(net_dev, net); + put_net(net); + kni = netdev_priv(net_dev); kni->net_dev = net_dev; -- 2.1.3 ^ permalink raw reply related [flat|nested] 10+ messages in thread
[parent not found: <1417570646-7724-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org>]
* Re: [PATCH v3] kni: create KNI interface in current network namespace [not found] ` <1417570646-7724-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> @ 2014-12-03 10:51 ` Nicolas Dichtel [not found] ` <547EEB31.4070900-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 10+ messages in thread From: Nicolas Dichtel @ 2014-12-03 10:51 UTC (permalink / raw) To: Takayuki Usui, dev-VfR2kkLFssw Le 03/12/2014 02:37, Takayuki Usui a écrit : > With this patch, KNI interface (e.g. vEth0) is created in the > network namespace where the DPDK application is running. > Otherwise, all interfaces are created in the default namespace > in the host. > > put_net() is required, since get_net_ns_by_pid() increments > the reference counter of the network namespace with get_net(). > > Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> Signed-off-by: Nicolas Dichtel <nicolas.dichtel-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <547EEB31.4070900-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH v3] kni: create KNI interface in current network namespace [not found] ` <547EEB31.4070900-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> @ 2014-12-03 14:01 ` Thomas Monjalon 0 siblings, 0 replies; 10+ messages in thread From: Thomas Monjalon @ 2014-12-03 14:01 UTC (permalink / raw) To: Takayuki Usui; +Cc: dev-VfR2kkLFssw > > With this patch, KNI interface (e.g. vEth0) is created in the > > network namespace where the DPDK application is running. > > Otherwise, all interfaces are created in the default namespace > > in the host. > > > > put_net() is required, since get_net_ns_by_pid() increments > > the reference counter of the network namespace with get_net(). > > > > Signed-off-by: Takayuki Usui <takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> > Signed-off-by: Nicolas Dichtel <nicolas.dichtel-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> Applied Thanks -- Thomas ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-12-03 14:01 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-21 3:10 [PATCH] kni: create KNI interface in current network namespace Takayuki Usui [not found] ` <1416539426-20684-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> 2014-11-26 21:26 ` Thomas Monjalon 2014-12-01 5:45 ` Hemant-KZfg59tc24xl57MIdRCFDg [not found] ` <BY2PR0301MB0693EA8FA0BDAF0AE6B55F52C27D0-swgC6WJTr6E3qekZfdyv35wN6zqB+hSMnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org> 2014-12-01 10:42 ` Nicolas Dichtel 2014-11-27 9:06 ` Nicolas Dichtel [not found] ` <5476E97D.5040304-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> 2014-12-02 2:19 ` [PATCH v2] " Takayuki Usui [not found] ` <1417486763-12883-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> 2014-12-02 9:04 ` Nicolas Dichtel [not found] ` <547D809E.8020607-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> 2014-12-03 1:37 ` [PATCH v3] " Takayuki Usui [not found] ` <1417570646-7724-1-git-send-email-takayuki-SN072n759w5Wk0Htik3J/w@public.gmane.org> 2014-12-03 10:51 ` Nicolas Dichtel [not found] ` <547EEB31.4070900-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> 2014-12-03 14:01 ` Thomas Monjalon
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).