uint8_t op;
/** Hardware address type
*
- * This is an ARPHRD_XXX constant.
+ * This is an ARPHRD_XXX constant. Note that ARPHRD_XXX
+ * constants are nominally 16 bits wide; this could be
+ * considered to be a bug in the BOOTP/DHCP specification.
*/
uint8_t htype;
/** Hardware address length */
signed int priority;
};
+/** A DHCP session */
+struct dhcp_session {
+ /** Network device being configured */
+ struct net_device *netdev;
+ /** Transaction ID, in network-endian order */
+ uint32_t xid;
+};
+
extern unsigned long dhcp_num_option ( struct dhcp_option *option );
extern struct dhcp_option *
find_dhcp_option ( struct dhcp_option_block *options, unsigned int tag );
*
*/
-struct dhcp_session {
- struct net_device *netdev;
- uint32_t xid;
-};
-
/** DHCP operation types
*
* This table maps from DHCP message types (i.e. values of the @c
dhcppkt->op = dhcp_op[dhcp_message_type];
/* Fill in NIC details */
- dhcppkt->htype = dhcp->netdev->ll_protocol->ll_proto;
+ dhcppkt->htype = ntohs ( dhcp->netdev->ll_protocol->ll_proto );
dhcppkt->hlen = dhcp->netdev->ll_protocol->ll_addr_len;
memcpy ( dhcppkt->chaddr, dhcp->netdev->ll_addr, dhcppkt->hlen );