diff --git a/src/common/network/dhcp.c b/src/common/network/dhcp.c index addfda1..88c3aa9 100644 --- a/src/common/network/dhcp.c +++ b/src/common/network/dhcp.c @@ -65,10 +65,14 @@ void DHCP_request_send(packet_t *pPacket, uint32_t dhcp_msg_type, uint8_t *mac_a size = sizeof(dhcp_opt_hdr_t); pOpt_hdr = (dhcp_opt_hdr_t*)&pDHCP->options[option_size]; pOpt_hdr->code = DHCP_OPT_CLIENTID; - pOpt_hdr->len = 6; + pOpt_hdr->len = 7; option_size += size; - size = pOpt_hdr->len; + size = 1; + pDHCP->options[option_size] = HWTYPE_ETHERNET; + option_size += size; + + size = 6; memcpy(&pDHCP->options[option_size], mac_addr_src, size); option_size += size; #endif @@ -116,10 +120,14 @@ void DHCP_request_send(packet_t *pPacket, uint32_t dhcp_msg_type, uint8_t *mac_a size = sizeof(dhcp_opt_hdr_t); pOpt_hdr = (dhcp_opt_hdr_t*)&pDHCP->options[option_size]; pOpt_hdr->code = DHCP_OPT_CLIENTID; - pOpt_hdr->len = 6; + pOpt_hdr->len = 7; option_size += size; - size = pOpt_hdr->len; + size = 1; + pDHCP->options[option_size] = HWTYPE_ETHERNET; + option_size += size; + + size = 6; memcpy(&pDHCP->options[option_size], mac_addr_src, size); option_size += size; #endif diff --git a/src/common/network/dhcp.h b/src/common/network/dhcp.h index 105c827..8adf925 100644 --- a/src/common/network/dhcp.h +++ b/src/common/network/dhcp.h @@ -56,6 +56,27 @@ typedef struct _sdhcp_opt_hdr_t #define DHCP_MSG_DHCPNAK 6 #define DHCP_MSG_DHCPRELEASE 7 +// Hardware types RFC 1340 +#define HWTYPE_ETHERNET 1 +/* + 1 Ethernet (10Mb) [JBP] + 2 Experimental Ethernet (3Mb) [JBP] + 3 Amateur Radio AX.25 [PXK] + 4 Proteon ProNET Token Ring [JBP] + 5 Chaos [GXP] + 6 IEEE 802 Networks [JBP] + 7 ARCNET [JBP] + 8 Hyperchannel [JBP] + 9 Lanstar [TU] + 10 Autonet Short Address [MXB1] + 11 LocalTalk [JKR1] + 12 LocalNet (IBM PCNet or SYTEK LocalNET) [JXM] + 13 Ultra link [RXD2] + 14 SMDS [GXC1] + 15 Frame Relay [AGM] + 16 Asynchronous Transmission Mode (ATM) [JXB2] +*/ + // ------------------------------------------------------------------------- void DHCP_request_send(packet_t *pPacket, uint32_t dhcp_msg_type, uint8_t *mac_addr_src, uint8_t *inet_addr_src, uint8_t *inet_addr_dst, DHCP *pLast);