Tested on Mac OS X.\r
\r
Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>\r
-Portitions copyright (c) 2011, Apple Inc. All rights reserved.\r
+Portions copyright (c) 2011, Apple Inc. All rights reserved.\r
\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
-\r
#include "Host.h"\r
\r
#ifdef __APPLE__\r
\r
+ #include <Library/NetLib.h>\r
\r
-#include <Library/NetLib.h>\r
-\r
-\r
-#define EMU_SNP_PRIVATE_SIGNATURE SIGNATURE_32('E', 'M', 's', 'n')\r
+#define EMU_SNP_PRIVATE_SIGNATURE SIGNATURE_32('E', 'M', 's', 'n')\r
typedef struct {\r
- UINTN Signature;\r
+ UINTN Signature;\r
\r
- EMU_IO_THUNK_PROTOCOL *Thunk;\r
- EMU_SNP_PROTOCOL EmuSnp;\r
- EFI_SIMPLE_NETWORK_MODE *Mode;\r
+ EMU_IO_THUNK_PROTOCOL *Thunk;\r
+ EMU_SNP_PROTOCOL EmuSnp;\r
+ EFI_SIMPLE_NETWORK_MODE *Mode;\r
\r
- int BpfFd;\r
- char *InterfaceName;\r
- EFI_MAC_ADDRESS MacAddress;\r
- u_int ReadBufferSize;\r
- VOID *ReadBuffer;\r
+ int BpfFd;\r
+ char *InterfaceName;\r
+ EFI_MAC_ADDRESS MacAddress;\r
+ u_int ReadBufferSize;\r
+ VOID *ReadBuffer;\r
\r
//\r
// Two walking pointers to manage the multiple packets that can be returned\r
// in a single read.\r
//\r
- VOID *CurrentReadPointer;\r
- VOID *EndReadPointer;\r
-\r
- UINT32 ReceivedPackets;\r
- UINT32 DroppedPackets;\r
+ VOID *CurrentReadPointer;\r
+ VOID *EndReadPointer;\r
\r
+ UINT32 ReceivedPackets;\r
+ UINT32 DroppedPackets;\r
} EMU_SNP_PRIVATE;\r
\r
#define EMU_SNP_PRIVATE_DATA_FROM_THIS(a) \\r
CR(a, EMU_SNP_PRIVATE, EmuSnp, EMU_SNP_PRIVATE_SIGNATURE)\r
\r
-\r
//\r
// Strange, but there doesn't appear to be any structure for the Ethernet header in edk2...\r
//\r
\r
typedef struct {\r
- UINT8 DstAddr[NET_ETHER_ADDR_LEN];\r
- UINT8 SrcAddr[NET_ETHER_ADDR_LEN];\r
- UINT16 Type;\r
+ UINT8 DstAddr[NET_ETHER_ADDR_LEN];\r
+ UINT8 SrcAddr[NET_ETHER_ADDR_LEN];\r
+ UINT16 Type;\r
} ETHERNET_HEADER;\r
\r
/**\r
IN EFI_SIMPLE_NETWORK_MODE *Mode\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
-static struct bpf_insn mFilterInstructionTemplate[] = {\r
+static struct bpf_insn mFilterInstructionTemplate[] = {\r
// Load 4 bytes from the destination MAC address.\r
- BPF_STMT (BPF_LD + BPF_W + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[0])),\r
+ BPF_STMT (BPF_LD + BPF_W + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[0])),\r
\r
// Compare to first 4 bytes of fake MAC address.\r
- BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0x12345678, 0, 3 ),\r
+ BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0x12345678, 0, 3),\r
\r
// Load remaining 2 bytes from the destination MAC address.\r
- BPF_STMT (BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( ETHERNET_HEADER, DstAddr[4])),\r
+ BPF_STMT (BPF_LD + BPF_H + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[4])),\r
\r
// Compare to remaining 2 bytes of fake MAC address.\r
- BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0x9ABC, 5, 0 ),\r
+ BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0x9ABC, 5, 0),\r
\r
// Load 4 bytes from the destination MAC address.\r
- BPF_STMT (BPF_LD + BPF_W + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[0])),\r
+ BPF_STMT (BPF_LD + BPF_W + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[0])),\r
\r
// Compare to first 4 bytes of broadcast MAC address.\r
- BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0xFFFFFFFF, 0, 2),\r
+ BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0xFFFFFFFF, 0, 2),\r
\r
// Load remaining 2 bytes from the destination MAC address.\r
- BPF_STMT (BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( ETHERNET_HEADER, DstAddr[4])),\r
+ BPF_STMT (BPF_LD + BPF_H + BPF_ABS, OFFSET_OF (ETHERNET_HEADER, DstAddr[4])),\r
\r
// Compare to remaining 2 bytes of broadcast MAC address.\r
- BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0xFFFF, 1, 0),\r
+ BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 0xFFFF, 1, 0),\r
\r
// Reject packet.\r
- BPF_STMT (BPF_RET + BPF_K, 0),\r
+ BPF_STMT (BPF_RET + BPF_K, 0),\r
\r
// Receive entire packet.\r
- BPF_STMT (BPF_RET + BPF_K, -1)\r
+ BPF_STMT (BPF_RET + BPF_K, -1)\r
};\r
\r
-\r
EFI_STATUS\r
OpenBpfFileDescriptor (\r
IN EMU_SNP_PRIVATE *Private,\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
-\r
/**\r
Changes the state of a network interface from "stopped" to "started".\r
\r
IN EMU_SNP_PROTOCOL *This\r
)\r
{\r
- EFI_STATUS Status;\r
- EMU_SNP_PRIVATE *Private;\r
- struct ifreq BoundIf;\r
- struct bpf_program BpfProgram;\r
- struct bpf_insn *FilterProgram;\r
+ EFI_STATUS Status;\r
+ EMU_SNP_PRIVATE *Private;\r
+ struct ifreq BoundIf;\r
+ struct bpf_program BpfProgram;\r
+ struct bpf_insn *FilterProgram;\r
u_int Value;\r
u_int ReadBufferSize;\r
- UINT16 Temp16;\r
- UINT32 Temp32;\r
+ UINT16 Temp16;\r
+ UINT32 Temp32;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
break;\r
}\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
Private->ReadBuffer = NULL;\r
if (Private->BpfFd == 0) {\r
Status = OpenBpfFileDescriptor (Private, &Private->BpfFd);\r
// Allocate read buffer.\r
//\r
Private->ReadBufferSize = ReadBufferSize;\r
- Private->ReadBuffer = malloc (Private->ReadBufferSize);\r
+ Private->ReadBuffer = malloc (Private->ReadBufferSize);\r
if (Private->ReadBuffer == NULL) {\r
goto ErrorExit;\r
}\r
// Install our packet filter: successful reads should only produce broadcast or unicast\r
// packets directed to our fake MAC address.\r
//\r
- FilterProgram = malloc (sizeof (mFilterInstructionTemplate)) ;\r
+ FilterProgram = malloc (sizeof (mFilterInstructionTemplate));\r
if ( FilterProgram == NULL ) {\r
goto ErrorExit;\r
}\r
CopyMem (&Temp16, &Private->Mode->CurrentAddress.Addr[4], sizeof (UINT16));\r
FilterProgram[3].k = NTOHS (Temp16);\r
\r
- BpfProgram.bf_len = sizeof (mFilterInstructionTemplate) / sizeof (struct bpf_insn);\r
+ BpfProgram.bf_len = sizeof (mFilterInstructionTemplate) / sizeof (struct bpf_insn);\r
BpfProgram.bf_insns = FilterProgram;\r
\r
if (ioctl (Private->BpfFd, BIOCSETF, &BpfProgram) < 0) {\r
goto DeviceErrorExit;\r
}\r
\r
-\r
Private->Mode->State = EfiSimpleNetworkStarted;\r
}\r
\r
free (Private->ReadBuffer);\r
Private->ReadBuffer = NULL;\r
}\r
+\r
return Status;\r
}\r
\r
-\r
/**\r
Changes the state of a network interface from "started" to "stopped".\r
\r
IN EMU_SNP_PROTOCOL *This\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
}\r
\r
if (Private->ReadBuffer != NULL) {\r
- free (Private->ReadBuffer );\r
+ free (Private->ReadBuffer);\r
Private->CurrentReadPointer = Private->EndReadPointer = Private->ReadBuffer = NULL;\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Resets a network adapter and allocates the transmit and receive buffers\r
required by the network interface; optionally, also requests allocation\r
**/\r
EFI_STATUS\r
EmuSnpInitialize (\r
- IN EMU_SNP_PROTOCOL *This,\r
- IN UINTN ExtraRxBufferSize OPTIONAL,\r
- IN UINTN ExtraTxBufferSize OPTIONAL\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ IN UINTN ExtraRxBufferSize OPTIONAL,\r
+ IN UINTN ExtraTxBufferSize OPTIONAL\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
break;\r
}\r
\r
- Private->Mode->MCastFilterCount = 0;\r
+ Private->Mode->MCastFilterCount = 0;\r
Private->Mode->ReceiveFilterSetting = 0;\r
ZeroMem (Private->Mode->MCastFilter, sizeof (Private->Mode->MCastFilter));\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Resets a network adapter and re-initializes it with the parameters that were\r
provided in the previous call to Initialize().\r
**/\r
EFI_STATUS\r
EmuSnpReset (\r
- IN EMU_SNP_PROTOCOL *This,\r
- IN BOOLEAN ExtendedVerification\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ IN BOOLEAN ExtendedVerification\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Resets a network adapter and leaves it in a state that is safe for\r
another driver to initialize.\r
IN EMU_SNP_PROTOCOL *This\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
Private->Mode->State = EfiSimpleNetworkStarted;\r
\r
Private->Mode->ReceiveFilterSetting = 0;\r
- Private->Mode->MCastFilterCount = 0;\r
+ Private->Mode->MCastFilterCount = 0;\r
ZeroMem (Private->Mode->MCastFilter, sizeof (Private->Mode->MCastFilter));\r
\r
if (Private->BpfFd != 0) {\r
**/\r
EFI_STATUS\r
EmuSnpReceiveFilters (\r
- IN EMU_SNP_PROTOCOL *This,\r
- IN UINT32 Enable,\r
- IN UINT32 Disable,\r
- IN BOOLEAN ResetMCastFilter,\r
- IN UINTN MCastFilterCnt OPTIONAL,\r
- IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ IN UINT32 Enable,\r
+ IN UINT32 Disable,\r
+ IN BOOLEAN ResetMCastFilter,\r
+ IN UINTN MCastFilterCnt OPTIONAL,\r
+ IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Modifies or resets the current station address, if supported.\r
\r
**/\r
EFI_STATUS\r
EmuSnpStationAddress (\r
- IN EMU_SNP_PROTOCOL *This,\r
- IN BOOLEAN Reset,\r
- IN EFI_MAC_ADDRESS *New OPTIONAL\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ IN BOOLEAN Reset,\r
+ IN EFI_MAC_ADDRESS *New OPTIONAL\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
return EFI_UNSUPPORTED;\r
}\r
\r
-\r
/**\r
Resets or collects the statistics on a network interface.\r
\r
**/\r
EFI_STATUS\r
EmuSnpStatistics (\r
- IN EMU_SNP_PROTOCOL *This,\r
- IN BOOLEAN Reset,\r
- IN OUT UINTN *StatisticsSize OPTIONAL,\r
- OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ IN BOOLEAN Reset,\r
+ IN OUT UINTN *StatisticsSize OPTIONAL,\r
+ OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
return EFI_UNSUPPORTED;\r
}\r
\r
-\r
/**\r
Converts a multicast IP address to a multicast HW MAC address.\r
\r
**/\r
EFI_STATUS\r
EmuSnpMCastIpToMac (\r
- IN EMU_SNP_PROTOCOL *This,\r
- IN BOOLEAN IPv6,\r
- IN EFI_IP_ADDRESS *IP,\r
- OUT EFI_MAC_ADDRESS *MAC\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ IN BOOLEAN IPv6,\r
+ IN EFI_IP_ADDRESS *IP,\r
+ OUT EFI_MAC_ADDRESS *MAC\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
return EFI_UNSUPPORTED;\r
}\r
\r
-\r
/**\r
Performs read and write operations on the NVRAM device attached to a\r
network interface.\r
**/\r
EFI_STATUS\r
EmuSnpNvData (\r
- IN EMU_SNP_PROTOCOL *This,\r
- IN BOOLEAN ReadWrite,\r
- IN UINTN Offset,\r
- IN UINTN BufferSize,\r
- IN OUT VOID *Buffer\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ IN BOOLEAN ReadWrite,\r
+ IN UINTN Offset,\r
+ IN UINTN BufferSize,\r
+ IN OUT VOID *Buffer\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
**/\r
EFI_STATUS\r
EmuSnpGetStatus (\r
- IN EMU_SNP_PROTOCOL *This,\r
- OUT UINT32 *InterruptStatus OPTIONAL,\r
- OUT VOID **TxBuf OPTIONAL\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ OUT UINT32 *InterruptStatus OPTIONAL,\r
+ OUT VOID **TxBuf OPTIONAL\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
+ EMU_SNP_PRIVATE *Private;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
- if (TxBuf != NULL) {\r
- *((UINT8 **)TxBuf) = (UINT8 *)1;\r
- }\r
-\r
if ( InterruptStatus != NULL ) {\r
*InterruptStatus = EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT;\r
}\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Places a packet in the transmit queue of a network interface.\r
\r
**/\r
EFI_STATUS\r
EmuSnpTransmit (\r
- IN EMU_SNP_PROTOCOL *This,\r
- IN UINTN HeaderSize,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer,\r
- IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL,\r
- IN EFI_MAC_ADDRESS *DestAddr OPTIONAL,\r
- IN UINT16 *Protocol OPTIONAL\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ IN UINTN HeaderSize,\r
+ IN UINTN BufferSize,\r
+ IN VOID *Buffer,\r
+ IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL,\r
+ IN EFI_MAC_ADDRESS *DestAddr OPTIONAL,\r
+ IN UINT16 *Protocol OPTIONAL\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
- ETHERNET_HEADER *EnetHeader;\r
+ EMU_SNP_PRIVATE *Private;\r
+ ETHERNET_HEADER *EnetHeader;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
SrcAddr = &Private->Mode->CurrentAddress;\r
}\r
\r
- EnetHeader = (ETHERNET_HEADER *) Buffer;\r
+ EnetHeader = (ETHERNET_HEADER *)Buffer;\r
\r
CopyMem (EnetHeader->DstAddr, DestAddr, NET_ETHER_ADDR_LEN);\r
CopyMem (EnetHeader->SrcAddr, SrcAddr, NET_ETHER_ADDR_LEN);\r
\r
- EnetHeader->Type = HTONS(*Protocol);\r
+ EnetHeader->Type = HTONS (*Protocol);\r
}\r
\r
- if (write (Private->BpfFd, Buffer, BufferSize) < 0) {\r
+ if (write (Private->BpfFd, Buffer, BufferSize) < 0) {\r
return EFI_DEVICE_ERROR;\r
}\r
\r
**/\r
EFI_STATUS\r
EmuSnpReceive (\r
- IN EMU_SNP_PROTOCOL *This,\r
- OUT UINTN *HeaderSize OPTIONAL,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer,\r
- OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,\r
- OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,\r
- OUT UINT16 *Protocol OPTIONAL\r
+ IN EMU_SNP_PROTOCOL *This,\r
+ OUT UINTN *HeaderSize OPTIONAL,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer,\r
+ OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,\r
+ OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,\r
+ OUT UINT16 *Protocol OPTIONAL\r
)\r
{\r
- EMU_SNP_PRIVATE *Private;\r
- struct bpf_hdr *BpfHeader;\r
- struct bpf_stat BpfStats;\r
- ETHERNET_HEADER *EnetHeader;\r
- ssize_t Result;\r
+ EMU_SNP_PRIVATE *Private;\r
+ struct bpf_hdr *BpfHeader;\r
+ struct bpf_stat BpfStats;\r
+ ETHERNET_HEADER *EnetHeader;\r
+ ssize_t Result;\r
\r
Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
\r
return EFI_NOT_STARTED;\r
}\r
\r
- ZeroMem (&BpfStats, sizeof( BpfStats));\r
+ ZeroMem (&BpfStats, sizeof (BpfStats));\r
\r
if (ioctl (Private->BpfFd, BIOCGSTATS, &BpfStats) == 0) {\r
Private->ReceivedPackets += BpfStats.bs_recv;\r
}\r
\r
Private->CurrentReadPointer = Private->ReadBuffer;\r
- Private->EndReadPointer = Private->CurrentReadPointer + Result;\r
+ Private->EndReadPointer = Private->CurrentReadPointer + Result;\r
}\r
\r
- BpfHeader = Private->CurrentReadPointer;\r
+ BpfHeader = Private->CurrentReadPointer;\r
EnetHeader = Private->CurrentReadPointer + BpfHeader->bh_hdrlen;\r
\r
if (BpfHeader->bh_caplen > *BufferSize) {\r
return EFI_SUCCESS;\r
}\r
\r
-\r
-EMU_SNP_PROTOCOL gEmuSnpProtocol = {\r
+EMU_SNP_PROTOCOL gEmuSnpProtocol = {\r
GasketSnpCreateMapping,\r
GasketSnpStart,\r
GasketSnpStop,\r
\r
EFI_STATUS\r
GetInterfaceMacAddr (\r
- EMU_SNP_PRIVATE *Private\r
+ EMU_SNP_PRIVATE *Private\r
)\r
{\r
EFI_STATUS Status;\r
);\r
\r
Status = EFI_NOT_FOUND;\r
- If = IfAddrs;\r
+ If = IfAddrs;\r
while (If != NULL) {\r
IfSdl = (struct sockaddr_dl *)If->ifa_addr;\r
\r
if (IfSdl->sdl_family == AF_LINK) {\r
- if (!AsciiStrCmp( Private->InterfaceName, If->ifa_name)) {\r
+ if (!AsciiStrCmp (Private->InterfaceName, If->ifa_name)) {\r
CopyMem (&Private->MacAddress, LLADDR (IfSdl), NET_ETHER_ADDR_LEN);\r
\r
Status = EFI_SUCCESS;\r
return Status;\r
}\r
\r
-\r
EFI_STATUS\r
EmuSnpThunkOpen (\r
- IN EMU_IO_THUNK_PROTOCOL *This\r
+ IN EMU_IO_THUNK_PROTOCOL *This\r
)\r
{\r
EMU_SNP_PRIVATE *Private;\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
-\r
Private->Signature = EMU_SNP_PRIVATE_SIGNATURE;\r
Private->Thunk = This;\r
CopyMem (&Private->EmuSnp, &gEmuSnpProtocol, sizeof (gEmuSnpProtocol));\r
return EFI_SUCCESS;\r
}\r
\r
-\r
EFI_STATUS\r
EmuSnpThunkClose (\r
- IN EMU_IO_THUNK_PROTOCOL *This\r
+ IN EMU_IO_THUNK_PROTOCOL *This\r
)\r
{\r
EMU_SNP_PRIVATE *Private;\r
return EFI_SUCCESS;\r
}\r
\r
-\r
-\r
-EMU_IO_THUNK_PROTOCOL gSnpThunkIo = {\r
+EMU_IO_THUNK_PROTOCOL gSnpThunkIo = {\r
&gEmuSnpProtocolGuid,\r
NULL,\r
NULL,\r