亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? if_ppp.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
	 * abort sequence "}~".	 */	if (sc->sc_flags & (SC_FLUSH | SC_ESCAPED)	    || (ilen > 0 && sc->sc_fcs != PPP_GOODFCS)) {#ifdef VJC	    /*	     * If we've missed a packet, we must toss subsequent compressed	     * packets which don't have an explicit connection ID.	     */	    sl_uncompress_tcp(NULL, 0, TYPE_ERROR, &sc->sc_comp);#endif	    if ((sc->sc_flags & (SC_FLUSH | SC_ESCAPED)) == 0){		if (sc->sc_flags & SC_DEBUG)		    printf("ppp%d: bad fcs %x\n", sc->sc_if.if_unit,			   sc->sc_fcs);		sc->sc_if.if_ierrors++;	    } else		sc->sc_flags &= ~(SC_FLUSH | SC_ESCAPED);	    return;	}	if (ilen < PPP_HDRLEN + PPP_FCSLEN) {	    if (ilen) {		if (sc->sc_flags & SC_DEBUG)		    printf("ppp%d: too short (%d)\n", sc->sc_if.if_unit, ilen);		sc->sc_if.if_ierrors++;	    }	    return;	}	/*	 * Remove FCS trailer.  Somewhat painful...	 */	ilen -= 2;	if (--sc->sc_mc->m_len == 0) {	    for (m = sc->sc_m; m->m_next != sc->sc_mc; m = m->m_next)		;	    sc->sc_mc = m;	}	sc->sc_mc->m_len--;	/* excise this mbuf chain */	m = sc->sc_m;	sc->sc_m = sc->sc_mc->m_next;	sc->sc_mc->m_next = NULL;	if (sc->sc_flags & SC_LOG_INPKT) {	    printf("ppp%d: got %d bytes\n", sc->sc_if.if_unit, ilen);	    pppdumpm(m, ilen);	}		ppppktin(sc, m); 		/* handover packet to upper layer */	pppgetm(sc);				return;    }    if (sc->sc_flags & SC_FLUSH) {	if (sc->sc_flags & SC_LOG_FLUSH)	    ppplogchar(sc, c);	return;    }    if (c < 0x20 && (sc->sc_rasyncmap & (1 << c)))	return;    if (sc->sc_flags & SC_ESCAPED) {	sc->sc_flags &= ~SC_ESCAPED;	c ^= PPP_TRANS;    } else if (c == PPP_ESCAPE) {	sc->sc_flags |= SC_ESCAPED;	return;    }    /*     * Initialize buffer on first octet received.     * First octet could be address or protocol (when compressing     * address/control).     * Second octet is control.     * Third octet is first or second (when compressing protocol)     * octet of protocol.     * Fourth octet is second octet of protocol.     */    if (sc->sc_ilen == 0) {	/* reset the first input mbuf */	if (sc->sc_m == NULL) {	    pppgetm(sc);	    if (sc->sc_m == NULL) {		if (sc->sc_flags & SC_DEBUG)		    printf("ppp%d: no input mbufs!\n", sc->sc_if.if_unit);		goto flush;	    }	}	m = sc->sc_m;	m->m_len = 0;	m->m_data = M_DATASTART(sc->sc_m);	if (M_DATASIZE(sc->sc_m) >= HDROFF + PPP_HDRLEN)	    m->m_data += HDROFF;	/* allow room for VJ decompression */	sc->sc_mc = m;	sc->sc_mp = mtod(m, char *);	sc->sc_fcs = PPP_INITFCS;	if (c != PPP_ALLSTATIONS) {	    if (sc->sc_flags & SC_REJ_COMP_AC) {		if (sc->sc_flags & SC_DEBUG)		    printf("ppp%d: garbage received: 0x%x (need 0xFF)\n",			   sc->sc_if.if_unit, c);		goto flush;	    }	    *sc->sc_mp++ = PPP_ALLSTATIONS;	    *sc->sc_mp++ = PPP_UI;	    sc->sc_ilen += 2;	    m->m_len += 2;	}    }    if (sc->sc_ilen == 1 && c != PPP_UI) {	if (sc->sc_flags & SC_DEBUG)	    printf("ppp%d: missing UI (0x3), got 0x%x\n",		   sc->sc_if.if_unit, c);	goto flush;    }    if (sc->sc_ilen == 2 && (c & 1) == 1) {	/* a compressed protocol */	*sc->sc_mp++ = 0;	sc->sc_ilen++;	sc->sc_mc->m_len++;    }    if (sc->sc_ilen == 3 && (c & 1) == 0) {	if (sc->sc_flags & SC_DEBUG)	    printf("ppp%d: bad protocol %x\n", sc->sc_if.if_unit,		   (sc->sc_mp[-1] << 8) + c);	goto flush;    }    /* packet beyond configured mru? */    if (++sc->sc_ilen > sc->sc_mru + PPP_HDRLEN + PPP_FCSLEN) {	if (sc->sc_flags & SC_DEBUG)	    printf("ppp%d: packet too big\n", sc->sc_if.if_unit);	goto flush;    }    /* is this mbuf full? */    m = sc->sc_mc;    if (M_TRAILINGSPACE(m) <= 0) {	if (m->m_next == NULL) {	    pppgetm(sc);	    if (m->m_next == NULL) {		if (sc->sc_flags & SC_DEBUG)		    printf("ppp%d: too few input mbufs!\n", sc->sc_if.if_unit);		goto flush;	    }	}	sc->sc_mc = m = m->m_next;	m->m_len = 0;	m->m_data = M_DATASTART(m);	sc->sc_mp = mtod(m, char *);    }    ++m->m_len;    *sc->sc_mp++ = c;    sc->sc_fcs = PPP_FCS(sc->sc_fcs, c);    return; flush:    if (!(sc->sc_flags & SC_FLUSH)) {	sc->sc_if.if_ierrors++;	sc->sc_flags |= SC_FLUSH;	if (sc->sc_flags & SC_LOG_FLUSH)	    ppplogchar(sc, c);    }}/* * Process an ioctl request to interface. */static intpppioctl(ifp, cmd, data)    register struct ifnet *ifp;    int cmd;    caddr_t data;{    register struct ppp_softc *sc = ppp_softc[ifp->if_unit];    register struct ifaddr *ifa = (struct ifaddr *)data;    register struct ifreq *ifr = (struct ifreq *)data;    register M2_NETDRVCNFG *pm2DrvCnfg = (M2_NETDRVCNFG *)data;    register M2_NETDRVCNTRS *pm2DrvCntr = (M2_NETDRVCNTRS *)data;    int s = splimp(), error = 0;    switch (cmd) {    case SIOCGIFFLAGS:        *(short *)data = ifp->if_flags;         break;    case SIOCSIFFLAGS:	if ((ifp->if_flags & IFF_RUNNING) == 0)	    ifp->if_flags &= ~IFF_UP;	break;    case SIOCSIFADDR:	if (ifa->ifa_addr->sa_family != AF_INET)	    error = EAFNOSUPPORT;	break;    case SIOCSIFDSTADDR:	if (ifa->ifa_dstaddr->sa_family != AF_INET)	    error = EAFNOSUPPORT;	break;    case SIOCSIFMTU:	sc->sc_if.if_mtu = ifr->ifr_mtu;	break;    case SIOCGIFMTU:	ifr->ifr_mtu = sc->sc_if.if_mtu;	break;    case SIOCADDMULTI:    case SIOCDELMULTI:        if (ifr == 0) {            error = EAFNOSUPPORT;            break;        }        switch(ifr->ifr_addr.sa_family) {#ifdef INET        case AF_INET:            break;#endif        default:            error = EAFNOSUPPORT;            break;        }        break;    case SIOCGMIB2CNFG:        pm2DrvCnfg->ifType = M2_ifType_ppp;		/* ppp type */        pm2DrvCnfg->ifSpecific.idLength = 0;		/* use default */	break;    case SIOCGMIB2CNTRS:				/* fill in counters */	pm2DrvCntr->ifInOctets = sc->sc_bytesrcvd;        pm2DrvCntr->ifInNUcastPkts = 0;        pm2DrvCntr->ifInDiscards = 0;        pm2DrvCntr->ifInUnknownProtos = ppp_if[ppp_unit]->unknownProto;	pm2DrvCntr->ifOutOctets = sc->sc_bytessent;        pm2DrvCntr->ifOutNUcastPkts = 0;        pm2DrvCntr->ifOutDiscards = 0;	if ((pm2DrvCntr->ifSpeed = ppp_if[ppp_unit]->baud_rate) == 0)	    pm2DrvCntr->ifSpeed = 9600;			/* nominal default */	break;    default:	error = EINVAL;    }    splx(s);    return (error);}#define	MAX_DUMP_BYTES	128static voidpppdumpm(m0, pktlen)    struct mbuf *m0;    int pktlen;{    char buf [3*MAX_DUMP_BYTES+4];    char *bp = buf;    struct mbuf *m;    static char digits [] = "0123456789abcdef";    for (m = m0; m && pktlen; m = m->m_next) {	int l = m->m_len;	u_char *rptr = mtod(m, u_char *);        if (pktlen > 0) {            if (l > pktlen)                l = pktlen;	    pktlen -= l;	}        while (l--) {            if (bp > buf + sizeof(buf) - 4)                goto done;            *bp++ = digits[*rptr >> 4]; /* convert byte to ascii hex */            *bp++ = digits[*rptr++ & 0xf];        }        if (m->m_next) {            if (bp > buf + sizeof(buf) - 3)                goto done;            *bp++ = '|';        } else            *bp++ = ' ';    }done:    if (m && pktlen)        *bp++ = '>';    *bp = 0;    printf("%s\n", buf);}static voidppplogchar(sc, c)    struct ppp_softc *sc;    int c;{    if (c >= 0)        sc->sc_rawin[sc->sc_rawin_count++] = c;    if (sc->sc_rawin_count >= sizeof(sc->sc_rawin)        || (c < 0 && sc->sc_rawin_count > 0)) {        printf("ppp%d input: ", sc->sc_if.if_unit);        pppdumpb(sc->sc_rawin, sc->sc_rawin_count);        sc->sc_rawin_count = 0;    }}static voidpppdumpb(b, l)    u_char *b;    int l;{    char buf [3*MAX_DUMP_BYTES+4];    char *bp = buf;    static char digits[] = "0123456789abcdef";    while (l--) {	if (bp >= buf + sizeof (buf) - 3) {	    *bp++ = '>';	    break;	}	*bp++ = digits [*b >> 4]; /* convert byte to ascii hex */	*bp++ = digits [*b++ & 0xf];        *bp++ = ' ';    }    *bp = 0;    printf("%s\n", buf);}/*  * Flush write output on the interface.  */static voidppp_wrt_flush(sc)    register struct ppp_softc *sc;{    register struct mbuf *m;    register int len;    register u_char *start, *stop, *cp;    int n, ndone, done;    struct mbuf *m2;    int count, fd;    char ch;    fd = sc->sc_fd;    for (;;) {        /*         * See if we have an existing packet partly sent.         * If not, get a new packet and start sending it.         * We take packets on the priority queue ahead of those         * on the normal queue.         */        m = sc->sc_outm;        if (m == NULL) {	    /*	     * Get another packet to be sent	     */	    m = ppp_dequeue(sc);	    if (m == NULL)	        break;	    /*	     * The extra PPP_FLAG will start up a new packet, and thus	     * will flush any accumulated garbage.  We do this whenever	     * the line may have been idle for some time.	     */	    ioctl(fd, FIONWRITE, (int) &count);	    if (count == 0) {	        ++sc->sc_bytessent;	        ch = PPP_FLAG;	        (void) write(fd, &ch, 1);	    }	    /* Calculate the FCS for the first mbuf's worth. */	    sc->sc_outfcs = pppfcs(PPP_INITFCS, mtod(m, u_char *), m->m_len);        }        for (;;) {	    start = mtod(m, u_char *);	    len = m->m_len;	    stop = start + len;	    while (len > 0) {	        /*	         * Find out how many bytes in the string we can	         * handle without doing something special.	         */	        for (cp = start; cp < stop; cp++)		    if (ESCAPE_P(*cp))		        break;	        n = cp - start;	        if (n) {		    int cc, nleft;		    for (nleft = n; nleft > 0; nleft -= cc) {		        if ((cc =  write(fd, (char *)start, n)) <= 0)			    break;		        if (cc > nleft)			    cc = nleft;		    }		    ndone = n - nleft;		    len -= ndone;		    start += ndone;		    sc->sc_bytessent += ndone;		    if (ndone < n)		        break;  /* packet doesn't fit */	        }	        /*	         * If there are characters left in the mbuf,	         * the first one must be special..	         * Put it out in a different form.	         */	        if (len) {		    ch = PPP_ESCAPE;		    if (write(fd, &ch, 1) != 1)		        break;		    ch = *start ^ PPP_TRANS;		    if (write(fd, &ch, 1) != 1)		        break;		    sc->sc_bytessent += 2;		    start++;		    len--;	        }	    }	    /*	     * If we didn't empty this mbuf, remember where we're up to.	     * If we emptied the last mbuf, try to add the FCS and closing	     * flag, and if we can't, leave sc_outm pointing to m, but with	     * m->m_len == 0, to remind us to output the FCS and flag later.	     */	    done = len == 0;	    if (done && m->m_next == NULL) {	        u_char *p;	        int c;	        u_char endseq[8];    	        /*	         * We may have to escape the bytes in the FCS.	         */	        p = endseq;	        c = ~sc->sc_outfcs & 0xFF;	        if (ESCAPE_P(c)) {		    *p++ = PPP_ESCAPE;		    *p++ = c ^ PPP_TRANS;	        } else		    *p++ = c;	        c = (~sc->sc_outfcs >> 8) & 0xFF;	        if (ESCAPE_P(c)) {		    *p++ = PPP_ESCAPE;		    *p++ = c ^ PPP_TRANS;	        } else		    *p++ = c;	        *p++ = PPP_FLAG;	        /*	         * Try to output the FCS and flag.  If the bytes	         * don't all fit, back out.	         */	        write(fd, (char *)endseq, (int)p-(int)endseq);	    }	    if (!done) {	        m->m_data = (caddr_t)start; 	        m->m_len = len;	        sc->sc_outm = m;	        break;         /* can't do any more at the moment */	    }	    /* Finished with this mbuf; free it and move on. */	    m2 = m_free (m);	    if (m2 == NULL)	        break;	    m = m2;	    sc->sc_outfcs = pppfcs(sc->sc_outfcs, mtod(m, u_char *), m->m_len);        }        /* Finished a packet */        sc->sc_outm = NULL;        sc->sc_bytessent++;     /* account for closing flag */        sc->sc_if.if_opackets++;    }}#endif  /* NPPP > 0 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级一级性生活免费录像| 欧美挠脚心视频网站| 亚洲一卡二卡三卡四卡| 欧美不卡123| 欧美日韩国产综合草草| 大尺度一区二区| 亚洲国产人成综合网站| 欧美激情一区二区三区不卡| 51久久夜色精品国产麻豆| 成人av在线网| 国产一区二区美女| 免费观看成人av| 亚洲综合色在线| 国产精品免费看片| 亚洲精品一区二区三区四区高清| 欧美最猛性xxxxx直播| 处破女av一区二区| 国产精品伊人色| 精品无人码麻豆乱码1区2区| 亚洲va天堂va国产va久| 亚洲婷婷综合久久一本伊一区| 亚洲精品一线二线三线| 日韩一区二区三区观看| 欧美浪妇xxxx高跟鞋交| 色婷婷狠狠综合| 91在线看国产| av不卡免费在线观看| 成人爱爱电影网址| 国产成人综合精品三级| 国产综合一区二区| 久久超级碰视频| 奇米影视7777精品一区二区| 日韩国产精品久久| 婷婷久久综合九色国产成人| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲在线观看免费| 亚洲天堂免费在线观看视频| 国产精品网站一区| 国产精品蜜臀在线观看| 中文字幕精品一区二区三区精品 | 69成人精品免费视频| 欧美日韩三级在线| 欧美日韩国产a| 5566中文字幕一区二区电影 | 国产精品麻豆欧美日韩ww| 国产女人18水真多18精品一级做| 国产欧美日韩中文久久| 国产精品久久久久久久久免费丝袜| 国产视频亚洲色图| 国产精品区一区二区三| 国产精品成人免费精品自在线观看| 国产精品久久看| 亚洲免费毛片网站| 亚洲国产成人91porn| 日本亚洲最大的色成网站www| 男男视频亚洲欧美| 国产精品1区2区3区在线观看| 国产成人av一区二区三区在线 | 色呦呦日韩精品| 欧美日韩一卡二卡三卡| 91精品国产免费| 欧美成人女星排名| 欧美高清在线一区| 亚洲午夜在线电影| 麻豆精品一区二区av白丝在线| 国产另类ts人妖一区二区| 色综合天天做天天爱| 欧美日韩另类一区| 久久久久久一二三区| 亚洲欧美国产77777| 天天综合天天做天天综合| 国产精品亚洲一区二区三区妖精 | 看电视剧不卡顿的网站| 国产成人免费视频| 欧美性受xxxx黑人xyx| 日韩午夜三级在线| 综合在线观看色| 天堂av在线一区| 丰满岳乱妇一区二区三区| 欧美在线你懂得| 久久久久一区二区三区四区| 亚洲美女在线国产| 韩国在线一区二区| 色狠狠av一区二区三区| 精品国产伦一区二区三区观看方式| 国产精品视频观看| 日韩高清一级片| av午夜一区麻豆| 日韩精品中午字幕| 一区二区三区小说| 麻豆一区二区三| 欧洲视频一区二区| 久久精品夜色噜噜亚洲aⅴ| 亚洲一区二区三区精品在线| 国产精品一区二区果冻传媒| 欧美日韩在线不卡| 国产精品久久久久影院老司| 久久国产精品第一页| 日本精品视频一区二区| 久久久久久亚洲综合| 青青草原综合久久大伊人精品 | 不卡的电影网站| 51精品国自产在线| 国产精品理论片| 国模少妇一区二区三区| 欧美绝品在线观看成人午夜影视| 国产精品嫩草影院com| 久久精品国产亚洲5555| 91在线你懂得| 国产精品久久久久久久久久久免费看 | 99re热这里只有精品免费视频| 精品国产乱码久久久久久1区2区| 亚洲成人综合视频| 色综合色狠狠综合色| 国产精品久久久久影院亚瑟| 国产剧情一区二区| 欧美精品一区二区三区久久久| 亚洲成人午夜影院| 日本韩国一区二区| 日韩一区欧美一区| 成人性视频网站| 国产偷v国产偷v亚洲高清| 久久精品国产亚洲高清剧情介绍| 欧美日本视频在线| 亚洲午夜av在线| 欧美性受xxxx黑人xyx性爽| 亚洲精品国产精品乱码不99| 不卡免费追剧大全电视剧网站| 欧美国产成人在线| 成人精品一区二区三区四区| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品蜜臀av| 99热国产精品| 国产精品乱码妇女bbbb| 成人禁用看黄a在线| 亚洲国产精品av| 国产69精品一区二区亚洲孕妇| 久久久久久久久免费| 日本成人中文字幕在线视频 | 欧美日韩中文另类| 亚洲一区国产视频| 欧美精品免费视频| 美美哒免费高清在线观看视频一区二区 | 欧美一区二区三区视频在线观看 | 国内不卡的二区三区中文字幕 | 91麻豆自制传媒国产之光| 亚洲天堂久久久久久久| 91色.com| 一区二区三区日韩欧美| 欧美日韩日日摸| 热久久免费视频| 久久久久久久久一| 99精品欧美一区二区三区综合在线| 国产精品久久久久久久久免费樱桃| 91啪在线观看| 午夜欧美一区二区三区在线播放| 91精品国产一区二区三区香蕉| 毛片基地黄久久久久久天堂| 久久久精品中文字幕麻豆发布| 懂色av一区二区三区蜜臀| 亚洲丝袜美腿综合| 欧美日韩久久不卡| 韩国成人福利片在线播放| 国产欧美日韩另类一区| 色偷偷88欧美精品久久久| 午夜精品免费在线| 久久先锋影音av鲁色资源网| 成人视屏免费看| 亚洲国产日韩在线一区模特| 精品国产乱码久久久久久免费| 国产成人av一区二区三区在线 | 一区二区三区美女视频| 欧美一级艳片视频免费观看| 国产suv精品一区二区三区| 亚洲欧美精品午睡沙发| 日韩美女一区二区三区四区| 成人黄色综合网站| 日本一区中文字幕| 自拍偷自拍亚洲精品播放| 欧美精品日韩一区| 成人黄色在线视频| 九九热在线视频观看这里只有精品| 国产精品视频免费| 日韩欧美在线一区二区三区| www国产精品av| 99精品欧美一区二区三区小说 | 欧美刺激午夜性久久久久久久| 成人蜜臀av电影| 日韩高清一区在线| 中文字幕一区二区不卡| 日韩一区二区三区电影| 日本高清不卡aⅴ免费网站| 狠狠色丁香久久婷婷综合丁香| 一区在线播放视频| 精品乱人伦小说| 911国产精品| 色哟哟日韩精品| 国产福利一区二区| 美女爽到高潮91| 一区二区免费看|