From: Jiri Benc <jbenc@redhat.com>
To: Andrew Cann <shum@canndrew.org>
Cc: netdev@vger.kernel.org
Subject: Re: Automatic TAP destruction/Monitoring namespace destruction
Date: Mon, 26 Feb 2018 17:35:23 +0100 [thread overview]
Message-ID: <20180226173523.63d48632@redhat.com> (raw)
In-Reply-To: <20180223093937.GA8120@canndrew.org>
On Fri, 23 Feb 2018 04:39:37 -0500, Andrew Cann wrote:
> In a program I'm writing I have a network namespace with a virtual (TAP)
> network interface assigned to it. I would like it so that the interface is
> automatically destroyed when the namespace is destroyed (ie. when the last
> process in the namespace exits). I can't see any way to implement this..
This should just work.
> As I understand it, when a namespace is destroyed all its interfaces are moved
> to the root namespace. If this is the case, is there anyway to detect when an
> interface is moved so that I can close it manually?
It is the case only for interfaces backed by a physical device. Virtual
interfaces are deleted when the netns is destroyed. That includes
tun/tap interfaces.
> Alternatively, is there a way to detect when a namespace is destroyed?
I don't think we emit any netlink event on netns exit.
> I figured it might possible to use inotify to do this, but it won't let me
> watch directories under /proc. Also the files under /proc/*/ns/ seem to be some
> kind of wierd symlink-to-a-raw-inode-thing (?) - is there a way to detect when
> an inode is destroyed that I can use with these?
You'd need this patchset: https://lkml.org/lkml/2016/10/15/40 but
I don't think it went anywhere. Plus it probably wouldn't be enough
anyway.
> I also thought it might be possible to use a netlink socket to detect when an
> interface changes namespace. But the netlink docs don't seem to suggest that
> this is possible.
Yes, that's possible. You'll need a recent kernel with commit
e8368d9ebb94 included.
> Basically I'm looking for any event the Linux kernel can give me that I can use
> to implement what I want. Does anyone have any ideas?
What you want should already be happening automatically. Have you tried?
ip netns add ns0
ip -n ns0 tuntap add name tap0 mode tap
ip -n ns0 link show dev tap0
ip netns del ns0
ip a # no tap interface
Jiri
prev parent reply other threads:[~2018-02-26 16:35 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-23 9:39 Automatic TAP destruction/Monitoring namespace destruction Andrew Cann
2018-02-26 16:35 ` Jiri Benc [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180226173523.63d48632@redhat.com \
--to=jbenc@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=shum@canndrew.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.