]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
conf-parser: introduce config_parse_in_addr_data()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 18 Sep 2024 18:35:03 +0000 (03:35 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 18 Sep 2024 18:38:22 +0000 (03:38 +0900)
src/shared/conf-parser.c
src/shared/conf-parser.h

index f862d0380b84a15bcf0c21801b44478309430a7d..c12aac2916f8590e96386c941a25c5e06a3f1c7e 100644 (file)
@@ -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,
index c542839a927c6c30eb1157fcbb97e86bd4988571..8767902a501da6d514030253f7adfe15f87c7289 100644 (file)
@@ -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);