⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dhcp.h

📁 用MCS51 单片机的TCIP协议的测试,很基本的程序,对新手可能有帮助!
💻 H
字号:
/*
********************************************************************************
* Wiznet.
* 5F Simmtech Bldg., 228-3, Nonhyun-dong, Kangnam-gu,
* Seoul, Korea
*
* (c) Copyright 2002, Wiznet, Seoul, Korea
*
* Filename      : dhcp.h
* Programmer(s) : 
* Version       : 1.0 
* Created       : 2002/11/10
* Modified      :
* Description   : 
********************************************************************************
*/
#ifndef __DHCP_H
#define __DHCP_H

#include "type.h"

// DHCP state machine.
#define	STATE_DHCP_DISCOVER		1
#define	STATE_DHCP_REQUEST		2
#define	STATE_DHCP_LEASED		3
#define	STATE_DHCP_REREQUEST	4
#define	STATE_DHCP_RELEASE		5

#define	MAX_DHCP_RETRY		10
#define	DHCP_WAIT_TIME		5

/* UDP port numbers for DHCP */
#define	DHCP_SERVER_PORT	67	/* from server to client */
#define DHCP_CLIENT_PORT	68	/* from client to server */

/* DHCP message OP code */
#define DHCP_BOOTREQUEST	1
#define DHCP_BOOTREPLY		2

/* DHCP message type */
#define	DHCP_DISCOVER		1
#define DHCP_OFFER			2
#define	DHCP_REQUEST		3
#define	DHCP_DECLINE		4
#define	DHCP_ACK  			5
#define DHCP_NAK  			6
#define	DHCP_RELEASE		7
#define DHCP_INFORM  		8

/* DHCP RETRANSMISSION TIMEOUT (microseconds) */
#define DHCP_INITIAL_RTO    ( 4*1000000)
#define DHCP_MAX_RTO        (64*1000000)

#define DHCP_HTYPE10MB		1
#define DHCP_HTYPE100MB		2

#define DHCP_HLENETHERNET	6
#define DHCP_HOPS			0
//#define DHCP_XID 			0x12345678  // Client Unique ID
#define DHCP_SECS			0

#define DHCP_FLAGSBROADCAST	0x8000

#define MAGIC_COOKIE		0x63825363

#define DEFAULT_LEASETIME	0xffffffff	/* infinite lease time */

/* DHCP option and value (cf. RFC1533) */

typedef enum _OPTION
{
	padOption = 0,
	subnetMask =1,
	timerOffset =2,
	routersOnSubnet=3,
	timeServer=4,
	nameServer=5,
	dns=6,
	logServer=7,
	cookieServer=8,
	lprServer=9,
	impressServer=10,
	resourceLocationServer=11,
	hostName=12,
	bootFileSize=13,
	meritDumpFile=14,
	domainName=15,
	swapServer=16,
	rootPath=17,
	extentionsPath=18,
	IPforwarding=19,
	nonLocalSourceRouting=20,
	policyFilter=21,
	maxDgramReasmSize=22,
	defaultIPTTL=23,
	pathMTUagingTimeout=24,
	pathMTUplateauTable=25,
	ifMTU=26,
	allSubnetsLocal=27,
	broadcastAddr=28,
	performMaskDiscovery=29,
	maskSupplier=30,
	performRouterDiscovery=31,
	routerSolicitationAddr=32,
	staticRoute=33,
	trailerEncapsulation=34,
	arpCacheTimeout=35,
	ethernetEncapsulation=36,
	tcpDefaultTTL=37,
	tcpKeepaliveInterval=38,
	tcpKeepaliveGarbage=39,
	nisDomainName=40,
	nisServers=41,
	ntpServers=42,
	vendorSpecificInfo=43,
	netBIOSnameServer=44,
	netBIOSdgramDistServer=45,
	netBIOSnodeType=46,
	netBIOSscope=47,
	xFontServer=48,
	xDisplayManager=49,
	dhcpRequestedIPaddr=50,
	dhcpIPaddrLeaseTime=51,
	dhcpOptionOverload=52,
	dhcpMessageType=53,
	dhcpServerIdentifier=54,
	dhcpParamRequest=55,
	dhcpMsg=56,
	dhcpMaxMsgSize=57,
	dhcpT1value=58,
	dhcpT2value=59,
	dhcpClassIdentifier=60,
	dhcpClientIdentifier=61,
	endOption = 255
}OPTION;

typedef struct _RIP_MSG{
	UCHAR op; 
	UCHAR htype; 
	UCHAR hlen;
	UCHAR hops;
	ULONG xid;
	UINT secs;
	UINT flags; //11
	UCHAR ciaddr[4];
	UCHAR yiaddr[4];
	UCHAR siaddr[4];
	UCHAR giaddr[4];
	UCHAR chaddr[16]; // 39
	UCHAR sname[64]; // 103
	UCHAR file[128]; // 231
	UCHAR OPT[312];
}RIP_MSG;

#define RIP_MSG_SIZE	548
#define MAX_DHCP_OPT	16

// DEFINE DHCP MACGIC COOKIE
#define MAGIC0	 0x63
#define MAGIC1	 0x82
#define MAGIC2	 0x53
#define MAGIC3	 0x63

void send_DHCP_DISCOVER(SOCKET s);
void send_DHCP_REQUEST(SOCKET s);
char parseDHCPMSG(SOCKET s,UINT length);
char DHCP_SetIP();
void check_dhcp(void);
void send_DHCP_REREQUEST(SOCKET s);


#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -