Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933198Ab1ERNxU (ORCPT ); Wed, 18 May 2011 09:53:20 -0400 Received: from spaceboyz.net ([87.106.131.203]:41557 "EHLO spaceboyz.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932856Ab1ERNxR (ORCPT ); Wed, 18 May 2011 09:53:17 -0400 Date: Wed, 18 May 2011 15:33:52 +0200 From: David Lamparter To: Alexey Dobriyan Cc: David Lamparter , "Eric W. Biederman" , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org, jamal , Daniel Lezcano , Linux Containers , Renato Westphal Subject: Re: Identifying network namespaces (was: Network namespace manipulation with file descriptors) Message-ID: <20110518133352.GE3762520@jupiter.n2.diac24.net> References: <20110518124307.GD3762520@jupiter.n2.diac24.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2536 Lines: 60 On Wed, May 18, 2011 at 04:03:03PM +0300, Alexey Dobriyan wrote: > On Wed, May 18, 2011 at 3:43 PM, David Lamparter wrote: > > -   processes cannot easily be cross referenced with each other > > > >  in the case of user space stuff running astray - like management > >  software crashing, routing daemons screwing up, etc. - it becomes > >  fairly difficult to shut down a network namespace (or even reaquire > >  physical devices that have been reassigned) > > It shutdowns itself when last process using netns disappeares, > so if you kill your routing daemons you should be fine. > Physical netdevices are moved to init_net. Now assume I'm running pptpd, which forks a new pppd for each connection. Even if I kill pptpd, the pppd keeps running... now how do I find the pppds that belong to that one namespace that I'm trying to get rid of? > > -   namespaces cannot adequately be identified to the user > > > >  for debugging, some kernel messages become useless. most prominently, > >  "unregister_netdevice: waiting for lo to become free. Usage count = 123" > >  could certainly use some clarification, *which* lo is meant... > > There is no "netns %p" or something, because right now the only unique > netns identifier is kernel pointer (which better not be exposed to userspace). > Printing such thing would be quite useless since it's not printed > at netns creation. I agree printing the kernel pointer is point-less. > > So, considering this set of premises (feedback welcome) I looked for > > some suitable means of identification. I discarded going for any process > > identifiers since Eric's patches allow for network namespaces without > > any process holding a reference, using bind mounts instead. > > If anything it should be netns->id, /proc/*/netns outputting id > where id is not derived from kernel pointer. > > > Solution? > > [ using lo interface index ] > > What a hack! :-) Well, you could create another counter and count it up on namespace creation. But the interface index is readily available to userspace as is, and it uniquely identifies the network namespace. (Stupidest thing you can do to break this is renaming the loopback device; but even if you do that userspace can still look at the LOOPBACK flag.) -David -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/