summaryrefslogtreecommitdiff
path: root/src/network/networkd-network.c
diff options
context:
space:
mode:
authorDaniel Mack <github@zonque.org>2015-07-06 14:44:33 -0400
committerDaniel Mack <github@zonque.org>2015-07-06 14:44:33 -0400
commit6cefbec8670bd07167d2608f5598afc78f1303a9 (patch)
tree4139a1be4c0b6c4612db785225f52640026e427c /src/network/networkd-network.c
parentf767522a65a03b164f30d6b9f089000ce5bcb730 (diff)
parent1f0d9695125bf8e66d0e53e37d454755a84899bb (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.c25
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;