refuse to issue an DHCP lease if 'secs' is set to zero */
packet->dhcp.secs = htobe16(client->secs);
+ /* RFC2132 section 4.1
+ A client that cannot receive unicast IP datagrams until its protocol
+ software has been configured with an IP address SHOULD set the
+ BROADCAST bit in the 'flags' field to 1 in any DHCPDISCOVER or
+ DHCPREQUEST messages that client sends. The BROADCAST bit will
+ provide a hint to the DHCP server and BOOTP relay agent to broadcast
+ any messages to the client on the client's subnet. */
+ packet->dhcp.flags = htobe16(0x8000);
+
/* RFC2132 section 4.1.1:
The client MUST include its hardware address in the ’chaddr’ field, if
necessary for delivery of DHCP reply messages.
r = dhcp_option_append(&discover->dhcp, optlen, &optoffset, 0,
DHCP_OPTION_END, 0, NULL);
+ if (r < 0)
+ return r;
/* We currently ignore:
The client SHOULD wait a random time between one and ten seconds to
}
static int client_send_request(sd_dhcp_client *client) {
- _cleanup_free_ DHCPPacket *request;
+ _cleanup_free_ DHCPPacket *request = NULL;
size_t optoffset, optlen;
int r;