| @@ -10,53 +10,55 @@ |
| |
| |
| /* supported options are easily added here */ |
| - | struct dhcp_option dhcp_options[] = { |
| - | /* name[10] flags code */ |
| - | {"subnet", OPTION_IP | OPTION_REQ, 0x01}, |
| - | {"timezone", OPTION_S32, 0x02}, |
| - | {"router", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x03}, |
| - | {"timesvr", OPTION_IP | OPTION_LIST, 0x04}, |
| - | {"namesvr", OPTION_IP | OPTION_LIST, 0x05}, |
| - | {"dns", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x06}, |
| - | {"logsvr", OPTION_IP | OPTION_LIST, 0x07}, |
| - | {"cookiesvr", OPTION_IP | OPTION_LIST, 0x08}, |
| - | {"lprsvr", OPTION_IP | OPTION_LIST, 0x09}, |
| - | {"hostname", OPTION_STRING | OPTION_REQ, 0x0c}, |
| - | {"bootsize", OPTION_U16, 0x0d}, |
| - | {"domain", OPTION_STRING | OPTION_REQ, 0x0f}, |
| - | {"swapsvr", OPTION_IP, 0x10}, |
| - | {"rootpath", OPTION_STRING, 0x11}, |
| - | {"ipttl", OPTION_U8, 0x17}, |
| - | {"mtu", OPTION_U16, 0x1a}, |
| - | {"broadcast", OPTION_IP | OPTION_REQ, 0x1c}, |
| - | {"nisdomain", OPTION_STRING | OPTION_REQ, 0x28}, |
| - | {"nissrv", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x29}, |
| - | {"ntpsrv", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x2a}, |
| - | {"wins", OPTION_IP | OPTION_LIST, 0x2c}, |
| - | {"requestip", OPTION_IP, 0x32}, |
| - | {"lease", OPTION_U32, 0x33}, |
| - | {"dhcptype", OPTION_U8, 0x35}, |
| - | {"serverid", OPTION_IP, 0x36}, |
| - | {"message", OPTION_STRING, 0x38}, |
| + | const struct dhcp_option dhcp_options[] = { |
| + | /* name[10] flags code */ |
| + | {"subnet", OPTION_IP | OPTION_REQ, 0x01}, |
| + | {"timezone", OPTION_S32, 0x02}, |
| + | {"router", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x03}, |
| + | {"timesvr", OPTION_IP | OPTION_LIST, 0x04}, |
| + | {"namesvr", OPTION_IP | OPTION_LIST, 0x05}, |
| + | {"dns", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x06}, |
| + | {"logsvr", OPTION_IP | OPTION_LIST, 0x07}, |
| + | {"cookiesvr", OPTION_IP | OPTION_LIST, 0x08}, |
| + | {"lprsvr", OPTION_IP | OPTION_LIST, 0x09}, |
| + | {"hostname", OPTION_STRING | OPTION_REQ, 0x0c}, |
| + | {"bootsize", OPTION_U16, 0x0d}, |
| + | {"domain", OPTION_STRING | OPTION_REQ, 0x0f}, |
| + | {"swapsvr", OPTION_IP, 0x10}, |
| + | {"rootpath", OPTION_STRING, 0x11}, |
| + | {"ipttl", OPTION_U8, 0x17}, |
| + | {"mtu", OPTION_U16, 0x1a}, |
| + | {"broadcast", OPTION_IP | OPTION_REQ, 0x1c}, |
| + | {"nisdomain", OPTION_STRING | OPTION_REQ, 0x28}, |
| + | {"nissrv", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x29}, |
| + | {"ntpsrv", OPTION_IP | OPTION_LIST | OPTION_REQ, 0x2a}, |
| + | {"wins", OPTION_IP | OPTION_LIST, 0x2c}, |
| + | {"requestip", OPTION_IP, 0x32}, |
| + | {"lease", OPTION_U32, 0x33}, |
| + | {"dhcptype", OPTION_U8, 0x35}, |
| + | {"serverid", OPTION_IP, 0x36}, |
| + | {"message", OPTION_STRING, 0x38}, |
| {"vendorclass", OPTION_STRING, 0x3C}, |
| {"clientid", OPTION_STRING, 0x3D}, |
| - | {"tftp", OPTION_STRING, 0x42}, |
| - | {"bootfile", OPTION_STRING, 0x43}, |
| + | {"tftp", OPTION_STRING, 0x42}, |
| + | {"bootfile", OPTION_STRING, 0x43}, |
| {"userclass", OPTION_STRING, 0x4D}, |
| - | {"", 0x00, 0x00} |
| + | /* MSIE's "Web Proxy Autodiscovery Protocol" support */ |
| + | {"wpad", OPTION_STRING, 0xfc}, |
| + | {"", 0x00, 0x00} |
| }; |
| |
| /* Lengths of the different option types */ |
| - | int option_lengths[] = { |
| - | [OPTION_IP] = 4, |
| - | [OPTION_IP_PAIR] = 8, |
| - | [OPTION_BOOLEAN] = 1, |
| - | [OPTION_STRING] = 1, |
| - | [OPTION_U8] = 1, |
| - | [OPTION_U16] = 2, |
| - | [OPTION_S16] = 2, |
| - | [OPTION_U32] = 4, |
| - | [OPTION_S32] = 4 |
| + | const unsigned char option_lengths[] = { |
| + | [OPTION_IP] = 4, |
| + | [OPTION_IP_PAIR] = 8, |
| + | [OPTION_BOOLEAN] = 1, |
| + | [OPTION_STRING] = 1, |
| + | [OPTION_U8] = 1, |
| + | [OPTION_U16] = 2, |
| + | [OPTION_S16] = 2, |
| + | [OPTION_U32] = 4, |
| + | [OPTION_S32] = 4 |
| }; |
| |
| |
| @@ -150,9 +152,9 @@ int add_option_string(uint8_t *optionptr, uint8_t *string) |
| /* add a one to four byte option to a packet */ |
| int add_simple_option(uint8_t *optionptr, uint8_t code, uint32_t data) |
| { |
| - | struct dhcp_option *dh; |
| + | const struct dhcp_option *dh; |
| |
| - | for (dh=dhcp_options; dh->code; dh++) { |
| + | for (dh = dhcp_options; dh->code; dh++) { |
| if (dh->code == code) { |
| uint8_t option[6], len; |
| |