sd-dhcp-client: set TOS and socket priority by default
Also this renames sd_dhcp_client_set_service_type() to _set_ip_service_type().
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include <linux/if_arp.h>
|
||||
#include <linux/pkt_sched.h>
|
||||
#include <linux/rtnetlink.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/ip.h>
|
||||
@@ -1670,12 +1671,13 @@ static int dhcp4_configure(Link *link) {
|
||||
}
|
||||
|
||||
if (link->network->dhcp_ip_service_type >= 0) {
|
||||
r = sd_dhcp_client_set_service_type(link->dhcp_client, link->network->dhcp_ip_service_type);
|
||||
assert(link->network->dhcp_ip_service_type <= UINT8_MAX);
|
||||
r = sd_dhcp_client_set_ip_service_type(link->dhcp_client, link->network->dhcp_ip_service_type);
|
||||
if (r < 0)
|
||||
return log_link_debug_errno(link, r, "DHCPv4 CLIENT: Failed to set IP service type: %m");
|
||||
}
|
||||
|
||||
if (link->network->dhcp_socket_priority_set) {
|
||||
if (link->network->dhcp_socket_priority >= 0) {
|
||||
r = sd_dhcp_client_set_socket_priority(link->dhcp_client, link->network->dhcp_socket_priority);
|
||||
if (r < 0)
|
||||
return log_link_debug_errno(link, r, "DHCPv4 CLIENT: Failed to set socket priority: %m");
|
||||
@@ -2005,14 +2007,13 @@ int config_parse_dhcp_socket_priority(
|
||||
void *data,
|
||||
void *userdata) {
|
||||
|
||||
Network *network = ASSERT_PTR(data);
|
||||
int a, r;
|
||||
int r, a, *priority = ASSERT_PTR(data);
|
||||
|
||||
assert(lvalue);
|
||||
assert(rvalue);
|
||||
|
||||
if (isempty(rvalue)) {
|
||||
network->dhcp_socket_priority_set = false;
|
||||
*priority = -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2022,10 +2023,13 @@ int config_parse_dhcp_socket_priority(
|
||||
"Failed to parse socket priority, ignoring: %s", rvalue);
|
||||
return 0;
|
||||
}
|
||||
if (a < 0 || a > TC_PRIO_MAX) {
|
||||
log_syntax(unit, LOG_WARNING, filename, line, 0,
|
||||
"Invalid socket priority, must be in 0…%i, ignoring: %i", TC_PRIO_MAX, a);
|
||||
return 0;
|
||||
}
|
||||
|
||||
network->dhcp_socket_priority_set = true;
|
||||
network->dhcp_socket_priority = a;
|
||||
|
||||
*priority = a;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -292,7 +292,7 @@ DHCPv4.SendDecline, config_parse_bool,
|
||||
DHCPv4.DenyList, config_parse_in_addr_prefixes, AF_INET, offsetof(Network, dhcp_deny_listed_ip)
|
||||
DHCPv4.AllowList, config_parse_in_addr_prefixes, AF_INET, offsetof(Network, dhcp_allow_listed_ip)
|
||||
DHCPv4.IPServiceType, config_parse_dhcp_ip_service_type, 0, offsetof(Network, dhcp_ip_service_type)
|
||||
DHCPv4.SocketPriority, config_parse_dhcp_socket_priority, 0, 0
|
||||
DHCPv4.SocketPriority, config_parse_dhcp_socket_priority, 0, offsetof(Network, dhcp_socket_priority)
|
||||
DHCPv4.SendOption, config_parse_dhcp_option_tlv, 0, offsetof(Network, dhcp_extra_options)
|
||||
DHCPv4.SendVendorOption, config_parse_dhcp_option_tlv, 0, offsetof(Network, dhcp_vendor_options)
|
||||
DHCPv4.RouteMTUBytes, config_parse_mtu, AF_INET, offsetof(Network, dhcp_route_mtu)
|
||||
|
||||
@@ -404,6 +404,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
|
||||
.dhcp_client_identifier = _DHCP_CLIENT_ID_INVALID,
|
||||
.dhcp_route_table = RT_TABLE_MAIN,
|
||||
.dhcp_ip_service_type = -1,
|
||||
.dhcp_socket_priority = -1,
|
||||
.dhcp_broadcast = -1,
|
||||
.dhcp_ipv6_only_mode = -1,
|
||||
.dhcp_6rd_prefix_route_type = RTN_UNREACHABLE,
|
||||
|
||||
@@ -140,7 +140,6 @@ typedef struct Network {
|
||||
int dhcp_critical;
|
||||
int dhcp_ip_service_type;
|
||||
int dhcp_socket_priority;
|
||||
bool dhcp_socket_priority_set;
|
||||
bool dhcp_anonymize;
|
||||
bool dhcp_send_hostname;
|
||||
bool dhcp_send_hostname_set;
|
||||
|
||||
Reference in New Issue
Block a user