/** @file | |
Copyright (c) 2005 - 2006, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef __EFI_IP4_OUTPUT_H__ | |
#define __EFI_IP4_OUTPUT_H__ | |
/** | |
The default callback function for system generated packet. | |
It will free the packet. | |
@param Ip4Instance The IP4 child that issued the transmission. It most | |
like is NULL. | |
@param Packet The packet that transmitted. | |
@param IoStatus The result of the transmission, succeeded or failed. | |
@param LinkFlag Not used when transmission. check IP4_FRAME_CALLBACK | |
for reference. | |
@param Context The context provided by us | |
**/ | |
VOID | |
Ip4SysPacketSent ( | |
IP4_PROTOCOL *Ip4Instance, | |
NET_BUF *Packet, | |
EFI_STATUS IoStatus, | |
UINT32 LinkFlag, | |
VOID *Context | |
); | |
/** | |
Transmit an IP4 packet. The packet comes either from the IP4 | |
child's consumer (IpInstance != NULL) or the IP4 driver itself | |
(IpInstance == NULL). It will route the packet, fragment it, | |
then transmit all the fragments through some interface. | |
@param[in] IpSb The IP4 service instance to transmit the packet | |
@param[in] IpInstance The IP4 child that issues the transmission. It is | |
NULL if the packet is from the system. | |
@param[in] Packet The user data to send, excluding the IP header. | |
@param[in] Head The caller supplied header. The caller should set | |
the following header fields: Tos, TotalLen, Id, tl, | |
Fragment, Protocol, Src and Dst. All the fields are | |
in host byte order. This function will fill in the | |
Ver, HeadLen, Fragment, and checksum. The Fragment | |
only need to include the DF flag. Ip4Output will | |
compute the MF and offset for you. | |
@param[in] Option The original option to append to the IP headers | |
@param[in] OptLen The length of the option | |
@param[in] GateWay The next hop address to transmit packet to. | |
255.255.255.255 means broadcast. | |
@param[in] Callback The callback function to issue when transmission | |
completed. | |
@param[in] Context The opaque context for the callback | |
@retval EFI_NO_MAPPING There is no interface to the destination. | |
@retval EFI_NOT_FOUND There is no route to the destination | |
@retval EFI_SUCCESS The packet is successfully transmitted. | |
@retval Others Failed to transmit the packet. | |
**/ | |
EFI_STATUS | |
Ip4Output ( | |
IN IP4_SERVICE *IpSb, | |
IN IP4_PROTOCOL *IpInstance OPTIONAL, | |
IN NET_BUF *Packet, | |
IN IP4_HEAD *Head, | |
IN UINT8 *Option, | |
IN UINT32 OptLen, | |
IN IP4_ADDR GateWay, | |
IN IP4_FRAME_CALLBACK Callback, | |
IN VOID *Context | |
); | |
/** | |
Cancel the Packet and all its fragments. | |
@param IpIf The interface from which the Packet is sent | |
@param Packet The Packet to cancel | |
@param IoStatus The status returns to the sender. | |
**/ | |
VOID | |
Ip4CancelPacket ( | |
IN IP4_INTERFACE *IpIf, | |
IN NET_BUF *Packet, | |
IN EFI_STATUS IoStatus | |
); | |
/** | |
Prepend an IP4 head to the Packet. It will copy the options and | |
build the IP4 header fields. Used for IP4 fragmentation. | |
@param Packet The packet to prepend IP4 header to | |
@param Head The caller supplied header. The caller should set | |
the following header fields: Tos, TotalLen, Id, | |
Fragment, Ttl, Protocol, Src and Dst. All the fields | |
are in host byte order. This function will fill in | |
the Ver, HeadLen, and checksum. | |
@param Option The original IP4 option to copy from | |
@param OptLen The length of the IP4 option | |
@retval EFI_BAD_BUFFER_SIZE There is no enough room in the head space of | |
Packet. | |
@retval EFI_SUCCESS The IP4 header is successfully added to the packet. | |
**/ | |
EFI_STATUS | |
Ip4PrependHead ( | |
IN OUT NET_BUF *Packet, | |
IN IP4_HEAD *Head, | |
IN UINT8 *Option, | |
IN UINT32 OptLen | |
); | |
extern UINT16 mIp4Id; | |
#endif |