diff options
author | Yegor Alexeyev <yegor.alexeyev@gmail.com> | 2021-03-15 21:19:52 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2021-04-20 15:11:53 +0200 |
commit | c95df5879eeb2cec8bc8eec2cfa7e741e1d9469f (patch) | |
tree | 3add531eb313ecdc610daa8da6b3d96155a82cc4 /src/network/networkd-dhcp-server.c | |
parent | d5bfddf037fba39367064bed357ba50ae8466b38 (diff) | |
download | systemd-c95df5879eeb2cec8bc8eec2cfa7e741e1d9469f.tar.gz |
relay role implementation
Diffstat (limited to 'src/network/networkd-dhcp-server.c')
-rw-r--r-- | src/network/networkd-dhcp-server.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c index 64bb23f387..bd368672da 100644 --- a/src/network/networkd-dhcp-server.c +++ b/src/network/networkd-dhcp-server.c @@ -352,6 +352,10 @@ int dhcp4_server_configure(Link *link) { if (r < 0) return log_link_error_errno(link, r, "Failed to set router emission for DHCP server: %m"); + r = sd_dhcp_server_set_relay_target(link->dhcp_server, &link->network->dhcp_server_relay_target); + if (r < 0) + return log_link_error_errno(link, r, "Failed to set relay target for DHCP server: %m"); + if (link->network->dhcp_server_emit_timezone) { _cleanup_free_ char *buffer = NULL; const char *tz; @@ -398,6 +402,32 @@ int dhcp4_server_configure(Link *link) { return 0; } +int config_parse_dhcp_server_relay_target( + 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; + union in_addr_union a; + int r; + + r = in_addr_from_string(AF_INET, rvalue, &a); + if (r < 0) { + log_syntax(unit, LOG_WARNING, filename, line, r, + "Failed to parse %s= address '%s', ignoring: %m", lvalue, rvalue); + return 0; + } + network->dhcp_server_relay_target = a.in; + return r; +} + int config_parse_dhcp_server_emit( const char *unit, const char *filename, |