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

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

?? ip.c

?? 52arm_ucos_ii_new.最新版本UCOSII程序
?? C
字號:
/************************************************************
 * File name	: Ip.c										*
 * By 			: hugang, hgx2000@mail.china.com			*
 ************************************************************/

#include "armnet.h"
#include "..\inc\44blib.h"
#include <string.h>


extern NODE locnode;       //本機的節點信息結構(mac,ip,mask,port)

/********************************************************************************************************
 * Check frame is IP, checksum & byte-swap, return data len 											*
 ********************************************************************************************************/
short IsIp(ETHERFRAME *efp, short len)
{
    short ver, dlen=0, hlen;
    unsigned short sum;
    IPKT *ip;
    if (efp->e.ptype==PCOL_IP && len>=sizeof(IPHDR))
    {
        ip = (IPKT *)(efp->edata);           		/* Get pointer to IP frame */
        ver = ip->i.vhl >> 4;                		/* Get IP version & hdr len */
        hlen = (ip->i.vhl & 0xf) << 2;
        sum = ~csum((unsigned char *)&ip->i, (unsigned short)hlen);     		/* Do checksum */
        if (ver==4 && len>=hlen && sum==0)   		/* If OK.. */
        {
        	SwapIp(efp);
            dlen =  min(ip->i.len, len);
            dlen -= hlen;
            if (hlen > sizeof(IPHDR))        		/* If IP options present.. */
            {                                		/* ..delete them, move data down */
                memmove((unsigned char *)ip->ipdata, (unsigned char *)&ip->ipdata[hlen-sizeof(IPHDR)], len);
                dlen -= hlen-sizeof(IPHDR);
            }
        }
    }
    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)										*
 ********************************************************************************************************/
