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

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

?? ip.c

?? 基于44b0的arpscan程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* IP functions 

NOTE: replace sizeof(ARPKT) with ARPLEN!!

Debug option to send IP datagrams with a dummy 'options' field */
#define BIGHEAD 0       /* Set non-zero to send datagrams with larger IP hdrs */
#define ARPLEN  28
#define IPHDRLEN     20
#define ICMPHDRLEN   8

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#include "ether.h"
#include "netutil.h"
#include "ip.h"

#define IP_TTL          100     /* Time To Live for an outgoing IP datagram */
#define FRAGTRIES       8       /* Number of attempts to match a fragment */
#define NFRAGS          4       /* No of fragments in buffer */

typedef struct {                /* Fragment buffer structure */
    int tries;                      /* Number of times to attempt a match */
    WORD ident;                     /* IP ident field */
    LWORD sipp;                      /* Source IP address */
    WORD oset;                      /* Offset in IP data area */
    WORD len;                       /* Length of fragment */
    BYTE data[MAXIP];               /* Fragment data */
} FRAG;

FRAG frags[NFRAGS];             /* Fragment buffer */

extern int netdebug;            /* Debug flag: net packet display */
extern WORD swapw(WORD w);
extern LWORD swapl(LWORD lw);
extern void *getframe_datap(GENFRAME *gfp);

/* Upcall function pointer: 0 if unused */
NODE *(*get_locnode_n)(int n);  /* Func ptr for local node locator upcall */

/* Private prototypes */
int defrag_ip(IPKT *ip, int dlen);

/* Check ARP packet, swap bytes, return -1, 0 if not ARP */
int is_arp(GENFRAME *gfp, int len)
{
    WORD pcol;
    BYTE *temparp;
    int dlen=0;
    ARPKT *arp;
    
    arp=&arpkt;
    pcol = getframe_pcol(gfp);          /* ARP only on Ether */
    if (pcol==PCOL_ARP && len>=sizeof(ARPKT))
    {                                   /* If protocol OK.. */
        temparp =(BYTE * )getframe_datap(gfp);
        //memcpy((BYTE *)arp,temparp,ARPLEN);//sizeof(ARPKT));
        memcpy((BYTE *)(&(arp->hrd)),&temparp[0],sizeof(WORD));
        memcpy((BYTE *)(&(arp->pro)),&temparp[2],sizeof(WORD));
        memcpy((BYTE *)(&(arp->hln)),&temparp[4],sizeof(BYTE));
        memcpy((BYTE *)(&(arp->pln)),&temparp[5],sizeof(BYTE));
        memcpy((BYTE *)(&(arp->op)),&temparp[6],sizeof(WORD));
        memcpy(arp->smac,&temparp[8],MACLEN);
        memcpy((BYTE *)(&(arp->sip)),&temparp[8+MACLEN],sizeof(LWORD));
        memcpy(arp->dmac,&temparp[12+MACLEN],MACLEN);
        memcpy((BYTE *)(&(arp->dip)),&temparp[12+2*MACLEN],sizeof(LWORD));
        
        swap_arp(gfp);                  /* ..check ARP data */
        
        //arp = getframe_datap(gfp);
        if (arp->hrd==HTYPE && arp->pro==ARPPRO)
            dlen = -1;                  /* Return non-zero if OK */
        else
        {
            dlen = 0;                   /* Swap back if not OK */
            swap_arp(gfp);
        }
    }
    
    return(dlen);
}

/* Make an ARP packet, return its total length */
int make_arp(GENFRAME *gfp, NODE *srcep, NODE *destp, WORD code)
{
    //ARPKT *arp;
    BYTE *temparp;
    LWORD templ;

    gfp->g.fragoff = 0;                 /* No fragmentation */
    temparp = (BYTE *)getframe_datap(gfp);
    memcpy(&temparp[8], srcep->mac, MACLEN);  /* Srce ARP ether addr */
    memcpy(&temparp[12+MACLEN], destp->mac, MACLEN);  /* Dest ARP ether addr */
    temparp[0] = HTYPE>>8;                   /* Hware & protocol types */
    temparp[1] = HTYPE&0xff;
    temparp[2] = ARPPRO>>8;
    temparp[3] = ARPPRO&0xff;
    temparp[4] = MACLEN;                  /* Hardware addr len */
    temparp[5] = sizeof(LWORD);           /* IP addr len */
    temparp[6] = code>>8;                    /* ARP opcode */
    temparp[7] = code&0xff;
    templ = srcep->ip;                     /* Source IP addr */
    temparp[8+MACLEN] = (BYTE)((templ>>24)&0x000000ff);
    temparp[9+MACLEN] = (BYTE)((templ>>16)&0x000000ff);
    temparp[10+MACLEN] = (BYTE)((templ>>8)&0x000000ff);
    temparp[11+MACLEN] = (BYTE)(templ&0x000000ff);
    templ = gate_ip(destp, srcep);               /* Dest ip addr (maybe gateway) */
    temparp[12+2*MACLEN] = (BYTE)((templ>>24)&0x000000ff);
    temparp[13+2*MACLEN] = (BYTE)((templ>>16)&0x000000ff);
    temparp[14+2*MACLEN] = (BYTE)((templ>>8)&0x000000ff);
    temparp[15+2*MACLEN] = (BYTE)(templ&0x000000ff);
    //swap_arp(gfp);
    Uart_Printf("\n");
    /*for(i=0;i<ARPLEN;i++)
    Uart_Printf("%x,",temparp[i]);*/
    return(make_frame(gfp, destp->mac, PCOL_ARP, sizeof(ARPKT)));
}

