mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-09 09:57:26 +03:00
network fix parser for IPv6Token=
extract_first_word() drops multiple ':'. So, it is not suitable for parsing 'static' case.
This commit is contained in:
parent
5f04f4e470
commit
b751c3e747
@ -962,7 +962,6 @@ int config_parse_address_generation_type(
|
|||||||
void *userdata) {
|
void *userdata) {
|
||||||
|
|
||||||
_cleanup_free_ IPv6Token *token = NULL;
|
_cleanup_free_ IPv6Token *token = NULL;
|
||||||
_cleanup_free_ char *word = NULL;
|
|
||||||
union in_addr_union buffer;
|
union in_addr_union buffer;
|
||||||
Network *network = data;
|
Network *network = data;
|
||||||
const char *p;
|
const char *p;
|
||||||
@ -978,35 +977,19 @@ int config_parse_address_generation_type(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = rvalue;
|
|
||||||
r = extract_first_word(&p, &word, ":", 0);
|
|
||||||
if (r == -ENOMEM)
|
|
||||||
return log_oom();
|
|
||||||
if (r <= 0) {
|
|
||||||
log_syntax(unit, LOG_ERR, filename, line, r,
|
|
||||||
"Invalid IPv6Token= , ignoring assignment: %s", rvalue);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = ipv6token_new(&token);
|
r = ipv6token_new(&token);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_oom();
|
return log_oom();
|
||||||
|
|
||||||
if (streq(word, "static"))
|
if ((p = startswith(rvalue, "static:")))
|
||||||
token->address_generation_type = IPV6_TOKEN_ADDRESS_GENERATION_STATIC;
|
token->address_generation_type = IPV6_TOKEN_ADDRESS_GENERATION_STATIC;
|
||||||
else if (streq(word, "prefixstable"))
|
else if ((p = startswith(rvalue, "prefixstable:")))
|
||||||
token->address_generation_type = IPV6_TOKEN_ADDRESS_GENERATION_PREFIXSTABLE;
|
token->address_generation_type = IPV6_TOKEN_ADDRESS_GENERATION_PREFIXSTABLE;
|
||||||
else {
|
else {
|
||||||
token->address_generation_type = IPV6_TOKEN_ADDRESS_GENERATION_STATIC;
|
token->address_generation_type = IPV6_TOKEN_ADDRESS_GENERATION_STATIC;
|
||||||
p = rvalue;
|
p = rvalue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isempty(p)) {
|
|
||||||
log_syntax(unit, LOG_ERR, filename, line, 0,
|
|
||||||
"Invalid IPv6Token= , ignoring assignment: %s", rvalue);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = in_addr_from_string(AF_INET6, p, &buffer);
|
r = in_addr_from_string(AF_INET6, p, &buffer);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_syntax(unit, LOG_ERR, filename, line, r,
|
log_syntax(unit, LOG_ERR, filename, line, r,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user