1 /* 2 * Copyright 2008-2012 Freescale Semiconductor Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are met: 6 * * Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * * Redistributions in binary form must reproduce the above copyright 9 * notice, this list of conditions and the following disclaimer in the 10 * documentation and/or other materials provided with the distribution. 11 * * Neither the name of Freescale Semiconductor nor the 12 * names of its contributors may be used to endorse or promote products 13 * derived from this software without specific prior written permission. 14 * 15 * 16 * ALTERNATIVELY, this software may be distributed under the terms of the 17 * GNU General Public License ("GPL") as published by the Free Software 18 * Foundation, either version 2 of that License or (at your option) any 19 * later version. 20 * 21 * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 22 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 25 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 28 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 /**************************************************************************//** 34 @File fm_port_dsar.h 35 36 @Description Deep Sleep Auto Response project - common module header file. 37 38 Author - Eyal Harari 39 40 @Cautions See the FMan Controller spec and design document for more information. 41 *//***************************************************************************/ 42 43 #ifndef __FM_PORT_DSAR_H_ 44 #define __FM_PORT_DSAR_H_ 45 46 #define DSAR_GETSER_MASK 0xFF0000FF 47 48 #if defined(__MWERKS__) && !defined(__GNUC__) 49 #pragma pack(push,1) 50 #endif /* defined(__MWERKS__) && ... */ 51 52 /**************************************************************************//** 53 @Description Deep Sleep Auto Response VLAN-IPv4 Binding Table (for ARP/ICMPv4) 54 Refer to the FMan Controller spec for more details. 55 *//***************************************************************************/ 56 typedef _Packed struct 57 { 58 uint32_t ipv4Addr; /*!< 32 bit IPv4 Address. */ 59 uint16_t vlanId; /*!< 12 bits VLAN ID. The 4 left-most bits should be cleared */ 60 /*!< This field should be 0x0000 for an entry with no VLAN tag or a null VLAN ID. */ 61 uint16_t reserved; 62 } _PackedType t_DsarArpBindingEntry; 63 64 /**************************************************************************//** 65 @Description Deep Sleep Auto Response Address Resolution Protocol Statistics Descriptor 66 Refer to the FMan Controller spec for more details. 67 0x00 INVAL_CNT Invalid ARP IPv4-Ethernet counter 68 0x04 ECHO_CNT Echo counter 69 0x08 CD_CNT Conflict Detection counter 70 0x0C AR_CNT Auto-Response counter 71 0x10 RATM_CNT Replies Addressed To Me counter 72 0x14 UKOP_CNT Unknown Operation counter 73 0x18 NMTP_CNT Not my TPA counter 74 0x1C NMVLAN_CNT Not My VLAN counter 75 *//***************************************************************************/ 76 typedef _Packed struct 77 { 78 uint32_t invalCnt; /**< Invalid ARP IPv4-Ethernet counter. */ 79 uint32_t echoCnt; /**< Echo counter. */ 80 uint32_t cdCnt; /**< Conflict Detection counter. */ 81 uint32_t arCnt; /**< Auto-Response counter. */ 82 uint32_t ratmCnt; /**< Replies Addressed To Me counter. */ 83 uint32_t ukopCnt; /**< Unknown Operation counter. */ 84 uint32_t nmtpCnt; /**< Not my TPA counter. */ 85 uint32_t nmVlanCnt; /**< Not My VLAN counter */ 86 } _PackedType t_DsarArpStatistics; 87 88 89 /**************************************************************************//** 90 @Description Deep Sleep Auto Response Address Resolution Protocol Descriptor 91 0x0 0-15 Control bits [0-15]. Bit 15 = CDEN. 92 0x2 0-15 NumOfBindings Number of entries in the binding list. 93 0x4 0-15 BindingsPointer Bindings Pointer. This points to an IPv4-MAC Addresses Bindings list. 94 0x6 0-15 95 0x8 0-15 StatisticsPointer Statistics Pointer. This field points to the ARP Descriptors statistics data structure. 96 0xA 0-15 97 0xC 0-15 Reserved Reserved. Must be cleared. 98 0xE 015 99 100 *//***************************************************************************/ 101 typedef _Packed struct 102 { 103 uint16_t control; /** Control bits [0-15]. Bit 15 = CDEN */ 104 uint16_t numOfBindings; /**< Number of VLAN-IPv4 */ 105 uint32_t p_Bindings; /**< VLAN-IPv4 Bindings table pointer. */ 106 uint32_t p_Statistics; /**< Statistics Data Structure pointer. */ 107 uint32_t reserved1; /**< Reserved. */ 108 } _PackedType t_DsarArpDescriptor; 109 110 111 /**************************************************************************//** 112 @Description Deep Sleep Auto Response VLAN-IPv4 Binding Table (for ARP/ICMPv4) 113 Refer to the FMan Controller spec for more details. 114 *//***************************************************************************/ 115 typedef _Packed struct 116 { 117 uint32_t ipv4Addr; /*!< 32 bit IPv4 Address. */ 118 uint16_t vlanId; /*!< 12 bits VLAN ID. The 4 left-most bits should be cleared */ 119 /*!< This field should be 0x0000 for an entry with no VLAN tag or a null VLAN ID. */ 120 uint16_t reserved; 121 } _PackedType t_DsarIcmpV4BindingEntry; 122 123 /**************************************************************************//** 124 @Description Deep Sleep Auto Response ICMPv4 Statistics Descriptor 125 Refer to the FMan Controller spec for more details. 126 0x00 INVAL_CNT Invalid ICMPv4 header counter 127 0x04 NMVLAN_CNT Not My VLAN counter 128 0x08 NMIP_CNT Not My IP counter 129 0x0C AR_CNT Auto-Response counter 130 0x10 CSERR_CNT Checksum Error counter 131 0x14 Reserved Reserved 132 0x18 Reserved Reserved 133 0x1C Reserved Reserved 134 135 *//***************************************************************************/ 136 typedef _Packed struct 137 { 138 uint32_t invalCnt; /**< Invalid ICMPv4 Echo counter. */ 139 uint32_t nmVlanCnt; /**< Not My VLAN counter */ 140 uint32_t nmIpCnt; /**< Not My IP counter */ 141 uint32_t arCnt; /**< Auto-Response counter */ 142 uint32_t cserrCnt; /**< Checksum Error counter */ 143 uint32_t reserved0; /**< Reserved */ 144 uint32_t reserved1; /**< Reserved */ 145 uint32_t reserved2; /**< Reserved */ 146 } _PackedType t_DsarIcmpV4Statistics; 147 148 149 150 /**************************************************************************//** 151 @Description Deep Sleep Auto Response ICMPv4 Descriptor 152 0x0 0-15 Control bits [0-15] 153 0x2 0-15 NumOfBindings Number of entries in the binding list. 154 0x4 0-15 BindingsPointer Bindings Pointer. This points to an VLAN-IPv4 Addresses Bindings list. 155 0x6 0-15 156 0x8 0-15 StatisticsPointer Statistics Pointer. This field points to the ICMPv4 statistics data structure. 157 0xA 0-15 158 0xC 0-15 Reserved Reserved. Must be cleared. 159 0xE 015 160 161 *//***************************************************************************/ 162 typedef _Packed struct 163 { 164 uint16_t control; /** Control bits [0-15]. */ 165 uint16_t numOfBindings; /**< Number of VLAN-IPv4 */ 166 uint32_t p_Bindings; /**< VLAN-IPv4 Bindings table pointer. */ 167 uint32_t p_Statistics; /**< Statistics Data Structure pointer. */ 168 uint32_t reserved1; /**< Reserved. */ 169 } _PackedType t_DsarIcmpV4Descriptor; 170 171 /**************************************************************************//** 172 @Description Deep Sleep Auto Response VLAN-IPv4 Binding Table (for ARP/ICMPv4) 173 The 4 left-most bits (15:12) of the VlanId parameter are control flags. 174 Flags[3:1] (VlanId[15:13]): Reserved, should be cleared. 175 Flags[0] (VlanId[12]): Temporary address. 176 � 0 - Assigned IP address. 177 � 1- Temporary (tentative) IP address. 178 Refer to the FMan Controller spec for more details. 179 *//***************************************************************************/ 180 typedef _Packed struct 181 { 182 uint32_t ipv6Addr[4]; /*!< 3 * 32 bit IPv4 Address. */ 183 uint16_t resFlags:4; /*!< reserved flags. should be cleared */ 184 uint16_t vlanId:12; /*!< 12 bits VLAN ID. */ 185 /*!< This field should be 0x000 for an entry with no VLAN tag or a null VLAN ID. */ 186 uint16_t reserved; 187 } _PackedType t_DsarIcmpV6BindingEntry; 188 189 /**************************************************************************//** 190 @Description Deep Sleep Auto Response ICMPv4 Statistics Descriptor 191 Refer to the FMan Controller spec for more details. 192 0x00 INVAL_CNT Invalid ICMPv4 header counter 193 0x04 NMVLAN_CNT Not My VLAN counter 194 0x08 NMIP_CNT Not My IP counter 195 0x0C AR_CNT Auto-Response counter 196 0x10 CSERR_CNT Checksum Error counter 197 0x14 MCAST_CNT Multicast counter 198 0x18 Reserved Reserved 199 0x1C Reserved Reserved 200 201 *//***************************************************************************/ 202 typedef _Packed struct 203 { 204 uint32_t invalCnt; /**< Invalid ICMPv4 Echo counter. */ 205 uint32_t nmVlanCnt; /**< Not My VLAN counter */ 206 uint32_t nmIpCnt; /**< Not My IP counter */ 207 uint32_t arCnt; /**< Auto-Response counter */ 208 uint32_t reserved1; /**< Reserved */ 209 uint32_t reserved2; /**< Reserved */ 210 uint32_t reserved3; /**< Reserved */ 211 uint32_t reserved4; /**< Reserved */ 212 } _PackedType t_DsarIcmpV6Statistics; 213 214 /**************************************************************************//** 215 @Description Deep Sleep Auto Response Neighbor Discovery Statistics Descriptor 216 0x00 INVAL_CNT Invalid Neighbor Discovery message counter 217 0x04 NMVLAN_CNT Not My VLAN counter 218 0x08 NMIP_CNT Not My IP counter 219 0x0C AR_CNT Auto-Response counter 220 0x10 CSERR_CNT Checksum Error counter 221 0x14 USADVERT_CNT Unsolicited Neighbor Advertisements counter 222 0x18 NMMCAST_CNT Not My Multicast group counter 223 0x1C NSLLA_CNT No Source Link-Layer Address counter. Indicates that there was a match on a Target 224 Address of a packet that its source IP address is a unicast address, but the ICMPv6 225 Source Link-layer Address option is omitted 226 *//***************************************************************************/ 227 typedef _Packed struct 228 { 229 uint32_t invalCnt; /**< Invalid ICMPv4 Echo counter. */ 230 uint32_t nmVlanCnt; /**< Not My VLAN counter */ 231 uint32_t nmIpCnt; /**< Not My IP counter */ 232 uint32_t arCnt; /**< Auto-Response counter */ 233 uint32_t reserved1; /**< Reserved */ 234 uint32_t usadvertCnt; /**< Unsolicited Neighbor Advertisements counter */ 235 uint32_t nmmcastCnt; /**< Not My Multicast group counter */ 236 uint32_t nsllaCnt; /**< No Source Link-Layer Address counter */ 237 } _PackedType t_NdStatistics; 238 239 /**************************************************************************//** 240 @Description Deep Sleep Auto Response ICMPv6 Descriptor 241 0x0 0-15 Control bits [0-15] 242 0x2 0-15 NumOfBindings Number of entries in the binding list. 243 0x4 0-15 BindingsPointer Bindings Pointer. This points to an VLAN-IPv4 Addresses Bindings list. 244 0x6 0-15 245 0x8 0-15 StatisticsPointer Statistics Pointer. This field points to the ICMPv4 statistics data structure. 246 0xA 0-15 247 0xC 0-15 Reserved Reserved. Must be cleared. 248 0xE 015 249 250 *//***************************************************************************/ 251 typedef _Packed struct 252 { 253 uint16_t control; /** Control bits [0-15]. */ 254 uint16_t numOfBindings; /**< Number of VLAN-IPv6 */ 255 uint32_t p_Bindings; /**< VLAN-IPv4 Bindings table pointer. */ 256 uint32_t p_Statistics; /**< Statistics Data Structure pointer. */ 257 uint32_t reserved1; /**< Reserved. */ 258 } _PackedType t_DsarIcmpV6Descriptor; 259 260 261 /**************************************************************************//** 262 @Description Internet Control Message Protocol (ICMPv6) Echo message header 263 The fields names are taken from RFC 4443. 264 *//***************************************************************************/ 265 /* 0 1 2 3 */ 266 /* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 */ 267 /* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ 268 /* | Type | Code | Checksum | */ 269 /* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ 270 /* | Identifier | Sequence Number | */ 271 /* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ 272 /* | Data ... */ 273 /* +-+-+-+-+- */ 274 typedef _Packed struct 275 { 276 uint8_t type; 277 uint8_t code; 278 uint16_t checksum; 279 uint16_t identifier; 280 uint16_t sequenceNumber; 281 } _PackedType t_IcmpV6EchoHdr; 282 283 /**************************************************************************//** 284 @Description Internet Control Message Protocol (ICMPv6) 285 Neighbor Solicitation/Advertisement header 286 The fields names are taken from RFC 4861. 287 The R/S/O fields are valid for Neighbor Advertisement only 288 *//***************************************************************************/ 289 /* 0 1 2 3 290 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 291 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 292 * | Type | Code | Checksum | 293 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 294 * |R|S|O| Reserved | 295 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 296 * | | 297 * + + 298 * | | 299 * + Target Address + 300 * | | 301 * + + 302 * | | 303 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 304 * | Options ... 305 * +-+-+-+-+-+-+-+-+-+-+-+- 306 * 307 * Options Format: 308 * 0 1 2 3 309 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 310 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 311 * | Type | Length | Link-Layer Address ... | 312 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 313 * | Link-Layer Address | 314 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 315 */ 316 typedef _Packed struct 317 { 318 uint8_t type; 319 uint8_t code; 320 uint16_t checksum; 321 uint32_t router:1; 322 uint32_t solicited:1; 323 uint32_t override:1; 324 uint32_t reserved:29; 325 uint32_t targetAddr[4]; 326 uint8_t optionType; 327 uint8_t optionLength; 328 uint8_t linkLayerAddr[6]; 329 } _PackedType t_IcmpV6NdHdr; 330 331 /**************************************************************************//** 332 @Description Deep Sleep Auto Response ICMPv6 Descriptor 333 0x0 0-15 Control bits [0-15] 334 0x2 0-15 NumOfBindings Number of entries in the binding list. 335 0x4 0-15 BindingsPointer Bindings Pointer. This points to an VLAN-IPv4 Addresses Bindings list. 336 0x6 0-15 337 0x8 0-15 StatisticsPointer Statistics Pointer. This field points to the ICMPv4 statistics data structure. 338 0xA 0-15 339 0xC 0-15 Reserved Reserved. Must be cleared. 340 0xE 015 341 342 *//***************************************************************************/ 343 typedef _Packed struct 344 { 345 uint16_t control; /** Control bits [0-15]. */ 346 uint16_t numOfBindings; /**< Number of VLAN-IPv6 */ 347 uint32_t p_Bindings; /**< VLAN-IPv4 Bindings table pointer. */ 348 uint32_t p_Statistics; /**< Statistics Data Structure pointer. */ 349 uint32_t solicitedAddr; /**< Solicited Node Multicast Group Address */ 350 } _PackedType t_DsarNdDescriptor; 351 352 /**************************************************************************//** 353 @Description Deep Sleep Auto Response SNMP OIDs table entry 354 355 *//***************************************************************************/ 356 typedef struct { 357 uint16_t oidSize; /**< Size in octets of the OID. */ 358 uint16_t resSize; /**< Size in octets of the value that is attached to the OID. */ 359 uint32_t p_Oid; /**< Pointer to the OID. OID is encoded in BER but type and length are excluded. */ 360 uint32_t resValOrPtr; /**< Value (for up to 4 octets) or pointer to the Value. Encoded in BER. */ 361 uint32_t reserved; 362 } t_OidsTblEntry; 363 364 /**************************************************************************//** 365 @Description Deep Sleep Auto Response SNMP IPv4 Addresses Table Entry 366 Refer to the FMan Controller spec for more details. 367 *//***************************************************************************/ 368 typedef struct 369 { 370 uint32_t ipv4Addr; /*!< 32 bit IPv4 Address. */ 371 uint16_t vlanId; /*!< 12 bits VLAN ID. The 4 left-most bits should be cleared */ 372 /*!< This field should be 0x0000 for an entry with no VLAN tag or a null VLAN ID. */ 373 uint16_t reserved; 374 } t_DsarSnmpIpv4AddrTblEntry; 375 376 /**************************************************************************//** 377 @Description Deep Sleep Auto Response SNMP IPv6 Addresses Table Entry 378 Refer to the FMan Controller spec for more details. 379 *//***************************************************************************/ 380 #pragma pack(push,1) 381 typedef struct 382 { 383 uint32_t ipv6Addr[4]; /*!< 4 * 32 bit IPv6 Address. */ 384 uint16_t vlanId; /*!< 12 bits VLAN ID. The 4 left-most bits should be cleared */ 385 /*!< This field should be 0x0000 for an entry with no VLAN tag or a null VLAN ID. */ 386 uint16_t reserved; 387 } t_DsarSnmpIpv6AddrTblEntry; 388 #pragma pack(pop) 389 390 /**************************************************************************//** 391 @Description Deep Sleep Auto Response SNMP statistics table 392 393 *//***************************************************************************/ 394 typedef struct { 395 uint32_t snmpErrCnt; /**< Counts SNMP errors (wrong version, BER encoding, format). */ 396 uint32_t snmpCommunityErrCnt; /**< Counts messages that were dropped due to insufficient permission. */ 397 uint32_t snmpTotalDiscardCnt; /**< Counts any message that was dropped. */ 398 uint32_t snmpGetReqCnt; /**< Counts the number of get-request messages */ 399 uint32_t snmpGetNextReqCnt; /**< Counts the number of get-next-request messages */ 400 } t_DsarSnmpStatistics; 401 402 /**************************************************************************//** 403 @Description Deep Sleep Auto Response SNMP Descriptor 404 405 *//***************************************************************************/ 406 typedef struct 407 { 408 uint16_t control; /**< Control bits [0-15]. */ 409 uint16_t maxSnmpMsgLength; /**< Maximal allowed SNMP message length. */ 410 uint16_t numOfIpv4Addresses; /**< Number of entries in IPv4 addresses table. */ 411 uint16_t numOfIpv6Addresses; /**< Number of entries in IPv6 addresses table. */ 412 uint32_t p_Ipv4AddrTbl; /**< Pointer to IPv4 addresses table. */ 413 uint32_t p_Ipv6AddrTbl; /**< Pointer to IPv6 addresses table. */ 414 uint32_t p_RdOnlyCommunityStr; /**< Pointer to the Read Only Community String. */ 415 uint32_t p_RdWrCommunityStr; /**< Pointer to the Read Write Community String. */ 416 uint32_t p_OidsTbl; /**< Pointer to OIDs table. */ 417 uint32_t oidsTblSize; /**< Number of entries in OIDs table. */ 418 uint32_t p_Statistics; /**< Pointer to SNMP statistics table. */ 419 } t_DsarSnmpDescriptor; 420 421 /**************************************************************************//** 422 @Description Deep Sleep Auto Response (Common) Statistics 423 424 *//***************************************************************************/ 425 typedef _Packed struct { 426 uint32_t dsarDiscarded; 427 uint32_t dsarErrDiscarded; 428 uint32_t dsarFragDiscarded; 429 uint32_t dsarTunnelDiscarded; 430 uint32_t dsarArpDiscarded; 431 uint32_t dsarIpDiscarded; 432 uint32_t dsarTcpDiscarded; 433 uint32_t dsarUdpDiscarded; 434 uint32_t dsarIcmpV6ChecksumErr; /* ICMPv6 Checksum Error counter */ 435 uint32_t dsarIcmpV6OtherType; /* ICMPv6 'Other' type (not Echo or Neighbor Solicitaion/Advertisement counter */ 436 uint32_t dsarIcmpV4OtherType; /* ICMPv4 'Other' type (not Echo) counter */ 437 } _PackedType t_ArStatistics; 438 439 440 /**************************************************************************//** 441 @Description Deep Sleep Auto Response TCP/UDP port filter table entry 442 443 *//***************************************************************************/ 444 typedef _Packed struct { 445 uint32_t Ports; 446 uint32_t PortsMask; 447 } _PackedType t_PortTblEntry; 448 449 450 451 /**************************************************************************//** 452 @Description Deep Sleep Auto Response Common Parameters Descriptor 453 454 *//***************************************************************************/ 455 typedef _Packed struct { 456 uint8_t arTxPort; /* 0x00 0-7 Auto Response Transmit Port number */ 457 uint8_t controlBits; /* 0x00 8-15 Auto Response control bits */ 458 uint16_t res1; /* 0x00 16-31 Reserved */ 459 uint32_t activeHPNIA; /* 0x04 0-31 Active mode Hardware Parser NIA */ 460 uint16_t snmpPort; /* 0x08 0-15 SNMP Port. */ 461 uint8_t macStationAddr[6]; /* 0x08 16-31 and 0x0C 0-31 MAC Station Address */ 462 uint8_t res2; /* 0x10 0-7 Reserved */ 463 uint8_t filterControl; /* 0x10 8-15 Filtering Control Bits. */ 464 uint16_t tcpControlPass; /* 0x10 16-31 TCP control pass flags */ 465 uint8_t ipProtocolTblSize; /* 0x14 0-7 IP Protocol Table Size. */ 466 uint8_t udpPortTblSize; /* 0x14 8-15 UDP Port Table Size. */ 467 uint8_t tcpPortTblSize; /* 0x14 16-23 TCP Port Table Size. */ 468 uint8_t res3; /* 0x14 24-31 Reserved */ 469 uint32_t p_IpProtocolFiltTbl; /* 0x18 0-31 Pointer to IP Protocol Filter Table */ 470 uint32_t p_UdpPortFiltTbl; /* 0x1C 0-31 Pointer to UDP Port Filter Table */ 471 uint32_t p_TcpPortFiltTbl; /* 0x20 0-31 Pointer to TCP Port Filter Table */ 472 uint32_t res4; /* 0x24 Reserved */ 473 uint32_t p_ArpDescriptor; /* 0x28 0-31 ARP Descriptor Pointer. */ 474 uint32_t p_NdDescriptor; /* 0x2C 0-31 Neighbor Discovery Descriptor. */ 475 uint32_t p_IcmpV4Descriptor; /* 0x30 0-31 ICMPv4 Descriptor pointer. */ 476 uint32_t p_IcmpV6Descriptor; /* 0x34 0-31 ICMPv6 Descriptor pointer. */ 477 uint32_t p_SnmpDescriptor; /* 0x38 0-31 SNMP Descriptor pointer. */ 478 uint32_t p_ArStats; /* 0x3C 0-31 Pointer to Auto Response Statistics */ 479 } _PackedType t_ArCommonDesc; 480 481 #if defined(__MWERKS__) && !defined(__GNUC__) 482 #pragma pack(pop) 483 #endif /* defined(__MWERKS__) && ... */ 484 485 /* t_ArCommonDesc.filterControl bits */ 486 #define IP_PROT_TBL_PASS_MASK 0x08 487 #define UDP_PORT_TBL_PASS_MASK 0x04 488 #define TCP_PORT_TBL_PASS_MASK 0x02 489 490 /* Offset of TCF flags within TCP packet */ 491 #define TCP_FLAGS_OFFSET 12 492 493 494 #endif /* __FM_PORT_DSAR_H_ */ 495