summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/ppp/sunos4
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/ppp/sunos4')
-rw-r--r--mdk-stage1/ppp/sunos4/Makedefs13
-rw-r--r--mdk-stage1/ppp/sunos4/Makefile57
-rw-r--r--mdk-stage1/ppp/sunos4/Makefile.top46
-rw-r--r--mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c57
-rwxr-xr-xmdk-stage1/ppp/sunos4/ppp.INSTALL104
-rw-r--r--mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c57
-rw-r--r--mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c57
-rw-r--r--mdk-stage1/ppp/sunos4/ppp_vdcmd.c81
8 files changed, 472 insertions, 0 deletions
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 <sys/types.h>
+#include <sys/errno.h>
+#include <sys/conf.h>
+#include <sun/vddrv.h>
+
+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 <sys/types.h>
+#include <sys/errno.h>
+#include <sys/conf.h>
+#include <sun/vddrv.h>
+
+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 <sys/types.h>
+#include <sys/errno.h>
+#include <sys/conf.h>
+#include <sun/vddrv.h>
+
+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 <sys/types.h>
+#include <sys/errno.h>
+#include <sys/conf.h>
+#include <sun/vddrv.h>
+
+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;
+}