diff --git a/libnetwork/drivers/windows/windows.go b/libnetwork/drivers/windows/windows.go new file mode 100644 index 0000000000..8606a6f4e5 --- /dev/null +++ b/libnetwork/drivers/windows/windows.go @@ -0,0 +1,55 @@ +package windows + +import ( + "github.com/docker/libnetwork/driverapi" + "github.com/docker/libnetwork/types" +) + +const networkType = "windows" + +// TODO Windows. This is a placeholder for now + +type driver struct{} + +// Init registers a new instance of null driver +func Init(dc driverapi.DriverCallback) error { + return dc.RegisterDriver(networkType, &driver{}) +} + +func (d *driver) Config(option map[string]interface{}) error { + return nil +} + +func (d *driver) CreateNetwork(id types.UUID, option map[string]interface{}) error { + return nil +} + +func (d *driver) DeleteNetwork(nid types.UUID) error { + return nil +} + +func (d *driver) CreateEndpoint(nid, eid types.UUID, epInfo driverapi.EndpointInfo, epOptions map[string]interface{}) error { + return nil +} + +func (d *driver) DeleteEndpoint(nid, eid types.UUID) error { + return nil +} + +func (d *driver) EndpointOperInfo(nid, eid types.UUID) (map[string]interface{}, error) { + return make(map[string]interface{}, 0), nil +} + +// Join method is invoked when a Sandbox is attached to an endpoint. +func (d *driver) Join(nid, eid types.UUID, sboxKey string, jinfo driverapi.JoinInfo, options map[string]interface{}) error { + return nil +} + +// Leave method is invoked when a Sandbox detaches from an endpoint. +func (d *driver) Leave(nid, eid types.UUID) error { + return nil +} + +func (d *driver) Type() string { + return networkType +} diff --git a/libnetwork/drivers.go b/libnetwork/drivers_linux.go similarity index 100% rename from libnetwork/drivers.go rename to libnetwork/drivers_linux.go diff --git a/libnetwork/drivers_windows.go b/libnetwork/drivers_windows.go new file mode 100644 index 0000000000..b1ab31e84f --- /dev/null +++ b/libnetwork/drivers_windows.go @@ -0,0 +1,19 @@ +package libnetwork + +import ( + "github.com/docker/libnetwork/driverapi" + "github.com/docker/libnetwork/drivers/windows" +) + +type driverTable map[string]driverapi.Driver + +func initDrivers(dc driverapi.DriverCallback) error { + for _, fn := range [](func(driverapi.DriverCallback) error){ + windows.Init, + } { + if err := fn(dc); err != nil { + return err + } + } + return nil +} diff --git a/libnetwork/sandbox/sandbox_unsupported.go b/libnetwork/sandbox/sandbox_unsupported.go index aa116fda07..ab3bd7233f 100644 --- a/libnetwork/sandbox/sandbox_unsupported.go +++ b/libnetwork/sandbox/sandbox_unsupported.go @@ -10,6 +10,12 @@ var ( // NewSandbox provides a new sandbox instance created in an os specific way // provided a key which uniquely identifies the sandbox -func NewSandbox(key string) (Sandbox, error) { +func NewSandbox(key string, osCreate bool) (Sandbox, error) { return nil, ErrNotImplemented } + +// GenerateKey generates a sandbox key based on the passed +// container id. +func GenerateKey(containerID string) string { + return "" +} diff --git a/libnetwork/system.go b/libnetwork/system.go deleted file mode 100644 index 7beec2876a..0000000000 --- a/libnetwork/system.go +++ /dev/null @@ -1,34 +0,0 @@ -package libnetwork - -import ( - "fmt" - "runtime" - "syscall" -) - -// Via http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7b21fddd087678a70ad64afc0f632e0f1071b092 -// -// We need different setns values for the different platforms and arch -// We are declaring the macro here because the SETNS syscall does not exist in th stdlib -var setNsMap = map[string]uintptr{ - "linux/386": 346, - "linux/amd64": 308, - "linux/arm": 374, - "linux/ppc64": 350, - "linux/ppc64le": 350, - "linux/s390x": 339, -} - -func setns(fd uintptr, flags uintptr) error { - ns, exists := setNsMap[fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH)] - if !exists { - return fmt.Errorf("unsupported platform %s/%s", runtime.GOOS, runtime.GOARCH) - } - - _, _, err := syscall.RawSyscall(ns, fd, flags, 0) - if err != 0 { - return err - } - - return nil -}