VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/DnsDxe/DnsDhcp.h@ 77662

最後變更 在這個檔案從77662是 77662,由 vboxsync 提交於 6 年 前

EFI: First step in UDK2018 merge. Does not build yet.

  • 屬性 svn:eol-style 設為 native
檔案大小: 4.6 KB
 
1/** @file
2Functions implementation related with DHCPv4/v6 for DNS driver.
3
4Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
5This program and the accompanying materials
6are licensed and made available under the terms and conditions of the BSD License
7which accompanies this distribution. The full text of the license may be found at
8http://opensource.org/licenses/bsd-license.php
9
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#ifndef _DNS_DHCP_H_
16#define _DNS_DHCP_H_
17
18//
19// DHCP DNS related
20//
21#pragma pack(1)
22
23#define IP4_ETHER_PROTO 0x0800
24
25#define DHCP4_OPCODE_REQUEST 1
26#define DHCP4_MAGIC 0x63538263 /// network byte order
27#define DHCP4_TAG_EOP 255 /// End Option
28
29#define DHCP4_TAG_TYPE 53
30#define DHCP4_MSG_REQUEST 3
31#define DHCP4_MSG_INFORM 8
32
33#define DHCP4_TAG_PARA_LIST 55
34#define DHCP4_TAG_DNS_SERVER 6
35
36
37#define DHCP6_TAG_DNS_REQUEST 6
38#define DHCP6_TAG_DNS_SERVER 23
39
40#define DNS_CHECK_MEDIA_GET_DHCP_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20)
41
42//
43// The required Dns4 server information.
44//
45typedef struct {
46 UINT32 *ServerCount;
47 EFI_IPv4_ADDRESS *ServerList;
48} DNS4_SERVER_INFOR;
49
50//
51// The required Dns6 server information.
52//
53typedef struct {
54 UINT32 *ServerCount;
55 EFI_IPv6_ADDRESS *ServerList;
56} DNS6_SERVER_INFOR;
57
58#pragma pack()
59
60/**
61 Parse the ACK to get required information
62
63 @param Dhcp4 The DHCP4 protocol.
64 @param Packet Packet waiting for parse.
65 @param DnsServerInfor The required Dns4 server information.
66
67 @retval EFI_SUCCESS The DNS information is got from the DHCP ACK.
68 @retval EFI_NO_MAPPING DHCP failed to acquire address and other information.
69 @retval EFI_DEVICE_ERROR Other errors as indicated.
70 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
71
72**/
73EFI_STATUS
74ParseDhcp4Ack (
75 IN EFI_DHCP4_PROTOCOL *Dhcp4,
76 IN EFI_DHCP4_PACKET *Packet,
77 IN DNS4_SERVER_INFOR *DnsServerInfor
78 );
79
80/**
81 EFI_DHCP6_INFO_CALLBACK is provided by the consumer of the EFI DHCPv6 Protocol
82 instance to intercept events that occurs in the DHCPv6 Information Request
83 exchange process.
84
85 @param This Pointer to the EFI_DHCP6_PROTOCOL instance that
86 is used to configure this callback function.
87 @param Context Pointer to the context that is initialized in
88 the EFI_DHCP6_PROTOCOL.InfoRequest().
89 @param Packet Pointer to Reply packet that has been received.
90 The EFI DHCPv6 Protocol instance is responsible
91 for freeing the buffer.
92
93 @retval EFI_SUCCESS The DNS information is got from the DHCP ACK.
94 @retval EFI_DEVICE_ERROR Other errors as indicated.
95 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
96**/
97EFI_STATUS
98EFIAPI
99ParseDhcp6Ack (
100 IN EFI_DHCP6_PROTOCOL *This,
101 IN VOID *Context,
102 IN EFI_DHCP6_PACKET *Packet
103 );
104
105/**
106 Parse the DHCP ACK to get Dns4 server information.
107
108 @param Instance The DNS instance.
109 @param DnsServerCount Retrieved Dns4 server Ip count.
110 @param DnsServerList Retrieved Dns4 server Ip list.
111
112 @retval EFI_SUCCESS The Dns4 information is got from the DHCP ACK.
113 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
114 @retval EFI_NO_MEDIA There was a media error.
115 @retval Others Other errors as indicated.
116
117**/
118EFI_STATUS
119GetDns4ServerFromDhcp4 (
120 IN DNS_INSTANCE *Instance,
121 OUT UINT32 *DnsServerCount,
122 OUT EFI_IPv4_ADDRESS **DnsServerList
123 );
124
125/**
126 Parse the DHCP ACK to get Dns6 server information.
127
128 @param Image The handle of the driver image.
129 @param Controller The handle of the controller.
130 @param DnsServerCount Retrieved Dns6 server Ip count.
131 @param DnsServerList Retrieved Dns6 server Ip list.
132
133 @retval EFI_SUCCESS The Dns6 information is got from the DHCP ACK.
134 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
135 @retval EFI_NO_MEDIA There was a media error.
136 @retval Others Other errors as indicated.
137
138**/
139EFI_STATUS
140GetDns6ServerFromDhcp6 (
141 IN EFI_HANDLE Image,
142 IN EFI_HANDLE Controller,
143 OUT UINT32 *DnsServerCount,
144 OUT EFI_IPv6_ADDRESS **DnsServerList
145 );
146
147#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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