VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/NetworkPkg/DnsDxe/DnsDhcp.h@ 80924

Last change on this file since 80924 was 80721, checked in by vboxsync, 5 years ago

Devices/EFI/FirmwareNew: Start upgrade process to edk2-stable201908 (compiles on Windows and works to some extent), bugref:4643

  • Property svn:eol-style set to native
File size: 4.3 KB
Line 
1/** @file
2Functions implementation related with DHCPv4/v6 for DNS driver.
3
4Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
5SPDX-License-Identifier: BSD-2-Clause-Patent
6
7**/
8
9#ifndef _DNS_DHCP_H_
10#define _DNS_DHCP_H_
11
12//
13// DHCP DNS related
14//
15#pragma pack(1)
16
17#define IP4_ETHER_PROTO 0x0800
18
19#define DHCP4_OPCODE_REQUEST 1
20#define DHCP4_MAGIC 0x63538263 /// network byte order
21#define DHCP4_TAG_EOP 255 /// End Option
22
23#define DHCP4_TAG_TYPE 53
24#define DHCP4_MSG_REQUEST 3
25#define DHCP4_MSG_INFORM 8
26
27#define DHCP4_TAG_PARA_LIST 55
28#define DHCP4_TAG_DNS_SERVER 6
29
30
31#define DHCP6_TAG_DNS_REQUEST 6
32#define DHCP6_TAG_DNS_SERVER 23
33
34#define DNS_CHECK_MEDIA_GET_DHCP_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20)
35
36//
37// The required Dns4 server information.
38//
39typedef struct {
40 UINT32 *ServerCount;
41 EFI_IPv4_ADDRESS *ServerList;
42} DNS4_SERVER_INFOR;
43
44//
45// The required Dns6 server information.
46//
47typedef struct {
48 UINT32 *ServerCount;
49 EFI_IPv6_ADDRESS *ServerList;
50} DNS6_SERVER_INFOR;
51
52#pragma pack()
53
54/**
55 Parse the ACK to get required information
56
57 @param Dhcp4 The DHCP4 protocol.
58 @param Packet Packet waiting for parse.
59 @param DnsServerInfor The required Dns4 server information.
60
61 @retval EFI_SUCCESS The DNS information is got from the DHCP ACK.
62 @retval EFI_NO_MAPPING DHCP failed to acquire address and other information.
63 @retval EFI_DEVICE_ERROR Other errors as indicated.
64 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
65
66**/
67EFI_STATUS
68ParseDhcp4Ack (
69 IN EFI_DHCP4_PROTOCOL *Dhcp4,
70 IN EFI_DHCP4_PACKET *Packet,
71 IN DNS4_SERVER_INFOR *DnsServerInfor
72 );
73
74/**
75 EFI_DHCP6_INFO_CALLBACK is provided by the consumer of the EFI DHCPv6 Protocol
76 instance to intercept events that occurs in the DHCPv6 Information Request
77 exchange process.
78
79 @param This Pointer to the EFI_DHCP6_PROTOCOL instance that
80 is used to configure this callback function.
81 @param Context Pointer to the context that is initialized in
82 the EFI_DHCP6_PROTOCOL.InfoRequest().
83 @param Packet Pointer to Reply packet that has been received.
84 The EFI DHCPv6 Protocol instance is responsible
85 for freeing the buffer.
86
87 @retval EFI_SUCCESS The DNS information is got from the DHCP ACK.
88 @retval EFI_DEVICE_ERROR Other errors as indicated.
89 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
90**/
91EFI_STATUS
92EFIAPI
93ParseDhcp6Ack (
94 IN EFI_DHCP6_PROTOCOL *This,
95 IN VOID *Context,
96 IN EFI_DHCP6_PACKET *Packet
97 );
98
99/**
100 Parse the DHCP ACK to get Dns4 server information.
101
102 @param Instance The DNS instance.
103 @param DnsServerCount Retrieved Dns4 server Ip count.
104 @param DnsServerList Retrieved Dns4 server Ip list.
105
106 @retval EFI_SUCCESS The Dns4 information is got from the DHCP ACK.
107 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
108 @retval EFI_NO_MEDIA There was a media error.
109 @retval Others Other errors as indicated.
110
111**/
112EFI_STATUS
113GetDns4ServerFromDhcp4 (
114 IN DNS_INSTANCE *Instance,
115 OUT UINT32 *DnsServerCount,
116 OUT EFI_IPv4_ADDRESS **DnsServerList
117 );
118
119/**
120 Parse the DHCP ACK to get Dns6 server information.
121
122 @param Image The handle of the driver image.
123 @param Controller The handle of the controller.
124 @param DnsServerCount Retrieved Dns6 server Ip count.
125 @param DnsServerList Retrieved Dns6 server Ip list.
126
127 @retval EFI_SUCCESS The Dns6 information is got from the DHCP ACK.
128 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
129 @retval EFI_NO_MEDIA There was a media error.
130 @retval Others Other errors as indicated.
131
132**/
133EFI_STATUS
134GetDns6ServerFromDhcp6 (
135 IN EFI_HANDLE Image,
136 IN EFI_HANDLE Controller,
137 OUT UINT32 *DnsServerCount,
138 OUT EFI_IPv6_ADDRESS **DnsServerList
139 );
140
141#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette