/*++

Copyright (c) 2006, Intel Corporation                                                         
All rights reserved. This program and the accompanying materials                          
are licensed and made available under the terms and conditions of the BSD License         
which accompanies this distribution.  The full text of the license may be found at        
http://opensource.org/licenses/bsd-license.php                                            
                                                                                          
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             

Module Name:
  PxeDhcp4.h

Abstract:
  EFI PXE DHCPv4 protocol definition

--*/

#ifndef _PXEDHCP4_H_
#define _PXEDHCP4_H_


/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//
// PXE DHCPv4 GUID definition
//

#define EFI_PXE_DHCP4_PROTOCOL_GUID \
  { 0x03c4e624, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x29, 0x3f, 0xc1, 0x4d } }

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//
// Interface definition
//

typedef struct _EFI_PXE_DHCP4_PROTOCOL EFI_PXE_DHCP4_PROTOCOL;

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//
// Descriptions of the DHCP version 4 header and options can be found
// in RFC-2131 and RFC-2132 at www.ietf.org
//

#pragma pack(1)
typedef struct {

  UINT8 op;
#define BOOTP_REQUEST   1
#define BOOTP_REPLY   2

  UINT8 htype;

  UINT8 hlen;

  UINT8 hops;

  UINT32 xid;

  UINT16 secs;
#define DHCP4_INITIAL_SECONDS 4

  UINT16 flags;
#define DHCP4_BROADCAST_FLAG  0x8000

  UINT32 ciaddr;

  UINT32 yiaddr;

  UINT32 siaddr;

  UINT32 giaddr;

  UINT8 chaddr[16];

  UINT8 sname[64];

  UINT8 fname[128];

//
// This is the minimum option length as specified in RFC-2131.
// The packet must be padded out this far with DHCP4_PAD.
// DHCPv4 packets are usually 576 bytes in length.  This length
// includes the IPv4 and UDPv4 headers but not the media header.
// Note: Not all DHCP relay agents will forward DHCPv4 packets
// if they are less than 384 bytes or exceed 576 bytes.  Even if
// the underlying hardware can handle smaller and larger packets,
// many older relay agents will not accept them.
//
  UINT32 magik;
#define DHCP4_MAGIK_NUMBER  0x63825363

  UINT8 options[308];

} DHCP4_HEADER;
#pragma pack()

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//
// DHCPv4 packet definition.  Room for 576 bytes including IP and
// UDP header.
//

#define DHCP4_MAX_PACKET_SIZE     576
#define DHCP4_UDP_HEADER_SIZE     8
#define DHCP4_IP_HEADER_SIZE      20

#pragma pack(1)
typedef union _DHCP4_PACKET {
  UINT32 _force_data_alignment;

  UINT8 raw[1500];

  DHCP4_HEADER dhcp4;
} DHCP4_PACKET;
#pragma pack()

#define DHCP4_SERVER_PORT 67
#define DHCP4_CLIENT_PORT 68

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//
// DHCPv4 and PXE option numbers.
//

