From 43d4d16b5bd6b9bfecc1bc1c9248fa403f4e1f72 Mon Sep 17 00:00:00 2001 From: Ross Vandegrift Date: Tue, 31 Jul 2012 18:17:43 +0200 Subject: [PATCH] ifupdown: Allow netmask to be CIDR-style prefix length (bgo #679123) --- src/settings/plugins/ifupdown/parser.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/settings/plugins/ifupdown/parser.c b/src/settings/plugins/ifupdown/parser.c index 6927f43fd3..88fb57b6ad 100644 --- a/src/settings/plugins/ifupdown/parser.c +++ b/src/settings/plugins/ifupdown/parser.c @@ -498,12 +498,20 @@ update_ip4_setting_from_if_block(NMConnection *connection, /* mask/prefix */ netmask_v = ifparser_getkey (block, "netmask"); if (netmask_v) { - if (!inet_pton (AF_INET, netmask_v, &tmp_mask)) { + if (strlen (netmask_v) < 7) { + netmask_int = atoi (netmask_v); + if (netmask_int > 32) { + g_set_error (error, eni_plugin_error_quark (), 0, + "Invalid IPv4 netmask '%s'", netmask_v); + goto error; + } + } else if (!inet_pton (AF_INET, netmask_v, &tmp_mask)) { g_set_error (error, eni_plugin_error_quark (), 0, "Invalid IPv4 netmask '%s'", netmask_v); goto error; + } else { + netmask_int = nm_utils_ip4_netmask_to_prefix (tmp_mask.s_addr); } - netmask_int = nm_utils_ip4_netmask_to_prefix (tmp_mask.s_addr); } /* gateway */