svn commit: r318989 - in head: lib/libstand sys/boot/common

Baptiste Daroussin bapt at FreeBSD.org
Sat May 27 12:35:03 UTC 2017


Author: bapt
Date: Sat May 27 12:35:01 2017
New Revision: 318989
URL: https://svnweb.freebsd.org/changeset/base/318989

Log:
  Always issue the pxe request
  
  All the code are now only issueing one single dhcp request at startup of the
  loader meaning we can always request a the PXE informations from the
  dhcp server.
  
  Previous code lost that information, meaning no option 55 anymore (meaning not
  working with the kea dhcp server) and no request for rootpath etc, no user class
  
  Remove the flags from the bootp function which is not needed anymore
  
  Reviewed by:	tsoome
  Differential Revision:	https://reviews.freebsd.org/D10952

Modified:
  head/lib/libstand/bootp.c
  head/lib/libstand/bootp.h
  head/lib/libstand/net.h
  head/sys/boot/common/dev_net.c

Modified: head/lib/libstand/bootp.c
==============================================================================
--- head/lib/libstand/bootp.c	Sat May 27 12:20:13 2017	(r318988)
+++ head/lib/libstand/bootp.c	Sat May 27 12:35:01 2017	(r318989)
@@ -95,7 +95,7 @@ size_t bootp_response_size;
 
 /* Fetch required bootp infomation */
 void
-bootp(int sock, int flag)
+bootp(int sock)
 {
 	void *pkt;
 	struct iodesc *d;
@@ -138,32 +138,29 @@ bootp(int sock, int flag)
 	bp->bp_vend[6] = DHCPDISCOVER;
 
 	/*
-	 * If we are booting from PXE, we want to send the string
+	 * We are booting from PXE, we want to send the string
 	 * 'PXEClient' to the DHCP server so you have the option of
 	 * only responding to PXE aware dhcp requests.
 	 */
-	if (flag & BOOTP_PXE) {
-		bp->bp_vend[7] = TAG_CLASSID;
-		bp->bp_vend[8] = 9;
-		bcopy("PXEClient", &bp->bp_vend[9], 9);
-		bp->bp_vend[18] = TAG_USER_CLASS;
-		/* len of each user class + number of user class */
-		bp->bp_vend[19] = 8;
-		/* len of the first user class */
-		bp->bp_vend[20] = 7;
-		bcopy("FREEBSD", &bp->bp_vend[21], 7);
-		bp->bp_vend[28] = TAG_PARAM_REQ;
-		bp->bp_vend[29] = 7;
-		bp->bp_vend[30] = TAG_ROOTPATH;
-		bp->bp_vend[31] = TAG_HOSTNAME;
-		bp->bp_vend[32] = TAG_SWAPSERVER;
-		bp->bp_vend[33] = TAG_GATEWAY;
-		bp->bp_vend[34] = TAG_SUBNET_MASK;
-		bp->bp_vend[35] = TAG_INTF_MTU;
-		bp->bp_vend[36] = TAG_SERVERID;
-		bp->bp_vend[37] = TAG_END;
-	} else
-		bp->bp_vend[7] = TAG_END;
+	bp->bp_vend[7] = TAG_CLASSID;
+	bp->bp_vend[8] = 9;
+	bcopy("PXEClient", &bp->bp_vend[9], 9);
+	bp->bp_vend[18] = TAG_USER_CLASS;
+	/* len of each user class + number of user class */
+	bp->bp_vend[19] = 8;
+	/* len of the first user class */
+	bp->bp_vend[20] = 7;
+	bcopy("FREEBSD", &bp->bp_vend[21], 7);
+	bp->bp_vend[28] = TAG_PARAM_REQ;
+	bp->bp_vend[29] = 7;
+	bp->bp_vend[30] = TAG_ROOTPATH;
+	bp->bp_vend[31] = TAG_HOSTNAME;
+	bp->bp_vend[32] = TAG_SWAPSERVER;
+	bp->bp_vend[33] = TAG_GATEWAY;
+	bp->bp_vend[34] = TAG_SUBNET_MASK;
+	bp->bp_vend[35] = TAG_INTF_MTU;
+	bp->bp_vend[36] = TAG_SERVERID;
+	bp->bp_vend[37] = TAG_END;
 #else
 	bp->bp_vend[4] = TAG_END;
 #endif
@@ -199,13 +196,10 @@ bootp(int sock, int flag)
 		bp->bp_vend[20] = 4;
 		leasetime = htonl(300);
 		bcopy(&leasetime, &bp->bp_vend[21], 4);
-		if (flag & BOOTP_PXE) {
-			bp->bp_vend[25] = TAG_CLASSID;
-			bp->bp_vend[26] = 9;
-			bcopy("PXEClient", &bp->bp_vend[27], 9);
-			bp->bp_vend[36] = TAG_END;
-		} else
-			bp->bp_vend[25] = TAG_END;
+		bp->bp_vend[25] = TAG_CLASSID;
+		bp->bp_vend[26] = 9;
+		bcopy("PXEClient", &bp->bp_vend[27], 9);
+		bp->bp_vend[36] = TAG_END;
 
 		expected_dhcpmsgtype = DHCPACK;
 

Modified: head/lib/libstand/bootp.h
==============================================================================
--- head/lib/libstand/bootp.h	Sat May 27 12:20:13 2017	(r318988)
+++ head/lib/libstand/bootp.h	Sat May 27 12:35:01 2017	(r318989)
@@ -124,12 +124,6 @@ struct bootp {
 #endif
 
 /*
- * bootp flags
- */
-#define	BOOTP_NONE		0x0000		/* No flags */
-#define	BOOTP_PXE		0x0001		/* Booting from PXE. */
-
-/*
  * "vendor" data permitted for CMU bootp clients.
  */
 

Modified: head/lib/libstand/net.h
==============================================================================
--- head/lib/libstand/net.h	Sat May 27 12:20:13 2017	(r318988)
+++ head/lib/libstand/net.h	Sat May 27 12:35:01 2017	(r318989)
@@ -119,7 +119,7 @@ ssize_t	sendrecv(struct iodesc *,
 			void **, void **);
 
 /* bootp/DHCP */
-void	bootp(int, int);
+void	bootp(int);
 
 /* Utilities: */
 char	*ether_sprintf(u_char *);

Modified: head/sys/boot/common/dev_net.c
==============================================================================
--- head/sys/boot/common/dev_net.c	Sat May 27 12:20:13 2017	(r318988)
+++ head/sys/boot/common/dev_net.c	Sat May 27 12:35:01 2017	(r318989)
@@ -284,7 +284,7 @@ net_getparams(int sock)
 			d->myip = myip;
 		}
 		if (rc < 0)
-			bootp(sock, BOOTP_NONE);
+			bootp(sock);
 	}
 	if (myip.s_addr != 0)
 		goto exit;


More information about the svn-src-head mailing list