提交 9ace17c8 编写于 作者: I Ilya Yanok 提交者: Tom Rini

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: NIlya Yanok <ilya.yanok@cogentembedded.com>
Signed-off-by: NTom Rini <trini@ti.com>
上级 a64f0241
...@@ -341,6 +341,15 @@ BootpTimeout(void) ...@@ -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, ...@@ -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, ...@@ -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 */ #ifdef CONFIG_BOOTP_VCI_STRING
vci_strlen = strlen(CONFIG_BOOTP_VCI_STRING); put_vci(e, CONFIG_BOOTP_VCI_STRING);
*e++ = vci_strlen;
memcpy(e, CONFIG_BOOTP_VCI_STRING, vci_strlen);
e += vci_strlen;
#endif #endif
#if defined(CONFIG_BOOTP_VENDOREX) #if defined(CONFIG_BOOTP_VENDOREX)
...@@ -529,6 +535,10 @@ static int BootpExtended(u8 *e) ...@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册