/** @file
  This file contains the DHCPv4 and DHCPv6 option definitions and other configuration.
  They are used to carry additional information and parameters in DHCP messages.

  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
  Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
  Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef _DHCP_H_
#define _DHCP_H_

///
/// Dynamic Host Configuration Protocol for IPv4 (DHCPv4)
///
/// Dhcpv4 Options, definitions from RFC 2132
///
#define DHCP4_TAG_PAD              0      /// Pad Option
#define DHCP4_TAG_EOP              255    /// End Option
#define DHCP4_TAG_NETMASK          1      /// Subnet Mask
#define DHCP4_TAG_TIME_OFFSET      2      /// Time Offset from UTC
#define DHCP4_TAG_ROUTER           3      /// Router option,
#define DHCP4_TAG_TIME_SERVER      4      /// Time Server
#define DHCP4_TAG_NAME_SERVER      5      /// Name Server
#define DHCP4_TAG_DNS_SERVER       6      /// Domain Name Server
#define DHCP4_TAG_LOG_SERVER       7      /// Log Server
#define DHCP4_TAG_COOKIE_SERVER    8      /// Cookie Server
#define DHCP4_TAG_LPR_SERVER       9      /// LPR Print Server
#define DHCP4_TAG_IMPRESS_SERVER   10     /// Impress Server
#define DHCP4_TAG_RL_SERVER        11     /// Resource Location Server
#define DHCP4_TAG_HOSTNAME         12     /// Host Name
#define DHCP4_TAG_BOOTFILE_LEN     13     /// Boot File Size
#define DHCP4_TAG_DUMP             14     /// Merit Dump File
#define DHCP4_TAG_DOMAINNAME       15     /// Domain Name
#define DHCP4_TAG_SWAP_SERVER      16     /// Swap Server
#define DHCP4_TAG_ROOTPATH         17     /// Root path
#define DHCP4_TAG_EXTEND_PATH      18     /// Extensions Path
#define DHCP4_TAG_IPFORWARD        19     /// IP Forwarding Enable/Disable
#define DHCP4_TAG_NONLOCAL_SRR     20     /// on-Local Source Routing Enable/Disable
#define DHCP4_TAG_POLICY_SRR       21     /// Policy Filter
#define DHCP4_TAG_EMTU             22     /// Maximum Datagram Reassembly Size
#define DHCP4_TAG_TTL              23     /// Default IP Time-to-live
#define DHCP4_TAG_PATHMTU_AGE      24     /// Path MTU Aging Timeout
#define DHCP4_TAG_PATHMTU_PLATEAU  25     /// Path MTU Plateau Table
#define DHCP4_TAG_IFMTU            26     /// Interface MTU
#define DHCP4_TAG_SUBNET_LOCAL     27     /// All Subnets are Local
#define DHCP4_TAG_BROADCAST        28     /// Broadcast Address
#define DHCP4_TAG_DISCOVER_MASK    29     /// Perform Mask Discovery
#define DHCP4_TAG_SUPPLY_MASK      30     /// Mask Supplier
#define DHCP4_TAG_DISCOVER_ROUTE   31     /// Perform Router Discovery
#define DHCP4_TAG_ROUTER_SOLICIT   32     /// Router Solicitation Address
#define DHCP4_TAG_STATIC_ROUTE     33     /// Static Route
#define DHCP4_TAG_TRAILER          34     /// Trailer Encapsulation
#define DHCP4_TAG_ARPAGE           35     /// ARP Cache Timeout
#define DHCP4_TAG_ETHER_ENCAP      36     /// Ethernet Encapsulation
#define DHCP4_TAG_TCP_TTL          37     /// TCP Default TTL
#define DHCP4_TAG_KEEP_INTERVAL    38     /// TCP Keepalive Interval
#define DHCP4_TAG_KEEP_GARBAGE     39     /// TCP Keepalive Garbage
#define DHCP4_TAG_NIS_DOMAIN       40     /// Network Information Service Domain
#define DHCP4_TAG_NIS_SERVER       41     /// Network Information Servers
#define DHCP4_TAG_NTP_SERVER       42     /// Network Time Protocol Servers
#define DHCP4_TAG_VENDOR           43     /// Vendor Specific Information
#define DHCP4_TAG_NBNS             44     /// NetBIOS over TCP/IP Name Server
#define DHCP4_TAG_NBDD             45     /// NetBIOS Datagram Distribution Server
#define DHCP4_TAG_NBTYPE           46     /// NetBIOS over TCP/IP Node Type
#define DHCP4_TAG_NBSCOPE          47     /// NetBIOS over TCP/IP Scope
#define DHCP4_TAG_XFONT            48     /// X Window System Font Server
#define DHCP4_TAG_XDM              49     /// X Window System Display Manager
#define DHCP4_TAG_REQUEST_IP       50     /// Requested IP Address
#define DHCP4_TAG_LEASE            51     /// IP Address Lease Time
#define DHCP4_TAG_OVERLOAD         52     /// Option Overload
#define DHCP4_TAG_MSG_TYPE         53     /// DHCP Message Type
#define DHCP4_TAG_SERVER_ID        54     /// Server Identifier
#define DHCP4_TAG_PARA_LIST        55     /// Parameter Request List
#define DHCP4_TAG_MESSAGE          56     /// Message
#define DHCP4_TAG_MAXMSG           57     /// Maximum DHCP Message Size
#define DHCP4_TAG_T1               58     /// Renewal (T1) Time Value
#define DHCP4_TAG_T2               59     /// Rebinding (T2) Time Value
#define DHCP4_TAG_VENDOR_CLASS_ID  60     /// Vendor class identifier
#define DHCP4_TAG_CLIENT_ID        61     /// Client-identifier
#define DHCP4_TAG_NISPLUS          64     /// Network Information Service+ Domain
#define DHCP4_TAG_NISPLUS_SERVER   65     /// Network Information Service+ Servers
#define DHCP4_TAG_TFTP             66     /// TFTP server name
#define DHCP4_TAG_BOOTFILE         67     /// Bootfile name
#define DHCP4_TAG_MOBILEIP         68     /// Mobile IP Home Agent
#define DHCP4_TAG_SMTP             69     /// Simple Mail Transport Protocol Server
#define DHCP4_TAG_POP3             70     /// Post Office Protocol (POP3) Server
#define DHCP4_TAG_NNTP             71     /// Network News Transport Protocol Server
#define DHCP4_TAG_WWW              72     /// Default World Wide Web (WWW) Server
#define DHCP4_TAG_FINGER           73     /// Default Finger Server
#define DHCP4_TAG_IRC              74     /// Default Internet Relay Chat (IRC) Server
#define DHCP4_TAG_STTALK           75     /// StreetTalk Server
#define DHCP4_TAG_STDA             76     /// StreetTalk Directory Assistance Server
#define DHCP4_TAG_USER_CLASS_ID    77     /// User class identifier
#define DHCP4_TAG_ARCH             93     /// Client System Architecture Type, RFC 4578
#define DHCP4_TAG_UNDI             94     /// Client Network Interface Identifier, RFC 4578
#define DHCP4_TAG_UUID             97     /// Client Machine Identifier, RFC 4578
#define DHCP4_TAG_CLASSLESS_ROUTE  121    /// Classless Route

///
/// Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
///
/// Enumeration of Dhcp6 message type, refers to section-5.3 of rfc-3315.
///
typedef enum {
  Dhcp6MsgSolicit     = 1,
  Dhcp6MsgAdvertise   = 2,
  Dhcp6MsgRequest     = 3,
  Dhcp6MsgConfirm     = 4,
  Dhcp6MsgRenew       = 5,
  Dhcp6MsgRebind      = 6,
  Dhcp6MsgReply       = 7,
  Dhcp6MsgRelease     = 8,
  Dhcp6MsgDecline     = 9,
  Dhcp6MsgReconfigure = 10,
  Dhcp6MsgInfoRequest = 11
} DHCP6_MSG_TYPE;

///
/// Enumeration of option code in Dhcp6 packet, refers to section-24.3 of rfc-3315.
///
typedef enum {
  Dhcp6OptClientId          = 1,
  Dhcp6OptServerId          = 2,
  Dhcp6OptIana              = 3,
  Dhcp6OptIata              = 4,
  Dhcp6OptIaAddr            = 5,
  Dhcp6OptRequestOption     = 6,
  Dhcp6OptPreference        = 7,
  Dhcp6OptElapsedTime       = 8,
  Dhcp6OptReplayMessage     = 9,
  Dhcp6OptAuthentication    = 11,
  Dhcp6OptServerUnicast     = 12,
  Dhcp6OptStatusCode        = 13,
  Dhcp6OptRapidCommit       = 14,
  Dhcp6OptUserClass         = 15,
  Dhcp6OptVendorClass       = 16,
  Dhcp6OptVendorInfo        = 17,
  Dhcp6OptInterfaceId       = 18,
  Dhcp6OptReconfigMessage   = 19,
  Dhcp6OptReconfigureAccept = 20
} DHCP6_OPT_CODE;

///
/// Enumeration of status code recorded by IANA, refers to section-24.4 of rfc-3315.
///
typedef enum {
  Dhcp6StsSuccess      = 0,
  Dhcp6StsUnspecFail   = 1,
  Dhcp6StsNoAddrsAvail = 2,
  Dhcp6StsNoBinding    = 3,
  Dhcp6StsNotOnLink    = 4,
  Dhcp6StsUseMulticast = 5
} DHCP6_STS_CODE;

///
/// Enumeration of Duid type recorded by IANA, refers to section-24.5 of rfc-3315.
///
typedef enum {
  Dhcp6DuidTypeLlt  = 1,
  Dhcp6DuidTypeEn   = 2,
  Dhcp6DuidTypeLl   = 3,
  Dhcp6DuidTypeUuid = 4
} DHCP6_DUID_TYPE;

/// Transmission and Retransmission Parameters
/// This section presents a table of values used to describe the message
/// transmission behavior of clients and servers.
///
/// Transmit parameters of solicit message, refers to section-5.5 of rfc-3315.
///
#define DHCP6_SOL_MAX_DELAY  1
#define DHCP6_SOL_IRT        1
#define DHCP6_SOL_MRC        0
#define DHCP6_SOL_MRT        120
#define DHCP6_SOL_MRD        0
///
/// Transmit parameters of request message, refers to section-5.5 of rfc-3315.
///
#define DHCP6_REQ_IRT  1
#define DHCP6_REQ_MRC  10
#define DHCP6_REQ_MRT  30
#define DHCP6_REQ_MRD  0
///
/// Transmit parameters of confirm message, refers to section-5.5 of rfc-3315.
///
#define DHCP6_CNF_MAX_DELAY  1
#define DHCP6_CNF_IRT        1
#define DHCP6_CNF_MRC        0
#define DHCP6_CNF_MRT        4
#define DHCP6_CNF_MRD        10
///
/// Transmit parameters of renew message, refers to section-5.5 of rfc-3315.
///
#define DHCP6_REN_IRT  10
#define DHCP6_REN_MRC  0
#define DHCP6_REN_MRT  600
#define DHCP6_REN_MRD  0
///
/// Transmit parameters of rebind message, refers to section-5.5 of rfc-3315.
///
#define DHCP6_REB_IRT  10
#define DHCP6_REB_MRC  0
#define DHCP6_REB_MRT  600
#define DHCP6_REB_MRD  0
///
/// Transmit parameters of information request message, refers to section-5.5 of rfc-3315.
///
#define DHCP6_INF_MAX_DELAY  1
#define DHCP6_INF_IRT        1
#define DHCP6_INF_MRC        0
#define DHCP6_INF_MRT        120
#define DHCP6_INF_MRD        0
///
/// Transmit parameters of release message, refers to section-5.5 of rfc-3315.
///
#define DHCP6_REL_IRT  1
#define DHCP6_REL_MRC  5
#define DHCP6_REL_MRT  0
#define DHCP6_REL_MRD  0
///
/// Transmit parameters of decline message, refers to section-5.5 of rfc-3315.
///
#define DHCP6_DEC_IRT  1
#define DHCP6_DEC_MRC  5
#define DHCP6_DEC_MRT  0
#define DHCP6_DEC_MRD  0

////
//// DHCPv6 Options, definitions from RFC 3315,RFC 5970 and RFC 3646.
////
#define DHCP6_OPT_CLIENT_ID        1     /// Client Identifier Option
#define DHCP6_OPT_SERVER_ID        2     /// Server Identifier Option
#define DHCP6_OPT_IA_NA            3     /// The Identity Association for Non-temporary Addresses option
#define DHCP6_OPT_IA_TA            4     /// The Identity Association for the Temporary Addresses
#define DHCP6_OPT_IAADDR           5     /// IA Address option
#define DHCP6_OPT_ORO              6     /// Request option
#define DHCP6_OPT_PREFERENCE       7     /// Preference option
#define DHCP6_OPT_ELAPSED_TIME     8     /// Elapsed Time Option
#define DHCP6_OPT_REPLAY_MSG       9     /// Relay Message option
#define DHCP6_OPT_AUTH             11    /// Authentication option
#define DHCP6_OPT_UNICAST          12    /// Server Unicast Option
#define DHCP6_OPT_STATUS_CODE      13    /// Status Code Option
#define DHCP6_OPT_RAPID_COMMIT     14    /// Rapid Commit option
#define DHCP6_OPT_USER_CLASS       15    /// User Class option
#define DHCP6_OPT_VENDOR_CLASS     16    /// Vendor Class Option
#define DHCP6_OPT_VENDOR_OPTS      17    /// Vendor-specific Information Option
#define DHCP6_OPT_INTERFACE_ID     18    /// Interface-Id Option
#define DHCP6_OPT_RECONFIG_MSG     19    /// Reconfigure Message Option
#define DHCP6_OPT_RECONFIG_ACCEPT  20    /// Reconfigure Accept Option
#define DHCP6_OPT_DNS_SERVERS      23    /// DNS Configuration options, RFC 3646
#define DHCP6_OPT_BOOT_FILE_URL    59    /// Assigned by IANA, RFC 5970
#define DHCP6_OPT_BOOT_FILE_PARAM  60    /// Assigned by IANA, RFC 5970
#define DHCP6_OPT_ARCH             61    /// Assigned by IANA, RFC 5970
#define DHCP6_OPT_UNDI             62    /// Assigned by IANA, RFC 5970

///
/// Processor Architecture Types
/// These identifiers are defined by IANA:
/// https://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xhtml
///
#define PXE_CLIENT_ARCH_X86_BIOS     0x0000          /// x86 BIOS for PXE
#define PXE_CLIENT_ARCH_IPF          0x0002          /// Itanium for PXE
#define PXE_CLIENT_ARCH_IA32         0x0006          /// x86 uefi for PXE
#define PXE_CLIENT_ARCH_X64          0x0007          /// x64 uefi for PXE
#define PXE_CLIENT_ARCH_EBC          0x0009          /// EBC for PXE
#define PXE_CLIENT_ARCH_ARM          0x000A          /// Arm uefi 32 for PXE
#define PXE_CLIENT_ARCH_AARCH64      0x000B          /// Arm uefi 64 for PXE
#define PXE_CLIENT_ARCH_RISCV32      0x0019          /// RISC-V uefi 32 for PXE
#define PXE_CLIENT_ARCH_RISCV64      0x001B          /// RISC-V uefi 64 for PXE
#define PXE_CLIENT_ARCH_RISCV128     0x001D          /// RISC-V uefi 128 for PXE
#define PXE_CLIENT_ARCH_LOONGARCH32  0x0025          /// LoongArch uefi 32 for PXE
#define PXE_CLIENT_ARCH_LOONGARCH64  0x0027          /// LoongArch uefi 64 for PXE

#define HTTP_CLIENT_ARCH_IA32         0x000F          /// x86 uefi boot from http
#define HTTP_CLIENT_ARCH_X64          0x0010          /// x64 uefi boot from http
#define HTTP_CLIENT_ARCH_EBC          0x0011          /// EBC boot from http
#define HTTP_CLIENT_ARCH_ARM          0x0012          /// Arm uefi 32 boot from http
#define HTTP_CLIENT_ARCH_AARCH64      0x0013          /// Arm uefi 64 boot from http
#define HTTP_CLIENT_ARCH_RISCV32      0x001A          /// RISC-V uefi 32 boot from http
#define HTTP_CLIENT_ARCH_RISCV64      0x001C          /// RISC-V uefi 64 boot from http
#define HTTP_CLIENT_ARCH_RISCV128     0x001E          /// RISC-V uefi 128 boot from http
#define HTTP_CLIENT_ARCH_LOONGARCH32  0x0026          /// LoongArch uefi 32 boot from http
#define HTTP_CLIENT_ARCH_LOONGARCH64  0x0028          /// LoongArch uefi 64 boot from http

#endif
