X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=modules%2Fppp_ahdlc.c;h=1828fe1e96fb40a1f20a48eb0267975aad083178;hp=cfde35d296ddac3e3f7d25c231005549b9bd54c5;hb=25e76d5413eee163e3141ba0f6e83f0dd24c5d87;hpb=f9573cffbde6dd807c7237c60a090b3195d6dbec diff --git a/modules/ppp_ahdlc.c b/modules/ppp_ahdlc.c index cfde35d..1828fe1 100644 --- a/modules/ppp_ahdlc.c +++ b/modules/ppp_ahdlc.c @@ -24,7 +24,7 @@ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. * - * $Id: ppp_ahdlc.c,v 1.8 1998/05/04 06:11:50 paulus Exp $ + * $Id: ppp_ahdlc.c,v 1.11 1999/09/15 23:49:05 masputra Exp $ */ /* @@ -190,6 +190,8 @@ MOD_CLOSE(ahdlc_close) state->cur_frame = 0; } FREE(q->q_ptr, sizeof(ahdlc_state_t)); + q->q_ptr = NULL; + OTHERQ(q)->q_ptr = NULL; --ppp_ahdlc_count; } return 0; @@ -207,6 +209,12 @@ ahdlc_wput(q, mp) struct ppp_stats *psp; state = (ahdlc_state_t *) q->q_ptr; + if (state == 0) { + DPRINT("state == 0 in ahdlc_wput\n"); + freemsg(mp); + return 0; + } + switch (mp->b_datap->db_type) { case M_DATA: /* @@ -326,6 +334,7 @@ ahdlc_wput(q, mp) default: putnext(q, mp); } + return 0; } @@ -334,10 +343,15 @@ ahdlc_rput(q, mp) queue_t *q; mblk_t *mp; { - mblk_t *np; - uchar_t *cp; ahdlc_state_t *state; + state = (ahdlc_state_t *) q->q_ptr; + if (state == 0) { + DPRINT("state == 0 in ahdlc_rput\n"); + freemsg(mp); + return 0; + } + switch (mp->b_datap->db_type) { case M_DATA: unstuff_chars(q, mp); @@ -345,7 +359,6 @@ ahdlc_rput(q, mp) break; case M_HANGUP: - state = (ahdlc_state_t *) q->q_ptr; if (state->cur_frame != 0) { /* XXX would like to send this up for debugging */ freemsg(state->cur_frame); @@ -372,13 +385,11 @@ stuff_frame(q, mp) mblk_t *mp; { ahdlc_state_t *state; - int ilen, olen, c, extra, i, code; + int ilen, olen, c, extra, code; mblk_t *omsg, *op, *np; uchar_t *sp, *sp0, *dp, *dp0, *spend; ushort_t fcs; u_int32_t *xaccm, lcp_xaccm[8]; - static uchar_t lcphdr[PPP_HDRLEN] = { 0xff, 0x03, 0xc0, 0x21 }; - uchar_t ppphdr[PPP_HDRLEN]; state = (ahdlc_state_t *) q->q_ptr; ilen = msgdsize(mp); @@ -555,7 +566,7 @@ unstuff_chars(q, mp) ahdlc_state_t *state; mblk_t *om; uchar_t *cp, *cpend, *dp, *dp0; - int c, len, extra, offset; + int c, len, extra; ushort_t fcs; state = (ahdlc_state_t *) q->q_ptr;