diff --git a/modules/ppp.c b/modules/ppp.c index 97c40dd..571d95b 100644 --- a/modules/ppp.c +++ b/modules/ppp.c @@ -24,7 +24,7 @@ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. * - * $Id: ppp.c,v 1.4 1996/04/04 02:45:29 paulus Exp $ + * $Id: ppp.c,v 1.5 1996/05/28 00:56:18 paulus Exp $ */ /* @@ -58,7 +58,6 @@ #endif /* SVR4 */ #include #include -#include #include "ppp_mod.h" #ifdef __STDC__ @@ -107,8 +106,6 @@ typedef struct upperstr { struct pppstat stats; /* statistics */ time_t last_sent; /* time last NP packet sent */ time_t last_recv; /* time last NP packet rcvd */ - struct bpf_program active_f;/* filter for active packets */ - struct bpf_program pass_f; /* filter for packets to pass */ #ifdef SOL2 kstat_t *kstats; /* stats for netstat */ #endif /* SOL2 */ @@ -381,15 +378,6 @@ pppclose(q, flag) kstat_delete(up->kstats); #endif - if (up->active_f.bf_insns) { - kmem_free(up->active_f.bf_insns, up->active_f.bf_len); - up->active_f.bf_insns = 0; - } - if (up->pass_f.bf_insns) { - kmem_free(up->pass_f.bf_insns, up->pass_f.bf_len); - up->pass_f.bf_insns = 0; - } - q->q_ptr = NULL; WR(q)->q_ptr = NULL; @@ -428,8 +416,6 @@ pppuwput(q, mp) mblk_t *mq; struct ppp_idle *pip; int len; - struct bpf_insn *ip; - struct bpf_program *dest; us = (upperstr_t *) q->q_ptr; switch (mp->b_datap->db_type) { @@ -637,8 +623,11 @@ pppuwput(q, mp) for (nps = us->next; nps != 0; nps = nps->next) if (nps->sap == sap) break; - if (nps == 0) + if (nps == 0) { + if (us->flags & US_DBGLOG) + DPRINT2("ppp/%d: no stream for sap %x\n", us->mn, sap); break; + } nps->npmode = (enum NPmode) ((int *)mp->b_cont->b_rptr)[1]; if (nps->npmode == NPMODE_DROP || nps->npmode == NPMODE_ERROR) flushq(WR(nps->q), FLUSHDATA); @@ -669,34 +658,6 @@ pppuwput(q, mp) error = 0; break; - case PPPIO_PASSFILT: - case PPPIO_ACTIVEFILT: - if ((us->flags & US_CONTROL) == 0) - break; - len = iop->ioc_count; - if (len > BPF_MAXINSNS * sizeof(struct bpf_insn) - || len % sizeof(struct bpf_insn) != 0) - break; - if (len > 0) { - if (!bpf_validate((struct bpf_insn *) mp->b_cont->b_rptr, - len / sizeof(struct bpf_insn))) - break; - ip = (struct bpf_insn *) ALLOC_NOSLEEP(len); - if (ip == 0) { - error = ENOSR; - break; - } - bcopy((caddr_t)mp->b_cont->b_rptr, (caddr_t)ip, len); - } else - ip = 0; - dest = iop->ioc_cmd == PPPIO_ACTIVEFILT? - &us->active_f: &us->pass_f; - if (dest->bf_insns != 0) - kmem_free((caddr_t) dest->bf_insns, dest->bf_len); - dest->bf_len = len; - dest->bf_insns = ip; - break; - #ifdef LACHTCP case SIOCSIFNAME: printf("SIOCSIFNAME\n"); @@ -864,7 +825,7 @@ dlpi_request(q, mp, us) dl_bind_ack_t *ackp; if (us->flags & US_DBGLOG) - cmn_err(CE_CONT, "ppp/%d: dlpi prim %x len=%d\n", us->mn, + DPRINT3("ppp/%d: dlpi prim %x len=%d\n", us->mn, d->dl_primitive, size); switch (d->dl_primitive) { case DL_INFO_REQ: @@ -1023,9 +984,9 @@ dlpi_request(q, mp, us) mp->b_rptr[1] = PPP_UI; mp->b_rptr[2] = us->sap >> 8; mp->b_rptr[3] = us->sap; - if (!pass_packet(ppa, mp, 1)) + if (!pass_packet(ppa, mp, 1)) { freemsg(mp); - else { + } else { if (!send_data(mp, us)) putq(q, mp); } @@ -1125,25 +1086,15 @@ pass_packet(ppa, mp, outbound) mblk_t *mp; int outbound; { - int len, adr, pass; - - if (PPP_PROTOCOL(mp->b_rptr) >= 0x8000 - || (ppa->pass_f.bf_insns == 0 && ppa->active_f.bf_insns == 0)) - return 1; - len = msgdsize(mp); - adr = *mp->b_rptr; - *mp->b_rptr = outbound; - pass = ppa->pass_f.bf_insns == 0 - || bpf_filter(ppa->pass_f.bf_insns, mp, len, 0); - if (pass && (ppa->active_f.bf_insns == 0 - || bpf_filter(ppa->active_f.bf_insns, mp, len, 0))) { - if (outbound) - ppa->last_sent = time; - else - ppa->last_recv = time; - } - *mp->b_rptr = adr; - return pass; + /* + * Here is where we might, in future, decide whether to pass + * or drop the packet, and whether it counts as link activity. + */ + if (outbound) + ppa->last_sent = time; + else + ppa->last_recv = time; + return 1; } static int @@ -1154,10 +1105,12 @@ send_data(mp, us) queue_t *q; upperstr_t *ppa; - if (us->flags & US_BLOCKED || us->npmode == NPMODE_QUEUE) + if ((us->flags & US_BLOCKED) || us->npmode == NPMODE_QUEUE) return 0; ppa = us->ppa; if (ppa == 0 || us->npmode == NPMODE_DROP || us->npmode == NPMODE_ERROR) { + if (us->flags & US_DBGLOG) + DPRINT2("ppp/%d: dropping pkt (npmode=%d)\n", us->mn, us->npmode); freemsg(mp); return 1; } diff --git a/pppd/Makefile.bsd b/pppd/Makefile.bsd index 5389881..1ac41fe 100644 --- a/pppd/Makefile.bsd +++ b/pppd/Makefile.bsd @@ -1,12 +1,11 @@ -# $Id: Makefile.bsd,v 1.9 1996/04/04 03:25:59 paulus Exp $ +# $Id: Makefile.bsd,v 1.10 1996/05/28 00:54:20 paulus Exp $ BINDIR?= /usr/sbin CFLAGS+= -g -I.. -DHAVE_PATHS_H PROG= pppd SRCS= main.c magic.c fsm.c lcp.c ipcp.c upap.c chap.c md5.c ccp.c \ - demand.c auth.c options.c sys-bsd.c \ - gencode.c grammar.c scanner.c nametoaddr.c optimize.c bpf_filter.c + demand.c auth.c options.c sys-bsd.c MAN= pppd.cat8 # The next line is for NetBSD-1.0 and other older *BSD systems. MAN8= pppd.0 diff --git a/pppd/Makefile.sol2 b/pppd/Makefile.sol2 index c2e8c43..fa52c8e 100644 --- a/pppd/Makefile.sol2 +++ b/pppd/Makefile.sol2 @@ -1,6 +1,6 @@ # # Makefile for pppd under Solaris 2. -# $Id: Makefile.sol2,v 1.5 1996/04/04 03:26:01 paulus Exp $ +# $Id: Makefile.sol2,v 1.6 1996/05/28 00:54:22 paulus Exp $ # BINDIR = /usr/local/bin @@ -8,27 +8,22 @@ MANDIR = /usr/local/man CC = gcc COPTS = -g -O2 +LIBS = -lsocket -lnsl # For Sun cc #COPTS = -g -O -Xa -w -CFLAGS = $(COPTS) -I.. +CFLAGS = $(COPTS) -I.. -DSVR4 INSTALL = /usr/sbin/install all: pppd OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \ - auth.o options.o demand.o sys-svr4.o \ - gencode.o grammar.o scanner.o nametoaddr.o optimize.o bpf_filter.o - -scanner.o: y.tab.h -y.tab.h grammar.o: grammar.y - $(YACC) $(YFLAGS) -d grammar.y - $(CC) $(CFLAGS) -c -o grammar.o y.tab.c + auth.o options.o demand.o sys-svr4.o pppd: $(OBJS) - $(CC) -o pppd $(OBJS) -lsocket -lnsl + $(CC) -o pppd $(OBJS) $(LIBS) install: $(INSTALL) -f $(BINDIR) -m 4755 -u root pppd diff --git a/pppd/Makefile.sunos4 b/pppd/Makefile.sunos4 index 21762ba..98ffb2f 100644 --- a/pppd/Makefile.sunos4 +++ b/pppd/Makefile.sunos4 @@ -1,6 +1,6 @@ # # Makefile for pppd under SunOS 4. -# $Id: Makefile.sunos4,v 1.4 1996/04/04 03:26:02 paulus Exp $ +# $Id: Makefile.sunos4,v 1.5 1996/05/28 00:54:23 paulus Exp $ # BINDIR = /usr/local/etc @@ -9,19 +9,19 @@ MANDIR = /usr/local/man CC = gcc COPTS = -g -O2 #COPTS = -O +LIBS = -CFLAGS = $(COPTS) -I.. +CFLAGS = $(COPTS) -I.. -DSUNOS4 INSTALL = install -o root -g daemon all: pppd OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \ - auth.o options.o demand.o sys-sunos4.o \ - gencode.o grammar.o scanner.o nametoaddr.o optimize.o + auth.o options.o demand.o sys-sunos4.o pppd: $(OBJS) - $(CC) -o pppd $(OBJS) + $(CC) -o pppd $(OBJS) $(LIBS) install: $(INSTALL) -c -m 4555 pppd $(BINDIR)/pppd diff --git a/pppd/Makefile.svr4 b/pppd/Makefile.svr4 index 22b5f88..e852680 100644 --- a/pppd/Makefile.svr4 +++ b/pppd/Makefile.svr4 @@ -1,6 +1,6 @@ # # Makefile for pppd under Solaris 2. -# $Id: Makefile.svr4,v 1.6 1996/04/04 03:26:02 paulus Exp $ +# $Id: Makefile.svr4,v 1.7 1996/05/28 00:54:23 paulus Exp $ # BINDIR = /usr/local/bin @@ -8,18 +8,18 @@ MANDIR = /usr/local/man CC = gcc COPTS = -g -O2 -CFLAGS = $(COPTS) -I.. +CFLAGS = $(COPTS) -I.. -DSVR4 +LIBS = -lsocket -lnsl INSTALL = /usr/sbin/install all: pppd OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \ - auth.o options.o demand.o sys-svr4.o \ - gencode.o grammar.o scanner.o nametoaddr.o optimize.o + auth.o options.o demand.o sys-svr4.o pppd: $(OBJS) - $(CC) -o pppd $(OBJS) -lsocket -lnsl + $(CC) -o pppd $(OBJS) $(LIBS) install: $(INSTALL) -f $(BINDIR) -m 4755 -u root pppd