|
@@ -341,6 +341,15 @@ BootpTimeout(void)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#define put_vci(e, str) \
|
|
|
|
+ do { \
|
|
|
|
+ size_t vci_strlen = strlen(str); \
|
|
|
|
+ *e++ = 60; /* Vendor Class Identifier */ \
|
|
|
|
+ *e++ = vci_strlen; \
|
|
|
|
+ memcpy(e, str, vci_strlen); \
|
|
|
|
+ e += vci_strlen; \
|
|
|
|
+ } while (0)
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Initialize BOOTP extension fields in the request.
|
|
* Initialize BOOTP extension fields in the request.
|
|
*/
|
|
*/
|
|
@@ -352,7 +361,6 @@ static int DhcpExtended(u8 *e, int message_type, IPaddr_t ServerID,
|
|
u8 *cnt;
|
|
u8 *cnt;
|
|
#if defined(CONFIG_BOOTP_PXE)
|
|
#if defined(CONFIG_BOOTP_PXE)
|
|
char *uuid;
|
|
char *uuid;
|
|
- size_t vci_strlen;
|
|
|
|
u16 clientarch;
|
|
u16 clientarch;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
@@ -437,12 +445,10 @@ static int DhcpExtended(u8 *e, int message_type, IPaddr_t ServerID,
|
|
printf("Invalid pxeuuid: %s\n", uuid);
|
|
printf("Invalid pxeuuid: %s\n", uuid);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
|
|
|
|
- *e++ = 60; /* Vendor Class Identifier */
|
|
|
|
- vci_strlen = strlen(CONFIG_BOOTP_VCI_STRING);
|
|
|
|
- *e++ = vci_strlen;
|
|
|
|
- memcpy(e, CONFIG_BOOTP_VCI_STRING, vci_strlen);
|
|
|
|
- e += vci_strlen;
|
|
|
|
|
|
+#ifdef CONFIG_BOOTP_VCI_STRING
|
|
|
|
+ put_vci(e, CONFIG_BOOTP_VCI_STRING);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#if defined(CONFIG_BOOTP_VENDOREX)
|
|
#if defined(CONFIG_BOOTP_VENDOREX)
|
|
@@ -529,6 +535,10 @@ static int BootpExtended(u8 *e)
|
|
*e++ = (576 - 312 + OPT_FIELD_SIZE) & 0xff;
|
|
*e++ = (576 - 312 + OPT_FIELD_SIZE) & 0xff;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#ifdef CONFIG_BOOTP_VCI_STRING
|
|
|
|
+ put_vci(e, CONFIG_BOOTP_VCI_STRING);
|
|
|
|
+#endif
|
|
|
|
+
|
|
#if defined(CONFIG_BOOTP_SUBNETMASK)
|
|
#if defined(CONFIG_BOOTP_SUBNETMASK)
|
|
*e++ = 1; /* Subnet mask request */
|
|
*e++ = 1; /* Subnet mask request */
|
|
*e++ = 4;
|
|
*e++ = 4;
|