summaryrefslogtreecommitdiff
path: root/src/network
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-08-27 01:47:42 +0200
committerLennart Poettering <lennart@poettering.net>2015-08-27 01:47:42 +0200
commit586ac6f711e2eccceb12421df22fca4f117226c4 (patch)
treef91fafc13b1d24970070192d89ff9691eddab9e5 /src/network
parent39745a5afb24ba0c877122aa1967d58f02c5435f (diff)
networkd: make DHCP lease timeouts configurable
Diffstat (limited to 'src/network')
-rw-r--r--src/network/networkd-link.c16
-rw-r--r--src/network/networkd-network-gperf.gperf2
-rw-r--r--src/network/networkd.h1
3 files changed, 19 insertions, 0 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 09c27de22b..5b7ebfb79d 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -673,6 +673,22 @@ static int link_enter_set_addresses(Link *link) {
return r;
*/
+ if (link->network->dhcp_server_max_lease_time_usec > 0) {
+ r = sd_dhcp_server_set_max_lease_time(
+ link->dhcp_server,
+ DIV_ROUND_UP(link->network->dhcp_server_max_lease_time_usec, USEC_PER_SEC));
+ if (r < 0)
+ return r;
+ }
+
+ if (link->network->dhcp_server_default_lease_time_usec > 0) {
+ r = sd_dhcp_server_set_default_lease_time(
+ link->dhcp_server,
+ DIV_ROUND_UP(link->network->dhcp_server_default_lease_time_usec, USEC_PER_SEC));
+ if (r < 0)
+ return r;
+ }
+
if (link->network->dhcp_server_emit_timezone) {
_cleanup_free_ char *buffer = NULL;
const char *tz;
diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf
index c8c612d4eb..21e33efb42 100644
--- a/src/network/networkd-network-gperf.gperf
+++ b/src/network/networkd-network-gperf.gperf
@@ -74,6 +74,8 @@ DHCP.CriticalConnection, config_parse_bool, 0
DHCP.VendorClassIdentifier, config_parse_string, 0, offsetof(Network, dhcp_vendor_class_identifier)
DHCP.RouteMetric, config_parse_unsigned, 0, offsetof(Network, dhcp_route_metric)
DHCP.UseTimezone, config_parse_bool, 0, offsetof(Network, dhcp_timezone)
+DHCPServer.MaxLeaseTimeSec, config_parse_sec, 0, offsetof(Network, dhcp_server_max_lease_time_usec)
+DHCPServer.DefaultLeaseTimeSec,config_parse_sec, 0, offsetof(Network, dhcp_server_default_lease_time_usec)
DHCPServer.EmitTimezone, config_parse_bool, 0, offsetof(Network, dhcp_server_emit_timezone)
DHCPServer.Timezone, config_parse_timezone, 0, offsetof(Network, dhcp_server_timezone)
Bridge.Cost, config_parse_unsigned, 0, offsetof(Network, cost)
diff --git a/src/network/networkd.h b/src/network/networkd.h
index a337ea7bf0..d5da764bab 100644
--- a/src/network/networkd.h
+++ b/src/network/networkd.h
@@ -152,6 +152,7 @@ struct Network {
bool dhcp_server;
char *dhcp_server_timezone;
bool dhcp_server_emit_timezone;
+ usec_t dhcp_server_default_lease_time_usec, dhcp_server_max_lease_time_usec;
bool use_bpdu;
bool hairpin;