From f9742bb2830daff86cd7b02dbb88155c37241705 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Sat, 2 May 1998 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1998-05-02 --- carrera/main.c | 1 + ip/devip.c | 18 +++++++++++++----- ip/ipmux.c | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/carrera/main.c b/carrera/main.c index fd6a3da73f32c96fd2f6af446c8388ede7187b45..de4512f03e2d230de6bb7fd15064a34be1d0b4a0 100644 --- a/carrera/main.c +++ b/carrera/main.c @@ -59,6 +59,7 @@ main(void) pageinit(); procinit0(); initseg(); + links(); chandevreset(); swapinit(); userinit(); diff --git a/ip/devip.c b/ip/devip.c index a3d213a79cb6f061dc9164061977dfa7f06e1250..28e970489a7741ac644d8bb743e5d0622808ef95 100644 --- a/ip/devip.c +++ b/ip/devip.c @@ -852,7 +852,7 @@ ipwrite(Chan* ch, char* a, long n, vlong) Proto *x; char *p; Cmdbuf *cb; - uchar ia[IPaddrlen]; + uchar ia[IPaddrlen], ma[IPaddrlen]; Fs *f; f = ipfs[ch->dev]; @@ -904,10 +904,18 @@ ipwrite(Chan* ch, char* a, long n, vlong) else if(strcmp(cb->f[0], "addmulti") == 0){ if(cb->nf < 2) error("addmulti needs interface address"); - if(!ipismulticast(c->raddr)) - error("addmulti for a non multicast address"); - parseip(ia, cb->f[1]); - ipifcaddmulti(c, c->raddr, ia); + if(cb->nf == 2){ + if(!ipismulticast(c->raddr)) + error("addmulti for a non multicast address"); + parseip(ia, cb->f[1]); + ipifcaddmulti(c, c->raddr, ia); + } else { + parseip(ma, cb->f[2]); + if(!ipismulticast(ma)) + error("addmulti for a non multicast address"); + parseip(ia, cb->f[1]); + ipifcaddmulti(c, ma, ia); + } } else if(strcmp(cb->f[0], "remmulti") == 0){ if(cb->nf < 2) error("remmulti needs interface address"); diff --git a/ip/ipmux.c b/ip/ipmux.c index df7edb22c647b89e78f3175c09d2c09bdac8934d..9f35ebce369d7b4c46be13e3e20f8fa6899ace0f 100644 --- a/ip/ipmux.c +++ b/ip/ipmux.c @@ -522,7 +522,7 @@ ipmuxremove(Ipmux **l, Ipmux *f) /* * connection request is a semi separated list of filters - * e.g. proto=17;dat[0:4]=11aa22bb;ifc=135.104.9.2 + * e.g. proto=17;dat[0:4]=11aa22bb;ifc=135.104.9.2&255.255.255.0 * * there's no protection against overlapping specs. */