Jump to main content

##

# TCPIP_IPV4_MacPacketTransmit Function

## C

    bool TCPIP_IPV4_MacPacketTransmit(
        TCPIP_MAC_PACKET* pPkt,
        TCPIP_NET_HANDLE hNet,
        IPV4_ADDR* pDestAddress
    );

## Description

The function is a helper to transmit a fully constructed MAC packet over an interface. The MAC packet is supposed to have all the fields properly constructed (including the TCPIP_MAC_ETHERNET_HEADER fields). The MAC packet does not need ARP resolution since the DestMACAddr is already known. The packet acknowledge function should be properly set (it will be called by the MAC driver once the packet is transmitted).

## Preconditions

pPkt should have been properly formatted and constructed into a valid MAC packet that can go out over an interface pDestAddress - valid pointer

## Parameters

Parameters | Description
--- | ---
pPkt | The packet to be transmitted.
hNet | Interface over which the packet is to be transmitted.
pDestAddress | The IPv4 packet destination address. It is used only for routing purposes, to decide if the packet is routed internally or sent to the network interface

## Returns

- True - Iif the packet was handed to the MAC or queued internally.
- False - The packet cannot be transmitted (wrong interface, etc.).

## Remarks

Only single packets can be transmitted. Chained packets are not supported for now.

The packet could be composed of multiple fragments. If the transmission fails, some fragments could have been transmitted while others failed. The flag TCPIP_MAC_PKT_FLAG_QUEUED could be used to determine which fragments didn't make it through.