]> git.proxmox.com Git - mirror_edk2.git/blame - EmbeddedPkg/Library/EblNetworkLib/EblNetworkLib.c
Update the copyright notice format
[mirror_edk2.git] / EmbeddedPkg / Library / EblNetworkLib / EblNetworkLib.c
CommitLineData
2ef2b01e
A
1/** @file
2
60274cca 3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
2ef2b01e 4
60274cca 5 This program and the accompanying materials
2ef2b01e
A
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#include <Uefi.h>
16#include <Library/BaseMemoryLib.h>
17#include <Library/DebugLib.h>
18#include <Library/UefiRuntimeServicesTableLib.h>
19#include <Library/UefiBootServicesTableLib.h>
20
21#include <Protocol/SimpleNetwork.h>
22#include <Protocol/PxeBaseCode.h>
23
24
25BOOLEAN gUseIpv6 = FALSE;
26
27EFI_STATUS
28EFIAPI
29EblGetCurrentIpAddress (
30 IN OUT EFI_IP_ADDRESS *Ip
31 )
32{
33 EFI_STATUS Status;
34 EFI_PXE_BASE_CODE_PROTOCOL *Pxe;
35
36 Status = gBS->LocateProtocol (&gEfiPxeBaseCodeProtocolGuid, NULL, (VOID **)&Pxe);
37 if (EFI_ERROR(Status)) {
38 return Status;
39 }
40
41 Status = Pxe->Start (Pxe, gUseIpv6);
42 if (EFI_ERROR(Status) && (Status != EFI_ALREADY_STARTED)) {
43 return Status;
44 }
45
46 CopyMem (Ip, &Pxe->Mode->StationIp, sizeof (EFI_IP_ADDRESS));
47
48 return Status;
49}
50
51
52EFI_STATUS
53EFIAPI
54EblGetCurrentMacAddress (
55 IN OUT EFI_MAC_ADDRESS *Mac
56 )
57{
58 EFI_STATUS Status;
59 EFI_SIMPLE_NETWORK_PROTOCOL *SimpleNet;
60
61 Status = gBS->LocateProtocol (&gEfiSimpleNetworkProtocolGuid, NULL, (VOID **)&SimpleNet);
62 if (EFI_ERROR(Status)) {
63 return Status;
64 }
65
66 CopyMem (SimpleNet->Mode->CurrentAddress.Addr, Mac, sizeof (EFI_MAC_ADDRESS));
67 return Status;
68}
69
70
71CHAR8 *
72EFIAPI
73EblLoadFileBootTypeString (
74 IN EFI_HANDLE Handle
75 )
76{
77 EFI_STATUS Status;
78 VOID *NullPtr;
79
80 Status = gBS->HandleProtocol (Handle, &gEfiPxeBaseCodeProtocolGuid, &NullPtr);
81 if (!EFI_ERROR (Status)) {
82 return "EFI PXE Network Boot";
83 }
84
85 return "";
86}
87
88EFI_STATUS
89EFIAPI
90EblPerformDHCP (
91 IN BOOLEAN SortOffers
92 )
93{
94 EFI_STATUS Status;
95 EFI_PXE_BASE_CODE_PROTOCOL *Pxe;
96
97 Status = gBS->LocateProtocol (&gEfiPxeBaseCodeProtocolGuid, NULL, (VOID **)&Pxe);
98 if (EFI_ERROR(Status)) {
99 return Status;
100 }
101
102 Status = Pxe->Start (Pxe, gUseIpv6);
103 if (EFI_ERROR(Status) && (Status != EFI_ALREADY_STARTED)) {
104 return Status;
105 }
106
107 Status = Pxe->Dhcp(Pxe, TRUE);
108 return Status;
109}
110
111
112EFI_STATUS
113EFIAPI
114EblSetStationIp (
115 IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL
116 IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL
117 )
118{
119 EFI_STATUS Status;
120 EFI_PXE_BASE_CODE_PROTOCOL *Pxe;
121
122 Status = gBS->LocateProtocol (&gEfiPxeBaseCodeProtocolGuid, NULL, (VOID **)&Pxe);
123 if (EFI_ERROR(Status)) {
124 return Status;
125 }
126
127 Status = Pxe->Start (Pxe, gUseIpv6);
128 if (EFI_ERROR(Status) && (Status != EFI_ALREADY_STARTED)) {
129 return Status;
130 }
131
132 Status = Pxe->SetStationIp (Pxe, NewStationIp, NewSubnetMask);
133 return Status;
134}
135
136
137EFI_STATUS
138EFIAPI
139EblMtftp (
140 IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,
141 IN OUT VOID *BufferPtr OPTIONAL,
142 IN BOOLEAN Overwrite,
143 IN OUT UINT64 *BufferSize,
144 IN UINTN *BlockSize OPTIONAL,
145 IN EFI_IP_ADDRESS *ServerIp,
146 IN UINT8 *Filename OPTIONAL,
147 IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,
148 IN BOOLEAN DontUseBuffer
149 )
150{
151 EFI_STATUS Status;
152 EFI_PXE_BASE_CODE_PROTOCOL *Pxe;
153
154 Status = gBS->LocateProtocol (&gEfiPxeBaseCodeProtocolGuid, NULL, (VOID **)&Pxe);
155 if (EFI_ERROR(Status)) {
156 return Status;
157 }
158
159 Status = Pxe->Mtftp (
160 Pxe,
161 Operation,
162 BufferPtr,
163 Overwrite,
164 BufferSize,
165 BlockSize,
166 ServerIp,
167 Filename,
168 Info,
169 DontUseBuffer
170 );
171 return Status;
172}
173