mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 05:38:26 +00:00 
			
		
		
		
	Network driver don't depend on PI definition. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7479 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			327 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			327 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
 | 
						|
Copyright (c) 2004 - 2007, Intel Corporation
 | 
						|
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.
 | 
						|
 | 
						|
Module Name:
 | 
						|
  PxeDhcp4.h
 | 
						|
 | 
						|
Abstract:
 | 
						|
  Common header for PxeDhcp4 protocol driver
 | 
						|
 | 
						|
 | 
						|
**/
 | 
						|
#ifndef _PXEDHCP4_H
 | 
						|
#define _PXEDHCP4_H
 | 
						|
 | 
						|
 | 
						|
#include <Uefi.h>
 | 
						|
 | 
						|
#include <Protocol/PxeBaseCode.h>
 | 
						|
#include <Protocol/SimpleNetwork.h>
 | 
						|
#include <Protocol/PxeDhcp4.h>
 | 
						|
#include <Protocol/PxeDhcp4CallBack.h>
 | 
						|
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/MemoryAllocationLib.h>
 | 
						|
#include <Library/UefiDriverEntryPoint.h>
 | 
						|
#include <Library/UefiBootServicesTableLib.h>
 | 
						|
#include <Library/UefiLib.h>
 | 
						|
 | 
						|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
 | 
						|
 | 
						|
//
 | 
						|
// PxeDhcp4 protocol instance data
 | 
						|
//
 | 
						|
typedef struct {
 | 
						|
  //
 | 
						|
  // Signature field used to locate beginning of containment record.
 | 
						|
  //
 | 
						|
  UINTN Signature;
 | 
						|
 | 
						|
#define PXE_DHCP4_PRIVATE_DATA_SIGNATURE  SIGNATURE_32 ('p', 'x', 'D', '4')
 | 
						|
  //
 | 
						|
  // Device handle the protocol is bound to.
 | 
						|
  //
 | 
						|
  EFI_HANDLE                      Handle;
 | 
						|
 | 
						|
  //
 | 
						|
  // Public PxeDhcp4 protocol interface.
 | 
						|
  //
 | 
						|
  EFI_PXE_DHCP4_PROTOCOL          PxeDhcp4;
 | 
						|
 | 
						|
  //
 | 
						|
  // Consumed PxeBc, Snp and PxeDhcp4Callback protocol interfaces.
 | 
						|
  //
 | 
						|
  EFI_PXE_BASE_CODE_PROTOCOL      *PxeBc;
 | 
						|
  EFI_SIMPLE_NETWORK_PROTOCOL     *Snp;
 | 
						|
  EFI_PXE_DHCP4_CALLBACK_PROTOCOL *callback;
 | 
						|
 | 
						|
  //
 | 
						|
  // PxeDhcp4 called function for PxeDhcp4Callback.
 | 
						|
  //
 | 
						|
  EFI_PXE_DHCP4_FUNCTION          function;
 | 
						|
 | 
						|
  //
 | 
						|
  // Timeout event and flag for PxeDhcp4Callback.
 | 
						|
  //
 | 
						|
  EFI_EVENT                       TimeoutEvent;
 | 
						|
  BOOLEAN                         TimeoutOccurred;
 | 
						|
 | 
						|
  //
 | 
						|
  // Periodic event and flag for PxeDhcp4Callback.
 | 
						|
  //
 | 
						|
  EFI_EVENT                       PeriodicEvent;
 | 
						|
  BOOLEAN                         PeriodicOccurred;
 | 
						|
 | 
						|
  //
 | 
						|
  // DHCP server IP address.
 | 
						|
  //
 | 
						|
  UINT32                          ServerIp;
 | 
						|
 | 
						|
  //
 | 
						|
  // DHCP renewal and rebinding times, in seconds.
 | 
						|
  //
 | 
						|
  UINT32                          RenewTime;
 | 
						|
  UINT32                          RebindTime;
 | 
						|
  UINT32                          LeaseTime;
 | 
						|
 | 
						|
  //
 | 
						|
  // Number of offers received & allocated offer list.
 | 
						|
  //
 | 
						|
  UINTN                           offers;
 | 
						|
  DHCP4_PACKET                    *offer_list;
 | 
						|
 | 
						|
  //
 | 
						|
  //
 | 
						|
  //
 | 
						|
  BOOLEAN                         StopPxeBc;
 | 
						|
 | 
						|
} PXE_DHCP4_PRIVATE_DATA;
 | 
						|
 | 
						|
