mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 03:03:46 +01:00 
			
		
		
		
	InOsEmuPkg: Update code to support BerkeleyPacketFilter, and add a template for LinuxPacketFilter.
BerkelyPacketFilter seems to work. Some one else will need to use the BerkeleyPacketFilter as a template and implement the LinuxPacketFilter. I don't think it will be that hard, as they are simular. Signed-off-by: andrewfish git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11828 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		
							parent
							
								
									a0aab286ec
								
							
						
					
					
						commit
						2b59fcd5b3
					
				| @ -71,6 +71,11 @@ | ||||
|   ## Magic page to implement PEI Services Table Pointer Lib | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdPeiServicesTablePage|0x1000000000|UINT64|0x0000101b | ||||
| 
 | ||||
|   ## Size of the packet filter | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdNetworkPacketFilterSize|524288|UINT32|0x0000101c | ||||
| 
 | ||||
|    | ||||
| 
 | ||||
| [PcdsFixedAtBuild, PcdsPatchableInModule]  | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdEmuBootMode|1|UINT32|0x00001006 | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdEmuFirmwareVolume|L"..\\Fv\\Fv_Recovery.fd"|VOID*|0x00001009 | ||||
|  | ||||
| @ -18,6 +18,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||||
| #ifndef __EMU_SNP_H__ | ||||
| #define __EMU_SNP_H__ | ||||
| 
 | ||||
| #include <Protocol/SimpleNetwork.h> | ||||
| 
 | ||||
| #define EMU_SNP_PROTOCOL_GUID \ | ||||
|  { 0xFD5FBE54, 0x8C35, 0xB345, { 0x8A, 0x0F, 0x7A, 0xC8, 0xA5, 0xFD, 0x05, 0x21 } } | ||||
| 
 | ||||
| @ -25,13 +27,12 @@ typedef struct _EMU_SNP_PROTOCOL  EMU_SNP_PROTOCOL; | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|   Changes the state of a network interface from "stopped" to "started". | ||||
|   Register storage for SNP Mode. | ||||
| 
 | ||||
|   @param  This Protocol instance pointer. | ||||
|   @param  Mode SimpleNetworkProtocol Mode structure passed into driver. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The network interface was started. | ||||
|   @retval EFI_ALREADY_STARTED   The network interface is already mapped. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
| 
 | ||||
| **/ | ||||
|  | ||||
							
								
								
									
										1111
									
								
								InOsEmuPkg/Unix/Sec/BerkeleyPacketFilter.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1111
									
								
								InOsEmuPkg/Unix/Sec/BerkeleyPacketFilter.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -11,8 +11,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||||
| 
 | ||||
| **/ | ||||
| 
 | ||||
| //#include <fcntl.h>
 | ||||
| //#include <unistd.h>
 | ||||
| #include "SecMain.h" | ||||
| 
 | ||||
