diff options
| author | Michael Brown | 2013-08-27 17:28:54 +0200 |
|---|---|---|
| committer | Michael Brown | 2013-08-27 17:39:43 +0200 |
| commit | ae0124cd404c0ee25152bef70bee9e2030054ce7 (patch) | |
| tree | bedcc132a7e4a8248db644702e47e432cbd23c98 /src | |
| parent | [settings] Make built-in settings a linker table (diff) | |
| download | ipxe-ae0124cd404c0ee25152bef70bee9e2030054ce7.tar.gz ipxe-ae0124cd404c0ee25152bef70bee9e2030054ce7.tar.xz ipxe-ae0124cd404c0ee25152bef70bee9e2030054ce7.zip | |
[linux] Give tap devices a name and bus type
Give tap devices a meaningful name, and avoid segmentation faults when
attempting to retrieve ${net0/bustype} by assigning a new bus type for
tap devices.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/drivers/linux/tap.c | 3 | ||||
| -rw-r--r-- | src/include/ipxe/device.h | 3 | ||||
| -rw-r--r-- | src/net/netdev_settings.c | 3 |
3 files changed, 8 insertions, 1 deletions
diff --git a/src/drivers/linux/tap.c b/src/drivers/linux/tap.c index 53bb16a30..99937d74d 100644 --- a/src/drivers/linux/tap.c +++ b/src/drivers/linux/tap.c @@ -216,6 +216,9 @@ static int tap_probe(struct linux_device *device, struct linux_device_request *r } nic->interface = if_setting->value; + snprintf ( device->dev.name, sizeof ( device->dev.name ), "%s", + nic->interface ); + device->dev.desc.bus_type = BUS_TYPE_TAP; if_setting->applied = 1; /* Apply rest of the settings */ diff --git a/src/include/ipxe/device.h b/src/include/ipxe/device.h index 435af6ecf..c59697c03 100644 --- a/src/include/ipxe/device.h +++ b/src/include/ipxe/device.h @@ -54,6 +54,9 @@ struct device_description { /** ISA bus type */ #define BUS_TYPE_ISA 5 +/** TAP bus type */ +#define BUS_TYPE_TAP 6 + /** A hardware device */ struct device { /** Name */ diff --git a/src/net/netdev_settings.c b/src/net/netdev_settings.c index 52e8007dd..994e0506f 100644 --- a/src/net/netdev_settings.c +++ b/src/net/netdev_settings.c @@ -120,6 +120,7 @@ static int netdev_fetch_bustype ( struct net_device *netdev, void *data, [BUS_TYPE_EISA] = "EISA", [BUS_TYPE_MCA] = "MCA", [BUS_TYPE_ISA] = "ISA", + [BUS_TYPE_TAP] = "TAP", }; struct device_description *desc = &netdev->dev->desc; const char *bustype; @@ -127,7 +128,7 @@ static int netdev_fetch_bustype ( struct net_device *netdev, void *data, assert ( desc->bus_type < ( sizeof ( bustypes ) / sizeof ( bustypes[0] ) ) ); bustype = bustypes[desc->bus_type]; - assert ( bustypes != NULL ); + assert ( bustype != NULL ); strncpy ( data, bustype, len ); return strlen ( bustype ); } |
