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

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

?? lqrp.c

?? PPP協議C語言源代碼
?? C
字號:

#include <string.h>
#include "net.h"
#include "local.h"
#include "support.h"
#include "ppp.h"

#ifdef LQRP

extern struct NET nets[];
extern struct CONNECT connblo[];
extern struct NETCONF netconf[];
extern GLOBALCONST PTABLE ussLQRPTable;

/* This is the link quality report.  The last 5 fields are present after
   a read, but are not written.  LQRP sets packet size automatically, so
   the application can write the whole structure if that is convenient.
   The structure isn't used in the protocol module, because the alignments
   are not right.
*/
struct LQreport {
    unsigned long MagicNumber;/* RFC has a hyphen */
    unsigned long LastOutLQRs;
    unsigned long LastOutPackets;
    unsigned long LastOutOctets;
    unsigned long PeerINLQRs;
    unsigned long PeerInPackets;
    unsigned long PeerInDiscards;
    unsigned long PeerInErrors;
    unsigned long PeerInOctets;
    unsigned long PeerOutLQRs;
    unsigned long PeerOutPackets;
    unsigned long PeerOutOctets;
    unsigned long SaveInLQRs; /* these read but not written */
    unsigned long SaveInPackets;
    unsigned long SaveInDiscards;
    unsigned long SaveInErrors;
    unsigned long SaveInOctets;
};


#ifndef LITTLE
#define STORE32(addr, val) Nmemcpy(addr, &(char *)val, 4)
#else
#define STORE32(addr, val) un.ul=val, \
(addr)[0] = un.c[3], (addr)[1] = un.c[2], \
(addr)[2] = un.c[1], (addr)[3] = un.c[0]
#endif

static int writE(int conno, MESS *mess)
{
    int netno;
    unsigned char *cp;
    unsigned long ul1;
    struct NET *netp;
    union {
        unsigned long ul;
        char c[4];
    } un;

    netno = mess->netno;
    netp = &nets[netno];
    if ((netp->hw.remopts & (1 << 4)) == 0)
        return ENOPROTOOPT;

    netp->OutLQRs++;

    cp = (char *) mess + MESSH_SZ + LHDRSZ;
    *(unsigned short *) (cp - 2) = NC2(PROTlqp);
    memset(cp, 0, 100);
    Nmemcpy(cp + 4, netp->lastins, 32);
    STORE32(cp + 36, netp->OutLQRs);
    ul1 = netp->ifOutUcastPkts + 1;
    STORE32(cp + 40, ul1);
    ul1 = netp->ifOutOctets + 48;
    STORE32(cp + 44, ul1);
    mess->mlen = 48 + MESSH_SZ + LHDRSZ;
    return netp->protoc[0]->writE(conno, mess);
}


/* ===========================================================================
   Screen an arrived serial message.  Returns:
    -3  call write
    -2  no further action
    -1  error occured
    n   please enter in queue number n
*/
static int screen(MESS *mess)
{
    int i1, conno, netno;
    char cc, *cp;
    struct CONNECT *conp;
    struct NET *netp;

   /**
    ** Look for the connection block.  If the user specified this protocol,
    ** we give the message to the user.
    **/
    netno = mess->netno;
    netp = &nets[netno];
    if (mess->mlen - MESSH_SZ - LHDRSZ < 48)
        goto ret9;
    cp = (unsigned char *) mess + MESSH_SZ + LHDRSZ + 4;
    Nmemcpy(netp->lastins, cp, 32);
    for (conno = 0; conno < NCONNS; conno++) {
        conp = &connblo[conno];
        if (conp->blockstat == 0)
            continue;
        if (netno != conp->netno)
            continue;
        if (conp->protoc[0] == &ussLQRPTable)
            goto take1;
    }
ret9:
    return -1;

take1:
#ifdef LITTLE
   /* convert to native byte order if needed */
    cp = (unsigned char *) mess + MESSH_SZ + LHDRSZ + 4;
    for (i1 = 0; i1 < 11; i1++) {
        cc = cp[3], cp[3] = cp[0], cp[0] = cc;
        cc = cp[2], cp[2] = cp[1], cp[1] = cc;
        cp += 4;
    }
#endif

   /* add the synthetic data */
    netp->InLQRs++;
    Nmemcpy(cp + 48, &(char *) netp->InLQRs, 4);
    Nmemcpy(cp + 52, &(char *) netp->ifInUcastPkts, 4);
    Nmemcpy(cp + 56, &(char *) netp->ifInDiscards, 4);
    Nmemcpy(cp + 60, &(char *) netp->ifInErrors, 4);
    Nmemcpy(cp + 64, &(char *) netp->InGoodOctets, 4);
    mess->mlen = MESSH_SZ + LHDRSZ + 68;

    return conno;
}