#define DHCP4_PAD                             0
#define DHCP4_END                             255
#define DHCP4_SUBNET_MASK                     1
#define DHCP4_TIME_OFFSET                     2
#define DHCP4_ROUTER_LIST                     3
#define DHCP4_TIME_SERVERS                    4
#define DHCP4_NAME_SERVERS                    5
#define DHCP4_DNS_SERVERS                     6
#define DHCP4_LOG_SERVERS                     7
#define DHCP4_COOKIE_SERVERS                  8
#define DHCP4_LPR_SREVERS                     9
#define DHCP4_IMPRESS_SERVERS                 10
#define DHCP4_RESOURCE_LOCATION_SERVERS       11
#define DHCP4_HOST_NAME                       12
#define DHCP4_BOOT_FILE_SIZE                  13
#define DHCP4_DUMP_FILE                       14
#define DHCP4_DOMAIN_NAME                     15
#define DHCP4_SWAP_SERVER                     16
#define DHCP4_ROOT_PATH                       17
#define DHCP4_EXTENSION_PATH                  18
#define DHCP4_IP_FORWARDING                   19
#define DHCP4_NON_LOCAL_SOURCE_ROUTE          20
#define DHCP4_POLICY_FILTER                   21
#define DHCP4_MAX_DATAGRAM_SIZE               22
#define DHCP4_DEFAULT_TTL                     23
#define DHCP4_MTU_AGING_TIMEOUT               24
#define DHCP4_MTU_SIZES                       25
#define DHCP4_MTU_TO_USE                      26
#define DHCP4_ALL_SUBNETS_LOCAL               27
#define DHCP4_BROADCAST_ADDRESS               28
#define DHCP4_PERFORM_MASK_DISCOVERY          29
#define DHCP4_RESPOND_TO_MASK_REQ             30
#define DHCP4_PERFORM_ROUTER_DISCOVERY        31
#define DHCP4_ROUTER_SOLICIT_ADDRESS          32
#define DHCP4_STATIC_ROUTER_LIST              33
#define DHCP4_USE_ARP_TRAILERS                34
#define DHCP4_ARP_CACHE_TIMEOUT               35
#define DHCP4_ETHERNET_ENCAPSULATION          36
#define DHCP4_TCP_DEFAULT_TTL                 37
#define DHCP4_TCP_KEEP_ALIVE_INT              38
#define DHCP4_KEEP_ALIVE_GARBAGE              39
#define DHCP4_NIS_DOMAIN_NAME                 40
#define DHCP4_NIS_SERVERS                     41
#define DHCP4_NTP_SERVERS                     42
#define DHCP4_VENDOR_SPECIFIC                 43
# define PXE_MTFTP_IP                         1
# define PXE_MTFTP_CPORT                      2
# define PXE_MTFTP_SPORT                      3
# define PXE_MTFTP_TMOUT                      4
# define PXE_MTFTP_DELAY                      5
# define PXE_DISCOVERY_CONTROL                6
#  define PXE_DISABLE_BROADCAST_DISCOVERY     0x01
#  define PXE_DISABLE_MULTICAST_DISCOVERY     0x02
#  define PXE_ACCEPT_ONLY_PXE_BOOT_SERVERS    0x04
#  define PXE_DO_NOT_PROMPT                   0x08
# define PXE_DISCOVERY_MCAST_ADDR             7
# define PXE_BOOT_SERVERS                     8
# define PXE_BOOT_MENU                        9
# define PXE_BOOT_PROMPT                      10
# define PXE_MCAST_ADDRS_ALLOC                11
# define PXE_CREDENTIAL_TYPES                 12
# define PXE_BOOT_ITEM                        71
#define DHCP4_NBNS_SERVERS                    44
#define DHCP4_NBDD_SERVERS                    45
#define DHCP4_NETBIOS_NODE_TYPE               46
#define DHCP4_NETBIOS_SCOPE                   47
#define DHCP4_XWINDOW_SYSTEM_FONT_SERVERS     48
#define DHCP4_XWINDOW_SYSTEM_DISPLAY_MANAGERS 49
#define DHCP4_REQUESTED_IP_ADDRESS            50
#define DHCP4_LEASE_TIME                      51
#define DHCP4_OPTION_OVERLOAD                 52
# define DHCP4_OVERLOAD_FNAME                 1
# define DHCP4_OVERLOAD_SNAME                 2
# define DHCP4_OVERLOAD_FNAME_AND_SNAME       3
#define DHCP4_MESSAGE_TYPE                    53
# define DHCP4_MESSAGE_TYPE_DISCOVER          1
# define DHCP4_MESSAGE_TYPE_OFFER             2
# define DHCP4_MESSAGE_TYPE_REQUEST           3
# define DHCP4_MESSAGE_TYPE_DECLINE           4
# define DHCP4_MESSAGE_TYPE_ACK               5
# define DHCP4_MESSAGE_TYPE_NAK               6
# define DHCP4_MESSAGE_TYPE_RELEASE           7
# define DHCP4_MESSAGE_TYPE_INFORM            8
#define DHCP4_SERVER_IDENTIFIER               54
#define DHCP4_PARAMETER_REQUEST_LIST          55
#define DHCP4_ERROR_MESSAGE                   56
#define DHCP4_MAX_MESSAGE_SIZE                57
# define DHCP4_DEFAULT_MAX_MESSAGE_SIZE       576
#define DHCP4_RENEWAL_TIME                    58
#define DHCP4_REBINDING_TIME                  59
#define DHCP4_CLASS_IDENTIFIER                60
#define DHCP4_CLIENT_IDENTIFIER               61
#define DHCP4_NISPLUS_DOMAIN_NAME             64
#define DHCP4_NISPLUS_SERVERS                 65
#define DHCP4_TFTP_SERVER_NAME                66
#define DHCP4_BOOTFILE                        67
#define DHCP4_MOBILE_IP_HOME_AGENTS           68
#define DHCP4_SMPT_SERVERS                    69
#define DHCP4_POP3_SERVERS                    70
#define DHCP4_NNTP_SERVERS                    71
#define DHCP4_WWW_SERVERS                     72
#define DHCP4_FINGER_SERVERS                  73
#define DHCP4_IRC_SERVERS                     74
#define DHCP4_STREET_TALK_SERVERS             75
#define DHCP4_STREET_TALK_DIR_ASSIST_SERVERS  76
#define DHCP4_NDS_SERVERS                     85
#define DHCP4_NDS_TREE_NAME                   86
#define DHCP4_NDS_CONTEXT                     87
#define DHCP4_SYSTEM_ARCHITECTURE             93
#define DHCP4_NETWORK_ARCHITECTURE            94
#define DHCP4_PLATFORM_ID                     97

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//
// DHCP4 option format.
//