#define PXE_DHCP4_PRIVATE_DATA_FROM_THIS(a) CR (a, PXE_DHCP4_PRIVATE_DATA, PxeDhcp4, PXE_DHCP4_PRIVATE_DATA_SIGNATURE)
 | 
						|
 | 
						|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
 | 
						|
 | 
						|
//
 | 
						|
// Protocol function prototypes.
 | 
						|
//
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
EFIAPI
 | 
						|
PxeDhcp4Run (
 | 
						|
  IN EFI_PXE_DHCP4_PROTOCOL *This,
 | 
						|
  IN OPTIONAL UINTN                  OpLen,
 | 
						|
  IN OPTIONAL VOID                   *OpList
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
EFIAPI
 | 
						|
PxeDhcp4Setup (
 | 
						|
  IN EFI_PXE_DHCP4_PROTOCOL *This,
 | 
						|
  IN EFI_PXE_DHCP4_DATA     *Data
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
EFIAPI
 | 
						|
PxeDhcp4Init (
 | 
						|
  IN EFI_PXE_DHCP4_PROTOCOL *This,
 | 
						|
  IN UINTN                  seconds_timeout,
 | 
						|
  OUT UINTN                 *offer_list_entries,
 | 
						|
  OUT DHCP4_PACKET          **offer_list
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
EFIAPI
 | 
						|
PxeDhcp4Select (
 | 
						|
  IN EFI_PXE_DHCP4_PROTOCOL *This,
 | 
						|
  IN UINTN                  seconds_timeout,
 | 
						|
  IN DHCP4_PACKET           *offer_list
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
EFIAPI
 | 
						|
PxeDhcp4Renew (
 | 
						|
  IN EFI_PXE_DHCP4_PROTOCOL *This,
 | 
						|
  UINTN                     seconds_timeout
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
EFIAPI
 | 
						|
PxeDhcp4Rebind (
 | 
						|
  IN EFI_PXE_DHCP4_PROTOCOL *This,
 | 
						|
  UINTN                     seconds_timeout
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
EFIAPI
 | 
						|
PxeDhcp4Release (
 | 
						|
  IN EFI_PXE_DHCP4_PROTOCOL *This
 | 
						|
  );
 | 
						|
 | 
						|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
 | 
						|
 | 
						|
//
 | 
						|
// Support function prototypes.
 | 
						|
//
 | 
						|
extern
 | 
						|
UINT16 
 | 
						|
htons (
 | 
						|
  UINTN n
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
UINT32 
 | 
						|
htonl (
 | 
						|
  UINTN n
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
VOID 
 | 
						|
EFIAPI
 | 
						|
timeout_notify (
 | 
						|
  IN EFI_EVENT Event,
 | 
						|
  IN VOID      *Context
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
VOID 
 | 
						|
EFIAPI
 | 
						|
periodic_notify (
 | 
						|
  IN EFI_EVENT Event,
 | 
						|
  IN VOID      *Context
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
find_opt (
 | 
						|
  IN DHCP4_PACKET *Packet,
 | 
						|
  IN UINT8        OpCode,
 | 
						|
  IN UINTN        Skip,
 | 
						|
  OUT DHCP4_OP    **OpPtr
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
add_opt (
 | 
						|
  IN DHCP4_PACKET *Packet,
 | 
						|
  IN DHCP4_OP     *OpPtr
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
start_udp (
 | 
						|
  IN PXE_DHCP4_PRIVATE_DATA *Private,
 | 
						|
  IN OPTIONAL EFI_IP_ADDRESS         *station_ip,
 | 
						|
  IN OPTIONAL EFI_IP_ADDRESS         *subnet_mask
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
VOID 
 | 
						|
stop_udp (
 | 
						|
  IN PXE_DHCP4_PRIVATE_DATA *Private
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
start_receive_events (
 | 
						|
  IN PXE_DHCP4_PRIVATE_DATA *Private,
 | 
						|
  IN UINTN                  seconds_timeout
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
VOID 
 | 
						|
stop_receive_events (
 | 
						|
  IN PXE_DHCP4_PRIVATE_DATA *Private
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
tx_udp (
 | 
						|
  IN PXE_DHCP4_PRIVATE_DATA *Private,
 | 
						|
  IN EFI_IP_ADDRESS         *dest_ip,
 | 
						|
  IN OPTIONAL EFI_IP_ADDRESS         *gateway_ip,
 | 
						|
  IN EFI_IP_ADDRESS         *src_ip,
 | 
						|
  IN VOID                   *buffer,
 | 
						|
  IN UINTN                  BufferSize
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
rx_udp (
 | 
						|
  IN PXE_DHCP4_PRIVATE_DATA *Private,
 | 
						|
  OUT VOID                  *buffer,
 | 
						|
  OUT UINTN                 *BufferSize,
 | 
						|
  IN OUT EFI_IP_ADDRESS     *dest_ip,
 | 
						|
  IN OUT EFI_IP_ADDRESS     *src_ip,
 | 
						|
  IN UINT16                 op_flags
 | 
						|
  );
 | 
						|
 | 
						|
extern
 | 
						|
EFI_STATUS 
 | 
						|
tx_rx_udp (
 | 
						|
  IN PXE_DHCP4_PRIVATE_DATA    *Private,
 | 
						|
  IN OUT EFI_IP_ADDRESS        *ServerIp,
 | 
						|
  IN OPTIONAL EFI_IP_ADDRESS   *gateway_ip,
 | 
						|
  IN OPTIONAL EFI_IP_ADDRESS   *client_ip,
 | 
						|
  IN OPTIONAL EFI_IP_ADDRESS   *subnet_mask,
 | 
						|
  IN DHCP4_PACKET              *tx_pkt,
 | 
						|
  OUT DHCP4_PACKET             *rx_pkt,
 | 
						|
  IN INTN
 | 
						|
    (
 | 
						|
  *rx_vfy)
 | 
						|
    (
 | 
						|
      IN PXE_DHCP4_PRIVATE_DATA *Private,
 | 
						|
      IN DHCP4_PACKET *tx_pkt,
 | 
						|
      IN DHCP4_PACKET *rx_pkt,
 | 
						|
      IN UINTN rx_pkt_size
 | 
						|
    ),
 | 
						|
  IN UINTN seconds_timeout
 | 
						|
  );
 | 
						|
 | 
						|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
 | 
						|
 | 
						|
//
 | 
						|
// Global variable definitions.
 | 
						|
//
 | 
						|
extern EFI_COMPONENT_NAME_PROTOCOL    gPxeDhcp4ComponentName;
 | 
						|
extern EFI_COMPONENT_NAME2_PROTOCOL   gPxeDhcp4ComponentName2;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
PxeDhcp4DriverEntryPoint (
 | 
						|
  IN EFI_HANDLE        ImageHandle,
 | 
						|
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
  Register Driver Binding protocol for this driver.
 | 
						|
 | 
						|
Arguments:
 | 
						|
  (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)
 | 
						|
 | 
						|
Returns:
 | 
						|
  EFI_SUCCESS - Driver loaded.
 | 
						|
  other       - Driver not loaded.
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
#endif /* _PXEDHCP4_H */
 | 
						|
 | 
						|
/* EOF - PxeDhcp4.h */
 |