X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/d52fe63fc81f7e44faaae711812a211a78434976..9bccf70c0258c7cac2dcb80011b2a964d884c552:/bsd/netinet/dhcp.h diff --git a/bsd/netinet/dhcp.h b/bsd/netinet/dhcp.h new file mode 100644 index 000000000..6ce2c61c7 --- /dev/null +++ b/bsd/netinet/dhcp.h @@ -0,0 +1,86 @@ + +#ifndef _NETINET_DHCP_H +#define _NETINET_DHCP_H +#include + +/* + * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * The contents of this file constitute Original Code as defined in and + * are subject to the Apple Public Source License Version 1.1 (the + * "License"). You may not use this file except in compliance with the + * License. Please obtain a copy of the License at + * http://www.apple.com/publicsource and read it before using this file. + * + * This Original Code and all software distributed under the License are + * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the + * License for the specific language governing rights and limitations + * under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ +/* + * dhcp.h + * - definitions for DHCP (as specified in RFC2132) + */ +#include +#include +#include +#include +#include + +struct dhcp { + u_char dp_op; /* packet opcode type */ + u_char dp_htype; /* hardware addr type */ + u_char dp_hlen; /* hardware addr length */ + u_char dp_hops; /* gateway hops */ + u_int32_t dp_xid; /* transaction ID */ + u_int16_t dp_secs; /* seconds since boot began */ + u_int16_t dp_flags; /* flags */ + struct in_addr dp_ciaddr; /* client IP address */ + struct in_addr dp_yiaddr; /* 'your' IP address */ + struct in_addr dp_siaddr; /* server IP address */ + struct in_addr dp_giaddr; /* gateway IP address */ + u_char dp_chaddr[16]; /* client hardware address */ + u_char dp_sname[64]; /* server host name */ + u_char dp_file[128]; /* boot file name */ + u_char dp_options[0]; /* variable-length options field */ +}; + +struct dhcp_packet { + struct ip ip; + struct udphdr udp; + struct dhcp dhcp; +}; + +#define DHCP_PACKET_OPTIONS_MIN 312 +#define DHCP_PACKET_MIN (sizeof(struct dhcp) + DHCP_PACKET_OPTIONS_MIN) + +/* dhcp message types */ +#define DHCPDISCOVER 1 +#define DHCPOFFER 2 +#define DHCPREQUEST 3 +#define DHCPDECLINE 4 +#define DHCPACK 5 +#define DHCPNAK 6 +#define DHCPRELEASE 7 +#define DHCPINFORM 8 + +typedef int32_t dhcp_time_secs_t; /* absolute time */ +typedef int32_t dhcp_lease_t; /* relative time */ +#define dhcp_time_hton htonl +#define dhcp_time_ntoh ntohl +#define dhcp_lease_hton htonl +#define dhcp_lease_ntoh ntohl + +#define DHCP_INFINITE_LEASE ((dhcp_lease_t)-1) +#define DHCP_INFINITE_TIME ((dhcp_time_secs_t)-1) + +#define DHCP_FLAGS_BROADCAST ((u_short)0x0001) + +#endif _NETINET_DHCP_H