netns: add support for specifying network namespace by path
This commit is contained in:
parent
13c9e3ba97
commit
949c98adc0
@ -175,9 +175,15 @@ func ParseService(cfg *config.ServiceConfig) (service.Service, error) {
|
|||||||
}
|
}
|
||||||
defer netns.Set(originNs)
|
defer netns.Set(originNs)
|
||||||
|
|
||||||
ns, err := netns.GetFromName(netnsIn)
|
var ns netns.NsHandle
|
||||||
|
|
||||||
|
if strings.HasPrefix(netnsIn, "/") {
|
||||||
|
ns, err = netns.GetFromPath(netnsIn)
|
||||||
|
} else {
|
||||||
|
ns, err = netns.GetFromName(netnsIn)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("netns.GetFromName(%s): %v", netnsIn, err)
|
return nil, fmt.Errorf("netns.Get(%s): %v", netnsIn, err)
|
||||||
}
|
}
|
||||||
defer ns.Close()
|
defer ns.Close()
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"github.com/vishvananda/netns"
|
"github.com/vishvananda/netns"
|
||||||
@ -48,9 +49,14 @@ func (lc *ListenConfig) Listen(ctx context.Context, network, address string) (ne
|
|||||||
}
|
}
|
||||||
defer netns.Set(originNs)
|
defer netns.Set(originNs)
|
||||||
|
|
||||||
ns, err := netns.GetFromName(lc.Netns)
|
var ns netns.NsHandle
|
||||||
|
if strings.HasPrefix(lc.Netns, "/") {
|
||||||
|
ns, err = netns.GetFromPath(lc.Netns)
|
||||||
|
} else {
|
||||||
|
ns, err = netns.GetFromName(lc.Netns)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("netns.GetFromName(%s): %v", lc.Netns, err)
|
return nil, fmt.Errorf("netns.Get(%s): %v", lc.Netns, err)
|
||||||
}
|
}
|
||||||
defer ns.Close()
|
defer ns.Close()
|
||||||
|
|
||||||
@ -73,9 +79,14 @@ func (lc *ListenConfig) ListenPacket(ctx context.Context, network, address strin
|
|||||||
}
|
}
|
||||||
defer netns.Set(originNs)
|
defer netns.Set(originNs)
|
||||||
|
|
||||||
ns, err := netns.GetFromName(lc.Netns)
|
var ns netns.NsHandle
|
||||||
|
if strings.HasPrefix(lc.Netns, "/") {
|
||||||
|
ns, err = netns.GetFromPath(lc.Netns)
|
||||||
|
} else {
|
||||||
|
ns, err = netns.GetFromName(lc.Netns)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("netns.GetFromName(%s): %v", lc.Netns, err)
|
return nil, fmt.Errorf("netns.Get(%s): %v", lc.Netns, err)
|
||||||
}
|
}
|
||||||
defer ns.Close()
|
defer ns.Close()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user