summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFrancesco Giudici <fgiudici@redhat.com>2018-04-16 17:16:28 +0200
committerFrancesco Giudici <fgiudici@redhat.com>2018-06-09 22:20:39 +0200
commite9321713a90a2f1098afbdbbfbb462638c54a368 (patch)
tree6bd8738e88f6d5227b1a1a6653e3783a1d45a720 /src
parentfa478d8f22873be0d1c85fdab781afde3a58176f (diff)
downloadNetworkManager-e9321713a90a2f1098afbdbbfbb462638c54a368.tar.gz
ifcfg: make_ip6_setting cleanup & optimization 2/2
get rid of svGetValueStr_cp() in favor of svGetValueStr() in the make_ip6_setting() function
Diffstat (limited to 'src')
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c141
1 files changed, 70 insertions, 71 deletions
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
index d20c3f303d..4d9e7f6595 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
@@ -1685,11 +1685,13 @@ make_ip6_setting (shvarFile *ifcfg,
{
NMSettingIPConfig *s_ip6 = NULL;
const char *v;
- char *value = NULL;
+ gs_free char *value = NULL;
char *route6_path = NULL;
gboolean ipv6init, ipv6forwarding, dhcp6 = FALSE;
char *method = NM_SETTING_IP6_CONFIG_METHOD_MANUAL;
- char *ipv6addr, *ipv6addr_secondaries;
+ const char *ipv6addr, *ipv6addr_secondaries;
+ gs_free char *ipv6addr_to_free = NULL;
+ gs_free char *ipv6addr_secondaries_to_free = NULL;
gs_free const char **list = NULL;
const char *const *iter;
guint32 i;
@@ -1715,13 +1717,16 @@ make_ip6_setting (shvarFile *ifcfg,
* When both are set, the device specified in IPV6_DEFAULTGW takes preference.
*/
if (network_ifcfg) {
- char *ipv6_defaultgw, *ipv6_defaultdev;
- char *default_dev = NULL;
+ const char *ipv6_defaultgw, *ipv6_defaultdev;
+ gs_free char *ipv6_defaultgw_to_free = NULL;
+ gs_free char *ipv6_defaultdev_to_free = NULL;
+ const char *default_dev = NULL;
/* Get the connection ifcfg device name and the global default route device */
- value = svGetValueStr_cp (ifcfg, "DEVICE");
- ipv6_defaultgw = svGetValueStr_cp (network_ifcfg, "IPV6_DEFAULTGW");
- ipv6_defaultdev = svGetValueStr_cp (network_ifcfg, "IPV6_DEFAULTDEV");
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "DEVICE", &value);
+ ipv6_defaultgw = svGetValueStr (network_ifcfg, "IPV6_DEFAULTGW", &ipv6_defaultgw_to_free);
+ ipv6_defaultdev = svGetValueStr (network_ifcfg, "IPV6_DEFAULTDEV", &ipv6_defaultdev_to_free);
if (ipv6_defaultgw) {
default_dev = strchr (ipv6_defaultgw, '%');
@@ -1734,66 +1739,64 @@ make_ip6_setting (shvarFile *ifcfg,
/* If there was a global default route device specified, then only connections
* for that device can be the default connection.
*/
- if (default_dev && value)
- never_default = !!strcmp (value, default_dev);
-
- g_free (ipv6_defaultgw);
- g_free (ipv6_defaultdev);
- g_free (value);
+ if (default_dev && v)
+ never_default = !!strcmp (v, default_dev);
}
/* Find out method property */
/* Is IPV6 enabled? Set method to "ignored", when not enabled */
- value = svGetValueStr_cp (ifcfg, "IPV6INIT");
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "IPV6INIT", &value);
ipv6init = svGetValueBoolean (ifcfg, "IPV6INIT", FALSE);
- if (!value) {
+ if (!v) {
if (network_ifcfg)
ipv6init = svGetValueBoolean (network_ifcfg, "IPV6INIT", FALSE);
}
- g_free (value);
if (!ipv6init)
method = NM_SETTING_IP6_CONFIG_METHOD_IGNORE; /* IPv6 is disabled */
else {
ipv6forwarding = svGetValueBoolean (ifcfg, "IPV6FORWARDING", FALSE);
- value = svGetValueStr_cp (ifcfg, "IPV6_AUTOCONF");
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "IPV6_AUTOCONF", &value);
dhcp6 = svGetValueBoolean (ifcfg, "DHCPV6C", FALSE);
- if (!g_strcmp0 (value, "shared"))
+ if (!g_strcmp0 (v, "shared"))
method = NM_SETTING_IP6_CONFIG_METHOD_SHARED;
- else if (svParseBoolean (value, !ipv6forwarding))
+ else if (svParseBoolean (v, !ipv6forwarding))
method = NM_SETTING_IP6_CONFIG_METHOD_AUTO;
else if (dhcp6)
method = NM_SETTING_IP6_CONFIG_METHOD_DHCP;
else {
/* IPV6_AUTOCONF=no and no IPv6 address -> method 'link-local' */
- g_free (value);
- value = svGetValueStr_cp (ifcfg, "IPV6ADDR");
- if (!value)
- value = svGetValueStr_cp (ifcfg, "IPV6ADDR_SECONDARIES");
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "IPV6ADDR", &value);
+ if (!v) {
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "IPV6ADDR_SECONDARIES", &value);
+ }
- if (!value)
+ if (!v)
method = NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL;
}
- g_free (value);
}
/* TODO - handle other methods */
/* Read IPv6 Privacy Extensions configuration */
- value = svGetValueStr_cp (ifcfg, "IPV6_PRIVACY");
- if (value) {
- ip6_privacy = svParseBoolean (value, FALSE);
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "IPV6_PRIVACY", &value);
+ if (v) {
+ ip6_privacy = svParseBoolean (v, FALSE);
if (!ip6_privacy)
- ip6_privacy = (g_strcmp0 (value, "rfc4941") == 0) ||
- (g_strcmp0 (value, "rfc3041") == 0);
+ ip6_privacy = (g_strcmp0 (v, "rfc4941") == 0) ||
+ (g_strcmp0 (v, "rfc3041") == 0);
}
ip6_privacy_prefer_public_ip = svGetValueBoolean (ifcfg, "IPV6_PRIVACY_PREFER_PUBLIC_IP", FALSE);
- ip6_privacy_val = value ?
+ ip6_privacy_val = v ?
(ip6_privacy ?
(ip6_privacy_prefer_public_ip ? NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR : NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR) :
NM_SETTING_IP6_CONFIG_PRIVACY_DISABLED) :
NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN;
- g_free (value);
/* the route table (policy routing) is ignored if we don't handle routes. */
route_table = svGetValueInt64 (ifcfg, "IPV6_ROUTE_TABLE", 10,
@@ -1820,19 +1823,20 @@ make_ip6_setting (shvarFile *ifcfg,
if (strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_IGNORE) == 0)
return NM_SETTING (s_ip6);
- value = svGetValueStr_cp (ifcfg, "DHCPV6_HOSTNAME");
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "DHCPV6_HOSTNAME", &value);
/* Use DHCP_HOSTNAME as fallback if it is in FQDN format and ipv6.method is
* auto or dhcp: this is required to support old ifcfg files
*/
- if (!value && ( !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO)
+ if (!v && ( !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO)
|| !strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP))) {
- value = svGetValueStr_cp (ifcfg, "DHCP_HOSTNAME");
- if (value && !strchr (value, '.'))
- g_clear_pointer (&value, g_free);
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "DHCP_HOSTNAME", &value);
+ if (v && !strchr (v, '.'))
+ v = NULL;
}
- if (value)
- g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, value, NULL);
- g_free (value);
+ if (v)
+ g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, v, NULL);
g_object_set (s_ip6, NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME,
svGetValueBoolean (ifcfg, "DHCPV6_SEND_HOSTNAME", TRUE), NULL);
@@ -1842,18 +1846,16 @@ make_ip6_setting (shvarFile *ifcfg,
* added to the automatic ones. Note that this is not currently supported by
* the legacy 'network' service (ifup-eth).
*/
- ipv6addr = svGetValueStr_cp (ifcfg, "IPV6ADDR");
- ipv6addr_secondaries = svGetValueStr_cp (ifcfg, "IPV6ADDR_SECONDARIES");
+ ipv6addr = svGetValueStr (ifcfg, "IPV6ADDR", &ipv6addr_to_free);
+ ipv6addr_secondaries = svGetValueStr (ifcfg, "IPV6ADDR_SECONDARIES", &ipv6addr_secondaries_to_free);
+ nm_clear_g_free (&value);
value = g_strjoin (ipv6addr && ipv6addr_secondaries ? " " : NULL,
ipv6addr ?: "",
ipv6addr_secondaries ?: "",
NULL);
- g_free (ipv6addr);
- g_free (ipv6addr_secondaries);
list = nm_utils_strsplit_set (value, " ");
- g_free (value);
for (iter = list, i = 0; iter && *iter; iter++, i++) {
NMIPAddress *addr = NULL;
@@ -1867,25 +1869,26 @@ make_ip6_setting (shvarFile *ifcfg,
/* Gateway */
if (nm_setting_ip_config_get_num_addresses (s_ip6)) {
- value = svGetValueStr_cp (ifcfg, "IPV6_DEFAULTGW");
- if (!value) {
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "IPV6_DEFAULTGW", &value);
+ if (!v) {
/* If no gateway in the ifcfg, try global /etc/sysconfig/network instead */
- if (network_ifcfg)
- value = svGetValueStr_cp (network_ifcfg, "IPV6_DEFAULTGW");
+ if (network_ifcfg) {
+ nm_clear_g_free (&value);
+ v = svGetValueStr (network_ifcfg, "IPV6_DEFAULTGW", &value);
+ }
}
- if (value) {
+ if (v) {
char *ptr;
- if ((ptr = strchr (value, '%')) != NULL)
+ if ((ptr = strchr (v, '%')) != NULL)
*ptr = '\0'; /* remove %interface prefix if present */
- if (!nm_utils_ipaddr_valid (AF_INET6, value)) {
+ if (!nm_utils_ipaddr_valid (AF_INET6, v)) {
g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
- "Invalid IP6 address '%s'", value);
- g_free (value);
+ "Invalid IP6 address '%s'", v);
goto error;
}
- g_object_set (s_ip6, NM_SETTING_IP_CONFIG_GATEWAY, value, NULL);
- g_free (value);
+ g_object_set (s_ip6, NM_SETTING_IP_CONFIG_GATEWAY, v, NULL);
}
}
@@ -1899,11 +1902,10 @@ make_ip6_setting (shvarFile *ifcfg,
g_object_set (s_ip6, NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE, i_val, NULL);
/* IPv6 tokenized interface identifier */
- value = svGetValueStr_cp (ifcfg, "IPV6_TOKEN");
- if (value) {
- g_object_set (s_ip6, NM_SETTING_IP6_CONFIG_TOKEN, value, NULL);
- g_free (value);
- }
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, "IPV6_TOKEN", &value);
+ if (v)
+ g_object_set (s_ip6, NM_SETTING_IP6_CONFIG_TOKEN, v, NULL);
/* DNS servers
* Pick up just IPv6 addresses (IPv4 addresses are taken by make_ip4_setting())
@@ -1912,24 +1914,22 @@ make_ip6_setting (shvarFile *ifcfg,
char tag[256];
numbered_tag (tag, "DNS", i);
- value = svGetValueStr_cp (ifcfg, tag);
- if (!value) {
+ nm_clear_g_free (&value);
+ v = svGetValueStr (ifcfg, tag, &value);
+ if (!v) {
/* all done */
break;
}
- if (nm_utils_ipaddr_valid (AF_INET6, value)) {
- if (!nm_setting_ip_config_add_dns (s_ip6, value))
+ if (nm_utils_ipaddr_valid (AF_INET6, v)) {
+ if (!nm_setting_ip_config_add_dns (s_ip6, v))
PARSE_WARNING ("duplicate DNS server %s", tag);
- } else if (nm_utils_ipaddr_valid (AF_INET, value)) {
+ } else if (nm_utils_ipaddr_valid (AF_INET, v)) {
/* Ignore IPv4 addresses */
} else {
- PARSE_WARNING ("invalid DNS server address %s", value);
- g_free (value);
+ PARSE_WARNING ("invalid DNS server address %s", v);
goto error;
}
-
- g_free (value);
}
if (!routes_read) {
@@ -1960,7 +1960,6 @@ make_ip6_setting (shvarFile *ifcfg,
/* DNS options */
nm_clear_g_free (&value);
parse_dns_options (s_ip6, svGetValue (ifcfg, "IPV6_RES_OPTIONS", &value));
- g_free (value);
/* DNS priority */
priority = svGetValueInt64 (ifcfg, "IPV6_DNS_PRIORITY", 10, G_MININT32, G_MAXINT32, 0);