summaryrefslogtreecommitdiff
path: root/src/network/networkd-radv.c
diff options
context:
space:
mode:
authorSusant Sahani <ssahani@vmware.com>2020-02-27 13:32:43 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-03-01 00:49:19 +0900
commitbd6379ec57c5a25b1cb4ae61771c8a12179ebd7a (patch)
tree9f79c8e9562e8906b6704eed5a2c3905cb9aca5f /src/network/networkd-radv.c
parent34332af2bc6f63e5f35c7d71f4bfde993a6bd5f2 (diff)
downloadsystemd-bd6379ec57c5a25b1cb4ae61771c8a12179ebd7a.tar.gz
network: introduce IPv6 prefix assign
Expose a boolean flag to automatically add an address from the delegated prefix to the interface
Diffstat (limited to 'src/network/networkd-radv.c')
-rw-r--r--src/network/networkd-radv.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/network/networkd-radv.c b/src/network/networkd-radv.c
index 620939e251..d9267dd805 100644
--- a/src/network/networkd-radv.c
+++ b/src/network/networkd-radv.c
@@ -319,6 +319,46 @@ int config_parse_prefix_lifetime(const char *unit,
return 0;
}
+int config_parse_prefix_assign(
+ 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) {
+
+ Network *network = userdata;
+ _cleanup_(prefix_free_or_set_invalidp) Prefix *p = NULL;
+ int r;
+
+ assert(filename);
+ assert(section);
+ assert(lvalue);
+ assert(rvalue);
+ assert(data);
+
+ r = prefix_new_static(network, filename, section_line, &p);
+ if (r < 0)
+ return r;
+
+ r = parse_boolean(rvalue);
+ if (r < 0) {
+ log_syntax(unit, LOG_ERR, filename, line, r,
+ "Failed to parse %s=, ignoring assignment: %s",
+ lvalue, rvalue);
+ return 0;
+ }
+
+ p->assign = r;
+ p = NULL;
+
+ return 0;
+}
+
int config_parse_route_prefix(const char *unit,
const char *filename,
unsigned line,