]> git.proxmox.com Git - mirror_edk2.git/blame - EmbeddedPkg/Library/EblNetworkLib/EblNetworkLib.c
ArmPlatformPkg: remove EblCmdLib implementation
[mirror_edk2.git] / EmbeddedPkg / Library / EblNetworkLib / EblNetworkLib.c
CommitLineData
1e57a462 1/** @file\r
2\r
3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
3402aac7 4\r
1e57a462 5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#include <Uefi.h>\r
16#include <Library/BaseMemoryLib.h>\r
17#include <Library/DebugLib.h>\r
18#include <Library/UefiRuntimeServicesTableLib.h>\r
19#include <Library/UefiBootServicesTableLib.h>\r
20\r
21#include <Protocol/SimpleNetwork.h>\r
22#include <Protocol/PxeBaseCode.h>\r
23\r
24\r
25BOOLEAN gUseIpv6 = FALSE;\r
26\r
27EFI_STATUS\r
28EFIAPI\r
29EblGetCurrentIpAddress (\r
30 IN OUT EFI_IP_ADDRESS *Ip\r
31 )\r
32{\r
33 EFI_STATUS Status;\r
34 EFI_PXE_BASE_CODE_PROTOCOL *Pxe;\r
3402aac7 35\r
1e57a462 36 Status = gBS->LocateProtocol (&gEfiPxeBaseCodeProtocolGuid, NULL, (VOID **)&Pxe);\r
37 if (EFI_ERROR(Status)) {\r
38 return Status;\r
39 }\r
40\r
41 Status = Pxe->Start (Pxe, gUseIpv6);\r
42 if (EFI_ERROR(Status) && (Status != EFI_ALREADY_STARTED)) {\r
43 return Status;\r
44 }\r
45\r
46 CopyMem (Ip, &Pxe->Mode->StationIp, sizeof (EFI_IP_ADDRESS));\r
47\r
48 return EFI_SUCCESS;\r
49}\r
50\r
51\r
52EFI_STATUS\r
53EFIAPI\r
54EblGetCurrentMacAddress (\r
55 IN OUT EFI_MAC_ADDRESS *Mac\r
56 )\r
57{\r
58 EFI_STATUS Status;\r
59 EFI_SIMPLE_NETWORK_PROTOCOL *SimpleNet;\r
60\r
61 Status = gBS->LocateProtocol (&gEfiSimpleNetworkProtocolGuid, NULL, (VOID **)&SimpleNet);\r
62 if (EFI_ERROR(Status)) {\r
63 return Status;\r
64 }\r
65\r
66 CopyMem (Mac, SimpleNet->Mode->CurrentAddress.Addr, sizeof (EFI_MAC_ADDRESS));\r
67 return Status;\r
68}\r
69\r
70\r
71CHAR8 *\r
72EFIAPI\r
73EblLoadFileBootTypeString (\r
74 IN EFI_HANDLE Handle\r
75 )\r
76{\r
77 EFI_STATUS Status;\r
78 VOID *NullPtr;\r
3402aac7 79\r
1e57a462 80 Status = gBS->HandleProtocol (Handle, &gEfiPxeBaseCodeProtocolGuid, &NullPtr);\r
81 if (!EFI_ERROR (Status)) {\r
82 return "EFI PXE Network Boot";\r
83 }\r
3402aac7
RC
84\r
85 return "";\r
1e57a462 86}\r
87\r
88EFI_STATUS\r
89EFIAPI\r
90EblPerformDHCP (\r
91 IN BOOLEAN SortOffers\r
92 )\r
93{\r
94 EFI_STATUS Status;\r
95 EFI_PXE_BASE_CODE_PROTOCOL *Pxe;\r
3402aac7 96\r
1e57a462 97 Status = gBS->LocateProtocol (&gEfiPxeBaseCodeProtocolGuid, NULL, (VOID **)&Pxe);\r
98 if (EFI_ERROR(Status)) {\r
99 return Status;\r
100 }\r
101\r
102 Status = Pxe->Start (Pxe, gUseIpv6);\r
103 if (EFI_ERROR(Status) && (Status != EFI_ALREADY_STARTED)) {\r
104 return Status;\r
105 }\r
106\r
107 Status = Pxe->Dhcp(Pxe, TRUE);\r
108 return Status;\r
109}\r
110\r
111\r
112EFI_STATUS\r
113EFIAPI\r
114EblSetStationIp (\r
115 IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL\r
116 IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL\r
117 )\r
118{\r
119 EFI_STATUS Status;\r
120 EFI_PXE_BASE_CODE_PROTOCOL *Pxe;\r
3402aac7 121\r
1e57a462 122 Status = gBS->LocateProtocol (&gEfiPxeBaseCodeProtocolGuid, NULL, (VOID **)&Pxe);\r
123 if (EFI_ERROR(Status)) {\r
124 return Status;\r
125 }\r
126\r
127 Status = Pxe->Start (Pxe, gUseIpv6);\r
128 if (EFI_ERROR(Status) && (Status != EFI_ALREADY_STARTED)) {\r
129 return Status;\r
130 }\r
3402aac7 131\r
1e57a462 132 Status = Pxe->SetStationIp (Pxe, NewStationIp, NewSubnetMask);\r
133 return Status;\r
134}\r
135\r
3402aac7 136\r
1e57a462 137EFI_STATUS\r
138EFIAPI\r
139EblMtftp (\r
140 IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,\r
141 IN OUT VOID *BufferPtr OPTIONAL,\r
142 IN BOOLEAN Overwrite,\r
143 IN OUT UINT64 *BufferSize,\r
144 IN UINTN *BlockSize OPTIONAL,\r
145 IN EFI_IP_ADDRESS *ServerIp,\r
146 IN UINT8 *Filename OPTIONAL,\r
147 IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,\r
148 IN BOOLEAN DontUseBuffer\r
149 )\r
150{\r
151 EFI_STATUS Status;\r
152 EFI_PXE_BASE_CODE_PROTOCOL *Pxe;\r
3402aac7 153\r
1e57a462 154 Status = gBS->LocateProtocol (&gEfiPxeBaseCodeProtocolGuid, NULL, (VOID **)&Pxe);\r
155 if (EFI_ERROR(Status)) {\r
156 return Status;\r
157 }\r
3402aac7 158\r
1e57a462 159 Status = Pxe->Mtftp (\r
160 Pxe,\r
161 Operation,\r
162 BufferPtr,\r
163 Overwrite,\r
164 BufferSize,\r
165 BlockSize,\r
166 ServerIp,\r
167 Filename,\r
168 Info,\r
169 DontUseBuffer\r
170 );\r
171 return Status;\r
172}\r
3402aac7 173\r