X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=modules%2Fppp.c;h=10a5aec2995c785f5db6f487f6d5cbe283129e28;hb=a8c240d24e1b254284c06b06de06a66828eeec57;hp=c99c1416c42d51caeec74df27546d40e5baf2d18;hpb=18de18edfb0ebefef8c0e2b0686e8793bc1ba127;p=ppp.git diff --git a/modules/ppp.c b/modules/ppp.c index c99c141..10a5aec 100644 --- a/modules/ppp.c +++ b/modules/ppp.c @@ -24,7 +24,7 @@ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. * - * $Id: ppp.c,v 1.16 1999/02/26 10:52:06 paulus Exp $ + * $Id: ppp.c,v 1.19 1999/05/13 00:32:42 paulus Exp $ */ /* @@ -140,8 +140,8 @@ krwlock_t ppp_lower_lock; #define LOCK_LOWER_R 0 #define TRYLOCK_LOWER_R 1 #define UNLOCK_LOWER 0 -#define MUTEX_ENTER(x) 0 -#define MUTEX_EXIT(x) 0 +#define MT_ENTER(x) 0 +#define MT_EXIT(x) 0 #endif /* SOL2 */ @@ -468,7 +468,7 @@ pppclose(q, flag) #endif if (up->lowerq != 0) { /* Gack! the lower stream should have be unlinked earlier! */ - cmn_err(CE_WARN, "ppp%d: lower stream still connected on close?\n", + DPRINT1("ppp%d: lower stream still connected on close?\n", up->mn); LOCK_LOWER_W; up->lowerq->q_ptr = 0; @@ -809,7 +809,7 @@ pppuwput(q, mp) if (n == PPPDBG_DUMP + PPPDBG_DRIVER) { qwriter(q, NULL, debug_dump, PERIM_OUTER); iop->ioc_count = 0; - error = 0; + error = -1; } else if (n == PPPDBG_LOG + PPPDBG_DRIVER) { DPRINT1("ppp/%d: debug log enabled\n", us->mn); us->flags |= US_DBGLOG; @@ -1098,7 +1098,7 @@ dlpi_request(q, mp, us) } us->ppa = ppa; qwriter(q, mp, attach_ppa, PERIM_OUTER); - break; + return; case DL_DETACH_REQ: if (size < sizeof(dl_detach_req_t)) @@ -1108,7 +1108,7 @@ dlpi_request(q, mp, us) break; } qwriter(q, mp, detach_ppa, PERIM_OUTER); - break; + return; case DL_BIND_REQ: if (size < sizeof(dl_bind_req_t)) @@ -1967,6 +1967,25 @@ ppplrput(q, mp) mblk_t *mp; { queue_t *uq; + struct iocblk *iop; + + switch (mp->b_datap->db_type) { + case M_IOCTL: + iop = (struct iocblk *) mp->b_rptr; + iop->ioc_error = EINVAL; + mp->b_datap->db_type = M_IOCNAK; + qreply(q, mp); + return 0; + case M_FLUSH: + if (*mp->b_rptr & FLUSHR) + flushq(q, FLUSHDATA); + if (*mp->b_rptr & FLUSHW) { + *mp->b_rptr &= ~FLUSHR; + qreply(q, mp); + } else + freemsg(mp); + return 0; + } /* * If we can't get the lower lock straight away, queue this one @@ -2073,8 +2092,8 @@ putctl4(q, type, code, val) static void debug_dump(q, mp) - queue_t *q; /* not used */ - mblk_t *mp; /* not used either */ + queue_t *q; + mblk_t *mp; { upperstr_t *us; queue_t *uq, *lq; @@ -2100,6 +2119,8 @@ debug_dump(q, mp) (lq? qsize(lq): 0), us->mru, us->mtu); } } + mp->b_datap->db_type = M_IOCACK; + qreply(q, mp); } #ifdef FILTER_PACKETS