From: "Sebastian Herbszt" <herbszt@gmx.de>
To: Jung-uk Kim <jkim@FreeBSD.org>
Cc: Juergen Lock <nox@jelal.kn-bremen.de>, qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [PATCH] networking using libpcap
Date: Fri, 18 Jul 2008 18:12:59 +0200 [thread overview]
Message-ID: <043901c8e8f1$6150b260$0201a8c0@zeug> (raw)
In-Reply-To: 200807171812.41200.jkim@FreeBSD.org
Jung-uk Kim wrote:
> Since someone showed interest, I updated my patches against trunk. :-)
>
> http://people.freebsd.org/~jkim/qemu-pcap-20080717.diff
>
> I turned it off by default for now. If you want to enable it, do:
>
> configure --enable-pcap
To avoid confusion please change the pcap probe to error instead of
silently setting pcap=no. Take a look at audio_drv_probe.
>> Works perfect for me and allows access to the local Ethernet right
>> out of the box, very much unlike tap and bridging. The attached
>> version applies to trunk.
>>
>> I have modified (e.g. got rid of threads) the original patch from
>> the forum and am using it here on Windows. It works fine but
>> performance is pretty low.
>
> *After* applying the new patch:
>
> cp -p vl.c vl.c.orig
> sed -e 's/#ifdef PCAP_SET_FILTER/#if 1/g' vl.c > vl.c.tmp
> mv vl.c.tmp vl.c
>
> and try again? BTW, I have no real experience with WinPcap, so don't
> kill me if it does not work for you. ;-)
Using pcap_setfilter helps and colinux (conet-bridged-daemon) does use
one too. Currently your filter is
"ether dst 52:54:00:12:34:56 or ((broadcast or multicast) and not ether src 52:54:00:12:34:56)".
The filter used by colinux is
"(ether dst 00:ff:81:24:00:00) or (ether broadcast or multicast) or (ip broadcast or multicast)".
The "and not ether src 52:54:00:12:34:56" part in your filter prevents the VM from seeing own
packets. It doesn't reply to own "ping broadcast" where it does in colinux and VMware Server.
>> +ifdef CONFIG_PCAP
>> +LIBS+=-lpcap
>> +endif
>>
>> On Windows it should be -lwpcap.
>
> Thanks for the tip!
>
>> + if ((fd = pcap_get_selectable_fd(s->handle)) < 0) {
>> + fprintf(stderr, "qemu: pcap_get_selectable_fd failed\n");
>> + goto fail;
>> + }
>> + qemu_set_fd_handler(fd, pcap_send, NULL, s);
>>
>> pcap_get_selectable_fd() is not available on Windows. I just put
>> pcap_send() in main_loop_wait().
>
> I added WinPcap API support from WinPcap manual pages but I have no
> way of checking. Can you try the patch and letting me know?
Since you use the winpcap win32 only parts there is the following warning:
vl.c: In function `net_pcap_init':
vl.c:4247: warning: implicit declaration of function `pcap_getevent'
vl.c:4247: warning: assignment makes pointer from integer without a cast
You can avoid it by defining WPCAP in vl.c:
#if defined(CONFIG_PCAP)
#ifdef _WIN32
#define WPCAP 1
#endif
#include <pcap.h>
#endif
I noticed that if no ifname is passed you try to get one with pcap_lookupdev.
This is broken on winpcap, please see
http://www.winpcap.org/pipermail/winpcap-bugs/2006-May/000220.html
I am not sure if pcap_lookupdev() gets you the "right" interface on non-win32,
so maybe just require ifname (tap does it too)?
Otherwise it seems to compile and run fine.
- Sebastian
next prev parent reply other threads:[~2008-07-18 16:14 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-17 22:12 [Qemu-devel] Re: [PATCH] networking using libpcap Jung-uk Kim
2008-07-18 16:12 ` Sebastian Herbszt [this message]
2008-07-18 20:39 ` Jung-uk Kim
2008-07-18 23:07 ` Jung-uk Kim
2008-07-21 15:35 ` Sebastian Herbszt
2008-07-25 20:51 ` Anthony Liguori
2008-07-26 17:30 ` Sebastian Herbszt
2008-07-27 0:28 ` Anthony Liguori
2008-07-27 12:55 ` Paul Brook
2008-07-23 1:55 ` Anthony Liguori
-- strict thread matches above, loose matches on Subject: below --
2008-07-02 15:02 [Qemu-devel] " Ulrich Hecht
2008-07-02 23:39 ` [Qemu-devel] " Sebastian Herbszt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='043901c8e8f1$6150b260$0201a8c0@zeug' \
--to=herbszt@gmx.de \
--cc=jkim@FreeBSD.org \
--cc=nox@jelal.kn-bremen.de \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).