mirror of
https://github.com/systemd/systemd.git
synced 2026-08-04 15:10:33 +00:00
dhcp: Add maximum message size option
Add maximum message size option to keep some DHCP server implementations from sending too big messages. See ConnMan commit 0c5c862749c05193cf4c513628328c6db02b5222.
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
e2dfc79f06
commit
564ba3b0ef
@@ -186,6 +186,7 @@ static int client_packet_init(sd_dhcp_client *client, uint8_t type,
|
||||
uint8_t **opt, size_t *optlen)
|
||||
{
|
||||
int err;
|
||||
be16_t max_size;
|
||||
|
||||
*opt = (uint8_t *)(message + 1);
|
||||
|
||||
@@ -229,6 +230,17 @@ static int client_packet_init(sd_dhcp_client *client, uint8_t type,
|
||||
client->req_opts);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
/* Some DHCP servers will send bigger DHCP packets than the
|
||||
defined default size unless the Maximum Messge Size option
|
||||
is explicitely set */
|
||||
max_size = htobe16(DHCP_IP_UDP_SIZE + DHCP_MESSAGE_SIZE +
|
||||
DHCP_CLIENT_MIN_OPTIONS_SIZE);
|
||||
err = dhcp_option_append(opt, optlen,
|
||||
DHCP_OPTION_MAXIMUM_MESSAGE_SIZE,
|
||||
2, &max_size);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -111,6 +111,7 @@ enum {
|
||||
DHCP_OPTION_MESSAGE_TYPE = 53,
|
||||
DHCP_OPTION_SERVER_IDENTIFIER = 54,
|
||||
DHCP_OPTION_PARAMETER_REQUEST_LIST = 55,
|
||||
DHCP_OPTION_MAXIMUM_MESSAGE_SIZE = 57,
|
||||
DHCP_OPTION_CLIENT_IDENTIFIER = 61,
|
||||
DHCP_OPTION_END = 255,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user