The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/3383
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === This deprecates defining multiple networks in the following format: lxc.network.type = veth lxc.network.flags = up lxc.network.link = lxdbr0 lxc.network.hwaddr = 00:16:3e:09:7a:39 lxc.network.name = eth0 lxc.network.type = veth lxc.network.flags = up lxc.network.link = lxdbr1 lxc.network.hwaddr = 00:16:3e:b2:8f:56 lxc.network.name = eth1 in favor of: lxc.network.0.type = veth lxc.network.0.flags = up lxc.network.0.link = lxdbr0 lxc.network.0.hwaddr = 00:16:3e:09:7a:39 lxc.network.0.name = eth0 lxc.network.1.type = veth lxc.network.1.flags = up lxc.network.1.link = lxdbr1 lxc.network.1.hwaddr = 00:16:3e:b2:8f:56 lxc.network.1.name = eth1 The former syntax is utterly misleading and difficult to handle in liblxc while the latter will let liblxc nicely handle network configuration even if you specify everything in random order. Cleaning out and updating will also work much more reliable. The regression potential for LXD is basically 0 since we regenerate the config for the container each time we start it up. Signed-off-by: Christian Brauner <[email protected]>
From 364e39f7eac3f35ea69db371d976d4a892965dc7 Mon Sep 17 00:00:00 2001 From: Christian Brauner <[email protected]> Date: Sat, 3 Jun 2017 22:36:42 +0200 Subject: [PATCH] network: use lxc.network.<n>.* This deprecates defining multiple networks in the following format: lxc.network.type = veth lxc.network.flags = up lxc.network.link = lxdbr0 lxc.network.hwaddr = 00:16:3e:09:7a:39 lxc.network.name = eth0 lxc.network.type = veth lxc.network.flags = up lxc.network.link = lxdbr1 lxc.network.hwaddr = 00:16:3e:b2:8f:56 lxc.network.name = eth1 in favor of: lxc.network.0.type = veth lxc.network.0.flags = up lxc.network.0.link = lxdbr0 lxc.network.0.hwaddr = 00:16:3e:09:7a:39 lxc.network.0.name = eth0 lxc.network.1.type = veth lxc.network.1.flags = up lxc.network.1.link = lxdbr1 lxc.network.1.hwaddr = 00:16:3e:b2:8f:56 lxc.network.1.name = eth1 The former syntax is utterly misleading and difficult to handle in liblxc while the latter will let liblxc nicely handle network configuration even if you specify everything in random order. Cleaning out and updating will also work much more reliable. The regression potential for LXD is basically 0 since we regenerate the config for the container each time we start it up. Signed-off-by: Christian Brauner <[email protected]> --- lxd/container_lxc.go | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go index 3042a1471..484373e85 100644 --- a/lxd/container_lxc.go +++ b/lxd/container_lxc.go @@ -1187,6 +1187,7 @@ func (c *containerLXC) initLXC() error { } // Setup devices + networkidx := 0 for _, k := range c.expandedDevices.DeviceNames() { m := c.expandedDevices[k] if shared.StringInSlice(m["type"], []string{"unix-char", "unix-block"}) { @@ -1218,39 +1219,39 @@ func (c *containerLXC) initLXC() error { // Interface type specific configuration if shared.StringInSlice(m["nictype"], []string{"bridged", "p2p"}) { - err = lxcSetConfigItem(cc, "lxc.network.type", "veth") + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.type", networkidx), "veth") if err != nil { return err } } else if m["nictype"] == "physical" { - err = lxcSetConfigItem(cc, "lxc.network.type", "phys") + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.type", networkidx), "phys") if err != nil { return err } } else if m["nictype"] == "macvlan" { - err = lxcSetConfigItem(cc, "lxc.network.type", "macvlan") + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.type", networkidx), "macvlan") if err != nil { return err } - err = lxcSetConfigItem(cc, "lxc.network.macvlan.mode", "bridge") + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.macvlan.mode", networkidx), "bridge") if err != nil { return err } } - err = lxcSetConfigItem(cc, "lxc.network.flags", "up") + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.flags", networkidx), "up") if err != nil { return err } if shared.StringInSlice(m["nictype"], []string{"bridged", "physical"}) { - err = lxcSetConfigItem(cc, "lxc.network.link", m["parent"]) + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.link", networkidx), m["parent"]) if err != nil { return err } } else if m["nictype"] == "macvlan" { - err = lxcSetConfigItem(cc, "lxc.network.link", networkGetHostDevice(m["parent"], m["vlan"])) + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.link", networkidx), networkGetHostDevice(m["parent"], m["vlan"])) if err != nil { return err } @@ -1266,7 +1267,7 @@ func (c *containerLXC) initLXC() error { } if vethName != "" { - err = lxcSetConfigItem(cc, "lxc.network.veth.pair", vethName) + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.veth.pair", networkidx), vethName) if err != nil { return err } @@ -1274,7 +1275,7 @@ func (c *containerLXC) initLXC() error { // MAC address if m["hwaddr"] != "" { - err = lxcSetConfigItem(cc, "lxc.network.hwaddr", m["hwaddr"]) + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.hwaddr", networkidx), m["hwaddr"]) if err != nil { return err } @@ -1282,7 +1283,7 @@ func (c *containerLXC) initLXC() error { // MTU if m["mtu"] != "" { - err = lxcSetConfigItem(cc, "lxc.network.mtu", m["mtu"]) + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.mtu", networkidx), m["mtu"]) if err != nil { return err } @@ -1290,7 +1291,7 @@ func (c *containerLXC) initLXC() error { // Name if m["name"] != "" { - err = lxcSetConfigItem(cc, "lxc.network.name", m["name"]) + err = lxcSetConfigItem(cc, fmt.Sprintf("lxc.network.%d.name", networkidx), m["name"]) if err != nil { return err } @@ -1366,6 +1367,8 @@ func (c *containerLXC) initLXC() error { } } } + // bump network index + networkidx++ } // Setup shmounts
_______________________________________________ lxc-devel mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-devel
