X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=modules%2Fppp.c;h=7a181aaeaf469c18307c975f9a2667fe3cf8019c;hp=c58831810ae8febfaa101c7a2caff3955779e5a5;hb=4d8f3ae99a283c0916b5fc669f0d7cf0f42bd28b;hpb=e77161b1ab421e1f36bd0e0516f01c27712853ab diff --git a/modules/ppp.c b/modules/ppp.c index c588318..7a181aa 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.6 1996/06/26 00:53:38 paulus Exp $ + * $Id: ppp.c,v 1.8 1996/09/14 05:18:45 paulus Exp $ */ /* @@ -159,6 +159,7 @@ static void debug_dump __P((queue_t *, mblk_t *)); static upperstr_t *find_dest __P((upperstr_t *, int)); static int putctl2 __P((queue_t *, int, int, int)); static int putctl4 __P((queue_t *, int, int, int)); +static int pass_packet __P((upperstr_t *ppa, mblk_t *mp, int outbound)); #define PPP_ID 0xb1a6 static struct module_info ppp_info = { @@ -667,7 +668,6 @@ pppuwput(q, mp) #ifdef LACHTCP case SIOCSIFNAME: - printf("SIOCSIFNAME\n"); /* Sent from IP down to us. Attach the ifstats structure. */ if (iop->ioc_count != sizeof(struct ifreq) || us->ppa == 0) break; @@ -715,7 +715,6 @@ pppuwput(q, mp) break; case SIOCGIFFLAGS: - printf("SIOCGIFFLAGS\n"); if (!(us->flags & US_CONTROL)) { if (us->ppa) us = us->ppa; @@ -727,7 +726,6 @@ pppuwput(q, mp) break; case SIOCSIFFLAGS: - printf("SIOCSIFFLAGS\n"); if (!(us->flags & US_CONTROL)) { if (us->ppa) us = us->ppa; @@ -739,7 +737,6 @@ pppuwput(q, mp) break; case SIOCSIFADDR: - printf("SIOCSIFADDR\n"); if (!(us->flags & US_CONTROL)) { if (us->ppa) us = us->ppa; @@ -1123,7 +1120,14 @@ send_data(mp, us) if ((q = ppa->lowerq) == 0) { /* try to send it up the control stream */ if (canputnext(ppa->q)) { - putnext(ppa->q, mp); + /* + * The message seems to get corrupted for some reason if + * we just send the message up as it is, so we send a copy. + */ + mblk_t *np = copymsg(mp); + freemsg(mp); + if (np != 0) + putnext(ppa->q, np); return 1; } } else {