chiark / gitweb /
networkd: add support for Domains= to .network files
[elogind.git] / src / network / networkd-network.c
index e13e4a0f620b2c585ee09e84489d99d0c4dcd1e9..bbc5d279e942035e188c1560795eb8e6b604ab4b 100644 (file)
@@ -341,6 +341,34 @@ int config_parse_netdev(const char *unit,
         return 0;
 }
 
+int config_parse_domains(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) {
+        char ***domains = data;
+        char **domain;
+        int r;
+
+        r = config_parse_strv(unit, filename, line, section, section_line,
+                              lvalue, ltype, rvalue, domains, userdata);
+        if (r < 0)
+                return r;
+
+        strv_uniq(*domains);
+
+        STRV_FOREACH(domain, *domains)
+                if (is_localhost(*domain) || !hostname_is_valid(*domain))
+                        strv_remove(*domains, *domain);
+
+        return 0;
+}
+
 int config_parse_tunnel(const char *unit,
                         const char *filename,
                         unsigned line,