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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ppp.c

?? PPP協(xié)議C語言源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
#endif
                    }
                    break;
#if defined(LQRP) && QUALITY
                case LCPopt_LQPT:
                    if (cp2[2] != 0xc0 || cp2[3] != 0x25)
                        goto rej3;
                    cp2 += 2;
                    if ((!cp2[0] || !cp2[1] || !cp2[2] || !cp2[3]) &&
                            netp->peerLQRPms == 0)
                        goto rej3;
                    netp->ownLQRPms = cp2[0] << 24 +
                                      cp2[1] << 16 +
                                      cp2[2] << 8 +
                                      cp2[3];
                    netp->ownLQRPms *= 10;
#endif
                case LCPopt_MNUM:
                    break;
                case LCPopt_RES6:
                    goto rej3;
#if COMPRESSION & 1
                case LCPopt_PCMP:
                case LCPopt_ACMP:
                    netp->hw.remopts |= 1<<us1;
                    break;
#endif
#if MP
#if 0
                case LCPopt_SNHF:   /* Not supported */
                    netp->hw.opt5 |= MPsnhf;
                    break;
#endif
                case LCPopt_ENDD:
                    if (us2 > 20 + 3)
                        goto rej3;
                    if (mpFindBundle(netno, cp2[2], us2-3, (char *)cp2+3) < 0)
                        goto rej3;
                    break;
#endif
                default:
rej3:
                   /* Build reject at +400 in buffer */
                    Nmemcpy((char *)mess+400+rejlen, cp2, us2);
                    rejlen += us2;
rej4:
                    break;
                }
            }

            if (naklen || rejlen) {
                netp->hw.remopts = 0;
                if (naklen) {
                    *cp = LCPconf_nak;      /* Nak with hint */
                    Nmemcpy((char *)cp + 4, (char *)mess + 200, naklen);
                    i2 = naklen + 4;
                }
                else if (rejlen) {
                    *cp = LCPconf_rej;      /* Reject others */
                    Nmemcpy((char *)cp + 4, (char *)mess + 400, rejlen);
                    i2 = rejlen + 4;
                }
                mess->mlen = MESSH_SZ + LHDRSZ + i2;
                cp[2] = i2 >> 8, cp[3] = i2;
                netp->state &= ~(LCPrxREQ + LCPtxACK);
            }
            else
                netp->state |= (LCPrxREQ | LCPtxACK);
            pppWrite(mess);
            break;
        case LCPconf_ack:
            if (cp[1] != netp->hw.opt1 || (prevstate & LCPtxREQ) == 0)
                goto rej1;
            if ((prevstate & LCPopen) == LCPopen)
                pppStart(netno, 1);             /* tld, restart LCP */
            else if (prevstate & LCPrxACK)      /* If ack-rcvd already, */
                netp->state = 0;                /*  send conf-req */
            else {
                netp->state |= LCPrxACK;        /* ack-rcvd */
                netp->hw.opt7 = MAXCONF;        /* Initialize restart counter */
                netp->hw.timems = TimeMS();     /* Initialize timer */
            }
            break;
        case LCPconf_nak:
        case LCPconf_rej:
            if (cp[1] != netp->hw.opt1)
                goto rej1;

           /* Find and disable unaccepted options */
            for (; i1>0; cp2+=us2) {
                us1 = cp2[0];                   /* type */
                us2 = cp2[1];                   /* length */
                i1 -= us2;                      /* length - 1 */
                if (us1 > 19 || us2 < 2)
                    break;
#if REQAUTH
                if (us1 == 3) {
#if NTRACE >= 3
                    Nprintf("PPP: Peer refused requested authentication.\n");
#endif
                    goto term;
                }
#endif
#if MP
                if (us1 > 15)
                    netp->hw.opt5 &= ~(1<<(us1-16));/* disable MP opts */
                else
#endif
                if (*cp == LCPconf_nak && us1 == LCPopt_ASYC)
                    netp->hw.ul1 = cp2[2] << 24 +
                                   cp2[3] << 16 +
                                   cp2[4] << 8 +
                                   cp2[5];
                else {
                    netp->hw.locopts &= ~(1<<us1);  /* disable option */
                    if (us1 == LCPopt_ASYC)
                        netp->hw.ul1 = 0xffffffff;
                }
            }
            if ((prevstate & LCPopen) == LCPopen)
                pppStart(netno, 1);             /* tld, restart LCP */
            else if (prevstate & LCPrxACK)
                netp->state = 0;
            else {
                netp->hw.opt7 = MAXCONF;        /* Initialize restart counter */
                netp->hw.timems = TimeMS();     /* Initialize timer */
                netp->state &= ~(LCPtxREQ | LCPrxACK);
            }
            break;
        case LCPterm_req:
            if ((prevstate & LCPopen) == LCPopen) {
                netp->state = PPPclsng;
                netp->hw.opt7 = 0;                  /* Zero restart counter */
                pppDQ(netno);
            }
            else if (prevstate != PPPclsd && prevstate != PPPclsng)
                netp->state = LCPtxREQ;             /* Wait for TO+/- */
            *cp = LCPterm_ack;                      /* Set new type */
            pppWrite(mess);                         /* Send term-ack */
            break;
        case LCPterm_ack:
            if (cp[1] != netp->hw.opt1)             /* reject bad ID */
                goto rej1;
            if (prevstate != PPPclsng)
                if ((prevstate & LCPopen) == LCPopen)
                    netp->state = 0;                /* resend conf-req */
                else
                    netp->state &= ~(LCPrxACK);
            else {                                  /* If closing/stopping, */
#if MP
                mpShut(netno);
#endif
                netp->state = PPPclsd;              /* link layer closed */
                netp->hw.opt7 = 0;
                pppDQ(netno);
                PPPSIG_LCP_DOWN(netno);
#if DIALD
                if ((netconf[netp->confix].flags & DIAL) == 0)
#endif
                {
                    PPPSIG_PPP_DOWN(netno);
                }
                pppForceDown(netno);
                return -2;
            }
        case LCPcode_rej:
