]> git.proxmox.com Git - mirror_edk2.git/blob - EmbeddedPkg/Ebl/Network.c
EmbeddedPkg: Add EFIAPI to several Ebl functions
[mirror_edk2.git] / EmbeddedPkg / Ebl / Network.c
1 /** @file
2 EBL commands for Network Devices
3
4 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
5 (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
6
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15 **/
16
17 #include "Ebl.h"
18
19 EFI_STATUS
20 ParseIp (
21 IN CHAR8 *String,
22 OUT EFI_IP_ADDRESS *Address
23 )
24 {
25 Address->v4.Addr[0] = (UINT8)AsciiStrDecimalToUintn (String);
26 String = AsciiStrStr(String, ".") + 1;
27 Address->v4.Addr[1] = (UINT8)AsciiStrDecimalToUintn (String);
28 String = AsciiStrStr(String, ".") + 1;
29 Address->v4.Addr[2] = (UINT8)AsciiStrDecimalToUintn (String);
30 String = AsciiStrStr(String, ".") + 1;
31 Address->v4.Addr[3] = (UINT8)AsciiStrDecimalToUintn (String);
32
33 return EFI_SUCCESS;
34 }
35
36 EFI_STATUS
37 EFIAPI
38 EblIpCmd (
39 IN UINTN Argc,
40 IN CHAR8 **Argv
41 )
42 {
43 EFI_STATUS Status = EFI_INVALID_PARAMETER;
44 EFI_MAC_ADDRESS Mac;
45 EFI_IP_ADDRESS Ip;
46
47 if (Argc == 1) {
48 // Get current IP/MAC
49
50 // Get current MAC address
51 Status = EblGetCurrentMacAddress (&Mac);
52 if (EFI_ERROR (Status)) {
53 goto Exit;
54 }
55
56 AsciiPrint ("MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n", Mac.Addr[0], Mac.Addr[1], Mac.Addr[2], Mac.Addr[3], Mac.Addr[4], Mac.Addr[5]);
57
58 // Get current IP address
59 Status = EblGetCurrentIpAddress (&Ip);
60 if (EFI_ERROR(Status)) {
61 AsciiPrint("IP Address is not configured.\n");
62 Status = EFI_SUCCESS;
63 goto Exit;
64 }
65
66 AsciiPrint("IP Address: %d.%d.%d.%d\n", Ip.v4.Addr[0], Ip.v4.Addr[1],Ip.v4.Addr[2], Ip.v4.Addr[3]);
67
68 } else if ((Argv[1][0] == 'r') && (Argc == 2)) {
69 // Get new address via dhcp
70 Status = EblPerformDHCP (TRUE);
71 } else if ((Argv[1][0] == 's') && (Argc == 3)) {
72 // Set static IP
73 Status = ParseIp (Argv[2], &Ip);
74 if (EFI_ERROR (Status)) {
75 goto Exit;
76 }
77
78 Status = EblSetStationIp (&Ip, NULL);
79 }
80
81 Exit:
82 return Status;
83 }
84
85 GLOBAL_REMOVE_IF_UNREFERENCED const EBL_COMMAND_TABLE mCmdNetworkTemplate[] =
86 {
87 {
88 "ip",
89 " ; print current ip address\n\r [r]; request DHCP address\n\r [s] ipaddr; set static IP address",
90 NULL,
91 EblIpCmd
92 }
93 };
94
95
96 /**
97 Initialize the commands in this in this file
98 **/
99 VOID
100 EblInitializeNetworkCmd (
101 VOID
102 )
103 {
104 EblAddCommands (mCmdNetworkTemplate, sizeof (mCmdNetworkTemplate)/sizeof (EBL_COMMAND_TABLE));
105 }
106