/* Swap byte order of ints in ARP header */
void swap_arp(GENFRAME *gfp)
{
    ARPKT *arp;
//    BYTE *data;
    
    arp=&arpkt;

    arp->hrd = swapw(arp->hrd);
    arp->pro = swapw(arp->pro);
    arp->op = swapw(arp->op);
    arp->sip = swapl(arp->sip);
    arp->dip = swapl(arp->dip);
 }

/* Check frame is IP/SLIP, checksum & byte-swap, return data len */
int is_ip(GENFRAME *gfp, int len)
{
    int ver, dlen=0, hlen;
    WORD pcol, sum;
    IPKT *ip;
    BYTE *tempip;

    ip=&ipkt;
    //Uart_Printf("\nis_ip");
    pcol = getframe_pcol(gfp);
    if ((pcol==PCOL_IP || pcol==0) && len>=sizeof(IPHDR))
    {
     //   ip = getframe_datap(gfp);           /* Get pointer to IP frame */
        tempip=(BYTE *)getframe_datap(gfp);
     
//-----------------------------------------------------------------------
        memcpy((BYTE *)(&(ip->i.vhl)),&tempip[0],sizeof(BYTE));
        memcpy((BYTE *)(&(ip->i.service)),&tempip[1],sizeof(BYTE));
        memcpy((BYTE *)(&(ip->i.len)),&tempip[2],sizeof(WORD));
        memcpy((BYTE *)(&(ip->i.ident)),&tempip[4],sizeof(WORD));
        memcpy((BYTE *)(&(ip->i.frags)),&tempip[6],sizeof(WORD));
        memcpy((BYTE *)(&(ip->i.ttl)),&tempip[8],sizeof(BYTE));
        memcpy((BYTE *)(&(ip->i.pcol)),&tempip[9],sizeof(BYTE));
        memcpy((BYTE *)(&(ip->i.check)),&tempip[10],sizeof(WORD));
        memcpy((BYTE *)(&(ip->i.sip)),&tempip[12],sizeof(LWORD));
        memcpy((BYTE *)(&(ip->i.dip)),&tempip[16],sizeof(LWORD));
//-----------------------------------------------------------------------
        ver = ip->i.vhl >> 4;               /* Get IP version & hdr len */
        hlen = (ip->i.vhl & 0xf) << 2;
        sum = ~csum(&ip->i, (WORD)hlen);    /* Do checksum */
        if ((ver==4) && (len>=hlen) && (sum==0))  /* If OK.. */
        {
            swap_ip(gfp);                   /* Do byte-swaps */
            
            dlen = mini(ip->i.len, len) - hlen;
            {                               // ..delete them, move data down 
                memmove(&tempip[20], &tempip[20+hlen-IPHDRLEN], len);
                dlen -= hlen-IPHDRLEN;
            }
            memcpy((BYTE *)(&(ip->data)),&tempip[20],dlen);
            if ((ip->i.frags & 0x3fff)!=0)  /* If a fragment.. */
                dlen = defrag_ip(ip, dlen); /* ..call defragmenter */
        }
        else if (netdebug)
            Uart_Printf("Invalid datagram, ver %u len %u sum %u\n", ver, len, sum);
    }
    return(dlen);
}

