| /* dnsmasq is Copyright (c) 2000-2014 Simon Kelley |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; version 2 dated June, 1991, or |
| (at your option) version 3 dated 29 June, 2007. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program. If not, see <http://www.gnu.org/licenses/>. |
| */ |
| #define DHCP_SERVER_PORT 67 |
| #define DHCP_CLIENT_PORT 68 |
| #define DHCP_SERVER_ALTPORT 1067 |
| #define DHCP_CLIENT_ALTPORT 1068 |
| #define PXE_PORT 4011 |
| |
| #define BOOTREQUEST 1 |
| #define BOOTREPLY 2 |
| #define DHCP_COOKIE 0x63825363 |
| |
| /* The Linux in-kernel DHCP client silently ignores any packet |
| smaller than this. Sigh........... */ |
| #define MIN_PACKETSZ 300 |
| |
| #define OPTION_PAD 0 |
| #define OPTION_NETMASK 1 |
| #define OPTION_ROUTER 3 |
| #define OPTION_DNSSERVER 6 |
| #define OPTION_HOSTNAME 12 |
| #define OPTION_DOMAINNAME 15 |
| #define OPTION_BROADCAST 28 |
| #define OPTION_VENDOR_CLASS_OPT 43 |
| #define OPTION_REQUESTED_IP 50 |
| #define OPTION_LEASE_TIME 51 |
| #define OPTION_OVERLOAD 52 |
| #define OPTION_MESSAGE_TYPE 53 |
| #define OPTION_SERVER_IDENTIFIER 54 |
| #define OPTION_REQUESTED_OPTIONS 55 |
| #define OPTION_MESSAGE 56 |
| #define OPTION_MAXMESSAGE 57 |
| #define OPTION_T1 58 |
| #define OPTION_T2 59 |
| #define OPTION_VENDOR_ID 60 |
| #define OPTION_CLIENT_ID 61 |
| #define OPTION_SNAME 66 |
| #define OPTION_FILENAME 67 |
| #define OPTION_USER_CLASS 77 |
| #define OPTION_CLIENT_FQDN 81 |
| #define OPTION_AGENT_ID 82 |
| #define OPTION_ARCH 93 |
| #define OPTION_PXE_UUID 97 |
| #define OPTION_SUBNET_SELECT 118 |
| #define OPTION_DOMAIN_SEARCH 119 |
| #define OPTION_SIP_SERVER 120 |
| #define OPTION_VENDOR_IDENT 124 |
| #define OPTION_VENDOR_IDENT_OPT 125 |
| #define OPTION_END 255 |
| |
| #define SUBOPT_CIRCUIT_ID 1 |
| #define SUBOPT_REMOTE_ID 2 |
| #define SUBOPT_SUBNET_SELECT 5 /* RFC 3527 */ |
| #define SUBOPT_SUBSCR_ID 6 /* RFC 3393 */ |
| #define SUBOPT_SERVER_OR 11 /* RFC 5107 */ |
| |
| #define SUBOPT_PXE_BOOT_ITEM 71 /* PXE standard */ |
| #define SUBOPT_PXE_DISCOVERY 6 |
| #define SUBOPT_PXE_SERVERS 8 |
| #define SUBOPT_PXE_MENU 9 |
| #define SUBOPT_PXE_MENU_PROMPT 10 |
| |
| #define DHCPDISCOVER 1 |
| #define DHCPOFFER 2 |
| #define DHCPREQUEST 3 |
| #define DHCPDECLINE 4 |
| #define DHCPACK 5 |
| #define DHCPNAK 6 |
| #define DHCPRELEASE 7 |
| #define DHCPINFORM 8 |
| |
| #define BRDBAND_FORUM_IANA 3561 /* Broadband forum IANA enterprise */ |
| |
| #define DHCP_CHADDR_MAX 16 |
| #define DHCP_OPT_MAX 312 |
| |
| struct dhcp_packet { |
| u8 op, htype, hlen, hops; |
| u32 xid; |
| u16 secs, flags; |
| struct in_addr ciaddr, yiaddr, siaddr, giaddr; |
| u8 chaddr[DHCP_CHADDR_MAX], sname[64], file[128]; |
| u8 options[DHCP_OPT_MAX]; |
| }; |