git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11297 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			157 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
 | 
						|
 Copyright (c) 2010, Apple, Inc. All rights reserved.<BR>
 | 
						|
 | 
						|
    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.
 | 
						|
 | 
						|
Module Name:
 | 
						|
 | 
						|
  UnixSnp.h
 | 
						|
 | 
						|
Abstract:
 | 
						|
 | 
						|
-**/
 | 
						|
 | 
						|
#ifndef _UNIX_SNP_H_
 | 
						|
#define _UNIX_SNP_H_
 | 
						|
 | 
						|
#include <Uefi.h>
 | 
						|
 | 
						|
#include <Protocol/SimpleNetwork.h>
 | 
						|
#include <Protocol/DevicePath.h>
 | 
						|
#include <Protocol/UnixIo.h>
 | 
						|
 | 
						|
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/UefiBootServicesTableLib.h>
 | 
						|
#include <Library/UefiLib.h>
 | 
						|
#include <Library/DevicePathLib.h>
 | 
						|
#include <Library/MemoryAllocationLib.h>
 | 
						|
#include <Library/NetLib.h>
 | 
						|
 | 
						|
#define NET_ETHER_HEADER_SIZE     14
 | 
						|
 | 
						|
//
 | 
						|
//  Private data for driver.
 | 
						|
//
 | 
						|
#define UNIX_SNP_PRIVATE_DATA_SIGNATURE SIGNATURE_32( 'U', 'S', 'N', 'P' )
 | 
						|
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
  UINT32                Signature;
 | 
						|
 | 
						|
  EFI_UNIX_THUNK_PROTOCOL*      UnixThunk;
 | 
						|
 | 
						|
  EFI_HANDLE              DeviceHandle;
 | 
						|
  EFI_DEVICE_PATH_PROTOCOL*      DevicePath;
 | 
						|
 | 
						|
  EFI_MAC_ADDRESS            MacAddress;
 | 
						|
 | 
						|
  CHAR8*                InterfaceName;
 | 
						|
  INTN                ReadBufferSize;
 | 
						|
  VOID*                ReadBuffer;
 | 
						|
  //
 | 
						|
  // Two walking pointers to manage the multiple packets that can be returned
 | 
						|
  // in a single read.
 | 
						|
  //
 | 
						|
  VOID*                CurrentReadPointer;
 | 
						|
  VOID*                EndReadPointer;
 | 
						|
 | 
						|
  INTN                BpfFd;
 | 
						|
 | 
						|
  EFI_SIMPLE_NETWORK_PROTOCOL      Snp;
 | 
						|
  EFI_SIMPLE_NETWORK_MODE        Mode;
 | 
						|
} UNIX_SNP_PRIVATE_DATA;
 | 
						|
 | 
						|
#define UNIX_SNP_PRIVATE_DATA_FROM_SNP_THIS(a) \
 | 
						|
      CR( a, UNIX_SNP_PRIVATE_DATA, Snp, UNIX_SNP_PRIVATE_DATA_SIGNATURE )
 | 
						|
 | 
						|
extern EFI_DRIVER_BINDING_PROTOCOL    gUnixSnpDriverBinding;
 | 
						|
extern EFI_COMPONENT_NAME_PROTOCOL    gUnixSnpDriverComponentName;
 | 
						|
extern EFI_COMPONENT_NAME2_PROTOCOL   gUnixSnpDriverComponentName2;
 | 
						|
 | 
						|
/**
 | 
						|
  Test to see if this driver supports ControllerHandle. This service
 | 
						|
  is called by the EFI boot service ConnectController(). In
 | 
						|
  order to make drivers as small as possible, there are a few calling
 | 
						|
  restrictions for this service. ConnectController() must
 | 
						|
  follow these calling restrictions. If any other agent wishes to call
 | 
						|
  Supported() it must also follow these calling restrictions.
 | 
						|
 | 
						|
  @param  This                Protocol instance pointer.
 | 
						|
  @param  ControllerHandle    Handle of device to test
 | 
						|
  @param  RemainingDevicePath Optional parameter use to pick a specific child
 | 
						|
                              device to start.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS         This driver supports this device
 | 
						|
  @retval EFI_UNSUPPORTED     This driver does not support this device
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
UnixSnpDriverBindingSupported (
 | 
						|
  IN EFI_DRIVER_BINDING_PROTOCOL  * This,
 | 
						|
  IN EFI_HANDLE                   ControllerHandle,
 | 
						|
  IN EFI_DEVICE_PATH_PROTOCOL     * RemainingDevicePath OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Start this driver on ControllerHandle. This service is called by the
 | 
						|
  EFI boot service ConnectController(). In order to make
 | 
						|
  drivers as small as possible, there are a few calling restrictions for
 | 
						|
  this service. ConnectController() must follow these
 | 
						|
  calling restrictions. If any other agent wishes to call Start() it
 | 
						|
  must also follow these calling restrictions.
 | 
						|
 | 
						|
  @param  This                 Protocol instance pointer.
 | 
						|
  @param  ControllerHandle     Handle of device to bind driver to
 | 
						|
  @param  RemainingDevicePath  Optional parameter use to pick a specific child
 | 
						|
                               device to start.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS          Always succeeds.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
UnixSnpDriverBindingStart (
 | 
						|
  IN EFI_DRIVER_BINDING_PROTOCOL  * This,
 | 
						|
  IN EFI_HANDLE                   ControllerHandle,
 | 
						|
  IN EFI_DEVICE_PATH_PROTOCOL     * RemainingDevicePath OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Stop this driver on ControllerHandle. This service is called by the
 | 
						|
  EFI boot service DisconnectController(). In order to
 | 
						|
  make drivers as small as possible, there are a few calling
 | 
						|
  restrictions for this service. DisconnectController()
 | 
						|
  must follow these calling restrictions. If any other agent wishes
 | 
						|
  to call Stop() it must also follow these calling restrictions.
 | 
						|
  
 | 
						|
  @param  This              Protocol instance pointer.
 | 
						|
  @param  ControllerHandle  Handle of device to stop driver on
 | 
						|
  @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of
 | 
						|
                            children is zero stop the entire bus driver.
 | 
						|
  @param  ChildHandleBuffer List of Child Handles to Stop.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS       Always succeeds.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
UnixSnpDriverBindingStop (
 | 
						|
  IN  EFI_DRIVER_BINDING_PROTOCOL  *This,
 | 
						|
  IN  EFI_HANDLE                   ControllerHandle,
 | 
						|
  IN  UINTN                        NumberOfChildren,
 | 
						|
  IN  EFI_HANDLE                   *ChildHandleBuffer
 | 
						|
  );
 | 
						|
 | 
						|
#endif  // _UNIX_SNP_H_
 |