]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/Network/PxeBc/Dxe/ip.h
Retiring the ANT/JAVA build and removing the older EDK II packages that required...
[mirror_edk2.git] / EdkModulePkg / Universal / Network / PxeBc / Dxe / ip.h
diff --git a/EdkModulePkg/Universal/Network/PxeBc/Dxe/ip.h b/EdkModulePkg/Universal/Network/PxeBc/Dxe/ip.h
deleted file mode 100644 (file)
index 5cabf2e..0000000
+++ /dev/null
@@ -1,742 +0,0 @@
-/*++\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
---*/\r
-\r
-#ifndef _IP_H_\r
-#define _IP_H_\r
-\r
-#include "hton.h"\r
-\r
-//\r
-// Client architecture types\r
-//\r
-#if defined   MDE_CPU_IA32\r
-#define       SYS_ARCH  0x6\r
-#elif defined MDE_CPU_X64\r
-#define       SYS_ARCH  0x7\r
-#elif defined MDE_CPU_IPF\r
-#define       SYS_ARCH  0x2\r
-#else\r
-#error Unsupported Client Processor Type\r
-#endif\r
-\r
-\r
-//\r
-// portability macros\r
-//\r
-#define UDP_FILTER_MASK  (EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP | \\r
-                         EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT | \\r
-                         EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP | \\r
-                         EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT | \\r
-                         EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER \\r
-          )\r
-\r
-#define PXE_BOOT_LAYER_MASK             0x7FFF\r
-#define PXE_BOOT_LAYER_INITIAL          0x0000\r
-#define PXE_BOOT_LAYER_CREDENTIAL_FLAG  0x8000\r
-#define MAX_BOOT_SERVERS                32\r
-\r
-//\r
-// macro to evaluate IP address as TRUE if it is a multicast IP address\r
-//\r
-#define IS_MULTICAST(ptr) ((*((UINT8 *) ptr) & 0xf0) == 0xe0)\r
-\r
-//\r
-// length macros\r
-//\r
-#define IP_ADDRESS_LENGTH(qp)   (((qp)->UsingIpv6) ? sizeof (EFI_IPv6_ADDRESS) : sizeof (EFI_IPv4_ADDRESS))\r
-\r
-#define MAX_FRAME_DATA_SIZE     1488\r
-#define ALLOCATE_SIZE(X)        (((X) + 7) & 0xfff8)\r
-#define MODE_ALLOCATE_SIZE      ALLOCATE_SIZE (sizeof (EFI_PXE_BASE_CODE_MODE))\r
-#define BUFFER_ALLOCATE_SIZE    (8192 + 512)\r
-#define ROUTER_ALLOCATE_SIZE    ALLOCATE_SIZE ((sizeof (EFI_PXE_BASE_CODE_ROUTE_ENTRY) * PXE_ROUTER_TABLE_SIZE))\r
-#define ARP_ALLOCATE_SIZE       ALLOCATE_SIZE ((sizeof (EFI_PXE_BASE_CODE_ARP_ENTRY) * PXE_ARP_CACHE_SIZE))\r
-#define FILTER_ALLOCATE_SIZE    ALLOCATE_SIZE ((sizeof (EFI_IP_ADDRESS) * PXE_IP_FILTER_SIZE))\r
-#define PXE_ARP_CACHE_SIZE      8\r
-#define PXE_ROUTER_TABLE_SIZE   8\r
-#define PXE_IP_FILTER_SIZE      8\r
-#define ICMP_ALLOCATE_SIZE      ALLOCATE_SIZE (sizeof (EFI_PXE_BASE_CODE_ICMP_ERROR))\r
-#define TFTP_ERR_ALLOCATE_SIZE  ALLOCATE_SIZE (sizeof (EFI_PXE_BASE_CODE_TFTP_ERROR))\r
-\r
-//\r
-// DHCP discover/request packets are sent to this UDP port.  ProxyDHCP\r
-// servers listen on this port for DHCP discover packets that have a\r
-// class identifier (option 60) with 'PXEClient' in the first 9 bytes.\r
-// Bootservers also listen on this port for PXE broadcast discover\r
-// requests from PXE clients.\r
-//\r
-#define DHCP_SERVER_PORT  67\r
-\r
-//\r
-// When DHCP, proxyDHCP and Bootservers respond to DHCP and PXE broadcast\r
-// discover requests by broadcasting the reply packet, the packet is\r
-// broadcast to this port.\r
-//\r
-#define DHCP_CLIENT_PORT  68\r
-\r
-//\r
-// TFTP servers listen for TFTP open requests on this port.\r
-//\r
-#define TFTP_OPEN_PORT  69\r
-\r
-//\r
-// proxyDHCP and Bootservers listen on this port for a PXE unicast and/or\r
-// multicast discover requests from PXE clients.  A PXE discover request\r
-// looks like a DHCP discover or DHCP request packet.\r
-//\r
-#define PXE_DISCOVERY_PORT  4011\r
-\r
-//\r
-// This port is used by the PXE client/server protocol tests.\r
-//\r
-#define PXE_PORT_PXETEST_PORT 0x8080\r
-\r
-//\r
-// Definitions for Ethertype protocol numbers and interface types\r
-// Per RFC 1700,\r
-//\r
-#define PXE_PROTOCOL_ETHERNET_IP    0x0800\r
-#define PXE_PROTOCOL_ETHERNET_ARP   0x0806\r
-#define PXE_PROTOCOL_ETHERNET_RARP  0x8035\r
-\r
-#define PXE_IFTYPE_ETHERNET         0x01\r
-#define PXE_IFTYPE_TOKENRING        0x04\r
-#define PXE_IFTYPE_FIBRE_CHANNEL    0x12\r
-\r
-//\r
-// Definitions for internet protocol version 4 header\r
-// Per RFC 791, September 1981.\r
-//\r
-#define IPVER4  4\r
-\r
-#pragma pack(1) // make network structures packed byte alignment\r
-typedef union {\r
-  UINT8   B[4];\r
-  UINT32  L;\r
-} IPV4_ADDR;\r
-\r
-#define IPV4_HEADER_LENGTH(IpHeaderPtr) (((IpHeaderPtr)->VersionIhl & 0xf) << 2)\r
-\r
-#define SET_IPV4_VER_HDL(IpHeaderPtr, IpHeaderLen) { \\r
-    (IpHeaderPtr)->VersionIhl = (UINT8) ((IPVER4 << 4) | ((IpHeaderLen) >> 2)); \\r
-  }\r
-\r
-typedef struct {\r
-  UINT8     VersionIhl;\r
-  UINT8     TypeOfService;\r
-  UINT16    TotalLength;\r
-  UINT16    Id;\r
-  UINT16    FragmentFields;\r
-  UINT8     TimeToLive;\r
-  UINT8     Protocol;\r
-  UINT16    HeaderChecksum;\r
-  IPV4_ADDR SrcAddr;\r
-  IPV4_ADDR DestAddr;\r
-  //\r
-  // options are not implemented\r
-  //\r
-} IPV4_HEADER;\r
-\r
-#define IP_FRAG_RSVD    0x8000  // reserved bit - must be zero\r
-#define IP_NO_FRAG      0x4000  // do not fragment bit\r
-#define IP_MORE_FRAG    0x2000  // not last fragment\r
-#define IP_FRAG_OFF_MSK 0x1fff  // fragment offset in 8 byte chunks\r
-#define DEFAULT_RFC_TTL 64\r
-\r
-#define PROT_ICMP       1\r
-#define PROT_IGMP       2\r
-#define PROT_TCP        6\r
-#define PROT_UDP        17\r
-\r
-/*\r
- * Definitions for internet control message protocol version 4 message\r
- * structure.  Per RFC 792, September 1981.\r
- */\r
-\r
-//\r
-// icmp header for all icmp messages\r
-//\r
-typedef struct {\r
-  UINT8   Type;     // message type\r
-  UINT8   Code;     // type specific - 0 for types we implement\r
-  UINT16  Checksum; // ones complement of ones complement sum of 16 bit words of message\r
-} ICMPV4_HEADER;\r
-\r
-#define ICMP_DEST_UNREACHABLE   3\r
-#define ICMP_SOURCE_QUENCH      4\r
-#define ICMP_REDIRECT           5\r
-#define ICMP_ECHO               8\r
-#define ICMP_ECHO_REPLY         0\r
-#define ICMP_ROUTER_ADV         9\r
-#define ICMP_ROUTER_SOLICIT     10\r
-#define ICMP_TIME_EXCEEDED      11\r
-#define ICMP_PARAMETER_PROBLEM  12\r
-#define ICMP_TIMESTAMP          13\r
-#define ICMP_TIMESTAMP_REPLY    14\r
-#define ICMP_INFO_REQ           15\r
-#define ICMP_INFO_REQ_REPLY     16\r
-#define ICMP_SUBNET_MASK_REQ    17\r
-#define ICMP_SUBNET_MASK_REPLY  18\r
-//\r
-// other ICMP message types ignored in this implementation\r
-//\r
-// icmp general messages\r
-//\r
-typedef struct {\r
-  ICMPV4_HEADER Header;\r
-  //\r
-  // generally unused except byte [0] for\r
-  // parameter problem message\r
-  //\r
-  UINT8         GenerallyUnused[4];\r
-  //\r
-  // original message ip header of plus 64\r
-  // bits of data\r
-  //\r
-  IPV4_HEADER   IpHeader;\r
-} ICMPV4_GENERAL_MESSAGE;\r
-\r
-//\r
-// icmp req/rply message header\r
-//\r
-typedef struct {\r
-  ICMPV4_HEADER Header;\r
-  UINT16        Id;\r
-  UINT16        SequenceNumber;\r
-} ICMPV4_REQUEST_REPLY_HEADER;\r
-\r
-//\r
-// icmp echo message\r
-//\r
-typedef struct {\r
-  ICMPV4_REQUEST_REPLY_HEADER Header;\r
-  UINT8                       EchoData[1];  // variable length data to be echoed\r
-} ICMPV4_ECHO_MESSAGE;\r
-\r
-//\r
-// icmp timestamp message - times are milliseconds since midnight UT -\r
-// if non std, set high order bit\r
-//\r
-typedef struct {\r
-  ICMPV4_REQUEST_REPLY_HEADER Header;\r
-  UINT32                      OriginalTime; // originating timestamp\r
-  UINT32                      ReceiveTime;  // receiving timestamp\r
-  UINT32                      TransmitTime; // transmitting timestamp\r
-} ICMPV4_TIMESTAMP_MESSAGE;\r
-\r
-//\r
-// icmp info request structure - fill in source and dest net ip address on reply\r
-//\r
-typedef struct {\r
-  ICMPV4_REQUEST_REPLY_HEADER Header;\r
-} ICMPV4_INFO_MESSAGE;\r
-\r
-//\r
-// Definitions for internet control message protocol version 4 message structure\r
-// Router discovery\r
-// Per RFC 1256, September 1991.\r
-//\r
-//\r
-// icmp router advertisement message\r
-//\r
-typedef struct {\r
-  ICMPV4_HEADER Header;\r
-  UINT8         NumberEntries;  // number of address entries\r
-  UINT8         EntrySize;      // number of 32 bit words per address entry\r
-  UINT16        Lifetime;       // seconds to consider info valid\r
-  UINT32        RouterIp;\r
-  UINT32        Preferance;\r
-} ICMPV4_ROUTER_ADVERTISE_MESSAGE;\r
-\r
-//\r
-// icmp router solicitation message\r
-//\r
-typedef struct {\r
-  ICMPV4_HEADER Header;\r
-  UINT32        Reserved;\r
-} ICMPV4_ROUTER_SOLICIT_MESSAGE;\r
-\r
-#define MAX_SOLICITATION_DELAY      1   //  1 second\r
-#define SOLICITATION_INTERVAL       3   //  3 seconds\r
-#define MAX_SOLICITATIONS           3   //  3 transmissions\r
-#define V1ROUTER_PRESENT_TIMEOUT    400 // 400 second timeout until v2 reports can be sent\r
-#define UNSOLICITED_REPORT_INTERVAL 10  // 10 seconds between unsolicited reports\r
-#define BROADCAST_IPv4              0xffffffff\r
-\r
-//\r
-// Definitions for address resolution protocol message structure\r
-// Per RFC 826, November 1982\r
-//\r
-typedef struct {\r
-  UINT16  HwType;     // hardware type - e.g. ethernet (1)\r
-  UINT16  ProtType;   // protocol type - for ethernet, 0x800 for IP\r
-  UINT8   HwAddLen;   // byte length of a hardware address (e.g. 6 for ethernet)\r
-  UINT8   ProtAddLen; // byte length of a protocol address (e.g. 4 for ipv4)\r
-  UINT16  OpCode;\r
-  //\r
-  // source and dest hw and prot addresses follow - see example below\r
-  //\r
-} ARP_HEADER;\r
-\r
-#define ETHERNET_ADD_SPC  1\r
-\r
-#define ETHER_TYPE_IP     0x800\r
-\r
-#define ARP_REQUEST       1\r
-#define ARP_REPLY         2\r
-\r
-//\r
-// generic ARP packet\r
-//\r
-typedef struct {\r
-  ARP_HEADER      ArpHeader;\r
-  EFI_MAC_ADDRESS SrcHardwareAddr;\r
-  EFI_IP_ADDRESS  SrcProtocolAddr;\r
-  EFI_MAC_ADDRESS DestHardwareAddr;\r
-  EFI_IP_ADDRESS  DestProtocolAddr;\r
-} ARP_PACKET;\r
-\r
-#define ENET_HWADDLEN   6\r
-#define IPV4_PROTADDLEN 4\r
-\r
-//\r
-// Definitions for user datagram protocol version 4 pseudo header & header\r
-// Per RFC 768, 28 August 1980\r
-//\r
-typedef struct {\r
-  IPV4_ADDR SrcAddr;      // source ip address\r
-  IPV4_ADDR DestAddr;     // dest ip address\r
-  UINT8     Zero;         // 0\r
-  UINT8     Protocol;     // protocol\r
-  UINT16    TotalLength;  // UDP length - sizeof udpv4hdr + data length\r
-} UDPV4_PSEUDO_HEADER;\r
-\r
-typedef struct {\r
-  UINT16  SrcPort;        // source port identifier\r
-  UINT16  DestPort;       // destination port identifier\r
-  UINT16  TotalLength;    // total length header plus data\r
-  //\r
-  // ones complement of ones complement sum of 16 bit\r
-  // words of pseudo header, UDP header, and data\r
-  // zero checksum is transmitted as -0 (ones comp)\r
-  // zero transmitted means checksum not computed\r
-  // data follows\r
-  //\r
-  UINT16  Checksum;\r
-} UDPV4_HEADER;\r
-\r
-typedef struct {\r
-  UDPV4_PSEUDO_HEADER Udpv4PseudoHeader;\r
-  UDPV4_HEADER        Udpv4Header;\r
-} UDPV4_HEADERS;\r
-\r
-//\r
-// Definitions for transmission control protocol header\r
-// Per RFC 793, September, 1981\r
-//\r
-typedef struct {\r
-  IPV4_ADDR SrcAddr;      // source ip address\r
-  IPV4_ADDR DestAddr;     // dest ip address\r
-  UINT8     Zero;         // 0\r
-  UINT8     Protocol;     // protocol\r
-  UINT16    TotalLength;  // TCP length - TCP header length + data length\r
-} TCPV4_PSEUDO_HEADER;\r
-\r
-typedef struct {\r
-  UINT16  SrcPort;        // source port identifier\r
-  UINT16  DestPort;       // destination port identifier\r
-  UINT32  SeqNumber;      // Sequence number\r
-  UINT32  AckNumber;      // Acknowledgement Number\r
-  //\r
-  // Nibble of HLEN (length of header in 32-bit multiples)\r
-  // 6bits of RESERVED\r
-  // Nibble of Code Bits\r
-  //\r
-  UINT16  HlenResCode;\r
-  UINT16  Window;   // Software buffer size (sliding window size) in network-standard byte order\r
-  //\r
-  // ones complement of ones complement sum of 16 bit words of\r
-  // pseudo header, TCP header, and data\r
-  // zero checksum is transmitted as -0 (ones comp)\r
-  // zero transmitted means checksum not computed\r
-  //\r
-  UINT16  Checksum;\r
-  UINT16  UrgentPointer;                // pointer to urgent data (allows sender to specify urgent data)\r
-} TCPV4_HEADER;\r
-\r
-typedef struct {\r
-  TCPV4_PSEUDO_HEADER Tcpv4PseudoHeader;\r
-  TCPV4_HEADER        Tcpv4Header;\r
-} TCPV4_HEADERS;\r
-\r
-typedef struct {\r
-  UINT8 Kind;                           // one of the following:\r
-  UINT8 Length;                         // total option length including Kind and Lth\r
-  UINT8 Data[1];                        // length = Lth - 2\r
-} TCPV4_OPTION;\r
-\r
-#define TCP_OP_END                0     // only used to pad to end of TCP header\r
-#define TCP_NOP                   1     // optional - may be used to pad between options to get alignment\r
-#define TCP_MAX_SEG               2     // maximum receive segment size - only send at initial connection request\r
-#define MAX_MEDIA_HDR_SIZE        64\r
-#define MIN_ENET_DATA_SIZE        64\r
-#define MAX_ENET_DATA_SIZE        1500  // temp def - make a network based var\r
-#define MAX_IPV4_PKT_SIZE         65535 // maximum IP packet size\r
-#define MAX_IPV4_DATA_SIZE        (MAX_IPV4_PKT_SIZE - sizeof (IPV4_HEADER))\r
-#define MAX_IPV4_FRAME_DATA_SIZE  (MAX_FRAME_DATA_SIZE - sizeof (IPV4_HEADER))\r
-#define REAS_IPV4_PKT_SIZE        576   // minimum IP packet size all IP host can handle\r
-#define REAS_IPV4_DATA_SIZE       (REAS_IPV4_PKT_SIZE - sizeof (IPV4_HEADER))\r
-\r
-//\r
-//\r
-//\r
-typedef union {\r
-  UINT8           Data[MAX_ENET_DATA_SIZE];\r
-  ICMPV4_HEADER   IcmpHeader;\r
-  IGMPV2_MESSAGE  IgmpMessage;\r
-  struct {\r
-    UDPV4_HEADER  UdpHeader;\r
-    UINT8         Data[1];\r
-  } Udp;\r
-  struct {\r
-    TCPV4_HEADER  TcpHeader;\r
-    UINT8         Data[1];\r
-  } Tcp;\r
-} PROTOCOL_UNION;\r
-\r
-//\r
-// out buffer structure\r
-//\r
-typedef struct {\r
-  UINT8           MediaHeader[MAX_MEDIA_HDR_SIZE];\r
-  IPV4_HEADER     IpHeader;\r
-  //\r
-  // following union placement only valid if no option IP header\r
-  //\r
-  PROTOCOL_UNION  u;\r
-} IPV4_BUFFER;\r
-\r
-typedef struct {\r
-  IPV4_HEADER     IpHeader;\r
-  //\r
-  // following union placement only valid if no option IP header\r
-  //\r
-  PROTOCOL_UNION  u;\r
-} IPV4_STRUCT;\r
-\r
-#pragma pack()  // reset to default\r
-\r
-  ////////////////////////////////////////////////////////////\r
-//\r
-//  BC IP Filter Routine\r
-//\r
-EFI_STATUS\r
-IpFilter (\r
-  PXE_BASECODE_DEVICE            *Private,\r
-  IN EFI_PXE_BASE_CODE_IP_FILTER *Filter\r
-  )\r
-;\r
-\r
-//\r
-// //////////////////////////////////////////////////////////////////////\r
-//\r
-//  Udp Write Routine - called by base code - e.g. TFTP - already locked\r
-//\r
-EFI_STATUS\r
-UdpWrite (\r
-  IN PXE_BASECODE_DEVICE                      *Private,\r
-  IN UINT16                                   OpFlags,\r
-  IN EFI_IP_ADDRESS                           *DestIpPtr,\r
-  IN EFI_PXE_BASE_CODE_UDP_PORT               *DestPortptr,\r
-  IN EFI_IP_ADDRESS                           *GatewayIpPtr, OPTIONAL\r
-  IN EFI_IP_ADDRESS                           *SrcIpPtr, OPTIONAL\r
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT           *SrcPortPtr, OPTIONAL\r
-  IN UINTN                                    *HeaderSizePtr, OPTIONAL\r
-  IN VOID                                     *HeaderPtr, OPTIONAL\r
-  IN UINTN                                    *BufferSizePtr,\r
-  IN VOID                                     *BufferPtr\r
-  )\r
-;\r
-\r
-//\r
-// /////////////////////////////////////////////////////////////////////\r
-//\r
-//  Udp Read Routine - called by base code - e.g. TFTP - already locked\r
-//\r
-EFI_STATUS\r
-UdpRead (\r
-  IN PXE_BASECODE_DEVICE            *Private,\r
-  IN UINT16                         OpFlags,\r
-  IN OUT EFI_IP_ADDRESS             *DestIpPtr, OPTIONAL\r
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPorPtrt, OPTIONAL\r
-  IN OUT EFI_IP_ADDRESS             *SrcIpPtr, OPTIONAL\r
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPortPtr, OPTIONAL\r
-  IN UINTN                          *HeaderSizePtr, OPTIONAL\r
-  IN VOID                           *HeaderPtr, OPTIONAL\r
-  IN OUT UINTN                      *BufferSizePtr,\r
-  IN VOID                           *BufferPtr,\r
-  IN EFI_EVENT                      TimeoutEvent\r
-  )\r
-;\r
-\r
-VOID\r
-IgmpLeaveGroup (\r
-  PXE_BASECODE_DEVICE *Private,\r
-  EFI_IP_ADDRESS      *\r
-  )\r
-;\r
-\r
-VOID\r
-IgmpJoinGroup (\r
-  PXE_BASECODE_DEVICE *Private,\r
-  EFI_IP_ADDRESS      *\r
-  )\r
-;\r
-\r
-//\r
-// convert number to zero filled ascii value of length lth\r
-//\r
-VOID\r
-CvtNum (\r
-  UINTN Number,\r
-  UINT8 *BufferPtr,\r
-  INTN  BufferLen\r
-  )\r
-;\r
-\r
-//\r
-// convert number to ascii string at ptr\r
-//\r
-VOID\r
-UtoA10 (\r
-  UINTN Number,\r
-  UINT8 *BufferPtr\r
-  )\r
-;\r
-\r
-//\r
-// convert ascii numeric string to UINTN\r
-//\r
-UINTN\r
-AtoU (\r
-  UINT8 *BufferPtr\r
-  )\r
-;\r
-\r
-UINT64\r
-AtoU64 (\r
-  UINT8 *BufferPtr\r
-  )\r
-;\r
-\r
-//\r
-// calculate the internet checksum (RFC 1071)\r
-// return 16 bit ones complement of ones complement sum of 16 bit words\r
-//\r
-UINT16\r
-IpChecksum (\r
-  UINT16 *MessagePtr,\r
-  UINTN  ByteLength\r
-  )\r
-;\r
-\r
-//\r
-// do checksum on non contiguous header and data\r
-//\r
-UINT16\r
-IpChecksum2 (\r
-  UINT16 *Header,\r
-  UINTN  HeaderLength,\r
-  UINT16 *Message,\r
-  UINTN  MessageLength\r
-  )\r
-;\r
-\r
-//\r
-// update checksum when only a single word changes\r
-//\r
-UINT16\r
-UpdateChecksum (\r
-  UINT16 OldChecksum,\r
-  UINT16 OldWord,\r
-  UINT16 NewWord\r
-  )\r
-;\r
-\r
-VOID\r
-SeedRandom (\r
-  IN PXE_BASECODE_DEVICE  *Private,\r
-  IN UINT16               InitialSeed\r
-  )\r
-;\r
-\r
-UINT16\r
-Random (\r
-  IN PXE_BASECODE_DEVICE  *Private\r
-  )\r
-;\r
-\r
-EFI_STATUS\r
-SendPacket (\r
-  PXE_BASECODE_DEVICE           *Private,\r
-  VOID                          *HeaderPtr,\r
-  VOID                          *PacketPtr,\r
-  INTN                          PacketLength,\r
-  VOID                          *HardwareAddress,\r
-  UINT16                        MediaProtocol,\r
-  IN EFI_PXE_BASE_CODE_FUNCTION Function\r
-  )\r
-;\r
-\r
-VOID\r
-HandleArpReceive (\r
-  PXE_BASECODE_DEVICE *Private,\r
-  ARP_PACKET          *ArpPacketPtr,\r
-  VOID                *HeaderPtr\r
-  )\r
-;\r
-\r
-VOID\r
-HandleIgmp (\r
-  PXE_BASECODE_DEVICE *Private,\r
-  IGMPV2_MESSAGE      *IgmpMessageptr,\r
-  UINTN               IgmpMessageLen\r
-  )\r
-;\r
-\r
-VOID\r
-IgmpCheckTimers (\r
-  PXE_BASECODE_DEVICE *Private\r
-  )\r
-;  // poll when doing a receive\r
-// return hw add of IP and TRUE if available, otherwise FALSE\r
-//\r
-BOOLEAN\r
-GetHwAddr (\r
-  IN PXE_BASECODE_DEVICE  *Private,\r
-  EFI_IP_ADDRESS          *ProtocolAddressPtr,\r
-  EFI_MAC_ADDRESS         *HardwareAddressPtr\r
-  )\r
-;\r
-\r
-EFI_STATUS\r
-DoArp (\r
-  IN PXE_BASECODE_DEVICE  *Private,\r
-  IN EFI_IP_ADDRESS       *ProtocolAddressPtr,\r
-  OUT EFI_MAC_ADDRESS     *HardwareAddressptr\r
-  )\r
-;\r
-\r
-BOOLEAN\r
-OnSameSubnet (\r
-  UINTN           IpAddressLen,\r
-  EFI_IP_ADDRESS  *Ip1,\r
-  EFI_IP_ADDRESS  *Ip2,\r
-  EFI_IP_ADDRESS  *SubnetMask\r
-  )\r
-;\r
-\r
-VOID\r
-IpAddRouter (\r
-  PXE_BASECODE_DEVICE *Private,\r
-  EFI_IP_ADDRESS      *RouterIp\r
-  )\r
-;\r
-\r
-#define Ip4AddRouter(Private, Ipv4Ptr)  IpAddRouter (Private, (EFI_IP_ADDRESS *) Ipv4Ptr)\r
-\r
-//\r
-// routine to send ipv4 packet\r
-// ipv4 + upper protocol header for length TotHdrLth in xmtbuf, ipv4 header length IpHdrLth\r
-// routine fills in ipv4hdr Ver_Hdl, TotLth, and Checksum, moves in Data, and gets dest MAC address\r
-//\r
-EFI_STATUS\r
-Ipv4Xmt (\r
-  PXE_BASECODE_DEVICE         *Private,\r
-  UINT32                      GatewayIP,\r
-  UINTN                       IpHeaderLen,\r
-  UINTN                       TotalHeaderLen,\r
-  VOID                        *Data,\r
-  UINTN                       DataLen,\r
-  EFI_PXE_BASE_CODE_FUNCTION  Function\r
-  )\r
-;\r
-\r
-//\r
-// send ipv4 packet with ipv4 option\r
-//\r
-EFI_STATUS\r
-Ipv4SendWOp (\r
-  PXE_BASECODE_DEVICE         *Private,\r
-  UINT32                      GatewayIP,\r
-  UINT8                       *MessagePtr,\r
-  UINTN                       MessageLth,\r
-  UINT8                       Protocol,\r
-  UINT8                       *Option,\r
-  UINTN                       OptionLen,\r
-  UINT32                      DestIp,\r
-  EFI_PXE_BASE_CODE_FUNCTION  Function\r
-  )\r
-;\r
-\r
-//\r
-// send MsgLth message at MsgPtr - higher level protocol header already in xmtbuf, length HdrSize\r
-//\r
-EFI_STATUS\r
-Ip4Send (\r
-  IN PXE_BASECODE_DEVICE  *Private,     // pointer to instance data\r
-  IN UINTN                MayFragment,  //\r
-  IN UINT8                Protocol,     // protocol\r
-  IN UINT32               SrcIp,        // Source IP address\r
-  IN UINT32               DestIp,       // Destination IP address\r
-  IN UINT32               GatewayIp,    // used if not NULL and needed\r
-  IN UINTN                HeaderSize,   // protocol header byte length\r
-  IN UINT8                *MsgPtr,      // pointer to data\r
-  IN UINTN                MsgLength\r
-  )\r
-;                                    // data byte length\r
-// receive up to MsgLth message into MsgPtr for protocol Prot\r
-// return message length, src/dest ips if select any, and pointer to protocol header\r
-//\r
-EFI_STATUS\r
-IpReceive (\r
-  IN PXE_BASECODE_DEVICE    *Private,   // pointer to instance data\r
-  UINT16                    OpFlags,    // Flags to determine if filtering on IP addresses\r
-  EFI_IP_ADDRESS            *SrcIpPtr,  // if filtering, O if accept any\r
-  EFI_IP_ADDRESS            *DstIpPtr,  // if filtering, O if accept any\r
-  UINT8                     Protocol,   // protocol\r
-  VOID                      *HeaderPtr, // address of where to put protocol header\r
-  UINTN                     HeaderSize, // protocol header byte length\r
-  UINT8                     *MsgPtr,    // pointer to data buffer\r
-  UINTN                     *MsgLenPtr, // pointer to data buffer length/ O - returned data length\r
-  IN EFI_EVENT              TimeoutEvent\r
-  )\r
-;\r
-\r
-//\r
-// routine to cycle waiting for a receive or timeout\r
-//\r
-EFI_STATUS\r
-WaitForReceive (\r
-  IN PXE_BASECODE_DEVICE        *Private,\r
-  IN EFI_PXE_BASE_CODE_FUNCTION Function,\r
-  IN EFI_EVENT                  TimeoutEvent,\r
-  IN OUT UINTN                  *HeaderSizePtr,\r
-  IN OUT UINTN                  *BufferSizePtr,\r
-  IN OUT UINT16                 *ProtocolPtr\r
-  )\r
-;\r
-\r
-#endif /* _IP_H_ */\r
-\r
-/* EOF - ip.h */\r