Use otherwise-useless byte in DHCP feature option as a version number

pull/1/head
Michael Brown 2007-08-02 04:36:00 +01:00
parent 0acb016840
commit 67afe84292
5 changed files with 22 additions and 10 deletions

View File

@ -29,19 +29,25 @@
/** AoE */ /** AoE */
#define DHCP_EB_FEATURE_AOE 0x12 #define DHCP_EB_FEATURE_AOE 0x12
/** HTTP */
#define DHCP_EB_FEATURE_HTTP 0x13
/** HTTPS */
#define DHCP_EB_FEATURE_HTTPS 0x14
/** @} */ /** @} */
/** Declare a feature code for DHCP */ /** Declare a feature code for DHCP */
#define __dhcp_feature __table ( uint8_t, dhcp_features, 01 ) #define __dhcp_feature __table ( uint8_t, dhcp_features, 01 )
/** Construct a DHCP feature table entry */ /** Construct a DHCP feature table entry */
#define DHCP_FEATURE( feature_opt ) \ #define DHCP_FEATURE( feature_opt, version ) \
_DHCP_FEATURE ( OBJECT, feature_opt ) _DHCP_FEATURE ( OBJECT, feature_opt, version )
#define _DHCP_FEATURE( _name, feature_opt ) \ #define _DHCP_FEATURE( _name, feature_opt, version ) \
__DHCP_FEATURE ( _name, feature_opt ) __DHCP_FEATURE ( _name, feature_opt, version )
#define __DHCP_FEATURE( _name, feature_opt ) \ #define __DHCP_FEATURE( _name, feature_opt, version ) \
uint8_t __dhcp_feature_ ## _name [] __dhcp_feature = { \ uint8_t __dhcp_feature_ ## _name [] __dhcp_feature = { \
feature_opt, DHCP_BYTE ( 1 ) \ feature_opt, DHCP_BYTE ( version ) \
}; };
/** Declare a named feature */ /** Declare a named feature */
@ -56,8 +62,8 @@
char * __feature_ ## _name __feature_name = text; char * __feature_ ## _name __feature_name = text;
/** Declare a feature */ /** Declare a feature */
#define FEATURE( text, feature_opt ) \ #define FEATURE( text, feature_opt, version ) \
FEATURE_NAME ( text ); \ FEATURE_NAME ( text ); \
DHCP_FEATURE ( feature_opt ); DHCP_FEATURE ( feature_opt, version );
#endif /* _GPXE_FEATURES_H */ #endif /* _GPXE_FEATURES_H */

View File

@ -40,7 +40,7 @@
* *
*/ */
FEATURE ( "AoE", DHCP_EB_FEATURE_AOE ); FEATURE ( "AoE", DHCP_EB_FEATURE_AOE, 1 );
struct net_protocol aoe_protocol; struct net_protocol aoe_protocol;

View File

@ -40,8 +40,11 @@
#include <gpxe/tcpip.h> #include <gpxe/tcpip.h>
#include <gpxe/process.h> #include <gpxe/process.h>
#include <gpxe/linebuf.h> #include <gpxe/linebuf.h>
#include <gpxe/features.h>
#include <gpxe/http.h> #include <gpxe/http.h>
FEATURE ( "HTTP", DHCP_EB_FEATURE_HTTP, 1 );
/** HTTP receive state */ /** HTTP receive state */
enum http_rx_state { enum http_rx_state {
HTTP_RX_RESPONSE = 0, HTTP_RX_RESPONSE = 0,

View File

@ -27,6 +27,9 @@
#include <gpxe/open.h> #include <gpxe/open.h>
#include <gpxe/tls.h> #include <gpxe/tls.h>
#include <gpxe/http.h> #include <gpxe/http.h>
#include <gpxe/features.h>
FEATURE ( "HTTPS", DHCP_EB_FEATURE_HTTPS, 1 );
/** /**
* Initiate an HTTPS connection * Initiate an HTTPS connection

View File

@ -41,7 +41,7 @@
* *
*/ */
FEATURE ( "iSCSI", DHCP_EB_FEATURE_ISCSI ); FEATURE ( "iSCSI", DHCP_EB_FEATURE_ISCSI, 1 );
/** iSCSI initiator name (explicitly specified) */ /** iSCSI initiator name (explicitly specified) */
static char *iscsi_explicit_initiator_iqn; static char *iscsi_explicit_initiator_iqn;