Home | History | Annotate | Download | only in net
      1 /*
      2  *	Copied from LiMon - BOOTP.
      3  *
      4  *	Copyright 1994, 1995, 2000 Neil Russell.
      5  *	(See License)
      6  *	Copyright 2000 Paolo Scaffardi
      7  */
      8 
      9 #ifndef __BOOTP_H__
     10 #define __BOOTP_H__
     11 
     12 #ifndef __NET_H__
     13 #include <net.h>
     14 #endif /* __NET_H__ */
     15 
     16 /**********************************************************************/
     17 
     18 /*
     19  *	BOOTP header.
     20  */
     21 #if defined(CONFIG_CMD_DHCP)
     22 /* Minimum DHCP Options size per RFC2131 - results in 576 byte pkt */
     23 #define OPT_FIELD_SIZE 312
     24 #if defined(CONFIG_BOOTP_VENDOREX)
     25 extern u8 *dhcp_vendorex_prep(u8 *e); /*rtn new e after add own opts. */
     26 extern u8 *dhcp_vendorex_proc(u8 *e); /*rtn next e if mine,else NULL  */
     27 #endif
     28 #else
     29 #define OPT_FIELD_SIZE 64
     30 #endif
     31 
     32 struct bootp_hdr {
     33 	u8		bp_op;		/* Operation			*/
     34 # define OP_BOOTREQUEST	1
     35 # define OP_BOOTREPLY	2
     36 	u8		bp_htype;	/* Hardware type		*/
     37 # define HWT_ETHER	1
     38 	u8		bp_hlen;	/* Hardware address length	*/
     39 # define HWL_ETHER	6
     40 	u8		bp_hops;	/* Hop count (gateway thing)	*/
     41 	u32		bp_id;		/* Transaction ID		*/
     42 	u16		bp_secs;	/* Seconds since boot		*/
     43 	u16		bp_spare1;	/* Alignment			*/
     44 	struct in_addr	bp_ciaddr;	/* Client IP address		*/
     45 	struct in_addr	bp_yiaddr;	/* Your (client) IP address	*/
     46 	struct in_addr	bp_siaddr;	/* Server IP address		*/
     47 	struct in_addr	bp_giaddr;	/* Gateway IP address		*/
     48 	u8		bp_chaddr[16];	/* Client hardware address	*/
     49 	char		bp_sname[64];	/* Server host name		*/
     50 	char		bp_file[128];	/* Boot file name		*/
     51 	char		bp_vend[OPT_FIELD_SIZE]; /* Vendor information	*/
     52 } __attribute__((packed));
     53 
     54 #define BOOTP_HDR_SIZE	sizeof(struct bootp_hdr)
     55 
     56 /**********************************************************************/
     57 /*
     58  *	Global functions and variables.
     59  */
     60 
     61 /* bootp.c */
     62 extern u32	bootp_id;		/* ID of cur BOOTP request	*/
     63 extern int	bootp_try;
     64 
     65 
     66 /* Send a BOOTP request */
     67 void bootp_reset(void);
     68 void bootp_request(void);
     69 
     70 /****************** DHCP Support *********************/
     71 void dhcp_request(void);
     72 
     73 /* DHCP States */
     74 typedef enum { INIT,
     75 	       INIT_REBOOT,
     76 	       REBOOTING,
     77 	       SELECTING,
     78 	       REQUESTING,
     79 	       REBINDING,
     80 	       BOUND,
     81 	       RENEWING } dhcp_state_t;
     82 
     83 #define DHCP_DISCOVER 1
     84 #define DHCP_OFFER    2
     85 #define DHCP_REQUEST  3
     86 #define DHCP_DECLINE  4
     87 #define DHCP_ACK      5
     88 #define DHCP_NAK      6
     89 #define DHCP_RELEASE  7
     90 
     91 /**********************************************************************/
     92 
     93 #endif /* __BOOTP_H__ */
     94