diff options
author | Thomas Haller <thaller@redhat.com> | 2021-02-16 21:23:37 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-02-17 08:48:41 +0100 |
commit | e258410c877ee081a19f38653d20d884d3923d04 (patch) | |
tree | 58d1f80d1d3f1f52980040e67789ab5d16a8986f | |
parent | d9968b133b32fbfbc5e726a8fc96e38cc044c831 (diff) | |
download | NetworkManager-e258410c877ee081a19f38653d20d884d3923d04.tar.gz |
initrd: cleanup parsing DNS in reader_parse_ip()
-rw-r--r-- | src/core/initrd/nmi-cmdline-reader.c | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/src/core/initrd/nmi-cmdline-reader.c b/src/core/initrd/nmi-cmdline-reader.c index d95b0f9bef..c83473d140 100644 --- a/src/core/initrd/nmi-cmdline-reader.c +++ b/src/core/initrd/nmi-cmdline-reader.c @@ -408,10 +408,12 @@ reader_parse_ip(Reader *reader, const char *sysfs_dir, char *argument) int client_ip_family = AF_UNSPEC; int client_ip_prefix = -1; const char * dns[2] = { - 0, + NULL, + NULL, }; int dns_addr_family[2] = { - 0, + AF_UNSPEC, + AF_UNSPEC, }; int i; GError *error = NULL; @@ -469,11 +471,15 @@ reader_parse_ip(Reader *reader, const char *sysfs_dir, char *argument) tmp = get_word(&argument, ':'); dns_addr_family[0] = get_ip_address_family(tmp, FALSE); if (dns_addr_family[0] != AF_UNSPEC) { - dns[0] = tmp; - dns[1] = get_word(&argument, ':'); - dns_addr_family[1] = get_ip_address_family(dns[1], FALSE); - if (*argument) - _LOGW(LOGD_CORE, "Ignoring extra: '%s'.", argument); + dns[0] = tmp; + dns[1] = get_word(&argument, ':'); + if (dns[1]) { + dns_addr_family[1] = get_ip_address_family(dns[1], FALSE); + if (dns_addr_family[1] == AF_UNSPEC) + _LOGW(LOGD_CORE, "Ignoring invalid DNS server: '%s'.", dns[1]); + if (*argument) + _LOGW(LOGD_CORE, "Ignoring extra: '%s'.", argument); + } } else { mtu = tmp; macaddr = argument; @@ -683,21 +689,8 @@ reader_parse_ip(Reader *reader, const char *sysfs_dir, char *argument) for (i = 0; i < 2; i++) { if (dns_addr_family[i] == AF_UNSPEC) break; - if (nm_utils_ipaddr_is_valid(dns_addr_family[i], dns[i])) { - switch (dns_addr_family[i]) { - case AF_INET: - nm_setting_ip_config_add_dns(s_ip4, dns[i]); - break; - case AF_INET6: - nm_setting_ip_config_add_dns(s_ip6, dns[i]); - break; - default: - _LOGW(LOGD_CORE, "Unknown address family: %s", dns[i]); - break; - } - } else { - _LOGW(LOGD_CORE, "Invalid name server: %s", dns[i]); - } + nm_assert(nm_utils_ipaddr_is_valid(dns_addr_family[i], dns[i])); + nm_setting_ip_config_add_dns(NM_IS_IPv4(dns_addr_family[i]) ? s_ip4 : s_ip6, dns[i]); } if (mtu && *mtu) |