From 5378f5427fc3017b825e5ceefc12a23cecfc632c Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sun, 29 Mar 2026 16:45:31 +0200 Subject: [PATCH] daemon/libnetwork/ns: remove ParseHandlerInt, add NsHandle It's more transparent for the caller to handle conversion. Signed-off-by: Sebastiaan van Stijn --- daemon/libnetwork/ns/init_linux.go | 11 +++-------- daemon/libnetwork/osl/interface_linux.go | 5 +++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/daemon/libnetwork/ns/init_linux.go b/daemon/libnetwork/ns/init_linux.go index e714a55dde..1682d1d586 100644 --- a/daemon/libnetwork/ns/init_linux.go +++ b/daemon/libnetwork/ns/init_linux.go @@ -65,18 +65,13 @@ func ResetHandles() { } } -// ParseHandlerInt transforms the namespace handler into an integer -func ParseHandlerInt() int { - return int(getHandler()) -} - -// GetHandler returns the namespace handler -func getHandler() netns.NsHandle { +// NsHandle returns the network namespace handle for the initial (host) namespace. +func NsHandle() netns.NsHandle { ns, _ := initNamespace() return ns } -// NlHandle returns the netlink handler +// NlHandle returns the netlink handle. func NlHandle() nlwrap.Handle { _, nl := initNamespace() return nl diff --git a/daemon/libnetwork/osl/interface_linux.go b/daemon/libnetwork/osl/interface_linux.go index 62062b5951..3e17f3908e 100644 --- a/daemon/libnetwork/osl/interface_linux.go +++ b/daemon/libnetwork/osl/interface_linux.go @@ -262,7 +262,7 @@ func (n *Namespace) AddInterface(ctx context.Context, srcName, dstPrefix, dstNam if nerr := n.nlHandle.LinkSetName(iface, i.SrcName()); nerr != nil { log.G(ctx).Errorf("renaming interface (%s->%s) failed, %v after config error %v", i.DstName(), i.SrcName(), nerr, err) } - if nerr := n.nlHandle.LinkSetNsFd(iface, ns.ParseHandlerInt()); nerr != nil { + if nerr := n.nlHandle.LinkSetNsFd(iface, int(ns.NsHandle())); nerr != nil { log.G(ctx).Errorf("moving interface %s to host ns failed, %v, after config error %v", i.SrcName(), nerr, err) } return err @@ -845,8 +845,9 @@ func (n *Namespace) RemoveInterface(i *Interface) error { } } else if !n.isDefault { // Move the network interface to caller namespace. + // // TODO(aker): What's this really doing? There are no calls to LinkDel in this package: is this code really used? (Interface.Remove() has 3 callers); see https://github.com/moby/moby/pull/46315/commits/108595c2fe852a5264b78e96f9e63cda284990a6#r1331265335 - if err := n.nlHandle.LinkSetNsFd(iface, ns.ParseHandlerInt()); err != nil { + if err := n.nlHandle.LinkSetNsFd(iface, int(ns.NsHandle())); err != nil { log.G(context.TODO()).Debugf("LinkSetNsFd failed for interface %s: %v", i.SrcName(), err) return err }