mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-25 06:03:40 +03:00
network: Fix split in SendOption=
on client and server
When specifying `DHCPv4.SendOption=`, it is used by systemd-networkd to set the value of that option within the DHCP request that is sent out. This differs to setting `DHCPServer.SendOption=`, which will place all the options together as suboptions into the vendor-specific information (code 43) option. This commit adds two new config options, `DHCPv4.SendVendorOption=` and `DHCPServer.SendVendorOption=`. These both have the behaviour of the old `DHCPServer.SendOption=` flag, and set the value of the suboption in the vendor-specific information option. The behaviour of `DHCPServer.SendOption=` is then changed to reflect that of `DHCPv4.SendOption=`. It will set the value of the corresponding option in the DHCP request.
This commit is contained in:
parent
d69b62de44
commit
7354900ddd
@ -1635,7 +1635,22 @@
|
|||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><varname>SendOption=</varname></term>
|
<term><varname>SendOption=</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Send an arbitrary option in the DHCPv4 request. Takes a DHCP option number, data type
|
<para>Send an arbitrary raw option in the DHCPv4 request. Takes a DHCP option number, data type
|
||||||
|
and data separated with a colon
|
||||||
|
(<literal><replaceable>option</replaceable>:<replaceable>type</replaceable>:<replaceable>value</replaceable></literal>).
|
||||||
|
The option number must be an integer in the range 1..254. The type takes one of <literal>uint8</literal>,
|
||||||
|
<literal>uint16</literal>, <literal>uint32</literal>, <literal>ipv4address</literal>, or
|
||||||
|
<literal>string</literal>. Special characters in the data string may be escaped using
|
||||||
|
<ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
|
||||||
|
escapes</ulink>. This setting can be specified multiple times. If an empty string is specified,
|
||||||
|
then all options specified earlier are cleared. Defaults to unset.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>SendVendorOption=</varname></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Send an arbitrary vendor option in the DHCPv4 request. Takes a DHCP option number, data type
|
||||||
and data separated with a colon
|
and data separated with a colon
|
||||||
(<literal><replaceable>option</replaceable>:<replaceable>type</replaceable>:<replaceable>value</replaceable></literal>).
|
(<literal><replaceable>option</replaceable>:<replaceable>type</replaceable>:<replaceable>value</replaceable></literal>).
|
||||||
The option number must be an integer in the range 1..254. The type takes one of <literal>uint8</literal>,
|
The option number must be an integer in the range 1..254. The type takes one of <literal>uint8</literal>,
|
||||||
@ -1926,6 +1941,20 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><varname>SendVendorOption=</varname></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Send a vendor option with value via DHCPv4 server. Takes a DHCP option number, data type
|
||||||
|
and data (<literal><replaceable>option</replaceable>:<replaceable>type</replaceable>:<replaceable>value</replaceable></literal>).
|
||||||
|
The option number is an integer in the range 1..254. The type takes one of <literal>uint8</literal>,
|
||||||
|
<literal>uint16</literal>, <literal>uint32</literal>, <literal>ipv4address</literal>, or
|
||||||
|
<literal>string</literal>. Special characters in the data string may be escaped using
|
||||||
|
<ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
|
||||||
|
escapes</ulink>. This setting can be specified multiple times. If an empty string is specified,
|
||||||
|
then all options specified earlier are cleared. Defaults to unset.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
|
@ -58,7 +58,8 @@ struct sd_dhcp_server {
|
|||||||
struct in_addr *ntp, *dns, *sip;
|
struct in_addr *ntp, *dns, *sip;
|
||||||
unsigned n_ntp, n_dns, n_sip;
|
unsigned n_ntp, n_dns, n_sip;
|
||||||
|
|
||||||
OrderedHashmap *raw_option;
|
OrderedHashmap *extra_options;
|
||||||
|
OrderedHashmap *vendor_options;
|
||||||
|
|
||||||
bool emit_router;
|
bool emit_router;
|
||||||
|
|
||||||
|
@ -89,7 +89,8 @@ struct sd_dhcp_client {
|
|||||||
usec_t start_time;
|
usec_t start_time;
|
||||||
uint64_t attempt;
|
uint64_t attempt;
|
||||||
uint64_t max_attempts;
|
uint64_t max_attempts;
|
||||||
OrderedHashmap *options;
|
OrderedHashmap *extra_options;
|
||||||
|
OrderedHashmap *vendor_options;
|
||||||
usec_t request_sent;
|
usec_t request_sent;
|
||||||
sd_event_source *timeout_t1;
|
sd_event_source *timeout_t1;
|
||||||
sd_event_source *timeout_t2;
|
sd_event_source *timeout_t2;
|
||||||
@ -540,17 +541,17 @@ int sd_dhcp_client_set_max_attempts(sd_dhcp_client *client, uint64_t max_attempt
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sd_dhcp_client_set_dhcp_option(sd_dhcp_client *client, sd_dhcp_option *v) {
|
int sd_dhcp_client_add_option(sd_dhcp_client *client, sd_dhcp_option *v) {
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
assert_return(client, -EINVAL);
|
assert_return(client, -EINVAL);
|
||||||
assert_return(v, -EINVAL);
|
assert_return(v, -EINVAL);
|
||||||
|
|
||||||
r = ordered_hashmap_ensure_allocated(&client->options, &dhcp_option_hash_ops);
|
r = ordered_hashmap_ensure_allocated(&client->extra_options, &dhcp_option_hash_ops);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
r = ordered_hashmap_put(client->options, UINT_TO_PTR(v->option), v);
|
r = ordered_hashmap_put(client->extra_options, UINT_TO_PTR(v->option), v);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
@ -558,6 +559,25 @@ int sd_dhcp_client_set_dhcp_option(sd_dhcp_client *client, sd_dhcp_option *v) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sd_dhcp_client_add_vendor_option(sd_dhcp_client *client, sd_dhcp_option *v) {
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert_return(client, -EINVAL);
|
||||||
|
assert_return(v, -EINVAL);
|
||||||
|
|
||||||
|
r = ordered_hashmap_ensure_allocated(&client->vendor_options, &dhcp_option_hash_ops);
|
||||||
|
if (r < 0)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
r = ordered_hashmap_put(client->vendor_options, v, v);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
sd_dhcp_option_ref(v);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int sd_dhcp_client_get_lease(sd_dhcp_client *client, sd_dhcp_lease **ret) {
|
int sd_dhcp_client_get_lease(sd_dhcp_client *client, sd_dhcp_lease **ret) {
|
||||||
assert_return(client, -EINVAL);
|
assert_return(client, -EINVAL);
|
||||||
|
|
||||||
@ -884,13 +904,22 @@ static int client_send_discover(sd_dhcp_client *client) {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
ORDERED_HASHMAP_FOREACH(j, client->options, i) {
|
ORDERED_HASHMAP_FOREACH(j, client->extra_options, i) {
|
||||||
r = dhcp_option_append(&discover->dhcp, optlen, &optoffset, 0,
|
r = dhcp_option_append(&discover->dhcp, optlen, &optoffset, 0,
|
||||||
j->option, j->length, j->data);
|
j->option, j->length, j->data);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ordered_hashmap_isempty(client->vendor_options)) {
|
||||||
|
r = dhcp_option_append(
|
||||||
|
&discover->dhcp, optlen, &optoffset, 0,
|
||||||
|
SD_DHCP_OPTION_VENDOR_SPECIFIC,
|
||||||
|
ordered_hashmap_size(client->vendor_options), client->vendor_options);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
r = dhcp_option_append(&discover->dhcp, optlen, &optoffset, 0,
|
r = dhcp_option_append(&discover->dhcp, optlen, &optoffset, 0,
|
||||||
SD_DHCP_OPTION_END, 0, NULL);
|
SD_DHCP_OPTION_END, 0, NULL);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
@ -2073,7 +2102,8 @@ static sd_dhcp_client *dhcp_client_free(sd_dhcp_client *client) {
|
|||||||
free(client->hostname);
|
free(client->hostname);
|
||||||
free(client->vendor_class_identifier);
|
free(client->vendor_class_identifier);
|
||||||
client->user_class = strv_free(client->user_class);
|
client->user_class = strv_free(client->user_class);
|
||||||
ordered_hashmap_free(client->options);
|
ordered_hashmap_free(client->extra_options);
|
||||||
|
ordered_hashmap_free(client->vendor_options);
|
||||||
return mfree(client);
|
return mfree(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +143,8 @@ static sd_dhcp_server *dhcp_server_free(sd_dhcp_server *server) {
|
|||||||
|
|
||||||
hashmap_free(server->leases_by_client_id);
|
hashmap_free(server->leases_by_client_id);
|
||||||
|
|
||||||
ordered_hashmap_free(server->raw_option);
|
ordered_hashmap_free(server->extra_options);
|
||||||
|
ordered_hashmap_free(server->vendor_options);
|
||||||
|
|
||||||
free(server->bound_leases);
|
free(server->bound_leases);
|
||||||
return mfree(server);
|
return mfree(server);
|
||||||
@ -455,6 +456,8 @@ static int server_send_ack(sd_dhcp_server *server, DHCPRequest *req,
|
|||||||
be32_t address) {
|
be32_t address) {
|
||||||
_cleanup_free_ DHCPPacket *packet = NULL;
|
_cleanup_free_ DHCPPacket *packet = NULL;
|
||||||
be32_t lease_time;
|
be32_t lease_time;
|
||||||
|
sd_dhcp_option *j;
|
||||||
|
Iterator i;
|
||||||
size_t offset;
|
size_t offset;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -519,11 +522,18 @@ static int server_send_ack(sd_dhcp_server *server, DHCPRequest *req,
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ordered_hashmap_isempty(server->raw_option)) {
|
ORDERED_HASHMAP_FOREACH(j, server->extra_options, i) {
|
||||||
|
r = dhcp_option_append(&packet->dhcp, req->max_optlen, &offset, 0,
|
||||||
|
j->option, j->length, j->data);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ordered_hashmap_isempty(server->vendor_options)) {
|
||||||
r = dhcp_option_append(
|
r = dhcp_option_append(
|
||||||
&packet->dhcp, req->max_optlen, &offset, 0,
|
&packet->dhcp, req->max_optlen, &offset, 0,
|
||||||
SD_DHCP_OPTION_VENDOR_SPECIFIC,
|
SD_DHCP_OPTION_VENDOR_SPECIFIC,
|
||||||
ordered_hashmap_size(server->raw_option), server->raw_option);
|
ordered_hashmap_size(server->vendor_options), server->vendor_options);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
@ -1188,11 +1198,29 @@ int sd_dhcp_server_add_option(sd_dhcp_server *server, sd_dhcp_option *v) {
|
|||||||
assert_return(server, -EINVAL);
|
assert_return(server, -EINVAL);
|
||||||
assert_return(v, -EINVAL);
|
assert_return(v, -EINVAL);
|
||||||
|
|
||||||
r = ordered_hashmap_ensure_allocated(&server->raw_option, &dhcp_option_hash_ops);
|
r = ordered_hashmap_ensure_allocated(&server->extra_options, &dhcp_option_hash_ops);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
r = ordered_hashmap_put(server->extra_options, UINT_TO_PTR(v->option), v);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
sd_dhcp_option_ref(v);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sd_dhcp_server_add_vendor_option(sd_dhcp_server *server, sd_dhcp_option *v) {
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert_return(server, -EINVAL);
|
||||||
|
assert_return(v, -EINVAL);
|
||||||
|
|
||||||
|
r = ordered_hashmap_ensure_allocated(&server->vendor_options, &dhcp_option_hash_ops);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
r = ordered_hashmap_put(server->raw_option, v, v);
|
r = ordered_hashmap_put(server->vendor_options, v, v);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
@ -312,6 +312,14 @@ int dhcp4_server_configure(Link *link) {
|
|||||||
return log_link_error_errno(link, r, "Failed to set DHCPv4 option: %m");
|
return log_link_error_errno(link, r, "Failed to set DHCPv4 option: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ORDERED_HASHMAP_FOREACH(p, link->network->dhcp_server_send_vendor_options, i) {
|
||||||
|
r = sd_dhcp_server_add_vendor_option(link->dhcp_server, p);
|
||||||
|
if (r == -EEXIST)
|
||||||
|
continue;
|
||||||
|
if (r < 0)
|
||||||
|
return log_link_error_errno(link, r, "Failed to set DHCPv4 option: %m");
|
||||||
|
}
|
||||||
|
|
||||||
if (!sd_dhcp_server_is_running(link->dhcp_server)) {
|
if (!sd_dhcp_server_is_running(link->dhcp_server)) {
|
||||||
r = sd_dhcp_server_start(link->dhcp_server);
|
r = sd_dhcp_server_start(link->dhcp_server);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
@ -1430,7 +1430,17 @@ int dhcp4_configure(Link *link) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ORDERED_HASHMAP_FOREACH(send_option, link->network->dhcp_client_send_options, i) {
|
ORDERED_HASHMAP_FOREACH(send_option, link->network->dhcp_client_send_options, i) {
|
||||||
r = sd_dhcp_client_set_dhcp_option(link->dhcp_client, send_option);
|
r = sd_dhcp_client_add_option(link->dhcp_client, send_option);
|
||||||
|
if (r == -EEXIST)
|
||||||
|
continue;
|
||||||
|
if (r < 0)
|
||||||
|
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set send option: %m");
|
||||||
|
}
|
||||||
|
|
||||||
|
ORDERED_HASHMAP_FOREACH(send_option, link->network->dhcp_client_send_vendor_options, i) {
|
||||||
|
r = sd_dhcp_client_add_vendor_option(link->dhcp_client, send_option);
|
||||||
|
if (r == -EEXIST)
|
||||||
|
continue;
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set send option: %m");
|
return log_link_error_errno(link, r, "DHCP4 CLIENT: Failed to set send option: %m");
|
||||||
}
|
}
|
||||||
|
@ -184,6 +184,7 @@ DHCPv4.SendDecline, config_parse_bool,
|
|||||||
DHCPv4.BlackList, config_parse_dhcp_black_listed_ip_address, 0, 0
|
DHCPv4.BlackList, config_parse_dhcp_black_listed_ip_address, 0, 0
|
||||||
DHCPv4.IPServiceType, config_parse_dhcp_ip_service_type, 0, offsetof(Network, ip_service_type)
|
DHCPv4.IPServiceType, config_parse_dhcp_ip_service_type, 0, offsetof(Network, ip_service_type)
|
||||||
DHCPv4.SendOption, config_parse_dhcp_send_option, 0, offsetof(Network, dhcp_client_send_options)
|
DHCPv4.SendOption, config_parse_dhcp_send_option, 0, offsetof(Network, dhcp_client_send_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)
|
||||||
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)
|
||||||
@ -211,6 +212,7 @@ DHCPServer.EmitTimezone, config_parse_bool,
|
|||||||
DHCPServer.Timezone, config_parse_timezone, 0, offsetof(Network, dhcp_server_timezone)
|
DHCPServer.Timezone, config_parse_timezone, 0, offsetof(Network, dhcp_server_timezone)
|
||||||
DHCPServer.PoolOffset, config_parse_uint32, 0, offsetof(Network, dhcp_server_pool_offset)
|
DHCPServer.PoolOffset, config_parse_uint32, 0, offsetof(Network, dhcp_server_pool_offset)
|
||||||
DHCPServer.PoolSize, config_parse_uint32, 0, offsetof(Network, dhcp_server_pool_size)
|
DHCPServer.PoolSize, config_parse_uint32, 0, offsetof(Network, dhcp_server_pool_size)
|
||||||
|
DHCPServer.SendVendorOption, config_parse_dhcp_send_option, 0, offsetof(Network, dhcp_server_send_vendor_options)
|
||||||
DHCPServer.SendOption, config_parse_dhcp_send_option, 0, offsetof(Network, dhcp_server_send_options)
|
DHCPServer.SendOption, config_parse_dhcp_send_option, 0, offsetof(Network, dhcp_server_send_options)
|
||||||
Bridge.Cost, config_parse_uint32, 0, offsetof(Network, cost)
|
Bridge.Cost, config_parse_uint32, 0, offsetof(Network, cost)
|
||||||
Bridge.UseBPDU, config_parse_tristate, 0, offsetof(Network, use_bpdu)
|
Bridge.UseBPDU, config_parse_tristate, 0, offsetof(Network, use_bpdu)
|
||||||
|
@ -723,7 +723,9 @@ static Network *network_free(Network *network) {
|
|||||||
set_free_free(network->dnssec_negative_trust_anchors);
|
set_free_free(network->dnssec_negative_trust_anchors);
|
||||||
|
|
||||||
ordered_hashmap_free(network->dhcp_client_send_options);
|
ordered_hashmap_free(network->dhcp_client_send_options);
|
||||||
|
ordered_hashmap_free(network->dhcp_client_send_vendor_options);
|
||||||
ordered_hashmap_free(network->dhcp_server_send_options);
|
ordered_hashmap_free(network->dhcp_server_send_options);
|
||||||
|
ordered_hashmap_free(network->dhcp_server_send_vendor_options);
|
||||||
ordered_hashmap_free(network->ipv6_tokens);
|
ordered_hashmap_free(network->ipv6_tokens);
|
||||||
|
|
||||||
return mfree(network);
|
return mfree(network);
|
||||||
|
@ -121,7 +121,9 @@ struct Network {
|
|||||||
Set *dhcp_black_listed_ip;
|
Set *dhcp_black_listed_ip;
|
||||||
Set *dhcp_request_options;
|
Set *dhcp_request_options;
|
||||||
OrderedHashmap *dhcp_client_send_options;
|
OrderedHashmap *dhcp_client_send_options;
|
||||||
|
OrderedHashmap *dhcp_client_send_vendor_options;
|
||||||
OrderedHashmap *dhcp_server_send_options;
|
OrderedHashmap *dhcp_server_send_options;
|
||||||
|
OrderedHashmap *dhcp_server_send_vendor_options;
|
||||||
|
|
||||||
/* DHCPv6 Client support*/
|
/* DHCPv6 Client support*/
|
||||||
bool dhcp6_use_dns;
|
bool dhcp6_use_dns;
|
||||||
|
@ -179,7 +179,8 @@ int sd_dhcp_client_set_service_type(
|
|||||||
sd_dhcp_client *client,
|
sd_dhcp_client *client,
|
||||||
int type);
|
int type);
|
||||||
|
|
||||||
int sd_dhcp_client_set_dhcp_option(sd_dhcp_client *client, sd_dhcp_option *v);
|
int sd_dhcp_client_add_option(sd_dhcp_client *client, sd_dhcp_option *v);
|
||||||
|
int sd_dhcp_client_add_vendor_option(sd_dhcp_client *client, sd_dhcp_option *v);
|
||||||
|
|
||||||
int sd_dhcp_client_stop(sd_dhcp_client *client);
|
int sd_dhcp_client_stop(sd_dhcp_client *client);
|
||||||
int sd_dhcp_client_start(sd_dhcp_client *client);
|
int sd_dhcp_client_start(sd_dhcp_client *client);
|
||||||
|
@ -53,6 +53,7 @@ int sd_dhcp_server_set_sip(sd_dhcp_server *server, const struct in_addr sip[], u
|
|||||||
int sd_dhcp_server_set_emit_router(sd_dhcp_server *server, int enabled);
|
int sd_dhcp_server_set_emit_router(sd_dhcp_server *server, int enabled);
|
||||||
|
|
||||||
int sd_dhcp_server_add_option(sd_dhcp_server *server, sd_dhcp_option *v);
|
int sd_dhcp_server_add_option(sd_dhcp_server *server, sd_dhcp_option *v);
|
||||||
|
int sd_dhcp_server_add_vendor_option(sd_dhcp_server *server, sd_dhcp_option *v);
|
||||||
|
|
||||||
int sd_dhcp_server_set_max_lease_time(sd_dhcp_server *server, uint32_t t);
|
int sd_dhcp_server_set_max_lease_time(sd_dhcp_server *server, uint32_t t);
|
||||||
int sd_dhcp_server_set_default_lease_time(sd_dhcp_server *server, uint32_t t);
|
int sd_dhcp_server_set_default_lease_time(sd_dhcp_server *server, uint32_t t);
|
||||||
|
@ -100,6 +100,7 @@ SendRelease=
|
|||||||
MaxAttempts=
|
MaxAttempts=
|
||||||
IPServiceType=
|
IPServiceType=
|
||||||
SendOption=
|
SendOption=
|
||||||
|
SendVendorOption=
|
||||||
SendDecline=
|
SendDecline=
|
||||||
RouteMTUBytes=
|
RouteMTUBytes=
|
||||||
[DHCPv6]
|
[DHCPv6]
|
||||||
@ -273,6 +274,7 @@ DefaultLeaseTimeSec=
|
|||||||
EmitTimezone=
|
EmitTimezone=
|
||||||
DNS=
|
DNS=
|
||||||
SendOption=
|
SendOption=
|
||||||
|
SendVendorOption=
|
||||||
[NextHop]
|
[NextHop]
|
||||||
Id=
|
Id=
|
||||||
Gateway=
|
Gateway=
|
||||||
|
Loading…
x
Reference in New Issue
Block a user