diff options
author | Andrew Widdersheim | 2016-01-16 17:21:34 +0100 |
---|---|---|
committer | Michael Brown | 2016-01-18 09:50:44 +0100 |
commit | 3fd81799ba3857fb45443bf085cd402656a90b2f (patch) | |
tree | 933a6b9b2ff4316ccb78df99a5a3bbf2702bb5cf /src | |
parent | [build] Add named configuration for public cloud environments (diff) | |
download | ipxe-3fd81799ba3857fb45443bf085cd402656a90b2f.tar.gz ipxe-3fd81799ba3857fb45443bf085cd402656a90b2f.tar.xz ipxe-3fd81799ba3857fb45443bf085cd402656a90b2f.zip |
[netdevice] Add "ifname" setting
Expose the network interface name (e.g. "net0") as a setting. This
allows a script to obtain the name of the most recently opened network
interface via ${netX/ifname}.
Signed-off-by: Andrew Widdersheim <amwiddersheim@gmail.com>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/net/netdev_settings.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/net/netdev_settings.c b/src/net/netdev_settings.c index edd4c4b9..c4fd3694 100644 --- a/src/net/netdev_settings.c +++ b/src/net/netdev_settings.c @@ -65,6 +65,11 @@ const struct setting chip_setting __setting ( SETTING_NETDEV, chip ) = { .description = "Chip", .type = &setting_type_string, }; +const struct setting ifname_setting __setting ( SETTING_NETDEV, ifname ) = { + .name = "ifname", + .description = "Interface name", + .type = &setting_type_string, +}; /** * Store MAC address setting @@ -199,6 +204,22 @@ static int netdev_fetch_chip ( struct net_device *netdev, void *data, return strlen ( chip ); } +/** + * Fetch ifname setting + * + * @v netdev Network device + * @v data Buffer to fill with setting data + * @v len Length of buffer + * @ret len Length of setting data, or negative error + */ +static int netdev_fetch_ifname ( struct net_device *netdev, void *data, + size_t len ) { + const char *ifname = netdev->name; + + strncpy ( data, ifname, len ); + return strlen ( ifname ); +} + /** A network device setting operation */ struct netdev_setting_operation { /** Setting */ @@ -229,6 +250,7 @@ static struct netdev_setting_operation netdev_setting_operations[] = { { &busloc_setting, NULL, netdev_fetch_busloc }, { &busid_setting, NULL, netdev_fetch_busid }, { &chip_setting, NULL, netdev_fetch_chip }, + { &ifname_setting, NULL, netdev_fetch_ifname }, }; /** |