On Wed, Mar 12, 2008 at 01:38:05PM +0100, Guido G?nther wrote:
On Fri, Mar 07, 2008 at 04:23:13PM +0100, Guido Günther wrote:
> Hi Daniel.
> On Mon, Mar 03, 2008 at 10:13:12AM -0500, Daniel Veillard wrote:
> > It was really time for a new release, quite a lot of patches had accumulated
> > since the previous one ! Available at
> >
ftp://libvirt.org/libvirt
> Cool thing! Unfortunatley this release breaks kvm/qemu bridged
> networking for me. Namely this commmit:
>
> 936dd984eed33813aa69b0377dd46a9ad1e9e014
> Set MAC address on TUN device for Xenner compatability
>
> With this applied the vm never sees the dhcp offer from the DHCP
> server. When I revert the patch, everything is fine again.
No comments? This is the part of code I've reverted. Didn't find the
time to track down the problem for real:
The setting of MAC address was done to help Xenner detect correct TAP
interface. This patch instead explicitly passes the interface name to
Xenner. A corresponding patch to Xenner makes it honour the ifname=
parameter.
Dan.
Index: src/bridge.c
===================================================================
RCS file: /data/cvs/libvirt/src/bridge.c,v
retrieving revision 1.9
diff -u -p -r1.9 bridge.c
--- src/bridge.c 28 Feb 2008 01:23:14 -0000 1.9
+++ src/bridge.c 12 Mar 2008 18:39:28 -0000
@@ -313,7 +313,6 @@ brDeleteInterface(brControl *ctl ATTRIBU
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: src/bridge.h
===================================================================
RCS file: /data/cvs/libvirt/src/bridge.h,v
retrieving revision 1.5
diff -u -p -r1.5 bridge.h
--- src/bridge.h 28 Feb 2008 01:23:14 -0000 1.5
+++ src/bridge.h 12 Mar 2008 18:39:28 -0000
@@ -62,7 +62,6 @@ int brDeleteInterface (brContr
int brAddTap (brControl *ctl,
const char *bridge,
- unsigned char *mac,
char *ifname,
int maxlen,
int *tapfd);
Index: src/qemu_conf.c
===================================================================
RCS file: /data/cvs/libvirt/src/qemu_conf.c,v
retrieving revision 1.41
diff -u -p -r1.41 qemu_conf.c
--- src/qemu_conf.c 3 Mar 2008 18:11:16 -0000 1.41
+++ src/qemu_conf.c 12 Mar 2008 18:39:29 -0000
@@ -1533,7 +1533,6 @@ qemudNetworkIfaceConnect(virConnectPtr c
}
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",
@@ -1541,7 +1540,9 @@ qemudNetworkIfaceConnect(virConnectPtr c
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;
--
|: Red Hat, Engineering, Boston -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|