Subject: Automatic TAP destruction/Monitoring namespace destruction

From: Andrew Cann <[email-masked]>
Date: Fri, 23 Feb 2018 04:39:37 -0500

Hi Linux people, I hope this is an appropriate place to ask this..

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..

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? Alternatively, is there a
way to detect when a namespace is destroyed?

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?

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.

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?

Thanks for any help anyone can give me.
 - Andrew