]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/HttpBootDxe/HttpBootDhcp6.h
NetworkPkg/HttpBootDxe: Fix various typos
[mirror_edk2.git] / NetworkPkg / HttpBootDxe / HttpBootDhcp6.h
CommitLineData
b659408b
ZL
1/** @file\r
2 Functions declaration related with DHCPv6 for HTTP boot driver.\r
3\r
f75a7f56 4Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
ecf98fbc 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
b659408b
ZL
6\r
7**/\r
8\r
9\r
10#ifndef __EFI_HTTP_BOOT_DHCP6_H__\r
11#define __EFI_HTTP_BOOT_DHCP6_H__\r
12\r
13#define HTTP_BOOT_OFFER_MAX_NUM 16\r
14#define HTTP_BOOT_DHCP6_OPTION_MAX_NUM 16\r
15#define HTTP_BOOT_DHCP6_OPTION_MAX_SIZE 312\r
16#define HTTP_BOOT_DHCP6_PACKET_MAX_SIZE 1472\r
17#define HTTP_BOOT_IP6_ROUTE_TABLE_TIMEOUT 10\r
18#define HTTP_BOOT_DEFAULT_HOPLIMIT 64\r
19#define HTTP_BOOT_DEFAULT_LIFETIME 50000\r
20\r
b659408b
ZL
21#define HTTP_BOOT_DHCP6_ENTERPRISE_NUM 343 // TODO: IANA TBD: temporarily using Intel's\r
22#define HTTP_BOOT_DHCP6_MAX_BOOT_FILE_SIZE 65535 // It's a limitation of bit length, 65535*512 bytes.\r
23\r
24#define HTTP_BOOT_DHCP6_IDX_IA_NA 0\r
25#define HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL 1\r
26#define HTTP_BOOT_DHCP6_IDX_BOOT_FILE_PARAM 2\r
27#define HTTP_BOOT_DHCP6_IDX_VENDOR_CLASS 3\r
28#define HTTP_BOOT_DHCP6_IDX_DNS_SERVER 4\r
29#define HTTP_BOOT_DHCP6_IDX_MAX 5\r
30\r
31#pragma pack(1)\r
32typedef struct {\r
33 UINT16 OpCode[256];\r
34} HTTP_BOOT_DHCP6_OPTION_ORO;\r
35\r
36typedef struct {\r
37 UINT8 Type;\r
38 UINT8 MajorVer;\r
39 UINT8 MinorVer;\r
40} HTTP_BOOT_DHCP6_OPTION_UNDI;\r
41\r
42typedef struct {\r
43 UINT16 Type;\r
44} HTTP_BOOT_DHCP6_OPTION_ARCH;\r
45\r
46typedef struct {\r
c243b744 47 UINT8 ClassIdentifier[11];\r
b659408b
ZL
48 UINT8 ArchitecturePrefix[5];\r
49 UINT8 ArchitectureType[5];\r
50 UINT8 Lit3[1];\r
51 UINT8 InterfaceName[4];\r
52 UINT8 Lit4[1];\r
53 UINT8 UndiMajor[3];\r
54 UINT8 UndiMinor[3];\r
55} HTTP_BOOT_CLASS_ID;\r
56\r
57typedef struct {\r
58 UINT32 Vendor;\r
59 UINT16 ClassLen;\r
60 HTTP_BOOT_CLASS_ID ClassId;\r
61} HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS;\r
62\r
63#pragma pack()\r
64\r
65typedef union {\r
66 HTTP_BOOT_DHCP6_OPTION_ORO *Oro;\r
67 HTTP_BOOT_DHCP6_OPTION_UNDI *Undi;\r
68 HTTP_BOOT_DHCP6_OPTION_ARCH *Arch;\r
69 HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS *VendorClass;\r
70} HTTP_BOOT_DHCP6_OPTION_ENTRY;\r
71\r
632dcfd6
FS
72#define HTTP_CACHED_DHCP6_PACKET_MAX_SIZE (OFFSET_OF (EFI_DHCP6_PACKET, Dhcp6) + HTTP_BOOT_DHCP6_PACKET_MAX_SIZE)\r
73\r
b659408b
ZL
74typedef union {\r
75 EFI_DHCP6_PACKET Offer;\r
76 EFI_DHCP6_PACKET Ack;\r
632dcfd6 77 UINT8 Buffer[HTTP_CACHED_DHCP6_PACKET_MAX_SIZE];\r
b659408b
ZL
78} HTTP_BOOT_DHCP6_PACKET;\r
79\r
80typedef struct {\r
81 HTTP_BOOT_DHCP6_PACKET Packet;\r
82 HTTP_BOOT_OFFER_TYPE OfferType;\r
83 EFI_DHCP6_PACKET_OPTION *OptList[HTTP_BOOT_DHCP6_IDX_MAX];\r
84 VOID *UriParser;\r
85} HTTP_BOOT_DHCP6_PACKET_CACHE;\r
86\r
87#define GET_NEXT_DHCP6_OPTION(Opt) \\r
88 (EFI_DHCP6_PACKET_OPTION *) ((UINT8 *) (Opt) + \\r
89 sizeof (EFI_DHCP6_PACKET_OPTION) + (NTOHS ((Opt)->OpLen)) - 1)\r
90\r
91#define GET_DHCP6_OPTION_SIZE(Pkt) \\r
92 ((Pkt)->Length - sizeof (EFI_DHCP6_HEADER))\r
93\r
94/**\r
95 Start the S.A.R.R DHCPv6 process to acquire the IPv6 address and other Http boot information.\r
96\r
97 @param[in] Private Pointer to HTTP_BOOT private data.\r
98\r
99 @retval EFI_SUCCESS The S.A.R.R process successfully finished.\r
100 @retval Others Failed to finish the S.A.R.R process.\r
101\r
102**/\r
103EFI_STATUS\r
104HttpBootDhcp6Sarr (\r
105 IN HTTP_BOOT_PRIVATE_DATA *Private\r
106 );\r
107\r
108/**\r
109 Set the IP6 policy to Automatic.\r
110\r
111 @param[in] Private The pointer to HTTP_BOOT_PRIVATE_DATA.\r
112\r
c36b7b51
AC
113 @retval EFI_SUCCESS Switch the IP policy successfully.\r
114 @retval Others Unexpected error happened.\r
b659408b
ZL
115\r
116**/\r
117EFI_STATUS\r
118HttpBootSetIp6Policy (\r
119 IN HTTP_BOOT_PRIVATE_DATA *Private\r
120 );\r
121\r
122/**\r
123 This function will register the default DNS addresses to the network device.\r
f75a7f56 124\r
b659408b
ZL
125 @param[in] Private The pointer to HTTP_BOOT_PRIVATE_DATA.\r
126 @param[in] DataLength Size of the buffer pointed to by DnsServerData in bytes.\r
127 @param[in] DnsServerData Point a list of DNS server address in an array\r
128 of EFI_IPv6_ADDRESS instances.\r
129\r
130 @retval EFI_SUCCESS The DNS configuration has been configured successfully.\r
131 @retval Others Failed to configure the address.\r
132\r
133**/\r
134EFI_STATUS\r
135HttpBootSetIp6Dns (\r
136 IN HTTP_BOOT_PRIVATE_DATA *Private,\r
137 IN UINTN DataLength,\r
138 IN VOID *DnsServerData\r
139 );\r
140\r
141/**\r
142 This function will register the IPv6 gateway address to the network device.\r
f75a7f56 143\r
b659408b
ZL
144 @param[in] Private The pointer to HTTP_BOOT_PRIVATE_DATA.\r
145\r
146 @retval EFI_SUCCESS The new IP configuration has been configured successfully.\r
147 @retval Others Failed to configure the address.\r
148\r
149**/\r
150EFI_STATUS\r
151HttpBootSetIp6Gateway (\r
152 IN HTTP_BOOT_PRIVATE_DATA *Private\r
153 );\r
154\r
155/**\r
156 This function will register the station IP address.\r
f75a7f56 157\r
b659408b
ZL
158 @param[in] Private The pointer to HTTP_BOOT_PRIVATE_DATA.\r
159\r
160 @retval EFI_SUCCESS The new IP address has been configured successfully.\r
161 @retval Others Failed to configure the address.\r
162\r
163**/\r
164EFI_STATUS\r
165HttpBootSetIp6Address (\r
166 IN HTTP_BOOT_PRIVATE_DATA *Private\r
167 );\r
168\r
169#endif\r