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

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

?? async.c

?? PPPoE協議在Psos中的實現源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/************************************************************************/
/*                                                                      */
/*   MODULE:  async.c                                                   */
/*   PRODUCT: pNA+,  OpEN TCP/IP PPP driver                             */
/*   PURPOSE: ASYNC module                                              */
/*   DATE:    28 February, 1996                                         */
/*                                                                      */
/*----------------------------------------------------------------------*/
/*                                                                      */
/*              Copyright 1996, Integrated Systems, Inc.                */
/*                      ALL RIGHTS RESERVED                             */
/*                                                                      */
/*   Permission is hereby granted to licensees of Integrated Systems,   */
/*   Inc. products to use or abstract this computer program for the     */
/*   sole purpose of implementing a product based on Integrated         */
/*   Systems, Inc. products.   No other rights to reproduce, use,       */
/*   or disseminate this computer program, whether in part or in        */
/*   whole, are granted.                                                */
/*                                                                      */
/*   Integrated Systems, Inc. makes no representation or warranties     */
/*   with respect to the performance of this computer program, and      */
/*   specifically disclaims any responsibility for any damages,         */
/*   special or consequential, connected with the use of this program.  */
/*                                                                      */
/************************************************************************/
#include <pna.h>

#include "ni_ppp.h"
#include "syslog.h"
#include "ppp.h"
#include "pppmisc.h"
#include "compress.h"
#include "fsm.h"
#include "lcp.h"
#include "ipcp.h"
#include "chap.h"
#include "upap.h"
#include "psos.h"
#include "pppoe.h"

/* extern long SysBaud; */
extern PAI pais[NUM_PPP];                  /* async control structures */
extern PCI pcis[NPPP];
extern struct ppp_pccb PPPpccb[];
extern mblk_t *PPPoEHdPool;

/*
 * FCS lookup table as calculated by genfcstab.
 */
/*static u_short fcstab[256] = {
    0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
    0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
    0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
    0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
    0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
    0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
    0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
    0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
    0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
    0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
    0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
    0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
    0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
    0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
    0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
    0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
    0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
    0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
    0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
    0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
    0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
    0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
    0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
    0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
    0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
    0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
    0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
    0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
    0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
    0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
    0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
    0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
};*/

/*----------------------------------------------------------------------*/
/* prototypes                                                           */
/*----------------------------------------------------------------------*/
static u_int frame_decode(int, mblk_t *, char **);
static u_int frame_encode(u_long u, char *buf1, u_char *buf);

void AsyncDataInd(Uid uid, mblk_t *mp, unsigned long flags);


/************************************************************************/
/* async_send: Does the ASYnC encoding and sends out a packet.          */
/*  INPUTS: u - unit # , buf - buffer, len - size of packet             */
/* RETURNS: -1 for error, 0 ok                                          */
/* OUTPUTS:                                                             */
/* NOTE(S): This routine could be called from within the NI, when the   */
/*          len is > 0; or called from the upper layer, when len == 0   */
/************************************************************************/
unsigned long async_send(char *addr, u_long unit, u_char *buf, u_long len)
{
    char *buf1;
    unsigned long c;                 /* serial channel number */
    struct ppp_pccb *ccb;
    mblk_t *m;
    frtn_t frtn;
    u_short proto;
    u_int count;
    mblk_t *m0;
    
    ccb = &PPPpccb[unit];
    if (!len)
    {
         if (!(buf1 = pmalloc( BUFSIZE << 1)))
         {
               syslog(LOG_WARNING, "Out of AsyncSend buffer");
               ccb->mibstat.outdiscards++;

              /*------------------------------------------------------------*/
              /* return the original buffer                                 */
              /*------------------------------------------------------------*/
              m0 = (mblk_t *)buf;
              m = ((mblk_t *)buf)->b_cont;
              ccb->nifuncs.freemsg(m);
              m0->b_wptr = m0->b_rptr;
              ENQUE(&PPPoEHdPool, m0);
              return ENOBUFS;
         }
         count = frame_encode(unit, buf1, buf);

        /*-----------------------------------------------------------------*/
        /* return the original buffer                                      */
        /*-----------------------------------------------------------------*/
        m0 = (mblk_t *)buf;

        m = ((mblk_t *)buf)->b_cont;
        ccb->nifuncs.freemsg(m);
        m0->b_wptr = m0->b_rptr;
        ENQUE(&PPPoEHdPool, m0);
        
        /*-----------------------------------------------------------------*/
        /* Send the data down to the disi driver.                          */
        /*-----------------------------------------------------------------*/
        frtn.free_func = (void (*)())pfree1;
        frtn.free_arg = (char *)buf1;
        if (m = pna_esballoc((unsigned char *)buf1, (int)count, 0, &frtn)) {
            /*was gs_esballoc JRC*/
            m->b_wptr += count;
           (*pppcfgtab[unit].ifinfo->genifsend)(addr, m);
            ccb->mibstat.outoctets += count;
            ccb->mibstat.outucastpkts++;
        } else {
            ccb->mibstat.outdiscards++;
            pfree(buf1);
        }

        return 0;
    }
    else
    {
        proto =  ntohs(((PPPoEHeader *)buf)->protocol);

        switch (proto) {
        case PPP_LCP:
            lcp_printpkt(buf+10, (int)len-10, logprint, 0);
            break;
        case PPP_IPCP:
            ipcp_printpkt(buf+10, (int)len-10, logprint, 0);
            break;
#if CHAPNEEDED
        case PPP_CHAP:
            ChapPrintPkt(buf+10, (int)len-10, logprint, 0);
            break;
#endif
#if UPAPNEEDED
        case PPP_PAP:
            upap_printpkt(buf+10, (int)len-10, logprint, 0);
            break;
#endif
        }
        /*-----------------------------------------------------------------*/
        /* Send the data down to the disi driver.                          */
        /*-----------------------------------------------------------------*/
         frtn.free_func = (void (*)())pfree1;
         frtn.free_arg = (char *)buf;
         if (m = pna_esballoc((unsigned char *)buf, (int)len, 0, &frtn)) {
             /*was gs_esballoc JRC*/
             m->b_rptr = m->b_wptr;
             m->b_wptr += len;
            (*pppcfgtab[unit].ifinfo->genifsend)(addr, m);
             ccb->mibstat.outoctets += len;
             ccb->mibstat.outucastpkts++;
         } else {
             ccb->mibstat.outdiscards++;
             pfree((char *)(buf));
         }

         return 0;
    }
    
}


