Add FEATURE() macro, plus code to display features at startup time,

and generate DHCP options to indicate features to DHCP server (and to
PXE NBPs).
This commit is contained in:
Michael Brown
2007-08-02 04:24:39 +01:00
parent 857c5db4dd
commit 0acb016840
6 changed files with 99 additions and 1 deletions

View File

@@ -31,6 +31,7 @@
#include <gpxe/ata.h>
#include <gpxe/netdevice.h>
#include <gpxe/process.h>
#include <gpxe/features.h>
#include <gpxe/aoe.h>
/** @file
@@ -39,6 +40,8 @@
*
*/
FEATURE ( "AoE", DHCP_EB_FEATURE_AOE );
struct net_protocol aoe_protocol;
/** List of all AoE sessions */

View File

@@ -32,6 +32,7 @@
#include <gpxe/uaccess.h>
#include <gpxe/tcpip.h>
#include <gpxe/dhcp.h>
#include <gpxe/features.h>
#include <gpxe/iscsi.h>
/** @file
@@ -40,6 +41,8 @@
*
*/
FEATURE ( "iSCSI", DHCP_EB_FEATURE_ISCSI );
/** iSCSI initiator name (explicitly specified) */
static char *iscsi_explicit_initiator_iqn;

View File

@@ -70,6 +70,10 @@ static uint8_t dhcp_request_options_data[] = {
DHCP_END
};
/** DHCP feature codes */
static uint8_t dhcp_features[0] __table_start ( uint8_t, dhcp_features );
static uint8_t dhcp_features_end[0] __table_end ( uint8_t, dhcp_features );
/**
* Name a DHCP packet type
*
@@ -508,6 +512,7 @@ int create_dhcp_request ( struct net_device *netdev, int msgtype,
struct dhcp_packet *dhcppkt ) {
struct device_description *desc = &netdev->dev->desc;
struct dhcp_netdev_desc dhcp_desc;
size_t dhcp_features_len;
int rc;
/* Create DHCP packet */
@@ -544,6 +549,16 @@ int create_dhcp_request ( struct net_device *netdev, int msgtype,
}
}
/* Add options to identify the feature list */
dhcp_features_len = ( dhcp_features_end - dhcp_features );
if ( ( rc = set_dhcp_packet_option ( dhcppkt, DHCP_EB_ENCAP,
dhcp_features,
dhcp_features_len ) ) != 0 ) {
DBG ( "DHCP could not set features list option: %s\n",
strerror ( rc ) );
return rc;
}
/* Add options to identify the network device */
dhcp_desc.type = desc->bus_type;
dhcp_desc.vendor = htons ( desc->vendor );