net/bootp: add VCI support for BOOTP also
Vendor Class Identifier option is common to BOOTP and DHCP and
can be useful without PXE. So send VCI in both BOOTP and DHCP
requests if CONFIG_BOOTP_VCI_STRING is defined.
Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>
Signed-off-by: Tom Rini <trini@ti.com>
diff --git a/net/bootp.c b/net/bootp.c
index 661e371..ccf9ee6 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -341,6 +341,15 @@
}
}
+#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.
*/
@@ -352,7 +361,6 @@
u8 *cnt;
#if defined(CONFIG_BOOTP_PXE)
char *uuid;
- size_t vci_strlen;
u16 clientarch;
#endif
@@ -437,12 +445,10 @@
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
#if defined(CONFIG_BOOTP_VENDOREX)
@@ -529,6 +535,10 @@
*e++ = (576 - 312 + OPT_FIELD_SIZE) & 0xff;
#endif
+#ifdef CONFIG_BOOTP_VCI_STRING
+ put_vci(e, CONFIG_BOOTP_VCI_STRING);
+#endif
+
#if defined(CONFIG_BOOTP_SUBNETMASK)
*e++ = 1; /* Subnet mask request */
*e++ = 4;