| #define EMU_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'b', 'k') | ||||
|  | ||||
| @ -486,6 +486,138 @@ GasketBlockIoThunkClose ( | ||||
|   IN  EMU_IO_THUNK_PROTOCOL   *This | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpThunkOpen ( | ||||
|   IN  EMU_IO_THUNK_PROTOCOL   *This | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpThunkClose ( | ||||
|   IN  EMU_IO_THUNK_PROTOCOL   *This | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpCreateMapping ( | ||||
|   IN     EMU_SNP_PROTOCOL         *This, | ||||
|   IN     EFI_SIMPLE_NETWORK_MODE  *Media | ||||
|   ); | ||||
|   | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpStart ( | ||||
|   IN EMU_SNP_PROTOCOL  *This | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpStop ( | ||||
|   IN EMU_SNP_PROTOCOL  *This | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpInitialize ( | ||||
|   IN EMU_SNP_PROTOCOL                    *This, | ||||
|   IN UINTN                               ExtraRxBufferSize  OPTIONAL, | ||||
|   IN UINTN                               ExtraTxBufferSize  OPTIONAL | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpReset ( | ||||
|   IN EMU_SNP_PROTOCOL   *This, | ||||
|   IN BOOLEAN            ExtendedVerification | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpShutdown ( | ||||
|   IN EMU_SNP_PROTOCOL  *This | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpReceiveFilters ( | ||||
|   IN EMU_SNP_PROTOCOL                             *This, | ||||
|   IN UINT32                                       Enable, | ||||
|   IN UINT32                                       Disable, | ||||
|   IN BOOLEAN                                      ResetMCastFilter, | ||||
|   IN UINTN                                        MCastFilterCnt     OPTIONAL, | ||||
|   IN EFI_MAC_ADDRESS                              *MCastFilter OPTIONAL | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpStationAddress ( | ||||
|   IN EMU_SNP_PROTOCOL            *This, | ||||
|   IN BOOLEAN                     Reset, | ||||
|   IN EFI_MAC_ADDRESS             *New OPTIONAL | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpStatistics ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   IN BOOLEAN                              Reset, | ||||
|   IN OUT UINTN                            *StatisticsSize   OPTIONAL, | ||||
|   OUT EFI_NETWORK_STATISTICS              *StatisticsTable  OPTIONAL | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpMCastIpToMac ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   IN BOOLEAN                              IPv6, | ||||
|   IN EFI_IP_ADDRESS                       *IP, | ||||
|   OUT EFI_MAC_ADDRESS                     *MAC | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpNvData ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   IN BOOLEAN                              ReadWrite, | ||||
|   IN UINTN                                Offset, | ||||
|   IN UINTN                                BufferSize, | ||||
|   IN OUT VOID                             *Buffer | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpGetStatus ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   OUT UINT32                              *InterruptStatus OPTIONAL, | ||||
|   OUT VOID                                **TxBuf OPTIONAL | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpTransmit ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   IN UINTN                                HeaderSize, | ||||
|   IN UINTN                                BufferSize, | ||||
|   IN VOID                                 *Buffer, | ||||
|   IN EFI_MAC_ADDRESS                      *SrcAddr  OPTIONAL, | ||||
|   IN EFI_MAC_ADDRESS                      *DestAddr OPTIONAL, | ||||
|   IN UINT16                               *Protocol OPTIONAL | ||||
|   ); | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| GasketSnpReceive ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   OUT UINTN                               *HeaderSize OPTIONAL, | ||||
|   IN OUT UINTN                            *BufferSize, | ||||
|   OUT VOID                                *Buffer, | ||||
|   OUT EFI_MAC_ADDRESS                     *SrcAddr    OPTIONAL, | ||||
|   OUT EFI_MAC_ADDRESS                     *DestAddr   OPTIONAL, | ||||
|   OUT UINT16                              *Protocol   OPTIONAL | ||||
|   ); | ||||
| 
 | ||||
|   | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										604
									
								
								InOsEmuPkg/Unix/Sec/LinuxPacketFilter.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										604
									
								
								InOsEmuPkg/Unix/Sec/LinuxPacketFilter.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,604 @@ | ||||
| /**@file
 | ||||
|  Linux Packet Filter implementation of the EMU_SNP_PROTOCOL that allows the  | ||||
|  emulator to get on real networks. | ||||
| 
 | ||||
|  Currently only the Berkeley Packet Filter is fully implemented and this file | ||||
|  is just a template that needs to get filled in.  | ||||
| 
 | ||||
| Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR> | ||||
| Portitions copyright (c) 2011, Apple Inc. All rights reserved. | ||||
| 
 | ||||
| This program and the accompanying materials                           | ||||
| are licensed and made available under the terms and conditions of the BSD License          | ||||
| which accompanies this distribution.  The full text of the license may be found at         | ||||
| http://opensource.org/licenses/bsd-license.php                                            
 | ||||
|                                                                                            | ||||
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                      | ||||
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.              | ||||
| 
 | ||||
| **/ | ||||
| 
 | ||||
| 
 | ||||
| #include "SecMain.h" | ||||
| 
 | ||||
| #ifndef __APPLE__ | ||||
| 
 | ||||
| #define EMU_SNP_PRIVATE_SIGNATURE SIGNATURE_32('E', 'M', 's', 'n') | ||||
| typedef struct { | ||||
|   UINTN                       Signature; | ||||
| 
 | ||||
|   EMU_IO_THUNK_PROTOCOL       *Thunk; | ||||
| 
 | ||||
| 
 | ||||
|   EMU_SNP_PROTOCOL            EmuSnp; | ||||
|   EFI_SIMPLE_NETWORK_MODE     *Mode; | ||||
| 
 | ||||
| } EMU_SNP_PRIVATE; | ||||
| 
 | ||||
| #define EMU_SNP_PRIVATE_DATA_FROM_THIS(a) \ | ||||
|          CR(a, EMU_SNP_PRIVATE, EmuSnp, EMU_SNP_PRIVATE_SIGNATURE) | ||||
| 
 | ||||
| /**
 | ||||
|   Register storage for SNP Mode. | ||||
| 
 | ||||
|   @param  This Protocol instance pointer. | ||||
|   @param  Mode SimpleNetworkProtocol Mode structure passed into driver. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The network interface was started. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpCreateMapping ( | ||||
|   IN     EMU_SNP_PROTOCOL         *This, | ||||
|   IN     EFI_SIMPLE_NETWORK_MODE  *Mode | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   Private->Mode = Mode; | ||||
|      | ||||
|   return EFI_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Changes the state of a network interface from "stopped" to "started". | ||||
| 
 | ||||
|   @param  This Protocol instance pointer. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The network interface was started. | ||||
|   @retval EFI_ALREADY_STARTED   The network interface is already in the started state. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpStart ( | ||||
|   IN EMU_SNP_PROTOCOL  *This | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Changes the state of a network interface from "started" to "stopped". | ||||
| 
 | ||||
|   @param  This Protocol instance pointer. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The network interface was stopped. | ||||
|   @retval EFI_ALREADY_STARTED   The network interface is already in the stopped state. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpStop ( | ||||
|   IN EMU_SNP_PROTOCOL  *This | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Resets a network adapter and allocates the transmit and receive buffers  | ||||
|   required by the network interface; optionally, also requests allocation  | ||||
|   of additional transmit and receive buffers. | ||||
| 
 | ||||
|   @param  This              The protocol instance pointer. | ||||
|   @param  ExtraRxBufferSize The size, in bytes, of the extra receive buffer space | ||||
|                             that the driver should allocate for the network interface. | ||||
|                             Some network interfaces will not be able to use the extra | ||||
|                             buffer, and the caller will not know if it is actually | ||||
|                             being used. | ||||
|   @param  ExtraTxBufferSize The size, in bytes, of the extra transmit buffer space | ||||
|                             that the driver should allocate for the network interface. | ||||
|                             Some network interfaces will not be able to use the extra | ||||
|                             buffer, and the caller will not know if it is actually | ||||
|                             being used. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The network interface was initialized. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_OUT_OF_RESOURCES  There was not enough memory for the transmit and | ||||
|                                 receive buffers. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpInitialize ( | ||||
|   IN EMU_SNP_PROTOCOL                    *This, | ||||
|   IN UINTN                               ExtraRxBufferSize  OPTIONAL, | ||||
|   IN UINTN                               ExtraTxBufferSize  OPTIONAL | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Resets a network adapter and re-initializes it with the parameters that were  | ||||
|   provided in the previous call to Initialize().   | ||||
| 
 | ||||
|   @param  This                 The protocol instance pointer. | ||||
|   @param  ExtendedVerification Indicates that the driver may perform a more | ||||
|                                exhaustive verification operation of the device | ||||
|                                during reset. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The network interface was reset. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpReset ( | ||||
|   IN EMU_SNP_PROTOCOL   *This, | ||||
|   IN BOOLEAN            ExtendedVerification | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Resets a network adapter and leaves it in a state that is safe for  | ||||
|   another driver to initialize. | ||||
| 
 | ||||
|   @param  This Protocol instance pointer. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The network interface was shutdown. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpShutdown ( | ||||
|   IN EMU_SNP_PROTOCOL  *This | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Manages the multicast receive filters of a network interface. | ||||
| 
 | ||||
|   @param  This             The protocol instance pointer. | ||||
|   @param  Enable           A bit mask of receive filters to enable on the network interface. | ||||
|   @param  Disable          A bit mask of receive filters to disable on the network interface. | ||||
|   @param  ResetMCastFilter Set to TRUE to reset the contents of the multicast receive | ||||
|                            filters on the network interface to their default values. | ||||
|   @param  McastFilterCnt   Number of multicast HW MAC addresses in the new | ||||
|                            MCastFilter list. This value must be less than or equal to | ||||
|                            the MCastFilterCnt field of EMU_SNP_MODE. This | ||||
|                            field is optional if ResetMCastFilter is TRUE. | ||||
|   @param  MCastFilter      A pointer to a list of new multicast receive filter HW MAC | ||||
|                            addresses. This list will replace any existing multicast | ||||
|                            HW MAC address list. This field is optional if | ||||
|                            ResetMCastFilter is TRUE. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The multicast receive filter list was updated. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpReceiveFilters ( | ||||
|   IN EMU_SNP_PROTOCOL                             *This, | ||||
|   IN UINT32                                       Enable, | ||||
|   IN UINT32                                       Disable, | ||||
|   IN BOOLEAN                                      ResetMCastFilter, | ||||
|   IN UINTN                                        MCastFilterCnt     OPTIONAL, | ||||
|   IN EFI_MAC_ADDRESS                              *MCastFilter OPTIONAL | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Modifies or resets the current station address, if supported. | ||||
| 
 | ||||
|   @param  This  The protocol instance pointer. | ||||
|   @param  Reset Flag used to reset the station address to the network interfaces | ||||
|                 permanent address. | ||||
|   @param  New   The new station address to be used for the network interface. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The network interfaces station address was updated. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpStationAddress ( | ||||
|   IN EMU_SNP_PROTOCOL            *This, | ||||
|   IN BOOLEAN                     Reset, | ||||
|   IN EFI_MAC_ADDRESS             *New OPTIONAL | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Resets or collects the statistics on a network interface. | ||||
| 
 | ||||
|   @param  This            Protocol instance pointer. | ||||
|   @param  Reset           Set to TRUE to reset the statistics for the network interface. | ||||
|   @param  StatisticsSize  On input the size, in bytes, of StatisticsTable. On | ||||
|                           output the size, in bytes, of the resulting table of | ||||
|                           statistics. | ||||
|   @param  StatisticsTable A pointer to the EFI_NETWORK_STATISTICS structure that | ||||
|                           contains the statistics. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The statistics were collected from the network interface. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_BUFFER_TOO_SMALL  The Statistics buffer was too small. The current buffer | ||||
|                                 size needed to hold the statistics is returned in | ||||
|                                 StatisticsSize. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpStatistics ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   IN BOOLEAN                              Reset, | ||||
|   IN OUT UINTN                            *StatisticsSize   OPTIONAL, | ||||
|   OUT EFI_NETWORK_STATISTICS              *StatisticsTable  OPTIONAL | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Converts a multicast IP address to a multicast HW MAC address. | ||||
| 
 | ||||
|   @param  This The protocol instance pointer. | ||||
|   @param  IPv6 Set to TRUE if the multicast IP address is IPv6 [RFC 2460]. Set | ||||
|                to FALSE if the multicast IP address is IPv4 [RFC 791]. | ||||
|   @param  IP   The multicast IP address that is to be converted to a multicast | ||||
|                HW MAC address. | ||||
|   @param  MAC  The multicast HW MAC address that is to be generated from IP. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The multicast IP address was mapped to the multicast | ||||
|                                 HW MAC address. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_BUFFER_TOO_SMALL  The Statistics buffer was too small. The current buffer | ||||
|                                 size needed to hold the statistics is returned in | ||||
|                                 StatisticsSize. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpMCastIpToMac ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   IN BOOLEAN                              IPv6, | ||||
|   IN EFI_IP_ADDRESS                       *IP, | ||||
|   OUT EFI_MAC_ADDRESS                     *MAC | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Performs read and write operations on the NVRAM device attached to a  | ||||
|   network interface. | ||||
| 
 | ||||
|   @param  This       The protocol instance pointer. | ||||
|   @param  ReadWrite  TRUE for read operations, FALSE for write operations. | ||||
|   @param  Offset     Byte offset in the NVRAM device at which to start the read or | ||||
|                      write operation. This must be a multiple of NvRamAccessSize and | ||||
|                      less than NvRamSize. | ||||
|   @param  BufferSize The number of bytes to read or write from the NVRAM device. | ||||
|                      This must also be a multiple of NvramAccessSize. | ||||
|   @param  Buffer     A pointer to the data buffer. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The NVRAM access was performed. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpNvData ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   IN BOOLEAN                              ReadWrite, | ||||
|   IN UINTN                                Offset, | ||||
|   IN UINTN                                BufferSize, | ||||
|   IN OUT VOID                             *Buffer | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Reads the current interrupt status and recycled transmit buffer status from  | ||||
|   a network interface. | ||||
| 
 | ||||
|   @param  This            The protocol instance pointer. | ||||
|   @param  InterruptStatus A pointer to the bit mask of the currently active interrupts | ||||
|                           If this is NULL, the interrupt status will not be read from | ||||
|                           the device. If this is not NULL, the interrupt status will | ||||
|                           be read from the device. When the  interrupt status is read, | ||||
|                           it will also be cleared. Clearing the transmit  interrupt | ||||
|                           does not empty the recycled transmit buffer array. | ||||
|   @param  TxBuf           Recycled transmit buffer address. The network interface will | ||||
|                           not transmit if its internal recycled transmit buffer array | ||||
|                           is full. Reading the transmit buffer does not clear the | ||||
|                           transmit interrupt. If this is NULL, then the transmit buffer | ||||
|                           status will not be read. If there are no transmit buffers to | ||||
|                           recycle and TxBuf is not NULL, * TxBuf will be set to NULL. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The status of the network interface was retrieved. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpGetStatus ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   OUT UINT32                              *InterruptStatus OPTIONAL, | ||||
|   OUT VOID                                **TxBuf OPTIONAL | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Places a packet in the transmit queue of a network interface. | ||||
| 
 | ||||
|   @param  This       The protocol instance pointer. | ||||
|   @param  HeaderSize The size, in bytes, of the media header to be filled in by | ||||
|                      the Transmit() function. If HeaderSize is non-zero, then it | ||||
|                      must be equal to This->Mode->MediaHeaderSize and the DestAddr | ||||
|                      and Protocol parameters must not be NULL. | ||||
|   @param  BufferSize The size, in bytes, of the entire packet (media header and | ||||
|                      data) to be transmitted through the network interface. | ||||
|   @param  Buffer     A pointer to the packet (media header followed by data) to be | ||||
|                      transmitted. This parameter cannot be NULL. If HeaderSize is zero, | ||||
|                      then the media header in Buffer must already be filled in by the | ||||
|                      caller. If HeaderSize is non-zero, then the media header will be | ||||
|                      filled in by the Transmit() function. | ||||
|   @param  SrcAddr    The source HW MAC address. If HeaderSize is zero, then this parameter | ||||
|                      is ignored. If HeaderSize is non-zero and SrcAddr is NULL, then | ||||
|                      This->Mode->CurrentAddress is used for the source HW MAC address. | ||||
|   @param  DestAddr   The destination HW MAC address. If HeaderSize is zero, then this | ||||
|                      parameter is ignored. | ||||
|   @param  Protocol   The type of header to build. If HeaderSize is zero, then this | ||||
|                      parameter is ignored. See RFC 1700, section "Ether Types", for | ||||
|                      examples. | ||||
| 
 | ||||
|   @retval EFI_SUCCESS           The packet was placed on the transmit queue. | ||||
|   @retval EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval EFI_NOT_READY         The network interface is too busy to accept this transmit request.                       | ||||
|   @retval EFI_BUFFER_TOO_SMALL  The BufferSize parameter is too small. | ||||
|   @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpTransmit ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   IN UINTN                                HeaderSize, | ||||
|   IN UINTN                                BufferSize, | ||||
|   IN VOID                                 *Buffer, | ||||
|   IN EFI_MAC_ADDRESS                      *SrcAddr  OPTIONAL, | ||||
|   IN EFI_MAC_ADDRESS                      *DestAddr OPTIONAL, | ||||
|   IN UINT16                               *Protocol OPTIONAL | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|   Receives a packet from a network interface. | ||||
| 
 | ||||
|   @param  This       The protocol instance pointer. | ||||
|   @param  HeaderSize The size, in bytes, of the media header received on the network | ||||
|                      interface. If this parameter is NULL, then the media header size | ||||
|                      will not be returned. | ||||
|   @param  BufferSize On entry, the size, in bytes, of Buffer. On exit, the size, in | ||||
|                      bytes, of the packet that was received on the network interface. | ||||
|   @param  Buffer     A pointer to the data buffer to receive both the media header and | ||||
|                      the data. | ||||
|   @param  SrcAddr    The source HW MAC address. If this parameter is NULL, the | ||||
|                      HW MAC source address will not be extracted from the media | ||||
|                      header. | ||||
|   @param  DestAddr   The destination HW MAC address. If this parameter is NULL, | ||||
|                      the HW MAC destination address will not be extracted from the | ||||
|                      media header. | ||||
|   @param  Protocol   The media header type. If this parameter is NULL, then the | ||||
|                      protocol will not be extracted from the media header. See | ||||
|                      RFC 1700 section "Ether Types" for examples. | ||||
| 
 | ||||
|   @retval  EFI_SUCCESS           The received data was stored in Buffer, and BufferSize has | ||||
|                                  been updated to the number of bytes received. | ||||
|   @retval  EFI_NOT_STARTED       The network interface has not been started. | ||||
|   @retval  EFI_NOT_READY         The network interface is too busy to accept this transmit | ||||
|                                  request. | ||||
|   @retval  EFI_BUFFER_TOO_SMALL  The BufferSize parameter is too small. | ||||
|   @retval  EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value. | ||||
|   @retval  EFI_DEVICE_ERROR      The command could not be sent to the network interface. | ||||
|   @retval  EFI_UNSUPPORTED       This function is not supported by the network interface. | ||||
| 
 | ||||
| **/ | ||||
| EFI_STATUS | ||||
| EmuSnpReceive ( | ||||
|   IN EMU_SNP_PROTOCOL                     *This, | ||||
|   OUT UINTN                               *HeaderSize OPTIONAL, | ||||
|   IN OUT UINTN                            *BufferSize, | ||||
|   OUT VOID                                *Buffer, | ||||
|   OUT EFI_MAC_ADDRESS                     *SrcAddr    OPTIONAL, | ||||
|   OUT EFI_MAC_ADDRESS                     *DestAddr   OPTIONAL, | ||||
|   OUT UINT16                              *Protocol   OPTIONAL | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE    *Private; | ||||
| 
 | ||||
|   Private = EMU_SNP_PRIVATE_DATA_FROM_THIS (This); | ||||
| 
 | ||||
|   return EFI_UNSUPPORTED; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| EMU_SNP_PROTOCOL gEmuSnpProtocol = { | ||||
|   GasketSnpCreateMapping, | ||||
|   GasketSnpStart, | ||||
|   GasketSnpStop, | ||||
|   GasketSnpInitialize, | ||||
|   GasketSnpReset, | ||||
|   GasketSnpShutdown, | ||||
|   GasketSnpReceiveFilters, | ||||
|   GasketSnpStationAddress, | ||||
|   GasketSnpStatistics, | ||||
|   GasketSnpMCastIpToMac, | ||||
|   GasketSnpNvData, | ||||
|   GasketSnpGetStatus, | ||||
|   GasketSnpTransmit, | ||||
|   GasketSnpReceive | ||||
| }; | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EmuSnpThunkOpen ( | ||||
|   IN  EMU_IO_THUNK_PROTOCOL   *This | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE  *Private; | ||||
|    | ||||
|   if (This->Private != NULL) { | ||||
|     return EFI_ALREADY_STARTED; | ||||
|   } | ||||
|    | ||||
|   if (!CompareGuid (This->Protocol, &gEmuSnpProtocolGuid)) { | ||||
|     return EFI_UNSUPPORTED; | ||||
|   } | ||||
|    | ||||
|   Private = malloc (sizeof (EMU_SNP_PRIVATE)); | ||||
|   if (Private == NULL) { | ||||
|     return EFI_OUT_OF_RESOURCES; | ||||
|   } | ||||
| 
 | ||||
|    | ||||
|   Private->Signature = EMU_SNP_PRIVATE_SIGNATURE; | ||||
|   Private->Thunk     = This; | ||||
|   CopyMem (&Private->EmuSnp, &gEmuSnpProtocol, sizeof (gEmuSnpProtocol)); | ||||
|    | ||||
|   This->Interface = &Private->EmuSnp; | ||||
|   This->Private   = Private; | ||||
|   return EFI_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EmuSnpThunkClose ( | ||||
|   IN  EMU_IO_THUNK_PROTOCOL   *This | ||||
|   ) | ||||
| { | ||||
|   EMU_SNP_PRIVATE  *Private; | ||||
| 
 | ||||
|   if (!CompareGuid (This->Protocol, &gEmuSnpProtocolGuid)) { | ||||
|     return EFI_UNSUPPORTED; | ||||
|   } | ||||
|    | ||||
|   Private = This->Private; | ||||
|   free (Private); | ||||
|    | ||||
|   return EFI_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| EMU_IO_THUNK_PROTOCOL gSnpThunkIo = { | ||||
|   &gEmuSnpProtocolGuid, | ||||
|   NULL, | ||||
|   NULL, | ||||
|   0, | ||||
|   GasketSnpThunkOpen, | ||||
|   GasketSnpThunkClose, | ||||
|   NULL | ||||
| }; | ||||
| 
 | ||||
| #endif | ||||
| @ -117,8 +117,7 @@ main ( | ||||
|   AddThunkProtocol (&gX11ThunkIo, (CHAR16 *)PcdGetPtr (PcdEmuGop), TRUE);  | ||||
|   AddThunkProtocol (&gPosixFileSystemThunkIo, (CHAR16 *)PcdGetPtr (PcdEmuFileSystem), TRUE);  | ||||
|   AddThunkProtocol (&gBlockIoThunkIo, (CHAR16 *)PcdGetPtr (PcdEmuVirtualDisk), TRUE);  | ||||
|    | ||||
| 
 | ||||
|   AddThunkProtocol (&gSnpThunkIo, (CHAR16 *)PcdGetPtr (PcdEmuNetworkInterface), TRUE);  | ||||
| 
 | ||||
|   //
 | ||||
|   // Emulator other Thunks
 | ||||
|  | ||||
| @ -16,41 +16,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||||
| #ifndef _SEC_MAIN_H__ | ||||
| #define _SEC_MAIN_H__ | ||||
| 
 | ||||
| #include <PiPei.h> | ||||
| #include <Uefi.h> | ||||
| 
 | ||||
| #include <Library/PeCoffLib.h> | ||||
| #include <Library/BaseLib.h> | ||||
| #include <Library/BaseMemoryLib.h> | ||||
| #include <Library/PrintLib.h> | ||||
| #include <Library/PcdLib.h> | ||||
| #include <Library/DebugLib.h> | ||||
| #include <Library/ReportStatusCodeLib.h> | ||||
| 
 | ||||
| #include <Library/ThunkPpiList.h> | ||||
| #include <Library/ThunkProtocolList.h> | ||||
| #include <Library/PeiServicesLib.h> | ||||
| #include <Library/PeCoffGetEntryPointLib.h> | ||||
| #include <Library/EmuMagicPageLib.h> | ||||
| 
 | ||||
| #include <Ppi/EmuThunk.h> | ||||
| #include <Ppi/StatusCode.h> | ||||
| 
 | ||||
| #include <Protocol/SimplePointer.h> | ||||
| #include <Protocol/SimpleTextIn.h> | ||||
| #include <Protocol/SimpleTextInEx.h> | ||||
| #include <Protocol/UgaDraw.h> | ||||
| #include <Protocol/SimpleFileSystem.h> | ||||
| 
 | ||||
| #include <Protocol/EmuThunk.h> | ||||
| #include <Protocol/EmuIoThunk.h> | ||||
| #include <Protocol/EmuGraphicsWindow.h> | ||||
| #include <Protocol/EmuThread.h> | ||||
| #include <Protocol/EmuBlockIo.h> | ||||
| 
 | ||||
| #include <Guid/FileInfo.h> | ||||
| #include <Guid/FileSystemInfo.h> | ||||
| #include <Guid/FileSystemVolumeLabelInfo.h> | ||||
| //
 | ||||
| // Name mangle to prevent build errors. I.e conflicts between EFI and OS
 | ||||
| //
 | ||||
| #define NTOHL   _UNIX_EFI_NAME_MANGLE_NTOHL_ | ||||
| #define HTONL   _UNIX_EFI_NAME_MANGLE_HTONL_ | ||||
| #define NTOHS   _UNIX_EFI_NAME_MANGLE_NTOHS_ | ||||
| #define HTONS   _UNIX_EFI_NAME_MANGLE_HTOHS_ | ||||
| #define B0      _UNIX_EFI_NAME_MANGLE_B0_ | ||||
| 
 | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| @ -104,6 +77,51 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||||
| 
 | ||||
| #include <utime.h> | ||||
| 
 | ||||
| #undef NTOHL | ||||
| #undef HTONL | ||||
| #undef NTOHS | ||||
| #undef HTONS | ||||
| #undef B0 | ||||
| 
 | ||||
| 
 | ||||
| #include <PiPei.h> | ||||
| #include <Uefi.h> | ||||
| 
 | ||||
| #include <Library/PeCoffLib.h> | ||||
| #include <Library/BaseLib.h> | ||||
| #include <Library/BaseMemoryLib.h> | ||||
| #include <Library/PrintLib.h> | ||||
| #include <Library/PcdLib.h> | ||||
| #include <Library/DebugLib.h> | ||||
| #include <Library/ReportStatusCodeLib.h> | ||||
| 
 | ||||
| #include <Library/ThunkPpiList.h> | ||||
| #include <Library/ThunkProtocolList.h> | ||||
| #include <Library/PeiServicesLib.h> | ||||
| #include <Library/PeCoffGetEntryPointLib.h> | ||||
| #include <Library/EmuMagicPageLib.h> | ||||
| 
 | ||||
| #include <Ppi/EmuThunk.h> | ||||
| #include <Ppi/StatusCode.h> | ||||
| 
 | ||||
| #include <Protocol/SimplePointer.h> | ||||
| #include <Protocol/SimpleTextIn.h> | ||||
| #include <Protocol/SimpleTextInEx.h> | ||||
| #include <Protocol/UgaDraw.h> | ||||
| #include <Protocol/SimpleFileSystem.h> | ||||
| 
 | ||||
| #include <Protocol/EmuThunk.h> | ||||
| #include <Protocol/EmuIoThunk.h> | ||||
| #include <Protocol/EmuGraphicsWindow.h> | ||||
| #include <Protocol/EmuThread.h> | ||||
| #include <Protocol/EmuBlockIo.h> | ||||
| #include <Protocol/EmuSnp.h> | ||||
| 
 | ||||
| #include <Guid/FileInfo.h> | ||||
| #include <Guid/FileSystemInfo.h> | ||||
| #include <Guid/FileSystemVolumeLabelInfo.h> | ||||
| 
 | ||||
| 
 | ||||
| #include "Gasket.h" | ||||
| 
 | ||||
| 
 | ||||
| @ -330,5 +348,6 @@ extern EMU_IO_THUNK_PROTOCOL gX11ThunkIo; | ||||
| extern EMU_IO_THUNK_PROTOCOL gPosixFileSystemThunkIo; | ||||
| extern EMU_IO_THUNK_PROTOCOL gPthreadThunkIo; | ||||
| extern EMU_IO_THUNK_PROTOCOL gBlockIoThunkIo; | ||||
| extern EMU_IO_THUNK_PROTOCOL gSnpThunkIo; | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -36,6 +36,8 @@ | ||||
|   Pthreads.c | ||||
|   PosixFileSystem.c | ||||
|   BlockIo.c | ||||
|   LinuxPacketFilter.c  | ||||
|   BerkeleyPacketFilter.c  | ||||
|    | ||||
| [Sources.X64] | ||||
|   X64/Gasket.S        # convert between Emu x86_64 ABI and EFI X64 ABI | ||||
| @ -70,6 +72,7 @@ | ||||
|   gEmuGraphicsWindowProtocolGuid | ||||
|   gEmuThreadThunkProtocolGuid | ||||
|   gEmuBlockIoProtocolGuid | ||||
|   gEmuSnpProtocolGuid | ||||
|   gEfiSimpleFileSystemProtocolGuid | ||||
| 
 | ||||
| [Guids] | ||||
| @ -90,6 +93,7 @@ | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdEmuFileSystem | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdEmuSerialPort | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdEmuNetworkInterface | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdNetworkPacketFilterSize | ||||
| 
 | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdEmuFlashFvRecoveryBase | ||||
|   gInOsEmuPkgTokenSpaceGuid.PcdEmuFlashFvRecoverySize | ||||
|  | ||||
| @ -870,7 +870,7 @@ ASM_PFX(GasketPosixFileOpen): | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
|   movq    %r9,  %rcx | ||||
|   movq    0x30(%rbp), %r8  | ||||
|   movq    48(%rbp), %r8  | ||||
|   | ||||
|   call    ASM_PFX(PosixFileOpen) | ||||
| 
 | ||||
| @ -1120,8 +1120,8 @@ ASM_PFX(GasketEmuBlockIoReadBlocks): | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
|   movq    %r9,  %rcx | ||||
|   movq    0x30(%rbp), %r8    | ||||
|   movq    0x38(%rbp), %r9    | ||||
|   movq    48(%rbp), %r8    | ||||
|   movq    56(%rbp), %r9    | ||||
| 
 | ||||
|   call    ASM_PFX(EmuBlockIoReadBlocks) | ||||
| 
 | ||||
| @ -1143,8 +1143,8 @@ ASM_PFX(GasketEmuBlockIoWriteBlocks): | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
|   movq    %r9,  %rcx | ||||
|   movq    0x30(%rbp), %r8    | ||||
|   movq    0x38(%rbp), %r9    | ||||
|   movq    48(%rbp), %r8    | ||||
|   movq    56(%rbp), %r9    | ||||
| 
 | ||||
|   call    ASM_PFX(EmuBlockIoWriteBlocks) | ||||
| 
 | ||||
| @ -1229,3 +1229,336 @@ ASM_PFX(GasketBlockIoThunkClose): | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpCreateMapping) | ||||
| ASM_PFX(GasketSnpCreateMapping): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpCreateMapping) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpStart) | ||||
| ASM_PFX(GasketSnpStart): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpStart) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpStop) | ||||
| ASM_PFX(GasketSnpStop): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpStop) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpInitialize) | ||||
| ASM_PFX(GasketSnpInitialize): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpInitialize) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpReset) | ||||
| ASM_PFX(GasketSnpReset): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpReset) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpShutdown) | ||||
| ASM_PFX(GasketSnpShutdown): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpShutdown) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpReceiveFilters) | ||||
| ASM_PFX(GasketSnpReceiveFilters): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
|   movq    %r9,  %rcx | ||||
|   movq    48(%rbp), %r8    | ||||
|   movq    56(%rbp), %r9    | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpReceiveFilters) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpStationAddress) | ||||
| ASM_PFX(GasketSnpStationAddress): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpStationAddress) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpStatistics) | ||||
| ASM_PFX(GasketSnpStatistics): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
|   movq    %r9,  %rcx | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpStatistics) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpMCastIpToMac) | ||||
| ASM_PFX(GasketSnpMCastIpToMac): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
|   movq    %r9,  %rcx | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpMCastIpToMac) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpNvData) | ||||
| ASM_PFX(GasketSnpNvData): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
|   movq    %r9,  %rcx | ||||
|   movq    48(%rbp), %r8    | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpNvData) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpGetStatus) | ||||
| ASM_PFX(GasketSnpGetStatus): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpGetStatus) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpTransmit) | ||||
| ASM_PFX(GasketSnpTransmit): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 	subq    $16, %rsp       // Allocate space for args on the stack  | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
|   movq    %r9,  %rcx | ||||
|   movq    48(%rbp), %r8    | ||||
|   movq    56(%rbp), %r9    | ||||
|   movq    64(%rbp), %rax | ||||
|   movq    %rax,     (%rsp) | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpTransmit) | ||||
| 	addq    $16, %rsp | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpReceive) | ||||
| ASM_PFX(GasketSnpReceive): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 	subq    $16, %rsp       // Allocate space for args on the stack | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
|   movq    %rdx, %rsi      | ||||
|   movq    %r8,  %rdx | ||||
|   movq    %r9,  %rcx | ||||
|   movq    48(%rbp), %r8    | ||||
|   movq    56(%rbp), %r9    | ||||
|   movq    64(%rbp), %rax | ||||
|   movq    %rax,     (%rsp) | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpReceive) | ||||
| 	addq    $16, %rsp | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpThunkOpen) | ||||
| ASM_PFX(GasketSnpThunkOpen): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpThunkOpen) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
| ASM_GLOBAL ASM_PFX(GasketSnpThunkClose) | ||||
| ASM_PFX(GasketSnpThunkClose): | ||||
|   pushq   %rbp            // stack frame is for the debugger | ||||
|   movq    %rsp, %rbp | ||||
| 
 | ||||