short MakeIp(ETHERFRAME *efp, NODE *srcep, NODE *destp, unsigned char pcol, unsigned short dlen)
{
    IPKT *ip;
    static unsigned short ident = 1;
    
    ip = (IPKT *)(efp->edata);           								// Get pointer to IP datagram
    ip->i.ident = ident;               	 								// Set datagram ident
    ip->i.frags = 0;           		 									// Frag offset in units of 8 bytes
    ip->i.vhl = 0x40+(sizeof(IPHDR)>>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;
    ip->i.len = dlen + sizeof(IPHDR);    								// Data length
	SwapIp(efp);    
    ip->i.check = 0;                    								// Clear checksum
    ip->i.check = ~csum((unsigned char *)ip, sizeof(IPHDR)); 			// ..then set to calc value
    ident++;                            								// Increment datagram ident
    
    return(MakeFrame(efp, srcep->mac,destp->mac, PCOL_IP, (unsigned short)dlen + sizeof(IPHDR)));
}


/********************************************************************************************************
 * Swap byte order of ints in IP header 																*
 ********************************************************************************************************/
void SwapIp(ETHERFRAME *efp)
{
    IPKT *ip;

    ip = (IPKT *)(efp->edata);      
    ip->i.len = swapw(ip->i.len);
    ip->i.ident = swapw(ip->i.ident);
    ip->i.frags = swapw(ip->i.frags);
    ip->i.sip = swapl(READ_PACKED(ip->i.sip));
    ip->i.dip = swapl(READ_PACKED(ip->i.dip));
}


/********************************************************************************************************
 * Get the frame driver type, source IP and Ethernet addresses											*
 * Returned data does not include port number, netmask or gateway addr 									*
 ********************************************************************************************************/
void GetIpSrce(ETHERFRAME *efp, NODE *np)
{
    IPKT *ip;

	memcpy(np->mac, (unsigned char *)efp->e.srce, MACLEN);
    ip = (IPKT *)efp->edata;
    np->ip = READ_PACKED(ip->i.sip);
}


/********************************************************************************************************
 * Get the frame driver type, destination IP and Ethernet addresses										*
 * Returned data does not include port number, netmask or gateway addr 									*
 ********************************************************************************************************/
void GetIpDest(ETHERFRAME *efp, NODE *np)
{
    IPKT *ip;

 	memcpy(np->mac, (unsigned char *)efp->e.dest, MACLEN);
    ip = (IPKT *)efp->edata;
    np->ip = READ_PACKED(ip->i.dip);
}


/********************************************************************************************************
 * Get local node data corresponding to a frame destination IP address									*
 * Data does not include port number. Return 0 if no matching local node 								*
 ********************************************************************************************************/
unsigned short GetIPLocdest(ETHERFRAME *efp, NODE *np)
{
    IPHDR *iph;
    unsigned short ok = 0;

    iph =(IPHDR *)(efp->edata);
    if (iph->dip==locnode.ip)
    {   
    	*np = locnode;
    	ok = 1;
    }
    return (ok);
}


/********************************************************************************************************
 * Check a remote address to see if it is on the local subnet.											*
 * If so (or no gateway), return it. If not, return the gateway IP address 								*
 ********************************************************************************************************/
unsigned int GateIp(NODE *remp, NODE *locp)
{
    return((locp->gate==0 || OnSubnet(remp->ip, locp)) ? remp->ip : locp->gate);
}


/********************************************************************************************************
 * Check an IP address to see if it is on a subnet, return 0 if not 									*
 ********************************************************************************************************/
short OnSubnet(unsigned int remip, NODE *locp)
{
    return(((remip ^ locp->ip) & locp->mask) == 0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
毛片av中文字幕一区二区| 欧美性三三影院| 精品国产亚洲在线| 老司机一区二区| 精品噜噜噜噜久久久久久久久试看| 日韩av一区二区三区| 精品国产一区二区国模嫣然| 国产成人精品亚洲777人妖| 国产欧美精品一区| 91视频你懂的| 日韩精品欧美精品| www国产成人| 99麻豆久久久国产精品免费优播| 国产欧美视频在线观看| 99精品视频在线免费观看| 亚洲一区二区三区三| 91精品国产综合久久久久| 国产一区二区h| 中文字幕av一区二区三区| 色综合久久久久久久久| 看片的网站亚洲| 自拍偷拍欧美精品| 日韩片之四级片| 成人黄色小视频在线观看| 亚洲一线二线三线视频| 26uuu欧美| 欧美亚洲一区二区在线| 国产露脸91国语对白| 亚洲一二三级电影| 国产网红主播福利一区二区| 日本高清视频一区二区| 老色鬼精品视频在线观看播放| 国产精品国产三级国产aⅴ无密码| 制服.丝袜.亚洲.另类.中文| 成人动漫在线一区| 精彩视频一区二区| 亚洲一区二区三区四区中文字幕| 久久久久久久久久久久电影| 欧美精品v日韩精品v韩国精品v| 国产成人综合自拍| 免费看黄色91| 亚洲第一二三四区| 亚洲三级在线免费观看| 久久久亚洲精品石原莉奈| 制服丝袜亚洲网站| 欧美午夜精品电影| 99久久精品免费| 处破女av一区二区| 国产揄拍国内精品对白| 看国产成人h片视频| 日韩激情av在线| 一区二区高清视频在线观看| 国产欧美精品一区二区色综合| 欧美成人免费网站| 日韩女同互慰一区二区| 3d成人h动漫网站入口| 在线观看亚洲精品视频| 色欧美片视频在线观看| 色噜噜狠狠成人中文综合 | www.日韩精品| 精东粉嫩av免费一区二区三区| 日本伊人色综合网| 天使萌一区二区三区免费观看| 一区二区久久久久| 性做久久久久久免费观看| 亚洲一区精品在线| 亚洲午夜激情网页| 亚洲福利国产精品| 日韩成人午夜电影| 日本vs亚洲vs韩国一区三区二区| 日本va欧美va瓶| 精品一区二区三区影院在线午夜| 国产一区二区三区日韩| 国产成人免费视频网站 | 51精品秘密在线观看| 欧美日韩免费观看一区三区| 在线播放视频一区| 精品国产在天天线2019| 久久久亚洲欧洲日产国码αv| 久久久久久亚洲综合| 国产精品久久午夜夜伦鲁鲁| 亚洲欧美日韩中文播放| 亚洲国产视频网站| 麻豆精品视频在线观看| 国产激情视频一区二区三区欧美 | 国产精品久久久久7777按摩| 中文字幕日韩精品一区| 一区二区视频在线| 五月天欧美精品| 激情欧美一区二区| 不卡的看片网站| 在线观看视频一区二区欧美日韩| 91精品国产综合久久久蜜臀图片 | 色噜噜狠狠成人中文综合| 欧美日韩mp4| 欧美精品一区二区三区蜜臀| 欧美高清在线精品一区| 亚洲福利视频三区| 国产精品一区二区视频| 色88888久久久久久影院按摩| 欧美日韩性生活| 欧美国产精品一区二区| 亚洲电影一区二区| 国产成人精品www牛牛影视| 一本高清dvd不卡在线观看 | 久久综合综合久久综合| 成人丝袜18视频在线观看| 欧美吻胸吃奶大尺度电影| 久久蜜臀中文字幕| 午夜精品久久久久久久99樱桃| 国产精品影音先锋| 制服.丝袜.亚洲.另类.中文| 国产精品国产a级| 捆绑调教美女网站视频一区| 色视频欧美一区二区三区| 久久色在线视频| 香蕉久久夜色精品国产使用方法| 国产精品一区二区在线播放| 欧美精品日韩综合在线| 国产精品久久久久天堂| 国产一本一道久久香蕉| 91精品国产综合久久小美女| 一区二区三区中文字幕电影| 成人激情视频网站| 国产欧美精品一区二区色综合| 麻豆91在线播放| 宅男在线国产精品| 亚洲国产成人av网| 色哟哟亚洲精品| 亚洲免费av在线| 色呦呦国产精品| 亚洲综合另类小说| 97se亚洲国产综合自在线不卡 | 99国产欧美另类久久久精品| 国产午夜精品一区二区三区视频| 美女在线视频一区| 日韩一区二区在线观看视频播放| 亚洲视频免费观看| 99久久亚洲一区二区三区青草| 国产精品三级av| 91免费观看在线| 亚洲免费三区一区二区| 97精品久久久午夜一区二区三区| 国产精品剧情在线亚洲| av资源网一区| 亚洲愉拍自拍另类高清精品| 欧美视频一区在线| 午夜视频一区在线观看| 欧美日韩三级一区| 青青草国产成人av片免费| 日韩一区二区三区视频在线观看| 久久精品国产亚洲5555| 国产亚洲一区二区三区| 9l国产精品久久久久麻豆| 亚洲欧美激情插| 欧美三级一区二区| 蜜臀av国产精品久久久久 | 国产成人丝袜美腿| 欧美国产精品v| 91视频www| 日韩电影在线免费看| 精品奇米国产一区二区三区| 国产一区二区三区四| 国产精品久久久久久久浪潮网站| 91在线精品一区二区| 亚洲国产精品久久不卡毛片| 91精品国产欧美日韩| 国产一区二区在线看| 国产精品无人区| 欧美日韩极品在线观看一区| 麻豆91在线看| 综合精品久久久| 91精品国产福利在线观看| 国产jizzjizz一区二区| 亚洲综合精品久久| 久久久99免费| 91久久精品一区二区| 免费成人在线影院| 亚洲人123区| 亚洲精品一区二区三区福利 | 91精品国产福利| 99久久婷婷国产| 看电影不卡的网站| 亚洲影院在线观看| 久久久久久免费网| 这里只有精品视频在线观看| 成人av一区二区三区| 奇米四色…亚洲| 一区二区欧美国产| 中文字幕va一区二区三区| 91精品国产91久久久久久一区二区 | 在线亚洲欧美专区二区| 国产麻豆成人传媒免费观看| 一区二区三区丝袜| 中文字幕第一区综合| 精品美女被调教视频大全网站| 欧美亚男人的天堂| 91伊人久久大香线蕉| 国产一区二区三区免费| 毛片基地黄久久久久久天堂|