/*
 * COPYRIGHT:   See COPYING in the top level directory
 * PROJECT:     ReactOS TCP/IP protocol driver
 * FILE:        include/transmit.h
 * PURPOSE:     Internet Protocol transmit prototypes
 */

#pragma once

typedef VOID (*PIP_TRANSMIT_COMPLETE)( PVOID Context,
				       PNDIS_PACKET Packet,
				       NDIS_STATUS Status );

/* IP fragment context information */
typedef struct IPFRAGMENT_CONTEXT {
    struct IPFRAGMENT_CONTEXT *Next;    /* Pointer to next in list */
    PNDIS_PACKET Datagram;              /* Pointer to original NDIS packet */
    PVOID DatagramData;                 /* Pointer to datagram data */
    UINT HeaderSize;                    /* IP datagram header size */
    PNDIS_PACKET NdisPacket;            /* Pointer to NDIS packet */
    PNDIS_BUFFER NdisBuffer;            /* Pointer to NDIS buffer */
    PVOID Header;                       /* Pointer to IP header in fragment buffer */
    PVOID Data;                         /* Pointer to fragment data */
    UINT Position;                      /* Current fragment offset */
    UINT BytesLeft;                     /* Number of bytes left to send */
    UINT PathMTU;                       /* Path Maximum Transmission Unit */
    PNEIGHBOR_CACHE_ENTRY NCE;          /* Pointer to NCE to use */
    KEVENT Event;                       /* Signalled when the transmission is complete */
    NDIS_STATUS Status;                 /* Status of the transmission */
} IPFRAGMENT_CONTEXT, *PIPFRAGMENT_CONTEXT;


NTSTATUS IPSendDatagram(PIP_PACKET IPPacket, PNEIGHBOR_CACHE_ENTRY NCE);

/* EOF */