1 /* 2 * FreeRTOS+TCP <DEVELOPMENT BRANCH> 3 * Copyright (C) 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. 4 * 5 * SPDX-License-Identifier: MIT 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy of 8 * this software and associated documentation files (the "Software"), to deal in 9 * the Software without restriction, including without limitation the rights to 10 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 11 * the Software, and to permit persons to whom the Software is furnished to do so, 12 * subject to the following conditions: 13 * 14 * The above copyright notice and this permission notice shall be included in all 15 * copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 19 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 20 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 21 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 * 24 * http://aws.amazon.com/freertos 25 * http://www.FreeRTOS.org 26 */ 27 28 #ifndef LIST_MACRO_H 29 #define LIST_MACRO_H 30 31 #include <FreeRTOS.h> 32 #include <portmacro.h> 33 #include <list.h> 34 35 #include "FreeRTOS_IPv6_Private.h" 36 37 extern NetworkInterface_t xInterfaces[ 1 ]; 38 39 #undef listSET_LIST_ITEM_OWNER 40 void listSET_LIST_ITEM_OWNER( ListItem_t * pxListItem, 41 void * owner ); 42 43 #undef listGET_END_MARKER 44 ListItem_t * listGET_END_MARKER( List_t * pxList ); 45 46 #undef listGET_NEXT 47 ListItem_t * listGET_NEXT( const ListItem_t * pxListItem ); 48 49 #undef listLIST_IS_EMPTY 50 BaseType_t listLIST_IS_EMPTY( const List_t * pxList ); 51 52 #undef listGET_OWNER_OF_HEAD_ENTRY 53 void * listGET_OWNER_OF_HEAD_ENTRY( const List_t * pxList ); 54 55 #undef listIS_CONTAINED_WITHIN 56 BaseType_t listIS_CONTAINED_WITHIN( List_t * list, 57 const ListItem_t * listItem ); 58 59 #undef listGET_LIST_ITEM_VALUE 60 TickType_t listGET_LIST_ITEM_VALUE( const ListItem_t * listItem ); 61 62 #undef listSET_LIST_ITEM_VALUE 63 void listSET_LIST_ITEM_VALUE( ListItem_t * listItem, 64 TickType_t itemValue ); 65 66 67 #undef listLIST_ITEM_CONTAINER 68 List_t * listLIST_ITEM_CONTAINER( const ListItem_t * listItem ); 69 70 #undef listCURRENT_LIST_LENGTH 71 UBaseType_t listCURRENT_LIST_LENGTH( List_t * list ); 72 73 #undef listGET_ITEM_VALUE_OF_HEAD_ENTRY 74 TickType_t listGET_ITEM_VALUE_OF_HEAD_ENTRY( List_t * list ); 75 76 #undef listGET_LIST_ITEM_OWNER 77 void * listGET_LIST_ITEM_OWNER( const ListItem_t * listItem ); 78 79 /** 80 * >>>>>>> afcedead21c747cef64f07c7fedd50df75bcbd10 81 * @brief Work on the RA/SLAAC processing. 82 * @param[in] xDoReset: WHen true, the state-machine will be reset and initialised. 83 * @param[in] pxEndPoint: The end-point for which the RA/SLAAC process should be done.. 84 */ 85 void vRAProcess( BaseType_t xDoReset, 86 NetworkEndPoint_t * pxEndPoint ); 87 88 /* This function shall be defined by the application. */ 89 void vApplicationIPNetworkEventHook( eIPCallbackEvent_t eNetworkEvent ); 90 91 92 /* Do not call the following function directly. It is there for downward compatibility. 93 * The function FreeRTOS_IPInit() will call it to initialise the interface and end-point 94 * objects. See the description in FreeRTOS_Routing.h. */ 95 struct xNetworkInterface * pxFillInterfaceDescriptor( BaseType_t xEMACIndex, 96 struct xNetworkInterface * pxInterface ); 97 98 99 /* The function 'prvAllowIPPacket()' checks if a IPv6 packets should be processed. */ 100 eFrameProcessingResult_t prvAllowIPPacketIPv6( const IPHeader_IPv6_t * const pxIPv6Header, 101 const NetworkBufferDescriptor_t * const pxNetworkBuffer, 102 UBaseType_t uxHeaderLength ); 103 104 105 /* Return IPv6 header extension order number */ 106 BaseType_t xGetExtensionOrder( uint8_t ucProtocol, 107 uint8_t ucNextHeader ); 108 109 /** @brief Handle the IPv6 extension headers. */ 110 eFrameProcessingResult_t eHandleIPv6ExtensionHeaders( NetworkBufferDescriptor_t * const pxNetworkBuffer, 111 BaseType_t xDoRemove ); 112 113 /* prvProcessICMPMessage_IPv6() is declared in FreeRTOS_routing.c 114 * It handles all ICMP messages except the PING requests. */ 115 eFrameProcessingResult_t prvProcessICMPMessage_IPv6( NetworkBufferDescriptor_t * const pxNetworkBuffer ); 116 117 /* Return pdTRUE if all end-points are up. 118 * When pxInterface is null, all end-points will be checked. */ 119 BaseType_t FreeRTOS_AllEndPointsUp( const struct xNetworkInterface * pxInterface ); 120 121 #endif /* ifndef LIST_MACRO_H */ 122