network: DHCPv4- Allow to set DHCP lease lifetime
This commit is contained in:
parent
4c0b8d563d
commit
d6463307e0
|
@ -1623,6 +1623,15 @@
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>FallbackLeaseLifetimeSec=</varname></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Allows to set DHCPv4 lease lifetime when DHCPv4 server does not send the lease lifetime.
|
||||||
|
Takes one of <literal>forever</literal> or <literal>infinity</literal> means that the address
|
||||||
|
never expires. Defaults to unset.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>SendRelease=</varname></term>
|
<term><varname>SendRelease=</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
|
|
@ -1488,6 +1488,12 @@ int dhcp4_configure(Link *link) {
|
||||||
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set ip service type: %m");
|
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set ip service type: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (link->network->dhcp_fallback_lease_lifetime > 0) {
|
||||||
|
r = sd_dhcp_client_set_fallback_lease_lifetime(link->dhcp_client, link->network->dhcp_fallback_lease_lifetime);
|
||||||
|
if (r < 0)
|
||||||
|
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed set to lease lifetime: %m");
|
||||||
|
}
|
||||||
|
|
||||||
if (link->network->dhcp_send_decline) {
|
if (link->network->dhcp_send_decline) {
|
||||||
r = configure_dhcpv4_duplicate_address_detection(link);
|
r = configure_dhcpv4_duplicate_address_detection(link);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
@ -1674,6 +1680,44 @@ int config_parse_dhcp_mud_url(
|
||||||
return free_and_strdup_warn(&network->dhcp_mudurl, unescaped);
|
return free_and_strdup_warn(&network->dhcp_mudurl, unescaped);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int config_parse_dhcp_fallback_lease_lifetime(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;
|
||||||
|
unsigned k;
|
||||||
|
|
||||||
|
assert(filename);
|
||||||
|
assert(section);
|
||||||
|
assert(lvalue);
|
||||||
|
assert(rvalue);
|
||||||
|
assert(data);
|
||||||
|
|
||||||
|
if (isempty(rvalue)) {
|
||||||
|
network->dhcp_fallback_lease_lifetime = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We accept only "forever" or "infinity". */
|
||||||
|
if (STR_IN_SET(rvalue, "forever", "infinity"))
|
||||||
|
k = CACHE_INFO_INFINITY_LIFE_TIME;
|
||||||
|
else {
|
||||||
|
log_syntax(unit, LOG_ERR, filename, line, 0,
|
||||||
|
"Invalid LeaseLifetime= value, ignoring: %s", rvalue);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
network->dhcp_fallback_lease_lifetime = k;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* const dhcp_client_identifier_table[_DHCP_CLIENT_ID_MAX] = {
|
static const char* const dhcp_client_identifier_table[_DHCP_CLIENT_ID_MAX] = {
|
||||||
[DHCP_CLIENT_ID_MAC] = "mac",
|
[DHCP_CLIENT_ID_MAC] = "mac",
|
||||||
[DHCP_CLIENT_ID_DUID] = "duid",
|
[DHCP_CLIENT_ID_DUID] = "duid",
|
||||||
|
|
|
@ -27,3 +27,4 @@ CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_black_listed_ip_address);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_max_attempts);
|
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_max_attempts);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_ip_service_type);
|
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_ip_service_type);
|
||||||
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_mud_url);
|
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_mud_url);
|
||||||
|
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_fallback_lease_lifetime);
|
||||||
|
|
|
@ -189,6 +189,7 @@ DHCPv4.IPServiceType, config_parse_dhcp_ip_service_type,
|
||||||
DHCPv4.SendOption, config_parse_dhcp_send_option, AF_INET, offsetof(Network, dhcp_client_send_options)
|
DHCPv4.SendOption, config_parse_dhcp_send_option, AF_INET, offsetof(Network, dhcp_client_send_options)
|
||||||
DHCPv4.SendVendorOption, config_parse_dhcp_send_option, 0, offsetof(Network, dhcp_client_send_vendor_options)
|
DHCPv4.SendVendorOption, config_parse_dhcp_send_option, 0, offsetof(Network, dhcp_client_send_vendor_options)
|
||||||
DHCPv4.RouteMTUBytes, config_parse_mtu, AF_INET, offsetof(Network, dhcp_route_mtu)
|
DHCPv4.RouteMTUBytes, config_parse_mtu, AF_INET, offsetof(Network, dhcp_route_mtu)
|
||||||
|
DHCPv4.FallbackLeaseLifetimeSec, config_parse_dhcp_fallback_lease_lifetime, 0, 0
|
||||||
DHCPv6.UseDNS, config_parse_bool, 0, offsetof(Network, dhcp6_use_dns)
|
DHCPv6.UseDNS, config_parse_bool, 0, offsetof(Network, dhcp6_use_dns)
|
||||||
DHCPv6.UseNTP, config_parse_bool, 0, offsetof(Network, dhcp6_use_ntp)
|
DHCPv6.UseNTP, config_parse_bool, 0, offsetof(Network, dhcp6_use_ntp)
|
||||||
DHCPv6.RapidCommit, config_parse_bool, 0, offsetof(Network, rapid_commit)
|
DHCPv6.RapidCommit, config_parse_bool, 0, offsetof(Network, rapid_commit)
|
||||||
|
|
|
@ -97,6 +97,7 @@ struct Network {
|
||||||
uint64_t dhcp_max_attempts;
|
uint64_t dhcp_max_attempts;
|
||||||
unsigned dhcp_route_metric;
|
unsigned dhcp_route_metric;
|
||||||
uint32_t dhcp_route_table;
|
uint32_t dhcp_route_table;
|
||||||
|
uint32_t dhcp_fallback_lease_lifetime;
|
||||||
uint32_t dhcp_route_mtu;
|
uint32_t dhcp_route_mtu;
|
||||||
uint16_t dhcp_client_port;
|
uint16_t dhcp_client_port;
|
||||||
int dhcp_critical;
|
int dhcp_critical;
|
||||||
|
|
|
@ -105,6 +105,7 @@ SendVendorOption=
|
||||||
SendDecline=
|
SendDecline=
|
||||||
MUDURL=
|
MUDURL=
|
||||||
RouteMTUBytes=
|
RouteMTUBytes=
|
||||||
|
FallbackLeaseLifetimeSec=
|
||||||
[DHCPv6]
|
[DHCPv6]
|
||||||
UseNTP=
|
UseNTP=
|
||||||
UseDNS=
|
UseDNS=
|
||||||
|
|
Loading…
Reference in New Issue