david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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>
This commit is contained in:
Michael Brown 2013-08-27 16:28:54 +01:00
parent 3e975ecf3f
commit ae0124cd40
3 changed files with 8 additions and 1 deletions

View File

@ -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 */

View File

@ -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 */

View File

@ -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 );
}