func (daemon *Daemon) getRunzAnet(ep libnetwork.Endpoint) (specs.Anet, error) { var ( linkName string lowerLink string defRouter string ) epInfo := ep.Info() if epInfo == nil { return specs.Anet{}, fmt.Errorf("invalid endpoint") } nw, err := daemon.GetNetworkByName(ep.Network()) if err != nil { return specs.Anet{}, fmt.Errorf("Failed to get network %s: %v", ep.Network(), err) } // Evaluate default router, linkname and lowerlink for interface endpoint switch nw.Type() { case "bridge": defRouter = epInfo.Gateway().String() linkName = "net0" // Should always be net0 for a container // TODO We construct lowerlink here exactly as done for solaris bridge // initialization. Need modular code to reuse. options := nw.Info().DriverOptions() nwName := options["com.docker.network.bridge.name"] lastChar := nwName[len(nwName)-1:] if _, err = strconv.Atoi(lastChar); err != nil { lowerLink = nwName + "_0" } else { lowerLink = nwName } case "overlay": defRouter = "" linkName = "net1" // TODO Follows generateVxlanName() in solaris overlay. id := nw.ID() if len(nw.ID()) > 12 { id = nw.ID()[:12] } lowerLink = "vx_" + id + "_0" } runzanet := specs.Anet{ Linkname: linkName, Lowerlink: lowerLink, Allowedaddr: epInfo.Iface().Address().String(), Configallowedaddr: "true", Defrouter: defRouter, Linkprotection: "mac-nospoof, ip-nospoof", Macaddress: epInfo.Iface().MacAddress().String(), } return runzanet, nil }
func buildEndpointResource(ep libnetwork.Endpoint) *endpointResource { r := &endpointResource{} if ep != nil { r.Name = ep.Name() r.ID = ep.ID() r.Network = ep.Network() } return r }
func buildEndpointResource(ep libnetwork.Endpoint) *endpointResource { r := &endpointResource{} var iplist []string if ep != nil { r.Name = ep.Name() r.ID = ep.ID() r.Network = ep.Network() // Build a list of ip addrs on this endpoint. for _, iface := range ep.Info().InterfaceList() { if iface.Address().IP != nil && len(iface.Address().IP) > 0 { ip := iface.Address().IP.String() iplist = append(iplist, ip) } } r.InterfaceList = iplist } return r }