/* Make an IP packet, if greater than the MTU, also make fragment (subframe) in
** this frame. Return total length of frame and subframes (if any) */
int make_ip(GENFRAME *gfp, NODE *srcep, NODE *destp, BYTE pcol, WORD dlen)
{
    IPKT *ip;//, *ip2;
    int len, sublen=0, fhlen, mtu;
    static WORD ident=1, oset=0;
    GENFRAME *sfp;
    BYTE  *tempip;
    BYTE  *tempip2;

    //ip = getframe_datap(gfp);           /* Get pointer to IP datagram */
    ip=&ipkt;
    tempip=getframe_datap(gfp);
    ip->i.ident = ident;                /* Set datagram ident */
    ip->i.frags = oset >> 3;            /* Frag offset in units of 8 bytes */
    gfp->g.fragoff = 0;                 /* ..assuming no more frags */
    mtu = (getframe_mtu(gfp)-IPHDRLEN) & 0xfff8;   /* MTU rounded down 8 */
    len = mini(dlen, mtu);              /* Size of this frame (this fragment) */
    if (dlen > len)                     /* If fragmentation required.. */
    {                                   /* Create new frag within this frame */
        fhlen = dtype_hdrlen(gfp->g.dtype);             /* Frame hdr len */
        gfp->g.fragoff = len + IPHDRLEN + fhlen;        /* Subframe offset */
        sfp = (GENFRAME *)&gfp->buff[gfp->g.fragoff];   /* Subframe ptr */
        ip->i.frags = (oset>>3)+0x2000;                 /* Show there is frag */
        oset += len;                                    /* New data offset */
        //ip2 = (IPKT*)((BYTE*)sfp+sizeof(GENHDR)+fhlen); /* Ptr to 2nd IP frag */
        tempip2= (BYTE*)((BYTE*)sfp+sizeof(GENHDR)+fhlen);
        //memmove(ip2->data, &ip->data[oset], dlen-len);  /* Copy data 1st->2nd */
        memmove(&tempip2[20],&tempip[20],dlen-len);
        
        sfp->g.dtype = gfp->g.dtype;    /* Copy driver type into subframe */
        //sublen = make_ip(sfp, srcep, destp, pcol, (WORD)(dlen-len));
    }                                   /* Recursive call to make frag */
    ip->i.vhl = 0x40+(IPHDRLEN>>2);/* Version 4, header len 5 LWORDs */
    ip->i.service = 0;                  /* Routine message */
    ip->i.ttl = IP_TTL;                 /* Time To Live */
    ip->i.pcol = pcol;                  /* Set IP protocol */
    ip->i.sip = srcep->ip;              /* Srce, dest IP addrs */
    ip->i.dip = destp->ip;
#if BIGHEAD
    ip->i.option = 0;                   /* Null options if oversized header */
#endif
    ip->i.len = len + IPHDRLEN;         /* Data length */
    swap_ip(gfp);                       /* Do byte-swaps (for checksum) */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精彩视频一区二区三区| 亚洲视频一区二区在线| 欧美日韩二区三区| 91视频免费观看| 91麻豆精品秘密| 日韩久久久精品| 中文字幕综合网| 亚洲高清三级视频| 97se亚洲国产综合自在线| 制服丝袜中文字幕一区| 亚洲日本成人在线观看| 麻豆精品在线播放| 91色视频在线| 欧美国产禁国产网站cc| 日韩电影在线观看一区| 色综合天天综合网天天狠天天 | 国产原创一区二区| 95精品视频在线| 国产午夜亚洲精品午夜鲁丝片| 在线国产电影不卡| 久久久久久久久久久久久夜| 日韩精品一级中文字幕精品视频免费观看 | 久久精品视频在线免费观看 | 欧美精品免费视频| 18成人在线观看| 成人网页在线观看| 欧美国产精品一区| 成人自拍视频在线| 国产人久久人人人人爽| 蜜桃一区二区三区四区| 制服丝袜日韩国产| 丝袜美腿亚洲综合| 欧美精品在线一区二区三区| 一区二区三区四区中文字幕| 97久久精品人人做人人爽| 欧美激情中文字幕| 成人精品一区二区三区四区| 不卡一区在线观看| 中文字幕中文字幕在线一区 | 成人禁用看黄a在线| 国产精品三级av在线播放| 国产suv一区二区三区88区| 欧美国产精品久久| 91国产免费看| 麻豆一区二区99久久久久| 久久久精品人体av艺术| 91在线视频在线| 亚洲777理论| 欧美日韩精品福利| 国产精品影音先锋| 中文字幕精品三区| 欧美日韩综合在线免费观看| 麻豆精品一区二区| 一区二区中文视频| 日韩欧美在线网站| 91丨porny丨国产入口| 精品中文av资源站在线观看| 国产精品传媒视频| 国v精品久久久网| 亚洲精品视频在线观看网站| 国产精品国产三级国产| 国产欧美一二三区| 在线观看日韩国产| 99免费精品在线观看| 毛片av一区二区| 午夜精品在线视频一区| 国产精品日日摸夜夜摸av| 日韩女优制服丝袜电影| 欧美三级视频在线| av电影在线观看一区| 国产高清在线精品| 99综合影院在线| 成人免费的视频| 不卡欧美aaaaa| 国产成人自拍在线| 高清不卡在线观看av| 国产在线精品一区二区三区不卡| 国内精品伊人久久久久影院对白| 麻豆免费看一区二区三区| 亚洲国产成人精品视频| 亚洲色图视频网| 日韩你懂的在线观看| 18成人在线观看| 国产精品二三区| 亚洲一区二区偷拍精品| 婷婷中文字幕综合| 日韩一区在线免费观看| 一区二区久久久久久| 免费人成精品欧美精品| 国产成人精品1024| 国产主播一区二区三区| 美女视频黄 久久| 国产综合色视频| av在线播放成人| 精品视频999| 欧美一级午夜免费电影| 波多野结衣在线aⅴ中文字幕不卡| 成人午夜电影网站| 在线影视一区二区三区| 日韩一区二区三区免费看| 26uuu欧美日本| 一区二区三区在线播| 久久9热精品视频| 97se亚洲国产综合自在线不卡| 欧美特级限制片免费在线观看| 日韩欧美成人激情| 亚洲综合在线观看视频| 国内精品久久久久影院一蜜桃| 91视视频在线直接观看在线看网页在线看| 欧美一区三区二区| 不卡的av在线| 亚洲精品一区二区三区蜜桃下载| 久久精品亚洲一区二区三区浴池| 亚洲欧洲综合另类在线| 久久不见久久见中文字幕免费| 91小视频在线免费看| 久久奇米777| 捆绑紧缚一区二区三区视频| 欧美亚一区二区| 亚洲色图制服诱惑| 成人理论电影网| 日本一区二区三区四区| 国内外精品视频| 久久亚洲综合色| 国产一区二区伦理片| 欧美一区二区三区系列电影| 亚洲一区二区成人在线观看| 99久久精品一区| 亚洲乱码国产乱码精品精98午夜 | 国产一区二区在线视频| 欧美变态tickling挠脚心| 精品一区二区三区免费| 正在播放亚洲一区| 亚洲一级二级在线| 免费精品视频最新在线| 欧美一区二区三区日韩| 亚洲国产日韩a在线播放性色| 在线视频国内自拍亚洲视频| 亚洲一级电影视频| 欧美一区二区在线看| 久久av中文字幕片| 欧美r级在线观看| 国产精品91xxx| 亚洲自拍偷拍综合| 日韩一二在线观看| 盗摄精品av一区二区三区| 国产精品久久久久久久第一福利| www.亚洲国产| 午夜在线成人av| 91亚洲国产成人精品一区二三| 欧美视频一区二区在线观看| 国产一区二区三区综合| 亚洲免费观看高清完整版在线 | 亚洲国产cao| 日韩手机在线导航| 久草中文综合在线| 亚洲精品日产精品乱码不卡| 日韩欧美精品在线视频| 国产精品一二一区| 日本一区二区高清| 日韩欧美精品三级| 免费人成在线不卡| 亚洲免费在线观看视频| 精品久久久久久久一区二区蜜臀| 91啪亚洲精品| 免费人成在线不卡| 亚洲图片欧美色图| 亚洲国产综合在线| 一区二区欧美精品| 亚洲国产日韩a在线播放| 欧美α欧美αv大片| 日韩一区二区影院| 日韩一级在线观看| 日韩一区二区电影在线| 欧美午夜电影在线播放| 在线视频一区二区三区| 欧美日韩国产成人在线91| aaa国产一区| 成人一区二区三区| www.日韩在线| 成人免费高清视频| 色综合久久综合网97色综合| 91丨九色丨国产丨porny| 一本久道久久综合中文字幕| 在线观看91精品国产入口| 制服丝袜亚洲精品中文字幕| 日韩欧美一区二区不卡| 91精品国产日韩91久久久久久| 色综合天天综合网国产成人综合天| av午夜一区麻豆| 欧美日本一区二区三区四区| 色综合久久中文字幕| 狠狠色丁香婷婷综合| 久久激情五月激情| 蜜桃av噜噜一区| 免费观看在线综合| 国产精品久久久久久久第一福利| 精品成人免费观看| 精品欧美乱码久久久久久1区2区 | 日本韩国视频一区二区|