func (a *Allocator) getPredefinedPool(as string, ipV6 bool) (*net.IPNet, error) { var v ipVersion v = v4 if ipV6 { v = v6 } if as != localAddressSpace && as != globalAddressSpace { return nil, types.NotImplementedErrorf("no default pool availbale for non-default addresss spaces") } aSpace, err := a.getAddrSpace(as) if err != nil { return nil, err } for _, nw := range a.getPredefineds(as) { if v != getAddressVersion(nw.IP) { continue } aSpace.Lock() _, ok := aSpace.subnets[SubnetKey{AddressSpace: as, Subnet: nw.String()}] aSpace.Unlock() if ok { continue } if !aSpace.contains(as, nw) { return nw, nil } } return nil, types.NotFoundErrorf("could not find an available, non-overlapping IPv%d address pool among the defaults to assign to the network", v) }
func (ep *endpoint) SetIPAddress(address *net.IPNet) error { if address.IP == nil { return types.BadRequestErrorf("tried to set nil IP address to endpoint interface") } if address.IP.To4() == nil { return types.NotImplementedErrorf("do not support ipv6 yet") } if ep.addr != nil { return types.ForbiddenErrorf("endpoint interface IP present (%s). Cannot be modified with %s.", ep.addr, address) } ep.addr = types.GetIPNetCopy(address) return nil }
func (a *Allocator) getPredefinedPool(as string, ipV6 bool) (*net.IPNet, error) { var v ipVersion v = v4 if ipV6 { v = v6 } if as != localAddressSpace && as != globalAddressSpace { return nil, types.NotImplementedErrorf("no default pool availbale for non-default addresss spaces") } aSpace, err := a.getAddrSpace(as) if err != nil { return nil, err } for _, nw := range a.getPredefineds(as) { if v != getAddressVersion(nw.IP) { continue } aSpace.Lock() _, ok := aSpace.subnets[SubnetKey{AddressSpace: as, Subnet: nw.String()}] aSpace.Unlock() if ok { continue } if !aSpace.contains(as, nw) { if as == localAddressSpace { // Check if nw overlap with system routes, name servers if _, err := ipamutils.FindAvailableNetwork([]*net.IPNet{nw}); err == nil { return nw, nil } continue } return nw, nil } } return nil, types.NotFoundErrorf("could not find an available predefined network") }
// DiscoverDelete is a notification for a discovery delete event, such as a node leaving a cluster func (d *driver) DiscoverDelete(dType discoverapi.DiscoveryType, data interface{}) error { return types.NotImplementedErrorf("not implemented") }
// Leave method is invoked when a Sandbox detaches from an endpoint. func (d *driver) Leave(nid, eid string) error { return types.NotImplementedErrorf("not implemented") }
// Join method is invoked when a Sandbox is attached to an endpoint. func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo, options map[string]interface{}) error { return types.NotImplementedErrorf("not implemented") }
func (d *driver) EndpointOperInfo(nid, eid string) (map[string]interface{}, error) { return nil, types.NotImplementedErrorf("not implemented") }
func (d *driver) DeleteEndpoint(nid, eid string) error { return types.NotImplementedErrorf("not implemented") }
func (n *network) ExecFunc(f func()) error { return types.NotImplementedErrorf("ExecFunc not supported by network") }
func (d *driver) NetworkAllocate(id string, option map[string]string, ipV4Data, ipV6Data []driverapi.IPAMData) (map[string]string, error) { return nil, types.NotImplementedErrorf("not implemented") }
// ElectInterfaceAddresses looks for an interface on the OS with the specified name // and returns its IPv4 and IPv6 addresses in CIDR form. If the interface does not exist, // it chooses from a predifined list the first IPv4 address which does not conflict // with other interfaces on the system. func ElectInterfaceAddresses(name string) (*net.IPNet, []*net.IPNet, error) { return nil, nil, types.NotImplementedErrorf("not supported on freebsd") }
func (d *driver) ProgramExternalConnectivity(nid, eid string, options map[string]interface{}) error { return types.NotImplementedErrorf("not implemented") }
func (c *controller) processExternalKey(conn net.Conn) error { return types.NotImplementedErrorf("processExternalKey isn't supported on non linux systems") }
func processReturn(r io.Reader) error { return types.NotImplementedErrorf("processReturn isn't supported on non linux systems") }
func sendKey(c net.Conn, data setKeyData) error { return types.NotImplementedErrorf("sendKey isn't supported on non linux systems") }
// SetExternalKey provides a convenient way to set an External key to a sandbox func SetExternalKey(controllerID string, containerID string, key string) error { return types.NotImplementedErrorf("SetExternalKey isn't supported on non linux systems") }
func (c *controller) createGWNetwork() (Network, error) { return nil, types.NotImplementedErrorf("default gateway functionality is not implemented in windows") }
func (d *driver) RevokeExternalConnectivity(nid, eid string) error { return types.NotImplementedErrorf("not implemented") }
func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo driverapi.NetworkInfo, ipV4Data, ipV6Data []driverapi.IPAMData) error { return types.NotImplementedErrorf("not implemented") }
// FindAvailableNetwork returns a network from the passed list which does not // overlap with existing interfaces in the system func FindAvailableNetwork(list []*net.IPNet) (*net.IPNet, error) { return nil, types.NotImplementedErrorf("not supported on freebsd") }
func (d *driver) DeleteNetwork(nid string) error { return types.NotImplementedErrorf("not implemented") }
func (d *driver) NetworkFree(id string) error { return types.NotImplementedErrorf("not implemented") }
func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo, epOptions map[string]interface{}) error { return types.NotImplementedErrorf("not implemented") }