From 7ae13660cfc4acbe88db00a32d41359cd63a3359 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 14 Mar 2008 20:30:03 +0000 Subject: [PATCH] Don't set MAC on TAP devs. Pass TAP device name to QEMU --- ChangeLog | 7 +++++++ src/bridge.c | 13 ------------- src/bridge.h | 1 - src/qemu_conf.c | 7 ++++--- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 503a9a2d54..d21bec733a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Mar 14 16:38:34 EDT 2008 Daniel P. Berrange + + * src/bridge.c, src/bridge.h: Don't set MAC address on TAP + device. + * src/qemu_conf.c: Pass ifname= param along with TAP file + handle for Xenner + Fri Mar 14 16:55:34 CET 2008 Daniel Veillard * po/*: updated translations diff --git a/src/bridge.c b/src/bridge.c index 8ea99af004..f5c27af10e 100644 --- a/src/bridge.c +++ b/src/bridge.c @@ -313,7 +313,6 @@ brDeleteInterface(brControl *ctl ATTRIBUTE_UNUSED, int brAddTap(brControl *ctl, const char *bridge, - unsigned char *macaddr, char *ifname, int maxlen, int *tapfd) @@ -357,18 +356,6 @@ brAddTap(brControl *ctl, } if (ioctl(fd, TUNSETIFF, &try) == 0) { - struct ifreq addr; - memset(&addr, 0, sizeof(addr)); - memcpy(addr.ifr_hwaddr.sa_data, macaddr, 6); - addr.ifr_hwaddr.sa_family = ARPHRD_ETHER; - - /* Device actually starts in 'UP' state, but it - * needs to be down to set the MAC addr - */ - if ((errno = brSetInterfaceUp(ctl, try.ifr_name, 0))) - goto error; - if (ioctl(fd, SIOCSIFHWADDR, &addr) != 0) - goto error; if ((errno = brAddInterface(ctl, bridge, try.ifr_name))) goto error; if ((errno = brSetInterfaceUp(ctl, try.ifr_name, 1))) diff --git a/src/bridge.h b/src/bridge.h index bac776830f..5dcca00040 100644 --- a/src/bridge.h +++ b/src/bridge.h @@ -62,7 +62,6 @@ int brDeleteInterface (brControl *ctl, int brAddTap (brControl *ctl, const char *bridge, - unsigned char *mac, char *ifname, int maxlen, int *tapfd); diff --git a/src/qemu_conf.c b/src/qemu_conf.c index ebbd251e4e..a196bb8081 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -1175,7 +1175,7 @@ static struct qemud_vm_def *qemudParseXML(virConnectPtr conn, obj = xmlXPathEval(BAD_CAST "string(/domain/os/type[1])", ctxt); if ((obj == NULL) || (obj->type != XPATH_STRING) || (obj->stringval == NULL) || (obj->stringval[0] == 0)) { - qemudReportError(conn, NULL, NULL, VIR_ERR_OS_TYPE, NULL); + qemudReportError(conn, NULL, NULL, VIR_ERR_OS_TYPE, "no OS type"); goto error; } if (!virCapabilitiesSupportsGuestOSType(driver->caps, (const char*)obj->stringval)) { @@ -1540,7 +1540,6 @@ qemudNetworkIfaceConnect(virConnectPtr conn, } if ((err = brAddTap(driver->brctl, brname, - net->mac, ifname, BR_IFNAME_MAXLEN, &tapfd))) { qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, "Failed to add tap interface '%s' to bridge '%s' : %s", @@ -1548,7 +1547,9 @@ qemudNetworkIfaceConnect(virConnectPtr conn, goto error; } - snprintf(tapfdstr, sizeof(tapfdstr), "tap,fd=%d,script=,vlan=%d", tapfd, vlan); + snprintf(tapfdstr, sizeof(tapfdstr), + "tap,fd=%d,script=,vlan=%d,ifname=%s", + tapfd, vlan, ifname); if (!(retval = strdup(tapfdstr))) goto no_memory; -- GitLab