]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UnixPkg/UnixSnpDxe/UnixSnp.c
Fix issue with fixing tabs.
[mirror_edk2.git] / UnixPkg / UnixSnpDxe / UnixSnp.c
index 8dcadd75082a462ae9cfe93db43db750d7701235..b91004191182d060d8697d647c6bd1966aaadc9c 100644 (file)
@@ -24,12 +24,12 @@ Abstract:
 \r
 EFI_DRIVER_BINDING_PROTOCOL gUnixSnpDriverBinding =\r
 {\r
-       UnixSnpDriverBindingSupported,\r
-       UnixSnpDriverBindingStart,\r
-       UnixSnpDriverBindingStop,\r
-       0xA,\r
-       NULL,\r
-       NULL\r
+  UnixSnpDriverBindingSupported,\r
+  UnixSnpDriverBindingStart,\r
+  UnixSnpDriverBindingStop,\r
+  0xA,\r
+  NULL,\r
+  NULL\r
 };\r
 \r
 /**\r
@@ -43,8 +43,8 @@ EFI_DRIVER_BINDING_PROTOCOL gUnixSnpDriverBinding =
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpStart(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This\r
+  );\r
   \r
 /**\r
   Changes the state of a network interface from "started" to "stopped".\r
@@ -57,8 +57,8 @@ UnixSnpStart(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpStop(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This\r
+  );\r
   \r
 /**\r
   Resets a network adapter and allocates the transmit and receive buffers \r
@@ -83,10 +83,10 @@ UnixSnpStop(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpInitialize(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN UINTN                                                        ExtraRxBufferSize OPTIONAL,\r
-       IN UINTN                                                        ExtraTxBufferSize OPTIONAL\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN UINTN              ExtraRxBufferSize OPTIONAL,\r
+  IN UINTN              ExtraTxBufferSize OPTIONAL\r
+  );\r
   \r
 /**\r
   Resets a network adapter and re-initializes it with the parameters that were \r
@@ -103,9 +103,9 @@ UnixSnpInitialize(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpReset(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      ExtendedVerification\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              ExtendedVerification\r
+  );\r
 \r
 /**\r
   Resets a network adapter and leaves it in a state that is safe for \r
@@ -119,8 +119,8 @@ UnixSnpReset(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpShutdown(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This\r
+  );\r
 \r
 /**\r
   Manages the multicast receive filters of a network interface.\r
@@ -146,13 +146,13 @@ UnixSnpShutdown(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpReceiveFilters(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN UINT32                                                       EnableBits,\r
-       IN UINT32                                                       DisableBits,\r
-       IN BOOLEAN                                                      ResetMcastFilter,\r
-       IN UINTN                                                        McastFilterCount OPTIONAL,\r
-       IN EFI_MAC_ADDRESS*                                     McastFilter OPTIONAL\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN UINT32              EnableBits,\r
+  IN UINT32              DisableBits,\r
+  IN BOOLEAN              ResetMcastFilter,\r
+  IN UINTN              McastFilterCount OPTIONAL,\r
+  IN EFI_MAC_ADDRESS*          McastFilter OPTIONAL\r
+  );\r
 \r
 /**\r
   Modifies or resets the current station address, if supported.\r
@@ -168,10 +168,10 @@ UnixSnpReceiveFilters(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpStationAddress(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      Reset,\r
-       IN EFI_MAC_ADDRESS*                                     NewMacAddr OPTIONAL\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              Reset,\r
+  IN EFI_MAC_ADDRESS*          NewMacAddr OPTIONAL\r
+  );\r
 \r
 /**\r
   Resets or collects the statistics on a network interface.\r
@@ -195,11 +195,11 @@ UnixSnpStationAddress(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpStatistics(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      Reset,\r
-       IN OUT UINTN*                                           StatisticsSize OPTIONAL,\r
-       OUT EFI_NETWORK_STATISTICS*                     StatisticsTable OPTIONAL\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              Reset,\r
+  IN OUT UINTN*            StatisticsSize OPTIONAL,\r
+  OUT EFI_NETWORK_STATISTICS*      StatisticsTable OPTIONAL\r
+  );\r
   \r
 /**\r
   Converts a multicast IP address to a multicast HW MAC address.\r
@@ -223,11 +223,11 @@ UnixSnpStatistics(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpMcastIptoMac(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      Ipv6,\r
-       IN EFI_IP_ADDRESS*                                      Ip,\r
-       OUT EFI_MAC_ADDRESS*                            Mac\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              Ipv6,\r
+  IN EFI_IP_ADDRESS*          Ip,\r
+  OUT EFI_MAC_ADDRESS*        Mac\r
+  );\r
 \r
 /**\r
   Performs read and write operations on the NVRAM device attached to a \r
@@ -248,12 +248,12 @@ UnixSnpMcastIptoMac(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpNvdata(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      ReadOrWrite,\r
-       IN UINTN                                                        Offset,\r
-       IN UINTN                                                        BufferSize,\r
-       IN OUT VOID*                                            Buffer\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              ReadOrWrite,\r
+  IN UINTN              Offset,\r
+  IN UINTN              BufferSize,\r
+  IN OUT VOID*            Buffer\r
+  );\r
 \r
 /**\r
   Reads the current interrupt status and recycled transmit buffer status from \r
@@ -279,10 +279,10 @@ UnixSnpNvdata(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpGetStatus(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       OUT UINT32*                                                     InterruptStatus,\r
-       OUT VOID**                                                      TxBuffer\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  OUT UINT32*              InterruptStatus,\r
+  OUT VOID**              TxBuffer\r
+  );\r
 \r
 /**\r
   Places a packet in the transmit queue of a network interface.\r
@@ -316,14 +316,14 @@ UnixSnpGetStatus(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpTransmit(\r
-       IN EFI_SIMPLE_NETWORK_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
+  IN EFI_SIMPLE_NETWORK_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
 /**\r
   Receives a packet from a network interface.\r
@@ -358,21 +358,21 @@ UnixSnpTransmit(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpReceive(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       OUT UINTN*                                                      HeaderSize OPTIONAL,\r
-       IN OUT UINTN*                                           BuffSize,\r
-       OUT VOID*                                                       Buffer,\r
-       OUT EFI_MAC_ADDRESS*                            SourceAddr OPTIONAL,\r
-       OUT EFI_MAC_ADDRESS*                            DestinationAddr OPTIONAL,\r
-       OUT UINT16*                                                     Protocol OPTIONAL\r
-       );\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  OUT UINTN*              HeaderSize OPTIONAL,\r
+  IN OUT UINTN*            BuffSize,\r
+  OUT VOID*              Buffer,\r
+  OUT EFI_MAC_ADDRESS*        SourceAddr OPTIONAL,\r
+  OUT EFI_MAC_ADDRESS*        DestinationAddr OPTIONAL,\r
+  OUT UINT16*              Protocol OPTIONAL\r
+  );\r
 \r
 VOID\r
 EFIAPI\r
 UnixSnpWaitForPacketNotify(\r
-       IN EFI_EVENT                                            Event,\r
-       IN VOID*                                                        Private\r
-       );\r
+  IN EFI_EVENT            Event,\r
+  IN VOID*              Private\r
+  );\r
 \r
 //\r
 // Strange, but there doesn't appear to be any structure for the Ethernet header in edk2...\r
@@ -380,171 +380,171 @@ UnixSnpWaitForPacketNotify(
 \r
 typedef struct\r
 {\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
 } EthernetHeader;\r
 \r
 UNIX_SNP_PRIVATE_DATA gUnixSnpPrivateTemplate =\r
 {\r
-       UNIX_SNP_PRIVATE_DATA_SIGNATURE,                        // Signature\r
-       NULL,                                                                           // UnixThunk\r
-       NULL,                                                                           // DeviceHandle\r
-       NULL,                                                                           // DevicePath\r
-       { 0 },                                                                          // MacAddress\r
-       NULL,                                                                           // InterfaceName\r
-       0,                                                                                      // ReadBufferSize\r
-       NULL,                                                                           // ReadBuffer\r
-       NULL,                                                                           // CurrentReadPointer\r
-       NULL,                                                                           // EndReadPointer\r
-       0,                                                                                      // BpfFd\r
-       {                                                                               // Snp\r
-               EFI_SIMPLE_NETWORK_PROTOCOL_REVISION,   // Revision\r
-               UnixSnpStart,                                                   // Start\r
-               UnixSnpStop,                                                    // Stop\r
-               UnixSnpInitialize,                                              // Initialize\r
-               UnixSnpReset,                                                   // Reset\r
-               UnixSnpShutdown,                                                // Shutdown\r
-               UnixSnpReceiveFilters,                                  // ReceiveFilters\r
-               UnixSnpStationAddress,                                  // StationAddress\r
-               UnixSnpStatistics,                                              // Statistics\r
-               UnixSnpMcastIptoMac,                                    // MCastIpToMac\r
-               UnixSnpNvdata,                                                  // NvData\r
-               UnixSnpGetStatus,                                               // GetStatus\r
-               UnixSnpTransmit,                                                // Transmit\r
-               UnixSnpReceive,                                                 // Receive\r
-               NULL,                                                                   // WaitForPacket\r
-               NULL                                                                    // Mode\r
-       },\r
-       {                                                                               // Mode\r
-               EfiSimpleNetworkStopped,                                //  State\r
-               NET_ETHER_ADDR_LEN,                                             //  HwAddressSize\r
-               NET_ETHER_HEADER_SIZE,                                  //  MediaHeaderSize\r
-               1500,                                                                   //  MaxPacketSize\r
-               0,                                                                              //  NvRamSize\r
-               0,                                                                              //  NvRamAccessSize\r
-               0,                                                                              //  ReceiveFilterMask\r
-               0,                                                                              //  ReceiveFilterSetting\r
-               MAX_MCAST_FILTER_CNT,                                   //  MaxMCastFilterCount\r
-               0,                                                                              //  MCastFilterCount\r
-               {\r
-                       0\r
-               },                                                                              //  MCastFilter\r
-               {\r
-                       0\r
-               },                                                                              //  CurrentAddress\r
-               {\r
-                       0\r
-               },                                                                              //  BroadcastAddress\r
-               {\r
-                       0\r
-               },                                                                              //  PermanentAddress\r
-               NET_IFTYPE_ETHERNET,                                    //  IfType\r
-               FALSE,                                                                  //  MacAddressChangeable\r
-               FALSE,                                                                  //  MultipleTxSupported\r
-               FALSE,                                                                  //  MediaPresentSupported\r
-               TRUE                                                                    //  MediaPresent\r
-       }\r
+  UNIX_SNP_PRIVATE_DATA_SIGNATURE,      // Signature\r
+  NULL,                    // UnixThunk\r
+  NULL,                    // DeviceHandle\r
+  NULL,                    // DevicePath\r
+  { 0 },                    // MacAddress\r
+  NULL,                    // InterfaceName\r
+  0,                      // ReadBufferSize\r
+  NULL,                    // ReadBuffer\r
+  NULL,                    // CurrentReadPointer\r
+  NULL,                    // EndReadPointer\r
+  0,                      // BpfFd\r
+  {                    // Snp\r
+    EFI_SIMPLE_NETWORK_PROTOCOL_REVISION,  // Revision\r
+    UnixSnpStart,              // Start\r
+    UnixSnpStop,              // Stop\r
+    UnixSnpInitialize,            // Initialize\r
+    UnixSnpReset,              // Reset\r
+    UnixSnpShutdown,            // Shutdown\r
+    UnixSnpReceiveFilters,          // ReceiveFilters\r
+    UnixSnpStationAddress,          // StationAddress\r
+    UnixSnpStatistics,            // Statistics\r
+    UnixSnpMcastIptoMac,          // MCastIpToMac\r
+    UnixSnpNvdata,              // NvData\r
+    UnixSnpGetStatus,            // GetStatus\r
+    UnixSnpTransmit,            // Transmit\r
+    UnixSnpReceive,              // Receive\r
+    NULL,                  // WaitForPacket\r
+    NULL                  // Mode\r
+  },\r
+  {                    // Mode\r
+    EfiSimpleNetworkStopped,        //  State\r
+    NET_ETHER_ADDR_LEN,            //  HwAddressSize\r
+    NET_ETHER_HEADER_SIZE,          //  MediaHeaderSize\r
+    1500,                  //  MaxPacketSize\r
+    0,                    //  NvRamSize\r
+    0,                    //  NvRamAccessSize\r
+    0,                    //  ReceiveFilterMask\r
+    0,                    //  ReceiveFilterSetting\r
+    MAX_MCAST_FILTER_CNT,          //  MaxMCastFilterCount\r
+    0,                    //  MCastFilterCount\r
+    {\r
+      0\r
+    },                    //  MCastFilter\r
+    {\r
+      0\r
+    },                    //  CurrentAddress\r
+    {\r
+      0\r
+    },                    //  BroadcastAddress\r
+    {\r
+      0\r
+    },                    //  PermanentAddress\r
+    NET_IFTYPE_ETHERNET,          //  IfType\r
+    FALSE,                  //  MacAddressChangeable\r
+    FALSE,                  //  MultipleTxSupported\r
+    FALSE,                  //  MediaPresentSupported\r
+    TRUE                  //  MediaPresent\r
+  }\r
 };\r
 \r
 STATIC EFI_STATUS\r
 GetInterfaceMacAddr(\r
-       IN UNIX_SNP_PRIVATE_DATA*                       Private,\r
-       IN EFI_UNIX_IO_PROTOCOL*                        UnixIo\r
-       )\r
+  IN UNIX_SNP_PRIVATE_DATA*      Private,\r
+  IN EFI_UNIX_IO_PROTOCOL*      UnixIo\r
+  )\r
 {\r
-       struct ifaddrs*                                         IfAddrs;\r
-       struct ifaddrs*                                         If;\r
-       struct sockaddr_dl*                                     IfSdl;\r
-       EFI_STATUS                                                      Status;\r
-       INTN                                                            Result;\r
-\r
-       Result = UnixIo->UnixThunk->GetIfAddrs( &IfAddrs );\r
-       if ( Result != 0 )\r
-       {\r
-               return( EFI_UNSUPPORTED );\r
-       }\r
-\r
-       //\r
-       // Convert the interface name to ASCII so we can find it.\r
-       //\r
-       Private->InterfaceName = AllocateZeroPool( StrLen( UnixIo->EnvString ) );\r
-\r
-       if ( !Private->InterfaceName )\r
-       {\r
-               Status = EFI_OUT_OF_RESOURCES;\r
-               goto Exit;\r
-       }\r
-\r
-       UnicodeStrToAsciiStr( UnixIo->EnvString, Private->InterfaceName );\r
-\r
-       If = IfAddrs;\r
-\r
-       while ( If != NULL )\r
-       {\r
-               IfSdl = ( struct sockaddr_dl * ) If->ifa_addr;\r
-\r
-               if ( IfSdl->sdl_family == AF_LINK )\r
-               {\r
-                       if ( !AsciiStrCmp( Private->InterfaceName, If->ifa_name ) )\r
-                       {\r
-                               CopyMem( &Private->MacAddress, LLADDR( IfSdl ), NET_ETHER_ADDR_LEN );\r
-\r
-                               Status = EFI_SUCCESS;\r
-                               break;\r
-                       }\r
-               }\r
-\r
-               If = If->ifa_next;\r
-       }\r
+  struct ifaddrs*            IfAddrs;\r
+  struct ifaddrs*            If;\r
+  struct sockaddr_dl*          IfSdl;\r
+  EFI_STATUS              Status;\r
+  INTN                Result;\r
+\r
+  Result = UnixIo->UnixThunk->GetIfAddrs( &IfAddrs );\r
+  if ( Result != 0 )\r
+  {\r
+    return( EFI_UNSUPPORTED );\r
+  }\r
+\r
+  //\r
+  // Convert the interface name to ASCII so we can find it.\r
+  //\r
+  Private->InterfaceName = AllocateZeroPool( StrLen( UnixIo->EnvString ) );\r
+\r
+  if ( !Private->InterfaceName )\r
+  {\r
+    Status = EFI_OUT_OF_RESOURCES;\r
+    goto Exit;\r
+  }\r
+\r
+  UnicodeStrToAsciiStr( UnixIo->EnvString, Private->InterfaceName );\r
+\r
+  If = IfAddrs;\r
+\r
+  while ( If != NULL )\r
+  {\r
+    IfSdl = ( struct sockaddr_dl * ) If->ifa_addr;\r
+\r
+    if ( IfSdl->sdl_family == AF_LINK )\r
+    {\r
+      if ( !AsciiStrCmp( Private->InterfaceName, If->ifa_name ) )\r
+      {\r
+        CopyMem( &Private->MacAddress, LLADDR( IfSdl ), NET_ETHER_ADDR_LEN );\r
+\r
+        Status = EFI_SUCCESS;\r
+        break;\r
+      }\r
+    }\r
+\r
+    If = If->ifa_next;\r
+  }\r
 \r
 Exit:\r
-       ( VOID ) UnixIo->UnixThunk->FreeIfAddrs( IfAddrs );\r
+  ( VOID ) UnixIo->UnixThunk->FreeIfAddrs( IfAddrs );\r
 \r
-       return( Status );\r
+  return( Status );\r
 }\r
 \r
 \r
 STATIC EFI_STATUS\r
 OpenBpfFileDescriptor(\r
-       IN UNIX_SNP_PRIVATE_DATA*               Private,\r
-       OUT INTN*                                               Fd\r
-       )\r
+  IN UNIX_SNP_PRIVATE_DATA*    Private,\r
+  OUT INTN*            Fd\r
+  )\r
 {\r
-       CHAR8                                                   BfpDeviceName[ 256 ];\r
-       INTN                                                    Index;\r
-       EFI_STATUS                                              Status = EFI_OUT_OF_RESOURCES;\r
-       INTN                                                    Result;\r
-\r
-       //\r
-       // Open a Berkeley Packet Filter device.  This must be done as root, so this is probably\r
-       // the place which is most likely to fail...\r
-       //\r
-       for ( Index = 0; TRUE; Index++ )\r
-       {\r
-               AsciiSPrint( BfpDeviceName, sizeof( BfpDeviceName ), "/dev/bpf%d", Index );\r
-\r
-               *Fd = Private->UnixThunk->Open( BfpDeviceName, O_RDWR, 0 );\r
-\r
-               if ( *Fd >= 0 )\r
-               {\r
-                       Status = EFI_SUCCESS;\r
-                       break;\r
-               }\r
-\r
-               Result = Private->UnixThunk->GetErrno();\r
+  CHAR8              BfpDeviceName[ 256 ];\r
+  INTN              Index;\r
+  EFI_STATUS            Status = EFI_OUT_OF_RESOURCES;\r
+  INTN              Result;\r
+\r
+  //\r
+  // Open a Berkeley Packet Filter device.  This must be done as root, so this is probably\r
+  // the place which is most likely to fail...\r
+  //\r
+  for ( Index = 0; TRUE; Index++ )\r
+  {\r
+    AsciiSPrint( BfpDeviceName, sizeof( BfpDeviceName ), "/dev/bpf%d", Index );\r
+\r
+    *Fd = Private->UnixThunk->Open( BfpDeviceName, O_RDWR, 0 );\r
+\r
+    if ( *Fd >= 0 )\r
+    {\r
+      Status = EFI_SUCCESS;\r
+      break;\r
+    }\r
+\r
+    Result = Private->UnixThunk->GetErrno();\r
     if ( Result == EACCES )\r
     {\r
       DEBUG( ( EFI_D_ERROR, "Permissions on '%a' are incorrect.  Fix with 'sudo chmod 666 %a'.\n",\r
           BfpDeviceName, BfpDeviceName ) );\r
     }\r
-               if ( Result != EBUSY )\r
-               {\r
-                       break;\r
-               }\r
-       }\r
+    if ( Result != EBUSY )\r
+    {\r
+      break;\r
+    }\r
+  }\r
 \r
-       return( Status );\r
+  return( Status );\r
 }\r
 \r
 \r
@@ -568,51 +568,51 @@ OpenBpfFileDescriptor(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpDriverBindingSupported(\r
-       IN EFI_DRIVER_BINDING_PROTOCOL*         This,\r
-       IN EFI_HANDLE                                           ControllerHandle,\r
-       IN EFI_DEVICE_PATH_PROTOCOL*            RemainingDevicePath OPTIONAL\r
-       )\r
+  IN EFI_DRIVER_BINDING_PROTOCOL*    This,\r
+  IN EFI_HANDLE            ControllerHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL*    RemainingDevicePath OPTIONAL\r
+  )\r
 {\r
-       EFI_STATUS                                                      Status;\r
-       EFI_UNIX_IO_PROTOCOL*                           UnixIo;\r
-\r
-       //\r
-       // Open the I/O abstraction needed to perform the supported test.\r
-       //\r
-       Status = gBS->OpenProtocol(\r
-                                       ControllerHandle,\r
-                                       &gEfiUnixIoProtocolGuid,\r
-                                       ( VOID ** ) &UnixIo,\r
-                                       This->DriverBindingHandle,\r
-                                       ControllerHandle,\r
-                                       EFI_OPEN_PROTOCOL_BY_DRIVER\r
-                                       );\r
-\r
-       if ( EFI_ERROR( Status ) )\r
-       {\r
-               return( Status );\r
-       }\r
-\r
-       //\r
-       // Validate GUID\r
-       //\r
-       Status = EFI_UNSUPPORTED;\r
-       if ( CompareGuid( UnixIo->TypeGuid, &gEfiUnixNetworkGuid ) )\r
-       {\r
-               Status = EFI_SUCCESS;\r
-       }\r
-\r
-       //\r
-       // Close the I/O abstraction used to perform the supported test.\r
-       //\r
-       gBS->CloseProtocol(\r
-                                       ControllerHandle,\r
-                                       &gEfiUnixIoProtocolGuid,\r
-                                       This->DriverBindingHandle,\r
-                                       ControllerHandle\r
-                                       );\r
-\r
-       return( Status );\r
+  EFI_STATUS              Status;\r
+  EFI_UNIX_IO_PROTOCOL*        UnixIo;\r
+\r
+  //\r
+  // Open the I/O abstraction needed to perform the supported test.\r
+  //\r
+  Status = gBS->OpenProtocol(\r
+          ControllerHandle,\r
+          &gEfiUnixIoProtocolGuid,\r
+          ( VOID ** ) &UnixIo,\r
+          This->DriverBindingHandle,\r
+          ControllerHandle,\r
+          EFI_OPEN_PROTOCOL_BY_DRIVER\r
+          );\r
+\r
+  if ( EFI_ERROR( Status ) )\r
+  {\r
+    return( Status );\r
+  }\r
+\r
+  //\r
+  // Validate GUID\r
+  //\r
+  Status = EFI_UNSUPPORTED;\r
+  if ( CompareGuid( UnixIo->TypeGuid, &gEfiUnixNetworkGuid ) )\r
+  {\r
+    Status = EFI_SUCCESS;\r
+  }\r
+\r
+  //\r
+  // Close the I/O abstraction used to perform the supported test.\r
+  //\r
+  gBS->CloseProtocol(\r
+          ControllerHandle,\r
+          &gEfiUnixIoProtocolGuid,\r
+          This->DriverBindingHandle,\r
+          ControllerHandle\r
+          );\r
+\r
+  return( Status );\r
 }\r
 \r
 \r
@@ -635,175 +635,175 @@ UnixSnpDriverBindingSupported(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpDriverBindingStart(\r
-       IN EFI_DRIVER_BINDING_PROTOCOL*         This,\r
-       IN EFI_HANDLE                                           ControllerHandle,\r
-       IN EFI_DEVICE_PATH_PROTOCOL*            RemainingDevicePath OPTIONAL\r
-       )\r
+  IN EFI_DRIVER_BINDING_PROTOCOL*    This,\r
+  IN EFI_HANDLE            ControllerHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL*    RemainingDevicePath OPTIONAL\r
+  )\r
 {\r
-       MAC_ADDR_DEVICE_PATH                    Node;\r
-       EFI_DEVICE_PATH_PROTOCOL*               ParentDevicePath = NULL;\r
-       EFI_UNIX_IO_PROTOCOL*                   UnixIo;\r
-       UNIX_SNP_PRIVATE_DATA*                  Private = NULL;\r
-       EFI_STATUS                                              Status;\r
-       BOOLEAN                                                 CreateDevice;\r
-\r
-       //\r
-       // Grab the protocols we need.\r
-       //\r
-       Status = gBS->OpenProtocol(\r
-                                       ControllerHandle,\r
-                                       &gEfiDevicePathProtocolGuid,\r
-                                       ( VOID ** ) &ParentDevicePath,\r
-                                       This->DriverBindingHandle,\r
-                                       ControllerHandle,\r
-                                       EFI_OPEN_PROTOCOL_BY_DRIVER\r
-                                       );\r
-       if ( EFI_ERROR( Status ) )\r
-       {\r
-               goto ErrorExit;\r
-       }\r
-\r
-       //\r
-       // Open the I/O abstraction needed to perform the supported test.\r
-       //\r
-       Status = gBS->OpenProtocol(\r
-                                       ControllerHandle,\r
-                                       &gEfiUnixIoProtocolGuid,\r
-                                       ( VOID ** ) &UnixIo,\r
-                                       This->DriverBindingHandle,\r
-                                       ControllerHandle,\r
-                                       EFI_OPEN_PROTOCOL_BY_DRIVER\r
-                                       );\r
-       if ( EFI_ERROR( Status ) )\r
-       {\r
-               goto ErrorExit;\r
-       }\r
-\r
-       //\r
-       // Validate GUID\r
-       //\r
-       if ( !CompareGuid( UnixIo->TypeGuid, &gEfiUnixNetworkGuid ) )\r
-       {\r
-               Status = EFI_UNSUPPORTED;\r
-               goto ErrorExit;\r
-       }\r
-\r
-       CreateDevice = TRUE;\r
-       if ( ( RemainingDevicePath != NULL ) && IsDevicePathEnd( RemainingDevicePath ) )\r
-       {\r
-               CreateDevice = FALSE;\r
-       }\r
-\r
-       if ( CreateDevice )\r
-       {\r
-               //\r
-               //  Allocate the private data.\r
-               //\r
-               Private = AllocateCopyPool( sizeof( UNIX_SNP_PRIVATE_DATA ), &gUnixSnpPrivateTemplate );\r
-               if ( Private == NULL )\r
-               {\r
-                       Status = EFI_OUT_OF_RESOURCES;\r
-                       goto ErrorExit;\r
-               }\r
-\r
-               Status = GetInterfaceMacAddr( Private, UnixIo );\r
-               if ( EFI_ERROR( Status ) )\r
-               {\r
-                       goto ErrorExit;\r
-               }\r
-\r
-               Private->UnixThunk = UnixIo->UnixThunk;\r
-\r
-               Private->Snp.Mode = &Private->Mode;\r
-\r
-               //\r
-               // Set the broadcast address.\r
-               //\r
-               SetMem( &Private->Mode.BroadcastAddress, sizeof( EFI_MAC_ADDRESS ), 0xFF );\r
-\r
-               CopyMem( &Private->Mode.CurrentAddress, &Private->MacAddress, sizeof( EFI_MAC_ADDRESS ) );\r
-               CopyMem( &Private->Mode.PermanentAddress, &Private->MacAddress, sizeof( EFI_MAC_ADDRESS ) );\r
-\r
-               //\r
-               // Since the fake SNP is based on a real NIC, to avoid conflict with the host NIC\r
-               // network stack, we use a different MAC address.\r
-               // So just change the last byte of the MAC address for the real NIC.\r
-               //\r
-               Private->Mode.CurrentAddress.Addr[ NET_ETHER_ADDR_LEN - 1 ]++;\r
-\r
-               //\r
-               // Build the device path by appending the MAC node to the ParentDevicePath\r
-               // from the UnixIo handle.\r
-               //\r
-               ZeroMem( &Node, sizeof( MAC_ADDR_DEVICE_PATH ) );\r
-\r
-               Node.Header.Type        = MESSAGING_DEVICE_PATH;\r
-               Node.Header.SubType     = MSG_MAC_ADDR_DP;\r
-               Node.IfType                     = Private->Mode.IfType;\r
-\r
-               SetDevicePathNodeLength( ( EFI_DEVICE_PATH_PROTOCOL * ) &Node, sizeof( MAC_ADDR_DEVICE_PATH ) );\r
-\r
-               CopyMem( &Node.MacAddress, &Private->Mode.CurrentAddress, sizeof( EFI_MAC_ADDRESS ) );\r
-\r
-               //\r
-               // Build the device path by appending the MAC node to the ParentDevicePath from the UnixIo handle.\r
-               //\r
-               Private->DevicePath = AppendDevicePathNode( ParentDevicePath, ( EFI_DEVICE_PATH_PROTOCOL * ) &Node );\r
-               if ( Private->DevicePath == NULL )\r
-               {\r
-                       Status = EFI_OUT_OF_RESOURCES;\r
-                       goto ErrorExit;\r
-               }\r
-\r
-               Status = gBS->InstallMultipleProtocolInterfaces(\r
-                                               &Private->DeviceHandle,\r
-                                               &gEfiSimpleNetworkProtocolGuid,\r
-                                               &Private->Snp,\r
-                                               &gEfiDevicePathProtocolGuid,\r
-                                               Private->DevicePath,\r
-                                               NULL\r
-                                               );\r
-               if ( EFI_ERROR( Status ) )\r
-               {\r
-                       goto ErrorExit;\r
-               }\r
-\r
-               Status = gBS->OpenProtocol(\r
-                                               ControllerHandle,\r
-                                               &gEfiUnixIoProtocolGuid,\r
-                                               ( VOID ** ) &UnixIo,\r
-                                               This->DriverBindingHandle,\r
-                                               Private->DeviceHandle,\r
-                                               EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
-                                               );\r
-               if ( EFI_ERROR( Status ) )\r
-               {\r
-                       goto ErrorExit;\r
-               }\r
-       }\r
-       return( Status );\r
+  MAC_ADDR_DEVICE_PATH      Node;\r
+  EFI_DEVICE_PATH_PROTOCOL*    ParentDevicePath = NULL;\r
+  EFI_UNIX_IO_PROTOCOL*      UnixIo;\r
+  UNIX_SNP_PRIVATE_DATA*      Private = NULL;\r
+  EFI_STATUS            Status;\r
+  BOOLEAN              CreateDevice;\r
+\r
+  //\r
+  // Grab the protocols we need.\r
+  //\r
+  Status = gBS->OpenProtocol(\r
+          ControllerHandle,\r
+          &gEfiDevicePathProtocolGuid,\r
+          ( VOID ** ) &ParentDevicePath,\r
+          This->DriverBindingHandle,\r
+          ControllerHandle,\r
+          EFI_OPEN_PROTOCOL_BY_DRIVER\r
+          );\r
+  if ( EFI_ERROR( Status ) )\r
+  {\r
+    goto ErrorExit;\r
+  }\r
+\r
+  //\r
+  // Open the I/O abstraction needed to perform the supported test.\r
+  //\r
+  Status = gBS->OpenProtocol(\r
+          ControllerHandle,\r
+          &gEfiUnixIoProtocolGuid,\r
+          ( VOID ** ) &UnixIo,\r
+          This->DriverBindingHandle,\r
+          ControllerHandle,\r
+          EFI_OPEN_PROTOCOL_BY_DRIVER\r
+          );\r
+  if ( EFI_ERROR( Status ) )\r
+  {\r
+    goto ErrorExit;\r
+  }\r
+\r
+  //\r
+  // Validate GUID\r
+  //\r
+  if ( !CompareGuid( UnixIo->TypeGuid, &gEfiUnixNetworkGuid ) )\r
+  {\r
+    Status = EFI_UNSUPPORTED;\r
+    goto ErrorExit;\r
+  }\r
+\r
+  CreateDevice = TRUE;\r
+  if ( ( RemainingDevicePath != NULL ) && IsDevicePathEnd( RemainingDevicePath ) )\r
+  {\r
+    CreateDevice = FALSE;\r
+  }\r
+\r
+  if ( CreateDevice )\r
+  {\r
+    //\r
+    //  Allocate the private data.\r
+    //\r
+    Private = AllocateCopyPool( sizeof( UNIX_SNP_PRIVATE_DATA ), &gUnixSnpPrivateTemplate );\r
+    if ( Private == NULL )\r
+    {\r
+      Status = EFI_OUT_OF_RESOURCES;\r
+      goto ErrorExit;\r
+    }\r
+\r
+    Status = GetInterfaceMacAddr( Private, UnixIo );\r
+    if ( EFI_ERROR( Status ) )\r
+    {\r
+      goto ErrorExit;\r
+    }\r
+\r
+    Private->UnixThunk = UnixIo->UnixThunk;\r
+\r
+    Private->Snp.Mode = &Private->Mode;\r
+\r
+    //\r
+    // Set the broadcast address.\r
+    //\r
+    SetMem( &Private->Mode.BroadcastAddress, sizeof( EFI_MAC_ADDRESS ), 0xFF );\r
+\r
+    CopyMem( &Private->Mode.CurrentAddress, &Private->MacAddress, sizeof( EFI_MAC_ADDRESS ) );\r
+    CopyMem( &Private->Mode.PermanentAddress, &Private->MacAddress, sizeof( EFI_MAC_ADDRESS ) );\r
+\r
+    //\r
+    // Since the fake SNP is based on a real NIC, to avoid conflict with the host NIC\r
+    // network stack, we use a different MAC address.\r
+    // So just change the last byte of the MAC address for the real NIC.\r
+    //\r
+    Private->Mode.CurrentAddress.Addr[ NET_ETHER_ADDR_LEN - 1 ]++;\r
+\r
+    //\r
+    // Build the device path by appending the MAC node to the ParentDevicePath\r
+    // from the UnixIo handle.\r
+    //\r
+    ZeroMem( &Node, sizeof( MAC_ADDR_DEVICE_PATH ) );\r
+\r
+    Node.Header.Type  = MESSAGING_DEVICE_PATH;\r
+    Node.Header.SubType  = MSG_MAC_ADDR_DP;\r
+    Node.IfType      = Private->Mode.IfType;\r
+\r
+    SetDevicePathNodeLength( ( EFI_DEVICE_PATH_PROTOCOL * ) &Node, sizeof( MAC_ADDR_DEVICE_PATH ) );\r
+\r
+    CopyMem( &Node.MacAddress, &Private->Mode.CurrentAddress, sizeof( EFI_MAC_ADDRESS ) );\r
+\r
+    //\r
+    // Build the device path by appending the MAC node to the ParentDevicePath from the UnixIo handle.\r
+    //\r
+    Private->DevicePath = AppendDevicePathNode( ParentDevicePath, ( EFI_DEVICE_PATH_PROTOCOL * ) &Node );\r
+    if ( Private->DevicePath == NULL )\r
+    {\r
+      Status = EFI_OUT_OF_RESOURCES;\r
+      goto ErrorExit;\r
+    }\r
+\r
+    Status = gBS->InstallMultipleProtocolInterfaces(\r
+            &Private->DeviceHandle,\r
+            &gEfiSimpleNetworkProtocolGuid,\r
+            &Private->Snp,\r
+            &gEfiDevicePathProtocolGuid,\r
+            Private->DevicePath,\r
+            NULL\r
+            );\r
+    if ( EFI_ERROR( Status ) )\r
+    {\r
+      goto ErrorExit;\r
+    }\r
+\r
+    Status = gBS->OpenProtocol(\r
+            ControllerHandle,\r
+            &gEfiUnixIoProtocolGuid,\r
+            ( VOID ** ) &UnixIo,\r
+            This->DriverBindingHandle,\r
+            Private->DeviceHandle,\r
+            EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
+            );\r
+    if ( EFI_ERROR( Status ) )\r
+    {\r
+      goto ErrorExit;\r
+    }\r
+  }\r
+  return( Status );\r
 \r
 ErrorExit:\r
-       if ( Private->InterfaceName != NULL )\r
-       {\r
-               FreePool( Private->InterfaceName );\r
-               Private->InterfaceName = NULL;\r
-       }\r
-       if ( Private != NULL )\r
-       {\r
-               FreePool( Private );\r
-       }\r
-       if ( ParentDevicePath != NULL )\r
-       {\r
-               gBS->CloseProtocol(\r
-                                       ControllerHandle,\r
-                                       &gEfiDevicePathProtocolGuid,\r
-                                       This->DriverBindingHandle,\r
-                                       ControllerHandle\r
-                                       );\r
-       }\r
-\r
-       return( Status );\r
+  if ( Private->InterfaceName != NULL )\r
+  {\r
+    FreePool( Private->InterfaceName );\r
+    Private->InterfaceName = NULL;\r
+  }\r
+  if ( Private != NULL )\r
+  {\r
+    FreePool( Private );\r
+  }\r
+  if ( ParentDevicePath != NULL )\r
+  {\r
+    gBS->CloseProtocol(\r
+          ControllerHandle,\r
+          &gEfiDevicePathProtocolGuid,\r
+          This->DriverBindingHandle,\r
+          ControllerHandle\r
+          );\r
+  }\r
+\r
+  return( Status );\r
 }\r
 \r
 /**\r
@@ -826,55 +826,55 @@ ErrorExit:
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpDriverBindingStop(\r
-       IN EFI_DRIVER_BINDING_PROTOCOL*         This,\r
-       IN EFI_HANDLE                                           ControllerHandle,\r
-       IN UINTN                                                        NumberOfChildren,\r
-       IN EFI_HANDLE*                                          ChildHandleBuffer\r
-       )\r
+  IN EFI_DRIVER_BINDING_PROTOCOL*    This,\r
+  IN EFI_HANDLE            ControllerHandle,\r
+  IN UINTN              NumberOfChildren,\r
+  IN EFI_HANDLE*            ChildHandleBuffer\r
+  )\r
 {\r
-       UNIX_SNP_PRIVATE_DATA*                          Private = NULL;\r
-       EFI_SIMPLE_NETWORK_PROTOCOL*            Snp;\r
-       EFI_STATUS                                                      Status;\r
-\r
-       //\r
-       // Get our context back.\r
-       //\r
-       Status = gBS->OpenProtocol(\r
-                               ControllerHandle,\r
-                               &gEfiSimpleNetworkProtocolGuid,\r
-                               ( VOID ** ) &Snp,\r
-                               This->DriverBindingHandle,\r
-                               ControllerHandle,\r
-                               EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                               );\r
-       if ( EFI_ERROR( Status ) )\r
-       {\r
-               return( EFI_UNSUPPORTED );\r
-       }\r
-\r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( Snp );\r
-\r
-       Status = gBS->CloseProtocol(\r
-                               ControllerHandle,\r
-                               &gEfiUnixIoProtocolGuid,\r
-                               This->DriverBindingHandle,\r
-                               Private->DeviceHandle\r
-                               );\r
-\r
-       Status = gBS->UninstallMultipleProtocolInterfaces(\r
-                               Private->DeviceHandle,\r
-                               &gEfiSimpleNetworkProtocolGuid,\r
-                               &Private->Snp,\r
-                               &gEfiDevicePathProtocolGuid,\r
-                               Private->DevicePath,\r
-                               NULL\r
-                               );\r
-\r
-       FreePool( Private->InterfaceName );\r
-       FreePool( Private->DevicePath );\r
-       FreePool( Private );\r
-\r
-       return( EFI_SUCCESS );\r
+  UNIX_SNP_PRIVATE_DATA*        Private = NULL;\r
+  EFI_SIMPLE_NETWORK_PROTOCOL*    Snp;\r
+  EFI_STATUS              Status;\r
+\r
+  //\r
+  // Get our context back.\r
+  //\r
+  Status = gBS->OpenProtocol(\r
+        ControllerHandle,\r
+        &gEfiSimpleNetworkProtocolGuid,\r
+        ( VOID ** ) &Snp,\r
+        This->DriverBindingHandle,\r
+        ControllerHandle,\r
+        EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+        );\r
+  if ( EFI_ERROR( Status ) )\r
+  {\r
+    return( EFI_UNSUPPORTED );\r
+  }\r
+\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( Snp );\r
+\r
+  Status = gBS->CloseProtocol(\r
+        ControllerHandle,\r
+        &gEfiUnixIoProtocolGuid,\r
+        This->DriverBindingHandle,\r
+        Private->DeviceHandle\r
+        );\r
+\r
+  Status = gBS->UninstallMultipleProtocolInterfaces(\r
+        Private->DeviceHandle,\r
+        &gEfiSimpleNetworkProtocolGuid,\r
+        &Private->Snp,\r
+        &gEfiDevicePathProtocolGuid,\r
+        Private->DevicePath,\r
+        NULL\r
+        );\r
+\r
+  FreePool( Private->InterfaceName );\r
+  FreePool( Private->DevicePath );\r
+  FreePool( Private );\r
+\r
+  return( EFI_SUCCESS );\r
 }\r
 \r
 \r
@@ -889,210 +889,210 @@ UnixSnpDriverBindingStop(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpStart(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This\r
+  )\r
 {\r
-       STATIC struct bpf_insn                          FilterInstructionTemplate[] =\r
-       {\r
-               // Load 4 bytes from the destination MAC address.\r
-               BPF_STMT( BPF_LD + BPF_W + BPF_ABS, OFFSET_OF( EthernetHeader, 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
-\r
-               // Load remaining 2 bytes from the destination MAC address.\r
-               BPF_STMT( BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( EthernetHeader, 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
-\r
-               // Load 4 bytes from the destination MAC address.\r
-               BPF_STMT( BPF_LD + BPF_W + BPF_ABS, OFFSET_OF( EthernetHeader, 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
-\r
-               // Load remaining 2 bytes from the destination MAC address.\r
-               BPF_STMT( BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( EthernetHeader, 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
-\r
-               // Reject packet.\r
-               BPF_STMT( BPF_RET + BPF_K, 0 ),\r
-\r
-               // Receive entire packet.\r
-               BPF_STMT( BPF_RET + BPF_K, -1 )\r
-       };\r
-       struct ifreq                                            BoundIf;\r
-       struct bpf_program                                      BpfProgram;\r
-       struct bpf_insn*                                        FilterProgram;\r
-       UNIX_SNP_PRIVATE_DATA*                          Private;\r
-       EFI_STATUS                                                      Status;\r
-       UINT32                                                          Temp32;\r
-       INTN                                                            Fd;\r
-       INTN                                                            Result;\r
-       INTN                                                            Value;\r
-       UINT16                                                          Temp16;\r
-\r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
-\r
-       switch ( Private->Snp.Mode->State )\r
-       {\r
-               case EfiSimpleNetworkStopped:\r
-                       break;\r
-\r
-               case EfiSimpleNetworkStarted:\r
-               case EfiSimpleNetworkInitialized:\r
-                       return( EFI_ALREADY_STARTED );\r
-                       break;\r
-\r
-               default:\r
-                       return( EFI_DEVICE_ERROR );\r
-                       break;\r
-       }\r
-\r
-       if ( Private->BpfFd == 0 )\r
-       {\r
-               Status = OpenBpfFileDescriptor( Private, &Fd );\r
-\r
-               if ( EFI_ERROR( Status ) )\r
-               {\r
-                       goto ErrorExit;\r
-               }\r
-\r
-               Private->BpfFd = Fd;\r
-\r
-               //\r
-               // Associate our interface with this BPF file descriptor.\r
-               //\r
-               AsciiStrCpy( BoundIf.ifr_name, Private->InterfaceName );\r
-               Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCSETIF, &BoundIf );\r
-\r
-               if ( Result < 0 )\r
-               {\r
-                       goto DeviceErrorExit;\r
-               }\r
-\r
-               //\r
-               // Enable immediate mode and find out the buffer size.\r
-               //\r
-               Value = 1;\r
-               Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCIMMEDIATE, &Value );\r
-\r
-               if ( Result < 0 )\r
-               {\r
-                       goto DeviceErrorExit;\r
-               }\r
-\r
-               //\r
-               // Enable non-blocking I/O.\r
-               //\r
-\r
-               Value = Private->UnixThunk->Fcntl( Private->BpfFd, F_GETFL, 0 );\r
-\r
-               if ( Value == -1 )\r
-               {\r
-                       goto DeviceErrorExit;\r
-               }\r
-\r
-               Value |= O_NONBLOCK;\r
-\r
-               Result = Private->UnixThunk->Fcntl( Private->BpfFd, F_SETFL, (void *) Value );\r
-\r
-               if ( Result == -1 )\r
-               {\r
-                       goto DeviceErrorExit;\r
-               }\r
-\r
-               //\r
-               // Disable "header complete" flag.  This means the supplied source MAC address is\r
-               // what goes on the wire.\r
-               //\r
-               Value = 1;\r
-               Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCSHDRCMPLT, &Value );\r
-\r
-               if ( Result < 0 )\r
-               {\r
-                       goto DeviceErrorExit;\r
-               }\r
-\r
-               Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCGBLEN, &Value );\r
-\r
-               if ( Result < 0 )\r
-               {\r
-                       goto DeviceErrorExit;\r
-               }\r
-\r
-               //\r
-               // Allocate read buffer.\r
-               //\r
-               Private->ReadBufferSize = Value;\r
-               Private->ReadBuffer = AllocateZeroPool( Private->ReadBufferSize );\r
-               if ( Private->ReadBuffer == NULL )\r
-               {\r
-                       Status = EFI_OUT_OF_RESOURCES;\r
-                       goto ErrorExit;\r
-               }\r
-\r
-               Private->CurrentReadPointer = Private->EndReadPointer = Private->ReadBuffer;\r
-\r
-               //\r
-               // Install our packet filter: successful reads should only produce broadcast or unitcast\r
-               // packets directed to our fake MAC address.\r
-               //\r
-               FilterProgram = AllocateCopyPool( sizeof( FilterInstructionTemplate ), &FilterInstructionTemplate );\r
-               if ( FilterProgram == NULL )\r
-               {\r
-                       goto ErrorExit;\r
-               }\r
-\r
-               //\r
-               // Insert out fake MAC address into the filter.  The data has to be host endian.\r
-               //\r
-               CopyMem( &Temp32, &Private->Mode.CurrentAddress.Addr[ 0 ], sizeof( UINT32 ) );\r
-               FilterProgram[ 1 ].k = NTOHL( Temp32 );\r
-               CopyMem( &Temp16, &Private->Mode.CurrentAddress.Addr[ 4 ], sizeof( UINT16 ) );\r
-               FilterProgram[ 3 ].k = NTOHS( Temp16 );\r
-\r
-               BpfProgram.bf_len = sizeof( FilterInstructionTemplate ) / sizeof( struct bpf_insn );\r
-               BpfProgram.bf_insns = FilterProgram;\r
-\r
-               Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCSETF, &BpfProgram );\r
-\r
-               if ( Result < 0 )\r
-               {\r
-                       goto DeviceErrorExit;\r
-               }\r
-\r
-               FreePool( FilterProgram );\r
-\r
-               //\r
-               // Enable promiscuous mode.\r
-               //\r
-\r
-               Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCPROMISC, 0 );\r
-\r
-               if ( Result < 0 )\r
-               {\r
-                       goto DeviceErrorExit;\r
-               }\r
+  STATIC struct bpf_insn        FilterInstructionTemplate[] =\r
+  {\r
+    // Load 4 bytes from the destination MAC address.\r
+    BPF_STMT( BPF_LD + BPF_W + BPF_ABS, OFFSET_OF( EthernetHeader, 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
+\r
+    // Load remaining 2 bytes from the destination MAC address.\r
+    BPF_STMT( BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( EthernetHeader, 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
+\r
+    // Load 4 bytes from the destination MAC address.\r
+    BPF_STMT( BPF_LD + BPF_W + BPF_ABS, OFFSET_OF( EthernetHeader, 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
+\r
+    // Load remaining 2 bytes from the destination MAC address.\r
+    BPF_STMT( BPF_LD + BPF_H + BPF_ABS, OFFSET_OF( EthernetHeader, 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
+\r
+    // Reject packet.\r
+    BPF_STMT( BPF_RET + BPF_K, 0 ),\r
+\r
+    // Receive entire packet.\r
+    BPF_STMT( BPF_RET + BPF_K, -1 )\r
+  };\r
+  struct ifreq            BoundIf;\r
+  struct bpf_program          BpfProgram;\r
+  struct bpf_insn*          FilterProgram;\r
+  UNIX_SNP_PRIVATE_DATA*        Private;\r
+  EFI_STATUS              Status;\r
+  UINT32                Temp32;\r
+  INTN                Fd;\r
+  INTN                Result;\r
+  INTN                Value;\r
+  UINT16                Temp16;\r
+\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
+\r
+  switch ( Private->Snp.Mode->State )\r
+  {\r
+    case EfiSimpleNetworkStopped:\r
+      break;\r
+\r
+    case EfiSimpleNetworkStarted:\r
+    case EfiSimpleNetworkInitialized:\r
+      return( EFI_ALREADY_STARTED );\r
+      break;\r
+\r
+    default:\r
+      return( EFI_DEVICE_ERROR );\r
+      break;\r
+  }\r
+\r
+  if ( Private->BpfFd == 0 )\r
+  {\r
+    Status = OpenBpfFileDescriptor( Private, &Fd );\r
+\r
+    if ( EFI_ERROR( Status ) )\r
+    {\r
+      goto ErrorExit;\r
+    }\r
+\r
+    Private->BpfFd = Fd;\r
+\r
+    //\r
+    // Associate our interface with this BPF file descriptor.\r
+    //\r
+    AsciiStrCpy( BoundIf.ifr_name, Private->InterfaceName );\r
+    Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCSETIF, &BoundIf );\r
+\r
+    if ( Result < 0 )\r
+    {\r
+      goto DeviceErrorExit;\r
+    }\r
+\r
+    //\r
+    // Enable immediate mode and find out the buffer size.\r
+    //\r
+    Value = 1;\r
+    Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCIMMEDIATE, &Value );\r
+\r
+    if ( Result < 0 )\r
+    {\r
+      goto DeviceErrorExit;\r
+    }\r
+\r
+    //\r
+    // Enable non-blocking I/O.\r
+    //\r
+\r
+    Value = Private->UnixThunk->Fcntl( Private->BpfFd, F_GETFL, 0 );\r
+\r
+    if ( Value == -1 )\r
+    {\r
+      goto DeviceErrorExit;\r
+    }\r
+\r
+    Value |= O_NONBLOCK;\r
+\r
+    Result = Private->UnixThunk->Fcntl( Private->BpfFd, F_SETFL, (void *) Value );\r
+\r
+    if ( Result == -1 )\r
+    {\r
+      goto DeviceErrorExit;\r
+    }\r
+\r
+    //\r
+    // Disable "header complete" flag.  This means the supplied source MAC address is\r
+    // what goes on the wire.\r
+    //\r
+    Value = 1;\r
+    Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCSHDRCMPLT, &Value );\r
+\r
+    if ( Result < 0 )\r
+    {\r
+      goto DeviceErrorExit;\r
+    }\r
+\r
+    Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCGBLEN, &Value );\r
+\r
+    if ( Result < 0 )\r
+    {\r
+      goto DeviceErrorExit;\r
+    }\r
+\r
+    //\r
+    // Allocate read buffer.\r
+    //\r
+    Private->ReadBufferSize = Value;\r
+    Private->ReadBuffer = AllocateZeroPool( Private->ReadBufferSize );\r
+    if ( Private->ReadBuffer == NULL )\r
+    {\r
+      Status = EFI_OUT_OF_RESOURCES;\r
+      goto ErrorExit;\r
+    }\r
+\r
+    Private->CurrentReadPointer = Private->EndReadPointer = Private->ReadBuffer;\r
+\r
+    //\r
+    // Install our packet filter: successful reads should only produce broadcast or unitcast\r
+    // packets directed to our fake MAC address.\r
+    //\r
+    FilterProgram = AllocateCopyPool( sizeof( FilterInstructionTemplate ), &FilterInstructionTemplate );\r
+    if ( FilterProgram == NULL )\r
+    {\r
+      goto ErrorExit;\r
+    }\r
+\r
+    //\r
+    // Insert out fake MAC address into the filter.  The data has to be host endian.\r
+    //\r
+    CopyMem( &Temp32, &Private->Mode.CurrentAddress.Addr[ 0 ], sizeof( UINT32 ) );\r
+    FilterProgram[ 1 ].k = NTOHL( Temp32 );\r
+    CopyMem( &Temp16, &Private->Mode.CurrentAddress.Addr[ 4 ], sizeof( UINT16 ) );\r
+    FilterProgram[ 3 ].k = NTOHS( Temp16 );\r
+\r
+    BpfProgram.bf_len = sizeof( FilterInstructionTemplate ) / sizeof( struct bpf_insn );\r
+    BpfProgram.bf_insns = FilterProgram;\r
+\r
+    Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCSETF, &BpfProgram );\r
+\r
+    if ( Result < 0 )\r
+    {\r
+      goto DeviceErrorExit;\r
+    }\r
+\r
+    FreePool( FilterProgram );\r
+\r
+    //\r
+    // Enable promiscuous mode.\r
+    //\r
+\r
+    Result = Private->UnixThunk->IoCtl( Private->BpfFd, BIOCPROMISC, 0 );\r
+\r
+    if ( Result < 0 )\r
+    {\r
+      goto DeviceErrorExit;\r
+    }\r
 \r
 \r
-               Private->Snp.Mode->State = EfiSimpleNetworkStarted;                     \r
-       }\r
+    Private->Snp.Mode->State = EfiSimpleNetworkStarted;      \r
+  }\r
 \r
-       return( Status );\r
+  return( Status );\r
 \r
 DeviceErrorExit:\r
-       Status = EFI_DEVICE_ERROR;\r
+  Status = EFI_DEVICE_ERROR;\r
 ErrorExit:\r
-       if ( Private->ReadBuffer != NULL )\r
-       {\r
-               FreePool( Private->ReadBuffer );\r
-               Private->ReadBuffer = NULL;\r
-       }\r
-       return( Status );\r
+  if ( Private->ReadBuffer != NULL )\r
+  {\r
+    FreePool( Private->ReadBuffer );\r
+    Private->ReadBuffer = NULL;\r
+  }\r
+  return( Status );\r
 }\r
 \r
 \r
@@ -1107,43 +1107,43 @@ ErrorExit:
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpStop(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This\r
+  )\r
 {\r
-       UNIX_SNP_PRIVATE_DATA*                          Private = EFI_SUCCESS;\r
-       EFI_STATUS                                                      Status;\r
+  UNIX_SNP_PRIVATE_DATA*        Private = EFI_SUCCESS;\r
+  EFI_STATUS              Status;\r
 \r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
 \r
-       switch ( Private->Snp.Mode->State )\r
-       {\r
-               case EfiSimpleNetworkStarted:\r
-                       break;\r
+  switch ( Private->Snp.Mode->State )\r
+  {\r
+    case EfiSimpleNetworkStarted:\r
+      break;\r
 \r
-               case EfiSimpleNetworkStopped:\r
-                       return( EFI_NOT_STARTED );\r
-                       break;\r
+    case EfiSimpleNetworkStopped:\r
+      return( EFI_NOT_STARTED );\r
+      break;\r
 \r
-               default:\r
-                       return( EFI_DEVICE_ERROR );\r
-                       break;\r
-       }\r
+    default:\r
+      return( EFI_DEVICE_ERROR );\r
+      break;\r
+  }\r
 \r
-       if ( Private->BpfFd != 0 )\r
-       {\r
-               Private->UnixThunk->Close( Private->BpfFd );\r
-               Private->BpfFd = 0;\r
-       }\r
+  if ( Private->BpfFd != 0 )\r
+  {\r
+    Private->UnixThunk->Close( Private->BpfFd );\r
+    Private->BpfFd = 0;\r
+  }\r
 \r
-       if ( Private->ReadBuffer != NULL )\r
-       {\r
-               FreePool( Private->ReadBuffer );\r
-               Private->CurrentReadPointer = Private->EndReadPointer = Private->ReadBuffer = NULL;\r
-       }\r
+  if ( Private->ReadBuffer != NULL )\r
+  {\r
+    FreePool( Private->ReadBuffer );\r
+    Private->CurrentReadPointer = Private->EndReadPointer = Private->ReadBuffer = NULL;\r
+  }\r
 \r
-       Private->Snp.Mode->State = EfiSimpleNetworkStopped;\r
+  Private->Snp.Mode->State = EfiSimpleNetworkStopped;\r
 \r
-       return( Status );\r
+  return( Status );\r
 }\r
 \r
 \r
@@ -1170,50 +1170,50 @@ UnixSnpStop(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpInitialize(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN UINTN                                                        ExtraRxBufferSize OPTIONAL,\r
-       IN UINTN                                                        ExtraTxBufferSize OPTIONAL\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN UINTN              ExtraRxBufferSize OPTIONAL,\r
+  IN UINTN              ExtraTxBufferSize OPTIONAL\r
+  )\r
 {\r
-       UNIX_SNP_PRIVATE_DATA*                          Private = EFI_SUCCESS;\r
-       EFI_STATUS                                                      Status;\r
+  UNIX_SNP_PRIVATE_DATA*        Private = EFI_SUCCESS;\r
+  EFI_STATUS              Status;\r
 \r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
 \r
-       switch ( Private->Snp.Mode->State )\r
-       {\r
-               case EfiSimpleNetworkStarted:\r
-                       break;\r
+  switch ( Private->Snp.Mode->State )\r
+  {\r
+    case EfiSimpleNetworkStarted:\r
+      break;\r
 \r
-               case EfiSimpleNetworkStopped:\r
-                       return( EFI_NOT_STARTED );\r
-                       break;\r
+    case EfiSimpleNetworkStopped:\r
+      return( EFI_NOT_STARTED );\r
+      break;\r
 \r
-               default:\r
-                       return( EFI_DEVICE_ERROR );\r
-                       break;\r
-       }\r
+    default:\r
+      return( EFI_DEVICE_ERROR );\r
+      break;\r
+  }\r
 \r
 #if 0\r
-       Status = gBS->CreateEvent(\r
-                                       EVT_NOTIFY_WAIT,\r
-                                       TPL_NOTIFY,\r
-                                       UnixSnpWaitForPacketNotify,\r
-                                       Private,\r
-                                       &Private->Snp.WaitForPacket\r
-                                       );\r
+  Status = gBS->CreateEvent(\r
+          EVT_NOTIFY_WAIT,\r
+          TPL_NOTIFY,\r
+          UnixSnpWaitForPacketNotify,\r
+          Private,\r
+          &Private->Snp.WaitForPacket\r
+          );\r
 #endif\r
 \r
-       if ( !EFI_ERROR( Status ) )\r
-       {\r
-               Private->Mode.MCastFilterCount = 0;\r
-               Private->Mode.ReceiveFilterSetting = 0;\r
-               ZeroMem( Private->Mode.MCastFilter, sizeof( Private->Mode.MCastFilter ) );\r
+  if ( !EFI_ERROR( Status ) )\r
+  {\r
+    Private->Mode.MCastFilterCount = 0;\r
+    Private->Mode.ReceiveFilterSetting = 0;\r
+    ZeroMem( Private->Mode.MCastFilter, sizeof( Private->Mode.MCastFilter ) );\r
 \r
-               Private->Snp.Mode->State = EfiSimpleNetworkInitialized;\r
-       }\r
+    Private->Snp.Mode->State = EfiSimpleNetworkInitialized;\r
+  }\r
 \r
-       return( Status );\r
+  return( Status );\r
 }\r
 \r
 /**\r
@@ -1231,30 +1231,30 @@ UnixSnpInitialize(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpReset(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      ExtendedVerification\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              ExtendedVerification\r
+  )\r
 {\r
-       UNIX_SNP_PRIVATE_DATA*                          Private;\r
-       EFI_STATUS                                                      Success = EFI_SUCCESS;\r
+  UNIX_SNP_PRIVATE_DATA*        Private;\r
+  EFI_STATUS              Success = EFI_SUCCESS;\r
 \r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
 \r
-       switch ( Private->Snp.Mode->State )\r
-       {\r
-               case EfiSimpleNetworkInitialized:\r
-                       break;\r
+  switch ( Private->Snp.Mode->State )\r
+  {\r
+    case EfiSimpleNetworkInitialized:\r
+      break;\r
 \r
-               case EfiSimpleNetworkStopped:\r
-                       return( EFI_NOT_STARTED );\r
-                       break;\r
+    case EfiSimpleNetworkStopped:\r
+      return( EFI_NOT_STARTED );\r
+      break;\r
 \r
-               default:\r
-                       return( EFI_DEVICE_ERROR );\r
-                       break;\r
-       }\r
+    default:\r
+      return( EFI_DEVICE_ERROR );\r
+      break;\r
+  }\r
 \r
-       return( Success );\r
+  return( Success );\r
 }\r
 \r
 /**\r
@@ -1269,53 +1269,53 @@ UnixSnpReset(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpShutdown(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This\r
+  )\r
 {\r
-       UNIX_SNP_PRIVATE_DATA*                          Private;\r
-       EFI_STATUS                                                      Success = EFI_SUCCESS;\r
-\r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
-\r
-       switch ( Private->Snp.Mode->State )\r
-       {\r
-               case EfiSimpleNetworkInitialized:\r
-                       break;\r
-\r
-               case EfiSimpleNetworkStopped:\r
-                       return( EFI_NOT_STARTED );\r
-                       break;\r
-\r
-               default:\r
-                       return( EFI_DEVICE_ERROR );\r
-                       break;\r
-       }\r
-\r
-       Private->Snp.Mode->State = EfiSimpleNetworkStarted;\r
-\r
-       Private->Mode.ReceiveFilterSetting = 0;\r
-       Private->Mode.MCastFilterCount = 0;\r
-       ZeroMem( Private->Mode.MCastFilter, sizeof( Private->Mode.MCastFilter ) );\r
-\r
-       if ( Private->Snp.WaitForPacket != NULL )\r
-       {\r
-               gBS->CloseEvent( Private->Snp.WaitForPacket );\r
-               Private->Snp.WaitForPacket = NULL;\r
-       }\r
-\r
-       if ( Private->BpfFd != 0 )\r
-       {\r
-               Private->UnixThunk->Close( Private->BpfFd );\r
-               Private->BpfFd = 0;\r
-       }\r
-\r
-       if ( Private->ReadBuffer != NULL )\r
-       {\r
-               FreePool( Private->ReadBuffer );\r
-               Private->CurrentReadPointer = Private->EndReadPointer = Private->ReadBuffer = NULL;\r
-       }\r
-\r
-       return( Success );\r
+  UNIX_SNP_PRIVATE_DATA*        Private;\r
+  EFI_STATUS              Success = EFI_SUCCESS;\r
+\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
+\r
+  switch ( Private->Snp.Mode->State )\r
+  {\r
+    case EfiSimpleNetworkInitialized:\r
+      break;\r
+\r
+    case EfiSimpleNetworkStopped:\r
+      return( EFI_NOT_STARTED );\r
+      break;\r
+\r
+    default:\r
+      return( EFI_DEVICE_ERROR );\r
+      break;\r
+  }\r
+\r
+  Private->Snp.Mode->State = EfiSimpleNetworkStarted;\r
+\r
+  Private->Mode.ReceiveFilterSetting = 0;\r
+  Private->Mode.MCastFilterCount = 0;\r
+  ZeroMem( Private->Mode.MCastFilter, sizeof( Private->Mode.MCastFilter ) );\r
+\r
+  if ( Private->Snp.WaitForPacket != NULL )\r
+  {\r
+    gBS->CloseEvent( Private->Snp.WaitForPacket );\r
+    Private->Snp.WaitForPacket = NULL;\r
+  }\r
+\r
+  if ( Private->BpfFd != 0 )\r
+  {\r
+    Private->UnixThunk->Close( Private->BpfFd );\r
+    Private->BpfFd = 0;\r
+  }\r
+\r
+  if ( Private->ReadBuffer != NULL )\r
+  {\r
+    FreePool( Private->ReadBuffer );\r
+    Private->CurrentReadPointer = Private->EndReadPointer = Private->ReadBuffer = NULL;\r
+  }\r
+\r
+  return( Success );\r
 }\r
 \r
 /**\r
@@ -1342,17 +1342,17 @@ UnixSnpShutdown(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpReceiveFilters(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN UINT32                                                       EnableBits,\r
-       IN UINT32                                                       DisableBits,\r
-       IN BOOLEAN                                                      ResetMcastFilter,\r
-       IN UINTN                                                        McastFilterCount OPTIONAL,\r
-       IN EFI_MAC_ADDRESS*                                     McastFilter OPTIONAL\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN UINT32              EnableBits,\r
+  IN UINT32              DisableBits,\r
+  IN BOOLEAN              ResetMcastFilter,\r
+  IN UINTN              McastFilterCount OPTIONAL,\r
+  IN EFI_MAC_ADDRESS*          McastFilter OPTIONAL\r
+  )\r
 {\r
-       UNIX_SNP_PRIVATE_DATA*                          Private;\r
+  UNIX_SNP_PRIVATE_DATA*        Private;\r
 \r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
 \r
 //  ReturnValue = GlobalData->NtNetUtilityTable.SetReceiveFilter (\r
 //                                                Instance->InterfaceInfo.InterfaceIndex,\r
@@ -1361,8 +1361,8 @@ UnixSnpReceiveFilters(
 //                                                McastFilter\r
 //                                                );\r
 \r
-       // For now, just succeed...\r
-       return( EFI_SUCCESS );\r
+  // For now, just succeed...\r
+  return( EFI_SUCCESS );\r
 }\r
 \r
 /**\r
@@ -1379,12 +1379,12 @@ UnixSnpReceiveFilters(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpStationAddress(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      Reset,\r
-       IN EFI_MAC_ADDRESS*                                     NewMacAddr OPTIONAL\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              Reset,\r
+  IN EFI_MAC_ADDRESS*          NewMacAddr OPTIONAL\r
+  )\r
 {\r
-       return( EFI_UNSUPPORTED );\r
+  return( EFI_UNSUPPORTED );\r
 }\r
 \r
 /**\r
@@ -1409,13 +1409,13 @@ UnixSnpStationAddress(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpStatistics(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      Reset,\r
-       IN OUT UINTN*                                           StatisticsSize OPTIONAL,\r
-       OUT EFI_NETWORK_STATISTICS*                     StatisticsTable OPTIONAL\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              Reset,\r
+  IN OUT UINTN*            StatisticsSize OPTIONAL,\r
+  OUT EFI_NETWORK_STATISTICS*      StatisticsTable OPTIONAL\r
+  )\r
 {\r
-       return( EFI_UNSUPPORTED );\r
+  return( EFI_UNSUPPORTED );\r
 }\r
 \r
 /**\r
@@ -1440,13 +1440,13 @@ UnixSnpStatistics(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpMcastIptoMac(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      Ipv6,\r
-       IN EFI_IP_ADDRESS*                                      Ip,\r
-       OUT EFI_MAC_ADDRESS*                            Mac\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              Ipv6,\r
+  IN EFI_IP_ADDRESS*          Ip,\r
+  OUT EFI_MAC_ADDRESS*        Mac\r
+  )\r
 {\r
-       return( EFI_UNSUPPORTED );\r
+  return( EFI_UNSUPPORTED );\r
 }\r
 \r
 \r
@@ -1469,14 +1469,14 @@ UnixSnpMcastIptoMac(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpNvdata(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       IN BOOLEAN                                                      ReadOrWrite,\r
-       IN UINTN                                                        Offset,\r
-       IN UINTN                                                        BufferSize,\r
-       IN OUT VOID*                                            Buffer\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  IN BOOLEAN              ReadOrWrite,\r
+  IN UINTN              Offset,\r
+  IN UINTN              BufferSize,\r
+  IN OUT VOID*            Buffer\r
+  )\r
 {\r
-       return( EFI_UNSUPPORTED );\r
+  return( EFI_UNSUPPORTED );\r
 }\r
 \r
 \r
@@ -1504,22 +1504,22 @@ UnixSnpNvdata(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpGetStatus(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       OUT UINT32*                                                     InterruptStatus,\r
-       OUT VOID**                                                      TxBuffer\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  OUT UINT32*              InterruptStatus,\r
+  OUT VOID**              TxBuffer\r
+  )\r
 {\r
-       if ( TxBuffer != NULL )\r
-       {\r
-               *( ( UINT8 ** ) TxBuffer ) = ( UINT8 * ) 1;\r
-       }\r
+  if ( TxBuffer != NULL )\r
+  {\r
+    *( ( UINT8 ** ) TxBuffer ) = ( UINT8 * ) 1;\r
+  }\r
 \r
-       if ( InterruptStatus != NULL )\r
-       {\r
-               *InterruptStatus = EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT;\r
-       }\r
+  if ( InterruptStatus != NULL )\r
+  {\r
+    *InterruptStatus = EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT;\r
+  }\r
 \r
-       return( EFI_SUCCESS );\r
+  return( EFI_SUCCESS );\r
 }\r
 \r
 \r
@@ -1556,56 +1556,56 @@ UnixSnpGetStatus(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpTransmit(\r
-       IN EFI_SIMPLE_NETWORK_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
+  IN EFI_SIMPLE_NETWORK_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
-       UNIX_SNP_PRIVATE_DATA*                          Private;\r
-       EthernetHeader*                                         EnetHeader;\r
-       INTN                                                            Result;\r
-\r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
-\r
-       if ( This->Mode->State < EfiSimpleNetworkStarted )\r
-       {\r
-               return( EFI_NOT_STARTED );\r
-       }\r
-\r
-       if ( HeaderSize != 0 )\r
-       {\r
-               if ( ( DestAddr == NULL ) || ( Protocol == NULL ) || ( HeaderSize != This->Mode->MediaHeaderSize ) )\r
-               {\r
-                       return( EFI_INVALID_PARAMETER );\r
-               }\r
-\r
-               if ( SrcAddr == NULL )\r
-               {\r
-                       SrcAddr = &This->Mode->CurrentAddress;\r
-               }\r
-\r
-               EnetHeader = ( EthernetHeader * ) 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
-       }\r
-\r
-       Result = Private->UnixThunk->Write( Private->BpfFd, Buffer, BufferSize );\r
-\r
-       if ( Result < 0 )\r
-       {\r
-               return( EFI_DEVICE_ERROR );\r
-       }\r
-       else\r
-       {\r
-               return( EFI_SUCCESS );\r
-       }\r
+  UNIX_SNP_PRIVATE_DATA*        Private;\r
+  EthernetHeader*            EnetHeader;\r
+  INTN                Result;\r
+\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
+\r
+  if ( This->Mode->State < EfiSimpleNetworkStarted )\r
+  {\r
+    return( EFI_NOT_STARTED );\r
+  }\r
+\r
+  if ( HeaderSize != 0 )\r
+  {\r
+    if ( ( DestAddr == NULL ) || ( Protocol == NULL ) || ( HeaderSize != This->Mode->MediaHeaderSize ) )\r
+    {\r
+      return( EFI_INVALID_PARAMETER );\r
+    }\r
+\r
+    if ( SrcAddr == NULL )\r
+    {\r
+      SrcAddr = &This->Mode->CurrentAddress;\r
+    }\r
+\r
+    EnetHeader = ( EthernetHeader * ) 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
+  }\r
+\r
+  Result = Private->UnixThunk->Write( Private->BpfFd, Buffer, BufferSize );\r
+\r
+  if ( Result < 0 )\r
+  {\r
+    return( EFI_DEVICE_ERROR );\r
+  }\r
+  else\r
+  {\r
+    return( EFI_SUCCESS );\r
+  }\r
 }\r
 \r
 /**\r
@@ -1641,116 +1641,116 @@ UnixSnpTransmit(
 EFI_STATUS\r
 EFIAPI\r
 UnixSnpReceive(\r
-       IN EFI_SIMPLE_NETWORK_PROTOCOL*         This,\r
-       OUT UINTN*                                                      HeaderSize OPTIONAL,\r
-       IN OUT UINTN*                                           BuffSize,\r
-       OUT VOID*                                                       Buffer,\r
-       OUT EFI_MAC_ADDRESS*                            SourceAddr OPTIONAL,\r
-       OUT EFI_MAC_ADDRESS*                            DestinationAddr OPTIONAL,\r
-       OUT UINT16*                                                     Protocol OPTIONAL\r
-       )\r
+  IN EFI_SIMPLE_NETWORK_PROTOCOL*    This,\r
+  OUT UINTN*              HeaderSize OPTIONAL,\r
+  IN OUT UINTN*            BuffSize,\r
+  OUT VOID*              Buffer,\r
+  OUT EFI_MAC_ADDRESS*        SourceAddr OPTIONAL,\r
+  OUT EFI_MAC_ADDRESS*        DestinationAddr OPTIONAL,\r
+  OUT UINT16*              Protocol OPTIONAL\r
+  )\r
 {\r
-       UNIX_SNP_PRIVATE_DATA*                          Private;\r
-       struct bpf_hdr*                                         BpfHeader;\r
-       EthernetHeader*                                         EnetHeader;\r
-       EFI_STATUS                                                      Status = EFI_SUCCESS;\r
-       INTN                                                            Result;\r
-\r
-       if ( This->Mode->State < EfiSimpleNetworkStarted )\r
-       {\r
-               return( EFI_NOT_STARTED );\r
-       }\r
-\r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
-\r
-       //\r
-       // Do we have any remaining packets from the previous read?\r
-       //\r
-       if ( Private->CurrentReadPointer >= Private->EndReadPointer )\r
-       {\r
-               Result = Private->UnixThunk->Read( Private->BpfFd, Private->ReadBuffer, Private->ReadBufferSize );\r
-\r
-               if ( Result < 0 )\r
-               {\r
-                       Result = Private->UnixThunk->GetErrno();\r
-\r
-                       //\r
-                       // EAGAIN means that there's no I/O outstanding against this file descriptor.\r
-                       //\r
-                       if ( Result == EAGAIN )\r
-                       {\r
-                               return( EFI_NOT_READY );\r
-                       }\r
-                       else\r
-                       {\r
-                               return( EFI_DEVICE_ERROR );\r
-                       }\r
-               }\r
-\r
-               if ( Result == 0 )\r
-               {\r
-                       return( EFI_NOT_READY );\r
-               }\r
-\r
-               Private->CurrentReadPointer = Private->ReadBuffer;\r
-               Private->EndReadPointer = Private->CurrentReadPointer + Result;\r
-       }\r
-\r
-       BpfHeader = Private->CurrentReadPointer;\r
-       EnetHeader = Private->CurrentReadPointer + BpfHeader->bh_hdrlen;\r
-\r
-       if ( BpfHeader->bh_caplen > *BuffSize )\r
-       {\r
-               *BuffSize = BpfHeader->bh_caplen;\r
-               return( EFI_BUFFER_TOO_SMALL );\r
-       }\r
-\r
-       CopyMem( Buffer, EnetHeader, BpfHeader->bh_caplen );\r
-       *BuffSize = BpfHeader->bh_caplen;\r
-\r
-       if ( HeaderSize != NULL )\r
-       {\r
-               *HeaderSize = sizeof( EthernetHeader );\r
-       }\r
-\r
-       if ( DestinationAddr != NULL )\r
-       {\r
-               ZeroMem( DestinationAddr, sizeof( EFI_MAC_ADDRESS ) );\r
-               CopyMem( DestinationAddr, EnetHeader->DstAddr, NET_ETHER_ADDR_LEN );\r
-       }\r
-\r
-       if ( SourceAddr != NULL )\r
-       {\r
-               ZeroMem( SourceAddr, sizeof( EFI_MAC_ADDRESS ) );\r
-               CopyMem( SourceAddr, EnetHeader->SrcAddr, NET_ETHER_ADDR_LEN );\r
-       }\r
-\r
-       if ( Protocol != NULL )\r
-       {\r
-               *Protocol = NTOHS( EnetHeader->Type );\r
-       }\r
-\r
-       Private->CurrentReadPointer += BPF_WORDALIGN( BpfHeader->bh_hdrlen + BpfHeader->bh_caplen );\r
-\r
-       return( Status );\r
+  UNIX_SNP_PRIVATE_DATA*        Private;\r
+  struct bpf_hdr*            BpfHeader;\r
+  EthernetHeader*            EnetHeader;\r
+  EFI_STATUS              Status = EFI_SUCCESS;\r
+  INTN                Result;\r
+\r
+  if ( This->Mode->State < EfiSimpleNetworkStarted )\r
+  {\r
+    return( EFI_NOT_STARTED );\r
+  }\r
+\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( This );\r
+\r
+  //\r
+  // Do we have any remaining packets from the previous read?\r
+  //\r
+  if ( Private->CurrentReadPointer >= Private->EndReadPointer )\r
+  {\r
+    Result = Private->UnixThunk->Read( Private->BpfFd, Private->ReadBuffer, Private->ReadBufferSize );\r
+\r
+    if ( Result < 0 )\r
+    {\r
+      Result = Private->UnixThunk->GetErrno();\r
+\r
+      //\r
+      // EAGAIN means that there's no I/O outstanding against this file descriptor.\r
+      //\r
+      if ( Result == EAGAIN )\r
+      {\r
+        return( EFI_NOT_READY );\r
+      }\r
+      else\r
+      {\r
+        return( EFI_DEVICE_ERROR );\r
+      }\r
+    }\r
+\r
+    if ( Result == 0 )\r
+    {\r
+      return( EFI_NOT_READY );\r
+    }\r
+\r
+    Private->CurrentReadPointer = Private->ReadBuffer;\r
+    Private->EndReadPointer = Private->CurrentReadPointer + Result;\r
+  }\r
+\r
+  BpfHeader = Private->CurrentReadPointer;\r
+  EnetHeader = Private->CurrentReadPointer + BpfHeader->bh_hdrlen;\r
+\r
+  if ( BpfHeader->bh_caplen > *BuffSize )\r
+  {\r
+    *BuffSize = BpfHeader->bh_caplen;\r
+    return( EFI_BUFFER_TOO_SMALL );\r
+  }\r
+\r
+  CopyMem( Buffer, EnetHeader, BpfHeader->bh_caplen );\r
+  *BuffSize = BpfHeader->bh_caplen;\r
+\r
+  if ( HeaderSize != NULL )\r
+  {\r
+    *HeaderSize = sizeof( EthernetHeader );\r
+  }\r
+\r
+  if ( DestinationAddr != NULL )\r
+  {\r
+    ZeroMem( DestinationAddr, sizeof( EFI_MAC_ADDRESS ) );\r
+    CopyMem( DestinationAddr, EnetHeader->DstAddr, NET_ETHER_ADDR_LEN );\r
+  }\r
+\r
+  if ( SourceAddr != NULL )\r
+  {\r
+    ZeroMem( SourceAddr, sizeof( EFI_MAC_ADDRESS ) );\r
+    CopyMem( SourceAddr, EnetHeader->SrcAddr, NET_ETHER_ADDR_LEN );\r
+  }\r
+\r
+  if ( Protocol != NULL )\r
+  {\r
+    *Protocol = NTOHS( EnetHeader->Type );\r
+  }\r
+\r
+  Private->CurrentReadPointer += BPF_WORDALIGN( BpfHeader->bh_hdrlen + BpfHeader->bh_caplen );\r
+\r
+  return( Status );\r
 }\r
 \r
 \r
 VOID\r
 EFIAPI\r
 UnixSnpWaitForPacketNotify(\r
-       IN EFI_EVENT                                            Event,\r
-       IN VOID*                                                        Context\r
-       )\r
+  IN EFI_EVENT            Event,\r
+  IN VOID*              Context\r
+  )\r
 {\r
-       UNIX_SNP_PRIVATE_DATA*                          Private;\r
+  UNIX_SNP_PRIVATE_DATA*        Private;\r
 \r
-       Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( Context );\r
+  Private = UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS( Context );\r
 \r
-       if ( Private->Snp.Mode->State < EfiSimpleNetworkStarted )\r
-       {\r
-               return;\r
-       }\r
+  if ( Private->Snp.Mode->State < EfiSimpleNetworkStarted )\r
+  {\r
+    return;\r
+  }\r
 }\r
 \r
 \r
@@ -1768,24 +1768,24 @@ UnixSnpWaitForPacketNotify(
 **/\r
 EFI_STATUS\r
 InitializeUnixSnpDriver(\r
-       IN EFI_HANDLE                           ImageHandle,\r
-       IN EFI_SYSTEM_TABLE*            SystemTable\r
-       )\r
+  IN EFI_HANDLE        ImageHandle,\r
+  IN EFI_SYSTEM_TABLE*    SystemTable\r
+  )\r
 {\r
-       EFI_STATUS                                              Status;\r
-\r
-       //\r
-       // Install the Driver Protocols\r
-       //\r
-\r
-       Status = EfiLibInstallDriverBindingComponentName2(\r
-                                       ImageHandle,\r
-                                       SystemTable,\r
-                                       &gUnixSnpDriverBinding,\r
-                                       ImageHandle,\r
-                                       &gUnixSnpDriverComponentName,\r
-                                       &gUnixSnpDriverComponentName2\r
-                                       );\r
-\r
-       return( Status );\r
+  EFI_STATUS            Status;\r
+\r
+  //\r
+  // Install the Driver Protocols\r
+  //\r
+\r
+  Status = EfiLibInstallDriverBindingComponentName2(\r
+          ImageHandle,\r
+          SystemTable,\r
+          &gUnixSnpDriverBinding,\r
+          ImageHandle,\r
+          &gUnixSnpDriverComponentName,\r
+          &gUnixSnpDriverComponentName2\r
+          );\r
+\r
+  return( Status );\r
 }\r