From 13b7b8bd7362d198e123a67b8dfdc1c558df5b21 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 11 Nov 2021 09:24:56 +0900 Subject: [PATCH] network: neighbor: accept an empty string assignment --- src/network/networkd-neighbor.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/network/networkd-neighbor.c b/src/network/networkd-neighbor.c index f7618fd9f63..1766095e531 100644 --- a/src/network/networkd-neighbor.c +++ b/src/network/networkd-neighbor.c @@ -611,20 +611,27 @@ int config_parse_neighbor_address( void *data, void *userdata) { - Network *network = userdata; _cleanup_(neighbor_free_or_set_invalidp) Neighbor *n = NULL; + Network *network = userdata; int r; assert(filename); assert(section); assert(lvalue); assert(rvalue); - assert(data); + assert(userdata); r = neighbor_new_static(network, filename, section_line, &n); if (r < 0) return log_oom(); + if (isempty(rvalue)) { + n->family = AF_UNSPEC; + n->in_addr = IN_ADDR_NULL; + TAKE_PTR(n); + return 0; + } + r = in_addr_from_string_auto(rvalue, &n->family, &n->in_addr); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, @@ -633,7 +640,6 @@ int config_parse_neighbor_address( } TAKE_PTR(n); - return 0; } @@ -649,20 +655,26 @@ int config_parse_neighbor_lladdr( void *data, void *userdata) { - Network *network = userdata; _cleanup_(neighbor_free_or_set_invalidp) Neighbor *n = NULL; + Network *network = userdata; int r; assert(filename); assert(section); assert(lvalue); assert(rvalue); - assert(data); + assert(userdata); r = neighbor_new_static(network, filename, section_line, &n); if (r < 0) return log_oom(); + if (isempty(rvalue)) { + n->ll_addr = HW_ADDR_NULL; + TAKE_PTR(n); + return 0; + } + r = parse_hw_addr(rvalue, &n->ll_addr); if (r < 0) { log_syntax(unit, LOG_WARNING, filename, line, r, -- 2.47.3