diff options
Diffstat (limited to 'src/dhcp_protocol.h')
-rw-r--r-- | src/dhcp_protocol.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/dhcp_protocol.h b/src/dhcp_protocol.h new file mode 100644 index 0000000..e09cad8 --- /dev/null +++ b/src/dhcp_protocol.h @@ -0,0 +1,91 @@ +/* dnsmasq is Copyright (c) 2000-2011 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 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 + +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[312]; +}; |