X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkModulePkg%2FUniversal%2FNetwork%2FPxeBc%2FDxe%2Fdhcp.h;fp=EdkModulePkg%2FUniversal%2FNetwork%2FPxeBc%2FDxe%2Fdhcp.h;h=0000000000000000000000000000000000000000;hp=102d30b8c0415031a6ff4eae4362dbf418dc553f;hb=808def96aa4589fba9c2d0ea55837754a3b7a4f7;hpb=9216450d1143056a50a5f916984a2d7faf590488 diff --git a/EdkModulePkg/Universal/Network/PxeBc/Dxe/dhcp.h b/EdkModulePkg/Universal/Network/PxeBc/Dxe/dhcp.h deleted file mode 100644 index 102d30b8c0..0000000000 --- a/EdkModulePkg/Universal/Network/PxeBc/Dxe/dhcp.h +++ /dev/null @@ -1,632 +0,0 @@ -/*++ - -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. - ---*/ - -#ifndef _DHCP_H -#define _DHCP_H - -// -// Definitions for DHCP version 4 UDP packet. -// The field names in this structure are defined and described in RFC 2131. -// -#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; - UINT16 flags; -#define DHCP_BROADCAST_FLAG 0x8000 - - UINT32 ciaddr; - UINT32 yiaddr; - UINT32 siaddr; - UINT32 giaddr; - UINT8 chaddr[16]; - UINT8 sname[64]; - UINT8 file[128]; - UINT8 options[312]; -#define OP_PAD 0 -#define OP_END 255 -#define OP_SUBNET_MASK 1 -#define OP_TIME_OFFSET 2 -#define OP_ROUTER_LIST 3 -#define OP_TIME_SERVERS 4 -#define OP_NAME_SERVERS 5 -#define OP_DNS_SERVERS 6 -#define OP_LOG_SERVERS 7 -#define OP_COOKIE_SERVERS 8 -#define OP_LPR_SREVERS 9 -#define OP_IMPRESS_SERVERS 10 -#define OP_RES_LOC_SERVERS 11 -#define OP_HOST_NAME 12 -#define OP_BOOT_FILE_SZ 13 -#define OP_DUMP_FILE 14 -#define OP_DOMAIN_NAME 15 -#define OP_SWAP_SERVER 16 -#define OP_ROOT_PATH 17 -#define OP_EXTENSION_PATH 18 -#define OP_IP_FORWARDING 19 -#define OP_NON_LOCAL_SRC_RTE 20 -#define OP_POLICY_FILTER 21 -#define OP_MAX_DATAGRAM_SZ 22 -#define OP_DEFAULT_TTL 23 -#define OP_MTU_AGING_TIMEOUT 24 -#define OP_MTU_SIZES 25 -#define OP_MTU_TO_USE 26 -#define OP_ALL_SUBNETS_LOCAL 27 -#define OP_BROADCAST_ADD 28 -#define OP_PERFORM_MASK_DISCOVERY 29 -#define OP_RESPOND_TO_MASK_REQ 30 -#define OP_PERFORM_ROUTER_DISCOVERY 31 -#define OP_ROUTER_SOLICIT_ADDRESS 32 -#define OP_STATIC_ROUTER_LIST 33 -#define OP_USE_ARP_TRAILERS 34 -#define OP_ARP_CACHE_TIMEOUT 35 -#define OP_ETHERNET_ENCAPSULATION 36 -#define OP_TCP_DEFAULT_TTL 37 -#define OP_TCP_KEEP_ALIVE_INT 38 -#define OP_KEEP_ALIVE_GARBAGE 39 -#define OP_NIS_DOMAIN_NAME 40 -#define OP_NIS_SERVERS 41 -#define OP_NTP_SERVERS 42 -#define OP_VENDOR_SPECIFIC 43 -#define VEND_PXE_MTFTP_IP 1 -#define VEND_PXE_MTFTP_CPORT 2 -#define VEND_PXE_MTFTP_SPORT 3 -#define VEND_PXE_MTFTP_TMOUT 4 -#define VEND_PXE_MTFTP_DELAY 5 -#define VEND_PXE_DISCOVERY_CONTROL 6 -#define VEND_PXE_DISCOVERY_MCAST_ADDR 7 -#define VEND_PXE_BOOT_SERVERS 8 -#define VEND_PXE_BOOT_MENU 9 -#define VEND_PXE_BOOT_PROMPT 10 -#define VEND_PXE_MCAST_ADDRS_ALLOC 11 -#define VEND_PXE_CREDENTIAL_TYPES 12 -#define VEND_PXE_BOOT_ITEM 71 -#define OP_NBNS_SERVERS 44 -#define OP_NBDD_SERVERS 45 -#define OP_NETBIOS_NODE_TYPE 46 -#define OP_NETBIOS_SCOPE 47 -#define OP_XWINDOW_SYSTEM_FONT_SERVERS 48 -#define OP_XWINDOW_SYSTEM_DISPLAY_MANAGERS 49 -#define OP_DHCP_REQ_IP_ADD 50 -#define OP_DHCP_LEASE_TIME 51 -#define OP_DHCP_OPTION_OVERLOAD 52 -#define OVLD_FILE 1 -#define OVLD_SRVR_NAME 2 -#define OP_DHCP_MESSAGE_TYPE 53 -#define DHCPDISCOVER 1 -#define DHCPOFFER 2 -#define DHCPREQUEST 3 -#define DHCPDECLINE 4 -#define DHCPACK 5 -#define DHCPNAK 6 -#define DHCPRELEASE 7 -#define DHCPINFORM 8 -#define OP_DHCP_SERVER_IP 54 -#define OP_DHCP_PARM_REQ_LIST 55 -#define OP_DHCP_ERROR_MESSAGE 56 -#define OP_DHCP_MAX_MESSAGE_SZ 57 -#define OP_DHCP_RENEWAL_TIME 58 -#define OP_DHCP_REBINDING_TIME 59 -#define OP_DHCP_CLASS_IDENTIFIER 60 -#define OP_DHCP_CLIENT_IDENTIFIER 61 -#define OP_NISPLUS_DOMAIN_NAME 64 -#define OP_NISPLUS_SERVERS 65 -#define OP_DHCP_TFTP_SERVER_NAME 66 -#define OP_DHCP_BOOTFILE 67 -#define OP_MOBILE_IP_HOME_AGENTS 68 -#define OP_SMPT_SERVERS 69 -#define OP_POP3_SERVERS 70 -#define OP_NNTP_SERVERS 71 -#define OP_WWW_SERVERS 72 -#define OP_FINGER_SERVERS 73 -#define OP_IRC_SERVERS 74 -#define OP_STREET_TALK_SERVERS 75 -#define OP_STREET_TALK_DIR_ASSIST_SERVERS 76 -#define OP_NDS_SERVERS 85 -#define OP_NDS_TREE_NAME 86 -#define OP_NDS_CONTEXT 87 -#define OP_DHCP_SYSTEM_ARCH 93 -#define OP_DHCP_NETWORK_ARCH 94 -#define OP_DHCP_PLATFORM_ID 97 -} DHCPV4_STRUCT; - -// -// DHCPv4 option header -// -typedef struct { - UINT8 OpCode; - UINT8 Length; - // - // followed by Data[] - // -} DHCPV4_OP_HEADER; - -// -// Generic DHCPv4 option (header followed by data) -// -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 Data[1]; -} DHCPV4_OP_STRUCT; - -// -// Maximum DHCP packet size on ethernet -// -#define MAX_DHCP_MSG_SZ (MAX_ENET_DATA_SIZE - sizeof (IPV4_HEADER) - sizeof (UDPV4_HEADER)) - -// -// Macros used in pxe_bc_dhcp.c and pxe_loadfile.c -// -#define DHCPV4_TRANSMIT_BUFFER (*(DHCPV4_STRUCT *) (Private->TransmitBuffer)) -#define DHCPV4_OPTIONS_BUFFER (*(struct optionsstr *) DHCPV4_TRANSMIT_BUFFER.options) - -#define DHCPV4_ACK_INDEX 0 -#define PXE_BINL_INDEX 1 -#define PXE_OFFER_INDEX 1 -#define PXE_ACK_INDEX 2 -#define PXE_BIS_INDEX 3 - -#define DHCPV4_ACK_BUFFER ((struct DhcpReceiveBufferStruct *) Private->DhcpPacketBuffer)[DHCPV4_ACK_INDEX] -#define PXE_BINL_BUFFER ((struct DhcpReceiveBufferStruct *) Private->DhcpPacketBuffer)[PXE_BINL_INDEX] -#define PXE_OFFER_BUFFER ((struct DhcpReceiveBufferStruct *) Private->DhcpPacketBuffer)[PXE_OFFER_INDEX] -#define PXE_ACK_BUFFER ((struct DhcpReceiveBufferStruct *) Private->DhcpPacketBuffer)[PXE_ACK_INDEX] -#define PXE_BIS_BUFFER ((struct DhcpReceiveBufferStruct *) Private->DhcpPacketBuffer)[PXE_BIS_INDEX] - -#define DHCPV4_ACK_PACKET DHCPV4_ACK_BUFFER.u.Dhcpv4 -#define PXE_BINL_PACKET PXE_BINL_BUFFER.u.Dhcpv4 -#define PXE_OFFER_PACKET PXE_OFFER_BUFFER.u.Dhcpv4 -#define PXE_ACK_PACKET PXE_ACK_BUFFER.u.Dhcpv4 -#define PXE_BIS_PACKET PXE_BIS_BUFFER.u.Dhcpv4 - -// -// network structure definitions -// -// -// some option definitions -// -#define DHCPV4_OPTION_LENGTH(type) (sizeof (type) - sizeof (DHCPV4_OP_HEADER)) - -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 Type; -} DHCPV4_OP_MESSAGE_TYPE; - -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 Overload; -} DHCPV4_OP_OVERLOAD; - -// -// boot server list structure -// one or more contained in a pxe boot servers structure -// -typedef struct { - UINT8 IpCount; - EFI_IPv4_ADDRESS IpList[1]; // IP count of IPs -} PXEV4_SERVER_LIST; - -typedef struct { - UINT8 IpCount; - EFI_IPv6_ADDRESS IpList[1]; // IP count of IPs -} PXEV6_SERVER_LIST; - -typedef union { - PXEV4_SERVER_LIST Ipv4List; - PXEV6_SERVER_LIST Ipv6List; -} PXE_SERVER_LISTS; - -typedef struct { - UINT16 Type; - PXE_SERVER_LISTS u; -} PXE_SERVER_LIST; - -// -// pxe boot servers structure -// -typedef struct { - DHCPV4_OP_HEADER Header; - PXE_SERVER_LIST ServerList[1]; // one or more -} PXE_OP_SERVER_LIST; - -// -// pxe boot item structure -// -typedef struct { - DHCPV4_OP_HEADER Header; - UINT16 Type; - UINT16 Layer; -} PXE_OP_BOOT_ITEM; - -// -// pxe boot menu item structure -// -typedef struct { - UINT16 Type; - UINT8 DataLen; - UINT8 Data[1]; -} PXE_BOOT_MENU_ENTRY; - -// -// pxe boot menu structure -// -typedef struct { - DHCPV4_OP_HEADER Header; - PXE_BOOT_MENU_ENTRY MenuItem[1]; -} PXE_OP_BOOT_MENU; - -// -// pxe boot prompt structure -// -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 Timeout; - UINT8 Prompt[1]; -} PXE_OP_BOOT_PROMPT; - -#define PXE_BOOT_PROMPT_AUTO_SELECT 0 -#define PXE_BOOT_PROMPT_NO_TIMEOUT 255 - -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 Class[1]; -} DHCPV4_OP_CLASS; - -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 File[1]; -} DHCPV4_OP_BOOTFILE; - -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 VendorOptions[1]; -} DHCPV4_OP_VENDOR_OPTIONS; - -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 MaxSize[2]; -} DHCPV4_OP_MAX_MESSAGE_SIZE; - -typedef struct { - UINT8 _OP_SUBNET_MASK; /* 1 */ - UINT8 _OP_TIME_OFFSET; /* 2 */ - UINT8 _OP_ROUTER_LIST; /* 3 */ - UINT8 _OP_TIME_SERVERS; /* 4 */ - UINT8 _OP_NAME_SERVERS; /* 5 */ - UINT8 _OP_DNS_SERVERS; /* 6 */ - UINT8 _OP_HOST_NAME; /* 12 */ - UINT8 _OP_BOOT_FILE_SZ; /* 13 */ - UINT8 _OP_DOMAIN_NAME; /* 15 */ - UINT8 _OP_ROOT_PATH; /* 17 */ - UINT8 _OP_EXTENSION_PATH; /* 18 */ - UINT8 _OP_MAX_DATAGRAM_SZ; /* 22 */ - UINT8 _OP_DEFAULT_TTL; /* 23 */ - UINT8 _OP_BROADCAST_ADD; /* 28 */ - UINT8 _OP_NIS_DOMAIN_NAME; /* 40 */ - UINT8 _OP_NIS_SERVERS; /* 41 */ - UINT8 _OP_NTP_SERVERS; /* 42 */ - UINT8 _OP_VENDOR_SPECIFIC; /* 43 */ - UINT8 _OP_DHCP_REQ_IP_ADD; /* 50 */ - UINT8 _OP_DHCP_LEASE_TIME; /* 51 */ - UINT8 _OP_DHCP_SERVER_IP; /* 54 */ - UINT8 _OP_DHCP_RENEWAL_TIME; /* 58 */ - UINT8 _OP_DHCP_REBINDING_TIME; /* 59 */ - UINT8 _OP_DHCP_CLASS_IDENTIFIER; /* 60 */ - UINT8 _OP_DHCP_TFTP_SERVER_NAME; /* 66 */ - UINT8 _OP_DHCP_BOOTFILE; /* 67 */ - UINT8 _OP_DHCP_PLATFORM_ID; /* 97 */ - UINT8 VendorOption128; // vendor option 128 - UINT8 VendorOption129; // vendor option 129 - UINT8 VendorOption130; // vendor option 130 - UINT8 VendorOption131; // vendor option 131 - UINT8 VendorOption132; // vendor option 132 - UINT8 VendorOption133; // vendor option 133 - UINT8 VendorOption134; // vendor option 134 - UINT8 VendorOption135; // vendor option 135 -} DHCPV4_REQUESTED_OPTIONS_DATA; - -typedef struct { - DHCPV4_OP_HEADER Header; - DHCPV4_REQUESTED_OPTIONS_DATA Data; -} DHCPV4_OP_REQUESTED_OPTIONS; - -typedef struct opipstr { - DHCPV4_OP_HEADER Header; - EFI_IPv4_ADDRESS Ip; -} DHCPV4_OP_IP_ADDRESS; - -// -// ip list structure - e.g. router list -// -typedef struct { - DHCPV4_OP_HEADER Header; - EFI_IPv4_ADDRESS IpList[1]; -} DHCPV4_OP_IP_LIST; - -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 Type; - UINT8 Guid[sizeof (EFI_GUID)]; -} DHCPV4_OP_CLIENT_ID; - -// -// special options start - someday obsolete ??? -// -#define DHCPV4_OP_PLATFORM_ID DHCPV4_OP_CLIENT_ID - -typedef struct { - DHCPV4_OP_HEADER Header; - UINT8 Type; // SNP = 2 - UINT8 MajorVersion; - UINT8 MinorVersion; -} DHCPV4_OP_NETWORK_INTERFACE; - -#define UNDI_TYPE 1 -#define SNP_TYPE 2 - -typedef struct { - DHCPV4_OP_HEADER Header; - UINT16 Type; -} DHCPV4_OP_ARCHITECTURE_TYPE; -// -// special options end - someday obsolete ??? -// -typedef struct { - UINT8 ClassIdentifier[10]; // PXEClient: - UINT8 Lit2[5]; // Arch: - UINT8 ArchitectureType[5]; // 00000 - 65536 - UINT8 Lit3[1]; // : - UINT8 InterfaceName[4]; // e.g. UNDI - UINT8 Lit4[1]; // : - UINT8 UndiMajor[3]; // 000 - 255 - UINT8 UndiMinor[3]; // 000 - 255 -} DHCPV4_CLASS_ID_DATA; - -typedef struct { - DHCPV4_OP_HEADER Header; - DHCPV4_CLASS_ID_DATA Data; -} DHCPV4_OP_CLASS_ID; - -typedef struct { - DHCPV4_OP_HEADER Header; - EFI_IPv4_ADDRESS Ip; -} DHCPV4_OP_REQUESTED_IP; - -typedef struct { - DHCPV4_OP_HEADER Header; - EFI_IPv4_ADDRESS Ip; -} DHCPV4_OP_SERVER_IP; - -typedef struct { - DHCPV4_OP_HEADER Header; - EFI_IPv4_ADDRESS Ip; -} DHCPV4_OP_SUBNET_MASK; - -typedef struct { // oppxedisctlstr { - DHCPV4_OP_HEADER Header; - UINT8 ControlBits; -} PXE_OP_DISCOVERY_CONTROL; - -#define DISABLE_BCAST (1 << 0) -#define DISABLE_MCAST (1 << 1) -#define USE_ACCEPT_LIST (1 << 2) -#define USE_BOOTFILE (1 << 3) - -#pragma pack() -// -// definitions of indices to populate option interest array -// -#define VEND_PXE_MTFTP_IP_IX 1 // multicast IP address of bootfile for MTFTP listen -#define VEND_PXE_MTFTP_CPORT_IX 2 // UDP Port to monitor for MTFTP responses - Intel order -#define VEND_PXE_MTFTP_SPORT_IX 3 // Server UDP Port for MTFTP open - Intel order -#define VEND_PXE_MTFTP_TMOUT_IX 4 // Listen timeout - secs -#define VEND_PXE_MTFTP_DELAY_IX 5 // Transmission timeout - secs -#define VEND_PXE_DISCOVERY_CONTROL_IX 6 // bit field -#define VEND_PXE_DISCOVERY_MCAST_ADDR_IX 7 // boot server discovery multicast address -#define VEND_PXE_BOOT_SERVERS_IX 8 // list of boot servers of form tp(2) cnt(1) ips[cnt] -#define VEND_PXE_BOOT_MENU_IX 9 -#define VEND_PXE_BOOT_PROMPT_IX 10 -#define VEND_PXE_MCAST_ADDRS_ALLOC_IX 0 // not used by PXE client -#define VEND_PXE_CREDENTIAL_TYPES_IX 11 -#define VEND_13_IX 0 // not used by PXE client -#define VEND_14_IX 0 // not used by PXE client -#define VEND_15_IX 0 // not used by PXE client -#define VEND_16_IX 0 // not used by PXE client -#define VEND_17_IX 0 // not used by PXE client -#define VEND_18_IX 0 // not used by PXE client -#define VEND_19_IX 0 // not used by PXE client -#define VEND_20_IX 0 // not used by PXE client -#define VEND_21_IX 0 // not used by PXE client -#define VEND_22_IX 0 // not used by PXE client -#define VEND_23_IX 0 // not used by PXE client -#define VEND_24_IX 0 // not used by PXE client -#define VEND_25_IX 0 // not used by PXE client -#define VEND_26_IX 0 // not used by PXE client -#define VEND_27_IX 0 // not used by PXE client -#define VEND_28_IX 0 // not used by PXE client -#define VEND_29_IX 0 // not used by PXE client -#define VEND_30_IX 0 // not used by PXE client -#define VEND_31_IX 0 // not used by PXE client -#define VEND_32_IX 0 // not used by PXE client -#define VEND_33_IX 0 // not used by PXE client -#define VEND_34_IX 0 // not used by PXE client -#define VEND_35_IX 0 // not used by PXE client -#define VEND_36_IX 0 // not used by PXE client -#define VEND_37_IX 0 // not used by PXE client -#define VEND_38_IX 0 // not used by PXE client -#define VEND_39_IX 0 // not used by PXE client -#define VEND_40_IX 0 // not used by PXE client -#define VEND_41_IX 0 // not used by PXE client -#define VEND_42_IX 0 // not used by PXE client -#define VEND_43_IX 0 // not used by PXE client -#define VEND_44_IX 0 // not used by PXE client -#define VEND_45_IX 0 // not used by PXE client -#define VEND_46_IX 0 // not used by PXE client -#define VEND_47_IX 0 // not used by PXE client -#define VEND_48_IX 0 // not used by PXE client -#define VEND_49_IX 0 // not used by PXE client -#define VEND_50_IX 0 // not used by PXE client -#define VEND_51_IX 0 // not used by PXE client -#define VEND_52_IX 0 // not used by PXE client -#define VEND_53_IX 0 // not used by PXE client -#define VEND_54_IX 0 // not used by PXE client -#define VEND_55_IX 0 // not used by PXE client -#define VEND_56_IX 0 // not used by PXE client -#define VEND_57_IX 0 // not used by PXE client -#define VEND_58_IX 0 // not used by PXE client -#define VEND_59_IX 0 // not used by PXE client -#define VEND_60_IX 0 // not used by PXE client -#define VEND_61_IX 0 // not used by PXE client -#define VEND_62_IX 0 // not used by PXE client -#define VEND_63_IX 0 // not used by PXE client -#define VEND_64_IX 0 // not used by PXE client -#define VEND_65_IX 0 // not used by PXE client -#define VEND_66_IX 0 // not used by PXE client -#define VEND_67_IX 0 // not used by PXE client -#define VEND_68_IX 0 // not used by PXE client -#define VEND_69_IX 0 // not used by PXE client -#define VEND_70_IX 0 // not used by PXE client -#define VEND_PXE_BOOT_ITEM_IX 12 - -#define MAX_OUR_PXE_OPT VEND_PXE_BOOT_ITEM // largest PXE option in which we are interested -#define MAX_OUR_PXE_IX VEND_PXE_BOOT_ITEM_IX // largest PXE option index -// -// define various types by options that are sent -// -#define WfM11a_OPTS ((1<