diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libsystemd-network/dhcp-network.c | 5 | ||||
-rw-r--r-- | src/libsystemd-network/dhcp-packet.c | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/libsystemd-network/dhcp-network.c b/src/libsystemd-network/dhcp-network.c index 722f1b18b3..2a63f1850e 100644 --- a/src/libsystemd-network/dhcp-network.c +++ b/src/libsystemd-network/dhcp-network.c @@ -98,7 +98,7 @@ int dhcp_network_bind_raw_socket(int index, union sockaddr_union *link, uint32_t int dhcp_network_bind_udp_socket(be32_t address, uint16_t port) { - int s; + int s, tos = IPTOS_CLASS_CS6; union sockaddr_union src = { .in.sin_family = AF_INET, .in.sin_port = htobe16(port), @@ -109,6 +109,9 @@ int dhcp_network_bind_udp_socket(be32_t address, uint16_t port) if (s < 0) return -errno; + if (setsockopt(s, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) < 0) + return -errno; + if (bind(s, &src.sa, sizeof(src.in)) < 0) { safe_close(s); return -errno; diff --git a/src/libsystemd-network/dhcp-packet.c b/src/libsystemd-network/dhcp-packet.c index b012e63d1f..d72d7a686d 100644 --- a/src/libsystemd-network/dhcp-packet.c +++ b/src/libsystemd-network/dhcp-packet.c @@ -116,6 +116,8 @@ void dhcp_packet_append_ip_headers(DHCPPacket *packet, be32_t source_addr, packet->ip.ihl = DHCP_IP_SIZE / 4; packet->ip.tot_len = htobe16(len); + packet->ip.tos = IPTOS_CLASS_CS6; + packet->ip.protocol = IPPROTO_UDP; packet->ip.saddr = source_addr; packet->ip.daddr = destination_addr; |