static int opeN(int conno, int flags)
{
    (void) conno;
    (void) flags;
    return 0;
}
static int closE(int conno)
{
    (void) conno;
    return 0;
}


/** * * * * * *
 ** ioctl()      I/O control function
 **
 ** int ioctl(int handle, int request, void *arg);
 **
 ** PARAMETERS:
 **   (in) void *handle         A handle to the layer being called
 **   (in) int request          Constant for the command to perform
 **   (in/out) void *arg        Pointer to command parameters
 **   (in) size_t size          The size of the command parameters
 **
 **  RETURNS:
 **     0              Success
 **     USS_ERR_INVAL  Support for the request not implemented
 **
 **  DESCRIPTION:
 **     This function allows special purpose functions specific to this
 **     network layer to be performed.  At the moment, there are no functions
 **     defined for this layer.
 ** * * * * * */
static int ioctl(void *handle, enum ioctlreq request, void *arg, size_t size)
{
    (void)handle;    /* quietly ignore this argument */
    (void)request;   /* quietly ignore this argument */
    (void)arg;       /* quietly ignore this argument */
    (void)size;      /* quietly ignore this argument */

    return ussErrInval;
}

GLOBALCONST PTABLE ussLQRPTable = {
    "LQRP", 0, 0, screen, 0, 0, 0, writE, ioctl, NC2(PROTlqp), LHDRSZ
};
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩欧美一区二区| 美女久久久精品| www.在线欧美| 最新国产成人在线观看| 色综合久久88色综合天天6| 亚洲精品videosex极品| 欧美日韩精品三区| 老司机午夜精品99久久| 亚洲国产人成综合网站| 欧美日本免费一区二区三区| 中文一区二区完整视频在线观看| 国产精品久久二区二区| 亚洲视频 欧洲视频| 色88888久久久久久影院野外| 亚洲综合小说图片| 日韩一区二区电影在线| 国产精品一区二区x88av| 中文字幕av一区二区三区| 99久久精品国产毛片| 午夜精品久久久久影视| 久久一夜天堂av一区二区三区| 国产suv精品一区二区883| 亚洲精品免费播放| 日韩欧美电影在线| 成人av免费在线| 亚洲福利视频一区| 久久人人爽人人爽| 在线免费观看日本欧美| 国内精品伊人久久久久av一坑 | 国产在线不卡视频| 一区二区在线观看视频在线观看| 欧美一级搡bbbb搡bbbb| thepron国产精品| 亚洲成国产人片在线观看| 久久婷婷国产综合国色天香| 欧美中文字幕一区二区三区| 精品一区二区三区免费视频| 亚洲人亚洲人成电影网站色| 日韩欧美色综合网站| 色综合久久中文字幕综合网| 麻豆成人久久精品二区三区小说| 亚洲欧洲性图库| 欧美r级在线观看| 欧美色图12p| 国产成人欧美日韩在线电影 | 亚洲成av人片观看| 国产欧美久久久精品影院| 欧美福利视频一区| 91色九色蝌蚪| 粉嫩13p一区二区三区| 日本亚洲最大的色成网站www| 亚洲视频资源在线| 国产欧美日韩精品一区| 日韩欧美的一区| 欧美日韩亚洲综合在线| 99精品欧美一区二区蜜桃免费| 国产最新精品精品你懂的| 午夜一区二区三区视频| 自拍偷自拍亚洲精品播放| 久久精品亚洲一区二区三区浴池| 欧美日韩成人综合| 91黄色免费看| 91视视频在线观看入口直接观看www| 黄一区二区三区| 日本网站在线观看一区二区三区| 一区二区三区91| 亚洲精品免费在线| 亚洲欧洲综合另类| 中文字幕中文字幕一区| 欧美激情一区二区三区全黄| 337p粉嫩大胆色噜噜噜噜亚洲 | 91热门视频在线观看| 波多野结衣在线一区| 成人性色生活片免费看爆迷你毛片| 久久国产剧场电影| 九色porny丨国产精品| 美女www一区二区| 久久精品免费看| 极品美女销魂一区二区三区| 精品一区二区影视| 国产美女在线观看一区| 国产一区二区三区最好精华液| 国产一区二区三区美女| 国产一区二区在线看| 国产成人综合亚洲网站| 成人av资源下载| 91免费国产在线观看| 欧美午夜精品一区二区蜜桃| 欧美三级日本三级少妇99| 欧美精品乱码久久久久久| 91.xcao| 日韩美女一区二区三区四区| 精品国产麻豆免费人成网站| 久久久精品天堂| 中文字幕一区在线观看视频| 一区二区日韩av| 午夜不卡av在线| 精品制服美女丁香| 成人午夜电影网站| 91国内精品野花午夜精品| 欧美性猛片xxxx免费看久爱| 欧美一区二区三区喷汁尤物| 久久综合一区二区| 中文字幕亚洲区| 亚洲动漫第一页| 婷婷久久综合九色国产成人| 蜜臀久久久99精品久久久久久| 老司机午夜精品99久久| www.欧美.com| 欧美乱妇23p| 国产日韩欧美精品综合| 亚洲与欧洲av电影| 精品一区二区三区免费播放| 成人毛片视频在线观看| 欧美日韩国产精品成人| 久久久影视传媒| 亚洲综合一区二区三区| 国产最新精品精品你懂的| 老司机精品视频在线| 国产精品 日产精品 欧美精品| 专区另类欧美日韩| 天天av天天翘天天综合网| 国产九九视频一区二区三区| 欧美精品一区二区蜜臀亚洲| 国产精品伦一区二区三级视频| 亚洲成在人线免费| 丁香激情综合五月| 欧美精品日韩一区| 成人欧美一区二区三区1314| 日本最新不卡在线| 91亚洲精品久久久蜜桃| 精品国产一区二区三区不卡 | 97精品国产97久久久久久久久久久久 | 国产一区二区三区四区在线观看 | 欧美特级限制片免费在线观看| 久久久三级国产网站| 亚洲精品五月天| 国产 欧美在线| 精品美女在线观看| 午夜日韩在线电影| 色综合色狠狠天天综合色| 久久久久久麻豆| 美女视频黄a大片欧美| 欧美综合在线视频| 国产精品福利影院| 国产精品99久久久久久有的能看| 欧美欧美欧美欧美首页| 日韩毛片精品高清免费| 亚洲成av人在线观看| 日韩精品一区二区在线| 五月综合激情日本mⅴ| 久久综合成人精品亚洲另类欧美 | 亚洲韩国精品一区| 成人免费毛片高清视频| 一区二区三区久久久| 国产精品一区二区三区四区| 日韩一区二区视频在线观看| 亚洲午夜一区二区| 色乱码一区二区三区88| 亚洲欧美视频在线观看| 波多野结衣中文字幕一区| 欧美—级在线免费片| 国产激情偷乱视频一区二区三区 | 久久你懂得1024| 精品亚洲porn| 精品裸体舞一区二区三区| 久久99精品久久只有精品| 日韩免费看网站| 久久精工是国产品牌吗| 欧美不卡一区二区三区| 久久99蜜桃精品| av亚洲精华国产精华精华 | 一本一道久久a久久精品 | 在线视频一区二区三| 亚洲精品欧美专区| 99麻豆久久久国产精品免费| 中文字幕精品一区| 99免费精品视频| 一卡二卡三卡日韩欧美| 欧美日韩mp4| 美女视频网站久久| 国产午夜精品在线观看| 不卡av在线免费观看| 亚洲免费在线视频| 欧美日韩在线综合| 美国毛片一区二区三区| 久久精品视频免费观看| caoporn国产精品| 亚洲国产视频一区二区| 日韩一区二区三区观看| 亚洲精品一二三| 欧美美女一区二区在线观看| 男男视频亚洲欧美| 久久精品亚洲精品国产欧美 | 91亚洲资源网| 五月激情综合婷婷| 久久欧美中文字幕| 色欧美日韩亚洲| 精品综合免费视频观看| 国产精品久久久久aaaa|