|
|
@ -210,6 +210,7 @@ static size_t prvSingleStepTCPHeaderOptions( const uint8_t * const pucPtr,
|
|
|
|
FreeRTOS_Socket_t * const pxSocket,
|
|
|
|
FreeRTOS_Socket_t * const pxSocket,
|
|
|
|
BaseType_t xHasSYNFlag );
|
|
|
|
BaseType_t xHasSYNFlag );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if( ipconfigUSE_TCP_WIN == 1 )
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* Skip past TCP header options when doing Selective ACK, until there are no
|
|
|
|
* Skip past TCP header options when doing Selective ACK, until there are no
|
|
|
|
* more options left.
|
|
|
|
* more options left.
|
|
|
@ -217,6 +218,8 @@ static size_t prvSingleStepTCPHeaderOptions( const uint8_t * const pucPtr,
|
|
|
|
static void prvReadSackOption( const uint8_t * const pucPtr,
|
|
|
|
static void prvReadSackOption( const uint8_t * const pucPtr,
|
|
|
|
size_t uxIndex,
|
|
|
|
size_t uxIndex,
|
|
|
|
FreeRTOS_Socket_t * const pxSocket );
|
|
|
|
FreeRTOS_Socket_t * const pxSocket );
|
|
|
|
|
|
|
|
#endif/* ( ipconfigUSE_TCP_WIN == 1 ) */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* Set the initial properties in the options fields, like the preferred
|
|
|
|
* Set the initial properties in the options fields, like the preferred
|
|
|
@ -1327,6 +1330,7 @@ TCPWindow_t *pxTCPWindow = &( pxSocket->u.xTCP.xTCPWindow );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if( ipconfigUSE_TCP_WIN == 1 )
|
|
|
|
static void prvReadSackOption( const uint8_t * const pucPtr,
|
|
|
|
static void prvReadSackOption( const uint8_t * const pucPtr,
|
|
|
|
size_t uxIndex,
|
|
|
|
size_t uxIndex,
|
|
|
|
FreeRTOS_Socket_t * const pxSocket )
|
|
|
|
FreeRTOS_Socket_t * const pxSocket )
|
|
|
@ -1368,6 +1372,8 @@ uint32_t ulCount = ulTCPWindowTxSack( &( pxSocket->u.xTCP.xTCPWindow ), ulFirst,
|
|
|
|
#endif /* ipconfigUSE_CALLBACKS == 1 */
|
|
|
|
#endif /* ipconfigUSE_CALLBACKS == 1 */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* ( ipconfigUSE_TCP_WIN != 0 ) */
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
#if( ipconfigUSE_TCP_WIN != 0 )
|
|
|
|
#if( ipconfigUSE_TCP_WIN != 0 )
|
|
|
@ -1994,7 +2000,6 @@ int32_t lCount, lLength;
|
|
|
|
|
|
|
|
|
|
|
|
/* A txStream has been created already, see if the socket has new data for
|
|
|
|
/* A txStream has been created already, see if the socket has new data for
|
|
|
|
the sliding window.
|
|
|
|
the sliding window.
|
|
|
|
|
|
|
|
|
|
|
|
uxStreamBufferMidSpace() returns the distance between rxHead and rxMid. It
|
|
|
|
uxStreamBufferMidSpace() returns the distance between rxHead and rxMid. It
|
|
|
|
contains new Tx data which has not been passed to the sliding window yet.
|
|
|
|
contains new Tx data which has not been passed to the sliding window yet.
|
|
|
|
The oldest data not-yet-confirmed can be found at rxTail. */
|
|
|
|
The oldest data not-yet-confirmed can be found at rxTail. */
|
|
|
@ -2004,7 +2009,6 @@ int32_t lCount, lLength;
|
|
|
|
{
|
|
|
|
{
|
|
|
|
/* All data between txMid and rxHead will now be passed to the sliding
|
|
|
|
/* All data between txMid and rxHead will now be passed to the sliding
|
|
|
|
window manager, so it can start transmitting them.
|
|
|
|
window manager, so it can start transmitting them.
|
|
|
|
|
|
|
|
|
|
|
|
Hand over the new data to the sliding window handler. It will be
|
|
|
|
Hand over the new data to the sliding window handler. It will be
|
|
|
|
split-up in chunks of 1460 bytes each (or less, depending on
|
|
|
|
split-up in chunks of 1460 bytes each (or less, depending on
|
|
|
|
ipconfigTCP_MSS). */
|
|
|
|
ipconfigTCP_MSS). */
|
|
|
@ -2137,7 +2141,6 @@ uint16_t usLength;
|
|
|
|
|
|
|
|
|
|
|
|
/* Determine the length and the offset of the user-data sent to this
|
|
|
|
/* Determine the length and the offset of the user-data sent to this
|
|
|
|
node.
|
|
|
|
node.
|
|
|
|
|
|
|
|
|
|
|
|
The size of the TCP header is given in a multiple of 4-byte words (single
|
|
|
|
The size of the TCP header is given in a multiple of 4-byte words (single
|
|
|
|
byte, needs no ntoh() translation). A shift-right 2: is the same as
|
|
|
|
byte, needs no ntoh() translation). A shift-right 2: is the same as
|
|
|
|
(offset >> 4) * 4. */
|
|
|
|
(offset >> 4) * 4. */
|
|
|
@ -2213,7 +2216,6 @@ BaseType_t xResult = 0;
|
|
|
|
{
|
|
|
|
{
|
|
|
|
/* See if way may accept the data contents and forward it to the socket
|
|
|
|
/* See if way may accept the data contents and forward it to the socket
|
|
|
|
owner.
|
|
|
|
owner.
|
|
|
|
|
|
|
|
|
|
|
|
If it can't be "accept"ed it may have to be stored and send a selective
|
|
|
|
If it can't be "accept"ed it may have to be stored and send a selective
|
|
|
|
ack (SACK) option to confirm it. In that case, lTCPAddRxdata() will be
|
|
|
|
ack (SACK) option to confirm it. In that case, lTCPAddRxdata() will be
|
|
|
|
called later to store an out-of-order packet (in case lOffset is
|
|
|
|
called later to store an out-of-order packet (in case lOffset is
|
|
|
@ -3502,4 +3504,3 @@ const ListItem_t *pxEndTCP = ipPOINTER_CAST( const ListItem_t *, listGET_END_MAR
|
|
|
|
#ifdef FREERTOS_TCP_ENABLE_VERIFICATION
|
|
|
|
#ifdef FREERTOS_TCP_ENABLE_VERIFICATION
|
|
|
|
#include "aws_freertos_tcp_verification_access_tcp_define.h"
|
|
|
|
#include "aws_freertos_tcp_verification_access_tcp_define.h"
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|