plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

dhcp.h (3267B)


      1 
      2 enum
      3 {
      4 	OfferTimeout=	60,		/* when an offer times out */
      5 	MaxLease=	60*60,		/* longest lease for dynamic binding */
      6 	MinLease=	15*60,		/* shortest lease for dynamic binding */
      7 	StaticLease=	30*60,		/* lease for static binding */
      8 
      9 	IPUDPHDRSIZE=	28,		/* size of an IP plus UDP header */
     10 	MINSUPPORTED=	576,		/* biggest IP message the client must support */
     11 
     12 	/* lengths of some bootp fields */
     13 	Maxhwlen=	16,
     14 	Maxfilelen=	128,
     15 	Maxoptlen=	312-4,
     16 
     17 	/* bootp types */
     18 	Bootrequest=	1,
     19 	Bootreply= 	2,
     20 
     21 	/* bootp flags */
     22 	Fbroadcast=	1<<15,
     23 
     24 	/* dhcp types */
     25 	Discover=	1,
     26 	Offer=		2,
     27 	Request=	3,
     28 	Decline=	4,
     29 	Ack=		5,
     30 	Nak=		6,
     31 	Release=	7,
     32 	Inform=		8,
     33 
     34 	/* bootp option types */
     35 	OBend=			255,
     36 	OBpad=			0,
     37 	OBmask=			1,
     38 	OBtimeoff=		2,
     39 	OBrouter=		3,
     40 	OBtimeserver=		4,
     41 	OBnameserver=		5,
     42 	OBdnserver=		6,
     43 	OBlogserver=		7,
     44 	OBcookieserver=		8,
     45 	OBlprserver=		9,
     46 	OBimpressserver=	10,
     47 	OBrlserver=		11,
     48 	OBhostname=		12,	/* 0xc0 */
     49 	OBbflen=		13,
     50 	OBdumpfile=		14,
     51 	OBdomainname=		15,
     52 	OBswapserver=		16,	/* 0x10 */
     53 	OBrootpath=		17,
     54 	OBextpath=		18,
     55 	OBipforward=		19,
     56 	OBnonlocal=		20,
     57 	OBpolicyfilter=		21,
     58 	OBmaxdatagram=		22,
     59 	OBttl=			23,
     60 	OBpathtimeout=		24,
     61 	OBpathplateau=		25,
     62 	OBmtu=			26,
     63 	OBsubnetslocal=		27,
     64 	OBbaddr=		28,
     65 	OBdiscovermask=		29,
     66 	OBsupplymask=		30,
     67 	OBdiscoverrouter=	31,
     68 	OBrsserver=		32,	/* 0x20 */
     69 	OBstaticroutes=		33,
     70 	OBtrailerencap=		34,
     71 	OBarptimeout=		35,
     72 	OBetherencap=		36,
     73 	OBtcpttl=		37,
     74 	OBtcpka=		38,
     75 	OBtcpkag=		39,
     76 	OBnisdomain=		40,
     77 	OBniserver=		41,
     78 	OBntpserver=		42,
     79 	OBvendorinfo=		43,	/* 0x2b */
     80 	OBnetbiosns=		44,
     81 	OBnetbiosdds=		45,
     82 	OBnetbiostype=		46,
     83 	OBnetbiosscope=		47,
     84 	OBxfontserver=		48,	/* 0x30 */
     85 	OBxdispmanager=		49,
     86 	OBnisplusdomain=	64,	/* 0x40 */
     87 	OBnisplusserver=	65,
     88 	OBhomeagent=		68,
     89 	OBsmtpserver=		69,
     90 	OBpop3server=		70,
     91 	OBnntpserver=		71,
     92 	OBwwwserver=		72,
     93 	OBfingerserver=		73,
     94 	OBircserver=		74,
     95 	OBstserver=		75,
     96 	OBstdaserver=		76,
     97 
     98 	/* dhcp options */
     99 	ODipaddr=		50,	/* 0x32 */
    100 	ODlease=		51,
    101 	ODoverload=		52,
    102 	ODtype=			53,	/* 0x35 */
    103 	ODserverid=		54,	/* 0x36 */
    104 	ODparams=		55,	/* 0x37 */
    105 	ODmessage=		56,
    106 	ODmaxmsg=		57,
    107 	ODrenewaltime=		58,
    108 	ODrebindingtime=	59,
    109 	ODvendorclass=		60,
    110 	ODclientid=		61,	/* 0x3d */
    111 	ODtftpserver=		66,
    112 	ODbootfile=		67,
    113 
    114 	/* plan9 vendor info options */
    115 	OP9fs=			128,	// plan9 file servers
    116 	OP9auth=		129,	// plan9 auth servers
    117 };
    118 
    119 /* a lease that never expires */
    120 #define Lforever	0xffffffffU
    121 
    122 /* dhcp states */
    123 enum {
    124 	Sinit,
    125 	Sselecting,
    126 	Srequesting,
    127 	Sbound,
    128 	Srenewing,
    129 	Srebinding
    130 };
    131 
    132 typedef struct Bootp	Bootp;
    133 struct Bootp
    134 {
    135 	uchar	op;			/* opcode */
    136 	uchar	htype;			/* hardware type */
    137 	uchar	hlen;			/* hardware address len */
    138 	uchar	hops;			/* hops */
    139 	uchar	xid[4];			/* a random number */
    140 	uchar	secs[2];		/* elapsed since client started booting */
    141 	uchar	flags[2];
    142 	uchar	ciaddr[IPv4addrlen];	/* client IP address (client tells server) */
    143 	uchar	yiaddr[IPv4addrlen];	/* client IP address (server tells client) */
    144 	uchar	siaddr[IPv4addrlen];	/* server IP address */
    145 	uchar	giaddr[IPv4addrlen];	/* gateway IP address */
    146 	uchar	chaddr[Maxhwlen];	/* client hardware address */
    147 	char	sname[64];		/* server host name (optional) */
    148 	char	file[Maxfilelen];	/* boot file name */
    149 	uchar	optmagic[4];
    150 	uchar	optdata[Maxoptlen];
    151 };