func (container *Container) buildEndpointInfo(ep libnetwork.Endpoint, networkSettings *network.Settings) (*network.Settings, error) { if ep == nil { return nil, derr.ErrorCodeEmptyEndpoint } if networkSettings == nil { return nil, derr.ErrorCodeEmptyNetwork } epInfo := ep.Info() if epInfo == nil { // It is not an error to get an empty endpoint info return networkSettings, nil } iface := epInfo.Iface() if iface == nil { return networkSettings, nil } ones, _ := iface.Address().Mask.Size() networkSettings.IPAddress = iface.Address().IP.String() networkSettings.IPPrefixLen = ones if iface.AddressIPv6().IP.To16() != nil { onesv6, _ := iface.AddressIPv6().Mask.Size() networkSettings.GlobalIPv6Address = iface.AddressIPv6().IP.String() networkSettings.GlobalIPv6PrefixLen = onesv6 } return networkSettings, nil }
func (container *Container) buildEndpointInfo(ep libnetwork.Endpoint, networkSettings *network.Settings) (*network.Settings, error) { if ep == nil { return nil, fmt.Errorf("invalid endpoint while building port map info") } if networkSettings == nil { return nil, fmt.Errorf("invalid networksettings while building port map info") } epInfo := ep.Info() if epInfo == nil { // It is not an error to get an empty endpoint info return networkSettings, nil } iface := epInfo.Iface() if iface == nil { return networkSettings, nil } ones, _ := iface.Address().Mask.Size() networkSettings.IPAddress = iface.Address().IP.String() networkSettings.IPPrefixLen = ones if iface.AddressIPv6().IP.To16() != nil { onesv6, _ := iface.AddressIPv6().Mask.Size() networkSettings.GlobalIPv6Address = iface.AddressIPv6().IP.String() networkSettings.GlobalIPv6PrefixLen = onesv6 } return networkSettings, nil }
func (container *Container) buildPortMapInfo(ep libnetwork.Endpoint, networkSettings *network.Settings) (*network.Settings, error) { if ep == nil { return nil, derr.ErrorCodeEmptyEndpoint } if networkSettings == nil { return nil, derr.ErrorCodeEmptyNetwork } driverInfo, err := ep.DriverInfo() if err != nil { return nil, err } if driverInfo == nil { // It is not an error for epInfo to be nil return networkSettings, nil } if mac, ok := driverInfo[netlabel.MacAddress]; ok { networkSettings.MacAddress = mac.(net.HardwareAddr).String() } networkSettings.Ports = nat.PortMap{} if expData, ok := driverInfo[netlabel.ExposedPorts]; ok { if exposedPorts, ok := expData.([]types.TransportPort); ok { for _, tp := range exposedPorts { natPort, err := nat.NewPort(tp.Proto.String(), strconv.Itoa(int(tp.Port))) if err != nil { return nil, derr.ErrorCodeParsingPort.WithArgs(tp.Port, err) } networkSettings.Ports[natPort] = nil } } } mapData, ok := driverInfo[netlabel.PortMap] if !ok { return networkSettings, nil } if portMapping, ok := mapData.([]types.PortBinding); ok { for _, pp := range portMapping { natPort, err := nat.NewPort(pp.Proto.String(), strconv.Itoa(int(pp.Port))) if err != nil { return nil, err } natBndg := nat.PortBinding{HostIP: pp.HostIP.String(), HostPort: strconv.Itoa(int(pp.HostPort))} networkSettings.Ports[natPort] = append(networkSettings.Ports[natPort], natBndg) } } return networkSettings, nil }
func (container *Container) buildPortMapInfo(n libnetwork.Network, ep libnetwork.Endpoint, networkSettings *network.Settings) (*network.Settings, error) { if ep == nil { return nil, fmt.Errorf("invalid endpoint while building port map info") } if networkSettings == nil { return nil, fmt.Errorf("invalid networksettings while building port map info") } driverInfo, err := ep.DriverInfo() if err != nil { return nil, err } if driverInfo == nil { // It is not an error for epInfo to be nil return networkSettings, nil } if mac, ok := driverInfo[netlabel.MacAddress]; ok { networkSettings.MacAddress = mac.(net.HardwareAddr).String() } networkSettings.Ports = nat.PortMap{} if expData, ok := driverInfo[netlabel.ExposedPorts]; ok { if exposedPorts, ok := expData.([]types.TransportPort); ok { for _, tp := range exposedPorts { natPort := nat.NewPort(tp.Proto.String(), strconv.Itoa(int(tp.Port))) networkSettings.Ports[natPort] = nil } } } mapData, ok := driverInfo[netlabel.PortMap] if !ok { return networkSettings, nil } if portMapping, ok := mapData.([]types.PortBinding); ok { for _, pp := range portMapping { natPort := nat.NewPort(pp.Proto.String(), strconv.Itoa(int(pp.Port))) natBndg := nat.PortBinding{HostIp: pp.HostIP.String(), HostPort: strconv.Itoa(int(pp.HostPort))} networkSettings.Ports[natPort] = append(networkSettings.Ports[natPort], natBndg) } } return networkSettings, nil }
func (container *Container) buildEndpointInfo(ep libnetwork.Endpoint, networkSettings *network.Settings) (*network.Settings, error) { if ep == nil { return nil, fmt.Errorf("invalid endpoint while building port map info") } if networkSettings == nil { return nil, fmt.Errorf("invalid networksettings while building port map info") } epInfo := ep.Info() if epInfo == nil { // It is not an error to get an empty endpoint info return networkSettings, nil } ifaceList := epInfo.InterfaceList() if len(ifaceList) == 0 { return networkSettings, nil } iface := ifaceList[0] ones, _ := iface.Address().Mask.Size() networkSettings.IPAddress = iface.Address().IP.String() networkSettings.IPPrefixLen = ones if iface.AddressIPv6().IP.To16() != nil { onesv6, _ := iface.AddressIPv6().Mask.Size() networkSettings.GlobalIPv6Address = iface.AddressIPv6().IP.String() networkSettings.GlobalIPv6PrefixLen = onesv6 } if len(ifaceList) == 1 { return networkSettings, nil } networkSettings.SecondaryIPAddresses = make([]network.Address, 0, len(ifaceList)-1) networkSettings.SecondaryIPv6Addresses = make([]network.Address, 0, len(ifaceList)-1) for _, iface := range ifaceList[1:] { ones, _ := iface.Address().Mask.Size() addr := network.Address{Addr: iface.Address().IP.String(), PrefixLen: ones} networkSettings.SecondaryIPAddresses = append(networkSettings.SecondaryIPAddresses, addr) if iface.AddressIPv6().IP.To16() != nil { onesv6, _ := iface.AddressIPv6().Mask.Size() addrv6 := network.Address{Addr: iface.AddressIPv6().IP.String(), PrefixLen: onesv6} networkSettings.SecondaryIPv6Addresses = append(networkSettings.SecondaryIPv6Addresses, addrv6) } } return networkSettings, nil }