From: Yu Watanabe Date: Wed, 18 Sep 2024 18:35:03 +0000 (+0900) Subject: conf-parser: introduce config_parse_in_addr_data() X-Git-Tag: v257-rc1~398^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0ea6d55a4ba71a8587097e798bf2596f6e495c0d;p=thirdparty%2Fsystemd.git conf-parser: introduce config_parse_in_addr_data() --- diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index f862d0380b8..c12aac2916f 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -1973,6 +1973,36 @@ int config_parse_in_addr_non_null( return 1; } +int config_parse_in_addr_data( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + struct in_addr_data *p = ASSERT_PTR(data); + int r; + + assert(filename); + assert(lvalue); + + if (isempty(rvalue)) { + *p = (struct in_addr_data) {}; + return 1; + } + + r = in_addr_from_string_auto(rvalue, &p->family, &p->address); + if (r < 0) + return log_syntax_parse_error(unit, filename, line, r, lvalue, rvalue); + + return 1; +} + int config_parse_unsigned_bounded( const char *unit, const char *filename, diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index c542839a927..8767902a501 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -304,6 +304,7 @@ CONFIG_PARSER_PROTOTYPE(config_parse_hw_addrs); CONFIG_PARSER_PROTOTYPE(config_parse_ether_addr); CONFIG_PARSER_PROTOTYPE(config_parse_ether_addrs); CONFIG_PARSER_PROTOTYPE(config_parse_in_addr_non_null); +CONFIG_PARSER_PROTOTYPE(config_parse_in_addr_data); CONFIG_PARSER_PROTOTYPE(config_parse_percent); CONFIG_PARSER_PROTOTYPE(config_parse_permyriad); CONFIG_PARSER_PROTOTYPE(config_parse_pid);