13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++
23eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3f57387d54bd8f2c0261834b2ad16155f1db63291hhtianCopyright (c) 2004, Intel Corporation. All rights reserved.<BR>
4f57387d54bd8f2c0261834b2ad16155f1db63291hhtianThis program and the accompanying materials
53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangare licensed and made available under the terms and conditions of the BSD License
63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangwhich accompanies this distribution.  The full text of the license may be found at
73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanghttp://opensource.org/licenses/bsd-license.php
83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangModule Name:
133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  PxeDhcp4.h
143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangAbstract:
163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI PXE DHCPv4 protocol definition
173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/
193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#ifndef _PXEDHCP4_H_
213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define _PXEDHCP4_H_
223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// PXE DHCPv4 GUID definition
273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_PXE_DHCP4_PROTOCOL_GUID \
307ccf38a33e1e227131c170a621d183b3bacef148qhuang  { 0x03c4e624, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x29, 0x3f, 0xc1, 0x4d} }
313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Interface definition
353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_FORWARD_DECLARATION (EFI_PXE_DHCP4_PROTOCOL);
383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Descriptions of the DHCP version 4 header and options can be found
423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// in RFC-2131 and RFC-2132 at www.ietf.org
433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack(1)
463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 op;
493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define BOOTP_REQUEST   1
503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define BOOTP_REPLY   2
513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 htype;
533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 hlen;
553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 hops;
573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32 xid;
593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT16 secs;
613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_INITIAL_SECONDS 4
623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT16 flags;
643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_BROADCAST_FLAG  0x8000
653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32 ciaddr;
673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32 yiaddr;
693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32 siaddr;
713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32 giaddr;
733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 chaddr[16];
753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 sname[64];
773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 fname[128];
793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// This is the minimum option length as specified in RFC-2131.
823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// The packet must be padded out this far with DHCP4_PAD.
833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// DHCPv4 packets are usually 576 bytes in length.  This length
843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// includes the IPv4 and UDPv4 headers but not the media header.
853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Note: Not all DHCP relay agents will forward DHCPv4 packets
863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// if they are less than 384 bytes or exceed 576 bytes.  Even if
873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// the underlying hardware can handle smaller and larger packets,
883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// many older relay agents will not accept them.
893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32 magik;
913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MAGIK_NUMBER  0x63825363
923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 options[308];
943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} DHCP4_HEADER;
963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack()
973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// DHCPv4 packet definition.  Room for 576 bytes including IP and
1013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// UDP header.
1023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MAX_PACKET_SIZE     576
1053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_UDP_HEADER_SIZE     8
1063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_IP_HEADER_SIZE      20
1073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack(1)
1093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef union _DHCP4_PACKET {
1103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT32 _force_data_alignment;
1113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 raw[1500];
1133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  DHCP4_HEADER dhcp4;
1153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} DHCP4_PACKET;
1163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack()
1173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_SERVER_PORT 67
1193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_CLIENT_PORT 68
1203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// DHCPv4 and PXE option numbers.
1243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
1253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_PAD                             0
1273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_END                             255
1283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_SUBNET_MASK                     1
1293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_TIME_OFFSET                     2
1303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_ROUTER_LIST                     3
1313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_TIME_SERVERS                    4
1323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NAME_SERVERS                    5
1333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_DNS_SERVERS                     6
1343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_LOG_SERVERS                     7
1353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_COOKIE_SERVERS                  8
1363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_LPR_SREVERS                     9
1373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_IMPRESS_SERVERS                 10
1383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_RESOURCE_LOCATION_SERVERS       11
1393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_HOST_NAME                       12
1403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_BOOT_FILE_SIZE                  13
1413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_DUMP_FILE                       14
1423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_DOMAIN_NAME                     15
1433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_SWAP_SERVER                     16
1443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_ROOT_PATH                       17
1453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_EXTENSION_PATH                  18
1463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_IP_FORWARDING                   19
1473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NON_LOCAL_SOURCE_ROUTE          20
1483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_POLICY_FILTER                   21
1493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MAX_DATAGRAM_SIZE               22
1503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_DEFAULT_TTL                     23
1513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MTU_AGING_TIMEOUT               24
1523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MTU_SIZES                       25
1533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MTU_TO_USE                      26
1543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_ALL_SUBNETS_LOCAL               27
1553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_BROADCAST_ADDRESS               28
1563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_PERFORM_MASK_DISCOVERY          29
1573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_RESPOND_TO_MASK_REQ             30
1583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_PERFORM_ROUTER_DISCOVERY        31
1593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_ROUTER_SOLICIT_ADDRESS          32
1603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_STATIC_ROUTER_LIST              33
1613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_USE_ARP_TRAILERS                34
1623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_ARP_CACHE_TIMEOUT               35
1633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_ETHERNET_ENCAPSULATION          36
1643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_TCP_DEFAULT_TTL                 37
1653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_TCP_KEEP_ALIVE_INT              38
1663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_KEEP_ALIVE_GARBAGE              39
1673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NIS_DOMAIN_NAME                 40
1683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NIS_SERVERS                     41
1693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NTP_SERVERS                     42
1703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_VENDOR_SPECIFIC                 43
1713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_MTFTP_IP                         1
1723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_MTFTP_CPORT                      2
1733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_MTFTP_SPORT                      3
1743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_MTFTP_TMOUT                      4
1753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_MTFTP_DELAY                      5
1763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_DISCOVERY_CONTROL                6
1773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#  define PXE_DISABLE_BROADCAST_DISCOVERY     0x01
1783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#  define PXE_DISABLE_MULTICAST_DISCOVERY     0x02
1793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#  define PXE_ACCEPT_ONLY_PXE_BOOT_SERVERS    0x04
1803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#  define PXE_DO_NOT_PROMPT                   0x08
1813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_DISCOVERY_MCAST_ADDR             7
1823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_BOOT_SERVERS                     8
1833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_BOOT_MENU                        9
1843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_BOOT_PROMPT                      10
1853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_MCAST_ADDRS_ALLOC                11
1863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_CREDENTIAL_TYPES                 12
1873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define PXE_BOOT_ITEM                        71
1883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NBNS_SERVERS                    44
1893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NBDD_SERVERS                    45
1903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NETBIOS_NODE_TYPE               46
1913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NETBIOS_SCOPE                   47
1923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_XWINDOW_SYSTEM_FONT_SERVERS     48
1933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_XWINDOW_SYSTEM_DISPLAY_MANAGERS 49
1943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_REQUESTED_IP_ADDRESS            50
1953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_LEASE_TIME                      51
1963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_OPTION_OVERLOAD                 52
1973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_OVERLOAD_FNAME                 1
1983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_OVERLOAD_SNAME                 2
1993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_OVERLOAD_FNAME_AND_SNAME       3
2003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MESSAGE_TYPE                    53
2013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_MESSAGE_TYPE_DISCOVER          1
2023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_MESSAGE_TYPE_OFFER             2
2033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_MESSAGE_TYPE_REQUEST           3
2043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_MESSAGE_TYPE_DECLINE           4
2053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_MESSAGE_TYPE_ACK               5
2063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_MESSAGE_TYPE_NAK               6
2073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_MESSAGE_TYPE_RELEASE           7
2083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_MESSAGE_TYPE_INFORM            8
2093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_SERVER_IDENTIFIER               54
2103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_PARAMETER_REQUEST_LIST          55
2113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_ERROR_MESSAGE                   56
2123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MAX_MESSAGE_SIZE                57
2133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# define DHCP4_DEFAULT_MAX_MESSAGE_SIZE       576
2143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_RENEWAL_TIME                    58
2153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_REBINDING_TIME                  59
2163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_CLASS_IDENTIFIER                60
2173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_CLIENT_IDENTIFIER               61
2183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NISPLUS_DOMAIN_NAME             64
2193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NISPLUS_SERVERS                 65
2203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_TFTP_SERVER_NAME                66
2213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_BOOTFILE                        67
2223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MOBILE_IP_HOME_AGENTS           68
2233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_SMPT_SERVERS                    69
2243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_POP3_SERVERS                    70
2253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NNTP_SERVERS                    71
2263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_WWW_SERVERS                     72
2273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_FINGER_SERVERS                  73
2283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_IRC_SERVERS                     74
2293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_STREET_TALK_SERVERS             75
2303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_STREET_TALK_DIR_ASSIST_SERVERS  76
2313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NDS_SERVERS                     85
2323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NDS_TREE_NAME                   86
2333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NDS_CONTEXT                     87
2343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_SYSTEM_ARCHITECTURE             93
2353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_NETWORK_ARCHITECTURE            94
2363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_PLATFORM_ID                     97
2373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// DHCP4 option format.
2413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack(1)
2443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
2453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 op;
2463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 len;
2473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT8 data[1];
2483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} DHCP4_OP;
2493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack()
2503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct {
2543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  DHCP4_PACKET Discover;
2553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  DHCP4_PACKET Offer;
2563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  DHCP4_PACKET Request;
2573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  DHCP4_PACKET AckNak;
2583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  BOOLEAN SetupCompleted;
2593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  BOOLEAN InitCompleted;
2603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  BOOLEAN SelectCompleted;
2613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  BOOLEAN IsBootp;
2623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  BOOLEAN IsAck;
2633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_PXE_DHCP4_DATA;
2643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
2673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
2683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_PXE_DHCP4_RUN) (
2693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_PXE_DHCP4_PROTOCOL *This,
2703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN OPTIONAL UINTN         OpLen,
2713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN OPTIONAL VOID          *OpList
2723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
2733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
2763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
2773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_PXE_DHCP4_SETUP) (
2783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_PXE_DHCP4_PROTOCOL          *This,
2793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN OPTIONAL EFI_PXE_DHCP4_DATA     * NewData
2803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
2813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
2843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
2853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_PXE_DHCP4_INIT) (
2863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_PXE_DHCP4_PROTOCOL *This,
2873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN UINTN                  SecondsTimeout,
2883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  OUT UINTN                 *Offers,
2893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  OUT DHCP4_PACKET          **OfferList
2903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
2913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MIN_SECONDS   1
2933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define DHCP4_MAX_SECONDS   60
2943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
2973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
2983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_PXE_DHCP4_SELECT) (
2993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_PXE_DHCP4_PROTOCOL *This,
3003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN UINTN                  SecondsTimeout,
3013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN DHCP4_PACKET           * offer
3023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
3033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
3063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
3073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_PXE_DHCP4_RENEW) (
3083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_PXE_DHCP4_PROTOCOL *This,
3093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINTN                     seconds_timeout
3103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
3113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
3143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
3153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_PXE_DHCP4_REBIND) (
3163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_PXE_DHCP4_PROTOCOL *This,
3173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINTN                     seconds_timeout
3183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
3193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef
3223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS
3233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_PXE_DHCP4_RELEASE) (
3243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  IN EFI_PXE_DHCP4_PROTOCOL * This
3253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  );
3263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_PXE_DHCP4_PROTOCOL_REVISION    0x00010000
3303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3319c092841829b153eef01007ddb5df50e87f9110fjljustenstruct _EFI_PXE_DHCP4_PROTOCOL {
3323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  UINT64 Revision;
3333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PXE_DHCP4_RUN Run;
3343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PXE_DHCP4_SETUP Setup;
3353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PXE_DHCP4_INIT Init;
3363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PXE_DHCP4_SELECT Select;
3373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PXE_DHCP4_RENEW Renew;
3383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PXE_DHCP4_REBIND Rebind;
3393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PXE_DHCP4_RELEASE Release;
3403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  EFI_PXE_DHCP4_DATA *Data;
3419c092841829b153eef01007ddb5df50e87f9110fjljusten};
3423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
3463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiPxeDhcp4ProtocolGuid;
3483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
3493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#endif /* _PXEDHCP4_H_ */
3503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* EOF - PxeDhcp4.h */
351