diff --git a/pkg/ns/ns.go b/pkg/ns/ns.go index 428fb77f..c212f489 100644 --- a/pkg/ns/ns.go +++ b/pkg/ns/ns.go @@ -15,7 +15,6 @@ package ns import ( - "errors" "fmt" "os" "runtime" @@ -62,14 +61,6 @@ type netNS struct { // netNS implements the NetNS interface var _ NetNS = &netNS{} -// NotImplementedError is used to indicate that a method is not implemented for the given platform -var NotImplementedError = errors.New("Not Implemented") - -// Returns an object representing the current OS thread's network namespace -func GetCurrentNS() (NetNS, error) { - return GetNS(getCurrentThreadNetNSPath()) -} - const ( // https://github.com/torvalds/linux/blob/master/include/uapi/linux/magic.h NSFS_MAGIC = 0x6e736673 @@ -139,7 +130,7 @@ func (ns *netNS) Do(toRun func(NetNS) error) error { } containedCall := func(hostNS NetNS) error { - threadNS, err := GetNS(getCurrentThreadNetNSPath()) + threadNS, err := GetCurrentNS() if err != nil { return fmt.Errorf("failed to open current netns: %v", err) } @@ -155,7 +146,7 @@ func (ns *netNS) Do(toRun func(NetNS) error) error { } // save a handle to current network namespace - hostNS, err := GetNS(getCurrentThreadNetNSPath()) + hostNS, err := GetCurrentNS() if err != nil { return fmt.Errorf("Failed to open current namespace: %v", err) } diff --git a/pkg/ns/ns_linux.go b/pkg/ns/ns_linux.go index 0746f159..c9e1b4f0 100644 --- a/pkg/ns/ns_linux.go +++ b/pkg/ns/ns_linux.go @@ -25,6 +25,11 @@ import ( "golang.org/x/sys/unix" ) +// Returns an object representing the current OS thread's network namespace +func GetCurrentNS() (NetNS, error) { + return GetNS(getCurrentThreadNetNSPath()) +} + func getCurrentThreadNetNSPath() string { // /proc/self/ns/net returns the namespace of the main thread, not // of whatever thread this goroutine is running on. Make sure we diff --git a/pkg/ns/ns_unspecified.go b/pkg/ns/ns_unspecified.go index da8b1796..41b44686 100644 --- a/pkg/ns/ns_unspecified.go +++ b/pkg/ns/ns_unspecified.go @@ -16,18 +16,21 @@ package ns -func getCurrentThreadNetNSPath() string { - return "" +import "github.com/containernetworking/cni/pkg/types" + +// Returns an object representing the current OS thread's network namespace +func GetCurrentNS() (NetNS, error) { + return nil, types.NotImplementedError } func NewNS() (NetNS, error) { - return nil, NotImplementedError + return nil, types.NotImplementedError } func (ns *netNS) Close() error { - return NotImplementedError + return types.NotImplementedError } func (ns *netNS) Set() error { - return NotImplementedError + return types.NotImplementedError } diff --git a/pkg/types/types.go b/pkg/types/types.go index a81ac702..b7c27de1 100644 --- a/pkg/types/types.go +++ b/pkg/types/types.go @@ -16,6 +16,7 @@ package types import ( "encoding/json" + "errors" "fmt" "net" "os" @@ -178,3 +179,6 @@ func prettyPrint(obj interface{}) error { _, err = os.Stdout.Write(data) return err } + +// NotImplementedError is used to indicate that a method is not implemented for the given platform +var NotImplementedError = errors.New("Not Implemented")