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

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

?? bootp.c

?? 關(guān)于s3c2440之bootloader的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* *	Based on LiMon - BOOTP. * *	Copyright 1994, 1995, 2000 Neil Russell. *	(See License) *	Copyright 2000 Roland Borde *	Copyright 2000 Paolo Scaffardi *	Copyright 2000-2004 Wolfgang Denk, wd@denx.de */#include "bootp.h"#include "tftp.h"#include "nfs.h"#include "net.h"#include "printk.h"#include <string.h>#if 0 #define DEBUG		1	/* general debug */#define DEBUG_BOOTP_EXT 1	/* Debug received vendor fields */#endif#ifdef DEBUG_BOOTP_EXT#define debug_ext(fmt,args...)	printk (fmt ,##args)#else#define debug_ext(fmt,args...)#endif#define BOOTP_VENDOR_MAGIC	0x63825363	/* RFC1048 Magic Cookie		*/#define TIMEOUT		5		/* Seconds before trying BOOTP again	*/#ifndef CONFIG_NET_RETRY_COUNT# define TIMEOUT_COUNT	5		/* # of timeouts before giving up  */#else# define TIMEOUT_COUNT	(CONFIG_NET_RETRY_COUNT)#endif#define PORT_BOOTPS	67		/* BOOTP server UDP port		*/#define PORT_BOOTPC	68		/* BOOTP client UDP port		*/#ifndef CONFIG_DHCP_MIN_EXT_LEN		/* minimal length of extension list	*/#define CONFIG_DHCP_MIN_EXT_LEN 64#endifulong	BootpID;int		BootpTry;#ifdef CONFIG_CMD_DHCPdhcp_state_t dhcp_state = INIT;unsigned long dhcp_leasetime = 0;IPaddr_t NetDHCPServerIP = 0;static void DhcpHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len);#ifdef (CONFIG_BOOTP_MASK & CONFIG_BOOTP_VENDOREX)extern u8 *dhcp_vendorex_prep (u8 *e); /*rtn new e after add own opts. */extern u8 *dhcp_vendorex_proc (u8 *e); /*rtn next e if mine,else NULL  */#endif#endif	/* CONFIG_CMD_DHCP */static int BootpCheckPkt(uchar *pkt, unsigned dest, unsigned src, unsigned len){	Bootp_t *bp = (Bootp_t *) pkt;	int retval = 0;	if (dest != PORT_BOOTPC || src != PORT_BOOTPS)		retval = -1;	else if (len < sizeof (Bootp_t) - OPT_SIZE)		retval = -2;	else if (bp->bp_op != OP_BOOTREQUEST &&	    bp->bp_op != OP_BOOTREPLY &&	    bp->bp_op != DHCP_OFFER &&	    bp->bp_op != DHCP_ACK &&	    bp->bp_op != DHCP_NAK ) {		retval = -3;	}	else if (bp->bp_htype != HWT_ETHER)		retval = -4;	else if (bp->bp_hlen != HWL_ETHER)		retval = -5;	else if (NetReadLong((ulong*)&bp->bp_id) != BootpID) {		retval = -6;	}	debug ("Filtering pkt = %d\n", retval);	return retval;}/* * Copy parameters of interest from BOOTP_REPLY/DHCP_OFFER packet */static void BootpCopyNetParams(Bootp_t *bp){	NetCopyIP(&NetOurIP, &bp->bp_yiaddr);		NetCopyIP(&NetServerIP, &bp->bp_siaddr);	memcpy (NetServerEther, ((Ethernet_t *)NetRxPkt)->et_src, 6);	debug ("Bootfile: %s\n", BootFile);}static int truncate_sz (const char *name, int maxlen, int curlen){	if (curlen >= maxlen) {		printk("*** WARNING: %s is too long (%d - max: %d) - truncated\n",			name, curlen, maxlen);		curlen = maxlen - 1;	}	return (curlen);}#ifndef CONFIG_CMD_DHCPstatic void BootpVendorFieldProcess (u8 * ext){	int size = *(ext + 1);	debug_ext ("[BOOTP] Processing extension %d... (%d bytes)\n", *ext,		   *(ext + 1));	NetBootFileSize = 0;	switch (*ext) {		/* Fixed length fields */	case 1:			/* Subnet mask                                  */		if (NetOurSubnetMask == 0)			NetCopyIP (&NetOurSubnetMask, (IPaddr_t *) (ext + 2));		break;	case 2:			/* Time offset - Not yet supported              */		break;		/* Variable length fields */	case 3:			/* Gateways list                                */		if (NetOurGatewayIP == 0) {			NetCopyIP (&NetOurGatewayIP, (IPaddr_t *) (ext + 2));		}		break;	case 4:			/* Time server - Not yet supported              */		break;	case 5:			/* IEN-116 name server - Not yet supported      */		break;	case 6:		if (NetOurDNSIP == 0) {			NetCopyIP (&NetOurDNSIP, (IPaddr_t *) (ext + 2));		}#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_DNS2)		if ((NetOurDNS2IP == 0) && (size > 4)) {			NetCopyIP (&NetOurDNS2IP, (IPaddr_t *) (ext + 2 + 4));		}#endif		break;	case 7:			/* Log server - Not yet supported               */		break;	case 8:			/* Cookie/Quote server - Not yet supported      */		break;	case 9:			/* LPR server - Not yet supported               */		break;	case 10:		/* Impress server - Not yet supported           */		break;	case 11:		/* RPL server - Not yet supported               */		break;	case 12:		/* Host name                                    */		if (NetOurHostName[0] == 0) {			size = truncate_sz ("Host Name", sizeof (NetOurHostName), size);			memcpy (&NetOurHostName, ext + 2, size);			NetOurHostName[size] = 0;		}		break;	case 13:		/* Boot file size                               */		if (size == 2)			NetBootFileSize = ntohs (*(ushort *) (ext + 2));		else if (size == 4)			NetBootFileSize = ntohl (*(ulong *) (ext + 2));		break;	case 14:		/* Merit dump file - Not yet supported          */		break;	case 15:		/* Domain name - Not yet supported              */		break;	case 16:		/* Swap server - Not yet supported              */		break;	case 17:		/* Root path                                    */		if (NetOurRootPath[0] == 0) {			size = truncate_sz ("Root Path", sizeof (NetOurRootPath), size);			memcpy (&NetOurRootPath, ext + 2, size);			NetOurRootPath[size] = 0;		}		break;	case 18:		/* Extension path - Not yet supported           */		/*		 * This can be used to send the information of the		 * vendor area in another file that the client can		 * access via TFTP.		 */		break;		/* IP host layer fields */	case 40:		/* NIS Domain name                              */		if (NetOurNISDomain[0] == 0) {			size = truncate_sz ("NIS Domain Name", sizeof (NetOurNISDomain), size);			memcpy (&NetOurNISDomain, ext + 2, size);			NetOurNISDomain[size] = 0;		}		break;		/* Application layer fields */	case 43:		/* Vendor specific info - Not yet supported     */		/*		 * Binary information to exchange specific		 * product information.		 */		break;		/* Reserved (custom) fields (128..254) */	}}static void BootpVendorProcess (u8 * ext, int size){	u8 *end = ext + size;	debug_ext ("[BOOTP] Checking extension (%d bytes)...\n", size);	while ((ext < end) && (*ext != 0xff)) {		if (*ext == 0) {			ext++;		} else {			u8 *opt = ext;			ext += ext[1] + 2;			if (ext <= end)				BootpVendorFieldProcess (opt);		}	}#ifdef DEBUG_BOOTP_EXT	printk("[BOOTP] Received fields: \n");	if (NetOurSubnetMask) {		printk("NetOurSubnetMask : ");		print_IPaddr (NetOurSubnetMask);		printk("\n");	}	if (NetOurGatewayIP) {		printk("NetOurGatewayIP	: ");		print_IPaddr (NetOurGatewayIP);		printk("\n");	}	if (NetBootFileSize) {		printk ("NetBootFileSize : %d\n", NetBootFileSize);	}	if (NetOurHostName[0]) {		printk ("NetOurHostName  : %s\n", NetOurHostName);	}	if (NetOurRootPath[0]) {		printk ("NetOurRootPath  : %s\n", NetOurRootPath);	}	if (NetOurNISDomain[0]) {		printk ("NetOurNISDomain : %s\n", NetOurNISDomain);	}	if (NetBootFileSize) {		printk ("NetBootFileSize: %d\n", NetBootFileSize);	}#endif /* DEBUG_BOOTP_EXT */}/* *	Handle a BOOTP received packet. */static voidBootpHandler(uchar * pkt, unsigned dest, unsigned src, unsigned len){	Bootp_t *bp;	char	*s;	debug ("got BOOTP packet (src=%d, dst=%d, len=%d want_len=%d)\n",		src, dest, len, sizeof (Bootp_t));	bp = (Bootp_t *)pkt;	if (BootpCheckPkt(pkt, dest, src, len)) /* Filter out pkts we don't want */		return;	/*	 *	Got a good BOOTP reply.	 Copy the data into our variables.	 */	BootpCopyNetParams(bp);		/* Store net parameters from reply */	/* Retrieve extended information (we must parse the vendor area) */	if (NetReadLong((ulong*)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC))		BootpVendorProcess(&bp->bp_vend[4], len);	NetSetTimeout(0, (thand_f *)0);	debug ("Got good BOOTP\n");#if 0	if ((s = getenv("autoload")) != NULL) {		if (*s == 'n') {			/*			 * Just use BOOTP to configure system;			 * Do not use TFTP to load the bootfile.			 */			NetState = NETLOOP_SUCCESS;			return;#ifdef  CONFIG_CMD_NFS		} else if (strcmp(s, "NFS") == 0) {			/*			 * Use NFS to load the bootfile.			 */			NfsStart();			return;#endif		}	}#endif	TftpStart();}#endif	/* !CONFIG_CMD_DHCP *//* *	Timeout on BOOTP/DHCP request. */static voidBootpTimeout(void){	if (BootpTry >= TIMEOUT_COUNT) {		printk("\nRetry count exceeded; starting again\n");		NetStartAgain ();	} else {		NetSetTimeout (TIMEOUT * CFG_HZ, BootpTimeout);		BootpRequest ();	}}/* *	Initialize BOOTP extension fields in the request. */#ifdef CONFIG_CMD_DHCPstatic int DhcpExtended (u8 * e, int message_type, IPaddr_t ServerID, IPaddr_t RequestedIP){	u8 *start = e;	u8 *cnt;#ifdef (CONFIG_BOOTP_MASK & CONFIG_BOOTP_VENDOREX)	u8 *x;#endif#ifdef (CONFIG_BOOTP_MASK & CONFIG_BOOTP_SEND_HOSTNAME)	uchar *hostname;#endif	*e++ = 99;		/* RFC1048 Magic Cookie */	*e++ = 130;	*e++ = 83;	*e++ = 99;	*e++ = 53;		/* DHCP Message Type */	*e++ = 1;	*e++ = message_type;	*e++ = 57;		/* Maximum DHCP Message Size */	*e++ = 2;	*e++ = (576 - 312 + OPT_SIZE) >> 8;	*e++ = (576 - 312 + OPT_SIZE) & 0xff;	if (ServerID) {		int tmp = ntohl (ServerID);		*e++ = 54;	/* ServerID */		*e++ = 4;		*e++ = tmp >> 24;		*e++ = tmp >> 16;		*e++ = tmp >> 8;		*e++ = tmp & 0xff;	}	if (RequestedIP) {		int tmp = ntohl (RequestedIP);		*e++ = 50;	/* Requested IP */		*e++ = 4;		*e++ = tmp >> 24;		*e++ = tmp >> 16;		*e++ = tmp >> 8;		*e++ = tmp & 0xff;	}#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_SEND_HOSTNAME)	if ((hostname = getenv ("hostname"))) {		int hostnamelen = strlen (hostname);		*e++ = 12;	/* Hostname */		*e++ = hostnamelen;		memcpy (e, hostname, hostnamelen);		e += hostnamelen;	}#endif#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_VENDOREX)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲精华国产精华液| 五月天亚洲精品| 亚洲不卡在线观看| 国产一区啦啦啦在线观看| 91久久线看在观草草青青| 日韩精品一区二区三区视频在线观看| 国产精品视频看| 蜜桃av噜噜一区| 欧美日韩午夜在线| 中文字幕中文字幕在线一区 | 亚洲欧美一区二区三区极速播放 | 不卡的av电影在线观看| 日韩欧美国产系列| 午夜国产精品影院在线观看| 99精品热视频| 国产精品系列在线| 国产一区二三区| 欧美一区二区日韩| 一区二区三区精品在线| 国产高清不卡一区| 精品国产污污免费网站入口| 日本中文字幕一区二区有限公司| 日本精品一级二级| 亚洲视频免费看| 成人免费黄色在线| 久久精品免费在线观看| 久久91精品久久久久久秒播 | 99视频在线精品| 久久精品夜夜夜夜久久| 久久国产尿小便嘘嘘尿| 日韩欧美的一区| 美日韩一级片在线观看| 日韩欧美123| 狠狠色综合播放一区二区| 欧美一区二区三区色| 日韩av一区二区三区四区| 3atv一区二区三区| 青娱乐精品视频| 精品人伦一区二区色婷婷| 麻豆精品一区二区| 国产日韩精品视频一区| 岛国一区二区在线观看| 国产精品毛片久久久久久久| 成人国产精品免费观看视频| 国产精品成人免费在线| 色天使色偷偷av一区二区| 亚洲午夜精品网| 欧美一区二区福利视频| 国产剧情一区二区三区| 亚洲视频免费在线| 欧美三级蜜桃2在线观看| 欧美aaaaaa午夜精品| 欧美精品一区男女天堂| av不卡一区二区三区| 18成人在线观看| 欧美日韩成人高清| 精品一区二区三区的国产在线播放 | 欧美人与禽zozo性伦| 久久国产精品一区二区| 中文字幕第一页久久| 94-欧美-setu| 奇米影视一区二区三区小说| 久久久99久久精品欧美| 91看片淫黄大片一级| 日韩 欧美一区二区三区| 国产亚洲精品aa| 欧美性极品少妇| 经典三级一区二区| 日韩美女久久久| 欧美一二三四在线| 99久久精品免费看| 奇米色一区二区| 亚洲色图丝袜美腿| 日韩欧美国产麻豆| 日本高清不卡一区| 狠狠狠色丁香婷婷综合激情| 亚洲精品精品亚洲| 久久新电视剧免费观看| 欧美色综合网站| 国产91综合一区在线观看| 午夜伊人狠狠久久| 国产精品亲子伦对白| 欧美成人一区二区三区片免费| yourporn久久国产精品| 精品一区二区三区的国产在线播放 | 久久久综合视频| 欧美亚洲一区三区| 成人avav影音| 奇米影视在线99精品| 亚洲美女电影在线| 国产日韩欧美a| 日韩欧美一级在线播放| 日本乱人伦一区| 99久久综合精品| 国产乱对白刺激视频不卡| 免费一级片91| 亚洲国产精品久久久久婷婷884| 国产精品黄色在线观看| 国产女主播一区| 2021久久国产精品不只是精品| 欧美日韩精品福利| 日本丰满少妇一区二区三区| 不卡视频一二三四| 懂色中文一区二区在线播放| 国产一区二区三区在线观看免费| 日本亚洲三级在线| 亚洲成av人影院| 亚洲午夜视频在线| 亚洲国产精品久久人人爱| 亚洲天堂免费看| 日韩美女精品在线| 亚洲日本丝袜连裤袜办公室| 国产精品另类一区| 国产精品福利在线播放| 中文字幕在线视频一区| 国产日韩精品一区二区三区在线| 久久色在线观看| 久久久精品tv| 国产欧美日韩另类一区| 国产精品免费av| 亚洲天堂2016| 亚洲一区在线看| 日产精品久久久久久久性色| 美女精品一区二区| 国产自产2019最新不卡| 国产白丝精品91爽爽久久| 成人午夜精品在线| 91蝌蚪porny九色| 色噜噜狠狠成人中文综合| 欧美视频一二三区| 这里只有精品电影| www亚洲一区| 中文字幕亚洲电影| 亚洲国产日韩一级| 精品影视av免费| 成人免费高清在线| 欧美日韩一区成人| 精品国产伦一区二区三区观看体验| 国产偷国产偷亚洲高清人白洁| 中文字幕一区二| 天堂午夜影视日韩欧美一区二区| 久久精品国产免费看久久精品| 国产成人精品亚洲午夜麻豆| 91激情在线视频| 日韩一区二区三区av| 国产精品大尺度| 日韩成人精品在线| 成人网在线播放| 欧美猛男超大videosgay| 国产日韩欧美不卡在线| 亚洲伊人色欲综合网| 国产揄拍国内精品对白| 色哟哟精品一区| 欧美精品一区男女天堂| 亚洲在线观看免费| 国产精品一级黄| 在线播放国产精品二区一二区四区 | 黄色成人免费在线| 色一情一乱一乱一91av| 日韩一区二区三区在线观看 | 91污在线观看| 欧美电影免费观看高清完整版在线观看 | 99re成人精品视频| 欧美成人三级在线| 亚洲老司机在线| 国内精品久久久久影院色| 在线观看av不卡| 日本一区二区三区四区在线视频| 亚洲午夜视频在线| www.av精品| 精品国产乱码久久久久久图片 | 亚洲蜜臀av乱码久久精品| 精品亚洲国产成人av制服丝袜| 色婷婷综合五月| 日本一区二区三区免费乱视频| 日韩经典中文字幕一区| 欧美丝袜丝交足nylons图片| 国产精品国产自产拍在线| 久久综合综合久久综合| 欧美日韩综合不卡| 亚洲精品免费视频| 99视频有精品| 国产精品欧美综合在线| 国产精品综合久久| 精品久久久三级丝袜| 五月婷婷久久综合| 欧美体内she精高潮| 一区二区久久久| 91啪亚洲精品| 亚洲色图在线看| 一本到一区二区三区| 亚洲人成7777| 91福利小视频| 一区二区三区不卡视频| 色综合天天视频在线观看| 国产精品国产三级国产有无不卡 | 国产成人免费视频一区| 日韩欧美国产精品一区| 久久er精品视频| 欧美成人官网二区|