On Sat, Jan 23, 2016 at 10:06:37AM +0800, Antonio Quartulli wrote:
On Wed, Jan 20, 2016 at 06:48:27PM +0100, Andrew Lunn wrote:
The batX soft interface should not be moved between network name spaces. This is similar to bridges, bonds, tunnels, which are not allowed to move between network namespaces.
Andrew, I understand bridges and other similar interfaces do the same, but what is the real reason for preventing a batman soft-interface from moving between namespaces?
Humm, actually, a good question. I blindly copied this code without thinking about it.
One clear answer is the notification mechanism, used by batadv_hard_if_event(). As far as i can see, such events are only sent within the interfaces namespace. So for example you hot unplug a hard interface which the soft interface is using, you would not get the NETDEV_DOWN event if the soft interface is in a different namespace.
Now that i think of it, there are a few other reasons. All the interface management calls, and displaying of interface names would have to contains the namespace. Otherwise you look at the output for 'batctl o' and have no idea which namespace that wlan0 interface is from. Remember, interface names are only unique within a namespace, not across namespaces.
namespaces are supposed to be as transparent as possible. Applications are not supposed to know they are in a name space. That goes right out the window as soon as you need to include a namespace into every interface name.
Andrew