1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-19 22:50:17 +03:00

sd-dhcp: minimum options size is part of the protocol

This commit is contained in:
Tom Gundersen 2014-02-14 11:58:41 +01:00
parent e500270271
commit 0bfedf143c
2 changed files with 6 additions and 7 deletions

View File

@ -58,6 +58,7 @@ typedef struct DHCPPacket DHCPPacket;
#define DHCP_IP_SIZE (int32_t)(sizeof(struct iphdr))
#define DHCP_IP_UDP_SIZE (int32_t)(sizeof(struct udphdr) + DHCP_IP_SIZE)
#define DHCP_MESSAGE_SIZE (int32_t)(sizeof(DHCPMessage))
#define DHCP_MIN_OPTIONS_SIZE 312
enum {
DHCP_PORT_SERVER = 67,

View File

@ -32,8 +32,6 @@
#include "dhcp-internal.h"
#include "sd-dhcp-client.h"
#define DHCP_CLIENT_MIN_OPTIONS_SIZE 312
struct sd_dhcp_client {
DHCPState state;
sd_event *event;
@ -237,7 +235,7 @@ static int client_message_init(sd_dhcp_client *client, DHCPMessage *message,
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);
DHCP_MIN_OPTIONS_SIZE);
r = dhcp_option_append(opt, optlen,
DHCP_OPTION_MAXIMUM_MESSAGE_SIZE,
2, &max_size);
@ -254,7 +252,7 @@ static int client_send_discover(sd_dhcp_client *client, uint16_t secs) {
size_t optlen, len;
uint8_t *opt;
optlen = DHCP_CLIENT_MIN_OPTIONS_SIZE;
optlen = DHCP_MIN_OPTIONS_SIZE;
len = sizeof(DHCPPacket) + optlen;
discover = malloc0(len);
@ -293,7 +291,7 @@ static int client_send_request(sd_dhcp_client *client, uint16_t secs) {
int err;
uint8_t *opt;
optlen = DHCP_CLIENT_MIN_OPTIONS_SIZE;
optlen = DHCP_MIN_OPTIONS_SIZE;
len = DHCP_MESSAGE_SIZE + optlen;
request = malloc0(len);
@ -801,7 +799,7 @@ error:
static int client_receive_message_raw(sd_event_source *s, int fd,
uint32_t revents, void *userdata) {
sd_dhcp_client *client = userdata;
uint8_t buf[sizeof(DHCPMessage) + DHCP_CLIENT_MIN_OPTIONS_SIZE];
uint8_t buf[sizeof(DHCPMessage) + DHCP_MIN_OPTIONS_SIZE];
int buflen = sizeof(buf);
int len, r = 0;
usec_t time_now;
@ -825,7 +823,7 @@ static int client_receive_message_raw(sd_event_source *s, int fd,
static int client_receive_message_udp(sd_event_source *s, int fd,
uint32_t revents, void *userdata) {
sd_dhcp_client *client = userdata;
uint8_t buf[sizeof(DHCPPacket) + DHCP_CLIENT_MIN_OPTIONS_SIZE];
uint8_t buf[sizeof(DHCPPacket) + DHCP_MIN_OPTIONS_SIZE];
int buflen = sizeof(buf);
int len, r = 0;
DHCPPacket *packet;