]> git.proxmox.com Git - mirror_edk2.git/blob - NetworkPkg/DnsDxe/DnsDhcp.h
NetworkPkg: Removing or adding some ASSERT statement
[mirror_edk2.git] / NetworkPkg / DnsDxe / DnsDhcp.h
1 /** @file
2 Functions implementation related with DHCPv4/v6 for DNS driver.
3
4 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT 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 //
41 // The required Dns4 server information.
42 //
43 typedef struct {
44 UINT32 *ServerCount;
45 EFI_IPv4_ADDRESS *ServerList;
46 } DNS4_SERVER_INFOR;
47
48 //
49 // The required Dns6 server information.
50 //
51 typedef struct {
52 UINT32 *ServerCount;
53 EFI_IPv6_ADDRESS *ServerList;
54 } DNS6_SERVER_INFOR;
55
56 #pragma pack()
57
58 /**
59 Parse the ACK to get required information
60
61 @param Dhcp4 The DHCP4 protocol.
62 @param Packet Packet waiting for parse.
63 @param DnsServerInfor The required Dns4 server information.
64
65 @retval EFI_SUCCESS The DNS information is got from the DHCP ACK.
66 @retval EFI_NO_MAPPING DHCP failed to acquire address and other information.
67 @retval EFI_DEVICE_ERROR Other errors as indicated.
68 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
69
70 **/
71 EFI_STATUS
72 ParseDhcp4Ack (
73 IN EFI_DHCP4_PROTOCOL *Dhcp4,
74 IN EFI_DHCP4_PACKET *Packet,
75 IN DNS4_SERVER_INFOR *DnsServerInfor
76 );
77
78 /**
79 EFI_DHCP6_INFO_CALLBACK is provided by the consumer of the EFI DHCPv6 Protocol
80 instance to intercept events that occurs in the DHCPv6 Information Request
81 exchange process.
82
83 @param This Pointer to the EFI_DHCP6_PROTOCOL instance that
84 is used to configure this callback function.
85 @param Context Pointer to the context that is initialized in
86 the EFI_DHCP6_PROTOCOL.InfoRequest().
87 @param Packet Pointer to Reply packet that has been received.
88 The EFI DHCPv6 Protocol instance is responsible
89 for freeing the buffer.
90
91 @retval EFI_SUCCESS The DNS information is got from the DHCP ACK.
92 @retval EFI_DEVICE_ERROR Other errors as indicated.
93 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
94 **/
95 EFI_STATUS
96 EFIAPI
97 ParseDhcp6Ack (
98 IN EFI_DHCP6_PROTOCOL *This,
99 IN VOID *Context,
100 IN EFI_DHCP6_PACKET *Packet
101 );
102
103 /**
104 Parse the DHCP ACK to get Dns4 server information.
105
106 @param Instance The DNS instance.
107 @param DnsServerCount Retrieved Dns4 server Ip count.
108 @param DnsServerList Retrieved Dns4 server Ip list.
109
110 @retval EFI_SUCCESS The Dns4 information is got from the DHCP ACK.
111 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
112 @retval EFI_NO_MEDIA There was a media error.
113 @retval Others Other errors as indicated.
114
115 **/
116 EFI_STATUS
117 GetDns4ServerFromDhcp4 (
118 IN DNS_INSTANCE *Instance,
119 OUT UINT32 *DnsServerCount,
120 OUT EFI_IPv4_ADDRESS **DnsServerList
121 );
122
123 /**
124 Parse the DHCP ACK to get Dns6 server information.
125
126 @param Image The handle of the driver image.
127 @param Controller The handle of the controller.
128 @param DnsServerCount Retrieved Dns6 server Ip count.
129 @param DnsServerList Retrieved Dns6 server Ip list.
130
131 @retval EFI_SUCCESS The Dns6 information is got from the DHCP ACK.
132 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
133 @retval EFI_NO_MEDIA There was a media error.
134 @retval Others Other errors as indicated.
135
136 **/
137 EFI_STATUS
138 GetDns6ServerFromDhcp6 (
139 IN EFI_HANDLE Image,
140 IN EFI_HANDLE Controller,
141 OUT UINT32 *DnsServerCount,
142 OUT EFI_IPv6_ADDRESS **DnsServerList
143 );
144
145 #endif