From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BZdEO-0005Ap-Q0 for qemu-devel@nongnu.org; Sun, 13 Jun 2004 18:13:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BZdEM-0005AR-KS for qemu-devel@nongnu.org; Sun, 13 Jun 2004 18:13:36 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BZdEM-0005AH-Hz for qemu-devel@nongnu.org; Sun, 13 Jun 2004 18:13:34 -0400 Received: from [204.127.202.55] (helo=sccrmhc11.comcast.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BZdDT-0002pX-GO for qemu-devel@nongnu.org; Sun, 13 Jun 2004 18:12:39 -0400 Date: Sun, 13 Jun 2004 18:12:36 -0400 From: Christopher Nehren Subject: Re: [Qemu-devel] Anyone have functioning networking with a FreeBSD host? Message-ID: <20040613221236.GA2844@prophecy.dyndns.org> References: <1087125690.597.27.camel@pcgem.rdg.cyberkinetica.com> <200406131859.i5DIxQOK098661@gate.bitblocks.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="M9NhX3UHpAaciwkO" Content-Disposition: inline In-Reply-To: <200406131859.i5DIxQOK098661@gate.bitblocks.com> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Bakul Shah Cc: qemu-devel@nongnu.org --M9NhX3UHpAaciwkO Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Jun 13, 2004 at 14:59:26 EDT, Bakul Shah scribbled these curious markings: > I am using /dev/tap based networking, not the usermode one. > It all works fine (thanks to some help from Juergen Lock). > BTW, I am using the latest FreeBSD port & > Freebsd-5.2-current. Okay, I got mine working. :) > - when using the tap device you need to ifconfig the interface. > You can do this manually or via a script. Either copy this > script to /etc/qemu-ifup or run it from the command line. > Something like >=20 > echo ifconfig $1 192.168.0.1 > /etc/qemu-ifup > chmod +x /etc/qemu-ifup >=20 > This needs to be done on the *host*. Right, got that. > - make sure you are using -pci option (I needed this for > a FreeBSD guest -- do not know why). This option (the undocumented one, sigh) was the one that I needed. With it, I can get both tap and user-mode networking to function. :) For why=20 it's needed, read Brat Watson's later message to this thread, message ID <20040613201706.25684.qmail@web51809.mail.yahoo.com>. > - You may wish to use the linux-test image from the qemu > site, for debugging all this. Give the *guest OS* an > address like 192.168.0.2 or something in the same subnet as > the tap interface. Once the OS is up and its interface > configured, you should be able to ping the this address > from the host FreeBSD. If this step works, you have a > working connection between the guest and the host; the > remaining work is all networking related, nothing to do > with qemu per se. I already had NetBSD 1.6.2 fully installed using the i386cd.iso image, so I tested with that. > - Networking related changes: you will have to enable > forwarding on the host. You will likely need to add static > routes or update your NAT rules or both. You may have to > run dhcp proxy on the host.... Someone should come up with > a script that figures out the right thing to do based on > your setup. Right; I have PF set up to do that. I love PF. With user-mode networking, though, you don't need this. > Some random thoughts: >=20 > * When qemu opens the tap device, it always returns a new > device. You can change this behavior by patching vl.c. On > line 1104 change the `for' loop to start at 0 instead of -1 > -- line # as per the patched sources in the FreeBSD port. > This loop first tries /dev/tap and then /dev/tap0, > /dev/tap1 and so on. The change skips /dev/tap. Actually, I didn't see this. It kept using /dev/tap, but it was showing up in ifconfig as tap0. Weird. > * I am not sure if removing suser() test in if_tap.c is the > right thing to do from a security perspective so I left this > alone. My _guess_ is that it would prevent any old user from creating 52k tap devices, and the consequential resource starvation. I'm going to see if I can't add a sysctl to control this; watch hackers@ and security@ for a post by me in the near future. > * I don't see why /dev/tap is an exclusive open device. If > multiple opens were allowed, a number of VMs can be on the > same simulated network. That is, qemu for each guest can > open the same device and they will all *see* each other as > well as the host! Do you mean each /dev/tap interface being exclusive? Well, it _is_ bound to the individual process, which may have something to do with it. =20 > * I first thought qemu should also have a qemu-ifdown script > but may be it is better to wrap qemu in a shell script that > does the initial setup and final cleanup. Perhaps a good idea. It's more configurable that way, too. =20 > * It would be nice if qemu exited only on a power down > event instead of a reboot. May be as an option. Again, a good idea, at least IMO. =20 > Overall this is a very impressive emulator! So far I have > brought up Linux, FreeBSD-5.2.1 and a trial version of Window > 2003. Kudos to Fabrice Bellard and the other wizardly > programmers! Indeed. 't is quite wonderful. --=20 I abhor a system designed for the "user", if that word is a coded pejorative meaning "stupid and unsophisticated". -- Ken Thompson - Unix is user friendly. However, it isn't idiot friendly. --M9NhX3UHpAaciwkO Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (FreeBSD) iD8DBQFAzNFUk/lo7zvzJioRAj94AJ4356VM+sJPKe65FnGVSX5/z6qBWACfcsSD uef0ohdKdIEN1B4G4UwpL1E= =8SLo -----END PGP SIGNATURE----- --M9NhX3UHpAaciwkO--