]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.h
Scrubbed some code for Ip4ConfigDxe.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4ConfigDxe / Ip4Config.h
CommitLineData
83cbd279 1/** @file\r
402fa70f 2 Header file for IP4Config driver.\r
83cbd279 3\r
402fa70f 4Copyright (c) 2006 - 2008, Intel Corporation.<BR>\r
83cbd279 5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
402fa70f 7which accompanies this distribution. The full text of the license may be found at<BR>\r
83cbd279 8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
83cbd279 13**/\r
14\r
402fa70f 15#ifndef _EFI_IP4CONFIG_H_\r
16#define _EFI_IP4CONFIG_H_\r
83cbd279 17\r
b2570da8 18#include <PiDxe.h>\r
19\r
20#include <Protocol/Dhcp4.h>\r
24e58768 21#include <Protocol/Ip4Config.h>\r
b2570da8 22#include <Protocol/ManagedNetwork.h>\r
23\r
24#include <Library/DebugLib.h>\r
25#include <Library/UefiRuntimeServicesTableLib.h>\r
26#include <Library/UefiDriverEntryPoint.h>\r
27#include <Library/UefiBootServicesTableLib.h>\r
28#include <Library/UefiLib.h>\r
29#include <Library/NetLib.h>\r
30#include <Library/BaseMemoryLib.h>\r
83cbd279 31#include <Library/MemoryAllocationLib.h>\r
32\r
33#include "NicIp4Variable.h"\r
34\r
35typedef struct _IP4_CONFIG_INSTANCE IP4_CONFIG_INSTANCE;\r
36\r
7bce0c5a 37typedef enum {\r
83cbd279 38 IP4_CONFIG_STATE_IDLE = 0,\r
39 IP4_CONFIG_STATE_STARTED,\r
7bce0c5a 40 IP4_CONFIG_STATE_CONFIGURED\r
41} IP4_CONFIG_STATE;\r
83cbd279 42\r
7bce0c5a 43#define IP4_PROTO_ICMP 0x01\r
f3f2e05d 44#define IP4_CONFIG_INSTANCE_SIGNATURE SIGNATURE_32 ('I', 'P', '4', 'C')\r
83cbd279 45\r
7bce0c5a 46typedef enum {\r
83cbd279 47 DHCP_TAG_PARA_LIST = 55,\r
48 DHCP_TAG_NETMASK = 1,\r
49 DHCP_TAG_ROUTER = 3\r
7bce0c5a 50} DHCP_TAGS;\r
83cbd279 51\r
52//\r
53// Configure the DHCP to request the routers and netmask\r
54// from server. The DHCP_TAG_NETMASK is included in Head.\r
55//\r
56#pragma pack(1)\r
57typedef struct {\r
58 EFI_DHCP4_PACKET_OPTION Head;\r
59 UINT8 Route;\r
60} IP4_CONFIG_DHCP4_OPTION;\r
61#pragma pack()\r
62\r
63struct _IP4_CONFIG_INSTANCE {\r
64 UINT32 Signature;\r
65 EFI_HANDLE Controller;\r
66 EFI_HANDLE Image;\r
67\r
68 EFI_IP4_CONFIG_PROTOCOL Ip4ConfigProtocol;\r
69 EFI_NIC_IP4_CONFIG_PROTOCOL NicIp4Protocol;\r
70\r
71 //\r
72 // NicConfig's state, such as IP4_CONFIG_STATE_IDLE\r
73 //\r
74 INTN State;\r
75\r
76 //\r
77 // Mnp child to keep the connection with MNP.\r
78 //\r
79 EFI_MANAGED_NETWORK_PROTOCOL *Mnp;\r
80 EFI_HANDLE MnpHandle;\r
81\r
82 //\r
83 // User's requests data\r
84 //\r
85 EFI_EVENT DoneEvent;\r
86 EFI_EVENT ReconfigEvent;\r
87 EFI_STATUS Result;\r
88\r
89 //\r
90 // Identity of this interface and some configuration info.\r
91 //\r
92 NIC_ADDR NicAddr;\r
93 UINT16 NicName[IP4_NIC_NAME_LENGTH];\r
94 UINT32 NicIndex;\r
95 NIC_IP4_CONFIG_INFO *NicConfig;\r
96\r
97 //\r
98 // DHCP handles to access DHCP\r
99 //\r
100 EFI_DHCP4_PROTOCOL *Dhcp4;\r
101 EFI_HANDLE Dhcp4Handle;\r
102 EFI_EVENT Dhcp4Event;\r
103};\r
104\r
105#define IP4_CONFIG_INSTANCE_FROM_IP4CONFIG(this) \\r
106 CR (this, IP4_CONFIG_INSTANCE, Ip4ConfigProtocol, IP4_CONFIG_INSTANCE_SIGNATURE)\r
107\r
108#define IP4_CONFIG_INSTANCE_FROM_NIC_IP4CONFIG(this) \\r
109 CR (this, IP4_CONFIG_INSTANCE, NicIp4Protocol, IP4_CONFIG_INSTANCE_SIGNATURE)\r
110\r
111extern EFI_DRIVER_BINDING_PROTOCOL gIp4ConfigDriverBinding;\r
112extern EFI_COMPONENT_NAME_PROTOCOL gIp4ConfigComponentName;\r
113extern EFI_COMPONENT_NAME2_PROTOCOL gIp4ConfigComponentName2;\r
114extern IP4_CONFIG_INSTANCE *mIp4ConfigNicList[MAX_IP4_CONFIG_IN_VARIABLE];\r
115extern EFI_IP4_CONFIG_PROTOCOL mIp4ConfigProtocolTemplate;\r
116extern EFI_NIC_IP4_CONFIG_PROTOCOL mNicIp4ConfigProtocolTemplate;\r
117\r
7bce0c5a 118/**\r
119 Release all the DHCP related resources.\r
120\r
121 @param This The IP4 configure instance\r
122\r
123 @return None\r
124\r
125**/\r
83cbd279 126VOID\r
127Ip4ConfigCleanDhcp4 (\r
128 IN IP4_CONFIG_INSTANCE *This\r
129 );\r
130\r
7bce0c5a 131/**\r
132 Clean up all the configuration parameters.\r
133\r
134 @param Instance The IP4 configure instance\r
135\r
136 @return None\r
137\r
138**/\r
83cbd279 139VOID\r
140Ip4ConfigCleanConfig (\r
141 IN IP4_CONFIG_INSTANCE *Instance\r
142 );\r
143#endif\r