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

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

?? bootp.c

?? bootp是一個(gè)osk5912的啟動代碼源程序
?? 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 */#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...)	printf (fmt ,##args)#else#define debug_ext(fmt,args...)#endif#include <common.h>#include <command.h>#include <net.h>#include "bootp.h"#include "tftp.h"#include "nfs.h"#ifdef CONFIG_STATUS_LED#include <status_led.h>#endif#define BOOTP_VENDOR_MAGIC	0x63825363	/* RFC1048 Magic Cookie		*/#if (CONFIG_COMMANDS & CFG_CMD_NET)#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_BOOTP_RANDOM_DELAYulong		seed1, seed2;#endif#if (CONFIG_COMMANDS & CFG_CMD_DHCP)dhcp_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);/* For Debug */#if 0static char *dhcpmsg2str(int type){	switch (type) {	case 1:	 return "DHCPDISCOVER"; break;	case 2:	 return "DHCPOFFER";	break;	case 3:	 return "DHCPREQUEST";	break;	case 4:	 return "DHCPDECLINE";	break;	case 5:	 return "DHCPACK";	break;	case 6:	 return "DHCPNACK";	break;	case 7:	 return "DHCPRELEASE";	break;	default: return "UNKNOWN/INVALID MSG TYPE"; break;	}}#endif#if (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	/* CFG_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){	IPaddr_t tmp_ip;	NetCopyIP(&NetOurIP, &bp->bp_yiaddr);	NetCopyIP(&tmp_ip, &bp->bp_siaddr);	if (tmp_ip != 0)		NetCopyIP(&NetServerIP, &bp->bp_siaddr);	memcpy (NetServerEther, ((Ethernet_t *)NetRxPkt)->et_src, 6);	if (strlen(bp->bp_file) > 0)		copy_filename (BootFile, bp->bp_file, sizeof(BootFile));	debug ("Bootfile: %s\n", BootFile);	/* Propagate to environment:	 * don't delete exising entry when BOOTP / DHCP reply does	 * not contain a new value	 */	if (*BootFile) {		setenv ("bootfile", BootFile);	}}static int truncate_sz (const char *name, int maxlen, int curlen){	if (curlen >= maxlen) {		printf("*** WARNING: %s is too long (%d - max: %d) - truncated\n",			name, curlen, maxlen);		curlen = maxlen - 1;	}	return (curlen);}#if !(CONFIG_COMMANDS & CFG_CMD_DHCP)static 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	puts ("[BOOTP] Received fields: \n");	if (NetOurSubnetMask) {		puts ("NetOurSubnetMask : ");		print_IPaddr (NetOurSubnetMask);		putc ('\n');	}	if (NetOurGatewayIP) {		puts ("NetOurGatewayIP	: ");		print_IPaddr (NetOurGatewayIP);		putc ('\n');	}	if (NetBootFileSize) {		printf ("NetBootFileSize : %d\n", NetBootFileSize);	}	if (NetOurHostName[0]) {		printf ("NetOurHostName  : %s\n", NetOurHostName);	}	if (NetOurRootPath[0]) {		printf ("NetOurRootPath  : %s\n", NetOurRootPath);	}	if (NetOurNISDomain[0]) {		printf ("NetOurNISDomain : %s\n", NetOurNISDomain);	}	if (NetBootFileSize) {		printf ("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.	 */#ifdef CONFIG_STATUS_LED	status_led_set (STATUS_LED_BOOT, STATUS_LED_OFF);#endif	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 ((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;#if (CONFIG_COMMANDS & CFG_CMD_NFS)		} else if (strcmp(s, "NFS") == 0) {			/*			 * Use NFS to load the bootfile.			 */			NfsStart();			return;#endif		}	}	TftpStart();}#endif	/* !CFG_CMD_DHCP *//* *	Timeout on BOOTP/DHCP request. */static voidBootpTimeout(void){	if (BootpTry >= TIMEOUT_COUNT) {		puts ("\nRetry count exceeded; starting again\n");		NetStartAgain ();	} else {		NetSetTimeout (TIMEOUT * CFG_HZ, BootpTimeout);		BootpRequest ();	}}/* *	Initialize BOOTP extension fields in the request. */#if (CONFIG_COMMANDS & CFG_CMD_DHCP)static int DhcpExtended (u8 * e, int message_type, IPaddr_t ServerID, IPaddr_t RequestedIP){	u8 *start = e;	u8 *cnt;#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_VENDOREX)	u8 *x;#endif#if (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)	if ((x = dhcp_vendorex_prep (e)))		return x - start;#endif	*e++ = 55;		/* Parameter Request List */	 cnt = e++;		/* Pointer to count of requested items */	*cnt = 0;#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_SUBNETMASK)	*e++  = 1;		/* Subnet Mask */	*cnt += 1;#endif#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_GATEWAY)	*e++  = 3;		/* Router Option */	*cnt += 1;#endif#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_DNS)	*e++  = 6;		/* DNS Server(s) */	*cnt += 1;#endif#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_HOSTNAME)	*e++  = 12;		/* Hostname */	*cnt += 1;#endif#if (CONFIG_BOOTP_MASK & CONFIG_BOOTP_BOOTFILESIZE)	*e++  = 13;		/* Boot File Size */	*cnt += 1;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区蜜桃下载| 日本中文字幕一区二区有限公司| 亚洲一区二区偷拍精品| 麻豆精品在线播放| 色哟哟精品一区| 国产日韩欧美亚洲| 久久精品久久久精品美女| 日本精品一区二区三区高清| 国产欧美精品一区| 黄色小说综合网站| 日韩欧美一区二区在线视频| 亚洲国产人成综合网站| 99精品欧美一区二区三区小说 | 麻豆久久久久久久| 欧美视频精品在线| 亚洲色图色小说| av不卡一区二区三区| 欧美韩国日本综合| 国产精品1区二区.| 久久在线免费观看| 国产在线精品免费| 日韩一区二区在线看| 美女网站色91| 日韩欧美一区电影| 国产精品一区在线观看你懂的| 欧美成人午夜电影| 国产一区二区导航在线播放| xvideos.蜜桃一区二区| 国产麻豆精品theporn| 欧美成人精品高清在线播放 | 亚洲一区电影777| 在线影院国内精品| 一区二区不卡在线视频 午夜欧美不卡在| 91尤物视频在线观看| 亚洲美女偷拍久久| 欧美性淫爽ww久久久久无| 亚州成人在线电影| 91精品国产色综合久久不卡电影| 日本视频一区二区| 精品国产sm最大网站| 岛国一区二区三区| 亚洲三级电影全部在线观看高清| 色域天天综合网| 婷婷亚洲久悠悠色悠在线播放| 欧美一区二区三区免费观看视频| 久久精品国产77777蜜臀| 精品国产sm最大网站免费看| 成人看片黄a免费看在线| 136国产福利精品导航| 欧美美女喷水视频| 国产精品一区久久久久| 综合久久一区二区三区| 欧美色中文字幕| 极品瑜伽女神91| 中文字幕日韩av资源站| 欧美日韩一级片在线观看| 久久国产精品第一页| 亚洲国产精品精华液ab| 欧洲精品一区二区三区在线观看| 蜜桃视频一区二区三区| 日韩一区欧美小说| 日韩一级精品视频在线观看| 国产成a人亚洲| 亚洲一级在线观看| 久久久蜜臀国产一区二区| 色中色一区二区| 国产剧情一区在线| 亚洲成人三级小说| 欧美经典三级视频一区二区三区| 欧美日韩不卡一区二区| 国产成人精品影视| 免费av成人在线| 亚洲欧美偷拍三级| 久久久久久久久免费| 欧洲国内综合视频| 成人午夜私人影院| 久久99国产精品免费网站| 一区二区三区四区视频精品免费| 日韩精品一区二区三区四区视频| 99re这里只有精品首页| 国产综合久久久久久鬼色| 亚洲成av人片在线| 国产精品欧美久久久久无广告 | 91免费视频观看| 久久97超碰色| 一区二区久久久久| 久久精品亚洲乱码伦伦中文| 69精品人人人人| 在线欧美小视频| 国产91精品入口| 裸体在线国模精品偷拍| 亚洲国产精品一区二区www | 2023国产一二三区日本精品2022| 91在线精品一区二区| 国产乱理伦片在线观看夜一区| 午夜精品免费在线| 亚洲精品亚洲人成人网在线播放| 欧美激情一区二区| 欧美精品一区二区三区高清aⅴ| 欧美日韩国产大片| 日本精品一区二区三区四区的功能| 成人免费视频一区二区| 国产一区二区三区免费观看| 免费成人结看片| 日韩成人一级片| 五月天亚洲婷婷| 亚洲一区二区三区在线看| 亚洲最新视频在线播放| 国产精品美女久久久久高潮| 日韩一级大片在线观看| 国产很黄免费观看久久| 国产一区二区三区| 国产一区二区伦理| 亚洲成人精品一区| 亚洲一二三区不卡| 亚洲国产sm捆绑调教视频| 国产精品国产自产拍在线| 中文字幕制服丝袜一区二区三区| 欧美高清一级片在线观看| 中文久久乱码一区二区| 亚洲人被黑人高潮完整版| 亚洲女厕所小便bbb| 亚洲国产精品影院| 美女在线观看视频一区二区| 蜜桃传媒麻豆第一区在线观看| 精品一区二区三区在线播放| 久久精品99国产精品| 国产精品99久久久久久久vr| 成人性生交大片免费看中文| 91理论电影在线观看| 精品视频在线看| 欧美mv和日韩mv的网站| 久久蜜桃一区二区| 日韩一区在线播放| 亚洲国产精品久久久久婷婷884| 青青草原综合久久大伊人精品| 久久电影网电视剧免费观看| 国产一区视频导航| 色av一区二区| 欧美一级在线免费| 国产精品国产成人国产三级| 亚洲国产精品久久久久秋霞影院| 久久精品国产精品亚洲综合| 99在线热播精品免费| 制服丝袜在线91| 国产精品久久久久久久久快鸭| 亚洲一线二线三线久久久| 久久电影国产免费久久电影| 成人a级免费电影| 5月丁香婷婷综合| 国产精品久久久久久久久久久免费看 | 成人av电影免费观看| 欧美视频在线观看一区| 久久先锋影音av鲁色资源网| 亚洲日本va在线观看| 毛片av中文字幕一区二区| 国产不卡视频在线播放| 欧美伊人精品成人久久综合97| 亚洲精品在线免费观看视频| 亚洲欧洲综合另类| 激情综合五月婷婷| 欧美在线免费观看视频| 国产日本一区二区| 欧美aⅴ一区二区三区视频| 91丨九色丨尤物| 久久综合色鬼综合色| 午夜久久久久久| 色综合久久久久久久久| 久久久99久久| 久久精品国产99国产精品| 欧美专区日韩专区| 国产欧美日韩麻豆91| 蜜臀av一区二区在线观看| 色综合激情久久| 中文字幕成人av| 国产酒店精品激情| 欧美一区二区三区的| 一个色在线综合| 色一情一乱一乱一91av| 日本一二三四高清不卡| 国产一区二区精品在线观看| 欧美一级二级三级乱码| 午夜久久久影院| 欧美日韩一区在线| 亚洲国产精品久久人人爱| 欧美在线你懂的| 亚洲一区二区在线播放相泽| 色综合久久精品| 一区二区三区丝袜| 色婷婷av久久久久久久| 亚洲日本va午夜在线影院| 99视频国产精品| 亚洲人精品午夜| 在线影院国内精品| 亚洲国产成人91porn| 欧美精品日日鲁夜夜添| 免费精品99久久国产综合精品| 欧美人xxxx| 美女在线观看视频一区二区| 精品久久人人做人人爱|