00001
00002
00003 #define BOOTP_SERVER 67
00004 #define BOOTP_CLIENT 68
00005
00006 #define BOOTP_REQUEST 1
00007 #define BOOTP_REPLY 2
00008
00009 #define RFC1533_COOKIE 99, 130, 83, 99
00010 #define RFC1533_PAD 0
00011 #define RFC1533_NETMASK 1
00012 #define RFC1533_TIMEOFFSET 2
00013 #define RFC1533_GATEWAY 3
00014 #define RFC1533_TIMESERVER 4
00015 #define RFC1533_IEN116NS 5
00016 #define RFC1533_DNS 6
00017 #define RFC1533_LOGSERVER 7
00018 #define RFC1533_COOKIESERVER 8
00019 #define RFC1533_LPRSERVER 9
00020 #define RFC1533_IMPRESSSERVER 10
00021 #define RFC1533_RESOURCESERVER 11
00022 #define RFC1533_HOSTNAME 12
00023 #define RFC1533_BOOTFILESIZE 13
00024 #define RFC1533_MERITDUMPFILE 14
00025 #define RFC1533_DOMAINNAME 15
00026 #define RFC1533_SWAPSERVER 16
00027 #define RFC1533_ROOTPATH 17
00028 #define RFC1533_EXTENSIONPATH 18
00029 #define RFC1533_IPFORWARDING 19
00030 #define RFC1533_IPSOURCEROUTING 20
00031 #define RFC1533_IPPOLICYFILTER 21
00032 #define RFC1533_IPMAXREASSEMBLY 22
00033 #define RFC1533_IPTTL 23
00034 #define RFC1533_IPMTU 24
00035 #define RFC1533_IPMTUPLATEAU 25
00036 #define RFC1533_INTMTU 26
00037 #define RFC1533_INTLOCALSUBNETS 27
00038 #define RFC1533_INTBROADCAST 28
00039 #define RFC1533_INTICMPDISCOVER 29
00040 #define RFC1533_INTICMPRESPOND 30
00041 #define RFC1533_INTROUTEDISCOVER 31
00042 #define RFC1533_INTROUTESOLICIT 32
00043 #define RFC1533_INTSTATICROUTES 33
00044 #define RFC1533_LLTRAILERENCAP 34
00045 #define RFC1533_LLARPCACHETMO 35
00046 #define RFC1533_LLETHERNETENCAP 36
00047 #define RFC1533_TCPTTL 37
00048 #define RFC1533_TCPKEEPALIVETMO 38
00049 #define RFC1533_TCPKEEPALIVEGB 39
00050 #define RFC1533_NISDOMAIN 40
00051 #define RFC1533_NISSERVER 41
00052 #define RFC1533_NTPSERVER 42
00053 #define RFC1533_VENDOR 43
00054 #define RFC1533_NBNS 44
00055 #define RFC1533_NBDD 45
00056 #define RFC1533_NBNT 46
00057 #define RFC1533_NBSCOPE 47
00058 #define RFC1533_XFS 48
00059 #define RFC1533_XDM 49
00060
00061 #define RFC2132_REQ_ADDR 50
00062 #define RFC2132_LEASE_TIME 51
00063 #define RFC2132_MSG_TYPE 53
00064 #define RFC2132_SRV_ID 54
00065 #define RFC2132_PARAM_LIST 55
00066 #define RFC2132_MAX_SIZE 57
00067 #define RFC2132_RENEWAL_TIME 58
00068 #define RFC2132_REBIND_TIME 59
00069
00070 #define DHCPDISCOVER 1
00071 #define DHCPOFFER 2
00072 #define DHCPREQUEST 3
00073 #define DHCPACK 5
00074
00075 #define RFC1533_VENDOR_MAJOR 0
00076 #define RFC1533_VENDOR_MINOR 0
00077
00078 #define RFC1533_VENDOR_MAGIC 128
00079 #define RFC1533_VENDOR_ADDPARM 129
00080 #define RFC1533_VENDOR_ETHDEV 130
00081 #define RFC1533_VENDOR_HOWTO 132
00082 #define RFC1533_VENDOR_MNUOPTS 160
00083 #define RFC1533_VENDOR_SELECTION 176
00084 #define RFC1533_VENDOR_MOTD 184
00085 #define RFC1533_VENDOR_NUMOFMOTD 8
00086 #define RFC1533_VENDOR_IMG 192
00087 #define RFC1533_VENDOR_NUMOFIMG 16
00088
00089 #define RFC1533_END 255
00090 #define BOOTP_VENDOR_LEN 64
00091 #define DHCP_OPT_LEN 312
00092
00093 struct bootp_t {
00094 struct ip ip;
00095 struct udphdr udp;
00096 uint8_t bp_op;
00097 uint8_t bp_htype;
00098 uint8_t bp_hlen;
00099 uint8_t bp_hops;
00100 uint32_t bp_xid;
00101 uint16_t bp_secs;
00102 uint16_t unused;
00103 struct in_addr bp_ciaddr;
00104 struct in_addr bp_yiaddr;
00105 struct in_addr bp_siaddr;
00106 struct in_addr bp_giaddr;
00107 uint8_t bp_hwaddr[16];
00108 uint8_t bp_sname[64];
00109 uint8_t bp_file[128];
00110 uint8_t bp_vend[DHCP_OPT_LEN];
00111 };
00112
00113 void bootp_input(struct mbuf *m);