#if NTRACE
            Nprintf("PPP: Peer may be using an unknown version of PPP\n");
#endif
            break;
        case LCPprot_rej:
            us1 = cp2[0] << 8 + cp2[1];
            if (us1 == PROTlqp)
                netp->hw.locopts &= ~(1<<LCPopt_LQPT);
            else if (us1 == PROTipcp) {
#if NTRACE
                Nprintf("PPP: Peer does not support IPCP!\n");
#endif
                goto term;
            }
            break;
        case LCPecho_req:
            if ((prevstate & LCPopen) == LCPopen) {
                *cp = LCPecho_rep;
#if MAGICNUM
                if (netp->hw.locopts & (1<<LCPopt_MNUM)) {
                    netp->hw.mnum = TimeMS();
                    Nmemcpy((char *)cp+4, (char *)&netp->hw.mnum, 4);
                }
                else
#endif
                    memset((char *)cp+4, 0, 4);
                pppWrite(mess);
            }
            break;
#if ECHO_TOUTMS
        case LCPecho_rep:
           /*
            ** There is no check for packet id.  This could be bad if the
            ** peer is delayed in it's responses beyond the timeout period
            ** for echo-req.  This is, however, very unlikely as the timeout
            ** period should generally be in seconds, not milliseconds.
            */
#if MAGICNUM
            if (netp->hw.locopts & (1<<LCPopt_MNUM)) {
               /* Magic number in reply shouldn't match request */
                if (memcmp(cp+4, (char *)&netp->hw.mnum, 4) != 0)
                    netp->hw.opt6--;
#if NTRACE >= 3
                else
                    Nprintf("PPP: Possible loop-back condition on echo-rep\n");
#endif
            }
            else
#endif
                netp->hw.opt6--;
#endif
        case LCPdisc_req:
            break;
        default:            /* Unknown code */
            i1 += 4;                                /* Length of packet */
            us1 = i1 + 4;                           /* Length of new packet */
            for (; i1 >= 0; i1--)                   /* Copy packet */
                cp2[i1] = cp[i1];
            *cp = LCPcode_rej;                      /* New code field */
            cp[2] = us1 >> 8, cp[3] = us1;          /* New length field */
            mess->mlen = MESSH_SZ + LHDRSZ + us1;
            pppWrite(mess);
            break;
        }
    }
    else if ((prevstate & LCPopen) != LCPopen)
        goto rej1;                          /* Only LCP until LCP is open */