#pragma pack(1)
typedef struct {
  UINT8 op;
  UINT8 len;
  UINT8 data[1];
} DHCP4_OP;
#pragma pack()

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

typedef struct {
  DHCP4_PACKET Discover;
  DHCP4_PACKET Offer;
  DHCP4_PACKET Request;
  DHCP4_PACKET AckNak;
  BOOLEAN SetupCompleted;
  BOOLEAN InitCompleted;
  BOOLEAN SelectCompleted;
  BOOLEAN IsBootp;
  BOOLEAN IsAck;
} EFI_PXE_DHCP4_DATA;

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
typedef
EFI_STATUS
(EFIAPI *EFI_PXE_DHCP4_RUN) (
  IN EFI_PXE_DHCP4_PROTOCOL *This,
  IN OPTIONAL UINTN         OpLen,
  IN OPTIONAL VOID          *OpList
  );

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
typedef
EFI_STATUS
(EFIAPI *EFI_PXE_DHCP4_SETUP) (
  IN EFI_PXE_DHCP4_PROTOCOL          *This,
  IN OPTIONAL EFI_PXE_DHCP4_DATA     * NewData
  );

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
typedef
EFI_STATUS
(EFIAPI *EFI_PXE_DHCP4_INIT) (
  IN EFI_PXE_DHCP4_PROTOCOL *This,
  IN UINTN                  SecondsTimeout,
  OUT UINTN                 *Offers,
  OUT DHCP4_PACKET          **OfferList
  );

#define DHCP4_MIN_SECONDS   1
#define DHCP4_MAX_SECONDS   60

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
typedef
EFI_STATUS
(EFIAPI *EFI_PXE_DHCP4_SELECT) (
  IN EFI_PXE_DHCP4_PROTOCOL *This,
  IN UINTN                  SecondsTimeout,
  IN DHCP4_PACKET           * offer
  );

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
typedef
EFI_STATUS
(EFIAPI *EFI_PXE_DHCP4_RENEW) (
  IN EFI_PXE_DHCP4_PROTOCOL *This,
  UINTN                     seconds_timeout
  );

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
typedef
EFI_STATUS
(EFIAPI *EFI_PXE_DHCP4_REBIND) (
  IN EFI_PXE_DHCP4_PROTOCOL *This,
  UINTN                     seconds_timeout
  );

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
typedef
EFI_STATUS
(EFIAPI *EFI_PXE_DHCP4_RELEASE) (
  IN EFI_PXE_DHCP4_PROTOCOL * This
  );

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

#define EFI_PXE_DHCP4_PROTOCOL_REVISION    0x00010000

struct _EFI_PXE_DHCP4_PROTOCOL {
  UINT64 Revision;
  EFI_PXE_DHCP4_RUN Run;
  EFI_PXE_DHCP4_SETUP Setup;
  EFI_PXE_DHCP4_INIT Init;
  EFI_PXE_DHCP4_SELECT Select;
  EFI_PXE_DHCP4_RENEW Renew;
  EFI_PXE_DHCP4_REBIND Rebind;
  EFI_PXE_DHCP4_RELEASE Release;
  EFI_PXE_DHCP4_DATA *Data;
};

//
//
//

extern EFI_GUID gEfiPxeDhcp4ProtocolGuid;

#endif /* _PXEDHCP4_H_ */
/* EOF - PxeDhcp4.h */
