vx32

Local 9vx git repository for patches.
git clone git://r-36.net/vx32
Log | Files | Refs

commit 7de61994a9fdd6f692ac0e47e2e61e195c470538
parent a0474d76cb9af3ad344610854ea3a9bb1d47dc14
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(-)

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; } 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]); typedef 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; 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);