~kris/9p

9hist

4cf72c7afeb8e442285b786d160d0caffee44c9d — David du Colombier 28 years ago 8db1cab
Plan 9 from Bell Labs 1998-04-23
7 files changed, 41 insertions(+), 5 deletions(-)

M ip/devip.c
M ip/ethermedium.c
M ip/ip.h
M ip/ipifc.c
M ip/nullmedium.c
M ip/pktmedium.c
M pc/etherif.h
M ip/devip.c => ip/devip.c +5 -0
@@ 54,6 54,9 @@ QLock	fslock;
Fs	*ipfs[Nfs];	/* attached fs's */
Queue	*qlog;

extern void nullmediumlink(void);
extern void pktmediumlink(void);

static int
ip3gen(Chan *c, int i, Dir *dp)
{


@@ 215,6 218,8 @@ ipgen(Chan *c, Dirtab*, int, int s, Dir *dp)
static void
ipreset(void)
{
	nullmediumlink();
	pktmediumlink();
}

static void

M ip/ethermedium.c => ip/ethermedium.c +6 -0
@@ 515,3 515,9 @@ multicastarp(Fs *f, Arpent *a, uchar *mac)
	/* let arp take care of it */
	return nil;
}

void
ethermediumlink(void)
{
	addipmedium(&ethermedium);
}

M ip/ip.h => ip/ip.h +1 -0
@@ 446,6 446,7 @@ extern Medium	tripmedium;
 *  ipifc.c
 */
extern Medium*	ipfindmedium(char *name);
extern void	addipmedium(Medium *med);
extern int	ipforme(Fs*, uchar *addr);
extern int	ipismulticast(uchar *);
extern Ipifc*	findipifc(Fs*, uchar *remote, int type);

M ip/ipifc.c => ip/ipifc.c +16 -5
@@ 17,12 17,8 @@ enum {
	QMAX		= 64*1024-1,
};

Medium *media[] =
Medium *media[32] =
{
	&ethermedium,
	&pktmedium,
	&nullmedium,
	&tripmedium,
	0
};



@@ 72,6 68,21 @@ static char*	ipifcjoinmulti(Ipifc *ifc, char **argv, int argc);
static char*	ipifcleavemulti(Ipifc *ifc, char **argv, int argc);

/*
 *  link in a new medium
 */
void
addipmedium(Medium *med)
{
	int i;

	for(i = 0; i < nelem(media)-1; i++)
		if(media[i] == nil){
			media[i] = med;
			break;
		}
}

/*
 *  find the medium with this name
 */
Medium*

M ip/nullmedium.c => ip/nullmedium.c +6 -0
@@ 45,3 45,9 @@ Medium nullmedium =
	nil,		/* leave multi */
	0,		/* don't unbind on last close */
};

void
nullmediumlink(void)
{
	addipmedium(&nullmedium);
}

M ip/pktmedium.c => ip/pktmedium.c +6 -0
@@ 74,3 74,9 @@ pktin(Fs *f, Ipifc *ifc, Block *bp)
	else
		ipiput(f, ifc->lifc->local, bp);
}

void
pktmediumlink(void)
{
	addipmedium(&pktmedium);
}

M pc/etherif.h => pc/etherif.h +1 -0
@@ 6,6 6,7 @@ enum {
typedef struct Ether Ether;
struct Ether {
	ISAConf;			/* hardware info */

	int	ctlrno;
	int	tbdf;			/* type+busno+devno+funcno */
	int	mbps;			/* Mbps */