/************************************************************************/
/* AsyncInput: Input event handler for Async Channel. This is called by */
/*             PPP daemon upon receiving the input event                */
/*  INPUTS: channel - 1,2,3,4                                           */
/* RETURNS:                                                             */
/* OUTPUTS:                                                             */
/* NOTE(S):                                                             */
/************************************************************************/
void AsyncInput(u_long unit, mblk_t *m)
{
    struct ppp_pccb *ccb = &PPPpccb[unit];
    int eop = 0;
    int len, i;
    PCI *pc = &pcis[unit];
    u_short proto,etype;
    char *CurRecvPkt;
    u_int count;
    PPPoEHeader *pppoehdr; 
            
    /*----------------------------------------------------------------------*/
    /* Assembles the new char into a packet and sets eop if end of a packet.*/
    /*----------------------------------------------------------------------*/
    count = frame_decode((int)unit, m, &CurRecvPkt);

    pna_freemsg(m); /*was gs_freemsg JRC*/

    if (CurRecvPkt == (char *)0)
        return;

    ccb->mibstat.inucastpkts++;
    
    pppoehdr = (PPPoEHeader *)(CurRecvPkt+12);
    
    etype =  ntohs(pppoehdr->eth_type);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视视频在线观看入口直接观看www| 538在线一区二区精品国产| 国产成人精品影院| 在线这里只有精品| 久久久蜜臀国产一区二区| 亚洲精品中文在线观看| 秋霞成人午夜伦在线观看| 国产suv精品一区二区6| 欧美日韩亚洲丝袜制服| 国产精品人人做人人爽人人添| 亚洲一区在线观看视频| 国产精品一区二区你懂的| 欧美日韩在线亚洲一区蜜芽| 久久精品这里都是精品| 亚洲一区二区在线免费看| 国产精品综合av一区二区国产馆| 欧美午夜精品电影| 久久久久久97三级| 蜜桃精品在线观看| 色菇凉天天综合网| 国产精品理论片在线观看| 激情久久五月天| 欧美精品黑人性xxxx| 国产精品三级av在线播放| 裸体健美xxxx欧美裸体表演| 一本一道综合狠狠老| 中文欧美字幕免费| 国产高清久久久久| 精品国免费一区二区三区| 日本亚洲三级在线| 日韩一区二区三| 天堂va蜜桃一区二区三区漫画版| 色久优优欧美色久优优| 日韩理论在线观看| 99re成人精品视频| 亚洲视频1区2区| 成人黄色a**站在线观看| 亚洲午夜电影在线观看| 日本精品裸体写真集在线观看 | 国产成人亚洲综合色影视| 91精品久久久久久久久99蜜臂| 一区二区三区波多野结衣在线观看| 成人国产亚洲欧美成人综合网| 国产精品乱码久久久久久| 国产成人精品网址| 亚洲国产高清在线观看视频| 国产一区二区免费看| 久久久久国产成人精品亚洲午夜 | 精品理论电影在线| 蜜臀av一区二区三区| 日韩一区二区在线播放| 麻豆国产精品视频| 欧美精品一区二区三区蜜臀| 久久国内精品自在自线400部| 欧美精品一区二区不卡| 国产一区二区精品在线观看| 国产欧美一区二区精品婷婷 | 久久国产精品第一页| 欧美精品一区二区三区四区| 夫妻av一区二区| 中文字幕制服丝袜一区二区三区| 色综合av在线| 天天综合天天综合色| 精品人在线二区三区| 国产乱色国产精品免费视频| 中文字幕乱码亚洲精品一区| 91同城在线观看| 香蕉成人伊视频在线观看| 精品欧美一区二区三区精品久久| 国产成人在线网站| 一区av在线播放| 精品国产露脸精彩对白| 粗大黑人巨茎大战欧美成人| 亚洲欧美另类久久久精品| 日韩欧美二区三区| 国产精品自拍毛片| 亚洲精选一二三| 欧美成人r级一区二区三区| 99re热这里只有精品视频| 人人爽香蕉精品| 国产无遮挡一区二区三区毛片日本| 99久久国产免费看| 国产在线精品视频| 亚洲一区二区欧美激情| 日本一区二区成人| 欧美mv和日韩mv的网站| 91高清视频在线| 国产成人av电影在线观看| 日韩激情一二三区| 亚洲欧美激情在线| 日本一区二区视频在线| 91精品国产综合久久福利| 色综合夜色一区| 国产成人日日夜夜| 精品一区二区av| 亚洲高清免费在线| 亚洲男同1069视频| 国产精品人成在线观看免费| 欧美一区二区观看视频| 欧美视频一区在线观看| 91免费小视频| 粉嫩蜜臀av国产精品网站| 久久91精品久久久久久秒播| 性久久久久久久| 亚洲国产中文字幕| 亚洲一区二区在线免费观看视频| 亚洲色图另类专区| 亚洲视频你懂的| 中文字幕欧美一| 中文在线一区二区| 久久久不卡网国产精品一区| 精品免费国产二区三区| 日韩精品一区二区三区中文不卡 | 91麻豆产精品久久久久久| 风间由美性色一区二区三区| 国产老肥熟一区二区三区| 经典一区二区三区| 国产一区二区电影| 国产成人精品影视| 国产成人精品免费视频网站| 国产精品99久久久久久宅男| 国产精品性做久久久久久| 成人免费高清在线| a级精品国产片在线观看| www.亚洲人| 91丝袜呻吟高潮美腿白嫩在线观看| 91污在线观看| 欧美少妇xxx| 日韩欧美久久一区| 精品久久久三级丝袜| 国产视频一区在线播放| 一色桃子久久精品亚洲| 亚洲久草在线视频| 日本午夜精品一区二区三区电影 | 亚洲综合免费观看高清完整版在线| 一区二区三区四区国产精品| 天天色综合天天| 久久av老司机精品网站导航| 国产乱淫av一区二区三区| 91丨porny丨最新| 91黄色免费网站| 欧美一区二区免费观在线| 久久久99久久| 一区二区三区欧美日| 亚洲chinese男男1069| 久久精品国产99| 成人高清免费观看| 欧美日韩一级视频| xfplay精品久久| 亚洲欧洲av在线| 午夜精品视频一区| 国产大陆亚洲精品国产| 色天天综合色天天久久| 日韩免费视频一区| 亚洲视频在线一区二区| 日本成人在线电影网| 成人国产精品免费| 欧美一区二区黄| 亚洲伦理在线免费看| 精品一区二区精品| 欧美日韩综合色| 国产日韩v精品一区二区| 三级久久三级久久久| gogo大胆日本视频一区| 日韩视频一区二区三区 | 日韩精品1区2区3区| 成人av高清在线| 欧美成人精品1314www| 伊人开心综合网| 国产精品一二三四五| 日韩一区二区三区高清免费看看| 亚洲欧洲日韩av| 国产精品1区2区| 欧美另类久久久品| 亚洲色图在线播放| 国产98色在线|日韩| 在线播放日韩导航| 亚洲激情五月婷婷| 成人午夜电影网站| 精品国产乱码久久久久久免费| 亚洲人快播电影网| 国产sm精品调教视频网站| 精品国产91洋老外米糕| 午夜日韩在线电影| 色噜噜夜夜夜综合网| 成人欧美一区二区三区黑人麻豆| 精品一区二区成人精品| 制服丝袜亚洲播放| 无吗不卡中文字幕| 欧美三级乱人伦电影| 一区二区三区日韩精品视频| 99热99精品| 国产目拍亚洲精品99久久精品| 国产一区二三区好的| 日韩欧美在线观看一区二区三区| 偷窥国产亚洲免费视频 | 菠萝蜜视频在线观看一区| 国产亚洲欧美日韩在线一区| 精品系列免费在线观看| 日韩精品一区二区三区蜜臀|