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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? net_core.c

?? 關(guān)于s3c2440之bootloader的源代碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
#ifdef ET_DEBUG	printk("packet received\n");#endif	if (x < 1514) {		/*		 *	Got a 802 packet.  Check the other protocol field.		 */		x = ntohs(et->et_prot);		ip = (IP_t *)(inpkt + E802_HDR_SIZE);		len -= E802_HDR_SIZE;	} else if (x != PROT_VLAN) {	/* normal packet */		ip = (IP_t *)(inpkt + ETHER_HDR_SIZE);		len -= ETHER_HDR_SIZE;	} else {			/* VLAN packet */		VLAN_Ethernet_t *vet = (VLAN_Ethernet_t *)et;#ifdef ET_DEBUG		printk("VLAN packet received\n");#endif		/* too small packet? */		if (len < VLAN_ETHER_HDR_SIZE)			return;		/* if no VLAN active */		if ((ntohs(NetOurVLAN) & VLAN_IDMASK) == VLAN_NONE#ifdef CONFIG_CMD_CDP				&& iscdp == 0#endif				)			return;		cti = ntohs(vet->vet_tag);		vlanid = cti & VLAN_IDMASK;		x = ntohs(vet->vet_type);		ip = (IP_t *)(inpkt + VLAN_ETHER_HDR_SIZE);		len -= VLAN_ETHER_HDR_SIZE;	}#ifdef ET_DEBUG	printk("Receive from protocol 0x%x\n", x);#endif#ifdef CONFIG_CMD_CDP	if (iscdp) {		CDPHandler((uchar *)ip, len);		return;	}#endif	if ((myvlanid & VLAN_IDMASK) != VLAN_NONE) {		if (vlanid == VLAN_NONE)			vlanid = (mynvlanid & VLAN_IDMASK);		/* not matched? */		if (vlanid != (myvlanid & VLAN_IDMASK))			return;	}	switch (x) {	case PROT_ARP:		/*		 * We have to deal with two types of ARP packets:		 * - REQUEST packets will be answered by sending  our		 *   IP address - if we know it.		 * - REPLY packates are expected only after we asked		 *   for the TFTP server's or the gateway's ethernet		 *   address; so if we receive such a packet, we set		 *   the server ethernet address		 */#ifdef ET_DEBUG		printk("Got ARP\n");#endif		arp = (ARP_t *)ip;		if (len < ARP_HDR_SIZE) {			printk("bad length %d < %d\n", len, ARP_HDR_SIZE);			return;		}		if (ntohs(arp->ar_hrd) != ARP_ETHER) {			return;		}		if (ntohs(arp->ar_pro) != PROT_IP) {			return;		}		if (arp->ar_hln != 6) {			return;		}		if (arp->ar_pln != 4) {			return;		}		if (NetOurIP == 0) {			return;		}		if (NetReadIP(&arp->ar_data[16]) != NetOurIP) {			return;		}		switch (ntohs(arp->ar_op)) {		case ARPOP_REQUEST:		/* reply with our IP address	*/#ifdef ET_DEBUG			printk("Got ARP REQUEST, return our IP\n");#endif			pkt = (uchar *)et;			pkt += NetSetEther(pkt, et->et_src, PROT_ARP);			arp->ar_op = htons(ARPOP_REPLY);			memcpy   (&arp->ar_data[10], &arp->ar_data[0], 6);			NetCopyIP(&arp->ar_data[16], &arp->ar_data[6]);			memcpy   (&arp->ar_data[ 0], NetOurEther, 6);			NetCopyIP(&arp->ar_data[ 6], &NetOurIP);			(void) eth_send((uchar *)et, (pkt - (uchar *)et) + ARP_HDR_SIZE);			return;		case ARPOP_REPLY:		/* arp reply */			/* are we waiting for a reply */			if (!NetArpWaitPacketIP || !NetArpWaitPacketMAC)				break;#ifdef ET_DEBUG			printk("Got ARP REPLY, set server/gtwy eth addr (%02x:%02x:%02x:%02x:%02x:%02x)\n",				arp->ar_data[0], arp->ar_data[1],				arp->ar_data[2], arp->ar_data[3],				arp->ar_data[4], arp->ar_data[5]);#endif			tmp = NetReadIP(&arp->ar_data[6]);			/* matched waiting packet's address */			if (tmp == NetArpWaitReplyIP) {#ifdef ET_DEBUG				printk("Got it\n");#endif				/* save address for later use */				memcpy(NetArpWaitPacketMAC, &arp->ar_data[0], 6);				/* modify header, and transmit it */				memcpy(((Ethernet_t *)NetArpWaitTxPacket)->et_dest, NetArpWaitPacketMAC, 6);				(void) eth_send(NetArpWaitTxPacket, NetArpWaitTxPacketSize);				/* no arp request pending now */				NetArpWaitPacketIP = 0;				NetArpWaitTxPacketSize = 0;				NetArpWaitPacketMAC = NULL;			}			return;		default:#ifdef ET_DEBUG			printk("Unexpected ARP opcode 0x%x\n", ntohs(arp->ar_op));#endif			return;		}	case PROT_RARP:#ifdef ET_DEBUG		printk("Got RARP\n");#endif		arp = (ARP_t *)ip;		if (len < ARP_HDR_SIZE) {			printk("bad length %d < %d\n", len, ARP_HDR_SIZE);			return;		}		if ((ntohs(arp->ar_op) != RARPOP_REPLY) ||			(ntohs(arp->ar_hrd) != ARP_ETHER)   ||			(ntohs(arp->ar_pro) != PROT_IP)     ||			(arp->ar_hln != 6) || (arp->ar_pln != 4)) {			printk("invalid RARP header\n");		} else {			NetCopyIP(&NetOurIP,    &arp->ar_data[16]);			if (NetServerIP == 0)				NetCopyIP(&NetServerIP, &arp->ar_data[ 6]);			memcpy (NetServerEther, &arp->ar_data[ 0], 6);			(*packetHandler)(0,0,0,0);		}		break;	case PROT_IP:#ifdef ET_DEBUG		printk("Got IP\n");#endif		if (len < IP_HDR_SIZE) {			printk("len bad %d < %d\n", len, IP_HDR_SIZE);			return;		}		if (len < ntohs(ip->ip_len)) {			printk("len bad %d < %d\n", len, ntohs(ip->ip_len));			return;		}		len = ntohs(ip->ip_len);#ifdef ET_DEBUG		printk("len=%d, v=%02x ", len, ip->ip_hl_v & 0xff);#endif		if ((ip->ip_hl_v & 0xf0) != 0x40) {			return;		}		if (ip->ip_off & htons(0x1fff)) { /* Can't deal w/ fragments */			return;		}		if (!NetCksumOk((uchar *)ip, IP_HDR_SIZE_NO_UDP / 2)) {			printk("checksum bad\n");			return;		}		tmp = NetReadIP(&ip->ip_dst);#ifdef ET_DEBUG		printk("dst ");print_IPaddr(tmp); printk("\n");#endif		if (NetOurIP && tmp != NetOurIP && tmp != 0xFFFFFFFF) {			return;		}		/*		 * watch for ICMP host redirects		 *		 * There is no real handler code (yet). We just watch		 * for ICMP host redirect messages. In case anybody		 * sees these messages: please contact me		 * (wd@denx.de), or - even better - send me the		 * necessary fixes :-)		 *		 * Note: in all cases where I have seen this so far		 * it was a problem with the router configuration,		 * for instance when a router was configured in the		 * BOOTP reply, but the TFTP server was on the same		 * subnet. So this is probably a warning that your		 * configuration might be wrong. But I'm not really		 * sure if there aren't any other situations.		 *///		 printk("ip protocol=0x%x\n",ip->ip_p);				if (ip->ip_p == IPPROTO_ICMP) {			ICMP_t *icmph = (ICMP_t *)&(ip->udp_src);			switch (icmph->type) {			case ICMP_REDIRECT:			if (icmph->code != ICMP_REDIR_HOST)				return;			printk(" ICMP Host Redirect to ");			print_IPaddr(icmph->un.gateway);			printk(" ");				break;#ifdef CONFIG_CMD_PING			case ICMP_ECHO_REPLY:				/*				 *	IP header OK.  Pass the packet to the current handler.				 */				/* XXX point to ip packet */				(*packetHandler)((uchar *)ip, 0, 0, 0);				break;#endif			default:				return;			}		} else if (ip->ip_p != IPPROTO_UDP) {	/* Only UDP packets */			return;		}		/*		 *	IP header OK.  Pass the packet to the current handler.		 */		(*packetHandler)((uchar *)ip +IP_HDR_SIZE,						ntohs(ip->udp_dst),						ntohs(ip->udp_src),						ntohs(ip->udp_len) - 8);		break;	}}/**********************************************************************/static int net_check_prereq (proto_t protocol){	switch (protocol) {		/* Fall through */#ifdef CONFIG_CMD_PING	case PING:		if (NetPingIP == 0) {			printk("*** ERROR: ping address not given\n");			return (1);		}		goto common;#endif#ifdef CONFIG_CMD_NFS	case NFS:#endif	case TFTP:		if (NetServerIP == 0) {			printk("*** ERROR: `serverip' not set\n");			return (1);		}#ifdef CONFIG_CMD_PING	      common:#endif		if (NetOurIP == 0) {			printk("*** ERROR: `ipaddr' not set\n");			return (1);		}		/* Fall through */	case DHCP:	case RARP:	case BOOTP:	case CDP:		if (memcmp (NetOurEther, "\0\0\0\0\0\0", 6) == 0) {			printk("*** ERROR: `ethaddr' not set\n");			return (1);		}		/* Fall through */	default:		return (0);	}	return (0);		/* OK */}/**********************************************************************/unsignedNetCksum(uchar * ptr, int len){	ulong	xsum;	xsum = 0;	while (len-- > 0)		xsum += *((ushort *)ptr)++;	xsum = (xsum & 0xffff) + (xsum >> 16);	xsum = (xsum & 0xffff) + (xsum >> 16);	return (xsum & 0xffff);}intNetCksumOk(uchar * ptr, int len){	return !((NetCksum(ptr, len) + 1) & 0xfffe);}intNetEthHdrSize(void){	ushort myvlanid;	myvlanid = ntohs(NetOurVLAN);	if (myvlanid == (ushort)-1)		myvlanid = VLAN_NONE;	return ((myvlanid & VLAN_IDMASK) == VLAN_NONE) ? ETHER_HDR_SIZE : VLAN_ETHER_HDR_SIZE;}intNetSetEther(volatile uchar * xet, uchar * addr, uint prot){	Ethernet_t *et = (Ethernet_t *)xet;	ushort myvlanid;	myvlanid = ntohs(NetOurVLAN);	if (myvlanid == (ushort)-1)		myvlanid = VLAN_NONE;		memcpy (et->et_dest, addr, 6);	memcpy (et->et_src, NetOurEther, 6);	if ((myvlanid & VLAN_IDMASK) == VLAN_NONE) {	et->et_protlen = htons(prot);		return ETHER_HDR_SIZE;	} else {		VLAN_Ethernet_t *vet = (VLAN_Ethernet_t *)xet;		vet->vet_vlan_type = htons(PROT_VLAN);		vet->vet_tag = htons((0 << 5) | (myvlanid & VLAN_IDMASK));		vet->vet_type = htons(prot);		return VLAN_ETHER_HDR_SIZE;	}}voidNetSetIP(volatile uchar * xip, IPaddr_t dest, int dport, int sport, int len){	IP_t *ip = (IP_t *)xip;	/*	 *	If the data is an odd number of bytes, zero the	 *	byte after the last byte so that the checksum	 *	will work.	 */	if (len & 1)		xip[IP_HDR_SIZE + len] = 0;	/*	 *	Construct an IP and UDP header.	 *	(need to set no fragment bit - XXX)	 */	ip->ip_hl_v  = 0x45;		/* IP_HDR_SIZE / 4 (not including UDP) */	ip->ip_tos   = 0;	ip->ip_len   = htons(IP_HDR_SIZE + len);	ip->ip_id    = htons(NetIPID++);	ip->ip_off   = htons(0x4000);	/* No fragmentation */	ip->ip_ttl   = 255;	ip->ip_p     = 17;		/* UDP */	ip->ip_sum   = 0;	NetCopyIP((void*)&ip->ip_src, &NetOurIP); /* already in network byte order */	NetCopyIP((void*)&ip->ip_dst, &dest);	   /* - "" - */	ip->udp_src  = htons(sport);	ip->udp_dst  = htons(dport);	ip->udp_len  = htons(8 + len);	ip->udp_xsum = 0;	ip->ip_sum   = ~(NetCksum((unchar *)ip, IP_HDR_SIZE_NO_UDP / 2));}void copy_filename (uchar *dst, uchar *src, int size){	if (*src && (*src == '"')) {		++src;		--size;	}	while ((--size > 0) && *src && (*src != '"')) {		*dst++ = *src++;	}	*dst = '\0';}void ip_to_string (IPaddr_t x, char *s){	x = ntohl (x);	sprintf(s, "%d.%d.%d.%d",		 (int) ((x >> 24) & 0xff),		 (int) ((x >> 16) & 0xff),		 (int) ((x >> 8) & 0xff), (int) ((x >> 0) & 0xff)	);}IPaddr_t string_to_ip(char *s){	IPaddr_t addr;	char *e;	int i;	if (s == NULL)		return(0);	for (addr=0, i=0; i<4; ++i) {		ulong val = s ? simple_strtoul(s, &e, 10) : 0;		addr <<= 8;		addr |= (val & 0xFF);		if (s) {			s = (*e) ? e+1 : e;		}	}	return (htonl(addr));}void VLAN_to_string(ushort x, char *s){	x = ntohs(x);	if (x == (ushort)-1)		x = VLAN_NONE;	if (x == VLAN_NONE)		strcpy(s, "none");	else		sprintf(s, "%d", x & VLAN_IDMASK);}ushort string_to_VLAN(char *s){	ushort id;	if (s == NULL)		return htons(VLAN_NONE);	if (*s < '0' || *s > '9')		id = VLAN_NONE;	else		id = (ushort)simple_strtoul(s, NULL, 10);	return htons(id);}void print_IPaddr (IPaddr_t x){	char tmp[16];	ip_to_string(x, tmp);	printk(tmp);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清一区二区不卡| 欧美精品tushy高清| 国产福利精品导航| 韩国成人福利片在线播放| 毛片av一区二区| 奇米影视在线99精品| 蜜臀精品久久久久久蜜臀 | 三级影片在线观看欧美日韩一区二区| 亚洲黄色在线视频| 中文字幕免费观看一区| 欧美国产一区视频在线观看| 国产三级精品在线| 国产精品美日韩| 亚洲三级在线看| 亚洲精品国产一区二区精华液| 亚洲免费观看高清完整版在线观看熊| 国产精品的网站| 一区二区三区四区视频精品免费 | 国内精品在线播放| 国产美女在线观看一区| 粉嫩欧美一区二区三区高清影视| 成人三级在线视频| 色婷婷综合久久久| 337p亚洲精品色噜噜噜| 久久只精品国产| 国产精品毛片久久久久久 | 91成人国产精品| 欧美午夜一区二区三区| 538在线一区二区精品国产| 欧美本精品男人aⅴ天堂| 国产三级一区二区三区| 亚洲免费观看高清完整版在线| 婷婷久久综合九色综合伊人色| 免费人成精品欧美精品| 国产91丝袜在线18| 欧美午夜电影网| 26uuu精品一区二区| 亚洲欧美日韩一区二区三区在线观看| 亚洲一卡二卡三卡四卡无卡久久 | 国产夫妻精品视频| 色婷婷狠狠综合| 日韩欧美一二三| 国产精品久久久久久户外露出| 亚洲va韩国va欧美va| 国产乱国产乱300精品| 91在线视频在线| 日韩一区二区在线播放| 国产精品免费视频观看| 日本中文字幕一区二区有限公司| 国产一区二区三区香蕉| 91黄色免费观看| 久久精品无码一区二区三区| 一级女性全黄久久生活片免费| 九九精品视频在线看| 色综合视频一区二区三区高清| 日韩免费看的电影| 亚洲精品国产第一综合99久久 | 国产一区二区三区最好精华液| 色妞www精品视频| 久久久综合激的五月天| 亚洲自拍偷拍网站| 国产.欧美.日韩| 717成人午夜免费福利电影| 中文一区一区三区高中清不卡| 五月婷婷欧美视频| 91免费视频观看| 久久综合九色综合久久久精品综合 | 色香蕉久久蜜桃| 久久久www免费人成精品| 午夜视频在线观看一区二区 | 91浏览器打开| 久久久久久99久久久精品网站| 亚洲va在线va天堂| 色8久久人人97超碰香蕉987| 久久久久久久久久久久久女国产乱| 亚洲va国产va欧美va观看| 一本到三区不卡视频| 国产亚洲综合在线| 美国十次综合导航| 欧美另类z0zxhd电影| 亚洲天天做日日做天天谢日日欢| 国产成人精品网址| 精品粉嫩超白一线天av| 日韩黄色在线观看| 欧美色图12p| 亚洲免费三区一区二区| 不卡的av网站| 国产精品三级电影| 成人黄色在线网站| 中文在线资源观看网站视频免费不卡| 狠狠色狠狠色综合系列| 日韩精品一区二区在线观看| 七七婷婷婷婷精品国产| 欧美日韩精品久久久| 一区二区三区四区不卡在线| 91色|porny| 1区2区3区精品视频| 成人动漫一区二区三区| 国产精品嫩草影院com| 成人免费视频caoporn| 国产拍揄自揄精品视频麻豆| 国产精品自产自拍| 国产午夜久久久久| 成人午夜伦理影院| 国产精品青草综合久久久久99| 丁香激情综合国产| 国产精品高潮久久久久无| 丁香婷婷深情五月亚洲| 中文字幕成人av| 99热精品一区二区| 一区二区三区日本| 欧美精品日日鲁夜夜添| 日本中文字幕一区| 久久综合久久99| 成人福利视频网站| 亚洲视频香蕉人妖| 欧美日韩在线免费视频| 天天亚洲美女在线视频| 精品国产伦理网| 成人永久免费视频| 亚洲精品一二三区| 在线播放日韩导航| 国产一区二区三区免费播放| 亚洲国产精品成人综合| 色欲综合视频天天天| 香蕉久久夜色精品国产使用方法| 欧美一区日韩一区| 国产精品996| 亚洲欧美日韩精品久久久久| 欧美色图一区二区三区| 蜜臀久久99精品久久久久久9| 久久久久97国产精华液好用吗| 成人精品高清在线| 午夜不卡av免费| 国产清纯在线一区二区www| 色视频欧美一区二区三区| 午夜久久久久久久久久一区二区| 精品久久久久久最新网址| aaa欧美大片| 日日摸夜夜添夜夜添国产精品| 精品久久久久久久久久久久久久久| 成人免费视频视频在线观看免费 | 日韩有码一区二区三区| 国产亚洲短视频| 在线日韩国产精品| 看电视剧不卡顿的网站| 国产精品美女久久久久aⅴ| 欧美日韩一级视频| 国产99久久久国产精品潘金| 亚洲一区二区在线观看视频 | 亚洲色图欧美激情| 日韩精品综合一本久道在线视频| 成人精品视频网站| 午夜精品爽啪视频| 亚洲国产成人在线| 欧美日本不卡视频| 成人黄色网址在线观看| 免费看精品久久片| 亚洲色图视频免费播放| 精品99一区二区| 欧美色欧美亚洲另类二区| 国产成人免费av在线| 日本午夜一区二区| 亚洲欧美二区三区| 久久久蜜臀国产一区二区| 欧美视频一区在线| 成人精品亚洲人成在线| 另类的小说在线视频另类成人小视频在线| 国产精品美女久久久久aⅴ | 综合网在线视频| 精品国产一区二区亚洲人成毛片 | 精品国产三级电影在线观看| 在线看日本不卡| 成人在线综合网站| 狠狠狠色丁香婷婷综合激情| 天天免费综合色| 亚洲精品一卡二卡| 国产精品乱码妇女bbbb| xfplay精品久久| 日韩一级欧美一级| 欧美亚日韩国产aⅴ精品中极品| 成人av电影免费观看| 国内不卡的二区三区中文字幕| 午夜激情一区二区三区| 一区二区三区电影在线播| 中文字幕av一区二区三区高| 久久先锋影音av鲁色资源网| 91精品国产综合久久福利软件| 色视频一区二区| 一本大道av伊人久久综合| 成人精品视频网站| 国产91丝袜在线观看| 国产河南妇女毛片精品久久久| 久久99精品久久久| 美腿丝袜亚洲三区| 日本在线不卡一区| 日韩精品电影一区亚洲| 日韩精品福利网| 热久久一区二区| 日韩av中文在线观看|