Merge pull request #34697 from fcrisciani/ln-vendoring
Vendoring libnetwork
This commit is contained in:
commit
3b449dbfba
18 changed files with 169 additions and 56 deletions
|
@ -28,7 +28,7 @@ github.com/imdario/mergo 0.2.1
|
|||
golang.org/x/sync de49d9dcd27d4f764488181bea099dfe6179bcf0
|
||||
|
||||
#get libnetwork packages
|
||||
github.com/docker/libnetwork 5b28c0ec98236c489e39ae6a9e1aeb802e071681
|
||||
github.com/docker/libnetwork d5c822319097cc01cc9bd5ffedd74c7ce7c894f2
|
||||
github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9
|
||||
github.com/armon/go-radix e39d623f12e8e41c7b5529e9a9dd67a1e2261f80
|
||||
github.com/armon/go-metrics eb0af217e5e9747e41dd5303755356b62d28e3ec
|
||||
|
|
8
vendor/github.com/docker/libnetwork/agent.go
generated
vendored
8
vendor/github.com/docker/libnetwork/agent.go
generated
vendored
|
@ -892,13 +892,13 @@ func (c *controller) handleEpTableEvent(ev events.Event) {
|
|||
if svcID != "" {
|
||||
// This is a remote task part of a service
|
||||
if err := c.addServiceBinding(svcName, svcID, nid, eid, containerName, vip, ingressPorts, serviceAliases, taskAliases, ip, "handleEpTableEvent"); err != nil {
|
||||
logrus.Errorf("failed adding service binding for %s epRec:%v err:%s", eid, epRec, err)
|
||||
logrus.Errorf("failed adding service binding for %s epRec:%v err:%v", eid, epRec, err)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
// This is a remote container simply attached to an attachable network
|
||||
if err := c.addContainerNameResolution(nid, eid, containerName, taskAliases, ip, "handleEpTableEvent"); err != nil {
|
||||
logrus.Errorf("failed adding service binding for %s epRec:%v err:%s", eid, epRec, err)
|
||||
logrus.Errorf("failed adding container name resolution for %s epRec:%v err:%v", eid, epRec, err)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -906,13 +906,13 @@ func (c *controller) handleEpTableEvent(ev events.Event) {
|
|||
if svcID != "" {
|
||||
// This is a remote task part of a service
|
||||
if err := c.rmServiceBinding(svcName, svcID, nid, eid, containerName, vip, ingressPorts, serviceAliases, taskAliases, ip, "handleEpTableEvent", true); err != nil {
|
||||
logrus.Errorf("failed removing service binding for %s epRec:%v err:%s", eid, epRec, err)
|
||||
logrus.Errorf("failed removing service binding for %s epRec:%v err:%v", eid, epRec, err)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
// This is a remote container simply attached to an attachable network
|
||||
if err := c.delContainerNameResolution(nid, eid, containerName, taskAliases, ip, "handleEpTableEvent"); err != nil {
|
||||
logrus.Errorf("failed adding service binding for %s epRec:%v err:%s", eid, epRec, err)
|
||||
logrus.Errorf("failed removing container name resolution for %s epRec:%v err:%v", eid, epRec, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
2
vendor/github.com/docker/libnetwork/drivers/ipvlan/ipvlan_setup.go
generated
vendored
2
vendor/github.com/docker/libnetwork/drivers/ipvlan/ipvlan_setup.go
generated
vendored
|
@ -201,5 +201,5 @@ func delDummyLink(linkName string) error {
|
|||
|
||||
// getDummyName returns the name of a dummy parent with truncated net ID and driver prefix
|
||||
func getDummyName(netID string) string {
|
||||
return fmt.Sprintf("%s%s", dummyPrefix, netID)
|
||||
return dummyPrefix + netID
|
||||
}
|
||||
|
|
2
vendor/github.com/docker/libnetwork/drivers/macvlan/macvlan_setup.go
generated
vendored
2
vendor/github.com/docker/libnetwork/drivers/macvlan/macvlan_setup.go
generated
vendored
|
@ -205,5 +205,5 @@ func delDummyLink(linkName string) error {
|
|||
|
||||
// getDummyName returns the name of a dummy parent with truncated net ID and driver prefix
|
||||
func getDummyName(netID string) string {
|
||||
return fmt.Sprintf("%s%s", dummyPrefix, netID)
|
||||
return dummyPrefix + netID
|
||||
}
|
||||
|
|
4
vendor/github.com/docker/libnetwork/drivers/overlay/ov_network.go
generated
vendored
4
vendor/github.com/docker/libnetwork/drivers/overlay/ov_network.go
generated
vendored
|
@ -494,7 +494,7 @@ func (n *network) restoreSubnetSandbox(s *subnet, brName, vxlanName string) erro
|
|||
brIfaceOption := make([]osl.IfaceOption, 2)
|
||||
brIfaceOption = append(brIfaceOption, sbox.InterfaceOptions().Address(s.gwIP))
|
||||
brIfaceOption = append(brIfaceOption, sbox.InterfaceOptions().Bridge(true))
|
||||
Ifaces[fmt.Sprintf("%s+%s", brName, "br")] = brIfaceOption
|
||||
Ifaces[brName+"+br"] = brIfaceOption
|
||||
|
||||
err := sbox.Restore(Ifaces, nil, nil, nil)
|
||||
if err != nil {
|
||||
|
@ -504,7 +504,7 @@ func (n *network) restoreSubnetSandbox(s *subnet, brName, vxlanName string) erro
|
|||
Ifaces = make(map[string][]osl.IfaceOption)
|
||||
vxlanIfaceOption := make([]osl.IfaceOption, 1)
|
||||
vxlanIfaceOption = append(vxlanIfaceOption, sbox.InterfaceOptions().Master(brName))
|
||||
Ifaces[fmt.Sprintf("%s+%s", vxlanName, "vxlan")] = vxlanIfaceOption
|
||||
Ifaces[vxlanName+"+vxlan"] = vxlanIfaceOption
|
||||
err = sbox.Restore(Ifaces, nil, nil, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
4
vendor/github.com/docker/libnetwork/drivers/overlay/overlay.go
generated
vendored
4
vendor/github.com/docker/libnetwork/drivers/overlay/overlay.go
generated
vendored
|
@ -162,7 +162,7 @@ func (d *driver) restoreEndpoints() error {
|
|||
Ifaces := make(map[string][]osl.IfaceOption)
|
||||
vethIfaceOption := make([]osl.IfaceOption, 1)
|
||||
vethIfaceOption = append(vethIfaceOption, n.sbox.InterfaceOptions().Master(s.brName))
|
||||
Ifaces[fmt.Sprintf("%s+%s", "veth", "veth")] = vethIfaceOption
|
||||
Ifaces["veth+veth"] = vethIfaceOption
|
||||
|
||||
err := n.sbox.Restore(Ifaces, nil, nil, nil)
|
||||
if err != nil {
|
||||
|
@ -270,7 +270,7 @@ func (d *driver) nodeJoin(advertiseAddress, bindAddress string, self bool) {
|
|||
// If there is no cluster store there is no need to start serf.
|
||||
if d.store != nil {
|
||||
if err := validateSelf(advertiseAddress); err != nil {
|
||||
logrus.Warnf("%s", err.Error())
|
||||
logrus.Warn(err.Error())
|
||||
}
|
||||
err := d.serfInit()
|
||||
if err != nil {
|
||||
|
|
4
vendor/github.com/docker/libnetwork/drivers/solaris/overlay/ov_network.go
generated
vendored
4
vendor/github.com/docker/libnetwork/drivers/solaris/overlay/ov_network.go
generated
vendored
|
@ -331,7 +331,7 @@ func (n *network) restoreSubnetSandbox(s *subnet, brName, vxlanName string) erro
|
|||
brIfaceOption := make([]osl.IfaceOption, 2)
|
||||
brIfaceOption = append(brIfaceOption, sbox.InterfaceOptions().Address(s.gwIP))
|
||||
brIfaceOption = append(brIfaceOption, sbox.InterfaceOptions().Bridge(true))
|
||||
Ifaces[fmt.Sprintf("%s+%s", brName, "br")] = brIfaceOption
|
||||
Ifaces[brName+"+br"] = brIfaceOption
|
||||
|
||||
err := sbox.Restore(Ifaces, nil, nil, nil)
|
||||
if err != nil {
|
||||
|
@ -341,7 +341,7 @@ func (n *network) restoreSubnetSandbox(s *subnet, brName, vxlanName string) erro
|
|||
Ifaces = make(map[string][]osl.IfaceOption)
|
||||
vxlanIfaceOption := make([]osl.IfaceOption, 1)
|
||||
vxlanIfaceOption = append(vxlanIfaceOption, sbox.InterfaceOptions().Master(brName))
|
||||
Ifaces[fmt.Sprintf("%s+%s", vxlanName, "vxlan")] = vxlanIfaceOption
|
||||
Ifaces[vxlanName+"+vxlan"] = vxlanIfaceOption
|
||||
err = sbox.Restore(Ifaces, nil, nil, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
4
vendor/github.com/docker/libnetwork/drivers/solaris/overlay/overlay.go
generated
vendored
4
vendor/github.com/docker/libnetwork/drivers/solaris/overlay/overlay.go
generated
vendored
|
@ -141,7 +141,7 @@ func (d *driver) restoreEndpoints() error {
|
|||
Ifaces := make(map[string][]osl.IfaceOption)
|
||||
vethIfaceOption := make([]osl.IfaceOption, 1)
|
||||
vethIfaceOption = append(vethIfaceOption, n.sbox.InterfaceOptions().Master(s.brName))
|
||||
Ifaces[fmt.Sprintf("%s+%s", "veth", "veth")] = vethIfaceOption
|
||||
Ifaces["veth+veth"] = vethIfaceOption
|
||||
|
||||
err := n.sbox.Restore(Ifaces, nil, nil, nil)
|
||||
if err != nil {
|
||||
|
@ -234,7 +234,7 @@ func (d *driver) nodeJoin(advertiseAddress, bindAddress string, self bool) {
|
|||
// If there is no cluster store there is no need to start serf.
|
||||
if d.store != nil {
|
||||
if err := validateSelf(advertiseAddress); err != nil {
|
||||
logrus.Warnf("%s", err.Error())
|
||||
logrus.Warn(err.Error())
|
||||
}
|
||||
err := d.serfInit()
|
||||
if err != nil {
|
||||
|
|
5
vendor/github.com/docker/libnetwork/drivers/windows/overlay/joinleave_windows.go
generated
vendored
5
vendor/github.com/docker/libnetwork/drivers/windows/overlay/joinleave_windows.go
generated
vendored
|
@ -39,6 +39,11 @@ func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo,
|
|||
if err := jinfo.AddTableEntry(ovPeerTable, eid, buf); err != nil {
|
||||
logrus.Errorf("overlay: Failed adding table entry to joininfo: %v", err)
|
||||
}
|
||||
|
||||
if ep.disablegateway {
|
||||
jinfo.DisableGatewayService()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
77
vendor/github.com/docker/libnetwork/drivers/windows/overlay/ov_endpoint_windows.go
generated
vendored
77
vendor/github.com/docker/libnetwork/drivers/windows/overlay/ov_endpoint_windows.go
generated
vendored
|
@ -6,7 +6,11 @@ import (
|
|||
"net"
|
||||
|
||||
"github.com/Microsoft/hcsshim"
|
||||
"github.com/docker/docker/pkg/system"
|
||||
"github.com/docker/libnetwork/driverapi"
|
||||
"github.com/docker/libnetwork/drivers/windows"
|
||||
"github.com/docker/libnetwork/netlabel"
|
||||
"github.com/docker/libnetwork/types"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
|
@ -15,12 +19,14 @@ type endpointTable map[string]*endpoint
|
|||
const overlayEndpointPrefix = "overlay/endpoint"
|
||||
|
||||
type endpoint struct {
|
||||
id string
|
||||
nid string
|
||||
profileId string
|
||||
remote bool
|
||||
mac net.HardwareAddr
|
||||
addr *net.IPNet
|
||||
id string
|
||||
nid string
|
||||
profileID string
|
||||
remote bool
|
||||
mac net.HardwareAddr
|
||||
addr *net.IPNet
|
||||
disablegateway bool
|
||||
portMapping []types.PortBinding // Operation port bindings
|
||||
}
|
||||
|
||||
func validateID(nid, eid string) error {
|
||||
|
@ -71,7 +77,7 @@ func (n *network) removeEndpointWithAddress(addr *net.IPNet) {
|
|||
|
||||
if networkEndpoint != nil {
|
||||
logrus.Debugf("Removing stale endpoint from HNS")
|
||||
_, err := hcsshim.HNSEndpointRequest("DELETE", networkEndpoint.profileId, "")
|
||||
_, err := hcsshim.HNSEndpointRequest("DELETE", networkEndpoint.profileID, "")
|
||||
|
||||
if err != nil {
|
||||
logrus.Debugf("Failed to delete stale overlay endpoint (%s) from hns", networkEndpoint.id[0:7])
|
||||
|
@ -96,7 +102,7 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
|
|||
logrus.Debugf("Deleting stale endpoint %s", eid)
|
||||
n.deleteEndpoint(eid)
|
||||
|
||||
_, err := hcsshim.HNSEndpointRequest("DELETE", ep.profileId, "")
|
||||
_, err := hcsshim.HNSEndpointRequest("DELETE", ep.profileID, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -113,17 +119,19 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
|
|||
return fmt.Errorf("create endpoint was not passed interface IP address")
|
||||
}
|
||||
|
||||
if s := n.getSubnetforIP(ep.addr); s == nil {
|
||||
return fmt.Errorf("no matching subnet for IP %q in network %q\n", ep.addr, nid)
|
||||
s := n.getSubnetforIP(ep.addr)
|
||||
if s == nil {
|
||||
return fmt.Errorf("no matching subnet for IP %q in network %q", ep.addr, nid)
|
||||
}
|
||||
|
||||
// Todo: Add port bindings and qos policies here
|
||||
|
||||
hnsEndpoint := &hcsshim.HNSEndpoint{
|
||||
Name: eid,
|
||||
VirtualNetwork: n.hnsId,
|
||||
VirtualNetwork: n.hnsID,
|
||||
IPAddress: ep.addr.IP,
|
||||
EnableInternalDNS: true,
|
||||
GatewayAddress: s.gwIP.String(),
|
||||
}
|
||||
|
||||
if ep.mac != nil {
|
||||
|
@ -141,6 +149,31 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
|
|||
|
||||
hnsEndpoint.Policies = append(hnsEndpoint.Policies, paPolicy)
|
||||
|
||||
if system.GetOSVersion().Build > 16236 {
|
||||
natPolicy, err := json.Marshal(hcsshim.PaPolicy{
|
||||
Type: "OutBoundNAT",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hnsEndpoint.Policies = append(hnsEndpoint.Policies, natPolicy)
|
||||
|
||||
epConnectivity, err := windows.ParseEndpointConnectivity(epOptions)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pbPolicy, err := windows.ConvertPortBindings(epConnectivity.PortBindings)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hnsEndpoint.Policies = append(hnsEndpoint.Policies, pbPolicy...)
|
||||
|
||||
ep.disablegateway = true
|
||||
}
|
||||
|
||||
configurationb, err := json.Marshal(hnsEndpoint)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -151,7 +184,7 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
|
|||
return err
|
||||
}
|
||||
|
||||
ep.profileId = hnsresponse.Id
|
||||
ep.profileID = hnsresponse.Id
|
||||
|
||||
if ep.mac == nil {
|
||||
ep.mac, err = net.ParseMAC(hnsresponse.MacAddress)
|
||||
|
@ -164,6 +197,12 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
|
|||
}
|
||||
}
|
||||
|
||||
ep.portMapping, err = windows.ParsePortBindingPolicies(hnsresponse.Policies)
|
||||
if err != nil {
|
||||
hcsshim.HNSEndpointRequest("DELETE", hnsresponse.Id, "")
|
||||
return err
|
||||
}
|
||||
|
||||
n.addEndpoint(ep)
|
||||
|
||||
return nil
|
||||
|
@ -186,7 +225,7 @@ func (d *driver) DeleteEndpoint(nid, eid string) error {
|
|||
|
||||
n.deleteEndpoint(eid)
|
||||
|
||||
_, err := hcsshim.HNSEndpointRequest("DELETE", ep.profileId, "")
|
||||
_, err := hcsshim.HNSEndpointRequest("DELETE", ep.profileID, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -210,7 +249,17 @@ func (d *driver) EndpointOperInfo(nid, eid string) (map[string]interface{}, erro
|
|||
}
|
||||
|
||||
data := make(map[string]interface{}, 1)
|
||||
data["hnsid"] = ep.profileId
|
||||
data["hnsid"] = ep.profileID
|
||||
data["AllowUnqualifiedDNSQuery"] = true
|
||||
|
||||
if ep.portMapping != nil {
|
||||
// Return a copy of the operational data
|
||||
pmc := make([]types.PortBinding, 0, len(ep.portMapping))
|
||||
for _, pm := range ep.portMapping {
|
||||
pmc = append(pmc, pm.GetCopy())
|
||||
}
|
||||
data[netlabel.PortMap] = pmc
|
||||
}
|
||||
|
||||
return data, nil
|
||||
}
|
||||
|
|
15
vendor/github.com/docker/libnetwork/drivers/windows/overlay/ov_network_windows.go
generated
vendored
15
vendor/github.com/docker/libnetwork/drivers/windows/overlay/ov_network_windows.go
generated
vendored
|
@ -37,7 +37,7 @@ type subnetJSON struct {
|
|||
type network struct {
|
||||
id string
|
||||
name string
|
||||
hnsId string
|
||||
hnsID string
|
||||
providerAddress string
|
||||
interfaceName string
|
||||
endpoints endpointTable
|
||||
|
@ -108,7 +108,7 @@ func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo d
|
|||
case "com.docker.network.windowsshim.interface":
|
||||
interfaceName = value
|
||||
case "com.docker.network.windowsshim.hnsid":
|
||||
n.hnsId = value
|
||||
n.hnsID = value
|
||||
case netlabel.OverlayVxlanIDList:
|
||||
vniStrings := strings.Split(value, ",")
|
||||
for _, vniStr := range vniStrings {
|
||||
|
@ -181,7 +181,7 @@ func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo d
|
|||
if err != nil {
|
||||
d.deleteNetwork(id)
|
||||
} else {
|
||||
genData["com.docker.network.windowsshim.hnsid"] = n.hnsId
|
||||
genData["com.docker.network.windowsshim.hnsid"] = n.hnsID
|
||||
}
|
||||
|
||||
return err
|
||||
|
@ -197,7 +197,7 @@ func (d *driver) DeleteNetwork(nid string) error {
|
|||
return types.ForbiddenErrorf("could not find network with id %s", nid)
|
||||
}
|
||||
|
||||
_, err := hcsshim.HNSNetworkRequest("DELETE", n.hnsId, "")
|
||||
_, err := hcsshim.HNSNetworkRequest("DELETE", n.hnsID, "")
|
||||
if err != nil {
|
||||
return types.ForbiddenErrorf(err.Error())
|
||||
}
|
||||
|
@ -242,7 +242,7 @@ func (d *driver) network(nid string) *network {
|
|||
// }
|
||||
|
||||
// for _, endpoint := range hnsresponse {
|
||||
// if endpoint.VirtualNetwork != n.hnsId {
|
||||
// if endpoint.VirtualNetwork != n.hnsID {
|
||||
// continue
|
||||
// }
|
||||
|
||||
|
@ -260,7 +260,7 @@ func (d *driver) network(nid string) *network {
|
|||
func (n *network) convertToOverlayEndpoint(v *hcsshim.HNSEndpoint) *endpoint {
|
||||
ep := &endpoint{
|
||||
id: v.Name,
|
||||
profileId: v.Id,
|
||||
profileID: v.Id,
|
||||
nid: n.id,
|
||||
remote: v.IsRemoteEndpoint,
|
||||
}
|
||||
|
@ -311,6 +311,7 @@ func (d *driver) createHnsNetwork(n *network) error {
|
|||
Type: d.Type(),
|
||||
Subnets: subnets,
|
||||
NetworkAdapterName: n.interfaceName,
|
||||
AutomaticDNS: true,
|
||||
}
|
||||
|
||||
configurationb, err := json.Marshal(network)
|
||||
|
@ -326,7 +327,7 @@ func (d *driver) createHnsNetwork(n *network) error {
|
|||
return err
|
||||
}
|
||||
|
||||
n.hnsId = hnsresponse.Id
|
||||
n.hnsID = hnsresponse.Id
|
||||
n.providerAddress = hnsresponse.ManagementIP
|
||||
|
||||
return nil
|
||||
|
|
2
vendor/github.com/docker/libnetwork/drivers/windows/overlay/overlay_windows.go
generated
vendored
2
vendor/github.com/docker/libnetwork/drivers/windows/overlay/overlay_windows.go
generated
vendored
|
@ -104,7 +104,7 @@ func (d *driver) restoreHNSNetworks() error {
|
|||
func (d *driver) convertToOverlayNetwork(v *hcsshim.HNSNetwork) *network {
|
||||
n := &network{
|
||||
id: v.Name,
|
||||
hnsId: v.Id,
|
||||
hnsID: v.Id,
|
||||
driver: d,
|
||||
endpoints: endpointTable{},
|
||||
subnets: []*subnet{},
|
||||
|
|
6
vendor/github.com/docker/libnetwork/drivers/windows/overlay/peerdb_windows.go
generated
vendored
6
vendor/github.com/docker/libnetwork/drivers/windows/overlay/peerdb_windows.go
generated
vendored
|
@ -33,7 +33,7 @@ func (d *driver) peerAdd(nid, eid string, peerIP net.IP, peerIPMask net.IPMask,
|
|||
|
||||
hnsEndpoint := &hcsshim.HNSEndpoint{
|
||||
Name: eid,
|
||||
VirtualNetwork: n.hnsId,
|
||||
VirtualNetwork: n.hnsID,
|
||||
MacAddress: peerMac.String(),
|
||||
IPAddress: peerIP,
|
||||
IsRemoteEndpoint: true,
|
||||
|
@ -78,7 +78,7 @@ func (d *driver) peerAdd(nid, eid string, peerIP net.IP, peerIPMask net.IPMask,
|
|||
nid: nid,
|
||||
addr: addr,
|
||||
mac: peerMac,
|
||||
profileId: hnsresponse.Id,
|
||||
profileID: hnsresponse.Id,
|
||||
remote: true,
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,7 @@ func (d *driver) peerDelete(nid, eid string, peerIP net.IP, peerIPMask net.IPMas
|
|||
}
|
||||
|
||||
if updateDb {
|
||||
_, err := hcsshim.HNSEndpointRequest("DELETE", ep.profileId, "")
|
||||
_, err := hcsshim.HNSEndpointRequest("DELETE", ep.profileID, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
24
vendor/github.com/docker/libnetwork/drivers/windows/windows.go
generated
vendored
24
vendor/github.com/docker/libnetwork/drivers/windows/windows.go
generated
vendored
|
@ -55,7 +55,8 @@ type endpointOption struct {
|
|||
DisableICC bool
|
||||
}
|
||||
|
||||
type endpointConnectivity struct {
|
||||
// EndpointConnectivity stores the port bindings and exposed ports that the user has specified in epOptions.
|
||||
type EndpointConnectivity struct {
|
||||
PortBindings []types.PortBinding
|
||||
ExposedPorts []types.TransportPort
|
||||
}
|
||||
|
@ -67,7 +68,7 @@ type hnsEndpoint struct {
|
|||
Type string
|
||||
macAddress net.HardwareAddr
|
||||
epOption *endpointOption // User specified parameters
|
||||
epConnectivity *endpointConnectivity // User specified parameters
|
||||
epConnectivity *EndpointConnectivity // User specified parameters
|
||||
portMapping []types.PortBinding // Operation port bindings
|
||||
addr *net.IPNet
|
||||
gateway net.IP
|
||||
|
@ -95,7 +96,7 @@ const (
|
|||
errNotFound = "HNS failed with error : The object identifier does not represent a valid object. "
|
||||
)
|
||||
|
||||
// IsBuiltinWindowsDriver vaidates if network-type is a builtin local-scoped driver
|
||||
// IsBuiltinLocalDriver validates if network-type is a builtin local-scoped driver
|
||||
func IsBuiltinLocalDriver(networkType string) bool {
|
||||
if "l2bridge" == networkType || "l2tunnel" == networkType || "nat" == networkType || "ics" == networkType || "transparent" == networkType {
|
||||
return true
|
||||
|
@ -396,7 +397,8 @@ func convertQosPolicies(qosPolicies []types.QosPolicy) ([]json.RawMessage, error
|
|||
return qps, nil
|
||||
}
|
||||
|
||||
func convertPortBindings(portBindings []types.PortBinding) ([]json.RawMessage, error) {
|
||||
// ConvertPortBindings converts PortBindings to JSON for HNS request
|
||||
func ConvertPortBindings(portBindings []types.PortBinding) ([]json.RawMessage, error) {
|
||||
var pbs []json.RawMessage
|
||||
|
||||
// Enumerate through the port bindings specified by the user and convert
|
||||
|
@ -431,7 +433,8 @@ func convertPortBindings(portBindings []types.PortBinding) ([]json.RawMessage, e
|
|||
return pbs, nil
|
||||
}
|
||||
|
||||
func parsePortBindingPolicies(policies []json.RawMessage) ([]types.PortBinding, error) {
|
||||
// ParsePortBindingPolicies parses HNS endpoint response message to PortBindings
|
||||
func ParsePortBindingPolicies(policies []json.RawMessage) ([]types.PortBinding, error) {
|
||||
var bindings []types.PortBinding
|
||||
hcsPolicy := &hcsshim.NatPolicy{}
|
||||
|
||||
|
@ -505,12 +508,13 @@ func parseEndpointOptions(epOptions map[string]interface{}) (*endpointOption, er
|
|||
return ec, nil
|
||||
}
|
||||
|
||||
func parseEndpointConnectivity(epOptions map[string]interface{}) (*endpointConnectivity, error) {
|
||||
// ParseEndpointConnectivity parses options passed to CreateEndpoint, specifically port bindings, and store in a endpointConnectivity object.
|
||||
func ParseEndpointConnectivity(epOptions map[string]interface{}) (*EndpointConnectivity, error) {
|
||||
if epOptions == nil {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
ec := &endpointConnectivity{}
|
||||
ec := &EndpointConnectivity{}
|
||||
|
||||
if opt, ok := epOptions[netlabel.PortMap]; ok {
|
||||
if bs, ok := opt.([]types.PortBinding); ok {
|
||||
|
@ -550,7 +554,7 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
epConnectivity, err := parseEndpointConnectivity(epOptions)
|
||||
epConnectivity, err := ParseEndpointConnectivity(epOptions)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -561,7 +565,7 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
|
|||
endpointStruct.MacAddress = strings.Replace(macAddress.String(), ":", "-", -1)
|
||||
}
|
||||
|
||||
endpointStruct.Policies, err = convertPortBindings(epConnectivity.PortBindings)
|
||||
endpointStruct.Policies, err = ConvertPortBindings(epConnectivity.PortBindings)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -615,7 +619,7 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo,
|
|||
endpoint.profileID = hnsresponse.Id
|
||||
endpoint.epConnectivity = epConnectivity
|
||||
endpoint.epOption = epOption
|
||||
endpoint.portMapping, err = parsePortBindingPolicies(hnsresponse.Policies)
|
||||
endpoint.portMapping, err = ParsePortBindingPolicies(hnsresponse.Policies)
|
||||
|
||||
if err != nil {
|
||||
hcsshim.HNSEndpointRequest("DELETE", hnsresponse.Id, "")
|
||||
|
|
4
vendor/github.com/docker/libnetwork/ipam/allocator.go
generated
vendored
4
vendor/github.com/docker/libnetwork/ipam/allocator.go
generated
vendored
|
@ -579,7 +579,7 @@ func (a *Allocator) DumpDatabase() string {
|
|||
s = fmt.Sprintf("\n\n%s Config", as)
|
||||
aSpace.Lock()
|
||||
for k, config := range aSpace.subnets {
|
||||
s = fmt.Sprintf("%s%s", s, fmt.Sprintf("\n%v: %v", k, config))
|
||||
s += fmt.Sprintf("\n%v: %v", k, config)
|
||||
if config.Range == nil {
|
||||
a.retrieveBitmask(k, config.Pool)
|
||||
}
|
||||
|
@ -589,7 +589,7 @@ func (a *Allocator) DumpDatabase() string {
|
|||
|
||||
s = fmt.Sprintf("%s\n\nBitmasks", s)
|
||||
for k, bm := range a.addresses {
|
||||
s = fmt.Sprintf("%s%s", s, fmt.Sprintf("\n%s: %s", k, bm))
|
||||
s += fmt.Sprintf("\n%s: %s", k, bm)
|
||||
}
|
||||
|
||||
return s
|
||||
|
|
42
vendor/github.com/docker/libnetwork/portallocator/portallocator_freebsd.go
generated
vendored
Normal file
42
vendor/github.com/docker/libnetwork/portallocator/portallocator_freebsd.go
generated
vendored
Normal file
|
@ -0,0 +1,42 @@
|
|||
package portallocator
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
func getDynamicPortRange() (start int, end int, err error) {
|
||||
portRangeKernelSysctl := []string{"net.inet.ip.portrange.hifirst", "net.ip.portrange.hilast"}
|
||||
portRangeFallback := fmt.Sprintf("using fallback port range %d-%d", DefaultPortRangeStart, DefaultPortRangeEnd)
|
||||
portRangeLowCmd := exec.Command("/sbin/sysctl", portRangeKernelSysctl[0])
|
||||
var portRangeLowOut bytes.Buffer
|
||||
portRangeLowCmd.Stdout = &portRangeLowOut
|
||||
cmdErr := portRangeLowCmd.Run()
|
||||
if cmdErr != nil {
|
||||
return 0, 0, fmt.Errorf("port allocator - sysctl net.inet.ip.portrange.hifirst failed - %s: %v", portRangeFallback, err)
|
||||
}
|
||||
n, err := fmt.Sscanf(portRangeLowOut.String(), "%d", &start)
|
||||
if n != 1 || err != nil {
|
||||
if err == nil {
|
||||
err = fmt.Errorf("unexpected count of parsed numbers (%d)", n)
|
||||
}
|
||||
return 0, 0, fmt.Errorf("port allocator - failed to parse system ephemeral port range start from %s - %s: %v", portRangeLowOut.String(), portRangeFallback, err)
|
||||
}
|
||||
|
||||
portRangeHighCmd := exec.Command("/sbin/sysctl", portRangeKernelSysctl[1])
|
||||
var portRangeHighOut bytes.Buffer
|
||||
portRangeHighCmd.Stdout = &portRangeHighOut
|
||||
cmdErr = portRangeHighCmd.Run()
|
||||
if cmdErr != nil {
|
||||
return 0, 0, fmt.Errorf("port allocator - sysctl net.inet.ip.portrange.hilast failed - %s: %v", portRangeFallback, err)
|
||||
}
|
||||
n, err = fmt.Sscanf(portRangeHighOut.String(), "%d", &end)
|
||||
if n != 1 || err != nil {
|
||||
if err == nil {
|
||||
err = fmt.Errorf("unexpected count of parsed numbers (%d)", n)
|
||||
}
|
||||
return 0, 0, fmt.Errorf("port allocator - failed to parse system ephemeral port range end from %s - %s: %v", portRangeHighOut.String(), portRangeFallback, err)
|
||||
}
|
||||
return start, end, nil
|
||||
}
|
16
vendor/github.com/docker/libnetwork/sandbox_dns_unix.go
generated
vendored
16
vendor/github.com/docker/libnetwork/sandbox_dns_unix.go
generated
vendored
|
@ -197,14 +197,26 @@ func (sb *sandbox) setupDNS() error {
|
|||
// This is for the host mode networking
|
||||
if sb.config.originResolvConfPath != "" {
|
||||
if err := copyFile(sb.config.originResolvConfPath, sb.config.resolvConfPath); err != nil {
|
||||
return fmt.Errorf("could not copy source resolv.conf file %s to %s: %v", sb.config.originResolvConfPath, sb.config.resolvConfPath, err)
|
||||
if !os.IsNotExist(err) {
|
||||
return fmt.Errorf("could not copy source resolv.conf file %s to %s: %v", sb.config.originResolvConfPath, sb.config.resolvConfPath, err)
|
||||
}
|
||||
logrus.Infof("%s does not exist, we create an empty resolv.conf for container", sb.config.originResolvConfPath)
|
||||
if err := createFile(sb.config.resolvConfPath); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
currRC, err := resolvconf.Get()
|
||||
if err != nil {
|
||||
return err
|
||||
if !os.IsNotExist(err) {
|
||||
return err
|
||||
}
|
||||
// it's ok to continue if /etc/resolv.conf doesn't exist, default resolvers (Google's Public DNS)
|
||||
// will be used
|
||||
currRC = &resolvconf.File{}
|
||||
logrus.Infof("/etc/resolv.conf does not exist")
|
||||
}
|
||||
|
||||
if len(sb.config.dnsList) > 0 || len(sb.config.dnsSearchList) > 0 || len(sb.config.dnsOptionsList) > 0 {
|
||||
|
|
4
vendor/github.com/docker/libnetwork/types/types.go
generated
vendored
4
vendor/github.com/docker/libnetwork/types/types.go
generated
vendored
|
@ -129,11 +129,11 @@ func (p *PortBinding) GetCopy() PortBinding {
|
|||
func (p *PortBinding) String() string {
|
||||
ret := fmt.Sprintf("%s/", p.Proto)
|
||||
if p.IP != nil {
|
||||
ret = fmt.Sprintf("%s%s", ret, p.IP.String())
|
||||
ret += p.IP.String()
|
||||
}
|
||||
ret = fmt.Sprintf("%s:%d/", ret, p.Port)
|
||||
if p.HostIP != nil {
|
||||
ret = fmt.Sprintf("%s%s", ret, p.HostIP.String())
|
||||
ret += p.HostIP.String()
|
||||
}
|
||||
ret = fmt.Sprintf("%s:%d", ret, p.HostPort)
|
||||
return ret
|
||||
|
|
Loading…
Reference in a new issue