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

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

?? vj.c

?? PPP協議C語言源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <net.h>
#include <local.h>
#include <support.h>
#include "ppp.h"

struct CONNstate {
    struct CONNstate *next;
    unsigned char id;
    unsigned char null;
    unsigned char TCPIPhdr[128];
};
struct LINEstate {
    struct CONNstate *TXlast;
    unsigned char RXid, TXid;
    char flags;
    struct CONNstate TXstate[MAXSLOTS];
    struct CONNstate RXstate[MAXSLOTS];
};


#ifndef LITTLE
#define GETLONGp(w, ptr, offs) w.s[0] = ((unsigned short *)ptr)[offs/2], \
        w.s[1] = ((unsigned short *)ptr)[1+(offs/2)]
#define PUTLONGp(w, ptr, offs) ((unsigned short *)ptr)[offs/2] = w.s[0], \
        ((unsigned short *)ptr)[1+(offs/2)] = w.s[1]
#else
#define GETLONGp(w, ptr, offs) w.c[0] = ptr[offs+3], w.c[1] = ptr[offs+2], \
        w.c[2] = ptr[offs+1], w.c[3] = ptr[offs+0]
#define PUTLONGp(w, ptr, offs) ptr[offs+0] = w.c[3], ptr[offs+1] = w.c[2], \
        ptr[offs+2] = w.c[1], ptr[offs+3] = w.c[0]
#endif


/* Routines to perform the Van Jacobsson compression and decompression. */
#define ENCODEZ(val, cp) \
if (val >= 256 || val == 0) \
    *cp++ = 0, *cp++ = val>>8; \
*cp++ = val
#define ENCODE(val, cp) \
if (val >= 256) \
    *cp++ = 0, *cp++ = val>>8; \
*cp++ = val
#define DECODE(val, cp) \
if ((val = *cp++) == 0) \
    val = *cp++<<8, val |= *cp++


#define VERLEN     0
#define TLEN       1
#define FRID       2
#define FRAGM      3
#define TIME       8
#define PROT       9
#define CHKSUM     5
#define FROM      12

#define MYPORT     0
#define HERPORT    1
#define SEQNO      4
#define ACKNO      8
#define HDRLEN    12
#define FLAGS     13
#define WINDOW     7
#define T_CHKSUM   8
#define URGP       9


/* VJ Compression change tracking bits */
#define BITurg 0x01
#define BITwin 0x02
#define BITack 0x04
#define BITseq 0x08
#define BITpsh 0x10
#define BITid  0x20
#define BITcon 0x40


static struct LINEstate LINEstate[NNETS];
unsigned char RXslots[NNETS], TXslots[NNETS], TXixcomp[NNETS];


/*
** * * * * * *
** vjInit()     Make VJ compression ready to handle packets
**
** void vjInit(int netno)
**
** PARAMETERS:
**   (in) int netno             The network interface number
**
** DESCRIPTION:
**   This function will initialize all VJ data so that it is
**   ready to handle network traffic.  This function is called
**   after PPP has finished all negotiations.
*/
void vjInit(int netno)
{
    int i1;
    struct LINEstate *LINEstatep;

    LINEstatep = &LINEstate[netno];
    memset((void *)LINEstatep, 0, sizeof(*LINEstatep));
    LINEstatep->TXid = LINEstatep->RXid = 255;
    for (i1=0; i1<MAXSLOTS; i1++) {
        LINEstatep->TXstate[i1].next = &LINEstatep->TXstate[i1+1];
        LINEstatep->TXstate[i1].id = (unsigned char)i1;
        LINEstatep->RXstate[i1].next = &LINEstatep->RXstate[i1+1];
        LINEstatep->RXstate[i1].id = (unsigned char)i1;
    }
    LINEstatep->TXstate[TXslots[netno]].next = &LINEstatep->TXstate[0];
    LINEstatep->RXstate[RXslots[netno]].next = &LINEstatep->RXstate[0];
    LINEstatep->TXlast = &LINEstatep->TXstate[TXslots[netno]];
}


