From a35f24ae0b90504562e3fad899342152605fd82c Mon Sep 17 00:00:00 2001 From: Sandeep Bansal Date: Thu, 18 May 2017 13:38:04 -0700 Subject: [PATCH] Changes to support ICS network on windows Signed-off-by: Sandeep Bansal --- drivers/windows/labels.go | 3 +++ drivers/windows/windows.go | 14 ++++++++++++++ drivers_windows.go | 1 + 3 files changed, 18 insertions(+) diff --git a/drivers/windows/labels.go b/drivers/windows/labels.go index b32c6ffb..6cb077cb 100644 --- a/drivers/windows/labels.go +++ b/drivers/windows/labels.go @@ -28,6 +28,9 @@ const ( // DNSServers of the network DNSServers = "com.docker.network.windowsshim.dnsservers" + // MacPool of the network + MacPool = "com.docker.network.windowsshim.macpool" + // SourceMac of the network SourceMac = "com.docker.network.windowsshim.sourcemac" diff --git a/drivers/windows/windows.go b/drivers/windows/windows.go index c1c69f29..3ede4410 100644 --- a/drivers/windows/windows.go +++ b/drivers/windows/windows.go @@ -38,6 +38,7 @@ type networkConfiguration struct { VLAN uint VSID uint DNSServers string + MacPools []hcsshim.MacPool DNSSuffix string SourceMac string NetworkAdapterName string @@ -168,6 +169,18 @@ func (d *driver) parseNetworkOptions(id string, genericOptions map[string]string config.DNSSuffix = value case DNSServers: config.DNSServers = value + case MacPool: + config.MacPools = make([]hcsshim.MacPool, 0) + s := strings.Split(value, ",") + if len(s)%2 != 0 { + return nil, types.BadRequestErrorf("Invalid mac pool. You must specify both a start range and an end range") + } + for i := 0; i < len(s)-1; i += 2 { + config.MacPools = append(config.MacPools, hcsshim.MacPool{ + StartMacAddress: s[i], + EndMacAddress: s[i+1], + }) + } case VLAN: vlan, err := strconv.ParseUint(value, 10, 32) if err != nil { @@ -274,6 +287,7 @@ func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo d Subnets: subnets, DNSServerList: config.DNSServers, DNSSuffix: config.DNSSuffix, + MacPools: config.MacPools, SourceMac: config.SourceMac, NetworkAdapterName: config.NetworkAdapterName, } diff --git a/drivers_windows.go b/drivers_windows.go index 384d855c..a037c16e 100644 --- a/drivers_windows.go +++ b/drivers_windows.go @@ -16,5 +16,6 @@ func getInitializers(experimental bool) []initializer { {windows.GetInit("l2bridge"), "l2bridge"}, {windows.GetInit("l2tunnel"), "l2tunnel"}, {windows.GetInit("nat"), "nat"}, + {windows.GetInit("ics"), "ics"}, } }