1 /* bootp/dhcp defines */ 2 3 #define BOOTP_SERVER 67 4 #define BOOTP_CLIENT 68 5 6 #define BOOTP_REQUEST 1 7 #define BOOTP_REPLY 2 8 9 #define RFC1533_COOKIE 99, 130, 83, 99 10 #define RFC1533_PAD 0 11 #define RFC1533_NETMASK 1 12 #define RFC1533_TIMEOFFSET 2 13 #define RFC1533_GATEWAY 3 14 #define RFC1533_TIMESERVER 4 15 #define RFC1533_IEN116NS 5 16 #define RFC1533_DNS 6 17 #define RFC1533_LOGSERVER 7 18 #define RFC1533_COOKIESERVER 8 19 #define RFC1533_LPRSERVER 9 20 #define RFC1533_IMPRESSSERVER 10 21 #define RFC1533_RESOURCESERVER 11 22 #define RFC1533_HOSTNAME 12 23 #define RFC1533_BOOTFILESIZE 13 24 #define RFC1533_MERITDUMPFILE 14 25 #define RFC1533_DOMAINNAME 15 26 #define RFC1533_SWAPSERVER 16 27 #define RFC1533_ROOTPATH 17 28 #define RFC1533_EXTENSIONPATH 18 29 #define RFC1533_IPFORWARDING 19 30 #define RFC1533_IPSOURCEROUTING 20 31 #define RFC1533_IPPOLICYFILTER 21 32 #define RFC1533_IPMAXREASSEMBLY 22 33 #define RFC1533_IPTTL 23 34 #define RFC1533_IPMTU 24 35 #define RFC1533_IPMTUPLATEAU 25 36 #define RFC1533_INTMTU 26 37 #define RFC1533_INTLOCALSUBNETS 27 38 #define RFC1533_INTBROADCAST 28 39 #define RFC1533_INTICMPDISCOVER 29 40 #define RFC1533_INTICMPRESPOND 30 41 #define RFC1533_INTROUTEDISCOVER 31 42 #define RFC1533_INTROUTESOLICIT 32 43 #define RFC1533_INTSTATICROUTES 33 44 #define RFC1533_LLTRAILERENCAP 34 45 #define RFC1533_LLARPCACHETMO 35 46 #define RFC1533_LLETHERNETENCAP 36 47 #define RFC1533_TCPTTL 37 48 #define RFC1533_TCPKEEPALIVETMO 38 49 #define RFC1533_TCPKEEPALIVEGB 39 50 #define RFC1533_NISDOMAIN 40 51 #define RFC1533_NISSERVER 41 52 #define RFC1533_NTPSERVER 42 53 #define RFC1533_VENDOR 43 54 #define RFC1533_NBNS 44 55 #define RFC1533_NBDD 45 56 #define RFC1533_NBNT 46 57 #define RFC1533_NBSCOPE 47 58 #define RFC1533_XFS 48 59 #define RFC1533_XDM 49 60 61 #define RFC2132_REQ_ADDR 50 62 #define RFC2132_LEASE_TIME 51 63 #define RFC2132_MSG_TYPE 53 64 #define RFC2132_SRV_ID 54 65 #define RFC2132_PARAM_LIST 55 66 #define RFC2132_MESSAGE 56 67 #define RFC2132_MAX_SIZE 57 68 #define RFC2132_RENEWAL_TIME 58 69 #define RFC2132_REBIND_TIME 59 70 71 #define DHCPDISCOVER 1 72 #define DHCPOFFER 2 73 #define DHCPREQUEST 3 74 #define DHCPACK 5 75 #define DHCPNAK 6 76 77 #define RFC1533_VENDOR_MAJOR 0 78 #define RFC1533_VENDOR_MINOR 0 79 80 #define RFC1533_VENDOR_MAGIC 128 81 #define RFC1533_VENDOR_ADDPARM 129 82 #define RFC1533_VENDOR_ETHDEV 130 83 #define RFC1533_VENDOR_HOWTO 132 84 #define RFC1533_VENDOR_MNUOPTS 160 85 #define RFC1533_VENDOR_SELECTION 176 86 #define RFC1533_VENDOR_MOTD 184 87 #define RFC1533_VENDOR_NUMOFMOTD 8 88 #define RFC1533_VENDOR_IMG 192 89 #define RFC1533_VENDOR_NUMOFIMG 16 90 91 #define RFC1533_END 255 92 #define BOOTP_VENDOR_LEN 64 93 #define DHCP_OPT_LEN 312 94 95 struct bootp_t { 96 struct ip ip; 97 struct udphdr udp; 98 uint8_t bp_op; 99 uint8_t bp_htype; 100 uint8_t bp_hlen; 101 uint8_t bp_hops; 102 uint32_t bp_xid; 103 uint16_t bp_secs; 104 uint16_t unused; 105 struct in_addr bp_ciaddr; 106 struct in_addr bp_yiaddr; 107 struct in_addr bp_siaddr; 108 struct in_addr bp_giaddr; 109 uint8_t bp_hwaddr[16]; 110 uint8_t bp_sname[64]; 111 uint8_t bp_file[128]; 112 uint8_t bp_vend[DHCP_OPT_LEN]; 113 }; 114 115 void bootp_input(struct mbuf *m); 116