From owner-freebsd-questions@FreeBSD.ORG Wed May 14 21:41:24 2008 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 82643106567A for ; Wed, 14 May 2008 21:41:24 +0000 (UTC) (envelope-from wojtek@wojtek.tensor.gdynia.pl) Received: from wojtek.tensor.gdynia.pl (wojtek.tensor.gdynia.pl [IPv6:2001:4070:101:2::1]) by mx1.freebsd.org (Postfix) with ESMTP id 9F2738FC20 for ; Wed, 14 May 2008 21:41:23 +0000 (UTC) (envelope-from wojtek@wojtek.tensor.gdynia.pl) Received: from wojtek.tensor.gdynia.pl (localhost [IPv6:::1]) by wojtek.tensor.gdynia.pl (8.14.2/8.14.2) with ESMTP id m4ELf9Hu002340; Wed, 14 May 2008 23:41:09 +0200 (CEST) (envelope-from wojtek@wojtek.tensor.gdynia.pl) Received: from localhost (wojtek@localhost) by wojtek.tensor.gdynia.pl (8.14.2/8.14.2/Submit) with ESMTP id m4ELf8sb002337; Wed, 14 May 2008 23:41:09 +0200 (CEST) (envelope-from wojtek@wojtek.tensor.gdynia.pl) Date: Wed, 14 May 2008 23:41:08 +0200 (CEST) From: Wojciech Puchar To: Bob McConnell In-Reply-To: Message-ID: <20080514234101.P2316@wojtek.tensor.gdynia.pl> References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-questions@freebsd.org Subject: Re: Unable to talk to tap(4) X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 May 2008 21:41:24 -0000 > > The basic setup sequence is: > > ifconfig tap0 create > ifconfig tap0 inet 10.3.4.254/24 > route -v add 10.3.4.0/24 10.3.4.254 ifconfig tap0 up ? > > At this point, I can ping that address and my application can open > either /dev/net/tap0 or /dev/tap0. But when I try to read() from those > devices, I have problems. > > /dev/net/tap0 always returns with errno = 19 (ENODEV - Operation not > supported?). > > /dev/tap0 returns errno = 14 (EFAULT - bad address). At this point, > 'ifconfig' shows that the inet address is no longer attached and > 'netstat -rn' shows the route I added above has been dropped. > > I have been searching for several days to find more information about > this device, but have not found anything specific to FreeBSD. All of the > examples and instructions are for Linux or tun(4), both of which are > significantly different devices. > > My code so far: > > ----------------- tear along dotted line ----------------- > tapFD = open ("/dev/tap0", O_RDWR); > if (tapFD < 0) { > fprintf (stderr, "Failed to open /dev/tap0: %d.\n", tapFD); > exit (2); > } > > fprintf (stderr, "Successfully opened /dev/tap0.\n"); > > unsigned char * buffer = (unsigned char*)malloc(1514); > if (buffer = NULL) { > fprintf (stderr, "No memory available.\n"); > close (tapFD); > exit(3); > } > int lenth = 0; > > again: > lenth = read(tapFD, buffer, 1514); > if (lenth < 0) { > int error = errno; > if (error == EINTR) > goto again; > fprintf (stderr, "tap read error: %d\n", error); > } > else { > int index; > > fprintf (stdout, "%d bytes received.\n", lenth); > for (index = 0; index < lenth; ++index) { > fprintf (stdout, " %02x", buffer[index]); > if (index % 16 == 15) > fprintf (stdout, "\n"); > } > fprintf (stdout, "\n"); > } > > close (tapFD); > ----------------- tear along dotted line ----------------- > > Just in the interest of full disclosure, I am running a stock > installation of FreeBSD 7.0 in a VMWare 5.5.4 session on WinXP. There > are also two virtual Ethernet cards, one connected to a host only > subnet, the other bridged onto a real Ethernet segment. I am using IPFW > with DummyNet to inject some measure of reality into this system. > > This is the beginnings of a test bench for several commercial > applications. My goal, once I get this device working, is to write an > application for tap(4) that will emulate a few hundred embedded devices, > each opening a socket directly to a server, which currently resides in > another VM session on the host only network. This setup, coupled with > real devices on the external network should give us a much more > realistic environment for stress testing our systems. > > Thank you, > > Bob McConnell > Principal Communications Programmer > The CBORD Group, Inc. > 61 Brown Road > Ithaca NY, 14850 > Phone 607 257-2410 > FAX 607 257-1902 > Email rvm@cbord.com > Web www.cbord.com > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org" > >