From 6c01d3bb95c8dfbbbc3f2b4fb36fce6bd2f3e952 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 17 Jul 2006 13:07:14 +0000 Subject: Fix creation of the htype field; the ll_proto field from which it is derived is a 16-bit big-endian field, but htype is only 8 bits wide. --- src/include/gpxe/dhcp.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/include/gpxe') diff --git a/src/include/gpxe/dhcp.h b/src/include/gpxe/dhcp.h index e35b7eaba..71c6c14a0 100644 --- a/src/include/gpxe/dhcp.h +++ b/src/include/gpxe/dhcp.h @@ -23,7 +23,9 @@ struct dhcp_packet { 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 */ @@ -274,6 +276,14 @@ struct dhcp_option_block { 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 ); -- cgit v1.2.3-55-g7522