From ab5559aaabd1167a18ac882e64d97c5adc0e7d03 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Mon, 11 Jun 2001 11:44:34 +0000 Subject: Initial revision --- mdk-stage1/ppp/sunos4/Makedefs | 13 ++++ mdk-stage1/ppp/sunos4/Makefile | 57 +++++++++++++++++ mdk-stage1/ppp/sunos4/Makefile.top | 46 ++++++++++++++ mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c | 57 +++++++++++++++++ mdk-stage1/ppp/sunos4/ppp.INSTALL | 104 ++++++++++++++++++++++++++++++++ mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c | 57 +++++++++++++++++ mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c | 57 +++++++++++++++++ mdk-stage1/ppp/sunos4/ppp_vdcmd.c | 81 +++++++++++++++++++++++++ 8 files changed, 472 insertions(+) create mode 100644 mdk-stage1/ppp/sunos4/Makedefs create mode 100644 mdk-stage1/ppp/sunos4/Makefile create mode 100644 mdk-stage1/ppp/sunos4/Makefile.top create mode 100644 mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c create mode 100755 mdk-stage1/ppp/sunos4/ppp.INSTALL create mode 100644 mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c create mode 100644 mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c create mode 100644 mdk-stage1/ppp/sunos4/ppp_vdcmd.c (limited to 'mdk-stage1/ppp/sunos4') diff --git a/mdk-stage1/ppp/sunos4/Makedefs b/mdk-stage1/ppp/sunos4/Makedefs new file mode 100644 index 000000000..8b56a2b67 --- /dev/null +++ b/mdk-stage1/ppp/sunos4/Makedefs @@ -0,0 +1,13 @@ +# +# defines common to several Makefiles +# + +INSTALL= install -o root -g daemon + +BINDIR = /usr/local/etc +MANDIR = /usr/local/man +ETCDIR = /etc/ppp + +# To use gcc, uncomment the next line. +#CC = gcc +COPTS = -O diff --git a/mdk-stage1/ppp/sunos4/Makefile b/mdk-stage1/ppp/sunos4/Makefile new file mode 100644 index 000000000..701e24e14 --- /dev/null +++ b/mdk-stage1/ppp/sunos4/Makefile @@ -0,0 +1,57 @@ +# +# Makefile for STREAMS modules for SunOS 4. +# +# $Id$ +# + +include Makedefs + +LD = /usr/bin/ld # make sure we don't get gnu ld + +# Defining __$(ARCH)__ is for gcc's broken version of sun/vddrv.h. +ARCH = `/bin/arch -k` +DEFINES= -DKERNEL -D_KERNEL -DSUNOS4 -D$(ARCH) -D__$(ARCH)__ \ + -DDEBUG -DNO_DLPI -DSNIT_SUPPORT +CFLAGS= $(DEFINES) -I../include $(COPTS) + +MODULES= ppp_mod.o ppp_ahdl_mod.o ppp_comp_mod.o if_ppp_mod.o + +all: $(MODULES) + +ppp_mod.o: ppp.o ppp_vdcmd.o + $(LD) -r -o ppp_mod.o ppp.o ppp_vdcmd.o + +ppp_ahdl_mod.o: ppp_ahdlc.o ppp_ahdlc_vdcmd.o + $(LD) -r -o ppp_ahdl_mod.o ppp_ahdlc.o ppp_ahdlc_vdcmd.o + +COMP_OBJS = ppp_comp.o bsd-comp.o deflate.o zlib.o vjcompress.o \ + ppp_comp_vdcmd.o +ppp_comp_mod.o: $(COMP_OBJS) + $(LD) -r -o $@ $(COMP_OBJS) + +if_ppp.o: ../modules/if_ppp.c + $(CC) $(CFLAGS) -c $? +bsd-comp.o: ../modules/bsd-comp.c + $(CC) $(CFLAGS) -c $? +deflate.o: ../modules/deflate.c + $(CC) $(CFLAGS) -c $? +ppp.o: ../modules/ppp.c + $(CC) $(CFLAGS) -c $? +ppp_ahdlc.o: ../modules/ppp_ahdlc.c + $(CC) $(CFLAGS) -c $? +ppp_comp.o: ../modules/ppp_comp.c + $(CC) $(CFLAGS) -c $? +vjcompress.o: ../modules/vjcompress.c + $(CC) $(CFLAGS) -c $? +zlib.o: ../common/zlib.c + $(CC) $(CFLAGS) -c $? + +if_ppp_mod.o: if_ppp.o if_ppp_vdcmd.o + $(LD) -r -o if_ppp_mod.o if_ppp.o if_ppp_vdcmd.o + +install: all + $(INSTALL) $(MODULES) $(BINDIR) + ./ppp.INSTALL + +clean: + rm -f ppp ppp_comp ppp_ahdl *.o *~ core diff --git a/mdk-stage1/ppp/sunos4/Makefile.top b/mdk-stage1/ppp/sunos4/Makefile.top new file mode 100644 index 000000000..c86e0884d --- /dev/null +++ b/mdk-stage1/ppp/sunos4/Makefile.top @@ -0,0 +1,46 @@ +# +# ppp top level makefile +# + +include sunos4/Makedefs + +all: + cd chat; $(MAKE) all + cd pppd; $(MAKE) all + cd pppstats; $(MAKE) all + cd sunos4; $(MAKE) all + cd pppdump; $(MAKE) all + +install: $(BINDIR) $(MANDIR)/man8 install-progs install-etcppp + +install-progs: + cd chat; $(MAKE) install + cd pppd; $(MAKE) install + cd pppstats; $(MAKE) install + cd pppdump; $(MAKE) install + cd sunos4; $(MAKE) install + +install-etcppp: $(ETCDIR) $(ETCDIR)/options $(ETCDIR)/pap-secrets \ + $(ETCDIR)/chap-secrets + +$(ETCDIR)/options: + $(INSTALL) -c -m 644 etc.ppp/options $@ +$(ETCDIR)/pap-secrets: + $(INSTALL) -c -m 600 etc.ppp/pap-secrets $@ +$(ETCDIR)/chap-secrets: + $(INSTALL) -c -m 600 etc.ppp/chap-secrets $@ + +$(BINDIR): + $(INSTALL) -d -m 755 $@ +$(MANDIR)/man8: + $(INSTALL) -d -m 755 $@ +$(ETCDIR): + $(INSTALL) -d -m 755 $@ + +clean: + rm -f *~ + cd chat; $(MAKE) clean + cd pppd; $(MAKE) clean + cd pppstats; $(MAKE) clean + cd sunos4; $(MAKE) clean + diff --git a/mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c b/mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c new file mode 100644 index 000000000..2bf9710f4 --- /dev/null +++ b/mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +extern struct streamtab if_pppinfo; + +static struct vdldrv vd = { + VDMAGIC_USER, + "if_ppp" +}; + +static int fmodsw_index = -1; + +int +if_ppp_vdcmd(fun, vdp, vdi, vds) + unsigned int fun; + struct vddrv *vdp; + addr_t vdi; + struct vdstat *vds; +{ + int n, error; + + switch (fun) { + case VDLOAD: + vdp->vdd_vdtab = (struct vdlinkage *) &vd; + if (fmodsw_index >= 0) + return EBUSY; + for (n = 0; n < fmodcnt; ++n) + if (fmodsw[n].f_str == 0) + break; + if (n >= fmodcnt) + return ENODEV; + strncpy(fmodsw[n].f_name, vd.Drv_name, FMNAMESZ+1); + fmodsw[n].f_str = &if_pppinfo; + fmodsw_index = n; + break; + + case VDUNLOAD: + if (fmodsw_index <= 0) + return EINVAL; + error = if_ppp_unload(); + if (error != 0) + return error; + fmodsw[fmodsw_index].f_name[0] = 0; + fmodsw[fmodsw_index].f_str = 0; + fmodsw_index = -1; + break; + + case VDSTAT: + break; + + default: + return EIO; + } + return 0; +} diff --git a/mdk-stage1/ppp/sunos4/ppp.INSTALL b/mdk-stage1/ppp/sunos4/ppp.INSTALL new file mode 100755 index 000000000..0018bf8d0 --- /dev/null +++ b/mdk-stage1/ppp/sunos4/ppp.INSTALL @@ -0,0 +1,104 @@ +#!/bin/sh + +# Script for loading, unloading, etc. ppp modules. + +moddir=/usr/local/etc +etcppp=/etc/ppp + +PATH=/usr/etc:/usr/bin + +# Check that we're superuser +touch /tmp/su$$ +if chown root /tmp/su$$ >/dev/null; then : +else + echo "$0: must be root." + rm -f /tmp/su$$ + exit 1 +fi +rm -f /tmp/su$$ + +case "$0" in +*ppp.INSTALL) + if [ ! -f ppp.INSTALL ]; then + echo "ppp.INSTALL: not found" + exit 1 + fi + for n in INSTALL LOAD UNLOAD MKDEV RMDEV; do + if [ -h /dev/ppp.$n -o -f /dev/ppp.$n ]; then + rm /dev/ppp.$n + fi + done + cp ppp.INSTALL /dev + for n in LOAD UNLOAD MKDEV RMDEV; do + ln -s ppp.INSTALL /dev/ppp.$n + done + ;; + +*ppp.LOAD) + if modstat | grep -w ppp >/dev/null; then + echo "ppp driver is already loaded." + exit 1 + fi + if modstat | grep -w if_ppp >/dev/null; then + echo "if_ppp module already loaded: not reloading." + else + echo -n "if_ppp: " + modload $moddir/if_ppp_mod.o -sym -entry _if_ppp_vdcmd \ + -o $etcppp/if_ppp_mod + fi + echo -n "ppp: " + modload $moddir/ppp_mod.o -sym -entry _ppp_vdcmd -exec /dev/ppp.MKDEV \ + -o $etcppp/ppp_mod + echo -n "ppp_comp: " + modload $moddir/ppp_comp_mod.o -sym -entry _ppp_comp_vdcmd \ + -o $etcppp/ppp_comp + echo -n "ppp_ahdl: " + modload $moddir/ppp_ahdl_mod.o -sym -entry _ppp_ahdlc_vdcmd \ + -o $etcppp/ppp_ahdl + exit 0 + ;; + +*ppp.MKDEV) + # args: module number, type, b-major, c-major + if [ $# -ne 4 ]; then + echo "Usage: $0 module-id module-type b-major c-major" + exit 1 + fi + if [ "$2" -ne "12345607" -a "$2" -ne "12345600" ]; then + echo "$0: $2: bad module type" + exit 1 + fi + rm -f /dev/ppp + # we "just know" that 37 is the major number of the clone driver + mknod /dev/ppp c 37 $4 + chmod 644 /dev/ppp + exit 0 + ;; + +*ppp.UNLOAD) + stat=0 + if modstat | grep -w if_ppp >/dev/null; then + echo "$0: not unloading if_ppp module." + fi + for mod in ppp ppp_comp ppp_ahdl; do + id=`modstat | grep -w $mod | awk '{print $1}'` + if [ x$id = x ]; then + echo "$mod is not loaded." + stat=1 + else + modunload -id $id + fi + done + exit $stat + ;; + +*ppp.RMDEV) + rm -f /dev/ppp + exit 0 + ;; + +*) + echo "Invocation names: ppp.INSTALL ppp.LOAD ppp.UNLOAD ppp.MKDEV ppp.RMDEV" + exit 1 + ;; +esac diff --git a/mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c b/mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c new file mode 100644 index 000000000..2dbe8262b --- /dev/null +++ b/mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +extern struct streamtab ppp_ahdlcinfo; +extern int ppp_ahdlc_count; + +static struct vdldrv vd = { + VDMAGIC_USER, + "ppp_ahdl" +}; + +static int fmodsw_index = -1; + +int +ppp_ahdlc_vdcmd(fun, vdp, vdi, vds) + unsigned int fun; + struct vddrv *vdp; + addr_t vdi; + struct vdstat *vds; +{ + int n; + + switch (fun) { + case VDLOAD: + vdp->vdd_vdtab = (struct vdlinkage *) &vd; + if (fmodsw_index >= 0) + return EBUSY; + for (n = 0; n < fmodcnt; ++n) + if (fmodsw[n].f_str == 0) + break; + if (n >= fmodcnt) + return ENODEV; + strncpy(fmodsw[n].f_name, vd.Drv_name, FMNAMESZ+1); + fmodsw[n].f_str = &ppp_ahdlcinfo; + fmodsw_index = n; + break; + + case VDUNLOAD: + if (ppp_ahdlc_count > 0) + return EBUSY; + if (fmodsw_index <= 0) + return EINVAL; + fmodsw[fmodsw_index].f_name[0] = 0; + fmodsw[fmodsw_index].f_str = 0; + fmodsw_index = -1; + break; + + case VDSTAT: + break; + + default: + return EIO; + } + return 0; +} diff --git a/mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c b/mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c new file mode 100644 index 000000000..b81bc47e8 --- /dev/null +++ b/mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +extern struct streamtab ppp_compinfo; +extern int ppp_comp_count; + +static struct vdldrv vd = { + VDMAGIC_USER, + "ppp_comp" +}; + +static int fmodsw_index = -1; + +int +ppp_comp_vdcmd(fun, vdp, vdi, vds) + unsigned int fun; + struct vddrv *vdp; + addr_t vdi; + struct vdstat *vds; +{ + int n; + + switch (fun) { + case VDLOAD: + vdp->vdd_vdtab = (struct vdlinkage *) &vd; + if (fmodsw_index >= 0) + return EBUSY; + for (n = 0; n < fmodcnt; ++n) + if (fmodsw[n].f_str == 0) + break; + if (n >= fmodcnt) + return ENODEV; + strncpy(fmodsw[n].f_name, vd.Drv_name, FMNAMESZ+1); + fmodsw[n].f_str = &ppp_compinfo; + fmodsw_index = n; + break; + + case VDUNLOAD: + if (ppp_comp_count > 0) + return EBUSY; + if (fmodsw_index <= 0) + return EINVAL; + fmodsw[fmodsw_index].f_name[0] = 0; + fmodsw[fmodsw_index].f_str = 0; + fmodsw_index = -1; + break; + + case VDSTAT: + break; + + default: + return EIO; + } + return 0; +} diff --git a/mdk-stage1/ppp/sunos4/ppp_vdcmd.c b/mdk-stage1/ppp/sunos4/ppp_vdcmd.c new file mode 100644 index 000000000..68095c92e --- /dev/null +++ b/mdk-stage1/ppp/sunos4/ppp_vdcmd.c @@ -0,0 +1,81 @@ +#include +#include +#include +#include + +extern struct streamtab pppinfo; +extern int ppp_count; +extern int nchrdev; + +static struct vdldrv vd = { + VDMAGIC_PSEUDO, + "ppp" +}; + +extern int nodev(); + +static struct cdevsw ppp_cdevsw = { + nodev, nodev, nodev, nodev, nodev, nodev, nodev, 0, + &pppinfo +}; + +static struct cdevsw old_entry; + +int +ppp_vdcmd(fun, vdp, vdi, vds) + unsigned int fun; + struct vddrv *vdp; + addr_t vdi; + struct vdstat *vds; +{ + static int majnum = -1; + int n, maj; + + switch (fun) { + case VDLOAD: + /* + * It seems like modload doesn't install the cdevsw entry + * for us. Oh well... + */ + for (maj = 1; maj < nchrdev; ++maj) + if (cdevsw[maj].d_open == vd_unuseddev) + break; + if (maj >= nchrdev) + return ENODEV; + vd.Drv_charmajor = maj; + old_entry = cdevsw[maj]; + cdevsw[maj] = ppp_cdevsw; + vd.Drv_cdevsw = &ppp_cdevsw; + vdp->vdd_vdtab = (struct vdlinkage *) &vd; + majnum = maj; + break; + + case VDUNLOAD: + if (ppp_count > 0) + return EBUSY; + if (vd.Drv_charmajor > 0) + cdevsw[vd.Drv_charmajor] = old_entry; + break; + + case VDSTAT: + /* + * We have to fool the modstat command into thinking + * that this module is actually a driver! This is + * so that installation commands that use the -exec + * option of modload to run a shell script find out + * the block and/or char major numbers of the driver + * loaded (so that the shell script can go off to + * /dev and *MAKE* the bloody device nodes- remember + * they might change from one load to another if + * you don't hardwire the number!). + */ + vds->vds_magic = VDMAGIC_DRV; + vds->vds_modinfo[0] = (char) 0; + vds->vds_modinfo[1] = (char) majnum; + break; + + default: + return EIO; + } + return 0; +} -- cgit v1.2.1