]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/PxeDhcp4Dxe/PxeDhcp4.h
Import ArpDxe, Dhcp4Dxe, Ip4Dxe, Mtftp4Dxe, PxeBcDxe and PxeDhcp4Dxe.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / PxeDhcp4Dxe / PxeDhcp4.h
diff --git a/MdeModulePkg/Universal/Network/PxeDhcp4Dxe/PxeDhcp4.h b/MdeModulePkg/Universal/Network/PxeDhcp4Dxe/PxeDhcp4.h
new file mode 100644 (file)
index 0000000..b33ed3e
--- /dev/null
@@ -0,0 +1,353 @@
+/** @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
+
+\r
+#include <PiDxe.h>\r
+\r
+#include <Protocol/PxeBaseCode.h>\r
+#include <Protocol/SimpleNetwork.h>
+#include <Protocol/PxeDhcp4.h>
+#include <Protocol/PxeDhcp4Callback.h>\r
+\r
+#include <Library/DebugLib.h>\r
+#include <Library/BaseMemoryLib.h>
+#include <Library/MemoryAllocationLib.h>\r
+#include <Library/UefiDriverEntryPoint.h>\r
+#include <Library/UefiBootServicesTableLib.h>\r
+#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  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_COMPONENT_NAME_PROTOCOL   gPxeDhcp4ComponentName;
+
+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.
+
+--*/
+;
+
+#ifdef EFI_SIZE_REDUCTION_APPLIED
+  #define COMPONENT_NAME_CODE(code)
+  #define COMPONENT_NAME            NULL
+#else
+  #define COMPONENT_NAME_CODE(code) code
+  #define COMPONENT_NAME            &gPxeDhcp4ComponentName
+#endif
+
+#endif /* _PXEDHCP4_H */
+
+/* EOF - PxeDhcp4.h */