18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* bootp/dhcp defines */ 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BOOTP_SERVER 67 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BOOTP_CLIENT 68 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BOOTP_REQUEST 1 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BOOTP_REPLY 2 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_COOKIE 99, 130, 83, 99 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_PAD 0 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_NETMASK 1 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_TIMEOFFSET 2 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_GATEWAY 3 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_TIMESERVER 4 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_IEN116NS 5 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_DNS 6 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_LOGSERVER 7 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_COOKIESERVER 8 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_LPRSERVER 9 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_IMPRESSSERVER 10 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_RESOURCESERVER 11 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_HOSTNAME 12 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_BOOTFILESIZE 13 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_MERITDUMPFILE 14 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_DOMAINNAME 15 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_SWAPSERVER 16 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_ROOTPATH 17 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_EXTENSIONPATH 18 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_IPFORWARDING 19 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_IPSOURCEROUTING 20 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_IPPOLICYFILTER 21 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_IPMAXREASSEMBLY 22 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_IPTTL 23 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_IPMTU 24 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_IPMTUPLATEAU 25 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_INTMTU 26 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_INTLOCALSUBNETS 27 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_INTBROADCAST 28 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_INTICMPDISCOVER 29 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_INTICMPRESPOND 30 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_INTROUTEDISCOVER 31 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_INTROUTESOLICIT 32 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_INTSTATICROUTES 33 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_LLTRAILERENCAP 34 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_LLARPCACHETMO 35 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_LLETHERNETENCAP 36 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_TCPTTL 37 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_TCPKEEPALIVETMO 38 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_TCPKEEPALIVEGB 39 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_NISDOMAIN 40 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_NISSERVER 41 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_NTPSERVER 42 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR 43 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_NBNS 44 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_NBDD 45 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_NBNT 46 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_NBSCOPE 47 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_XFS 48 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_XDM 49 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC2132_REQ_ADDR 50 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC2132_LEASE_TIME 51 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC2132_MSG_TYPE 53 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC2132_SRV_ID 54 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC2132_PARAM_LIST 55 665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define RFC2132_MESSAGE 56 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC2132_MAX_SIZE 57 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC2132_RENEWAL_TIME 58 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC2132_REBIND_TIME 59 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DHCPDISCOVER 1 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DHCPOFFER 2 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DHCPREQUEST 3 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DHCPACK 5 755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DHCPNAK 6 768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_MAJOR 0 788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_MINOR 0 798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_MAGIC 128 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_ADDPARM 129 828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_ETHDEV 130 838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_HOWTO 132 848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_MNUOPTS 160 858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_SELECTION 176 868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_MOTD 184 878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_NUMOFMOTD 8 888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_IMG 192 898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_VENDOR_NUMOFIMG 16 908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define RFC1533_END 255 928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define BOOTP_VENDOR_LEN 64 938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DHCP_OPT_LEN 312 948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct bootp_t { 968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct ip ip; 978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct udphdr udp; 988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint8_t bp_op; 998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint8_t bp_htype; 1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint8_t bp_hlen; 1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint8_t bp_hops; 1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint32_t bp_xid; 1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint16_t bp_secs; 1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint16_t unused; 1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint32_t bp_ciaddr; 1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint32_t bp_yiaddr; 1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint32_t bp_siaddr; 1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint32_t bp_giaddr; 1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint8_t bp_hwaddr[16]; 1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint8_t bp_sname[64]; 1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint8_t bp_file[128]; 1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint8_t bp_vend[DHCP_OPT_LEN]; 1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid bootp_input(struct mbuf *m); 116