74 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*	net/gen/dhcp.h - DHCP packet format		Author: Kees J. Bot
 | |
|  *								1 Dec 2000
 | |
|  */
 | |
| 
 | |
| #ifndef __NET__GEN__DHCP_H__
 | |
| #define __NET__GEN__DHCP_H__
 | |
| 
 | |
| typedef struct dhcp {
 | |
| 	u8_t		op;		/* Message opcode/type. */
 | |
| 	u8_t		htype;		/* Hardware address type. */
 | |
| 	u8_t		hlen;		/* Hardware address length. */
 | |
| 	u8_t		hops;		/* Hop count when relaying. */
 | |
| 	u32_t		xid;		/* Transaction ID. */
 | |
| 	u16_t		secs;		/* Seconds past since client began. */
 | |
| 	u16_t		flags;		/* Flags. */
 | |
| 	ipaddr_t	ciaddr;		/* Client IP address. */
 | |
| 	ipaddr_t	yiaddr;		/* "Your" IP address. */
 | |
| 	ipaddr_t	siaddr;		/* Boot server IP address. */
 | |
| 	ipaddr_t	giaddr;		/* Relay agent (gateway) IP address. */
 | |
| 	u8_t		chaddr[16];	/* Client hardware address. */
 | |
| 	u8_t		sname[64];	/* Server host name. */
 | |
| 	u8_t		file[128];	/* Boot file. */
 | |
| 	u32_t		magic;		/* Magic number. */
 | |
| 	u8_t		options[308];	/* Optional parameters. */
 | |
| } dhcp_t;
 | |
| 
 | |
| /* DHCP operations and stuff: */
 | |
| #define DHCP_BOOTREQUEST	 1	/* Boot request message. */
 | |
| #define DHCP_BOOTREPLY		 2	/* Boot reply message. */
 | |
| #define DHCP_HTYPE_ETH		 1	/* Ethernet hardware type. */
 | |
| #define DHCP_HLEN_ETH		 6	/* Ethernet hardware address length. */
 | |
| #define DHCP_FLAGS_BCAST    0x8000U	/* Reply must be broadcast to client. */
 | |
| 
 | |
| 					/* "Magic" first four option bytes. */
 | |
| #define DHCP_MAGIC	HTONL(0x63825363UL)
 | |
| 
 | |
| /* DHCP common tags: */
 | |
| #define DHCP_TAG_NETMASK	 1	/* Netmask. */
 | |
| #define DHCP_TAG_GATEWAY	 3	/* Gateway list. */
 | |
| #define DHCP_TAG_DNS		 6	/* DNS Nameserver list. */
 | |
| #define DHCP_TAG_HOSTNAME	12	/* Host name. */
 | |
| #define DHCP_TAG_DOMAIN		15	/* Domain. */
 | |
| #define DHCP_TAG_IPMTU		26	/* Interface MTU. */
 | |
| 
 | |
| /* DHCP protocol tags: */
 | |
| #define DHCP_TAG_REQIP		50	/* Request this IP. */
 | |
| #define DHCP_TAG_LEASE		51	/* Lease time requested/offered. */
 | |
| #define DHCP_TAG_OVERLOAD	52	/* Options continued in file/sname. */
 | |
| #define DHCP_TAG_TYPE		53	/* DHCP message (values below). */
 | |
| #define DHCP_TAG_SERVERID	54	/* Server identifier. */
 | |
| #define DHCP_TAG_REQPAR		55	/* Parameters requested. */
 | |
| #define DHCP_TAG_MESSAGE	56	/* Error message. */
 | |
| #define DHCP_TAG_MAXDHCP	57	/* Max DHCP packet size. */
 | |
| #define DHCP_TAG_RENEWAL	58	/* Time to go into renewal state. */
 | |
| #define DHCP_TAG_REBINDING	59	/* Time to go into rebinding state. */
 | |
| #define DHCP_TAG_CLASSID	60	/* Class identifier. */
 | |
| #define DHCP_TAG_CLIENTID	61	/* Client identifier. */
 | |
| 
 | |
| /* DHCP messages: */
 | |
| #define DHCP_DISCOVER		 1	/* Locate available servers. */
 | |
| #define DHCP_OFFER		 2	/* Parameters offered to client. */
 | |
| #define DHCP_REQUEST		 3	/* (Re)request offered parameters. */
 | |
| #define DHCP_DECLINE		 4	/* Client declines offer. */
 | |
| #define DHCP_ACK		 5	/* Server acknowlegdes request. */
 | |
| #define DHCP_NAK		 6	/* Server denies request. */
 | |
| #define DHCP_RELEASE		 7	/* Client relinguishes address. */
 | |
| #define DHCP_INFORM		 8	/* Client requests just local config. */
 | |
| 
 | |
| void dhcp_init(dhcp_t *_dp);
 | |
| int dhcp_settag(dhcp_t *_dp, int _tag, void *_data, size_t _len);
 | |
| int dhcp_gettag(dhcp_t *_dp, int _searchtag, u8_t **_pdata, size_t *_plen);
 | |
| 
 | |
| #endif /* __NET__GEN__DHCP_H__ */
 | 
