1*0aeed3e9SJustin Hibbits /* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. 2*0aeed3e9SJustin Hibbits * All rights reserved. 3*0aeed3e9SJustin Hibbits * 4*0aeed3e9SJustin Hibbits * Redistribution and use in source and binary forms, with or without 5*0aeed3e9SJustin Hibbits * modification, are permitted provided that the following conditions are met: 6*0aeed3e9SJustin Hibbits * * Redistributions of source code must retain the above copyright 7*0aeed3e9SJustin Hibbits * notice, this list of conditions and the following disclaimer. 8*0aeed3e9SJustin Hibbits * * Redistributions in binary form must reproduce the above copyright 9*0aeed3e9SJustin Hibbits * notice, this list of conditions and the following disclaimer in the 10*0aeed3e9SJustin Hibbits * documentation and/or other materials provided with the distribution. 11*0aeed3e9SJustin Hibbits * * Neither the name of Freescale Semiconductor nor the 12*0aeed3e9SJustin Hibbits * names of its contributors may be used to endorse or promote products 13*0aeed3e9SJustin Hibbits * derived from this software without specific prior written permission. 14*0aeed3e9SJustin Hibbits * 15*0aeed3e9SJustin Hibbits * 16*0aeed3e9SJustin Hibbits * ALTERNATIVELY, this software may be distributed under the terms of the 17*0aeed3e9SJustin Hibbits * GNU General Public License ("GPL") as published by the Free Software 18*0aeed3e9SJustin Hibbits * Foundation, either version 2 of that License or (at your option) any 19*0aeed3e9SJustin Hibbits * later version. 20*0aeed3e9SJustin Hibbits * 21*0aeed3e9SJustin Hibbits * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 22*0aeed3e9SJustin Hibbits * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23*0aeed3e9SJustin Hibbits * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24*0aeed3e9SJustin Hibbits * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 25*0aeed3e9SJustin Hibbits * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26*0aeed3e9SJustin Hibbits * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27*0aeed3e9SJustin Hibbits * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 28*0aeed3e9SJustin Hibbits * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29*0aeed3e9SJustin Hibbits * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30*0aeed3e9SJustin Hibbits * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*0aeed3e9SJustin Hibbits */ 32*0aeed3e9SJustin Hibbits 33*0aeed3e9SJustin Hibbits /**************************************************************************//** 34*0aeed3e9SJustin Hibbits @File net_ext.h 35*0aeed3e9SJustin Hibbits 36*0aeed3e9SJustin Hibbits @Description This file contains common and general netcomm headers definitions. 37*0aeed3e9SJustin Hibbits *//***************************************************************************/ 38*0aeed3e9SJustin Hibbits #ifndef __NET_EXT_H 39*0aeed3e9SJustin Hibbits #define __NET_EXT_H 40*0aeed3e9SJustin Hibbits 41*0aeed3e9SJustin Hibbits #include "std_ext.h" 42*0aeed3e9SJustin Hibbits 43*0aeed3e9SJustin Hibbits 44*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldPpp_t; 45*0aeed3e9SJustin Hibbits 46*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPP_PID (1) 47*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPP_COMPRESSED (NET_HEADER_FIELD_PPP_PID << 1) 48*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPP_ALL_FIELDS ((NET_HEADER_FIELD_PPP_PID << 2) - 1) 49*0aeed3e9SJustin Hibbits 50*0aeed3e9SJustin Hibbits 51*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldPppoe_t; 52*0aeed3e9SJustin Hibbits 53*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPoE_VER (1) 54*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPoE_TYPE (NET_HEADER_FIELD_PPPoE_VER << 1) 55*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPoE_CODE (NET_HEADER_FIELD_PPPoE_VER << 2) 56*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPoE_SID (NET_HEADER_FIELD_PPPoE_VER << 3) 57*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPoE_LEN (NET_HEADER_FIELD_PPPoE_VER << 4) 58*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPoE_SESSION (NET_HEADER_FIELD_PPPoE_VER << 5) 59*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPoE_PID (NET_HEADER_FIELD_PPPoE_VER << 6) 60*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPoE_ALL_FIELDS ((NET_HEADER_FIELD_PPPoE_VER << 7) - 1) 61*0aeed3e9SJustin Hibbits 62*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_PID (1) 63*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_CKSUM (NET_HEADER_FIELD_PPPMUX_PID << 1) 64*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_COMPRESSED (NET_HEADER_FIELD_PPPMUX_PID << 2) 65*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_ALL_FIELDS ((NET_HEADER_FIELD_PPPMUX_PID << 3) - 1) 66*0aeed3e9SJustin Hibbits 67*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF (1) 68*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_SUBFRAME_LXT (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 1) 69*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_SUBFRAME_LEN (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 2) 70*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_SUBFRAME_PID (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 3) 71*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_SUBFRAME_USE_PID (NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 4) 72*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PPPMUX_SUBFRAME_ALL_FIELDS ((NET_HEADER_FIELD_PPPMUX_SUBFRAME_PFF << 5) - 1) 73*0aeed3e9SJustin Hibbits 74*0aeed3e9SJustin Hibbits 75*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldEth_t; 76*0aeed3e9SJustin Hibbits 77*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ETH_DA (1) 78*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ETH_SA (NET_HEADER_FIELD_ETH_DA << 1) 79*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ETH_LENGTH (NET_HEADER_FIELD_ETH_DA << 2) 80*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ETH_TYPE (NET_HEADER_FIELD_ETH_DA << 3) 81*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ETH_FINAL_CKSUM (NET_HEADER_FIELD_ETH_DA << 4) 82*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ETH_PADDING (NET_HEADER_FIELD_ETH_DA << 5) 83*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ETH_ALL_FIELDS ((NET_HEADER_FIELD_ETH_DA << 6) - 1) 84*0aeed3e9SJustin Hibbits 85*0aeed3e9SJustin Hibbits 86*0aeed3e9SJustin Hibbits typedef uint16_t headerFieldIpv4_t; 87*0aeed3e9SJustin Hibbits 88*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_VER (1) 89*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_HDR_LEN (NET_HEADER_FIELD_IPv4_VER << 1) 90*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_TOS (NET_HEADER_FIELD_IPv4_VER << 2) 91*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_TOTAL_LEN (NET_HEADER_FIELD_IPv4_VER << 3) 92*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_ID (NET_HEADER_FIELD_IPv4_VER << 4) 93*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_FLAG_D (NET_HEADER_FIELD_IPv4_VER << 5) 94*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_FLAG_M (NET_HEADER_FIELD_IPv4_VER << 6) 95*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_OFFSET (NET_HEADER_FIELD_IPv4_VER << 7) 96*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_TTL (NET_HEADER_FIELD_IPv4_VER << 8) 97*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_PROTO (NET_HEADER_FIELD_IPv4_VER << 9) 98*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_CKSUM (NET_HEADER_FIELD_IPv4_VER << 10) 99*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_SRC_IP (NET_HEADER_FIELD_IPv4_VER << 11) 100*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_DST_IP (NET_HEADER_FIELD_IPv4_VER << 12) 101*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_OPTS (NET_HEADER_FIELD_IPv4_VER << 13) 102*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_OPTS_COUNT (NET_HEADER_FIELD_IPv4_VER << 14) 103*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv4_ALL_FIELDS ((NET_HEADER_FIELD_IPv4_VER << 15) - 1) 104*0aeed3e9SJustin Hibbits 105*0aeed3e9SJustin Hibbits 106*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldIpv6_t; 107*0aeed3e9SJustin Hibbits 108*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv6_VER (1) 109*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv6_TC (NET_HEADER_FIELD_IPv6_VER << 1) 110*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv6_SRC_IP (NET_HEADER_FIELD_IPv6_VER << 2) 111*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv6_DST_IP (NET_HEADER_FIELD_IPv6_VER << 3) 112*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv6_NEXT_HDR (NET_HEADER_FIELD_IPv6_VER << 4) 113*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv6_FL (NET_HEADER_FIELD_IPv6_VER << 5) 114*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv6_HOP_LIMIT (NET_HEADER_FIELD_IPv6_VER << 6) 115*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPv6_ALL_FIELDS ((NET_HEADER_FIELD_IPv6_VER << 7) - 1) 116*0aeed3e9SJustin Hibbits 117*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ICMP_TYPE (1) 118*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ICMP_CODE (NET_HEADER_FIELD_ICMP_TYPE << 1) 119*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ICMP_CKSUM (NET_HEADER_FIELD_ICMP_TYPE << 2) 120*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ICMP_ID (NET_HEADER_FIELD_ICMP_TYPE << 3) 121*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ICMP_SQ_NUM (NET_HEADER_FIELD_ICMP_TYPE << 4) 122*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ICMP_ALL_FIELDS ((NET_HEADER_FIELD_ICMP_TYPE << 5) - 1) 123*0aeed3e9SJustin Hibbits 124*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IGMP_VERSION (1) 125*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IGMP_TYPE (NET_HEADER_FIELD_IGMP_VERSION << 1) 126*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IGMP_CKSUM (NET_HEADER_FIELD_IGMP_VERSION << 2) 127*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IGMP_DATA (NET_HEADER_FIELD_IGMP_VERSION << 3) 128*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IGMP_ALL_FIELDS ((NET_HEADER_FIELD_IGMP_VERSION << 4) - 1) 129*0aeed3e9SJustin Hibbits 130*0aeed3e9SJustin Hibbits 131*0aeed3e9SJustin Hibbits typedef uint16_t headerFieldTcp_t; 132*0aeed3e9SJustin Hibbits 133*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_PORT_SRC (1) 134*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_PORT_DST (NET_HEADER_FIELD_TCP_PORT_SRC << 1) 135*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_SEQ (NET_HEADER_FIELD_TCP_PORT_SRC << 2) 136*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_ACK (NET_HEADER_FIELD_TCP_PORT_SRC << 3) 137*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_OFFSET (NET_HEADER_FIELD_TCP_PORT_SRC << 4) 138*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_FLAGS (NET_HEADER_FIELD_TCP_PORT_SRC << 5) 139*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_WINDOW (NET_HEADER_FIELD_TCP_PORT_SRC << 6) 140*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_CKSUM (NET_HEADER_FIELD_TCP_PORT_SRC << 7) 141*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_URGPTR (NET_HEADER_FIELD_TCP_PORT_SRC << 8) 142*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_OPTS (NET_HEADER_FIELD_TCP_PORT_SRC << 9) 143*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_OPTS_COUNT (NET_HEADER_FIELD_TCP_PORT_SRC << 10) 144*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_TCP_ALL_FIELDS ((NET_HEADER_FIELD_TCP_PORT_SRC << 11) - 1) 145*0aeed3e9SJustin Hibbits 146*0aeed3e9SJustin Hibbits 147*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldSctp_t; 148*0aeed3e9SJustin Hibbits 149*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_PORT_SRC (1) 150*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_PORT_DST (NET_HEADER_FIELD_SCTP_PORT_SRC << 1) 151*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_VER_TAG (NET_HEADER_FIELD_SCTP_PORT_SRC << 2) 152*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CKSUM (NET_HEADER_FIELD_SCTP_PORT_SRC << 3) 153*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_ALL_FIELDS ((NET_HEADER_FIELD_SCTP_PORT_SRC << 4) - 1) 154*0aeed3e9SJustin Hibbits 155*0aeed3e9SJustin Hibbits 156*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldDccp_t; 157*0aeed3e9SJustin Hibbits 158*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_DCCP_PORT_SRC (1) 159*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_DCCP_PORT_DST (NET_HEADER_FIELD_DCCP_PORT_SRC << 1) 160*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_DCCP_ALL_FIELDS ((NET_HEADER_FIELD_DCCP_PORT_SRC << 2) - 1) 161*0aeed3e9SJustin Hibbits 162*0aeed3e9SJustin Hibbits 163*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldUdp_t; 164*0aeed3e9SJustin Hibbits 165*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_PORT_SRC (1) 166*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_PORT_DST (NET_HEADER_FIELD_UDP_PORT_SRC << 1) 167*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_LEN (NET_HEADER_FIELD_UDP_PORT_SRC << 2) 168*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_CKSUM (NET_HEADER_FIELD_UDP_PORT_SRC << 3) 169*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_ALL_FIELDS ((NET_HEADER_FIELD_UDP_PORT_SRC << 4) - 1) 170*0aeed3e9SJustin Hibbits 171*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldUdpEncapEsp_t; 172*0aeed3e9SJustin Hibbits 173*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC (1) 174*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_DST (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 1) 175*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_ENCAP_ESP_LEN (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 2) 176*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_ENCAP_ESP_CKSUM (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 3) 177*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_ENCAP_ESP_SPI (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 4) 178*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_ENCAP_ESP_SEQUENCE_NUM (NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 5) 179*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_UDP_ENCAP_ESP_ALL_FIELDS ((NET_HEADER_FIELD_UDP_ENCAP_ESP_PORT_SRC << 6) - 1) 180*0aeed3e9SJustin Hibbits 181*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPHC_CID (1) 182*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPHC_CID_TYPE (NET_HEADER_FIELD_IPHC_CID << 1) 183*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPHC_HCINDEX (NET_HEADER_FIELD_IPHC_CID << 2) 184*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPHC_GEN (NET_HEADER_FIELD_IPHC_CID << 3) 185*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPHC_D_BIT (NET_HEADER_FIELD_IPHC_CID << 4) 186*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPHC_ALL_FIELDS ((NET_HEADER_FIELD_IPHC_CID << 5) - 1) 187*0aeed3e9SJustin Hibbits 188*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE (1) 189*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_FLAGS (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 1) 190*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_LENGTH (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 2) 191*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_TSN (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 3) 192*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_STREAM_ID (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 4) 193*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_STREAM_SQN (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 5) 194*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_PAYLOAD_PID (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 6) 195*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_UNORDERED (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 7) 196*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_BEGGINING (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 8) 197*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_END (NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 9) 198*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SCTP_CHUNK_DATA_ALL_FIELDS ((NET_HEADER_FIELD_SCTP_CHUNK_DATA_TYPE << 10) - 1) 199*0aeed3e9SJustin Hibbits 200*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_TYPE_BIT (1) 201*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_LENGTH_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 1) 202*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_SEQUENCE_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 2) 203*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_OFFSET_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 3) 204*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_PRIORITY_BIT (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 4) 205*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_VERSION (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 5) 206*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_LEN (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 6) 207*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_TUNNEL_ID (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 7) 208*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_SESSION_ID (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 8) 209*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_NS (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 9) 210*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_NR (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 10) 211*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_OFFSET_SIZE (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 11) 212*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_FIRST_BYTE (NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 12) 213*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv2_ALL_FIELDS ((NET_HEADER_FIELD_L2TPv2_TYPE_BIT << 13) - 1) 214*0aeed3e9SJustin Hibbits 215*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT (1) 216*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_LENGTH_BIT (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 1) 217*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_SEQUENCE_BIT (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 2) 218*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_VERSION (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 3) 219*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_LENGTH (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 4) 220*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_CONTROL (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 5) 221*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_SENT (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 6) 222*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_RECV (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 7) 223*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_FIRST_BYTE (NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 8) 224*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_CTRL_ALL_FIELDS ((NET_HEADER_FIELD_L2TPv3_CTRL_TYPE_BIT << 9) - 1) 225*0aeed3e9SJustin Hibbits 226*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT (1) 227*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_SESS_VERSION (NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 1) 228*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_SESS_ID (NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 2) 229*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_SESS_COOKIE (NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 3) 230*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_L2TPv3_SESS_ALL_FIELDS ((NET_HEADER_FIELD_L2TPv3_SESS_TYPE_BIT << 4) - 1) 231*0aeed3e9SJustin Hibbits 232*0aeed3e9SJustin Hibbits 233*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldVlan_t; 234*0aeed3e9SJustin Hibbits 235*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_VLAN_VPRI (1) 236*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_VLAN_CFI (NET_HEADER_FIELD_VLAN_VPRI << 1) 237*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_VLAN_VID (NET_HEADER_FIELD_VLAN_VPRI << 2) 238*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_VLAN_LENGTH (NET_HEADER_FIELD_VLAN_VPRI << 3) 239*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_VLAN_TYPE (NET_HEADER_FIELD_VLAN_VPRI << 4) 240*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_VLAN_ALL_FIELDS ((NET_HEADER_FIELD_VLAN_VPRI << 5) - 1) 241*0aeed3e9SJustin Hibbits 242*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_VLAN_TCI (NET_HEADER_FIELD_VLAN_VPRI | \ 243*0aeed3e9SJustin Hibbits NET_HEADER_FIELD_VLAN_CFI | \ 244*0aeed3e9SJustin Hibbits NET_HEADER_FIELD_VLAN_VID) 245*0aeed3e9SJustin Hibbits 246*0aeed3e9SJustin Hibbits 247*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldLlc_t; 248*0aeed3e9SJustin Hibbits 249*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_LLC_DSAP (1) 250*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_LLC_SSAP (NET_HEADER_FIELD_LLC_DSAP << 1) 251*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_LLC_CTRL (NET_HEADER_FIELD_LLC_DSAP << 2) 252*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_LLC_ALL_FIELDS ((NET_HEADER_FIELD_LLC_DSAP << 3) - 1) 253*0aeed3e9SJustin Hibbits 254*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_NLPID_NLPID (1) 255*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_NLPID_ALL_FIELDS ((NET_HEADER_FIELD_NLPID_NLPID << 1) - 1) 256*0aeed3e9SJustin Hibbits 257*0aeed3e9SJustin Hibbits 258*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldSnap_t; 259*0aeed3e9SJustin Hibbits 260*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SNAP_OUI (1) 261*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SNAP_PID (NET_HEADER_FIELD_SNAP_OUI << 1) 262*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_SNAP_ALL_FIELDS ((NET_HEADER_FIELD_SNAP_OUI << 2) - 1) 263*0aeed3e9SJustin Hibbits 264*0aeed3e9SJustin Hibbits 265*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldLlcSnap_t; 266*0aeed3e9SJustin Hibbits 267*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_LLC_SNAP_TYPE (1) 268*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_LLC_SNAP_ALL_FIELDS ((NET_HEADER_FIELD_LLC_SNAP_TYPE << 1) - 1) 269*0aeed3e9SJustin Hibbits 270*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_HTYPE (1) 271*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_PTYPE (NET_HEADER_FIELD_ARP_HTYPE << 1) 272*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_HLEN (NET_HEADER_FIELD_ARP_HTYPE << 2) 273*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_PLEN (NET_HEADER_FIELD_ARP_HTYPE << 3) 274*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_OPER (NET_HEADER_FIELD_ARP_HTYPE << 4) 275*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_SHA (NET_HEADER_FIELD_ARP_HTYPE << 5) 276*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_SPA (NET_HEADER_FIELD_ARP_HTYPE << 6) 277*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_THA (NET_HEADER_FIELD_ARP_HTYPE << 7) 278*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_TPA (NET_HEADER_FIELD_ARP_HTYPE << 8) 279*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_ARP_ALL_FIELDS ((NET_HEADER_FIELD_ARP_HTYPE << 9) - 1) 280*0aeed3e9SJustin Hibbits 281*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_RFC2684_LLC (1) 282*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_RFC2684_NLPID (NET_HEADER_FIELD_RFC2684_LLC << 1) 283*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_RFC2684_OUI (NET_HEADER_FIELD_RFC2684_LLC << 2) 284*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_RFC2684_PID (NET_HEADER_FIELD_RFC2684_LLC << 3) 285*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_RFC2684_VPN_OUI (NET_HEADER_FIELD_RFC2684_LLC << 4) 286*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_RFC2684_VPN_IDX (NET_HEADER_FIELD_RFC2684_LLC << 5) 287*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_RFC2684_ALL_FIELDS ((NET_HEADER_FIELD_RFC2684_LLC << 6) - 1) 288*0aeed3e9SJustin Hibbits 289*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_USER_DEFINED_SRCPORT (1) 290*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_USER_DEFINED_PCDID (NET_HEADER_FIELD_USER_DEFINED_SRCPORT << 1) 291*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_USER_DEFINED_ALL_FIELDS ((NET_HEADER_FIELD_USER_DEFINED_SRCPORT << 2) - 1) 292*0aeed3e9SJustin Hibbits 293*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PAYLOAD_BUFFER (1) 294*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PAYLOAD_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 1) 295*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MAX_FRM_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 2) 296*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MIN_FRM_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 3) 297*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PAYLOAD_TYPE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 4) 298*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_FRAME_SIZE (NET_HEADER_FIELD_PAYLOAD_BUFFER << 5) 299*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_PAYLOAD_ALL_FIELDS ((NET_HEADER_FIELD_PAYLOAD_BUFFER << 6) - 1) 300*0aeed3e9SJustin Hibbits 301*0aeed3e9SJustin Hibbits 302*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldGre_t; 303*0aeed3e9SJustin Hibbits 304*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_GRE_TYPE (1) 305*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_GRE_ALL_FIELDS ((NET_HEADER_FIELD_GRE_TYPE << 1) - 1) 306*0aeed3e9SJustin Hibbits 307*0aeed3e9SJustin Hibbits 308*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldMinencap_t; 309*0aeed3e9SJustin Hibbits 310*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MINENCAP_SRC_IP (1) 311*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MINENCAP_DST_IP (NET_HEADER_FIELD_MINENCAP_SRC_IP << 1) 312*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MINENCAP_TYPE (NET_HEADER_FIELD_MINENCAP_SRC_IP << 2) 313*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MINENCAP_ALL_FIELDS ((NET_HEADER_FIELD_MINENCAP_SRC_IP << 3) - 1) 314*0aeed3e9SJustin Hibbits 315*0aeed3e9SJustin Hibbits 316*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldIpsecAh_t; 317*0aeed3e9SJustin Hibbits 318*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPSEC_AH_SPI (1) 319*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPSEC_AH_NH (NET_HEADER_FIELD_IPSEC_AH_SPI << 1) 320*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPSEC_AH_ALL_FIELDS ((NET_HEADER_FIELD_IPSEC_AH_SPI << 2) - 1) 321*0aeed3e9SJustin Hibbits 322*0aeed3e9SJustin Hibbits 323*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldIpsecEsp_t; 324*0aeed3e9SJustin Hibbits 325*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPSEC_ESP_SPI (1) 326*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPSEC_ESP_SEQUENCE_NUM (NET_HEADER_FIELD_IPSEC_ESP_SPI << 1) 327*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_IPSEC_ESP_ALL_FIELDS ((NET_HEADER_FIELD_IPSEC_ESP_SPI << 2) - 1) 328*0aeed3e9SJustin Hibbits 329*0aeed3e9SJustin Hibbits 330*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldMpls_t; 331*0aeed3e9SJustin Hibbits 332*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MPLS_LABEL_STACK (1) 333*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MPLS_LABEL_STACK_ALL_FIELDS ((NET_HEADER_FIELD_MPLS_LABEL_STACK << 1) - 1) 334*0aeed3e9SJustin Hibbits 335*0aeed3e9SJustin Hibbits 336*0aeed3e9SJustin Hibbits typedef uint8_t headerFieldMacsec_t; 337*0aeed3e9SJustin Hibbits 338*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MACSEC_SECTAG (1) 339*0aeed3e9SJustin Hibbits #define NET_HEADER_FIELD_MACSEC_ALL_FIELDS ((NET_HEADER_FIELD_MACSEC_SECTAG << 1) - 1) 340*0aeed3e9SJustin Hibbits 341*0aeed3e9SJustin Hibbits 342*0aeed3e9SJustin Hibbits typedef enum { 343*0aeed3e9SJustin Hibbits HEADER_TYPE_NONE = 0, 344*0aeed3e9SJustin Hibbits HEADER_TYPE_PAYLOAD, 345*0aeed3e9SJustin Hibbits HEADER_TYPE_ETH, 346*0aeed3e9SJustin Hibbits HEADER_TYPE_VLAN, 347*0aeed3e9SJustin Hibbits HEADER_TYPE_IPv4, 348*0aeed3e9SJustin Hibbits HEADER_TYPE_IPv6, 349*0aeed3e9SJustin Hibbits HEADER_TYPE_TCP, 350*0aeed3e9SJustin Hibbits HEADER_TYPE_UDP, 351*0aeed3e9SJustin Hibbits HEADER_TYPE_IPHC, 352*0aeed3e9SJustin Hibbits HEADER_TYPE_SCTP, 353*0aeed3e9SJustin Hibbits HEADER_TYPE_SCTP_CHUNK_DATA, 354*0aeed3e9SJustin Hibbits HEADER_TYPE_PPPoE, 355*0aeed3e9SJustin Hibbits HEADER_TYPE_PPP, 356*0aeed3e9SJustin Hibbits HEADER_TYPE_PPPMUX, 357*0aeed3e9SJustin Hibbits HEADER_TYPE_PPPMUX_SUBFRAME, 358*0aeed3e9SJustin Hibbits HEADER_TYPE_L2TPv2, 359*0aeed3e9SJustin Hibbits HEADER_TYPE_L2TPv3_CTRL, 360*0aeed3e9SJustin Hibbits HEADER_TYPE_L2TPv3_SESS, 361*0aeed3e9SJustin Hibbits HEADER_TYPE_LLC, 362*0aeed3e9SJustin Hibbits HEADER_TYPE_LLC_SNAP, 363*0aeed3e9SJustin Hibbits HEADER_TYPE_NLPID, 364*0aeed3e9SJustin Hibbits HEADER_TYPE_SNAP, 365*0aeed3e9SJustin Hibbits HEADER_TYPE_MPLS, 366*0aeed3e9SJustin Hibbits HEADER_TYPE_IPSEC_AH, 367*0aeed3e9SJustin Hibbits HEADER_TYPE_IPSEC_ESP, 368*0aeed3e9SJustin Hibbits HEADER_TYPE_UDP_ENCAP_ESP, /* RFC 3948 */ 369*0aeed3e9SJustin Hibbits HEADER_TYPE_MACSEC, 370*0aeed3e9SJustin Hibbits HEADER_TYPE_GRE, 371*0aeed3e9SJustin Hibbits HEADER_TYPE_MINENCAP, 372*0aeed3e9SJustin Hibbits HEADER_TYPE_DCCP, 373*0aeed3e9SJustin Hibbits HEADER_TYPE_ICMP, 374*0aeed3e9SJustin Hibbits HEADER_TYPE_IGMP, 375*0aeed3e9SJustin Hibbits HEADER_TYPE_ARP, 376*0aeed3e9SJustin Hibbits HEADER_TYPE_CAPWAP, 377*0aeed3e9SJustin Hibbits HEADER_TYPE_CAPWAP_DTLS, 378*0aeed3e9SJustin Hibbits HEADER_TYPE_RFC2684, 379*0aeed3e9SJustin Hibbits HEADER_TYPE_USER_DEFINED_L2, 380*0aeed3e9SJustin Hibbits HEADER_TYPE_USER_DEFINED_L3, 381*0aeed3e9SJustin Hibbits HEADER_TYPE_USER_DEFINED_L4, 382*0aeed3e9SJustin Hibbits HEADER_TYPE_USER_DEFINED_SHIM1, 383*0aeed3e9SJustin Hibbits HEADER_TYPE_USER_DEFINED_SHIM2, 384*0aeed3e9SJustin Hibbits MAX_HEADER_TYPE_COUNT 385*0aeed3e9SJustin Hibbits } e_NetHeaderType; 386*0aeed3e9SJustin Hibbits 387*0aeed3e9SJustin Hibbits 388*0aeed3e9SJustin Hibbits #endif /* __NET_EXT_H */ 389