Index: bootp.c =================================================================== RCS file: /storage/FreeBSD/ncvs/src/lib/libstand/bootp.c,v retrieving revision 1.5 diff -u -r1.5 bootp.c --- bootp.c 21 Mar 2002 23:38:48 -0000 1.5 +++ bootp.c 20 Dec 2002 00:46:42 -0000 @@ -131,14 +131,20 @@ /* * If 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. + * 'PXEClient:FreeBSD:loader:i386' to the DHCP server so you have + * the option of only responding to PXE aware dhcp requests. */ if (flag & BOOTP_PXE) { + unsigned char vendor_client[64]; + uint8_t vendor_client_len; + + sprintf(vendor_client, "%s:%s:%s:%s", "PXEClient", "FreeBSD", "loader", "i386"); + vendor_client_len = strlen(vendor_client); + bp->bp_vend[7] = TAG_CLASSID; - bp->bp_vend[8] = 9; - bcopy("PXEClient", &bp->bp_vend[9], 9); - bp->bp_vend[18] = TAG_END; + bp->bp_vend[8] = vendor_client_len; + bcopy(vendor_client, &bp->bp_vend[9], vendor_client_len); + bp->bp_vend[9 + vendor_client_len] = TAG_END; } else bp->bp_vend[7] = TAG_END; #else @@ -178,10 +184,16 @@ leasetime = htonl(300); bcopy(&leasetime, &bp->bp_vend[21], 4); if (flag & BOOTP_PXE) { + unsigned char vendor_client[64]; + uint8_t vendor_client_len; + + sprintf(vendor_client, "%s:%s:%s:%s", "PXEClient", "FreeBSD", "loader", "i386"); + vendor_client_len = strlen(vendor_client); + bp->bp_vend[25] = TAG_CLASSID; - bp->bp_vend[26] = 9; - bcopy("PXEClient", &bp->bp_vend[27], 9); - bp->bp_vend[36] = TAG_END; + bp->bp_vend[26] = vendor_client_len; + bcopy(vendor_client, &bp->bp_vend[27], vendor_client_len); + bp->bp_vend[27 + vendor_client_len] = TAG_END; } else bp->bp_vend[25] = TAG_END;