[klibc] [PATCH klibc 3/4] ipconfig: Set broadcast when sending DHCPREQUEST and DHCPDISCOVER

Ben Hutchings ben at decadent.org.uk
Sun Dec 31 08:07:27 PST 2017


From: Mathieu Trudel-Lapierre <mathieu.trudel-lapierre at canonical.com>

We need to do this, since our devices are probably not configured yet and
there may be more than one device we're trying to do DHCP on on the same
network. Otherwise, things might be dropped.

Patch is originally from here:
https://bugs.launchpad.net/ubuntu/+source/klibc/+bug/1327412/comments/5
... but the reporter "patpat" has not provided contact information, and
this is independently verifiable by looking at RFC 2131, section 4.1,
page 24.

References: https://bugs.debian.org/733988
References: https://bugs.launchpad.net/bugs/1327412
Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
---
 usr/kinit/ipconfig/dhcp_proto.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/usr/kinit/ipconfig/dhcp_proto.c b/usr/kinit/ipconfig/dhcp_proto.c
index ebf79cc0b5f7..d5b759bbc16b 100644
--- a/usr/kinit/ipconfig/dhcp_proto.c
+++ b/usr/kinit/ipconfig/dhcp_proto.c
@@ -201,8 +201,14 @@ static int dhcp_send(struct netdev *dev, struct iovec *vec)
 	bootp.hlen	= dev->hwlen;
 	bootp.xid	= dev->bootp.xid;
 	bootp.ciaddr	= INADDR_ANY;
-	bootp.yiaddr	= dev->ip_addr;
+	/* yiaddr should always be set to 0 for the messages we're likely
+	 * to send as a DHCP client: DHCPDISCOVER, DHCPREQUEST, DHCPDECLINE,
+	 * DHCPINFORM, DHCPRELEASE
+	 * cf. RFC2131 section 4.1.1, table 5.
+	 */
+	bootp.yiaddr	= INADDR_ANY;
 	bootp.giaddr	= INADDR_ANY;
+	bootp.flags	= htons(0x8000);
 	bootp.secs	= htons(time(NULL) - dev->open_time);
 	memcpy(bootp.chaddr, dev->hwaddr, 16);
 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 811 bytes
Desc: Digital signature
URL: <http://www.zytor.com/pipermail/klibc/attachments/20171231/fcb291d5/attachment-0001.sig>


More information about the klibc mailing list