diff options
author | Daniel Mack <github@zonque.org> | 2015-07-06 14:44:33 -0400 |
---|---|---|
committer | Daniel Mack <github@zonque.org> | 2015-07-06 14:44:33 -0400 |
commit | 6cefbec8670bd07167d2608f5598afc78f1303a9 (patch) | |
tree | 4139a1be4c0b6c4612db785225f52640026e427c /src/network/networkd-network.c | |
parent | f767522a65a03b164f30d6b9f089000ce5bcb730 (diff) | |
parent | 1f0d9695125bf8e66d0e53e37d454755a84899bb (diff) |
Merge pull request #496 from poettering/ipv6-privacy
networkd: various fixes for the IPv6 privacy extensions support
Diffstat (limited to 'src/network/networkd-network.c')
-rw-r--r-- | src/network/networkd-network.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index ddf03e67f9..a8e9ef909c 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -111,7 +111,7 @@ static int network_load_one(Manager *manager, const char *filename) { network->link_local = ADDRESS_FAMILY_IPV6; - network->ipv6_privacy_extensions = _IPV6_PRIVACY_EXTENSIONS_INVALID; + network->ipv6_privacy_extensions = IPV6_PRIVACY_EXTENSIONS_NO; r = config_parse(NULL, filename, file, "Match\0" @@ -755,9 +755,9 @@ int config_parse_address_family_boolean_with_kernel( } static const char* const ipv6_privacy_extensions_table[_IPV6_PRIVACY_EXTENSIONS_MAX] = { - [IPV6_PRIVACY_EXTENSIONS_DISABLE] = "no", - [IPV6_PRIVACY_EXTENSIONS_PREFER_PUBLIC] = "yes", - [IPV6_PRIVACY_EXTENSIONS_PREFER_TEMPORARY] = "prefer-temporary", + [IPV6_PRIVACY_EXTENSIONS_NO] = "no", + [IPV6_PRIVACY_EXTENSIONS_PREFER_PUBLIC] = "prefer-public", + [IPV6_PRIVACY_EXTENSIONS_YES] = "yes", }; DEFINE_STRING_TABLE_LOOKUP(ipv6_privacy_extensions, IPv6PrivacyExtensions); @@ -787,16 +787,21 @@ int config_parse_ipv6_privacy_extensions( k = parse_boolean(rvalue); if (k > 0) - *ipv6_privacy_extensions = IPV6_PRIVACY_EXTENSIONS_PREFER_PUBLIC; + *ipv6_privacy_extensions = IPV6_PRIVACY_EXTENSIONS_YES; else if (k == 0) - *ipv6_privacy_extensions = IPV6_PRIVACY_EXTENSIONS_DISABLE; + *ipv6_privacy_extensions = IPV6_PRIVACY_EXTENSIONS_NO; else { - IPv6PrivacyExtensions s; + IPv6PrivacyExtensions s; s = ipv6_privacy_extensions_from_string(rvalue); - if (s < 0){ - log_syntax(unit, LOG_ERR, filename, line, -s, "Failed to parse IPv6 privacy extensions option, ignoring: %s", rvalue); - return 0; + if (s < 0) { + + if (streq(rvalue, "kernel")) + s = _IPV6_PRIVACY_EXTENSIONS_INVALID; + else { + log_syntax(unit, LOG_ERR, filename, line, s, "Failed to parse IPv6 privacy extensions option, ignoring: %s", rvalue); + return 0; + } } *ipv6_privacy_extensions = s; |