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

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

?? udp.c

?? 基于三星44b0芯片arm嵌入式系統的rtl8019網口的驅動程序
?? C
字號:
/************************************************************
 * File name	: Udp.c										*
 * By 			: hugang, hgx2000@mail.china.com			*
 ************************************************************/

#include <string.h>
#include <ctype.h>
#include "Armnet.h"
#include "../inc/44blib.h"

extern NODE locnode;

/********************************************************************************************************
 * Return UDP data length (-1 if no data), 0 if not UDP 												*
 ********************************************************************************************************/
short IsUdp(IPKT *ip, short len)
{
    UDPKT *udp;
    unsigned short sum;
    short dlen=0;
                                        							// Check protocol & minimum length
    if (ip->i.pcol==PUDP && len>=sizeof(UDPHDR))
    {
        udp = (UDPKT *)ip;              							// Do checksum
        sum = CheckUdp(udp, swapl(READ_PACKED(ip->i.sip)), swapl(READ_PACKED(ip->i.dip)), len);
        if (!udp->u.check || sum==0xffff)
        {                               							// If zero or correct..
            SwapUdp(udp);              							// Do byte-swaps
            len -= sizeof(UDPHDR);      							// Subtract header len
            dlen = len>0 ? len : -1;    							// Return -1 if data len=0
        }
    }
    return(dlen);
}


/********************************************************************************************************
 * Make a UDP datagram given the source & destination, data len 										*
 ********************************************************************************************************/
short MakeUdp(ETHERFRAME *efp, NODE *srcep, NODE *destp, unsigned short dlen)
{
    UDPKT *udp;
    short ulen, ilen;

    udp = (UDPKT *)(efp->edata);
    udp->u.sport = srcep->port;          							// Set ports
    udp->u.dport = destp->port;
    udp->u.len = ulen = dlen + sizeof(UDPHDR);
    udp->u.check = 0;
    SwapUdp(udp);                      							// Byte-swap
    ilen = MakeIp(efp, srcep, destp, PUDP, (unsigned short)(ulen));
    udp->u.check = ~CheckUdp(udp, swapl(srcep->ip), swapl(destp->ip), ulen);
    if (udp->u.check == 0)              							// Change sum of 0 to FFFF
        udp->u.check = 0xffff;
    return(ilen);                       							// Return IP length
}


/********************************************************************************************************
 * Return UDP checksum, given UDP (header + data) length.												*
 * The values must be in network byte-order 															*
 ********************************************************************************************************/
unsigned short CheckUdp(UDPKT *udp, unsigned int sip, unsigned int dip, short ulen)
{
    PHDR tph;
    unsigned int sum;

    sum = csum((unsigned char *)&udp->u, (unsigned short)ulen);  	// Checksum UDP segment
    tph.len = swapw((unsigned short)ulen);                			// Make pseudo-header
    tph.srce = sip;
    tph.dest = dip;
    tph.z = 0;
    tph.pcol = udp->i.pcol;
    sum += csum((void *)&tph, sizeof(tph));             					// Checksum pseudo-header
    return((unsigned short)(sum + (sum >> 16)));          			// Return total plus carry
}


/********************************************************************************************************
 * Swap byte order of ints in UDP header 																*
 ********************************************************************************************************/
void SwapUdp(UDPKT *udp)
{
    udp->u.sport = swapw(udp->u.sport);
    udp->u.dport = swapw(udp->u.dport);
    udp->u.len = swapw(udp->u.len);
}


/********************************************************************************************************
 * Get the frame driver type, source port, IP and Ethernet addrs 										*
 ********************************************************************************************************/
void GetUdpSrce(ETHERFRAME *efp, NODE *np)
{
    UDPKT *udp;

    memset(np, 0, sizeof(NODE));        							// Clear unused fields
    GetIpSrce(efp, np);                							// Get dtype, srce IP and Ether addrs
    udp = (UDPKT *)(efp->edata);
    np->port = udp->u.sport;            							// Get source port
}


