mirror of https://github.com/acidanthera/audk.git
308 lines
6.3 KiB
C
308 lines
6.3 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 2006, 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
|
||
|
|
||
|
//
|
||
|
// PxeDhcp4 protocol instance data
|
||
|
//
|
||
|
typedef struct {
|
||
|
//
|
||
|
// Signature field used to locate beginning of containment record.
|
||
|
//
|
||
|
UINTN Signature;
|
||
|
|
||
|
#define PXE_DHCP4_PRIVATE_DATA_SIGNATURE EFI_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_DRIVER_BINDING_PROTOCOL gPxeDhcp4DriverBinding;
|
||
|
extern EFI_COMPONENT_NAME_PROTOCOL gPxeDhcp4ComponentName;
|
||
|
|
||
|
#endif /* _PXEDHCP4_H */
|
||
|
|
||
|
/* EOF - PxeDhcp4.h */
|