我需要一些关于如何从内核内部获取网络名称空间的NAME的好例子。获取设备名称很简单,但对于网络名称空间来说就不那么明显了。有人知道一个简单的方法吗Net名称空间名称从内核内部。
下面的代码打印出所有网络名称空间中的所有设备,我如何从内核内部获得要打印的名称空间的名称?据我所知,结构网结构并没有指向该名称。
<>之前for_each_net(净)dev for_each_netdev(净)Printk ("dev_name: %s netns: %pn", dev->name, net);内核不使用名称存储名称空间。这些名称仅用于方便地操作和使用名称空间。名称为name的命名空间一般存储在文件系统中,命名为/var/run/netns/NAME
名称空间也可以存储在文件系统的其他任何地方。例如,Docker将其命名空间存储在/var/run/docker/netns
您可以查看https://medium.com/@chughtapan/net-namespaces -in- linu-b76070963964 #.z1azv3467以了解更多关于网络名称空间的信息。
内核中确实没有名称空间名称的概念。关于/var/run/netns下的网络名称空间的名称-这些仅代表由"ip netns add"创建的网络名称空间。当你不是通过"ip netns add",而是通过fork()或clone()创建一个网络命名空间时,在/var/run/netns下不会创建任何条目。
Rami罗森