pkg/ns, pkg/types: refactored non linux build fix code to

Make GetCurrentNS platform specific instead of getCurrentThreadNetNSPath
This commit is contained in:
Aithal 2017-02-23 09:50:48 -08:00
parent c3cde44480
commit 0dc0845c51
4 changed files with 19 additions and 16 deletions

View File

@ -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)
}

View File

@ -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

View File

@ -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
}

View File

@ -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")