123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492 |
- /** @file
- Support functions declaration for UefiPxeBc Driver.
- Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef __EFI_PXEBC_SUPPORT_H__
- #define __EFI_PXEBC_SUPPORT_H__
- #define ICMP_DEST_UNREACHABLE 3
- #define ICMP_SOURCE_QUENCH 4
- #define ICMP_REDIRECT 5
- #define ICMP_ECHO_REQUEST 8
- #define ICMP_TIME_EXCEEDED 11
- #define ICMP_PARAMETER_PROBLEM 12
- /**
- Flush the previous configuration using the new station Ip address.
- @param[in] Private Pointer to PxeBc private data.
- @param[in] StationIp Pointer to the station Ip address.
- @param[in] SubnetMask Pointer to the subnet mask address for v4.
- @retval EFI_SUCCESS Successfully flushed the previous config.
- @retval Others Failed to flush using the new station Ip.
- **/
- EFI_STATUS
- PxeBcFlushStationIp (
- PXEBC_PRIVATE_DATA *Private,
- EFI_IP_ADDRESS *StationIp OPTIONAL,
- EFI_IP_ADDRESS *SubnetMask OPTIONAL
- );
- /**
- Notify callback function when an event is triggered.
- @param[in] Event The triggered event.
- @param[in] Context The opaque parameter to the function.
- **/
- VOID
- EFIAPI
- PxeBcCommonNotify (
- IN EFI_EVENT Event,
- IN VOID *Context
- );
- /**
- Perform arp resolution from the arp cache in PxeBcMode.
- @param Mode Pointer to EFI_PXE_BASE_CODE_MODE.
- @param Ip4Addr The Ip4 address for resolution.
- @param MacAddress The resolved MAC address if the resolution is successful.
- The value is undefined if resolution fails.
- @retval TRUE Found a matched entry.
- @retval FALSE Did not find a matched entry.
- **/
- BOOLEAN
- PxeBcCheckArpCache (
- IN EFI_PXE_BASE_CODE_MODE *Mode,
- IN EFI_IPv4_ADDRESS *Ip4Addr,
- OUT EFI_MAC_ADDRESS *MacAddress
- );
- /**
- Update arp cache periodically.
- @param Event Pointer to EFI_PXE_BC_PROTOCOL.
- @param Context Context of the timer event.
- **/
- VOID
- EFIAPI
- PxeBcArpCacheUpdate (
- IN EFI_EVENT Event,
- IN VOID *Context
- );
- /**
- xxx
- @param Event The event signaled.
- @param Context The context passed in by the event notifier.
- **/
- VOID
- EFIAPI
- PxeBcIcmpErrorUpdate (
- IN EFI_EVENT Event,
- IN VOID *Context
- );
- /**
- xxx
- @param Event The event signaled.
- @param Context The context passed in by the event notifier.
- **/
- VOID
- EFIAPI
- PxeBcIcmp6ErrorUpdate (
- IN EFI_EVENT Event,
- IN VOID *Context
- );
- /**
- This function is to configure a UDPv4 instance for UdpWrite.
- @param[in] Udp4 The pointer to EFI_UDP4_PROTOCOL.
- @param[in] StationIp The pointer to the station address.
- @param[in] SubnetMask The pointer to the subnet mask.
- @param[in] Gateway The pointer to the gateway address.
- @param[in, out] SrcPort The pointer to the source port.
- @param[in] DoNotFragment If TRUE, fragment is not enabled.
- Otherwise, fragment is enabled.
- @param[in] Ttl The time to live field of the IP header.
- @param[in] ToS The type of service field of the IP header.
- @retval EFI_SUCCESS Successfully configured this instance.
- @retval Others Failed to configure this instance.
- **/
- EFI_STATUS
- PxeBcConfigUdp4Write (
- IN EFI_UDP4_PROTOCOL *Udp4,
- IN EFI_IPv4_ADDRESS *StationIp,
- IN EFI_IPv4_ADDRESS *SubnetMask,
- IN EFI_IPv4_ADDRESS *Gateway,
- IN OUT UINT16 *SrcPort,
- IN BOOLEAN DoNotFragment,
- IN UINT8 Ttl,
- IN UINT8 ToS
- );
- /**
- This function is to configure a UDPv6 instance for UdpWrite.
- @param[in] Udp6 Pointer to EFI_UDP6_PROTOCOL.
- @param[in] StationIp Pointer to the station address.
- @param[in, out] SrcPort Pointer to the source port.
- @retval EFI_SUCCESS Successfully configured this instance.
- @retval Others Failed to configure this instance.
- **/
- EFI_STATUS
- PxeBcConfigUdp6Write (
- IN EFI_UDP6_PROTOCOL *Udp6,
- IN EFI_IPv6_ADDRESS *StationIp,
- IN OUT UINT16 *SrcPort
- );
- /**
- This function is to configure a UDPv4 instance for UdpWrite.
- @param[in] Udp4 Pointer to EFI_UDP4_PROTOCOL.
- @param[in] Session Pointer to the UDP4 session data.
- @param[in] TimeoutEvent The event for timeout.
- @param[in] Gateway Pointer to the gateway address.
- @param[in] HeaderSize An optional field which may be set to the length of a header
- at HeaderPtr to be prefixed to the data at BufferPtr.
- @param[in] HeaderPtr If HeaderSize is not NULL, a pointer to a header to be
- prefixed to the data at BufferPtr.
- @param[in] BufferSize A pointer to the size of the data at BufferPtr.
- @param[in] BufferPtr A pointer to the data to be written.
- @retval EFI_SUCCESS Successfully sent out data with Udp4Write.
- @retval Others Failed to send out data.
- **/
- EFI_STATUS
- PxeBcUdp4Write (
- IN EFI_UDP4_PROTOCOL *Udp4,
- IN EFI_UDP4_SESSION_DATA *Session,
- IN EFI_EVENT TimeoutEvent,
- IN EFI_IPv4_ADDRESS *Gateway OPTIONAL,
- IN UINTN *HeaderSize OPTIONAL,
- IN VOID *HeaderPtr OPTIONAL,
- IN UINTN *BufferSize,
- IN VOID *BufferPtr
- );
- /**
- This function is to configure a UDPv6 instance for UdpWrite.
- @param[in] Udp6 Pointer to EFI_UDP6_PROTOCOL.
- @param[in] Session Pointer to the UDP6 session data.
- @param[in] TimeoutEvent The event for timeout.
- @param[in] HeaderSize An optional field which may be set to the length of a header
- at HeaderPtr to be prefixed to the data at BufferPtr.
- @param[in] HeaderPtr If HeaderSize is not NULL, a pointer to a header to be
- prefixed to the data at BufferPtr.
- @param[in] BufferSize A pointer to the size of the data at BufferPtr.
- @param[in] BufferPtr A pointer to the data to be written.
- @retval EFI_SUCCESS Successfully to send out data with Udp6Write.
- @retval Others Failed to send out data.
- **/
- EFI_STATUS
- PxeBcUdp6Write (
- IN EFI_UDP6_PROTOCOL *Udp6,
- IN EFI_UDP6_SESSION_DATA *Session,
- IN EFI_EVENT TimeoutEvent,
- IN UINTN *HeaderSize OPTIONAL,
- IN VOID *HeaderPtr OPTIONAL,
- IN UINTN *BufferSize,
- IN VOID *BufferPtr
- );
- /**
- Check the received packet with the Ip filter.
- @param[in] Mode Pointer to mode data of PxeBc.
- @param[in] Session Pointer to the current UDPv4 session.
- @param[in] OpFlags Operation flag for UdpRead/UdpWrite.
- @retval TRUE Successfully passed the Ip filter.
- @retval FALSE Failed to pass the Ip filter.
- **/
- BOOLEAN
- PxeBcCheckByIpFilter (
- IN EFI_PXE_BASE_CODE_MODE *Mode,
- IN VOID *Session,
- IN UINT16 OpFlags
- );
- /**
- Filter the received packet with the destination Ip.
- @param[in] Mode Pointer to mode data of PxeBc.
- @param[in] Session Pointer to the current UDPv4 session.
- @param[in, out] DestIp Pointer to the dest Ip address.
- @param[in] OpFlags Operation flag for UdpRead/UdpWrite.
- @retval TRUE Successfully passed the IPv4 filter.
- @retval FALSE Failed to pass the IPv4 filter.
- **/
- BOOLEAN
- PxeBcCheckByDestIp (
- IN EFI_PXE_BASE_CODE_MODE *Mode,
- IN VOID *Session,
- IN OUT EFI_IP_ADDRESS *DestIp,
- IN UINT16 OpFlags
- );
- /**
- Check the received packet with the destination port.
- @param[in] Mode Pointer to mode data of PxeBc.
- @param[in] Session Pointer to the current UDPv4 session.
- @param[in, out] DestPort Pointer to the destination port.
- @param[in] OpFlags Operation flag for UdpRead/UdpWrite.
- @retval TRUE Successfully passed the IPv4 filter.
- @retval FALSE Failed to pass the IPv4 filter.
- **/
- BOOLEAN
- PxeBcCheckByDestPort (
- IN EFI_PXE_BASE_CODE_MODE *Mode,
- IN VOID *Session,
- IN OUT UINT16 *DestPort,
- IN UINT16 OpFlags
- );
- /**
- Filter the received packet with the source Ip.
- @param[in] Mode Pointer to mode data of PxeBc.
- @param[in] Session Pointer to the current UDPv4 session.
- @param[in, out] SrcIp Pointer to the source Ip address.
- @param[in] OpFlags Operation flag for UdpRead/UdpWrite.
- @retval TRUE Successfully passed the IPv4 filter.
- @retval FALSE Failed to pass the IPv4 filter.
- **/
- BOOLEAN
- PxeBcFilterBySrcIp (
- IN EFI_PXE_BASE_CODE_MODE *Mode,
- IN VOID *Session,
- IN OUT EFI_IP_ADDRESS *SrcIp,
- IN UINT16 OpFlags
- );
- /**
- Filter the received packet with the source port.
- @param[in] Mode Pointer to mode data of PxeBc.
- @param[in] Session Pointer to the current UDPv4 session.
- @param[in, out] SrcPort Pointer to the source port.
- @param[in] OpFlags Operation flag for UdpRead/UdpWrite.
- @retval TRUE Successfully passed the IPv4 filter.
- @retval FALSE Failed to pass the IPv4 filter.
- **/
- BOOLEAN
- PxeBcFilterBySrcPort (
- IN EFI_PXE_BASE_CODE_MODE *Mode,
- IN VOID *Session,
- IN OUT UINT16 *SrcPort,
- IN UINT16 OpFlags
- );
- /**
- This function is to receive packet with Udp4Read.
- @param[in] Udp4 Pointer to EFI_UDP4_PROTOCOL.
- @param[in] Token Pointer to EFI_UDP4_COMPLETION_TOKEN.
- @param[in] Mode Pointer to EFI_PXE_BASE_CODE_MODE.
- @param[in] TimeoutEvent The event for timeout.
- @param[in] OpFlags The UDP operation flags.
- @param[in] IsDone Pointer to IsDone flag.
- @param[out] IsMatched Pointer to IsMatched flag.
- @param[in, out] DestIp Pointer to destination address.
- @param[in, out] DestPort Pointer to destination port.
- @param[in, out] SrcIp Pointer to source address.
- @param[in, out] SrcPort Pointer to source port.
- @retval EFI_SUCCESS Successfully read data with Udp4.
- @retval Others Failed to send out data.
- **/
- EFI_STATUS
- PxeBcUdp4Read (
- IN EFI_UDP4_PROTOCOL *Udp4,
- IN EFI_UDP4_COMPLETION_TOKEN *Token,
- IN EFI_PXE_BASE_CODE_MODE *Mode,
- IN EFI_EVENT TimeoutEvent,
- IN UINT16 OpFlags,
- IN BOOLEAN *IsDone,
- OUT BOOLEAN *IsMatched,
- IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL,
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL,
- IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL,
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL
- );
- /**
- This function is to receive packet with Udp6Read.
- @param[in] Udp6 Pointer to EFI_UDP6_PROTOCOL.
- @param[in] Token Pointer to EFI_UDP6_COMPLETION_TOKEN.
- @param[in] Mode Pointer to EFI_PXE_BASE_CODE_MODE.
- @param[in] TimeoutEvent The event for timeout.
- @param[in] OpFlags The UDP operation flags.
- @param[in] IsDone Pointer to IsDone flag.
- @param[out] IsMatched Pointer to IsMatched flag.
- @param[in, out] DestIp Pointer to destination address.
- @param[in, out] DestPort Pointer to destination port.
- @param[in, out] SrcIp Pointer to source address.
- @param[in, out] SrcPort Pointer to source port.
- @retval EFI_SUCCESS Successfully read data with Udp6.
- @retval Others Failed to send out data.
- **/
- EFI_STATUS
- PxeBcUdp6Read (
- IN EFI_UDP6_PROTOCOL *Udp6,
- IN EFI_UDP6_COMPLETION_TOKEN *Token,
- IN EFI_PXE_BASE_CODE_MODE *Mode,
- IN EFI_EVENT TimeoutEvent,
- IN UINT16 OpFlags,
- IN BOOLEAN *IsDone,
- OUT BOOLEAN *IsMatched,
- IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL,
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL,
- IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL,
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL
- );
- /**
- This function is to display the IPv4 address.
- @param[in] Ip Pointer to the IPv4 address.
- **/
- VOID
- PxeBcShowIp4Addr (
- IN EFI_IPv4_ADDRESS *Ip
- );
- /**
- This function is to display the IPv6 address.
- @param[in] Ip Pointer to the IPv6 address.
- **/
- VOID
- PxeBcShowIp6Addr (
- IN EFI_IPv6_ADDRESS *Ip
- );
- /**
- This function is to convert UINTN to ASCII string with required format.
- @param[in] Number Numeric value to be converted.
- @param[in] Buffer Pointer to the buffer for ASCII string.
- @param[in] Length Length of the required format.
- **/
- VOID
- PxeBcUintnToAscDecWithFormat (
- IN UINTN Number,
- IN UINT8 *Buffer,
- IN INTN Length
- );
- /**
- This function is to convert a UINTN to a ASCII string, and return the
- actual length of the buffer.
- @param[in] Number Numeric value to be converted.
- @param[in] Buffer Pointer to the buffer for ASCII string.
- @param[in] BufferSize The maxsize of the buffer.
- @return Length The actual length of the ASCII string.
- **/
- UINTN
- PxeBcUintnToAscDec (
- IN UINTN Number,
- IN UINT8 *Buffer,
- IN UINTN BufferSize
- );
- /**
- This function is to convert unicode hex number to a UINT8.
- @param[out] Digit The converted UINT8 for output.
- @param[in] Char The unicode hex number to be converted.
- @retval EFI_SUCCESS Successfully converted the unicode hex.
- @retval EFI_INVALID_PARAMETER Failed to convert the unicode hex.
- **/
- EFI_STATUS
- PxeBcUniHexToUint8 (
- OUT UINT8 *Digit,
- IN CHAR16 Char
- );
- /**
- Calculate the elapsed time.
- @param[in] Private The pointer to PXE private data
- **/
- VOID
- CalcElapsedTime (
- IN PXEBC_PRIVATE_DATA *Private
- );
- /**
- Get the Nic handle using any child handle in the IPv4 stack.
- @param[in] ControllerHandle Pointer to child handle over IPv4.
- @return NicHandle The pointer to the Nic handle.
- **/
- EFI_HANDLE
- PxeBcGetNicByIp4Children (
- IN EFI_HANDLE ControllerHandle
- );
- /**
- Get the Nic handle using any child handle in the IPv6 stack.
- @param[in] ControllerHandle Pointer to child handle over IPv6.
- @return NicHandle The pointer to the Nic handle.
- **/
- EFI_HANDLE
- PxeBcGetNicByIp6Children (
- IN EFI_HANDLE ControllerHandle
- );
- #endif
|