#if AUTHENT & 1 || REQAUTH == PROTpap
    else if (protocol == NC2(PROTpap)) {
        switch (us1) {
#if REQAUTH == PROTpap
        case PAPauth_req:
            netp->hw.opt4 &= ~AUTHhwat;         /* Peer responded */
            cp3 = ussGetPasswd(netno, *cp2, cp2+1);
            cp2 += *cp2 + 1;
            if (strlen(cp3) == *cp2 && strncmp(cp3, cp2+1, *cp2) == 0) {
                *cp = PAPauth_ack;              /* Set response to ACK */
                cp[4] = strlen(AUTH_ACK_REPLY); /* Size of reply */
                strcpy((char *)cp+5,AUTH_ACK_REPLY);/* insert reply text */
                netp->hw.opt4 &= ~AUTHhpap;     /* Peer accepted */
            }
            else {
                *cp = PAPauth_nak;              /* Set response to NAK */
                cp[4] = strlen(AUTH_NAK_REPLY); /* Size of reply */
                strcpy((char *)cp+5,AUTH_NAK_REPLY);/* insert reply text */
#if NTRACE >= 3
                Nprintf("PPP: Peer failed PAP authentication\n");
#endif
            }
            rejlen = cp[4] + 5;                 /* Determine length */
            cp[2] = rejlen >> 8, cp[3] = rejlen;/* Set value in packet*/
            mess->mlen = MESSH_SZ + LHDRSZ + rejlen;
            pppWrite(mess);                     /* Drop it on line */
            if (*cp == PAPauth_nak) {
                PPPSIG_PAUTH_DOWN(netno);
                goto term;
            }
            else {
                PPPSIG_PAUTH_UP(netno);
            }
            break;
#endif
#if AUTHENT & 1
        case PAPauth_ack:
            netp->hw.opt4 &= ~(AUTHppap|AUTHpwat);  /* Host accepted */
            PPPSIG_HAUTH_UP(netno);
            break;
        case PAPauth_nak:
#if NTRACE >= 3
            Nprintf("PPP: Host failed PAP authentication.\n");
#endif
            PPPSIG_HAUTH_DOWN(netno);
            break;
#endif
        }
    }
