summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-02-16 21:23:37 +0100
committerThomas Haller <thaller@redhat.com>2021-02-17 08:48:41 +0100
commite258410c877ee081a19f38653d20d884d3923d04 (patch)
tree58d1f80d1d3f1f52980040e67789ab5d16a8986f
parentd9968b133b32fbfbc5e726a8fc96e38cc044c831 (diff)
downloadNetworkManager-e258410c877ee081a19f38653d20d884d3923d04.tar.gz
initrd: cleanup parsing DNS in reader_parse_ip()
-rw-r--r--src/core/initrd/nmi-cmdline-reader.c37
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)