mirror of
https://github.com/ipxe/ipxe
synced 2025-12-30 13:11:11 +03:00
[Settings] Add per-netdevice settings block
Add a configuration settings block for each net device. This will provide the parent scope for settings applicable only to that network device (e.g. non-volatile options stored on the NIC, options obtained via DHCP, etc.). Expose the MAC address as a setting.
This commit is contained in:
@@ -177,6 +177,15 @@ struct job_interface;
|
||||
*/
|
||||
#define DHCP_EB_SIADDR DHCP_ENCAP_OPT ( DHCP_EB_ENCAP, 3 )
|
||||
|
||||
/** MAC address
|
||||
*
|
||||
* This option is used internally to contain the network device
|
||||
* hardware address, in order to provide a consistent approach to
|
||||
* storing and processing options. It should never be present in a
|
||||
* DHCP packet.
|
||||
*/
|
||||
#define DHCP_EB_MAC DHCP_ENCAP_OPT ( DHCP_EB_ENCAP, 4 )
|
||||
|
||||
/*
|
||||
* Tags in the range 0x10-0x7f are reserved for feature markers
|
||||
*
|
||||
|
||||
@@ -129,6 +129,7 @@
|
||||
#define ERRFILE_dns ( ERRFILE_NET | 0x00110000 )
|
||||
#define ERRFILE_tftp ( ERRFILE_NET | 0x00120000 )
|
||||
#define ERRFILE_infiniband ( ERRFILE_NET | 0x00130000 )
|
||||
#define ERRFILE_netdev_settings ( ERRFILE_NET | 0x00140000 )
|
||||
|
||||
#define ERRFILE_image ( ERRFILE_IMAGE | 0x00000000 )
|
||||
#define ERRFILE_elf ( ERRFILE_IMAGE | 0x00010000 )
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <gpxe/list.h>
|
||||
#include <gpxe/tables.h>
|
||||
#include <gpxe/refcnt.h>
|
||||
#include <gpxe/settings.h>
|
||||
|
||||
struct io_buffer;
|
||||
struct net_device;
|
||||
@@ -243,6 +244,9 @@ struct net_device {
|
||||
/** Device statistics */
|
||||
struct net_device_stats stats;
|
||||
|
||||
/** Configuration settings applicable to this device */
|
||||
struct settings settings;
|
||||
|
||||
/** Driver private data */
|
||||
void *priv;
|
||||
};
|
||||
@@ -360,6 +364,8 @@ extern int net_tx ( struct io_buffer *iobuf, struct net_device *netdev,
|
||||
extern int net_rx ( struct io_buffer *iobuf, struct net_device *netdev,
|
||||
uint16_t net_proto, const void *ll_source );
|
||||
|
||||
extern struct settings_operations netdev_settings_operations;
|
||||
|
||||
/**
|
||||
* Complete network transmission
|
||||
*
|
||||
|
||||
@@ -17,7 +17,7 @@ struct in_addr;
|
||||
|
||||
/** Settings block operations */
|
||||
struct settings_operations {
|
||||
/** Set value of setting
|
||||
/** Store value of setting
|
||||
*
|
||||
* @v settings Settings block
|
||||
* @v tag Setting tag number
|
||||
|
||||
Reference in New Issue
Block a user