fixes (and debug iprints!) in the tap network device - vx32 - Local 9vx git repository for patches.
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
 (DIR) commit 7de61994a9fdd6f692ac0e47e2e61e195c470538
 (DIR) parent a0474d76cb9af3ad344610854ea3a9bb1d47dc14
 (HTM) Author: Jesus Galan Lopez (yiyus) <yiyu.jgl@gmail.com>
       Date:   Thu, 10 Jun 2010 01:24:42 +0200
       
       fixes (and debug iprints!) in the tap network device
       
       Diffstat:
         src/9vx/a/devether.c                |       6 ++++++
         src/9vx/ethertap.c                  |      12 +++---------
         src/9vx/etherve.c                   |       4 ++--
       
       3 files changed, 11 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/src/9vx/a/devether.c b/src/9vx/a/devether.c
       @@ -163,6 +163,9 @@ etheriq(Ether* ether, Block* bp, int fromwire)
                /* is it for me? */
                tome = memcmp(pkt->d, ether->ea, sizeof(pkt->d)) == 0;
                fromme = memcmp(pkt->s, ether->ea, sizeof(pkt->s)) == 0;
       +iprint("XXX PACK: %2.2ux:%2.2ux:%2.2ux:%2.2ux:%2.2ux:%2.2ux -> %2.2ux:%2.2ux:%2.2ux:%2.2ux:%2.2ux:%2.2ux\n",
       +pkt->s[0], pkt->s[1], pkt->s[2],pkt->s[3], pkt->s[4], pkt->s[5],
       +pkt->d[0], pkt->d[1], pkt->d[2],pkt->d[3], pkt->d[4], pkt->d[5]);
                /*
                 * Multiplex the packet to all the connections which want it.
                 * If the packet is not to be used subsequently (fromwire != 0),
       @@ -443,6 +446,9 @@ etherprobe(int cardno, int ctlrno)
                memmove(ether->ni.addr, ether->ea, Eaddrlen);
                memset(ether->ni.bcast, 0xFF, Eaddrlen);
        
       +iprint("XXX EADDR: %2.2ux:%2.2ux:%2.2ux:%2.2ux:%2.2ux:%2.2ux\n",
       +ether->ea[0], ether->ea[1], ether->ea[2],ether->ea[3], ether->ea[4], ether->ea[5]);
       +
                return ether;
        }
        
 (DIR) diff --git a/src/9vx/ethertap.c b/src/9vx/ethertap.c
       @@ -32,7 +32,7 @@
        extern        char        *macaddr;
        extern        char        *netdev;
        
       -extern        int        eafrom(char *ma);
       +extern        int        eafrom(char *ma, uchar ea[6]);
        
        ttypedef struct Ctlr Ctlr;
        struct Ctlr {
       @@ -64,8 +64,6 @@ opentap(void)
                        close(fd);
                        return -1;
                }
       -        // qemu does this:
       -        // fcntl(fd, F_SETFL, O_NONBLOCK);
                return fd;
        }
        #elif defined(__FreeBSD__)
       @@ -77,11 +75,6 @@ opentap(void)
        
                if((fd = open("/dev/tap", O_RDWR)) < 0)
                        return -1;
       -        fstat(fd, &s);
       -        // we don't need the dev name, qemu does
       -        // dev = devname(s.st_rdev, S_IFCHR);
       -        // qemu does this:
       -        // fcntl(fd, F_SETFL, O_NONBLOCK);
                return fd;
        }
        #endif
       @@ -89,7 +82,7 @@ opentap(void)
        static int
        setup(void)
        {
       -        if (macaddr && (eafrom(macaddr) == -1)){
       +        if (macaddr && (eafrom(macaddr, ea) == -1)){
                        iprint("ve: cannot read mac address\n");
                        return -1;
                }
       @@ -178,6 +171,7 @@ tappnp(Ether* e)
                        return -1;
                memset(&c, 0, sizeof c);
                c.fd = setup();
       +        memcpy(c.ea, ea, Eaddrlen);
                if(c.fd== -1){
                        iprint("ve: tap failed to initialize\n");
                        return -1;
 (DIR) diff --git a/src/9vx/etherve.c b/src/9vx/etherve.c
       @@ -34,7 +34,7 @@ struct Ctlr {
        static uchar ea[6] = {0x00, 0x48, 0x01, 0x23, 0x45, 0x67};
        
        int
       -eafrom(char *ma)
       +eafrom(char *ma, uchar ea[6])
        {
                int i;
                char **nc = &ma;
       @@ -78,7 +78,7 @@ setup(void)
                if ((pd = pcap_open_live(netdev, 1514, 1, 1, errbuf)) == nil)
                        return nil;
        
       -        if (macaddr && (eafrom(macaddr) == -1))
       +        if (macaddr && (eafrom(macaddr, ea) == -1))
                        return veerror("cannot read mac address");
        
                pcap_lookupnet(netdev, &net, &mask, errbuf);