summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2023-07-05 16:24:32 +0200
committerMichael Brown2023-07-05 16:24:32 +0200
commitf3036fc213b6e6cce0bf5572167b93b9e9959a3a (patch)
treec88cac6a3bbd77e2c38787bb61000052fa4f9869
parent[linux] Fix error control flow in af_packet_nic_probe() (diff)
downloadipxe-f3036fc213b6e6cce0bf5572167b93b9e9959a3a.tar.gz
ipxe-f3036fc213b6e6cce0bf5572167b93b9e9959a3a.tar.xz
ipxe-f3036fc213b6e6cce0bf5572167b93b9e9959a3a.zip
[linux] Set a default MAC address for tap devices
Avoid the need to always specify a local MAC address on the command line by setting a default hardware MAC address (using the same default address as for slirp devices). Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/drivers/linux/tap.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/drivers/linux/tap.c b/src/drivers/linux/tap.c
index 9b52c20a..c1364ddb 100644
--- a/src/drivers/linux/tap.c
+++ b/src/drivers/linux/tap.c
@@ -56,6 +56,10 @@ struct tap_nic {
int fd;
};
+/** Default MAC address */
+static const uint8_t tap_default_mac[ETH_ALEN] =
+ { 0x52, 0x54, 0x00, 0x12, 0x34, 0x56 };
+
/** Open the TAP device */
static int tap_open(struct net_device * netdev)
{
@@ -202,6 +206,7 @@ static int tap_probe(struct linux_device *device, struct linux_device_request *r
nic = netdev->priv;
linux_set_drvdata(device, netdev);
netdev->dev = &device->dev;
+ memcpy ( netdev->hw_addr, tap_default_mac, ETH_ALEN );
memset(nic, 0, sizeof(*nic));
/* Look for the mandatory if setting */