On 24/01/11 10:43 AM, Federico G. Schwindt wrote:
On Mon, Jan 24, 2011 at 05:03:23PM +0900, Ryan McBride wrote:
This patch helps a lot. I couldn't even get through an install before.
But please don't remove qemu-old yet: I'm using UDP multicast sockets to
build virtual networks, and they fail on  0.13.0:

$ sudo qemu -m 128 -no-fd-bootchk \
         -hda virtual.img -boot n -nographic \
         -net nic,vlan=0,model=rtl8139,macaddr=52:54:00:12:34:03 \
         -net user -tftp /usr/src/sys/arch/i386/compile/TEST -bootp pxeboot \
         -net nic,vlan=1,model=rtl8139,macaddr=52:54:00:23:03:01 \
         -net tap,vlan=1,script=no \
         -net nic,vlan=3,model=rtl8139,macaddr=52:54:00:23:03:03 \
         -net socket,vlan=3,mcast=230.0.0.1:10003
setsockopt(SOL_IP, IP_MULTICAST_LOOP): Invalid argument
qemu: -net socket,vlan=3,mcast=230.0.0.1:10003: Device 'socket' could not be 
initialized

Works fine if I comment out the last two lines.
   this should fix it. can you try it please?

   f.-

Index: Makefile
===================================================================
RCS file: /cvs/ports/emulators/qemu/Makefile,v
retrieving revision 1.60
diff -N -u -p Makefile
--- Makefile    19 Jan 2011 16:22:31 -0000      1.60
+++ Makefile    24 Jan 2011 15:41:37 -0000
@@ -6,7 +6,7 @@ ONLY_FOR_ARCHS =        i386 amd64 sparc64
  COMMENT =             multi system emulator

  DISTNAME =            qemu-0.13.0
-REVISION =             0
+REVISION =             1
  CATEGORIES =          emulators

  HOMEPAGE =            http://www.qemu.org/
Index: patches/patch-net_socket_c
===================================================================
RCS file: patches/patch-net_socket_c
diff -N -u -p patches/patch-net_socket_c
--- /dev/null   24 Jan 2011 08:41:37 -0000
+++ patches/patch-net_socket_c  24 Jan 2011 15:41:37 -0000
@@ -0,0 +1,12 @@
+$OpenBSD$
+--- net/socket.c.orig  Mon Jan 24 15:34:58 2011
++++ net/socket.c       Mon Jan 24 15:35:01 2011
+@@ -195,7 +195,7 @@ static int net_socket_mcast_create(struct sockaddr_in
+     /* Force mcast msgs to loopback (eg. several QEMUs in same host */
+     val = 1;
+     ret=setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP,
+-                   (const char *)&val, sizeof(val));
++                   (const char *)&val, sizeof(char));
+     if (ret<  0) {
+       perror("setsockopt(SOL_IP, IP_MULTICAST_LOOP)");
+       goto fail;

Can you also check the rest of socket.c for the other uses of setsockopt(), specifically
the SO_REUSEADDR cases?

--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

Reply via email to