|   pushq   %rsi          // %rsi & %rdi are volatile in Unix and callee-save in EFI ABI | ||||
|   pushq   %rdi | ||||
| 
 | ||||
|   movq    %rcx, %rdi    // Swizzle args  | ||||
| 
 | ||||
|   call    ASM_PFX(EmuSnpThunkClose) | ||||
| 
 | ||||
|   popq    %rdi          // restore state | ||||
|   popq    %rsi | ||||
|   popq    %rbp | ||||
|   ret | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -108,8 +108,6 @@ | ||||
|   PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf | ||||
|   DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf | ||||
|   DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf | ||||
| 
 | ||||
| ####  DevicePathTextLib|InOsEmuPkg/Library/DevicePathTextLib/DevicePathTextLib.inf | ||||
|   PeiServicesTablePointerLib|InOsEmuPkg/Library/PeiServicesTablePointerLibMagicPage/PeiServicesTablePointerLibMagicPage.inf | ||||
| 
 | ||||
| [LibraryClasses.common.SEC] | ||||
| @ -351,6 +349,11 @@ | ||||
|   MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf | ||||
|   IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf | ||||
|   MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf  | ||||
|  # { | ||||
|  #   <LibraryClasses>   | ||||
|  #     NULL|InOsEmuPkg/Library/DevicePathTextLib/DevicePathTextLib.inf | ||||
|  # } | ||||
|    | ||||
|   MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf | ||||
|   MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf | ||||
|   MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user