On Tue, May 21, 2019 at 7:53 AM David Miller <da...@davemloft.net> wrote: > > From: xiangxia.m....@gmail.com > Date: Fri, 17 May 2019 19:42:23 -0700 > > > From: Tonghao Zhang <xiangxia.m....@gmail.com> > > > > Don't allow to remove the vxlan device to other namesapce, > > because we maintain the data of vxlan net device on original > > net-namespace. > > > > $ ip netns add ns100 > > $ ip link add vxlan100 type vxlan dstport 4789 external > > $ ip link set dev vxlan100 netns ns100 > > $ ip netns exec ns100 ip link add vxlan200 type vxlan dstport 4789 > > external > > $ ip netns exec ns100 ip link > > ... > > vxlan200: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode > > DEFAULT group default qlen 1000 > > vxlan100: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode > > DEFAULT group default qlen 1000 > > > > And we should create it on new net-namespace, so disallow removing it. > > > > Signed-off-by: Tonghao Zhang <xiangxia.m....@gmail.com> > > I don't understand this change at all. > > You keep saying "Remove" but I think you might mean simply "Move" because > the NETNS_LOCAL flag prevents moving not removing. Yes, should change "remove" to "move".
> And why is it bad to allow vxlan devices to be moved between network > namespaces? What problem would it cause and can you guarantee that > you are not breaking an existing user? The problem is that we create one vxlan netdevice(e.g dstport 4789 and external), and move it to one net-namespace, and then we hope create one again(dstport 4789 and external) and move it to other net-namespace, but we can't create it. $ ip netns add ns100 $ ip link add vxlan100 type vxlan dstport 4789 external $ ip link set dev vxlan100 netns ns100 $ ip link add vxlan200 type vxlan dstport 4789 external RTNETLINK answers: File exists The better way is that we should create directly it in the net-namespace. To avoid confuse user, disallow moving it to other net-namespace. > I'm not applying this as-is.