1*5e3eaea3SApple OSS Distributions #ifndef _NETINET_DHCP_H 2*5e3eaea3SApple OSS Distributions #define _NETINET_DHCP_H 3*5e3eaea3SApple OSS Distributions #include <sys/appleapiopts.h> 4*5e3eaea3SApple OSS Distributions 5*5e3eaea3SApple OSS Distributions /* 6*5e3eaea3SApple OSS Distributions * Copyright (c) 1999-2007 Apple Inc. All rights reserved. 7*5e3eaea3SApple OSS Distributions * 8*5e3eaea3SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 9*5e3eaea3SApple OSS Distributions * 10*5e3eaea3SApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 11*5e3eaea3SApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 12*5e3eaea3SApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 13*5e3eaea3SApple OSS Distributions * compliance with the License. The rights granted to you under the License 14*5e3eaea3SApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 15*5e3eaea3SApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 16*5e3eaea3SApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 17*5e3eaea3SApple OSS Distributions * terms of an Apple operating system software license agreement. 18*5e3eaea3SApple OSS Distributions * 19*5e3eaea3SApple OSS Distributions * Please obtain a copy of the License at 20*5e3eaea3SApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 21*5e3eaea3SApple OSS Distributions * 22*5e3eaea3SApple OSS Distributions * The Original Code and all software distributed under the License are 23*5e3eaea3SApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 24*5e3eaea3SApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 25*5e3eaea3SApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 26*5e3eaea3SApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 27*5e3eaea3SApple OSS Distributions * Please see the License for the specific language governing rights and 28*5e3eaea3SApple OSS Distributions * limitations under the License. 29*5e3eaea3SApple OSS Distributions * 30*5e3eaea3SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 31*5e3eaea3SApple OSS Distributions */ 32*5e3eaea3SApple OSS Distributions /* 33*5e3eaea3SApple OSS Distributions * dhcp.h 34*5e3eaea3SApple OSS Distributions * - definitions for DHCP (as specified in RFC2132) 35*5e3eaea3SApple OSS Distributions */ 36*5e3eaea3SApple OSS Distributions #include <sys/types.h> 37*5e3eaea3SApple OSS Distributions #include <netinet/in.h> 38*5e3eaea3SApple OSS Distributions #include <netinet/in_systm.h> 39*5e3eaea3SApple OSS Distributions #include <netinet/ip.h> 40*5e3eaea3SApple OSS Distributions #include <netinet/udp.h> 41*5e3eaea3SApple OSS Distributions 42*5e3eaea3SApple OSS Distributions struct dhcp { 43*5e3eaea3SApple OSS Distributions u_char dp_op; /* packet opcode type */ 44*5e3eaea3SApple OSS Distributions u_char dp_htype; /* hardware addr type */ 45*5e3eaea3SApple OSS Distributions u_char dp_hlen; /* hardware addr length */ 46*5e3eaea3SApple OSS Distributions u_char dp_hops; /* gateway hops */ 47*5e3eaea3SApple OSS Distributions u_int32_t dp_xid; /* transaction ID */ 48*5e3eaea3SApple OSS Distributions u_int16_t dp_secs; /* seconds since boot began */ 49*5e3eaea3SApple OSS Distributions u_int16_t dp_flags; /* flags */ 50*5e3eaea3SApple OSS Distributions struct in_addr dp_ciaddr; /* client IP address */ 51*5e3eaea3SApple OSS Distributions struct in_addr dp_yiaddr; /* 'your' IP address */ 52*5e3eaea3SApple OSS Distributions struct in_addr dp_siaddr; /* server IP address */ 53*5e3eaea3SApple OSS Distributions struct in_addr dp_giaddr; /* gateway IP address */ 54*5e3eaea3SApple OSS Distributions u_char dp_chaddr[16];/* client hardware address */ 55*5e3eaea3SApple OSS Distributions u_char dp_sname[64];/* server host name */ 56*5e3eaea3SApple OSS Distributions u_char dp_file[128];/* boot file name */ 57*5e3eaea3SApple OSS Distributions u_char dp_options[0];/* variable-length options field */ 58*5e3eaea3SApple OSS Distributions }; 59*5e3eaea3SApple OSS Distributions 60*5e3eaea3SApple OSS Distributions struct dhcp_packet { 61*5e3eaea3SApple OSS Distributions struct ip ip; 62*5e3eaea3SApple OSS Distributions struct udphdr udp; 63*5e3eaea3SApple OSS Distributions struct dhcp dhcp; 64*5e3eaea3SApple OSS Distributions }; 65*5e3eaea3SApple OSS Distributions 66*5e3eaea3SApple OSS Distributions #define DHCP_OPTIONS_MIN 312 67*5e3eaea3SApple OSS Distributions #define DHCP_PACKET_MIN (sizeof(struct dhcp_packet) + DHCP_OPTIONS_MIN) 68*5e3eaea3SApple OSS Distributions #define DHCP_PAYLOAD_MIN (sizeof(struct dhcp) + DHCP_OPTIONS_MIN) 69*5e3eaea3SApple OSS Distributions 70*5e3eaea3SApple OSS Distributions /* dhcp message types */ 71*5e3eaea3SApple OSS Distributions #define DHCPDISCOVER 1 72*5e3eaea3SApple OSS Distributions #define DHCPOFFER 2 73*5e3eaea3SApple OSS Distributions #define DHCPREQUEST 3 74*5e3eaea3SApple OSS Distributions #define DHCPDECLINE 4 75*5e3eaea3SApple OSS Distributions #define DHCPACK 5 76*5e3eaea3SApple OSS Distributions #define DHCPNAK 6 77*5e3eaea3SApple OSS Distributions #define DHCPRELEASE 7 78*5e3eaea3SApple OSS Distributions #define DHCPINFORM 8 79*5e3eaea3SApple OSS Distributions 80*5e3eaea3SApple OSS Distributions enum { 81*5e3eaea3SApple OSS Distributions dhcp_msgtype_none_e = 0, 82*5e3eaea3SApple OSS Distributions dhcp_msgtype_discover_e = DHCPDISCOVER, 83*5e3eaea3SApple OSS Distributions dhcp_msgtype_offer_e = DHCPOFFER, 84*5e3eaea3SApple OSS Distributions dhcp_msgtype_request_e = DHCPREQUEST, 85*5e3eaea3SApple OSS Distributions dhcp_msgtype_decline_e = DHCPDECLINE, 86*5e3eaea3SApple OSS Distributions dhcp_msgtype_ack_e = DHCPACK, 87*5e3eaea3SApple OSS Distributions dhcp_msgtype_nak_e = DHCPNAK, 88*5e3eaea3SApple OSS Distributions dhcp_msgtype_release_e = DHCPRELEASE, 89*5e3eaea3SApple OSS Distributions dhcp_msgtype_inform_e = DHCPINFORM, 90*5e3eaea3SApple OSS Distributions }; 91*5e3eaea3SApple OSS Distributions 92*5e3eaea3SApple OSS Distributions typedef uint8_t dhcp_msgtype_t; 93*5e3eaea3SApple OSS Distributions 94*5e3eaea3SApple OSS Distributions typedef int32_t dhcp_time_secs_t; /* absolute time */ 95*5e3eaea3SApple OSS Distributions typedef int32_t dhcp_lease_t; /* relative time */ 96*5e3eaea3SApple OSS Distributions #define dhcp_time_hton htonl 97*5e3eaea3SApple OSS Distributions #define dhcp_time_ntoh ntohl 98*5e3eaea3SApple OSS Distributions #define dhcp_lease_hton htonl 99*5e3eaea3SApple OSS Distributions #define dhcp_lease_ntoh ntohl 100*5e3eaea3SApple OSS Distributions 101*5e3eaea3SApple OSS Distributions #define DHCP_INFINITE_LEASE ((dhcp_lease_t)-1) 102*5e3eaea3SApple OSS Distributions #define DHCP_INFINITE_TIME ((dhcp_time_secs_t)-1) 103*5e3eaea3SApple OSS Distributions 104*5e3eaea3SApple OSS Distributions #define DHCP_FLAGS_BROADCAST ((u_int16_t)0x8000) 105*5e3eaea3SApple OSS Distributions 106*5e3eaea3SApple OSS Distributions #endif /* _NETINET_DHCP_H */ 107