From 131dc0dafe9d7ba9c80c73dae2522effa7552565 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sat, 14 Mar 1998 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1998-03-14 --- ip/ip.c | 6 ++++++ ip/ip.h | 3 +-- ip/ipifc.c | 8 ++++++++ ip/netlog.c | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ip/ip.c b/ip/ip.c index 637780bf2cd26b2b5986c5f28818544b166a3d7c..8a073d7a85136fbb03ae9cd049d070422d04b72a 100644 --- a/ip/ip.c +++ b/ip/ip.c @@ -112,6 +112,12 @@ ip_init(Fs *f) f->ip = ip; } +void +iprouting(Fs *f, int on) +{ + f->ip->iprouting = on; +} + void ipoput(Fs *f, Block *bp, int gating, int ttl) { diff --git a/ip/ip.h b/ip/ip.h index 1cf7c78122a38c5b00748df5dfd2010a9f814a6a..91bf6cab6df859fd17e38fa8739658c7004aea03 100644 --- a/ip/ip.h +++ b/ip/ip.h @@ -439,7 +439,6 @@ extern Medium ethermedium; extern Medium nullmedium; extern Medium pktmedium; extern Medium tripmedium; -extern Proto ipifc; /* * ipifc.c @@ -469,6 +468,7 @@ extern long ipselftabread(Fs*, char *a, ulong offset, int n); /* * ip.c */ +extern void iprouting(Fs*, int); extern void closeifcconv(Ifcconv*); extern void icmpnoconv(Fs*, Block*); extern void initfrag(IP*, int); @@ -508,5 +508,4 @@ char* commonerror(void); */ extern int debug; extern Fs fs; -extern int iprouting; /* true if routing turned on */ extern void (*igmpreportfn)(Ipifc*, uchar*); diff --git a/ip/ipifc.c b/ip/ipifc.c index 3dc142c08674ce38b16836a4093095c69a58040f..bf74c2e9d61345572bbddc9b0bfb4d65a5023af9 100644 --- a/ip/ipifc.c +++ b/ip/ipifc.c @@ -540,6 +540,7 @@ static char* ipifcctl(Conv* c, char**argv, int argc) { Ipifc *ifc; + int i; ifc = (Ipifc*)c->ptcl; if(strcmp(argv[0], "add") == 0) @@ -554,6 +555,13 @@ ipifcctl(Conv* c, char**argv, int argc) return ipifcjoinmulti(ifc, argv, argc); else if(strcmp(argv[0], "leavemulti") == 0) return ipifcleavemulti(ifc, argv, argc); + else if(strcmp(argv[0], "iprouting") == 0){ + i = 1; + if(argc > 1) + i = atoi(argv[1]); + iprouting(c->p->f, i); + return nil; + } return "unsupported ctl"; } diff --git a/ip/netlog.c b/ip/netlog.c index 9e11753d7844e8bbd3b837fd9a49d302365ae3fd..19d0112d140dda0c23f96c5763937b1ca2c77984 100644 --- a/ip/netlog.c +++ b/ip/netlog.c @@ -145,7 +145,7 @@ netlogread(Fs *f, void *a, ulong, long n) else unlock(f->alog); - sleep(f->alog, netlogready, 0); + sleep(f->alog, netlogready, f); } qunlock(f->alog);