diff options
author | Lukas Märdian <lukas.maerdian@canonical.com> | 2020-12-16 13:29:29 +0100 |
---|---|---|
committer | Andrej Shadura <andrewsh@debian.org> | 2021-01-05 19:28:50 +0100 |
commit | d7913e024f9905210c8ac66e0408a39fb3e8edad (patch) | |
tree | 5c5d343eb12bad9f9a159ff4cdafbf5e3cc2762c | |
parent | 2b9e0388f3c620d8f186c59c095d5d0f31aab14c (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.c | 13 | ||||
-rw-r--r-- | tests/generator/test_bridges.py | 3 | ||||
-rw-r--r-- | tests/generator/test_ethernets.py | 12 | ||||
-rw-r--r-- | tests/generator/test_vlans.py | 3 | ||||
-rw-r--r-- | tests/integration/ethernets.py | 2 |
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]) |