Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[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>
  • Loading branch information
mcb30 committed Aug 27, 2013
1 parent 3e975ec commit ae0124c
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 1 deletion.
3 changes: 3 additions & 0 deletions src/drivers/linux/tap.c
Expand Up @@ -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 */
Expand Down
3 changes: 3 additions & 0 deletions src/include/ipxe/device.h
Expand Up @@ -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 */
Expand Down
3 changes: 2 additions & 1 deletion src/net/netdev_settings.c
Expand Up @@ -120,14 +120,15 @@ 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;

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 );
}
Expand Down

0 comments on commit ae0124c

Please sign in to comment.