make pppoutput global
[ppp.git] / modules / ppp_ahdlc.c
index ba4f41c126b6276c31b64fe844118d6b3797e59d..5bc8e531fac84f90cf90613e6e87d470830aadec 100644 (file)
  * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
  * OR MODIFICATIONS.
  *
- * $Id: ppp_ahdlc.c,v 1.1 1995/12/11 05:06:42 paulus Exp $
+ * $Id: ppp_ahdlc.c,v 1.6 1997/04/30 05:44:58 paulus Exp $
  */
 
 /*
- * This file is used under Solaris 2, SVR4, SunOS 4, and OSF/1.
+ * This file is used under Solaris 2, SVR4, SunOS 4, and Digital UNIX.
  */
 #include <sys/types.h>
 #include <sys/param.h>
@@ -42,6 +42,9 @@
 #include <sys/ddi.h>
 #else
 #include <sys/user.h>
+#ifdef __osf__
+#include <sys/cmn_err.h>
+#endif
 #endif /* SVR4 */
 
 #include <net/ppp_defs.h>
@@ -66,8 +69,13 @@ static int msg_byte __P((mblk_t *, unsigned int));
 /* Is this LCP packet one we have to transmit using LCP defaults? */
 #define LCP_USE_DFLT(mp)       (1 <= (code = MSG_BYTE((mp), 4)) && code <= 7)
 
+#define PPP_AHDL_ID 0x7d23
 static struct module_info minfo = {
-    0x7d23, "ppp_ahdl", 0, INFPSZ, 4096, 128
+#ifdef PRIOQ
+    PPP_AHDL_ID, "ppp_ahdl", 0, INFPSZ, 640, 512
+#else
+    PPP_AHDL_ID, "ppp_ahdl", 0, INFPSZ, 4096, 128
+#endif PRIOQ
 };
 
 static struct qinit rinit = {
@@ -78,6 +86,10 @@ static struct qinit winit = {
     ahdlc_wput, NULL, NULL, NULL, NULL, &minfo, NULL
 };
 
+#if defined(SVR4) && !defined(SOL2)
+int phdldevflag = 0;
+#define ppp_ahdlcinfo phdlinfo
+#endif
 struct streamtab ppp_ahdlcinfo = {
     &rinit, &winit, NULL, NULL
 };
@@ -159,7 +171,7 @@ MOD_OPEN(ahdlc_open)
        WR(q)->q_ptr = (caddr_t) sp;
        sp->xaccm[0] = ~0;
        sp->xaccm[3] = 0x60000000;
-       sp->mru = 1500;
+       sp->mru = PPP_MRU;
        ++ppp_ahdlc_count;
        qprocson(q);
     }
@@ -215,7 +227,7 @@ ahdlc_wput(q, mp)
                break;
            bcopy((caddr_t)mp->b_cont->b_rptr, (caddr_t)state->xaccm,
                  iop->ioc_count);
-           state->xaccm[2] &= 0x40000000;      /* don't escape 0x5e */
+           state->xaccm[2] &= ~0x40000000;     /* don't escape 0x5e */
            state->xaccm[3] |= 0x60000000;      /* do escape 0x7d, 0x7e */
            iop->ioc_count = 0;
            error = 0;
@@ -623,10 +635,11 @@ unstuff_chars(q, mp)
                    putnext(q, om);             /* bombs away! */
                    continue;
                }
-               DPRINT1("ppp_ahdl: bad fcs %x\n", state->infcs);
+               DPRINT2("ppp%d: bad fcs (len=%d)\n", state->unit, len);
            }
            if (om != 0)
                freemsg(om);
+           state->flags &= ~(IFLUSH|ESCAPED);
            state->stats.ppp_ierrors++;
            putctl1(q->q_next, M_CTL, PPPCTL_IERROR);
            continue;
@@ -662,7 +675,8 @@ unstuff_chars(q, mp)
                 */
                if (state->inlen >= state->mru + PPP_HDRLEN + PPP_FCSLEN) {
                    state->flags |= IFLUSH;
-                   DPRINT1("ppp_ahdl: frame too long (%d)\n", state->inlen);
+                   DPRINT2("ppp%d: frame too long (%d)\n",
+                           state->unit, state->inlen);
                    continue;
                }
                om = allocb(IFRAME_BSIZE, BPRI_MED);