]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmulatorPkg / Unix / Host / BerkeleyPacketFilter.c
index 4ba27c2a6a57f740474756742f65a96f58968e1a..ecfdacc7483828ea18785bddda7331d3b19283e1 100644 (file)
@@ -4,66 +4,55 @@
 \r
  Tested on Mac OS X.\r
 \r
-Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR>\r
-Portitions copyright (c) 2011, Apple Inc. All rights reserved.\r
+Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>\r
+Portions copyright (c) 2011, Apple Inc. All rights reserved.\r
 \r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\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
@@ -82,7 +71,7 @@ EmuSnpCreateMapping (
   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
@@ -106,40 +95,38 @@ EmuSnpCreateMapping (
   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
@@ -177,7 +164,6 @@ OpenBpfFileDescriptor (
   return EFI_OUT_OF_RESOURCES;\r
 }\r
 \r
-\r
 /**\r
   Changes the state of a network interface from "stopped" to "started".\r
 \r
@@ -195,15 +181,15 @@ EmuSnpStart (
   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
-       u_int                                                    Value;\r
-       u_int                                            ReadBufferSize;\r
-  UINT16             Temp16;\r
-  UINT32             Temp32;\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
 \r
   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This);\r
 \r
@@ -221,7 +207,8 @@ EmuSnpStart (
       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
     if (EFI_ERROR (Status)) {\r
@@ -229,32 +216,32 @@ EmuSnpStart (
     }\r
 \r
     //\r
-               // Get the read buffer size.\r
-               //\r
-               if (ioctl (Private->BpfFd, BIOCGBLEN, &ReadBufferSize) < 0) {\r
-                       goto DeviceErrorExit;\r
-               }\r
-\r
-               //\r
-               // Default value from BIOCGBLEN is usually too small, so use a much larger size, if necessary.\r
-               //\r
-               if (ReadBufferSize < FixedPcdGet32 (PcdNetworkPacketFilterSize)) {\r
-                       ReadBufferSize = FixedPcdGet32 (PcdNetworkPacketFilterSize);\r
-                       if (ioctl (Private->BpfFd, BIOCSBLEN, &ReadBufferSize) < 0) {\r
-                               goto DeviceErrorExit;\r
-                       }\r
-               }\r
-\r
-               //\r
+    // Get the read buffer size.\r
+    //\r
+    if (ioctl (Private->BpfFd, BIOCGBLEN, &ReadBufferSize) < 0) {\r
+      goto DeviceErrorExit;\r
+    }\r
+\r
+    //\r
+    // Default value from BIOCGBLEN is usually too small, so use a much larger size, if necessary.\r
+    //\r
+    if (ReadBufferSize < FixedPcdGet32 (PcdNetworkPacketFilterSize)) {\r
+      ReadBufferSize = FixedPcdGet32 (PcdNetworkPacketFilterSize);\r
+      if (ioctl (Private->BpfFd, BIOCSBLEN, &ReadBufferSize) < 0) {\r
+        goto DeviceErrorExit;\r
+      }\r
+    }\r
+\r
+    //\r
     // Associate our interface with this BPF file descriptor.\r
     //\r
-    AsciiStrCpy (BoundIf.ifr_name, Private->InterfaceName);\r
+    AsciiStrCpyS (BoundIf.ifr_name, sizeof (BoundIf.ifr_name), Private->InterfaceName);\r
     if (ioctl (Private->BpfFd, BIOCSETIF, &BoundIf) < 0) {\r
       goto DeviceErrorExit;\r
     }\r
 \r
     //\r
-               // Enable immediate mode.\r
+    // Enable immediate mode.\r
     //\r
     Value = 1;\r
     if (ioctl (Private->BpfFd, BIOCIMMEDIATE, &Value) < 0) {\r
@@ -286,8 +273,8 @@ EmuSnpStart (
     //\r
     // Allocate read buffer.\r
     //\r
-               Private->ReadBufferSize = ReadBufferSize;\r
-               Private->ReadBuffer = malloc (Private->ReadBufferSize);\r
+    Private->ReadBufferSize = ReadBufferSize;\r
+    Private->ReadBuffer     = malloc (Private->ReadBufferSize);\r
     if (Private->ReadBuffer == NULL) {\r
       goto ErrorExit;\r
     }\r
@@ -295,10 +282,10 @@ EmuSnpStart (
     Private->CurrentReadPointer = Private->EndReadPointer = Private->ReadBuffer;\r
 \r
     //\r
-               // Install our packet filter: successful reads should only produce broadcast or unicast\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
@@ -313,7 +300,7 @@ EmuSnpStart (
     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
@@ -329,7 +316,6 @@ EmuSnpStart (
       goto DeviceErrorExit;\r
     }\r
 \r
-\r
     Private->Mode->State = EfiSimpleNetworkStarted;\r
   }\r
 \r
@@ -342,10 +328,10 @@ ErrorExit:
     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
@@ -363,7 +349,7 @@ EmuSnpStop (
   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
@@ -386,7 +372,7 @@ EmuSnpStop (
   }\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
@@ -395,7 +381,6 @@ EmuSnpStop (
   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
@@ -424,12 +409,12 @@ EmuSnpStop (
 **/\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
@@ -446,7 +431,7 @@ EmuSnpInitialize (
       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
@@ -455,7 +440,6 @@ EmuSnpInitialize (
   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
@@ -474,11 +458,11 @@ EmuSnpInitialize (
 **/\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
@@ -498,7 +482,6 @@ EmuSnpReset (
   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
@@ -517,7 +500,7 @@ EmuSnpShutdown (
   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
@@ -537,7 +520,7 @@ EmuSnpShutdown (
   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
@@ -579,15 +562,15 @@ EmuSnpShutdown (
 **/\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
@@ -595,7 +578,6 @@ EmuSnpReceiveFilters (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
 /**\r
   Modifies or resets the current station address, if supported.\r
 \r
@@ -613,19 +595,18 @@ EmuSnpReceiveFilters (
 **/\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
@@ -649,20 +630,19 @@ EmuSnpStationAddress (
 **/\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
@@ -686,20 +666,19 @@ EmuSnpStatistics (
 **/\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
@@ -722,14 +701,14 @@ EmuSnpMCastIpToMac (
 **/\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
@@ -763,19 +742,15 @@ EmuSnpNvData (
 **/\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
@@ -783,7 +758,6 @@ EmuSnpGetStatus (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
 /**\r
   Places a packet in the transmit queue of a network interface.\r
 \r
@@ -819,17 +793,17 @@ EmuSnpGetStatus (
 **/\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
@@ -846,15 +820,15 @@ EmuSnpTransmit (
       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
@@ -895,20 +869,20 @@ EmuSnpTransmit (
 **/\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
@@ -916,19 +890,19 @@ EmuSnpReceive (
     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
-               if (BpfStats.bs_drop > Private->DroppedPackets) {\r
-                       printf (\r
-                         "SNP: STATS: RCVD = %d DROPPED = %d.  Probably need to increase BPF PcdNetworkPacketFilterSize?\n",\r
-                               BpfStats.bs_recv,\r
-                               BpfStats.bs_drop - Private->DroppedPackets\r
-                               );\r
-                       Private->DroppedPackets = BpfStats.bs_drop;\r
-               }\r
-       }\r
+  if (ioctl (Private->BpfFd, BIOCGSTATS, &BpfStats) == 0) {\r
+    Private->ReceivedPackets += BpfStats.bs_recv;\r
+    if (BpfStats.bs_drop > Private->DroppedPackets) {\r
+      printf (\r
+        "SNP: STATS: RCVD = %d DROPPED = %d.  Probably need to increase BPF PcdNetworkPacketFilterSize?\n",\r
+        BpfStats.bs_recv,\r
+        BpfStats.bs_drop - Private->DroppedPackets\r
+        );\r
+      Private->DroppedPackets = BpfStats.bs_drop;\r
+    }\r
+  }\r
 \r
   //\r
   // Do we have any remaining packets from the previous read?\r
@@ -945,10 +919,10 @@ EmuSnpReceive (
     }\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
@@ -981,8 +955,7 @@ EmuSnpReceive (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
-EMU_SNP_PROTOCOL gEmuSnpProtocol = {\r
+EMU_SNP_PROTOCOL  gEmuSnpProtocol = {\r
   GasketSnpCreateMapping,\r
   GasketSnpStart,\r
   GasketSnpStop,\r
@@ -1001,10 +974,10 @@ EMU_SNP_PROTOCOL gEmuSnpProtocol = {
 \r
 EFI_STATUS\r
 GetInterfaceMacAddr (\r
-  EMU_SNP_PRIVATE    *Private\r
+  EMU_SNP_PRIVATE  *Private\r
   )\r
 {\r
-       EFI_STATUS                                Status;\r
+  EFI_STATUS          Status;\r
   struct ifaddrs      *IfAddrs;\r
   struct ifaddrs      *If;\r
   struct sockaddr_dl  *IfSdl;\r
@@ -1022,15 +995,19 @@ GetInterfaceMacAddr (
     goto Exit;\r
   }\r
 \r
-  UnicodeStrToAsciiStr (Private->Thunk->ConfigString, Private->InterfaceName);\r
+  UnicodeStrToAsciiStrS (\r
+    Private->Thunk->ConfigString,\r
+    Private->InterfaceName,\r
+    StrSize (Private->Thunk->ConfigString)\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 (!AsciiStrCmpPrivate->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
@@ -1046,10 +1023,9 @@ Exit:
   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
@@ -1067,7 +1043,6 @@ EmuSnpThunkOpen (
     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
@@ -1078,10 +1053,9 @@ EmuSnpThunkOpen (
   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
@@ -1096,9 +1070,7 @@ EmuSnpThunkClose (
   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