diff --git a/src/nm.c b/src/nm.c index 3020744f8..752506837 100644 --- a/src/nm.c +++ b/src/nm.c @@ -878,7 +878,7 @@ write_nm_conf_access_point(const NetplanNetDefinition* def, const char* rootdir, g_key_file_set_boolean(kf, "ipv4", "never-default", TRUE); } - if (def->dhcp4 && def->dhcp4_overrides.metric != NETPLAN_METRIC_UNSPEC) + if ((def->dhcp4 || def->ip4_addresses || def->gateway4 || def->routes) && def->dhcp4_overrides.metric != NETPLAN_METRIC_UNSPEC) g_key_file_set_uint64(kf, "ipv4", "route-metric", def->dhcp4_overrides.metric); if (def->dhcp6 || def->ip6_addresses || def->gateway6 || def->ip6_nameservers || def->ip6_addr_gen_mode) { diff --git a/tests/parser/test_keyfile.py b/tests/parser/test_keyfile.py index a35e17929..e178f7729 100644 --- a/tests/parser/test_keyfile.py +++ b/tests/parser/test_keyfile.py @@ -2428,3 +2428,85 @@ def test_nameserver_with_DoT_lp2055148(self): ipv6.ip6-privacy: "-1" proxy._: "" '''.format(UUID, UUID)}) + + def test_ipv4_route_metric_is_overriden_when_dhcp4_is_disabled(self): + self.generate_from_keyfile('''[connection] +id=dummy-123 +type=dummy +uuid={} +interface-name=dummy123 + +[ipv4] +method=manual +address1=100.85.0.1/24,100.85.0.1 +route-metric=95 + +[ipv6] +method=ignore +addr-gen-mode=default + +[dummy] + +[proxy]\n'''.format(UUID)) + self.assert_netplan({UUID: '''network: + version: 2 + dummy-devices: + NM-{}: + renderer: NetworkManager + addresses: + - "100.85.0.1/24" + dhcp4-overrides: + route-metric: 95 + networkmanager: + uuid: "{}" + name: "dummy-123" + passthrough: + connection.interface-name: "dummy123" + ipv4.method: "manual" + ipv4.address1: "100.85.0.1/24,100.85.0.1" + ipv6.addr-gen-mode: "default" + dummy._: "" + proxy._: "" +'''.format(UUID, UUID)}) + + def test_ipv6_route_metric_is_overriden_when_dhcp6_is_disabled(self): + self.generate_from_keyfile('''[connection] +id=dummy-123 +type=dummy +uuid={} +interface-name=dummy123 + +[ipv4] +method=disabled + +[ipv6] +method=manual +address1=fdeb:446c:912d:8da::/64,fdeb:446c:912d:8da::1 +route-metric=95 +addr-gen-mode=default + +[dummy] + +[proxy]\n'''.format(UUID)) + self.assert_netplan({UUID: '''network: + version: 2 + dummy-devices: + NM-{}: + renderer: NetworkManager + addresses: + - "fdeb:446c:912d:8da::/64" + dhcp6-overrides: + route-metric: 95 + networkmanager: + uuid: "{}" + name: "dummy-123" + passthrough: + connection.interface-name: "dummy123" + ipv4.method: "disabled" + ipv6.method: "manual" + ipv6.address1: "fdeb:446c:912d:8da::/64,fdeb:446c:912d:8da::1" + ipv6.addr-gen-mode: "default" + ipv6.ip6-privacy: "-1" + dummy._: "" + proxy._: "" +'''.format(UUID, UUID)})