mirror of
https://github.com/ipxe/ipxe
synced 2026-02-28 03:11:18 +03:00
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:
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 );
|
||||
|
||||
Reference in New Issue
Block a user