/********************************************************************************************************
 * Get the frame driver type, destination port, IP and Ethernet addrs 									*
 ********************************************************************************************************/
void GetUdpDest(ETHERFRAME *efp, NODE *np)
{
    UDPKT *udp;

    memset(np, 0, sizeof(NODE));        							// Clear unused fields
    GetIpDest(efp, np);                							// Get dtype, dest IP and Ether addrs
    udp = (UDPKT *)(efp->edata);
    np->port = udp->u.dport;            							// Get dest port
}


/********************************************************************************************************
 * UDP handler 																							*
 ********************************************************************************************************/
void  UdpRcvPacket(ETHERFRAME *efp)
{
	NODE desnode;

	GetUdpDest(efp, &desnode);
	if((desnode.port == TFTPORT) && (desnode.ip == locnode.ip))
	{
		DEBUGF(TFTP_DEBUG,("Get TFPT\n"));
		TftpRcvPacket(efp);
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99免费精品在线观看| 国产乱人伦偷精品视频免下载| 欧美大片日本大片免费观看| 欧美影院午夜播放| 欧美日韩国产一区二区三区地区| 色视频一区二区| 欧美自拍丝袜亚洲| 欧美精品xxxxbbbb| 精品免费99久久| 国产日韩欧美电影| 亚洲精品免费播放| 五月婷婷色综合| 另类成人小视频在线| 韩国精品一区二区| 99视频在线精品| 欧美亚洲国产一区二区三区va | 国产盗摄一区二区三区| 国产激情91久久精品导航| 国产乱码一区二区三区| 播五月开心婷婷综合| 欧美综合天天夜夜久久| 欧美一区2区视频在线观看| 日韩一区二区三区四区五区六区| 亚洲精品一区二区三区香蕉| 亚洲国产高清在线| 亚洲福利电影网| 国模套图日韩精品一区二区 | 成人免费电影视频| 懂色av噜噜一区二区三区av| 色综合久久中文字幕综合网| 欧美剧情片在线观看| 久久美女艺术照精彩视频福利播放 | 激情六月婷婷综合| 99久久久久久99| 日韩欧美国产一二三区| 亚洲三级在线看| 日本一区中文字幕| 99免费精品在线| 日韩欧美视频在线| 亚洲欧美一区二区三区孕妇| 久色婷婷小香蕉久久| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产精品入口麻豆原神| 亚洲大型综合色站| 成人午夜视频在线| 91精品国产aⅴ一区二区| 日本一二三不卡| 日韩国产欧美在线视频| 99久久精品免费看国产免费软件| 69av一区二区三区| 亚洲午夜一区二区| 成av人片一区二区| 久久婷婷一区二区三区| 日韩高清中文字幕一区| 色综合一个色综合| 国产精品无码永久免费888| 日本免费在线视频不卡一不卡二| 91免费观看在线| 国产精品美女久久久久久| 国产剧情一区在线| 欧美一级高清片在线观看| 亚洲综合激情网| 一本大道久久a久久综合婷婷| 国产日韩欧美一区二区三区乱码 | 丝袜诱惑亚洲看片| 日本高清不卡视频| 亚洲天堂成人网| 99re热视频这里只精品| 国产精品久久久久久久第一福利| 国内成人免费视频| 久久久久久一级片| 国产成人夜色高潮福利影视| 精品国产乱码久久久久久老虎 | 国内成人精品2018免费看| 亚洲精品在线电影| 国内精品国产成人| 中文字幕不卡三区| jiyouzz国产精品久久| 亚洲欧洲精品一区二区三区不卡| 国产成人av电影在线观看| 中文字幕av在线一区二区三区| 国产麻豆精品theporn| 国产欧美中文在线| 欧美一区二区精品| 久久aⅴ国产欧美74aaa| 久久色成人在线| 国产91丝袜在线观看| 一区二区中文字幕在线| 色婷婷综合久久久久中文一区二区| 国产精品国模大尺度视频| 成人免费视频国产在线观看| 国产精品视频麻豆| 日本韩国精品在线| 麻豆久久久久久| 中国色在线观看另类| 91成人在线观看喷潮| 亚洲一区日韩精品中文字幕| 91麻豆精品国产自产在线| 看电视剧不卡顿的网站| 久久精品夜色噜噜亚洲aⅴ| 99久久久国产精品免费蜜臀| 亚洲v日本v欧美v久久精品| 精品国产99国产精品| hitomi一区二区三区精品| 亚洲国产cao| 久久久777精品电影网影网| 色视频成人在线观看免| 久草在线在线精品观看| 中文字幕乱码日本亚洲一区二区| 91福利在线观看| 久久国产欧美日韩精品| 中文字幕日韩一区| 日韩区在线观看| av资源站一区| 免费成人小视频| 亚洲精品欧美专区| 欧美成人综合网站| 欧美色窝79yyyycom| 国产一区在线看| 亚洲1区2区3区4区| 亚洲国产精品高清| 日韩欧美专区在线| 欧美色视频在线| 粉嫩蜜臀av国产精品网站| 天堂一区二区在线免费观看| 中文字幕 久热精品 视频在线| 91麻豆精品国产91久久久更新时间| 盗摄精品av一区二区三区| 青草av.久久免费一区| 亚洲黄色小视频| 日本aⅴ亚洲精品中文乱码| 中文字幕在线不卡| 久久这里只有精品首页| 91精品国产综合久久久蜜臀粉嫩| 不卡电影一区二区三区| 高清不卡一区二区在线| 久久av老司机精品网站导航| 亚洲国产日韩a在线播放性色| 国产精品萝li| 久久久久国产精品麻豆ai换脸| 6080午夜不卡| 欧美精品久久天天躁| 日本丰满少妇一区二区三区| 国产99精品国产| 国产精品亚洲人在线观看| 久久精品国产精品青草| 麻豆精品国产91久久久久久| 日日噜噜夜夜狠狠视频欧美人| 一区二区国产视频| 亚洲午夜精品一区二区三区他趣| 亚洲精品中文字幕乱码三区| 亚洲精品成人在线| 一区二区三区在线观看动漫 | 免费成人在线视频观看| 调教+趴+乳夹+国产+精品| 五月天一区二区三区| 香蕉乱码成人久久天堂爱免费| 一区二区三区在线播放| 亚洲最大的成人av| 亚洲一区二区三区四区中文字幕| 亚洲一区二区在线免费看| 亚洲另类春色校园小说| 伊人开心综合网| 五月天久久比比资源色| 美女一区二区在线观看| 黑人精品欧美一区二区蜜桃 | 91麻豆精品91久久久久久清纯| 欧美精品三级在线观看| 日韩免费视频线观看| 精品99久久久久久| 国产精品每日更新| 午夜国产精品一区| 国产美女一区二区三区| 93久久精品日日躁夜夜躁欧美| 在线亚洲免费视频| 日韩一区二区视频| 欧美激情一二三区| 亚洲一本大道在线| 国产一区二区三区最好精华液| 国产v日产∨综合v精品视频| 91麻豆国产香蕉久久精品| 欧美另类z0zxhd电影| 久久久久久久网| 一区二区免费在线播放| 精油按摩中文字幕久久| 92精品国产成人观看免费| 欧美一区二区视频网站| 国产精品色在线观看| 同产精品九九九| 成人爱爱电影网址| 日韩视频一区二区三区| 中文字幕一区二区三区精华液 | 久久午夜老司机| 一区二区三区精品视频| 国产一区999| 91精品国产综合久久久蜜臀粉嫩| 亚洲欧洲日韩综合一区二区| 美腿丝袜亚洲色图| 欧美色中文字幕| 亚洲丝袜自拍清纯另类|