summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c')
-rw-r--r--mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c57
1 files changed, 57 insertions, 0 deletions
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;
+}