qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel][PATCH] Tap and VLAN socket support for win32


From: Kazu
Subject: Re: [Qemu-devel][PATCH] Tap and VLAN socket support for win32
Date: Thu, 2 Feb 2006 19:03:58 +0900

Thursday, February 02, 2006 8:10 AM Fabrice Bellard wrote:

Hi,

I merged your patches and I made important changes to simplify them. I
did not do any tests so tell me if you see problems.


-net socket,connect doesn't work. On Windows host, connect returns with err
= WSAEWOULDBLOCK and second time err = WSAEINVAL. I think changing the place
of EWOULDBLOCK would be good. On Linux host, EWOULDBLOCK is the same as
EAGAIN but a patch works on both Linux and Windows.

For -net socket,mcast, bind have to be done by sin_addr.s_addr = INADDR_ANY.
It seems that it works on Linux host.

Regards,
Kazu

Index: vl.c
===================================================================
RCS file: /sources/qemu/qemu/vl.c,v
retrieving revision 1.160
diff -u -r1.160 vl.c
--- vl.c 1 Feb 2006 23:06:55 -0000 1.160
+++ vl.c 2 Feb 2006 09:28:19 -0000
@@ -2335,7 +2335,13 @@
 goto fail;
    }

-    ret = bind(fd, (struct sockaddr *)mcastaddr, sizeof(*mcastaddr));
+    struct sockaddr_in addr;
+    memset(&addr, 0, sizeof(addr));
+    addr.sin_family = AF_INET;
+    addr.sin_port = mcastaddr->sin_port;
+    addr.sin_addr.s_addr = INADDR_ANY;
+
+    ret = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
    if (ret < 0) {
        perror("bind");
        goto fail;
@@ -2561,8 +2567,8 @@
        ret = connect(fd, (struct sockaddr *)&saddr, sizeof(saddr));
        if (ret < 0) {
            err = socket_error();
-            if (err == EINTR || err == EWOULDBLOCK) {
-            } else if (err == EINPROGRESS) {
+            if (err == EINTR) {
+            } else if (err == EINPROGRESS || err == EWOULDBLOCK) {
                break;
            } else {
                perror("connect");

Attachment: qemu-20060202-vlan.patch
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]