/*
** * * * * * *
** vjWrite()    Attempt to compress a frame
**
** int vjWrite(MESS *mess, MESS **mpp)
**
** PARAMETERS:
**   (in) MESS *mess            A pointer to a frame to format out of
**   (in/out) MESS **mpp        The value result formatted frame pointer
**
** RETURNS:
**   PROTip                     No compression possible
**   PROTcomp                   Packet successfully compressed
**   PROTuncomp                 First packet in compressed sequence
**
** DESCRIPTION:
**   This function will input a PPP frame and attempt to compress it
**   using Van Jacobson compression.
**
** * * * * * *
**
** MODIFICATION HISTORY:
**
**   15-JUL-1999  BSK  Chg: Taken from ppp.c
**
** * * * * * *
*/
int vjWrite(MESS *mess, MESS **mpp)
{
    int i1, netno;
    unsigned int hlen, ihlen, thlen, us1;
    unsigned char changes[16], changeflag, *cp;
    unsigned long deltaS, deltaA;
    unsigned char *ihdrp, *ihdrp2;
    unsigned char *thdrp, *thdrp2;
    MESS *mp2;
    struct LINEstate *LINEstatep;
    struct CONNstate *CONNstatep, *CONNstatep2;
    union {unsigned char c[4]; short s[2]; long l;} UL3, UL4;

    netno = mess->netno;    /* Network connection for message */

   /* Point to IP header */
    ihdrp = (unsigned char *)mess + MESSH_SZ + LHDRSZ;

   /*
    ** Check to see if compression is required.  Will not do compresion if:
    **    Protocol is not TCP (6)
    **    Message is a fragment
    **    ACK is not set
    **    SYN, FIN, RST is set
    */
    if (ihdrp[PROT] != 6 ||                             /* Not TCP */
       ((unsigned short *)ihdrp)[FRAGM] & NC2(0x3fff))  /* IP fragment*/
        goto nocompr;

    ihlen = (ihdrp[VERLEN] & 0xf) * 4;          /* length of data */
    thdrp = (unsigned char *)ihdrp + ihlen;     /* point to TCP header */
    if ((thdrp[FLAGS] & 0x17) != 0x10)  /* Flags: ACK ~set, FIN,SYN,RST set */
        goto nocompr;

    thlen = (thdrp[HDRLEN] >> 4) << 2;          /* total header size */
    hlen = ihlen + thlen;

   /* Find or create the connection state by scanning the linked list. */
    LINEstatep = &LINEstate[netno];
    CONNstatep = LINEstatep->TXlast;
    for (;;) {
      CONNstatep2 = CONNstatep;
      CONNstatep = CONNstatep->next;
      ihdrp2 = (unsigned char *)CONNstatep->TCPIPhdr;
      thdrp2 = (unsigned char *)(CONNstatep->TCPIPhdr +
               (ihdrp2[VERLEN] & 0xf) * 4);
      if (memcmp(CONNstatep->TCPIPhdr+12, ihdrp+FROM, 12) == 0 &&
           ((unsigned short *)thdrp)[MYPORT] == 
             ((unsigned short *)thdrp2)[MYPORT] &&
           ((unsigned short *)thdrp)[HERPORT] ==
             ((unsigned short *)thdrp2)[HERPORT] )
           goto found;
        if (CONNstatep == LINEstatep->TXlast)
            break;
    } 
    LINEstatep->TXlast = CONNstatep2;
    goto uncompr;

/* here we found an existing entry and make it fresh */
found:
    if (CONNstatep == LINEstatep->TXlast)
        LINEstatep->TXlast = CONNstatep2;
    else {
        CONNstatep2->next = CONNstatep->next;
        CONNstatep->next = LINEstatep->TXlast->next;
        LINEstatep->TXlast->next = CONNstatep;
    }

   /* Check for changes not handled by the compression */
    if (((unsigned short *)ihdrp)[VERLEN] != ((unsigned short *)ihdrp2)[VERLEN])
        goto uncompr;
    if (((unsigned short *)ihdrp)[FRAGM] != ((unsigned short *)ihdrp2)[FRAGM])
        goto uncompr;
    if (ihdrp[TIME] != ihdrp2[TIME])
        goto uncompr;
    if (thdrp[HDRLEN] != thdrp2[HDRLEN])
        goto uncompr;
    if (((unsigned short *)thdrp)[URGP] !=
        ((unsigned short *)thdrp2)[URGP] && (thdrp[FLAGS] & S_URG) == 0)
        goto uncompr;
    if (thlen > 20)
        if (memcmp((char *)thdrp+20, (char *)thdrp2+20, thlen-20))
            goto uncompr;

   /* Encode the header changes */
    cp = changes;               /* point to change list */
    changeflag = 0;
    if (thdrp[FLAGS] & S_URG) { /* urgent bit set */
        changeflag |= BITurg;             /* 0x01 */
        us1 = NC2(((unsigned short *)thdrp)[URGP]);
        ENCODEZ(us1, cp);
    }
   /* Window change */
    if ((us1 = NC2(((unsigned short *)thdrp)[WINDOW]) -
        NC2(((unsigned short *)thdrp2)[WINDOW])) != 0) {
        changeflag |= BITwin;             /* 0x02 */
        ENCODE(us1, cp);
    }
   /* Acknowledge number chagned */
    GETLONGp(UL3, thdrp, ACKNO);
    GETLONGp(UL4, thdrp2, ACKNO);
    if ((deltaA = UL3.l - UL4.l) != 0)  {
        if (deltaA > 0xffff)
            goto uncompr;
        us1 = (unsigned short)deltaA;
        changeflag |= BITack;             /* 0x04 */
        ENCODE(us1, cp);
    }
   /* Sequence number changed */
    GETLONGp(UL3, thdrp, SEQNO);
    GETLONGp(UL4, thdrp2, SEQNO);
    if ((deltaS = UL3.l - UL4.l) != 0) {
        if (deltaS > 0xffff)
            goto uncompr;
        us1 = (unsigned short)deltaS;
        changeflag |= BITseq;             /* 0x08 */
        ENCODE(us1, cp);
    }

   /* Analyze the nature of the changes */
    switch (changeflag) {
   /* No changes: must be data following ACK, or we don't compress */
    case 0:
        if (((unsigned short *)ihdrp)[TLEN] !=
            ((unsigned short *)ihdrp2)[TLEN] &&
            ((unsigned short *)ihdrp2)[TLEN] == NC2(hlen))
            break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看一区| 欧美日韩一区二区在线观看视频| 亚洲欧美日韩在线| 日韩手机在线导航| 91视频在线观看免费| 韩国精品主播一区二区在线观看 | 首页欧美精品中文字幕| 久久久99免费| 91精品久久久久久久99蜜桃| av在线不卡电影| 国产精品一区久久久久| 日韩精品福利网| 一区二区三区在线免费观看| 国产日本亚洲高清| 精品国产91亚洲一区二区三区婷婷| 色诱亚洲精品久久久久久| 国产精品一区在线观看你懂的| 天堂精品中文字幕在线| 一区二区在线看| 综合久久给合久久狠狠狠97色| 久久人人超碰精品| 精品国产人成亚洲区| 欧美一区二区三区在| 欧美日韩国产乱码电影| 91在线视频在线| av高清久久久| caoporm超碰国产精品| 国产精品自拍毛片| 国产乱码精品一区二区三区忘忧草| 日本不卡一二三| 日韩av一区二| 蜜臀久久久久久久| 麻豆高清免费国产一区| 日韩在线a电影| 日韩成人免费电影| 蜜桃久久精品一区二区| 视频一区在线播放| 奇米精品一区二区三区四区| 丝袜美腿成人在线| 麻豆精品在线播放| 久久99国产精品免费网站| 麻豆国产精品视频| 国精产品一区一区三区mba桃花 | 91社区在线播放| 99国产精品视频免费观看| 不卡的av电影| 色综合中文字幕国产| 91丝袜美女网| 精品视频1区2区3区| 欧美日韩精品一区二区天天拍小说| 欧美午夜宅男影院| 777a∨成人精品桃花网| 日韩一区二区麻豆国产| 精品噜噜噜噜久久久久久久久试看| 精品日韩一区二区三区免费视频| 日韩美女在线视频| 欧美国产欧美综合| 亚洲精品国产精华液| 亚洲成人综合视频| 麻豆极品一区二区三区| 国产精品亚洲专一区二区三区 | 一本久久综合亚洲鲁鲁五月天| 色噜噜狠狠成人中文综合| 精品视频在线看| 日韩精品在线网站| 国产精品污www在线观看| 国产精品麻豆网站| 亚洲一区二区三区自拍| 日韩vs国产vs欧美| 懂色av一区二区三区免费观看| 不卡的电影网站| 欧美欧美欧美欧美| 国产丝袜欧美中文另类| 亚洲欧洲综合另类| 久久精品999| 97久久精品人人做人人爽| 欧美日韩国产综合草草| 久久尤物电影视频在线观看| 中文字幕字幕中文在线中不卡视频| 午夜久久久久久久久久一区二区| 黄色资源网久久资源365| 成人aaaa免费全部观看| 欧美精品1区2区3区| 国产欧美精品区一区二区三区| 一级做a爱片久久| 韩国成人福利片在线播放| 色婷婷一区二区三区四区| 日韩精品中文字幕一区二区三区| 亚洲欧美日韩国产成人精品影院 | 欧美无人高清视频在线观看| 日韩美女在线视频| 一区二区三区**美女毛片| 久草精品在线观看| 欧洲另类一二三四区| 久久综合资源网| 亚洲狠狠爱一区二区三区| 国产成人99久久亚洲综合精品| 欧美视频中文一区二区三区在线观看 | 国产一区二区毛片| 欧美亚洲综合网| 欧美极品美女视频| 久久国产尿小便嘘嘘| 色www精品视频在线观看| 久久综合av免费| 午夜精品久久久久影视| 91在线你懂得| 国产无遮挡一区二区三区毛片日本| 午夜影视日本亚洲欧洲精品| 成人午夜视频在线| 欧美精品一区二| 日韩成人一级大片| 欧美丰满一区二区免费视频| 亚洲日本丝袜连裤袜办公室| 国产成人精品网址| 精品久久久久久久久久久久久久久久久| 亚洲精品国产a久久久久久| 岛国av在线一区| 久久久亚洲精品一区二区三区| 日韩电影免费在线观看网站| 欧美又粗又大又爽| 一区二区视频免费在线观看| 成人自拍视频在线观看| 久久亚洲影视婷婷| 久久99久久久欧美国产| 日韩一区二区麻豆国产| 视频一区欧美精品| 91精品国产综合久久久蜜臀粉嫩| 亚洲一区电影777| 欧美怡红院视频| 一区二区高清视频在线观看| 色天使久久综合网天天| 亚洲免费av高清| 欧洲生活片亚洲生活在线观看| 有坂深雪av一区二区精品| 色综合久久99| 一区二区视频免费在线观看| 在线精品视频免费播放| 一区二区欧美视频| 欧美日韩中文一区| 日韩黄色小视频| 欧美大白屁股肥臀xxxxxx| 毛片av一区二区三区| 精品国产91乱码一区二区三区 | 在线亚洲精品福利网址导航| 亚洲美女在线国产| 欧美色偷偷大香| 天堂影院一区二区| 精品毛片乱码1区2区3区 | 国产91精品一区二区麻豆亚洲| 久久精品日韩一区二区三区| 国产成人在线视频网站| 国产精品蜜臀在线观看| 一本到三区不卡视频| 亚洲一区欧美一区| 欧美一区二区三区日韩视频| 久久福利视频一区二区| 欧美激情在线观看视频免费| 91亚洲精华国产精华精华液| 亚洲欧美日韩国产手机在线| 欧美三级一区二区| 久久成人免费网站| 中文无字幕一区二区三区| 色婷婷av一区二区三区gif| 丝袜诱惑制服诱惑色一区在线观看| 91 com成人网| 国产成人丝袜美腿| 一区二区三区不卡视频| 日韩欧美国产一区二区三区| 国产美女一区二区三区| 亚洲精选免费视频| 日韩免费一区二区| va亚洲va日韩不卡在线观看| 亚洲18色成人| 久久久久高清精品| 在线观看国产一区二区| 美国毛片一区二区| 亚洲三级小视频| 日韩一级在线观看| 成人黄色免费短视频| 亚洲电影一级片| 国产欧美一区二区三区沐欲| 色av综合在线| 国产麻豆精品theporn| 亚洲精品视频在线观看网站| 日韩免费成人网| 色吧成人激情小说| 国产精品亚洲а∨天堂免在线| 亚洲国产一区二区视频| 国产午夜精品久久| 这里只有精品免费| 91网址在线看| 99精品在线观看视频| 久久丁香综合五月国产三级网站 | 舔着乳尖日韩一区| 国产精品久久二区二区| 欧美一二三四在线| 日本大香伊一区二区三区| 国产精品自拍三区| 美腿丝袜在线亚洲一区| 亚洲精品你懂的|