]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Don't set MAC on TAP devs. Pass TAP device name to QEMU
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 14 Mar 2008 20:30:03 +0000 (20:30 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Fri, 14 Mar 2008 20:30:03 +0000 (20:30 +0000)
ChangeLog
src/bridge.c
src/bridge.h
src/qemu_conf.c

index 503a9a2d54f64847bd0f1ac544182fb57f0e582c..d21bec733a49d105f2c2c8e0896f7b4a3e8254ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Fri Mar 14 16:38:34 EDT 2008 Daniel P. Berrange <berrange@redhat.com>
+
+       * 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 <veillard@redhat.com>
 
        * po/*: updated translations
index 8ea99af004dfe78d2089b142904c94d122dc842b..f5c27af10e60d3ce687ced33263ac07aae6124ae 100644 (file)
@@ -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)))
index bac776830f964f4b3a8f79f1e39d18b0de16e738..5dcca000407b36a0fdaef119dc91b37c9cefe1ab 100644 (file)
@@ -62,7 +62,6 @@ int     brDeleteInterface       (brControl *ctl,
 
 int     brAddTap                (brControl *ctl,
                                  const char *bridge,
-                                 unsigned char *mac,
                                  char *ifname,
                                  int maxlen,
                                  int *tapfd);
index ebbd251e4e082ed906fe35e6dc53161dc0b30470..a196bb8081035c6a0eaae97b41375e5ab74e8692 100644 (file)
@@ -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;