From: Wojciech Puchar >> >> 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 > > ? >
'ifconfig' already showed the interface flag UP. Adding this command to the sequence has no effect on it. I also tried 'ifconfig tap0 promisc'. Is EFAULT really a memory access exception? >> >> 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 _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"