#endif
#if AUTHENT & 6 || REQAUTH == PROTchap /* CHAP/MS-CHAP auth allowed */
    else if (protocol == NC2(PROTchap)) {
        switch (us1) {
#if AUTHENT & 6
        case CHAPchallenge:
            netp->hw.opt4 |= AUTHpwat;          /* Wait for success/fail */
            *cp = CHAPresponse;                 /* Signal a response (2) */
            us2 = *cp2;                         /* Value size */
#if AUTHENT & 4
            if (netp->hw.opt4 & AUTHpmsc) {
                cp3 = cp2 + 50;                 /* End of data field */
                Nmemcpy(cp3, cp2+1, us2);        /* Save challenge value */

                *cp2 = 49;                      /* value size is 49 */
                memset(cp2+1, 0, 49);           /* Zero value field */
                i2 = ((i1 = strlen(netp->hw.passwd)) > 14) ? 14 : i1;
                for (i3=0; i3 < i2*2; i3++) {
                    *((char *)cp3+8+i3*2) = netp->hw.passwd[i3];
                    *((char *)cp3+9+i3*2) = 0;
                }
                NtChallengeResponse(cp3, cp3+8, i2*2, cp2+25);
                LmChallengeResponse(cp3, (unsigned char *)netp->hw.passwd,
                        cp2+1);
                cp2[49] = USE_NT;               /* Use (0=LM, 1=NT) ChRe */
                i2 = 50;                                /* place to add id */
                rejlen = 54;                            /* add name length */
            }
#endif
#if AUTHENT & 2
            if (netp->hw.opt4 & AUTHpchp) {
               /* CHAP response:
                ** MD5(id + secret + challenge) ==> new value field
                */
                cp3 = cp2 + i1;
                *cp3 = cp[1];
                strcpy((char *)cp3+1, netp->hw.passwd); /* PassWd */
                i1 = strlen(netp->hw.passwd) + 1;       /* PassWd len + ID */
                Nmemcpy((char *)cp3+i1, cp2+1, us2);    /* Copy challenge */
                i1 += us2;                              /* Length to hash */
                *cp2 = 16;                              /* Value size is 16 */
                MD5digest(cp3, i1, cp2+1);
                i2 = 17;                                /* Place to add id */
                rejlen = 21;                            /* Add name length */
            }
#endif
            strcpy((char *)cp2 + i2, netp->hw.userid);  /* Add name */
            rejlen += strlen(netp->hw.userid);      /* Add length of name */
            cp[2] = rejlen >> 8, cp[3] = rejlen;    /* Length */
            mess->mlen = MESSH_SZ + LHDRSZ + rejlen;/* Set mess buf len */
            pppWrite(mess);
            break;
#endif
#if REQAUTH == PROTchap
        case CHAPresponse:
            if (cp[1] != netp->hw.opt1)         /* Match challenge ID */
                goto rej1;

            netp->hw.opt4 &= ~AUTHhwat;         /* Peer responded */

           /* CHAP length = 16, MS-CHAP length = 49 */
            us2 = *cp2;                         /* length of value */
            rejlen = 4;

           /* Re-create the peer's response to our challenge.
            ** Variables used:
            **   i1 is the length of the response
            **   us2 is the value size
            **   cp2 points to the value size (data area of PPP packet)
            **   cp3 will point to the challenge (in scratch area)
            **   cp4 will point to the password (derived from the userid)
            **   i2 will be the length of the new challenge value
            **
            ** CHAP:
            **   value size = 16
            **   MD5(id + secret + challenge, length, value)
            ** MS-CHAP:
            **   value size = 49
            **   NT(challenge, unicode secret, value)
            **   LM(challenge, secret, value + 24)
            **   USE_NT at value + 48 
            */
            cp3 = cp2 + i1;                     /* Point to scratch area */
            i2 = 0;                             /* Length of value to hash */
            cp4 = (unsigned char *)ussGetPasswd(netno, i1-us2-1,
                (char *)cp2+us2+1);

#if AUTH_ALG == CHAPalg_MD5
           /* Identifier*/
            cp3[i2++] = cp[1];

           /* Secret */
            strcpy((char *)cp3+i2, (char *)cp4);
            i2 += strlen((char *)cp4);
#endif

           /* Challenge */
            cp3[i2++] = (unsigned char)strlen(netp->hw.userid);
            Nmemcpy((char *)cp3+i2, (char *)&netp->hw.ul2, 4);
            i2 += 4;
            cp3[i2++] = (unsigned char)(netp->hw.ul2 >> 3);
            cp3[i2++] = (unsigned char)(netp->hw.ul2 >> 10);
            cp3[i2++] = (unsigned char)(netp->hw.ul2 >> 15);

#if AUTH_ALG == CHAPalg_MD5
            MD5digest(cp3, i2, cp3+i2);         /* HASH the challenge */
            if (memcmp(cp2+1, cp3+i2, 16) == 0)
#elif AUTH_ALG == CHAPalg_MD4
            if (cp2[49] == 1) {
               /* Make Unicode password for NT response after challenge. */
                for (i3=i2, us1=strlen((char *)cp4), us2=0; us2 < us1; us2++) {
                    cp3[i3++] = cp4[us2];
                    cp3[i3++] = 0;
                }

               /* Make NT Response (last parameter) after unicode password. */
                NtChallengeResponse(cp3, cp3+i2, us1<<1, cp3+i3);
                i2 = 25;
            }
            else if (cp2[49]

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美在线高清| 久久欧美一区二区| 色呦呦日韩精品| av一本久道久久综合久久鬼色| 国产一区二三区| 国产精品一区二区x88av| 国产成人av一区| 成人黄色小视频| 91丨porny丨户外露出| 成人免费视频视频在线观看免费| 丁香婷婷综合激情五月色| 国产精品18久久久久久久久| 岛国av在线一区| 色综合中文字幕国产| 欧美伊人久久久久久久久影院| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 在线观看亚洲一区| 日韩一级黄色大片| 久久精品视频免费| 亚洲精品国产一区二区三区四区在线| 亚洲视频一区在线观看| 午夜电影久久久| 国产在线精品国自产拍免费| 国产·精品毛片| 欧美视频一区二区| 欧美成人乱码一区二区三区| 中文字幕av一区二区三区免费看 | 国产精品国产三级国产普通话蜜臀| 国产人成一区二区三区影院| 亚洲人吸女人奶水| 美女脱光内衣内裤视频久久网站 | 久久精品亚洲国产奇米99| 国产精品女主播av| 午夜精品123| 成人的网站免费观看| 制服丝袜成人动漫| 中文字幕在线一区| 免费看欧美女人艹b| 99热在这里有精品免费| 欧美一区二区三区四区五区| 中文字幕欧美区| 免费观看在线综合| 一本一本大道香蕉久在线精品| 精品国产一区二区三区不卡| 亚洲自拍偷拍网站| 成人ar影院免费观看视频| 制服视频三区第一页精品| 国产精品成人一区二区艾草 | 18欧美亚洲精品| 国产精品主播直播| 欧美美女bb生活片| 亚洲欧美日韩在线| 丁香婷婷综合五月| 欧美大片在线观看| 香蕉乱码成人久久天堂爱免费| 91丨九色丨蝌蚪丨老版| 精品国产伦一区二区三区观看方式 | 日韩av成人高清| 91九色02白丝porn| 国产精品区一区二区三| 日韩电影在线看| 欧洲精品视频在线观看| 国产精品电影一区二区| 成人黄色在线网站| 国产精品视频在线看| 国产乱子轮精品视频| 欧美不卡一区二区三区四区| 日本成人在线电影网| 欧美日韩精品综合在线| 亚洲国产毛片aaaaa无费看| 成人精品国产免费网站| 欧美国产亚洲另类动漫| 福利电影一区二区| 国产视频一区二区三区在线观看| 国内精品在线播放| 久久新电视剧免费观看| 国产一区二区美女| 久久久久久麻豆| 国产suv一区二区三区88区| 国产亚洲成年网址在线观看| 国产91精品精华液一区二区三区| 久久久精品一品道一区| 国产精品美女久久福利网站| 在线综合+亚洲+欧美中文字幕| 成人精品免费网站| 另类专区欧美蜜桃臀第一页| 亚洲福利一区二区三区| 国产精品麻豆欧美日韩ww| 欧美成人激情免费网| 欧美性猛片aaaaaaa做受| av中文字幕在线不卡| 激情亚洲综合在线| 丝袜a∨在线一区二区三区不卡| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 色综合色狠狠综合色| 福利电影一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产精品69毛片高清亚洲| 国产三级精品三级| 91丨九色丨蝌蚪丨老版| 日韩av高清在线观看| 欧美激情综合五月色丁香小说| 99国产精品久久久久久久久久久| 亚洲一区二区美女| 久久久影视传媒| 欧美视频一区在线观看| 国产成人亚洲精品青草天美| 一区二区三区在线免费播放| 日韩欧美激情一区| 色嗨嗨av一区二区三区| 极品少妇一区二区三区精品视频| 国产精品国产三级国产普通话99 | 亚洲综合色丁香婷婷六月图片| 日韩欧美一卡二卡| 色婷婷综合久色| 国内外成人在线| 日韩精品91亚洲二区在线观看| 久久精品在线观看| 91精品国产91久久久久久最新毛片| 国产另类ts人妖一区二区| 亚洲一区二区三区国产| 久久精品综合网| 日韩一级高清毛片| 欧美亚洲日本一区| 不卡一区二区在线| 精品在线播放免费| 青娱乐精品在线视频| 亚洲最快最全在线视频| 国产精品美女一区二区三区 | 在线观看亚洲成人| 成人性生交大片免费看在线播放 | 欧美日韩免费在线视频| 不卡免费追剧大全电视剧网站| 青青青伊人色综合久久| 亚洲综合在线电影| 一区二区中文视频| 国产精品久久久久影院色老大| 久久亚洲一区二区三区四区| 91精选在线观看| 欧美精品一级二级| 欧美精品 国产精品| 欧美亚洲综合色| 欧美伊人精品成人久久综合97| 91首页免费视频| 在线观看中文字幕不卡| 色哟哟精品一区| 91黄色免费观看| 欧美视频完全免费看| 欧美性色黄大片手机版| 欧美三级一区二区| 欧美美女一区二区三区| 欧美日韩国产影片| 日韩一区二区视频| 精品盗摄一区二区三区| 欧美精品一区二区三区四区| 国产亚洲欧美日韩日本| 国产视频视频一区| ...xxx性欧美| 亚洲最色的网站| 奇米精品一区二区三区四区| 久久国产尿小便嘘嘘尿| 国产精品一区二区黑丝| 成人av网在线| 欧美性三三影院| 日韩美一区二区三区| 久久久99精品免费观看| 1024成人网| 日韩国产欧美一区二区三区| 精品一区二区av| jlzzjlzz亚洲日本少妇| 欧美日韩一区国产| 久久久久久久久久久久久女国产乱| 国产精品伦一区二区三级视频| 亚洲男同性视频| 奇米精品一区二区三区在线观看一| 国产一区在线视频| 91天堂素人约啪| 精品日本一线二线三线不卡| 国产清纯美女被跳蛋高潮一区二区久久w | 日本一区二区高清| 亚洲国产cao| 国产一区中文字幕| 日本福利一区二区| 欧美不卡一区二区三区| 欧美精品一区二区在线播放| 亚洲精品视频一区二区| 免费av成人在线| 91丨porny丨户外露出| 亚洲精品一二三| 五月天激情小说综合| 国产精品亚洲午夜一区二区三区 | 欧美va亚洲va香蕉在线| 中文字幕第一页久久| 日日夜夜精品视频免费| 成人小视频免费观看| 日韩小视频在线观看专区| 亚洲美女屁股眼交3| 国产在线精品视频| 91麻豆精品国产91久久久久| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 |