[lxc-devel] [lxd/master] network: Fixes custom MTU not being applied
tomponline on Github
lxc-bot at linuxcontainers.org
Wed May 8 10:16:56 UTC 2019
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 361 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20190508/b440da5d/attachment-0001.bin>
-------------- next part --------------
From 547b17c81b32bb96b1ca8428b4f63cca1f9c26b5 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at canonical.com>
Date: Wed, 8 May 2019 11:13:53 +0100
Subject: [PATCH] network: Fixes custom MTU not being applied
Signed-off-by: Thomas Parrott <thomas.parrott at canonical.com>
---
lxd/container_lxc.go | 9 +++++++
test/suites/container_devices.sh | 43 +++++++++++++++++++++++++++++---
2 files changed, 48 insertions(+), 4 deletions(-)
diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go
index 508a8db697..f99b9e1475 100644
--- a/lxd/container_lxc.go
+++ b/lxd/container_lxc.go
@@ -7626,6 +7626,15 @@ func (c *containerLXC) createNetworkDevice(name string, m types.Device) (string,
}
}
+ // Set the MAC address
+ if m["mtu"] != "" {
+ _, err := shared.RunCommand("ip", "link", "set", "dev", dev, "mtu", m["mtu"])
+ if err != nil {
+ deviceRemoveInterface(dev)
+ return "", fmt.Errorf("Failed to set the MTU: %s", err)
+ }
+ }
+
// Bring the interface up
_, err := shared.RunCommand("ip", "link", "set", "dev", dev, "up")
if err != nil {
diff --git a/test/suites/container_devices.sh b/test/suites/container_devices.sh
index 9cb5f958c8..56265a8e7f 100644
--- a/test/suites/container_devices.sh
+++ b/test/suites/container_devices.sh
@@ -24,6 +24,7 @@ test_container_devices_nic() {
lxc profile device set ${ct_name} eth0 limits.ingress 1Mbit
lxc profile device set ${ct_name} eth0 limits.egress 2Mbit
lxc profile device set ${ct_name} eth0 host_name "${veth_host_name}"
+ lxc profile device set ${ct_name} eth0 mtu "1400"
lxc launch testimage "${ct_name}" -p ${ct_name}
if ! ip -4 r list dev "${veth_host_name}" | grep "192.0.2.1${ipRand}" ; then
echo "ipv4.routes invalid"
@@ -42,6 +43,12 @@ test_container_devices_nic() {
false
fi
+ # Check custom MTU is applied.
+ if ! lxc exec "${ct_name}" -- ip link show eth0 | grep "mtu 1400" ; then
+ echo "mtu invalid"
+ false
+ fi
+
# Test hot plugging a container nic with different settings to profile with the same name.
lxc config device add "${ct_name}" eth0 nic \
nictype=bridged \
@@ -50,7 +57,9 @@ test_container_devices_nic() {
ipv6.routes="2001:db8::2${ipRand}/128" \
limits.ingress=3Mbit \
limits.egress=4Mbit \
- host_name="${veth_host_name}"
+ host_name="${veth_host_name}" \
+ name=eth0 \
+ mtu=1401
if ! ip -4 r list dev "${veth_host_name}" | grep "192.0.2.2${ipRand}" ; then
echo "ipv4.routes invalid"
@@ -69,6 +78,12 @@ test_container_devices_nic() {
false
fi
+ # Check custom MTU is applied.
+ if ! lxc exec "${ct_name}" -- ip link show eth0 | grep "mtu 1401" ; then
+ echo "mtu invalid"
+ false
+ fi
+
# Test removing hot plugged device and check profile nic is restored.
lxc config device remove "${ct_name}" eth0
if ! ip -4 r list dev "${veth_host_name}" | grep "192.0.2.1${ipRand}" ; then
@@ -88,16 +103,23 @@ test_container_devices_nic() {
false
fi
+ # Check custom MTU is applied.
+ if ! lxc exec "${ct_name}" -- ip link show eth0 | grep "mtu 1400" ; then
+ echo "mtu invalid"
+ false
+ fi
+
# Test hot plugging a container nic then updating it.
lxc config device add "${ct_name}" eth0 nic \
nictype=bridged \
parent=${brName} \
- host_name="${veth_host_name}"
+ host_name="${veth_host_name}" \
+ name=eth0
lxc config device set "${ct_name}" eth0 ipv4.routes "192.0.2.2${ipRand}/32"
lxc config device set "${ct_name}" eth0 ipv6.routes "2001:db8::2${ipRand}/128"
lxc config device set "${ct_name}" eth0 limits.ingress 3Mbit
lxc config device set "${ct_name}" eth0 limits.egress 4Mbit
-
+ lxc config device set "${ct_name}" eth0 mtu 1403
if ! ip -4 r list dev "${veth_host_name}" | grep "192.0.2.2${ipRand}" ; then
echo "ipv4.routes invalid"
false
@@ -115,6 +137,12 @@ test_container_devices_nic() {
false
fi
+ # Check custom MTU is applied.
+ if ! lxc exec "${ct_name}" -- ip link show eth0 | grep "mtu 1403" ; then
+ echo "mtu invalid"
+ false
+ fi
+
# Test adding p2p veth to running container.
lxc config device add "${ct_name}" eth1 nic \
nictype=p2p \
@@ -122,7 +150,8 @@ test_container_devices_nic() {
ipv6.routes="2001:db8::3${ipRand}/128" \
limits.ingress=3Mbit \
limits.egress=4Mbit \
- host_name="${veth_host_name}p2p"
+ host_name="${veth_host_name}p2p" \
+ mtu=1400
if ! ip -4 r list dev "${veth_host_name}p2p" | grep "192.0.2.3${ipRand}" ; then
echo "ipv4.routes invalid"
@@ -141,6 +170,12 @@ test_container_devices_nic() {
false
fi
+ # Check custom MTU is applied.
+ if ! lxc exec "${ct_name}" -- ip link show eth1 | grep "mtu 1400" ; then
+ echo "mtu invalid"
+ false
+ fi
+
# Cleanup.
lxc config device remove "${ct_name}" eth1
lxc delete "${ct_name}" -f
More information about the lxc-devel
mailing list