summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Märdian <lukas.maerdian@canonical.com>2020-12-16 13:29:29 +0100
committerAndrej Shadura <andrewsh@debian.org>2021-01-04 20:34:58 +0100
commit8f6e47a01516783b2dad89b65d6d5177ccde3b26 (patch)
treef39dd81ab746ba147ef776196440136e9e387334
parent774bb305768d4a065165aa34a42b82da2de59414 (diff)
Fix changing of macaddress with systemd v247 (#178)
* networkd: Fix changing of macaddress with systemd v247 * networkd: avoid writing MACAddress= [Link] into .link file (we already have it in .network file) * network: some cleanup Gbp-Pq: Name 0001-Fix-changing-of-macaddress-with-systemd-v247-178.patch
-rw-r--r--src/networkd.c13
-rw-r--r--tests/generator/test_bridges.py3
-rw-r--r--tests/generator/test_ethernets.py12
-rw-r--r--tests/generator/test_vlans.py3
-rw-r--r--tests/integration/ethernets.py2
5 files changed, 14 insertions, 19 deletions
diff --git a/src/networkd.c b/src/networkd.c
index 7c86cd6..380095a 100644
--- a/src/networkd.c
+++ b/src/networkd.c
@@ -227,7 +227,7 @@ write_link_file(const NetplanNetDefinition* def, const char* rootdir, const char
return;
/* do we need to write a .link file? */
- if (!def->set_name && !def->wake_on_lan && !def->mtubytes && !def->set_mac)
+ if (!def->set_name && !def->wake_on_lan && !def->mtubytes)
return;
/* build file contents */
@@ -241,9 +241,6 @@ write_link_file(const NetplanNetDefinition* def, const char* rootdir, const char
g_string_append_printf(s, "WakeOnLan=%s\n", def->wake_on_lan ? "magic" : "off");
if (def->mtubytes)
g_string_append_printf(s, "MTUBytes=%u\n", def->mtubytes);
- if (def->set_mac)
- g_string_append_printf(s, "MACAddress=%s\n", def->set_mac);
-
orig_umask = umask(022);
g_string_free_to_file(s, rootdir, path, ".link");
@@ -569,13 +566,13 @@ write_network_file(const NetplanNetDefinition* def, const char* rootdir, const c
}
}
- if (def->mtubytes) {
+ if (def->mtubytes)
g_string_append_printf(link, "MTUBytes=%u\n", def->mtubytes);
- }
+ if (def->set_mac)
+ g_string_append_printf(link, "MACAddress=%s\n", def->set_mac);
- if (def->emit_lldp) {
+ if (def->emit_lldp)
g_string_append(network, "EmitLLDP=true\n");
- }
if (def->dhcp4 && def->dhcp6)
g_string_append(network, "DHCP=yes\n");
diff --git a/tests/generator/test_bridges.py b/tests/generator/test_bridges.py
index b751074..ea048cf 100644
--- a/tests/generator/test_bridges.py
+++ b/tests/generator/test_bridges.py
@@ -35,6 +35,9 @@ class TestNetworkd(TestBase):
self.assert_networkd({'br0.network': '''[Match]
Name=br0
+[Link]
+MACAddress=00:01:02:03:04:05
+
[Network]
DHCP=ipv4
LinkLocalAddressing=ipv6
diff --git a/tests/generator/test_ethernets.py b/tests/generator/test_ethernets.py
index 963aca1..a8be4ac 100644
--- a/tests/generator/test_ethernets.py
+++ b/tests/generator/test_ethernets.py
@@ -225,8 +225,8 @@ unmanaged-devices+=interface-name:green,''')
macaddress: 00:01:02:03:04:05
dhcp4: true''')
- self.assert_networkd({'def1.network': ND_DHCP4 % 'green',
- 'def1.link': '[Match]\nOriginalName=green\n\n[Link]\nWakeOnLan=off\nMACAddress=00:01:02:03:04:05\n'
+ self.assert_networkd({'def1.network': (ND_DHCP4 % 'green')
+ .replace('[Network]', '[Link]\nMACAddress=00:01:02:03:04:05\n\n[Network]')
})
self.assert_networkd_udev(None)
@@ -442,13 +442,7 @@ method=ignore
macaddress: 00:01:02:03:04:05
dhcp4: true''')
- self.assert_networkd({'eth0.link': '''[Match]
-OriginalName=eth0
-
-[Link]
-WakeOnLan=off
-MACAddress=00:01:02:03:04:05
-'''})
+ self.assert_networkd(None)
self.assert_nm({'eth0': '''[connection]
id=netplan-eth0
diff --git a/tests/generator/test_vlans.py b/tests/generator/test_vlans.py
index 606a0b1..85c5fca 100644
--- a/tests/generator/test_vlans.py
+++ b/tests/generator/test_vlans.py
@@ -62,7 +62,8 @@ Kind=vlan
Id=3
''',
'enblue.network': ND_WITHIP % ('enblue', '1.2.3.4/24'),
- 'enred.network': ND_EMPTY % ('enred', 'ipv6'),
+ 'enred.network': (ND_EMPTY % ('enred', 'ipv6'))
+ .replace('[Network]', '[Link]\nMACAddress=aa:bb:cc:dd:ee:11\n\n[Network]'),
'engreen.network': (ND_DHCP6_WOCARRIER % 'engreen')})
self.assert_nm(None, '''[keyfile]
diff --git a/tests/integration/ethernets.py b/tests/integration/ethernets.py
index 74d4129..a362f2e 100644
--- a/tests/integration/ethernets.py
+++ b/tests/integration/ethernets.py
@@ -72,7 +72,7 @@ class _CommonTests():
['master'])
out = subprocess.check_output(['ip', 'link', 'show', self.dev_e2_client],
universal_newlines=True)
- self.assertTrue('ether 00:01:02:03:04:05' in out)
+ self.assertIn('ether 00:01:02:03:04:05', out)
subprocess.check_call(['ip', 'link', 'set', self.dev_e2_client,
'address', self.dev_e2_client_mac])