field.h (1186739B)
1 /* 2 * 3 * 4 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 5 * 6 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 7 * 8 */ 9 10 #ifndef __BCM_FIELD_H__ 11 #define __BCM_FIELD_H__ 12 13 #include <bcm/types.h> 14 #include <sal/core/libc.h> 15 #include <shared/field.h> 16 #include <bcm/policer.h> 17 #include <bcm/port.h> 18 #include <bcm/rx.h> 19 #include <bcm/flowtracker.h> 20 #include <bcm/subport.h> 21 22 /* Entry priority. */ 23 #define BCM_FIELD_ENTRY_PRIO_HIGHEST (0x7fffffff) /* Highest possible entry 24 priority in a group. */ 25 #define BCM_FIELD_ENTRY_PRIO_DONT_CARE BCM_FIELD_ENTRY_PRIO_LOWEST /* Default entry priority. */ 26 #define BCM_FIELD_ENTRY_PRIO_LOWEST (0) /* Lowest possible entry 27 priority in a group. */ 28 29 /* Macros for Replace L2 Field Actions */ 30 #define BCM_FIELD_REPLACE_VLAN_PRIORITY 0 /* Replace vlan priority 31 with user provided 32 Priority without CFI 33 bit being set. User 34 provides Vlan priority 35 value (0-7) as an 36 input through param1 37 and CFI (bit being 38 unset) bit is appended 39 internally by FP 40 action handler. */ 41 #define BCM_FIELD_REPLACE_VLAN_PRIORITY_USE_INTERNAL_CFI 1 /* Replace vlan priority 42 with user provided 43 priority with CFI bit 44 set. User provides 45 Vlan priority value 46 (0-7) as an input 47 through param1 and CFI 48 bit ((bit being set) 49 is appended internally 50 by FP action handler. */ 51 #define BCM_FIELD_REPLACE_VLAN_PRIORITY_FROM_INT_PRIO_AND_CNG 2 /* Replace Vlan priority 52 mapped from internal 53 priority and CNG 54 derived for a packet. 55 Param1 is not 56 applicable to this 57 type. */ 58 59 #define BCM_FIELD_ENTRY_PRIO_DEFAULT BCM_FIELD_ENTRY_PRIO_LOWEST /* Default priority assigned 60 to new entries */ 61 62 #define BCM_FIELD_MAX_NAME_LEN 100 /* Maximum length for a name */ 63 64 #define BCM_FIELD_NAME_TO_ID_MAX_IDS 10 /* Maximum number of field 65 IDs returned by 66 bcm_field_name_to_id */ 67 68 #define BCM_FIELD_EXTRACTION_FLAG_CONSTANT (0x00000001) /* Indicates constant 69 value will be used 70 instead of qualifier 71 extraction */ 72 #define BCM_FIELD_EXTRACTION_FLAG_DATA_FIELD (0x00000002) /* Indicates qualifier 73 specified is data 74 field ID instead of 75 bcmFieldQualify* */ 76 77 #define BCM_FIELD_ENTRY_INVALID (-1) /* Indicates invalid and/or free 78 entry */ 79 80 /* Macros for field entry copy */ 81 #define BCM_FIELD_ENTRY_COPY_WITHOUT_STATS (1 << 0) /* Avoid copying stats 82 during entry copy */ 83 84 /* Macros for field entry config create */ 85 #define BCM_FIELD_ENTRY_CREATE_WITH_ID (1 << 0) /* Create an entry with given 86 entry Id */ 87 88 /* Macros for field entry config create */ 89 #define BCM_FIELD_ENTRY_CREATE_WITH_PRIORITY (1 << 1) /* Create an entry with 90 given priority */ 91 92 /* Macros for field entry config create */ 93 #define BCM_FIELD_ENTRY_CREATE_AS_DEFAULT (1 << 2) /* Create an entry as 94 default entry of given 95 group for ExactMatch 96 or FlowTracker stage */ 97 98 /* Macros for field entry config get */ 99 #define BCM_FIELD_ENTRY_STATUS_INSTALLED (1 << 0) /* The requested entry is 100 installed */ 101 102 /* Macros for field entry config get */ 103 #define BCM_FIELD_ENTRY_STATUS_ENABLED (1 << 1) /* The requested entry is 104 enabled */ 105 106 /* Macros for field entry config get */ 107 #define BCM_FIELD_ENTRY_STATUS_DEFAULT_ENTRY (1 << 2) /* The requested entry is 108 an ExactMatch default 109 entry */ 110 111 /* Macros for field entry config get */ 112 #define BCM_FIELD_ENTRY_STATUS_FLEXCTR_ATTACHED (1 << 3) /* The requested entry 113 has flex counter 114 attached */ 115 116 /* Macros for field entry config get */ 117 #define BCM_FIELD_ENTRY_STATUS_POLICER_ATTACHED (1 << 4) /* The requested entry 118 has policer attached */ 119 120 /* Macros for field contol bcmFieldControlGbpSrcMacMcastBitSet */ 121 #define BCM_FIELD_GBP_SRC_ID_NEQ_DST_ID (0x0) /* Applies this control only 122 when GBP Source ID not 123 equals to GBP Destination 124 ID (GBP_SID!=GBP_DID) */ 125 #define BCM_FIELD_GBP_SRC_ID_EQ_DST_ID (0x1) /* Applies this control only 126 when GBP Source ID equals 127 to GBP Destination ID 128 (GBP_SID==GBP_DID) */ 129 130 /* Macros for field stage slice info retrieval */ 131 #define BCM_FIELD_SLICE_ALLOCATED (1 << 0) /* Specify whether the 132 slice is allocated to 133 any group 0 if not 134 allocated. 1 if 135 allocated */ 136 #define BCM_FIELD_SLICE_MODE_SINGLE (1 << 1) /* Slice mode is single 137 wide */ 138 #define BCM_FIELD_SLICE_MODE_DOUBLE (1 << 2) /* Slice mode is double 139 wide */ 140 #define BCM_FIELD_SLICE_MODE_TRIPLE (1 << 3) /* Slice mode is triple 141 wide */ 142 #define BCM_FIELD_SLICE_MODE_INTRADOUBLE (1 << 4) /* Slice mode is intra 143 slice double wide */ 144 #define BCM_FIELD_SLICE_PART_PRIMARY (1 << 5) /* Slice is the primary 145 part */ 146 #define BCM_FIELD_SLICE_PART_SECONDARY (1 << 6) /* Slice is the secondary 147 part */ 148 #define BCM_FIELD_SLICE_PART_TERTIARY (1 << 7) /* Slice is the tertiary 149 part */ 150 #define BCM_FIELD_SLICE_PART_PRIMARY_EXPANDED (1 << 8) /* Slice is auto expanded 151 primary part */ 152 #define BCM_FIELD_SLICE_PART_SECONDARY_EXPANDED (1 << 9) /* Slice is auto expanded 153 secondary part */ 154 #define BCM_FIELD_SLICE_PART_TERTIARY_EXPANDED (1 << 10) /* Slice is auto expanded 155 tertiary part */ 156 #define BCM_FIELD_SLICE_PART_INTRADOUBLE_EXPANDED (1 << 11) /* Slice is auto expanded 157 intra slice double 158 wide part */ 159 #define BCM_FIELD_SLICE_MW_SUPPORTED (1 << 12) /* Slice supports multi 160 wide groups */ 161 #define BCM_FIELD_MAX_GROUPS_PER_SLICE 32 /* Maximum number of 162 groups allowed in a 163 slice */ 164 #define BCM_FIELD_STAGE_MAX_SLICES 18 /* Maximum number of 165 slices per stage */ 166 167 /* This structure holds details of entries in a slice */ 168 typedef struct bcm_field_stage_slice_info_s { 169 int total_entries; /* Total number of entries available in 170 given slice */ 171 int free_entries; /* Total number of free entries 172 available in given slice */ 173 int flags; /* Flags to identify the properties of 174 slice */ 175 int slice_gid_ct; /* Number of groups sharing the given 176 slice */ 177 bcm_field_group_t slice_gid_list[BCM_FIELD_MAX_GROUPS_PER_SLICE]; /* The groupIds associated with the 178 slice */ 179 } bcm_field_stage_slice_info_t; 180 181 /* bcm_field_stat_action_e */ 182 typedef enum bcm_field_stat_action_e { 183 bcmFieldStatActionNone = 0, /* No Operation. */ 184 bcmFieldStatActionIncrement = 1, /* Increment the stat. */ 185 bcmFieldStatActionIncrementCancel = 2, /* Do not increment the stat. */ 186 bcmFieldStatActionSample = 3, /* Sample the stat value to the packet. */ 187 bcmFieldStatActionCount = 4 /* Always Last. Not a usable value. */ 188 } bcm_field_stat_action_t; 189 190 #define BCM_FIELD_STAT_ACTION \ 191 { \ 192 "None", \ 193 "Increment", \ 194 "IncrementCancel", \ 195 "Sample" \ 196 } 197 198 /* Oam Stat Action Structure. */ 199 typedef struct bcm_field_oam_stat_action_s { 200 bcm_stat_object_t stat_object; /* Flex Stat Object */ 201 uint32 stat_mode_id; /* Flex Stat Mode */ 202 bcm_field_stat_action_t action; /* Field Stat Action */ 203 } bcm_field_oam_stat_action_t; 204 205 /* Packet content (data) qualification object flags. */ 206 #define BCM_FIELD_DATA_QUALIFIER_WITH_ID (1 << 0) 207 #define BCM_FIELD_DATA_QUALIFIER_REPLACE (1 << 1) 208 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_IP4_OPTIONS_ADJUST (1 << 2) 209 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_IP6_EXTENSIONS_ADJUST (1 << 3) 210 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_GRE_OPTIONS_ADJUST (1 << 4) 211 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_NEGATIVE (1 << 5) /* The 'offset' field is 212 interpretated as 213 negative */ 214 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_BIT_RES (1 << 6) /* The 'offset' field is 215 computed with a bit 216 resolution */ 217 #define BCM_FIELD_DATA_QUALIFIER_LENGTH_BIT_RES (1 << 7) /* The 'length' field is 218 computed with a bit 219 resolution */ 220 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_PREDEFINED (1 << 8) /* The 'qualifier' field 221 is used instead of 222 'offset_base' */ 223 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_FLEX_HASH (1 << 9) /* The 'qualifier' field 224 is used to create flex 225 hash entry' */ 226 #define BCM_FIELD_DATA_QUALIFIER_STAGE_LOOKUP (1 << 10) /* The 'qualifier' field 227 is used to create for 228 Lookup Stage */ 229 #define BCM_FIELD_DATA_QUALIFIER_TYPE_L2 (1 << 11) /* The 'qualifier' type 230 will be L2 */ 231 #define BCM_FIELD_DATA_QUALIFIER_TYPE_IPV4 (1 << 12) /* The 'qualifier' type 232 will be ipv4 */ 233 #define BCM_FIELD_DATA_QUALIFIER_TYPE_IPV6 (1 << 13) /* The 'qualifier' type 234 will be ipv6 */ 235 #define BCM_FIELD_DATA_QUALIFIER_TYPE_MPLS (1 << 14) /* The 'qualifier' type 236 will be mpls */ 237 #define BCM_FIELD_DATA_QUALIFIER_BIT_OFFSET_DNX_ORDER (1 << 15) /* Control the qualifier 238 bit numbering */ 239 240 /* Packet content (data) qualification vlan tag format. */ 241 #define BCM_FIELD_DATA_FORMAT_VLAN_TAG_ANY (0xffff) 242 #define BCM_FIELD_DATA_FORMAT_VLAN_NO_TAG (1 << 0) 243 #define BCM_FIELD_DATA_FORMAT_VLAN_SINGLE_TAGGED (1 << 1) 244 #define BCM_FIELD_DATA_FORMAT_VLAN_DOUBLE_TAGGED (1 << 2) 245 246 /* Packet content (data) qualification L2 header format. */ 247 #define BCM_FIELD_DATA_FORMAT_L2_ANY (0xffff) 248 #define BCM_FIELD_DATA_FORMAT_L2_ETH_II (1 << 0) 249 #define BCM_FIELD_DATA_FORMAT_L2_SNAP (1 << 1) 250 #define BCM_FIELD_DATA_FORMAT_L2_LLC (1 << 2) 251 252 /* Packet content (data) qualification L3 header version. */ 253 #define BCM_FIELD_DATA_FORMAT_IP_ANY (0xffff) 254 #define BCM_FIELD_DATA_FORMAT_IP_NONE (1 << 0) 255 #define BCM_FIELD_DATA_FORMAT_IP4 (1 << 1) 256 #define BCM_FIELD_DATA_FORMAT_IP6 (1 << 2) 257 #define BCM_FIELD_DATA_FORMAT_IP4_WITH_OPTIONS (1 << 3) 258 #define BCM_FIELD_DATA_FORMAT_IP6_WITH_OPTIONS (1 << 4) 259 260 /* Packet content (data) qualification Mpls encapsulation. */ 261 #define BCM_FIELD_DATA_FORMAT_MPLS_ANY (0xffff) 262 #define BCM_FIELD_DATA_FORMAT_MPLS_ONE_LABEL (1 << 0) 263 #define BCM_FIELD_DATA_FORMAT_MPLS_TWO_LABELS (1 << 1) 264 #define BCM_FIELD_DATA_FORMAT_MPLS_THREE_LABELS (1 << 2) 265 #define BCM_FIELD_DATA_FORMAT_MPLS_FOUR_LABELS (1 << 3) 266 #define BCM_FIELD_DATA_FORMAT_MPLS_FIVE_LABELS (1 << 4) 267 268 /* Packet content (data) qualification FCoE encapsulation. */ 269 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ANY (0xffff) 270 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN (1 << 0) /* Standard fibre-channel 271 header */ 272 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ENCAP (1 << 1) /* Encapsulation header */ 273 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_VIRTUAL (1 << 2) /* Virtual fabric tag 274 (VFT) header */ 275 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ROUTED (1 << 3) /* Interfabric routing 276 (IFR) header */ 277 278 /* Packet content (data) qualification Tunnel. */ 279 #define BCM_FIELD_DATA_FORMAT_TUNNEL_ANY (0xffff) 280 #define BCM_FIELD_DATA_FORMAT_TUNNEL_NONE (1 << 0) 281 #define BCM_FIELD_DATA_FORMAT_TUNNEL_IP_IN_IP (1 << 1) 282 #define BCM_FIELD_DATA_FORMAT_TUNNEL_GRE (1 << 2) 283 #define BCM_FIELD_DATA_FORMAT_TUNNEL_MPLS (1 << 3) 284 #define BCM_FIELD_DATA_FORMAT_TUNNEL_FCOE (1 << 4) /* Fibre Channel over 285 Ethernet (FCoE), 286 EtherType 0x8906 */ 287 #define BCM_FIELD_DATA_FORMAT_TUNNEL_FCOE_INIT (1 << 5) /* FCoE initialization 288 protocol (FIP), 289 EtherType 0x8914 */ 290 291 /* Packet content (data) qualification Flags. */ 292 #define BCM_FIELD_DATA_FORMAT_F_MASK (0x3ff) 293 #define BCM_FIELD_DATA_FORMAT_F_ENCAP_STACK (1 << 0) /* Indicates incoming 294 packet is a HiGig 295 Packet */ 296 #define BCM_FIELD_DATA_FORMAT_F_NO_ENCAP_STACK (1 << 1) /* Indicates incoming 297 packet is not a HiGig 298 Packet */ 299 #define BCM_FIELD_DATA_FORMAT_F_VNTAG (1 << 2) /* Indicates incoming 300 packet is a VNTAG 301 Packet */ 302 #define BCM_FIELD_DATA_FORMAT_F_NO_VNTAG (1 << 3) /* Indicates incoming 303 packet is not a VNTAG 304 Packet */ 305 #define BCM_FIELD_DATA_FORMAT_F_CNTAG (1 << 4) /* Indicates incoming 306 packet is a CNTAG 307 Packet */ 308 #define BCM_FIELD_DATA_FORMAT_F_NO_CNTAG (1 << 5) /* Indicates incoming 309 packet is not a CNTAG 310 Packet */ 311 #define BCM_FIELD_DATA_FORMAT_F_ETAG (1 << 6) /* Indicates incoming 312 packet is a ETAG 313 Packet */ 314 #define BCM_FIELD_DATA_FORMAT_F_NO_ETAG (1 << 7) /* Indicates incoming 315 packet is not a ETAG 316 Packet */ 317 #define BCM_FIELD_DATA_FORMAT_F_ICNM (1 << 8) /* Indicates incoming 318 packet is a ICNM 319 Packet */ 320 #define BCM_FIELD_DATA_FORMAT_F_NO_ICNM (1 << 9) /* Indicates incoming 321 packet is not a ICNM 322 Packet */ 323 324 /* bcm_field_data_offset_base_e */ 325 typedef enum bcm_field_data_offset_base_e { 326 bcmFieldDataOffsetBasePacketStart = 0, /* Offset provided from the beginning of 327 a packet. */ 328 bcmFieldDataOffsetBaseOuterL3Header = 1, /* Offset provided from the beginning of 329 outer L3 header. */ 330 bcmFieldDataOffsetBaseInnerL3Header = 2, /* Offset provided from the beginning of 331 inner L3 header. */ 332 bcmFieldDataOffsetBaseOuterL4Header = 3, /* Offset provided from the beginning of 333 outer L4 header.. */ 334 bcmFieldDataOffsetBaseInnerL4Header = 4, /* Offset provided from the beginning of 335 inner L4 header. */ 336 bcmFieldDataOffsetBaseHigigHeader = 5, /* Offset provided from the beginning of 337 HiGig header. */ 338 bcmFieldDataOffsetBaseHigig2Header = 6, /* Offset provided from the beginning of 339 HiGig header. */ 340 bcmFieldDataOffsetBaseFcoeHeader = 7, /* Offset provided from the beginning of 341 FCoE header. */ 342 bcmFieldDataOffsetBaseDeprecated8 = 8, /* Deprecated 8. */ 343 bcmFieldDataOffsetBaseL2Header = 9, /* Ethernet header. */ 344 bcmFieldDataOffsetBaseFirstHeader = 10, /* First header after Ethernet. */ 345 bcmFieldDataOffsetBaseSecondHeader = 11, /* Second header after Ethernet. */ 346 bcmFieldDataOffsetBaseThirdHeader = 12, /* Third header after Ethernet. */ 347 bcmFieldDataOffsetBaseMplsLabel1Header = 13, /* Offset provided from the beginning of 348 the Mpls Label 1 header. */ 349 bcmFieldDataOffsetBaseMplsLabel2Header = 14, /* Offset provided from the beginning of 350 the Mpls Label 2 header. */ 351 bcmFieldDataOffsetBaseMplsLabel3Header = 15, /* Offset provided from the beginning of 352 the Mpls Label 3 header. */ 353 bcmFieldDataOffsetBaseInnerL2Header = 16, /* Offset provided from the beginning of 354 inner L2 header. */ 355 bcmFieldDataOffsetBaseTrillHeader = 17, /* Offset provided from the beginning of 356 Trill header. */ 357 bcmFieldDataOffsetBaseFourthHeader = 18, /* Fourth header after Ethernet. */ 358 bcmFieldDataOffsetBaseForwardingHeader = 19, /* Header used for the forwarding. */ 359 bcmFieldDataOffsetBaseNextForwardingHeader = 20, /* First header after the forwarding 360 header. */ 361 bcmFieldDataOffsetBaseTrillPayload = 21, /* Offset provided from the beginning of 362 Trill Payload. */ 363 bcmFieldDataOffsetBaseCount = 22 /* Always Last. Not a usable value. */ 364 } bcm_field_data_offset_base_t; 365 366 #define BCM_FIELD_DATA_OFFSET_BASE \ 367 { \ 368 "bcmFieldDataOffsetBasePacketStart", \ 369 "bcmFieldDataOffsetBaseOuterL3Header", \ 370 "bcmFieldDataOffsetBaseInnerL3Header", \ 371 "bcmFieldDataOffsetBaseOuterL4Header", \ 372 "bcmFieldDataOffsetBaseInnerL4Header", \ 373 "bcmFieldDataOffsetBaseHigigHeader", \ 374 "bcmFieldDataOffsetBaseHigig2Header", \ 375 "bcmFieldDataOffsetBaseFcoeHeader", \ 376 "bcmFieldDataOffsetBaseDeprecated8", \ 377 "bcmFieldDataOffsetBaseL2Header", \ 378 "bcmFieldDataOffsetBaseFirstHeader", \ 379 "bcmFieldDataOffsetBaseSecondHeader", \ 380 "bcmFieldDataOffsetBaseThirdHeader", \ 381 "bcmFieldDataOffsetBaseMplsLabel1Header", \ 382 "bcmFieldDataOffsetBaseMplsLabel2Header", \ 383 "bcmFieldDataOffsetBaseMplsLabel3Header", \ 384 "bcmFieldDataOffsetBaseInnerL2Header", \ 385 "bcmFieldDataOffsetBaseTrillHeader", \ 386 "bcmFieldDataOffsetBaseFourthHeader", \ 387 "bcmFieldDataOffsetBaseForwardingHeader", \ 388 "bcmFieldDataOffsetBaseNextForwardingHeader", \ 389 "bcmFieldDataOffsetBaseTrillPayload" \ 390 } 391 392 /* EtherType based DATA packet qualifier structure. */ 393 typedef struct bcm_field_data_ethertype_s { 394 int relative_offset; /* Packet byte offset relative to qualifier 395 byte offset. */ 396 bcm_port_ethertype_t ethertype; /* Ether type. */ 397 uint16 l2; /* Packet l2 format. 398 (FIELD_DATA_FORMAT_L2_XXX) */ 399 uint16 vlan_tag; /* vlan_tag_format. 400 (FIELD_DATA_FORMAT_VLAN_XXX) */ 401 uint32 flags; /* Flags. (FIELD_DATA_FORMAT_F_XXX) */ 402 } bcm_field_data_ethertype_t; 403 404 /* Ip protocol/Next header based DATA packet qualifier structure. */ 405 typedef struct bcm_field_data_ip_protocol_s { 406 int relative_offset; /* Packet byte offset relative to qualifier byte 407 offset. */ 408 uint16 flags; /* Packet ip header version. 409 (FIELD_DATA_FORMAT_IP_XXX) */ 410 uint8 ip; /* Ip protocol id. */ 411 uint16 l2; /* Packet l2 format. (FIELD_DATA_FORMAT_L2_XXX) */ 412 uint16 vlan_tag; /* vlan_tag_format. (FIELD_DATA_FORMAT_VLAN_XXX) */ 413 } bcm_field_data_ip_protocol_t; 414 415 /* Packet format based DATA qualifier specification structure. */ 416 typedef struct bcm_field_data_packet_format_s { 417 int relative_offset; /* Packet byte offset relative to qualifier byte 418 offset. */ 419 uint16 l2; /* Packet l2 format. (FIELD_DATA_FORMAT_L2_XXX) */ 420 uint16 vlan_tag; /* vlan_tag_format. (FIELD_DATA_FORMAT_VLAN_XXX) */ 421 uint16 outer_ip; /* Outer IP header 422 version.(FIELD_DATA_FORMAT_IP_XXX) */ 423 uint16 inner_ip; /* Inner IP header 424 version.(FIELD_DATA_FORMAT_IP_XXX) */ 425 uint16 tunnel; /* Tunnel.(FIELD_DATA_FORMAT_TUNNEL_XXX) */ 426 uint16 mpls; /* Mpls labels.(FIELD_DATA_FORMAT_MPLS_XXX) */ 427 uint16 fibre_chan_outer; /* Header 428 type.(FIELD_DATA_FORMAT_FIBRE_CHAN_XXX) */ 429 uint16 fibre_chan_inner; /* Header 430 type.(FIELD_DATA_FORMAT_FIBRE_CHAN_XXX) */ 431 uint32 flags; /* Flags. (FIELD_DATA_FORMAT_F_XXX) */ 432 } bcm_field_data_packet_format_t; 433 434 /* Packet colors. */ 435 #define BCM_FIELD_COLOR_PRESERVE 0 436 #define BCM_FIELD_COLOR_GREEN 1 437 #define BCM_FIELD_COLOR_YELLOW 2 438 #define BCM_FIELD_COLOR_RED 3 439 #define BCM_FIELD_COLOR_BLACK 4 440 441 /* Stat OAM LM Index. */ 442 typedef enum bcm_field_stat_oam_lm_index_e { 443 bcmFieldStatOamLmIndex0 = 0, /* Stat oam lm index 0 */ 444 bcmFieldStatOamLmIndex1 = 1, /* Stat oam lm index 1 */ 445 bcmFieldStatOamLmIndex2 = 2, /* Stat oam lm index 2 */ 446 bcmFieldStatOamLmIndexInvalid = 3, /* Stat oam lm index invalid */ 447 bcmFieldStatOamLmIndexCount = 4 /* Always Last. Not a usable value. */ 448 } bcm_field_stat_oam_lm_index_t; 449 450 #define BCM_FIELD_STAT_OAM_LM_INDEX_STRINGS \ 451 { \ 452 "0", \ 453 "1", \ 454 "2", \ 455 "Invalid" \ 456 } 457 458 /* IPv4 Flags from RFC-791 (for bcm_field_qualify_IpFlags). */ 459 #define BCM_FIELD_IPFLAGS_MF 0x1 /* More Fragments. */ 460 #define BCM_FIELD_IPFLAGS_DF 0x2 /* Don't Fragment. */ 461 #define BCM_FIELD_IPFLAGS_RF 0x4 /* Reserved. */ 462 #define BCM_FIELD_IPFLAGS_MASK 0x7 /* All bits. */ 463 464 /* TCP Control Flags from RFC-793 (for bcm_field_qualify_TcpControl). */ 465 #define BCM_FIELD_TCPCONTROL_FIN 0x01 /* No more data. */ 466 #define BCM_FIELD_TCPCONTROL_SYN 0x02 /* Sync seq numbers. */ 467 #define BCM_FIELD_TCPCONTROL_RST 0x04 /* Reset connection. */ 468 #define BCM_FIELD_TCPCONTROL_PSH 0x08 /* Push. */ 469 #define BCM_FIELD_TCPCONTROL_ACK 0x10 /* Ack field valid. */ 470 #define BCM_FIELD_TCPCONTROL_URG 0x20 /* Urgent field valid. */ 471 #define BCM_FIELD_TCPCONTROL_R40 0x40 /* Reserved. */ 472 #define BCM_FIELD_TCPCONTROL_R80 0x80 /* Reserved. */ 473 #define BCM_FIELD_TCPCONTROL_MASK 0x3f /* All non-reserved bits. */ 474 475 /* L2Mac Info (for bcm_field_qualify_L2MacInfo). */ 476 #define BCM_FIELD_L2MAC_DMAC_MATCH_DIP 0x0001 /* Lower 32b of dmac matches 477 lower 32b of Ipv6 DIP or 478 lower 23b of dmac matches 479 lower 23b of Ipv4 DIP. */ 480 #define BCM_FIELD_L2MAC_SMAC_LT_DMAC 0x0002 /* Source mac address is less 481 than destination mac 482 address. */ 483 #define BCM_FIELD_L2MAC_SMAC_EQ_DMAC 0x0004 /* Source mac address is same 484 as destination mac 485 address. */ 486 #define BCM_FIELD_L2MAC_BCAST_DMAC 0x0008 /* Destination mac address is 487 broadcast. */ 488 #define BCM_FIELD_L2MAC_MCAST_DMAC 0x0010 /* Destination mac address is 489 multicast. */ 490 #define BCM_FIELD_L2MAC_IPMCAST_DMAC 0x0020 /* Destination mac address is 491 IP mutlicast, set when 492 upper 25 bits dmac matches 493 0x01005e for Ipv4 or upper 494 16b of dmac matches 0x3333 495 for Ipv6 */ 496 #define BCM_FIELD_L2MAC_ZERO_SMAC 0x0040 /* Source mac address is 497 zero. */ 498 #define BCM_FIELD_L2MAC_MCAST_SMAC 0x0080 /* Source mac address is 499 multicast. */ 500 501 /* IP Info (for bcm_field_qualify_IpInfo). */ 502 #define BCM_FIELD_IP_HDR_OFFSET_ZERO 0x0001 /* IP Header offset zero */ 503 #define BCM_FIELD_IP_HDR_FLAGS_MF 0x0002 504 #define BCM_FIELD_IP_CHECKSUM_OK 0x0004 505 #define BCM_FIELD_IP_VERSION_ERR 0x0008 /* Error in the IP 506 'version' field value */ 507 #define BCM_FIELD_IP_HDR_SIP_LT_DIP 0x0010 /* Source Ip address is 508 less than destination 509 Ip address. */ 510 #define BCM_FIELD_IP_HDR_SIP_EQ_DIP 0x0020 /* Source Ip address is 511 equal to destination 512 Ip address. */ 513 #define BCM_FIELD_IP_HDR_BCAST_DIP 0x0040 /* Destination Ip address 514 is broadcast. */ 515 #define BCM_FIELD_IP_HDR_MCAST_DIP 0x0080 /* Destination Ip address 516 is multicast. */ 517 #define BCM_FIELD_IP_HDR_RESERVED_MCAST_DIP 0x0100 /* Destination Ip address 518 is reserved multicast. */ 519 #define BCM_FIELD_IP_HDR_BFD_LOOPBACK_DIP 0x0200 /* Destionation Ip 520 address is BFD 521 loopback. */ 522 #define BCM_FIELD_IP_HDR_FRAG_FLAGS_OFFSET_ONE 0x0400 /* IP Fragment flags 523 offset is one */ 524 #define BCM_FIELD_IP_ERROR_DIP 0x0800 /* Destination IP address 525 have error. */ 526 #define BCM_FIELD_IP_ERROR_SIP 0x1000 /* Source Ip address have 527 error. */ 528 #define BCM_FIELD_IP_SPECIAL_DIP 0x2000 /* Destination Ip address 529 is special */ 530 #define BCM_FIELD_IP_SMALL_PKT 0x4000 /* Ip packet is small. */ 531 #define BCM_FIELD_IP_BIG_PKT 0x8000 /* IP packet is big. */ 532 #define BCM_FIELD_IP_VERSION_V4 0x010000 /* IP packet is v4. */ 533 #define BCM_FIELD_IP_VERSION_V6 0x020000 /* IP packet is v6. */ 534 #define BCM_FIELD_IP_HDR_FRAG_FLAGS_OFFSET_NON_ZERO 0x040000 /* IP Fragment flags 535 offset is nonzero */ 536 537 /* L4 Header Info (for bcm_field_qualify_L4Info). */ 538 #define BCM_FIELD_L4_HDR_SRCPORT_LT_1024 0x0001 /* L4 Source Port is less 539 than 1024. */ 540 #define BCM_FIELD_L4_HDR_SRCPORT_EQ_DSTPORT 0x0002 /* L4 source port is 541 equal to destination 542 port number. */ 543 #define BCM_FIELD_L4_TCP_SEQUENCE_ZERO 0x0004 /* TCP Sequence is zeo. */ 544 545 /* L2 learn commands (for bcm_field_qualify_L2LearnCommands). */ 546 #define BCM_FIELD_L2_LEARN_COMMANDS_DO_NOT_LEARN 0x0001 /* Do not learn L2 MACSA */ 547 #define BCM_FIELD_L2_LEARN_COMMANDS_LEARN_MACSA 0x0002 /* L2 MACSA is learnt. */ 548 #define BCM_FIELD_L2_LEARN_COMMANDS_RELEARN_MACSA 0x0004 /* L2 MACSA is relearnt. */ 549 #define BCM_FIELD_L2_LEARN_COMMANDS_UNRESOLVED_MACSA 0x0008 /* L2 MACSA is 550 unresolved. */ 551 552 /* Tunnel termination status (for bcm_field_qualify_TunnelTermStatus). */ 553 #define BCM_FIELD_TUNNEL_TERM 0x0001 /* Tunnel terminated 554 packet. */ 555 #define BCM_FIELD_TUNNEL_TERM_L3 0x0002 /* L3 Tunnel terminated. */ 556 #define BCM_FIELD_TUNNEL_TERM_L2 0x0004 /* L2 Tunnel terminated. */ 557 #define BCM_FIELD_TUNNEL_TERM_TRIGGER_SECOND_PASS 0x0008 /* Tunnel termination 558 trigger for second 559 pass. */ 560 561 /* Loopback Header Flags (for bcm_field_qualify_LoopbackHdrFlags). */ 562 #define BCM_FIELD_LOOPBACK_VISIBILITY_PKT 0x0001 /* Loopback packet is a 563 visibility packet. */ 564 #define BCM_FIELD_LOOPBACK_ROUTED_PKT 0x0002 /* Loopback packet is a 565 routed packet. */ 566 #define BCM_FIELD_LOOPBACK_RECIRCLE_HDR_PKT 0x0004 /* Loopback packet is a 567 egress NIH header 568 packet. */ 569 570 /* Packet Status (for bcm_field_qualify_PacketStatus). */ 571 #define BCM_FIELD_PKT_STATUS_MCASTKNOWN 0x0001 /* Known multicast 572 packet. */ 573 #define BCM_FIELD_PKT_STATUS_MCASTUNKNOWN 0x0002 /* Unknown multicast 574 packet. */ 575 #define BCM_FIELD_PKT_STATUS_UCASTUNKNOWN 0x0004 /* Unknown unicast 576 packet. */ 577 #define BCM_FIELD_PKT_STATUS_BCAST 0x0008 /* Broadcast packet. */ 578 579 /* Packet Forwarding Status (for bcm_field_qualify_ForwardingStatus). */ 580 #define BCM_FIELD_FORWARDING_STATUS_L2_SWITCHED 0x0001 /* L2 switched packet. */ 581 #define BCM_FIELD_FORWARDING_STATUS_L3_UNICAST_ROUTED 0x0002 /* L3 unicast routed 582 packet. */ 583 #define BCM_FIELD_FORWARDING_STATUS_IPMC_ROUTED 0x0004 /* IPMC forwarded packet. */ 584 585 /* 586 * CML flag (for bcmFieldActionCmlFlagsNew and 587 * bcmFieldActionCmlFlagsMove). 588 */ 589 #define BCM_FIELD_CML_FLAG_DROP 0x0001 /* Set CML flag as Drop. */ 590 #define BCM_FIELD_CML_FLAG_COPY_TO_CPU 0x0002 /* Set CML flag as Copy to 591 CPU. */ 592 #define BCM_FIELD_CML_FLAG_LEARN 0x0004 /* Set CML flag as Learn. */ 593 594 /* Packet Forwarding Status (for bcm_field_qualify_ForwardingEligible). */ 595 #define BCM_FIELD_FORWARDING_ELIGIBLE_L3_UNICAST_ROUTE 0x0001 /* Packet is eligible for 596 L3 unitcast flow. */ 597 #define BCM_FIELD_FORWARDING_ELIGIBLE_IPMC_ROUTE 0x0002 /* Packet is eligible for 598 IPMC flow. */ 599 #define BCM_FIELD_FORWARDING_ELIGIBLE_L2_SWITCH 0x0004 /* Packet is eligible for 600 L2 switching. */ 601 #define BCM_FIELD_FORWARDING_ELIGIBLE_IPMC_FALLBACK_TO_L2_SWITCH 0x0008 /* Packet eligible for 602 ipmc flow fallen back 603 to l2 switching. */ 604 605 /* Packet L3 check(for bcm_field_qualify_L3Check). */ 606 #define BCM_FIELD_L3_CHECK_GOOD_L3_UNICAST_ROUTE_PKT 0x0001 /* Packet is eligible for 607 L3 unicast routing as 608 there is no IP header 609 or TTL error. */ 610 #define BCM_FIELD_L3_CHECK_GOOD_IPMC_PKT 0x0002 /* Packet is eligible for 611 ipmc routing as there 612 is no IP header error. */ 613 #define BCM_FIELD_L3_CHECK_PIM_FAIL 0x0004 /* PIMSIM packet 614 interface check failed */ 615 616 /* Mirror Packet Type (for bcm_field_qualify_MirrorPktType). */ 617 #define BCM_FIELD_MIRROR_PKT_TYPE_INGRESS 0x0001 /* Ingress mirror packet. */ 618 #define BCM_FIELD_MIRROR_PKT_TYPE_COPY 0x0002 /* Mirror copy. */ 619 #define BCM_FIELD_MIRROR_PKT_TYPE_COPY_TRUNCATE 0x0004 /* Mirror copy truncate 620 enable. */ 621 622 /* PTP packet control (for bcm_field_qualify_PtpPktCtrl). */ 623 #define BCM_FIELD_PTP_MATCH_ETHERTYPE_OR_UDP_DEST_PORT 0x0001 /* 1588 packet matching 624 either EtherType or 625 udp dest port. */ 626 #define BCM_FIELD_PTP_MATCH_UDP_DEST_PORT 0x0002 /* 1588 packet matching 627 UDP dest port. */ 628 629 /* 630 * Field Qualifier VlanFormat (for bcm_field_qualify_VlanFormat). 631 * Used to qualify packets based on vlan tag format. 632 */ 633 #define BCM_FIELD_VLAN_FORMAT_UNTAGGED 0x0 /* Untagged packet 634 present. */ 635 #define BCM_FIELD_VLAN_FORMAT_OUTER_TAGGED 0x1 /* Outer tag present. */ 636 #define BCM_FIELD_VLAN_FORMAT_INNER_TAGGED 0x2 /* Inner tag present. */ 637 #define BCM_FIELD_VLAN_FORMAT_OUTER_TAGGED_VID_ZERO 0x4 /* Outer tag present and 638 vlan id is zero. */ 639 #define BCM_FIELD_VLAN_FORMAT_INNER_TAGGED_VID_ZERO 0x8 /* Inner tag present and 640 vlan id is zero. */ 641 642 /* Packet Resolution Values (for bcm_field_qualify_PacketRes). */ 643 #define BCM_FIELD_PKT_RES_UNKNOWN 0x0 /* No resolution. */ 644 #define BCM_FIELD_PKT_RES_CONTROL 0x1 /* Ethernet control 645 (8808). */ 646 #define BCM_FIELD_PKT_RES_BPDU 0x2 /* L2 cache BPDU bit. */ 647 #define BCM_FIELD_PKT_RES_L2BC 0x3 /* L2 broadcast. */ 648 #define BCM_FIELD_PKT_RES_L2UC 0x4 /* L2 unicast. */ 649 #define BCM_FIELD_PKT_RES_L2UNKNOWN 0x5 /* Unknown L2 dest (DLF). */ 650 #define BCM_FIELD_PKT_RES_L3MCUNKNOWN 0x6 /* Unknown L3 multicast. */ 651 #define BCM_FIELD_PKT_RES_L3MCKNOWN 0x7 /* Known L3 multicast. */ 652 #define BCM_FIELD_PKT_RES_L2MCKNOWN 0x8 /* Known L2 multicast. */ 653 #define BCM_FIELD_PKT_RES_L2MCUNKNOWN 0x9 /* Unknown L2 multicast. */ 654 #define BCM_FIELD_PKT_RES_L3UCKNOWN 0xa /* Known L3 unicast. */ 655 #define BCM_FIELD_PKT_RES_L3UCUNKNOWN 0xb /* Unknown L3 unicast. */ 656 #define BCM_FIELD_PKT_RES_MPLSKNOWN 0xc /* Known MPLS packet . */ 657 #define BCM_FIELD_PKT_RES_MPLSL3KNOWN 0xd /* Known MPLS L3 packet. */ 658 #define BCM_FIELD_PKT_RES_MPLSL2KNOWN 0xe /* Known MPLS L2 packet. */ 659 #define BCM_FIELD_PKT_RES_MPLSUNKNOWN 0xf /* Unknown MPLS packet . */ 660 #define BCM_FIELD_PKT_RES_MIMKNOWN 0x10 /* Known MIM packet. */ 661 #define BCM_FIELD_PKT_RES_MIMUNKNOWN 0x11 /* Unknown MIM packet . */ 662 #define BCM_FIELD_PKT_RES_TRILLKNOWN 0x12 /* Known TRILL packet */ 663 #define BCM_FIELD_PKT_RES_TRILLUNKNOWN 0x13 /* Unknown TRILL packet */ 664 #define BCM_FIELD_PKT_RES_NIVKNOWN 0x14 /* Known NIV packet */ 665 #define BCM_FIELD_PKT_RES_NIVUNKNOWN 0x15 /* Unknown NIV packet */ 666 #define BCM_FIELD_PKT_RES_OAM 0x16 /* Packet hit OAM CFM 667 LMEP */ 668 #define BCM_FIELD_PKT_RES_BFD 0x17 /* Packet hit BFD session */ 669 #define BCM_FIELD_PKT_RES_ICNM 0x18 /* Congestion 670 notification */ 671 #define BCM_FIELD_PKT_RES_IEEE1588 0x19 /* IEEE 1588 packet */ 672 #define BCM_FIELD_PKT_RES_L2GREKNOWN 0x1a /* Known L2 GRE packet */ 673 #define BCM_FIELD_PKT_RES_VXLANKNOWN 0x1b /* Known VxLan Packet */ 674 #define BCM_FIELD_PKT_RES_FCOEKNOWN 0x1c /* Known FCoE Packet */ 675 #define BCM_FIELD_PKT_RES_FCOEUNKNOWN 0x1d /* Unknown FCoE Packet */ 676 #define BCM_FIELD_PKT_RES_MPLSMCKNOWN 0x1e /* Known MPLS Multicast 677 packet */ 678 #define BCM_FIELD_PKT_RES_PIMBIDIRUNKNOWN 0x1f /* Unknown PIM-BIDIR 679 packet from DF */ 680 #define BCM_FIELD_PKT_RES_L2_ANY 0x20 /* To match any L2 681 packet. It combines 682 the resolution types 683 BCM_FIELD_PKT_RES_L2BC, 684 BCM_FIELD_PKT_RES_L2UC, 685 BCM_FIELD_PKT_RES_L2UNKNOWN, 686 BCM_FIELD_PKT_RES_L2MCKNOWN 687 and 688 BCM_FIELD_PKT_RES_L2MCUNKNOWN */ 689 #define BCM_FIELD_PKT_RES_L2MC_ANY 0x21 /* To match any L2 MC 690 packet. This options 691 is to combine the 692 resolution types 693 BCM_FIELD_PKT_RES_L2MCKNOW 694 and 695 BCM_FIELD_PKT_RES_L2MCUNKNOWN */ 696 #define BCM_FIELD_PKT_RES_TRILL_ANY 0x22 /* To match any Trill 697 packet. This option is 698 to combine the 699 resolution types 700 BCM_FIELD_PKT_RES_TRILLKNOWN 701 and 702 BCM_FIELD_PKT_RES_TRILLUNKNOWN */ 703 #define BCM_FIELD_PKT_RES_NIV_ANY 0x23 /* To match any NIV 704 packet. This option is 705 to combine resolution 706 types 707 BCM_FIELD_PKT_RES_NIVKNOWN 708 and 709 BCM_FIELD_PKT_RES_NIVUNKNOWN */ 710 #define BCM_FIELD_PKT_RES_MPLS_ANY 0x24 /* To match any FCOE 711 packet. This option is 712 to combine resolution 713 types 714 BCM_FIELD_PKT_RES_MPLSKNOWN, 715 BCM_FIELD_PKT_RES_MPLSL3KNOWN, 716 BCM_FIELD_PKT_RES_MPLSL2KNOWN, 717 BCM_FIELD_PKT_RES_MPLSUNKNOWN 718 and 719 BCM_FIELD_PKT_RES_MPLSMCKNOWN */ 720 #define BCM_FIELD_PKT_RES_MIM_ANY 0x25 /* To match any MIM 721 packet. This option is 722 to combine resolution 723 types 724 BCM_FIELD_PKT_RES_MIMKNOWN 725 and 726 BCM_FIELD_PKT_RES_MIMUNKNOWN */ 727 #define BCM_FIELD_PKT_RES_FCOE_ANY 0x26 /* To match any FCOE 728 packet. This option is 729 to combine resolution 730 types 731 BCM_FIELD_PKT_RES_FCOEKNOWN 732 and 733 BCM_FIELD_PKT_RES_FCOEUNKNOWN */ 734 #define BCM_FIELD_PKT_RES_L3_ANY 0x27 /* To match any L3 735 packet. This option is 736 to combine resolution 737 types 738 BCM_FIELD_PKT_RES_L3MCKNOWN, 739 BCM_FIELD_PKT_RES_L3MCUNKNOWN, 740 BCM_FIELD_PKT_RES_L3KNOWN 741 and 742 BCM_FIELD_PKT_RES_L3UNKNOWN */ 743 #define BCM_FIELD_PKT_RES_LAST (BCM_FIELD_PKT_RES_L3_ANY) /* Must be >= highest 744 valid 745 BCM_FIELD_PKT_RES_* */ 746 747 /* Packet Resolution Values (for bcm_field_qualify_PacketRes). */ 748 #define BCM_FIELD_FWD_PKT_RES_MC 0x0 /* Multicast. */ 749 #define BCM_FIELD_FWD_PKT_RES_L3BC 0x1 /* L3 broadcast. */ 750 #define BCM_FIELD_FWD_PKT_RES_L3UC 0x2 /* L3 unicast. */ 751 #define BCM_FIELD_FWD_PKT_RES_L2BC 0x4 /* L2 broadcast. */ 752 #define BCM_FIELD_FWD_PKT_RES_L2UC 0x8 /* L2 unicast. */ 753 754 /* 755 * Vlan Translation Lookup status values (for 756 * bcm_field_qualify_VlanTranslationHit) 757 */ 758 #define BCM_FIELD_VXLT_LOOKUP_STATUS_NO_HIT 0x0 /* No Hit */ 759 #define BCM_FIELD_VXLT_LOOKUP_STATUS_HIT 0x1 /* Hit(First or Second 760 Hit) */ 761 #define BCM_FIELD_VXLT_LOOKUP_STATUS_FIRST_HIT 0x2 /* First Hit */ 762 #define BCM_FIELD_VXLT_LOOKUP_STATUS_SECOND_HIT 0x4 /* Second Hit */ 763 764 /* 765 * Mpls Forwarding Label action values (for 766 * bcm_field_qualify_MplsForwardingLabelAction) 767 */ 768 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_INVALID 0x0 /* Invalid */ 769 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_PHP 0x2 /* PHP */ 770 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_SWAP 0x3 /* SWAP the MPLS label */ 771 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP 0x4 /* POP the MPLS label. 772 This action is valid 773 for MPLS scenarios 774 which supports more 775 than 3 label lookups 776 through loopback. This 777 was added in TR3 which 778 supports upto 6 label 779 lookup. So 3 labels 780 can be POPed in first 781 pass and using this 782 action encoding in 783 IFP, we can catch such 784 packets. But for other 785 devices which supports 786 only 2 or 3 label 787 lookups, this encoding 788 is not valid. */ 789 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_L2_VPN 0x5 /* POP the MPLS label and 790 use L2 VPN */ 791 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_L3_VPN 0x6 /* POP the MPLS label and 792 use L3 VPN */ 793 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_ENTROPY 0x7 /* POP the MPLS label and 794 use Entropy */ 795 796 /* Inband telemetry stat action values */ 797 #define BCM_FIELD_INT_DO_NOT_ADD_STATISTICS 0x0 /* Do not add INT 798 statistics. */ 799 #define BCM_FIELD_INT_QUEUE_BUFFER 0x1 /* Queue buffer usage 800 request. */ 801 #define BCM_FIELD_INT_QUEUE_WATERMARK 0x2 /* Queue watermark 802 request. */ 803 #define BCM_FIELD_INT_POOL_BUFFER_AVAILABLE 0x3 /* Buffer available in 804 pool request. */ 805 #define BCM_FIELD_INT_MIN_BUFFER_AVAILABLE 0x4 /* Minimum buffer 806 available in pool 807 request. */ 808 809 /* 810 * Override trace event action values for action 811 * bcmFieldActionOverrideTraceEvent 812 */ 813 #define BCM_FIELD_TRACE_EVENT_DO_NOT_MIRROR 0x0 /* Override trace do not 814 mirror event */ 815 #define BCM_FIELD_TRACE_EVENT_DO_NOT_COPY_TO_CPU 0x1 /* Override trace do not 816 copy to cpu event */ 817 818 /* 819 * Override trace event action values for action 820 * bcmFieldActionEgressPostOperation 821 */ 822 #define BCM_FIELD_EGRESS_OPR_DEFAULT 0x0 /* Default Egress 823 Operation */ 824 #define BCM_FIELD_EGRESS_OPR_RECIRCLE_HDR_ENABLE 0x1 /* Enable ep nih header 825 for recirculation */ 826 #define BCM_FIELD_EGRESS_OPR_IFA_DELETE 0x2 /* Delete IFA operation */ 827 828 /* Inband telemetry control (for bcm_field_qualify_IntCtrl). */ 829 #define BCM_FIELD_INT_CTRL_INSERT_IFA_RECORD 0x0001 /* Insert IFA recored. */ 830 #define BCM_FIELD_INT_CTRL_DELETE_IFA_TRACE 0x0002 /* Delete IFA trace. */ 831 832 /* FibreChanZoneCheck values (for bcm_field_qualify_FibreChanZoneCheck) */ 833 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_NOT_DONE 0x0 /* Zone Check Did Not 834 Take Place */ 835 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_ALLOW 0x1 /* Allow + Hit */ 836 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_MISS 0x2 /* Miss */ 837 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_DENY 0x3 /* Deny + Hit */ 838 839 /* Module header opcodes (for bcm_field_qualify_MHOpcode). */ 840 #define BCM_FIELD_MHOPCODE_CONTROL 0 841 #define BCM_FIELD_MHOPCODE_UNICAST 1 842 #define BCM_FIELD_MHOPCODE_BROADCAST_DLF 2 843 #define BCM_FIELD_MHOPCODE_MULTICAST 3 844 #define BCM_FIELD_MHOPCODE_IPMULTICAST 4 845 #define BCM_FIELD_MHOPCODE_L2MULTICAST 5 846 847 /* User-defined field maximums. */ 848 #define BCM_FIELD_USER_MAX_UDF_NUM 1 /* UDF0 or UDF1. */ 849 #define BCM_FIELD_USER_MAX_USER_NUM 3 /* Valid range: 0..3 */ 850 #define BCM_FIELD_USER_NUM_UDFS 277 851 #define BCM_FIELD_USER_FIELD_SIZE 4 /* Bytes per user_num. */ 852 #define BCM_FIELD_USER_MAX_LENGTH (1 << 5) /* Number of bits. */ 853 854 /* Meter select parameters. */ 855 #define BCM_FIELD_METER_PEAK 1 856 #define BCM_FIELD_METER_COMMITTED 2 857 858 /* Metering modes for bcmFieldActionMeterConfig param0. */ 859 #define BCM_FIELD_METER_MODE_DEFAULT 0x0 860 #define BCM_FIELD_METER_MODE_FLOW 0x1 861 #define BCM_FIELD_METER_MODE_trTCM_COLOR_BLIND 0x2 862 #define BCM_FIELD_METER_MODE_trTCM_COLOR_AWARE 0x3 863 #define BCM_FIELD_METER_MODE_srTCM_COLOR_BLIND 0x6 864 #define BCM_FIELD_METER_MODE_srTCM_COLOR_AWARE 0x7 865 866 /* Policy options for bcmFieldActionPrioPktNew param1. */ 867 #define BCM_FIELD_SPCP_MARK_MAPPED 0x01 868 #define BCM_FIELD_SPCP_MARK_USE_INNER_PCP 0x02 869 #define BCM_FIELD_SPCP_MARK_USE_OUTER_PCP 0x04 870 #define BCM_FIELD_SPCP_MARK_USE_PORT_DEFAULT 0x08 871 #define BCM_FIELD_SPCP_MARK_MASK 0x0f 872 #define BCM_FIELD_CPCP_MARK_MAPPED 0x10 873 #define BCM_FIELD_CPCP_MARK_USE_INNER_PCP 0x20 874 #define BCM_FIELD_CPCP_MARK_USE_OUTER_PCP 0x40 875 #define BCM_FIELD_CPCP_MARK_USE_PORT_DEFAULT 0x80 876 #define BCM_FIELD_CPCP_MARK_MASK 0xf0 877 878 /* 879 * Policy options for bcmFieldActionInnerVlanNew and 880 * bcmFieldActionOuterVlanNew param1. 881 */ 882 #define BCM_FIELD_TAG_AS_RECEIVED 0x01 883 #define BCM_FIELD_TAG_AS_NORMALIZED 0x02 884 #define BCM_FIELD_TAG_COPY 0x04 885 #define BCM_FIELD_TAG_REMOVE 0x08 886 #define BCM_FIELD_TAG_REPLACE 0x10 887 888 /* 889 * Counter pair modes for bcmFieldActionUpdateCounter 890 * 891 * Specifies increment mode for upper (counter_num=1) and lower 892 * (counter_num=0) counter in the pair. For example: GREEN_YELLOW would 893 * increment the upper counter for green packets and the lower counter 894 * for yellow packets. 895 * 896 * BCM_FIELD_COUNTER_MODE_BYTES can be ORd with any of the other values 897 * to make the counter count bytes instead of packets. 898 */ 899 #define BCM_FIELD_COUNTER_MODE_NO_NO 0x0000 900 #define BCM_FIELD_COUNTER_MODE_NO_YES 0x0001 901 #define BCM_FIELD_COUNTER_MODE_YES_NO 0x0002 902 #define BCM_FIELD_COUNTER_MODE_RED_NOTRED 0x0003 903 #define BCM_FIELD_COUNTER_MODE_GREEN_NOTGREEN 0x0004 904 #define BCM_FIELD_COUNTER_MODE_GREEN_RED 0x0005 905 #define BCM_FIELD_COUNTER_MODE_GREEN_YELLOW 0x0006 906 #define BCM_FIELD_COUNTER_MODE_RED_YELLOW 0x0007 907 #define BCM_FIELD_COUNTER_MODE_BYTES_PACKETS 0x0008 /* Upper counter is 908 bytes; lower counter 909 is packets */ 910 #define BCM_FIELD_COUNTER_MODE_GREEN 0x0010 911 #define BCM_FIELD_COUNTER_MODE_YELLOW 0x0020 912 #define BCM_FIELD_COUNTER_MODE_RED 0x0040 913 #define BCM_FIELD_COUNTER_MODE_ALL 0x0070 914 #define BCM_FIELD_COUNTER_MODE_PACKETS 0x0000 915 #define BCM_FIELD_COUNTER_MODE_BYTES 0x0100 916 #define BCM_FIELD_COUNTER_MODE_DEFAULT BCM_FIELD_COUNTER_MODE_NO_YES 917 918 /* Redirect ECMP hash key selection. */ 919 #define BCM_FIELD_MULTIPATH_HASH_DISABLE 0x0 920 #define BCM_FIELD_MULTIPATH_HASH_DIP 0x1 921 #define BCM_FIELD_MULTIPATH_HASH_SIP 0x2 922 #define BCM_FIELD_MULTIPATH_HASH_SIP_DIP 0x3 923 #define BCM_FIELD_MULTIPATH_HASH_DST_SRC_L4_DIP_SIP 0x4 924 #define BCM_FIELD_MULTIPATH_HASH_SRC_DST_L4_SIP_DIP 0x5 925 #define BCM_FIELD_MULTIPATH_HASH_SRC_L4_SIP 0x6 926 #define BCM_FIELD_MULTIPATH_HASH_DST_L4_DIP 0x7 927 928 /* Filter types for bcmFieldActionFilters. */ 929 #define BCM_FIELD_FILTER_LAG 0x1 /* LAG Filter overrides the 930 rule */ 931 #define BCM_FIELD_FILTER_TAGGED 0x2 /* Tag Framing Filter 932 overrides the rule */ 933 #define BCM_FIELD_FILTER_PORT_MASK 0x4 /* Port Mask Filter overrides 934 the rule */ 935 #define BCM_FIELD_FILTER_STP 0x8 /* STP Filter overrides the 936 rule */ 937 #define BCM_FIELD_FILTER_EAP 0x10 /* EAP Filter overrides the 938 rule */ 939 #define BCM_FIELD_FILTER_INGRESS_VLAN 0x20 /* Ingress Vlan Filter 940 overrides the rule */ 941 #define BCM_FIELD_FILTER_EGRESS_VLAN 0x40 /* Egress Vlan Filter 942 overrides the rule */ 943 #define BCM_FIELD_FILTER_SA 0x80 /* Source address Filter 944 overrides the rule */ 945 #define BCM_FIELD_FILTER_SA_DISABLED 0x100 /* Disable SA filtering */ 946 #define BCM_FIELD_FILTER_BYPASS_ALL 0x200 /* Bypass all filtering */ 947 #define BCM_FIELD_FILTER_ALL 0x3ff 948 949 /* Policer use options for bcmFieldActionUsePolicerResult param0. */ 950 #define BCM_FIELD_USE_POLICER_RESULT_INGRESS 0x01 /* Use policer result on 951 ingress */ 952 #define BCM_FIELD_USE_POLICER_RESULT_EGRESS 0x02 /* Use policer result on 953 egress */ 954 955 /* 956 * Global policer selection flag. 957 * 958 * If policer ID passed to (bcm_field_entry_policer_attach) API 959 * corresponds to global meters, below flag can be used to configure 960 * highest priority to lookup table policer with respect to the priority 961 * of the policers in other tables. 962 */ 963 #define BCM_FIELD_POLICER_GLOBAL_METER_USE_STAGE_LOOKUP_ACTION 0x01 /* Use lookup stage 964 policer */ 965 966 /* Flags for bcm_field_qualify_HiGigDoNotFlags. */ 967 #define BCM_FIELD_HIGIG_DONOT_MODIFY 0x1 /* Packet should be sent to 968 the destination port 969 unmodified. This flag can 970 be used only for Egress 971 packet modification on 972 Virtual Ports and is not 973 applicable to Offload 974 Engines. */ 975 #define BCM_FIELD_HIGIG_DONOT_LEARN 0x2 /* Do not perform MAC 976 learning. */ 977 978 /* Flags for bcmFieldQualifyHiGigOffloadEngineVxltStatus. */ 979 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_NOT_ATTEMPTED 0x0 /* VLAN Translation was 980 not attempted on this 981 packet. */ 982 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_NOT_DONE 0x1 /* VLAN Translation was 983 allowed by the 984 redirect rule, but 985 there was no 986 translation to be done 987 i.e. no vxt-related 988 packet modifications 989 were done */ 990 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_DONE 0x2 /* VLAN translation was 991 allowed by the 992 redirect rule, and 993 VLAN translation was 994 done. */ 995 996 /* Flags for bcmFieldQualifyHiGigOffloadEngineDeferredFlags. */ 997 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_DROP 0x01 /* Defer Drop Action. */ 998 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_CHANGE_PKT_PRIORITY 0x02 /* Defer Change in Packet 999 Priority. */ 1000 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_CHANGE_DSCP 0x04 /* Defer Change in DSCP 1001 value. */ 1002 1003 /* Flags for bcmFieldQualifyHiGigLabelType. */ 1004 #define BCM_FIELD_HIGIG_LABEL_TYPE_HIGIGPLUS_OVERLAY 0x00 /* Original HiGig+ 1005 Overlay. */ 1006 #define BCM_FIELD_HIGIG_LABEL_TYPE_INGRESS_MODPORT 0x01 /* The module ID and port 1007 number through which 1008 the packet originally 1009 entered the system. */ 1010 #define BCM_FIELD_HIGIG_LABEL_TYPE_MIRROR_CLASSIFICATION_TAG 0x02 /* An opaque field 1011 generated by the ACL 1012 that triggers this 1013 packet. Can be used to 1014 assist the MTP in 1015 packet classification. */ 1016 #define BCM_FIELD_HIGIG_LABEL_TYPE_QTAG 0x03 /* QTAG (Used to pass 1017 QTAG when usage using 1018 EH is not desirable) */ 1019 1020 /* 1021 * Flags for bcmFieldQualifyHiGigPreserveFlags and 1022 * bcmFieldQualifyHiGigVpPreserveFlags. 1023 */ 1024 #define BCM_FIELD_HIGIG_PRESERVE_DSCP 0x1 /* Do not change DSCP of the 1025 outermost IP header. */ 1026 #define BCM_FIELD_HIGIG_PRESERVE_DOT1P 0x2 /* Do not change 802.1p/CFI 1027 bits of the outermost L2 1028 header. */ 1029 1030 /* Flags for bcmFieldQualifyHiGigMirrorOrSwitchPkt. */ 1031 #define BCM_FIELD_HIGIG_MIRROR 0x01 /* Mirror and Switch. */ 1032 1033 /* 1034 * Flags for 1035 * bcmFieldQualifyHiGig3Flags/bcmFieldQualifyLoopbackHiGig3Flags. 1036 */ 1037 #define BCM_FIELD_HIGIG3_SWITCH_GENERATED 0x0001 /* HiGig3 packet with 1038 switch generated flag 1039 set. */ 1040 #define BCM_FIELD_HIGIG3_LAG_FAILOVER 0x0002 /* HiGig3 packet with LAG 1041 failover flag set. */ 1042 #define BCM_FIELD_HIGIG3_DO_NOT_LEARN 0x0004 /* HiGig3 packet with do 1043 not learn flag set. */ 1044 1045 /* 1046 * Various header format extension values for qualification / 1047 * preselection 1048 */ 1049 typedef enum bcm_field_header_format_extension_e { 1050 bcmFieldHeaderFormatExtensionDontCare = 0, /* Select packets with any header format 1051 extension */ 1052 bcmFieldHeaderFormatExtensionFtmh = 1, /* Select only packets which are FTMH */ 1053 bcmFieldHeaderFormatExtensionIpUdpGtp1 = 2, /* Select only packets which UDP/IP and 1054 GPRS Tunneling Protocol (GTP1) */ 1055 bcmFieldHeaderFormatExtensionIpUdpGtp2 = 3, /* Select only packets which UDP/IP and 1056 GPRS Tunneling Protocol (GTP2) */ 1057 bcmFieldHeaderFormatExtensionFcoe = 4, /* Select only packets which are Fiber 1058 Channel Over Ethernet */ 1059 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3 = 5, /* 'Non_L4' stands for IPV4 which is 1060 neither UDP nor TCP. Hit is marked 1061 when parser speculates that, 1062 following MPLS, the next protocol is 1063 IPV4 (on the third header) but not L4 */ 1064 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3 = 6, /* 'Non_L4' stands for IPV6 which is 1065 neither UDP nor TCP. Hit is marked 1066 when parser speculates that, 1067 following MPLS, the next protocol is 1068 IPV6 (on the third header) but not L4 */ 1069 bcmFieldHeaderFormatExtensionMplsL4IPV4isH3 = 7, /* 'L4' stands for UDP/TCP. Hit is 1070 marked when parser speculates that, 1071 following MPLS, the next protocol is 1072 L4 of IPV4 (on the third header) */ 1073 bcmFieldHeaderFormatExtensionMplsL4IPV6isH3 = 8, /* 'L4' stands for UDP/TCP. Hit is 1074 marked when parser speculates that, 1075 following MPLS, the next protocol is 1076 L4 of IPV6 (on the third header) */ 1077 bcmFieldHeaderFormatExtensionMplsETHisH3 = 9, /* Hit is marked when parser speculates 1078 that, following MPLS, the next 1079 protocol is Ethernet (on the third 1080 header) */ 1081 bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH4 = 10, /* 'Non_L4' stands for IPV4 which is 1082 neither UDP nor TCP. Hit is marked 1083 when parser speculates that, 1084 following MPLS, the next protocol is 1085 Ethernet followed by IPV4 (on the 1086 fourth header) but not L4 */ 1087 bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH4 = 11, /* 'Non_L4' stands for IPV4 which is 1088 neither UDP nor TCP. Hit is marked 1089 when parser speculates that, 1090 following MPLS, the next protocol is 1091 Ethernet followed by IPV6 (on the 1092 fourth header) but not L4 */ 1093 bcmFieldHeaderFormatExtensionMplsL4IPV4isH4 = 12, /* 'L4' stands for UDP/TCP. Hit is 1094 marked when parser speculates that, 1095 following MPLS, the next protocol is 1096 Ethernet followed by L4 of IPV4 (on 1097 the fourth header) */ 1098 bcmFieldHeaderFormatExtensionMplsL4IPV6isH4 = 13, /* 'L4' stands for UDP/TCP. Hit is 1099 marked when parser speculates that, 1100 following MPLS, the next protocol is 1101 Ethernet followed by L4 of IPV6 (on 1102 the fourth header) */ 1103 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsAny = 14, /* Group combining 1104 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3 1105 & 1106 bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH4 */ 1107 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsAny = 15, /* Group combining 1108 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3 1109 & 1110 bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH4 */ 1111 bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH3 = 16, /* Group combining 1112 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3 1113 & 1114 bcmFieldHeaderFormatExtensionMplsL4IPV4isH3 */ 1115 bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH3 = 17, /* Group combining 1116 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3 1117 & 1118 bcmFieldHeaderFormatExtensionMplsL4IPV6isH3 */ 1119 bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH5 = 18, /* 'Non_L4' stands for IPV4 which is 1120 neither UDP nor TCP. Hit is marked 1121 when parser speculates that, 1122 following MPLS, the next protocol is 1123 Ethernet followed by IPV4 (on the 1124 fifth header) but not L4 */ 1125 bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH5 = 19, /* 'Non_L4' stands for IPV4 which is 1126 neither UDP nor TCP. Hit is marked 1127 when parser speculates that, 1128 following MPLS, the next protocol is 1129 Ethernet followed by IPV6 (on the 1130 fifth header) but not L4 */ 1131 bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH5 = 20, /* Group combining 1132 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH5 1133 & 1134 bcmFieldHeaderFormatExtensionMplsL4IPV4isH5 */ 1135 bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH5 = 21, /* Group combining 1136 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH5 1137 & 1138 bcmFieldHeaderFormatExtensionMplsL4IPV6isH5 */ 1139 bcmFieldHeaderFormatExtensionMplsETHisH4 = 22, /* Hit is marked when parser speculates 1140 that, following MPLS, the next 1141 protocol is Ethernet (on the fourth 1142 header) */ 1143 bcmFieldHeaderFormatExtensionMplsAnyEthIsH3H4 = 23, /* Group combining 1144 bcmFieldHeaderFormatExtensionMplsETHisH3 1145 & 1146 bcmFieldHeaderFormatExtensionMplsETHisH4 */ 1147 bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH4 = 24, /* Group combining 1148 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH4 1149 & 1150 bcmFieldHeaderFormatExtensionMplsL4IPV4isH4 */ 1151 bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH4 = 25, /* Group combining 1152 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH4 1153 & 1154 bcmFieldHeaderFormatExtensionMplsL4IPV6isH4 */ 1155 bcmFieldHeaderFormatExtensionMplsL4IPV4isH5 = 26, /* 'L4' stands for UDP/TCP. Hit is 1156 marked when parser speculates that, 1157 following MPLS, the next protocol is 1158 Ethernet followed by L4 of IPV4 (on 1159 the fifth header). */ 1160 bcmFieldHeaderFormatExtensionMplsL4IPV6isH5 = 27, /* 'L4' stands for UDP/TCP. Hit is 1161 marked when parser speculates that, 1162 following MPLS, the next protocol is 1163 Ethernet followed by L4 of IPV6 (on 1164 the fifth header). */ 1165 bcmFieldHeaderFormatExtensionCount = 28 /* Always Last. Not a usable value. */ 1166 } bcm_field_header_format_extension_t; 1167 1168 #define BCM_FIELD_HEADER_FORMAT_EXTENSION \ 1169 { \ 1170 "DontCare", \ 1171 "Ftmh", \ 1172 "IpUdpGtp1", \ 1173 "IpUdpGtp2", \ 1174 "Fcoe", \ 1175 "MplsNonL4IPV4IsH3", \ 1176 "MplsNonL4IPV6IsH3", \ 1177 "MplsL4IPV4isH3", \ 1178 "MplsL4IPV6isH3", \ 1179 "MplsETHisH3", \ 1180 "MplsNonL4IPV4isH4", \ 1181 "MplsNonL4IPV6isH4", \ 1182 "MplsL4IPV4isH4", \ 1183 "MplsL4IPV6isH4", \ 1184 "MplsNonL4IPV4IsAny", \ 1185 "MplsNonL4IPV6IsAny", \ 1186 "MplsAnyL4IPV4IsH3", \ 1187 "MplsAnyL4IPV6IsH3", \ 1188 "MplsNonL4IPV4isH5", \ 1189 "MplsNonL4IPV6isH5", \ 1190 "MplsAnyL4IPV4IsH5", \ 1191 "MplsAnyL4IPV6IsH5", \ 1192 "MplsETHisH4", \ 1193 "MplsAnyEthIsH3H4", \ 1194 "MplsAnyL4IPV4IsH4", \ 1195 "MplsAnyL4IPV6IsH4", \ 1196 "MplsL4IPV4isH5", \ 1197 "MplsL4IPV6isH5" \ 1198 } 1199 1200 /* Various packet header formats for qualification / preselection */ 1201 typedef enum bcm_field_header_format_e { 1202 bcmFieldHeaderFormatL2 = 0, /* L2 packet (headers = L2) */ 1203 bcmFieldHeaderFormatIp4 = 1, /* IPv4 packet (headers = L2, IPv4, L4) */ 1204 bcmFieldHeaderFormatIp4AnyL2L3 = 2, /* Any IPv4 packet (headers = L2, IPv4, 1205 Any) */ 1206 bcmFieldHeaderFormatIp6 = 3, /* IPv6 packet (headers = L2, IPv6, L4) */ 1207 bcmFieldHeaderFormatIp6AnyL2L3 = 4, /* Any IPv6 packet (headers = L2, IPv6, 1208 Any) */ 1209 bcmFieldHeaderFormatMplsLabel1 = 5, /* MPLS packet with one label (headers = 1210 L2, MPLS (1 label), L4) */ 1211 bcmFieldHeaderFormatMplsLabel1AnyL2L3 = 6, /* Any MPLS packet with one label 1212 (headers = L2, MPLS (1 label), Any) */ 1213 bcmFieldHeaderFormatMplsLabel2 = 7, /* MPLS packet with two labels (headers 1214 = L2, MPLS (2 labels), L4) */ 1215 bcmFieldHeaderFormatMplsLabel2AnyL2L3 = 8, /* Any MPLS packet with two labels 1216 (headers = L2, MPLS (2 labels), Any) */ 1217 bcmFieldHeaderFormatMplsLabel3 = 9, /* MPLS packet with three labels 1218 (headers = L2, MPLS (3 labels), L4) */ 1219 bcmFieldHeaderFormatMplsLabel3AnyL2L3 = 10, /* Any MPLS packet with three labels 1220 (headers = L2, MPLS (3 labels), Any) */ 1221 bcmFieldHeaderFormatTrill = 11, /* Trill packet (headers = L2, Trill) */ 1222 bcmFieldHeaderFormatEthEth = 12, /* L2 over L2 packet (headers = L2, L2) */ 1223 bcmFieldHeaderFormatEthTrillEth = 13, /* L2 over Trill packet (headers = L2, 1224 Trill, L2) */ 1225 bcmFieldHeaderFormatIp4Ip4 = 14, /* IPv4 over IPv4 packet (headers = L2, 1226 IPv4, IPv4) */ 1227 bcmFieldHeaderFormatIp6Ip4 = 15, /* IPv6 over IPv4 packet (headers = L2, 1228 IPv4, IPv6) */ 1229 bcmFieldHeaderFormatIp4MplsLabel1 = 16, /* IPv4 over MPLS with one label 1230 (headers = L2, MPLS (one label), 1231 IPv4) */ 1232 bcmFieldHeaderFormatIp4MplsLabel2 = 17, /* IPv4 over MPLS with two labels 1233 (headers = L2, MPLS (two labels), 1234 IPv4) */ 1235 bcmFieldHeaderFormatIp4MplsLabel3 = 18, /* IPv4 over MPLS with three labels 1236 (headers = L2, MPLS (three labels), 1237 IPv4) */ 1238 bcmFieldHeaderFormatIp6MplsLabel1 = 19, /* IPv6 over MPLS with one label 1239 (headers = L2, MPLS (one label), 1240 IPv6) */ 1241 bcmFieldHeaderFormatIp6MplsLabel2 = 20, /* IPv6 over MPLS with two labels 1242 (headers = L2, MPLS (two labels), 1243 IPv6) */ 1244 bcmFieldHeaderFormatIp6MplsLabel3 = 21, /* IPv6 over MPLS with three labels 1245 (headers = L2, MPLS (three labels), 1246 IPv6) */ 1247 bcmFieldHeaderFormatEthMplsLabel1 = 22, /* L2 over MPLS with one label (headers 1248 = L2, MPLS (one label), L2) */ 1249 bcmFieldHeaderFormatEthMplsLabel2 = 23, /* L2 over MPLS with two labels (headers 1250 = L2, MPLS (two labels), L2) */ 1251 bcmFieldHeaderFormatEthMplsLabel3 = 24, /* L2 over MPLS with three labels 1252 (headers = L2, MPLS (three labels), 1253 L2) */ 1254 bcmFieldHeaderFormatIp4EthMplsLabel1 = 25, /* IPv4 over L2 over MPLS with one label 1255 (headers = L2, MPLS (one label), L2, 1256 IPv4) */ 1257 bcmFieldHeaderFormatIp4EthMplsLabel2 = 26, /* IPv4 over L2 over MPLS with two 1258 labels (headers = L2, MPLS (two 1259 labels), L2, IPv4) */ 1260 bcmFieldHeaderFormatIp4EthMplsLabel3 = 27, /* IPv4 over L2 over MPLS with three 1261 labels (headers = L2, MPLS (three 1262 labels), L2, IPv4) */ 1263 bcmFieldHeaderFormatTrafficManagement = 28, /* Traffic Management packet injected by 1264 an external Packet Processor */ 1265 bcmFieldHeaderFormatEthIp4Eth = 29, /* L2 over IPv4 over L2 packet (headers 1266 = L2, IPv4, L2) */ 1267 bcmFieldHeaderFormatFCoE = 30, /* FCoE packet */ 1268 bcmFieldHeaderFormatMplsAnyLabelAnyL2L3 = 31, /* Any Number of MPLS labels 1/2/3 and 1269 any L2/L3 */ 1270 bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV4IsH3 = 32, /* 'Non_L4' stands for IPV4 which is 1271 neither UDP nor TCP. Hit is marked 1272 when parser detected that, after MPLS 1273 termination, the next protocol is 1274 IPV4 (on the third header) but not 1275 L4. */ 1276 bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV6IsH3 = 33, /* 'Non_L4' stands for IPV6 which is 1277 neither UDP nor TCP. Hit is marked 1278 when parser detected that, after MPLS 1279 termination, the next protocol is 1280 IPV6 (on the third header) but not 1281 L4. */ 1282 bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV4IsH3 = 34, /* 'L4' stands for UDP/TCP. Hit is 1283 marked when parser detected that, 1284 after MPLS termination, the next 1285 protocol is L4 of IPV4 (on the third 1286 header). */ 1287 bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV6IsH3 = 35, /* 'L4' stands for UDP/TCP. Hit is 1288 marked when parser detected that, 1289 after MPLS termination, the next 1290 protocol is L4 of IPV6 (on the third 1291 header). */ 1292 bcmFieldHeaderFormatAfterTunnelTerminatedEthIsH3 = 36, /* Hit is marked when parser detected 1293 that, after MPLS termination, the 1294 next protocol Ethernet (on the third 1295 header). */ 1296 bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV4IsH4ETHisH3 = 37, /* 'Non_L4' stands for IPV4 which is 1297 neither UDP nor TCP. Hit is marked 1298 when parser detected that, after MPLS 1299 termination, the next protocol is 1300 Ethernet followed by IPV4 (on the 1301 fourth header) but not L4. */ 1302 bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV6IsH4ETHisH3 = 38, /* 'Non_L4' stands for IPV4 which is 1303 neither UDP nor TCP. Hit is marked 1304 when parser detected that, after MPLS 1305 termination, the next protocol is 1306 Ethernet followed by IPV6 (on the 1307 fourth header) but not L4. */ 1308 bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV4IsH4ETHisH3 = 39, /* 'L4' stands for UDP/TCP. Hit is 1309 marked when parser detected that, 1310 after MPLS termination, the next 1311 protocol is Ethernet followed by L4 1312 of IPV4 (on the fourth header). */ 1313 bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV6IsH4ETHisH3 = 40, /* 'L4' stands for UDP/TCP. Hit is 1314 marked when parser detected that, 1315 after MPLS termination, the next 1316 protocol is Ethernet followed by L4 1317 of IPV6 (on the fourth header). */ 1318 bcmFieldHeaderFormatMpls = 41, /* MPLS packet (Packet containing MPLS) */ 1319 bcmFieldHeaderFormatIp4Ip6 = 42, /* IPv4 over IPv6 packet (headers = L2, 1320 IPv4, IPv6) */ 1321 bcmFieldHeaderFormatIp6Ip6 = 43, /* IPv6 over IPv6 packet (headers = L2, 1322 IPv6, IPv6) */ 1323 bcmFieldHeaderFormatFCoENoEncap = 44, /* FCoE packet with standard header only 1324 (no extended header) */ 1325 bcmFieldHeaderFormatCount = 45 /* Always Last. Not a usable value. */ 1326 } bcm_field_header_format_t; 1327 1328 #define BCM_FIELD_HEADER_FORMAT \ 1329 { \ 1330 "L2", \ 1331 "Ip4", \ 1332 "Ip4AnyL2L3", \ 1333 "Ip6", \ 1334 "Ip6AnyL2L3", \ 1335 "MplsLabel1", \ 1336 "MplsLabel1AnyL2L3", \ 1337 "MplsLabel2", \ 1338 "MplsLabel2AnyL2L3", \ 1339 "MplsLabel3", \ 1340 "MplsLabel3AnyL2L3", \ 1341 "Trill", \ 1342 "EthEth", \ 1343 "EthTrillEth", \ 1344 "Ip4Ip4", \ 1345 "Ip6Ip4", \ 1346 "Ip4MplsLabel1", \ 1347 "Ip4MplsLabel2", \ 1348 "Ip4MplsLabel3", \ 1349 "Ip6MplsLabel1", \ 1350 "Ip6MplsLabel2", \ 1351 "Ip6MplsLabel3", \ 1352 "EthMplsLabel1", \ 1353 "EthMplsLabel2", \ 1354 "EthMplsLabel3", \ 1355 "Ip4EthMplsLabel1", \ 1356 "Ip4EthMplsLabel2", \ 1357 "Ip4EthMplsLabel3", \ 1358 "TrafficManagement", \ 1359 "EthIp4Eth", \ 1360 "FCoE", \ 1361 "MplsAnyLabelAnyL2L3", \ 1362 "AfterTunnelTerminatedNonL4IPV4IsH3", \ 1363 "AfterTunnelTerminatedNonL4IPV6IsH3", \ 1364 "AfterTunnelTerminatedL4IPV4IsH3", \ 1365 "AfterTunnelTerminatedL4IPV6IsH3", \ 1366 "AfterTunnelTerminatedEthIsH3", \ 1367 "AfterTunnelTerminatedNonL4IPV4IsH4ETHisH3", \ 1368 "AfterTunnelTerminatedNonL4IPV6IsH4ETHisH3", \ 1369 "AfterTunnelTerminatedL4IPV4IsH4ETHisH3", \ 1370 "AfterTunnelTerminatedL4IPV6IsH4ETHisH3", \ 1371 "Mpls", \ 1372 "Ip4Ip6", \ 1373 "Ip6Ip6", \ 1374 "FCoENoEncap" \ 1375 } 1376 1377 /* 1378 * Specifies a set of possible header formats for matching, for use with 1379 * bcmFieldQualifyHeaderFormatSet. 1380 */ 1381 typedef struct bcm_field_header_format_set_s { 1382 SHR_BITDCL w[_SHR_BITDCLSIZE(bcmFieldHeaderFormatCount)]; 1383 } bcm_field_header_format_set_t; 1384 1385 #define BCM_FIELD_HEADER_FORMAT_SET_INIT(hfset) \ 1386 sal_memset(&(hfset), 0, sizeof(bcm_field_header_format_set_t)) 1387 1388 #define BCM_FIELD_HEADER_FORMAT_SET_ADD(hfset, hf) SHR_BITSET(((hfset).w), (hf)) 1389 1390 #define BCM_FIELD_HEADER_FORMAT_SET_REMOVE(hfset, hf) SHR_BITCLR(((hfset).w), (hf)) 1391 1392 #define BCM_FIELD_HEADER_FORMAT_SET_TEST(hfset, hf) SHR_BITGET(((hfset).w), (hf)) 1393 1394 /* Opaque handle to a field action priority. */ 1395 typedef uint32 bcm_field_action_priority_t; 1396 1397 /* 1398 * Structure to indicate selected FEM id, identifying it by array to 1399 * clarify priority between FEMs abd FESes. 1400 */ 1401 typedef struct bcm_field_array_n_position_s { 1402 uint8 array_id; /* Index of the FES/FEM array in the stage. */ 1403 uint16 fem_position_in_array; /* Position of FES/FEM (by FES/FEM ID) 1404 within the FES/FEM array. */ 1405 } bcm_field_array_n_position_t; 1406 1407 /* 1408 * Field Qualifiers 1409 * 1410 * Field qualifiers are collected into qualifier sets (qsets), which are 1411 * used to allocate field groups. 1412 * 1413 * Note: These are in order of their bit width. Do not change the order 1414 * or the field select code algorithm for wide-mode will get slower. 1415 */ 1416 typedef enum bcm_field_qualify_e { 1417 bcmFieldQualifySrcIp6 = 0, /* Source IPv6 Address. */ 1418 bcmFieldQualifyDstIp6 = 1, /* Destination IPv6 Address. */ 1419 bcmFieldQualifySrcIp6High = 2, /* Src. IPv6 Address (High/Upper 64 1420 bits). */ 1421 bcmFieldQualifyDstIp6High = 3, /* Dest IPv6 Address (High/Upper 64 1422 bits). */ 1423 bcmFieldQualifySrcIp6Low = 4, /* Src. IPv6 Address (Low/Lower 64 1424 bits). */ 1425 bcmFieldQualifyDstIp6Low = 5, /* Dest IPv6 Address (Low/Lower 64 1426 bits). */ 1427 bcmFieldQualifySrcMac = 6, /* Source L2 MAC Address. */ 1428 bcmFieldQualifyDstMac = 7, /* Destination L2 MAC Address. */ 1429 bcmFieldQualifySnap = 8, /* 40: SNAP Header. */ 1430 bcmFieldQualifySrcIp = 9, /* Source IPv4 Address. */ 1431 bcmFieldQualifyDstIp = 10, /* Destination IPv4 Address. */ 1432 bcmFieldQualifyLlc = 11, /* 24: LLC Header. */ 1433 bcmFieldQualifyInPort = 12, /* Single Input Port. */ 1434 bcmFieldQualifyInPorts = 13, /* Input Port Bitmap. */ 1435 bcmFieldQualifyOutPorts = 14, /* Output Port Bitmap. */ 1436 bcmFieldQualifyDrop = 15, /* Packet is flagged to be dropped . */ 1437 bcmFieldQualifyIp6FlowLabel = 16, /* IPv6 Flow Label. */ 1438 bcmFieldQualifyOuterVlan = 17, /* Outer VLAN. */ 1439 bcmFieldQualifyOuterVlanId = 18, /* Outer VLAN Id. */ 1440 bcmFieldQualifyOuterVlanPri = 19, /* Outer VLAN priority. */ 1441 bcmFieldQualifyOuterVlanCfi = 20, /* Outer VLAN Cfi. */ 1442 bcmFieldQualifyInnerVlan = 21, /* Inner VLAN (double-tagged pkts 1443 only). */ 1444 bcmFieldQualifyInnerVlanId = 22, /* Inner VLAN Id. */ 1445 bcmFieldQualifyInnerVlanPri = 23, /* Inner VLAN priority. */ 1446 bcmFieldQualifyInnerVlanCfi = 24, /* Inner VLAN Cfi. */ 1447 bcmFieldQualifyLookupStatus = 25, /* DEPRECATED Lookup status 1448 (BCM_FIELD_LOOKUP_xxx). */ 1449 bcmFieldQualifyRangeCheck = 26, /* TCP/UDP Port Range Check Results. */ 1450 bcmFieldQualifyL4PortRangeCheck = bcmFieldQualifyRangeCheck, /* TCP/UDP Port Range Check Results */ 1451 bcmFieldQualifyL4SrcPort = 27, /* TCP/UDP Source Port. */ 1452 bcmFieldQualifyL4DstPort = 28, /* TCP/UDP Destination Port. */ 1453 bcmFieldQualifyEtherType = 29, /* Ethernet Type. */ 1454 bcmFieldQualifyIpProtocol = 30, /* IP Protocol Field. */ 1455 bcmFieldQualifyIp6NextHeader = bcmFieldQualifyIpProtocol, /* Match on Ipv6 last extension 1456 header(or protocol type). */ 1457 bcmFieldQualifyDSCP = 31, /* Diffserv Code Point. */ 1458 bcmFieldQualifyTos = bcmFieldQualifyDSCP, /* Tos - same as DSCP. */ 1459 bcmFieldQualifyIp6TrafficClass = bcmFieldQualifyDSCP, /* IPv6 Traffic Class. */ 1460 bcmFieldQualifyTtl = 32, /* Time To Live/Hop Limit. */ 1461 bcmFieldQualifyIp6HopLimit = bcmFieldQualifyTtl, /* IPv6 Hop Limit. */ 1462 bcmFieldQualifySrcModid = 33, /* Source Module ID (deprecated). */ 1463 bcmFieldQualifySrcPortTgid = 34, /* Source Port/Trunk Group ID 1464 (deprecated). */ 1465 bcmFieldQualifySrcPort = 35, /* Source Module ID and Port . */ 1466 bcmFieldQualifySrcTrunk = 36, /* Source Trunk Group ID . */ 1467 bcmFieldQualifySrcTrunkMemberGport = 37, /* Source Trunk Member Port . */ 1468 bcmFieldQualifyDstModid = 38, /* Destination Module ID (deprecated). */ 1469 bcmFieldQualifyDstPortTgid = 39, /* Dest Port/Trunk Group ID 1470 (deprecated. */ 1471 bcmFieldQualifyDstPort = 40, /* Destination Module ID and Port . */ 1472 bcmFieldQualifyDstTrunk = 41, /* Destination Trunk Group ID . */ 1473 bcmFieldQualifyTcpControl = 42, /* TCP Control Flags. */ 1474 bcmFieldQualifyPacketRes = 43, /* Pkt resolution 1475 (BCM_FIELD_PKT_RES_xxx). */ 1476 bcmFieldQualifyPacketFormat = 44, /* DEPRECATED Packet Format 1477 (BCM_FIELD_PKT_FMT_xxx). */ 1478 bcmFieldQualifySrcClassL2 = 45, /* Source Class based on L2 lookup 1479 result. */ 1480 bcmFieldQualifySrcClassL3 = 46, /* Source Class based on L3 lookup 1481 result. */ 1482 bcmFieldQualifySrcClassField = 47, /* Source Class based on 1483 bcmFieldStageLookup result. */ 1484 bcmFieldQualifyDstClassL2 = 48, /* Destination Class based on L2 lookup 1485 result. */ 1486 bcmFieldQualifyDstClassL3 = 49, /* Destination Class based on L3 lookup 1487 result. */ 1488 bcmFieldQualifyDstClassField = 50, /* Destination Class based on 1489 bcmFieldStageLookup result. */ 1490 bcmFieldQualifyIpInfo = 51, /* IP Information (BCM_FIELD_IP_xxx). */ 1491 bcmFieldQualifyIpProtocolCommon = 52, /* 3: Common IP protocols. */ 1492 bcmFieldQualifyMHOpcode = 53, /* Module Header Opcode. */ 1493 bcmFieldQualifyIpFlags = 54, /* IPv4 Flags. */ 1494 bcmFieldQualifyInnerTpid = 55, /* 2: Inner VLAN TPID. */ 1495 bcmFieldQualifyOuterTpid = 56, /* 2: Outer VLAN TPID. */ 1496 bcmFieldQualifyInnerIpType = 57, /* Inner ip header IP Type 1497 (bcmFieldIpTypeXXX). */ 1498 bcmFieldQualifyTunnelType = 58, /* TunnelType (bcmFieldTunnelXXX). */ 1499 bcmFieldQualifyLoopbackType = 59, /* LoopbackType 1500 (bcmFieldLoopbackTypeXXX). */ 1501 bcmFieldQualifyLoopback = 60, /* Packets forwarded through loopback 1502 interface. */ 1503 bcmFieldQualifyIpType = 61, /* IP Type (bcmFieldIpTypeXXX). */ 1504 bcmFieldQualifyForwardingType = 62, /* Packet forwarding type 1505 (bcmFieldForwardingTypeXXX). */ 1506 bcmFieldQualifyDecap = 63, /* Decapsulation occurred. */ 1507 bcmFieldQualifyHiGig = 64, /* HiGig packet. */ 1508 bcmFieldQualifyHiGigProxy = 65, /* HiGig proxy processing is enabled. */ 1509 bcmFieldQualifyDstHiGig = 66, /* Packet being forwarded to higig 1510 port. */ 1511 bcmFieldQualifyStage = 67, /* Field Processor pipeline stage. */ 1512 bcmFieldQualifyStageIngress = 68, /* Field Processor pipeline ingress 1513 stage. */ 1514 bcmFieldQualifyStageIngressSecurity = 69, /* Field Processor ingress security 1515 stage. */ 1516 bcmFieldQualifyStageIngressQoS = 70, /* Field Processor ingress QOS stage. */ 1517 bcmFieldQualifyStageLookup = 71, /* Field Processor pipeline lookup 1518 stage. */ 1519 bcmFieldQualifyStageEgress = 72, /* Field Processor pipeline egress 1520 stage. */ 1521 bcmFieldQualifyStageEgressSecurity = 73, /* Field Processor egress security 1522 stage. */ 1523 bcmFieldQualifyStageExternal = 74, /* Field Processor Rules in External 1524 slice. */ 1525 bcmFieldQualifyDeprecated75 = 75, /* Deprecated 75 */ 1526 bcmFieldQualifyDeprecated76 = 76, /* Deprecated 76 */ 1527 bcmFieldQualifyTcpSequenceZero = 77, /* Sequence number = 0. */ 1528 bcmFieldQualifyTcpHeaderSize = 78, /* TCP Header Size. */ 1529 bcmFieldQualifyInterfaceClassL2 = 79, /* Vlan Class Id. */ 1530 bcmFieldQualifyInterfaceClassL3 = 80, /* L3 Interface Class Id. */ 1531 bcmFieldQualifyInterfaceClassPort = 81, /* Port Class Id. */ 1532 bcmFieldQualifyL3Routable = 82, /* L3 routable bit for FB2. */ 1533 bcmFieldQualifyIpFrag = 83, /* IP Fragment info. */ 1534 bcmFieldQualifyVrf = 84, /* VRF Id for FB 2. */ 1535 bcmFieldQualifyL3Ingress = 85, /* L3 ingress interface. */ 1536 bcmFieldQualifyOutPort = 86, /* Single Output Port. */ 1537 bcmFieldQualifyIp4 = 87, /* Qualify IpType == IPv4Any. */ 1538 bcmFieldQualifyIp6 = 88, /* Qualify IpType == Ipv6Any. */ 1539 bcmFieldQualifyL2Format = 89, /* Qualify on L2 header format. */ 1540 bcmFieldQualifyVlanFormat = 90, /* Qualify on vlan tag format. */ 1541 bcmFieldQualifyTranslatedVlanFormat = 91, /* Qualify on translated vlan tag 1542 format. */ 1543 bcmFieldQualifyExtensionHeaderType = 92, /* Qualify on Next Header Field in 1544 First Extension Header. */ 1545 bcmFieldQualifyExtensionHeaderSubCode = 93, /* Qualify on First byte after 1546 extension header length field. */ 1547 bcmFieldQualifyExtensionHeader2Type = 94, /* Qualify on Next Header Field in 1548 Second Extension Header. */ 1549 bcmFieldQualifyL4Ports = 95, /* Four bytes after L3 header are 1550 available. */ 1551 bcmFieldQualifyMirrorCopy = 96, /* Qualify mirrored traffic. */ 1552 bcmFieldQualifyTunnelTerminated = 97, /* Qualify tunnel terminated traffic. */ 1553 bcmFieldQualifyMplsTerminated = 98, /* Qualify mpls terminated traffic. */ 1554 bcmFieldQualifyInnerSrcIp = 99, /* Inner ip header source IPv4 Address. */ 1555 bcmFieldQualifyInnerDstIp = 100, /* Inner ip header destination IPv4 1556 Address. */ 1557 bcmFieldQualifyInnerSrcIp6 = 101, /* Inner ip header source IPv6 Address. */ 1558 bcmFieldQualifyInnerDstIp6 = 102, /* Inner ip header destination IPv6 1559 Address. */ 1560 bcmFieldQualifyInnerSrcIp6High = 103, /* Inner ip header Src. IPv6 Address 1561 (High/Upper 64 bits). */ 1562 bcmFieldQualifyInnerDstIp6High = 104, /* Inner ip header Dest IPv6 Address 1563 (High/Upper 64 bits). */ 1564 bcmFieldQualifyInnerTtl = 105, /* Inner ip header time To Live/Hop 1565 Limit. */ 1566 bcmFieldQualifyInnerIp6HopLimit = bcmFieldQualifyInnerTtl, /* Inner IPv6 header Hop Limit. */ 1567 bcmFieldQualifyInnerTos = 106, /* Inner ip header diffserv Code Point. */ 1568 bcmFieldQualifyInnerDSCP = bcmFieldQualifyInnerTos, /* Inner DSCP */ 1569 bcmFieldQualifyInnerIp6TrafficClass = bcmFieldQualifyInnerTos, /* Inner IPv6 header Traffic Class. */ 1570 bcmFieldQualifyInnerIpProtocol = 107, /* Inner ip header IP Protocol Field. */ 1571 bcmFieldQualifyInnerIp6NextHeader = bcmFieldQualifyInnerIpProtocol, /* Inner Ip6 header Next Header/IP 1572 Protocol. */ 1573 bcmFieldQualifyInnerIpFrag = 108, /* Inner ip header IP Fragment info. */ 1574 bcmFieldQualifyVlanTranslationHit = 109, /* Vlan Translation table hit. */ 1575 bcmFieldQualifyForwardingVlanValid = 110, /* Forwarding vlan is valid. */ 1576 bcmFieldQualifyIngressStpState = 111, /* Ingress Vlan STG STP state. */ 1577 bcmFieldQualifyL2SrcHit = 112, /* L2 Source lookup success. */ 1578 bcmFieldQualifyL2SrcStatic = 113, /* L2 Source is static entry. */ 1579 bcmFieldQualifyL2DestHit = 114, /* L2 Destination lookup success. */ 1580 bcmFieldQualifyL2StationMove = 115, /* L2 Source port mismatch. */ 1581 bcmFieldQualifyL2CacheHit = 116, /* L2 Destination cache lookup success. */ 1582 bcmFieldQualifyL3SrcHostHit = 117, /* L3 Source lookup host table hit. */ 1583 bcmFieldQualifyL3DestHostHit = 118, /* L3 Destination lookup host table 1584 hit. */ 1585 bcmFieldQualifyL3DestRouteHit = 119, /* L3 Destination lookup route table 1586 hit. */ 1587 bcmFieldQualifyIpmcStarGroupHit = 120, /* L3 Multicast lookup (Star,Group) 1588 hit. */ 1589 bcmFieldQualifyDosAttack = 121, /* Denial of Service attack frame. */ 1590 bcmFieldQualifyDeprecated122 = 122, /* Deprecated 122 */ 1591 bcmFieldQualifyClassId = 123, /* internal use only. */ 1592 bcmFieldQualifyDeprecated124 = 124, /* Deprecated 124 */ 1593 bcmFieldQualifyIcmpTypeCode = 125, /* internal use only. */ 1594 bcmFieldQualifyDeprecated126 = 126, /* Deprecated 126 */ 1595 bcmFieldQualifyInnerIpProtocolCommon = 127, /* Inner ip header IP Protocol Common 1596 Field. */ 1597 bcmFieldQualifyInnerL4SrcPort = 128, /* TCP/UDP Source Port. */ 1598 bcmFieldQualifyInnerL4DstPort = 129, /* TCP/UDP Destination Port. */ 1599 bcmFieldQualifyInnerIp6FlowLabel = 130, /* Inner IPv6 header Flow Label. */ 1600 bcmFieldQualifyDstL3Egress = 131, /* Egress Object id. */ 1601 bcmFieldQualifyDstMulticastGroup = 132, /* Multicast Group id. */ 1602 bcmFieldQualifySrcMplsGport = 133, /* Source Mpls gport. */ 1603 bcmFieldQualifyDstMplsGport = 134, /* Destination Mpls gport. */ 1604 bcmFieldQualifySrcMimGport = 135, /* Source Mim gport. */ 1605 bcmFieldQualifyDstMimGport = 136, /* Destination Mim gport. */ 1606 bcmFieldQualifySrcWlanGport = 137, /* Source Wlan gport. */ 1607 bcmFieldQualifyDstWlanGport = 138, /* Destination Wlan gport. */ 1608 bcmFieldQualifySrcModPortGport = 139, /* Source module/port pair. */ 1609 bcmFieldQualifySrcModuleGport = 140, /* Source module. */ 1610 bcmFieldQualifyColor = 141, /* Packet color. */ 1611 bcmFieldQualifyIntPriority = 142, /* Internal priority. */ 1612 bcmFieldQualifyForwardingVlanId = 143, /* Forwarding vlan id. */ 1613 bcmFieldQualifyVpn = 144, /* Vpn id. */ 1614 bcmFieldQualifyFlowId = 145, /* Flow id. */ 1615 bcmFieldQualifyInVPort = 146, /* Ingress virtual port id. */ 1616 bcmFieldQualifyOutVPort = 147, /* Egress virtual port id. */ 1617 bcmFieldQualifyFibreChanOuter = 148, /* Outer Fibre Channel header type. */ 1618 bcmFieldQualifyFibreChanInner = 149, /* Inner Fibre Channel header type. */ 1619 bcmFieldQualifyVnTag = 150, /* NIV VN tag. */ 1620 bcmFieldQualifyCnTag = 151, /* QCN CN tag. */ 1621 bcmFieldQualifyFabricQueueTag = 152, /* Fabric queue tag. */ 1622 bcmFieldQualifyMyStationHit = 153, /* When RIOT is not enabled or not 1623 supported, qualifies on L2 tunnel 1624 termination lookup or Routing hit 1625 status (default). When RIOT is 1626 supported and enabled, qualifies on 1627 L2 underlay tunnel termination lookup 1628 hit status. */ 1629 bcmFieldQualifyDstMultipath = 154, /* Destination Multipath ID. */ 1630 bcmFieldQualifyL2PayloadFirstEightBytes = 155, /* First eight bytes of L2 Payload. */ 1631 bcmFieldQualifySrcVirtualPortValid = 156, /* Source Virtual Port is valid. */ 1632 bcmFieldQualifyDstL3EgressNextHops = 157, /* Consecutive L3 Egress Next hops. */ 1633 bcmFieldQualifyRecoverableDrop = 158, /* Recoverable drop indication. */ 1634 bcmFieldQualifyRepCopy = 159, /* Externally-replicated copy. */ 1635 bcmFieldQualifyIpTunnelHit = 160, /* IP tunnel lookup hit. */ 1636 bcmFieldQualifyMplsLabel1Hit = 161, /* MPLS label 1 lookup hit. */ 1637 bcmFieldQualifyTrillEgressRbridgeHit = 162, /* TRILL egress Rbridge lookup hit. */ 1638 bcmFieldQualifyL2GreSrcIpHit = 163, /* Layer 2 GRE source IP address lookup 1639 hit. */ 1640 bcmFieldQualifyMimSrcGportHit = 164, /* MiM source port lookup hit. */ 1641 bcmFieldQualifyMplsLabel2Hit = 165, /* MPLS label 2 lookup hit. */ 1642 bcmFieldQualifyTrillIngressRbridgeHit = 166, /* TRILL ingress Rbridge lookup hit. */ 1643 bcmFieldQualifyL2GreVfiHit = 167, /* Layer 2 GRE VFI lookup hit. */ 1644 bcmFieldQualifyMimVfiHit = 168, /* MiM VFI lookup hit. */ 1645 bcmFieldQualifyGenericAssociatedChannelLabelValid = 169, /* MPLS GAL valid. */ 1646 bcmFieldQualifyRouterAlertLabelValid = 170, /* MPLS RAL valid. */ 1647 bcmFieldQualifyDstIpLocal = 171, /* Dest IP is local. */ 1648 bcmFieldQualifyNormalizeIpAddrs = 172, /* Normalize IP addresses. */ 1649 bcmFieldQualifyNormalizeMacAddrs = 173, /* Normalize MAC addresses. */ 1650 bcmFieldQualifyIpAddrsNormalized = 174, /* IP addresses were normalized. */ 1651 bcmFieldQualifyMacAddrsNormalized = 175, /* MAC addresses were normalized. */ 1652 bcmFieldQualifyMplsForwardingLabel = 176, /* MPLS forwarding label. */ 1653 bcmFieldQualifyMplsForwardingLabelTtl = 177, /* TTL field of MPLS forwarding label. */ 1654 bcmFieldQualifyMplsForwardingLabelBos = 178, /* BOS field of MPLS forwarding label. */ 1655 bcmFieldQualifyMplsForwardingLabelExp = 179, /* EXP field of MPLS forwarding label. */ 1656 bcmFieldQualifyMplsForwardingLabelId = 180, /* ID field of MPLS forwarding label. */ 1657 bcmFieldQualifyMplsControlWord = 181, /* MPLS control word. */ 1658 bcmFieldQualifyRtag7AHashUpper = 182, /* Upper half of RTAG7 hash A result. */ 1659 bcmFieldQualifyRtag7AHashLower = 183, /* Lower half of RTAG7 hash A result. */ 1660 bcmFieldQualifyRtag7BHashUpper = 184, /* Upper half of RTAG7 hash B result. */ 1661 bcmFieldQualifyRtag7BHashLower = 185, /* Lower half of RTAG7 hash B result. */ 1662 bcmFieldQualifyMplsForwardingLabelAction = 186, /* MPLS forwarding label action. */ 1663 bcmFieldQualifyMplsControlWordValid = 187, /* MPLS control word valid. */ 1664 bcmFieldQualifyEgressClass = 188, /* Class assigned by next hop */ 1665 bcmFieldQualifyEgressClassL3Interface = 189, /* Class assigned by egress interface */ 1666 bcmFieldQualifyEgressClassTrill = 190, /* Class assigned by egress TRILL */ 1667 bcmFieldQualifyEgressClassWlan = 191, /* Class assigned by egress WLAN */ 1668 bcmFieldQualifyEgressClassL2Gre = 192, /* Class assigned by egress L2 GRE */ 1669 bcmFieldQualifyLlidValue = 193, /* LLID value (2 bytes) in preamble. */ 1670 bcmFieldQualifyCpuQueue = 194, /* CPU COS Queue value. */ 1671 bcmFieldQualifyMpls = 195, /* Qualify on MPLS packets */ 1672 bcmFieldQualifySrcGport = 196, /* Source module/port pair or 1673 MPLS/MiM/WLAN/Niv/Vlan port. */ 1674 bcmFieldQualifyHeaderFormat = 197, /* Qualify on header format */ 1675 bcmFieldQualifyHeaderFormatSet = 198, /* Qualify on header format set */ 1676 bcmFieldQualifyL2Learn = 199, /* Set if L2 learning is enabled */ 1677 bcmFieldQualifyPortOrientation = 200, /* Orientation in a Hub-Spoke topology 1678 (Hub or Spoke) */ 1679 bcmFieldQualifyEcnValue = 201, /* ECN Value */ 1680 bcmFieldQualifyRxTrapCode = 202, /* Rx Trap Id */ 1681 bcmFieldQualifyPtch = 203, /* Opaque attribute field of the 1682 Injected packets. Part of the PTCH 1683 header in 88650 */ 1684 bcmFieldQualifyMplsBos = 204, /* Qualify on packets whose header 1685 parsing reached the MPLS BoS label */ 1686 bcmFieldQualifyRxTrapData = 205, /* Rx Trap Data */ 1687 bcmFieldQualifyPolicerIntPrio = 206, /* Internal priority for the policer */ 1688 bcmFieldQualifyPacketTerminatedBytes = 207, /* Number of bytes terminated */ 1689 bcmFieldQualifyBypassFilter = 208, /* Qualify packets bypassing any 1690 filtering */ 1691 bcmFieldQualifyReplicantAny = 209, /* Qualify any Multicast packets */ 1692 bcmFieldQualifyReplicantFirst = 210, /* First-replication copy of the packet */ 1693 bcmFieldQualifyTrillEgressRbridge = 211, /* Egress RBridge Nickname */ 1694 bcmFieldQualifyISid = 212, /* I-SID (MAC-in-MAC lookup-id) */ 1695 bcmFieldQualifyInterfaceClassProcessingPort = 213, /* Packet-processing Port Class ID */ 1696 bcmFieldQualifyDstRpfGport = 214, /* RPF destination (gport) for the RPF 1697 Check */ 1698 bcmFieldQualifyTrunkHashResult = 215, /* Trunk Hash Result (i.e., the 1699 Load-balancing Key) */ 1700 bcmFieldQualifyDhcp = 216, /* Qualify DHCP packets */ 1701 bcmFieldQualifySnoopCopy = 217, /* Snooped traffic */ 1702 bcmFieldQualifyForwardCopy = 218, /* Forwarded traffic */ 1703 bcmFieldQualifyInterfaceClassVPort = 219, /* Virtual Port Interface Class ID */ 1704 bcmFieldQualifyVPortRangeCheck = 220, /* Virtual Port Range Check Results */ 1705 bcmFieldQualifyPacketLengthRangeCheck = 221, /* Packet length Range Check Results */ 1706 bcmFieldQualifyStageIngressVlanTranslation = 222, /* VLAN Translation stage */ 1707 bcmFieldQualifyStageIngressTunnelTerminated = 223, /* Tunnel termination stage */ 1708 bcmFieldQualifyStageIngressMplsTerminated = 224, /* MPLS Termination stage */ 1709 bcmFieldQualifyStageIngressIpTunnel = 225, /* IP tunnel termination stage */ 1710 bcmFieldQualifyStageIngressL2Src = 226, /* L2 Source lookup stage */ 1711 bcmFieldQualifyStageIngressL2Dest = 227, /* L2 Destination lookup stage */ 1712 bcmFieldQualifyStageIngressL3SrcRoute = 228, /* L3 Source Route lookup stage */ 1713 bcmFieldQualifyStageIngressL3DestRoute = 229, /* L3 Destination Route lookup stage */ 1714 bcmFieldQualifyStageIngressIpmc = 230, /* IP Multicast lookup stage */ 1715 bcmFieldQualifyTunnelTerminatedHit = 231, /* Tunnel termination hit */ 1716 bcmFieldQualifyMplsTerminatedHit = 232, /* MPLS Termination hit */ 1717 bcmFieldQualifyL3SrcRouteHit = 233, /* L3 Source Route lookup hit */ 1718 bcmFieldQualifyIpmcHit = 234, /* IP Multicast lookup hit */ 1719 bcmFieldQualifyVlanTranslationValue = 235, /* VLAN Translation lookup value */ 1720 bcmFieldQualifyTunnelTerminatedValue = 236, /* Tunnel Termination lookup value */ 1721 bcmFieldQualifyMplsTerminatedValue = 237, /* MPLS Termination lookup value */ 1722 bcmFieldQualifyIpTunnelValue = 238, /* IP Tunnel Termination lookup value */ 1723 bcmFieldQualifyL2SrcValue = 239, /* L2 Source lookup value */ 1724 bcmFieldQualifyL2DestValue = 240, /* L2 Destination lookup value */ 1725 bcmFieldQualifyL3SrcRouteValue = 241, /* L3 Source lookup value */ 1726 bcmFieldQualifyL3DestRouteValue = 242, /* L3 Destination lookup value */ 1727 bcmFieldQualifyIpmcValue = 243, /* IP Multicast lookup value */ 1728 bcmFieldQualifyLearnSrcMac = 244, /* MAC Source Address learnt */ 1729 bcmFieldQualifyLearnVlan = 245, /* Vlan learnt */ 1730 bcmFieldQualifyLearnSrcPort = 246, /* Source Port learnt */ 1731 bcmFieldQualifyPacketSize = 247, /* Packet size in Bytes. */ 1732 bcmFieldQualifyInnerSrcMac = 248, /* Inner Source L2 MAC Address. */ 1733 bcmFieldQualifyInnerDstMac = 249, /* Inner Destination L2 MAC Address. */ 1734 bcmFieldQualifyInnerEtherType = 250, /* Inner Ethernet Type */ 1735 bcmFieldQualifyMplsLabel1 = 251, /* MPLS Label 1 */ 1736 bcmFieldQualifyMplsLabel1Ttl = 252, /* TTL field of the first MPLS Label */ 1737 bcmFieldQualifyMplsLabel1Bos = 253, /* BoS field of the first MPLS Label */ 1738 bcmFieldQualifyMplsLabel1Exp = 254, /* Exp field of the first MPLS Label */ 1739 bcmFieldQualifyMplsLabel1Id = 255, /* ID field of the first MPLS Label */ 1740 bcmFieldQualifyMplsLabel2 = 256, /* MPLS Label 2 */ 1741 bcmFieldQualifyMplsLabel2Ttl = 257, /* TTL field of the second MPLS Label */ 1742 bcmFieldQualifyMplsLabel2Bos = 258, /* BoS field of the second MPLS Label */ 1743 bcmFieldQualifyMplsLabel2Exp = 259, /* Exp field of the second MPLS Label */ 1744 bcmFieldQualifyMplsLabel2Id = 260, /* ID field of the second MPLS Label */ 1745 bcmFieldQualifyMplsLabel3 = 261, /* MPLS Label 3 */ 1746 bcmFieldQualifyMplsLabel3Ttl = 262, /* TTL field of the third MPLS Label */ 1747 bcmFieldQualifyMplsLabel3Bos = 263, /* BoS field of the third MPLS Label */ 1748 bcmFieldQualifyMplsLabel3Exp = 264, /* Exp field of the third MPLS Label */ 1749 bcmFieldQualifyMplsLabel3Id = 265, /* ID field of the third MPLS Label */ 1750 bcmFieldQualifyCascadedKeyValue = 266, /* Value of key cascaded from prior 1751 group in cascade */ 1752 bcmFieldQualifyMplsOuterLabelPop = 267, /* Qualifies MPLS Outer Label Popped 1753 Packets */ 1754 bcmFieldQualifyMplsStationHitTunnelUnterminated = 268, /* Qualifies Mpls Station Hit Tunnel 1755 Unterminated Packets */ 1756 bcmFieldQualifyIngressClassField = 269, /* Class Id assigned for packet by 1757 Ingress Stage */ 1758 bcmFieldQualifyIngressInterfaceClassPort = 270, /* Class Id assigned for packet based on 1759 Ingress Port */ 1760 bcmFieldQualifyExternalValue0 = 271, /* External lookup 0 value */ 1761 bcmFieldQualifyExternalValue1 = 272, /* External lookup 1 value */ 1762 bcmFieldQualifyExternalValue2 = 273, /* External lookup 2 value */ 1763 bcmFieldQualifyExternalValue3 = 274, /* External lookup 3 value */ 1764 bcmFieldQualifyExternalHit0 = 275, /* External lookup 0 hit */ 1765 bcmFieldQualifyExternalHit1 = 276, /* External lookup 1 hit */ 1766 bcmFieldQualifyExternalHit2 = 277, /* External lookup 2 hit */ 1767 bcmFieldQualifyExternalHit3 = 278, /* External lookup 3 hit */ 1768 bcmFieldQualifyVpnUnknownDstMacDstPort = 279, /* Destination for unknown-DA packets. 1769 Set per Vpn. */ 1770 bcmFieldQualifyVxlanNetworkId = 280, /* Vxlan Network/Segment Id */ 1771 bcmFieldQualifyVxlanFlags = 281, /* VxLan header Flags */ 1772 bcmFieldQualifyNatNeeded = 282, /* Qualify packets where NAT is needed */ 1773 bcmFieldQualifyNatDstRealmId = 283, /* Qualify packets on Dst Realm Id */ 1774 bcmFieldQualifyNatSrcRealmId = 284, /* Qualify packets on Src Realm Id */ 1775 bcmFieldQualifyIcmpError = 285, /* Qualifies any packet with ICMP Error */ 1776 bcmFieldQualifyTunnelId = 286, /* Tunnel Id */ 1777 bcmFieldQualifyArpSenderIp4 = 287, /* Sender IPv4 field of ARP header */ 1778 bcmFieldQualifyArpTargetIp4 = 288, /* Target IPv4 field of ARP header */ 1779 bcmFieldQualifyArpOpcode = 289, /* Opcode field of ARP header.Values set 1780 according to bcmFieldArpOpcode */ 1781 bcmFieldQualifyTranslatedOuterVlan = 290, /* Translated Outer VLAN ID, Cfi, 1782 Priority */ 1783 bcmFieldQualifyTranslatedOuterVlanId = 291, /* Translated Outer VLAN ID */ 1784 bcmFieldQualifyTranslatedOuterVlanPri = 292, /* Translated Outer VLAN Priority */ 1785 bcmFieldQualifyTranslatedOuterVlanCfi = 293, /* Translated Outer VLAN Cfi */ 1786 bcmFieldQualifyTranslatedInnerVlan = 294, /* Translated Inner VLAN ID, Cfi, 1787 Priority */ 1788 bcmFieldQualifyTranslatedInnerVlanId = 295, /* Translated Inner VLAN ID */ 1789 bcmFieldQualifyTranslatedInnerVlanPri = 296, /* Translated Inner VLAN Priority */ 1790 bcmFieldQualifyTranslatedInnerVlanCfi = 297, /* Translated Inner VLAN Cfi */ 1791 bcmFieldQualifyConstantZero = 298, /* Constant zero-value. Useful for 1792 Direct group mode. */ 1793 bcmFieldQualifyConstantOne = 299, /* Constant one-value. Useful for Direct 1794 group mode. */ 1795 bcmFieldQualifyFibreChanRCtl = 300, /* Fibre Channel's R_Ctl (Routing 1796 Control) flags. */ 1797 bcmFieldQualifyFibreChanFCtl = 301, /* Fibre Channel's F_Ctl (Frame Control) 1798 flags. */ 1799 bcmFieldQualifyFibreChanCSCtl = 302, /* Fibre Channel's CS_Ctl (Class 1800 Specified Control) flags. */ 1801 bcmFieldQualifyFibreChanDFCtl = 303, /* Fibre Channel's DF_Ctl (Data Field 1802 Control) flags. */ 1803 bcmFieldQualifyFibreChanType = 304, /* Match an FP entry based on Fibre 1804 Channel's Type. */ 1805 bcmFieldQualifyFibreChanSrcId = 305, /* Fibre Channel's Src Id */ 1806 bcmFieldQualifyFibreChanDstId = 306, /* Fibre Channel's Dst Id. */ 1807 bcmFieldQualifyFibreChanZoneCheck = 307, /* Fibre Channel's Zone Check Status 1808 (BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_xxx). */ 1809 bcmFieldQualifyFibreChanSrcFpmaCheck = 308, /* Fibre Channel's Src FPMA Prefix Check 1810 Status. */ 1811 bcmFieldQualifyFibreChanSrcBindCheck = 309, /* Fibre Channel's Src Bind Check 1812 Status. */ 1813 bcmFieldQualifyFibreChanVFTVersion = 310, /* Fibre Channel's VFT version. */ 1814 bcmFieldQualifyFibreChanVFTPri = 311, /* Fibre Channel's VFT Priority. */ 1815 bcmFieldQualifyFibreChanVFTFabricId = 312, /* Fibre Channel's VFT Fabric Id. */ 1816 bcmFieldQualifyFibreChanVFTHopCount = 313, /* Fibre Channel's VFT Hop Count. */ 1817 bcmFieldQualifyFibreChanVFTVsanId = 314, /* Fibre Channel's VFT Internal VSAN ID. */ 1818 bcmFieldQualifyFibreChanVFTVsanPri = 315, /* Fibre Channel's VFT VSAN Priority. */ 1819 bcmFieldQualifyFibreChanVFTValid = 316, /* Fibre Channel's VFT header 1820 presence/validity. */ 1821 bcmFieldQualifyFcoeSOF = 317, /* Match an FP entry based on Fcoe SOF. */ 1822 bcmFieldQualifyFcoeVersionIsZero = 318, /* FCoE Version Is Zero. */ 1823 bcmFieldQualifyForwardingHeaderOffset = 319, /* Distance of the forwarding header 1824 from the start-of-packet. Unit: 1825 bytes. */ 1826 bcmFieldQualifyL3SrcBind = 320, /* L3 source bind lookup success. */ 1827 bcmFieldQualifyECid = 321, /* E-CID base. Same as ExtenderPortVid. */ 1828 bcmFieldQualifyIngressECid = 322, /* Ingress E-CID base. */ 1829 bcmFieldQualifyETag = 323, /* E-Tag value. */ 1830 bcmFieldQualifyIngressVPortBridgeDisable = 324, /* Ingress VPort Bridge same-interface 1831 disabled */ 1832 bcmFieldQualifyHashValue = 325, /* Hash value */ 1833 bcmFieldQualifyIsEqualValue = 326, /* Result value of the is-equal 1834 operation */ 1835 bcmFieldQualifyStageHash = 327, /* Hashing stage */ 1836 bcmFieldQualifyUrpfMode = 328, /* URPF mode according to 1837 bcm_field_urpf_mode_t */ 1838 bcmFieldQualifyAppType = 329, /* Packet Application type 1839 (bcmFieldAppTypeXXX). */ 1840 bcmFieldQualifySubportPktTag = 330, /* Ingress LLTAG. */ 1841 bcmFieldQualifySrcVxlanGport = 331, /* Qualify vxlan source gport. */ 1842 bcmFieldQualifyDstVxlanGport = 332, /* Qualify vxlan destination gport. */ 1843 bcmFieldQualifyOamMdl = 333, /* Qualify OAM Maintenance Domain 1844 Levels. */ 1845 bcmFieldQualifyIntCongestionNotification = 334, /* Qualify internal congestion 1846 notification value. */ 1847 bcmFieldQualifySrcNivGport = 335, /* Source Niv gport. */ 1848 bcmFieldQualifyDstNivGport = 336, /* Destination Niv gport. */ 1849 bcmFieldQualifyDstGport = 337, /* Destination Niv port. */ 1850 bcmFieldQualifyMirrorEgressDisabled = 338, /* Egress Mirroring disabled. */ 1851 bcmFieldQualifyBypassSrcMacFilter = 339, /* Qualify packets bypassing Source MAC 1852 Address filtering. */ 1853 bcmFieldQualifyRxTrapCodeForSnoop = 340, /* Rx Trap code ID used for snoop. */ 1854 bcmFieldQualifyIpmcStarGroupValue = 341, /* L3 Multicast lookup (Star,Group) 1855 Value. */ 1856 bcmFieldQualifyNativeVSwitch = 342, /* Native-VSwitch (for 1857 Routing-over-overlay packets). */ 1858 bcmFieldQualifyNativeVSwitchValid = 343, /* Valid native-VSwitch (for 1859 Routing-over-overlay packets). */ 1860 bcmFieldQualifyTrillIVersion = 344, /* TRILL version field. */ 1861 bcmFieldQualifyTrillIngressRbridge = 345, /* Ingress Rbridge Nickname. */ 1862 bcmFieldQualifyTrillMultiDestination = 346, /* RILL Multi-destination field. */ 1863 bcmFieldQualifyTrillOpLength = 347, /* TRILL Options length field. */ 1864 bcmFieldQualifyTrillHopCount = 348, /* TRILL Hop count field . */ 1865 bcmFieldQualifyTrillPayload = 349, /* Payload of TRILL header. */ 1866 bcmFieldQualifyMplsForwardingLabelPayload = 350, /* Payload of MPLS forwarding label. */ 1867 bcmFieldQualifyIncomingIpIfClass = 351, /* Incoming IP interface Class ID. */ 1868 bcmFieldQualifyL2GreProtocolType = 352, /* L2GRE Protocol type field . */ 1869 bcmFieldQualifyL2GreVsid = 353, /* L2GRE Virtual Subnet ID field. */ 1870 bcmFieldQualifyL2GreFlowId = 354, /* L2GRE Flow ID field. */ 1871 bcmFieldQualifyMimVlanPri = 355, /* MAC-in-MAC VLAN Priority field. */ 1872 bcmFieldQualifyMimVlanCfi = 356, /* MAC-in-MAC VLAN Cfi field. */ 1873 bcmFieldQualifyFhei = 357, /* DNX FHEI header field. */ 1874 bcmFieldQualifyFheiSize = 358, /* DNX FHEI header size in bytes. */ 1875 bcmFieldQualifyEthernetOamHeaderBits0_31 = 359, /* Ethernet OAM Header First 4 Bytes. */ 1876 bcmFieldQualifyEthernetOamHeaderBits32_63 = 360, /* Ethernet OAM Header Second 4 Bytes. */ 1877 bcmFieldQualifyEthernetOamDstClassL2 = 361, /* Ethernet OAM Destination Class based 1878 on L2 lookup result. */ 1879 bcmFieldQualifyEthernetOamTxPktUPMEP = 362, /* Ethernet OAM UP-MEP Tx Packet. */ 1880 bcmFieldQualifyEthernetOamInterfaceClassNiv = 363, /* Ethernet OAM ClassId from Source VP 1881 Table. */ 1882 bcmFieldQualifyEthernetOamInterfaceClassMim = 364, /* Ethernet OAM ClassId from Source VP 1883 Table. */ 1884 bcmFieldQualifyEthernetOamInterfaceClassVxlan = 365, /* Ethernet OAM ClassId from Source VP 1885 Table. */ 1886 bcmFieldQualifyEthernetOamInterfaceClassVlan = 366, /* Ethernet OAM ClassId from Source VP 1887 Table. */ 1888 bcmFieldQualifyEthernetOamInterfaceClassPort = 367, /* Ethernet OAM Class Id assigned for 1889 packet based on Ingress Port. */ 1890 bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst = 368, /* Ethernet OAM Class Id assigned for 1891 packet based on 1st Lookup in 1892 Vlan_Xlate table. */ 1893 bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond = 369, /* Ethernet OAM Class Id assigned for 1894 packet based on 2nd Lookup in 1895 Vlan_Xlate table. */ 1896 bcmFieldQualifyEthernetOamInterfaceClassMpls = 370, /* Ethernet OAM Class Id assigned for 1897 packet based on Source VP table. */ 1898 bcmFieldQualifyEthernetOamClassVpn = 371, /* Ethernet OAM Class Id assigned for 1899 packet based on VFI table. */ 1900 bcmFieldQualifyMplsOamHeaderBits0_31 = 372, /* Mpls OAM Header First 4 Bytes. */ 1901 bcmFieldQualifyMplsOamHeaderBits32_63 = 373, /* Mpls OAM Header Second 4 Bytes. */ 1902 bcmFieldQualifyMplsOamGALLabelOnly = 374, /* MPLS OAM packets having GAL Label 1903 Only. */ 1904 bcmFieldQualifyMplsOamUpperLabelDataDrop = 375, /* MPLS OAM Labels above the forwarding 1905 label. */ 1906 bcmFieldQualifyMplsOamGALExposed = 376, /* MPLS OAM packets having GAL exposed. */ 1907 bcmFieldQualifyMplsOamACH = 377, /* MPLS OAM ACH Header. */ 1908 bcmFieldQualifyMplsOamControlPktType = 378, /* MPLS OAM control packets based on 1909 Packet Type. */ 1910 bcmFieldQualifyMplsOamClassMplsSwitchLabel = 379, /* MPLS OAM Class Id assigned for 1911 packet based on MPLS table. */ 1912 bcmFieldQualifyOamHeaderBits0_31 = 380, /* OAM Header First 4 Bytes. */ 1913 bcmFieldQualifyOamHeaderBits32_63 = 381, /* OAM Header Second 4 Bytes. */ 1914 bcmFieldQualifyOamEgressClassVxlt = 382, /* OAM Class Id assigned for packet 1915 based on EGR_VXLT table. */ 1916 bcmFieldQualifyOamEgressClassPort = 383, /* OAM Class Id assigned for packet 1917 based on Port table. */ 1918 bcmFieldQualifyUdf = 384, /* Qualify UDF selected data */ 1919 bcmFieldQualifyOuterVlanActionRange = 385, /* compressed outer vlan tag */ 1920 bcmFieldQualifyInnerVlanActionRange = 386, /* compressed inner vlan tag */ 1921 bcmFieldQualifyIngressInterfaceClassVPort = 387, /* Class Id assigned for packet based on 1922 Ingress GPort */ 1923 bcmFieldQualifySrcVlanGport = 388, /* Qualify Source Vlan Gport */ 1924 bcmFieldQualifyDstVlanGport = 389, /* Qualify Destination Vlan Gport */ 1925 bcmFieldQualifyOamType = 390, /* Qualify Ethernet/MPLS OAM. */ 1926 bcmFieldQualifySrcVlanGports = 391, /* Qualify Source Vlan Gports */ 1927 bcmFieldQualifyDstVlanGports = 392, /* Qualify Destination Vlan Gports */ 1928 bcmFieldQualifySrcVxlanGports = 393, /* Qualify Source Vxlan Gports */ 1929 bcmFieldQualifyDstVxlanGports = 394, /* Qualify Destination Vxlan Gports */ 1930 bcmFieldQualifySrcWlanGports = 395, /* Qualify Source Wlan Gports */ 1931 bcmFieldQualifyDstWlanGports = 396, /* Qualify Destination Wlan Gports */ 1932 bcmFieldQualifySrcMplsGports = 397, /* Qualify Source Mpls Gports */ 1933 bcmFieldQualifyDstMplsGports = 398, /* Qualify Destination Mpls Gports */ 1934 bcmFieldQualifySrcGports = 399, /* Qualify Source module/port pair or 1935 MPLS/MiM/WLAN/Niv/Vlan ports */ 1936 bcmFieldQualifyDstGports = 400, /* Qualify Destination Niv Gports */ 1937 bcmFieldQualifySrcMimGports = 401, /* Qualify Source Mim Gports */ 1938 bcmFieldQualifyDstMimGports = 402, /* Qualify Destination Mim Gports */ 1939 bcmFieldQualifySrcNivGports = 403, /* Qualify Source Niv Gports */ 1940 bcmFieldQualifyDstNivGports = 404, /* Qualify Destination Niv Gports */ 1941 bcmFieldQualifySrcModPortGports = 405, /* Qualify Source ModPort Gports */ 1942 bcmFieldQualifyLearnInVPort = 406, /* Qualify Learnt Incoming VPort */ 1943 bcmFieldQualifyStackingRoute = 407, /* Qualify Stacking Route */ 1944 bcmFieldQualifyRxTrapStrength = 408, /* Qualify Rx Trap Strength */ 1945 bcmFieldQualifyVxlanHeaderBits8_31 = 409, /* Qualify Reserved_1 field in Vxlan 1946 Header */ 1947 bcmFieldQualifyVxlanHeaderBits56_63 = 410, /* Qualify Reserved_2 field in Vxlan 1948 Header */ 1949 bcmFieldQualifyOamInLifIdValid = 411, /* Indicates if the LIF that has been 1950 found is an OAM LIF. */ 1951 bcmFieldQualifyOamInLifId = 412, /* Indicates the last OAM LIF that has 1952 been found. This value is valid only 1953 if SOC_PPC_FP_QUAL_VTT_OAM_LIF_VALID 1954 is set. */ 1955 bcmFieldQualifyOamUpMep = 413, /* It indicates if the OAM packet is 1956 UP-MEP (sent to a destination in the 1957 network, as opposed to a specific 1958 port). This term belongs to the OAM 1959 jargon. */ 1960 bcmFieldQualifyOamSubtype = 414, /* In OAM the packet type is specified 1961 in the OAM header and mapped to a 1962 subtype in the hardware. This value 1963 indicates the hardware type that it 1964 is mapped to. */ 1965 bcmFieldQualifyOamHeaderOffset = 415, /* This field indicates the offset of 1966 the OAM header relative to the start 1967 of packet (as opposed to start of 1968 header-offset) */ 1969 bcmFieldQualifyOamStampOffset = 416, /* This qualifier indicates the offset 1970 to the position, in the OAM header, 1971 where the ToD or counter value should 1972 be stamped 1973 relative to the 1974 start of packet (as opposed to start 1975 of header-offset[0]). */ 1976 bcmFieldQualifyOamMepId = 417, /* This qualifier indicates is according 1977 to the following encoding: OAM-ID 1978 (17) = OAM-2-Match ? 1979 {4'b0, 1980 OAM-2-ID (13)} : {1'b1, OAM-LIF (16)} 1981 If MEP is handled in OAMP, then the 1982 OAM-ID is the MEP-ID 1983 1984 (equivalent to the index used to 1985 access the MEP DB). */ 1986 bcmFieldQualifyOamMeterDisable = 418, /* This qualifier is an attribute that 1987 is passed to the PMF and can also be 1988 configured by the user per MEP. 1989 It has no meaning 1990 other than being a qualifier in the 1991 PMF. */ 1992 bcmFieldQualifyOamTsSystemHeader = 419, /* The entire OAM-TS is passed to the 1993 egress PMF (48 bit) */ 1994 bcmFieldQualifyDstMulticastGroups = 420, /* Qualify Multicast Group ids */ 1995 bcmFieldQualifyInterfaceInPorts = 421, /* Qualify Interface In Ports */ 1996 bcmFieldQualifyDestVirtualPortValid = 422, /* Destination Virtual Port is valid. */ 1997 bcmFieldQualifyInVPortWide = 423, /* Wide attribute of Ingress VPort . */ 1998 bcmFieldQualifyStageClass = 424, /* Pseudo Compression Class Stage. */ 1999 bcmFieldQualifyStageClassExactMatch = 425, /* Pseudo Compression Exact Match Class 2000 Stage. */ 2001 bcmFieldQualifyFcoeOxID = 426, /* FCoE Originator Exchange ID. */ 2002 bcmFieldQualifyFcoeRxID = 427, /* FCoE Responder Exchange ID. */ 2003 bcmFieldQualifyIpProtocolClass = 428, /* IP Protocol ID Class. */ 2004 bcmFieldQualifyEtherTypeClass = 429, /* EtherType Class. */ 2005 bcmFieldQualifyL4SrcPortClass = 430, /* L4 Source Port Class. */ 2006 bcmFieldQualifyL4DstPortClass = 431, /* L4 Destination Port Class. */ 2007 bcmFieldQualifySrcIpClass = 432, /* IPv4 SIP Class. */ 2008 bcmFieldQualifySrcIpClassMsbNibble = 433, /* IPv4 SIP Class 4-bits. */ 2009 bcmFieldQualifySrcIpClassLower = 434, /* IPv4 SIP Class Lower 16-bits. */ 2010 bcmFieldQualifySrcIpClassUpper = 435, /* IPv4 SIP Class Upper 16-bits. */ 2011 bcmFieldQualifySrcIp6Class = 436, /* IPv6 SIP Class. */ 2012 bcmFieldQualifySrcIp6ClassMsbNibble = 437, /* IPv6 SIP Class 4-bits. */ 2013 bcmFieldQualifySrcIp6ClassLower = 438, /* Ipv6 SIP Class Lower 16-bits. */ 2014 bcmFieldQualifySrcIp6ClassUpper = 439, /* IPv6 SIP Class Upper 16-bits. */ 2015 bcmFieldQualifyFcoeOxIDClass = 440, /* FCoE Originator Exchange ID Class. */ 2016 bcmFieldQualifyDstIpClass = 441, /* IPv4 DIP Class. */ 2017 bcmFieldQualifyDstIpClassMsbNibble = 442, /* IPv4 DIP Class 4-bits. */ 2018 bcmFieldQualifyDstIpClassLower = 443, /* IPv4 DIP Class Lower 16-bits. */ 2019 bcmFieldQualifyDstIpClassUpper = 444, /* IPv4 DIP Class Upper 16-bits. */ 2020 bcmFieldQualifyDstIp6Class = 445, /* IPv6 DIP Class. */ 2021 bcmFieldQualifyDstIp6ClassMsbNibble = 446, /* Ipv6 DIP Class 4-bits. */ 2022 bcmFieldQualifyDstIp6ClassLower = 447, /* IPv6 DIP Class Lower 16-bits. */ 2023 bcmFieldQualifyDstIp6ClassUpper = 448, /* IPv6 DIP Class Upper 16-bits. */ 2024 bcmFieldQualifyFcoeRxIDClass = 449, /* FCoE Responder Exchange ID Class. */ 2025 bcmFieldQualifyFibreChanSrcIdClass = 450, /* Fibre Channel Src Id Class. */ 2026 bcmFieldQualifyFibreChanSrcIdClassMsbNibble = 451, /* Fibre Channel Src Id Class 4-bits. */ 2027 bcmFieldQualifyFibreChanSrcIdClassLower = 452, /* Fibre Channel Src Id Class Lower 2028 16-bits. */ 2029 bcmFieldQualifyFibreChanSrcIdClassUpper = 453, /* Fibre Channel Src Id Class Upper 2030 16-bits. */ 2031 bcmFieldQualifyFibreChanDstIdClass = 454, /* Fibre Channel Dst Id Class. */ 2032 bcmFieldQualifyFibreChanDstIdClassMsbNibble = 455, /* Fibre Channel Dst Id Class 4-bits. */ 2033 bcmFieldQualifyFibreChanDstIdClassLower = 456, /* Fibre Channel Dst Id Class Lower 2034 16-bits. */ 2035 bcmFieldQualifyFibreChanDstIdClassUpper = 457, /* Fibre Channel Dst Id Class Upper 2036 16-bits. */ 2037 bcmFieldQualifyTcpClassZero = 458, /* TCP Class from TCP_FN0. */ 2038 bcmFieldQualifyTosClassZero = 459, /* TOS Class from TOS_FN0. */ 2039 bcmFieldQualifyTtlClassZero = 460, /* TTL Class from TTL_FN0. */ 2040 bcmFieldQualifyTcpClassOne = 461, /* TCP Class from TCP_FN1. */ 2041 bcmFieldQualifyTosClassOne = 462, /* TOS Class from TOS_FN1. */ 2042 bcmFieldQualifyTtlClassOne = 463, /* TTL Class from TTL_FN1. */ 2043 bcmFieldQualifyOuterVlanPriCfi = 464, /* Outer VLAN Pri + Cfi (4 bits). */ 2044 bcmFieldQualifyForwardHdrSrcMac = 465, /* FWD Header SA MAC (48 bits). */ 2045 bcmFieldQualifyForwardHdrDstMac = 466, /* FWD Header DA MAC (48 bits). */ 2046 bcmFieldQualifyForwardHdrVlanId = 467, /* FWD Header Vlan Id (12 bits). */ 2047 bcmFieldQualifyDstSysPortExt = 468, /* FTMH Destination System Port (DSP) 2048 Extension. */ 2049 bcmFieldQualifyStageIngressExactMatch = 469, /* Field Processor pipeline ingress 2050 exact match stage. */ 2051 bcmFieldQualifyLearnExtension = 470, /* Learn Extension Data. */ 2052 bcmFieldQualifyIpFragNonOrFirst = 471, /* Non Fragmented IP Packet or First 2053 Fragment of IP Packet. */ 2054 bcmFieldQualifyPacketLength = 472, /* Packet Length Excluding L2 Header(+ 2055 Vlan Tag for Tagged packets). */ 2056 bcmFieldQualifyGroupClass = 473, /* Field Group Class Id (Logical Table 2057 Class Id) assigned by pre-selection 2058 entry. */ 2059 bcmFieldQualifyUdfClass = 474, /* Class ID associated to packet on UDF 2060 match. */ 2061 bcmFieldQualifyInterfaceLookupClassPort = 475, /* VFP Port Class Id that can be 2062 matched in Ingress Filter Processor. */ 2063 bcmFieldQualifyHiGigDstMulticast = 476, /* Indicates if the HiGig Destination is 2064 a Multicast or Unicast. */ 2065 bcmFieldQualifyHiGigDstMulticastGroupId = 477, /* Destination Multicast Group Id. */ 2066 bcmFieldQualifyHiGigTrafficClass = 478, /* QOS provided by Fabric when 2067 forwarding the packet through Fabric. */ 2068 bcmFieldQualifyHiGigDstModuleGport = 479, /* Destination Module ID. */ 2069 bcmFieldQualifyHiGigDstPortGport = 480, /* Destination Port. */ 2070 bcmFieldQualifyHiGigDstModPortGport = 481, /* Destination Module ID and Port. */ 2071 bcmFieldQualifyHiGigSrcModuleGport = 482, /* Source Module ID. */ 2072 bcmFieldQualifyHiGigSrcPortGport = 483, /* Source Port. */ 2073 bcmFieldQualifyHiGigSrcModPortGport = 484, /* Source Module ID and Port. */ 2074 bcmFieldQualifyHiGigLoadBalanceID = 485, /* A packet flow hashing index for 2075 distribution of packet flows through 2076 a multipath fabric. */ 2077 bcmFieldQualifyHiGigColor = 486, /* Indicates Traffic rate violation 2078 status of the packet measured by 2079 Ingress Module.This can be 2080 Green/Yellow/Red */ 2081 bcmFieldQualifyHiGigIntCongestionNotification = 487, /* Indicates ECN and Transport Protocol 2082 Class Information generated by 2083 Ingress Module. */ 2084 bcmFieldQualifyHiGigIngressTagged = 488, /* Tagged packet was ingressed at the 2085 HiGig Port. */ 2086 bcmFieldQualifyHiGigDstTrunk = 489, /* Is the Destination port is Trunk 2087 Port? */ 2088 bcmFieldQualifyHiGigDstTrunkId = 490, /* Destination HiGig Trunk Group Id. */ 2089 bcmFieldQualifyHiGigIngressL3SwitchPkt = 491, /* Packet is L3 switched at the Source 2090 Port */ 2091 bcmFieldQualifyHiGigLabel = 492, /* 20 Bit Label Present in HiGig Header. 2092 Label Type can be QTag/Mirror 2093 Classification Tag/System Ingress 2094 Port. */ 2095 bcmFieldQualifyHiGigReplicationId = 493, /* Replication ID used to identify 2096 Packet modifications to be applied 2097 for this replicated copy. */ 2098 bcmFieldQualifyHiGigVlan = 494, /* Vlan tag information in HiGig Header */ 2099 bcmFieldQualifyHiGigPortFilteringMode = 495, /* Port Filtering mode used for 2100 Multicast packets. */ 2101 bcmFieldQualifyHiGigSrcTrunk = 496, /* Indicates the packet is originally 2102 ingressed on Trunk Port. */ 2103 bcmFieldQualifyHiGigIngressClassificationTag = 497, /* Classification Tag assigned to packet 2104 in Ingress Filter Processor(IFP). */ 2105 bcmFieldQualifyHiGigEgressMcast = 498, /* Indicates whether the packet is sent 2106 to a single point or a multi-point 2107 tree within the egress chip. */ 2108 bcmFieldQualifyHiGigVni = 499, /* Virtual Network Identifier (ISID) 2109 which identifies the service instance 2110 for this packet. */ 2111 bcmFieldQualifyHiGigDstGport = 500, /* The destination VP index for egress 2112 chip packet modification and 2113 encapsulation. */ 2114 bcmFieldQualifyHiGigMulticastIndex = 501, /* The destination multicast index for 2115 egress chip packet modification and 2116 encapsulation. */ 2117 bcmFieldQualifyHiGigVpReplicationId = 502, /* The destination Replication ID for 2118 egress chip packet modification and 2119 encapsulation. */ 2120 bcmFieldQualifyHiGigSrcGport = 503, /* The Source VP index from which the 2121 packet ingressed the system. */ 2122 bcmFieldQualifyHiGigProtectionSwitchingStatus = 504, /* This indicates the egress packet 2123 processor to use working / protection 2124 path based on the decision made in 2125 the ingress packet processor. */ 2126 bcmFieldQualifyHiGigMirrorToVp = 505, /* Indicates whether the packet is a 2127 mirrored copy or Switched Copy */ 2128 bcmFieldQualifyHiGigDstType = 506, /* Indicates whether the destination is 2129 Virtual or Physical. */ 2130 bcmFieldQualifyHiGigSrcType = 507, /* Indicates whether the source is 2131 Virtual or Physical. */ 2132 bcmFieldQualifyHiGigOffloadEngineClassificationTag = 508, /* Opaque field generated by the ACL 2133 rule that triggered the redirect to 2134 the offload engine. */ 2135 bcmFieldQualifyHiGigOffloadEnginePktPriNew = 509, /* New 802.1p bits */ 2136 bcmFieldQualifyHiGigOffloadEngineDscpNew = 510, /* New DSCP value. */ 2137 bcmFieldQualifyLoopBackQueue = 511, /* Loopback Port Queue Number. It is 2138 used in the MMU for buffer account 2139 and flow control of traffic received 2140 on the internal loopback port. */ 2141 bcmFieldQualifyLoopBackSrcGport = 512, /* Source field for the packet. It can 2142 be a Virtual/Physical port. */ 2143 bcmFieldQualifyPktIsVisible = 513, /* Triggers capture of intermediate 2144 packet processing results for this 2145 packet. */ 2146 bcmFieldQualifyLoopBackCpuMasqueradePktProfile = 514, /* Pointer to indicate disposition of 2147 these packets in the Ingress 2148 Pipeline. */ 2149 bcmFieldQualifyLoopBackColor = 515, /* Indicates Traffic rate violation 2150 status of the packet measured by 2151 Ingress Module.This can be 2152 Green/Yellow/Red. */ 2153 bcmFieldQualifyLoopBackTrafficClass = 516, /* QOS provided by Fabric when 2154 forwarding the packet through Fabric. */ 2155 bcmFieldQualifyLoopBackPacketProcessingPort = 517, /* Device Port Number which is to be 2156 used for processing the packet in the 2157 Ingress Pipeline. This must be a port 2158 that is programmed in the device to 2159 be a front panel (Ethernet) port. */ 2160 bcmFieldQualifyMixedSrcClassId = 518, /* Mixed Source ID value used in 2161 Pre-selection. */ 2162 bcmFieldQualifyITag = 519, /* Service Instance Tag in MAC-in-MAC. */ 2163 bcmFieldQualifyInterfaceIngressKeySelectClassPort = 520, /* Ingress port class id assigned to 2164 port by port table. */ 2165 bcmFieldQualifyBfdYourDiscriminator = 521, /* BFD Your Discriminator. */ 2166 bcmFieldQualifyCpuVisibilityPacket = 522, /* CPU visibility packet. */ 2167 bcmFieldQualifyDstL2MulticastGroup = 523, /* Destination L2 Multicast Group Id. */ 2168 bcmFieldQualifyDstL3MulticastGroup = 524, /* Destination L3 Multicast Group Id. */ 2169 bcmFieldQualifyExactMatchHitStatus = 525, /* Exact Match Hit Status. */ 2170 bcmFieldQualifyExactMatchActionClassId = 526, /* Exact Match Action Class Identifier. */ 2171 bcmFieldQualifyExactMatchGroupClassId = 527, /* Exact Match Group Class Identifier. */ 2172 bcmFieldQualifyL2PayLoad = 528, /* Qualify Bytes after L2 Header */ 2173 bcmFieldQualifyCustomHeaderPkt = 529, /* Qualify Custom Header packets. */ 2174 bcmFieldQualifyCustomHeaderData = 530, /* Qualify the content of Custom Header 2175 32-bits. */ 2176 bcmFieldQualifyMimlPkt = 531, /* Qualify for MiML or non-MiML packet. */ 2177 bcmFieldQualifyMimlSrcMac = 532, /* Mac-in-Mac Lite(MiML) Source MAC 2178 Address. */ 2179 bcmFieldQualifyMimlDstMac = 533, /* Mac-in-Mac Lite(MiML) Destination MAC 2180 Address. */ 2181 bcmFieldQualifyMimlVlan = 534, /* Mac-in-Mac Lite(MiML) VLAN ID, Cfi, 2182 Priority. */ 2183 bcmFieldQualifyMimlVlanId = 535, /* Mac-in-Mac Lite(MiML) VLAN ID. */ 2184 bcmFieldQualifyMimlVlanPri = 536, /* Mac-in-Mac Lite(MiML) VLAN Priority. */ 2185 bcmFieldQualifyMimlVlanCfi = 537, /* Mac-in-Mac Lite(MiML) VLAN Cfi. */ 2186 bcmFieldQualifyMimlInnerTag = 538, /* Mac-in-Mac Lite(MiML) inner tag 2187 fields {MIML_PKT_TYPE, MIML_IID, 2188 MIML_RSVD, MIML_LENGTH}. */ 2189 bcmFieldQualifyCapwapHdrType = 539, /* The TYPE field in CAPWAP header. */ 2190 bcmFieldQualifyCapwapHdrRid = 540, /* The RID field in CAPWAP header. */ 2191 bcmFieldQualifyCapwapPayloadSOF = 541, /* It indicates the CAPWAP payload is 2192 non-fragmented or first fragment. */ 2193 bcmFieldQualifyCapwapPayloadDstMac = 542, /* destination MAC address in CAPWAP 2194 payload. */ 2195 bcmFieldQualifyCapwapPayloadSrcMac = 543, /* source MAC address in CAPWAP payload. */ 2196 bcmFieldQualifyCapwapPayloadEtherType = 544, /* Ethernet type in CAPWAP payload. */ 2197 bcmFieldQualifyCapwapPayloadOuterVlan = 545, /* Outer VLAN tag in CAPWAP payload. */ 2198 bcmFieldQualifyCapwapPayloadOuterVlanId = 546, /* Outer VLAN id in CAPWAP payload. */ 2199 bcmFieldQualifyCapwapPayloadOuterVlanPri = 547, /* Outer VLAN priority in CAPWAP 2200 payload. */ 2201 bcmFieldQualifyCapwapPayloadOuterVlanCfi = 548, /* Outer VLAN CFI in CAPWAP payload. */ 2202 bcmFieldQualifyCapwapPayloadInnerVlan = 549, /* Inner VLAN tag in CAPWAP payload. */ 2203 bcmFieldQualifyCapwapPayloadInnerVlanId = 550, /* Inner VLAN id in CAPWAP payload. */ 2204 bcmFieldQualifyCapwapPayloadInnerVlanPri = 551, /* Inner VLAN priority in CAPWAP 2205 payload. */ 2206 bcmFieldQualifyCapwapPayloadInnerVlanCfi = 552, /* Inner VLAN CFI in CAPWAP payload. */ 2207 bcmFieldQualifyCapwapPayloadVlanFormat = 553, /* VLAN tag format in CAPWAP payload. */ 2208 bcmFieldQualifyCapwapPayloadSip = 554, /* IPv4 source address in CAPWAP 2209 payload. */ 2210 bcmFieldQualifyCapwapPayloadDip = 555, /* IPv4 destination address in CAPWAP 2211 payload. */ 2212 bcmFieldQualifyCapwapPayloadSip6 = 556, /* IPv6 source address in CAPWAP 2213 payload. */ 2214 bcmFieldQualifyCapwapPayloadDip6 = 557, /* IPv6 destination address in CAPWAP 2215 payload. */ 2216 bcmFieldQualifyCapwapPayloadIpProtocol = 558, /* IP Protocol value in CAPWAP payload. */ 2217 bcmFieldQualifyCapwapPayloadTos = 559, /* Type-of-Service value in CAPWAP 2218 payload. */ 2219 bcmFieldQualifyCapwapPayloadL4DstPort = 560, /* UDP/TCP destination port number in 2220 CAPWAP payload. */ 2221 bcmFieldQualifyCapwapPayloadL4SrcPort = 561, /* UDP/TCP source port number in CAPWAP 2222 payload. */ 2223 bcmFieldQualifyCapwapPayloadL3HdrParseable = 562, /* It indicates the parser can parse 2224 ipv4/ipv6 header in the wireless 2225 payload. */ 2226 bcmFieldQualifyCapwapPayloadL4HdrParseable = 563, /* It indicates the parser can parse 2227 UDP/TCP header in the wireless 2228 payload. */ 2229 bcmFieldQualifyVlanAction = 564, /* Vlan Action Set ID. */ 2230 bcmFieldQualifyDownMepSatTerminated = 565, /* Qualify Rx Down Mep SAT terminated 2231 hit status. */ 2232 bcmFieldQualifyDstMultipathOverlay = 566, /* Qualify on ECMP groups with overlay 2233 flag */ 2234 bcmFieldQualifyDstMultipathUnderlay = 567, /* Qualify on ECMP groups with Underlay 2235 flag */ 2236 bcmFieldQualifyStpState = 568, /* Qualify on VLAN STG STP states. */ 2237 bcmFieldQualifyHiGigMirrorOrSwitchPkt = 569, /* Indicates whether the packet has to 2238 be mirrored and switched. */ 2239 bcmFieldQualifyHiGigPreserveFlags = 570, /* Indicates the DSCP/DOT1P flags should 2240 not be modified. */ 2241 bcmFieldQualifyHiGigMplsPkt = 571, /* When set, indicates packet contains a 2242 20 bit label. Otherwise packet 2243 contains MPLS information. */ 2244 bcmFieldQualifyHiGigDoNotFlags = 572, /* Don't Learn(do not perform MAC 2245 learning) and Don't Modify(Send the 2246 packet to destination unmodified) 2247 Flags. */ 2248 bcmFieldQualifyHiGigVpPreserveFlags = 573, /* Indicates the VP not to modify the 2249 DSCP/DOT1P flags. */ 2250 bcmFieldQualifyHiGigOffloadEngineVxltStatus = 574, /* Indicates whether the Packet has been 2251 through Vlan Translation. */ 2252 bcmFieldQualifyHiGigForwardingType = 575, /* Indicates the forwarding type whether 2253 it is a control/L2/L3/broadcast 2254 packet. */ 2255 bcmFieldQualifyHiGigLabelType = 576, /* Indicates contents of Label. It can 2256 be a QTag/ Mirror Classification Tag/ 2257 Original System Ingress Port through 2258 which the packet ingressed/ Original 2259 HiGig+ Overlay. */ 2260 bcmFieldQualifyHiGigExtendedHeaderPresent = 577, /* Indicates whether extended header is 2261 present in the HiGig header or not. */ 2262 bcmFieldQualifyHiGigVpLagFailoverPacket = 578, /* When set, it indicates that the 2263 packet is redirected by a LAG 2264 failover and the packet must not be 2265 redirected again by LAG failover. */ 2266 bcmFieldQualifyHiGigOffloadEnginePreserveDscp = 579, /* Indicates offload engine not to 2267 change the DSCP in the packet. */ 2268 bcmFieldQualifyHiGigOffloadEnginePreserveDot1p = 580, /* Indicates offload engine not to 2269 change the DOT1P in the packet. */ 2270 bcmFieldQualifyHiGigOffloadEngineDeferredFlags = 581, /* Indicates whether a drop action/DSCP 2271 change/802.1 change was deferred. */ 2272 bcmFieldQualifyHiGigOffloadEngineSrcType = 582, /* This applies to packets destined to 2273 Offload Engine and this indicates 2274 whether the packet is ingressed on a 2275 Physical port / Virtual Port. */ 2276 bcmFieldQualifySystemPortBitmap = 583, /* To qualify on a port bitmap generated 2277 from SGLP. */ 2278 bcmFieldQualifySourceGportBitmap = 584, /* To qualify on a port bitmap generated 2279 from SVP. */ 2280 bcmFieldQualifyDevicePortBitmap = 585, /* To qualify on a port bitmap generated 2281 from device ingress port. */ 2282 bcmFieldQualifyTosLower4Bits = 586, /* To qualify on Lower 4bits of TOS. */ 2283 bcmFieldQualifyOamEgressClass2Vxlt = 587, /* To qualify on OAM Class Id assigned 2284 for packet based on Second Lookup in 2285 EGR_VLAN_XLATE table. */ 2286 bcmFieldQualifyOamEgressVxltFirstHit = 588, /* To qualify on First EGR_VXLT lookup 2287 hit status. */ 2288 bcmFieldQualifyOamEgressVxltSecondHit = 589, /* To qualify on Second EGR_VXLT lookup 2289 hit status. */ 2290 bcmFieldQualifyOamDownMEPLoopbackPacket = 590, /* Indicates Down-MEP Loopback or 2291 Down-SAT Latching Loopback packet. */ 2292 bcmFieldQualifyOamEgressPortUnicastDstMacHit = 591, /* To qualify on EGR_PORT MAC DA hit 2293 status. */ 2294 bcmFieldQualifyOamSat = 592, /* Pseudo qualifier for OAM/SAT. */ 2295 bcmFieldQualifyIngressDropEthernetOamControl = 593, /* To qualify on Drop reasons for 2296 Ethernet Oam Control Packets based on 2297 MEP type. */ 2298 bcmFieldQualifyIngressDropEthernetOamData = 594, /* To qualify on Drop reasons for 2299 Ethernet Oam Data Packets based on 2300 MEP type. */ 2301 bcmFieldQualifyIngressDropMplsOamControl = 595, /* To qualify on Drop reasons for Mpls 2302 Oam Control Packets based on MEP 2303 type. */ 2304 bcmFieldQualifyIngressDropMplsOamData = 596, /* To qualify on Drop reasons for Mpls 2305 Oam Data Packets based on MEP type. */ 2306 bcmFieldQualifyEgressClassVxlan = 597, /* Class assigned by Egress Vxlan */ 2307 bcmFieldQualifyOamEgressEtherType = 598, /* To qualify on OAM/SAT Ethernet Type. 2308 Allowed values are 0x8902 and 0x88b7 */ 2309 bcmFieldQualifyOamEgressMulticastMacHit = 599, /* To qualify on Multicast OAM Dest Mac 2310 Address Range Hit. Allowed values 2311 BCM_FIELD_OAM_MULTICAST_MAC_XXX */ 2312 bcmFieldQualifyTrunkMemberSourceModuleId = 600, /* To qualify on Module ID on a trunk 2313 member port. */ 2314 bcmFieldQualifyOamEgressClassSrcMac = 601, /* To qualify on SourceMac Class ID 2315 assigned for packet based on Hit in 2316 EGR_OAM_SAT_MISC_MAC_SA_0.15 2317 registers. */ 2318 bcmFieldQualifyMyStation2Hit = 602, /* Applicable when RIOT is enabled or l2 2319 entry is used as my station (by 2320 enabling config 2321 l2_entry_used_as_my_station) is set. 2322 To qualify on Overlay L2 termination 2323 lookup hit status for tunnel packets 2324 or Routing hit status for non-tunnel 2325 packets or when l2 entry added as my 2326 station is hit. */ 2327 bcmFieldQualifyExternalValue4 = 603, /* External lookup 4 value */ 2328 bcmFieldQualifyExternalValue5 = 604, /* External lookup 5 value */ 2329 bcmFieldQualifyExternalHit4 = 605, /* External lookup 4 hit */ 2330 bcmFieldQualifyExternalHit5 = 606, /* External lookup 5 hit */ 2331 bcmFieldQualifyGeneratedTtl = 607, /* Get match criteria for 2332 bcmFieldQualifyGeneratedTtl qualifier 2333 from the field entry. */ 2334 bcmFieldQualifyIpMulticastCompatible = 608, /* Packet is compatible for multicast. */ 2335 bcmFieldQualifyEgressClassTunnel = 609, /* Class assigned by next hop tunnel */ 2336 bcmFieldQualifyEgressClassL3InterfaceTunnel = 610, /* Class assigned by egress interface 2337 tunnel */ 2338 bcmFieldQualifyStaggeredValue0 = 611, /* Value taken from action result 0 in 2339 staggered mode. */ 2340 bcmFieldQualifyStaggeredValue1 = 612, /* Value taken from action result 1 in 2341 staggered mode. */ 2342 bcmFieldQualifyStaggeredValue2 = 613, /* Value taken from action result 2 in 2343 staggered mode. */ 2344 bcmFieldQualifyStaggeredValue3 = 614, /* Value taken from action result 3 in 2345 staggered mode. */ 2346 bcmFieldQualifyStaggeredDirectValue = 615, /* Value taken from KAPS payload in 2347 staggered mode. */ 2348 bcmFieldQualifyStaggeredPreselProfile0 = 616, /* Program selection profile value taken 2349 from action result 0 in staggered 2350 mode. */ 2351 bcmFieldQualifyStaggeredPreselProfile1 = 617, /* Program selection profile value taken 2352 from action result 1 in staggered 2353 mode. */ 2354 bcmFieldQualifyStaggeredPreselProfile2 = 618, /* Program selection profile value taken 2355 from action result 2 in staggered 2356 mode. */ 2357 bcmFieldQualifyStaggeredPreselProfile3 = 619, /* Program selection profile value taken 2358 from action result 3 in staggered 2359 mode. */ 2360 bcmFieldQualifyStaggeredPreselProfileDirect = 620, /* Program selection profile value taken 2361 from KAPS payload 0 in staggered 2362 mode. */ 2363 bcmFieldQaulifyPreselId = 621, /* Program selection value in 2nd Pass 2364 according to the 1st Pass 2365 preselector-id. */ 2366 bcmFieldQualifyEthernetData = 622, /* Egress data qualifier base only. 2367 NWK_RCRDS Ethernet data field, 2368 containing Ethernet tags (if any) and 2369 EtherType. */ 2370 bcmFieldQualifyPreemptablePacket = 623, /* Preemptable Packet */ 2371 bcmFieldQualifyVxlanClassValid = 624, /* VXLAN Class is valid or not */ 2372 bcmFieldQualifyVxlanPacket = 625, /* Indicates whether it is a VXLAN 2373 packet */ 2374 bcmFieldQualifyVxlanVnidVlanTranslateHit = 626, /* VXLAN Network Identifier (VN_ID) 2375 lookup hit through vlan translation */ 2376 bcmFieldQualifyVxlanPayloadVlanFormat = 627, /* VLAN tag format in VXLAN payload */ 2377 bcmFieldQualifyTunnelPayloadDstMac = 628, /* Destination MAC address in Tunnel 2378 payload */ 2379 bcmFieldQualifyTunnelPayloadSrcMac = 629, /* Source MAC address in Tunnel payload */ 2380 bcmFieldQualifyTunnelPayloadEtherType = 630, /* Ethernet type in Tunnel payload */ 2381 bcmFieldQualifyTunnelPayloadOuterVlan = 631, /* Outer VLAN tag in Tunnel payload */ 2382 bcmFieldQualifyTunnelPayloadOuterVlanId = 632, /* Outer VLAN id in Tunnel payload */ 2383 bcmFieldQualifyTunnelPayloadOuterVlanPri = 633, /* Outer VLAN priority in Tunnel payload */ 2384 bcmFieldQualifyTunnelPayloadOuterVlanCfi = 634, /* Outer VLAN CFI in Tunnel payload */ 2385 bcmFieldQualifyTunnelPayloadSip = 635, /* IPv4 source address in Tunnel payload */ 2386 bcmFieldQualifyTunnelPayloadDip = 636, /* IPv4 destination address in Tunnel 2387 payload */ 2388 bcmFieldQualifyTunnelPayloadSip6 = 637, /* IPv6 source address in Tunnel payload */ 2389 bcmFieldQualifyTunnelPayloadDip6 = 638, /* IPv6 destination address in Tunnel 2390 payload */ 2391 bcmFieldQualifyTunnelPayloadIpProtocol = 639, /* IP Protocol value in Tunnel payload */ 2392 bcmFieldQualifyTunnelPayloadL4DstPort = 640, /* UDP/TCP destination port number in 2393 Tunnel payload */ 2394 bcmFieldQualifyTunnelPayloadL4SrcPort = 641, /* UDP/TCP source port number in Tunnel 2395 payload */ 2396 bcmFieldQualifyRoceBthOpcode = 642, /* To qualify on OP code on RoCEv1 / 2397 RoCEv2 Base Transport Header(BTH) */ 2398 bcmFieldQualifyRoceBthPartitionKey = 643, /* To qualify on partition key on RoCEv1 2399 / RoCEv2 Base Transport Header (BTH) */ 2400 bcmFieldQualifyRoceBthDstQueuePair = 644, /* To qualify on destination queue pair 2401 on RoCEv1 / RoCEv2 Base Transport 2402 Header(BTH) */ 2403 bcmFieldQualifyRoceBthFlags = 645, /* To qualify on flags on RoCEv1 / 2404 RoCEv2 Base Transport Header(BTH) */ 2405 bcmFieldQualifyRoceVer1Pkt = 646, /* Indicate whether it is a RoCEv1 2406 packet */ 2407 bcmFieldQualifyRoceVer2Pkt = 647, /* Indicate whether it is a RoCEv2 2408 packet */ 2409 bcmFieldQualifySrcPortSRType = 648, /* SR (Seamless Redundancy) port type 2410 (bcmFieldPortSRTypeXXX) assigned to 2411 the source port */ 2412 bcmFieldQualifyDstPortSRType = 649, /* SR (Seamless Redundancy) port type 2413 (bcmFieldPortSRTypeXXX) assigned to 2414 the destination port */ 2415 bcmFieldQualifySrcPortSRRoleInterlink = 650, /* Indicates whether the SR role for the 2416 source is an interlink */ 2417 bcmFieldQualifyDstPortSRRoleInterlink = 651, /* Indicates whether the SR role for the 2418 destination is an interlink */ 2419 bcmFieldQualifySrcPortSRMode = 652, /* The SR port mode 2420 (bcmFieldSRPortModeXXX) assigned to 2421 the source port */ 2422 bcmFieldQualifyDstPortSRMode = 653, /* The SR port mode 2423 (bcmFieldSRPortModeXXX) assigned to 2424 the destination port */ 2425 bcmFieldQualifySrcPortSRNetId = 654, /* The SR NET ID (0~7) assigned to the 2426 source port */ 2427 bcmFieldQualifyDstPortSRNetId = 655, /* The SR NET ID (0~7) assigned to the 2428 destination port */ 2429 bcmFieldQualifySrcPortSRLanId = 656, /* The SR LAN ID (0 for LAN A and 1 for 2430 LAN B) assigned to the source port */ 2431 bcmFieldQualifyDstPortSRLanId = 657, /* The SR LAN ID (0 for LAN A and 1 for 2432 LAN B) assigned to the destination 2433 port */ 2434 bcmFieldQualifySRTagType = 658, /* The SR (Seamless Redundancy) tag type 2435 (bcmFieldSRTagTypeXXX) identified in 2436 this packet */ 2437 bcmFieldQualifySRLanId = 659, /* The SR LAN ID (0 for LAN A and 1 for 2438 LAN B) in the SR tag. Valid only if 2439 the packet contains an SR tag. */ 2440 bcmFieldQualifySRNetId = 660, /* The SR NET ID (0~7) in the SR tag. 2441 Valid only if the packet contains an 2442 SR tag. */ 2443 bcmFieldQualifyVlanSREnable = 661, /* Indicates whether SR (Seamless 2444 Redundancy) is enabled in this VLAN */ 2445 bcmFieldQualifyVlanSRLanId = 662, /* Indicates the SR LAN ID (0 for LAN A 2446 and 1 for LAN B) for this VLAN. Valid 2447 only if SR is enabled for this VLAN. */ 2448 bcmFieldQualifySRFlowId = 663, /* SR flow ID for the SR flow that the 2449 packet belongs to */ 2450 bcmFieldQualifyL2DestSRNodeType = 664, /* SR node type (bcmFieldSRNodeTypeXXX) 2451 for the destination address */ 2452 bcmFieldQualifySRNetIdMatched = 665, /* Indicates whether the SR packet's NET 2453 ID matches the configured NET ID on 2454 the destination port */ 2455 bcmFieldQualifySRSrcNodeIsSan = 666, /* Indicates whether the source address 2456 belongs to an SR SAN node */ 2457 bcmFieldQualifySRSupervisionType = 667, /* The SR supervision type 2458 (bcmFieldSRSupervisionTypeXXX) if 2459 it's an SR supervision packet */ 2460 bcmFieldQualifySRError = 668, /* Indicates SR errors for the packet */ 2461 bcmFieldQualifyL2SrcMulticastHit = 669, /* Indicates L2 source address found on 2462 the correct multicast group. */ 2463 bcmFieldQualifyL2DstMulticastHit = 670, /* Indicates L2 destination address 2464 found and result is a multicast 2465 group. */ 2466 bcmFieldQualifySRDuplicate = 671, /* SR (Seamless Redundancy): Indicates 2467 whether this packet is a duplicate SR 2468 packet */ 2469 bcmFieldQualifyTsnFlowId = 672, /* TSN (Time-Sensitive Networking) flow 2470 ID for the TSN flow that the packet 2471 belongs to */ 2472 bcmFieldQualifyExternalValue6 = 673, /* External lookup 6 value */ 2473 bcmFieldQualifyExternalValue7 = 674, /* External lookup 7 value */ 2474 bcmFieldQualifyExternalHit6 = 675, /* External lookup 6 hit */ 2475 bcmFieldQualifyExternalHit7 = 676, /* External lookup 7 hit */ 2476 bcmFieldQualifyMirrorDest = 677, /* Link Layer mirror command value */ 2477 bcmFieldQualifyPacketIsIEEE1588 = 678, /* Indicating whether the packet is 1588 */ 2478 bcmFieldQualifyIEEE1588Encapsulation = 679, /* IEEE-1588 Encapsulation according to 2479 bcm_field_IEEE1588Encap_t */ 2480 bcmFieldQualifyIEEE1588CompensateTimeStamp = 680, /* IEEE-1588 update time stamp */ 2481 bcmFieldQualifyIEEE1588Command = 681, /* Command used by egress pipeline, 2482 indicating if CF(correction field) 2483 needs to be update */ 2484 bcmFieldQualifyIEEE1588HeaderOffset = 682, /* This field indicates the offset of 2485 the IEEE-1588 header. Offset in bytes */ 2486 bcmFieldQualifyHeaderFormatExtension = 683, /* Qualify on header format extension 2487 from profile of header format */ 2488 bcmFieldQualifyMacSecTagPresent = 684, /* Qualifies the MACSEC tagged packets */ 2489 bcmFieldQualifyMacSecTag = 685, /* Qualifies on the SecTag field in 2490 MACSEC tagged packets */ 2491 bcmFieldQualifyMacSecDstMacRangeHit = 686, /* Qualifies hit on Destination MAC 2492 addresses range; which is configured 2493 by API 2494 bcm_field_macsec_DstMacRange_set */ 2495 bcmFieldQualifyFromMacSecPort = 687, /* Packet forwarded through the internal 2496 MACSEC port */ 2497 bcmFieldQualifyMacSecFlow = 688, /* Qualifies on the MACSEC packet flow */ 2498 bcmFieldQualifyEgressBridgedForwardingDataHigh = 689, /* Used for ACL-while-bridging. Contains 2499 the 64 bits of packet data starting 2500 80 bits after SA */ 2501 bcmFieldQualifyEgressBridgedForwardingDataLow = 690, /* Used for ACL-while-bridging. Contains 2502 the 56 bits of packet data starting 2503 144 bits after SA */ 2504 bcmFieldQualifyEgressBridgedAclDataHigh = 691, /* Used for ACL-while-bridging. Contains 2505 the 40 bits of packet data starting 2506 200 bits after SA */ 2507 bcmFieldQualifyEgressBridgedAclDataLow = 692, /* Used for ACL-while-bridging. 2508 Contains the 32 bits of packet data 2509 starting 240 bits after SA */ 2510 bcmFieldQualifySysHdrType = 693, /* Qualifier is to match on incoming 2511 packet system header type */ 2512 bcmFieldQualifySubportTagPresent = 694, /* Match on packet's subport tag */ 2513 bcmFieldQualifyNetworkTagType = 695, /* Match on Network (VnTag/Etag) */ 2514 bcmFieldQualifyCnTagPresent = 696, /* Match on congestion tag */ 2515 bcmFieldQualifyL2PktType = 697, /* Match on L2 Packet Type 2516 (Ethernet/Snap/Llc/None) */ 2517 bcmFieldQualifyPktType = 698, /* Match on Packet type after L2 header */ 2518 bcmFieldQualifyMplsCwPresent = 699, /* Match on MPLS Control word */ 2519 bcmFieldQualifyMplsMcastEthertypePresent = 700, /* Match on Multicast MPLS EtherType */ 2520 bcmFieldQualifyIpv4OptionHdrType = 701, /* Match on IPv4 Option header types. */ 2521 bcmFieldQualifyIpv6ExtensionHdrType = 702, /* Match on IPv6 Extension header types. */ 2522 bcmFieldQualifyOverlayVlanFormat = 703, /* Match on Overlay vlan tag format. */ 2523 bcmFieldQualifyOverlayL2PktType = 704, /* Match on Overlay L2 Packet type */ 2524 bcmFieldQualifyOverlayPktType = 705, /* Match on Overlay Packet type */ 2525 bcmFieldQualifyOverlayIpv4OptionHdrType = 706, /* Match on Overlay IPv4 option header 2526 types */ 2527 bcmFieldQualifyOverlayIpv6ExtensionHdrType = 707, /* Match on Overlay IPv6 option header 2528 types */ 2529 bcmFieldQualifyFrontPanelPkt = 708, /* Match on packets incoming from Front 2530 panel ports */ 2531 bcmFieldQualifyHiGigProxyTunnelType = 709, /* Match on incoming HiGig Proxy tunnel 2532 types */ 2533 bcmFieldQualifyIpFragPkt = 710, /* Match on IP Fragment packet */ 2534 bcmFieldQualifyOuterPriTaggedPkt = 711, /* Match on Outer priority tagged packet */ 2535 bcmFieldQualifyIpInIpPkt = 712, /* Match on IP in IP packet */ 2536 bcmFieldQualifyIpmcV4Pkt = 713, /* Match on packets with IPMC IPv4 2537 packet */ 2538 bcmFieldQualifyIpmcV6Pkt = 714, /* Match on packets with IPMC IPv6 2539 packet */ 2540 bcmFieldQualifyIpChecksumOkPkt = 715, /* Match on IP packet with Checksum OK */ 2541 bcmFieldQualifyNetworkTagMulticastPkt = 716, /* Match on multicast packets with VNTAG 2542 or ETAG */ 2543 bcmFieldQualifyIpTtlZeroPkt = 717, /* Match on IP packet with Zero TTL 2544 value */ 2545 bcmFieldQualifyPimBidirDfStatus = 718, /* Match on PIM Bi-directional 2546 Designated Forwarder status */ 2547 bcmFieldQualifyInterfaceClassL2Type = 719, /* Qualifier is to to indicate whether 2548 the Interface L2 Class ID is from VFI 2549 or VLAN */ 2550 bcmFieldQualifyIntPktVersionOne = 720, /* Match on the INT (Inband-Telemetry) 2551 Version One. The data '1' indicates 2552 the INT version is set to 1, 0 2553 indicates version other than 1. */ 2554 bcmFieldQualifyIntPktOverflowed = 721, /* Match on the INT (Inband-Telemetry) 2555 Header Overflow Bit. The data '1' 2556 indicates the frame is full of 2557 telemetry information. The INT header 2558 current length exceeds max length and 2559 can't add any more metadata to it. */ 2560 bcmFieldQualifyIntPktLengthValid = 722, /* Match on the INT (Inband-Telemetry) 2561 valid length, the data '1' indicates 2562 the difference between INT Header max 2563 length and current length is greater 2564 than INT Metadata length, that is the 2565 frame is capable of accommodating INT 2566 metadata. */ 2567 bcmFieldQualifyIntPktType = 723, /* Match on the INT (Inband-Telemetry) 2568 Message Type (bcmFieldIntPktTypeXX). */ 2569 bcmFieldQualifyIntPktFinalHop = 724, /* Match on the INT (Inband-Telemetry) 2570 Maximum Hop Limit Check, the data '1' 2571 indicates INT exceeds Max Hop Count 2572 (Hop Limit >= Hop Count). */ 2573 bcmFieldQualifyTunnelSubType = 725, /* TunnelType (bcmFieldTunnelSubTypeXXX 2574 in bcm_field_tunnel_subtype_t). */ 2575 bcmFieldQualifyNshServicePathId = 726, /* Match on NSH Service Path ID. */ 2576 bcmFieldQualifyNshServiceIndex = 727, /* Match on NSH Service Index. */ 2577 bcmFieldQualifyKeyGenVar = 728, /* Match on Key Gen Var */ 2578 bcmFieldQualifyRoeFrameType = 729, /* Match on Roe frame type set in MPLS 2579 entry for a MPLS packet or based on 2580 UDP port number for an IP tunnel 2581 packet. Roe frame types are defined 2582 by bcm_field_roe_frame_type_t. */ 2583 bcmFieldQualifyBfdGoodPkt = 730, /* Match on BFD Good packet (Good here 2584 represents the valid TTL range for 2585 1-hop and M-hop). */ 2586 bcmFieldQualifyBfdPktWithDstIpLoopbackAddr = 731, /* Match whether the incoming BFD packet 2587 has destination loopback IP Address. */ 2588 bcmFieldQualifyMplsControlPkt = 732, /* Match on MPLS Control Packet (packet 2589 with VCCV_1/2/3/4 and 2590 [LSP]/GAL/G-ACH). */ 2591 bcmFieldQualifyStageIngressFlowtracker = 733, /* Field Processor pipeline ingress 2592 flowtracker stage. */ 2593 bcmFieldQualifyInterfaceClassMplsLookup1 = 734, /* Qualifies on Class identifier derived 2594 from MPLS label 1 entry Lookup. */ 2595 bcmFieldQualifyInterfaceClassMplsLookup2 = 735, /* Qualifies on Class identifier derived 2596 from MPLS label 2 entry Lookup. */ 2597 bcmFieldQualifyInterfaceClassMplsLookup3 = 736, /* Qualifies on Class identifier derived 2598 from MPLS label 3 entry Lookup. */ 2599 bcmFieldQualifyInterfaceClassL3Tunnel = 737, /* Qualifies on Class identifier derived 2600 from L3 Tunnel. */ 2601 bcmFieldQualifyBfdPktVersionOne = 738, /* Match on BFD Version One. The data 2602 '1' indicates the version as 1, 0 2603 indicates version other than 1. */ 2604 bcmFieldQualifyGenevePktVersionZero = 739, /* Match on Geneve Version Zero. The 2605 data '1' indicates the version as 0, 2606 '0' indicates version other than 0. */ 2607 bcmFieldQualifyGpePktVersionZero = 740, /* Match on Gpe Version Zero. The data 2608 '1' indicates the version as 0, '0' 2609 indicates version other than 0. */ 2610 bcmFieldQualifyGenevePktWithOam = 741, /* Match on BFD over Geneve Packet. */ 2611 bcmFieldQualifyGpePktWithOam = 742, /* Match on BFD over Gpe Packet. */ 2612 bcmFieldQualifyInnerBfdPktVersionOne = 743, /* Match on Inner BFD Version One. The 2613 data '1' indicates the version as 1, 2614 0 indicates version other than 1. */ 2615 bcmFieldQualifyPktDstAddrType = 744, /* Match on Packet destination address 2616 type. */ 2617 bcmFieldQualifyPktInnerDstAddrType = 745, /* Match on Packet inner destination 2618 address type. */ 2619 bcmFieldQualifyInnerL4Ports = 746, /* Four bytes after Inner L3 header are 2620 available. */ 2621 bcmFieldQualifyTafEnable = 747, /* Qualifies on TAF (Time Aware 2622 Filtering) enable */ 2623 bcmFieldQualifyTafGateId = 748, /* Qualifies on TAF(Time Aware 2624 Filtering) gate id */ 2625 bcmFieldQualifyTafGateState = 749, /* Qualifies on TAF(Time Aware 2626 Filtering) gate state */ 2627 bcmFieldQualifyTafCosProfile = 750, /* Qualifies on TAF(Time Aware 2628 Filtering) CoS profile */ 2629 bcmFieldQualifyElkRangeL4DstPort = 751, /* Qualifies for L4 Dst port of ELK 2630 range */ 2631 bcmFieldQualifyElkRangeL4SrcPort = 752, /* Qualifies for L4 Src port of ELK 2632 range */ 2633 bcmFieldQualifyIp6PktNextHeader = 753, /* Qualifies for Next Header protocol 2634 field in IPv6 header. */ 2635 bcmFieldQualifyIp6PktHopLimit = 754, /* Qualifies for Hop limit protocol 2636 field in IPv6 header. */ 2637 bcmFieldQualifyIp6PktTrafficClass = 755, /* Qualifies for Traffic Class protocol 2638 field in IPv6 header. */ 2639 bcmFieldQualifyInnerIp6PktNextHeader = 756, /* Qualifies for Next Header protocol 2640 field in Inner IPv6 header. */ 2641 bcmFieldQualifyInnerIp6PktHopLimit = 757, /* Qualifies for Hop limit protocol 2642 field in Inner IPv6 header. */ 2643 bcmFieldQualifyInnerIp6PktTrafficClass = 758, /* Qualifies for Traffic Class protocol 2644 field in Inner IPv6 header. */ 2645 bcmFieldQualifyIpTunnelTtl = 759, /* Qualifies on outer TTL for IP Tunnels 2646 and Vxlan */ 2647 bcmFieldQualifyIpTunnelTtlClassZero = 760, /* Qualifies on outer TTL class for IP 2648 Tunnels and Vxlan */ 2649 bcmFieldQualifyRangeCheckGroup = 761, /* Range Group Identifier for a set of 2650 Range IDs. */ 2651 bcmFieldQualifyFlowtrackerGroupId = 762, /* Qualifies on Flow group id 2652 assigned(bcmFieldActionFlowtrackerGroupId) 2653 by FlowTracker based Field Processor 2654 Stage. */ 2655 bcmFieldQualifyFlowtrackerClassId = 763, /* Qualifies on Classifier ID from 2656 Flowtracker group */ 2657 bcmFieldQualifyFlowtrackerGroupValid = 764, /* Qualifies on event Flowtracker group 2658 valid status */ 2659 bcmFieldQualifyFlowtrackerDisabled = 765, /* Qualifies on event whether 2660 Flowtracker flow tracking is 2661 disabled. */ 2662 bcmFieldQualifyFlowtrackerMeteringExceeded = 766, /* Qualifies on the event whether 2663 Flowtracker metering is exceeded. */ 2664 bcmFieldQualifyFlowtrackerCollectorCopy = 767, /* Qualifies on the event whether 2665 initial or sample copied to collector 2666 happened by Flowtracker. */ 2667 bcmFieldQualifyFlowtrackerFlowTableFull = 768, /* Qualifies on the Flowtracker event 2668 whether the flow table is full. */ 2669 bcmFieldQualifyFlowtrackerGroupFlowExceeded = 769, /* Qualifies on the event whether flow 2670 limit for Flowtracker is exceeded. */ 2671 bcmFieldQualifyFlowtrackerExportQueueFull = 770, /* Qualifies on the event whether 2672 Flowtracker export queue is full. */ 2673 bcmFieldQualifyOpaqueTagType = 771, /* Qualifies on the tag type configured 2674 for opaque tags. */ 2675 bcmFieldQualifyOpaqueTagHigh = 772, /* Qualifies on the higher 32 bits of 2676 opaque tag. */ 2677 bcmFieldQualifyOpaqueTagLow = 773, /* Qualifies on the lower 32 bits of 2678 opaque tag. */ 2679 bcmFieldQualifyInnerDosAttack = 774, /* Denial of Service attack in inner 2680 headers of frame. */ 2681 bcmFieldQualifyDosAttackEvents = 775, /* Qualifies on the dos attack events in 2682 outer header of frame. */ 2683 bcmFieldQualifyInnerDosAttackEvents = 776, /* Qualifies on the dos attack events in 2684 inner header of frame. */ 2685 bcmFieldQualifySrcTMPort = 777, /* Qualifies on source TM port. */ 2686 bcmFieldQualifyContainer = 778, /* This qualifier will be used as 2687 container in IPMF3, to receive the 2688 action buffer, when performing 2689 cascading between IPMF2 and IPMF3. */ 2690 bcmFieldQualifyEgressForwardingClassId = 779, /* Qualifies on the Class Identifier 2691 assigned by Egress Adaptation 2692 forwarding tables. */ 2693 bcmFieldQualifyPktFlowType = 780, /* Pseudo Qualifier to define the flow 2694 for the rules configured to match on 2695 qualifiers related to zone match Ids. */ 2696 bcmFieldQualifyVlanTranslateClassId = 781, /* Qualifies on the Class Identifier 2697 assigned by Vlan Translate tables. */ 2698 bcmFieldQualifyIpIdentifier = 782, /* Qualifies on 16-bits Identifier field 2699 available in IP Header. */ 2700 bcmFieldQualifyTcpWindowSize = 783, /* Qualifies on the Tcp Window protocol 2701 field in TCP header of the packet. */ 2702 bcmFieldQualifyIp4Length = 784, /* Qualifies on the total length 2703 protocol field of IPv4 header of the 2704 packet. */ 2705 bcmFieldQualifyIp6Length = 785, /* Qualifies on the payload Length 2706 protocol field of IPv6 header of the 2707 packet. */ 2708 bcmFieldQualifyTunnelPayloadIp4Length = 786, /* Qualifies on the total length 2709 protocol field of inner IPv4 header 2710 of the packet. */ 2711 bcmFieldQualifyTunnelPayloadIp6Length = 787, /* Qualifies on the payload Length 2712 protocol field of inner IPv6 header 2713 of the packet. */ 2714 bcmFieldQualifyGbpPresent = 788, /* When set matches on GBP Presence. */ 2715 bcmFieldQualifyHiGigGbpPresent = 789, /* When set matches on presence of GBP 2716 Source ID, present after L2 Tag, 2717 carried to the remote device, via 2718 HiGig.. */ 2719 bcmFieldQualifyGbpSrcId = 790, /* Qualifies on the GBP Source ID of the 2720 packet. */ 2721 bcmFieldQualifyVxlanGbpPresent = 791, /* When set matches on Vxlan GBP 2722 presence flag. */ 2723 bcmFieldQualifyFlowtrackerCheck = 792, /* Qualifies on the results of 2724 Flowtracker checker events in Flow 2725 Tracker Module. */ 2726 bcmFieldQualifyFlowtrackerLearn = 793, /* Match on packet which was learnt by 2727 Flowtracker module */ 2728 bcmFieldQualifyCosMapSelect = 794, /* Match on the COS map type */ 2729 bcmFieldQualifyOpaqueObject1 = 795, /* Matches on Opaque Object1 */ 2730 bcmFieldQualifyOpaqueObject2 = 796, /* Matches on Opaque Object2 */ 2731 bcmFieldQualifyOpaqueObject3 = 797, /* Matches on Opaque Object3 */ 2732 bcmFieldQualifyOpaqueObject4 = 798, /* Matches on Opaque Object4 */ 2733 bcmFieldQualifyIncomingOuterVlanId = 799, /* Qualifies on the packet?s Incoming 2734 Outer VLAN ID */ 2735 bcmFieldQualifyGbpDstId = 800, /* Qualifies on the GBP Destination ID 2736 of the packet */ 2737 bcmFieldQualifyHiGigGbpSrcId = 801, /* Qualifies on GBP Source ID, present 2738 after L2 Tag, carried to the remote 2739 device, via HiGig. */ 2740 bcmFieldQualifyLoopbackSubtype = 802, /* Qualifies on subtype of the Loopback 2741 header */ 2742 bcmFieldQualifyPphPresent = 803, /* Qualifies on PPH present field in 2743 ITMH. */ 2744 bcmFieldQualifyPacketProcessingInVportClass = 804, /* Qualifies on PPH In-LIF profile. */ 2745 bcmFieldQualifyUDHBase0 = 805, /* Qualifies UDH0 base value */ 2746 bcmFieldQualifyUDHBase1 = 806, /* Qualifies UDH1 base value */ 2747 bcmFieldQualifyUDHBase2 = 807, /* Qualifies UDH2 base value */ 2748 bcmFieldQualifyUDHBase3 = 808, /* Qualifies UDH3 base value */ 2749 bcmFieldQualifyNetworkQos = 809, /* Qualify Upon Network Qos. */ 2750 bcmFieldQualifyAceEntryId = 810, /* Qualify Upon ACE entry ID. */ 2751 bcmFieldQualifyIp4Protocol = 811, /* Qualify Upon IPv4 Protocol. */ 2752 bcmFieldQualifyIp4Tos = 812, /* Qualify Upon IPv4 TOS. */ 2753 bcmFieldQualifyIp4Ttl = 813, /* Qualify Upon IPv4 TTL. */ 2754 bcmFieldQualifyInVportDataIndex = 814, /* Qualifies upon the ingress logical 2755 port data index. */ 2756 bcmFieldQualifyEtherTypeUntagged = 815, /* Ethernet Type, only for untagged 2757 frames. */ 2758 bcmFieldQualifyNetworkLoadBalanceKeyInitial = 816, /* Qualifies on the initial Network Load 2759 Balancing key. */ 2760 bcmFieldQualifyNetworkLoadBalanceKey = 817, /* Qualifies on the Network Load 2761 Balancing key, after ingress PMF1 2762 stage */ 2763 bcmFieldQualifyEcmpLoadBalanceKey0Initial = 818, /* Qualifies on the initial ECMP Load 2764 Balancing key 0. */ 2765 bcmFieldQualifyEcmpLoadBalanceKey0 = 819, /* Qualifies on the ECMP Load Balancing 2766 key 0, after ingress PMF1 stage */ 2767 bcmFieldQualifyEcmpLoadBalanceKey1Initial = 820, /* Qualifies on the initial ECMP Load 2768 Balancing key 1. */ 2769 bcmFieldQualifyEcmpLoadBalanceKey1 = 821, /* Qualifies on the ECMP Load Balancing 2770 key 1, after ingress PMF1 stage */ 2771 bcmFieldQualifyEcmpLoadBalanceKey2Initial = 822, /* Qualifies on the initial ECMP Load 2772 Balancing key 2. */ 2773 bcmFieldQualifyEcmpLoadBalanceKey2 = 823, /* Qualifies on the ECMP Load Balancing 2774 key 2, after ingress PMF1 stage */ 2775 bcmFieldQualifyTrunkLoadBalanceKeyInitial = 824, /* Qualifies on the initial LAG Load 2776 Balancing Key */ 2777 bcmFieldQualifyStateTableKey = 825, /* Qualifies on the memory index which 2778 the state data is set */ 2779 bcmFieldQualifyStateTableData = 826, /* Qualifies on the state table payload. */ 2780 bcmFieldQualifyCompareKeysResult0 = 827, /* Qualifies on the Result of comparing 2781 the first pair of initial keys */ 2782 bcmFieldQualifyCompareKeysResult1 = 828, /* Qualifies on the Result of comparing 2783 the second pair of initial keys */ 2784 bcmFieldQualifyCompareKeysTcam0 = 829, /* Qualifies on the Result of comparing 2785 initial key and TCAM result 0 */ 2786 bcmFieldQualifyCompareKeysTcam1 = 830, /* Qualifies on the Result of comparing 2787 initial key and TCAM result 1. */ 2788 bcmFieldQualifyLayerRecordType = 831, /* Qualifies on the Layer Record Type. */ 2789 bcmFieldQualifyLayerRecordOffset = 832, /* Qualifies on the Layer Record Offset. */ 2790 bcmFieldQualifyLayerRecordQualifier = 833, /* Qualifies on the Layer Record 2791 Qualifier (info). */ 2792 bcmFieldQualifyUDHBase = 834, /* User define header base, used in 2793 IPMF3. */ 2794 bcmFieldQualifyForwardingLayerIndex = 835, /* Qualifies on the Forwarding Layer 2795 Index. */ 2796 bcmFieldQualifyIPTProfile = 836, /* Qualifies upon IPT Profile. */ 2797 bcmFieldQualifyAcInLifWideData = 837, /* Qualifies on the Ac in-lif 2798 wide(generic) data */ 2799 bcmFieldQualifyNativeAcInLifWideData = 838, /* Qualifies on the native Ac in-lif 2800 wide(generic) data */ 2801 bcmFieldQualifyForwardingProfile = 839, /* Qualifies on the Forwarding Profile. */ 2802 bcmFieldQualifyContextId = 840, /* Qualifies on the Context Id. */ 2803 bcmFieldQualifyForwardingLayerQualifier = 841, /* Qualifies on the Forwarding Layer 2804 Qualifier. */ 2805 bcmFieldQualifyTracePacket = 842, /* Qualifies on the Trace Packet. */ 2806 bcmFieldQualifyTrunkLoadBalanceKey = 843, /* Qualifies on the LAG Load Balancing 2807 Key. */ 2808 bcmFieldQualifyForward = 844, /* Raw data for destination. */ 2809 bcmFieldQualifyParsingStartType = 845, /* Qualifies on the layer type that 2810 egress parser should consider. */ 2811 bcmFieldQualifyParsingStartOffset = 846, /* Qualifies on which offset egress 2812 parser should start parsing. */ 2813 bcmFieldQualifyUDHData0 = 847, /* Qualifies on user defined header 0 2814 data. */ 2815 bcmFieldQualifyUDHData1 = 848, /* Qualifies on user defined header 1 2816 data. */ 2817 bcmFieldQualifyUDHData2 = 849, /* Qualifies on user defined header 2 2818 data. */ 2819 bcmFieldQualifyUDHData3 = 850, /* Qualifies on user defined header 3 2820 data. */ 2821 bcmFieldQualifyRxSnoopStrength = 851, /* Qualifies on Snoop strength. */ 2822 bcmFieldQualifyRxSnoopCode = 852, /* Qualifies on Snoop code. */ 2823 bcmFieldQualifyVisibility = 853, /* Qualifies on whether visibility is 2824 set. */ 2825 bcmFieldQualifyVisibilityClear = 854, /* Qualifies on whether visibility is 2826 clear. */ 2827 bcmFieldQualifyEthernetMulticast = 855, /* Qualify on Ethernet packets which 2828 destination MAC address is multicast 2829 (MAC-DA[40] is set). */ 2830 bcmFieldQualifyEthernetBroadcast = 856, /* Qualify on Ethernet packets which 2831 destination MAC address is broadcast 2832 (MAC-DA[47:0] is all 1). */ 2833 bcmFieldQualifyEthernetFirstTpidExist = 857, /* Qualify on Ethernet packets which 2834 their first Vlan TPID exists. */ 2835 bcmFieldQualifyEthernetFirstTpidIndex = 858, /* Qualify on Ethernet packets first 2836 Vlan TPID Index. */ 2837 bcmFieldQualifyEthernetSecondTpidExist = 859, /* Qualify on Ethernet packets which 2838 their second Vlan TPID exists. */ 2839 bcmFieldQualifyEthernetSecondTpidIndex = 860, /* Qualify on Ethernet packets second 2840 Vlan TPID Index. */ 2841 bcmFieldQualifyEthernetThirdTpidExist = 861, /* Qualify on Ethernet packets which 2842 their third Vlan TPID exists. */ 2843 bcmFieldQualifyEthernetThirdTpidIndex = 862, /* Qualify on Ethernet packets third 2844 Vlan TPID Index. */ 2845 bcmFieldQualifyIpHasOptions = 863, /* Qualify on IPv4 packets where the IP 2846 Header include options. */ 2847 bcmFieldQualifyIpFirstFrag = 864, /* Qualify on IPv4 packets where the IP 2848 Header is fragmented and this is the 2849 first fragment. */ 2850 bcmFieldQualifyIpTunnelType = 865, /* Qualify on IPv4 TunnelType 2851 (bcmFieldTunnelXXX). */ 2852 bcmFieldQualifyIp6MulticastCompatible = 866, /* Qualify on IPv6 packets which their 2853 DIP is Multicast (8msb are 0xFF). */ 2854 bcmFieldQualifyIp6FirstAdditionalHeaderExist = 867, /* Qualify on IPv6 packets first 2855 additional header exists. */ 2856 bcmFieldQualifyItmhExtensionExist = 868, /* Qualify if Ingress TM Header 2857 extension exists. */ 2858 bcmFieldQualifyItmhDestinationFec = 869, /* Qualify if Ingress TM Header 2859 destination is FEC. */ 2860 bcmFieldQualifyItmhPphType = 870, /* Qualify on Ingress TM Header PPH 2861 type. */ 2862 bcmFieldQualifyStatSamplingCode = 871, /* Qualify on Statistic Sampling code 2863 value. */ 2864 bcmFieldQualifyStatSamplingQualifier = 872, /* Qualify on Statistic Sampling 2865 qualifier value. */ 2866 bcmFieldQualifyRpfEcmpMode = 873, /* Qualify on RPF ECMP MODE value. */ 2867 bcmFieldQualifyStatOamLM = 874, /* Qualify on OAM LM counter value. */ 2868 bcmFieldQualifyInInterface = 875, /* Qualify on the in LIF encoded as 2869 interface. */ 2870 bcmFieldQualifyOutInterface = 876, /* Qualify on the out LIF encoded as 2871 interface */ 2872 bcmFieldQualifyInVportClass = 877, /* Qualify on the profile of an in LIF 2873 encoded as Gport. */ 2874 bcmFieldQualifyOutVportClass = 878, /* Qualify on the profile of an out LIF 2875 encoded as Gport. */ 2876 bcmFieldQualifyInterfaceClass = 879, /* Qualify on the profile of a LIF 2877 encoded as interface. */ 2878 bcmFieldQualifyPortClassPacketProcessing = 880, /* Qualify on the profile of a packet 2879 processing port. */ 2880 bcmFieldQualifyPortClassTrafficManagement = 881, /* Qualify on the profile of a traffic 2881 management port. */ 2882 bcmFieldQualifyOutPortTrafficManagement = 882, /* Qualify upon out-TM port. */ 2883 bcmFieldQualifyMulticastRpfMode = 883, /* Qualify upon Multicast RPF Mode. */ 2884 bcmFieldQualifyTpid = 884, /* Qualify upon VLAN TPID. */ 2885 bcmFieldQualifyVlanId = 885, /* Qualify upon VLAN tag Id. */ 2886 bcmFieldQualifyVlanPri = 886, /* Qualify upon VLAN priority. */ 2887 bcmFieldQualifyVlanCfi = 887, /* Qualify upon VLAN Cfi. */ 2888 bcmFieldQualifyVlanPriCfi = 888, /* Qualify upon VLAN Cfi+Pri (4 bits). */ 2889 bcmFieldQualifyVlan = 889, /* Qualify upon VLAN Tag. */ 2890 bcmFieldQualifyMplsLabel = 890, /* Qualify upon MPLS Label. */ 2891 bcmFieldQualifyMplsLabelId = 891, /* Qualify upon ID field of the MPLS 2892 Label. */ 2893 bcmFieldQualifyMplsLabelTtl = 892, /* Qualify upon TTL field of the MPLS 2894 Label. */ 2895 bcmFieldQualifyMplsLabelBos = 893, /* Qualify upon BOS field of the MPLS 2896 Label. */ 2897 bcmFieldQualifyMplsLabelExp = 894, /* Qualify upon EXP field of the MPLS 2898 Label. */ 2899 bcmFieldQualifyInVPort0 = 895, /* Ingress virtual port 0. */ 2900 bcmFieldQualifyInVPort1 = 896, /* Ingress virtual port 1. */ 2901 bcmFieldQualifyOutVPort0 = 897, /* Egress virtual port 0. */ 2902 bcmFieldQualifyOutVPort1 = 898, /* Egress virtual port 1. */ 2903 bcmFieldQualifyOutVPort2 = 899, /* Egress virtual port 2. */ 2904 bcmFieldQualifyOutVPort3 = 900, /* Egress virtual port 3. */ 2905 bcmFieldQualifyBierStringOffset = 901, /* Qualifies upon Bier string offset. */ 2906 bcmFieldQualifyBierStringSize = 902, /* Qualifies upon Bier string size. */ 2907 bcmFieldQualifyPacketIsBier = 903, /* Qualifies upon Bier packets. */ 2908 bcmFieldQualifyPortClassPacketProcessingGeneralData = 904, /* Qualify on the general data profile 2909 of a packet processing port. */ 2910 bcmFieldQualifyForwardingAdditionalInfo = 905, /* Qualifies on the Forwarding 2911 additional info. */ 2912 bcmFieldQualifyInVportClass0 = 906, /* Qualify on the profile of an in LIF 2913 encoded as Gport. */ 2914 bcmFieldQualifyInVportClass1 = 907, /* Qualify on the profile of an in LIF 2915 encoded as Gport. */ 2916 bcmFieldQualifyStatId0 = 908, /* Qualifies on statistics ID 0. */ 2917 bcmFieldQualifyStatId1 = 909, /* Qualifies on statistics ID 1. */ 2918 bcmFieldQualifyStatId2 = 910, /* Qualifies on statistics ID 2. */ 2919 bcmFieldQualifyStatId3 = 911, /* Qualifies on statistics ID 3. */ 2920 bcmFieldQualifyStatId4 = 912, /* Qualifies on statistics ID 4. */ 2921 bcmFieldQualifyStatId5 = 913, /* Qualifies on statistics ID 5. */ 2922 bcmFieldQualifyStatId6 = 914, /* Qualifies on statistics ID 6. */ 2923 bcmFieldQualifyStatId7 = 915, /* Qualifies on statistics ID 7. */ 2924 bcmFieldQualifyStatId8 = 916, /* Qualifies on statistics ID 8. */ 2925 bcmFieldQualifyStatId9 = 917, /* Qualifies on statistics ID 9. */ 2926 bcmFieldQualifyStatProfile0 = 918, /* Qualifies on statistics profile 0. */ 2927 bcmFieldQualifyStatProfile1 = 919, /* Qualifies on statistics profile 1. */ 2928 bcmFieldQualifyStatProfile2 = 920, /* Qualifies on statistics profile 2. */ 2929 bcmFieldQualifyStatProfile3 = 921, /* Qualifies on statistics profile 3. */ 2930 bcmFieldQualifyStatProfile4 = 922, /* Qualifies on statistics profile 4. */ 2931 bcmFieldQualifyStatProfile5 = 923, /* Qualifies on statistics profile 5. */ 2932 bcmFieldQualifyStatProfile6 = 924, /* Qualifies on statistics profile 6. */ 2933 bcmFieldQualifyStatProfile7 = 925, /* Qualifies on statistics profile 7. */ 2934 bcmFieldQualifyStatProfile8 = 926, /* Qualifies on statistics profile 8. */ 2935 bcmFieldQualifyStatProfile9 = 927, /* Qualifies on statistics profile 9. */ 2936 bcmFieldQualifyExtStat0 = 928, /* Qualifies on External Statistics ID 2937 0. */ 2938 bcmFieldQualifyExtStat1 = 929, /* Qualifies on External Statistics ID 2939 1. */ 2940 bcmFieldQualifyExtStat2 = 930, /* Qualifies on External Statistics ID 2941 2. */ 2942 bcmFieldQualifyExtStat3 = 931, /* Qualifies on External Statistics ID 2943 3. */ 2944 bcmFieldQualifyExtStatProfile0 = 932, /* Qualifies on External Statistics 2945 profile 0. */ 2946 bcmFieldQualifyExtStatProfile1 = 933, /* Qualifies on External Statistics 2947 profile 1. */ 2948 bcmFieldQualifyExtStatProfile2 = 934, /* Qualifies on External Statistics 2949 profile 2. */ 2950 bcmFieldQualifyExtStatProfile3 = 935, /* Qualifies on External Statistics 2951 profile 3. */ 2952 bcmFieldQualifyStatMetaData = 936, /* Qualifies on Statistics meta data. */ 2953 bcmFieldQualifyDstL3EgressUnderlay = 937, /* Qualifies on Underlay destination 2954 egress object id. */ 2955 bcmFieldQualifyDstL3EgressNextHopsUnderlay = 938, /* Consecutive Underlay L3 Egress Next 2956 hops. */ 2957 bcmFieldQualifyEgressClassPort = 939, /* Qualifies on Class ID assigned to 2958 packet based on Egress Port. The 2959 class ID is assigned to egress port 2960 using bcm_port_class_set(unit, port, 2961 bcmPortClassEgress, class_id); */ 2962 bcmFieldQualifyINTProbeMarker1 = 940, /* Qualifies on INT Prober Marker1 2963 field. */ 2964 bcmFieldQualifyINTProbeMarker2 = 941, /* Qualifies on INT Prober Marker2 2965 field. */ 2966 bcmFieldQualifyINTReserved4Bytes = 942, /* Qualifies on INT Reserved 4 bytes 2967 after Prober Marker2 field in the INT 2968 header. */ 2969 bcmFieldQualifyInVPort0Raw = 943, /* Qualifies on In LIF 0 raw value. */ 2970 bcmFieldQualifyInVPort1Raw = 944, /* Qualifies on In LIF 1 raw value. */ 2971 bcmFieldQualifyOutVPort0Raw = 945, /* Qualifies on Out LIF 0 raw value. */ 2972 bcmFieldQualifyOutVPort1Raw = 946, /* Qualifies on Out LIF 1 raw value. */ 2973 bcmFieldQualifyOutVPort2Raw = 947, /* Qualifies on Out LIF 2 raw value. */ 2974 bcmFieldQualifyOutVPort3Raw = 948, /* Qualifies on Out LIF 3 raw value. */ 2975 bcmFieldQualifyAppTypePredefined = 949, /* Qualifies on predefined AppType. */ 2976 bcmFieldQualifyFlowControlType = 950, /* Indicates the type of Flow control 2977 packet. */ 2978 bcmFieldQualifyTimeStampTxPktType = 951, /* Requires BROADCOM_PREMIUM license */ 2979 bcmFieldQualifySysHdrLocalDstport = 952, /* Requires BROADCOM_PREMIUM license */ 2980 bcmFieldQualifyMirrorCode = 953, /* Matches on Mirror Code. */ 2981 bcmFieldQualifyMirrorData = 954, /* Matches on Mirror Data (qualifier). */ 2982 bcmFieldQualifyLearnVsi = 955, /* VSI learnt */ 2983 bcmFieldQualifyLearnData = 956, /* Learn data */ 2984 bcmFieldQualifyLearnStationMove = 957, /* Learn Station move */ 2985 bcmFieldQualifyLearnMatch = 958, /* Learn Match */ 2986 bcmFieldQualifyLearnFound = 959, /* Learn Found */ 2987 bcmFieldQualifyLearnExpectedWon = 960, /* Learn Expected won */ 2988 bcmFieldQualifyVrfValue = 961, /* VRF value part of the forwarding 2989 domain, not including the forwarding 2990 domain type. */ 2991 bcmFieldQualifyInPortWithoutCore = 962, /* The In PP port, not including core ID 2992 (so to be used with care, if not 2993 adding entry by core). */ 2994 bcmFieldQualifyDstSysPortExtPresent = 963, /* FTMH Destination System Port (DSP) 2995 Extension is present. */ 2996 bcmFieldQualifyIpFwdPlusOneNextProtocol = 964, /* IP forward plus one next protocol */ 2997 bcmFieldQualifyMacSecControlPkt = 965, /* Qualifies (based on the action 2998 bcmFieldActionMacSecPktTypeSet 2999 values) MACSEC control packet */ 3000 bcmFieldQualifyMacSecSecTagCbit = 966, /* Qualifies on the C-Bit of MACSEC 3001 SECTAG */ 3002 bcmFieldQualifyMacSecSecTagEbit = 967, /* Qualifies on the E-bit of MACSEC 3003 SECTAG */ 3004 bcmFieldQualifyIOAMNameSpaceIdMatch = 968, /* Requires BROADCOM_PREMIUM license */ 3005 bcmFieldQualifyIOAMPktOverflowed = 969, /* Requires BROADCOM_PREMIUM license */ 3006 bcmFieldQualifyIOAMRemainingLenValid = 970, /* Requires BROADCOM_PREMIUM license */ 3007 bcmFieldQualifySaLookupAcceptedStrength = 971, /* Qualifies on Accepted strength 3008 returned from SA Lookup result */ 3009 bcmFieldQualifyLayerRecordTypeRaw = 972, /* Qualifies on the Layer Record Type. 3010 For possible values look at 3011 bcm_field_layer_type_t, input expects 3012 raw value. */ 3013 bcmFieldQualifySrcPortRaw = 973, /* Qualifies on source port, input 3014 expects raw value. */ 3015 bcmFieldQualifySrcModPortGportRaw = 974, /* Qualifies on Source module/port pair, 3016 input expects raw value. */ 3017 bcmFieldQualifyDstMulticastGroupRaw = 975, /* Qualifies on Multicast Group id, 3018 input expects raw value. */ 3019 bcmFieldQualifyInInterfaceRaw = 976, /* Qualifies on Ingress Logical 3020 Interface (LIF/RIF), input expects 3021 raw value. */ 3022 bcmFieldQualifyOutInterfaceRaw = 977, /* Qualifies on Egress Logical Interface 3023 (LIF/RIF), input expects raw value. */ 3024 bcmFieldQualifyInPortWithoutCoreRaw = 978, /* Qualifies on Ingress Port. Does not 3025 include the core ID, caution should 3026 be taken when not adding entry by 3027 core, input expects raw value. */ 3028 bcmFieldQualifyVlanFormatRaw = 979, /* Qualifies on Incoming vlan structure 3029 format 3030 (untagged/single/double/priority-tagged), 3031 input expects raw value. */ 3032 bcmFieldQualifyInPortRaw = 980, /* Qualifies on Ingress Port. Includes 3033 core ID, and can be used by entries 3034 for all cores, input expects raw 3035 value. */ 3036 bcmFieldQualifyColorRaw = 981, /* Qualifies on packet color, input 3037 expects raw value. */ 3038 bcmFieldQualifyDstGportRaw = 982, /* Qualifies according to destination, 3039 input expects raw value. */ 3040 bcmFieldQualifyDstPortRaw = 983, /* Qualifies on destination port, input 3041 expects raw value. */ 3042 bcmFieldQualifyOutPortRaw = 984, /* Qualifies on Egress port. Does not 3043 include the core ID, caution should 3044 be taken when not adding entry by 3045 core, input expects raw value. */ 3046 bcmFieldQualifyDstRpfValid = 985, /* Checks if the RPF Destination is 3047 valid. */ 3048 bcmFieldQualifyRpfOutVPort = 986, /* Qualifies on the RPF OUT LIF. */ 3049 bcmFieldQualifyRpfOutInterface = 987, /* Qualifies on the RPF OUT LIF. */ 3050 bcmFieldQualifyRpfOutVPortRaw = 988, /* Qualifies on the RPF OUT LIF. Input 3051 expects raw value. */ 3052 bcmFieldQualifyRpfRouteValid = 989, /* Qualifies on the RPF Route valid. */ 3053 bcmFieldQualifyEcmpGroup = 990, /* Qualifies on the ECMP group. */ 3054 bcmFieldQualifyIp4DstMulticast = 991, /* Qualifies on the ECMP group. */ 3055 bcmFieldQualifyIgmpType = 992, /* Internet Group Management Protocol 3056 type. */ 3057 bcmFieldQualifyL2IngressInterface = 993, /* Layer2 ingress interface (L2_IIF). */ 3058 bcmFieldQualifyL3SrcHit = 994, /* Layer3 source hit. */ 3059 bcmFieldQualifyL3DestHit = 995, /* Layer3 destination hit. */ 3060 bcmFieldQualifyL2MacInfo = 996, /* Packet Mac information. */ 3061 bcmFieldQualifyL4Info = 997, /* Packet L4 header Info. */ 3062 bcmFieldQualifyInnerPriTaggedPkt = 998, /* Match on inner priority tagged 3063 packet. */ 3064 bcmFieldQualifyHiGig3Class = 999, /* Match on HiGig3 packet class id. */ 3065 bcmFieldQualifyHiGig3Flags = 1000, /* Match on HiGig3 packet flags. */ 3066 bcmFieldQualifyLoopbackHiGig3Flags = 1001, /* Match on HiGig3 loopback packet 3067 flags. */ 3068 bcmFieldQualifyIpExtensionHdrNum = 1002, /* Number of IP extension headers 3069 present in forwarding header. */ 3070 bcmFieldQualifyIngressL2InterfaceOpaqueCtrlId = 1003, /* Opaque control id from L2_IIF table. */ 3071 bcmFieldQualifyDevicePortOpaqueCommand = 1004, /* Opaque control from device port 3072 table. */ 3073 bcmFieldQualifyIngressInterfaceClass = 1005, /* Interface Class id can come from 3074 either L2_IIF/SVP/L3_IIF ingress 3075 tables. */ 3076 bcmFieldQualifyIngressL3InterfaceOpaqueCtrlId = 1006, /* Opaque control id from L3_IIF table. */ 3077 bcmFieldQualifySvpOpaqueCtrlId = 1007, /* Opaque control id from SVP table. */ 3078 bcmFieldQualifyVpnOpaqueCtrlId = 1008, /* Opaque control id from VFI table. */ 3079 bcmFieldQualifyL2SrcDiscard = 1009, /* L2 Source is discarded. */ 3080 bcmFieldQualifyL2LearnCommands = 1010, /* L2 Learning command bits. */ 3081 bcmFieldQualifyTunnelTermStatus = 1011, /* Tunnel termination status. */ 3082 bcmFieldQualifyLoopbackHdrFlags = 1012, /* Loopback packet header flags. */ 3083 bcmFieldQualifyPacketStatus = 1013, /* Packet status. */ 3084 bcmFieldQualifyForwardingStatus = 1014, /* Packet Forwarding Status. */ 3085 bcmFieldQualifyTunnelAltEtherType = 1015, /* Alternate tunnel EtherType, for 3086 termination flows this is outer L2 3087 header EtherType and for non 3088 termination flows it carries inner L2 3089 header EtherType. */ 3090 bcmFieldQualifyTunnelAltSrcIp = 1016, /* Alternate tunnel source Ipv4, for 3091 termination flows this is outer L3 3092 header SrcIp4 and for non termination 3093 flows it carries inner L3 header 3094 SrcIp4. */ 3095 bcmFieldQualifyTunnelAltSrcIp6 = 1017, /* Alternate tunnel source Ipv6, for 3096 termination flows this is outer L3 3097 header SrcIp6 and for non termination 3098 flows it carries inner L3 header 3099 SrcIp6. */ 3100 bcmFieldQualifyTunnelAltDstIp = 1018, /* Alternate tunnel destination Ipv4, 3101 for termination flows this is outer 3102 L3 header DstIp4 and for non 3103 termination flows it carries inner L3 3104 header DstIp4. */ 3105 bcmFieldQualifyTunnelAltDstIp6 = 1019, /* Alternate tunnel destination Ipv6, 3106 for termination flows this is outer 3107 L3 header DstIp6 and for non 3108 termination flows it carries inner L3 3109 header DstIp6. */ 3110 bcmFieldQualifyTunnelAltIpProtocol = 1020, /* Alternate tunnel Ip protocol, for 3111 termination flows this is outer L3 3112 header protocol and for non 3113 termination flows it carries inner L3 3114 header protocol. */ 3115 bcmFieldQualifyTunnelAltL4SrcPort = 1021, /* Alternate tunnel source L4 port, for 3116 termination flows this is outer L4 3117 header src port and for non 3118 termination flows it carries inner L4 3119 header src port. */ 3120 bcmFieldQualifyTunnelAltL4DstPort = 1022, /* Alternate tunnel destination L4 port, 3121 for termination flows this is outer 3122 L4 header dest port and for non 3123 termination flows it carries inner L4 3124 header dest port. */ 3125 bcmFieldQualifyOuterL2MacInfo = 1023, /* Packet outer Mac information. */ 3126 bcmFieldQualifyOuterIpInfo = 1024, /* Packet outer Ip information. */ 3127 bcmFieldQualifyOuterL4Info = 1025, /* Packet outer L4 header Info. */ 3128 bcmFieldQualifyInnerL2MacInfo = 1026, /* Packet inner Mac information. */ 3129 bcmFieldQualifyInnerIpInfo = 1027, /* Packet inner Ip information. */ 3130 bcmFieldQualifyInnerL4Info = 1028, /* Packet inner L4 header Info. */ 3131 bcmFieldQualifyEffectiveTtl = 1029, /* Effective Ttl of packet computed 3132 based on uniform/pipe mode setting of 3133 tunnel. */ 3134 bcmFieldQualifyFlexStateResultA0 = 1030, /* Flex State Result A0 counter value. */ 3135 bcmFieldQualifyFlexStateResultA1 = 1031, /* Flex State Result A1 counter value. */ 3136 bcmFieldQualifyLastIpProtocol = 1032, /* Ip protocol value from forwarding 3137 header last protocol value. */ 3138 bcmFieldQualifyMplsLabel4 = 1033, /* MPLS Label 4 */ 3139 bcmFieldQualifyMplsLabel4Ttl = 1034, /* TTL field of the fourth MPLS Label */ 3140 bcmFieldQualifyMplsLabel4Bos = 1035, /* BoS field of the fourth MPLS Label */ 3141 bcmFieldQualifyMplsLabel4Exp = 1036, /* Exp field of the fourth MPLS Label */ 3142 bcmFieldQualifyMplsLabel4Id = 1037, /* ID field of the fourth MPLS Label */ 3143 bcmFieldQualifyMplsLabel5 = 1038, /* MPLS Label 5 */ 3144 bcmFieldQualifyMplsLabel5Ttl = 1039, /* TTL field of the fifth MPLS Label */ 3145 bcmFieldQualifyMplsLabel5Bos = 1040, /* BoS field of the fifth MPLS Label */ 3146 bcmFieldQualifyMplsLabel5Exp = 1041, /* Exp field of the fifth MPLS Label */ 3147 bcmFieldQualifyMplsLabel5Id = 1042, /* ID field of the fifth MPLS Label */ 3148 bcmFieldQualifyMplsLabel6 = 1043, /* MPLS Label 6 */ 3149 bcmFieldQualifyMplsLabel6Ttl = 1044, /* TTL field of the sixth MPLS Label */ 3150 bcmFieldQualifyMplsLabel6Bos = 1045, /* BoS field of the sixth MPLS Label */ 3151 bcmFieldQualifyMplsLabel6Exp = 1046, /* Exp field of the sixth MPLS Label */ 3152 bcmFieldQualifyMplsLabel6Id = 1047, /* ID field of the sixth MPLS Label */ 3153 bcmFieldQualifyMplsLabel7 = 1048, /* MPLS Label 7 */ 3154 bcmFieldQualifyMplsLabel7Ttl = 1049, /* TTL field of the seventh MPLS Label */ 3155 bcmFieldQualifyMplsLabel7Bos = 1050, /* BoS field of the seventh MPLS Label */ 3156 bcmFieldQualifyMplsLabel7Exp = 1051, /* Exp field of the seventh MPLS Label */ 3157 bcmFieldQualifyMplsLabel7Id = 1052, /* ID field of the seventh MPLS Label */ 3158 bcmFieldQualifyL5PayloadByte1 = 1053, /* L5 byte1 of forwarding header. For 3159 non-terminating packet it is outer 3160 header, in case of termination it is 3161 inner header. */ 3162 bcmFieldQualifyL5PayloadByte2 = 1054, /* L5 byte2 of forwarding header. For 3163 non-terminating packet it is outer 3164 header, in case of termination it is 3165 inner header. */ 3166 bcmFieldQualifyL5PayloadByte3 = 1055, /* L5 byte3 of forwarding header. For 3167 non-terminating packet it is outer 3168 header, in case of termination it is 3169 inner header. */ 3170 bcmFieldQualifyL5PayloadByte4 = 1056, /* L5 byte4 of forwarding header. For 3171 non-terminating packet it is outer 3172 header, in case of termination it is 3173 inner header. */ 3174 bcmFieldQualifyL5PayloadByte5 = 1057, /* L5 byte5 of forwarding header. For 3175 non-terminating packet it is outer 3176 header, in case of termination it is 3177 inner header. */ 3178 bcmFieldQualifyL5PayloadByte6 = 1058, /* L5 byte6 of forwarding header. For 3179 non-terminating packet it is outer 3180 header, in case of termination it is 3181 inner header. */ 3182 bcmFieldQualifyL5PayloadByte7 = 1059, /* L5 byte7 of forwarding header. For 3183 non-terminating packet it is outer 3184 header, in case of termination it is 3185 inner header. */ 3186 bcmFieldQualifyL5PayloadByte8 = 1060, /* L5 byte8 of forwarding header. For 3187 non-terminating packet it is outer 3188 header, in case of termination it is 3189 inner header. */ 3190 bcmFieldQualifyOuterL5PayloadByte1 = 1061, /* L5 byte1 of packet outer header. For 3191 non-terminating packet it is same as 3192 forwarding header, in case of 3193 termination it is different from 3194 forwarding header info. */ 3195 bcmFieldQualifyOuterL5PayloadByte2 = 1062, /* L5 byte2 of packet outer header. For 3196 non-terminating packet it is same as 3197 forwarding header, in case of 3198 termination it is different from 3199 forwarding header info. */ 3200 bcmFieldQualifyOuterL5PayloadByte3 = 1063, /* L5 byte3 of packet outer header. For 3201 non-terminating packet it is same as 3202 forwarding header, in case of 3203 termination it is different from 3204 forwarding header info. */ 3205 bcmFieldQualifyOuterL5PayloadByte4 = 1064, /* L5 byte4 of packet outer header. For 3206 non-terminating packet it is same as 3207 forwarding header, in case of 3208 termination it is different from 3209 forwarding header info. */ 3210 bcmFieldQualifyOuterL5PayloadByte5 = 1065, /* L5 byte5 of packet outer header. For 3211 non-terminating packet it is same as 3212 forwarding header, in case of 3213 termination it is different from 3214 forwarding header info. */ 3215 bcmFieldQualifyOuterL5PayloadByte6 = 1066, /* L5 byte6 of packet outer header. For 3216 non-terminating packet it is same as 3217 forwarding header, in case of 3218 termination it is different from 3219 forwarding header info. */ 3220 bcmFieldQualifyOuterL5PayloadByte7 = 1067, /* L5 byte7 of packet outer header. For 3221 non-terminating packet it is same as 3222 forwarding header, in case of 3223 termination it is different from 3224 forwarding header info. */ 3225 bcmFieldQualifyOuterL5PayloadByte8 = 1068, /* L5 byte8 of packet outer header. For 3226 non-terminating packet it is same as 3227 forwarding header, in case of 3228 termination it is different from 3229 forwarding header info. */ 3230 bcmFieldQualifyArpSrcMac = 1069, /* Source mac in Arp/Rarp packet. */ 3231 bcmFieldQualifyArpDstMac = 1070, /* Destination mac in Arp/Rarp packet. */ 3232 bcmFieldQualifyL2EgressInterface = 1071, /* Layer2 egress interface (L2_OIF). */ 3233 bcmFieldQualifyStg = 1072, /* Spanning tree profile table index 3234 value. */ 3235 bcmFieldQualifyCosQueueNum = 1073, /* cosq queue number. */ 3236 bcmFieldQualifyCopyToCpu = 1074, /* Packet marked for copy to CPU. */ 3237 bcmFieldQualifyCopyToCpuTruncate = 1075, /* Truncate copy to CPU marked packet. */ 3238 bcmFieldQualifyMcastPkt = 1076, /* Packet is a multicast packet. */ 3239 bcmFieldQualifyUntagPkt = 1077, /* Packet is untagged. */ 3240 bcmFieldQualifyDoNotModify = 1078, /* Forwarding header marked as do not 3241 modify. */ 3242 bcmFieldQualifyTxPortType = 1079, /* Transmit port type. */ 3243 bcmFieldQualifyRxPortType = 1080, /* Receive port type. */ 3244 bcmFieldQualifyMirrorPktType = 1081, /* Mirror packet type. */ 3245 bcmFieldQualifyPtpMsgType = 1082, /* PTP message type. */ 3246 bcmFieldQualifyPtpVersion = 1083, /* PTP version. */ 3247 bcmFieldQualifyPtpPktCtrl = 1084, /* PTP packet control. */ 3248 bcmFieldQualifyVlanMembershipCheck = 1085, /* Vlan membership check. */ 3249 bcmFieldQualifyInnerVlanTagPreserve = 1086, /* Packet marked for inner vlan tag 3250 preserve. */ 3251 bcmFieldQualifyOuterVlanTagPreserve = 1087, /* Packet marked for outer vlan tag 3252 preserve. */ 3253 bcmFieldQualifyForwardingEligible = 1088, /* Packet forwarding eligibility. */ 3254 bcmFieldQualifyInterfaceClassMpls = 1089, /* Qualifies on Class identifier derived 3255 from forwarding MPLS label lookup. */ 3256 bcmFieldQualifyL3Check = 1090, /* Packet L3 check. */ 3257 bcmFieldQualifyL2InterfaceMatch = 1091, /* Packet L2 interface match. */ 3258 bcmFieldQualifyProtocolPktOpaqueCtrlId = 1092, /* Opaque control id from protocol 3259 packet forward table. */ 3260 bcmFieldQualifyLookupClassField = 1093, /* Class Id assigned for packet by 3261 Lookup Stage. */ 3262 bcmFieldQualifyExactMatchOpaqueObject0 = 1094, /* Matches on opaque object0 set by 3263 Exact Match/Flowtracker stage. */ 3264 bcmFieldQualifyIcmpType = 1095, /* Matches on ICMP type value. */ 3265 bcmFieldQualifyOuterVlanRangeMatch = 1096, /* Outer vlan matched with one of 3266 configured min/max values in range 3267 map. */ 3268 bcmFieldQualifyInnerVlanRangeMatch = 1097, /* Inner vlan matched with one of 3269 configured min/max values in range 3270 map. */ 3271 bcmFieldQualifyTunnelHeaderDstMac = 1098, /* Destination MAC address in tunnel 3272 initiation header */ 3273 bcmFieldQualifyTunnelHeaderSrcMac = 1099, /* Source MAC address in tunnel 3274 initiation header */ 3275 bcmFieldQualifyTunnelHeaderSip = 1100, /* IPv4 source address in tunnel 3276 initiation header */ 3277 bcmFieldQualifyTunnelHeaderDip = 1101, /* IPv4 destination address in tunnel 3278 initiation header */ 3279 bcmFieldQualifyTunnelHeaderSip6 = 1102, /* IPv6 source address in tunnel 3280 initiation header */ 3281 bcmFieldQualifyTunnelHeaderDip6 = 1103, /* IPv6 destination address in tunnel 3282 initiation header */ 3283 bcmFieldQualifyTunnelHeaderIpProtocol = 1104, /* IP Protocol value in tunnel 3284 initiation header */ 3285 bcmFieldQualifyMHPriority = 1105, /* Module Header Priority */ 3286 bcmFieldQualifyEgressPortCtrlType = 1106, /* Egress port control type */ 3287 bcmFieldQualifySubportGroupIds = 1107, /* Subport group IDs */ 3288 bcmFieldQualifyStageAggregateMmuFlowtracker = 1108, /* Qualifies on Stage Aggregate MMU 3289 Flowtracker */ 3290 bcmFieldQualifyStageAggregateEgressFlowtracker = 1109, /* Qualifies on Stage Aggregate Egress 3291 Flowtracker */ 3292 bcmFieldQualifyFlowtrackerAggregateClass = 1110, /* Qualifies on Aggregate Flowtracker 3293 Class */ 3294 bcmFieldQualifyFlowtrackerClassIdSource1 = 1111, /* Qualifies on Flowtracker Class from 3295 Source 1 */ 3296 bcmFieldQualifyFlowtrackerClassIdSource2 = 1112, /* Qualifies on Flowtracker Class from 3297 Source 2 */ 3298 bcmFieldQualifyApplSignatureId = 1113, /* Qualifies on Application signature */ 3299 bcmFieldQualifyInnerApplSignatureId = 1114, /* Qualifies on Application signature */ 3300 bcmFieldQualifyCosQueueId = 1115, /* Qualifies on Cos Queue */ 3301 bcmFieldQualifyCongestionExperienced = 1116, /* Qualifies on Congestion experienced 3302 status */ 3303 bcmFieldQualifyCongestionMarked = 1117, /* Qualifies on Congestion Marked status */ 3304 bcmFieldQualifyIsUcastCosQueue = 1118, /* Qualifies on Status if packet is in 3305 unicast Cos queue */ 3306 bcmFieldQualifyEgressPortQueue = 1119, /* Qualifies on Egress Port Cos queue 3307 Value */ 3308 bcmFieldQualifyLearnExtensionPresent = 1120, /* Whether or not we have PPH learn 3309 extension */ 3310 bcmFieldQualifyL3EgressIntf = 1121, /* L3 Egress Interface */ 3311 bcmFieldQualifyForwardCode = 1122, /* Matches on Forwarding code */ 3312 bcmFieldQualifyPktFwdType = 1123, /* Matches on Packet Forwarding type */ 3313 bcmFieldQualifyStatOamLMRaw = 1124, /* Qualify on OAM LM counter raw value. */ 3314 bcmFieldQualifyRangeFirstHit0 = 1125, /* Qualifies on L4 OPS Extended Encoder 3315 0 first hit */ 3316 bcmFieldQualifyRangeFirstHit1 = 1126, /* Qualifies on L4 OPS Extended Encoder 3317 1 first hit */ 3318 bcmFieldQualifyRangeFirstHit2 = 1127, /* Qualifies on L4 OPS Extended Encoder 3319 2 first hit */ 3320 bcmFieldQualifyRangeFirstHit3 = 1128, /* Qualifies on L4 OPS Extended Encoder 3321 3 first hit */ 3322 bcmFieldQualifyIfaCurrentLengthEqualToZero = 1129, /* If set, matches if IFA metadata 3323 header current length equals to 0. */ 3324 bcmFieldQualifyIfaHopLimitEqualToZero = 1130, /* If set, matches if IFA metadata 3325 header hop limit equals to 0. */ 3326 bcmFieldQualifyIfaVersion2 = 1131, /* If set, matches if IFA version is 2. */ 3327 bcmFieldQualifyIfaGlobalNameSpace = 1132, /* Qualifies on IFA Global Name Space */ 3328 bcmFieldQualifyIfaLocalNameSpace = 1133, /* Qualifies on IFA Local Name Space. */ 3329 bcmFieldQualifyIfaCurrentLength = 1134, /* Qualifies on IFA metadata header 3330 current length. */ 3331 bcmFieldQualifyIfaRequestVector = 1135, /* Qualifies on IFA metadata header 3332 request vector. */ 3333 bcmFieldQualifyDstType = 1136, /* Qualifies on packet destination type 3334 in pipeline. */ 3335 bcmFieldQualifyLoopbackHdrDstType = 1137, /* Qualifies on destination type in 3336 loopback pkt header. */ 3337 bcmFieldQualifyOverlayNetworkTagType = 1138, /* Qualifies on Overlay Network tag 3338 type. */ 3339 bcmFieldQualifyOverlayIpOptionHdrType = 1139, /* Qualifies on overlay IP optional 3340 header type. */ 3341 bcmFieldQualifyIpOptionHdrType = 1140, /* Qualifies on IP optional header type. */ 3342 bcmFieldQualifyFirstDropReason = 1141, /* Qualifies on first drop reason. */ 3343 bcmFieldQualifyDropReason = 1142, /* Qualifies on drop reason. */ 3344 bcmFieldQualifyCopyToCpuReasonLow = 1143, /* Qualifies on Copy to cpu reasons 0 to 3345 31. */ 3346 bcmFieldQualifyRtag7CHashLower = 1144, /* Qualifies on Lower half of RTAG7 hash 3347 C result. */ 3348 bcmFieldQualifyRtag7CHashUpper = 1145, /* Qualifies on Upper half of RTAG7 hash 3349 C result. */ 3350 bcmFieldQualifyAppTypeRaw = 1146, /* Qualifies on packet Application type 3351 used by the ACL lookup. Can be either 3352 predefined or user defined. Input 3353 expects raw value. */ 3354 bcmFieldQualifyAppTypePredefinedRaw = 1147, /* Qualifies on the predefined AppType 3355 used by the forwarding lookup. Input 3356 expects raw value. */ 3357 bcmFieldQualifyForwardingTypeRaw = 1148, /* Qualifies on packet forwarding type. 3358 Input expects raw value. */ 3359 bcmFieldQualifyContextIdRaw = 1149, /* Qualifies on the Forwarding Context 3360 value. Input expects raw value. 3361 Relevant for egress stage only. */ 3362 bcmFieldQualifyOverlayEgressClass = 1150, /* Qualifies on Overlay Egress ClassId. */ 3363 bcmFieldQualifyEgressL3TunnelGport = 1151, /* Qualifies on Egress L3 Tunnel Gport. */ 3364 bcmFieldQualifyEgressMcastPktReason = 1152, /* Qualifies on Egress Mcast Pkt Reason. */ 3365 bcmFieldQualifyEgressPktQueueNotification = 1153, /* Qualifies on Egress Pkt Queue 3366 Notification. */ 3367 bcmFieldQualifyEgressDOPTrigger = 1154, /* Qualifies on Egress DOP Trigger */ 3368 bcmFieldQualifyEgressTunnelIpHeaderFlowLabel = 1155, /* Qualifies on Egress Tunnel IP 3369 HeaderFlowLabel. */ 3370 bcmFieldQualifyEgressTunnelIpHeaderEcn = 1156, /* Qualifies on Egress Tunnel IP Header 3371 Ecn. */ 3372 bcmFieldQualifyEgressTunnelIpHeaderDscp = 1157, /* Qualifies on Egress Tunnel IP Header 3373 Dscp. */ 3374 bcmFieldQualifyIpExtHdr2Protocol = 1158, /* Qualifies on next header field in Ip 3375 Ext Hdr2 */ 3376 bcmFieldQualifyL2EgrIntfEfpCtrlId = 1159, /* Qualifies on L2 OIF EFP CTRL ID */ 3377 bcmFieldQualifyIfaFlags = 1160, /* Qualifies on IFA Flags */ 3378 bcmFieldQualifyIfaMaxLength = 1161, /* Qualifies on IFA Max length */ 3379 bcmFieldQualifyIfaActionVector = 1162, /* Qualifies on IFA Action vector */ 3380 bcmFieldQualifyStateTableDataWrite = 1163, /* Qualifies on value written to state 3381 table. */ 3382 bcmFieldQualifyCopyToCpuReasonHigh = 1164, /* Qualifies on Copy to cpu reasons 32 3383 to 47. */ 3384 bcmFieldQualifyInnerTcpControl = 1165, /* Qualifies on TCP control field in 3385 inner header of the incoming packet. */ 3386 bcmFieldQualifyTunnelTerminationProcessingProfile = 1166, /* Qualify tunnel termination 3387 processing profile. */ 3388 bcmFieldQualifyIntFlags = 1167, /* Qualifies on INT flags field in 3389 INT-DP/IOAM/IFA header. */ 3390 bcmFieldQualifyIntHdrType = 1168, /* Qualifies on INT packet type, can be 3391 None/INT-DP/IFA/IOAM. */ 3392 bcmFieldQualifyIntUdpChecksumEqualsZero = 1169, /* Qualifies on UDP header checksum 3393 equals to zero. */ 3394 bcmFieldQualifyIntMetadataHdrType = 1170, /* Qualifies on INT metadata header 3395 type. */ 3396 bcmFieldQualifyIntHdrPresent = 1171, /* Qualifies on location of INT header 3397 in the packet */ 3398 bcmFieldQualifyCompressionSrcHit = 1172, /* Qualifies on ALPM source compression 3399 table hit. */ 3400 bcmFieldQualifyCompressionDstHit = 1173, /* Qualifies on ALPM destination 3401 compression table hit.. */ 3402 bcmFieldQualifyIpTunnelTypeRaw = 1174, /* Raw value for 3403 FieldQualifyIpTunnelType. */ 3404 bcmFieldQualifySampledPkt = 1175, /* Qualify sFlow sampled packets. */ 3405 bcmFieldQualifySrcIp6SrhValid = 1176, /* Qualify packet with IPv6 segment 3406 routing header. */ 3407 bcmFieldQualifyFtmhAsePresent = 1177, /* Qualify packet on FTMH ASE present 3408 field. */ 3409 bcmFieldQualifyFtmhAseType = 1178, /* Qualify packet on FTMH ASE type 3410 value. */ 3411 bcmFieldQualifyHiGig3Pkt = 1179, /* Qualify on incoming packet from 3412 HiGig3 Device Port. */ 3413 bcmFieldQualifyLoopbackLagFailoverPkt = 1180, /* Qualify on Loopback Lag failover 3414 packet. */ 3415 bcmFieldQualifyPktMiscCtrl = 1181, /* Qualify on Packet Misc controls 3416 defined under 3417 bcm_field_pkt_misc_ctrl_t. */ 3418 bcmFieldQualifyForwardingOuterVlanPri = 1182, /* Qualify on forwarding outer vlan 3419 priority. */ 3420 bcmFieldQualifyForwardingOuterTpid = 1183, /* Qualify on forwarding outer TPID. */ 3421 bcmFieldQualifyIncomingVlanFormat = 1184, /* Qualify on incoming VLAN format. */ 3422 bcmFieldQualifyBfdMultiplierLen = 1185, /* Qualify on BFD Multiplier Length. */ 3423 bcmFieldQualifyBfdVerFlags = 1186, /* Qualify on BFD Version and Flags. */ 3424 bcmFieldQualifyGpeFlags = 1187, /* Qualify on GPE Flags. */ 3425 bcmFieldQualifyGpeNetworkId = 1188, /* Qualify on GPE Network Id. */ 3426 bcmFieldQualifyGpeProtocol = 1189, /* Qualify on GPE Protocol. */ 3427 bcmFieldQualifyGpeReserved0 = 1190, /* Qualify on GPE Reserved 0. */ 3428 bcmFieldQualifyGpeReserved1 = 1191, /* Qualify on GPE Reserved 1. */ 3429 bcmFieldQualifyIfaAttrOpaqData = 1192, /* Qualify on IFA Attribute Opaqaue 3430 Data. */ 3431 bcmFieldQualifyIgmpMaxRespTime = 1193, /* Qualify on IGMP Max response time. */ 3432 bcmFieldQualifyMplsTopHeader = 1194, /* Qualify on MPLS Top Header. */ 3433 bcmFieldQualifyMplsVcLabelHeader = 1195, /* Qualify on MPLS VC Label Header. */ 3434 bcmFieldQualifyTcpAckNum = 1196, /* Qualify on TCP Acknowledgement 3435 Number. */ 3436 bcmFieldQualifyTcpSequenceNum = 1197, /* Qualify on TCP Sequence Number. */ 3437 bcmFieldQualifyUdpLength = 1198, /* Qualify on UDP Length. */ 3438 bcmFieldQualifyPtpReserved1 = 1199, /* Qualify on PTP Reserved1. */ 3439 bcmFieldQualifyPtpTransportSpec = 1200, /* Qualify on PTP Transport Spec. */ 3440 bcmFieldQualifyLoopbackIfaSwitchCopyDrop = 1201, /* Qualify on Loopback header drop 3441 indicator for IFA switch probe copy */ 3442 bcmFieldQualifyVipValid = 1202, /* Checks if SLLB VIP_ID is valid. */ 3443 bcmFieldQualifyVipId = 1203, /* Qualifies on SLLB VIP_ID. */ 3444 bcmFieldQualifyVIPMemberReference = 1204, /* Qualifies on SLLB ECMP 3445 MEMBER_REFERENCE. */ 3446 bcmFieldQualifyPccHit = 1205, /* Qualifies on SLLB PCC table hit 3447 status. */ 3448 bcmFieldQualifyPdelayReq = 1206, /* Qualify on the PDELAY_REQ packet. */ 3449 bcmFieldQualifyPphType = 1207, /* Qualifies on PPH type. */ 3450 bcmFieldQualifyRxTrapProfile = 1208, /* Qualifies on Trap profile. The Trap 3451 profile is set by bcm_rx_trap_set 3452 using 3453 BCM_RX_TRAP_FLAGS2_UPDATE_ACL_PROFILE */ 3454 bcmFieldQualifyDstMultipathLevel1 = 1209, /* Qualify on Level 1 ECMP groups */ 3455 bcmFieldQualifyDstMultipathLevel2 = 1210, /* Qualify on Level 2 ECMP groups */ 3456 bcmFieldQualifySvtag = 1211, /* Qualifies on svtag */ 3457 bcmFieldQualifyRecircleHdrFirstDropReason = 1212, /* Qualifies on redirect header first 3458 drop reason. */ 3459 bcmFieldQualifyRecircleHdrDropReason = 1213, /* Qualifies on redirect header highest 3460 drop reason. */ 3461 bcmFieldQualifyRecircleHdrCode = 1214, /* Qualifies on redirect header 3462 recirculation code. */ 3463 bcmFieldQualifyMacSecOpaque = 1215, /* Qualifies on opaque object available 3464 to egress assigned by IP */ 3465 bcmFieldQualifyMirrorOnDrop = 1216, /* Qualifies on mirrored copy of MMU 3466 dropped packet */ 3467 bcmFieldQualifyMirrorOnDropReason = 1217, /* Qualifies on drop reason of mirrored 3468 copy of MMU dropped packet */ 3469 bcmFieldQualifyIntCtrl = 1218, /* Inband telemetry control */ 3470 bcmFieldQualifyIfaHopCount = 1219, /* Qualifies on IFA Hop Count */ 3471 bcmFieldQualifyIfaHopLimit = 1220, /* Qualifies on IFA Hop Limit */ 3472 bcmFieldQualifyL2SrcMiscClassId = 1221, /* Qualify on Level 2 source 3473 miscellaneous class ID */ 3474 bcmFieldQualifyL2DstMiscClassId = 1222, /* Qualify on Level 2 destination 3475 miscellaneous class ID */ 3476 bcmFieldQualifyL3SrcMiscClassId = 1223, /* Qualify on Level 3 source 3477 miscellaneous class ID */ 3478 bcmFieldQualifyL3DstMiscClassId = 1224, /* Qualify on Level 3 destination 3479 miscellaneous class ID */ 3480 bcmFieldQualifyRawResidenceTime = 1225, /* Qualify on raw residence time */ 3481 bcmFieldQualifyIpFragInfo = 1226, /* Qualify on IPv4/v6 fragmentation info 3482 including flags and offset */ 3483 bcmFieldQualifyInDscpExp = 1227, /* Qualify on In-DSCP-EXP */ 3484 bcmFieldQualifyAcInLifWideDataExtended = 1228, /* Qualify on the Ac in-lif 3485 wide(generic) extended data. */ 3486 bcmFieldQualifyIfaNextHdr = 1229, /* Qualify on IFA next header */ 3487 bcmFieldQualifyIfaVersion = 1230, /* Qualify on IFA version */ 3488 bcmFieldQualifyIngressL2InterfaceOpaqueCtrlId1 = 1231, /* Opaque control id 1 from L2_IIF 3489 table. */ 3490 bcmFieldQualifyIngressL2InterfaceFlexDigestCtrlIdA = 1232, /* Flex digest control id A from L2_IIF 3491 table. */ 3492 bcmFieldQualifyIngressL2InterfaceFlexDigestCtrlIdB = 1233, /* Flex digest control id B from L2_IIF 3493 table. */ 3494 bcmFieldQualifyAcInLifWideDataExtendedRaw = 1234, /* Qualify on the Ac in-lif 3495 wide(generic) extended data. Input 3496 expects raw value. */ 3497 bcmFieldQualifyForwardingPacketRes = 1235, /* Qualifies on Forwarding packet 3498 resolution */ 3499 bcmFieldQualifySrcCompressionClassId = 1236, /* L3_SRC Class ID from ALPM */ 3500 bcmFieldQualifyDstCompressionClassId = 1237, /* L3_DST Class ID from ALPM */ 3501 bcmFieldQualifyIPv6FragmentedNonFirst = 1238, /* Qualify on IPv6 packets where the IP 3502 Header is both fragmented and also 3503 not the first fragment. */ 3504 bcmFieldQualifyRecircleHdrOpaqueCtrlIdC = 1239, /* Qualify on EP NIH header opaque 3505 control id C */ 3506 bcmFieldQualifyIp6SecondAdditionalHeaderExist = 1240, /* Qualify on IPv6 packets second 3507 additional header exists. */ 3508 bcmFieldQualifyMplsForwardingControlWord = 1241, /* MPLS Forwarding control word. */ 3509 bcmFieldQualifyMplsCtrlPktType = 1242, /* MPLS control word packet type. */ 3510 bcmFieldQualifyCount = 1243 /* Always Last. Not a usable value. */ 3511 } bcm_field_qualify_t; 3512 3513 #define BCM_FIELD_QUALIFY_STRINGS \ 3514 { \ 3515 "SrcIp6", \ 3516 "DstIp6", \ 3517 "SrcIp6High", \ 3518 "DstIp6High", \ 3519 "SrcIp6Low", \ 3520 "DstIp6Low", \ 3521 "SrcMac", \ 3522 "DstMac", \ 3523 "Snap", \ 3524 "SrcIp", \ 3525 "DstIp", \ 3526 "Llc", \ 3527 "InPort", \ 3528 "InPorts", \ 3529 "OutPorts", \ 3530 "Drop", \ 3531 "Ip6FlowLabel", \ 3532 "OuterVlan", \ 3533 "OuterVlanId", \ 3534 "OuterVlanPri", \ 3535 "OuterVlanCfi", \ 3536 "InnerVlan", \ 3537 "InnerVlanId", \ 3538 "InnerVlanPri", \ 3539 "InnerVlanCfi", \ 3540 "LookupStatus", \ 3541 "RangeCheck", \ 3542 "L4SrcPort", \ 3543 "L4DstPort", \ 3544 "EtherType", \ 3545 "IpProtocol", \ 3546 "DSCP", \ 3547 "Ttl", \ 3548 "SrcModid", \ 3549 "SrcPortTgid", \ 3550 "SrcPort", \ 3551 "SrcTrunk", \ 3552 "SrcTrunkMemberGport", \ 3553 "DstModid", \ 3554 "DstPortTgid", \ 3555 "DstPort", \ 3556 "DstTrunk", \ 3557 "TcpControl", \ 3558 "PacketRes", \ 3559 "PacketFormat", \ 3560 "SrcClassL2", \ 3561 "SrcClassL3", \ 3562 "SrcClassField", \ 3563 "DstClassL2", \ 3564 "DstClassL3", \ 3565 "DstClassField", \ 3566 "IpInfo", \ 3567 "IpProtocolCommon", \ 3568 "MHOpcode", \ 3569 "IpFlags", \ 3570 "InnerTpid", \ 3571 "OuterTpid", \ 3572 "InnerIpType", \ 3573 "TunnelType", \ 3574 "LoopbackType", \ 3575 "Loopback", \ 3576 "IpType", \ 3577 "ForwardingType", \ 3578 "Decap", \ 3579 "HiGig", \ 3580 "HiGigProxy", \ 3581 "DstHiGig", \ 3582 "Stage", \ 3583 "StageIngress", \ 3584 "StageIngressSecurity", \ 3585 "StageIngressQoS", \ 3586 "StageLookup", \ 3587 "StageEgress", \ 3588 "StageEgressSecurity", \ 3589 "StageExternal", \ 3590 "Deprecated75", \ 3591 "Deprecated76", \ 3592 "TcpSequenceZero", \ 3593 "TcpHeaderSize", \ 3594 "InterfaceClassL2", \ 3595 "InterfaceClassL3", \ 3596 "InterfaceClassPort", \ 3597 "L3Routable", \ 3598 "IpFrag", \ 3599 "Vrf", \ 3600 "L3Ingress", \ 3601 "OutPort", \ 3602 "Ip4", \ 3603 "Ip6", \ 3604 "L2Format", \ 3605 "VlanFormat", \ 3606 "TranslatedVlanFormat", \ 3607 "ExtensionHeaderType", \ 3608 "ExtensionHeaderSubCode", \ 3609 "ExtensionHeader2Type", \ 3610 "L4Ports", \ 3611 "MirrorCopy", \ 3612 "TunnelTerminated", \ 3613 "MplsTerminated", \ 3614 "InnerSrcIp", \ 3615 "InnerDstIp", \ 3616 "InnerSrcIp6", \ 3617 "InnerDstIp6", \ 3618 "InnerSrcIp6High", \ 3619 "InnerDstIp6High", \ 3620 "InnerTtl", \ 3621 "InnerTos", \ 3622 "InnerIpProtocol", \ 3623 "InnerIpFrag", \ 3624 "VlanTranslationHit", \ 3625 "ForwardingVlanValid", \ 3626 "IngressStpState", \ 3627 "L2SrcHit", \ 3628 "L2SrcStatic", \ 3629 "L2DestHit", \ 3630 "L2StationMove", \ 3631 "L2CacheHit", \ 3632 "L3SrcHostHit", \ 3633 "L3DestHostHit", \ 3634 "L3DestRouteHit", \ 3635 "IpmcStarGroupHit", \ 3636 "DosAttack", \ 3637 "Deprecated122", \ 3638 "ClassId", \ 3639 "Deprecated124", \ 3640 "IcmpTypeCode", \ 3641 "Deprecated126", \ 3642 "InnerIpProtocolCommon", \ 3643 "InnerL4SrcPort", \ 3644 "InnerL4DstPort", \ 3645 "InnerIp6FlowLabel", \ 3646 "DstL3Egress", \ 3647 "DstMulticastGroup", \ 3648 "SrcMplsGport", \ 3649 "DstMplsGport", \ 3650 "SrcMimGport", \ 3651 "DstMimGport", \ 3652 "SrcWlanGport", \ 3653 "DstWlanGport", \ 3654 "SrcModPortGport", \ 3655 "SrcModuleGport", \ 3656 "Color", \ 3657 "IntPriority", \ 3658 "ForwardingVlanId", \ 3659 "Vpn", \ 3660 "FlowId", \ 3661 "InVPort", \ 3662 "OutVPort", \ 3663 "FibreChanOuter", \ 3664 "FibreChanInner", \ 3665 "VnTag", \ 3666 "CnTag", \ 3667 "FabricQueueTag", \ 3668 "MyStationHit", \ 3669 "DstMultipath", \ 3670 "L2PayloadFirstEightBytes", \ 3671 "SrcVirtualPortValid", \ 3672 "DstL3EgressNextHops", \ 3673 "RecoverableDrop", \ 3674 "RepCopy", \ 3675 "IpTunnelHit", \ 3676 "MplsLabel1Hit", \ 3677 "TrillEgressRbridgeHit", \ 3678 "L2GreSrcIpHit", \ 3679 "MimSrcGportHit", \ 3680 "MplsLabel2Hit", \ 3681 "TrillIngressRbridgeHit", \ 3682 "L2GreVfiHit", \ 3683 "MimVfiHit", \ 3684 "GenericAssociatedChannelLabelValid", \ 3685 "RouterAlertLabelValid", \ 3686 "DstIpLocal", \ 3687 "NormalizeIpAddrs", \ 3688 "NormalizeMacAddrs", \ 3689 "IpAddrsNormalized", \ 3690 "MacAddrsNormalized", \ 3691 "MplsForwardingLabel", \ 3692 "MplsForwardingLabelTtl", \ 3693 "MplsForwardingLabelBos", \ 3694 "MplsForwardingLabelExp", \ 3695 "MplsForwardingLabelId", \ 3696 "MplsControlWord", \ 3697 "Rtag7AHashUpper", \ 3698 "Rtag7AHashLower", \ 3699 "Rtag7BHashUpper", \ 3700 "Rtag7BHashLower", \ 3701 "MplsForwardingLabelAction", \ 3702 "MplsControlWordValid", \ 3703 "EgressClass", \ 3704 "EgressClassL3Interface", \ 3705 "EgressClassTrill", \ 3706 "EgressClassWlan", \ 3707 "EgressClassL2Gre", \ 3708 "LlidValue", \ 3709 "CpuQueue", \ 3710 "Mpls", \ 3711 "SrcGport", \ 3712 "HeaderFormat", \ 3713 "HeaderFormatSet", \ 3714 "L2Learn", \ 3715 "PortOrientation", \ 3716 "EcnValue", \ 3717 "RxTrapCode", \ 3718 "Ptch", \ 3719 "MplsBos", \ 3720 "RxTrapData", \ 3721 "PolicerIntPrio", \ 3722 "PacketTerminatedBytes", \ 3723 "BypassFilter", \ 3724 "ReplicantAny", \ 3725 "ReplicantFirst", \ 3726 "TrillEgressRbridge", \ 3727 "ISid", \ 3728 "InterfaceClassProcessingPort", \ 3729 "DstRpfGport", \ 3730 "TrunkHashResult", \ 3731 "Dhcp", \ 3732 "SnoopCopy", \ 3733 "ForwardCopy", \ 3734 "InterfaceClassVPort", \ 3735 "VPortRangeCheck", \ 3736 "PacketLengthRangeCheck", \ 3737 "StageIngressVlanTranslation", \ 3738 "StageIngressTunnelTerminated", \ 3739 "StageIngressMplsTerminated", \ 3740 "StageIngressIpTunnel", \ 3741 "StageIngressL2Src", \ 3742 "StageIngressL2Dest", \ 3743 "StageIngressL3SrcRoute", \ 3744 "StageIngressL3DestRoute", \ 3745 "StageIngressIpmc", \ 3746 "TunnelTerminatedHit", \ 3747 "MplsTerminatedHit", \ 3748 "L3SrcRouteHit", \ 3749 "IpmcHit", \ 3750 "VlanTranslationValue", \ 3751 "TunnelTerminatedValue", \ 3752 "MplsTerminatedValue", \ 3753 "IpTunnelValue", \ 3754 "L2SrcValue", \ 3755 "L2DestValue", \ 3756 "L3SrcRouteValue", \ 3757 "L3DestRouteValue", \ 3758 "IpmcValue", \ 3759 "LearnSrcMac", \ 3760 "LearnVlan", \ 3761 "LearnSrcPort", \ 3762 "PacketSize", \ 3763 "InnerSrcMac", \ 3764 "InnerDstMac", \ 3765 "InnerEtherType", \ 3766 "MplsLabel1", \ 3767 "MplsLabel1Ttl", \ 3768 "MplsLabel1Bos", \ 3769 "MplsLabel1Exp", \ 3770 "MplsLabel1Id", \ 3771 "MplsLabel2", \ 3772 "MplsLabel2Ttl", \ 3773 "MplsLabel2Bos", \ 3774 "MplsLabel2Exp", \ 3775 "MplsLabel2Id", \ 3776 "MplsLabel3", \ 3777 "MplsLabel3Ttl", \ 3778 "MplsLabel3Bos", \ 3779 "MplsLabel3Exp", \ 3780 "MplsLabel3Id", \ 3781 "CascadedKeyValue", \ 3782 "MplsOuterLabelPop", \ 3783 "MplsStationHitTunnelUnterminated", \ 3784 "IngressClassField", \ 3785 "IngressInterfaceClassPort", \ 3786 "ExternalValue0", \ 3787 "ExternalValue1", \ 3788 "ExternalValue2", \ 3789 "ExternalValue3", \ 3790 "ExternalHit0", \ 3791 "ExternalHit1", \ 3792 "ExternalHit2", \ 3793 "ExternalHit3", \ 3794 "VpnUnknownDstMacDstPort", \ 3795 "VxlanNetworkId", \ 3796 "VxlanFlags", \ 3797 "NatNeeded", \ 3798 "NatDstRealmId", \ 3799 "NatSrcRealmId", \ 3800 "IcmpError", \ 3801 "TunnelId", \ 3802 "ArpSenderIp4", \ 3803 "ArpTargetIp4", \ 3804 "ArpOpcode", \ 3805 "TranslatedOuterVlan", \ 3806 "TranslatedOuterVlanId", \ 3807 "TranslatedOuterVlanPri", \ 3808 "TranslatedOuterVlanCfi", \ 3809 "TranslatedInnerVlan", \ 3810 "TranslatedInnerVlanId", \ 3811 "TranslatedInnerVlanPri", \ 3812 "TranslatedInnerVlanCfi", \ 3813 "ConstantZero", \ 3814 "ConstantOne", \ 3815 "FibreChanRCtl", \ 3816 "FibreChanFCtl", \ 3817 "FibreChanCSCtl", \ 3818 "FibreChanDFCtl", \ 3819 "FibreChanType", \ 3820 "FibreChanSrcId", \ 3821 "FibreChanDstId", \ 3822 "FibreChanZoneCheck", \ 3823 "FibreChanSrcFpmaCheck", \ 3824 "FibreChanSrcBindCheck", \ 3825 "FibreChanVFTVersion", \ 3826 "FibreChanVFTPri", \ 3827 "FibreChanVFTFabricId", \ 3828 "FibreChanVFTHopCount", \ 3829 "FibreChanVFTVsanId", \ 3830 "FibreChanVFTVsanPri", \ 3831 "FibreChanVFTValid", \ 3832 "FcoeSOF", \ 3833 "FcoeVersionIsZero", \ 3834 "ForwardingHeaderOffset", \ 3835 "L3SrcBind", \ 3836 "ECid", \ 3837 "IngressECid", \ 3838 "ETag", \ 3839 "IngressVPortBridgeDisable", \ 3840 "HashValue", \ 3841 "IsEqualValue", \ 3842 "StageHash", \ 3843 "UrpfMode", \ 3844 "AppType", \ 3845 "SubportPktTag", \ 3846 "SrcVxlanGport", \ 3847 "DstVxlanGport", \ 3848 "OamMdl", \ 3849 "IntCongestionNotification", \ 3850 "SrcNivGport", \ 3851 "DstNivGport", \ 3852 "DstGport", \ 3853 "MirrorEgressDisabled", \ 3854 "BypassSrcMacFilter", \ 3855 "RxTrapCodeForSnoop", \ 3856 "IpmcStarGroupValue", \ 3857 "NativeVSwitch", \ 3858 "NativeVSwitchValid", \ 3859 "TrillIVersion", \ 3860 "TrillIngressRbridge", \ 3861 "TrillMultiDestination", \ 3862 "TrillOpLength", \ 3863 "TrillHopCount", \ 3864 "TrillPayload", \ 3865 "MplsForwardingLabelPayload", \ 3866 "IncomingIpIfClass", \ 3867 "L2GreProtocolType", \ 3868 "L2GreVsid", \ 3869 "L2GreFlowId", \ 3870 "MimVlanPri", \ 3871 "MimVlanCfi", \ 3872 "Fhei", \ 3873 "FheiSize", \ 3874 "EthernetOamHeaderBits0_31", \ 3875 "EthernetOamHeaderBits32_63", \ 3876 "EthernetOamDstClassL2", \ 3877 "EthernetOamTxPktUPMEP", \ 3878 "EthernetOamInterfaceClassNiv", \ 3879 "EthernetOamInterfaceClassMim", \ 3880 "EthernetOamInterfaceClassVxlan", \ 3881 "EthernetOamInterfaceClassVlan", \ 3882 "EthernetOamInterfaceClassPort", \ 3883 "EthernetOamClassVlanTranslateKeyFirst", \ 3884 "EthernetOamClassVlanTranslateKeySecond", \ 3885 "EthernetOamInterfaceClassMpls", \ 3886 "EthernetOamClassVpn", \ 3887 "MplsOamHeaderBits0_31", \ 3888 "MplsOamHeaderBits32_63", \ 3889 "MplsOamGALLabelOnly", \ 3890 "MplsOamUpperLabelDataDrop", \ 3891 "MplsOamGALExposed", \ 3892 "MplsOamACH", \ 3893 "MplsOamControlPktType", \ 3894 "MplsOamClassMplsSwitchLabel", \ 3895 "OamHeaderBits0_31", \ 3896 "OamHeaderBits32_63", \ 3897 "OamEgressClassVxlt", \ 3898 "OamEgressClassPort", \ 3899 "Udf", \ 3900 "OuterVlanActionRange", \ 3901 "InnerVlanActionRange", \ 3902 "IngressInterfaceClassVPort", \ 3903 "SrcVlanGport", \ 3904 "DstVlanGport", \ 3905 "OamType", \ 3906 "SrcVlanGports", \ 3907 "DstVlanGports", \ 3908 "SrcVxlanGports", \ 3909 "DstVxlanGports", \ 3910 "SrcWlanGports", \ 3911 "DstWlanGports", \ 3912 "SrcMplsGports", \ 3913 "DstMplsGports", \ 3914 "SrcGports", \ 3915 "DstGports", \ 3916 "SrcMimGports", \ 3917 "DstMimGports", \ 3918 "SrcNivGports", \ 3919 "DstNivGports", \ 3920 "SrcModPortGports", \ 3921 "LearnInVPort", \ 3922 "StackingRoute", \ 3923 "RxTrapStrength", \ 3924 "VxlanHeaderBits8_31", \ 3925 "VxlanHeaderBits56_63", \ 3926 "OamInLifIdValid", \ 3927 "OamInLifId", \ 3928 "OamUpMep", \ 3929 "OamSubtype", \ 3930 "OamHeaderOffset", \ 3931 "OamStampOffset", \ 3932 "OamMepId", \ 3933 "OamMeterDisable", \ 3934 "OamTsSystemHeader", \ 3935 "DstMulticastGroups", \ 3936 "InterfaceInPorts", \ 3937 "DestVirtualPortValid", \ 3938 "InVPortWide", \ 3939 "StageClass", \ 3940 "StageClassExactMatch", \ 3941 "FcoeOxID", \ 3942 "FcoeRxID", \ 3943 "IpProtocolClass", \ 3944 "EtherTypeClass", \ 3945 "L4SrcPortClass", \ 3946 "L4DstPortClass", \ 3947 "SrcIpClass", \ 3948 "SrcIpClassMsbNibble", \ 3949 "SrcIpClassLower", \ 3950 "SrcIpClassUpper", \ 3951 "SrcIp6Class", \ 3952 "SrcIp6ClassMsbNibble", \ 3953 "SrcIp6ClassLower", \ 3954 "SrcIp6ClassUpper", \ 3955 "FcoeOxIDClass", \ 3956 "DstIpClass", \ 3957 "DstIpClassMsbNibble", \ 3958 "DstIpClassLower", \ 3959 "DstIpClassUpper", \ 3960 "DstIp6Class", \ 3961 "DstIp6ClassMsbNibble", \ 3962 "DstIp6ClassLower", \ 3963 "DstIp6ClassUpper", \ 3964 "FcoeRxIDClass", \ 3965 "FibreChanSrcIdClass", \ 3966 "FibreChanSrcIdClassMsbNibble", \ 3967 "FibreChanSrcIdClassLower", \ 3968 "FibreChanSrcIdClassUpper", \ 3969 "FibreChanDstIdClass", \ 3970 "FibreChanDstIdClassMsbNibble", \ 3971 "FibreChanDstIdClassLower", \ 3972 "FibreChanDstIdClassUpper", \ 3973 "TcpClassZero", \ 3974 "TosClassZero", \ 3975 "TtlClassZero", \ 3976 "TcpClassOne", \ 3977 "TosClassOne", \ 3978 "TtlClassOne", \ 3979 "OuterVlanPriCfi", \ 3980 "ForwardHdrSrcMac", \ 3981 "ForwardHdrDstMac", \ 3982 "ForwardHdrVlanId", \ 3983 "DstSysPortExt", \ 3984 "StageIngressExactMatch", \ 3985 "LearnExtension", \ 3986 "IpFragNonOrFirst", \ 3987 "PacketLength", \ 3988 "GroupClass", \ 3989 "UdfClass", \ 3990 "InterfaceLookupClassPort", \ 3991 "HiGigDstMulticast", \ 3992 "HiGigDstMulticastGroupId", \ 3993 "HiGigTrafficClass", \ 3994 "HiGigDstModuleGport", \ 3995 "HiGigDstPortGport", \ 3996 "HiGigDstModPortGport", \ 3997 "HiGigSrcModuleGport", \ 3998 "HiGigSrcPortGport", \ 3999 "HiGigSrcModPortGport", \ 4000 "HiGigLoadBalanceID", \ 4001 "HiGigColor", \ 4002 "HiGigIntCongestionNotification", \ 4003 "HiGigIngressTagged", \ 4004 "HiGigDstTrunk", \ 4005 "HiGigDstTrunkId", \ 4006 "HiGigIngressL3SwitchPkt", \ 4007 "HiGigLabel", \ 4008 "HiGigReplicationId", \ 4009 "HiGigVlan", \ 4010 "HiGigPortFilteringMode", \ 4011 "HiGigSrcTrunk", \ 4012 "HiGigIngressClassificationTag", \ 4013 "HiGigEgressMcast", \ 4014 "HiGigVni", \ 4015 "HiGigDstGport", \ 4016 "HiGigMulticastIndex", \ 4017 "HiGigVpReplicationId", \ 4018 "HiGigSrcGport", \ 4019 "HiGigProtectionSwitchingStatus", \ 4020 "HiGigMirrorToVp", \ 4021 "HiGigDstType", \ 4022 "HiGigSrcType", \ 4023 "HiGigOffloadEngineClassificationTag", \ 4024 "HiGigOffloadEnginePktPriNew", \ 4025 "HiGigOffloadEngineDscpNew", \ 4026 "LoopBackQueue", \ 4027 "LoopBackSrcGport", \ 4028 "PktIsVisible", \ 4029 "LoopBackCpuMasqueradePktProfile", \ 4030 "LoopBackColor", \ 4031 "LoopBackTrafficClass", \ 4032 "LoopBackPacketProcessingPort", \ 4033 "MixedSrcClassId", \ 4034 "ITag", \ 4035 "InterfaceIngressKeySelectClassPort", \ 4036 "BfdYourDiscriminator", \ 4037 "CpuVisibilityPacket", \ 4038 "DstL2MulticastGroup", \ 4039 "DstL3MulticastGroup", \ 4040 "ExactMatchHitStatus", \ 4041 "ExactMatchActionClassId", \ 4042 "ExactMatchGroupClassId", \ 4043 "L2PayLoad", \ 4044 "CustomHeaderPkt", \ 4045 "CustomHeaderData", \ 4046 "MimlPkt", \ 4047 "MimlSrcMac", \ 4048 "MimlDstMac", \ 4049 "MimlVlan", \ 4050 "MimlVlanId", \ 4051 "MimlVlanPri", \ 4052 "MimlVlanCfi", \ 4053 "MimlInnerTag", \ 4054 "CapwapHdrType", \ 4055 "CapwapHdrRid", \ 4056 "CapwapPayloadSOF", \ 4057 "CapwapPayloadDstMac", \ 4058 "CapwapPayloadSrcMac", \ 4059 "CapwapPayloadEtherType", \ 4060 "CapwapPayloadOuterVlan", \ 4061 "CapwapPayloadOuterVlanId", \ 4062 "CapwapPayloadOuterVlanPri", \ 4063 "CapwapPayloadOuterVlanCfi", \ 4064 "CapwapPayloadInnerVlan", \ 4065 "CapwapPayloadInnerVlanId", \ 4066 "CapwapPayloadInnerVlanPri", \ 4067 "CapwapPayloadInnerVlanCfi", \ 4068 "CapwapPayloadVlanFormat", \ 4069 "CapwapPayloadSip", \ 4070 "CapwapPayloadDip", \ 4071 "CapwapPayloadSip6", \ 4072 "CapwapPayloadDip6", \ 4073 "CapwapPayloadIpProtocol", \ 4074 "CapwapPayloadTos", \ 4075 "CapwapPayloadL4DstPort", \ 4076 "CapwapPayloadL4SrcPort", \ 4077 "CapwapPayloadL3HdrParseable", \ 4078 "CapwapPayloadL4HdrParseable", \ 4079 "VlanAction", \ 4080 "DownMepSatTerminated", \ 4081 "DstMultipathOverlay", \ 4082 "DstMultipathUnderlay", \ 4083 "StpState", \ 4084 "HiGigMirrorOrSwitchPkt", \ 4085 "HiGigPreserveFlags", \ 4086 "HiGigMplsPkt", \ 4087 "HiGigDoNotFlags", \ 4088 "HiGigVpPreserveFlags", \ 4089 "HiGigOffloadEngineVxltStatus", \ 4090 "HiGigForwardingType", \ 4091 "HiGigLabelType", \ 4092 "HiGigExtendedHeaderPresent", \ 4093 "HiGigVpLagFailoverPacket", \ 4094 "HiGigOffloadEnginePreserveDscp", \ 4095 "HiGigOffloadEnginePreserveDot1p", \ 4096 "HiGigOffloadEngineDeferredFlags", \ 4097 "HiGigOffloadEngineSrcType", \ 4098 "SystemPortBitmap", \ 4099 "SourceGportBitmap", \ 4100 "DevicePortBitmap", \ 4101 "TosLower4Bits", \ 4102 "OamEgressClass2Vxlt", \ 4103 "OamEgressVxltFirstHit", \ 4104 "OamEgressVxltSecondHit", \ 4105 "OamDownMEPLoopbackPacket", \ 4106 "OamEgressPortUnicastDstMacHit", \ 4107 "OamSat", \ 4108 "IngressDropEthernetOamControl", \ 4109 "IngressDropEthernetOamData", \ 4110 "IngressDropMplsOamControl", \ 4111 "IngressDropMplsOamData", \ 4112 "EgressClassVxlan", \ 4113 "OamEgressEtherType", \ 4114 "OamEgressMulticastMacHit", \ 4115 "TrunkMemberSourceModuleId", \ 4116 "OamEgressClassSrcMac", \ 4117 "MyStation2Hit", \ 4118 "ExternalValue4", \ 4119 "ExternalValue5", \ 4120 "ExternalHit4", \ 4121 "ExternalHit5", \ 4122 "GeneratedTtl", \ 4123 "IpMulticastCompatible", \ 4124 "EgressClassTunnel", \ 4125 "EgressClassL3InterfaceTunnel", \ 4126 "StaggeredValue0", \ 4127 "StaggeredValue1", \ 4128 "StaggeredValue2", \ 4129 "StaggeredValue3", \ 4130 "StaggeredDirectValue", \ 4131 "StaggeredPreselProfile0", \ 4132 "StaggeredPreselProfile1", \ 4133 "StaggeredPreselProfile2", \ 4134 "StaggeredPreselProfile3", \ 4135 "StaggeredPreselProfileDirect", \ 4136 "bcmFieldQaulifyPreselId", \ 4137 "EthernetData", \ 4138 "PreemptablePacket", \ 4139 "VxlanClassValid", \ 4140 "VxlanPacket", \ 4141 "VxlanVnidVlanTranslateHit", \ 4142 "VxlanPayloadVlanFormat", \ 4143 "TunnelPayloadDstMac", \ 4144 "TunnelPayloadSrcMac", \ 4145 "TunnelPayloadEtherType", \ 4146 "TunnelPayloadOuterVlan", \ 4147 "TunnelPayloadOuterVlanId", \ 4148 "TunnelPayloadOuterVlanPri", \ 4149 "TunnelPayloadOuterVlanCfi", \ 4150 "TunnelPayloadSip", \ 4151 "TunnelPayloadDip", \ 4152 "TunnelPayloadSip6", \ 4153 "TunnelPayloadDip6", \ 4154 "TunnelPayloadIpProtocol", \ 4155 "TunnelPayloadL4DstPort", \ 4156 "TunnelPayloadL4SrcPort", \ 4157 "RoceBthOpcode", \ 4158 "RoceBthPartitionKey", \ 4159 "RoceBthDstQueuePair", \ 4160 "RoceBthFlags", \ 4161 "RoceVer1Pkt", \ 4162 "RoceVer2Pkt", \ 4163 "SrcPortSRType", \ 4164 "DstPortSRType", \ 4165 "SrcPortSRRoleInterlink", \ 4166 "DstPortSRRoleInterlink", \ 4167 "SrcPortSRMode", \ 4168 "DstPortSRMode", \ 4169 "SrcPortSRNetId", \ 4170 "DstPortSRNetId", \ 4171 "SrcPortSRLanId", \ 4172 "DstPortSRLanId", \ 4173 "SRTagType", \ 4174 "SRLanId", \ 4175 "SRNetId", \ 4176 "VlanSREnable", \ 4177 "VlanSRLanId", \ 4178 "SRFlowId", \ 4179 "L2DestSRNodeType", \ 4180 "SRNetIdMatched", \ 4181 "SRSrcNodeIsSan", \ 4182 "SRSupervisionType", \ 4183 "SRError", \ 4184 "L2SrcMulticastHit", \ 4185 "L2DstMulticastHit", \ 4186 "SRDuplicate", \ 4187 "TsnFlowId", \ 4188 "ExternalValue6", \ 4189 "ExternalValue7", \ 4190 "ExternalHit6", \ 4191 "ExternalHit7", \ 4192 "MirrorDest", \ 4193 "PacketIsIEEE1588", \ 4194 "IEEE1588Encapsulation", \ 4195 "IEEE1588CompensateTimeStamp", \ 4196 "IEEE1588Command", \ 4197 "IEEE1588HeaderOffset", \ 4198 "HeaderFormatExtension", \ 4199 "MacSecTagPresent", \ 4200 "MacSecTag", \ 4201 "MacSecDstMacRangeHit", \ 4202 "FromMacSecPort", \ 4203 "MacSecFlow", \ 4204 "EgressBridgedForwardingDataHigh", \ 4205 "EgressBridgedForwardingDataLow", \ 4206 "EgressBridgedAclDataHigh", \ 4207 "EgressBridgedAclDataLow", \ 4208 "SysHdrType", \ 4209 "SubportTagPresent", \ 4210 "NetworkTagType", \ 4211 "CnTagPresent", \ 4212 "L2PktType", \ 4213 "PktType", \ 4214 "MplsCwPresent", \ 4215 "MplsMcastEthertypePresent", \ 4216 "Ipv4OptionHdrType", \ 4217 "Ipv6ExtensionHdrType", \ 4218 "OverlayVlanFormat", \ 4219 "OverlayL2PktType", \ 4220 "OverlayPktType", \ 4221 "OverlayIpv4OptionHdrType", \ 4222 "OverlayIpv6ExtensionHdrType", \ 4223 "FrontPanelPkt", \ 4224 "HiGigProxyTunnelType", \ 4225 "IpFragPkt", \ 4226 "OuterPriTaggedPkt", \ 4227 "IpInIpPkt", \ 4228 "IpmcV4Pkt", \ 4229 "IpmcV6Pkt", \ 4230 "IpChecksumOkPkt", \ 4231 "NetworkTagMulticastPkt", \ 4232 "IpTtlZeroPkt", \ 4233 "PimBidirDfStatus", \ 4234 "InterfaceClassL2Type", \ 4235 "IntPktVersionOne", \ 4236 "IntPktOverflowed", \ 4237 "IntPktLengthValid", \ 4238 "IntPktType", \ 4239 "IntPktFinalHop", \ 4240 "TunnelSubType", \ 4241 "NshServicePathId", \ 4242 "NshServiceIndex", \ 4243 "KeyGenVar", \ 4244 "RoeFrameType", \ 4245 "BfdGoodPkt", \ 4246 "BfdPktWithDstIpLoopbackAddr", \ 4247 "MplsControlPkt", \ 4248 "StageIngressFlowtracker", \ 4249 "InterfaceClassMplsLookup1", \ 4250 "InterfaceClassMplsLookup2", \ 4251 "InterfaceClassMplsLookup3", \ 4252 "InterfaceClassL3Tunnel", \ 4253 "BfdPktVersionOne", \ 4254 "GenevePktVersionZero", \ 4255 "GpePktVersionZero", \ 4256 "GenevePktWithOam", \ 4257 "GpePktWithOam", \ 4258 "InnerBfdPktVersionOne", \ 4259 "PktDstAddrType", \ 4260 "PktInnerDstAddrType", \ 4261 "InnerL4Ports", \ 4262 "TafEnable", \ 4263 "TafGateId", \ 4264 "TafGateState", \ 4265 "TafCosProfile", \ 4266 "ElkRangeL4DstPort", \ 4267 "ElkRangeL4SrcPort", \ 4268 "Ip6PktNextHeader", \ 4269 "Ip6PktHopLimit", \ 4270 "Ip6PktTrafficClass", \ 4271 "InnerIp6PktNextHeader", \ 4272 "InnerIp6PktHopLimit", \ 4273 "InnerIp6PktTrafficClass", \ 4274 "IpTunnelTtl", \ 4275 "IpTunnelTtlClassZero", \ 4276 "RangeCheckGroup", \ 4277 "FlowtrackerGroupId", \ 4278 "FlowtrackerClassId", \ 4279 "FlowtrackerGroupValid", \ 4280 "FlowtrackerDisabled", \ 4281 "FlowtrackerMeteringExceeded", \ 4282 "FlowtrackerCollectorCopy", \ 4283 "FlowtrackerFlowTableFull", \ 4284 "FlowtrackerGroupFlowExceeded", \ 4285 "FlowtrackerExportQueueFull", \ 4286 "OpaqueTagType", \ 4287 "OpaqueTagHigh", \ 4288 "OpaqueTagLow", \ 4289 "InnerDosAttack", \ 4290 "DosAttackEvents", \ 4291 "InnerDosAttackEvents", \ 4292 "SrcTMPort", \ 4293 "Container", \ 4294 "EgressForwardingClassId", \ 4295 "PktFlowType", \ 4296 "VlanTranslateClassId", \ 4297 "IpIdentifier", \ 4298 "TcpWindowSize", \ 4299 "Ip4Length", \ 4300 "Ip6Length", \ 4301 "TunnelPayloadIp4Length", \ 4302 "TunnelPayloadIp6Length", \ 4303 "GbpPresent", \ 4304 "HiGigGbpPresent", \ 4305 "GbpSrcId", \ 4306 "VxlanGbpPresent", \ 4307 "FlowtrackerCheck", \ 4308 "FlowtrackerLearn", \ 4309 "CosMapSelect", \ 4310 "OpaqueObject1", \ 4311 "OpaqueObject2", \ 4312 "OpaqueObject3", \ 4313 "OpaqueObject4", \ 4314 "IncomingOuterVlanId", \ 4315 "GbpDstId", \ 4316 "HiGigGbpSrcId", \ 4317 "LoopbackSubtype", \ 4318 "PphPresent", \ 4319 "PacketProcessingInVportClass", \ 4320 "UDHBase0", \ 4321 "UDHBase1", \ 4322 "UDHBase2", \ 4323 "UDHBase3", \ 4324 "NetworkQos", \ 4325 "AceEntryId", \ 4326 "Ip4Protocol", \ 4327 "Ip4Tos", \ 4328 "Ip4Ttl", \ 4329 "InVportDataIndex", \ 4330 "EtherTypeUntagged", \ 4331 "NetworkLoadBalanceKeyInitial", \ 4332 "NetworkLoadBalanceKey", \ 4333 "EcmpLoadBalanceKey0Initial", \ 4334 "EcmpLoadBalanceKey0", \ 4335 "EcmpLoadBalanceKey1Initial", \ 4336 "EcmpLoadBalanceKey1", \ 4337 "EcmpLoadBalanceKey2Initial", \ 4338 "EcmpLoadBalanceKey2", \ 4339 "TrunkLoadBalanceKeyInitial", \ 4340 "StateTableKey", \ 4341 "StateTableData", \ 4342 "CompareKeysResult0", \ 4343 "CompareKeysResult1", \ 4344 "CompareKeysTcam0", \ 4345 "CompareKeysTcam1", \ 4346 "LayerRecordType", \ 4347 "LayerRecordOffset", \ 4348 "LayerRecordQualifier", \ 4349 "UDHBase", \ 4350 "ForwardingLayerIndex", \ 4351 "IPTProfile", \ 4352 "AcInLifWideData", \ 4353 "NativeAcInLifWideData", \ 4354 "ForwardingProfile", \ 4355 "ContextId", \ 4356 "ForwardingLayerQualifier", \ 4357 "TracePacket", \ 4358 "TrunkLoadBalanceKey", \ 4359 "Forward", \ 4360 "ParsingStartType", \ 4361 "ParsingStartOffset", \ 4362 "UDHData0", \ 4363 "UDHData1", \ 4364 "UDHData2", \ 4365 "UDHData3", \ 4366 "RxSnoopStrength", \ 4367 "RxSnoopCode", \ 4368 "Visibility", \ 4369 "VisibilityClear", \ 4370 "EthernetMulticast", \ 4371 "EthernetBroadcast", \ 4372 "EthernetFirstTpidExist", \ 4373 "EthernetFirstTpidIndex", \ 4374 "EthernetSecondTpidExist", \ 4375 "EthernetSecondTpidIndex", \ 4376 "EthernetThirdTpidExist", \ 4377 "EthernetThirdTpidIndex", \ 4378 "IpHasOptions", \ 4379 "IpFirstFrag", \ 4380 "IpTunnelType", \ 4381 "Ip6MulticastCompatible", \ 4382 "Ip6FirstAdditionalHeaderExist", \ 4383 "ItmhExtensionExist", \ 4384 "ItmhDestinationFec", \ 4385 "ItmhPphType", \ 4386 "StatSamplingCode", \ 4387 "StatSamplingQualifier", \ 4388 "RpfEcmpMode", \ 4389 "StatOamLM", \ 4390 "InInterface", \ 4391 "OutInterface", \ 4392 "InVportClass", \ 4393 "OutVportClass", \ 4394 "InterfaceClass", \ 4395 "PortClassPacketProcessing", \ 4396 "PortClassTrafficManagement", \ 4397 "OutPortTrafficManagement", \ 4398 "MulticastRpfMode", \ 4399 "Tpid", \ 4400 "VlanId", \ 4401 "VlanPri", \ 4402 "VlanCfi", \ 4403 "VlanPriCfi", \ 4404 "Vlan", \ 4405 "MplsLabel", \ 4406 "MplsLabelId", \ 4407 "MplsLabelTtl", \ 4408 "MplsLabelBos", \ 4409 "MplsLabelExp", \ 4410 "InVPort0", \ 4411 "InVPort1", \ 4412 "OutVPort0", \ 4413 "OutVPort1", \ 4414 "OutVPort2", \ 4415 "OutVPort3", \ 4416 "BierStringOffset", \ 4417 "BierStringSize", \ 4418 "PacketIsBier", \ 4419 "PortClassPacketProcessingGeneralData", \ 4420 "ForwardingAdditionalInfo", \ 4421 "InVportClass0", \ 4422 "InVportClass1", \ 4423 "StatId0", \ 4424 "StatId1", \ 4425 "StatId2", \ 4426 "StatId3", \ 4427 "StatId4", \ 4428 "StatId5", \ 4429 "StatId6", \ 4430 "StatId7", \ 4431 "StatId8", \ 4432 "StatId9", \ 4433 "StatProfile0", \ 4434 "StatProfile1", \ 4435 "StatProfile2", \ 4436 "StatProfile3", \ 4437 "StatProfile4", \ 4438 "StatProfile5", \ 4439 "StatProfile6", \ 4440 "StatProfile7", \ 4441 "StatProfile8", \ 4442 "StatProfile9", \ 4443 "ExtStat0", \ 4444 "ExtStat1", \ 4445 "ExtStat2", \ 4446 "ExtStat3", \ 4447 "ExtStatProfile0", \ 4448 "ExtStatProfile1", \ 4449 "ExtStatProfile2", \ 4450 "ExtStatProfile3", \ 4451 "StatMetaData", \ 4452 "DstL3EgressUnderlay", \ 4453 "DstL3EgressNextHopsUnderlay", \ 4454 "EgressClassPort", \ 4455 "INTProbeMarker1", \ 4456 "INTProbeMarker2", \ 4457 "INTReserved4Bytes", \ 4458 "InVPort0Raw", \ 4459 "InVPort1Raw", \ 4460 "OutVPort0Raw", \ 4461 "OutVPort1Raw", \ 4462 "OutVPort2Raw", \ 4463 "OutVPort3Raw", \ 4464 "AppTypePredefined", \ 4465 "FlowControlType", \ 4466 "TimeStampTxPktType", \ 4467 "SysHdrLocalDstport", \ 4468 "MirrorCode", \ 4469 "MirrorData", \ 4470 "LearnVsi", \ 4471 "LearnData", \ 4472 "LearnStationMove", \ 4473 "LearnMatch", \ 4474 "LearnFound", \ 4475 "LearnExpectedWon", \ 4476 "VrfValue", \ 4477 "InPortWithoutCore", \ 4478 "DstSysPortExtPresent", \ 4479 "IpFwdPlusOneNextProtocol", \ 4480 "MacSecControlPkt", \ 4481 "MacSecSecTagCbit", \ 4482 "MacSecSecTagEbit", \ 4483 "IOAMNameSpaceIdMatch", \ 4484 "IOAMPktOverflowed", \ 4485 "IOAMRemainingLenValid", \ 4486 "SaLookupAcceptedStrength", \ 4487 "LayerRecordTypeRaw", \ 4488 "SrcPortRaw", \ 4489 "SrcModPortGportRaw", \ 4490 "DstMulticastGroupRaw", \ 4491 "InInterfaceRaw", \ 4492 "OutInterfaceRaw", \ 4493 "InPortWithoutCoreRaw", \ 4494 "VlanFormatRaw", \ 4495 "InPortRaw", \ 4496 "ColorRaw", \ 4497 "DstGportRaw", \ 4498 "DstPortRaw", \ 4499 "OutPortRaw", \ 4500 "DstRpfValid", \ 4501 "RpfOutVPort", \ 4502 "RpfOutInterface", \ 4503 "RpfOutVPortRaw", \ 4504 "RpfRouteValid", \ 4505 "EcmpGroup", \ 4506 "Ip4DstMulticast", \ 4507 "IgmpType", \ 4508 "L2IngressInterface", \ 4509 "L3SrcHit", \ 4510 "L3DestHit", \ 4511 "L2MacInfo", \ 4512 "L4Info", \ 4513 "InnerPriTaggedPkt", \ 4514 "HiGig3Class", \ 4515 "HiGig3Flags", \ 4516 "LoopbackHiGig3Flags", \ 4517 "IpExtensionHdrNum", \ 4518 "IngressL2InterfaceOpaqueCtrlId", \ 4519 "DevicePortOpaqueCommand", \ 4520 "IngressInterfaceClass", \ 4521 "IngressL3InterfaceOpaqueCtrlId", \ 4522 "SvpOpaqueCtrlId", \ 4523 "VpnOpaqueCtrlId", \ 4524 "L2SrcDiscard", \ 4525 "L2LearnCommands", \ 4526 "TunnelTermStatus", \ 4527 "LoopbackHdrFlags", \ 4528 "PacketStatus", \ 4529 "ForwardingStatus", \ 4530 "TunnelAltEtherType", \ 4531 "TunnelAltSrcIp", \ 4532 "TunnelAltSrcIp6", \ 4533 "TunnelAltDstIp", \ 4534 "TunnelAltDstIp6", \ 4535 "TunnelAltIpProtocol", \ 4536 "TunnelAltL4SrcPort", \ 4537 "TunnelAltL4DstPort", \ 4538 "OuterL2MacInfo", \ 4539 "OuterIpInfo", \ 4540 "OuterL4Info", \ 4541 "InnerL2MacInfo", \ 4542 "InnerIpInfo", \ 4543 "InnerL4Info", \ 4544 "EffectiveTtl", \ 4545 "FlexStateResultA0", \ 4546 "FlexStateResultA1", \ 4547 "LastIpProtocol", \ 4548 "MplsLabel4", \ 4549 "MplsLabel4Ttl", \ 4550 "MplsLabel4Bos", \ 4551 "MplsLabel4Exp", \ 4552 "MplsLabel4Id", \ 4553 "MplsLabel5", \ 4554 "MplsLabel5Ttl", \ 4555 "MplsLabel5Bos", \ 4556 "MplsLabel5Exp", \ 4557 "MplsLabel5Id", \ 4558 "MplsLabel6", \ 4559 "MplsLabel6Ttl", \ 4560 "MplsLabel6Bos", \ 4561 "MplsLabel6Exp", \ 4562 "MplsLabel6Id", \ 4563 "MplsLabel7", \ 4564 "MplsLabel7Ttl", \ 4565 "MplsLabel7Bos", \ 4566 "MplsLabel7Exp", \ 4567 "MplsLabel7Id", \ 4568 "L5PayloadByte1", \ 4569 "L5PayloadByte2", \ 4570 "L5PayloadByte3", \ 4571 "L5PayloadByte4", \ 4572 "L5PayloadByte5", \ 4573 "L5PayloadByte6", \ 4574 "L5PayloadByte7", \ 4575 "L5PayloadByte8", \ 4576 "OuterL5PayloadByte1", \ 4577 "OuterL5PayloadByte2", \ 4578 "OuterL5PayloadByte3", \ 4579 "OuterL5PayloadByte4", \ 4580 "OuterL5PayloadByte5", \ 4581 "OuterL5PayloadByte6", \ 4582 "OuterL5PayloadByte7", \ 4583 "OuterL5PayloadByte8", \ 4584 "ArpSrcMac", \ 4585 "ArpDstMac", \ 4586 "L2EgressInterface", \ 4587 "Stg", \ 4588 "CosQueueNum", \ 4589 "CopyToCpu", \ 4590 "CopyToCpuTruncate", \ 4591 "McastPkt", \ 4592 "UntagPkt", \ 4593 "DoNotModify", \ 4594 "TxPortType", \ 4595 "RxPortType", \ 4596 "MirrorPktType", \ 4597 "PtpMsgType", \ 4598 "PtpVersion", \ 4599 "PtpPktCtrl", \ 4600 "VlanMembershipCheck", \ 4601 "InnerVlanTagPreserve", \ 4602 "OuterVlanTagPreserve", \ 4603 "ForwardingEligible", \ 4604 "InterfaceClassMpls", \ 4605 "L3Check", \ 4606 "L2InterfaceMatch", \ 4607 "ProtocolPktOpaqueCtrlId", \ 4608 "LookupClassField", \ 4609 "ExactMatchOpaqueObject0", \ 4610 "IcmpType", \ 4611 "OuterVlanRangeMatch", \ 4612 "InnerVlanRangeMatch", \ 4613 "TunnelHeaderDstMac", \ 4614 "TunnelHeaderSrcMac", \ 4615 "TunnelHeaderSip", \ 4616 "TunnelHeaderDip", \ 4617 "TunnelHeaderSip6", \ 4618 "TunnelHeaderDip6", \ 4619 "TunnelHeaderIpProtocol", \ 4620 "MHPriority", \ 4621 "EgressPortCtrlType", \ 4622 "SubportGroupIds", \ 4623 "StageAggregateMmuFlowtracker", \ 4624 "StageAggregateEgressFlowtracker", \ 4625 "FlowtrackerAggregateClass", \ 4626 "FlowtrackerClassIdSource1", \ 4627 "FlowtrackerClassIdSource2", \ 4628 "ApplSignatureId", \ 4629 "InnerApplSignatureId", \ 4630 "CosQueueId", \ 4631 "CongestionExperienced", \ 4632 "CongestionMarked", \ 4633 "IsUcastCosQueue", \ 4634 "EgressPortQueue", \ 4635 "LearnExtensionPresent", \ 4636 "L3EgressIntf", \ 4637 "ForwardCode", \ 4638 "PktFwdType", \ 4639 "StatOamLMRaw", \ 4640 "RangeFirstHit0", \ 4641 "RangeFirstHit1", \ 4642 "RangeFirstHit2", \ 4643 "RangeFirstHit3", \ 4644 "IfaCurrentLengthEqualToZero", \ 4645 "IfaHopLimitEqualToZero", \ 4646 "IfaVersion2", \ 4647 "IfaGlobalNameSpace", \ 4648 "IfaLocalNameSpace", \ 4649 "IfaCurrentLength", \ 4650 "IfaRequestVector", \ 4651 "DstType", \ 4652 "LoopbackHdrDstType", \ 4653 "OverlayNetworkTagType", \ 4654 "OverlayIpOptionHdrType", \ 4655 "IpOptionHdrType", \ 4656 "FirstDropReason", \ 4657 "DropReason", \ 4658 "CopyToCpuReasonLow", \ 4659 "Rtag7CHashLower", \ 4660 "Rtag7CHashUpper", \ 4661 "AppTypeRaw", \ 4662 "AppTypePredefinedRaw", \ 4663 "ForwardingTypeRaw", \ 4664 "ContextIdRaw", \ 4665 "OverlayEgressClass", \ 4666 "EgressL3TunnelGport", \ 4667 "EgressMcastPktReason", \ 4668 "EgressPktQueueNotification", \ 4669 "EgressDOPTrigger", \ 4670 "EgressTunnelIpHeaderFlowLabel", \ 4671 "EgressTunnelIpHeaderEcn", \ 4672 "EgressTunnelIpHeaderDscp", \ 4673 "IpExtHdr2Protocol", \ 4674 "L2EgrIntfEfpCtrlId", \ 4675 "IfaFlags", \ 4676 "IfaMaxLength", \ 4677 "IfaActionVector", \ 4678 "StateTableDataWrite", \ 4679 "CopyToCpuReasonHigh", \ 4680 "InnerTcpControl", \ 4681 "TunnelTerminationProcessingProfile", \ 4682 "IntFlags", \ 4683 "IntHdrType", \ 4684 "IntUdpChecksumEqualsZero", \ 4685 "IntMetadataHdrType", \ 4686 "IntHdrPresent", \ 4687 "CompressionSrcHit", \ 4688 "CompressionDstHit", \ 4689 "IpTunnelTypeRaw", \ 4690 "SampledPkt", \ 4691 "SrcIp6SrhValid", \ 4692 "FtmhAsePresent", \ 4693 "FtmhAseType", \ 4694 "HiGig3Pkt", \ 4695 "LoopbackLagFailoverPkt", \ 4696 "PktMiscCtrl", \ 4697 "ForwardingOuterVlanPri", \ 4698 "ForwardingOuterTpid", \ 4699 "IncomingVlanFormat", \ 4700 "BfdMultiplierLen", \ 4701 "BfdVerFlags", \ 4702 "GpeFlags", \ 4703 "GpeNetworkId", \ 4704 "GpeProtocol", \ 4705 "GpeReserved0", \ 4706 "GpeReserved1", \ 4707 "IfaAttrOpaqData", \ 4708 "IgmpMaxRespTime", \ 4709 "MplsTopHeader", \ 4710 "MplsVcLabelHeader", \ 4711 "TcpAckNum", \ 4712 "TcpSequenceNum", \ 4713 "UdpLength", \ 4714 "PtpReserved1", \ 4715 "PtpTransportSpec", \ 4716 "LoopbackIfaSwitchCopyDrop", \ 4717 "VipValid", \ 4718 "VipId", \ 4719 "VIPMemberReference", \ 4720 "PccHit", \ 4721 "PdelayReq", \ 4722 "PphType", \ 4723 "RxTrapProfile", \ 4724 "DstMultipathLevel1", \ 4725 "DstMultipathLevel2", \ 4726 "Svtag", \ 4727 "RecircleHdrFirstDropReason", \ 4728 "RecircleHdrDropReason", \ 4729 "RecircleHdrCode", \ 4730 "MacSecOpaque", \ 4731 "MirrorOnDrop", \ 4732 "MirrorOnDropReason", \ 4733 "IntCtrl", \ 4734 "IfaHopCount", \ 4735 "IfaHopLimit", \ 4736 "L2SrcMiscClassId", \ 4737 "L2DstMiscClassId", \ 4738 "L3SrcMiscClassId", \ 4739 "L3DstMiscClassId", \ 4740 "RawResidenceTime", \ 4741 "IpFragInfo", \ 4742 "InDscpExp", \ 4743 "AcInLifWideDataExtended", \ 4744 "IfaNextHdr", \ 4745 "IfaVersion", \ 4746 "IngressL2InterfaceOpaqueCtrlId1", \ 4747 "IngressL2InterfaceFlexDigestCtrlIdA", \ 4748 "IngressL2InterfaceFlexDigestCtrlIdB", \ 4749 "AcInLifWideDataExtendedRaw", \ 4750 "ForwardingPacketRes", \ 4751 "SrcCompressionClassId", \ 4752 "DstCompressionClassId", \ 4753 "IPv6FragmentedNonFirst", \ 4754 "RecircleHdrOpaqueCtrlIdC", \ 4755 "Ip6SecondAdditionalHeaderExist", \ 4756 "MplsForwardingControlWord", \ 4757 "MplsCtrlPktType" \ 4758 } 4759 4760 /* Field Qualifier Class (for bcm_field_qualifier_info_get()). */ 4761 typedef enum bcm_field_qualifier_class_e { 4762 bcmFieldQualifierClassMetaData = 0, /* Info taken from the packet's 4763 MetaData. Can use 4764 FieldInputTypeMetaData. */ 4765 bcmFieldQualifierClassHeader = 1, /* Info taken from the packet's header. 4766 Can use FieldInputTypeLayerFwd or 4767 FieldInputTypeLayerAbsolute. */ 4768 bcmFieldQualifierClassLayerRecord = 2, /* Info taken from the packet's layer 4769 records. Can use 4770 FieldInputTypeLayerRecordsFwd or 4771 FieldInputTypeLayerRecordsAbsolute. */ 4772 bcmFieldQualifierClassUserCreated = 3, /* User defined qualifier. Can use any 4773 input type. */ 4774 bcmFieldQualifierClassCount = 4 /* Always Last. Not a usable value. */ 4775 } bcm_field_qualifier_class_t; 4776 4777 #define BCM_FIELD_QUALIFIERCLASS_STRINGS \ 4778 { \ 4779 "bcmFieldQualifierClassMetaData", \ 4780 "bcmFieldQualifierClassHeader", \ 4781 "bcmFieldQualifierClassLayerRecord", \ 4782 "bcmFieldQualifierClassUserCreated" \ 4783 } 4784 4785 /* 4786 * Field Stage Type 4787 * 4788 * Selects which pipeline stage an entry applies to. 4789 */ 4790 typedef enum bcm_field_stage_e { 4791 bcmFieldStageFirst = 0, /* Earliest Field stage in device. */ 4792 bcmFieldStageIngressEarly = 1, /* Early Ingress Field stage. */ 4793 bcmFieldStageIngressLate = 2, /* Late Ingress Field stage. */ 4794 bcmFieldStageDefault = 3, /* Default stage for device. */ 4795 bcmFieldStageLast = 4, /* Latest Field stage in device. */ 4796 bcmFieldStageIngress = 5, /* Ingress stage, when there is only one 4797 such. */ 4798 bcmFieldStageEgress = 6, /* Egress field stage */ 4799 bcmFieldStageExternal = 7, /* External field stage */ 4800 bcmFieldStageHash = 8, /* Hashing stage */ 4801 bcmFieldStageIngressExactMatch = 9, /* Ingress exact match stage */ 4802 bcmFieldStageIngressFlowtracker = 10, /* Ingress flowtracker stage */ 4803 bcmFieldStageIngressPMF1 = 11, /* Stage Ingress PMF-1 */ 4804 bcmFieldStageIngressPMF2 = 12, /* Stage Ingress PMF-2 */ 4805 bcmFieldStageIngressPMF3 = 13, /* Stage Ingress PMF-3 */ 4806 bcmFieldStageLookup = 14, /* Stage Lookup */ 4807 bcmFieldStageClass = 15, /* Stage Class */ 4808 bcmFieldStageAggregateMmuFlowtracker = 16, /* Aggregate Mmu Flowtracker Stage. */ 4809 bcmFieldStageAggregateEgressFlowtracker = 17, /* Aggregate Egress Flowtracker Stage. */ 4810 bcmFieldStageEgressExtension = 18, /* Extension of the egress field stage, 4811 performing actions later. */ 4812 bcmFieldStageCount = 19 /* Always Last. Not a usable value. */ 4813 } bcm_field_stage_t; 4814 4815 #define BCM_FIELD_STAGE_STRINGS \ 4816 { \ 4817 "First", \ 4818 "IngressEarly", \ 4819 "IngressLate", \ 4820 "Default", \ 4821 "Last", \ 4822 "Ingress", \ 4823 "Egress", \ 4824 "External", \ 4825 "Hash", \ 4826 "IngressExactMatch", \ 4827 "IngressFlowtracker", \ 4828 "IngressPMF1", \ 4829 "IngressPMF2", \ 4830 "IngressPMF3", \ 4831 "Lookup", \ 4832 "Class", \ 4833 "AggregateMmuFlowtracker", \ 4834 "AggregateEgressFlowtracker", \ 4835 "EgressExtension" \ 4836 } 4837 4838 /* 4839 * information related to the preselectors management advance mode per 4840 * stage. 4841 */ 4842 typedef struct bcm_field_stage_info_s { 4843 int field_presel_advanced_mode; /* is presel advanced mode enabled. */ 4844 int field_presel_max_id; /* The maximum presel id that can be 4845 defined for a new created program 4846 selector in advanced mode. */ 4847 int field_presel_staggered_max_id; /* The maximum presel id that can be 4848 defined for a new created program 4849 selector in staggered mode. */ 4850 } bcm_field_stage_info_t; 4851 4852 /* DATA qualifier object, used for creation of custom data qualifiers. */ 4853 typedef struct bcm_field_data_qualifier_s { 4854 int qual_id; /* Data qualifier id. */ 4855 uint32 flags; /* Data qualifier flags 4856 BCM_FIELD_DATA_QUALIFIER_XXX. */ 4857 bcm_field_data_offset_base_t offset_base; /* Offset base adjustment. */ 4858 uint16 offset; /* Packet byte offset. */ 4859 int length; /* Matched data byte length. */ 4860 bcm_field_qualify_t qualifier; /* Data qualifier based on a predefined 4861 qualifier. Used when 4862 BCM_FIELD_DATA_QUALIFIER_OFFSET_PREDEFINED 4863 is set. */ 4864 bcm_field_stage_t stage; /* Data qualifier stage (e.g. when based 4865 on predefined qualifiers). */ 4866 uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Data Qualifier. */ 4867 } bcm_field_data_qualifier_t; 4868 4869 #define BCM_FIELD_QUALIFY_MAX (bcmFieldQualifyCount + BCM_FIELD_USER_NUM_UDFS) /* Must be >= bcmFieldQualifyCount. */ 4870 4871 #define BCM_FIELD_QUALIFY_WIDTH_MAX 50 4872 4873 #define BCM_FIELD_QSET_WIDTH_MAX \ 4874 ((BCM_FIELD_QUALIFY_WIDTH_MAX+1) * \ 4875 bcmFieldQualifyCount + 1) 4876 4877 #define BCM_FIELD_EXACT_MATCH_MASK (~0) /* Mask parameter value. */ 4878 4879 /* 4880 * Field Qualifier Decap. 4881 * 4882 * Possible data values for bcm_field_qualify_decap(). 4883 */ 4884 typedef enum bcm_field_decap_e { 4885 bcmFieldDecapNone = 0, /* No Decap. */ 4886 bcmFieldDecapL2Mpls = 1, /* L2 MPLS Decap. */ 4887 bcmFieldDecapL3Mpls = 2, /* L3 MPLS Decap. */ 4888 bcmFieldDecapOtherMPLS = 3, /* non-L2 or L3 MPLS Decap. */ 4889 bcmFieldDecapIpTunnel = 4, /* IP Tunnel Decap. */ 4890 bcmFieldDecapIpGreTunnel = 5, /* IP GRE Tunnel Decap. */ 4891 bcmFieldDecapIpUdpTunnel = 6, /* IP UDP Tunnel Decap. */ 4892 bcmFieldDecapIpPimTunnel = 7, /* IP PIM Tunnel Decap. */ 4893 bcmFieldDecapVxlan = 8, /* VXLAN Decap. */ 4894 bcmFieldDecapCount = 9 /* Always Last. Not a usable value. */ 4895 } bcm_field_decap_t; 4896 4897 #define BCM_FIELD_DECAP_STRINGS \ 4898 { \ 4899 "None", \ 4900 "L2Mpls", \ 4901 "L3Mpls", \ 4902 "OtherMPLS", \ 4903 "IpTunnel", \ 4904 "IpGreTunnel", \ 4905 "IpUdpTunnel", \ 4906 "IpPimTunnel", \ 4907 "Vxlan" \ 4908 } 4909 4910 /* 4911 * Field Qualifier Forwarding Type (for 4912 * bcm_field_qualify_ForwardingType). 4913 */ 4914 typedef enum bcm_field_ForwardingType_e { 4915 bcmFieldForwardingTypeAny = 0, /* Don't care. */ 4916 bcmFieldForwardingTypeL2 = 1, /* L2 switching forwarding. */ 4917 bcmFieldForwardingTypeL3 = 2, /* L3 routing forwarding. */ 4918 bcmFieldForwardingTypeL2Shared = 3, /* Shared vlan L2 forwarding. */ 4919 bcmFieldForwardingTypeL2Independent = 4, /* Vlan based L2 forwarding. */ 4920 bcmFieldForwardingTypeL2Vpn = 5, /* VFI based L2 forwarding. */ 4921 bcmFieldForwardingTypeL2VpnDirect = 6, /* L2 point to point vpn forwarding. */ 4922 bcmFieldForwardingTypeL3Direct = 7, /* L3 predefined next hop forwarding. */ 4923 bcmFieldForwardingTypeIp4Ucast = 8, /* IPv4 Unicast Routing forwarding. */ 4924 bcmFieldForwardingTypeIp4Mcast = 9, /* IPv4 Multicast Routing forwarding. */ 4925 bcmFieldForwardingTypeIp6Ucast = 10, /* IPv6 Unicast Routing forwarding. */ 4926 bcmFieldForwardingTypeIp6Mcast = 11, /* IPv6 Multicast Routing forwarding. */ 4927 bcmFieldForwardingTypeMpls = 12, /* MPLS Switching forwarding. */ 4928 bcmFieldForwardingTypeTrill = 13, /* Trill forwarding. */ 4929 bcmFieldForwardingTypeRxReason = 14, /* Forwarding according to a RxReason. */ 4930 bcmFieldForwardingTypeTrafficManagement = 15, /* Traffic Management forwarding, when 4931 an external Packet Processor sets the 4932 forwarding decision. */ 4933 bcmFieldForwardingTypeSnoop = 16, /* Snooped packet. */ 4934 bcmFieldForwardingTypeMplsLabel1 = 17, /* MPLS Switching forwarding according 4935 to the 1st label */ 4936 bcmFieldForwardingTypeMplsLabel2 = 18, /* MPLS Switching forwarding according 4937 to the 2nd label */ 4938 bcmFieldForwardingTypeMplsLabel3 = 19, /* MPLS Switching forwarding according 4939 to the 3rd label */ 4940 bcmFieldForwardingTypeFCoE = 20, /* Fiber Channel over Ethernet 4941 forwarding. */ 4942 bcmFieldForwardingTypePortExtender = 21, /* VNTAG/ETAG based forwarding. */ 4943 bcmFieldForwardingTypeCustom1 = 22, /* Custom_1 forwarding. */ 4944 bcmFieldForwardingTypeCustom2 = 23, /* Custom_2 forwarding. */ 4945 bcmFieldForwardingTypeL2SharedVpn = 24, /* Shared VFI based L2 Forwarding. */ 4946 bcmFieldForwardingTypePortDirect = 25, /* Port based Point to Point Forwarding. */ 4947 bcmFieldForwardingTypeSvpDirect = 26, /* SVP based Point to Point Forwarding. */ 4948 bcmFieldForwardingTypeVlanDirect = 27, /* VLAN based Point to Point Forwarding. */ 4949 bcmFieldForwardingTypeCount = 28 /* Always Last. Not a usable value. */ 4950 } bcm_field_ForwardingType_t; 4951 4952 #define BCM_FIELD_FORWARDINGTYPE_STRINGS \ 4953 { \ 4954 "Any", \ 4955 "L2", \ 4956 "L3", \ 4957 "L2Shared", \ 4958 "L2Independent", \ 4959 "L2Vpn", \ 4960 "L2VpnDirect", \ 4961 "L3Direct", \ 4962 "Ip4Ucast", \ 4963 "Ip4Mcast", \ 4964 "Ip6Ucast", \ 4965 "Ip6Mcast", \ 4966 "Mpls", \ 4967 "Trill", \ 4968 "RxReason", \ 4969 "TrafficManagement", \ 4970 "Snoop", \ 4971 "MplsLabel1", \ 4972 "MplsLabel2", \ 4973 "MplsLabel3", \ 4974 "FCoE", \ 4975 "PortExtender", \ 4976 "Custom1", \ 4977 "Custom2", \ 4978 "L2SharedVpn", \ 4979 "PortDirect", \ 4980 "SvpDirect", \ 4981 "VlanDirect" \ 4982 } 4983 4984 /* 4985 * Field Qualifier HiGig Forwarding Type (for 4986 * bcm_field_qualify_HiGigForwardingType). 4987 */ 4988 typedef enum bcm_field_HiGigForwardingType_e { 4989 bcmFieldHiGigForwardingTypeControlPacket = 0, /* Control Packet. */ 4990 bcmFieldHiGigForwardingTypeKnownL2 = 1, /* L2 Unicast/ Known L2 Multicast. */ 4991 bcmFieldHiGigForwardingTypeKnownL3 = 2, /* L3 Unicast/ Known L3 Multicast. */ 4992 bcmFieldHiGigForwardingTypeUnknownL2Multicast = 3, /* Unknown L2 Multicast. */ 4993 bcmFieldHiGigForwardingTypeUnknownL3Multicast = 4, /* Unknown L3 Multicast. */ 4994 bcmFieldHiGigForwardingTypeBroadcastOnUnknownL2Unicast = 5, /* Broadcast due to Unknown L2 Unicast. */ 4995 bcmFieldHiGigForwardingTypeBroadcast = 6, /* Broadcast. */ 4996 bcmFieldHiGigForwardingTypeCount = 7 /* Always Last. Not a usable value. */ 4997 } bcm_field_HiGigForwardingType_t; 4998 4999 #define BCM_FIELD_HIGIGFORWARDINGTYPE_STRINGS \ 5000 { \ 5001 "ControlPacket", \ 5002 "KnownL2", \ 5003 "KnownL3", \ 5004 "UnknownL2Multicast", \ 5005 "UnknownL3Multicast", \ 5006 "BroadcastOnUnknownL2Unicast", \ 5007 "Broadcast" \ 5008 } 5009 5010 /* Field Qualifier Application Type (for bcm_field_qualify_AppType). */ 5011 typedef enum bcm_field_AppType_e { 5012 bcmFieldAppTypeAny = 0, /* Don't care. */ 5013 bcmFieldAppTypeL2 = 1, /* L2 bridging. */ 5014 bcmFieldAppTypeL2VpnDirect = 2, /* Cross connect service. */ 5015 bcmFieldAppTypeIp4Ucast = 3, /* IPv4 Unicast Routing. */ 5016 bcmFieldAppTypeIp4McastBidir = 4, /* IPv4 Multicast BIDIR Routing. */ 5017 bcmFieldAppTypeIp6Ucast = 5, /* IPv6 Unicast Routing. */ 5018 bcmFieldAppTypeIp6Mcast = 6, /* IPv6 Multicast Routing forwarding. */ 5019 bcmFieldAppTypeMpls = 7, /* MPLS Switching forwarding. */ 5020 bcmFieldAppTypeArp = 8, /* ARP forwarding. */ 5021 bcmFieldAppTypeTrillUcast = 9, /* Trill Unicast forwarding. */ 5022 bcmFieldAppTypeTrillMcast = 10, /* Trill Multicast forwarding. */ 5023 bcmFieldAppTypeL2TrillMcast = 11, /* L2 Multicast after Trill termination. */ 5024 bcmFieldAppTypeTrafficManagement = 12, /* Traffic Management forwarding, when 5025 an external Packet Processor sets the 5026 forwarding decision. */ 5027 bcmFieldAppTypeMiM = 13, /* MAC-in-MAC forwarding. */ 5028 bcmFieldAppTypeL2MiM = 14, /* L2 forwarding after MAC-in-MAC 5029 termination. */ 5030 bcmFieldAppTypeIp4UcastRpf = 15, /* IPv4 Unicast Routing (coupled to the 5031 RPF lookup). */ 5032 bcmFieldAppTypeIp6UcastRpf = 16, /* IPv6 Unicast Routing (coupled to the 5033 RPF lookup). */ 5034 bcmFieldAppTypeIp4McastRpf = 17, /* IPv4 Multicast Routing (coupled to 5035 the RPF lookup). */ 5036 bcmFieldAppTypeCompIp4McastRpf = 18, /* Compatible IPv4 Multicast Routing 5037 (coupled to the RPF lookup). */ 5038 bcmFieldAppTypeIp6McastRpf = 19, /* IPv6 Multicast Routing (coupled to 5039 the RPF lookup). */ 5040 bcmFieldAppTypeMplsCoupling = 20, /* Coupling MPLS Switching. */ 5041 bcmFieldAppTypeFCoE = 21, /* FCoE without VFT and local D_ID. */ 5042 bcmFieldAppTypeFCoETransit = 22, /* Transit FCoE (bridging). */ 5043 bcmFieldAppTypeFCoEVft = 23, /* FCoE with VFT Routing. */ 5044 bcmFieldAppTypeFCoERemote = 24, /* FCoE without VFT and remote D_ID 5045 Routing. */ 5046 bcmFieldAppTypeFCoEVftRemote = 25, /* FCoE wth VFT and remote D_ID v. */ 5047 bcmFieldAppTypeL2VpnExtended = 26, /* Extended P2P forwarding. */ 5048 bcmFieldAppTypeIp4MacSrcBind = 27, /* IPV4-MAC Source bind. */ 5049 bcmFieldAppTypeIp6MacSrcBind = 28, /* IPV6-MAC Source bind. */ 5050 bcmFieldAppTypeIp4SrcBind = 29, /* IPV4 Source bind. */ 5051 bcmFieldAppTypeIp6SrcBind = 30, /* IPV6 Source bind. */ 5052 bcmFieldAppTypeVplsGreIp = 31, /* VPLS tunnel over GREoIP tunnel. */ 5053 bcmFieldAppTypeFglTrillMcast = 32, /* Fine-grained labeling Trill Multicast 5054 forwarding. */ 5055 bcmFieldAppTypeBfdIp4SingleHop = 33, /* BFD ipv4 single hop. */ 5056 bcmFieldAppTypeBfdEcho = 34, /* BFD Echo. */ 5057 bcmFieldAppTypeIp4DoubleCapacity = 35, /* IPv4 Unicast Routing with double 5058 capacity in external tcam. */ 5059 bcmFieldAppTypeIp6UcastPublic = 36, /* IPv6 Unicast Public Routing. */ 5060 bcmFieldAppTypeIp6UcastRpfPublic = 37, /* IPv6 Unicast Public Routing (coupled 5061 to the RPF lookup). */ 5062 bcmFieldAppTypeIp4UcastPublic = 38, /* IPv4 Unicast Public Routing. */ 5063 bcmFieldAppTypeIp4UcastRpfPublic = 39, /* IPv4 Unicast Public Routing (coupled 5064 to the RPF lookup). */ 5065 bcmFieldAppTypeIp4McastL2Ssm = 40, /* IPv4 L2 Source Specific Multicast 5066 forwarding. */ 5067 bcmFieldAppTypeIp6McastL2Ssm = 41, /* IPv6 L2 Source Specific Multicast 5068 forwarding. */ 5069 bcmFieldAppTypeBfdIp6SingleHop = 42, /* BFD ipv6 single hop. */ 5070 bcmFieldAppTypeIp6McastL3Ssm = 43, /* IPv6 L3 Source Specific Multicast 5071 forwarding. */ 5072 bcmFieldAppTypeIp6McastL3SsmCompressSip = 44, /* IPv6 L3 Source Specific Multicast 5073 compress SIP. */ 5074 bcmFieldAppTypeVip4 = 45, /* SLLB Virtual IPv4 forwarding. */ 5075 bcmFieldAppTypeVip6 = 46, /* SLLB Virtual IPv6 forwarding. */ 5076 bcmFieldAppTypeVip4Direct = 47, /* SLLB non-VIP IPv4 forwarding on VIP 5077 enabled interfaces. */ 5078 bcmFieldAppTypeVip6Direct = 48, /* SLLB non-VIP IPv6 forwarding on VIP 5079 enabled interfaces. */ 5080 bcmFieldAppTypeCount = 49 /* Always Last. Not a usable value. */ 5081 } bcm_field_AppType_t; 5082 5083 #define BCM_FIELD_APPTYPE_STRINGS \ 5084 { \ 5085 "Any", \ 5086 "L2", \ 5087 "L2VpnDirect", \ 5088 "Ip4Ucast", \ 5089 "Ip4McastBidir", \ 5090 "Ip6Ucast", \ 5091 "Ip6Mcast", \ 5092 "Mpls", \ 5093 "Arp", \ 5094 "TrillUcast", \ 5095 "TrillMcast", \ 5096 "L2TrillMcast", \ 5097 "TrafficManagement", \ 5098 "MiM", \ 5099 "L2MiM", \ 5100 "Ip4UcastRpf", \ 5101 "Ip6UcastRpf", \ 5102 "Ip4McastRpf", \ 5103 "CompIp4McastRpf", \ 5104 "Ip6McastRpf", \ 5105 "MplsCoupling", \ 5106 "FCoE", \ 5107 "FCoETransit", \ 5108 "FCoEVft", \ 5109 "FCoERemote", \ 5110 "FCoEVftRemote", \ 5111 "L2VpnExtended", \ 5112 "Ip4MacSrcBind", \ 5113 "Ip6MacSrcBind", \ 5114 "Ip4SrcBind", \ 5115 "Ip6SrcBind", \ 5116 "VplsGreIp", \ 5117 "FglTrillMcast", \ 5118 "BfdIp4SingleHop", \ 5119 "BfdEcho", \ 5120 "Ip4DoubleCapacity", \ 5121 "Ip6UcastPublic", \ 5122 "Ip6UcastRpfPublic", \ 5123 "Ip4UcastPublic", \ 5124 "Ip4UcastRpfPublic", \ 5125 "Ip4McastL2Ssm", \ 5126 "Ip6McastL2Ssm", \ 5127 "BfdIp6SingleHop", \ 5128 "Ip6McastL3Ssm", \ 5129 "Ip6McastL3SsmCompressSip", \ 5130 "Vip4", \ 5131 "Vip6", \ 5132 "Vip4Direct", \ 5133 "Vip6Direct" \ 5134 } 5135 5136 /* Field Qualifier LoopbackType (for bcm_field_qualify_LoopbackType). */ 5137 typedef enum bcm_field_LoopbackType_e { 5138 bcmFieldLoopbackTypeAny = 0, /* Don't care. */ 5139 bcmFieldLoopbackTypeMirror = 1, /* Mirrored frames. */ 5140 bcmFieldLoopbackTypeWlan = 2, /* WLAN frames. */ 5141 bcmFieldLoopbackTypeMim = 3, /* Mac in Mac frames. */ 5142 bcmFieldLoopbackTypeRedirect = 4, /* Redirected frames. */ 5143 bcmFieldLoopbackTypeTrillNetwork = 5, /* Trill network port loopback. */ 5144 bcmFieldLoopbackTypeTrillAccess = 6, /* Trill access port loopback. */ 5145 bcmFieldLoopbackTypeRegexMatch = 7, /* Regex NLF loopback packet. */ 5146 bcmFieldLoopbackTypeMplsP2mp = 8, /* MPLS P2MP second pass loopback 5147 packet. */ 5148 bcmFieldLoopbackTypeQcn = 9, /* QCN loopback packet. */ 5149 bcmFieldLoopbackTypeWlanEncap = 10, /* WLAN ENCAP NLF loopback packet. */ 5150 bcmFieldLoopbackTypeWlanEncapEncrypt = 11, /* WLAN ENCAP needs encryption loopback 5151 packet. */ 5152 bcmFieldLoopbackTypeWlanDecap = 12, /* WLAN DECAP NLF loopback packet. */ 5153 bcmFieldLoopbackTypePassThru = 13, /* PassThru NLF loopback packet. */ 5154 bcmFieldLoopbackTypeMplsExtendedLookup = 14, /* MPLS extended lookup packet. */ 5155 bcmFieldLoopbackTypeL2Gre = 15, /* L2 GRE loopback packet. */ 5156 bcmFieldLoopbackTypeVxlan = 16, /* Vxlan loopback packet. */ 5157 bcmFieldLoopbackTypeTunnelAny = 17, /* MinM, L2GRE and VXLAN tunnel loopback 5158 packet. */ 5159 bcmFieldLoopbackTypeMasquerade = 18, /* Process as if it was received on 5160 front panel port. */ 5161 bcmFieldLoopbackTypeL2Tunnel2ndPassFlow = 19, /* L2 Tunnel second pass flow. */ 5162 bcmFieldLoopbackTypeMasqueradeWithSwitchDropIndication = 20, /* Loopback header with switch probe 5163 Drop Indicator */ 5164 bcmFieldLoopbackTypeCount = 21 /* Always Last. Not a usable value. */ 5165 } bcm_field_LoopbackType_t; 5166 5167 #define BCM_FIELD_LOOPBACKTYPE_STRINGS \ 5168 { \ 5169 "Any", \ 5170 "Mirror", \ 5171 "Wlan", \ 5172 "Mim", \ 5173 "Redirect", \ 5174 "TrillNetwork", \ 5175 "TrillAccess", \ 5176 "RegexMatch", \ 5177 "MplsP2mp", \ 5178 "Qcn", \ 5179 "WlanEncap", \ 5180 "WlanEncapEncrypt", \ 5181 "WlanDecap", \ 5182 "PassThru", \ 5183 "MplsExtendedLookup", \ 5184 "L2Gre", \ 5185 "Vxlan", \ 5186 "TunnelAny", \ 5187 "Masquerade", \ 5188 "L2Tunnel2ndPassFlow", \ 5189 "MasqueradeWithSwitchDropIndication" \ 5190 } 5191 5192 /* 5193 * Field Qualifier Port Type (for 5194 * bcm_field_qualify_TxPortType/bcm_field_qualify_RxPortType). 5195 */ 5196 typedef enum bcm_field_PortType_e { 5197 bcmFieldPortTypeEthernet = 0, /* Ethernet Port. */ 5198 bcmFieldPortTypeCpu = 1, /* CPU port. */ 5199 bcmFieldPortTypeLoopback = 2, /* Loopback Port. */ 5200 bcmFieldPortTypeHiGig3 = 3, /* HiGig3 Port. */ 5201 bcmFieldPortTypeCount = 4 /* Always Last. Not a usable value. */ 5202 } bcm_field_PortType_t; 5203 5204 #define BCM_FIELD_PORTTYPE_STRINGS \ 5205 { \ 5206 "Ethernet", \ 5207 "Cpu", \ 5208 "Loopback", \ 5209 "HiGig3" \ 5210 } 5211 5212 /* 5213 * Field Qualifier Destination Type (for 5214 * bcm_field_qualify_DstType/bcm_field_qualify_LoopbackHdrDstType). 5215 */ 5216 typedef enum bcm_field_DstType_e { 5217 bcmFieldDstTypeL2EgrIntf = 0, /* L2 Outgoing Interface. */ 5218 bcmFieldDstTypeVp = 1, /* Virtual Port. */ 5219 bcmFieldDstTypeEcmp = 2, /* ECMP. */ 5220 bcmFieldDstTypeL3Egr = 3, /* Next Hop Index. */ 5221 bcmFieldDstTypeL2Mcast = 4, /* Layer2 Multicast. */ 5222 bcmFieldDstTypeL3Mcast = 5, /* Layer3 Multicast. */ 5223 bcmFieldDstTypeCount = 6 /* Always Last. Not a usable value. */ 5224 } bcm_field_DstType_t; 5225 5226 #define BCM_FIELD_DSTTYPE_STRINGS \ 5227 { \ 5228 "L2EgrIntf", \ 5229 "Vp", \ 5230 "Ecmp", \ 5231 "L3Egr", \ 5232 "L2Mcast", \ 5233 "L3Mcast" \ 5234 } 5235 5236 /* Field Qualifier TunnelTerminationProcessingProfile. */ 5237 typedef enum bcm_field_TunnelTerminationProcessingProfile_e { 5238 bcmFieldTunnelTerminationProcessingProfilePppoe = 5, /* Don't care. */ 5239 bcmFieldTunnelTerminationProcessingProfileL2tp = 3 /* Standard Fibre Channel header. */ 5240 } bcm_field_TunnelTerminationProcessingProfile_t; 5241 5242 #define BCM_FIELD_TUNNELTERMINATIONPROCESSINGPROFILE_STRINGS \ 5243 { \ 5244 "Pppoe", \ 5245 "L2tp" \ 5246 } 5247 5248 /* 5249 * Field Qualifier FibreChan (for bcm_field_qualify_FibreChanOuter and 5250 * bcm_field_qualify_FibreChanInner). 5251 */ 5252 typedef enum bcm_field_FibreChan_e { 5253 bcmFieldFibreChanAny = 0, /* Don't care. */ 5254 bcmFieldFibreChan = 1, /* Standard Fibre Channel header. */ 5255 bcmFieldFibreChanEncap = 2, /* Encapsulation (ENC) header. */ 5256 bcmFieldFibreChanVirtual = 3, /* Virtual fabric tag (VFT) header. */ 5257 bcmFieldFibreChanRouted = 4, /* Interfabric routing (IFR) header. */ 5258 bcmFieldFibreChanCount = 5 /* Always Last. Not a usable value. */ 5259 } bcm_field_FibreChan_t; 5260 5261 #define BCM_FIELD_FIBRECHAN_STRINGS \ 5262 { \ 5263 "Any", \ 5264 "bcmFieldFibreChan", \ 5265 "Encap", \ 5266 "Virtual", \ 5267 "Routed" \ 5268 } 5269 5270 /* Field Qualifier TunnelType (for bcm_field_qualify_TunnelType). */ 5271 typedef enum bcm_field_TunnelType_e { 5272 bcmFieldTunnelTypeAny = 0, /* Don't care. */ 5273 bcmFieldTunnelTypeIp = 1, /* IP in IP, Istap, GRE. */ 5274 bcmFieldTunnelTypeMpls = 2, /* MPLS. */ 5275 bcmFieldTunnelTypeMim = 3, /* Mac in Mac. */ 5276 bcmFieldTunnelTypeWlanWtpToAc = 4, /* WLAN access point to access control. */ 5277 bcmFieldTunnelTypeWlanAcToAc = 5, /* WLAN access control to access 5278 control. */ 5279 bcmFieldTunnelTypeAutoMulticast = 6, /* IPV4 Automatic multicast. */ 5280 bcmFieldTunnelTypeTrill = 7, /* Trill. */ 5281 bcmFieldTunnelTypeL2Gre = 8, /* L2 GRE. */ 5282 bcmFieldTunnelTypeIp6 = 9, /* IPv6 termination. */ 5283 bcmFieldTunnelTypeMplsControlWord = 10, /* MPLS with Control Word terminated. */ 5284 bcmFieldTunnelTypeMplsLabel2 = 11, /* 2 MPLS labels terminated. */ 5285 bcmFieldTunnelTypeMplsLabel2ControlWord = 12, /* 2 MPLS labels with Control Word 5286 terminated. */ 5287 bcmFieldTunnelTypeMplsLabel3 = 13, /* 3 MPLS labels terminated. */ 5288 bcmFieldTunnelTypeMplsLabel3ControlWord = 14, /* 3 MPLS labels with Control Word 5289 terminated. */ 5290 bcmFieldTunnelTypeVxlan = 15, /* Vxlan Tunnel Packet. */ 5291 bcmFieldTunnelTypeNone = 16, /* L2 termination. */ 5292 bcmFieldTunnelTypeVxlanFlex = 17, /* Vxlan Flex Tunnel Packet. */ 5293 bcmFieldTunnelTypeGpe = 18, /* GPE (Generic Protocol Extension for 5294 VXLAN) Tunnel Packet. */ 5295 bcmFieldTunnelTypeGeneve = 19, /* Geneve Tunnel Packet. */ 5296 bcmFieldTunnelTypeMplsOverGre = 20, /* MPLS Over GRE Tunnel Packet. */ 5297 bcmFieldTunnelTypeNsh = 21, /* Network Service Header (NSH) Tunnel 5298 Packet. */ 5299 bcmFieldTunnelTypeSRv6 = 22, /* Ipv6 Segment Routing Tunnel Packet. */ 5300 bcmFieldTunnelTypeGre4 = 23, /* Gre4 */ 5301 bcmFieldTunnelTypeGre8WithKey = 24, /* Gre with key */ 5302 bcmFieldTunnelTypeGre12 = 25, /* Gre12 */ 5303 bcmFieldTunnelTypeUdp = 26, /* Udp */ 5304 bcmFieldTunnelTypeL2TPv3OverUdp = 27, /* L2TPv3 over UDP. */ 5305 bcmFieldTunnelTypeEsp = 28, /* ESP */ 5306 bcmFieldTunnelTypeEspOverUdp = 29, /* ESP UDP. */ 5307 bcmFieldTunnelTypeCount = 30 /* Always Last. Not a usable value. */ 5308 } bcm_field_TunnelType_t; 5309 5310 #define BCM_FIELD_TUNNELTYPE_STRINGS \ 5311 { \ 5312 "Any", \ 5313 "Ip", \ 5314 "Mpls", \ 5315 "Mim", \ 5316 "WlanWtpToAc", \ 5317 "WlanAcToAc", \ 5318 "AutoMulticast", \ 5319 "Trill", \ 5320 "L2Gre", \ 5321 "Ip6", \ 5322 "MplsControlWord", \ 5323 "MplsLabel2", \ 5324 "MplsLabel2ControlWord", \ 5325 "MplsLabel3", \ 5326 "MplsLabel3ControlWord", \ 5327 "Vxlan", \ 5328 "None", \ 5329 "VxlanFlex", \ 5330 "Gpe", \ 5331 "Geneve", \ 5332 "MplsOverGre", \ 5333 "Nsh", \ 5334 "SRv6", \ 5335 "Gre4", \ 5336 "Gre8WithKey", \ 5337 "Gre12", \ 5338 "Udp", \ 5339 "L2TPv3OverUdp", \ 5340 "Esp", \ 5341 "EspOverUdp" \ 5342 } 5343 5344 /* Field Qualifier IpType (for bcm_field_qualify_IpType). */ 5345 typedef enum bcm_field_IpType_e { 5346 bcmFieldIpTypeAny = 0, /* Don't care. */ 5347 bcmFieldIpTypeNonIp = 1, /* Non-Ip packet. */ 5348 bcmFieldIpTypeIpv4Not = 2, /* Anything but IPv4 packets. */ 5349 bcmFieldIpTypeIpv4NoOpts = 3, /* IPv4 without options. */ 5350 bcmFieldIpTypeIpv4WithOpts = 4, /* IPv4 with options. */ 5351 bcmFieldIpTypeIpv4Any = 5, /* Any IPv4 packet. */ 5352 bcmFieldIpTypeIpv6Not = 6, /* Anything but IPv6 packets. */ 5353 bcmFieldIpTypeIpv6NoExtHdr = 7, /* IPv6 packet without any extension 5354 header. */ 5355 bcmFieldIpTypeIpv6OneExtHdr = 8, /* IPv6 packet with one extension 5356 header. */ 5357 bcmFieldIpTypeIpv6TwoExtHdr = 9, /* IPv6 packet with two or more 5358 extension headers. */ 5359 bcmFieldIpTypeIpv6 = 10, /* IPv6 packet. */ 5360 bcmFieldIpTypeIp = 11, /* IPv4 and IPv6 packets. */ 5361 bcmFieldIpTypeArp = 12, /* ARP/RARP. */ 5362 bcmFieldIpTypeArpRequest = 13, /* ARP Request. */ 5363 bcmFieldIpTypeArpReply = 14, /* ARP Reply. */ 5364 bcmFieldIpTypeMplsUnicast = 15, /* Mpls unicast frame (EtherType = 5365 0x8847). */ 5366 bcmFieldIpTypeMplsMulticast = 16, /* Mpls mcast frame (EtherType = 5367 0x8848). */ 5368 bcmFieldIpTypeTrill = 17, /* Trill packet. */ 5369 bcmFieldIpTypeMim = 18, /* Mac-in-Mac frame. */ 5370 bcmFieldIpTypeMpls = 19, /* MPLS Packets. */ 5371 bcmFieldIpTypeCfm = 20, /* CFM Packets (0x8902). */ 5372 bcmFieldIpTypeFCoE = 21, /* Fiber Channel Packets (0x8906). */ 5373 bcmFieldIpTypeCount = 22 /* Always Last. Not a usable value. */ 5374 } bcm_field_IpType_t; 5375 5376 #define BCM_FIELD_IPTYPE_STRINGS \ 5377 { \ 5378 "Any", \ 5379 "NonIp", \ 5380 "Ipv4Not", \ 5381 "Ipv4NoOpts", \ 5382 "Ipv4WithOpts", \ 5383 "Ipv4Any", \ 5384 "Ipv6Not", \ 5385 "Ipv6NoExtHdr", \ 5386 "Ipv6OneExtHdr", \ 5387 "Ipv6TwoExtHdr", \ 5388 "Ipv6", \ 5389 "Ip", \ 5390 "Arp", \ 5391 "ArpRequest", \ 5392 "ArpReply", \ 5393 "MplsUnicast", \ 5394 "MplsMulticast", \ 5395 "Trill", \ 5396 "Mim", \ 5397 "Mpls", \ 5398 "Cfm", \ 5399 "FCoE" \ 5400 } 5401 5402 /* 5403 * Field Qualifier IpProtocolCommon (for 5404 * bcm_field_qualify_IpProtocolCommon). 5405 */ 5406 typedef enum bcm_field_IpProtocolCommon_e { 5407 bcmFieldIpProtocolCommonTcp = 0, /* TCP Packets (6) */ 5408 bcmFieldIpProtocolCommonUdp = 1, /* UDP Packets (17) */ 5409 bcmFieldIpProtocolCommonIgmp = 2, /* IGMP Packets (2) */ 5410 bcmFieldIpProtocolCommonIcmp = 3, /* ICMP Packets (1) */ 5411 bcmFieldIpProtocolCommonIp6Icmp = 4, /* IPv6 ICMP Packets (58) */ 5412 bcmFieldIpProtocolCommonIp6HopByHop = 5, /* IPv6 Hop-by-Hop Packets (0) */ 5413 bcmFieldIpProtocolCommonIpInIp = 6, /* IPv4 Payload Packets (4) */ 5414 bcmFieldIpProtocolCommonTcpUdp = 7, /* TCP and UDP Packets (6 & 17) */ 5415 bcmFieldIpProtocolCommonUnknown = 8, /* Not-standard IP Protocol. */ 5416 bcmFieldIpProtocolCommonIp6InIp = 9, /* IPv6 (0x29) */ 5417 bcmFieldIpProtocolCommonMplsInIp = 10, /* MPLS (0x89) */ 5418 bcmFieldIpProtocolCommonCount = 11 /* Always Last. Not a usable value. */ 5419 } bcm_field_IpProtocolCommon_t; 5420 5421 #define BCM_FIELD_IPPROTOCOLCOMMON_STRINGS \ 5422 { \ 5423 "Tcp", \ 5424 "Udp", \ 5425 "Igmp", \ 5426 "Icmp", \ 5427 "Ip6Icmp", \ 5428 "Ip6HopByHop", \ 5429 "IpInIp", \ 5430 "TcpUdp", \ 5431 "Unknown", \ 5432 "Ip6InIp", \ 5433 "MplsInIp" \ 5434 } 5435 5436 /* Field Qualifier IpFrag (for bcm_field_qualify_IpFrag). */ 5437 typedef enum bcm_field_IpFrag_e { 5438 bcmFieldIpFragNon = 0, /* Non-fragmented packet. */ 5439 bcmFieldIpFragFirst = 1, /* First fragment of fragmented packet. */ 5440 bcmFieldIpFragNonOrFirst = 2, /* Non-fragmented or first fragment. */ 5441 bcmFieldIpFragNotFirst = 3, /* Not the first fragment. */ 5442 bcmFieldIpFragAny = 4, /* Any fragment of fragmented packet. */ 5443 bcmFieldIpFragCount = 5 /* Always last. Not a usable value. */ 5444 } bcm_field_IpFrag_t; 5445 5446 /* Urpf mode */ 5447 typedef enum bcm_field_urpf_mode_e { 5448 bcmFieldUrpfLoose = 0, /* Loose mode Unicast RPF. */ 5449 bcmFieldUrpfStrict = 1, /* Strict mode Unicast RPF */ 5450 bcmFieldUrpfCount = 2 /* Always Last. Not a usable value. */ 5451 } bcm_field_urpf_mode_t; 5452 5453 /* 5454 * Field Qualifier L2Format (for bcm_field_qualify_L2Format). 5455 * Used to qualify packets based on L2 header format. 5456 */ 5457 typedef enum bcm_field_L2Format_e { 5458 bcmFieldL2FormatAny = 0, /* Do not qualify on L2 format. */ 5459 bcmFieldL2FormatEthII = 1, /* Ethernet 2 (802.2). */ 5460 bcmFieldL2FormatSnap = 2, /* Sub-Network Access Protocol (SNAP). */ 5461 bcmFieldL2FormatLlc = 3, /* Logical Link Control. */ 5462 bcmFieldL2Format802dot3 = 4, /* 802.3 frame format. */ 5463 bcmFieldL2FormatDeprecated5 = 5, /* Deprecated. Do not use. */ 5464 bcmFieldL2FormatMiM = 6, /* MAC-In-MAC. */ 5465 bcmFieldL2FormatCount = 7 /* Always Last. Not a usable value. */ 5466 } bcm_field_L2Format_t; 5467 5468 #define BCM_FIELD_L2FORMAT_STRINGS \ 5469 { \ 5470 "Any", \ 5471 "EthII", \ 5472 "Snap", \ 5473 "Llc", \ 5474 "802dot3", \ 5475 "Deprecated5", \ 5476 "MiM" \ 5477 } 5478 5479 /* 5480 * Field action olp_header_type (for bcmFieldActionOamOlpHeaderAdd). 5481 * Used to specify the type of the OLP header to be added. 5482 */ 5483 typedef enum bcm_field_olp_header_type_e { 5484 bcmFieldOlpHeaderTypeEthCC = 0, /* Ethernet Oam Down MEP Ccm packet. */ 5485 bcmFieldOlpHeaderTypeEthOamCcm = bcmFieldOlpHeaderTypeEthCC, /* Ethernet Oam Down MEP Ccm packet. */ 5486 bcmFieldOlpHeaderTypeEthLmDm = 1, /* Ethernet Oam Down MEP LM/DM packet. */ 5487 bcmFieldOlpHeaderTypeEthOamLmDm = bcmFieldOlpHeaderTypeEthLmDm, /* Ethernet Oam Down MEP LM/DM packet. */ 5488 bcmFieldOlpHeaderTypeEthOthers = 2, /* Ethernet Oam Down MEP Other opcode 5489 packet. */ 5490 bcmFieldOlpHeaderTypeEthOamOthers = bcmFieldOlpHeaderTypeEthOthers, /* Ethernet Oam Down MEP Other opcode 5491 packet. */ 5492 bcmFieldOlpHeaderTypeBfdOam = 3, /* BFD Oam packet */ 5493 bcmFieldOlpHeaderTypeEthOamLm = 4, /* Ethernet Oam Down Mep LM packet */ 5494 bcmFieldOlpHeaderTypeEthOamDm = 5, /* Ethernet Oam Down Mep DM packet */ 5495 bcmFieldOlpHeaderTypeBhhOamCcm = 6, /* BHH OAM CCM packet */ 5496 bcmFieldOlpHeaderTypeBhhOamLm = 7, /* BHH Oam LM packet */ 5497 bcmFieldOlpHeaderTypeBhhOamDm = 8, /* BHH Oam DM packet */ 5498 bcmFieldOlpHeaderTypeBhhOamOthers = 9, /* BHH OAM other opcode type packet */ 5499 bcmFieldOlpHeaderTypeRfc6374Dlm = 10, /* MPLS LM/DM DLM packet */ 5500 bcmFieldOlpHeaderTypeRfc6374Dm = 11, /* MPLS LM/DM DM packet */ 5501 bcmFieldOlpHeaderTypeRfc6374DlmPlusDm = 12, /* MPLS LM/DM DLM + DM packet */ 5502 bcmFieldOlpHeaderTypeRfc6374Ilm = 13, /* MPLS LM/DM ILM packet */ 5503 bcmFieldOlpHeaderTypeRfc6374IlmPlusDm = 14, /* MPLS LM/DM ILM + DM packet */ 5504 bcmFieldOlpHeaderTypeSat = 15, /* Down Service Activation Test packet */ 5505 bcmFieldOlpHeaderTypeOtherAch = 16, /* OAM packets with other ACH types */ 5506 bcmFieldOlpHeaderTypeEthOamUpMepCcm = 17, /* Ethernet Oam Up MEP Ccm packet. */ 5507 bcmFieldOlpHeaderTypeEthOamUpMepLm = 18, /* Ethernet Oam Up MEP Lm packet. */ 5508 bcmFieldOlpHeaderTypeEthOamUpMepDm = 19, /* Ethernet Oam Up MEP Dm packet. */ 5509 bcmFieldOlpHeaderTypeEthOamUpMepOthers = 20, /* Ethernet Oam Up MEP Other opcode 5510 packet. */ 5511 bcmFieldOlpHeaderTypeUpSat = 21, /* Up Service Activation Test packet. */ 5512 bcmFieldOlpHeaderTypeMacSecEncrypt = 22, /* OLP header type for MACSEC Encrypt 5513 flow. */ 5514 bcmFieldOlpHeaderTypeMacSecDecrypt = 23, /* OLP header type for MACSEC Decrypt 5515 flow. */ 5516 bcmFieldOlpHeaderTypeCount = 24 /* Always Last. Not a usable value. */ 5517 } bcm_field_olp_header_type_t; 5518 5519 #define BCM_FIELD_OLP_HEADER_TYPE_STRINGS \ 5520 { \ 5521 "EthCC", \ 5522 "EthLmDm", \ 5523 "EthOthers", \ 5524 "BfdOam", \ 5525 "EthOamLm", \ 5526 "EthOamDm", \ 5527 "BhhOamCcm", \ 5528 "BhhOamLm", \ 5529 "BhhOamDm", \ 5530 "BhhOamOthers", \ 5531 "Rfc6374Dlm", \ 5532 "Rfc6374Dm", \ 5533 "Rfc6374DlmPlusDm", \ 5534 "Rfc6374Ilm", \ 5535 "Rfc6374IlmPlusDm", \ 5536 "Sat", \ 5537 "OtherAch", \ 5538 "EthOamUpMepCcm", \ 5539 "EthOamUpMepLm", \ 5540 "EthOamUpMepDm", \ 5541 "EthOamUpMepOthers", \ 5542 "UpSat", \ 5543 "MacSecEncrypt", \ 5544 "MacSecDecrypt" \ 5545 } 5546 5547 /* 5548 * Field action oam_domain (for bcmFieldActionOamDomain). 5549 * Used to specify the OAM domain on which endpoints lookup has to be 5550 * done. 5551 */ 5552 typedef enum bcm_field_oam_domain_e { 5553 bcmFieldOamDomainCVlan = 0, /* Endpoints configured on C-VLAN. */ 5554 bcmFieldOamDomainSVlan = 1, /* Endpoints configured on S-VLAN. */ 5555 bcmFieldOamDomainDoubleVlan = 2, /* Endpoints configured on S+C-VLAN. */ 5556 bcmFieldOamDomainPbbTe = 3, /* Endpoints configured on PBB-TE. */ 5557 bcmFieldOamDomainMplsLmDmSectionPort = 4, /* RFC 6374 Section - Port based 5558 loss/delay measurement. */ 5559 bcmFieldOamDomainMplsLmDmSectionInnerVlan = 5, /* RFC 6374 Section - Port + Inner vlan 5560 based loss/delay measurement. */ 5561 bcmFieldOamDomainMplsLmDmSectionOuterVlan = 6, /* RFC 6374 Section - Port + Outer vlan 5562 based loss/delay measurement. */ 5563 bcmFieldOamDomainMplsLmDmSectionOuterPlusInnerVlan = 7, /* RFC 6374 Section - Port + Outer vlan 5564 + Inner Vlan based loss/delay 5565 measurement. */ 5566 bcmFieldOamDomainMplsLmDmPw = 8, /* RFC 6374 Pseudowire based loss/delay 5567 measurement. */ 5568 bcmFieldOamDomainMplsLmDmLspLabel = 9, /* RFC 6374 LSP based loss/delay 5569 measurement. */ 5570 bcmFieldOamDomainCount = 10 /* Always Last. Not a usable value. */ 5571 } bcm_field_oam_domain_t; 5572 5573 #define BCM_FIELD_OAM_DOMAIN_STRINGS \ 5574 { \ 5575 "CVlan", \ 5576 "SVlan", \ 5577 "DoubleVlan", \ 5578 "PbbTe", \ 5579 "MplsLmDmSectionPort", \ 5580 "MplsLmDmSectionInnerVlan", \ 5581 "MplsLmDmSectionOuterVlan", \ 5582 "MplsLmDmSectionOuterPlusInnerVlan", \ 5583 "MplsLmDmPw", \ 5584 "MplsLmDmLspLabel" \ 5585 } 5586 5587 /* 5588 * Field Qualify oam_drop_mep_type (for bcmFieldQualifyIngressDropXXX). 5589 * Used to Qualify on Drop reasons related to OAM Data or Control packets 5590 * based on MEP type. 5591 */ 5592 typedef enum bcm_field_oam_drop_mep_type_e { 5593 bcmFieldOamDropInvalid = 0, /* Invalid. */ 5594 bcmFieldOamDropPortDownMepControl = 1, /* Drop Reasons for Port Down MEP 5595 control packets. */ 5596 bcmFieldOamDropPortDownMepData = 2, /* Drop Reasons for Port Down MEP data 5597 packets. */ 5598 bcmFieldOamDropInnerVlanDownMepControl = 3, /* Drop Reasons for Inner Vlan Down MEP 5599 control packets. */ 5600 bcmFieldOamDropInnerVlanDownMepData = 4, /* Drop Reasons for Inner Vlan Down MEP 5601 data packets. */ 5602 bcmFieldOamDropOuterVlanDownMepControl = 5, /* Drop Reasons for Outer Vlan Down MEP 5603 control packets. */ 5604 bcmFieldOamDropOuterVlanDownMepData = 6, /* Drop Reasons for Outer Vlan Down MEP 5605 data packets. */ 5606 bcmFieldOamDropInnerPlusOuterVlanDownMepControl = 7, /* Drop Reasons for Inner + Outer Vlan 5607 Down MEP control packets. */ 5608 bcmFieldOamDropInnerPlusOuterVlanDownMepData = 8, /* Drop Reasons for Inner + Outer Vlan 5609 Down MEP data packets. */ 5610 bcmFieldOamDropInnerVlanUpMepData = 9, /* Drop Reasons for Inner Vlan Up MEP 5611 data packets. */ 5612 bcmFieldOamDropOuterVlanUpMepData = 10, /* Drop Reasons for Outer Vlan Up MEP 5613 data packets. */ 5614 bcmFieldOamDropInnerPlusOuterVlanUpMepData = 11, /* Drop Reasons for Inner + Outer Vlan 5615 Up MEP data packets. */ 5616 bcmFieldOamDropSectionPortMepControl = 12, /* Drop Reasons for Port Section MEP 5617 control packets. */ 5618 bcmFieldOamDropSectionPortMepData = 13, /* Drop Reasons for Port Section MEP 5619 data packets. */ 5620 bcmFieldOamDropSectionInnerVlanMepControl = 14, /* Drop Reasons for Inner Vlan Section 5621 MEP control packets. */ 5622 bcmFieldOamDropSectionInnerVlanMepData = 15, /* Drop Reasons for Inner Vlan Section 5623 MEP data packets. */ 5624 bcmFieldOamDropSectionOuterVlanMepControl = 16, /* Drop Reasons for Outer Vlan Section 5625 MEP control packets. */ 5626 bcmFieldOamDropSectionOuterVlanMepData = 17, /* Drop Reasons for Outer Vlan Section 5627 MEP data packets. */ 5628 bcmFieldOamDropSectionInnerPlusOuterVlanMepControl = 18, /* Drop Reasons for Inner + Outer Vlan 5629 Section MEP control packets. */ 5630 bcmFieldOamDropSectionInnerPlusOuterVlanMepData = 19, /* Drop Reasons for Inner + Outer Vlan 5631 Section MEP data packets. */ 5632 bcmFieldOamDropLSPMepControl = 20, /* Drop Reasons for LSP MEP control 5633 packets. */ 5634 bcmFieldOamDropLSPMepData = 21, /* Drop Reasons for LSP MEP data 5635 packets. */ 5636 bcmFieldOamDropPwMepControl = 22, /* Drop Reasons for PseudoWire MEP 5637 control packets. */ 5638 bcmFieldOamDropPwMepData = 23, /* Drop Reasons for PseudoWire MEP data 5639 packets. */ 5640 bcmFieldOamDropCount = 24 /* Always Last. Not a usable value. */ 5641 } bcm_field_oam_drop_mep_type_t; 5642 5643 #define BCM_FIELD_OAM_DROP_MEP_TYPE_STRINGS \ 5644 { \ 5645 "Invalid", \ 5646 "PortDownMepControl", \ 5647 "PortDownMepData", \ 5648 "InnerVlanDownMepControl", \ 5649 "InnerVlanDownMepData", \ 5650 "OuterVlanDownMepControl", \ 5651 "OuterVlanDownMepData", \ 5652 "InnerPlusOuterVlanDownMepControl", \ 5653 "InnerPlusOuterVlanDownMepData", \ 5654 "InnerVlanUpMepData", \ 5655 "OuterVlanUpMepData", \ 5656 "InnerPlusOuterVlanUpMepData", \ 5657 "SectionPortMepControl", \ 5658 "SectionPortMepData", \ 5659 "SectionInnerVlanMepControl", \ 5660 "SectionInnerVlanMepData", \ 5661 "SectionOuterVlanMepControl", \ 5662 "SectionOuterVlanMepData", \ 5663 "SectionInnerPlusOuterVlanMepControl", \ 5664 "SectionInnerPlusOuterVlanMepData", \ 5665 "LSPMepControl", \ 5666 "LSPMepData", \ 5667 "PwMepControl", \ 5668 "PwMepData" \ 5669 } 5670 5671 /* 5672 * Field Qualifier Packet Forward Type (for 5673 * bcm_field_qualify_PktFwdType). 5674 */ 5675 typedef enum bcm_field_PktFwdType_e { 5676 bcmFieldPktFwdTypeL2 = 0, /* Packet forward type is L2. */ 5677 bcmFieldPktFwdTypeL3Ucast = 1, /* Packet forward type is L3 unicast. */ 5678 bcmFieldPktFwdTypeL3Mcast = 2, /* Packet forward type is IP multicast. */ 5679 bcmFieldPktFwdTypeCopyToCpu = 3, /* Packet forward type is copy to cpu. */ 5680 bcmFieldPktFwdTypeL2Ucast = 4, /* Packet forward type is L2 unicast. */ 5681 bcmFieldPktFwdTypeL2Mcast = 5, /* Packet forward type is L2 multicast. */ 5682 bcmFieldPktFwdTypeL3Any = 6, /* Packet forward type is L3 Any. */ 5683 bcmFieldPktFwdTypeCount = 7 /* Always Last. Not a usable value. */ 5684 } bcm_field_PktFwdType_t; 5685 5686 #define BCM_FIELD_PKTFWDTYPE_STRINGS \ 5687 { \ 5688 "L2", \ 5689 "L3Ucast", \ 5690 "L3Mcast", \ 5691 "CopyToCpu", \ 5692 "L2Ucast", \ 5693 "L2Mcast", \ 5694 "L3Any" \ 5695 } 5696 5697 /* LLC Header Format. */ 5698 typedef struct bcm_field_llc_header_s { 5699 uint8 dsap; 5700 uint8 ssap; 5701 uint8 control; 5702 } bcm_field_llc_header_t; 5703 5704 /* SNAP Header Format. */ 5705 typedef struct bcm_field_snap_header_s { 5706 uint32 org_code; 5707 uint16 type; 5708 } bcm_field_snap_header_t; 5709 5710 /* 5711 * Range Check. 5712 * 5713 * bcm_field_range_create requires exactly one of SRCPORT or DSTPORT or 5714 * FIELD_RANGE_OUTER_VLAN or FIELD_RANGE_PACKET_LENGTH. 5715 */ 5716 #define BCM_FIELD_RANGE_SRCPORT 0x00000001 /* Check source port range */ 5717 #define BCM_FIELD_RANGE_DSTPORT 0x00000002 /* Check dest port range */ 5718 #define BCM_FIELD_RANGE_TCP 0x00000004 /* Check TCP port range */ 5719 #define BCM_FIELD_RANGE_UDP 0x00000008 /* Check UDP port range */ 5720 #define BCM_FIELD_RANGE_INVERT 0x00000010 /* Check for match outside 5721 specified port range */ 5722 #define BCM_FIELD_RANGE_EXTERNAL 0x00000020 /* Create range checker on 5723 External table (5661x 5724 only) */ 5725 #define BCM_FIELD_RANGE_OUTER_VLAN 0x00000040 /* Check outer VLAN ID range */ 5726 #define BCM_FIELD_RANGE_INNER_VLAN 0x00000080 /* Check inner VLAN ID range */ 5727 #define BCM_FIELD_RANGE_PACKET_LENGTH 0x00000100 /* Check packet length range */ 5728 #define BCM_FIELD_RANGE_LOOKUP 0x00000200 /* Create range checker on 5729 Lookup table */ 5730 #define BCM_FIELD_RANGE_OUT_VPORT 0x00000400 /* Check OutVPort range */ 5731 #define BCM_FIELD_RANGE_REPLACE 0x00000800 /* Modify configurations of 5732 an existing range checker. 5733 Using this flag, the Range 5734 checker's range limits 5735 (min/max) and Type can be 5736 modified dynamically. */ 5737 5738 /* Opaque handle to a field range. */ 5739 typedef uint32 bcm_field_range_t; 5740 5741 /* Field udf_spec defines the locations of user-defined byte fields. */ 5742 typedef struct bcm_field_udf_spec_s { 5743 uint32 offset[384]; 5744 } bcm_field_udf_spec_t; 5745 5746 /* Field qset defines the set of fields used for lookup. */ 5747 typedef struct bcm_field_qset_s { 5748 SHR_BITDCL w[_SHR_BITDCLSIZE(BCM_FIELD_QUALIFY_MAX)]; 5749 SHR_BITDCL udf_map[_SHR_BITDCLSIZE(BCM_FIELD_USER_NUM_UDFS)]; 5750 } bcm_field_qset_t; 5751 5752 #define BCM_FIELD_QSET_INIT(qset) \ 5753 sal_memset(&(qset), 0, sizeof(bcm_field_qset_t)) 5754 5755 #define BCM_FIELD_QSET_ADD(qset, q) SHR_BITSET(((qset).w), (q)) 5756 5757 #define BCM_FIELD_QSET_REMOVE(qset, q) SHR_BITCLR(((qset).w), (q)) 5758 5759 #define BCM_FIELD_QSET_TEST(qset, q) SHR_BITGET(((qset).w), (q)) 5760 5761 /* 5762 * Group Priority. 5763 * 5764 * Numerically higher values are higher priority. Each priority value may 5765 * be used only once. BCM_FIELD_GROUP_PRIO_ANY can be used to have a 5766 * priority assigned automatically. 5767 */ 5768 #define BCM_FIELD_GROUP_PRIO_ANY -0x7fffffff 5769 5770 /* 5771 * Copy To CPU Flags. 5772 * 5773 * bcm_field_action_copytocpu_config_set requires atleast of these flags 5774 * to be configured for CopyToCpu action. 5775 */ 5776 #define BCM_FIELD_COPYTOCPU_GREEN_PACKET 0x00000001 /* Copy to CPU only Green 5777 Packets regardless of 5778 its drop */ 5779 #define BCM_FIELD_COPYTOCPU_YELLOW_PACKET 0x00000002 /* Copy to CPU only 5780 Yellow Packets 5781 regardless of its drop */ 5782 #define BCM_FIELD_COPYTOCPU_RED_PACKET 0x00000004 /* Copy to CPU only Red 5783 Packets regardless of 5784 its drop */ 5785 #define BCM_FIELD_COPYTOCPU_ALL_PACKET 0x00000007 /* Copy to CPU All 5786 Packets regardless of 5787 its drop */ 5788 #define BCM_FIELD_COPYTOCPU_TRUNCATE 0x00000008 /* Copy to CPU only the 5789 first cell of Packets */ 5790 #define BCM_FIELD_COPYTOCPU_GREEN_DROPPED_PACKET 0x00000010 /* Copy to CPU only 5791 Dropped Green Packets */ 5792 #define BCM_FIELD_COPYTOCPU_YELLOW_DROPPED_PACKET 0x00000020 /* Copy to CPU only 5793 Dropped Yellow Packets */ 5794 #define BCM_FIELD_COPYTOCPU_RED_DROPPED_PACKET 0x00000040 /* Copy to CPU only 5795 Dropped Red Packets */ 5796 #define BCM_FIELD_COPYTOCPU_DROPPED_PACKET 0x00000070 /* Copy to CPU All 5797 Dropped Packets */ 5798 #define BCM_FIELD_COPYTOCPU_GREEN_NOT_DROPPED_PACKET 0x00000080 /* Copy to CPU only 5799 Non-dropped Green 5800 Packets */ 5801 #define BCM_FIELD_COPYTOCPU_YELLOW_NOT_DROPPED_PACKET 0x00000100 /* Copy to CPU only 5802 Non-dropped Yellow 5803 Packets */ 5804 #define BCM_FIELD_COPYTOCPU_RED_NOT_DROPPED_PACKET 0x00000200 /* Copy to CPU only 5805 Non-dropped Red 5806 Packets */ 5807 #define BCM_FIELD_COPYTOCPU_NOT_DROPPED_PACKET 0x00000380 /* Copy to CPU All 5808 Non-dropped Packets */ 5809 5810 /* Field CopyToCpu Config Format. */ 5811 typedef struct bcm_field_CopyToCpu_config_s { 5812 uint32 flags; /* CopyToCpu flags (BCM_FIELD_COPYTOCPU_XXX). */ 5813 uint32 match_rule; /* CopyToCpu matched rule ID. */ 5814 } bcm_field_CopyToCpu_config_t; 5815 5816 /* 5817 * Redirect Flags. 5818 * 5819 * bcm_field_action_redirect_config_set requires atleast of these flags 5820 * to be configured for Redirect action. 5821 */ 5822 #define BCM_FIELD_REDIRECT_GREEN_PACKET 0x00000001 /* Redirect only Green 5823 Packets regardless of 5824 its drop */ 5825 #define BCM_FIELD_REDIRECT_YELLOW_PACKET 0x00000002 /* Redirect only Yellow 5826 Packets regardless of 5827 its drop */ 5828 #define BCM_FIELD_REDIRECT_RED_PACKET 0x00000004 /* Redirect only Red 5829 Packets regardless of 5830 its drop */ 5831 #define BCM_FIELD_REDIRECT_ALL_PACKET 0x00000007 /* Redirect All Packets 5832 regardless of its drop */ 5833 #define BCM_FIELD_REDIRECT_TRUNCATE 0x00000008 /* Redirect only the 5834 first cell of Packets */ 5835 #define BCM_FIELD_REDIRECT_SOURCE_USE_ORIGINAL_SOURCE 0x00000010 /* Use original packet 5836 source as Redirected 5837 packet source */ 5838 #define BCM_FIELD_REDIRECT_SOURCE_USE_ORIGINAL_DESTINATION 0x00000020 /* Use original packet 5839 destination as 5840 Redirected packet 5841 source */ 5842 #define BCM_FIELD_REDIRECT_SOURCE_USE_CONFIGURED 0x00000040 /* Use configured source 5843 as Redirected packet 5844 source */ 5845 #define BCM_FIELD_REDIRECT_GREEN_DROPPED_PACKET 0x00000080 /* Redirect only Dropped 5846 Green Packets */ 5847 #define BCM_FIELD_REDIRECT_YELLOW_DROPPED_PACKET 0x00000100 /* Redirect only Dropped 5848 Yellow Packets */ 5849 #define BCM_FIELD_REDIRECT_RED_DROPPED_PACKET 0x00000200 /* Redirect only Dropped 5850 Red Packets */ 5851 #define BCM_FIELD_REDIRECT_DROPPED_PACKET 0x00000380 /* Redirect All Dropped 5852 Packets */ 5853 #define BCM_FIELD_REDIRECT_GREEN_NOT_DROPPED_PACKET 0x00000400 /* Redirect only 5854 Non-dropped Green 5855 Packets */ 5856 #define BCM_FIELD_REDIRECT_YELLOW_NOT_DROPPED_PACKET 0x00000800 /* Redirect only 5857 Non-dropped Yellow 5858 Packets */ 5859 #define BCM_FIELD_REDIRECT_RED_NOT_DROPPED_PACKET 0x00001000 /* Redirect only 5860 Non-dropped Red 5861 Packets */ 5862 #define BCM_FIELD_REDIRECT_NOT_DROPPED_PACKET 0x00001C00 /* Redirect All 5863 Non-dropped Packets */ 5864 5865 /* 5866 * Field action Redirection. 5867 * Used to specify the Redirection type in 5868 * bcm_field_action_redirect_config_set or destination_type in 5869 * bcm_field_destination_action_t. 5870 */ 5871 typedef enum bcm_field_redirect_destination_type_e { 5872 bcmFieldRedirectDestinationInvalid = 0, /* Invalid. */ 5873 bcmFieldRedirectDestinationPort = 1, /* Destination Port. */ 5874 bcmFieldRedirectDestinationTrunk = 2, /* Destination Trunk. */ 5875 bcmFieldRedirectDestinationMCast = 3, /* Destination L2 Multicast. */ 5876 bcmFieldRedirectDestinationL3Multicast = 4, /* Destination L3 Multicast. */ 5877 bcmFieldRedirectDestinationCount = 5 /* Always Last. Not a usable value. */ 5878 } bcm_field_redirect_destination_type_t; 5879 5880 #define BCM_FIELD_REDIRECTION_STRINGS \ 5881 { \ 5882 "Invalid", \ 5883 "Port", \ 5884 "Trunk", \ 5885 "MCast", \ 5886 "L3Multicast" \ 5887 } 5888 5889 /* Field Redirect Config Format. */ 5890 typedef struct bcm_field_redirect_config_s { 5891 uint32 flags; /* Redirect flags 5892 (BCM_FIELD_REDIRECT_XXX). */ 5893 bcm_field_redirect_destination_type_t destination_type; /* Destination type. */ 5894 int destination; /* Destination of the re-directed 5895 packets. */ 5896 int source_port; /* Source port to use for re-directed 5897 packets. */ 5898 } bcm_field_redirect_config_t; 5899 5900 /* Different Flow tracker timestamp mode. */ 5901 typedef enum bcm_field_flowtracker_timestamp_delay_mode_e { 5902 bcmFieldFlowtrackerTimestampDelayModeGeneric = 0, /* 48-Bit Generic Mode */ 5903 bcmFieldFlowtrackerTimestampDelayModeNTP = 1, /* 64-Bit NTP Mode */ 5904 bcmFieldFlowtrackerTimestampDelayModePTP = 2, /* 64-Bit PTP Mode */ 5905 bcmFieldFlowtrackerTimestampDelayModeCount = 3 /* Always Last. Not a usable value. */ 5906 } bcm_field_flowtracker_timestamp_delay_mode_t; 5907 5908 #define BCM_FIELD_FLOWTRACKER_TIMESTAMP_DELAY_MODE_STRINGS \ 5909 { \ 5910 "bcmFieldFlowtrackerTimestampDelayModeGeneric", \ 5911 "bcmFieldFlowtrackerTimestampDelayModeNTP", \ 5912 "bcmFieldFlowtrackerTimestampDelayModePTP" \ 5913 } 5914 5915 /* Different Flex Flow timestamp type. */ 5916 typedef enum bcm_field_flow_timestamp_type_e { 5917 bcmFieldFlowTimestampIngress = 0, /* Ingress Timestamp selected. */ 5918 bcmFieldFlowTimestampEgress = 1, /* Egress Timestamp selected. */ 5919 bcmFieldFlowTimestampCount = 2 /* Always Last. Not a usable value. */ 5920 } bcm_field_flow_timestamp_type_t; 5921 5922 #define BCM_FIELD_FLOW_TIMESTAMP_TYPE_STRINGS \ 5923 { \ 5924 "Ingress", \ 5925 "Egress" \ 5926 } 5927 5928 /* Different Flex Flow timestamp source. */ 5929 typedef enum bcm_field_flow_timestamp_source_e { 5930 bcmFieldFlowTimestampSourceLegacy = 0, /* Legacy source */ 5931 bcmFieldFlowTimestampSourceNTP = 1, /* Network Time Protocol source */ 5932 bcmFieldFlowTimestampSourcePTP = 2, /* Precision Time Protocol source */ 5933 bcmFieldFlowTimestampSourceCount = 3 /* Always Last. Not a usable value. */ 5934 } bcm_field_flow_timestamp_source_t; 5935 5936 #define BCM_FIELD_FLOW_TIMESTAMP_SOURCE_STRINGS \ 5937 { \ 5938 "Legacy", \ 5939 "NTP", \ 5940 "PTP" \ 5941 } 5942 5943 /* bcm_field_action_e */ 5944 typedef enum bcm_field_action_e { 5945 bcmFieldActionCosQNew = 0, /* Change CoS Queue; param0: New CoS 5946 Queue. */ 5947 bcmFieldActionCosQCpuNew = 1, /* Change CoS Queue when CopyToCpu; 5948 param0: New CoS Queue. */ 5949 bcmFieldActionVlanCosQNew = 2, /* Change VLAN CoS Queue; param0: New 5950 CoS Queue. */ 5951 bcmFieldActionUcastCosQNew = 3, /* Change CoS Queue for unicast packets; 5952 param0: New CoS Queue. */ 5953 bcmFieldActionMcastCosQNew = 4, /* Change CoS Queue for multicast 5954 packets; param0: New CoS Queue. */ 5955 bcmFieldActionPrioPktAndIntCopy = 5, /* Pkt & internal priority from inner 5956 tag. */ 5957 bcmFieldActionPrioPktAndIntNew = 6, /* Pkt & internal priority from arg; 5958 param0: New priority. */ 5959 bcmFieldActionPrioPktAndIntTos = 7, /* Pkt & internal priority from TOS 5960 field. */ 5961 bcmFieldActionPrioPktAndIntCancel = 8, /* Override another rule. */ 5962 bcmFieldActionPrioPktCopy = 9, /* Pkt priority from inner tag. */ 5963 bcmFieldActionPrioPktNew = 10, /* Pkt priority from arg; param0: New 5964 priority. */ 5965 bcmFieldActionPrioPktTos = 11, /* Pkt priority from TOS field. */ 5966 bcmFieldActionPrioPktCancel = 12, /* Override another rule. */ 5967 bcmFieldActionPrioIntCopy = 13, /* Internal priority from inner tag. */ 5968 bcmFieldActionPrioIntNew = 14, /* Internal priority from arg; param0: 5969 New priority. */ 5970 bcmFieldActionPrioIntTos = 15, /* Internal priority from TOS field. */ 5971 bcmFieldActionPrioIntCancel = 16, /* Override another rule. */ 5972 bcmFieldActionTosNew = 17, /* Change TOS value in IP header; 5973 param0: New TOS value. */ 5974 bcmFieldActionTosCopy = 18, /* Copy priority from outer tag to IP 5975 hdr. */ 5976 bcmFieldActionTosCancel = 19, /* Override another rule. */ 5977 bcmFieldActionDscpNew = 20, /* Change DSCP value; param0: New DSCP 5978 value. */ 5979 bcmFieldActionDscpCancel = 21, /* Override another rule. */ 5980 bcmFieldActionEcnNew = 22, /* Change ECN value in IP header TOS; 5981 param0: New ECN value. */ 5982 bcmFieldActionCopyToCpu = 23, /* Copy to CPU. */ 5983 bcmFieldActionCopyToCpuCancel = 24, /* Override another rule. */ 5984 bcmFieldActionSwitchToCpuCancel = 25, /* Override switch logic copy-to-CPU. */ 5985 bcmFieldActionSwitchToCpuReinstate = 26, /* Reinstate copy-to-CPU switch logic. */ 5986 bcmFieldActionTimeStampToCpu = 27, /* Send a copy to CPU with timestamp and 5987 drop the packet */ 5988 bcmFieldActionTimeStampToCpuCancel = 28, /* Override another action (don't 5989 copy,don't drop) */ 5990 bcmFieldActionRedirectPort = 29, /* Redirect Packet to single port; 5991 param0: Destination modid; param1: 5992 Destination port. */ 5993 bcmFieldActionRedirect = bcmFieldActionRedirectPort, /* Same as bcmFieldActionRedirectPort. */ 5994 bcmFieldActionRedirectTrunk = 30, /* Redirect Packet to a trunk; param0: 5995 Destination trunk ID. */ 5996 bcmFieldActionRedirectCancel = 31, /* Override another rule. */ 5997 bcmFieldActionRedirectPbmp = 32, /* Replace port bitmap; param0: 5998 Destination port bitmap. */ 5999 bcmFieldActionRedirectIpmc = 33, /* Replace L3 multicast L3 & L2 bitmap; 6000 param0: IP Multicast Index. */ 6001 bcmFieldActionRedirectMcast = 34, /* Replace L2 multicast dest bitmap; 6002 param0: L2 Multicast Index. */ 6003 bcmFieldActionRedirectVlan = 35, /* Redirect to VLAN port bitmap. */ 6004 bcmFieldActionRedirectBcastPbmp = 36, /* Replace L2 broadcast dest bitmap; 6005 param0: Destination port bitmap. */ 6006 bcmFieldActionEgressMask = 37, /* Apply egress mask; param0: 6007 Destination port bitmap mask. */ 6008 bcmFieldActionEgressPortsAdd = 38, /* Add additional egress ports; param0: 6009 Destination port bitmap. */ 6010 bcmFieldActionDrop = 39, /* Drop. */ 6011 bcmFieldActionDropCancel = 40, /* Override another rule. */ 6012 bcmFieldActionMirrorOverride = 41, /* Override any mirroring for packet. */ 6013 bcmFieldActionMirrorIngress = 42, /* Ingress mirror; param0: Dest modid; 6014 param1: Dest port/tgid. */ 6015 bcmFieldActionMirrorEgress = 43, /* Egress mirror; param0: Dest modid; 6016 param1: Dest port/tgid. */ 6017 bcmFieldActionL3ChangeVlan = 44, /* Change VLAN on L3-switched packets; 6018 param0: ECMP or next hop info. */ 6019 bcmFieldActionL3ChangeVlanCancel = 45, /* Override another rule. */ 6020 bcmFieldActionL3ChangeMacDa = 46, /* Change MAC DA on L3-switched packets; 6021 param0: ECMP or next hop info. */ 6022 bcmFieldActionL3ChangeMacDaCancel = 47, /* Override another rule; param0: Next 6023 hop table index. */ 6024 bcmFieldActionL3Switch = 48, /* L3-switch packet; param0: ECMP or 6025 next hop info. */ 6026 bcmFieldActionL3SwitchCancel = 49, /* Override another rule. */ 6027 bcmFieldActionAddClassTag = 50, /* Add Classification Tag. */ 6028 bcmFieldActionDropPrecedence = 51, /* Set Drop Precedence; param0: 6029 BCM_FIELD_COLOR_xxx. */ 6030 bcmFieldActionRpDrop = 52, /* Red Priority Drop. */ 6031 bcmFieldActionRpDropCancel = 53, /* Override another rule. */ 6032 bcmFieldActionRpDropPrecedence = 54, /* Set Red Priority Drop Precedence; 6033 param0: BCM_FIELD_COLOR_xxx. */ 6034 bcmFieldActionRpCopyToCpu = 55, /* Red Priority Copy to CPU. */ 6035 bcmFieldActionRpCopyToCpuCancel = 56, /* Override another rule. */ 6036 bcmFieldActionRpSwitchToCpuCancel = 57, /* Override switch logic copy-to-CPU. */ 6037 bcmFieldActionRpSwitchToCpuReinstate = 58, /* Reinstate copy-to-CPU switch logic. */ 6038 bcmFieldActionRpTimeStampToCpu = 59, /* Send a copy to CPU with timestamp and 6039 drop the packet */ 6040 bcmFieldActionRpTimeStampToCpuCancel = 60, /* Override another action (don't 6041 copy,don't drop) */ 6042 bcmFieldActionRpDscpNew = 61, /* Red packet change DSCP value; param0: 6043 New DSCP value. */ 6044 bcmFieldActionRpDscpCancel = 62, /* Override any changes to DSCP field. */ 6045 bcmFieldActionRpEcnNew = 63, /* Red packet change ECN value; param0: 6046 New ECN value. */ 6047 bcmFieldActionRpOuterVlanPrioNew = 64, /* Red packet 802.1p priority from arg; 6048 param0: New priority. */ 6049 bcmFieldActionRpInnerVlanPrioNew = 65, /* Red packet 802.1p priority from arg; 6050 param0: New priority. */ 6051 bcmFieldActionRpOuterVlanCfiNew = 66, /* Red packet 802.1p CFI from arg; 6052 param0: New CFI bit value. */ 6053 bcmFieldActionRpInnerVlanCfiNew = 67, /* Red packet 802.1p CFI from arg; 6054 param0: New CFI bit value. */ 6055 bcmFieldActionRpPrioPktCopy = 68, /* Red packet priority from inner tag. */ 6056 bcmFieldActionRpPrioPktNew = 69, /* Red packet priority from argument0; 6057 param0: New priority. */ 6058 bcmFieldActionRpPrioPktTos = 70, /* Red Packet priority from TOS field in 6059 IP header. */ 6060 bcmFieldActionRpPrioPktCancel = 71, /* Override another rule. */ 6061 bcmFieldActionRpCosQNew = 72, /* Red packet change CoS Queue; param0: 6062 New CoS Queue. */ 6063 bcmFieldActionRpVlanCosQNew = 73, /* Red packet change VLAN CoSQ; param0: 6064 New CoS Queue. */ 6065 bcmFieldActionRpUcastCosQNew = 74, /* Red unicast packet change CoS Queue; 6066 param0: New CoS Queue. */ 6067 bcmFieldActionRpMcastCosQNew = 75, /* Red multicast packet change CoS 6068 Queue; param0: New CoS Queue. */ 6069 bcmFieldActionRpPrioPktAndIntCopy = 76, /* Red packet Packet & Internal priority 6070 from inner tag. */ 6071 bcmFieldActionRpPrioPktAndIntNew = 77, /* Red packet Packet & Internal priority 6072 from param0; param0: New priority. */ 6073 bcmFieldActionRpPrioPktAndIntTos = 78, /* Red packet Packet & Internal priority 6074 from TOS field. */ 6075 bcmFieldActionRpPrioPktAndIntCancel = 79, /* Override any internal priority 6076 changes. */ 6077 bcmFieldActionRpPrioIntCopy = 80, /* Red packet internal priority from 6078 inner VLAN tag. */ 6079 bcmFieldActionRpPrioIntNew = 81, /* Red packet internal priority from an 6080 argument; param0: New priority. */ 6081 bcmFieldActionRpPrioIntTos = 82, /* Red packet internal priority from IP 6082 header TOS field. */ 6083 bcmFieldActionRpPrioIntCancel = 83, /* Red packet override any internal 6084 priority changes. */ 6085 bcmFieldActionYpDrop = 84, /* Yellow Priority Drop. */ 6086 bcmFieldActionYpDropCancel = 85, /* Override another rule. */ 6087 bcmFieldActionYpDropPrecedence = 86, /* Set Yellow Priority Drop Precedence; 6088 param0: BCM_FIELD_COLOR_xxx. */ 6089 bcmFieldActionYpCopyToCpu = 87, /* Yellow Priority Copy to CPU. */ 6090 bcmFieldActionYpCopyToCpuCancel = 88, /* Override another rule. */ 6091 bcmFieldActionYpSwitchToCpuCancel = 89, /* Override switch logic copy-to-CPU. */ 6092 bcmFieldActionYpSwitchToCpuReinstate = 90, /* Reinstate copy-to-CPU switch logic. */ 6093 bcmFieldActionYpTimeStampToCpu = 91, /* Send a copy to CPU with timestamp and 6094 drop the packet */ 6095 bcmFieldActionYpTimeStampToCpuCancel = 92, /* Override another action (don't 6096 copy,don't drop) */ 6097 bcmFieldActionYpDscpNew = 93, /* Yellow packet change DSCP value; 6098 param0: New DSCP value. */ 6099 bcmFieldActionYpDscpCancel = 94, /* Override any changes to DSCP field. */ 6100 bcmFieldActionYpEcnNew = 95, /* Yellow packet change ECN value; 6101 param0: New ECN value. */ 6102 bcmFieldActionYpOuterVlanPrioNew = 96, /* Yellow packet 802.1p priority from 6103 arg. */ 6104 bcmFieldActionYpInnerVlanPrioNew = 97, /* Yellow packet 802.1p priority from 6105 arg; param0: New priority. */ 6106 bcmFieldActionYpOuterVlanCfiNew = 98, /* Yellow packet 802.1p CFI from arg; 6107 param0: New CFI bit value. */ 6108 bcmFieldActionYpInnerVlanCfiNew = 99, /* Yellow packet 802.1p CFI from arg; 6109 param0: New CFI bit value. */ 6110 bcmFieldActionYpPrioPktCopy = 100, /* Yellow packet priority from inner 6111 tag. */ 6112 bcmFieldActionYpPrioPktNew = 101, /* Yellow packet priority from param0; 6113 param0: New priority. */ 6114 bcmFieldActionYpPrioPktTos = 102, /* Yellow packet priority from TOS field 6115 in IP header. */ 6116 bcmFieldActionYpPrioPktCancel = 103, /* Override another rule. */ 6117 bcmFieldActionYpCosQNew = 104, /* Yellow packet change CoS Queue; 6118 param0: New CoS Queue. */ 6119 bcmFieldActionYpVlanCosQNew = 105, /* Yellow packet change VLAN CoSQ; 6120 param0: New CoS Queue. */ 6121 bcmFieldActionYpUcastCosQNew = 106, /* Yellow unicast packet change CoS 6122 Queue; param0: New CoS Queue. */ 6123 bcmFieldActionYpMcastCosQNew = 107, /* Yellow multicast packet change CoS 6124 Queue; param0: New CoS Queue. */ 6125 bcmFieldActionYpPrioPktAndIntCopy = 108, /* Yellow packet Packet & Internal 6126 priority from inner tag. */ 6127 bcmFieldActionYpPrioPktAndIntNew = 109, /* Yellow packet Packet & Internal 6128 priority from param0; param0: New 6129 priority. */ 6130 bcmFieldActionYpPrioPktAndIntTos = 110, /* Yellow packet Packet & Internal 6131 priority from TOS field. */ 6132 bcmFieldActionYpPrioPktAndIntCancel = 111, /* Override any int priority changes. */ 6133 bcmFieldActionYpPrioIntCopy = 112, /* Yellow packet internal priority from 6134 inner VLAN tag. */ 6135 bcmFieldActionYpPrioIntNew = 113, /* Yellow packet internal priority from 6136 an argument; param0: New priority. */ 6137 bcmFieldActionYpPrioIntTos = 114, /* Yellow packet internal priority from 6138 IP header TOS field. */ 6139 bcmFieldActionYpPrioIntCancel = 115, /* Yellow packet override any internal 6140 priority changes. */ 6141 bcmFieldActionUpdateCounter = 116, /* Update Counter; param0: 6142 BCM_FIELD_COUNTER_MODE_xxx. */ 6143 bcmFieldActionMeterConfig = 117, /* Meter configuration; param0: 6144 BCM_FIELD_METER_MODE_xxx; param1: if 6145 param0 == BCM_FIELD_METER_MODE_FLOW, 6146 this denotes BCM_FIELD_METER_PEAK(1) 6147 or BCM_FIELD_METER_COMMITTED(2). */ 6148 bcmFieldActionColorIndependent = 118, /* Make L3SW_CHANGE_MACDA_OR_VLAN 6149 actions color independent. */ 6150 bcmFieldActionClassDestSet = 119, /* Set destination address lookup class 6151 ID. */ 6152 bcmFieldActionClassSet = bcmFieldActionClassDestSet, /* Same as bcmFieldActionClassDestSet. */ 6153 bcmFieldActionClassSourceSet = 120, /* Set source address lookup class ID. */ 6154 bcmFieldActionVrfSet = 121, /* Set VRF ID. */ 6155 bcmFieldActionInnerVlanNew = 122, /* Replace inner VLAN ID; param0: New 6156 inner VLAN ID. */ 6157 bcmFieldActionInnerVlanPrioNew = 123, /* Replace inner VLAN tag priority; 6158 param0: New inner VLAN tag priority. */ 6159 bcmFieldActionInnerVlanDelete = 124, /* Delete inner VLAN tag. */ 6160 bcmFieldActionOuterVlanDelete = 125, /* Delete outer VLAN tag. */ 6161 bcmFieldActionOuterVlanDeleteCancel = 126, /* Override previous outer VLAN tag 6162 delete. */ 6163 bcmFieldActionInnerVlanAdd = 127, /* Add a new Inner VLAN tag. */ 6164 bcmFieldActionInnerVlanCfiNew = 128, /* Replace packet 802.1p CFI from arg. */ 6165 bcmFieldActionOuterVlanNew = 129, /* Replace outer VLAN ID; param0: New 6166 outer VLAN ID. */ 6167 bcmFieldActionVlanNew = bcmFieldActionOuterVlanNew, /* Same as bcmFieldActionOuterVlanNew. */ 6168 bcmFieldActionOuterVlanAdd = 130, /* Add a new Outer VLAN tag. */ 6169 bcmFieldActionVlanAdd = bcmFieldActionOuterVlanAdd, /* Same as bcmFieldActionOuterVlanAdd. */ 6170 bcmFieldActionOuterVlanAddCancel = 131, /* Override previous outer VLAN tag add. */ 6171 bcmFieldActionOuterVlanLookup = 132, /* Lookup outer VLAN tag. */ 6172 bcmFieldActionVlanLookup = bcmFieldActionOuterVlanLookup, /* Same as 6173 bcmFieldActionOuterVlanLookup. */ 6174 bcmFieldActionOuterVlanPrioNew = 133, /* Replace outer VLAN tag priority; 6175 param0: New outer VLAN tag priority. */ 6176 bcmFieldActionOuterVlanCfiNew = 134, /* Replace packet 802.1p CFI from arg; 6177 param0: New CFI bit value; param0: 6178 New CFI bit value. */ 6179 bcmFieldActionOuterTpidNew = 135, /* Replace TPID in outer VLAN tag; 6180 param0: New tpid. */ 6181 bcmFieldActionGpDrop = 136, /* Green Priority Drop. */ 6182 bcmFieldActionGpDropCancel = 137, /* Override another rule. */ 6183 bcmFieldActionGpDropPrecedence = 138, /* Set Green Priority Drop Precedence; 6184 param0: BCM_FIELD_COLOR_xxx. */ 6185 bcmFieldActionGpCopyToCpu = 139, /* Green Priority Copy to CPU. */ 6186 bcmFieldActionGpCopyToCpuCancel = 140, /* Override another rule. */ 6187 bcmFieldActionGpSwitchToCpuCancel = 141, /* Override switch logic copy-to-CPU. */ 6188 bcmFieldActionGpSwitchToCpuReinstate = 142, /* Reinstate copy-to-CPU switch logic. */ 6189 bcmFieldActionGpTimeStampToCpu = 143, /* Send a copy to CPU with timestamp and 6190 drop the packet */ 6191 bcmFieldActionGpTimeStampToCpuCancel = 144, /* Override another action (don't 6192 copy,don't drop) */ 6193 bcmFieldActionGpDscpNew = 145, /* Green packet change DSCP value; 6194 param0: New DSCP value. */ 6195 bcmFieldActionGpDscpCancel = 146, /* Override any changes to DSCP field. */ 6196 bcmFieldActionGpEcnNew = 147, /* Green packet change ECN value; 6197 param0: New ECN value. */ 6198 bcmFieldActionGpTosPrecedenceNew = 148, /* Green packet change Tos byte 6199 precedence value; param0: New 6200 precedence value. */ 6201 bcmFieldActionGpTosPrecedenceCopy = 149, /* Green packet copy Tos byte precedence 6202 from 802.1p priority. */ 6203 bcmFieldActionGpOuterVlanPrioNew = 150, /* Green packet 802.1p priority from 6204 arg. */ 6205 bcmFieldActionGpInnerVlanPrioNew = 151, /* Green packet 802.1p priority from 6206 arg; param0: New priority. */ 6207 bcmFieldActionGpOuterVlanCfiNew = 152, /* Green packet 802.1p CFI from arg; 6208 param0: New CFI bit value. */ 6209 bcmFieldActionGpInnerVlanCfiNew = 153, /* Green packet 802.1p CFI from arg; 6210 param0: New CFI bit value. */ 6211 bcmFieldActionGpPrioPktCopy = 154, /* Green packet priority from inner tag. */ 6212 bcmFieldActionGpPrioPktNew = 155, /* Green packet priority from param0; 6213 param0: New priority. */ 6214 bcmFieldActionGpPrioPktTos = 156, /* Green packet priority from TOS field 6215 in IP header. */ 6216 bcmFieldActionGpPrioPktCancel = 157, /* Override another rule. */ 6217 bcmFieldActionGpCosQNew = 158, /* Green packet change CoS Queue; 6218 param0: New CoS Queue. */ 6219 bcmFieldActionGpVlanCosQNew = 159, /* Green packet change VLAN CoSQ; 6220 param0: New CoS Queue. */ 6221 bcmFieldActionGpUcastCosQNew = 160, /* Green unicast packet change CoS 6222 Queue; param0: New CoS Queue. */ 6223 bcmFieldActionGpMcastCosQNew = 161, /* Green multicast packet change CoS 6224 Queue; param0: New CoS Queue. */ 6225 bcmFieldActionGpPrioPktAndIntCopy = 162, /* Green packet Packet & Internal 6226 priority from inner tag. */ 6227 bcmFieldActionGpPrioPktAndIntNew = 163, /* Green packet Packet & Internal 6228 priority from param0; param0: New 6229 priority. */ 6230 bcmFieldActionGpPrioPktAndIntTos = 164, /* Green packet Packet & Internal 6231 priority from TOS field. */ 6232 bcmFieldActionGpPrioPktAndIntCancel = 165, /* Override any int priority changes. */ 6233 bcmFieldActionGpPrioIntCopy = 166, /* Green packet internal priority from 6234 inner VLAN tag. */ 6235 bcmFieldActionGpPrioIntNew = 167, /* Green packet internal priority from 6236 an argument; param0: New priority. */ 6237 bcmFieldActionGpPrioIntTos = 168, /* Green packet internal priority from 6238 IP header TOS field. */ 6239 bcmFieldActionGpPrioIntCancel = 169, /* Green packet override any internal 6240 priority changes. */ 6241 bcmFieldActionDoNotChangeTtl = 170, /* Do not decrement TTL. */ 6242 bcmFieldActionDoNotCheckUrpf = 171, /* Do not check reverse path for unicast 6243 traffic. */ 6244 bcmFieldActionDoNotCheckVlan = 172, /* Do not check VLAN membership and STG 6245 STP state. */ 6246 bcmFieldActionDoNotLearn = 173, /* Disable L2 learning. */ 6247 bcmFieldActionIpFix = 174, /* Record the packet regardless of port 6248 ipfix enable. */ 6249 bcmFieldActionIpFixCancel = 175, /* Record the packet action override. */ 6250 bcmFieldActionIncomingMplsPortSet = 176, /* Assign incoming MPLS port. */ 6251 bcmFieldActionDeprecated177 = 177, /* Deprecated. Do not use. */ 6252 bcmFieldActionNewClassId = 178, /* Assign new classification ID. */ 6253 bcmFieldActionDeprecated179 = 179, /* Deprecated. Do not use. */ 6254 bcmFieldActionDeprecated180 = 180, /* Deprecated. Do not use. */ 6255 bcmFieldActionDeprecated181 = 181, /* Deprecated. Do not use. */ 6256 bcmFieldActionDeprecated182 = 182, /* Deprecated. Do not use. */ 6257 bcmFieldActionDeprecated183 = 183, /* Deprecated. Do not use. */ 6258 bcmFieldActionDeprecated184 = 184, /* Deprecated. Do not use. */ 6259 bcmFieldActionDeprecated185 = 185, /* Deprecated. Do not use. */ 6260 bcmFieldActionMultipathHash = 186, /* ECMP Hash selection for 6261 bcmFieldActionL3Switch action. */ 6262 bcmFieldActionIpfixRate = 187, /* Set IPFIX flow rate meter; param0: 6263 rate id */ 6264 bcmFieldActionOffloadRedirect = 188, /* Redirect packet to offload engine. */ 6265 bcmFieldActionOffloadClassSet = 189, /* Set Class Id in offload engine 6266 redirected traffic. */ 6267 bcmFieldActionOffloadDropIndication = 190, /* Set drop indicator in offload engine 6268 redirected traffic. */ 6269 bcmFieldActionOamUpMep = 191, /* Indicate UP MEP. */ 6270 bcmFieldActionOamTx = 192, /* Indicate TX direction OAM PDU or data 6271 packet. Used as MSB of 6272 FieldActionOamLmBasePtr'. */ 6273 bcmFieldActionOamLmepMdl = 193, /* MDL value for the LMEP. */ 6274 bcmFieldActionOamServicePriMappingPtr = 194, /* Concatenated with the internal 6275 priority as index to LM packet 6276 counter. */ 6277 bcmFieldActionOamLmBasePtr = 195, /* Set base pointer to LM packet 6278 counter. */ 6279 bcmFieldActionOamDmEnable = 196, /* Enable OAM Delay Measurement. */ 6280 bcmFieldActionOamLmEnable = 197, /* Enable OAM Loss Measurement. */ 6281 bcmFieldActionOamLmepEnable = 198, /* Enable OAM loss/delay measurement. */ 6282 bcmFieldActionOamPbbteLookupEnable = 199, /* Indicate SVP should be used as the 6283 key for LMEP lookup. */ 6284 bcmFieldActionSrcMacNew = 200, /* Replace source mac of the packet. */ 6285 bcmFieldActionDstMacNew = 201, /* Replace destination mac of the 6286 packet. */ 6287 bcmFieldActionVnTagNew = 202, /* Replace NIV VN tag if present, add if 6288 not present; param0: VN tag. */ 6289 bcmFieldActionVnTagDelete = 203, /* Delete NIV VN tag. */ 6290 bcmFieldActionDeprecated204 = 204, /* Deprecated. Do not use. */ 6291 bcmFieldActionDeprecated205 = 205, /* Deprecated. Do not use. */ 6292 bcmFieldActionVportNew = 206, /* Replace/assign virtual port id. */ 6293 bcmFieldActionVportSpcpNew = 207, /* Replace/assign virtual port's spcp. */ 6294 bcmFieldActionVportCpcpNew = 208, /* Replace/assign virtual port's cpcp. */ 6295 bcmFieldActionVportTcNew = 209, /* Replace/assign virtual port's traffic 6296 class. */ 6297 bcmFieldActionVportDpNew = 210, /* Replace/assign virtual port's drop 6298 precedence. */ 6299 bcmFieldActionRedirectVportPort = 211, /* Redirect Packet to single VportPort; 6300 param0: Destination vport; param1: 6301 Destination port. */ 6302 bcmFieldActionMacDaKnown = 212, /* Packet is not treated as a DLF type */ 6303 bcmFieldActionFilters = 213, /* Enable Filters to override the rule; 6304 param0: filter 6305 types(BCM_FIELD_FILTER_XXX) */ 6306 bcmFieldActionFabricQueue = 214, /* Enable ext header on hg ports. */ 6307 bcmFieldActionCnmCancel = 215, /* Do not generate QCN congestion 6308 notification message. */ 6309 bcmFieldActionQcnUndo = bcmFieldActionCnmCancel, /* Do not perform a Congestion test on 6310 this packet (no QCN message can be 6311 generated) */ 6312 bcmFieldActionDynamicHgTrunkCancel = 216, /* Disable dynamic HiGig trunking. */ 6313 bcmFieldActionEgressMirrorDisable = 217, /* Disable Egress Mirror for matching 6314 packet. */ 6315 bcmFieldActionMultipathHashAdditionalInfo = 218, /* Add additional information to 6316 matching packet's LAG/ECMP 6317 load-balancing hash calculation */ 6318 bcmFieldActionDeprecated219 = 219, /* Deprecated. Do not use. */ 6319 bcmFieldActionMirrorEgressDisable = 220, /* Disable egress mirror; param0 = TRUE 6320 to disable, FALSE otherwise */ 6321 bcmFieldActionOuterVlanCopyInner = 221, /* Copy the VLAN id from the inner tag 6322 to the outer. */ 6323 bcmFieldActionOuterVlanPrioCopyInner = 222, /* Copy the 802.1p priority from the 6324 inner tag to the outer. */ 6325 bcmFieldActionOuterVlanCfiCopyInner = 223, /* Copy the CFI bit from the inner tag 6326 to the outer. */ 6327 bcmFieldActionInnerVlanCopyOuter = 224, /* Copy the VLAN id from the outer tag 6328 to the inner. */ 6329 bcmFieldActionInnerVlanPrioCopyOuter = 225, /* Copy the 802.1p priority from the 6330 outer tag to the inner. */ 6331 bcmFieldActionInnerVlanCfiCopyOuter = 226, /* Copy the CFI bit from the outer tag 6332 to the inner. */ 6333 bcmFieldActionCompressSrcIp6 = 227, /* Map incoming IPv6 packet Source IP to 6334 ingress field processor IPv4 Source 6335 IP field. */ 6336 bcmFieldActionCompressDstIp6 = 228, /* Map incoming IPv6 packet Destination 6337 IP to ingress field processor IPv4 6338 Destination IP field. */ 6339 bcmFieldActionServicePoolIdNew = 229, /* Change Service Pool ID; param0: New 6340 Service Pool ID. */ 6341 bcmFieldActionUseGlobalMeterColor = 230, /* Use service meters output color 6342 instead of CNG based color as input 6343 packet color */ 6344 bcmFieldActionRedirectEgrNextHop = 231, /* Redirect packet to next hop; param0: 6345 ECMP or next hop info. */ 6346 bcmFieldActionTrunkLoadBalanceCancel = 232, /* Disable trunk load balancing */ 6347 bcmFieldActionEcmpLoadBalanceCancel = 233, /* Disable ECMP group load balancing */ 6348 bcmFieldActionDoNotOverride = 234, /* Do not override actions */ 6349 bcmFieldActionEgressClassSelect = 235, /* Select class to pass to EFP */ 6350 bcmFieldActionHiGigClassSelect = 236, /* Select class for HiGig */ 6351 bcmFieldActionOamDmTimeFormat = 237, /* Select time format for OAM delay 6352 measurement */ 6353 bcmFieldActionOamLmDmSampleEnable = 238, /* Indicates if packet should be 6354 processed as an OAMPDU belonging to 6355 this MEP */ 6356 bcmFieldActionOamTagStatusCheck = 239, 6357 bcmFieldActionOamTunnelControl = 240, /* Select whether OAMPDU can either be 6358 in a tunnel that is terminated or not 6359 tunneled */ 6360 bcmFieldActionRegex = 241, /* Perform DPI */ 6361 bcmFieldActionNoRegex = 242, /* Do not perform DPI */ 6362 bcmFieldActionStat0 = 243, /* Update statistics (statId in param0) 6363 on entry hit. See 6364 bcm_field_entry_stat_attach and 6365 related APIs. */ 6366 bcmFieldActionStat = bcmFieldActionStat0, /* Alias for bcmFieldActionStat0 */ 6367 bcmFieldActionPolicerLevel0 = 244, /* Apply policer (policerId in param0) 6368 to traffic hitting this entry. See 6369 bcm_field_entry_policer_attach and 6370 related APIs. */ 6371 bcmFieldActionPolicerLevel1 = 245, /* Apply policer (policerId in param0) 6372 to traffic hitting this entry. See 6373 bcm_field_entry_policer_attach and 6374 related APIs. */ 6375 bcmFieldActionPolicerGroup = 246, /* Flag in ASETs to indicate group 6376 policer usage with the group */ 6377 bcmFieldActionStatGroup = 247, /* Flag in ASETs to indicate stat group 6378 usage with the group */ 6379 bcmFieldActionVSQ = 248, /* Assign matching packets to specified 6380 VSQ (param0). */ 6381 bcmFieldActionIntPriorityAndDropPrecedence = 249, /* Change internal priority and drop 6382 precedence. param0 = new internal 6383 priority. param1 = new drop 6384 precedence */ 6385 bcmFieldActionISQ = 250, /* Assign matching packets to specified 6386 ISQ (param0). */ 6387 bcmFieldActionTrap = 251, /* Trap matched packets (treat them 6388 according to the specified trap 6389 profile) */ 6390 bcmFieldActionUsePolicerResult = 252, /* Specify/override where policer result 6391 will be used for matched packets. 6392 See BCM_FIELD_USE_POLICER_RESULT_* 6393 for flags that go in param0. */ 6394 bcmFieldActionStat1 = 253, /* Secondary statistics update for 6395 matched packets (statId in param0) */ 6396 bcmFieldActionStatTag = 254, /* Assign statistics tag (such as for 6397 external statistics engine) to 6398 matched packets */ 6399 bcmFieldActionSnoop = 255, /* Snoop matched packets (treat them 6400 according to the specified snoop 6401 profile) */ 6402 bcmFieldActionTtlSet = 256, /* New TTL */ 6403 bcmFieldActionIncomingIpIfSet = 257, /* Assign incoming IP interface */ 6404 bcmFieldActionOrientationSet = 258, /* Set the new Orientation */ 6405 bcmFieldActionTrunkHashKeySet = 259, /* Set the Trunk Hash Key */ 6406 bcmFieldActionDstRpfGportNew = 260, /* Set the RPF Destination */ 6407 bcmFieldActionDhcpPkt = 261, /* Indicate whether the Packet is DHCP */ 6408 bcmFieldActionSrcGportNew = 262, /* Set the Source-Port */ 6409 bcmFieldActionForwardingTypeNew = 263, /* Set the new Forwarding type */ 6410 bcmFieldActionStartPacketStrip = 264, /* Strip the start-of-packet */ 6411 bcmFieldActionSystemHeaderSet = 265, /* Modify a System Header */ 6412 bcmFieldActionVSwitchNew = 266, /* Replace Virtual Switch */ 6413 bcmFieldActionLearnSrcMacNew = 267, /* Replace the learnt packet source MAC 6414 address */ 6415 bcmFieldActionLearnSrcPortNew = 268, /* Replace the learnt packet source Port */ 6416 bcmFieldActionLearnForwardingVlanIdNew = 269, /* Replace the learnt packet Forwarding 6417 Vlan ID */ 6418 bcmFieldActionQosMapIdNew = 270, /* Set the QoS map Id */ 6419 bcmFieldActionVlanActionSetNew = 271, /* Modify the VLAN Action Set Id */ 6420 bcmFieldActionVlanTranslationValueSet = 272, /* Set VLAN Translation lookup result */ 6421 bcmFieldActionTunnelTerminatedValueSet = 273, /* Set Tunnel termination lookup result */ 6422 bcmFieldActionMplsTerminatedValueSet = 274, /* Set MPLS termination lookup result */ 6423 bcmFieldActionIpTunnelValueSet = 275, /* Set IP Tunnel termination lookup 6424 result */ 6425 bcmFieldActionL2SrcValueSet = 276, /* Set L2 Source lookup result */ 6426 bcmFieldActionL2DestValueSet = 277, /* Set L2 Destination lookup result */ 6427 bcmFieldActionL3SrcRouteValueSet = 278, /* Set L3 Source lookup result */ 6428 bcmFieldActionL3DestRouteValueSet = 279, /* Set L3 Destination lookup result */ 6429 bcmFieldActionIpmcValueSet = 280, /* Set IP Multicast lookup result */ 6430 bcmFieldActionCascadedKeyValueSet = 281, /* Set key value to cascade to later 6431 group for a packet */ 6432 bcmFieldActionIngressGportSet = 282, /* Set a new ingress Gport 6433 (MPLS/Mim/WLAN) value. */ 6434 bcmFieldActionExternalValue0Set = 283, /* Set External lookup 0 result */ 6435 bcmFieldActionExternalValue1Set = 284, /* Set External lookup 1 result */ 6436 bcmFieldActionExternalValue2Set = 285, /* Set External lookup 2 result */ 6437 bcmFieldActionExternalValue3Set = 286, /* Set External lookup 3 result */ 6438 bcmFieldActionNatCancel = 287, /* Do Not perform NAT on this matching 6439 packet */ 6440 bcmFieldActionNat = 288, /* Perform NAT operation on the matching 6441 packet */ 6442 bcmFieldActionNatEgressOverride = 289, /* Override NAT Egress information with 6443 the given Egress information for 6444 Translation */ 6445 bcmFieldActionRegexActionCancel = 290, /* Suppress action taken by the Regex 6446 module for matching pkt. */ 6447 bcmFieldActionPortPrioIntCosQNew = 291, /* Change CoS Queue; param0: Classifier 6448 ID param1: Queue offset or l2 UC 6449 Gport. */ 6450 bcmFieldActionRpPortPrioIntCosQNew = 292, /* Red packet change CoS Queue; param0: 6451 Classifier ID param1: Queue offset or 6452 l2 UC Gport. */ 6453 bcmFieldActionYpPortPrioIntCosQNew = 293, /* Yellow packet change CoS Queue; 6454 param0: Classifier ID param1: Queue 6455 offset or l2 UC Gport. */ 6456 bcmFieldActionGpPortPrioIntCosQNew = 294, /* Green packet change CoS Queue; 6457 param0: Classifier ID param1: Queue 6458 offset or l2 UC Gport. */ 6459 bcmFieldActionYpMirrorIngress = 295, /* Yellow packet ingress mirror; param0: 6460 Dest modid; param1: Dest port/tgid. */ 6461 bcmFieldActionYpRedirectPort = 296, /* Redirect yellow packet to single 6462 port; param0: Destination modid; 6463 param1: Destination port. */ 6464 bcmFieldActionDeprecated297 = 297, /* Deprecated. Do not use. */ 6465 bcmFieldActionFibreChanSrcBindEnable = 298, /* Enable or Disable Source Bind Check 6466 for Fibre Chan packets */ 6467 bcmFieldActionFibreChanFpmaPrefixCheckEnable = 299, /* Enable or Disable FPMA prefix check 6468 for Fibre Chan packets */ 6469 bcmFieldActionFibreChanZoneCheckEnable = 300, /* Enable or Disable Zone Check for 6470 Fibre Chan packets */ 6471 bcmFieldActionFibreChanVsanId = 301, /* VSAN Id generated via VFP. */ 6472 bcmFieldActionFibreChanZoneCheckActionCancel = 302, /* To Accept or Ignore previously made 6473 Zone check result */ 6474 bcmFieldActionFibreChanIntVsanPri = 303, /* New VSAN Priority. */ 6475 bcmFieldActionLearnInVPortNew = 304, /* Replace the learnt packet InVPort. */ 6476 bcmFieldActionOamDomain = 305, /* Set the OAM domains on which the MEP 6477 lookups are done. param0 can be used 6478 to set first domain and param1 for 6479 second domain. */ 6480 bcmFieldActionOamOlpHeaderAdd = 306, /* Add OLP header for this packet - 6481 param0 to be used for passing the 6482 header type. */ 6483 bcmFieldActionOamSessionId = 307, /* OAM session Id to be used in OLP Rx 6484 header - param0 to be used for 6485 passing the session id. */ 6486 bcmFieldActionOuterVlanCfiCancel = 308, /* Disable the CFI remarking of the 6487 outer vlan tag CFI bit. */ 6488 bcmFieldActionInnerVlanPriCancel = 309, /* Disable the PCP remarking of the 6489 inner vlan tag priority bits. */ 6490 bcmFieldActionPrioIntRemark = 310, /* Assign a new packet internal priority 6491 for PCP or CFI remarking. */ 6492 bcmFieldActionUseDefaultWred = 311, /* Use the discard settings from default 6493 WRED configuration */ 6494 bcmFieldActionHashValueSet = 312, /* Set Hash result */ 6495 bcmFieldActionL3IngressSet = 313, /* Assign L3 Ingress Interface value to 6496 packet. */ 6497 bcmFieldActionInterfaceClassVPort = 314, /* Set the Virtual Port Interface Class 6498 ID . */ 6499 bcmFieldActionIngSampleEnable = 315, /* Set the SFLOW Ingress Sampling. */ 6500 bcmFieldActionEgrSampleEnable = 316, /* Set the SFLOW Egress Sampling. */ 6501 bcmFieldActionHashSelect0 = 317, /* Set the hash buckets bitmap for Hash 6502 key A. */ 6503 bcmFieldActionHashSelect1 = 318, /* Set the hash buckets bitmap for Hash 6504 key B. */ 6505 bcmFieldActionTrunkResilientHashCancel = 319, /* Cancels the resilient hash on Trunk. */ 6506 bcmFieldActionHgTrunkResilientHashCancel = 320, /* Cancels the resilient hash on HiGig 6507 Trunk. */ 6508 bcmFieldActionEcmpResilientHashCancel = 321, /* Cancels the resilient hash on ECMP. */ 6509 bcmFieldActionUnmodifiedPacketRedirectPort = 322, /* Redirect Unmodified Packet to single 6510 port; param0: Destination Gport. */ 6511 bcmFieldActionEtagNew = 323, /* Replace Port Extender ETAG if 6512 present, add if not present; param0: 6513 ETAG. */ 6514 bcmFieldActionEtagDelete = 324, /* Delete Port Extender ETAG. */ 6515 bcmFieldActionPfcClassNew = 325, /* Change the PFC class of the packet; 6516 param0 : new PFC class value. */ 6517 bcmFieldActionRpIntCongestionNotificationNew = 326, /* Replace the internal congestion 6518 notification value of red packet; 6519 param0: Internal congestion 6520 notification value. */ 6521 bcmFieldActionYpIntCongestionNotificationNew = 327, /* Replace the internal congestion 6522 notification value of yellow packet; 6523 param0: Internal congestion 6524 notification value. */ 6525 bcmFieldActionGpIntCongestionNotificationNew = 328, /* Replace the internal congestion 6526 notification value of green packet; 6527 param0: Internal congestion 6528 notification value. */ 6529 bcmFieldActionRpHGCongestionClassNew = 329, /* Replace the value of CongestionClass 6530 field in HiGig header for red packet; 6531 param0: CongestionClass value. */ 6532 bcmFieldActionYpHGCongestionClassNew = 330, /* Replace the value of CongestionClass 6533 field in HiGig header for yellow 6534 packet; param0: CongestionClass 6535 value. */ 6536 bcmFieldActionGpHGCongestionClassNew = 331, /* Replace the value of CongestionClass 6537 field in HiGig header for green 6538 packet; param0: CongestionClass 6539 value. */ 6540 bcmFieldActionRedirDropPrecedence = 332, /* Set the redirect drop precedence of 6541 packets. param0:BCM_FIELD_COLOR_xxx 6542 param1:n/a. */ 6543 bcmFieldActionRpRedirDropPrecedence = 333, /* Set the redirect drop precedence of 6544 Red packets. 6545 param0:BCM_FIELD_COLOR_xxx 6546 param1:n/a. */ 6547 bcmFieldActionYpRedirDropPrecedence = 334, /* Set the redirect drop precedence of 6548 Yellow packets. 6549 param0:BCM_FIELD_COLOR_xxx 6550 param1:n/a. */ 6551 bcmFieldActionGpRedirDropPrecedence = 335, /* Set the redirect drop precedence of 6552 Green packets. 6553 param0:BCM_FIELD_COLOR_xxx 6554 param1:n/a. */ 6555 bcmFieldActionHiGigDstModuleGportNew = 336, /* Replace the value of DST_MODID field 6556 in HiGig header ; param0: New 6557 Destination Module Id. */ 6558 bcmFieldActionHiGigDstPortGportNew = 337, /* Replace the value of DST_PORT field 6559 in HiGig header ; param0: New 6560 Destination Port Id. */ 6561 bcmFieldActionHiGigDstGportNew = 338, /* Replace the value of DST_MODID and 6562 DST_PORT fields in HiGig header ; 6563 param0: New Destination Gport. */ 6564 bcmFieldActionGpHiGigDropPrecedenceNew = 339, /* Replace the value of Drop Precedence 6565 field in HiGig header for Green 6566 Packets; param0: BCM_FIELD_COLOR_xxx. */ 6567 bcmFieldActionYpHiGigDropPrecedenceNew = 340, /* Replace the value of Drop Precedence 6568 field in HiGig header for Yellow 6569 packets; param0: BCM_FIELD_COLOR_xxx. */ 6570 bcmFieldActionRpHiGigDropPrecedenceNew = 341, /* Replace the value of Drop Precedence 6571 field in HiGig header for Red 6572 packets; param0: BCM_FIELD_COLOR_xxx. */ 6573 bcmFieldActionHiGigDropPrecedenceNew = 342, /* Replace the value of Drop Precedence 6574 field in HiGig header for 6575 any(Green/Yellow/Red) packets; 6576 param0: BCM_FIELD_COLOR_xxx. */ 6577 bcmFieldActionGpHiGigIntPriNew = 343, /* Replace the value of Traffic Class 6578 field in HiGig header for Green 6579 packets; param0: New Internal 6580 Priority. */ 6581 bcmFieldActionYpHiGigIntPriNew = 344, /* Replace the value of Traffic Class 6582 field in HiGig header for Yellow 6583 packets; param0: New Internal 6584 Priority. */ 6585 bcmFieldActionRpHiGigIntPriNew = 345, /* Replace the value of Traffic Class 6586 field in HiGig header for Red 6587 packets; param0: New Internal 6588 Priority. */ 6589 bcmFieldActionHiGigIntPriNew = 346, /* Replace the value of Traffic Class 6590 field in HiGig header for 6591 any(green/Yellow/Red) packet; param0: 6592 New Internal Priority. */ 6593 bcmFieldActionLoopbackSrcModuleGportNew = 347, /* Replace the value of Source ModId 6594 field in Loopback header ; param0: 6595 New Source Module Id. */ 6596 bcmFieldActionLoopbackSrcPortGportNew = 348, /* Replace the value of Source PortId 6597 field in Loopback header ; param0: 6598 New Source Port Id. */ 6599 bcmFieldActionLoopbackSrcGportNew = 349, /* Replace the value of Source ModId and 6600 Source PortId fields in Loopback 6601 header ; param0: New Source Gport. */ 6602 bcmFieldActionLoopbackCpuMasqueradePktProfileNew = 350, /* Replace the value of Packet Profile 6603 field in Loopback header ; param0: 6604 New Packet Profile. */ 6605 bcmFieldActionLoopbackPacketProcessingPortNew = 351, /* Replace the value of Packet 6606 Processing port field in Loopback 6607 header ; param0: New Packet 6608 Processing Port. */ 6609 bcmFieldActionLoopBackTypeNew = 352, /* Replace the value of Loopback Type 6610 field in Loopback header ; param0: 6611 Loopback Type 6612 (bcmFieldLoopbackTypeXXX). */ 6613 bcmFieldActionRecoverableDropCancel = 353, /* Override drop decision taken by 6614 Protection switching logic */ 6615 bcmFieldActionStackingRouteNew = 354, /* Replace the value of the stacking 6616 route */ 6617 bcmFieldActionPphPresentSet = 355, /* If set, a Packet Processing header is 6618 present. */ 6619 bcmFieldActionVxlanHeaderBits8_31_Set = 356, /* Set Vxlan Header Reserved_1 Field */ 6620 bcmFieldActionVxlanHeaderBits56_63_Set = 357, /* Set Vxlan Header Reserved_2 Field */ 6621 bcmFieldActionFabricHeaderSet = 358, /* If set, a Packet Processing header is 6622 present. */ 6623 bcmFieldActionOam = 359, /* It comprises several fields that are 6624 changed at the same time: OAM-Up-Mep, 6625 OAM-Sub-Type, OAM-offset, 6626 OAM-Stamp-Offset */ 6627 bcmFieldActionVpnSet = 360, /* Set a new VPN value; param0: VPN Id. */ 6628 bcmFieldActionL3DestRoutePublicValueSet = 361, /* Set L3 Destination public lookup 6629 result. */ 6630 bcmFieldActionL3SrcRoutePublicValueSet = 362, /* Set L3 Source public lookup result. */ 6631 bcmFieldActionClassZero = 363, /* Class Action Zero. */ 6632 bcmFieldActionClassOne = 364, /* Class Action One. */ 6633 bcmFieldActionTrapReduced = 365, /* Trap action without qualifier. */ 6634 bcmFieldActionGroupClassSet = 366, /* Assign Class Id value to a Ingress 6635 Field Group. */ 6636 bcmFieldActionEgressPbmpNullCopyToCpu = 367, /* Dropped Packets Copy to CPU */ 6637 bcmFieldActionPimBidirFwd = 368, /* If set, enable PIM-BIDIR forwarding 6638 of IP Multicast packets. */ 6639 bcmFieldActionDscpMapNew = 369, /* Qos Mapping for Incoming packet DSCP */ 6640 bcmFieldActionReserved370 = 370, /* Reserved action. */ 6641 bcmFieldActionReserved371 = 371, /* Reserved action. */ 6642 bcmFieldActionReserved372 = 372, /* Reserved action. */ 6643 bcmFieldActionReserved373 = 373, /* Reserved action. */ 6644 bcmFieldActionFabricEHAddOrUpdate = 374, /* To add or update the HiGig extended 6645 header(4 bytes) to HiGig Packets. */ 6646 bcmFieldActionDot1pPreserve = 375, /* To prohibit changing/rewriting of 6647 packets 802.1p priority. */ 6648 bcmFieldActionGpDot1pPreserve = 376, /* To prohibit changing/rewriting of 6649 Green packets 802.1p priority. */ 6650 bcmFieldActionYpDot1pPreserve = 377, /* To prohibit changing/rewriting of 6651 yellow packets 802.1p priority. */ 6652 bcmFieldActionRpDot1pPreserve = 378, /* To prohibit changing/rewriting of red 6653 packets 802.1p priority. */ 6654 bcmFieldActionDscpPreserve = 379, /* To prohibit changing/rewriting of 6655 packets DSCP. */ 6656 bcmFieldActionGpDscpPreserve = 380, /* To prohibit changing/rewriting of 6657 green packets DSCP. */ 6658 bcmFieldActionYpDscpPreserve = 381, /* To prohibit changing/rewriting of 6659 yellow packets DSCP. */ 6660 bcmFieldActionRpDscpPreserve = 382, /* To prohibit changing/rewriting of red 6661 packets DSCP. */ 6662 bcmFieldActionChangeL2FieldsCancel = 383, /* Cancel Changing OuterVlan, SrcMac, 6663 DstMac, VnTag, Etag from lower 6664 priority groups. */ 6665 bcmFieldActionBFDSessionIdNew = 384, /* Assign new Session Id to BFD 6666 EndPoint. */ 6667 bcmFieldActionCosMapNew = 385, /* Override the default internal 6668 priority to cosq mapping derived in 6669 ingress pipeline using new IFP Cos 6670 Map. */ 6671 bcmFieldActionGpCosMapNew = 386, /* Override the default internal 6672 priority to cosq mapping derived in 6673 ingress pipeline using new IFP Cos 6674 Map for Green Packets only. */ 6675 bcmFieldActionYpCosMapNew = 387, /* Override the default internal 6676 priority to cosq mapping derived in 6677 ingress pipeline using new IFP Cos 6678 Map for Yellow Packets only. */ 6679 bcmFieldActionRpCosMapNew = 388, /* Override the default internal 6680 priority to cosq mapping derived in 6681 ingress pipeline using new IFP Cos 6682 Map for Red Packets only. */ 6683 bcmFieldActionVxlanHeaderFlags = 389, /* Set Vxlan Header Flags Field. */ 6684 bcmFieldActionChangeL2Fields = 390, /* Modify L2 fields for the given L3 6685 egress object. */ 6686 bcmFieldActionExactMatchClassId = 391, /* Exact Match Action Class Id. */ 6687 bcmFieldActionPfcTx = 392, /* Send out a PFC frame. parma0: local 6688 port number. param1: the enable 6689 vector of the PFC frame */ 6690 bcmFieldActionSwitchEncap = 393, /* To encapsulate MiML or Custom Header 6691 in the customer Ethernet packet for 6692 selected packets */ 6693 bcmFieldActionStatVportNew = 394, /* Replace/assign virtual port id 6694 attached to specific statistic */ 6695 bcmFieldActionUcastQueueNew = 395, /* Assign new Unicast Queue Number 6696 param0: l2 UC queue gport. */ 6697 bcmFieldActionRpUcastQueueNew = 396, /* Red packet Assign new Unicast Queue 6698 Number param0: l2 UC queue gport. */ 6699 bcmFieldActionYpUcastQueueNew = 397, /* Yellow Packet Assign new Unicast 6700 Queue Number param0: l2 UC queue 6701 gport. */ 6702 bcmFieldActionGpUcastQueueNew = 398, /* Green Packet Assign new Unicast Queue 6703 Number param0: l2 UC queue gport. */ 6704 bcmFieldActionIntCosUcastQueueNew = 399, /* Assign new Unicast Queue Number 6705 param0: l2 UC queue gport. param1: 6706 classifier id */ 6707 bcmFieldActionRpIntCosUcastQueueNew = 400, /* Red Packet Assign new Unicast Queue 6708 Number param0: l2 UC queue gport. 6709 param1: classifier id */ 6710 bcmFieldActionYpIntCosUcastQueueNew = 401, /* Yellow Packet Assign new Unicast 6711 Queue Number param0: l2 UC queue 6712 gport. param1: classifier id */ 6713 bcmFieldActionGpIntCosUcastQueueNew = 402, /* Green Packet Assign new Unicast Queue 6714 Number param0: l2 UC queue gport. 6715 param1: classifier id */ 6716 bcmFieldActionHgTrunkRandomRoundRobinHashCancel = 403, /* Cancel Random or Roundrobin hash 6717 configured for HiGig Trunks */ 6718 bcmFieldActionTrunkRandomRoundRobinHashCancel = 404, /* Cancel Random or Roundrobin hash 6719 configured for Trunks */ 6720 bcmFieldActionEcmpRandomRoundRobinHashCancel = 405, /* Cancel Random or Roundrobin hash 6721 configured for Ecmp */ 6722 bcmFieldActionPacketTraceEnable = 406, /* trigger storing all instrumentation 6723 triggers for this packet to a buffer. 6724 Other than IFP, same can be done 6725 using packet visibility API */ 6726 bcmFieldActionStrength = 407, /* Strength for CopyToCpu or Redirection 6727 packets */ 6728 bcmFieldActionRedirectBufferPriority = 408, /* Buffer priority for CopyToCpu or 6729 Redirection packets */ 6730 bcmFieldActionRedirectPrioIntNew = 409, /* Internal priority for Redirected 6731 packets */ 6732 bcmFieldActionRpRedirectPrioIntNew = 410, /* Internal priority for Redirected Red 6733 packets */ 6734 bcmFieldActionYpRedirectPrioIntNew = 411, /* Internal priority for Redirected 6735 Yellow packets */ 6736 bcmFieldActionGpRedirectPrioIntNew = 412, /* Internal priority for Redirected 6737 Green packets */ 6738 bcmFieldActionUntaggedPacketPriorityNew = 413, /* set input priority for untagged 6739 packets. (not internal priority, 6740 refer doc) */ 6741 bcmFieldActionDoNotCutThrough = 414, /* On configuring this action, the 6742 packet is not eligible for 6743 cut-through mode in MMU. It will take 6744 the default store and forward method. */ 6745 bcmFieldActionLoopbackOamResponse = 415, /* Generate OAM Loopback response. */ 6746 bcmFieldActionLoopbackSatResponse = 416, /* Generate SAT latching Loopback 6747 response. */ 6748 bcmFieldActionOamStatObjectSessionId = 417, /* Adds LM counter index to OLP header 6749 to uniquely identify OAM session. */ 6750 bcmFieldActionServicePrioIntCosQNew = 418, /* Change CoS Queue; param0: Classifier 6751 ID param1: Queue offset. */ 6752 bcmFieldActionRpServicePrioIntCosQNew = 419, /* Red packet change CoS Queue; param0: 6753 Classifier ID param1: Queue offset. */ 6754 bcmFieldActionYpServicePrioIntCosQNew = 420, /* Yellow packet change CoS Queue; 6755 param0: Classifier ID param1: Queue 6756 offset. */ 6757 bcmFieldActionGpServicePrioIntCosQNew = 421, /* Green packet change CoS Queue; 6758 param0: Classifier ID param1: Queue 6759 offset. */ 6760 bcmFieldActionProtectionSwitchingDrop = 422, /* Drop the data packets on working or 6761 protected path of PBB in VFP. */ 6762 bcmFieldActionServicePoolIdPrecedenceNew = 423, /* Change SPID and SPAP; param0: New 6763 Service Pool ID param1: Service Pool 6764 Precedence (color) */ 6765 bcmFieldActionSwapMacDaSa = 424, /* Swap Destination and Source Mac 6766 addresses */ 6767 bcmFieldActionSwapSourceIPDestIP = 425, /* Swap Destination and Source IP 6768 addresses */ 6769 bcmFieldActionReplaceTtl = 426, /* TTL is replaced with the value 6770 programmed by 6771 bcmFieldControlReplacementTtl instead 6772 of decrementing */ 6773 bcmFieldActionPacketIsL3SAT = 427, /* Indicates matched packet is L3SAT 6774 packet and calculates offset to the 6775 start of the L3SAT PDU */ 6776 bcmFieldActionReplaceSrcMac = 428, /* Replace Source Mac */ 6777 bcmFieldActionReplaceDstMac = 429, /* Replace Destination Mac */ 6778 bcmFieldActionReplaceInnerVlan = 430, /* Replace Inner Vlan */ 6779 bcmFieldActionReplaceOuterVlan = 431, /* Replace Outer Vlan */ 6780 bcmFieldActionReplaceInnerVlanPriority = 432, /* Replace Inner Vlan Priority */ 6781 bcmFieldActionReplaceOuterVlanPriority = 433, /* ReplaceOuter Vlan Priority */ 6782 bcmFieldActionStatAndPolicer = 434, /* Stat and Policer Action */ 6783 bcmFieldActionSnoopAndTrap = 435, /* Snoop and Trap Action */ 6784 bcmFieldActionIEEE1588 = 436, /* Setting varoius parameters for 1588 6785 frames */ 6786 bcmFieldActionExternalValue4Set = 437, /* Set External lookup 4 result */ 6787 bcmFieldActionExternalValue5Set = 438, /* Set External lookup 5 result */ 6788 bcmFieldActionForward = 439, /* Set Forwarding destination raw value */ 6789 bcmFieldActionTrapCodeQualifier = 440, /* Set Trap destination value (trap code 6790 + forward strength+ snoop strength ) 6791 in addition to configurable value 6792 that further resolves the cause of 6793 the trap in the context of the 6794 CPU-Trap-Code */ 6795 bcmFieldActionPphSnoopCode = 441, /* Set the PPH Snoop code value */ 6796 bcmFieldActionEgressTimeStampInsert = 442, /* Insert EPIPE timestamp. */ 6797 bcmFieldActionIngressTimeStampInsert = 443, /* Insert IPIPE timestamp. */ 6798 bcmFieldActionIngressTimeStampInsertCancel = 444, /* Do not insert ingress timestamp. 6799 Overrules port config. */ 6800 bcmFieldActionEgressTimeStampInsertCancel = 445, /* Do not insert egress timestamp. 6801 Overrules port config. */ 6802 bcmFieldActionMplsLabel1ExpNew = 446, /* Change the EXP field in forwarding 6803 label of MPLS packets. */ 6804 bcmFieldActionDynamicEcmpEnable = 447, /* Force packets to use DLB when matched 6805 by IFP rules, even though the Group 6806 Table indicates hash-based load 6807 balancing is to be used. */ 6808 bcmFieldActionDynamicTrunkEnable = 448, /* Force packets to use DLB when matched 6809 by IFP rules, even though the Group 6810 Table indicates hash-based load 6811 balancing is to be used. */ 6812 bcmFieldActionDynamicEcmpCancel = bcmFieldActionEcmpLoadBalanceCancel, /* Same as 6813 bcmFieldActionEcmpLoadBalanceCancel. */ 6814 bcmFieldActionDynamicTrunkCancel = 449, /* Force packets to use hash-based load 6815 balancing, even though the group is 6816 configured to support DLB. */ 6817 bcmFieldActionDgm = 450, /* Indicate IFP action is valid. It is 6818 mandatory to add this action to for 6819 the following three actions to get 6820 applied. */ 6821 bcmFieldActionDgmThreshold = 451, /* Indicates the IFP action is only 6822 valid when the primary optimal band 6823 is equal to or below this threshold. 6824 If threshold is set to 7, this action 6825 will always be valid. */ 6826 bcmFieldActionDgmBias = 452, /* Indicates the bias in favor of the 6827 alternate path in DGM. */ 6828 bcmFieldActionDgmCost = 453, /* Indicates the cost of switching over 6829 to the alternate path in DGM. */ 6830 bcmFieldActionStaggeredValue0Set = 454, /* Value taken from action result 0 in 6831 staggered mode. */ 6832 bcmFieldActionStaggeredValue1Set = 455, /* Value taken from action result 1 in 6833 staggered mode. */ 6834 bcmFieldActionStaggeredValue2Set = 456, /* Value taken from action result 2 in 6835 staggered mode. */ 6836 bcmFieldActionStaggeredValue3Set = 457, /* Value taken from action result 3 in 6837 staggered mode. */ 6838 bcmFieldActionStaggeredDirectValueSet = 458, /* Value taken from KAPS payload in 6839 staggered mode. */ 6840 bcmFieldActionStaggeredPreselProfile0Set = 459, /* Program selection profile value taken 6841 from action result 0 in staggered 6842 mode. */ 6843 bcmFieldActionStaggeredPreselProfile1Set = 460, /* Program selection profile value taken 6844 from action result 1 in staggered 6845 mode. */ 6846 bcmFieldActionStaggeredPreselProfile2Set = 461, /* Program selection profile value taken 6847 from action result 2 in staggered 6848 mode. */ 6849 bcmFieldActionStaggeredPreselProfile3Set = 462, /* Program selection profile value taken 6850 from action result 3 in staggered 6851 mode. */ 6852 bcmFieldActionStaggeredPreselProfileDirectSet = 463, /* Program selection profile value taken 6853 from KAPS payload 0 in staggered 6854 mode. */ 6855 bcmFieldActionEnableVlanCheck = 464, /* Check VLAN membership and STG STP 6856 state */ 6857 bcmFieldActionAdmitProfile = 465, /* Return admit profile by 6858 bcmFieldAdmitProfile_t */ 6859 bcmFieldActionDynamicHgTrunkEnable = 466, /* Force packets to use DLB when matched 6860 by IFP rules, even though the Group 6861 Table indicates hash-based load 6862 balancing is to be used. */ 6863 bcmFieldActionVxlanTerminate = 467, /* De-capsulate VXLAN tunnel header */ 6864 bcmFieldActionUseTunnelPayload = 468, /* To use Tunnel payload header fields 6865 for hashing */ 6866 bcmFieldActionVlanActions = 469, /* Set actions to modify VLAN tag 6867 fields. */ 6868 bcmFieldActionSRDuplicateDrop = 470, /* SR (Seamless Redundancy): drop the 6869 packet if it's an SR duplicate */ 6870 bcmFieldActionSRDuplicateDropCancel = 471, /* SR (Seamless Redundancy): Do not drop 6871 the duplicate packet (override 6872 another rule) */ 6873 bcmFieldActionSRNetIdFilter = 472, /* SR (Seamless Redundancy): NET ID 6874 filtering drop the packet if its NET 6875 ID is the same as destination ports */ 6876 bcmFieldActionSRNetIdSource = 473, /* SR: Indicates the source which NET ID 6877 comes from; param0: 6878 BCM_FIELD_SR_NET_ID_SOURCE_xxx */ 6879 bcmFieldActionFilterSrcMacPorts = 474, /* SR: Apply source port filtering based 6880 on source address */ 6881 bcmFieldActionSRCopyToCpu = 475, /* SR: Copy all packets or only 6882 non-duplicate packets to CPU with 6883 specified custom reason code; param0: 6884 BCM_FIELD_SR_COPYTOCPU_xxx; param1: 6885 custom CPU RX reason code (1~63) */ 6886 bcmFieldActionSRTagAdd = 476, /* Insert SR (Seamless Redundancy) tag 6887 in the packet; param0: SR packet type 6888 (BCM_FIELD_SR_TAG_TYPE_xxx) */ 6889 bcmFieldActionSRTagDelete = 477, /* Delete SR (Seamless Redundancy) tag 6890 (if present) in the packet; param0: 6891 SR packet type 6892 (BCM_FIELD_SR_TAG_TYPE_xxx) */ 6893 bcmFieldActionSRLanIdNew = 478, /* Specify SR(Seamless Redundancy) LAN 6894 ID; param0: 0 for LAN A, 1 for LAN B */ 6895 bcmFieldActionSRNetIdNew = 479, /* Specify SR(Seamless Redundancy) NET 6896 ID; param0: NET ID 0~7 */ 6897 bcmFieldActionSRFlowIdNew = 480, /* Specify SR(Seamless Redundancy) flow 6898 ID; param0: SR flow ID */ 6899 bcmFieldActionSRFlowPriMapIdNew = 481, /* Specify TSN priority map for 6900 SR(Seamless Redundancy) flow; param0: 6901 TSN priority map ID */ 6902 bcmFieldActionMtuSize = 482, /* Specify MTU size that the packet 6903 should be checked against. It 6904 overrides the MTU size specified from 6905 MTU profile. */ 6906 bcmFieldActionStuSize = 483, /* Specify STU (Shortest Transmission 6907 Unit) size that the packet should be 6908 checked against. It overrides the STU 6909 size specified from MTU profile. */ 6910 bcmFieldActionTsnFlowIdNew = 484, /* Specify TSN (Time-Sensitive 6911 Networking) flow ID; param0: TSN flow 6912 ID. */ 6913 bcmFieldActionTsnFlowPriMapIdNew = 485, /* Specify TSN priority map for TSN 6914 flow; param0: TSN priority map ID */ 6915 bcmFieldActionMtuProfileIdNew = 486, /* Specify the TSN MTU profile ID; 6916 param0: new MTU profile ID */ 6917 bcmFieldActionStuProfileIdNew = 487, /* Specify the TSN STU (Shortest 6918 Transmission Unit) profile ID; 6919 param0: new STU profile ID */ 6920 bcmFieldActionExternalValue6Set = 488, /* Set External lookup 6 result */ 6921 bcmFieldActionExternalValue7Set = 489, /* Set External lookup 7 result */ 6922 bcmFieldActionEsmSearchKeySrcMac = 490, /* This action sets ESM search key to 6923 perform only L2 Source Mac Address 6924 Lookup */ 6925 bcmFieldActionTrunkResilientHashEnable = 491, /* Forcefully Enable Resilient hashing 6926 for Trunk groups. */ 6927 bcmFieldActionTrunkResilientHashDisable = 492, /* Forcefully Disable Resilient hashing 6928 for Trunk groups. */ 6929 bcmFieldActionEcmpResilientHashEnable = 493, /* Forcefully Enable Resilient hashing 6930 for ECMP groups. */ 6931 bcmFieldActionEcmpResilientHashDisable = 494, /* Forcefully Disable Resilient hashing 6932 for ECMP groups. */ 6933 bcmFieldActionHiGigTrunkResilientHashEnable = 495, /* Forcefully Enable Resilient hashing 6934 for HiGig Trunk groups. */ 6935 bcmFieldActionHiGigTrunkResilientHashDisable = 496, /* Forcefully Disable Resilient hashing 6936 for HiGig Trunk groups. */ 6937 bcmFieldActionMacSecDecrypt = 497, /* This action adds MACSEC Decrypt OLP 6938 header in Egress Pipe. This action 6939 does not modify packet in Egress 6940 Pipe. */ 6941 bcmFieldActionMacSecEncrypt = 498, /* This action only adds MACSEC Encrypt 6942 OLP header in Egress Pipe. */ 6943 bcmFieldActionMacSecSubPortNumAdd = 499, /* This action assigns MACSEC Subport 6944 number to be used by MACSEC engine 6945 for Security Association lookup */ 6946 bcmFieldActionMacSecPktTypeSet = 500, /* This action assigns a MACSEC packet 6947 type to be used in MACSEC block. 6948 MACSEC packet type is defined by 6949 bcm_field_macsec_pkt_type_t. */ 6950 bcmFieldActionLatencyFlowId = 501, /* Update Latency-Flow-Id in OAM-TS 6951 HEADER; param0: New Latency-Flow-Id 6952 value. */ 6953 bcmFieldActionIntEncapEnable = 502, /* This action triggers to insert INT 6954 metadata header to the incoming valid 6955 INT packet. */ 6956 bcmFieldActionIntTurnAround = 503, /* This action triggers to turn-around 6957 the packet if it fails to detect the 6958 INT packet (one of the case if the 6959 packet reaches hop limit). */ 6960 bcmFieldActionMacSecRedirectIpmc = 504, /* This action redirects multicast 6961 MACSEC packets to MACSEC engine and 6962 also adds OLP header in Egress 6963 Pipeline. */ 6964 bcmFieldActionAddIngOuterVlanToEgrOuterVlan = 505, /* This action is to add the incoming 6965 outer VLAN tag to the outgoing packet 6966 in Egress Pipeline. */ 6967 bcmFieldActionErspan3HdrVlanCosPktCopy = 506, /* This action is to copy the incoming 6968 outer VLAN and COS in the outgoing 6969 ERSPAN3 header. */ 6970 bcmFieldActionErspan3HdrGbpSrcIdAdd = 507, /* This action is to add the GBP source 6971 ID in ERSPAN3 header. */ 6972 bcmFieldActionErspan3HdrUdf2Add = 508, /* This action is to add the User 6973 Defined Field 2 in ERSPAN3 header. */ 6974 bcmFieldActionRoeFrameTypeSet = 509, /* This action is to set or overwrite 6975 Roe frame type. Roe frame types are 6976 defined by 6977 bcm_field_roe_frame_type_t. */ 6978 bcmFieldActionFlowtrackerGroupId = 510, /* This action is to associate 6979 flowtracker group. */ 6980 bcmFieldActionStatisticPtr0 = 511, /* Statistic pointer 0 for statistic 6981 interface (stat I/F). */ 6982 bcmFieldActionStatisticPtr1 = 512, /* Statistic pointer 1 for statistic 6983 interface (stat I/F). */ 6984 bcmFieldActionTafGatePriMap = 513, /* This action specify the priority 6985 mapping of TAF (Time Aware Filtering) 6986 gate. */ 6987 bcmFieldActionIntEncapUpdate = 514, /* This action triggers to update 6988 existing INT metadata header of a 6989 incoming valid INT packet. */ 6990 bcmFieldActionMplsLookupEnable = 515, /* Enable MPLS lookup similar to the 6991 functionality managed by VLAN 6992 controls; param0:BCM_FIELD_MPLS_XXX */ 6993 bcmFieldActionTerminationAllowed = 516, /* Overrides MY_STATION_TCAM actions; 6994 param0:BCM_FIELD_XXX_TERM_ALLOWED */ 6995 bcmFieldActionMatchPbmpDrop = 517, /* Drop packets on a port or a group of 6996 ports after IFP resolution */ 6997 bcmFieldActionMatchPbmpRedirect = 518, /* Redirect packets on a port or a group 6998 of ports after IFP resolution */ 6999 bcmFieldActionIntEncapDisable = 519, /* This action triggers to disable the 7000 insertion of INT metadata header to 7001 the incoming valid INT packet. */ 7002 bcmFieldActionElephantLookupEnable = 520, /* Enable Elephant flow lookup. */ 7003 bcmFieldActionElephantLookupDisable = 521, /* Disable Elephant flow lookup. */ 7004 bcmFieldActionElephantColorEnable = 522, /* Enable color assignment for a packet 7005 identified as Elephant. */ 7006 bcmFieldActionElephantColorDisable = 523, /* Disable color assignment for a packet 7007 identified as Elephant. */ 7008 bcmFieldActionElephantQueueEnable = 524, /* Enable Queue assignment for a packet 7009 identified as Elephant. */ 7010 bcmFieldActionElephantQueueDisable = 525, /* Disable Queue assignment for a packet 7011 identified as Elephant. */ 7012 bcmFieldActionLatencyMonitorEnable = 526, /* Enable Latency Monitor for a given 7013 monitor IDs. */ 7014 bcmFieldActionLatencyMonitorDisable = 527, /* Disable Latency Monitor for a given 7015 monitor IDs. */ 7016 bcmFieldActionOamLmCounterPoolId = 528, /* This action assigns OAM LM Counter 7017 Pool ID. */ 7018 bcmFieldActionLoopbackType = 529, /* Loopback Type of type 7019 bcm_field_LoopbackType_t. */ 7020 bcmFieldActionVisibilityEnable = 530, /* This action marks a packet as 7021 Visibility Packet */ 7022 bcmFieldActionDlbEcmpMonitorEnable = 531, /* This action is to enable/disable ecmp 7023 monitor during DLB. */ 7024 bcmFieldActionMirrorZeroingEnable = 532, /* This action is to enable zeroing 7025 [payload wiping] on any mirrored 7026 packet */ 7027 bcmFieldActionNshEncapEnable = 533, /* This action triggers to NSH 7028 encapuslation in the outgoing packet. */ 7029 bcmFieldActionNshServicePathId = 534, /* Add Service Path ID to the NSH for 7030 the lookups at egress stage. */ 7031 bcmFieldActionNshServiceIndex = 535, /* Add Service Index to the NSH for the 7032 lookups at egress stage. */ 7033 bcmFieldActionL3IngressStrengthSet = 536, /* Set the strength levels for L3_IIF 7034 assignment from various sources w.r.t 7035 VFP.. */ 7036 bcmFieldActionGbpClassifierAdd = 537, /* Indicates that GBP is present for 7037 EPIPE for Multicast flows. */ 7038 bcmFieldActionGbpSrcIdNew = 538, /* Assign a new GBP source ID for 7039 matched packet. */ 7040 bcmFieldActionAssignOpaqueObject1 = 539, /* Assign a flex Opaque 1 object. */ 7041 bcmFieldActionAssignOpaqueObject2 = 540, /* Assign a flex Opaque 2 object. */ 7042 bcmFieldActionAssignOpaqueObject3 = 541, /* Assign a flex Opaque 3 object. */ 7043 bcmFieldActionAssignOpaqueObject4 = 542, /* Assign a flex Opaque 4 object. */ 7044 bcmFieldActionAssignExtractionCtrlId = 543, /* Assign a flex Extraction Control ID. */ 7045 bcmFieldActionAssignEditCtrlId = 544, /* Assign a flex Extraction Control ID. */ 7046 bcmFieldActionFlowtrackerEnable = 545, /* Enable/Disable Flowtracking for flows 7047 hitting this entry. */ 7048 bcmFieldActionFlowtrackerNewLearnEnable = 546, /* Enable/Disable new learning in 7049 flowtracker for flows hitting this 7050 entry. */ 7051 bcmFieldActionCosMapSelect = 547, /* This action applies the given COS map 7052 type (as defined in 7053 bcm_field_cos_map_select_t) */ 7054 bcmFieldActionGbpSrcMacMcastBitSet = 548, /* This action converts matched packet?s 7055 Source Mac to Multicast based on 7056 Field Control 7057 bcmFieldControlGbpSrcMacMcastBitSet */ 7058 bcmFieldActionGbpDstIdNew = 549, /* Assign a new GBP Destination ID for 7059 matched packet. */ 7060 bcmFieldActionLoopbackSubtype = 550, /* This action adds Subtype in the 7061 Loopback header. */ 7062 bcmFieldActionEgressFlowControlEnable = 551, /* This action enables Egress Flow 7063 controls */ 7064 bcmFieldActionEgressFlowEncapEnable = 552, /* This action enables Egress Flow encap 7065 of type bcm_field_egress_flow_encap_t */ 7066 bcmFieldActionSystemHeaderSizeAdjust = 553, /* Updates the System Header Size Adjust 7067 value. */ 7068 bcmFieldActionInVportClass0 = 554, /* Updates the profile of an in LIF 0 7069 encoded as Gport. */ 7070 bcmFieldActionInVportClass1 = 555, /* Updates the profile of an in LIF 1 7071 encoded as Gport. */ 7072 bcmFieldActionNetworkQos = 556, /* Set the Network QoS. */ 7073 bcmFieldActionVoid = 557, /* This action will be used when no Hw 7074 resource should be taken (SW only). */ 7075 bcmFieldActionContainer = 558, /* This action will be used as container 7076 in IPMF2, to parse the action buffer, 7077 when performing cascading between 7078 IPMF2 and IPMF3. */ 7079 bcmFieldActionParsingStartType = 559, /* Indicate the layer type that egress 7080 parser should consider. */ 7081 bcmFieldActionParsingStartOffset = 560, /* Indicate from which offset egress 7082 parser should start parsing (all info 7083 before that will not be parsed). */ 7084 bcmFieldActionEgressForwardingIndex = 561, /* Indicate for egress parser which 7085 layer is the Forwarding layer. */ 7086 bcmFieldActionUDHData0 = 562, /* User Define Header 0 data. */ 7087 bcmFieldActionUDHData1 = 563, /* User Define Header 1 data. */ 7088 bcmFieldActionUDHData2 = 564, /* User Define Header 2 data. */ 7089 bcmFieldActionUDHData3 = 565, /* User Define Header 3 data. */ 7090 bcmFieldActionUDHBase0 = 566, /* User Define Header 0 base. */ 7091 bcmFieldActionUDHBase1 = 567, /* User Define Header 1 base. */ 7092 bcmFieldActionUDHBase2 = 568, /* User Define Header 2 base. */ 7093 bcmFieldActionUDHBase3 = 569, /* User Define Header 3 base. */ 7094 bcmFieldActionUDHBase = 570, /* User define header base, used in 7095 IPMF3. */ 7096 bcmFieldActionIPTProfile = 571, /* IPT Profile action. */ 7097 bcmFieldActionIPTCommand = 572, /* IPT Profile command. */ 7098 bcmFieldActionStatId0 = 573, /* Updates statistics ID on entry hit. */ 7099 bcmFieldActionStatId1 = 574, /* Updates statistics ID on entry hit. */ 7100 bcmFieldActionStatId2 = 575, /* Updates statistics ID on entry hit. */ 7101 bcmFieldActionStatId3 = 576, /* Updates statistics ID on entry hit. */ 7102 bcmFieldActionStatId4 = 577, /* Updates statistics ID on entry hit. */ 7103 bcmFieldActionStatId5 = 578, /* Updates statistics ID on entry hit. */ 7104 bcmFieldActionStatId6 = 579, /* Updates statistics ID on entry hit. */ 7105 bcmFieldActionStatId7 = 580, /* Updates statistics ID on entry hit. */ 7106 bcmFieldActionStatId8 = 581, /* Updates statistics ID on entry hit. */ 7107 bcmFieldActionStatId9 = 582, /* Updates statistics ID on entry hit. */ 7108 bcmFieldActionStatProfile0 = 583, /* Updates statistics profile on entry 7109 hit. */ 7110 bcmFieldActionStatProfile1 = 584, /* Updates statistics profile on entry 7111 hit. */ 7112 bcmFieldActionStatProfile2 = 585, /* Updates statistics profile on entry 7113 hit. */ 7114 bcmFieldActionStatProfile3 = 586, /* Updates statistics profile on entry 7115 hit. */ 7116 bcmFieldActionStatProfile4 = 587, /* Updates statistics profile on entry 7117 hit. */ 7118 bcmFieldActionStatProfile5 = 588, /* Updates statistics profile on entry 7119 hit. */ 7120 bcmFieldActionStatProfile6 = 589, /* Updates statistics profile on entry 7121 hit. */ 7122 bcmFieldActionStatProfile7 = 590, /* Updates statistics profile on entry 7123 hit. */ 7124 bcmFieldActionStatProfile8 = 591, /* Updates statistics profile on entry 7125 hit. */ 7126 bcmFieldActionStatProfile9 = 592, /* Updates statistics profile on entry 7127 hit. */ 7128 bcmFieldActionInvalidNext = 593, /* Indicates to not execute the next 7129 action. */ 7130 bcmFieldActionIngressDoNotLearn = 594, /* Disables L2 learning in ingress. */ 7131 bcmFieldActionEgressDoNotLearn = 595, /* Disables L2 learning in egress. */ 7132 bcmFieldActionDstRpf = 596, /* Set the RPF destination. */ 7133 bcmFieldActionDstRpfValid = 597, /* Validate the RPF destination. */ 7134 bcmFieldActionVisibilityClear = 598, /* Clear visibility. */ 7135 bcmFieldActionStatMetaData = 599, /* Set statistics metaData. */ 7136 bcmFieldActionAceEntryId = 600, /* Set ace ID pointer. */ 7137 bcmFieldActionInVport0 = 601, /* Set INLIF0, value given as Gport. */ 7138 bcmFieldActionInVport1 = 602, /* Set INLIF1, value given as Gport. */ 7139 bcmFieldActionOutVport0 = 603, /* Set OUTLIF0, value given as Gport. */ 7140 bcmFieldActionOutVport1 = 604, /* Set OUTLIF1, value given as Gport. */ 7141 bcmFieldActionOutVport2 = 605, /* Set OUTLIF2, value given as Gport. */ 7142 bcmFieldActionOutVport3 = 606, /* Set OUTLIF3, value given as Gport. */ 7143 bcmFieldActionExtStat0 = 607, /* Update External Statistics ID 0. */ 7144 bcmFieldActionExtStat1 = 608, /* Update External Statistics ID 1. */ 7145 bcmFieldActionExtStat2 = 609, /* Update External Statistics ID 2. */ 7146 bcmFieldActionExtStat3 = 610, /* Update External Statistics ID 3. */ 7147 bcmFieldActionForwardingTypeMeterMap = 611, /* Maps L2 forwarding type to one of the 7148 general meters. */ 7149 bcmFieldActionStatSampling = 612, /* Updates statistical sampling value. */ 7150 bcmFieldActionStatOamLM = 613, /* Updates OAM LM counter value. */ 7151 bcmFieldActionForwardingLayerIndex = 614, /* Changes the forwarding Layer index at 7152 Egress. */ 7153 bcmFieldActionInInterface0 = 615, /* Changes the in LIF (INLIF0) encoded 7154 as interface. */ 7155 bcmFieldActionInInterface1 = 616, /* Changes the in LIF (INLIF1) encoded 7156 as interface. */ 7157 bcmFieldActionOutInterface0 = 617, /* Changes the out LIF (OUTLIF0) encoded 7158 as interface. */ 7159 bcmFieldActionOutInterface1 = 618, /* Changes the out LIF (OUTLIF1) encoded 7160 as interface. */ 7161 bcmFieldActionOutInterface2 = 619, /* Changes the out LIF (OUTLIF2) encoded 7162 as interface. */ 7163 bcmFieldActionOutInterface3 = 620, /* Changes the out LIF (OUTLIF3) encoded 7164 as interface. */ 7165 bcmFieldActionTrapStrength = 621, /* Updates the Trap Strength. */ 7166 bcmFieldActionSnoopStrength = 622, /* Updates the Snoop strength. */ 7167 bcmFieldActionOutPortTrafficManagement = 623, /* Updates the Out-TM port. */ 7168 bcmFieldActionAceContextValue = 624, /* Updates ACE context. */ 7169 bcmFieldActionBierStringOffset = 625, /* Updates Bier string offset. */ 7170 bcmFieldActionBierStringSize = 626, /* Updates Bier string size. */ 7171 bcmFieldActionPacketIsBier = 627, /* Updates is Bier packet. */ 7172 bcmFieldActionEventor = 628, /* Enable push data to eventor. */ 7173 bcmFieldActionForwardingAdditionalInfo = 629, /* Updates forwarding additional 7174 information. */ 7175 bcmFieldActionSmallExemLearn = 630, /* Updates the Small Exact Match learn 7176 info (IPMF2 only). */ 7177 bcmFieldActionLargeExemLearn = 631, /* Updates the Large Exact Match learn 7178 info (IPMF1 only). */ 7179 bcmFieldActionGroupLookupDisable = 632, /* Disables FP lookup for a given group 7180 or groups sharing same slice 7181 (Applicable to Presel only). */ 7182 bcmFieldActionOamCopyToCpu = 633, /* Copies packet to CPU along with OAM 7183 reason code be carried to CPU */ 7184 bcmFieldActionGpOamCopyToCpu = 634, /* Copies Green packet to CPU along with 7185 OAM reason code be carried to CPU */ 7186 bcmFieldActionYpOamCopyToCpu = 635, /* Copies Yellow packet to CPU along 7187 with OAM reason code be carried to 7188 CPU */ 7189 bcmFieldActionRpOamCopyToCpu = 636, /* Copies Red packet to CPU along with 7190 OAM reason code be carried to CPU */ 7191 bcmFieldActionInVport0Raw = 637, /* Change the In Lif0, with raw value. */ 7192 bcmFieldActionInVport1Raw = 638, /* Change the In Lif1, with raw value. */ 7193 bcmFieldActionOutVport0Raw = 639, /* Change the Out Lif 0, with raw value. */ 7194 bcmFieldActionOutVport1Raw = 640, /* Change the Out Lif 1, with raw value. */ 7195 bcmFieldActionOutVport2Raw = 641, /* Change the Out Lif 2, with raw value. */ 7196 bcmFieldActionOutVport3Raw = 642, /* Change the Out Lif 3, with raw value. */ 7197 bcmFieldActionAppendPointerCompensation = 643, /* Configures pointer to header append 7198 compensation value. */ 7199 bcmFieldActionAssignNatClassId = 644, /* Assigns NAT class ID to have lookup 7200 in Egress Vlan translation for NAT. */ 7201 bcmFieldActionAssignChangeL2FieldsClassId = 645, /* Assigns class ID to have a lookup in 7202 Egress Vlan translation for Change L2 7203 Fields. */ 7204 bcmFieldActionIngressTimeStampInsertValid = 646, /* Insert ingress timestamp. Overrides 7205 the time stamp in TSH header. */ 7206 bcmFieldActionMacSecDecryptPktType = 647, /* This action updates MACSEC Decrypt 7207 packet type. */ 7208 bcmFieldActionMacSecEncryptPktType = 648, /* This action updates MACSEC Encrypt 7209 packet type in Egress Pipe. */ 7210 bcmFieldActionMacSecUseSubportNumberFromEvxlt = 649, /* This action updates subport number 7211 from EVXLT in Egress Pipe for Encrypt 7212 case. */ 7213 bcmFieldActionMacSecModidBase = 650, /* This action enables the new modid 7214 base for MACSEC. */ 7215 bcmFieldActionFlowtrackerTimestampDelayMode = 651, /* This action sets timestamp delay mode 7216 for flowtracker. Delay mode is 7217 defined by 7218 bcm_field_flowtracker_timestamp_delay_mode_t. */ 7219 bcmFieldActionSnoopRaw = 652, /* Snoop matched packets, input should 7220 be raw value. At egress stage refers 7221 only to the snoop ID (strength is not 7222 relevant, and can be changed using 7223 bcmFieldActionSnoopStrength action) */ 7224 bcmFieldActionDropPrecedenceRaw = 653, /* Set Packet's Drop Precedence, input 7225 expects raw value. */ 7226 bcmFieldActionFabricHeaderSetRaw = 654, /* Change System Header Profile, input 7227 expects raw value. */ 7228 bcmFieldActionSrcGportNewRaw = 655, /* Set the Source-Port, input expects 7229 raw value. */ 7230 bcmFieldActionLatencyFlowIdRaw = 656, /* Change the latency flow-Id, input 7231 expects raw value. */ 7232 bcmFieldActionMirrorIngressRaw = 657, /* Set mirror in ingress, input expects 7233 raw value. */ 7234 bcmFieldActionOamRaw = 658, /* Changes 4 OAM signals 7235 (OAM-Stamp-Offset, OAM-offset, 7236 OAM-Sub-Type, OAM-Up-Mep), input 7237 expects raw value. */ 7238 bcmFieldActionTrapRaw = 659, /* Set Trap code, input should be raw 7239 value. At egress stage refers only to 7240 the TRAP ID (strength is not 7241 relevant, and can be changed using 7242 bcmFieldActionTrapStrength action). */ 7243 bcmFieldActionVrfSetRaw = 660, /* Set VRF. Input expects raw value. */ 7244 bcmFieldActionStatProfile0Raw = 661, /* Updates statistics profile 0. Input 7245 expects raw value. */ 7246 bcmFieldActionStatProfile1Raw = 662, /* Updates statistics profile 1. Input 7247 expects raw value. */ 7248 bcmFieldActionStatProfile2Raw = 663, /* Updates statistics profile 2. Input 7249 expects raw value. */ 7250 bcmFieldActionStatProfile3Raw = 664, /* Updates statistics profile 3. Input 7251 expects raw value. */ 7252 bcmFieldActionStatProfile4Raw = 665, /* Updates statistics profile 4. Input 7253 expects raw value. */ 7254 bcmFieldActionStatProfile5Raw = 666, /* Updates statistics profile 5. Input 7255 expects raw value. */ 7256 bcmFieldActionStatProfile6Raw = 667, /* Updates statistics profile 6. Input 7257 expects raw value. */ 7258 bcmFieldActionStatProfile7Raw = 668, /* Updates statistics profile 7. Input 7259 expects raw value. */ 7260 bcmFieldActionStatProfile8Raw = 669, /* Updates statistics profile 8. Input 7261 expects raw value. */ 7262 bcmFieldActionStatProfile9Raw = 670, /* Updates statistics profile 9. Input 7263 expects raw value. */ 7264 bcmFieldActionExtStat0Raw = 671, /* Update External Statistics ID 0. 7265 Input expects raw value. */ 7266 bcmFieldActionExtStat1Raw = 672, /* Update External Statistics ID 1. 7267 Input expects raw value. */ 7268 bcmFieldActionExtStat2Raw = 673, /* Update External Statistics ID 2. 7269 Input expects raw value. */ 7270 bcmFieldActionExtStat3Raw = 674, /* Update External Statistics ID 3. 7271 Input expects raw value. */ 7272 bcmFieldActionStatSamplingRaw = 675, /* Update statistical sampling value, 7273 input expects raw value. */ 7274 bcmFieldActionStartPacketStripRaw = 676, /* Strip the start of packet. Refers to 7275 bcm_field_start_packet_strip_t. Input 7276 expects raw value. */ 7277 bcmFieldActionParsingStartTypeRaw = 677, /* Indicate the layer type that egress 7278 parser should consider, input expects 7279 raw value. */ 7280 bcmFieldActionParsingStartOffsetRaw = 678, /* Indicate from which offset egress 7281 parser should start parsing (all info 7282 before that will not be parsed). 7283 Input expects raw value. */ 7284 bcmFieldActionIPTCommandRaw = 679, /* IPT Profile command. Input expects 7285 raw value. */ 7286 bcmFieldActionMirrorEgressRaw = 680, /* Update the egress mirror profile, 7287 input expects raw value. */ 7288 bcmFieldActionTrapStrengthRaw = 681, /* Updates the Trap Strength, input 7289 expects raw value. */ 7290 bcmFieldActionSnoopStrengthRaw = 682, /* Updates the Snoop Strength, input 7291 expects raw value. */ 7292 bcmFieldActionAceContextValueRaw = 683, /* Updates programmable value per ACE 7293 context, input expects raw value. */ 7294 bcmFieldActionStat0Raw = 684, /* Stat meter object. Input expects raw 7295 value. */ 7296 bcmFieldActionStat1Raw = 685, /* Stat counter object. Input expects 7297 raw value. */ 7298 bcmFieldActionIpMulticastCompatible = 686, /* Designates when a Compatible MC 7299 procedure found a match. */ 7300 bcmFieldActionRpfOutVport = 687, /* Updates the RPF OUT LIF. */ 7301 bcmFieldActionRpfOutInterface = 688, /* Updates the RPF OUT LIF. */ 7302 bcmFieldActionRpfOutVportRaw = 689, /* Updates the RPF OUT LIF. Input 7303 expects raw value. */ 7304 bcmFieldActionMirrorOnDropEnable = 690, /* This action enables Mirror On Drop 7305 which in turn mirrors MMU dropped 7306 packets to CosQ profile set by action 7307 bcmFieldActionMirrorOnDropProfileSet */ 7308 bcmFieldActionMirrorOnDropProfileSet = 691, /* Mirrors the MMU dropped packets to 7309 the given CosQ profile. Action 7310 bcmFieldActionMirrorOnDropProfileSet 7311 need to be added to the entry to 7312 enable this feature. */ 7313 bcmFieldActionLearnRaw0 = 692, /* Updates learn info 0. */ 7314 bcmFieldActionLearnRaw1 = 693, /* Updates learn info 1. */ 7315 bcmFieldActionLearnRaw2 = 694, /* Updates learn info 2. */ 7316 bcmFieldActionLearnRaw3 = 695, /* Updates learn info 3. */ 7317 bcmFieldActionLearnRaw4 = 696, /* Updates learn info 4. */ 7318 bcmFieldActionIngressDstTypeSelect = 697, /* To set, packet destination type. */ 7319 bcmFieldActionIngressDstVal = 698, /* To set, packet destination value. */ 7320 bcmFieldActionDlbEcmpAlternatePathEnable = 699, /* To enable Dynamic Load balancing ECMP 7321 alternate path. */ 7322 bcmFieldActionDlbEcmpMonitorDisable = 700, /* To disable Dynamic Load Balancing 7323 ECMP monitoring */ 7324 bcmFieldActionDlbTrunkAlternatePathEnable = 701, /* To enable Dynamic Load balancing LAG 7325 alternate path. */ 7326 bcmFieldActionDlbTrunkMonitorDisable = 702, /* To disable Dynamic Load Balancing LAG 7327 monitoring. */ 7328 bcmFieldActionDlbTrunkMonitorEnable = 703, /* To enable Dynamic Load Balancing LAG 7329 monitoring. */ 7330 bcmFieldActionSrcNetworkGroup = 704, /* To set Source Network group. */ 7331 bcmFieldActionDoNotModify = 705, /* To not apply Field processor changes 7332 on the packet. */ 7333 bcmFieldActionSvpNew = 706, /* To set new Source Virtual port. */ 7334 bcmFieldActionIntCongestionNotification = 707, /* To set Internal Congestion 7335 Notification value. */ 7336 bcmFieldActionColor = 708, /* To set color */ 7337 bcmFieldActionMyStationHit = 709, /* To mark the packet as My Station 7338 lookup done. */ 7339 bcmFieldActionTunnelOuterVlanNew = 710, /* Replace Tunnel Outer Vlan Id */ 7340 bcmFieldActionPktTraceIdx = 711, /* To Set Packet Trace Index */ 7341 bcmFieldActionAssignOpaqueObject0 = 712, /* Assign a flex Opaque 0 object. */ 7342 bcmFieldActionIntSampleThreshold = 713, /* IOAM threshold to compare it with 7343 generated random number to trigger 7344 metadata insert. */ 7345 bcmFieldActionDstRpfGportNewValid = 714, /* Set the RPF Destination Valid. */ 7346 bcmFieldActionDstRpfGportNewRaw = 715, /* Set the RPF Destination. Input 7347 expects raw value. */ 7348 bcmFieldActionIntResidenceTimeEnable = 716, /* Use residence time in inband 7349 telemetry. */ 7350 bcmFieldActionDgmTrunkPriPathThreshold = 717, /* DGM trunk primary path threshold 7351 value. */ 7352 bcmFieldActionDgmTrunkAltPathCost = 718, /* DGM trunk alternate path cost. */ 7353 bcmFieldActionDgmTrunkAltPathBias = 719, /* DGM trunk alternate path bias. */ 7354 bcmFieldActionDgmEcmpPriPathThreshold = 720, /* DGM ecmp primary path threshold 7355 value. */ 7356 bcmFieldActionDgmEcmpAltPathCost = 721, /* DGM ecmp alternate path cost. */ 7357 bcmFieldActionDgmEcmpAltPathBias = 722, /* DGM ecmp alternate path bias. */ 7358 bcmFieldActionInsertHiGig3Ext0 = 723, /* enforce insertion of HG3 ext0. */ 7359 bcmFieldActionPacketStatus = 724, /* Packet status. */ 7360 bcmFieldActionForwardingStatus = 725, /* Packet forwarding status. */ 7361 bcmFieldActionIntStatReq0 = 726, /* Inband telemetry stat request 0 7362 actions. */ 7363 bcmFieldActionIntStatReq1 = 727, /* Inband telemetry stat request 1 7364 actions. */ 7365 bcmFieldActionSvtagSignature = 728, /* This action adds SVTAG signature in 7366 the SVTAG header. */ 7367 bcmFieldActionSvtagOffset = 729, /* This action adds payload offset in 7368 the SVTAG header. */ 7369 bcmFieldActionSvtagPrio = 730, /* This action adds priority in the 7370 SVTAG header. */ 7371 bcmFieldActionSvtagDeviceId = 731, /* This action adds device id in the 7372 SVTAG header. */ 7373 bcmFieldActionSvtagPktType = 732, /* This action adds packet type in the 7374 SVTAG header. It can be MACSEC packet 7375 type also */ 7376 bcmFieldActionSvtagSubportNum = 733, /* This action adds channel or subport 7377 number in the SVTAG header. */ 7378 bcmFieldActionSvtagEnable = 734, /* This action enables SVTAG addition to 7379 the packet. */ 7380 bcmFieldActionFlowtrackerAggregateIngressGroupId = 735, /* This action associates Aggregate 7381 Ingress Flowtracker Group. */ 7382 bcmFieldActionFlowtrackerAggregateMmuGroupId = 736, /* This action associates Aggregate MMU 7383 Flowtracker Group. */ 7384 bcmFieldActionFlowtrackerAggregateEgressGroupId = 737, /* This action associates Aggregate 7385 Egress Flowtracker Group. */ 7386 bcmFieldActionFlowtrackerAggregateClass = 738, /* This action associates Flowtracker 7387 Aggregate Class. */ 7388 bcmFieldActionFlowtrackerAggregateIngressFlowIndex = 739, /* This action associates Aggregate 7389 Ingress Flowtracker Flow Index. */ 7390 bcmFieldActionFlowtrackerAggregateMmuFlowIndex = 740, /* This action associates Aggregate Mmu 7391 Flowtracker Flow Index. */ 7392 bcmFieldActionFlowtrackerAggregateEgressFlowIndex = 741, /* This action associates Aggregate 7393 Egress Flowtracker Flow Index. */ 7394 bcmFieldActionFlexSampleProfile = 742, /* Flex Sample Profile index. */ 7395 bcmFieldActionStatOamLMRaw = 743, /* Updates OAM LM counter with raw 7396 value. */ 7397 bcmFieldActionLearnKey0 = 744, /* Update learn info, first part of the 7398 key. */ 7399 bcmFieldActionLearnKey1 = 745, /* Update learn info, second part of the 7400 key. */ 7401 bcmFieldActionLearnKey2 = 746, /* Update learn info, third part of the 7402 key, plus ap_db_index. */ 7403 bcmFieldActionLearnKey2Raw = 747, /* Update learn info, third part of the 7404 key, plus ap_db_index. */ 7405 bcmFieldActionLearnPayload0 = 748, /* Update learn info, first part of the 7406 payload. */ 7407 bcmFieldActionLearnPayload1 = 749, /* Update learn info, second part of the 7408 payload. */ 7409 bcmFieldActionLearnEntryFormatIndex = 750, /* Update learn info, entry format 7410 index. */ 7411 bcmFieldActionLearnOrTransplant = 751, /* Update learn info, learn or 7412 transplant bit. */ 7413 bcmFieldActionEncapIfaMetadataHdr = 752, /* Encapsulation of IFA header along 7414 with Metadata header. */ 7415 bcmFieldActionStatGroupWithoutCounterIndex = 753, /* Flag in ASETs to indicate stat group 7416 usage with the group, without 7417 specifying a counter index */ 7418 bcmFieldActionPrioInputNew = 754, /* The input_priority to be used for PG 7419 mapping in MMU for accounting. User 7420 should create a profile using 7421 bcm_cosq_priority_group_mapping_profile_set 7422 API and configure the input priority 7423 for a specific type of packets. */ 7424 bcmFieldActionOuterVlanTagActions = 755, /* controls the forwarding L2 header 7425 otag. */ 7426 bcmFieldActionInnerVlanTagActions = 756, /* controls the forwarding L2 header 7427 itag. */ 7428 bcmFieldActionTunnelOuterVlanTagActions = 757, /* Controls the tunnel L2 header otag. */ 7429 bcmFieldActionEgressIFAMetadataProfileIndex = 758, /* Profile index for egr_metadata SF 7430 (used in INT or IFA delete operation) */ 7431 bcmFieldActionFlowTimestampType = 759, /* Flex Flow Timestamp select type. 7432 Timestamp select type is defined by 7433 bcm_field_flow_timestamp_type_t. */ 7434 bcmFieldActionFlowTimestampSource0 = 760, /* Flex Flow Timestamp source zero. 7435 Timestamp source is defined by 7436 bcm_field_flow_timestamp_source_t. */ 7437 bcmFieldActionFlowTimestampSource1 = 761, /* Flex Flow Timestamp source one. 7438 Timestamp source is defined by 7439 bcm_field_flow_timestamp_source_t. */ 7440 bcmFieldActionCmlFlagsNew = 762, /* CML flags for a newly learned MAC 7441 address */ 7442 bcmFieldActionCmlFlagsMove = 763, /* CML flags for a moved MAC address */ 7443 bcmFieldActionOpaqueCtrlId = 764, /* Opaque control ID */ 7444 bcmFieldActionMirrorOnDropDisable = 765, /* Disable Mirror on Drop control */ 7445 bcmFieldActionMirrorFlowClass = 766, /* Enable and set the mirror flow class 7446 value */ 7447 bcmFieldActionIntActionProfileSet = 767, /* Set the INT action profile Id */ 7448 bcmFieldActionIntTermActionProfileSet = 768, /* Set the INT tunnel termination action 7449 profile Id */ 7450 bcmFieldActionIntFlowClassSet = 769, /* Set to derive flow specific opaque 7451 metadata */ 7452 bcmFieldActionIntApplyOnSampledPkt = 770, /* Set to apply INT actions only to 7453 sampled packets */ 7454 bcmFieldActionIntLoopbackProfileSet = 771, /* Set an index to loop back profile for 7455 INT. */ 7456 bcmFieldActionL3TunnelTypeSet = 772, /* Set L3 tunnel type */ 7457 bcmFieldActionL3TunnelAuto = 773, /* Set L3 tunnel auto configure */ 7458 bcmFieldActionUseOuterHeaderDscp = 774, /* Use outer header's DSCP */ 7459 bcmFieldActionUseOuterHeaderTtl = 775, /* Use outer header's TTL */ 7460 bcmFieldActionDisableInnerHeaderDscpChange = 776, /* Disable changing inner header's DSCP */ 7461 bcmFieldActionPhbRemapTableEntryId = 777, /* Derive internal QoS parameters from 7462 the DSCP values 7463 of the incoming L3 7464 packet, using the PHB DSCP to 7465 internal 7466 proirity remap 7467 table entry */ 7468 bcmFieldActionBfdEnable = 778, /* Enable BFD */ 7469 bcmFieldActionDscpMask = 779, /* Mask some bits from the packets DSCP 7470 value */ 7471 bcmFieldActionEcnMask = 780, /* Mask some bits from the packets ECN 7472 value. */ 7473 bcmFieldActionVxlanGbpEnable = 781, /* Action to enable VXLAN GBP. */ 7474 bcmFieldActionAssignVxlanGbpId = 782, /* Assign VXLAN Group Based Policy ID. */ 7475 bcmFieldActionDstL3ClassIdNew = 783, /* Assign Destination L3 Class ID. */ 7476 bcmFieldActionVlanTagPreserve = 784, /* Preserve VLAN Tag. Use 7477 BCM_FIELD_xx_VLAN_TAG_PRESERVE macros 7478 as param0 */ 7479 bcmFieldActionGpStatGroup = 785, /* Count green colored packets */ 7480 bcmFieldActionYpStatGroup = 786, /* Count yellow colored packets */ 7481 bcmFieldActionRpStatGroup = 787, /* Count red colored packets */ 7482 bcmFieldActionGpOpaqueCtrlId = 788, /* Assign Opaque control ID for green 7483 colored packets */ 7484 bcmFieldActionYpOpaqueCtrlId = 789, /* Assign Opaque control ID for yellow 7485 colored packets */ 7486 bcmFieldActionRpOpaqueCtrlId = 790, /* Assign Opaque control ID for red 7487 colored packets */ 7488 bcmFieldActionMatchedRule = 791, /* Assign Matched rule for copy to cpu 7489 packets */ 7490 bcmFieldActionRedirectEgrNextHopUnderlay = 792, /* Redirect packet to next hop underlay; 7491 param0: ECMP or next hop info. */ 7492 bcmFieldActionAssignIfaHeaderFields = 793, /* Assign IFP header field values. */ 7493 bcmFieldActionRespondPdelayReq = 794, /* Respond to Pdelay_Req with 7494 Pdelay_Resp message */ 7495 bcmFieldActionSendPacketBack = 795, /* Send packet back to the original 7496 receiving port */ 7497 bcmFieldActionAssignRecircleHdrOpaqueObject = 796, /* EP Recirculation Opaque Object A */ 7498 bcmFieldActionRecircleHdrCode = 797, /* EP Recirculation Code */ 7499 bcmFieldActionRecircleHdrOpaqueCtrlId = 798, /* EP Recirculation Opaque Ctrl A */ 7500 bcmFieldActionOverrideTraceEvent = 799, /* Override trace event action */ 7501 bcmFieldActionPktLengthAdjustProfileIndex = 800, /* Index to packet length adjust profile */ 7502 bcmFieldActionIpTunnelProtocolNew = 801, /* Tunnel IPv4 Protocol or v6 Next 7503 Header Field. Used for IpinIp Tunnel 7504 Encap Flow */ 7505 bcmFieldActionEgressPostOperation = 802, /* Egress post profile operation. */ 7506 bcmFieldActionAssignMacSecOpaque = 803, /* Assign macsec opaque object. */ 7507 bcmFieldActionEgressMembershipCheck = 804, /* Enable egress membership check */ 7508 bcmFieldActionEgrTimestampProfileIndex = 805, /* Egress timestamp profile index. */ 7509 bcmFieldActionPolicerCancel = 806, /* Cancel policer actions. Use 7510 BCM_POLICER_CANCEL_xxx macros as 7511 param0 */ 7512 bcmFieldActionCount = 807 /* Always Last. Not a usable value. */ 7513 } bcm_field_action_t; 7514 7515 #define BCM_FIELD_ACTION_STRINGS \ 7516 { \ 7517 "CosQNew", \ 7518 "CosQCpuNew", \ 7519 "VlanCosQNew", \ 7520 "UcastCosQNew", \ 7521 "McastCosQNew", \ 7522 "PrioPktAndIntCopy", \ 7523 "PrioPktAndIntNew", \ 7524 "PrioPktAndIntTos", \ 7525 "PrioPktAndIntCancel", \ 7526 "PrioPktCopy", \ 7527 "PrioPktNew", \ 7528 "PrioPktTos", \ 7529 "PrioPktCancel", \ 7530 "PrioIntCopy", \ 7531 "PrioIntNew", \ 7532 "PrioIntTos", \ 7533 "PrioIntCancel", \ 7534 "TosNew", \ 7535 "TosCopy", \ 7536 "TosCancel", \ 7537 "DscpNew", \ 7538 "DscpCancel", \ 7539 "EcnNew", \ 7540 "CopyToCpu", \ 7541 "CopyToCpuCancel", \ 7542 "SwitchToCpuCancel", \ 7543 "SwitchToCpuReinstate", \ 7544 "TimeStampToCpu", \ 7545 "TimeStampToCpuCancel", \ 7546 "RedirectPort", \ 7547 "RedirectTrunk", \ 7548 "RedirectCancel", \ 7549 "RedirectPbmp", \ 7550 "RedirectIpmc", \ 7551 "RedirectMcast", \ 7552 "RedirectVlan", \ 7553 "RedirectBcastPbmp", \ 7554 "EgressMask", \ 7555 "EgressPortsAdd", \ 7556 "Drop", \ 7557 "DropCancel", \ 7558 "MirrorOverride", \ 7559 "MirrorIngress", \ 7560 "MirrorEgress", \ 7561 "L3ChangeVlan", \ 7562 "L3ChangeVlanCancel", \ 7563 "L3ChangeMacDa", \ 7564 "L3ChangeMacDaCancel", \ 7565 "L3Switch", \ 7566 "L3SwitchCancel", \ 7567 "AddClassTag", \ 7568 "DropPrecedence", \ 7569 "RpDrop", \ 7570 "RpDropCancel", \ 7571 "RpDropPrecedence", \ 7572 "RpCopyToCpu", \ 7573 "RpCopyToCpuCancel", \ 7574 "RpSwitchToCpuCancel", \ 7575 "RpSwitchToCpuReinstate", \ 7576 "RpTimeStampToCpu", \ 7577 "RpTimeStampToCpuCancel", \ 7578 "RpDscpNew", \ 7579 "RpDscpCancel", \ 7580 "RpEcnNew", \ 7581 "RpOuterVlanPrioNew", \ 7582 "RpInnerVlanPrioNew", \ 7583 "RpOuterVlanCfiNew", \ 7584 "RpInnerVlanCfiNew", \ 7585 "RpPrioPktCopy", \ 7586 "RpPrioPktNew", \ 7587 "RpPrioPktTos", \ 7588 "RpPrioPktCancel", \ 7589 "RpCosQNew", \ 7590 "RpVlanCosQNew", \ 7591 "RpUcastCosQNew", \ 7592 "RpMcastCosQNew", \ 7593 "RpPrioPktAndIntCopy", \ 7594 "RpPrioPktAndIntNew", \ 7595 "RpPrioPktAndIntTos", \ 7596 "RpPrioPktAndIntCancel", \ 7597 "RpPrioIntCopy", \ 7598 "RpPrioIntNew", \ 7599 "RpPrioIntTos", \ 7600 "RpPrioIntCancel", \ 7601 "YpDrop", \ 7602 "YpDropCancel", \ 7603 "YpDropPrecedence", \ 7604 "YpCopyToCpu", \ 7605 "YpCopyToCpuCancel", \ 7606 "YpSwitchToCpuCancel", \ 7607 "YpSwitchToCpuReinstate", \ 7608 "YpTimeStampToCpu", \ 7609 "YpTimeStampToCpuCancel", \ 7610 "YpDscpNew", \ 7611 "YpDscpCancel", \ 7612 "YpEcnNew", \ 7613 "YpOuterVlanPrioNew", \ 7614 "YpInnerVlanPrioNew", \ 7615 "YpOuterVlanCfiNew", \ 7616 "YpInnerVlanCfiNew", \ 7617 "YpPrioPktCopy", \ 7618 "YpPrioPktNew", \ 7619 "YpPrioPktTos", \ 7620 "YpPrioPktCancel", \ 7621 "YpCosQNew", \ 7622 "YpVlanCosQNew", \ 7623 "YpUcastCosQNew", \ 7624 "YpMcastCosQNew", \ 7625 "YpPrioPktAndIntCopy", \ 7626 "YpPrioPktAndIntNew", \ 7627 "YpPrioPktAndIntTos", \ 7628 "YpPrioPktAndIntCancel", \ 7629 "YpPrioIntCopy", \ 7630 "YpPrioIntNew", \ 7631 "YpPrioIntTos", \ 7632 "YpPrioIntCancel", \ 7633 "UpdateCounter", \ 7634 "MeterConfig", \ 7635 "ColorIndependent", \ 7636 "ClassDestSet", \ 7637 "ClassSourceSet", \ 7638 "VrfSet", \ 7639 "InnerVlanNew", \ 7640 "InnerVlanPrioNew", \ 7641 "InnerVlanDelete", \ 7642 "OuterVlanDelete", \ 7643 "OuterVlanDeleteCancel", \ 7644 "InnerVlanAdd", \ 7645 "InnerVlanCfiNew", \ 7646 "OuterVlanNew", \ 7647 "OuterVlanAdd", \ 7648 "OuterVlanAddCancel", \ 7649 "OuterVlanLookup", \ 7650 "OuterVlanPrioNew", \ 7651 "OuterVlanCfiNew", \ 7652 "OuterTpidNew", \ 7653 "GpDrop", \ 7654 "GpDropCancel", \ 7655 "GpDropPrecedence", \ 7656 "GpCopyToCpu", \ 7657 "GpCopyToCpuCancel", \ 7658 "GpSwitchToCpuCancel", \ 7659 "GpSwitchToCpuReinstate", \ 7660 "GpTimeStampToCpu", \ 7661 "GpTimeStampToCpuCancel", \ 7662 "GpDscpNew", \ 7663 "GpDscpCancel", \ 7664 "GpEcnNew", \ 7665 "GpTosPrecedenceNew", \ 7666 "GpTosPrecedenceCopy", \ 7667 "GpOuterVlanPrioNew", \ 7668 "GpInnerVlanPrioNew", \ 7669 "GpOuterVlanCfiNew", \ 7670 "GpInnerVlanCfiNew", \ 7671 "GpPrioPktCopy", \ 7672 "GpPrioPktNew", \ 7673 "GpPrioPktTos", \ 7674 "GpPrioPktCancel", \ 7675 "GpCosQNew", \ 7676 "GpVlanCosQNew", \ 7677 "GpUcastCosQNew", \ 7678 "GpMcastCosQNew", \ 7679 "GpPrioPktAndIntCopy", \ 7680 "GpPrioPktAndIntNew", \ 7681 "GpPrioPktAndIntTos", \ 7682 "GpPrioPktAndIntCancel", \ 7683 "GpPrioIntCopy", \ 7684 "GpPrioIntNew", \ 7685 "GpPrioIntTos", \ 7686 "GpPrioIntCancel", \ 7687 "DoNotChangeTtl", \ 7688 "DoNotCheckUrpf", \ 7689 "DoNotCheckVlan", \ 7690 "DoNotLearn", \ 7691 "IpFix", \ 7692 "IpFixCancel", \ 7693 "IncomingMplsPortSet", \ 7694 "Deprecated177", \ 7695 "NewClassId", \ 7696 "Deprecated179", \ 7697 "Deprecated180", \ 7698 "Deprecated181", \ 7699 "Deprecated182", \ 7700 "Deprecated183", \ 7701 "Deprecated184", \ 7702 "Deprecated185", \ 7703 "MultipathHash", \ 7704 "IpfixRate", \ 7705 "OffloadRedirect", \ 7706 "OffloadClassSet", \ 7707 "OffloadDropIndication", \ 7708 "OamUpMep", \ 7709 "OamTx", \ 7710 "OamLmepMdl", \ 7711 "OamServicePriMappingPtr", \ 7712 "OamLmBasePtr", \ 7713 "OamDmEnable", \ 7714 "OamLmEnable", \ 7715 "OamLmepEnable", \ 7716 "OamPbbteLookupEnable", \ 7717 "SrcMacNew", \ 7718 "DstMacNew", \ 7719 "VnTagNew", \ 7720 "VnTagDelete", \ 7721 "Deprecated204", \ 7722 "Deprecated205", \ 7723 "VportNew", \ 7724 "VportSpcpNew", \ 7725 "VportCpcpNew", \ 7726 "VportTcNew", \ 7727 "VportDpNew", \ 7728 "RedirectVportPort", \ 7729 "MacDaKnown", \ 7730 "Filters", \ 7731 "FabricQueue", \ 7732 "CnmCancel", \ 7733 "DynamicHgTrunkCancel", \ 7734 "EgressMirrorDisable", \ 7735 "MultipathHashAdditionalInfo", \ 7736 "Deprecated219", \ 7737 "MirrorEgressDisable", \ 7738 "OuterVlanCopyInner", \ 7739 "OuterVlanPrioCopyInner", \ 7740 "OuterVlanCfiCopyInner", \ 7741 "InnerVlanCopyOuter", \ 7742 "InnerVlanPrioCopyOuter", \ 7743 "InnerVlanCfiCopyOuter", \ 7744 "CompressSrcIp6", \ 7745 "CompressDstIp6", \ 7746 "ServicePoolIdNew", \ 7747 "UseGlobalMeterColor", \ 7748 "RedirectEgrNextHop", \ 7749 "TrunkLoadBalanceCancel", \ 7750 "EcmpLoadBalanceCancel", \ 7751 "DoNotOverride", \ 7752 "EgressClassSelect", \ 7753 "HiGigClassSelect", \ 7754 "OamDmTimeFormat", \ 7755 "OamLmDmSampleEnable", \ 7756 "OamTagStatusCheck", \ 7757 "OamTunnelControl", \ 7758 "Regex", \ 7759 "NoRegex", \ 7760 "Stat0", \ 7761 "PolicerLevel0", \ 7762 "PolicerLevel1", \ 7763 "PolicerGroup", \ 7764 "StatGroup", \ 7765 "VSQ", \ 7766 "IntPriorityAndDropPrecedence", \ 7767 "ISQ", \ 7768 "Trap", \ 7769 "UsePolicerResult", \ 7770 "Stat1", \ 7771 "StatTag", \ 7772 "Snoop", \ 7773 "TtlSet", \ 7774 "IncomingIpIfSet", \ 7775 "OrientationSet", \ 7776 "TrunkHashKeySet", \ 7777 "DstRpfGportNew", \ 7778 "DhcpPkt", \ 7779 "SrcGportNew", \ 7780 "ForwardingTypeNew", \ 7781 "StartPacketStrip", \ 7782 "SystemHeaderSet", \ 7783 "VSwitchNew", \ 7784 "LearnSrcMacNew", \ 7785 "LearnSrcPortNew", \ 7786 "LearnForwardingVlanIdNew", \ 7787 "QosMapIdNew", \ 7788 "VlanActionSetNew", \ 7789 "VlanTranslationValueSet", \ 7790 "TunnelTerminatedValueSet", \ 7791 "MplsTerminatedValueSet", \ 7792 "IpTunnelValueSet", \ 7793 "L2SrcValueSet", \ 7794 "L2DestValueSet", \ 7795 "L3SrcRouteValueSet", \ 7796 "L3DestRouteValueSet", \ 7797 "IpmcValueSet", \ 7798 "CascadedKeyValueSet", \ 7799 "IngressGportSet", \ 7800 "ExternalValue0Set", \ 7801 "ExternalValue1Set", \ 7802 "ExternalValue2Set", \ 7803 "ExternalValue3Set", \ 7804 "NatCancel", \ 7805 "Nat", \ 7806 "NatEgressOverride", \ 7807 "RegexActionCancel", \ 7808 "PortPrioIntCosQNew", \ 7809 "RpPortPrioIntCosQNew", \ 7810 "YpPortPrioIntCosQNew", \ 7811 "GpPortPrioIntCosQNew", \ 7812 "YpMirrorIngress", \ 7813 "YpRedirectPort", \ 7814 "Deprecated297", \ 7815 "FibreChanSrcBindEnable", \ 7816 "FibreChanFpmaPrefixCheckEnable", \ 7817 "FibreChanZoneCheckEnable", \ 7818 "FibreChanVsanId", \ 7819 "FibreChanZoneCheckActionCancel", \ 7820 "FibreChanIntVsanPri", \ 7821 "LearnInVPortNew", \ 7822 "OamDomain", \ 7823 "OamOlpHeaderAdd", \ 7824 "OamSessionId", \ 7825 "OuterVlanCfiCancel", \ 7826 "InnerVlanPriCancel", \ 7827 "PrioIntRemark", \ 7828 "UseDefaultWred", \ 7829 "HashValueSet", \ 7830 "L3IngressSet", \ 7831 "InterfaceClassVPort", \ 7832 "IngSampleEnable", \ 7833 "EgrSampleEnable", \ 7834 "HashSelect0", \ 7835 "HashSelect1", \ 7836 "TrunkResilientHashCancel", \ 7837 "HgTrunkResilientHashCancel", \ 7838 "EcmpResilientHashCancel", \ 7839 "UnmodifiedPacketRedirectPort", \ 7840 "EtagNew", \ 7841 "EtagDelete", \ 7842 "PfcClassNew", \ 7843 "RpIntCongestionNotificationNew", \ 7844 "YpIntCongestionNotificationNew", \ 7845 "GpIntCongestionNotificationNew", \ 7846 "RpHGCongestionClassNew", \ 7847 "YpHGCongestionClassNew", \ 7848 "GpHGCongestionClassNew", \ 7849 "RedirDropPrecedence", \ 7850 "RpRedirDropPrecedence", \ 7851 "YpRedirDropPrecedence", \ 7852 "GpRedirDropPrecedence", \ 7853 "HiGigDstModuleGportNew", \ 7854 "HiGigDstPortGportNew", \ 7855 "HiGigDstGportNew", \ 7856 "GpHiGigDropPrecedenceNew", \ 7857 "YpHiGigDropPrecedenceNew", \ 7858 "RpHiGigDropPrecedenceNew", \ 7859 "HiGigDropPrecedenceNew", \ 7860 "GpHiGigIntPriNew", \ 7861 "YpHiGigIntPriNew", \ 7862 "RpHiGigIntPriNew", \ 7863 "HiGigIntPriNew", \ 7864 "LoopbackSrcModuleGportNew", \ 7865 "LoopbackSrcPortGportNew", \ 7866 "LoopbackSrcGportNew", \ 7867 "LoopbackCpuMasqueradePktProfileNew", \ 7868 "LoopbackPacketProcessingPortNew", \ 7869 "LoopBackTypeNew", \ 7870 "RecoverableDropCancel", \ 7871 "StackingRouteNew", \ 7872 "PphPresentSet", \ 7873 "VxlanHeaderBits8_31_Set", \ 7874 "VxlanHeaderBits56_63_Set", \ 7875 "FabricHeaderSet", \ 7876 "Oam", \ 7877 "VpnSet", \ 7878 "L3DestRoutePublicValueSet", \ 7879 "L3SrcRoutePublicValueSet", \ 7880 "ClassZero", \ 7881 "ClassOne", \ 7882 "TrapReduced", \ 7883 "GroupClassSet", \ 7884 "EgressPbmpNullCopyToCpu", \ 7885 "PimBidirFwd", \ 7886 "DscpMapNew", \ 7887 "Reserved370", \ 7888 "Reserved371", \ 7889 "Reserved372", \ 7890 "Reserved373", \ 7891 "FabricEHAddOrUpdate", \ 7892 "Dot1pPreserve", \ 7893 "GpDot1pPreserve", \ 7894 "YpDot1pPreserve", \ 7895 "RpDot1pPreserve", \ 7896 "DscpPreserve", \ 7897 "GpDscpPreserve", \ 7898 "YpDscpPreserve", \ 7899 "RpDscpPreserve", \ 7900 "ChangeL2FieldsCancel", \ 7901 "BFDSessionIdNew", \ 7902 "CosMapNew", \ 7903 "GpCosMapNew", \ 7904 "YpCosMapNew", \ 7905 "RpCosMapNew", \ 7906 "VxlanHeaderFlags", \ 7907 "ChangeL2Fields", \ 7908 "ExactMatchClassId", \ 7909 "PfcTx", \ 7910 "SwitchEncap", \ 7911 "StatVportNew", \ 7912 "UcastQueueNew", \ 7913 "RpUcastQueueNew", \ 7914 "YpUcastQueueNew", \ 7915 "GpUcastQueueNew", \ 7916 "IntCosUcastQueueNew", \ 7917 "RpIntCosUcastQueueNew", \ 7918 "YpIntCosUcastQueueNew", \ 7919 "GpIntCosUcastQueueNew", \ 7920 "HgTrunkRandomRoundRobinHashCancel", \ 7921 "TrunkRandomRoundRobinHashCancel", \ 7922 "EcmpRandomRoundRobinHashCancel", \ 7923 "PacketTraceEnable", \ 7924 "Strength", \ 7925 "RedirectBufferPriority", \ 7926 "RedirectPrioIntNew", \ 7927 "RpRedirectPrioIntNew", \ 7928 "YpRedirectPrioIntNew", \ 7929 "GpRedirectPrioIntNew", \ 7930 "UntaggedPacketPriorityNew", \ 7931 "DoNotCutThrough", \ 7932 "LoopbackOamResponse", \ 7933 "LoopbackSatResponse", \ 7934 "OamStatObjectSessionId", \ 7935 "ServicePrioIntCosQNew", \ 7936 "RpServicePrioIntCosQNew", \ 7937 "YpServicePrioIntCosQNew", \ 7938 "GpServicePrioIntCosQNew", \ 7939 "ProtectionSwitchingDrop", \ 7940 "ServicePoolIdPrecedenceNew", \ 7941 "SwapMacDaSa", \ 7942 "SwapSourceIPDestIP", \ 7943 "ReplaceTtl", \ 7944 "PacketIsL3SAT", \ 7945 "ReplaceSrcMac", \ 7946 "ReplaceDstMac", \ 7947 "ReplaceInnerVlan", \ 7948 "ReplaceOuterVlan", \ 7949 "ReplaceInnerVlanPriority", \ 7950 "ReplaceOuterVlanPriority", \ 7951 "StatAndPolicer", \ 7952 "SnoopAndTrap", \ 7953 "IEEE1588", \ 7954 "ExternalValue4Set", \ 7955 "ExternalValue5Set", \ 7956 "Forward", \ 7957 "TrapCodeQualifier", \ 7958 "PphSnoopCode", \ 7959 "EgressTimeStampInsert", \ 7960 "IngressTimeStampInsert", \ 7961 "IngressTimeStampInsertCancel", \ 7962 "EgressTimeStampInsertCancel", \ 7963 "MplsLabel1ExpNew", \ 7964 "DynamicEcmpEnable", \ 7965 "DynamicTrunkEnable", \ 7966 "DynamicTrunkCancel", \ 7967 "Dgm", \ 7968 "DgmThreshold", \ 7969 "DgmBias", \ 7970 "DgmCost", \ 7971 "StaggeredValue0Set", \ 7972 "StaggeredValue1Set", \ 7973 "StaggeredValue2Set", \ 7974 "StaggeredValue3Set", \ 7975 "StaggeredDirectValueSet", \ 7976 "StaggeredPreselProfile0Set", \ 7977 "StaggeredPreselProfile1Set", \ 7978 "StaggeredPreselProfile2Set", \ 7979 "StaggeredPreselProfile3Set", \ 7980 "StaggeredPreselProfileDirectSet", \ 7981 "EnableVlanCheck", \ 7982 "AdmitProfile", \ 7983 "DynamicHgTrunkEnable", \ 7984 "VxlanTerminate", \ 7985 "UseTunnelPayload", \ 7986 "VlanActions", \ 7987 "SRDuplicateDrop", \ 7988 "SRDuplicateDropCancel", \ 7989 "SRNetIdFilter", \ 7990 "SRNetIdSource", \ 7991 "FilterSrcMacPorts", \ 7992 "SRCopyToCpu", \ 7993 "SRTagAdd", \ 7994 "SRTagDelete", \ 7995 "SRLanIdNew", \ 7996 "SRNetIdNew", \ 7997 "SRFlowIdNew", \ 7998 "SRFlowPriMapIdNew", \ 7999 "MtuSize", \ 8000 "StuSize", \ 8001 "TsnFlowIdNew", \ 8002 "TsnFlowPriMapIdNew", \ 8003 "MtuProfileIdNew", \ 8004 "StuProfileIdNew", \ 8005 "ExternalValue6Set", \ 8006 "ExternalValue7Set", \ 8007 "EsmSearchKeySrcMac", \ 8008 "TrunkResilientHashEnable", \ 8009 "TrunkResilientHashDisable", \ 8010 "EcmpResilientHashEnable", \ 8011 "EcmpResilientHashDisable", \ 8012 "HiGigTrunkResilientHashEnable", \ 8013 "HiGigTrunkResilientHashDisable", \ 8014 "MacSecDecrypt", \ 8015 "MacSecEncrypt", \ 8016 "MacSecSubPortNumAdd", \ 8017 "MacSecPktTypeSet", \ 8018 "LatencyFlowId", \ 8019 "IntEncapEnable", \ 8020 "IntTurnAround", \ 8021 "MacSecRedirectIpmc", \ 8022 "AddIngOuterVlanToEgrOuterVlan", \ 8023 "Erspan3HdrVlanCosPktCopy", \ 8024 "Erspan3HdrGbpSrcIdAdd", \ 8025 "Erspan3HdrUdf2Add", \ 8026 "RoeFrameTypeSet", \ 8027 "FlowtrackerGroupId", \ 8028 "StatisticPtr0", \ 8029 "StatisticPtr1", \ 8030 "TafGatePriMap", \ 8031 "IntEncapUpdate", \ 8032 "MplsLookupEnable", \ 8033 "TerminationAllowed", \ 8034 "MatchPbmpDrop", \ 8035 "MatchPbmpRedirect", \ 8036 "IntEncapDisable", \ 8037 "ElephantLookupEnable", \ 8038 "ElephantLookupDisable", \ 8039 "ElephantColorEnable", \ 8040 "ElephantColorDisable", \ 8041 "ElephantQueueEnable", \ 8042 "ElephantQueueDisable", \ 8043 "LatencyMonitorEnable", \ 8044 "LatencyMonitorDisable", \ 8045 "OamLmCounterPoolId", \ 8046 "LoopbackType", \ 8047 "VisibilityEnable", \ 8048 "DlbEcmpMonitorEnable", \ 8049 "MirrorZeroingEnable", \ 8050 "NshEncapEnable", \ 8051 "NshServicePathId", \ 8052 "NshServiceIndex", \ 8053 "L3IngressStrengthSet", \ 8054 "GbpClassifierAdd", \ 8055 "GbpSrcIdNew", \ 8056 "AssignOpaqueObject1", \ 8057 "AssignOpaqueObject2", \ 8058 "AssignOpaqueObject3", \ 8059 "AssignOpaqueObject4", \ 8060 "AssignExtractionCtrlId", \ 8061 "AssignEditCtrlId", \ 8062 "FlowtrackerEnable", \ 8063 "FlowtrackerNewLearnEnable", \ 8064 "CosMapSelect", \ 8065 "GbpSrcMacMcastBitSet", \ 8066 "GbpDstIdNew", \ 8067 "LoopbackSubtype", \ 8068 "EgressFlowControlEnable", \ 8069 "EgressFlowEncapEnable", \ 8070 "SystemHeaderSizeAdjust", \ 8071 "InVportClass0", \ 8072 "InVportClass1", \ 8073 "NetworkQos", \ 8074 "Void", \ 8075 "Container", \ 8076 "ParsingStartType", \ 8077 "ParsingStartOffset", \ 8078 "EgressForwardingIndex", \ 8079 "UDHData0", \ 8080 "UDHData1", \ 8081 "UDHData2", \ 8082 "UDHData3", \ 8083 "UDHBase0", \ 8084 "UDHBase1", \ 8085 "UDHBase2", \ 8086 "UDHBase3", \ 8087 "UDHBase", \ 8088 "IPTProfile", \ 8089 "IPTCommand", \ 8090 "StatId0", \ 8091 "StatId1", \ 8092 "StatId2", \ 8093 "StatId3", \ 8094 "StatId4", \ 8095 "StatId5", \ 8096 "StatId6", \ 8097 "StatId7", \ 8098 "StatId8", \ 8099 "StatId9", \ 8100 "StatProfile0", \ 8101 "StatProfile1", \ 8102 "StatProfile2", \ 8103 "StatProfile3", \ 8104 "StatProfile4", \ 8105 "StatProfile5", \ 8106 "StatProfile6", \ 8107 "StatProfile7", \ 8108 "StatProfile8", \ 8109 "StatProfile9", \ 8110 "InvalidNext", \ 8111 "IngressDoNotLearn", \ 8112 "EgressDoNotLearn", \ 8113 "DstRpf", \ 8114 "DstRpfValid", \ 8115 "VisibilityClear", \ 8116 "StatMetaData", \ 8117 "AceEntryId", \ 8118 "InVport0", \ 8119 "InVport1", \ 8120 "OutVport0", \ 8121 "OutVport1", \ 8122 "OutVport2", \ 8123 "OutVport3", \ 8124 "ExtStat0", \ 8125 "ExtStat1", \ 8126 "ExtStat2", \ 8127 "ExtStat3", \ 8128 "ForwardingTypeMeterMap", \ 8129 "StatSampling", \ 8130 "StatOamLM", \ 8131 "ForwardingLayerIndex", \ 8132 "InInterface0", \ 8133 "InInterface1", \ 8134 "OutInterface0", \ 8135 "OutInterface1", \ 8136 "OutInterface2", \ 8137 "OutInterface3", \ 8138 "TrapStrength", \ 8139 "SnoopStrength", \ 8140 "OutPortTrafficManagement", \ 8141 "AceContextValue", \ 8142 "BierStringOffset", \ 8143 "BierStringSize", \ 8144 "PacketIsBier", \ 8145 "Eventor", \ 8146 "ForwardingAdditionalInfo", \ 8147 "SmallExemLearn", \ 8148 "LargeExemLearn", \ 8149 "GroupLookupDisable", \ 8150 "OamCopyToCpu", \ 8151 "GpOamCopyToCpu", \ 8152 "YpOamCopyToCpu", \ 8153 "RpOamCopyToCpu", \ 8154 "InVport0Raw", \ 8155 "InVport1Raw", \ 8156 "OutVport0Raw", \ 8157 "OutVport1Raw", \ 8158 "OutVport2Raw", \ 8159 "OutVport3Raw", \ 8160 "AppendPointerCompensation", \ 8161 "AssignNatClassId", \ 8162 "AssignChangeL2FieldsClassId", \ 8163 "IngressTimeStampInsertValid", \ 8164 "MacSecDecryptPktType", \ 8165 "MacSecEncryptPktType", \ 8166 "MacSecUseSubportNumberFromEvxlt", \ 8167 "MacSecModidBase", \ 8168 "FlowtrackerTimestampDelayMode", \ 8169 "SnoopRaw", \ 8170 "DropPrecedenceRaw", \ 8171 "FabricHeaderSetRaw", \ 8172 "SrcGportNewRaw", \ 8173 "LatencyFlowIdRaw", \ 8174 "MirrorIngressRaw", \ 8175 "OamRaw", \ 8176 "TrapRaw", \ 8177 "VrfSetRaw", \ 8178 "StatProfile0Raw", \ 8179 "StatProfile1Raw", \ 8180 "StatProfile2Raw", \ 8181 "StatProfile3Raw", \ 8182 "StatProfile4Raw", \ 8183 "StatProfile5Raw", \ 8184 "StatProfile6Raw", \ 8185 "StatProfile7Raw", \ 8186 "StatProfile8Raw", \ 8187 "StatProfile9Raw", \ 8188 "ExtStat0Raw", \ 8189 "ExtStat1Raw", \ 8190 "ExtStat2Raw", \ 8191 "ExtStat3Raw", \ 8192 "StatSamplingRaw", \ 8193 "StartPacketStripRaw", \ 8194 "ParsingStartTypeRaw", \ 8195 "ParsingStartOffsetRaw", \ 8196 "IPTCommandRaw", \ 8197 "MirrorEgressRaw", \ 8198 "TrapStrengthRaw", \ 8199 "SnoopStrengthRaw", \ 8200 "AceContextValueRaw", \ 8201 "Stat0Raw", \ 8202 "Stat1Raw", \ 8203 "IpMulticastCompatible", \ 8204 "RpfOutVport", \ 8205 "RpfOutInterface", \ 8206 "RpfOutVportRaw", \ 8207 "MirrorOnDropEnable", \ 8208 "MirrorOnDropProfileSet", \ 8209 "LearnRaw0", \ 8210 "LearnRaw1", \ 8211 "LearnRaw2", \ 8212 "LearnRaw3", \ 8213 "LearnRaw4", \ 8214 "IngressDstTypeSelect", \ 8215 "IngressDstVal", \ 8216 "DlbEcmpAlternatePathEnable", \ 8217 "DlbEcmpMonitorDisable", \ 8218 "DlbTrunkAlternatePathEnable", \ 8219 "DlbTrunkMonitorDisable", \ 8220 "DlbTrunkMonitorEnable", \ 8221 "SrcNetworkGroup", \ 8222 "DoNotModify", \ 8223 "SvpNew", \ 8224 "IntCongestionNotification", \ 8225 "Color", \ 8226 "MyStationHit", \ 8227 "TunnelOuterVlanNew", \ 8228 "PktTraceIdx", \ 8229 "AssignOpaqueObject0", \ 8230 "IntSampleThreshold", \ 8231 "DstRpfGportNewValid", \ 8232 "DstRpfGportNewRaw", \ 8233 "IntResidenceTimeEnable", \ 8234 "DgmTrunkPriPathThreshold", \ 8235 "DgmTrunkAltPathCost", \ 8236 "DgmTrunkAltPathBias", \ 8237 "DgmEcmpPriPathThreshold", \ 8238 "DgmEcmpAltPathCost", \ 8239 "DgmEcmpAltPathBias", \ 8240 "InsertHiGig3Ext0", \ 8241 "PacketStatus", \ 8242 "ForwardingStatus", \ 8243 "IntStatReq0", \ 8244 "IntStatReq1", \ 8245 "SvtagSignature", \ 8246 "SvtagOffset", \ 8247 "SvtagPrio", \ 8248 "SvtagDeviceId", \ 8249 "SvtagPktType", \ 8250 "SvtagSubportNum", \ 8251 "SvtagEnable", \ 8252 "FlowtrackerAggregateIngressGroupId", \ 8253 "FlowtrackerAggregateMmuGroupId", \ 8254 "FlowtrackerAggregateEgressGroupId", \ 8255 "FlowtrackerAggregateClass", \ 8256 "FlowtrackerAggregateIngressFlowIndex", \ 8257 "FlowtrackerAggregateMmuFlowIndex", \ 8258 "FlowtrackerAggregateEgressFlowIndex", \ 8259 "FlexSampleProfile", \ 8260 "StatOamLMRaw", \ 8261 "LearnKey0", \ 8262 "LearnKey1", \ 8263 "LearnKey2", \ 8264 "LearnKey2Raw", \ 8265 "LearnPayload0", \ 8266 "LearnPayload1", \ 8267 "LearnEntryFormatIndex", \ 8268 "LearnOrTransplant", \ 8269 "EncapIfaMetadataHdr", \ 8270 "StatGroupWithoutCounterIndex", \ 8271 "PrioInputNew", \ 8272 "OuterVlanTagActions", \ 8273 "InnerVlanTagActions", \ 8274 "TunnelOuterVlanTagActions", \ 8275 "EgressIFAMetadataProfileIndex", \ 8276 "FlowTimestampType", \ 8277 "FlowTimestampSource0", \ 8278 "FlowTimestampSource1", \ 8279 "CmlFlagsNew", \ 8280 "CmlFlagsMove", \ 8281 "OpaqueCtrlId", \ 8282 "MirrorOnDropDisable", \ 8283 "MirrorFlowClass", \ 8284 "IntActionProfileSet", \ 8285 "IntTermActionProfileSet", \ 8286 "IntFlowClassSet", \ 8287 "IntApplyOnSampledPkt", \ 8288 "IntLoopbackProfileSet", \ 8289 "L3TunnelTypeSet", \ 8290 "L3TunnelAuto", \ 8291 "UseOuterHeaderDscp", \ 8292 "UseOuterHeaderTtl", \ 8293 "DisableInnerHeaderDscpChange", \ 8294 "PhbRemapTableEntryId", \ 8295 "BfdEnable", \ 8296 "DscpMask", \ 8297 "EcnMask", \ 8298 "VxlanGbpEnable", \ 8299 "AssignVxlanGbpId", \ 8300 "DstL3ClassIdNew", \ 8301 "VlanTagPreserve", \ 8302 "GpStatGroup", \ 8303 "YpStatGroup", \ 8304 "RpStatGroup", \ 8305 "GpOpaqueCtrlId", \ 8306 "YpOpaqueCtrlId", \ 8307 "RpOpaqueCtrlId", \ 8308 "MatchedRule", \ 8309 "RedirectEgrNextHopUnderlay", \ 8310 "AssignIfaHeaderFields", \ 8311 "RespondPdelayReq", \ 8312 "SendPacketBack", \ 8313 "AssignRecircleHdrOpaqueObject", \ 8314 "RecircleHdrCode", \ 8315 "RecircleHdrOpaqueCtrlId", \ 8316 "OverrideTraceEvent", \ 8317 "PktLengthAdjustProfileIndex", \ 8318 "IpTunnelProtocolNew", \ 8319 "EgressPostOperation", \ 8320 "AssignMacSecOpaque", \ 8321 "EgressMembershipCheck", \ 8322 "EgrTimestampProfileIndex", \ 8323 "PolicerCancel" \ 8324 } 8325 8326 /* Used as data value for qualifier bcm_field_qualify_MacSecFlow */ 8327 typedef enum bcm_field_macsec_flow_e { 8328 bcmFieldMacSecFlowNotMacSec = 0, /* Regular non MACSEC packets */ 8329 bcmFieldMacSecFlowForEncrypt = 1, /* MACSEC packets for Encryption to 8330 MACSEC port */ 8331 bcmFieldMacSecFlowForDecrypt = 2, /* MACSEC packets for Decryption to 8332 MACSEC port */ 8333 bcmFieldMacSecFlowAfterDecrypt = 3, /* MACSEC packets after Decryption from 8334 MACSEC port */ 8335 bcmFieldMacSecFlowAfterEncrypt = 4, /* MACSEC packets after Encryption from 8336 MACSEC port */ 8337 bcmFieldMacSecFlowCount = 5 /* Always last. Not to be used. */ 8338 } bcm_field_macsec_flow_t; 8339 8340 /* Used as param0 for action bcmFieldActionMacSecPktTypeSet */ 8341 typedef enum bcm_field_macsec_pkt_type_e { 8342 bcmFieldMacSecPktTypeNonMacSec = 0, /* Regular non MACSEC packets */ 8343 bcmFieldMacSecPktTypeMacSec = 1, /* MACSEC Data packet */ 8344 bcmFieldMacSecPktTypeMacSecMgmt = 2, /* Both BPDU, KaY tagged and Control 8345 packets */ 8346 bcmFieldMacSecPktTypeKaYFrames = 3, /* MACSEC packets with SecTAG.TCI.E=1 8347 and SecTAG.TCI.C=0 */ 8348 bcmFieldMacSecPktTypeCount = 4 /* Always last. Not to be used. */ 8349 } bcm_field_macsec_pkt_type_t; 8350 8351 /* Requires BROADCOM_PREMIUM license */ 8352 typedef enum bcm_field_timestamp_transmit_pkt_type_e { 8353 bcmFieldTimestampTwampOwamp = 0, 8354 bcmFieldTimestampCount = 1 8355 } bcm_field_timestamp_transmit_pkt_type_t; 8356 8357 /* Flow control packet type */ 8358 typedef enum bcm_field_egress_port_ctrl_e { 8359 bcmFieldEgressPortCtrlTypeSubportSvtagEncrypt = 0, /* Subport SVTAG encrypt port control 8360 type */ 8361 bcmFieldEgressPortCtrlTypeCount = 1 /* Always last. Not to be used. */ 8362 } bcm_field_egress_port_ctrl_t; 8363 8364 /* Flow control packet type */ 8365 typedef enum bcm_field_flow_control_pkt_type_e { 8366 bcmFieldFlowControlPktTypeDataPkt = 0, /* Data packet */ 8367 bcmFieldFlowControlPktTypePause = 1, /* Pause flow control */ 8368 bcmFieldFlowControlPktTypePfc = 2, /* PFC flow control */ 8369 bcmFieldFlowControlPktTypeE2ecc = 3, /* E2ECC flow control */ 8370 bcmFieldFlowControlPktTypeCount = 4 /* Always last. Not to be used. */ 8371 } bcm_field_flow_control_pkt_type_t; 8372 8373 /* 8374 * Roe Frame Types used for qualifier bcmFieldQualifyRoeFrameType and 8375 * action bcmFieldActionRoeFrameTypeSet. 8376 */ 8377 typedef enum bcm_field_roe_frame_type_e { 8378 bcmFieldRoeFrameTypeNone = 0, /* Frame type is neither Radio over Ethernet 8379 nor Custom Protocol. */ 8380 bcmFieldRoeFrameTypeRoe = 1, /* Frame type is Radio over Ethernet. */ 8381 bcmFieldRoeFrameTypeCustom = 2, /* Frame type is Custom Protocol. */ 8382 bcmFieldRoeFrameTypeCount = 3 /* Always last. Not to be used. */ 8383 } bcm_field_roe_frame_type_t; 8384 8385 #define BCM_FIELD_ROE_FRAME_TYPE_STRINGS \ 8386 { \ 8387 "None", \ 8388 "Roe", \ 8389 "Custom" \ 8390 } 8391 8392 /* 8393 * Used as parameter for COS MAP select APIs like 8394 * bcm_field_qualify_CosMapSelect and bcmFieldActionCosMapSelect 8395 */ 8396 typedef enum bcm_field_cos_map_select_e { 8397 bcmFieldCosMapSelectWired = 0, /* Wired */ 8398 bcmFieldCosMapSelectWireless = 1, /* Wireless */ 8399 bcmFieldCosMapSelectCount = 2 /* Always last. Not to be used. */ 8400 } bcm_field_cos_map_select_t; 8401 8402 /* 8403 * Used for action bcmFieldActionAdmitProfile to return profile number by 8404 * enum. 8405 */ 8406 typedef enum bcm_field_admit_profile_e { 8407 bcmFieldAdmitProfileEcnNonCapable = 0, /* Packet is not ECN capable. Use 8408 profile 0. */ 8409 bcmFieldAdmitProfileEcnCapable = 1 /* Packet is ECN capable. Use profile 1. */ 8410 } bcm_field_admit_profile_t; 8411 8412 /* Double Actions param1 values enum */ 8413 typedef enum bcm_field_double_action_vals_e { 8414 bcmFieldDoubleActionNone = 0, /* Run No Action */ 8415 bcmFieldDoubleActionFirst = 1, /* Run First Action */ 8416 bcmFieldDoubleActionSecond = 2, /* Run Second Action */ 8417 bcmFieldDoubleActionBoth = 3 /* Run Both Actions */ 8418 } bcm_field_double_action_vals_t; 8419 8420 #define BCM_FIELD_DOUBLE_ACTION_VALS \ 8421 { \ 8422 "None", \ 8423 "First", \ 8424 "Second", \ 8425 "Both" \ 8426 } 8427 8428 /* 8429 * BCM action and the stage on which it applies specified internal 8430 * action. See bcm_field_internal_to_bcm_action_map() 8431 */ 8432 typedef struct bcm_field_internal_to_bcm_map_s { 8433 bcm_field_action_t bcm_action; /* BCM action containing specified internal 8434 action. See 8435 bcm_field_internal_to_bcm_action_map() */ 8436 bcm_field_stage_t bcm_stage; /* BCM stage related to specified internal 8437 action. See 8438 bcm_field_internal_to_bcm_action_map() */ 8439 } bcm_field_internal_to_bcm_map_t; 8440 8441 /* Holds which action to set width for, and the size of width to set */ 8442 typedef struct bcm_field_action_width_s { 8443 uint32 action; 8444 uint32 width; 8445 uint8 valid; 8446 } bcm_field_action_width_t; 8447 8448 /* 8449 * Used to specify the actions that can be taken by the entries in a 8450 * group 8451 */ 8452 typedef struct bcm_field_aset_s { 8453 SHR_BITDCL w[_SHR_BITDCLSIZE(bcmFieldActionCount)]; 8454 bcm_field_action_width_t actions_width[16]; /* Actions width struct, used by 8455 bcm_petra_field_action_width_set to 8456 set width for certain action, 16 is 8457 max_actions_per_db */ 8458 } bcm_field_aset_t; 8459 8460 #define BCM_FIELD_ASET_INIT(aset) \ 8461 sal_memset(&(aset), 0, sizeof(bcm_field_aset_t)) 8462 8463 #define BCM_FIELD_ASET_ADD(aset, q) SHR_BITSET(((aset).w), (q)) 8464 8465 #define BCM_FIELD_ASET_ADD_WIDTH(aset, q, width_) \ 8466 do { \ 8467 int __i__ = 0; \ 8468 uint8 __new_valid__ = 1; \ 8469 SHR_BITSET(((aset).w), (q)); \ 8470 for (;(aset).actions_width[__i__].valid != 0;__i__++); \ 8471 if (__i__ < 16) { \ 8472 sal_memcpy(&((aset).actions_width[__i__].action), &(q), sizeof((q))); \ 8473 sal_memcpy(&((aset).actions_width[__i__].width), &(width_), sizeof((width_))); \ 8474 sal_memcpy(&((aset).actions_width[__i__].valid), &(__new_valid__), 1); \ 8475 } \ 8476 } while(0) 8477 8478 #define BCM_FIELD_ASET_REMOVE(aset, q) SHR_BITCLR(((aset).w), (q)) 8479 8480 #define BCM_FIELD_ASET_TEST(aset, q) SHR_BITGET(((aset).w), (q)) 8481 8482 /* 8483 * Match rule value used by OAM CCM Embedded App to indicate MEP type 8484 * through bcmFieldActionCopyToCpu Action 8485 */ 8486 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_PORT 0x1 /* Match rule values used 8487 by OAM CCM Embedded 8488 App to indicate Port 8489 MEP type */ 8490 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_INNER_VLAN 0x2 /* Match rule values used 8491 by OAM CCM Embedded 8492 App to indicate Inner 8493 vlan MEP type */ 8494 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_OUTER_VLAN 0x3 /* Match rule values used 8495 by OAM CCM Embedded 8496 App to indicate Outer 8497 vlan MEP type */ 8498 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_INNER_PLUS_OUTER_VLAN 0x4 /* Match rule values used 8499 by OAM CCM Embedded 8500 App to indicate Inner 8501 + Outer vlan MEP type */ 8502 8503 /* 8504 * Match rule value used by BFD Embedded App to indicate endpoint type 8505 * through bcmFieldActionCopyToCpu Action 8506 */ 8507 #define BCM_FIELD_BFD_MATCHED_RULE_MPLS_TUNNEL_PHP 0x1 /* Match rule value used 8508 by BFD Embedded App to 8509 indicate MPLS PHP 8510 tunnel type */ 8511 8512 #define BCM_FIELD_PRESEL_INIT(presel_set) \ 8513 sal_memset(&(presel_set), 0, sizeof(bcm_field_presel_set_t)) 8514 8515 #define BCM_FIELD_PRESEL_ADD(presel_set, presel_id) SHR_BITSET(((presel_set).w), (presel_id)) 8516 8517 #define BCM_FIELD_PRESEL_REMOVE(presel_set, presel_id) SHR_BITCLR(((presel_set).w), (presel_id)) 8518 8519 #define BCM_FIELD_PRESEL_TEST(presel_set, presel_id) SHR_BITGET(((presel_set).w), (presel_id)) 8520 8521 #define BCM_FIELD_ACTION_WIDTH_MAX 48 8522 8523 #define BCM_FIELD_ASET_WIDTH_MAX \ 8524 ((BCM_FIELD_ACTION_WIDTH_MAX+1) * \ 8525 bcmFieldActionCount + 1) 8526 8527 /* Parameter flags for bcmFieldActionFabricQueue action. */ 8528 #define BCM_FABRIC_QUEUE_CUSTOMER (1U << 29) /* Indicates the intended 8529 application for the 8530 SBX_QUEUE_TAG.0x0-Fabric 8531 Interface Chip.0x1 Traffic 8532 Manager. */ 8533 #define BCM_FABRIC_QUEUE_QOS_BASE (1U << 30) /* Offset to base queue 8534 number from the QUEUE_MAP 8535 Table. Index into 8536 QUEUE_MAP Table is 8537 DST_MODID, DST_PID. */ 8538 #define BCM_FABRIC_QUEUE_DEST_OFFSET (1U << 31) /* Index into QUEUE_MAP 8539 Table used for lookup. . */ 8540 8541 /* Unit capabilities flags. */ 8542 #define BCM_FIELD_STAT_WIDE_MODE (1 << 0) /* Unit has wide-mode slices. */ 8543 #define BCM_FIELD_STAT_SLICE_EN (1 << 1) /* Enable/disable slice lookup. */ 8544 #define BCM_FIELD_STAT_COS_QUEUE (1 << 2) /* Unit has CoS Queue change 8545 actions. */ 8546 8547 /* information related to the field class. */ 8548 typedef struct bcm_field_class_info_s { 8549 bcm_field_action_t action; /* field class action. */ 8550 bcm_class_t class_id; /* field class value. */ 8551 } bcm_field_class_info_t; 8552 8553 /* This API is deprecated and no longer supported. */ 8554 typedef struct bcm_field_status_s { 8555 int group_total; /* Total possible number of groups in unit. */ 8556 int group_free; /* Unused groups in unit. */ 8557 uint32 flags; /* Unit capabilities flags. */ 8558 } bcm_field_status_t; 8559 8560 /* Opaque handle to a field presel. */ 8561 typedef int bcm_field_presel_t; 8562 8563 /* Field name. */ 8564 typedef struct bcm_field_presel_config_s { 8565 uint8 name[BCM_FIELD_MAX_NAME_LEN]; 8566 uint32 flags; /* Presel create flags 8567 BCM_FIELD_PRESEL_CREATE_XXX. */ 8568 bcm_field_stage_t stage; /* Stage for which presel to be created. */ 8569 bcm_field_presel_t presel_id; /* Preselection ID created based on 8570 flags set. */ 8571 } bcm_field_presel_config_t; 8572 8573 /* 8574 * Value for bcmFieldControlSharedVlanFieldSet. 8575 * 8576 * When using shared VLAN feature, the shared VLAN ID can be used in 8577 * place of the packet's inner or outer vlan ID during packet 8578 * classification. 8579 */ 8580 #define BCM_FIELD_SHARED_VLAN_NONE 0 /* Do not use shared VLAN ID. */ 8581 #define BCM_FIELD_SHARED_VLAN_INNER 1 /* Use shared VLAN ID as inner 8582 VLAN ID. */ 8583 #define BCM_FIELD_SHARED_VLAN_OUTER 2 /* Use shared VLAN ID as outer 8584 VLAN ID. */ 8585 8586 /* Field control elements. */ 8587 typedef enum bcm_field_control_e { 8588 bcmFieldControlStage = 0, /* Select default Field Processor stage. */ 8589 bcmFieldControlColorIndependent = 1, /* Default for color in/dependent. */ 8590 bcmFieldControlUdfHigig0 = 2, /* UDF_ID=7, has 1st word of HiGig 8591 Packet (deprecated). */ 8592 bcmFieldControlUdfHigig1 = 3, /* UDF_ID=6, has 2nd word of HiGig 8593 Packet (deprecated). */ 8594 bcmFieldControlUdfHigig2 = 4, /* UDF_ID=5, has 3rd word of HiGig 8595 Packet (deprecated). */ 8596 bcmFieldControlSharedVlanFieldSet = 5, /* Shared VLAN ID as inner/outer VLAN. 8597 See BCM_FIELD_SHARED_VLAN_xxx. */ 8598 bcmFieldControlRedirectIngressVlanCheck = 6, /* Enable ingress vlan membership check 8599 for FP redirected traffic. */ 8600 bcmFieldControlRedirectNonUcastTrunkResolve = 7, /* Enable uniform distribution of 8601 non-unicast FP redirected traffic. */ 8602 bcmFieldControlRedirectExcludeSrcPort = 8, /* Exclude source port/trunk from FP 8603 redirection destination. */ 8604 bcmFieldControlRedirectPortFloodBlock = 9, /* Enable port flood blocking policy for 8605 FP redirected traffic. */ 8606 bcmFieldControlRedirectVlanFloodBlock = 10, /* Enable vlan flood blocking policy for 8607 FP redirected traffic. */ 8608 bcmFieldControlArpAsIp = 11, /* Treat ARP packets as Ip. */ 8609 bcmFieldControlRarpAsIp = 12, /* Treat RARP packets as Ip. */ 8610 bcmFieldControlIntraDoubleEnable = 13, /* Enable/Disable INTRA slice groups. */ 8611 bcmFieldControlExternalUdfEnable = 14, /* Enable/Disable External UDF support. */ 8612 bcmFieldControlRedirectNonUcastEtherTrunkResolve = 15, /* Enable uniform distribution of 8613 non-unicast FP redirected traffic 8614 over Ethernet Ports. */ 8615 bcmFieldControlRedirectNonUcastFabricTrunkResolve = 16, /* Enable uniform distribution of 8616 non-unicast FP redirected traffic 8617 over HiGig Ports. */ 8618 bcmFieldControlStatSyncEnable = 17, /* Field stat get api will sync up with 8619 hardware before returning the stat 8620 value. */ 8621 bcmFieldControlCascadedKeyWidth = 18, /* Default width of key cascaded between 8622 groups */ 8623 bcmFieldControlPolicerGroupSharingEnable = 19, /* Enable/Disable sharing of policer by 8624 field groups. */ 8625 bcmFieldControlRedirectNextHopExcludeSrcPort = 20, /* Enable removal of system ingress port 8626 from port-bitmap for packets that 8627 have been Redirected to a Next-hop 8628 index by the IFP. */ 8629 bcmFieldControlIngressLogicalPolicerPoolsMode = 21, /* Configure Logical Policer pool mode. 8630 It can be set only if the policers 8631 are not existing. */ 8632 bcmFieldControlEcmpHashOffset = 22, /* Configure offset for every ECMP hash 8633 key. */ 8634 bcmFieldControlEcmpHashUseCrc = 23, /* If set, then use CRC32 hash, else use 8635 XOR function. */ 8636 bcmFieldControlEcmpHashUseUpper5Bits = 24, /* If set, uses upper-most 5 bits of 8637 hash result, else uses least 8638 significant 5-bits of hash result. */ 8639 bcmFieldControlEcmpHashEnable = 25, /* If set, then enable the use of the 8640 ECMP_HASH_SEL field from the Field 8641 Processor. */ 8642 bcmFieldControlOverrideStageLookupPhb = 26, /* If set, internal priority assigned by 8643 L2/L3/DSCP lookups overrides internal 8644 priority assigned by VFP */ 8645 bcmFieldControlRedirectExcludeEtherSrcPort = 27, /* Exclude the ingress front panel port 8646 from FP redirection destination. */ 8647 bcmFieldControlRedirectExcludeHiGigSrcPort = 28, /* Exclude the ingress higig port from 8648 FP redirection destination. */ 8649 bcmFieldControlReplacementTtl = 29, /* To program the TTL value to be used 8650 by bcmFieldActionReplaceTtl */ 8651 bcmFieldControlLargeDirectLuKeyLength = 30, /* Field processor large direct lookup 8652 key length. valid values are 14,15,16 8653 or 17. */ 8654 bcmFieldControlKeyGenVar = 31, /* Value for KeyGenVar */ 8655 bcmFieldControlEgressAutoExpandWithPolicer = 32, /* Enable or disable auto expansion with 8656 policers in case of non-shared meter 8657 pool of Egress stage. */ 8658 bcmFieldControlDlbMonitorIngressRandomSeed = 33, /* Set RNG seed for DLB flow monitoring 8659 for IFP. This RNG seed overwrites the 8660 RNG seed set by the switch control 8661 bcmSwitchDlbMonitorIngressRandomSeed. 8662 This seed is used by the device for 8663 the flow which matches IFP entries 8664 with action 8665 bcmFieldActionDlbEcmpMonitorEnable. */ 8666 bcmFieldControlGbpSrcMacMcastBitSet = 34, /* This Field control converts packet?s 8667 Source mac to Multicast when IFP 8668 action 8669 bcmFieldActionGbpSrcMacMcastBitSet is 8670 applied on the matched packet. */ 8671 bcmFieldControlTrunkDlbMonitorIngressRandomSeed = 35, /* Set RNG seed for DLB flow monitoring 8672 for IFP. This RNG seed overwrites the 8673 RNG seed set by the switch 8674 bcmSwitchDlbMonitorIngressRandomSeed. 8675 This seed is used by the device for 8676 the flow which matches IFP entries 8677 with action 8678 bcmFieldActionDlbTrunkMonitorEnable. */ 8679 bcmFieldControlRedirectPortFloodEnable = 36, /* This Field control enables flooding 8680 on egress ports by disabling block 8681 mask check for ingress ports when IFP 8682 action 8683 bcmFieldActionEgressMembershipCheck 8684 is applied on the matched packet. */ 8685 bcmFieldControlRedirectVlanFloodEnable = 37, /* This Field control enables flooding 8686 on egress ports by disabling block 8687 mask check for vlan when IFP action 8688 bcmFieldActionEgressMembershipCheck 8689 is applied on the matched packet. */ 8690 bcmFieldControlRedirectSystemPortFloodEnable = 38, /* This Field control enables flooding 8691 on egress ports by disabling block 8692 mask check for system ports when IFP 8693 action 8694 bcmFieldActionEgressMembershipCheck 8695 is applied on the matched packet. */ 8696 bcmFieldControlRedirectIfpFloodEnable = 39, /* This Field control enables flooding 8697 on egress ports by disabling block 8698 mask check for IFP when IFP action 8699 bcmFieldActionEgressMembershipCheck 8700 is applied on the matched packet. */ 8701 bcmFieldControlCount = 40 /* Always last. Not a usable value. */ 8702 } bcm_field_control_t; 8703 8704 #define BCM_FIELD_CONTROL_STRINGS \ 8705 { \ 8706 "Stage", \ 8707 "ColorIndependent", \ 8708 "UdfHigig0", \ 8709 "UdfHigig1", \ 8710 "UdfHigig2", \ 8711 "SharedVlanFieldSet", \ 8712 "RedirectIngressVlanCheck", \ 8713 "RedirectNonUcastTrunkResolve", \ 8714 "RedirectExcludeSrcPort", \ 8715 "RedirectPortFloodBlock", \ 8716 "RedirectVlanFloodBlock", \ 8717 "ArpAsIp", \ 8718 "RarpAsIp", \ 8719 "IntraDoubleEnable", \ 8720 "ExternalUdfEnable", \ 8721 "RedirectNonUcastEtherTrunkResolve", \ 8722 "RedirectNonUcastFabricTrunkResolve", \ 8723 "StatSyncEnable", \ 8724 "CascadedKeyWidth", \ 8725 "PolicerGroupSharingEnable", \ 8726 "RedirectNextHopExcludeSrcPort", \ 8727 "IngressLogicalPolicerPoolsMode", \ 8728 "EcmpHashOffset", \ 8729 "EcmpHashUseCrc", \ 8730 "EcmpHashUseUpper5Bits", \ 8731 "EcmpHashEnable", \ 8732 "OverrideStageLookupPhb", \ 8733 "RedirectExcludeEtherSrcPort", \ 8734 "RedirectExcludeHiGigSrcPort", \ 8735 "ReplacementTtl", \ 8736 "LargeDirectLuKeyLength", \ 8737 "KeyGenVar", \ 8738 "EgressAutoExpandWithPolicer", \ 8739 "DlbMonitorIngressRandomSeed", \ 8740 "GbpSrcMacMcastBitSet", \ 8741 "TrunkDlbMonitorIngressRandomSeed", \ 8742 "RedirectPortFloodEnable", \ 8743 "RedirectVlanFloodEnable", \ 8744 "RedirectSystemPortFloodEnable", \ 8745 "RedirectIfpFloodEnable" \ 8746 } 8747 8748 /* Field Group Status structure. */ 8749 typedef struct bcm_field_group_status_s { 8750 int prio_min; /* Minimum priority within group. */ 8751 int prio_max; /* Maximum priority within group. */ 8752 int entries_total; /* Total possible entries in group. */ 8753 int entries_free; /* Unused entries in slice. */ 8754 int counters_total; /* Total possible counters in slice. */ 8755 int counters_free; /* Unused counters in slice. */ 8756 int meters_total; /* Total meters in slice. */ 8757 int meters_free; /* Unused meters in slice. */ 8758 int entry_count; /* Number of entries in the group. */ 8759 int counter_count; /* Number of counters attached to group entries. */ 8760 int meter_count; /* Number of meters attached to group entries. */ 8761 } bcm_field_group_status_t; 8762 8763 /* Group Modes (single, double or triple wide). */ 8764 typedef enum bcm_field_group_mode_e { 8765 bcmFieldGroupModeSingle = 0, /* Single-wide group. */ 8766 bcmFieldGroupModeDouble = 1, /* Double-wide group. */ 8767 bcmFieldGroupModeTriple = 2, /* Triple-wide group. */ 8768 bcmFieldGroupModeQuad = 3, /* Quad-wide group. */ 8769 bcmFieldGroupModeAuto = 4, /* Auto-expand group based on Qset 8770 (default). */ 8771 bcmFieldGroupModeDirect = 5, /* Direct group (no TCAM lookup). */ 8772 bcmFieldGroupModeDirectExtraction = 6, /* Direct extraction (instead of TCAM) 8773 group. */ 8774 bcmFieldGroupModeHashing = 7, /* Hash function group - no entries are 8775 expected. */ 8776 bcmFieldGroupModeExactMatch = 8, /* Exact match group - partial masking 8777 is not supported. */ 8778 bcmFieldGroupModeIntraSliceDouble = 9, /* Intraslice double wide group. */ 8779 bcmFieldGroupModeCount = 10 /* Always last. Not a usable value. */ 8780 } bcm_field_group_mode_t; 8781 8782 #define BCM_FIELD_GROUP_MODE_STRINGS \ 8783 { \ 8784 "Single", \ 8785 "Double", \ 8786 "Triple", \ 8787 "Quad", \ 8788 "Auto", \ 8789 "Direct", \ 8790 "DirectExtraction", \ 8791 "Hashing", \ 8792 "ExactMatch", \ 8793 "IntraSliceDouble" \ 8794 } 8795 8796 /* 8797 * Ingress Policer Pool Modes (8x1024default, 16x512Contiguous, 8798 * 16x512Split). 8799 */ 8800 typedef enum bcm_field_ingress_policer_pools_e { 8801 bcmFieldIngressLogicalPolicerPools8x1024, /* 8 Meter pools with 1024 entries in 8802 each pool (Default Configuration). */ 8803 bcmFieldIngressLogicalPolicerPools16x512Contiguous, /* 16 Meter pools with 512 entries in 8804 each pool in Contiguous mode. */ 8805 bcmFieldIngressLogicalPolicerPools16x512Split, /* 16 Meter pools with 512 entries in 8806 each pool in Split mode. */ 8807 bcmFieldIngressPolicerPoolsCount /* Always last. Not a usable value. */ 8808 } bcm_field_ingress_policer_pools_t; 8809 8810 #define BCM_FIELD_INGRESS_POLICER_POOL_MODE_STRINGS \ 8811 { \ 8812 "bcmFieldIngressLogicalPolicerPools8x1024", \ 8813 "bcmFieldIngressLogicalPolicerPools16x512Contiguous", \ 8814 "bcmFieldIngressLogicalPolicerPools16x512Split" \ 8815 } 8816 8817 #define bcmFieldGroupModeDefault bcmFieldGroupModeAuto 8818 8819 #define BCM_FIELD_GROUP_MODE_WIDTH_MAX 24 8820 8821 /* Parameter for bcmFieldActionEgressClassSelect */ 8822 #define BCM_FIELD_EGRESS_CLASS_SELECT_PORT 0 8823 #define BCM_FIELD_EGRESS_CLASS_SELECT_SVP 1 8824 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_IIF 2 8825 #define BCM_FIELD_EGRESS_CLASS_SELECT_FIELD_SRC 3 8826 #define BCM_FIELD_EGRESS_CLASS_SELECT_FIELD_DST 4 8827 #define BCM_FIELD_EGRESS_CLASS_SELECT_L2_SRC 5 8828 #define BCM_FIELD_EGRESS_CLASS_SELECT_L2_DST 6 8829 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_SRC 7 8830 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_DST 8 8831 #define BCM_FIELD_EGRESS_CLASS_SELECT_VLAN 9 8832 #define BCM_FIELD_EGRESS_CLASS_SELECT_VRF 10 8833 #define BCM_FIELD_EGRESS_CLASS_SELECT_NEW 11 8834 #define BCM_FIELD_EGRESS_CLASS_SELECT_EM_CLASS_ID 12 8835 #define BCM_FIELD_EGRESS_CLASS_SELECT_COMPRESSION_ID_A 13 8836 #define BCM_FIELD_EGRESS_CLASS_SELECT_COMPRESSION_ID_B 14 8837 8838 /* Parameter for bcmFieldActionL3TunnelTypeSet */ 8839 #define BCM_FIELD_L3_TUNNEL_TYPE_IP6TOIP4 0 /* IP6TOIP4 tunnel */ 8840 #define BCM_FIELD_L3_TUNNEL_TYPE_ISATAP 1 /* ISATAP tunnel */ 8841 #define BCM_FIELD_L3_TUNNEL_TYPE_IP6TOIP4SECURE 2 /* IP6TOIP4SECURE tunnel */ 8842 8843 /* Parameter for bcmFieldActionHiGigClassSelect */ 8844 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGRESS 0 8845 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_DVP 1 8846 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_L3_INTERFACE 2 8847 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_NEXT_HOP 3 8848 #define BCM_FIELD_HIGIG_CLASS_SELECT_PORT 4 8849 8850 /* parameter for bcmFieldActionOamDmTimeFormat */ 8851 #define BCM_FIELD_OAM_DM_TIME_FORMAT_IEEE1588 0 8852 #define BCM_FIELD_OAM_DM_TIME_FORMAT_NTP 1 8853 8854 /* Parameter for bcmFieldActionOamTagStatusCheck */ 8855 #define BCM_FIELD_OAM_TAG_STATUS_OUTER_MASK (1 << 0) 8856 #define BCM_FIELD_OAM_TAG_STATUS_INNER_MASK (1 << 1) 8857 #define BCM_FIELD_OAM_TAG_STATUS_INNER_L2_OUTER_MASK (1 << 2) 8858 #define BCM_FIELD_OAM_TAG_STATUS_INNER_L2_INNER_MASK (1 << 3) 8859 8860 /* Parameter for bcmFieldActionOamTunnelControl */ 8861 #define BCM_FIELD_OAM_TUNNEL_CONTROL_ANY 0 8862 #define BCM_FIELD_OAM_TUNNEL_CONTROL_NOT_TUNNELDED 1 8863 8864 /* Parameter for qualifier bcmFieldQualifyOamEgressMulticastMacHit */ 8865 #define BCM_FIELD_OAM_MUTLICAST_MAC_NO_HIT 0x1 /* Destination MAC 8866 address not in OAM 8867 Multicast MAC CLASS1 8868 or CLASS 2 Address 8869 Range */ 8870 #define BCM_FIELD_OAM_MUTLICAST_MAC_CLASS1_HIT 0x2 /* Destination MAC 8871 address in OAM 8872 Multicast MAC CLASS1 8873 Address Range 8874 01-80-C2-00-00-30 to 8875 01-80-C2-00-00-37 */ 8876 #define BCM_FIELD_OAM_MUTLICAST_MAC_CLASS2_HIT 0x3 /* Destination MAC 8877 address in OAM 8878 Multicast MAC CLASS2 8879 Address Range 8880 01-80-C2-00-00-38 to 8881 01-80-C2-00-00-3f */ 8882 8883 /* Group config create API optional flags. */ 8884 #define BCM_FIELD_GROUP_CREATE_WITH_ID (1 << 0) 8885 #define BCM_FIELD_GROUP_CREATE_WITH_PORT (1 << 1) 8886 #define BCM_FIELD_GROUP_CREATE_WITH_MODE (1 << 2) 8887 #define BCM_FIELD_GROUP_CREATE_SMALL (1 << 3) 8888 #define BCM_FIELD_GROUP_CREATE_LARGE (1 << 4) 8889 #define BCM_FIELD_GROUP_CREATE_WITH_ASET (1 << 5) 8890 #define BCM_FIELD_GROUP_CREATE_WITH_PRESELSET (1 << 6) 8891 #define BCM_FIELD_GROUP_CREATE_INSERTION_ORDER_LOOSE (1 << 7) /* If set, do not apply 8892 the rule where TCAM 8893 entries with identical 8894 priorities are ordered 8895 in the TCAM according 8896 to their insertion 8897 order */ 8898 #define BCM_FIELD_GROUP_CREATE_IS_EQUAL (1 << 8) /* If set, the is-equal 8899 result of this Field 8900 group key and the 8901 Field group 8902 'group_ref' is set in 8903 the 8904 bcmFieldQualifyIsEqualValue 8905 qualifier */ 8906 #define BCM_FIELD_GROUP_CREATE_SPARSE_ENTRY_PRIORITIES (1 << 9) /* If set, the TCAM 8907 shuffle algorithm 8908 assumes only sparse 8909 priorities assigned to 8910 the Field group 8911 entries */ 8912 #define BCM_FIELD_GROUP_CREATE_SINGLE (1 << 10) /* If set, use single 8913 resource for field 8914 group */ 8915 #define BCM_FIELD_GROUP_CREATE_IS_CASCADED (1 << 11) /* If set, the cascaded 8916 action value of this 8917 Field group is set in 8918 the 8919 bcmFieldQualifyCascadedKeyValue 8920 qualifier of the Field 8921 group 'group_ref'. */ 8922 #define BCM_FIELD_GROUP_CREATE_HANDLE_ENTRIES_BY_KEY (1 << 12) /* If set, entries in 8923 this group is handled 8924 by key and not by ID. 8925 entries with identical 8926 key cannot be added. 8927 getting and deleting 8928 entries should be 8929 according to the key'. */ 8930 #define BCM_FIELD_GROUP_CREATE_WITH_CYCLE (1 << 13) /* If set, use created 8931 cycle value for field 8932 group */ 8933 #define BCM_FIELD_GROUP_CREATE_WITH_PROGRAMS (1 << 14) /* Create field group 8934 attached with specific 8935 program(s). */ 8936 #define BCM_FIELD_GROUP_CREATE_WITH_CE_ID (1 << 15) /* Create field group 8937 with user provided ce 8938 id(s). */ 8939 #define BCM_FIELD_GROUP_CREATE_WITH_MW_SUPPORT (1 << 16) /* Create field group 8940 with multiwide 8941 support. The allocated 8942 slice for this group 8943 can spam multiwide 8944 modes. */ 8945 #define BCM_FIELD_GROUP_CREATE_WITH_PRESEL_GROUP (1 << 17) /* Create field group 8946 with preselector 8947 group. */ 8948 #define BCM_FIELD_GROUP_CREATE_WITH_COMPRESSION (1 << 18) /* Create field group 8949 with compression 8950 support. This triggers 8951 to compress the 8952 srcIp(6) and dstIp(6) 8953 qualifiers available 8954 in the group's QSET */ 8955 #define BCM_FIELD_GROUP_ENT_LVL_ACTION_RESOLVE (1 << 19) /* Flag to enable action 8956 resolution on per 8957 entry level. */ 8958 #define BCM_FIELD_GROUP_CREATE_WITH_SRC_IP_COMPRESSION (1 << 20) /* Enable compression 8959 support. This triggers 8960 to compress the source 8961 IP4 related qualifiers */ 8962 #define BCM_FIELD_GROUP_CREATE_WITH_SRC_IP6_COMPRESSION (1 << 21) /* Enable compression 8963 support. This triggers 8964 to compress the source 8965 IP6 related qualifiers */ 8966 #define BCM_FIELD_GROUP_CREATE_WITH_DST_IP_COMPRESSION (1 << 22) /* Enable compression 8967 support. This triggers 8968 to compress the 8969 destination IP4 8970 related qualifiers */ 8971 #define BCM_FIELD_GROUP_CREATE_WITH_DST_IP6_COMPRESSION (1 << 23) /* Enable compression 8972 support. This triggers 8973 to compress the 8974 destination IP6 8975 related qualifiers */ 8976 8977 #define BCM_FIELD_PRESEL_SEL_MAX 1024 /* Maximum Preselection entries 8978 supported. */ 8979 8980 /* Presel config create API optional flags. */ 8981 #define BCM_FIELD_PRESEL_CREATE_WITH_ID (1 << 0) /* If set, preselection ID 8982 passed by the user will be 8983 used. */ 8984 8985 /* Bitmap of all possible preselection specification IDs. */ 8986 typedef struct bcm_field_presel_set_s { 8987 SHR_BITDCL w[_SHR_BITDCLSIZE(BCM_FIELD_PRESEL_SEL_MAX)]; 8988 } bcm_field_presel_set_t; 8989 8990 #define BCM_FIELD_PRESEL_ENTRY_SET(_eid_, _presel_id_) (_eid_ = _presel_id_ | BCM_FIELD_QUALIFY_PRESEL) /* Build Preselector Entry ID for 8991 the given preselector ID. */ 8992 8993 /* Identifier for bcm_field_hint_t structure */ 8994 typedef uint32 bcm_field_hintid_t; 8995 8996 /* Default Action resolution ID for groups. */ 8997 #define BCM_FIELD_GROUP_ACTION_RES_ID_DEFAULT -1 /* Group default action 8998 resolution id value */ 8999 9000 /* Group Cycle value. */ 9001 typedef enum bcm_field_group_cycle_e { 9002 bcmFieldGroupCycle0 = 0, /* Create Field Group in Cycle 0. */ 9003 bcmFieldGroupCycle1 = 1, /* Create Field Group in Cycle 1. */ 9004 bcmFieldGroupCycleCount = 2 /* Always last. Not a usable value. */ 9005 } bcm_field_group_cycle_t; 9006 9007 #define BCM_FIELD_GROUP_CYCLE_STRINGS \ 9008 { \ 9009 "Cycle0", \ 9010 "Cycle1" \ 9011 } 9012 9013 /* PMF Program ID. */ 9014 typedef uint32 bcm_field_context_t; 9015 9016 /* Maximum number of presels per FG. */ 9017 #define BCM_FIELD_NOF_PRESEL_PER_FG 32 /* Maximum number of presels per 9018 fg */ 9019 9020 /* Maximum number of qualifiers per FG . */ 9021 #define BCM_FIELD_NOF_QUALS_PER_FG 32 /* Maximum number of quals per fg */ 9022 9023 /* Maximum number of ce id per qualifier . */ 9024 #define BCM_FIELD_NOF_CE_ID_PER_QUAL 8 /* Maximum number of ce ids 9025 per qualifier */ 9026 9027 /* Description of a qualifier ce information. */ 9028 typedef struct bcm_field_qual_ce_info_s { 9029 bcm_field_qualify_t qual; /* Qualifier for which the ce info is 9030 provided */ 9031 int nof_ce_ids; /* Number of ce ids for the given 9032 qualifeir */ 9033 int ce_id[BCM_FIELD_NOF_CE_ID_PER_QUAL]; /* ce ids for the given qualifier */ 9034 int key_index[BCM_FIELD_NOF_CE_ID_PER_QUAL]; /* key_index for the given ce ids. In 9035 case the key is double key and the 9036 ce_id is located in the second key - 9037 this index should be set to 1 */ 9038 } bcm_field_qual_ce_info_t; 9039 9040 /* Field destination action flags. */ 9041 #define BCM_FIELD_DESTINATION_ACTION_REDIRECT 1 /* Indicate a new 9042 destination. */ 9043 #define BCM_FIELD_DESTINATION_ACTION_COLOR 2 /* Indicate a new color. */ 9044 #define BCM_FIELD_DESTINATION_ACTION_MIRROR 4 /* Indicate a mirror 9045 destination. */ 9046 #define BCM_FIELD_DESTINATION_ACTION_COS 8 /* Indicate new COSs. */ 9047 9048 /* Field destination entry options. */ 9049 #define BCM_FIELD_DESTINATION_OPTIONS_REPLACE 1 /* Field destination 9050 entry replace. */ 9051 9052 /* Field destination match. */ 9053 typedef struct bcm_field_destination_match_s { 9054 int priority; /* Match priority. */ 9055 bcm_gport_t gport; /* Outgoing mod port or trunk. */ 9056 uint32 gport_mask; /* Outgoing mod port or trunk mask. */ 9057 bcm_multicast_t mc_group; /* Multicast group. */ 9058 uint32 mc_group_mask; /* Multicast group mask. */ 9059 bcm_port_encap_t port_encap; /* Incoming port encapsulation. */ 9060 uint8 port_encap_mask; /* Incoming port encapsulation mask. */ 9061 bcm_color_t color; /* Color. */ 9062 uint8 color_mask; /* Color mask. */ 9063 bcm_color_t elephant_color; /* Elephant color. */ 9064 uint8 elephant_color_mask; /* Elephant color mask. */ 9065 uint8 elephant; /* Flowtracker elephant flow indicator. */ 9066 uint8 elephant_mask; /* Elephant mask. */ 9067 uint8 elephant_notify; /* Indicator that flow exceeds the elephant 9068 threshold byte count and becomes an 9069 elephant flow. */ 9070 uint8 elephant_notify_mask; /* elephant_notify mask. */ 9071 int int_pri; /* Internal priority. */ 9072 uint32 int_pri_mask; /* Internal priority mask. */ 9073 int opaque_object_2; /* Opaque object 2 assigned in ingress 9074 field. */ 9075 uint32 opaque_object_2_mask; /* Opaque object 2 mask. */ 9076 uint32 ifp_opaque_ctrl_id; /* IFP opaque control ID. */ 9077 uint32 ifp_opaque_ctrl_id_mask; /* IFP opaque control ID mask. */ 9078 } bcm_field_destination_match_t; 9079 9080 /* Field destination action. */ 9081 typedef struct bcm_field_destination_action_s { 9082 uint32 flags; /* BCM_FIELD_DESTINATION_ACTION_xxx 9083 flags. */ 9084 uint8 drop; /* Drop the packet. */ 9085 uint8 copy_to_cpu; /* Copy the packet to the CPU. */ 9086 bcm_color_t color; /* Internal color. */ 9087 bcm_field_redirect_destination_type_t destination_type; /* Destination type. */ 9088 bcm_gport_t gport; /* Redirection logical port. */ 9089 bcm_multicast_t mc_group; /* Multicast group. */ 9090 bcm_gport_t mirror_dest_id; /* Mirror destination ID. */ 9091 bcm_cos_queue_t uc_cos; /* Unicast cos queue. */ 9092 bcm_cos_queue_t mc_cos; /* Multicast cos queue. */ 9093 bcm_cos_queue_t rqe_cos; /* RQE cos queue. */ 9094 bcm_cos_queue_t cpu_cos; /* CPU cos queue. */ 9095 } bcm_field_destination_action_t; 9096 9097 #ifndef BCM_HIDE_DISPATCHABLE 9098 9099 /* Create a preselection specification */ 9100 extern int bcm_field_presel_create( 9101 int unit, 9102 bcm_field_presel_t *presel_id); 9103 9104 /* Create a preselection specification using a specific ID */ 9105 extern int bcm_field_presel_create_id( 9106 int unit, 9107 bcm_field_presel_t presel_id); 9108 9109 #endif /* BCM_HIDE_DISPATCHABLE */ 9110 9111 /* Description of a group hw information. */ 9112 typedef struct bcm_field_group_presel_info_s { 9113 bcm_field_presel_t presel_id; /* Presel Id for the given group hw info */ 9114 int nof_qual_info; /* Number of qualifiers in the hw info */ 9115 bcm_field_qual_ce_info_t qual_info[BCM_FIELD_NOF_QUALS_PER_FG]; /* Hw info for the given qualifier */ 9116 } bcm_field_group_presel_info_t; 9117 9118 /* Initialize Field Group Hw Info structure. */ 9119 extern void bcm_field_group_presel_info_init( 9120 int nof_presel_info, 9121 bcm_field_group_presel_info_t *presel_info); 9122 9123 /* Opaque handle to a field presel group ID. */ 9124 typedef int bcm_field_presel_group_t; 9125 9126 /* 9127 * Field group mode types. 9128 * 9129 * Possible values for mode_type in bcm_field_group_config_t 9130 */ 9131 typedef enum bcm_field_group_mode_type_e { 9132 bcmFieldGroupModeTypeAuto = 0, /* Default. */ 9133 bcmFieldGroupModeTypeL2Single = 1, /* L2 Single. */ 9134 bcmFieldGroupModeTypeL3Single = 2, /* L3 Single. */ 9135 bcmFieldGroupModeTypeL3SingleAny = 3, /* L3 Single Any. */ 9136 bcmFieldGroupModeTypeL3Double = 4, /* L3 Double. */ 9137 bcmFieldGroupModeTypeL3DoubleAny = 5, /* L3 Double Any. */ 9138 bcmFieldGroupModeTypeL3DoubleAlternate = 6, /* L3 Double Alternate. */ 9139 bcmFieldGroupModeTypeCount = 7 /* Always Last. Not a usable value. */ 9140 } bcm_field_group_mode_type_t; 9141 9142 #define BCM_FIELD_GROUP_MODE_TYPE_STRINGS \ 9143 { \ 9144 "Auto", \ 9145 "L2Single", \ 9146 "L3Single", \ 9147 "L3SingleAny", \ 9148 "L3Double", \ 9149 "L3DoubleAny", \ 9150 "L3DoubleAlternate" \ 9151 } 9152 9153 /* 9154 * Field group packet types. 9155 * 9156 * Possible values for packet_type in bcm_field_group_config_t 9157 */ 9158 typedef enum bcm_field_group_packet_type_e { 9159 bcmFieldGroupPacketTypeDefault = 0, /* Default. */ 9160 bcmFieldGroupPacketTypeIp = 1, /* PORT_ANY_PACKET_IP. */ 9161 bcmFieldGroupPacketTypeNonIp = 2, /* PORT_ANY_PACKET_NONIP. */ 9162 bcmFieldGroupPacketTypeIp4 = 3, /* PORT_ANY_PACKET_IPV4. */ 9163 bcmFieldGroupPacketTypeIp6 = 4, /* PORT_ANY_PACKET_IPV46. */ 9164 bcmFieldGroupPacketTypeHigig = 5, /* PORT_HIGIG_PACKET_ANY. */ 9165 bcmFieldGroupPacketTypeFrontPanel = 6, /* PORT_FRONT_PACKET_ANY. */ 9166 bcmFieldGroupPacketTypeCount = 7 /* Always Last. Not a usable value. */ 9167 } bcm_field_group_packet_type_t; 9168 9169 #define BCM_FIELD_GROUP_PACKET_TYPE_STRINGS \ 9170 { \ 9171 "Default", \ 9172 "Ip", \ 9173 "NonIp", \ 9174 "Ip4", \ 9175 "Ip6", \ 9176 "Higig", \ 9177 "FrontPanel" \ 9178 } 9179 9180 /* 9181 * Group configuration structure. Used to create a field group with 9182 * specific attributes. 9183 */ 9184 typedef struct bcm_field_group_config_s { 9185 uint32 flags; /* Group create flags 9186 BCM_FIELD_GROUP_CREATE_XXX. */ 9187 bcm_field_qset_t qset; /* Group qualifier set. */ 9188 int priority; /* Group priority. */ 9189 bcm_field_group_mode_t mode; /* Group mode. */ 9190 bcm_pbmp_t ports; /* Group member ports. */ 9191 bcm_field_group_t group; /* Group. */ 9192 bcm_field_aset_t aset; /* Group action set */ 9193 bcm_field_presel_set_t preselset; /* Group preselector set */ 9194 bcm_field_presel_set_t group_ref; /* Reference Field group for operation 9195 set by the Flag. */ 9196 int max_entry_priorities; /* Number of entries priorities in the 9197 group. 0 means unlimited. */ 9198 bcm_field_hintid_t hintid; /* Hints for Group Creation. */ 9199 int action_res_id; /* Action resolution id for Group. */ 9200 uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Group. */ 9201 bcm_field_group_cycle_t cycle; /* Create Field Group Cycle. */ 9202 uint32 pgm_bmp; /* Bitmap of program-ids which the 9203 current field group will be pointing 9204 to. */ 9205 uint32 share_id; /* Group share ID. Groups created with 9206 same share ID may share TCAM banks. */ 9207 bcm_field_presel_group_t presel_group; /* Presel Group ID. */ 9208 bcm_field_group_mode_type_t mode_type; /* Field group mode type. */ 9209 bcm_field_group_packet_type_t packet_type; /* Field group packet type. */ 9210 } bcm_field_group_config_t; 9211 9212 /* 9213 * Field entry configuration structure. Used to create a field entry with 9214 * specific attributes. 9215 */ 9216 typedef struct bcm_field_entry_config_s { 9217 uint32 flags; /* Field entry create flags 9218 BCM_FIELD_ENTRY_CREATE_XXX. */ 9219 bcm_field_entry_t entry_id; /* Field entry. */ 9220 bcm_field_group_t group_id; /* Group Id. */ 9221 bcm_field_aset_t aset; /* Default entry Action Set (currently 9222 applicable only for default entries). */ 9223 int priority; /* Entry priority. */ 9224 uint32 status_flags; /* read only flag to retrieve field entry 9225 status flags like 9226 BCM_FIELD_ENTRY_STATUS_xxx. */ 9227 uint32 flex_counter_action_id; /* Read only field for flex counter action 9228 identifier. */ 9229 uint32 counter_id; /* Read only field for flex counter index 9230 for non colored counters. */ 9231 uint32 gp_counter_id; /* Read only field for flex counter index 9232 for green colored counters. */ 9233 uint32 yp_counter_id; /* Read only field for flex counter index 9234 for yellow colored counters. */ 9235 uint32 rp_counter_id; /* Read only field for flex counter index 9236 for red colored counters. */ 9237 } bcm_field_entry_config_t; 9238 9239 /* Used to create a field group with specific attributes. */ 9240 typedef struct bcm_field_group_config_extension_s { 9241 uint32 flags; /* Group create flags 9242 BCM_FIELD_GROUP_CREATE_XXX. */ 9243 bcm_field_qset_t qset; /* Group qualifier set. */ 9244 int priority; /* Group priority. */ 9245 bcm_field_group_mode_t mode; /* Group mode. */ 9246 bcm_pbmp_t ports; /* Group member ports. */ 9247 bcm_field_group_t group; /* Group. */ 9248 bcm_field_aset_t aset; /* Group action set */ 9249 bcm_field_presel_set_t preselset; /* Group preselector set */ 9250 bcm_field_presel_set_t group_ref; /* Reference Field group for operation 9251 set by the Flag. */ 9252 int max_entry_priorities; /* Number of entries priorities in the 9253 group. 0 means unlimited. */ 9254 bcm_field_hintid_t hintid; /* Hints for Group Creation. */ 9255 int action_res_id; /* Action resolution id for Group. */ 9256 uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Group. */ 9257 bcm_field_group_cycle_t cycle; /* Create Field Group Cycle. */ 9258 uint32 pgm_bmp; /* Bitmap of program-ids which the 9259 current field group will be pointing 9260 to. */ 9261 uint32 share_id; /* Group share ID. Groups created with 9262 same share ID may share TCAM banks. */ 9263 uint32 nof_presel_info; /* Number of presel_info elements. */ 9264 bcm_field_group_presel_info_t *presel_info; /* Per preselector data. */ 9265 } bcm_field_group_config_extension_t; 9266 9267 /* Description of a single extraction point. */ 9268 typedef struct bcm_field_extraction_field_s { 9269 uint32 flags; /* Flags for this extraction point */ 9270 bcm_field_qualify_t qualifier; /* BCM field qualifier ID (or 9271 bcmFieldQualifyCount is using constant 9272 value) */ 9273 int lsb; /* Least significant bit to be extracted 9274 from qualifier */ 9275 int bits; /* Number of bits to use, valid for both 9276 qualifier extraction and constant */ 9277 int value; /* Constant value (if qualifier is 9278 bcmFieldQualifyCount) */ 9279 } bcm_field_extraction_field_t; 9280 9281 /* 9282 * A single action, composed of possibly several extraction fields, for 9283 * an entry in a direct extraction group. 9284 */ 9285 typedef struct bcm_field_extraction_action_s { 9286 bcm_field_action_t action; /* BCM field action ID of the action to be built 9287 by extraction */ 9288 int bias; /* Bias value added to the final extracted value 9289 before using it as an argument to the action */ 9290 } bcm_field_extraction_action_t; 9291 9292 /* core specific paramters for a field group entry */ 9293 typedef struct bcm_field_action_core_config_s { 9294 uint32 flags; /* flags for core specific action */ 9295 int param0; /* action core-specific paramter No.0 */ 9296 int param1; /* action core-specific paramter No.1 */ 9297 int param2; /* action core-specific paramter No.2 */ 9298 int param3; /* action core-specific paramter No.3 */ 9299 } bcm_field_action_core_config_t; 9300 9301 /* core specific paramters for a field group entry */ 9302 typedef struct bcm_field_flowtrackercheck_s { 9303 bcm_flowtracker_check_t flow_check_id; /* Flowtracker check ID */ 9304 uint32 value; /* Value for flowtracker check ID */ 9305 } bcm_field_flowtrackercheck_t; 9306 9307 #define BCM_ILLEGAL_ACTION_PARAMETER (-1) /* Indicates meaningless 9308 paramX on 9309 bcm_field_action_core_config_t */ 9310 9311 /* Field Qualifier Arp Opcode (for bcm_field_qualify_ArpOpcode). */ 9312 typedef enum bcm_field_ArpOpcode_e { 9313 bcmFieldArpOpcodeRequest = 0, /* Request opcode. */ 9314 bcmFieldArpOpcodeReply = 1, /* Reply opcode. */ 9315 bcmFieldArpOpcodeCount = 2 /* Always last; not a usable value. */ 9316 } bcm_field_ArpOpcode_t; 9317 9318 #define BCM_FIELD_FARPOPCODE_STRINGS \ 9319 { \ 9320 "Request", \ 9321 "Reply" \ 9322 } 9323 9324 /* 9325 * Bitmap for the various options on 'flags' on 9326 * bcm_field_action_width_set() or bcm_field_action_width_get() 9327 */ 9328 typedef enum bcm_field_action_width_flags_e { 9329 bcm_default_action_width = 0 /* When this bit is set then ignore 'width' 9330 and set action runtime width to its 9331 default value. */ 9332 } bcm_field_action_width_flags_t; 9333 9334 #ifndef BCM_HIDE_DISPATCHABLE 9335 9336 /* Initialize field software subsystem */ 9337 extern int bcm_field_init( 9338 int unit); 9339 9340 /* De-initialize field software subsystem */ 9341 extern int bcm_field_detach( 9342 int unit); 9343 9344 /* Set or get a field control value. */ 9345 extern int bcm_field_control_get( 9346 int unit, 9347 bcm_field_control_t control, 9348 uint32 *state); 9349 9350 /* Set or get a field control value. */ 9351 extern int bcm_field_control_set( 9352 int unit, 9353 bcm_field_control_t control, 9354 uint32 state); 9355 9356 /* The API returns the number of slices in the given stage. */ 9357 extern int bcm_field_stage_slice_count_get( 9358 int unit, 9359 bcm_field_stage_t stage_id, 9360 int *slice_count); 9361 9362 /* 9363 * The API returns the details of the stage and entries count of the 9364 * given slice for the given port bitmap. If the field stage is operating 9365 * in global mode, the 'pbmp' input variable to the function will be 9366 * ignored and returns the slice information for the global instance and 9367 * if the stage is operating in pipe local mode, the function expects the 9368 * valid PBMP input for the respective pipe instance and it returns slice 9369 * information for the pipe instance. 9370 */ 9371 extern int bcm_field_stage_slice_info_get( 9372 int unit, 9373 bcm_field_stage_t stage_id, 9374 bcm_pbmp_t pbmp, 9375 int slice_no, 9376 bcm_field_stage_slice_info_t *slice_info); 9377 9378 /* List the qualifiers supported for a given stage */ 9379 extern int bcm_field_stage_qset_get( 9380 int unit, 9381 bcm_field_stage_t stage, 9382 uint8 presel, 9383 bcm_field_qset_t *qset); 9384 9385 /* Get per-stage field information */ 9386 extern int bcm_field_stage_info_get( 9387 int unit, 9388 bcm_field_stage_t stage, 9389 bcm_field_stage_info_t *info); 9390 9391 #endif /* BCM_HIDE_DISPATCHABLE */ 9392 9393 /* Initialize UDF specification structure. */ 9394 extern void bcm_field_udf_spec_t_init( 9395 bcm_field_udf_spec_t *udf_spec); 9396 9397 #ifndef BCM_HIDE_DISPATCHABLE 9398 9399 /* Create a field group */ 9400 extern int bcm_field_group_create( 9401 int unit, 9402 bcm_field_qset_t qset, 9403 int pri, 9404 bcm_field_group_t *group); 9405 9406 /* Create a field group */ 9407 extern int bcm_field_group_create_id( 9408 int unit, 9409 bcm_field_qset_t qset, 9410 int pri, 9411 bcm_field_group_t group); 9412 9413 /* Enable or Disable auto expansion of entries for a group. */ 9414 extern int bcm_field_group_expansion_enable_set( 9415 int unit, 9416 bcm_field_group_t group, 9417 int enable); 9418 9419 /* Get auto expansion status of a group */ 9420 extern int bcm_field_group_expansion_enable_get( 9421 int unit, 9422 bcm_field_group_t group, 9423 int *enable); 9424 9425 /* Create a field group */ 9426 extern int bcm_field_group_create_mode( 9427 int unit, 9428 bcm_field_qset_t qset, 9429 int pri, 9430 bcm_field_group_mode_t mode, 9431 bcm_field_group_t *group); 9432 9433 /* Create a field group */ 9434 extern int bcm_field_group_create_mode_id( 9435 int unit, 9436 bcm_field_qset_t qset, 9437 int pri, 9438 bcm_field_group_mode_t mode, 9439 bcm_field_group_t group); 9440 9441 /* Create a field group */ 9442 extern int bcm_field_group_port_create_mode( 9443 int unit, 9444 bcm_port_t port, 9445 bcm_field_qset_t qset, 9446 int pri, 9447 bcm_field_group_mode_t mode, 9448 bcm_field_group_t *group); 9449 9450 /* Create a field group */ 9451 extern int bcm_field_group_port_create_mode_id( 9452 int unit, 9453 bcm_port_t port, 9454 bcm_field_qset_t qset, 9455 int pri, 9456 bcm_field_group_mode_t mode, 9457 bcm_field_group_t group); 9458 9459 /* Create a field group */ 9460 extern int bcm_field_group_ports_create_mode( 9461 int unit, 9462 bcm_pbmp_t pbmp, 9463 bcm_field_qset_t qset, 9464 int pri, 9465 bcm_field_group_mode_t mode, 9466 bcm_field_group_t *group); 9467 9468 /* Create a field group */ 9469 extern int bcm_field_group_ports_create_mode_id( 9470 int unit, 9471 bcm_pbmp_t pbmp, 9472 bcm_field_qset_t qset, 9473 int pri, 9474 bcm_field_group_mode_t mode, 9475 bcm_field_group_t group); 9476 9477 /* Create a field group */ 9478 extern int bcm_field_group_wlan_create_mode( 9479 int unit, 9480 bcm_field_qset_t qset, 9481 int pri, 9482 bcm_field_group_mode_t mode, 9483 bcm_field_group_t *group); 9484 9485 /* Create a field group */ 9486 extern int bcm_field_group_wlan_create_mode_id( 9487 int unit, 9488 bcm_field_qset_t qset, 9489 int pri, 9490 bcm_field_group_mode_t mode, 9491 bcm_field_group_t group); 9492 9493 /* Get the mode of a group. */ 9494 extern int bcm_field_group_mode_get( 9495 int unit, 9496 bcm_field_group_t group, 9497 bcm_field_group_mode_t *mode); 9498 9499 /* Create a field group with specific attributes. */ 9500 extern int bcm_field_group_config_create( 9501 int unit, 9502 bcm_field_group_config_t *group_config); 9503 9504 /* Create a field group with extension specific attributes. */ 9505 extern int bcm_field_group_config_extension_create( 9506 int unit, 9507 bcm_field_group_config_extension_t *group_config); 9508 9509 #endif /* BCM_HIDE_DISPATCHABLE */ 9510 9511 /* Initialize the Field Group Config structure. */ 9512 extern void bcm_field_group_config_t_init( 9513 bcm_field_group_config_t *group_config); 9514 9515 /* Initialize Field Group Config Extension structure. */ 9516 extern void bcm_field_group_config_extension_t_init( 9517 bcm_field_group_config_extension_t *group_config); 9518 9519 /* FP group traverse callback function */ 9520 typedef int (*bcm_field_group_traverse_cb)( 9521 int unit, 9522 bcm_field_group_t group, 9523 void *user_data); 9524 9525 #ifndef BCM_HIDE_DISPATCHABLE 9526 9527 /* 9528 * Traverse all the fp groups on the device, calling a specified callback 9529 * for each valid group. 9530 */ 9531 extern int bcm_field_group_traverse( 9532 int unit, 9533 bcm_field_group_traverse_cb callback, 9534 void *user_data); 9535 9536 /* 9537 * Destroys field entries in the given group (both software object and 9538 * the actual hardware entry) before destroying the field group. Field 9539 * group sw object is also destroyed as well. 9540 */ 9541 extern int bcm_field_group_flush( 9542 int unit, 9543 bcm_field_group_t group); 9544 9545 /* Change or retrieve the qualifiers for a field group. */ 9546 extern int bcm_field_group_set( 9547 int unit, 9548 bcm_field_group_t group, 9549 bcm_field_qset_t qset); 9550 9551 /* Change or retrieve the qualifiers for a field group. */ 9552 extern int bcm_field_group_get( 9553 int unit, 9554 bcm_field_group_t group, 9555 bcm_field_qset_t *qset); 9556 9557 /* Change or retrieve the actions for a field group. */ 9558 extern int bcm_field_group_action_set( 9559 int unit, 9560 bcm_field_group_t group, 9561 bcm_field_aset_t aset); 9562 9563 /* Change or retrieve the actions for a field group. */ 9564 extern int bcm_field_group_action_get( 9565 int unit, 9566 bcm_field_group_t group, 9567 bcm_field_aset_t *aset); 9568 9569 /* Deallocates a field group. */ 9570 extern int bcm_field_group_destroy( 9571 int unit, 9572 bcm_field_group_t group); 9573 9574 /* Compress field group entries. */ 9575 extern int bcm_field_group_compress( 9576 int unit, 9577 bcm_field_group_t group); 9578 9579 /* Set or Clear provided entry as default for group. */ 9580 extern int bcm_field_group_default_entry_set( 9581 int unit, 9582 bcm_field_group_t group, 9583 bcm_field_entry_t entry, 9584 int enable); 9585 9586 /* Get default entry id associated to a group. */ 9587 extern int bcm_field_group_default_entry_get( 9588 int unit, 9589 bcm_field_group_t group, 9590 bcm_field_entry_t *entry); 9591 9592 /* Assign relative priority to a group. */ 9593 extern int bcm_field_group_priority_set( 9594 int unit, 9595 bcm_field_group_t group, 9596 int priority); 9597 9598 /* Extract priority for a group. */ 9599 extern int bcm_field_group_priority_get( 9600 int unit, 9601 bcm_field_group_t group, 9602 int *priority); 9603 9604 /* Retrieve status of a specified field group */ 9605 extern int bcm_field_group_status_get( 9606 int unit, 9607 bcm_field_group_t group, 9608 bcm_field_group_status_t *status); 9609 9610 /* Get or set the group enable state. */ 9611 extern int bcm_field_group_enable_set( 9612 int unit, 9613 bcm_field_group_t group, 9614 int enable); 9615 9616 /* Get or set the group enable state. */ 9617 extern int bcm_field_group_enable_get( 9618 int unit, 9619 bcm_field_group_t group, 9620 int *enable); 9621 9622 /* Allocate a range checker with specified configuration */ 9623 extern int bcm_field_range_create( 9624 int unit, 9625 bcm_field_range_t *range, 9626 uint32 flags, 9627 bcm_l4_port_t min, 9628 bcm_l4_port_t max); 9629 9630 /* Install all entries of a field group into the hardware tables. */ 9631 extern int bcm_field_group_install( 9632 int unit, 9633 bcm_field_group_t group); 9634 9635 /* Remove all entries of a field group from the hardware table. */ 9636 extern int bcm_field_group_remove( 9637 int unit, 9638 bcm_field_group_t group); 9639 9640 /* Allocate a range checker with specified configuration */ 9641 extern int bcm_field_range_create_id( 9642 int unit, 9643 bcm_field_range_t range, 9644 uint32 flags, 9645 bcm_l4_port_t min, 9646 bcm_l4_port_t max); 9647 9648 /* 9649 * Allocate a range checker with specified configuration associated 9650 * with an interface group 9651 */ 9652 extern int bcm_field_range_group_create( 9653 int unit, 9654 bcm_field_range_t *range, 9655 uint32 flags, 9656 bcm_l4_port_t min, 9657 bcm_l4_port_t max, 9658 bcm_if_group_t group); 9659 9660 /* 9661 * Allocate a range checker with specified configuration associated 9662 * with an interface group 9663 */ 9664 extern int bcm_field_range_group_create_id( 9665 int unit, 9666 bcm_field_range_t range, 9667 uint32 flags, 9668 bcm_l4_port_t min, 9669 bcm_l4_port_t max, 9670 bcm_if_group_t group); 9671 9672 /* Retrieve parameters associated with an existing range checker */ 9673 extern int bcm_field_range_get( 9674 int unit, 9675 bcm_field_range_t range, 9676 uint32 *flags, 9677 bcm_l4_port_t *min, 9678 bcm_l4_port_t *max); 9679 9680 /* Destroy a virtual range checker */ 9681 extern int bcm_field_range_destroy( 9682 int unit, 9683 bcm_field_range_t range); 9684 9685 #endif /* BCM_HIDE_DISPATCHABLE */ 9686 9687 /* Initialize the bcm_field_data_qualifier_s structure. */ 9688 extern void bcm_field_data_qualifier_t_init( 9689 bcm_field_data_qualifier_t *data_qual); 9690 9691 /* Initialize the bcm_field_data_ethertype_s structure. */ 9692 extern void bcm_field_data_ethertype_t_init( 9693 bcm_field_data_ethertype_t *etype); 9694 9695 /* Initialize the bcm_field_data_ip_protocol_s structure. */ 9696 extern void bcm_field_data_ip_protocol_t_init( 9697 bcm_field_data_ip_protocol_t *ip_protocol); 9698 9699 /* Initialize the bcm_field_data_packet_format_s structure. */ 9700 extern void bcm_field_data_packet_format_t_init( 9701 bcm_field_data_packet_format_t *packet_format); 9702 9703 /* Initialize a bcm_field_class_info_t. */ 9704 extern void bcm_field_class_info_t_init( 9705 bcm_field_class_info_t *class_info); 9706 9707 #ifndef BCM_HIDE_DISPATCHABLE 9708 9709 /* Create a data/offset-based qualifier. */ 9710 extern int bcm_field_data_qualifier_create( 9711 int unit, 9712 bcm_field_data_qualifier_t *data_qualifier); 9713 9714 /* Return an array of IDs of defined data qualifiers. */ 9715 extern int bcm_field_data_qualifier_multi_get( 9716 int unit, 9717 int qual_size, 9718 int *qual_array, 9719 int *qual_count); 9720 9721 /* Return the configuration of the given data qualifier. */ 9722 extern int bcm_field_data_qualifier_get( 9723 int unit, 9724 int qual_id, 9725 bcm_field_data_qualifier_t *qual); 9726 9727 /* Destroy a data/offset-based qualifier. */ 9728 extern int bcm_field_data_qualifier_destroy( 9729 int unit, 9730 int qual_id); 9731 9732 /* Destroy all data/offset-based qualifiers. */ 9733 extern int bcm_field_data_qualifier_destroy_all( 9734 int unit); 9735 9736 /* Add EtherType-based offset to data qualifier object. */ 9737 extern int bcm_field_data_qualifier_ethertype_add( 9738 int unit, 9739 int qual_id, 9740 bcm_field_data_ethertype_t *etype); 9741 9742 /* Remove EtherType-based offset from data qualifier object. */ 9743 extern int bcm_field_data_qualifier_ethertype_delete( 9744 int unit, 9745 int qual_id, 9746 bcm_field_data_ethertype_t *etype); 9747 9748 /* Add IP protocol-based offset to data qualifier object. */ 9749 extern int bcm_field_data_qualifier_ip_protocol_add( 9750 int unit, 9751 int qual_id, 9752 bcm_field_data_ip_protocol_t *ip_protocol); 9753 9754 /* Remove IP protocol based offset from data qualifier object. */ 9755 extern int bcm_field_data_qualifier_ip_protocol_delete( 9756 int unit, 9757 int qual_id, 9758 bcm_field_data_ip_protocol_t *ip_protocol); 9759 9760 /* Add packet format-based offset to data qualifier object. */ 9761 extern int bcm_field_data_qualifier_packet_format_add( 9762 int unit, 9763 int qual_id, 9764 bcm_field_data_packet_format_t *packet_format); 9765 9766 /* Delete packet format-based offset from data qualifier object. */ 9767 extern int bcm_field_data_qualifier_packet_format_delete( 9768 int unit, 9769 int qual_id, 9770 bcm_field_data_packet_format_t *packet_format); 9771 9772 /* 9773 * Add data/offset qualifier to a group qualifiers set. 9774 * Use \ref bcm_field_qset_data_qualifier_add API to add data 9775 * qualifiers to the qset. 9776 */ 9777 extern int bcm_field_qset_data_qualifier_add( 9778 int unit, 9779 bcm_field_qset_t *qset, 9780 int qual_id); 9781 9782 /* 9783 * Delete a data/offset qualifier from a group qualifiers set. 9784 * Use \ref bcm_field_qset_data_qualifier_delete API to delete data 9785 * qualifiers from the qset. 9786 */ 9787 extern int bcm_field_qset_data_qualifier_delete( 9788 int unit, 9789 bcm_field_qset_t *qset, 9790 int qual_id); 9791 9792 /* Get field data qualifiers included in a group qset. */ 9793 extern int bcm_field_qset_data_qualifier_get( 9794 int unit, 9795 bcm_field_qset_t qset, 9796 int qual_max, 9797 int *qual_arr, 9798 int *qual_count); 9799 9800 /* Create a blank field entry */ 9801 extern int bcm_field_entry_create( 9802 int unit, 9803 bcm_field_group_t group, 9804 bcm_field_entry_t *entry); 9805 9806 #endif /* BCM_HIDE_DISPATCHABLE */ 9807 9808 #define BCM_FIELD_DATA_QUALIFIER_SHIFT 14 9809 9810 #define BCM_FIELD_DATA_QUALIFIER_SET(data_qual_id, qual_id) (qual_id = (1 << BCM_FIELD_DATA_QUALIFIER_SHIFT) | data_qual_id) 9811 9812 #ifndef BCM_HIDE_DISPATCHABLE 9813 9814 /* Create a blank field entry */ 9815 extern int bcm_field_entry_create_id( 9816 int unit, 9817 bcm_field_group_t group, 9818 bcm_field_entry_t entry); 9819 9820 #endif /* BCM_HIDE_DISPATCHABLE */ 9821 9822 /* Initialize the Field Entry Config structure. */ 9823 extern void bcm_field_entry_config_t_init( 9824 bcm_field_entry_config_t *entry_config); 9825 9826 #ifndef BCM_HIDE_DISPATCHABLE 9827 9828 /* Create a field entry based on specified configuration */ 9829 extern int bcm_field_entry_config_create( 9830 int unit, 9831 bcm_field_entry_config_t *entry_config); 9832 9833 /* Retrieve the information of an entry. */ 9834 extern int bcm_field_entry_config_get( 9835 int unit, 9836 bcm_field_entry_config_t *entry_config); 9837 9838 /* Get an array of entry IDs in use in a group */ 9839 extern int bcm_field_entry_multi_get( 9840 int unit, 9841 bcm_field_group_t group, 9842 int entry_size, 9843 bcm_field_entry_t *entry_array, 9844 int *entry_count); 9845 9846 /* Destroy a field entry */ 9847 extern int bcm_field_entry_destroy( 9848 int unit, 9849 bcm_field_entry_t entry); 9850 9851 /* Destroy all field entries */ 9852 extern int bcm_field_entry_destroy_all( 9853 int unit); 9854 9855 /* 9856 * Create a copy of an existing field entry and 9857 * control the entry copy using flags. 9858 */ 9859 extern int bcm_field_entry_config_copy( 9860 int unit, 9861 bcm_field_entry_t src_entry, 9862 bcm_field_entry_t *dst_entry, 9863 uint32 flags); 9864 9865 /* Create a copy of an existing field entry */ 9866 extern int bcm_field_entry_copy( 9867 int unit, 9868 bcm_field_entry_t src_entry, 9869 bcm_field_entry_t *dst_entry); 9870 9871 /* Create a copy of an existing field entry */ 9872 extern int bcm_field_entry_copy_id( 9873 int unit, 9874 bcm_field_entry_t src_entry, 9875 bcm_field_entry_t dst_entry); 9876 9877 /* Install a field entry into the hardware tables */ 9878 extern int bcm_field_entry_install( 9879 int unit, 9880 bcm_field_entry_t entry); 9881 9882 #endif /* BCM_HIDE_DISPATCHABLE */ 9883 9884 #define BCM_FIELD_LARGE_DIRECT_ENTRY_ID_PACK(_entry_id, _group_id, _index) \ 9885 _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_PACK(_entry_id, _group_id, _index) 9886 9887 9888 #define BCM_FIELD_LARGE_DIRECT_ENTRY_ID_UNPACK(_entry_id, _group_id, _index) \ 9889 _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_UNPACK(_entry_id, _group_id, _index) 9890 9891 9892 #ifndef BCM_HIDE_DISPATCHABLE 9893 9894 /* Install a field entry into large direct lookup hardware tables */ 9895 extern int bcm_field_entry_install_and_handler_update( 9896 int unit, 9897 bcm_field_entry_t entry, 9898 bcm_field_entry_t *large_dt_entry); 9899 9900 /* Re-install a field entry into the hardware tables */ 9901 extern int bcm_field_entry_reinstall( 9902 int unit, 9903 bcm_field_entry_t entry); 9904 9905 /* Remove a field entry from the hardware tables */ 9906 extern int bcm_field_entry_remove( 9907 int unit, 9908 bcm_field_entry_t entry); 9909 9910 /* Enable/Disable an entry from the hardware table. */ 9911 extern int bcm_field_entry_enable_set( 9912 int unit, 9913 bcm_field_entry_t entry, 9914 int enable_flag); 9915 9916 /* Get the Enable or Disable status of a field Entry. */ 9917 extern int bcm_field_entry_enable_get( 9918 int unit, 9919 bcm_field_entry_t entry, 9920 int *enable_flag); 9921 9922 /* Attach a policer to a field entry. */ 9923 extern int bcm_field_entry_policer_attach( 9924 int unit, 9925 bcm_field_entry_t entry_id, 9926 int level, 9927 bcm_policer_t policer_id); 9928 9929 /* 9930 * Detach a policer from a field entry. When the API is called, the 9931 * policer is 9932 * marked as detached but it is not completely detached from the entry. 9933 * This is 9934 * because, the policer and meter entries are updated in the hardware 9935 * during 9936 * entry re-install. So, this API should always be followed by entry 9937 * remove or 9938 * entry re-install to completely detach the policer from the entry. 9939 */ 9940 extern int bcm_field_entry_policer_detach( 9941 int unit, 9942 bcm_field_entry_t entry_id, 9943 int level); 9944 9945 /* Detach all policers from a field entry. */ 9946 extern int bcm_field_entry_policer_detach_all( 9947 int unit, 9948 bcm_field_entry_t entry_id); 9949 9950 /* Get the policer(s) attached to a field entry. */ 9951 extern int bcm_field_entry_policer_get( 9952 int unit, 9953 bcm_field_entry_t entry_id, 9954 int level, 9955 bcm_policer_t *policer_id); 9956 9957 /* Get/Set the priority for an entry within a group. */ 9958 extern int bcm_field_entry_prio_get( 9959 int unit, 9960 bcm_field_entry_t entry, 9961 int *prio); 9962 9963 /* Get/Set the priority for an entry within a group. */ 9964 extern int bcm_field_entry_prio_set( 9965 int unit, 9966 bcm_field_entry_t entry, 9967 int prio); 9968 9969 /* Invalidate HW FP entries that have not been replayed after warm boot. */ 9970 extern int bcm_field_resync( 9971 int unit); 9972 9973 /* Add qualifier objects to field group qset. */ 9974 extern int bcm_field_qset_id_multi_set( 9975 int unit, 9976 bcm_field_qualify_t qualifier, 9977 int num_objects, 9978 int *object_list, 9979 bcm_field_qset_t *qset); 9980 9981 /* Delete qualifier objects to field group qset. */ 9982 extern int bcm_field_qset_id_multi_delete( 9983 int unit, 9984 bcm_field_qualify_t qualifier, 9985 int num_objects, 9986 int *object_list, 9987 bcm_field_qset_t *qset); 9988 9989 /* Get qualifier objects added to the field group qset. */ 9990 extern int bcm_field_qset_id_multi_get( 9991 int unit, 9992 bcm_field_qset_t qset, 9993 bcm_field_qualify_t qualifier, 9994 int max_objects, 9995 int *object_list, 9996 int *count_objects); 9997 9998 #endif /* BCM_HIDE_DISPATCHABLE */ 9999 10000 #define BCM_FIELD_ENTRY_LARGE_DIRECT_LOOKUP 0x10000000 /* OR with ID when 10001 calling 10002 bcm_field_entry_* 10003 functions to indicate 10004 large direct lookup 10005 advanced application */ 10006 10007 #define BCM_FIELD_ENTRY_KEEP_LOCATION 0x20000000 /* OR with ID when calling 10008 bcm_field_entry_remove 10009 functions to indicate TCAM 10010 location of entry is kept 10011 for 10012 bcm_field_entry_install 10013 function */ 10014 10015 #define BCM_FIELD_SEL_NOT_IN_TABLE 0xfff0 10016 10017 #define BCM_FIELD_QUALIFY_PRESEL 0x40000000 /* OR with ID when calling 10018 bcm_field_qualify_* functions 10019 to indicate ID is a 10020 preselector instead of an 10021 entry */ 10022 10023 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_INGRESS 0x80001000 /* OR with ID when 10024 calling 10025 bcm_field_qualify_* 10026 functions to indicate 10027 ID is a preselector in 10028 ingress stage instead 10029 of an entry */ 10030 10031 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_EGRESS 0x80002000 /* OR with ID when 10032 calling 10033 bcm_field_qualify_* 10034 functions to indicate 10035 ID is a preselector in 10036 egress stage instead 10037 of an entry */ 10038 10039 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_HASH 0x80004000 /* OR with ID when 10040 calling 10041 bcm_field_qualify_* 10042 functions to indicate 10043 ID is a preselector in 10044 hashing stage instead 10045 of an entry */ 10046 10047 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_EXTERNAL 0x80008000 /* OR with ID when 10048 calling 10049 bcm_field_qualify_* 10050 functions to indicate 10051 ID is a preselector in 10052 external stage */ 10053 10054 #define BCM_FIELD_QUALIFY_PRESEL_STAGGERED 0x41000000 /* OR with ID when 10055 calling 10056 bcm_field_qualify_* 10057 functions to indicate 10058 ID is a preselector in 10059 staggered mode */ 10060 10061 #define BCM_FIELD_PRESEL_STAGGERED 512 /* flag to indicate the prsele-id 10062 is staggered and should be 10063 configured in the second pass 10064 program selection table */ 10065 10066 #ifndef BCM_HIDE_DISPATCHABLE 10067 10068 /* Remove all qualifications from a field entry */ 10069 extern int bcm_field_qualify_clear( 10070 int unit, 10071 bcm_field_entry_t entry); 10072 10073 /* Add data field that the packet must match to trigger qualifier */ 10074 extern int bcm_field_qualify_data( 10075 int unit, 10076 bcm_field_entry_t eid, 10077 int qual_id, 10078 uint8 *data, 10079 uint8 *mask, 10080 uint16 length); 10081 10082 /* Add UDF data that the packet must match to trigger qualifier. */ 10083 extern int bcm_field_qualify_udf( 10084 int unit, 10085 bcm_field_entry_t eid, 10086 bcm_udf_id_t udf_id, 10087 int length, 10088 uint8 *data, 10089 uint8 *mask); 10090 10091 /* Get UDF data that the packet configured to match on. */ 10092 extern int bcm_field_qualify_udf_get( 10093 int unit, 10094 bcm_field_entry_t eid, 10095 bcm_udf_id_t udf_id, 10096 int max_length, 10097 uint8 *data, 10098 uint8 *mask, 10099 int *actual_length); 10100 10101 /* Remove match criteria from field entry. */ 10102 extern int bcm_field_qualifier_delete( 10103 int unit, 10104 bcm_field_entry_t entry, 10105 bcm_field_qualify_t qual_id); 10106 10107 /* bcm_field_qualify_InPort */ 10108 extern int bcm_field_qualify_InPort( 10109 int unit, 10110 bcm_field_entry_t entry, 10111 bcm_port_t data, 10112 bcm_port_t mask); 10113 10114 /* bcm_field_qualify_OutPort */ 10115 extern int bcm_field_qualify_OutPort( 10116 int unit, 10117 bcm_field_entry_t entry, 10118 bcm_port_t data, 10119 bcm_port_t mask); 10120 10121 /* bcm_field_qualify_InPorts */ 10122 extern int bcm_field_qualify_InPorts( 10123 int unit, 10124 bcm_field_entry_t entry, 10125 bcm_pbmp_t data, 10126 bcm_pbmp_t mask); 10127 10128 /* bcm_field_qualify_OutPorts */ 10129 extern int bcm_field_qualify_OutPorts( 10130 int unit, 10131 bcm_field_entry_t entry, 10132 bcm_pbmp_t data, 10133 bcm_pbmp_t mask); 10134 10135 /* bcm_field_qualify_Drop */ 10136 extern int bcm_field_qualify_Drop( 10137 int unit, 10138 bcm_field_entry_t entry, 10139 uint8 data, 10140 uint8 mask); 10141 10142 /* bcm_field_qualify_SrcPort */ 10143 extern int bcm_field_qualify_SrcPort( 10144 int unit, 10145 bcm_field_entry_t entry, 10146 bcm_module_t data_modid, 10147 bcm_module_t mask_modid, 10148 bcm_port_t data_port, 10149 bcm_port_t mask_port); 10150 10151 /* bcm_field_qualify_SrcTrunk */ 10152 extern int bcm_field_qualify_SrcTrunk( 10153 int unit, 10154 bcm_field_entry_t entry, 10155 bcm_trunk_t data, 10156 bcm_trunk_t mask); 10157 10158 /* 10159 * Set match criteria for bcmFieldQualifySrcTrunkMemberGport 10160 * qualifier in the field entry. 10161 */ 10162 extern int bcm_field_qualify_SrcTrunkMemberGport( 10163 int unit, 10164 bcm_field_entry_t entry, 10165 bcm_gport_t data); 10166 10167 /* bcm_field_qualify_SrcTMPort */ 10168 extern int bcm_field_qualify_SrcTMPort( 10169 int unit, 10170 bcm_field_entry_t entry, 10171 bcm_port_t data_port, 10172 bcm_port_t mask_port); 10173 10174 /* bcm_field_qualify_DstPort */ 10175 extern int bcm_field_qualify_DstPort( 10176 int unit, 10177 bcm_field_entry_t entry, 10178 bcm_module_t data_modid, 10179 bcm_module_t mask_modid, 10180 bcm_port_t data_port, 10181 bcm_port_t mask_port); 10182 10183 /* bcm_field_qualify_DstTrunk */ 10184 extern int bcm_field_qualify_DstTrunk( 10185 int unit, 10186 bcm_field_entry_t entry, 10187 bcm_trunk_t data, 10188 bcm_trunk_t mask); 10189 10190 /* bcm_field_qualify_InnerL4SrcPort */ 10191 extern int bcm_field_qualify_InnerL4SrcPort( 10192 int unit, 10193 bcm_field_entry_t entry, 10194 bcm_l4_port_t data, 10195 bcm_l4_port_t mask); 10196 10197 /* bcm_field_qualify_InnerL4DstPort */ 10198 extern int bcm_field_qualify_InnerL4DstPort( 10199 int unit, 10200 bcm_field_entry_t entry, 10201 bcm_l4_port_t data, 10202 bcm_l4_port_t mask); 10203 10204 /* bcm_field_qualify_L4SrcPort */ 10205 extern int bcm_field_qualify_L4SrcPort( 10206 int unit, 10207 bcm_field_entry_t entry, 10208 bcm_l4_port_t data, 10209 bcm_l4_port_t mask); 10210 10211 /* bcm_field_qualify_L4DstPort */ 10212 extern int bcm_field_qualify_L4DstPort( 10213 int unit, 10214 bcm_field_entry_t entry, 10215 bcm_l4_port_t data, 10216 bcm_l4_port_t mask); 10217 10218 /* bcm_field_qualify_OuterVlan */ 10219 extern int bcm_field_qualify_OuterVlan( 10220 int unit, 10221 bcm_field_entry_t entry, 10222 bcm_vlan_t data, 10223 bcm_vlan_t mask); 10224 10225 /* 10226 * Set match criteria for bcmFieldQualifyOuterVlanId 10227 * qualifier in the field entry. 10228 */ 10229 extern int bcm_field_qualify_OuterVlanId( 10230 int unit, 10231 bcm_field_entry_t entry, 10232 bcm_vlan_t data, 10233 bcm_vlan_t mask); 10234 10235 /* 10236 * Set match criteria for bcmFieldQualifyOuterVlanPri 10237 * qualifier in the field entry. 10238 */ 10239 extern int bcm_field_qualify_OuterVlanPri( 10240 int unit, 10241 bcm_field_entry_t entry, 10242 uint8 data, 10243 uint8 mask); 10244 10245 /* 10246 * Set match criteria for bcmFieldQualifyOuterVlanCfi 10247 * qualifier in the field entry. 10248 */ 10249 extern int bcm_field_qualify_OuterVlanCfi( 10250 int unit, 10251 bcm_field_entry_t entry, 10252 uint8 data, 10253 uint8 mask); 10254 10255 /* 10256 * Set match criteria for bcmFieldQualifyOuterVlanPriCfi 10257 * qualifier in the field entry. 10258 */ 10259 extern int bcm_field_qualify_OuterVlanPriCfi( 10260 int unit, 10261 bcm_field_entry_t entry, 10262 uint8 data, 10263 uint8 mask); 10264 10265 /* bcm_field_qualify_InnerVlan */ 10266 extern int bcm_field_qualify_InnerVlan( 10267 int unit, 10268 bcm_field_entry_t entry, 10269 bcm_vlan_t data, 10270 bcm_vlan_t mask); 10271 10272 /* 10273 * Set match criteria for bcmFieldQualifyInnerVlanId 10274 * qualifier in the field entry. 10275 */ 10276 extern int bcm_field_qualify_InnerVlanId( 10277 int unit, 10278 bcm_field_entry_t entry, 10279 bcm_vlan_t data, 10280 bcm_vlan_t mask); 10281 10282 /* 10283 * Set match criteria for bcmFieldQualifyInnerVlanPri 10284 * qualifier in the field entry. 10285 */ 10286 extern int bcm_field_qualify_InnerVlanPri( 10287 int unit, 10288 bcm_field_entry_t entry, 10289 uint8 data, 10290 uint8 mask); 10291 10292 /* 10293 * Set match criteria for bcmFieldQualifyInnerVlanCfi 10294 * qualifier in the field entry. 10295 */ 10296 extern int bcm_field_qualify_InnerVlanCfi( 10297 int unit, 10298 bcm_field_entry_t entry, 10299 uint8 data, 10300 uint8 mask); 10301 10302 /* bcm_field_qualify_EtherType */ 10303 extern int bcm_field_qualify_EtherType( 10304 int unit, 10305 bcm_field_entry_t entry, 10306 uint16 data, 10307 uint16 mask); 10308 10309 /* Add loopback field qualification to a field entry. */ 10310 extern int bcm_field_qualify_Loopback( 10311 int unit, 10312 bcm_field_entry_t entry, 10313 uint8 data, 10314 uint8 mask); 10315 10316 /* Add loopback type field qualification to a field entry. */ 10317 extern int bcm_field_qualify_LoopbackType( 10318 int unit, 10319 bcm_field_entry_t entry, 10320 bcm_field_LoopbackType_t loopback_type); 10321 10322 /* Add tunnel type field qualification to a field entry. */ 10323 extern int bcm_field_qualify_TunnelType( 10324 int unit, 10325 bcm_field_entry_t entry, 10326 bcm_field_TunnelType_t tunnel_type); 10327 10328 /* bcm_field_qualify_DstL3Egress */ 10329 extern int bcm_field_qualify_DstL3Egress( 10330 int unit, 10331 bcm_field_entry_t entry, 10332 bcm_if_t if_id); 10333 10334 /* bcm_field_qualify_DstMulticastGroup */ 10335 extern int bcm_field_qualify_DstMulticastGroup( 10336 int unit, 10337 bcm_field_entry_t entry, 10338 bcm_multicast_t group); 10339 10340 /* bcm_field_qualify_SrcMplsGport */ 10341 extern int bcm_field_qualify_SrcMplsGport( 10342 int unit, 10343 bcm_field_entry_t entry, 10344 bcm_gport_t mpls_port_id); 10345 10346 /* bcm_field_qualify_DstMplsGport */ 10347 extern int bcm_field_qualify_DstMplsGport( 10348 int unit, 10349 bcm_field_entry_t entry, 10350 bcm_gport_t mpls_port_id); 10351 10352 /* bcm_field_qualify_SrcMimGport */ 10353 extern int bcm_field_qualify_SrcMimGport( 10354 int unit, 10355 bcm_field_entry_t entry, 10356 bcm_gport_t mim_port_id); 10357 10358 /* bcm_field_qualify_DstMimGport */ 10359 extern int bcm_field_qualify_DstMimGport( 10360 int unit, 10361 bcm_field_entry_t entry, 10362 bcm_gport_t mim_port_id); 10363 10364 /* bcm_field_qualify_SrcWlanGport */ 10365 extern int bcm_field_qualify_SrcWlanGport( 10366 int unit, 10367 bcm_field_entry_t entry, 10368 bcm_gport_t wlan_port_id); 10369 10370 /* bcm_field_qualify_DstWlanGport */ 10371 extern int bcm_field_qualify_DstWlanGport( 10372 int unit, 10373 bcm_field_entry_t entry, 10374 bcm_gport_t wlan_port_id); 10375 10376 /* bcm_field_qualify_SrcVxlanGport */ 10377 extern int bcm_field_qualify_SrcVxlanGport( 10378 int unit, 10379 bcm_field_entry_t entry, 10380 bcm_gport_t vxlan_port_id); 10381 10382 /* bcm_field_qualify_DstVxlanGport */ 10383 extern int bcm_field_qualify_DstVxlanGport( 10384 int unit, 10385 bcm_field_entry_t entry, 10386 bcm_gport_t vxlan_port_id); 10387 10388 /* 10389 * Set match criteria for bcmFieldQualifyIntPriority 10390 * qualifier in the field entry. 10391 */ 10392 extern int bcm_field_qualify_IntPriority( 10393 int unit, 10394 bcm_field_entry_t entry, 10395 uint8 data, 10396 uint8 mask); 10397 10398 /* 10399 * Set match criteria for bcmFieldQualifyForwardingVlanId 10400 * qualifier in the field entry. 10401 */ 10402 extern int bcm_field_qualify_ForwardingVlanId( 10403 int unit, 10404 bcm_field_entry_t entry, 10405 bcm_vlan_t data, 10406 bcm_vlan_t mask); 10407 10408 /* 10409 * Get match criteria for bcmFieldQualifyForwardingVlanId 10410 * qualifier from the field entry. 10411 */ 10412 extern int bcm_field_qualify_ForwardingVlanId_get( 10413 int unit, 10414 bcm_field_entry_t entry, 10415 bcm_vlan_t *data, 10416 bcm_vlan_t *mask); 10417 10418 /* Match on VPN. */ 10419 extern int bcm_field_qualify_Vpn( 10420 int unit, 10421 bcm_field_entry_t entry, 10422 bcm_vpn_t data, 10423 bcm_vpn_t mask); 10424 10425 /* To get qualified inputs on VPN. */ 10426 extern int bcm_field_qualify_Vpn_get( 10427 int unit, 10428 bcm_field_entry_t entry, 10429 bcm_vpn_t *data, 10430 bcm_vpn_t *mask); 10431 10432 /* 10433 * Set match criteria for bcmFieldQualifyColor 10434 * qualifier in the field entry. 10435 */ 10436 extern int bcm_field_qualify_Color( 10437 int unit, 10438 bcm_field_entry_t entry, 10439 uint8 color); 10440 10441 /* 10442 * Set match criteria for bcmFieldQualifySrcModPortGport 10443 * qualifier in the field entry. 10444 */ 10445 extern int bcm_field_qualify_SrcModPortGport( 10446 int unit, 10447 bcm_field_entry_t entry, 10448 bcm_gport_t data); 10449 10450 /* 10451 * Set match criteria for bcmFieldQualifySrcModuleGport 10452 * qualifier in the field entry. 10453 */ 10454 extern int bcm_field_qualify_SrcModuleGport( 10455 int unit, 10456 bcm_field_entry_t entry, 10457 bcm_gport_t data); 10458 10459 /* bcm_field_qualify_IpProtocol */ 10460 extern int bcm_field_qualify_IpProtocol( 10461 int unit, 10462 bcm_field_entry_t entry, 10463 uint8 data, 10464 uint8 mask); 10465 10466 /* bcm_field_qualify_IpInfo */ 10467 extern int bcm_field_qualify_IpInfo( 10468 int unit, 10469 bcm_field_entry_t entry, 10470 uint32 data, 10471 uint32 mask); 10472 10473 /* bcm_field_qualify_PacketRes */ 10474 extern int bcm_field_qualify_PacketRes( 10475 int unit, 10476 bcm_field_entry_t entry, 10477 uint32 data, 10478 uint32 mask); 10479 10480 /* bcm_field_qualify_SrcIp */ 10481 extern int bcm_field_qualify_SrcIp( 10482 int unit, 10483 bcm_field_entry_t entry, 10484 bcm_ip_t data, 10485 bcm_ip_t mask); 10486 10487 /* bcm_field_qualify_DstIp */ 10488 extern int bcm_field_qualify_DstIp( 10489 int unit, 10490 bcm_field_entry_t entry, 10491 bcm_ip_t data, 10492 bcm_ip_t mask); 10493 10494 /* Set match criteria for bcmFieldQualifyKeyGenVar */ 10495 extern int bcm_field_qualify_KeyGenVar( 10496 int unit, 10497 bcm_field_entry_t entry, 10498 uint32 data, 10499 uint32 mask); 10500 10501 /* bcm_field_qualify_DSCP */ 10502 extern int bcm_field_qualify_DSCP( 10503 int unit, 10504 bcm_field_entry_t entry, 10505 uint8 data, 10506 uint8 mask); 10507 10508 /* bcm_field_qualify_Tos */ 10509 extern int bcm_field_qualify_Tos( 10510 int unit, 10511 bcm_field_entry_t entry, 10512 uint8 data, 10513 uint8 mask); 10514 10515 /* bcm_field_qualify_IpFlags */ 10516 extern int bcm_field_qualify_IpFlags( 10517 int unit, 10518 bcm_field_entry_t entry, 10519 uint8 data, 10520 uint8 mask); 10521 10522 /* bcm_field_qualify_TcpControl */ 10523 extern int bcm_field_qualify_TcpControl( 10524 int unit, 10525 bcm_field_entry_t entry, 10526 uint8 data, 10527 uint8 mask); 10528 10529 /* bcm_field_qualify_TcpSequenceZero */ 10530 extern int bcm_field_qualify_TcpSequenceZero( 10531 int unit, 10532 bcm_field_entry_t entry, 10533 uint32 flag); 10534 10535 /* bcm_field_qualify_TcpHeaderSize */ 10536 extern int bcm_field_qualify_TcpHeaderSize( 10537 int unit, 10538 bcm_field_entry_t entry, 10539 uint8 data, 10540 uint8 mask); 10541 10542 /* bcm_field_qualify_Ttl */ 10543 extern int bcm_field_qualify_Ttl( 10544 int unit, 10545 bcm_field_entry_t entry, 10546 uint8 data, 10547 uint8 mask); 10548 10549 /* bcm_field_qualify_RangeCheck */ 10550 extern int bcm_field_qualify_RangeCheck( 10551 int unit, 10552 bcm_field_entry_t entry, 10553 bcm_field_range_t range, 10554 int invert); 10555 10556 /* bcm_field_qualify_SrcIp6 */ 10557 extern int bcm_field_qualify_SrcIp6( 10558 int unit, 10559 bcm_field_entry_t entry, 10560 bcm_ip6_t data, 10561 bcm_ip6_t mask); 10562 10563 /* bcm_field_qualify_DstIp6 */ 10564 extern int bcm_field_qualify_DstIp6( 10565 int unit, 10566 bcm_field_entry_t entry, 10567 bcm_ip6_t data, 10568 bcm_ip6_t mask); 10569 10570 /* bcm_field_qualify_SrcIp6High */ 10571 extern int bcm_field_qualify_SrcIp6High( 10572 int unit, 10573 bcm_field_entry_t entry, 10574 bcm_ip6_t data, 10575 bcm_ip6_t mask); 10576 10577 /* bcm_field_qualify_DstIp6High */ 10578 extern int bcm_field_qualify_DstIp6High( 10579 int unit, 10580 bcm_field_entry_t entry, 10581 bcm_ip6_t data, 10582 bcm_ip6_t mask); 10583 10584 /* bcm_field_qualify_DstIp6Low */ 10585 extern int bcm_field_qualify_DstIp6Low( 10586 int unit, 10587 bcm_field_entry_t entry, 10588 bcm_ip6_t data, 10589 bcm_ip6_t mask); 10590 10591 /* bcm_field_qualify_SrcIp6Low */ 10592 extern int bcm_field_qualify_SrcIp6Low( 10593 int unit, 10594 bcm_field_entry_t entry, 10595 bcm_ip6_t data, 10596 bcm_ip6_t mask); 10597 10598 /* bcm_field_qualify_Ip6NextHeader */ 10599 extern int bcm_field_qualify_Ip6NextHeader( 10600 int unit, 10601 bcm_field_entry_t entry, 10602 uint8 data, 10603 uint8 mask); 10604 10605 /* bcm_field_qualify_Ip6TrafficClass */ 10606 extern int bcm_field_qualify_Ip6TrafficClass( 10607 int unit, 10608 bcm_field_entry_t entry, 10609 uint8 data, 10610 uint8 mask); 10611 10612 /* bcm_field_qualify_InnerIp6FlowLabel */ 10613 extern int bcm_field_qualify_InnerIp6FlowLabel( 10614 int unit, 10615 bcm_field_entry_t entry, 10616 uint32 data, 10617 uint32 mask); 10618 10619 /* bcm_field_qualify_Ip6FlowLabel */ 10620 extern int bcm_field_qualify_Ip6FlowLabel( 10621 int unit, 10622 bcm_field_entry_t entry, 10623 uint32 data, 10624 uint32 mask); 10625 10626 /* bcm_field_qualify_Ip6HopLimit */ 10627 extern int bcm_field_qualify_Ip6HopLimit( 10628 int unit, 10629 bcm_field_entry_t entry, 10630 uint8 data, 10631 uint8 mask); 10632 10633 /* bcm_field_qualify_SrcMac */ 10634 extern int bcm_field_qualify_SrcMac( 10635 int unit, 10636 bcm_field_entry_t entry, 10637 bcm_mac_t data, 10638 bcm_mac_t mask); 10639 10640 /* bcm_field_qualify_DstMac */ 10641 extern int bcm_field_qualify_DstMac( 10642 int unit, 10643 bcm_field_entry_t entry, 10644 bcm_mac_t data, 10645 bcm_mac_t mask); 10646 10647 /* bcm_field_qualify_InnerIpType */ 10648 extern int bcm_field_qualify_InnerIpType( 10649 int unit, 10650 bcm_field_entry_t entry, 10651 bcm_field_IpType_t type); 10652 10653 /* bcm_field_qualify_ForwardingType */ 10654 extern int bcm_field_qualify_ForwardingType( 10655 int unit, 10656 bcm_field_entry_t entry, 10657 bcm_field_ForwardingType_t type); 10658 10659 /* bcm_field_qualify_AppType */ 10660 extern int bcm_field_qualify_AppType( 10661 int unit, 10662 bcm_field_entry_t entry, 10663 bcm_field_AppType_t type); 10664 10665 /* bcm_field_qualify_IpType */ 10666 extern int bcm_field_qualify_IpType( 10667 int unit, 10668 bcm_field_entry_t entry, 10669 bcm_field_IpType_t type); 10670 10671 /* bcm_field_qualify_L2Format */ 10672 extern int bcm_field_qualify_L2Format( 10673 int unit, 10674 bcm_field_entry_t entry, 10675 bcm_field_L2Format_t type); 10676 10677 /* bcm_field_qualify_VlanFormat */ 10678 extern int bcm_field_qualify_VlanFormat( 10679 int unit, 10680 bcm_field_entry_t entry, 10681 uint8 data, 10682 uint8 mask); 10683 10684 /* bcm_field_qualify_MHOpcode */ 10685 extern int bcm_field_qualify_MHOpcode( 10686 int unit, 10687 bcm_field_entry_t entry, 10688 uint8 data, 10689 uint8 mask); 10690 10691 /* bcm_field_qualify_Decap */ 10692 extern int bcm_field_qualify_Decap( 10693 int unit, 10694 bcm_field_entry_t entry, 10695 bcm_field_decap_t decap); 10696 10697 /* Qualify on HiGig packets. */ 10698 extern int bcm_field_qualify_HiGig( 10699 int unit, 10700 bcm_field_entry_t entry, 10701 uint8 data, 10702 uint8 mask); 10703 10704 /* Qualify on HiGig destination packets. */ 10705 extern int bcm_field_qualify_DstHiGig( 10706 int unit, 10707 bcm_field_entry_t entry, 10708 uint8 data, 10709 uint8 mask); 10710 10711 /* Qualify on HiGig lookup packets. */ 10712 extern int bcm_field_qualify_HiGigProxy( 10713 int unit, 10714 bcm_field_entry_t entry, 10715 uint8 data, 10716 uint8 mask); 10717 10718 /* bcm_field_qualify_InterfaceClassPort */ 10719 extern int bcm_field_qualify_InterfaceClassPort( 10720 int unit, 10721 bcm_field_entry_t entry, 10722 uint32 data, 10723 uint32 mask); 10724 10725 /* bcm_field_qualify_InterfaceClassL2 */ 10726 extern int bcm_field_qualify_InterfaceClassL2( 10727 int unit, 10728 bcm_field_entry_t entry, 10729 uint32 data, 10730 uint32 mask); 10731 10732 /* bcm_field_qualify_InterfaceClassL3 */ 10733 extern int bcm_field_qualify_InterfaceClassL3( 10734 int unit, 10735 bcm_field_entry_t entry, 10736 uint32 data, 10737 uint32 mask); 10738 10739 /* bcm_field_qualify_SrcClassL2 */ 10740 extern int bcm_field_qualify_SrcClassL2( 10741 int unit, 10742 bcm_field_entry_t entry, 10743 uint32 data, 10744 uint32 mask); 10745 10746 /* bcm_field_qualify_SrcClassL3 */ 10747 extern int bcm_field_qualify_SrcClassL3( 10748 int unit, 10749 bcm_field_entry_t entry, 10750 uint32 data, 10751 uint32 mask); 10752 10753 /* bcm_field_qualify_SrcClassField */ 10754 extern int bcm_field_qualify_SrcClassField( 10755 int unit, 10756 bcm_field_entry_t entry, 10757 uint32 data, 10758 uint32 mask); 10759 10760 /* bcm_field_qualify_DstClassL2 */ 10761 extern int bcm_field_qualify_DstClassL2( 10762 int unit, 10763 bcm_field_entry_t entry, 10764 uint32 data, 10765 uint32 mask); 10766 10767 /* bcm_field_qualify_DstClassL3 */ 10768 extern int bcm_field_qualify_DstClassL3( 10769 int unit, 10770 bcm_field_entry_t entry, 10771 uint32 data, 10772 uint32 mask); 10773 10774 /* bcm_field_qualify_SrcCompressionClassId */ 10775 extern int bcm_field_qualify_SrcCompressionClassId( 10776 int unit, 10777 bcm_field_entry_t entry, 10778 uint32 data, 10779 uint32 mask); 10780 10781 /* 10782 * Get match criteria for bcmFieldQualifySrcCompressionClassId 10783 * qualifier from the field entry. 10784 */ 10785 extern int bcm_field_qualify_SrcCompressionClassId_get( 10786 int unit, 10787 bcm_field_entry_t entry, 10788 uint32 *data, 10789 uint32 *mask); 10790 10791 /* bcm_field_qualify_DstCompressionClassId */ 10792 extern int bcm_field_qualify_DstCompressionClassId( 10793 int unit, 10794 bcm_field_entry_t entry, 10795 uint32 data, 10796 uint32 mask); 10797 10798 /* 10799 * Get match criteria for bcmFieldQualifyDstCompressionClassId 10800 * qualifier from the field entry. 10801 */ 10802 extern int bcm_field_qualify_DstCompressionClassId_get( 10803 int unit, 10804 bcm_field_entry_t entry, 10805 uint32 *data, 10806 uint32 *mask); 10807 10808 /* bcm_field_qualify_DstClassField */ 10809 extern int bcm_field_qualify_DstClassField( 10810 int unit, 10811 bcm_field_entry_t entry, 10812 uint32 data, 10813 uint32 mask); 10814 10815 /* bcm_field_qualify_DstMultipath */ 10816 extern int bcm_field_qualify_DstMultipath( 10817 int unit, 10818 bcm_field_entry_t entry, 10819 bcm_if_t mpintf); 10820 10821 /* bcm_field_qualify_DstMultipath_get */ 10822 extern int bcm_field_qualify_DstMultipath_get( 10823 int unit, 10824 bcm_field_entry_t entry, 10825 bcm_if_t *mpintf); 10826 10827 /* bcm_field_qualify_IpProtocolCommon */ 10828 extern int bcm_field_qualify_IpProtocolCommon( 10829 int unit, 10830 bcm_field_entry_t entry, 10831 bcm_field_IpProtocolCommon_t protocol); 10832 10833 /* bcm_field_qualify_InnerIpProtocolCommon */ 10834 extern int bcm_field_qualify_InnerIpProtocolCommon( 10835 int unit, 10836 bcm_field_entry_t entry, 10837 bcm_field_IpProtocolCommon_t protocol); 10838 10839 /* bcm_field_qualify_Snap */ 10840 extern int bcm_field_qualify_Snap( 10841 int unit, 10842 bcm_field_entry_t entry, 10843 bcm_field_snap_header_t data, 10844 bcm_field_snap_header_t mask); 10845 10846 /* bcm_field_qualify_Llc */ 10847 extern int bcm_field_qualify_Llc( 10848 int unit, 10849 bcm_field_entry_t entry, 10850 bcm_field_llc_header_t data, 10851 bcm_field_llc_header_t mask); 10852 10853 /* bcm_field_qualify_InnerTpid */ 10854 extern int bcm_field_qualify_InnerTpid( 10855 int unit, 10856 bcm_field_entry_t entry, 10857 uint16 tpid); 10858 10859 /* bcm_field_qualify_OuterTpid */ 10860 extern int bcm_field_qualify_OuterTpid( 10861 int unit, 10862 bcm_field_entry_t entry, 10863 uint16 tpid); 10864 10865 /* bcm_field_qualify_L3Routable */ 10866 extern int bcm_field_qualify_L3Routable( 10867 int unit, 10868 bcm_field_entry_t entry, 10869 uint8 data, 10870 uint8 mask); 10871 10872 /* bcm_field_qualify_IpFrag */ 10873 extern int bcm_field_qualify_IpFrag( 10874 int unit, 10875 bcm_field_entry_t entry, 10876 bcm_field_IpFrag_t frag_info); 10877 10878 /* bcm_field_qualify_Vrf */ 10879 extern int bcm_field_qualify_Vrf( 10880 int unit, 10881 bcm_field_entry_t entry, 10882 uint32 data, 10883 uint32 mask); 10884 10885 /* bcm_field_qualify_L3Ingress */ 10886 extern int bcm_field_qualify_L3Ingress( 10887 int unit, 10888 bcm_field_entry_t entry, 10889 uint32 intf_id, 10890 uint32 mask); 10891 10892 /* bcm_field_qualify_ExtensionHeaderType */ 10893 extern int bcm_field_qualify_ExtensionHeaderType( 10894 int unit, 10895 bcm_field_entry_t entry, 10896 uint8 data, 10897 uint8 mask); 10898 10899 /* bcm_field_qualify_ExtensionHeaderSubCode */ 10900 extern int bcm_field_qualify_ExtensionHeaderSubCode( 10901 int unit, 10902 bcm_field_entry_t entry, 10903 uint8 data, 10904 uint8 mask); 10905 10906 /* bcm_field_qualify_ExtensionHeader2Type */ 10907 extern int bcm_field_qualify_ExtensionHeader2Type( 10908 int unit, 10909 bcm_field_entry_t entry, 10910 uint8 data, 10911 uint8 mask); 10912 10913 /* bcm_field_qualify_L4Ports */ 10914 extern int bcm_field_qualify_L4Ports( 10915 int unit, 10916 bcm_field_entry_t entry, 10917 uint8 data, 10918 uint8 mask); 10919 10920 /* bcm_field_qualify_SampledPkt */ 10921 extern int bcm_field_qualify_SampledPkt( 10922 int unit, 10923 bcm_field_entry_t entry, 10924 uint8 data, 10925 uint8 mask); 10926 10927 /* bcm_field_qualify_SrcIp6SrhValid */ 10928 extern int bcm_field_qualify_SrcIp6SrhValid( 10929 int unit, 10930 bcm_field_entry_t entry, 10931 uint8 data, 10932 uint8 mask); 10933 10934 /* bcm_field_qualify_MirrorCopy */ 10935 extern int bcm_field_qualify_MirrorCopy( 10936 int unit, 10937 bcm_field_entry_t entry, 10938 uint8 data, 10939 uint8 mask); 10940 10941 /* bcm_field_qualify_PphType */ 10942 extern int bcm_field_qualify_PphType( 10943 int unit, 10944 bcm_field_entry_t entry, 10945 uint8 data, 10946 uint8 mask); 10947 10948 /* bcm_field_qualify_TunnelTerminationProcessingProfile */ 10949 extern int bcm_field_qualify_TunnelTerminationProcessingProfile( 10950 int unit, 10951 bcm_field_entry_t entry, 10952 uint8 data, 10953 uint8 mask); 10954 10955 /* bcm_field_qualify_TunnelTerminated */ 10956 extern int bcm_field_qualify_TunnelTerminated( 10957 int unit, 10958 bcm_field_entry_t entry, 10959 uint8 data, 10960 uint8 mask); 10961 10962 /* bcm_field_qualify_MplsTerminated */ 10963 extern int bcm_field_qualify_MplsTerminated( 10964 int unit, 10965 bcm_field_entry_t entry, 10966 uint8 data, 10967 uint8 mask); 10968 10969 /* bcm_field_qualify_InnerSrcIp */ 10970 extern int bcm_field_qualify_InnerSrcIp( 10971 int unit, 10972 bcm_field_entry_t entry, 10973 bcm_ip_t data, 10974 bcm_ip_t mask); 10975 10976 /* bcm_field_qualify_InnerDstIp */ 10977 extern int bcm_field_qualify_InnerDstIp( 10978 int unit, 10979 bcm_field_entry_t entry, 10980 bcm_ip_t data, 10981 bcm_ip_t mask); 10982 10983 /* bcm_field_qualify_InnerSrcIp6 */ 10984 extern int bcm_field_qualify_InnerSrcIp6( 10985 int unit, 10986 bcm_field_entry_t entry, 10987 bcm_ip6_t data, 10988 bcm_ip6_t mask); 10989 10990 /* bcm_field_qualify_InnerDstIp6 */ 10991 extern int bcm_field_qualify_InnerDstIp6( 10992 int unit, 10993 bcm_field_entry_t entry, 10994 bcm_ip6_t data, 10995 bcm_ip6_t mask); 10996 10997 /* bcm_field_qualify_InnerSrcIp6High */ 10998 extern int bcm_field_qualify_InnerSrcIp6High( 10999 int unit, 11000 bcm_field_entry_t entry, 11001 bcm_ip6_t data, 11002 bcm_ip6_t mask); 11003 11004 /* bcm_field_qualify_InnerDstIp6High */ 11005 extern int bcm_field_qualify_InnerDstIp6High( 11006 int unit, 11007 bcm_field_entry_t entry, 11008 bcm_ip6_t data, 11009 bcm_ip6_t mask); 11010 11011 /* bcm_field_qualify_InnerIp6HopLimit */ 11012 extern int bcm_field_qualify_InnerIp6HopLimit( 11013 int unit, 11014 bcm_field_entry_t entry, 11015 uint8 data, 11016 uint8 mask); 11017 11018 /* bcm_field_qualify_InnerTtl */ 11019 extern int bcm_field_qualify_InnerTtl( 11020 int unit, 11021 bcm_field_entry_t entry, 11022 uint8 data, 11023 uint8 mask); 11024 11025 /* bcm_field_qualify_InnerTos */ 11026 extern int bcm_field_qualify_InnerTos( 11027 int unit, 11028 bcm_field_entry_t entry, 11029 uint8 data, 11030 uint8 mask); 11031 11032 /* bcm_field_qualify_InnerDSCP */ 11033 extern int bcm_field_qualify_InnerDSCP( 11034 int unit, 11035 bcm_field_entry_t entry, 11036 uint8 data, 11037 uint8 mask); 11038 11039 /* bcm_field_qualify_InnerIpProtocol */ 11040 extern int bcm_field_qualify_InnerIpProtocol( 11041 int unit, 11042 bcm_field_entry_t entry, 11043 uint8 data, 11044 uint8 mask); 11045 11046 /* bcm_field_qualify_InnerIp6NextHeader */ 11047 extern int bcm_field_qualify_InnerIp6NextHeader( 11048 int unit, 11049 bcm_field_entry_t entry, 11050 uint8 data, 11051 uint8 mask); 11052 11053 /* bcm_field_qualify_InnerIpFrag */ 11054 extern int bcm_field_qualify_InnerIpFrag( 11055 int unit, 11056 bcm_field_entry_t entry, 11057 bcm_field_IpFrag_t frag_info); 11058 11059 /* bcm_field_qualify_DosAttack */ 11060 extern int bcm_field_qualify_DosAttack( 11061 int unit, 11062 bcm_field_entry_t entry, 11063 uint8 data, 11064 uint8 mask); 11065 11066 /* bcm_field_qualify_IpmcStarGroupHit */ 11067 extern int bcm_field_qualify_IpmcStarGroupHit( 11068 int unit, 11069 bcm_field_entry_t entry, 11070 uint8 data, 11071 uint8 mask); 11072 11073 /* bcm_field_qualify_MyStationHit */ 11074 extern int bcm_field_qualify_MyStationHit( 11075 int unit, 11076 bcm_field_entry_t entry, 11077 uint8 data, 11078 uint8 mask); 11079 11080 /* Match on first eight bytes of L2 payload */ 11081 extern int bcm_field_qualify_L2PayloadFirstEightBytes( 11082 int unit, 11083 bcm_field_entry_t entry, 11084 uint32 data1, 11085 uint32 data2, 11086 uint32 mask1, 11087 uint32 mask2); 11088 11089 /* bcm_field_qualify_L3DestRouteHit */ 11090 extern int bcm_field_qualify_L3DestRouteHit( 11091 int unit, 11092 bcm_field_entry_t entry, 11093 uint8 data, 11094 uint8 mask); 11095 11096 /* bcm_field_qualify_L3DestHostHit */ 11097 extern int bcm_field_qualify_L3DestHostHit( 11098 int unit, 11099 bcm_field_entry_t entry, 11100 uint8 data, 11101 uint8 mask); 11102 11103 /* bcm_field_qualify_L3SrcHostHit */ 11104 extern int bcm_field_qualify_L3SrcHostHit( 11105 int unit, 11106 bcm_field_entry_t entry, 11107 uint8 data, 11108 uint8 mask); 11109 11110 /* bcm_field_qualify_L2CacheHit */ 11111 extern int bcm_field_qualify_L2CacheHit( 11112 int unit, 11113 bcm_field_entry_t entry, 11114 uint8 data, 11115 uint8 mask); 11116 11117 /* bcm_field_qualify_L2StationMove */ 11118 extern int bcm_field_qualify_L2StationMove( 11119 int unit, 11120 bcm_field_entry_t entry, 11121 uint8 data, 11122 uint8 mask); 11123 11124 /* bcm_field_qualify_L2DestHit */ 11125 extern int bcm_field_qualify_L2DestHit( 11126 int unit, 11127 bcm_field_entry_t entry, 11128 uint8 data, 11129 uint8 mask); 11130 11131 /* bcm_field_qualify_L2SrcStatic */ 11132 extern int bcm_field_qualify_L2SrcStatic( 11133 int unit, 11134 bcm_field_entry_t entry, 11135 uint8 data, 11136 uint8 mask); 11137 11138 /* bcm_field_qualify_L2SrcHit */ 11139 extern int bcm_field_qualify_L2SrcHit( 11140 int unit, 11141 bcm_field_entry_t entry, 11142 uint8 data, 11143 uint8 mask); 11144 11145 /* bcm_field_qualify_IngressStpState */ 11146 extern int bcm_field_qualify_IngressStpState( 11147 int unit, 11148 bcm_field_entry_t entry, 11149 uint8 data, 11150 uint8 mask); 11151 11152 /* bcm_field_qualify_IngressVPortBridgeDisable */ 11153 extern int bcm_field_qualify_IngressVPortBridgeDisable( 11154 int unit, 11155 bcm_field_entry_t entry, 11156 uint8 data, 11157 uint8 mask); 11158 11159 /* 11160 * Get match criteria for bcmFieldQualifyIngressVPortBridgeDisable 11161 * qualifier from the field entry. 11162 */ 11163 extern int bcm_field_qualify_IngressVPortBridgeDisable_get( 11164 int unit, 11165 bcm_field_entry_t entry, 11166 uint8 *data, 11167 uint8 *mask); 11168 11169 /* bcm_field_qualify_ForwardingVlanValid */ 11170 extern int bcm_field_qualify_ForwardingVlanValid( 11171 int unit, 11172 bcm_field_entry_t entry, 11173 uint8 data, 11174 uint8 mask); 11175 11176 /* bcm_field_qualify_SrcVirtualPortValid */ 11177 extern int bcm_field_qualify_SrcVirtualPortValid( 11178 int unit, 11179 bcm_field_entry_t entry, 11180 uint8 data, 11181 uint8 mask); 11182 11183 /* 11184 * Set match criteria for bcmFieldQualifyDstL3EgressNextHops 11185 * qualifier in the field entry. 11186 */ 11187 extern int bcm_field_qualify_DstL3EgressNextHops( 11188 int unit, 11189 bcm_field_entry_t entry, 11190 uint32 data, 11191 uint32 mask); 11192 11193 /* bcm_field_qualify_VlanTranslationHit */ 11194 extern int bcm_field_qualify_VlanTranslationHit( 11195 int unit, 11196 bcm_field_entry_t entry, 11197 uint8 data, 11198 uint8 mask); 11199 11200 /* bcm_field_qualify_IcmpTypeCode */ 11201 extern int bcm_field_qualify_IcmpTypeCode( 11202 int unit, 11203 bcm_field_entry_t entry, 11204 uint16 data, 11205 uint16 mask); 11206 11207 /* 11208 * Set match criteria for bcmFieldQualifyTranslatedVlanFormat 11209 * qualifier in the field entry. 11210 */ 11211 extern int bcm_field_qualify_TranslatedVlanFormat( 11212 int unit, 11213 bcm_field_entry_t entry, 11214 uint8 data, 11215 uint8 mask); 11216 11217 /* 11218 * Add Fibre Channel outer header type field qualification to a field 11219 * entry. 11220 */ 11221 extern int bcm_field_qualify_FibreChanOuter( 11222 int unit, 11223 bcm_field_entry_t entry, 11224 bcm_field_FibreChan_t fibre_chan_type); 11225 11226 /* 11227 * Add Fibre Channel inner header type field qualification to a field 11228 * entry. 11229 */ 11230 extern int bcm_field_qualify_FibreChanInner( 11231 int unit, 11232 bcm_field_entry_t entry, 11233 bcm_field_FibreChan_t fibre_chan_type); 11234 11235 /* bcm_field_qualify_VnTag */ 11236 extern int bcm_field_qualify_VnTag( 11237 int unit, 11238 bcm_field_entry_t entry, 11239 uint32 data, 11240 uint32 mask); 11241 11242 /* bcm_field_qualify_SubportPktTag */ 11243 extern int bcm_field_qualify_SubportPktTag( 11244 int unit, 11245 bcm_field_entry_t entry, 11246 uint16 data, 11247 uint16 mask); 11248 11249 /* bcm_field_qualify_CnTag */ 11250 extern int bcm_field_qualify_CnTag( 11251 int unit, 11252 bcm_field_entry_t entry, 11253 uint32 data, 11254 uint32 mask); 11255 11256 /* bcm_field_qualify_FabricQueueTag */ 11257 extern int bcm_field_qualify_FabricQueueTag( 11258 int unit, 11259 bcm_field_entry_t entry, 11260 uint32 data, 11261 uint32 mask); 11262 11263 /* 11264 * Get match criteria for bcmFieldQualifyIntPriority 11265 * qualifier from the field entry. 11266 */ 11267 extern int bcm_field_qualify_IntPriority_get( 11268 int unit, 11269 bcm_field_entry_t entry, 11270 uint8 *data, 11271 uint8 *mask); 11272 11273 /* 11274 * Get match criteria for bcmFieldQualifyColor 11275 * qualifier from the field entry. 11276 */ 11277 extern int bcm_field_qualify_Color_get( 11278 int unit, 11279 bcm_field_entry_t entry, 11280 uint8 *color); 11281 11282 /* 11283 * Get match criteria for bcmFieldQualifySrcModPortGport 11284 * qualifier from the field entry. 11285 */ 11286 extern int bcm_field_qualify_SrcModPortGport_get( 11287 int unit, 11288 bcm_field_entry_t entry, 11289 bcm_gport_t *data); 11290 11291 /* 11292 * Get match criteria for bcmFieldQualifySrcModuleGport 11293 * qualifier from the field entry. 11294 */ 11295 extern int bcm_field_qualify_SrcModuleGport_get( 11296 int unit, 11297 bcm_field_entry_t entry, 11298 bcm_gport_t *data); 11299 11300 /* Get loopback type field qualification from a field entry. */ 11301 extern int bcm_field_qualify_LoopbackType_get( 11302 int unit, 11303 bcm_field_entry_t entry, 11304 bcm_field_LoopbackType_t *loopback_type); 11305 11306 /* Get tunnel type field qualification from a field entry. */ 11307 extern int bcm_field_qualify_TunnelType_get( 11308 int unit, 11309 bcm_field_entry_t entry, 11310 bcm_field_TunnelType_t *tunnel_type); 11311 11312 /* 11313 * Get match criteria for bcmFieldQualifyDstL3Egress 11314 * qualifier from the field entry. 11315 */ 11316 extern int bcm_field_qualify_DstL3Egress_get( 11317 int unit, 11318 bcm_field_entry_t entry, 11319 bcm_if_t *if_id); 11320 11321 /* 11322 * Get match criteria for bcmFieldQualifyDstMulticastGroup 11323 * qualifier from the field entry. 11324 */ 11325 extern int bcm_field_qualify_DstMulticastGroup_get( 11326 int unit, 11327 bcm_field_entry_t entry, 11328 bcm_multicast_t *group); 11329 11330 /* 11331 * Get match criteria for bcmFieldQualifySrcMplsGport 11332 * qualifier from the field entry. 11333 */ 11334 extern int bcm_field_qualify_SrcMplsGport_get( 11335 int unit, 11336 bcm_field_entry_t entry, 11337 bcm_gport_t *mpls_port_id); 11338 11339 /* 11340 * Get match criteria for bcmFieldQualifyDstMplsGport 11341 * qualifier from the field entry. 11342 */ 11343 extern int bcm_field_qualify_DstMplsGport_get( 11344 int unit, 11345 bcm_field_entry_t entry, 11346 bcm_gport_t *mpls_port_id); 11347 11348 /* 11349 * Get match criteria for bcmFieldQualifySrcMimGport 11350 * qualifier from the field entry. 11351 */ 11352 extern int bcm_field_qualify_SrcMimGport_get( 11353 int unit, 11354 bcm_field_entry_t entry, 11355 bcm_gport_t *mim_port_id); 11356 11357 /* 11358 * Get match criteria for bcmFieldQualifyDstMimGport 11359 * qualifier from the field entry. 11360 */ 11361 extern int bcm_field_qualify_DstMimGport_get( 11362 int unit, 11363 bcm_field_entry_t entry, 11364 bcm_gport_t *mim_port_id); 11365 11366 /* 11367 * Get match criteria for bcmFieldQualifySrcWlanGport 11368 * qualifier from the field entry. 11369 */ 11370 extern int bcm_field_qualify_SrcWlanGport_get( 11371 int unit, 11372 bcm_field_entry_t entry, 11373 bcm_gport_t *wlan_port_id); 11374 11375 /* 11376 * Get match criteria for bcmFieldQualifyDstWlanGport 11377 * qualifier from the field entry. 11378 */ 11379 extern int bcm_field_qualify_DstWlanGport_get( 11380 int unit, 11381 bcm_field_entry_t entry, 11382 bcm_gport_t *wlan_port_id); 11383 11384 /* 11385 * Get match criteria for bcmFieldQualifySrcVxlanGport 11386 * qualifier from the field entry. 11387 */ 11388 extern int bcm_field_qualify_SrcVxlanGport_get( 11389 int unit, 11390 bcm_field_entry_t entry, 11391 bcm_gport_t *vxlan_port_id); 11392 11393 /* 11394 * Get match criteria for bcmFieldQualifyDstVxlanGport 11395 * qualifier from the field entry. 11396 */ 11397 extern int bcm_field_qualify_DstVxlanGport_get( 11398 int unit, 11399 bcm_field_entry_t entry, 11400 bcm_gport_t *vxlan_port_id); 11401 11402 /* Get loopback field qualification from a field entry. */ 11403 extern int bcm_field_qualify_Loopback_get( 11404 int unit, 11405 bcm_field_entry_t entry, 11406 uint8 *data, 11407 uint8 *mask); 11408 11409 /* 11410 * Get match criteria for bcmFieldQualifyInPort 11411 * qualifier from the field entry. 11412 */ 11413 extern int bcm_field_qualify_InPort_get( 11414 int unit, 11415 bcm_field_entry_t entry, 11416 bcm_port_t *data, 11417 bcm_port_t *mask); 11418 11419 /* 11420 * Get match criteria for bcmFieldQualifyOutPort 11421 * qualifier from the field entry. 11422 */ 11423 extern int bcm_field_qualify_OutPort_get( 11424 int unit, 11425 bcm_field_entry_t entry, 11426 bcm_port_t *data, 11427 bcm_port_t *mask); 11428 11429 /* Get InPorts qualification match criteria from a field entry */ 11430 extern int bcm_field_qualify_InPorts_get( 11431 int unit, 11432 bcm_field_entry_t entry, 11433 bcm_pbmp_t *data, 11434 bcm_pbmp_t *mask); 11435 11436 /* 11437 * Get match criteria for bcmFieldQualifyOutPorts 11438 * qualifier from the field entry. 11439 */ 11440 extern int bcm_field_qualify_OutPorts_get( 11441 int unit, 11442 bcm_field_entry_t entry, 11443 bcm_pbmp_t *data, 11444 bcm_pbmp_t *mask); 11445 11446 /* 11447 * Get match criteria for bcmFieldQualifyDrop 11448 * qualifier from the field entry. 11449 */ 11450 extern int bcm_field_qualify_Drop_get( 11451 int unit, 11452 bcm_field_entry_t entry, 11453 uint8 *data, 11454 uint8 *mask); 11455 11456 /* 11457 * Get match criteria for bcmFieldQualifySrcPort 11458 * qualifier from the field entry. 11459 */ 11460 extern int bcm_field_qualify_SrcPort_get( 11461 int unit, 11462 bcm_field_entry_t entry, 11463 bcm_module_t *data_modid, 11464 bcm_module_t *mask_modid, 11465 bcm_port_t *data_port, 11466 bcm_port_t *mask_port); 11467 11468 /* 11469 * Get match criteria for bcmFieldQualifySrcTrunk 11470 * qualifier from the field entry. 11471 */ 11472 extern int bcm_field_qualify_SrcTrunk_get( 11473 int unit, 11474 bcm_field_entry_t entry, 11475 bcm_trunk_t *data, 11476 bcm_trunk_t *mask); 11477 11478 /* 11479 * Get match criteria for bcmFieldQualifySrcTrunkMemberGport 11480 * qualifier from the field entry. 11481 */ 11482 extern int bcm_field_qualify_SrcTrunkMemberGport_get( 11483 int unit, 11484 bcm_field_entry_t entry, 11485 bcm_gport_t *data); 11486 11487 /* 11488 * Get match criteria for bcmFieldQualifySrcTMPort 11489 * qualifier from the field entry. 11490 */ 11491 extern int bcm_field_qualify_SrcTMPort_get( 11492 int unit, 11493 bcm_field_entry_t entry, 11494 bcm_port_t *data_port, 11495 bcm_port_t *mask_port); 11496 11497 /* 11498 * Get match criteria for bcmFieldQualifyDstPort 11499 * qualifier from the field entry. 11500 */ 11501 extern int bcm_field_qualify_DstPort_get( 11502 int unit, 11503 bcm_field_entry_t entry, 11504 bcm_module_t *data_modid, 11505 bcm_module_t *mask_modid, 11506 bcm_port_t *data_port, 11507 bcm_port_t *mask_port); 11508 11509 /* 11510 * Get match criteria for bcmFieldQualifyDstTrunk 11511 * qualifier from the field entry. 11512 */ 11513 extern int bcm_field_qualify_DstTrunk_get( 11514 int unit, 11515 bcm_field_entry_t entry, 11516 bcm_trunk_t *data, 11517 bcm_trunk_t *mask); 11518 11519 /* 11520 * Get match criteria for bcmFieldQualifyInnerL4SrcPort 11521 * qualifier from the field entry. 11522 */ 11523 extern int bcm_field_qualify_InnerL4SrcPort_get( 11524 int unit, 11525 bcm_field_entry_t entry, 11526 bcm_l4_port_t *data, 11527 bcm_l4_port_t *mask); 11528 11529 /* 11530 * Get match criteria for bcmFieldQualifyInnerL4DstPort 11531 * qualifier from the field entry. 11532 */ 11533 extern int bcm_field_qualify_InnerL4DstPort_get( 11534 int unit, 11535 bcm_field_entry_t entry, 11536 bcm_l4_port_t *data, 11537 bcm_l4_port_t *mask); 11538 11539 /* 11540 * Get match criteria for bcmFieldQualifyL4SrcPort 11541 * qualifier from the field entry. 11542 */ 11543 extern int bcm_field_qualify_L4SrcPort_get( 11544 int unit, 11545 bcm_field_entry_t entry, 11546 bcm_l4_port_t *data, 11547 bcm_l4_port_t *mask); 11548 11549 /* 11550 * Get match criteria for bcmFieldQualifyL4DstPort 11551 * qualifier from the field entry. 11552 */ 11553 extern int bcm_field_qualify_L4DstPort_get( 11554 int unit, 11555 bcm_field_entry_t entry, 11556 bcm_l4_port_t *data, 11557 bcm_l4_port_t *mask); 11558 11559 /* 11560 * Get match criteria for bcmFieldQualifyOuterVlan 11561 * qualifier from the field entry. 11562 */ 11563 extern int bcm_field_qualify_OuterVlan_get( 11564 int unit, 11565 bcm_field_entry_t entry, 11566 bcm_vlan_t *data, 11567 bcm_vlan_t *mask); 11568 11569 /* 11570 * Get match criteria for bcmFieldQualifyOuterVlanId 11571 * qualifier from the field entry. 11572 */ 11573 extern int bcm_field_qualify_OuterVlanId_get( 11574 int unit, 11575 bcm_field_entry_t entry, 11576 bcm_vlan_t *data, 11577 bcm_vlan_t *mask); 11578 11579 /* 11580 * Get match criteria for bcmFieldQualifyOuterVlanPri 11581 * qualifier from the field entry. 11582 */ 11583 extern int bcm_field_qualify_OuterVlanPri_get( 11584 int unit, 11585 bcm_field_entry_t entry, 11586 uint8 *data, 11587 uint8 *mask); 11588 11589 /* 11590 * Get match criteria for bcmFieldQualifyOuterVlanCfi 11591 * qualifier from the field entry. 11592 */ 11593 extern int bcm_field_qualify_OuterVlanCfi_get( 11594 int unit, 11595 bcm_field_entry_t entry, 11596 uint8 *data, 11597 uint8 *mask); 11598 11599 /* 11600 * Get match criteria for bcmFieldQualifyOuterVlanPriCfi 11601 * qualifier from the field entry. 11602 */ 11603 extern int bcm_field_qualify_OuterVlanPriCfi_get( 11604 int unit, 11605 bcm_field_entry_t entry, 11606 uint8 *data, 11607 uint8 *mask); 11608 11609 /* 11610 * Get match criteria for bcmFieldQualifyInnerVlan 11611 * qualifier from the field entry. 11612 */ 11613 extern int bcm_field_qualify_InnerVlan_get( 11614 int unit, 11615 bcm_field_entry_t entry, 11616 bcm_vlan_t *data, 11617 bcm_vlan_t *mask); 11618 11619 /* 11620 * Get match criteria for bcmFieldQualifyInnerVlanId 11621 * qualifier from the field entry. 11622 */ 11623 extern int bcm_field_qualify_InnerVlanId_get( 11624 int unit, 11625 bcm_field_entry_t entry, 11626 bcm_vlan_t *data, 11627 bcm_vlan_t *mask); 11628 11629 /* 11630 * Get match criteria for bcmFieldQualifyInnerVlanPri 11631 * qualifier from the field entry. 11632 */ 11633 extern int bcm_field_qualify_InnerVlanPri_get( 11634 int unit, 11635 bcm_field_entry_t entry, 11636 uint8 *data, 11637 uint8 *mask); 11638 11639 /* 11640 * Get match criteria for bcmFieldQualifyInnerVlanCfi_get 11641 * qualifier from the field entry. 11642 */ 11643 extern int bcm_field_qualify_InnerVlanCfi_get( 11644 int unit, 11645 bcm_field_entry_t entry, 11646 uint8 *data, 11647 uint8 *mask); 11648 11649 /* 11650 * Get match criteria for bcmFieldQualifyEtherType 11651 * qualifier from the field entry. 11652 */ 11653 extern int bcm_field_qualify_EtherType_get( 11654 int unit, 11655 bcm_field_entry_t entry, 11656 uint16 *data, 11657 uint16 *mask); 11658 11659 /* 11660 * Get match criteria for bcmFieldQualifyIpProtocol 11661 * qualifier from the field entry. 11662 */ 11663 extern int bcm_field_qualify_IpProtocol_get( 11664 int unit, 11665 bcm_field_entry_t entry, 11666 uint8 *data, 11667 uint8 *mask); 11668 11669 /* 11670 * Get match criteria for bcmFieldQualifyIpInfo 11671 * qualifier from the field entry. 11672 */ 11673 extern int bcm_field_qualify_IpInfo_get( 11674 int unit, 11675 bcm_field_entry_t entry, 11676 uint32 *data, 11677 uint32 *mask); 11678 11679 /* 11680 * Get match criteria for bcmFieldQualifyPacketRes 11681 * qualifier from the field entry. 11682 */ 11683 extern int bcm_field_qualify_PacketRes_get( 11684 int unit, 11685 bcm_field_entry_t entry, 11686 uint32 *data, 11687 uint32 *mask); 11688 11689 /* 11690 * Get match criteria for bcmFieldQualifySrcIp 11691 * qualifier from the field entry. 11692 */ 11693 extern int bcm_field_qualify_SrcIp_get( 11694 int unit, 11695 bcm_field_entry_t entry, 11696 bcm_ip_t *data, 11697 bcm_ip_t *mask); 11698 11699 /* 11700 * Get match criteria for bcmFieldQualifyDstIp 11701 * qualifier from the field entry. 11702 */ 11703 extern int bcm_field_qualify_DstIp_get( 11704 int unit, 11705 bcm_field_entry_t entry, 11706 bcm_ip_t *data, 11707 bcm_ip_t *mask); 11708 11709 /* 11710 * Get match criteria for bcmFieldQualifyTos 11711 * qualifier from the field entry. 11712 */ 11713 extern int bcm_field_qualify_Tos_get( 11714 int unit, 11715 bcm_field_entry_t entry, 11716 uint8 *data, 11717 uint8 *mask); 11718 11719 /* 11720 * Get match criteria for bcmFieldQualifyDSCP 11721 * qualifier from the field entry. 11722 */ 11723 extern int bcm_field_qualify_DSCP_get( 11724 int unit, 11725 bcm_field_entry_t entry, 11726 uint8 *data, 11727 uint8 *mask); 11728 11729 /* 11730 * Get match criteria for bcmFieldQualifyIpFlags 11731 * qualifier from the field entry. 11732 */ 11733 extern int bcm_field_qualify_IpFlags_get( 11734 int unit, 11735 bcm_field_entry_t entry, 11736 uint8 *data, 11737 uint8 *mask); 11738 11739 /* 11740 * Get match criteria for bcmFieldQualifyTcpControl 11741 * qualifier from the field entry. 11742 */ 11743 extern int bcm_field_qualify_TcpControl_get( 11744 int unit, 11745 bcm_field_entry_t entry, 11746 uint8 *data, 11747 uint8 *mask); 11748 11749 /* 11750 * Get match criteria for bcmFieldQualifyTcpSequenceZero 11751 * qualifier from the field entry. 11752 */ 11753 extern int bcm_field_qualify_TcpSequenceZero_get( 11754 int unit, 11755 bcm_field_entry_t entry, 11756 uint32 *flag); 11757 11758 /* 11759 * Get match criteria for bcmFieldQualifyTcpHeaderSize 11760 * qualifier from the field entry. 11761 */ 11762 extern int bcm_field_qualify_TcpHeaderSize_get( 11763 int unit, 11764 bcm_field_entry_t entry, 11765 uint8 *data, 11766 uint8 *mask); 11767 11768 /* 11769 * Get match criteria for bcmFieldQualifyTtl 11770 * qualifier from the field entry. 11771 */ 11772 extern int bcm_field_qualify_Ttl_get( 11773 int unit, 11774 bcm_field_entry_t entry, 11775 uint8 *data, 11776 uint8 *mask); 11777 11778 /* 11779 * Get match criteria for bcmFieldQualifyRangeCheck 11780 * qualifier from the field entry. 11781 */ 11782 extern int bcm_field_qualify_RangeCheck_get( 11783 int unit, 11784 bcm_field_entry_t entry, 11785 int max_count, 11786 bcm_field_range_t *range, 11787 int *invert, 11788 int *count); 11789 11790 /* 11791 * Get match criteria for bcmFieldQualifySrcIp6 11792 * qualifier from the field entry. 11793 */ 11794 extern int bcm_field_qualify_SrcIp6_get( 11795 int unit, 11796 bcm_field_entry_t entry, 11797 bcm_ip6_t *data, 11798 bcm_ip6_t *mask); 11799 11800 /* 11801 * Get match criteria for bcmFieldQualifyDstIp6 11802 * qualifier from the field entry. 11803 */ 11804 extern int bcm_field_qualify_DstIp6_get( 11805 int unit, 11806 bcm_field_entry_t entry, 11807 bcm_ip6_t *data, 11808 bcm_ip6_t *mask); 11809 11810 /* 11811 * Get match criteria for bcmFieldQualifySrcIp6High 11812 * qualifier from the field entry. 11813 */ 11814 extern int bcm_field_qualify_SrcIp6High_get( 11815 int unit, 11816 bcm_field_entry_t entry, 11817 bcm_ip6_t *data, 11818 bcm_ip6_t *mask); 11819 11820 /* 11821 * Get match criteria for bcmFieldQualifyDstIp6High 11822 * qualifier from the field entry. 11823 */ 11824 extern int bcm_field_qualify_DstIp6High_get( 11825 int unit, 11826 bcm_field_entry_t entry, 11827 bcm_ip6_t *data, 11828 bcm_ip6_t *mask); 11829 11830 /* 11831 * Get match criteria for bcmFieldQualifyDstIp6Low 11832 * qualifier from the field entry. 11833 */ 11834 extern int bcm_field_qualify_DstIp6Low_get( 11835 int unit, 11836 bcm_field_entry_t entry, 11837 bcm_ip6_t *data, 11838 bcm_ip6_t *mask); 11839 11840 /* 11841 * Get match criteria for bcmFieldQualifySrcIp6Low 11842 * qualifier from the field entry. 11843 */ 11844 extern int bcm_field_qualify_SrcIp6Low_get( 11845 int unit, 11846 bcm_field_entry_t entry, 11847 bcm_ip6_t *data, 11848 bcm_ip6_t *mask); 11849 11850 /* 11851 * Get match criteria for bcmFieldQualifyIp6NextHeader 11852 * qualifier from the field entry. 11853 */ 11854 extern int bcm_field_qualify_Ip6NextHeader_get( 11855 int unit, 11856 bcm_field_entry_t entry, 11857 uint8 *data, 11858 uint8 *mask); 11859 11860 /* 11861 * Get match criteria for bcmFieldQualifyIp6TrafficClass 11862 * qualifier from the field entry. 11863 */ 11864 extern int bcm_field_qualify_Ip6TrafficClass_get( 11865 int unit, 11866 bcm_field_entry_t entry, 11867 uint8 *data, 11868 uint8 *mask); 11869 11870 /* 11871 * Get match criteria for bcmFieldQualifyInnerIp6FlowLabel 11872 * qualifier from the field entry. 11873 */ 11874 extern int bcm_field_qualify_InnerIp6FlowLabel_get( 11875 int unit, 11876 bcm_field_entry_t entry, 11877 uint32 *data, 11878 uint32 *mask); 11879 11880 /* 11881 * Get match criteria for bcmFieldQualifyIp6FlowLabel 11882 * qualifier from the field entry. 11883 */ 11884 extern int bcm_field_qualify_Ip6FlowLabel_get( 11885 int unit, 11886 bcm_field_entry_t entry, 11887 uint32 *data, 11888 uint32 *mask); 11889 11890 /* 11891 * Get match criteria for bcmFieldQualifyIp6HopLimit 11892 * qualifier from the field entry. 11893 */ 11894 extern int bcm_field_qualify_Ip6HopLimit_get( 11895 int unit, 11896 bcm_field_entry_t entry, 11897 uint8 *data, 11898 uint8 *mask); 11899 11900 /* 11901 * Get match criteria for bcmFieldQualifySrcMac 11902 * qualifier from the field entry. 11903 */ 11904 extern int bcm_field_qualify_SrcMac_get( 11905 int unit, 11906 bcm_field_entry_t entry, 11907 bcm_mac_t *data, 11908 bcm_mac_t *mask); 11909 11910 /* 11911 * Get match criteria for bcmFieldQualifyDstMac 11912 * qualifier from the field entry. 11913 */ 11914 extern int bcm_field_qualify_DstMac_get( 11915 int unit, 11916 bcm_field_entry_t entry, 11917 bcm_mac_t *data, 11918 bcm_mac_t *mask); 11919 11920 /* 11921 * Set match criteria for bcmFieldQualifyForwardHdrSrcMac 11922 * qualifier from the field entry. 11923 */ 11924 extern int bcm_field_qualify_ForwardHdrSrcMac( 11925 int unit, 11926 bcm_field_entry_t entry, 11927 bcm_mac_t data, 11928 bcm_mac_t mask); 11929 11930 /* 11931 * Get match criteria for bcmFieldQualifyForwardHdrSrcMac 11932 * qualifier from the field entry. 11933 */ 11934 extern int bcm_field_qualify_ForwardHdrSrcMac_get( 11935 int unit, 11936 bcm_field_entry_t entry, 11937 bcm_mac_t *data, 11938 bcm_mac_t *mask); 11939 11940 /* 11941 * Set match criteria for bcmFieldQualifyForwardHdrDstMac 11942 * qualifier from the field entry. 11943 */ 11944 extern int bcm_field_qualify_ForwardHdrDstMac( 11945 int unit, 11946 bcm_field_entry_t entry, 11947 bcm_mac_t data, 11948 bcm_mac_t mask); 11949 11950 /* 11951 * Get match criteria for bcmFieldQualifyForwardHdrDstMac 11952 * qualifier from the field entry. 11953 */ 11954 extern int bcm_field_qualify_ForwardHdrDstMac_get( 11955 int unit, 11956 bcm_field_entry_t entry, 11957 bcm_mac_t *data, 11958 bcm_mac_t *mask); 11959 11960 /* 11961 * Set match criteria for bcmFieldQualifyForwardHdrVlanId 11962 * qualifier in the field entry. 11963 */ 11964 extern int bcm_field_qualify_ForwardHdrVlanId( 11965 int unit, 11966 bcm_field_entry_t entry, 11967 bcm_vlan_t data, 11968 bcm_vlan_t mask); 11969 11970 /* 11971 * Get match criteria for bcmFieldQualifyForwardHdrVlanId 11972 * qualifier from the field entry. 11973 */ 11974 extern int bcm_field_qualify_ForwardHdrVlanId_get( 11975 int unit, 11976 bcm_field_entry_t entry, 11977 bcm_vlan_t *data, 11978 bcm_vlan_t *mask); 11979 11980 /* 11981 * Get match criteria for bcmFieldQualifyInnerIpType 11982 * qualifier from the field entry. 11983 */ 11984 extern int bcm_field_qualify_InnerIpType_get( 11985 int unit, 11986 bcm_field_entry_t entry, 11987 bcm_field_IpType_t *type); 11988 11989 /* 11990 * Get match criteria for bcmFieldQualifyForwardingType 11991 * qualifier from the field entry. 11992 */ 11993 extern int bcm_field_qualify_ForwardingType_get( 11994 int unit, 11995 bcm_field_entry_t entry, 11996 bcm_field_ForwardingType_t *type); 11997 11998 /* 11999 * Get match criteria for bcmFieldQualifyAppType 12000 * qualifier from the field entry. 12001 */ 12002 extern int bcm_field_qualify_AppType_get( 12003 int unit, 12004 bcm_field_entry_t entry, 12005 bcm_field_AppType_t *type); 12006 12007 /* 12008 * Get match criteria for bcmFieldQualifyIpType 12009 * qualifier from the field entry. 12010 */ 12011 extern int bcm_field_qualify_IpType_get( 12012 int unit, 12013 bcm_field_entry_t entry, 12014 bcm_field_IpType_t *type); 12015 12016 /* 12017 * Get match criteria for bcmFieldQualifyL2Format 12018 * qualifier from the field entry. 12019 */ 12020 extern int bcm_field_qualify_L2Format_get( 12021 int unit, 12022 bcm_field_entry_t entry, 12023 bcm_field_L2Format_t *type); 12024 12025 /* 12026 * Get match criteria for bcmFieldQualifyTranslatedVlanFormat 12027 * qualifier from the field entry. 12028 */ 12029 extern int bcm_field_qualify_TranslatedVlanFormat_get( 12030 int unit, 12031 bcm_field_entry_t entry, 12032 uint8 *data, 12033 uint8 *mask); 12034 12035 /* 12036 * Get match criteria for bcmFieldQualifyVlanFormat 12037 * qualifier from the field entry. 12038 */ 12039 extern int bcm_field_qualify_VlanFormat_get( 12040 int unit, 12041 bcm_field_entry_t entry, 12042 uint8 *data, 12043 uint8 *mask); 12044 12045 /* 12046 * Get match criteria for bcmFieldQualifyMHOpcode 12047 * qualifier from the field entry. 12048 */ 12049 extern int bcm_field_qualify_MHOpcode_get( 12050 int unit, 12051 bcm_field_entry_t entry, 12052 uint8 *data, 12053 uint8 *mask); 12054 12055 /* bcm_field_qualify_Decap_get */ 12056 extern int bcm_field_qualify_Decap_get( 12057 int unit, 12058 bcm_field_entry_t entry, 12059 bcm_field_decap_t *decap); 12060 12061 /* 12062 * Get match criteria for bcmFieldQualifyDstHiGig 12063 * qualifier from the field entry. 12064 */ 12065 extern int bcm_field_qualify_DstHiGig_get( 12066 int unit, 12067 bcm_field_entry_t entry, 12068 uint8 *data, 12069 uint8 *mask); 12070 12071 /* 12072 * Get match criteria for bcmFieldQualifyHiGig 12073 * qualifier from the field entry. 12074 */ 12075 extern int bcm_field_qualify_HiGig_get( 12076 int unit, 12077 bcm_field_entry_t entry, 12078 uint8 *data, 12079 uint8 *mask); 12080 12081 /* 12082 * Get match criteria for bcmFieldQualifyHiGigProxy 12083 * qualifier from the field entry. 12084 */ 12085 extern int bcm_field_qualify_HiGigProxy_get( 12086 int unit, 12087 bcm_field_entry_t entry, 12088 uint8 *data, 12089 uint8 *mask); 12090 12091 /* 12092 * Get match criteria for bcmFieldQualifyInterfaceClassPort 12093 * qualifier from the field entry. 12094 */ 12095 extern int bcm_field_qualify_InterfaceClassPort_get( 12096 int unit, 12097 bcm_field_entry_t entry, 12098 uint32 *data, 12099 uint32 *mask); 12100 12101 /* 12102 * Get match criteria for bcmFieldQualifyInterfaceClassL2 12103 * qualifier from the field entry. 12104 */ 12105 extern int bcm_field_qualify_InterfaceClassL2_get( 12106 int unit, 12107 bcm_field_entry_t entry, 12108 uint32 *data, 12109 uint32 *mask); 12110 12111 /* 12112 * Get match criteria for bcmFieldQualifyInterfaceClassL3 12113 * qualifier from the field entry. 12114 */ 12115 extern int bcm_field_qualify_InterfaceClassL3_get( 12116 int unit, 12117 bcm_field_entry_t entry, 12118 uint32 *data, 12119 uint32 *mask); 12120 12121 /* 12122 * Get match criteria for bcmFieldQualifySrcClassL2 12123 * qualifier from the field entry. 12124 */ 12125 extern int bcm_field_qualify_SrcClassL2_get( 12126 int unit, 12127 bcm_field_entry_t entry, 12128 uint32 *data, 12129 uint32 *mask); 12130 12131 /* 12132 * Get match criteria for bcmFieldQualifySrcClassL3 12133 * qualifier from the field entry. 12134 */ 12135 extern int bcm_field_qualify_SrcClassL3_get( 12136 int unit, 12137 bcm_field_entry_t entry, 12138 uint32 *data, 12139 uint32 *mask); 12140 12141 /* 12142 * Get match criteria for bcmFieldQualifySrcClassField 12143 * qualifier from the field entry. 12144 */ 12145 extern int bcm_field_qualify_SrcClassField_get( 12146 int unit, 12147 bcm_field_entry_t entry, 12148 uint32 *data, 12149 uint32 *mask); 12150 12151 /* 12152 * Get match criteria for bcmFieldQualifyDstClassL2 12153 * qualifier from the field entry. 12154 */ 12155 extern int bcm_field_qualify_DstClassL2_get( 12156 int unit, 12157 bcm_field_entry_t entry, 12158 uint32 *data, 12159 uint32 *mask); 12160 12161 /* 12162 * Get match criteria for bcmFieldQualifyDstClassL3 12163 * qualifier from the field entry. 12164 */ 12165 extern int bcm_field_qualify_DstClassL3_get( 12166 int unit, 12167 bcm_field_entry_t entry, 12168 uint32 *data, 12169 uint32 *mask); 12170 12171 /* 12172 * Get match criteria for bcmFieldQualifyDstClassField 12173 * qualifier from the field entry. 12174 */ 12175 extern int bcm_field_qualify_DstClassField_get( 12176 int unit, 12177 bcm_field_entry_t entry, 12178 uint32 *data, 12179 uint32 *mask); 12180 12181 /* 12182 * Get match criteria for bcmFieldQualifyIpProtocolCommon 12183 * qualifier from the field entry. 12184 */ 12185 extern int bcm_field_qualify_IpProtocolCommon_get( 12186 int unit, 12187 bcm_field_entry_t entry, 12188 bcm_field_IpProtocolCommon_t *protocol); 12189 12190 /* 12191 * Get match criteria for bcmFieldQualifyInnerIpProtocolCommon 12192 * qualifier from the field entry. 12193 */ 12194 extern int bcm_field_qualify_InnerIpProtocolCommon_get( 12195 int unit, 12196 bcm_field_entry_t entry, 12197 bcm_field_IpProtocolCommon_t *protocol); 12198 12199 /* 12200 * Get match criteria for bcmFieldQualifySnap 12201 * qualifier from the field entry. 12202 */ 12203 extern int bcm_field_qualify_Snap_get( 12204 int unit, 12205 bcm_field_entry_t entry, 12206 bcm_field_snap_header_t *data, 12207 bcm_field_snap_header_t *mask); 12208 12209 /* 12210 * Get match criteria for bcmFieldQualifyLlc 12211 * qualifier from the field entry. 12212 */ 12213 extern int bcm_field_qualify_Llc_get( 12214 int unit, 12215 bcm_field_entry_t entry, 12216 bcm_field_llc_header_t *data, 12217 bcm_field_llc_header_t *mask); 12218 12219 /* 12220 * Get match criteria for bcmFieldQualifyInnerTpid 12221 * qualifier from the field entry. 12222 */ 12223 extern int bcm_field_qualify_InnerTpid_get( 12224 int unit, 12225 bcm_field_entry_t entry, 12226 uint16 *tpid); 12227 12228 /* 12229 * Get match criteria for bcmFieldQualifyOuterTpid 12230 * qualifier from the field entry. 12231 */ 12232 extern int bcm_field_qualify_OuterTpid_get( 12233 int unit, 12234 bcm_field_entry_t entry, 12235 uint16 *tpid); 12236 12237 /* 12238 * Get match criteria for bcmFieldQualifyL3Routable 12239 * qualifier from the field entry. 12240 */ 12241 extern int bcm_field_qualify_L3Routable_get( 12242 int unit, 12243 bcm_field_entry_t entry, 12244 uint8 *data, 12245 uint8 *mask); 12246 12247 /* 12248 * Get match criteria for bcmFieldQualifyIpFrag 12249 * qualifier from the field entry. 12250 */ 12251 extern int bcm_field_qualify_IpFrag_get( 12252 int unit, 12253 bcm_field_entry_t entry, 12254 bcm_field_IpFrag_t *frag_info); 12255 12256 /* 12257 * Get match criteria for bcmFieldQualifyVrf 12258 * qualifier from the field entry. 12259 */ 12260 extern int bcm_field_qualify_Vrf_get( 12261 int unit, 12262 bcm_field_entry_t entry, 12263 uint32 *data, 12264 uint32 *mask); 12265 12266 /* 12267 * Get match criteria for bcmFieldQualifyL3Ingress 12268 * qualifier from the field entry. 12269 */ 12270 extern int bcm_field_qualify_L3Ingress_get( 12271 int unit, 12272 bcm_field_entry_t entry, 12273 uint32 *data, 12274 uint32 *mask); 12275 12276 /* 12277 * Get match criteria for bcmFieldQualifyExtensionHeaderType 12278 * qualifier from the field entry. 12279 */ 12280 extern int bcm_field_qualify_ExtensionHeaderType_get( 12281 int unit, 12282 bcm_field_entry_t entry, 12283 uint8 *data, 12284 uint8 *mask); 12285 12286 /* 12287 * Get match criteria for bcmFieldQualifyExtensionHeaderSubCode 12288 * qualifier from the field entry. 12289 */ 12290 extern int bcm_field_qualify_ExtensionHeaderSubCode_get( 12291 int unit, 12292 bcm_field_entry_t entry, 12293 uint8 *data, 12294 uint8 *mask); 12295 12296 /* 12297 * Get match criteria for bcmFieldQualifyExtensionHeader2Type 12298 * qualifier from the field entry. 12299 */ 12300 extern int bcm_field_qualify_ExtensionHeader2Type_get( 12301 int unit, 12302 bcm_field_entry_t entry, 12303 uint8 *data, 12304 uint8 *mask); 12305 12306 /* 12307 * Get match criteria for bcmFieldQualifySampledPkt 12308 * qualifier from the field entry. 12309 */ 12310 extern int bcm_field_qualify_SampledPkt_get( 12311 int unit, 12312 bcm_field_entry_t entry, 12313 uint8 *data, 12314 uint8 *mask); 12315 12316 /* 12317 * Get match criteria for bcmFieldQualifySrcIp6SrhValid 12318 * qualifier from the field entry. 12319 */ 12320 extern int bcm_field_qualify_SrcIp6SrhValid_get( 12321 int unit, 12322 bcm_field_entry_t entry, 12323 uint8 *data, 12324 uint8 *mask); 12325 12326 /* 12327 * Get match criteria for bcmFieldQualifyL4Ports 12328 * qualifier from the field entry. 12329 */ 12330 extern int bcm_field_qualify_L4Ports_get( 12331 int unit, 12332 bcm_field_entry_t entry, 12333 uint8 *data, 12334 uint8 *mask); 12335 12336 /* 12337 * Get match criteria for bcmFieldQualifyMirrorCopy 12338 * qualifier from the field entry. 12339 */ 12340 extern int bcm_field_qualify_MirrorCopy_get( 12341 int unit, 12342 bcm_field_entry_t entry, 12343 uint8 *data, 12344 uint8 *mask); 12345 12346 /* 12347 * Get match criteria for bcmFieldQualifyPphType 12348 * qualifier from the field entry. 12349 */ 12350 extern int bcm_field_qualify_PphType_get( 12351 int unit, 12352 bcm_field_entry_t entry, 12353 uint8 *data, 12354 uint8 *mask); 12355 12356 /* 12357 * Get match criteria for 12358 * bcmFieldQualifyTunnelTerminationProcessingProfile 12359 * qualifier from the field entry. 12360 */ 12361 extern int bcm_field_qualify_TunnelTerminationProcessingProfile_get( 12362 int unit, 12363 bcm_field_entry_t entry, 12364 uint8 *data, 12365 uint8 *mask); 12366 12367 /* 12368 * Get match criteria for bcmFieldQualifyTunnelTerminated 12369 * qualifier from the field entry. 12370 */ 12371 extern int bcm_field_qualify_TunnelTerminated_get( 12372 int unit, 12373 bcm_field_entry_t entry, 12374 uint8 *data, 12375 uint8 *mask); 12376 12377 /* 12378 * Get match criteria for bcmFieldQualifyMplsTerminated 12379 * qualifier from the field entry. 12380 */ 12381 extern int bcm_field_qualify_MplsTerminated_get( 12382 int unit, 12383 bcm_field_entry_t entry, 12384 uint8 *data, 12385 uint8 *mask); 12386 12387 /* 12388 * Get match criteria for bcmFieldQualifyInnerSrcIp 12389 * qualifier from the field entry. 12390 */ 12391 extern int bcm_field_qualify_InnerSrcIp_get( 12392 int unit, 12393 bcm_field_entry_t entry, 12394 bcm_ip_t *data, 12395 bcm_ip_t *mask); 12396 12397 /* 12398 * Get match criteria for bcmFieldQualifyInnerDstIp 12399 * qualifier from the field entry. 12400 */ 12401 extern int bcm_field_qualify_InnerDstIp_get( 12402 int unit, 12403 bcm_field_entry_t entry, 12404 bcm_ip_t *data, 12405 bcm_ip_t *mask); 12406 12407 /* 12408 * Get match criteria for bcmFieldQualifyInnerSrcIp6 12409 * qualifier from the field entry. 12410 */ 12411 extern int bcm_field_qualify_InnerSrcIp6_get( 12412 int unit, 12413 bcm_field_entry_t entry, 12414 bcm_ip6_t *data, 12415 bcm_ip6_t *mask); 12416 12417 /* 12418 * Get match criteria for bcmFieldQualifyInnerDstIp6 12419 * qualifier from the field entry. 12420 */ 12421 extern int bcm_field_qualify_InnerDstIp6_get( 12422 int unit, 12423 bcm_field_entry_t entry, 12424 bcm_ip6_t *data, 12425 bcm_ip6_t *mask); 12426 12427 /* 12428 * Get match criteria for bcmFieldQualifyInnerSrcIp6High 12429 * qualifier from the field entry. 12430 */ 12431 extern int bcm_field_qualify_InnerSrcIp6High_get( 12432 int unit, 12433 bcm_field_entry_t entry, 12434 bcm_ip6_t *data, 12435 bcm_ip6_t *mask); 12436 12437 /* 12438 * Get match criteria for bcmFieldQualifyInnerDstIp6High 12439 * qualifier from the field entry. 12440 */ 12441 extern int bcm_field_qualify_InnerDstIp6High_get( 12442 int unit, 12443 bcm_field_entry_t entry, 12444 bcm_ip6_t *data, 12445 bcm_ip6_t *mask); 12446 12447 /* 12448 * Get match criteria for bcmFieldQualifyInnerTtl 12449 * qualifier from the field entry. 12450 */ 12451 extern int bcm_field_qualify_InnerTtl_get( 12452 int unit, 12453 bcm_field_entry_t entry, 12454 uint8 *data, 12455 uint8 *mask); 12456 12457 /* 12458 * Get match criteria for bcmFieldQualifyInnerIp6HopLimit 12459 * qualifier from the field entry. 12460 */ 12461 extern int bcm_field_qualify_InnerIp6HopLimit_get( 12462 int unit, 12463 bcm_field_entry_t entry, 12464 uint8 *data, 12465 uint8 *mask); 12466 12467 /* 12468 * Get match criteria for bcmFieldQualifyInnerTos 12469 * qualifier from the field entry. 12470 */ 12471 extern int bcm_field_qualify_InnerTos_get( 12472 int unit, 12473 bcm_field_entry_t entry, 12474 uint8 *data, 12475 uint8 *mask); 12476 12477 /* 12478 * Get match criteria for bcmFieldQualifyInnerDSCP 12479 * qualifier from the field entry. 12480 */ 12481 extern int bcm_field_qualify_InnerDSCP_get( 12482 int unit, 12483 bcm_field_entry_t entry, 12484 uint8 *data, 12485 uint8 *mask); 12486 12487 /* 12488 * Get match criteria for bcmFieldQualifyInnerIpProtocol 12489 * qualifier from the field entry. 12490 */ 12491 extern int bcm_field_qualify_InnerIpProtocol_get( 12492 int unit, 12493 bcm_field_entry_t entry, 12494 uint8 *data, 12495 uint8 *mask); 12496 12497 /* 12498 * Get match criteria for bcmFieldQualifyInnerIp6NextHeader 12499 * qualifier from the field entry. 12500 */ 12501 extern int bcm_field_qualify_InnerIp6NextHeader_get( 12502 int unit, 12503 bcm_field_entry_t entry, 12504 uint8 *data, 12505 uint8 *mask); 12506 12507 /* 12508 * Get match criteria for bcmFieldQualifyInnerIpFrag 12509 * qualifier from the field entry. 12510 */ 12511 extern int bcm_field_qualify_InnerIpFrag_get( 12512 int unit, 12513 bcm_field_entry_t entry, 12514 bcm_field_IpFrag_t *frag_info); 12515 12516 /* 12517 * Get match criteria for bcmFieldQualifyDosAttack 12518 * qualifier from the field entry. 12519 */ 12520 extern int bcm_field_qualify_DosAttack_get( 12521 int unit, 12522 bcm_field_entry_t entry, 12523 uint8 *data, 12524 uint8 *mask); 12525 12526 /* 12527 * Get match criteria for bcmFieldQualifyIpmcStarGroupHit 12528 * qualifier from the field entry. 12529 */ 12530 extern int bcm_field_qualify_IpmcStarGroupHit_get( 12531 int unit, 12532 bcm_field_entry_t entry, 12533 uint8 *data, 12534 uint8 *mask); 12535 12536 /* 12537 * Get match criteria for bcmFieldQualifyMyStationHit 12538 * qualifier from the field entry. 12539 */ 12540 extern int bcm_field_qualify_MyStationHit_get( 12541 int unit, 12542 bcm_field_entry_t entry, 12543 uint8 *data, 12544 uint8 *mask); 12545 12546 /* 12547 * Get match criteria for bcmFieldQualifyL2PayloadFirstEightBytes 12548 * qualifier from the field entry. 12549 */ 12550 extern int bcm_field_qualify_L2PayloadFirstEightBytes_get( 12551 int unit, 12552 bcm_field_entry_t entry, 12553 uint32 *data1, 12554 uint32 *data2, 12555 uint32 *mask1, 12556 uint32 *mask2); 12557 12558 /* 12559 * Get match criteria for bcmFieldQualifyL3DestRouteHit 12560 * qualifier from the field entry. 12561 */ 12562 extern int bcm_field_qualify_L3DestRouteHit_get( 12563 int unit, 12564 bcm_field_entry_t entry, 12565 uint8 *data, 12566 uint8 *mask); 12567 12568 /* 12569 * Get match criteria for bcmFieldQualifyL3DestHostHit 12570 * qualifier from the field entry. 12571 */ 12572 extern int bcm_field_qualify_L3DestHostHit_get( 12573 int unit, 12574 bcm_field_entry_t entry, 12575 uint8 *data, 12576 uint8 *mask); 12577 12578 /* 12579 * Get match criteria for bcmFieldQualifyL3SrcHostHit 12580 * qualifier from the field entry. 12581 */ 12582 extern int bcm_field_qualify_L3SrcHostHit_get( 12583 int unit, 12584 bcm_field_entry_t entry, 12585 uint8 *data, 12586 uint8 *mask); 12587 12588 /* 12589 * Get match criteria for bcmFieldQualifyL2CacheHit 12590 * qualifier from the field entry. 12591 */ 12592 extern int bcm_field_qualify_L2CacheHit_get( 12593 int unit, 12594 bcm_field_entry_t entry, 12595 uint8 *data, 12596 uint8 *mask); 12597 12598 /* 12599 * Get match criteria for bcmFieldQualifyL2StationMove 12600 * qualifier from the field entry. 12601 */ 12602 extern int bcm_field_qualify_L2StationMove_get( 12603 int unit, 12604 bcm_field_entry_t entry, 12605 uint8 *data, 12606 uint8 *mask); 12607 12608 /* 12609 * Get match criteria for bcmFieldQualifyL2DestHit 12610 * qualifier from the field entry. 12611 */ 12612 extern int bcm_field_qualify_L2DestHit_get( 12613 int unit, 12614 bcm_field_entry_t entry, 12615 uint8 *data, 12616 uint8 *mask); 12617 12618 /* 12619 * Get match criteria for bcmFieldQualifyL2SrcStatic 12620 * qualifier from the field entry. 12621 */ 12622 extern int bcm_field_qualify_L2SrcStatic_get( 12623 int unit, 12624 bcm_field_entry_t entry, 12625 uint8 *data, 12626 uint8 *mask); 12627 12628 /* 12629 * Get match criteria for bcmFieldQualifyL2SrcHit 12630 * qualifier from the field entry. 12631 */ 12632 extern int bcm_field_qualify_L2SrcHit_get( 12633 int unit, 12634 bcm_field_entry_t entry, 12635 uint8 *data, 12636 uint8 *mask); 12637 12638 /* 12639 * Get match criteria for bcmFieldQualifyIngressStpState 12640 * qualifier from the field entry. 12641 */ 12642 extern int bcm_field_qualify_IngressStpState_get( 12643 int unit, 12644 bcm_field_entry_t entry, 12645 uint8 *data, 12646 uint8 *mask); 12647 12648 /* 12649 * Get match criteria for bcmFieldQualifyForwardingVlanValid 12650 * qualifier from the field entry. 12651 */ 12652 extern int bcm_field_qualify_ForwardingVlanValid_get( 12653 int unit, 12654 bcm_field_entry_t entry, 12655 uint8 *data, 12656 uint8 *mask); 12657 12658 /* 12659 * Get match criteria for bcmFieldQualifySrcVirtualPortValid 12660 * qualifier from the field entry. 12661 */ 12662 extern int bcm_field_qualify_SrcVirtualPortValid_get( 12663 int unit, 12664 bcm_field_entry_t entry, 12665 uint8 *data, 12666 uint8 *mask); 12667 12668 /* 12669 * Get match criteria for bcmFieldQualifyDstL3EgressNextHops 12670 * qualifier from the field entry. 12671 */ 12672 extern int bcm_field_qualify_DstL3EgressNextHops_get( 12673 int unit, 12674 bcm_field_entry_t entry, 12675 uint32 *data, 12676 uint32 *mask); 12677 12678 /* 12679 * Get match criteria for bcmFieldQualifyVlanTranslationHit 12680 * qualifier from the field entry. 12681 */ 12682 extern int bcm_field_qualify_VlanTranslationHit_get( 12683 int unit, 12684 bcm_field_entry_t entry, 12685 uint8 *data, 12686 uint8 *mask); 12687 12688 /* 12689 * Get match criteria for bcmFieldQualifyIcmpTypeCode 12690 * qualifier from the field entry. 12691 */ 12692 extern int bcm_field_qualify_IcmpTypeCode_get( 12693 int unit, 12694 bcm_field_entry_t entry, 12695 uint16 *data, 12696 uint16 *mask); 12697 12698 /* 12699 * Get Fibre Channel outer header type field qualification from a field 12700 * entry. 12701 */ 12702 extern int bcm_field_qualify_FibreChanOuter_get( 12703 int unit, 12704 bcm_field_entry_t entry, 12705 bcm_field_FibreChan_t *fibre_chan_type); 12706 12707 /* 12708 * Get Fibre Channel inner header type field qualification from a field 12709 * entry. 12710 */ 12711 extern int bcm_field_qualify_FibreChanInner_get( 12712 int unit, 12713 bcm_field_entry_t entry, 12714 bcm_field_FibreChan_t *fibre_chan_type); 12715 12716 /* 12717 * Get match criteria for bcmFieldQualifyVnTag 12718 * qualifier from the field entry. 12719 */ 12720 extern int bcm_field_qualify_VnTag_get( 12721 int unit, 12722 bcm_field_entry_t entry, 12723 uint32 *data, 12724 uint32 *mask); 12725 12726 /* 12727 * Get match criteria for bcmFieldQualifySubportPktTag 12728 * qualifier from the field entry. 12729 */ 12730 extern int bcm_field_qualify_SubportPktTag_get( 12731 int unit, 12732 bcm_field_entry_t entry, 12733 uint16 *data, 12734 uint16 *mask); 12735 12736 /* 12737 * Get match criteria for bcmFieldQualifyCnTag 12738 * qualifier from the field entry. 12739 */ 12740 extern int bcm_field_qualify_CnTag_get( 12741 int unit, 12742 bcm_field_entry_t entry, 12743 uint32 *data, 12744 uint32 *mask); 12745 12746 /* 12747 * Get match criteria for bcmFieldQualifyFabricQueueTag 12748 * qualifier from the field entry. 12749 */ 12750 extern int bcm_field_qualify_FabricQueueTag_get( 12751 int unit, 12752 bcm_field_entry_t entry, 12753 uint32 *data, 12754 uint32 *mask); 12755 12756 /* bcm_field_qualify_FlowId */ 12757 extern int bcm_field_qualify_FlowId( 12758 int unit, 12759 bcm_field_entry_t entry, 12760 uint16 data, 12761 uint16 mask); 12762 12763 /* bcm_field_qualify_InVPort */ 12764 extern int bcm_field_qualify_InVPort( 12765 int unit, 12766 bcm_field_entry_t entry, 12767 uint8 data, 12768 uint8 mask); 12769 12770 /* bcm_field_qualify_OutVPort */ 12771 extern int bcm_field_qualify_OutVPort( 12772 int unit, 12773 bcm_field_entry_t entry, 12774 uint8 data, 12775 uint8 mask); 12776 12777 /* bcm_field_qualify_InVPort32 */ 12778 extern int bcm_field_qualify_InVPort32( 12779 int unit, 12780 bcm_field_entry_t entry, 12781 uint32 data, 12782 uint32 mask); 12783 12784 /* bcm_field_qualify_OutVPort32 */ 12785 extern int bcm_field_qualify_OutVPort32( 12786 int unit, 12787 bcm_field_entry_t entry, 12788 uint32 data, 12789 uint32 mask); 12790 12791 /* 12792 * Get match criteria for bcmFieldQualifyFlowId 12793 * qualifier from the field entry. 12794 */ 12795 extern int bcm_field_qualify_FlowId_get( 12796 int unit, 12797 bcm_field_entry_t entry, 12798 uint16 *data, 12799 uint16 *mask); 12800 12801 /* 12802 * Get match criteria for bcmFieldQualifyInVPort 12803 * qualifier from the field entry (8-bits). 12804 */ 12805 extern int bcm_field_qualify_InVPort_get( 12806 int unit, 12807 bcm_field_entry_t entry, 12808 uint8 *data, 12809 uint8 *mask); 12810 12811 /* 12812 * Get match criteria for bcmFieldQualifyOutVPort 12813 * qualifier from the field entry (8-bits). 12814 */ 12815 extern int bcm_field_qualify_OutVPort_get( 12816 int unit, 12817 bcm_field_entry_t entry, 12818 uint8 *data, 12819 uint8 *mask); 12820 12821 /* 12822 * Get match criteria for bcmFieldQualifyInVPort 12823 * qualifier from the field entry (32-bits). 12824 */ 12825 extern int bcm_field_qualify_InVPort32_get( 12826 int unit, 12827 bcm_field_entry_t entry, 12828 uint32 *data, 12829 uint32 *mask); 12830 12831 /* 12832 * Get match criteria for bcmFieldQualifyOutVPort 12833 * qualifier from the field entry (32-bits). 12834 */ 12835 extern int bcm_field_qualify_OutVPort32_get( 12836 int unit, 12837 bcm_field_entry_t entry, 12838 uint32 *data, 12839 uint32 *mask); 12840 12841 /* bcm_field_qualify_LlidValue */ 12842 extern int bcm_field_qualify_LlidValue( 12843 int unit, 12844 bcm_field_entry_t entry, 12845 uint16 data, 12846 uint16 mask); 12847 12848 /* 12849 * Get LLID value for bcmFieldQualifyLlidValue 12850 * qualifier from the field entry. 12851 */ 12852 extern int bcm_field_qualify_LlidValue_get( 12853 int unit, 12854 bcm_field_entry_t entry, 12855 uint16 *data, 12856 uint16 *mask); 12857 12858 /* 12859 * Set match criteria for RecoverableDrop 12860 * qualifier. 12861 */ 12862 extern int bcm_field_qualify_RecoverableDrop( 12863 int unit, 12864 bcm_field_entry_t entry, 12865 uint8 data, 12866 uint8 mask); 12867 12868 /* 12869 * Get match criteria for RecoverableDrop 12870 * qualifier. 12871 */ 12872 extern int bcm_field_qualify_RecoverableDrop_get( 12873 int unit, 12874 bcm_field_entry_t entry, 12875 uint8 *data, 12876 uint8 *mask); 12877 12878 /* 12879 * Set match criteria for RepCopy 12880 * qualifier. 12881 */ 12882 extern int bcm_field_qualify_RepCopy( 12883 int unit, 12884 bcm_field_entry_t entry, 12885 uint8 data, 12886 uint8 mask); 12887 12888 /* 12889 * Get match criteria for RepCopy 12890 * qualifier. 12891 */ 12892 extern int bcm_field_qualify_RepCopy_get( 12893 int unit, 12894 bcm_field_entry_t entry, 12895 uint8 *data, 12896 uint8 *mask); 12897 12898 /* 12899 * Set match criteria for IpTunnelHit 12900 * qualifier. 12901 */ 12902 extern int bcm_field_qualify_IpTunnelHit( 12903 int unit, 12904 bcm_field_entry_t entry, 12905 uint8 data, 12906 uint8 mask); 12907 12908 /* 12909 * Get match criteria for IpTunnelHit 12910 * qualifier. 12911 */ 12912 extern int bcm_field_qualify_IpTunnelHit_get( 12913 int unit, 12914 bcm_field_entry_t entry, 12915 uint8 *data, 12916 uint8 *mask); 12917 12918 /* 12919 * Set match criteria for MplsLabel1Hit 12920 * qualifier. 12921 */ 12922 extern int bcm_field_qualify_MplsLabel1Hit( 12923 int unit, 12924 bcm_field_entry_t entry, 12925 uint8 data, 12926 uint8 mask); 12927 12928 /* 12929 * Get match criteria for MplsLabel1Hit 12930 * qualifier. 12931 */ 12932 extern int bcm_field_qualify_MplsLabel1Hit_get( 12933 int unit, 12934 bcm_field_entry_t entry, 12935 uint8 *data, 12936 uint8 *mask); 12937 12938 /* 12939 * Set match criteria for TrillEgressRbridgeHit 12940 * qualifier. 12941 */ 12942 extern int bcm_field_qualify_TrillEgressRbridgeHit( 12943 int unit, 12944 bcm_field_entry_t entry, 12945 uint8 data, 12946 uint8 mask); 12947 12948 /* 12949 * Get match criteria for TrillEgressRbridgeHit 12950 * qualifier. 12951 */ 12952 extern int bcm_field_qualify_TrillEgressRbridgeHit_get( 12953 int unit, 12954 bcm_field_entry_t entry, 12955 uint8 *data, 12956 uint8 *mask); 12957 12958 /* 12959 * Set match criteria for L2GreSrcIpHit 12960 * qualifier. 12961 */ 12962 extern int bcm_field_qualify_L2GreSrcIpHit( 12963 int unit, 12964 bcm_field_entry_t entry, 12965 uint8 data, 12966 uint8 mask); 12967 12968 /* 12969 * Get match criteria for L2GreSrcIpHit 12970 * qualifier. 12971 */ 12972 extern int bcm_field_qualify_L2GreSrcIpHit_get( 12973 int unit, 12974 bcm_field_entry_t entry, 12975 uint8 *data, 12976 uint8 *mask); 12977 12978 /* 12979 * Set match criteria for MimSrcGportHit 12980 * qualifier. 12981 */ 12982 extern int bcm_field_qualify_MimSrcGportHit( 12983 int unit, 12984 bcm_field_entry_t entry, 12985 uint8 data, 12986 uint8 mask); 12987 12988 /* 12989 * Get match criteria for MimSrcGportHit 12990 * qualifier. 12991 */ 12992 extern int bcm_field_qualify_MimSrcGportHit_get( 12993 int unit, 12994 bcm_field_entry_t entry, 12995 uint8 *data, 12996 uint8 *mask); 12997 12998 /* 12999 * Set match criteria for MplsLabel2Hit 13000 * qualifier. 13001 */ 13002 extern int bcm_field_qualify_MplsLabel2Hit( 13003 int unit, 13004 bcm_field_entry_t entry, 13005 uint8 data, 13006 uint8 mask); 13007 13008 /* 13009 * Get match criteria for MplsLabel2Hit 13010 * qualifier. 13011 */ 13012 extern int bcm_field_qualify_MplsLabel2Hit_get( 13013 int unit, 13014 bcm_field_entry_t entry, 13015 uint8 *data, 13016 uint8 *mask); 13017 13018 /* 13019 * Set match criteria for TrillIngressRbridgeHit 13020 * qualifier. 13021 */ 13022 extern int bcm_field_qualify_TrillIngressRbridgeHit( 13023 int unit, 13024 bcm_field_entry_t entry, 13025 uint8 data, 13026 uint8 mask); 13027 13028 /* 13029 * Get match criteria for TrillIngressRbridgeHit 13030 * qualifier. 13031 */ 13032 extern int bcm_field_qualify_TrillIngressRbridgeHit_get( 13033 int unit, 13034 bcm_field_entry_t entry, 13035 uint8 *data, 13036 uint8 *mask); 13037 13038 /* 13039 * Set match criteria for L2GreVfiHit 13040 * qualifier. 13041 */ 13042 extern int bcm_field_qualify_L2GreVfiHit( 13043 int unit, 13044 bcm_field_entry_t entry, 13045 uint8 data, 13046 uint8 mask); 13047 13048 /* 13049 * Get match criteria for L2GreVfiHit 13050 * qualifier. 13051 */ 13052 extern int bcm_field_qualify_L2GreVfiHit_get( 13053 int unit, 13054 bcm_field_entry_t entry, 13055 uint8 *data, 13056 uint8 *mask); 13057 13058 /* 13059 * Set match criteria for MimVfiHit 13060 * qualifier. 13061 */ 13062 extern int bcm_field_qualify_MimVfiHit( 13063 int unit, 13064 bcm_field_entry_t entry, 13065 uint8 data, 13066 uint8 mask); 13067 13068 /* 13069 * Get match criteria for MimVfiHit 13070 * qualifier. 13071 */ 13072 extern int bcm_field_qualify_MimVfiHit_get( 13073 int unit, 13074 bcm_field_entry_t entry, 13075 uint8 *data, 13076 uint8 *mask); 13077 13078 /* 13079 * Set match criteria for GenericAssociatedChannelLabelValid 13080 * qualifier. 13081 */ 13082 extern int bcm_field_qualify_GenericAssociatedChannelLabelValid( 13083 int unit, 13084 bcm_field_entry_t entry, 13085 uint8 data, 13086 uint8 mask); 13087 13088 /* 13089 * Get match criteria for GenericAssociatedChannelLabelValid 13090 * qualifier. 13091 */ 13092 extern int bcm_field_qualify_GenericAssociatedChannelLabelValid_get( 13093 int unit, 13094 bcm_field_entry_t entry, 13095 uint8 *data, 13096 uint8 *mask); 13097 13098 /* 13099 * Set match criteria for RouterAlertLabelValid 13100 * qualifier. 13101 */ 13102 extern int bcm_field_qualify_RouterAlertLabelValid( 13103 int unit, 13104 bcm_field_entry_t entry, 13105 uint8 data, 13106 uint8 mask); 13107 13108 /* 13109 * Get match criteria for RouterAlertLabelValid 13110 * qualifier. 13111 */ 13112 extern int bcm_field_qualify_RouterAlertLabelValid_get( 13113 int unit, 13114 bcm_field_entry_t entry, 13115 uint8 *data, 13116 uint8 *mask); 13117 13118 /* 13119 * Set match criteria for DspIpLocal 13120 * qualifier. 13121 */ 13122 extern int bcm_field_qualify_DstIpLocal( 13123 int unit, 13124 bcm_field_entry_t entry, 13125 uint8 data, 13126 uint8 mask); 13127 13128 /* 13129 * Get match criteria for DspIpLocal 13130 * qualifier. 13131 */ 13132 extern int bcm_field_qualify_DstIpLocal_get( 13133 int unit, 13134 bcm_field_entry_t entry, 13135 uint8 *data, 13136 uint8 *mask); 13137 13138 /* 13139 * Set match criteria for IpAddrsNormalized 13140 * qualifier. 13141 */ 13142 extern int bcm_field_qualify_IpAddrsNormalized( 13143 int unit, 13144 bcm_field_entry_t entry, 13145 uint8 data, 13146 uint8 mask); 13147 13148 /* 13149 * Get match criteria for IpAddrsNormalized 13150 * qualifier. 13151 */ 13152 extern int bcm_field_qualify_IpAddrsNormalized_get( 13153 int unit, 13154 bcm_field_entry_t entry, 13155 uint8 *data, 13156 uint8 *mask); 13157 13158 /* 13159 * Set match criteria for MacAddrsNormalized 13160 * qualifier. 13161 */ 13162 extern int bcm_field_qualify_MacAddrsNormalized( 13163 int unit, 13164 bcm_field_entry_t entry, 13165 uint8 data, 13166 uint8 mask); 13167 13168 /* 13169 * Get match criteria for MacAddrsNormalized 13170 * qualifier. 13171 */ 13172 extern int bcm_field_qualify_MacAddrsNormalized_get( 13173 int unit, 13174 bcm_field_entry_t entry, 13175 uint8 *data, 13176 uint8 *mask); 13177 13178 /* 13179 * Set match criteria for MplsForwardingLabel 13180 * qualifier. 13181 */ 13182 extern int bcm_field_qualify_MplsForwardingLabel( 13183 int unit, 13184 bcm_field_entry_t entry, 13185 uint32 data, 13186 uint32 mask); 13187 13188 /* 13189 * Get match criteria for MplsForwardingLabel 13190 * qualifier. 13191 */ 13192 extern int bcm_field_qualify_MplsForwardingLabel_get( 13193 int unit, 13194 bcm_field_entry_t entry, 13195 uint32 *data, 13196 uint32 *mask); 13197 13198 /* 13199 * Set match criteria for MplsForwardingLabelTtl 13200 * qualifier. 13201 */ 13202 extern int bcm_field_qualify_MplsForwardingLabelTtl( 13203 int unit, 13204 bcm_field_entry_t entry, 13205 uint8 data, 13206 uint8 mask); 13207 13208 /* 13209 * Get match criteria for MplsForwardingLabelTtl 13210 * qualifier. 13211 */ 13212 extern int bcm_field_qualify_MplsForwardingLabelTtl_get( 13213 int unit, 13214 bcm_field_entry_t entry, 13215 uint8 *data, 13216 uint8 *mask); 13217 13218 /* 13219 * Set match criteria for MplsForwardingLabelBos 13220 * qualifier. 13221 */ 13222 extern int bcm_field_qualify_MplsForwardingLabelBos( 13223 int unit, 13224 bcm_field_entry_t entry, 13225 uint8 data, 13226 uint8 mask); 13227 13228 /* 13229 * Get match criteria for MplsForwardingLabelBos 13230 * qualifier. 13231 */ 13232 extern int bcm_field_qualify_MplsForwardingLabelBos_get( 13233 int unit, 13234 bcm_field_entry_t entry, 13235 uint8 *data, 13236 uint8 *mask); 13237 13238 /* 13239 * Set match criteria for MplsForwardingLabelExp 13240 * qualifier. 13241 */ 13242 extern int bcm_field_qualify_MplsForwardingLabelExp( 13243 int unit, 13244 bcm_field_entry_t entry, 13245 uint8 data, 13246 uint8 mask); 13247 13248 /* 13249 * Get match criteria for MplsForwardingLabelExp 13250 * qualifier. 13251 */ 13252 extern int bcm_field_qualify_MplsForwardingLabelExp_get( 13253 int unit, 13254 bcm_field_entry_t entry, 13255 uint8 *data, 13256 uint8 *mask); 13257 13258 /* 13259 * Set match criteria for MplsForwardingLabelId 13260 * qualifier. 13261 */ 13262 extern int bcm_field_qualify_MplsForwardingLabelId( 13263 int unit, 13264 bcm_field_entry_t entry, 13265 uint32 data, 13266 uint32 mask); 13267 13268 /* 13269 * Get match criteria for MplsForwardingLabelId 13270 * qualifier. 13271 */ 13272 extern int bcm_field_qualify_MplsForwardingLabelId_get( 13273 int unit, 13274 bcm_field_entry_t entry, 13275 uint32 *data, 13276 uint32 *mask); 13277 13278 /* 13279 * Set match criteria for MplsControlWord 13280 * qualifier. 13281 */ 13282 extern int bcm_field_qualify_MplsControlWord( 13283 int unit, 13284 bcm_field_entry_t entry, 13285 uint32 data, 13286 uint32 mask); 13287 13288 /* 13289 * Get match criteria for MplsControlWord 13290 * qualifier. 13291 */ 13292 extern int bcm_field_qualify_MplsControlWord_get( 13293 int unit, 13294 bcm_field_entry_t entry, 13295 uint32 *data, 13296 uint32 *mask); 13297 13298 /* 13299 * Set match criteria for Rtag7AHashUpper 13300 * qualifier. 13301 */ 13302 extern int bcm_field_qualify_Rtag7AHashUpper( 13303 int unit, 13304 bcm_field_entry_t entry, 13305 uint16 data, 13306 uint16 mask); 13307 13308 /* 13309 * Get match criteria for Rtag7AHashUpper 13310 * qualifier. 13311 */ 13312 extern int bcm_field_qualify_Rtag7AHashUpper_get( 13313 int unit, 13314 bcm_field_entry_t entry, 13315 uint16 *data, 13316 uint16 *mask); 13317 13318 /* 13319 * Set match criteria for Rtag7AHashLower 13320 * qualifier. 13321 */ 13322 extern int bcm_field_qualify_Rtag7AHashLower( 13323 int unit, 13324 bcm_field_entry_t entry, 13325 uint16 data, 13326 uint16 mask); 13327 13328 /* 13329 * Get match criteria for Rtag7AHashLower 13330 * qualifier. 13331 */ 13332 extern int bcm_field_qualify_Rtag7AHashLower_get( 13333 int unit, 13334 bcm_field_entry_t entry, 13335 uint16 *data, 13336 uint16 *mask); 13337 13338 /* 13339 * Set match criteria for Rtag7BHashUpper 13340 * qualifier. 13341 */ 13342 extern int bcm_field_qualify_Rtag7BHashUpper( 13343 int unit, 13344 bcm_field_entry_t entry, 13345 uint16 data, 13346 uint16 mask); 13347 13348 /* 13349 * Get match criteria for Rtag7BHashUpper 13350 * qualifier. 13351 */ 13352 extern int bcm_field_qualify_Rtag7BHashUpper_get( 13353 int unit, 13354 bcm_field_entry_t entry, 13355 uint16 *data, 13356 uint16 *mask); 13357 13358 /* 13359 * Set match criteria for Rtag7BHashLower 13360 * qualifier. 13361 */ 13362 extern int bcm_field_qualify_Rtag7BHashLower( 13363 int unit, 13364 bcm_field_entry_t entry, 13365 uint16 data, 13366 uint16 mask); 13367 13368 /* 13369 * Get match criteria for Rtag7BHashLower 13370 * qualifier. 13371 */ 13372 extern int bcm_field_qualify_Rtag7BHashLower_get( 13373 int unit, 13374 bcm_field_entry_t entry, 13375 uint16 *data, 13376 uint16 *mask); 13377 13378 /* 13379 * Set match criteria for MplsForwardingLabelAction 13380 * qualifier(8 bits). 13381 */ 13382 extern int bcm_field_qualify_MplsForwardingLabelAction( 13383 int unit, 13384 bcm_field_entry_t entry, 13385 uint8 data, 13386 uint8 mask); 13387 13388 /* 13389 * Get match criteria for MplsForwardingLabelAction 13390 * qualifier(8 bits). 13391 */ 13392 extern int bcm_field_qualify_MplsForwardingLabelAction_get( 13393 int unit, 13394 bcm_field_entry_t entry, 13395 uint8 *data, 13396 uint8 *mask); 13397 13398 /* 13399 * Set match criteria for MplsForwardingLabelAction 13400 * qualifier (32 bits). 13401 */ 13402 extern int bcm_field_qualify_MplsForwardingLabelAction32( 13403 int unit, 13404 bcm_field_entry_t entry, 13405 uint32 data, 13406 uint32 mask); 13407 13408 /* 13409 * Get match criteria for MplsForwardingLabelAction 13410 * qualifier (32 bits). 13411 */ 13412 extern int bcm_field_qualify_MplsForwardingLabelAction32_get( 13413 int unit, 13414 bcm_field_entry_t entry, 13415 uint32 *data, 13416 uint32 *mask); 13417 13418 /* 13419 * Set match criteria for MplsControlWordValid 13420 * qualifier. 13421 */ 13422 extern int bcm_field_qualify_MplsControlWordValid( 13423 int unit, 13424 bcm_field_entry_t entry, 13425 uint8 data, 13426 uint8 mask); 13427 13428 /* 13429 * Get match criteria for MplsControlWordValid 13430 * qualifier. 13431 */ 13432 extern int bcm_field_qualify_MplsControlWordValid_get( 13433 int unit, 13434 bcm_field_entry_t entry, 13435 uint8 *data, 13436 uint8 *mask); 13437 13438 /* 13439 * Set match criteria for EgressClass 13440 * qualifier. 13441 */ 13442 extern int bcm_field_qualify_EgressClass( 13443 int unit, 13444 bcm_field_entry_t entry, 13445 uint16 data, 13446 uint16 mask); 13447 13448 /* 13449 * Get match criteria for EgressClass 13450 * qualifier. 13451 */ 13452 extern int bcm_field_qualify_EgressClass_get( 13453 int unit, 13454 bcm_field_entry_t entry, 13455 uint16 *data, 13456 uint16 *mask); 13457 13458 /* 13459 * Set match criteria for EgressClassL3Interface 13460 * qualifier. 13461 */ 13462 extern int bcm_field_qualify_EgressClassL3Interface( 13463 int unit, 13464 bcm_field_entry_t entry, 13465 uint16 data, 13466 uint16 mask); 13467 13468 /* 13469 * Get match criteria for EgressClassL3Interface 13470 * qualifier. 13471 */ 13472 extern int bcm_field_qualify_EgressClassL3Interface_get( 13473 int unit, 13474 bcm_field_entry_t entry, 13475 uint16 *data, 13476 uint16 *mask); 13477 13478 /* 13479 * Set match criteria for EgressClassTrill 13480 * qualifier. 13481 */ 13482 extern int bcm_field_qualify_EgressClassTrill( 13483 int unit, 13484 bcm_field_entry_t entry, 13485 uint16 data, 13486 uint16 mask); 13487 13488 /* 13489 * Get match criteria for EgressClassTrill 13490 * qualifier. 13491 */ 13492 extern int bcm_field_qualify_EgressClassTrill_get( 13493 int unit, 13494 bcm_field_entry_t entry, 13495 uint16 *data, 13496 uint16 *mask); 13497 13498 /* 13499 * Set match criteria for EgressClassWlan 13500 * qualifier. 13501 */ 13502 extern int bcm_field_qualify_EgressClassWlan( 13503 int unit, 13504 bcm_field_entry_t entry, 13505 uint16 data, 13506 uint16 mask); 13507 13508 /* 13509 * Get match criteria for EgressClassWlan 13510 * qualifier. 13511 */ 13512 extern int bcm_field_qualify_EgressClassWlan_get( 13513 int unit, 13514 bcm_field_entry_t entry, 13515 uint16 *data, 13516 uint16 *mask); 13517 13518 /* 13519 * Set match criteria for EgressClassL2Gre 13520 * qualifier. 13521 */ 13522 extern int bcm_field_qualify_EgressClassL2Gre( 13523 int unit, 13524 bcm_field_entry_t entry, 13525 uint16 data, 13526 uint16 mask); 13527 13528 /* 13529 * Get match criteria for EgressClassL2Gre 13530 * qualifier. 13531 */ 13532 extern int bcm_field_qualify_EgressClassL2Gre_get( 13533 int unit, 13534 bcm_field_entry_t entry, 13535 uint16 *data, 13536 uint16 *mask); 13537 13538 /* Set match criteria for CpuQueue qualifier. */ 13539 extern int bcm_field_qualify_CpuQueue( 13540 int unit, 13541 bcm_field_entry_t entry, 13542 uint8 data, 13543 uint8 mask); 13544 13545 /* Get match criteria for CpuQueue qualifier. */ 13546 extern int bcm_field_qualify_CpuQueue_get( 13547 int unit, 13548 bcm_field_entry_t entry, 13549 uint8 *data, 13550 uint8 *mask); 13551 13552 /* Set match criteria for SrcGport qualifier. */ 13553 extern int bcm_field_qualify_SrcGport( 13554 int unit, 13555 bcm_field_entry_t entry, 13556 bcm_gport_t port_id); 13557 13558 /* Get match criteria for SrcGport qualifier. */ 13559 extern int bcm_field_qualify_SrcGport_get( 13560 int unit, 13561 bcm_field_entry_t entry, 13562 bcm_gport_t *port_id); 13563 13564 /* 13565 * Set match for the header format indicated. This qualifier is similar 13566 * to HeaderFormatSet, but this one allows only one matching header 13567 * format to be specified. 13568 */ 13569 extern int bcm_field_qualify_HeaderFormat( 13570 int unit, 13571 bcm_field_entry_t entry, 13572 bcm_field_header_format_t header_format); 13573 13574 /* Get matching header format. */ 13575 extern int bcm_field_qualify_HeaderFormat_get( 13576 int unit, 13577 bcm_field_entry_t entry, 13578 bcm_field_header_format_t *header_format); 13579 13580 /* 13581 * Set match for the header format extension indicated. The profile, out 13582 * of which header_format_extension must be selected, is set by the 13583 * previously selected header format. 13584 */ 13585 extern int bcm_field_qualify_HeaderFormatExtension( 13586 int unit, 13587 bcm_field_entry_t entry, 13588 bcm_field_header_format_extension_t header_format_extension); 13589 13590 /* 13591 * Get header format extension that is currently set for the indicated 13592 * entry. 13593 */ 13594 extern int bcm_field_qualify_HeaderFormatExtension_get( 13595 int unit, 13596 bcm_field_entry_t entry, 13597 bcm_field_header_format_extension_t *header_format_extension); 13598 13599 /* 13600 * Set match for the header formats included in the format_header_set. 13601 * This qualifier is similar to HeaderFormat, but this qualifier allows 13602 * the caller to specify more than one header format to match. 13603 */ 13604 extern int bcm_field_qualify_HeaderFormatSet( 13605 int unit, 13606 bcm_field_entry_t entry, 13607 bcm_field_header_format_set_t header_format_set); 13608 13609 /* Get matching header format set. */ 13610 extern int bcm_field_qualify_HeaderFormatSet_get( 13611 int unit, 13612 bcm_field_entry_t entry, 13613 bcm_field_header_format_set_t *header_format_set); 13614 13615 /* Set match criteria for L2Learn qualifier. */ 13616 extern int bcm_field_qualify_L2Learn( 13617 int unit, 13618 bcm_field_entry_t entry, 13619 uint8 data, 13620 uint8 mask); 13621 13622 /* Get match criteria for L2Learn qualifier. */ 13623 extern int bcm_field_qualify_L2Learn_get( 13624 int unit, 13625 bcm_field_entry_t entry, 13626 uint8 *data, 13627 uint8 *mask); 13628 13629 /* Set match criteria for PortOrientation qualifier. */ 13630 extern int bcm_field_qualify_PortOrientation( 13631 int unit, 13632 bcm_field_entry_t entry, 13633 uint8 data, 13634 uint8 mask); 13635 13636 /* Get match criteria for PortOrientation qualifier. */ 13637 extern int bcm_field_qualify_PortOrientation_get( 13638 int unit, 13639 bcm_field_entry_t entry, 13640 uint8 *data, 13641 uint8 *mask); 13642 13643 /* To qualify the MACSEC tagged packets */ 13644 extern int bcm_field_qualify_MacSecTagPresent( 13645 int unit, 13646 bcm_field_entry_t entry, 13647 uint8 data, 13648 uint8 mask); 13649 13650 /* To get the qualified inputs on the MACSEC tagged packets */ 13651 extern int bcm_field_qualify_MacSecTagPresent_get( 13652 int unit, 13653 bcm_field_entry_t entry, 13654 uint8 *data, 13655 uint8 *mask); 13656 13657 /* To qualify on the SecTag field in MACSEC tagged packets */ 13658 extern int bcm_field_qualify_MacSecTag( 13659 int unit, 13660 bcm_field_entry_t entry, 13661 uint8 data, 13662 uint8 mask); 13663 13664 /* To get the qualified inputs on SecTag field in MACSEC tagged packets */ 13665 extern int bcm_field_qualify_MacSecTag_get( 13666 int unit, 13667 bcm_field_entry_t entry, 13668 uint8 *data, 13669 uint8 *mask); 13670 13671 /* To qualify the hit on Destination MAC addresses range */ 13672 extern int bcm_field_qualify_MacSecDstMacRangeHit( 13673 int unit, 13674 bcm_field_entry_t entry, 13675 uint8 data, 13676 uint8 mask); 13677 13678 /* To get the qualified inputs on the Destination MAC addresses range hit */ 13679 extern int bcm_field_qualify_MacSecDstMacRangeHit_get( 13680 int unit, 13681 bcm_field_entry_t entry, 13682 uint8 *data, 13683 uint8 *mask); 13684 13685 /* 13686 * Configures lower and upper limits to be used by qualifier 13687 * bcmFieldQualifyMacSecDstMacRangeHit 13688 */ 13689 extern int bcm_field_macsec_DstMacRange_set( 13690 int unit, 13691 bcm_mac_t lower_limit, 13692 bcm_mac_t upper_limit); 13693 13694 /* 13695 * To get the configured lower and upper limits to be used by qualifier 13696 * bcmFieldQualifyMacSecDstMacRangeHit 13697 */ 13698 extern int bcm_field_macsec_DstMacRange_get( 13699 int unit, 13700 bcm_mac_t *lower_limit, 13701 bcm_mac_t *upper_limit); 13702 13703 /* To qualify on packet forwarded through the internal MACSEC port */ 13704 extern int bcm_field_qualify_FromMacSecPort( 13705 int unit, 13706 bcm_field_entry_t entry, 13707 uint8 data, 13708 uint8 mask); 13709 13710 /* 13711 * To get the qualified inputs on packet forwarded through the internal 13712 * MACSEC port 13713 */ 13714 extern int bcm_field_qualify_FromMacSecPort_get( 13715 int unit, 13716 bcm_field_entry_t entry, 13717 uint8 *data, 13718 uint8 *mask); 13719 13720 /* Qualifies on the MACSEC packet flow */ 13721 extern int bcm_field_qualify_MacSecFlow( 13722 int unit, 13723 bcm_field_entry_t entry, 13724 bcm_field_macsec_flow_t data); 13725 13726 /* To get the qualified inputs on the MACSEC packet flow */ 13727 extern int bcm_field_qualify_MacSecFlow_get( 13728 int unit, 13729 bcm_field_entry_t entry, 13730 bcm_field_macsec_flow_t *data); 13731 13732 /* Set match criteria for PortOrientation qualifier. */ 13733 extern int bcm_field_qualify_EcnValue( 13734 int unit, 13735 bcm_field_entry_t entry, 13736 uint8 data, 13737 uint8 mask); 13738 13739 /* Get match criteria for EcnValue qualifier. */ 13740 extern int bcm_field_qualify_EcnValue_get( 13741 int unit, 13742 bcm_field_entry_t entry, 13743 uint8 *data, 13744 uint8 *mask); 13745 13746 /* Set match criteria for RxTrapCode qualifier. */ 13747 extern int bcm_field_qualify_RxTrapCode( 13748 int unit, 13749 bcm_field_entry_t entry, 13750 bcm_rx_trap_t data); 13751 13752 /* Get match criteria for RxTrapCode qualifier. */ 13753 extern int bcm_field_qualify_RxTrapCode_get( 13754 int unit, 13755 bcm_field_entry_t entry, 13756 bcm_rx_trap_t *data); 13757 13758 /* Set match criteria for RxTrapCode qualifier. */ 13759 extern int bcm_field_qualify_RxTrapCode32( 13760 int unit, 13761 bcm_field_entry_t entry, 13762 uint32 data, 13763 uint32 mask); 13764 13765 /* Get match criteria for RxTrapCode qualifier. */ 13766 extern int bcm_field_qualify_RxTrapCode32_get( 13767 int unit, 13768 bcm_field_entry_t entry, 13769 uint32 *data, 13770 uint32 *mask); 13771 13772 /* Set match criteria for RxTrapStrength qualifier. */ 13773 extern int bcm_field_qualify_RxTrapStrength( 13774 int unit, 13775 bcm_field_entry_t entry, 13776 uint32 data, 13777 uint32 mask); 13778 13779 /* Get match criteria for RxTrapStrength qualifier. */ 13780 extern int bcm_field_qualify_RxTrapStrength_get( 13781 int unit, 13782 bcm_field_entry_t entry, 13783 uint32 *data, 13784 uint32 *mask); 13785 13786 /* Set match criteria for Ptch qualifier. */ 13787 extern int bcm_field_qualify_Ptch( 13788 int unit, 13789 bcm_field_entry_t entry, 13790 uint8 data, 13791 uint8 mask); 13792 13793 /* Get match criteria for Ptch qualifier. */ 13794 extern int bcm_field_qualify_Ptch_get( 13795 int unit, 13796 bcm_field_entry_t entry, 13797 uint8 *data, 13798 uint8 *mask); 13799 13800 /* Set match criteria for MplsBos qualifier. */ 13801 extern int bcm_field_qualify_MplsBos( 13802 int unit, 13803 bcm_field_entry_t entry, 13804 uint8 data, 13805 uint8 mask); 13806 13807 /* Get match criteria for MplsBos qualifier. */ 13808 extern int bcm_field_qualify_MplsBos_get( 13809 int unit, 13810 bcm_field_entry_t entry, 13811 uint8 *data, 13812 uint8 *mask); 13813 13814 /* Set match criteria for RxTrapData qualifier. */ 13815 extern int bcm_field_qualify_RxTrapData( 13816 int unit, 13817 bcm_field_entry_t entry, 13818 uint32 data, 13819 uint32 mask); 13820 13821 /* Get match criteria for RxTrapData qualifier. */ 13822 extern int bcm_field_qualify_RxTrapData_get( 13823 int unit, 13824 bcm_field_entry_t entry, 13825 uint32 *data, 13826 uint32 *mask); 13827 13828 /* Set match criteria for PolicerIntPrio qualifier. */ 13829 extern int bcm_field_qualify_PolicerIntPrio( 13830 int unit, 13831 bcm_field_entry_t entry, 13832 uint8 data, 13833 uint8 mask); 13834 13835 /* Get match criteria for PolicerIntPrio qualifier. */ 13836 extern int bcm_field_qualify_PolicerIntPrio_get( 13837 int unit, 13838 bcm_field_entry_t entry, 13839 uint8 *data, 13840 uint8 *mask); 13841 13842 /* Set match criteria for PacketTerminatedBytes qualifier. */ 13843 extern int bcm_field_qualify_PacketTerminatedBytes( 13844 int unit, 13845 bcm_field_entry_t entry, 13846 uint32 data, 13847 uint32 mask); 13848 13849 /* Get match criteria for PacketTerminatedBytes qualifier. */ 13850 extern int bcm_field_qualify_PacketTerminatedBytes_get( 13851 int unit, 13852 bcm_field_entry_t entry, 13853 uint32 *data, 13854 uint32 *mask); 13855 13856 /* Set match criteria for BypassFilter qualifier (8-bits). */ 13857 extern int bcm_field_qualify_BypassFilter( 13858 int unit, 13859 bcm_field_entry_t entry, 13860 uint8 data, 13861 uint8 mask); 13862 13863 /* Get match criteria for BypassFilter qualifier (8-bits). */ 13864 extern int bcm_field_qualify_BypassFilter_get( 13865 int unit, 13866 bcm_field_entry_t entry, 13867 uint8 *data, 13868 uint8 *mask); 13869 13870 /* Set match criteria for BypassFilter qualifier (32-bits). */ 13871 extern int bcm_field_qualify_BypassFilter32( 13872 int unit, 13873 bcm_field_entry_t entry, 13874 uint32 data, 13875 uint32 mask); 13876 13877 /* Get match criteria for BypassFilter qualifier (32-bits). */ 13878 extern int bcm_field_qualify_BypassFilter32_get( 13879 int unit, 13880 bcm_field_entry_t entry, 13881 uint32 *data, 13882 uint32 *mask); 13883 13884 /* Set match criteria for ReplicantAny qualifier. */ 13885 extern int bcm_field_qualify_ReplicantAny( 13886 int unit, 13887 bcm_field_entry_t entry, 13888 uint8 data, 13889 uint8 mask); 13890 13891 /* Get match criteria for ReplicantAny qualifier. */ 13892 extern int bcm_field_qualify_ReplicantAny_get( 13893 int unit, 13894 bcm_field_entry_t entry, 13895 uint8 *data, 13896 uint8 *mask); 13897 13898 /* Set match criteria for ReplicantFirst qualifier. */ 13899 extern int bcm_field_qualify_ReplicantFirst( 13900 int unit, 13901 bcm_field_entry_t entry, 13902 uint8 data, 13903 uint8 mask); 13904 13905 /* Get match criteria for ReplicantFirst qualifier. */ 13906 extern int bcm_field_qualify_ReplicantFirst_get( 13907 int unit, 13908 bcm_field_entry_t entry, 13909 uint8 *data, 13910 uint8 *mask); 13911 13912 /* Set match criteria for TrillEgressRbridge qualifier. */ 13913 extern int bcm_field_qualify_TrillEgressRbridge( 13914 int unit, 13915 bcm_field_entry_t entry, 13916 uint32 data, 13917 uint32 mask); 13918 13919 /* Get match criteria for TrillEgressRbridge qualifier. */ 13920 extern int bcm_field_qualify_TrillEgressRbridge_get( 13921 int unit, 13922 bcm_field_entry_t entry, 13923 uint32 *data, 13924 uint32 *mask); 13925 13926 /* Set match criteria for ISid qualifier. */ 13927 extern int bcm_field_qualify_ISid( 13928 int unit, 13929 bcm_field_entry_t entry, 13930 uint32 data, 13931 uint32 mask); 13932 13933 /* Get match criteria for ISid qualifier. */ 13934 extern int bcm_field_qualify_ISid_get( 13935 int unit, 13936 bcm_field_entry_t entry, 13937 uint32 *data, 13938 uint32 *mask); 13939 13940 /* Set match criteria for InterfaceClassProcessingPort qualifier. */ 13941 extern int bcm_field_qualify_InterfaceClassProcessingPort( 13942 int unit, 13943 bcm_field_entry_t entry, 13944 uint64 data, 13945 uint64 mask); 13946 13947 /* Get match criteria for InterfaceClassProcessingPort qualifier. */ 13948 extern int bcm_field_qualify_InterfaceClassProcessingPort_get( 13949 int unit, 13950 bcm_field_entry_t entry, 13951 uint64 *data, 13952 uint64 *mask); 13953 13954 /* Set match criteria for DstRpfGport qualifier. */ 13955 extern int bcm_field_qualify_DstRpfGport( 13956 int unit, 13957 bcm_field_entry_t entry, 13958 bcm_gport_t data); 13959 13960 /* Get match criteria for DstRpfGport qualifier. */ 13961 extern int bcm_field_qualify_DstRpfGport_get( 13962 int unit, 13963 bcm_field_entry_t entry, 13964 bcm_gport_t *data); 13965 13966 /* Set match criteria for TrunkHashResult qualifier. */ 13967 extern int bcm_field_qualify_TrunkHashResult( 13968 int unit, 13969 bcm_field_entry_t entry, 13970 uint32 data, 13971 uint32 mask); 13972 13973 /* Get match criteria for TrunkHashResult qualifier. */ 13974 extern int bcm_field_qualify_TrunkHashResult_get( 13975 int unit, 13976 bcm_field_entry_t entry, 13977 uint32 *data, 13978 uint32 *mask); 13979 13980 /* Set match criteria for Dhcp qualifier. */ 13981 extern int bcm_field_qualify_Dhcp( 13982 int unit, 13983 bcm_field_entry_t entry, 13984 uint8 data, 13985 uint8 mask); 13986 13987 /* Get match criteria for Dhcp qualifier. */ 13988 extern int bcm_field_qualify_Dhcp_get( 13989 int unit, 13990 bcm_field_entry_t entry, 13991 uint8 *data, 13992 uint8 *mask); 13993 13994 /* Set match criteria for SnoopCopy qualifier. */ 13995 extern int bcm_field_qualify_SnoopCopy( 13996 int unit, 13997 bcm_field_entry_t entry, 13998 uint8 data, 13999 uint8 mask); 14000 14001 /* Get match criteria for SnoopCopy qualifier. */ 14002 extern int bcm_field_qualify_SnoopCopy_get( 14003 int unit, 14004 bcm_field_entry_t entry, 14005 uint8 *data, 14006 uint8 *mask); 14007 14008 /* Set match criteria for ForwardCopy qualifier. */ 14009 extern int bcm_field_qualify_ForwardCopy( 14010 int unit, 14011 bcm_field_entry_t entry, 14012 uint8 data, 14013 uint8 mask); 14014 14015 /* Get match criteria for ForwardCopy qualifier. */ 14016 extern int bcm_field_qualify_ForwardCopy_get( 14017 int unit, 14018 bcm_field_entry_t entry, 14019 uint8 *data, 14020 uint8 *mask); 14021 14022 /* Set match criteria for InterfaceClassVPort qualifier. */ 14023 extern int bcm_field_qualify_InterfaceClassVPort( 14024 int unit, 14025 bcm_field_entry_t entry, 14026 uint32 data, 14027 uint32 mask); 14028 14029 /* Get match criteria for InterfaceClassVPort qualifier. */ 14030 extern int bcm_field_qualify_InterfaceClassVPort_get( 14031 int unit, 14032 bcm_field_entry_t entry, 14033 uint32 *data, 14034 uint32 *mask); 14035 14036 /* Set match criteria for L4PortRangeCheck qualifier. */ 14037 extern int bcm_field_qualify_L4PortRangeCheck( 14038 int unit, 14039 bcm_field_entry_t entry, 14040 bcm_field_range_t range, 14041 int invert); 14042 14043 /* Get match criteria for L4PortRangeCheck qualifier. */ 14044 extern int bcm_field_qualify_L4PortRangeCheck_get( 14045 int unit, 14046 bcm_field_entry_t entry, 14047 int max_count, 14048 bcm_field_range_t *range, 14049 int *invert, 14050 int *count); 14051 14052 /* Set match criteria for VPortRangeCheck qualifier. */ 14053 extern int bcm_field_qualify_VPortRangeCheck( 14054 int unit, 14055 bcm_field_entry_t entry, 14056 bcm_field_range_t range, 14057 int invert); 14058 14059 /* 14060 * Get match criteria for VPortRangeCheck 14061 * qualifier from the field entry. 14062 */ 14063 extern int bcm_field_qualify_VPortRangeCheck_get( 14064 int unit, 14065 bcm_field_entry_t entry, 14066 int max_count, 14067 bcm_field_range_t *range, 14068 int *invert, 14069 int *count); 14070 14071 /* Set match criteria for PacketLengthRangeCheck qualifier. */ 14072 extern int bcm_field_qualify_PacketLengthRangeCheck( 14073 int unit, 14074 bcm_field_entry_t entry, 14075 bcm_field_range_t range, 14076 int invert); 14077 14078 /* 14079 * Get match criteria for PacketLengthRangeCheck 14080 * qualifier from the field entry. 14081 */ 14082 extern int bcm_field_qualify_PacketLengthRangeCheck_get( 14083 int unit, 14084 bcm_field_entry_t entry, 14085 int max_count, 14086 bcm_field_range_t *range, 14087 int *invert, 14088 int *count); 14089 14090 /* Set match criteria for TunnelTerminatedHit qualifier. */ 14091 extern int bcm_field_qualify_TunnelTerminatedHit( 14092 int unit, 14093 bcm_field_entry_t entry, 14094 uint8 data, 14095 uint8 mask); 14096 14097 /* Get match criteria for TunnelTerminatedHit qualifier. */ 14098 extern int bcm_field_qualify_TunnelTerminatedHit_get( 14099 int unit, 14100 bcm_field_entry_t entry, 14101 uint8 *data, 14102 uint8 *mask); 14103 14104 /* Set match criteria for MplsTerminatedHit qualifier. */ 14105 extern int bcm_field_qualify_MplsTerminatedHit( 14106 int unit, 14107 bcm_field_entry_t entry, 14108 uint8 data, 14109 uint8 mask); 14110 14111 /* Get match criteria for MplsTerminatedHit qualifier. */ 14112 extern int bcm_field_qualify_MplsTerminatedHit_get( 14113 int unit, 14114 bcm_field_entry_t entry, 14115 uint8 *data, 14116 uint8 *mask); 14117 14118 /* Set match criteria for L3SrcRouteHit qualifier. */ 14119 extern int bcm_field_qualify_L3SrcRouteHit( 14120 int unit, 14121 bcm_field_entry_t entry, 14122 uint8 data, 14123 uint8 mask); 14124 14125 /* Get match criteria for L3SrcRouteHit qualifier. */ 14126 extern int bcm_field_qualify_L3SrcRouteHit_get( 14127 int unit, 14128 bcm_field_entry_t entry, 14129 uint8 *data, 14130 uint8 *mask); 14131 14132 /* Set match criteria for IpmcHit qualifier. */ 14133 extern int bcm_field_qualify_IpmcHit( 14134 int unit, 14135 bcm_field_entry_t entry, 14136 uint8 data, 14137 uint8 mask); 14138 14139 /* Get match criteria for IpmcHit qualifier. */ 14140 extern int bcm_field_qualify_IpmcHit_get( 14141 int unit, 14142 bcm_field_entry_t entry, 14143 uint8 *data, 14144 uint8 *mask); 14145 14146 /* Set match criteria for VlanTranslationValue qualifier. */ 14147 extern int bcm_field_qualify_VlanTranslationValue( 14148 int unit, 14149 bcm_field_entry_t entry, 14150 uint64 data, 14151 uint64 mask); 14152 14153 /* Get match criteria for VlanTranslationValue qualifier. */ 14154 extern int bcm_field_qualify_VlanTranslationValue_get( 14155 int unit, 14156 bcm_field_entry_t entry, 14157 uint64 *data, 14158 uint64 *mask); 14159 14160 /* Set match criteria for TunnelTerminatedValue qualifier. */ 14161 extern int bcm_field_qualify_TunnelTerminatedValue( 14162 int unit, 14163 bcm_field_entry_t entry, 14164 uint64 data, 14165 uint64 mask); 14166 14167 /* Get match criteria for TunnelTerminatedValue qualifier. */ 14168 extern int bcm_field_qualify_TunnelTerminatedValue_get( 14169 int unit, 14170 bcm_field_entry_t entry, 14171 uint64 *data, 14172 uint64 *mask); 14173 14174 /* Set match criteria for MplsTerminatedValue qualifier. */ 14175 extern int bcm_field_qualify_MplsTerminatedValue( 14176 int unit, 14177 bcm_field_entry_t entry, 14178 uint64 data, 14179 uint64 mask); 14180 14181 /* Get match criteria for MplsTerminatedValue qualifier. */ 14182 extern int bcm_field_qualify_MplsTerminatedValue_get( 14183 int unit, 14184 bcm_field_entry_t entry, 14185 uint64 *data, 14186 uint64 *mask); 14187 14188 /* Set match criteria for IpTunnelValue qualifier. */ 14189 extern int bcm_field_qualify_IpTunnelValue( 14190 int unit, 14191 bcm_field_entry_t entry, 14192 uint64 data, 14193 uint64 mask); 14194 14195 /* Get match criteria for IpTunnelValue qualifier. */ 14196 extern int bcm_field_qualify_IpTunnelValue_get( 14197 int unit, 14198 bcm_field_entry_t entry, 14199 uint64 *data, 14200 uint64 *mask); 14201 14202 /* Set match criteria for L2SrcValue qualifier. */ 14203 extern int bcm_field_qualify_L2SrcValue( 14204 int unit, 14205 bcm_field_entry_t entry, 14206 uint64 data, 14207 uint64 mask); 14208 14209 /* Get match criteria for L2SrcValue qualifier. */ 14210 extern int bcm_field_qualify_L2SrcValue_get( 14211 int unit, 14212 bcm_field_entry_t entry, 14213 uint64 *data, 14214 uint64 *mask); 14215 14216 /* Set match criteria for L2DestValue qualifier. */ 14217 extern int bcm_field_qualify_L2DestValue( 14218 int unit, 14219 bcm_field_entry_t entry, 14220 uint64 data, 14221 uint64 mask); 14222 14223 /* Get match criteria for L2DestValue qualifier. */ 14224 extern int bcm_field_qualify_L2DestValue_get( 14225 int unit, 14226 bcm_field_entry_t entry, 14227 uint64 *data, 14228 uint64 *mask); 14229 14230 /* Set match criteria for L3SrcRouteValue qualifier. */ 14231 extern int bcm_field_qualify_L3SrcRouteValue( 14232 int unit, 14233 bcm_field_entry_t entry, 14234 uint64 data, 14235 uint64 mask); 14236 14237 /* Get match criteria for L3SrcRouteValue qualifier. */ 14238 extern int bcm_field_qualify_L3SrcRouteValue_get( 14239 int unit, 14240 bcm_field_entry_t entry, 14241 uint64 *data, 14242 uint64 *mask); 14243 14244 /* Set match criteria for L3DestRouteValue qualifier. */ 14245 extern int bcm_field_qualify_L3DestRouteValue( 14246 int unit, 14247 bcm_field_entry_t entry, 14248 uint64 data, 14249 uint64 mask); 14250 14251 /* Get match criteria for L3DestRouteValue qualifier. */ 14252 extern int bcm_field_qualify_L3DestRouteValue_get( 14253 int unit, 14254 bcm_field_entry_t entry, 14255 uint64 *data, 14256 uint64 *mask); 14257 14258 /* Set match criteria for IpmcValue qualifier. */ 14259 extern int bcm_field_qualify_IpmcValue( 14260 int unit, 14261 bcm_field_entry_t entry, 14262 uint64 data, 14263 uint64 mask); 14264 14265 /* Get match criteria for IpmcValue qualifier. */ 14266 extern int bcm_field_qualify_IpmcValue_get( 14267 int unit, 14268 bcm_field_entry_t entry, 14269 uint64 *data, 14270 uint64 *mask); 14271 14272 /* Set match criteria for CascadedKeyValue qualifier. */ 14273 extern int bcm_field_qualify_CascadedKeyValue( 14274 int unit, 14275 bcm_field_entry_t entry, 14276 uint32 data, 14277 uint32 mask); 14278 14279 /* Get match criteria for CascadedKeyValue qualifier. */ 14280 extern int bcm_field_qualify_CascadedKeyValue_get( 14281 int unit, 14282 bcm_field_entry_t entry, 14283 uint32 *data, 14284 uint32 *mask); 14285 14286 /* Set match criteria for IsEqualValue qualifier. */ 14287 extern int bcm_field_qualify_IsEqualValue( 14288 int unit, 14289 bcm_field_entry_t entry, 14290 uint8 data, 14291 uint8 mask); 14292 14293 /* Get match criteria for IsEqualValue qualifier. */ 14294 extern int bcm_field_qualify_IsEqualValue_get( 14295 int unit, 14296 bcm_field_entry_t entry, 14297 uint8 *data, 14298 uint8 *mask); 14299 14300 /* Set match criteria for LearnSrcMac qualifier. */ 14301 extern int bcm_field_qualify_LearnSrcMac( 14302 int unit, 14303 bcm_field_entry_t entry, 14304 bcm_mac_t data, 14305 bcm_mac_t mask); 14306 14307 /* Get match criteria for LearnSrcMac qualifier. */ 14308 extern int bcm_field_qualify_LearnSrcMac_get( 14309 int unit, 14310 bcm_field_entry_t entry, 14311 bcm_mac_t *data, 14312 bcm_mac_t *mask); 14313 14314 /* Set match criteria for LearnVlan qualifier. */ 14315 extern int bcm_field_qualify_LearnVlan( 14316 int unit, 14317 bcm_field_entry_t entry, 14318 bcm_vlan_t data, 14319 bcm_vlan_t mask); 14320 14321 /* Get match criteria for LearnVlan qualifier. */ 14322 extern int bcm_field_qualify_LearnVlan_get( 14323 int unit, 14324 bcm_field_entry_t entry, 14325 bcm_vlan_t *data, 14326 bcm_vlan_t *mask); 14327 14328 /* Set match criteria for LearnSrcPort qualifier. */ 14329 extern int bcm_field_qualify_LearnSrcPort( 14330 int unit, 14331 bcm_field_entry_t entry, 14332 bcm_gport_t data); 14333 14334 /* Get match criteria for LearnSrcPort qualifier. */ 14335 extern int bcm_field_qualify_LearnSrcPort_get( 14336 int unit, 14337 bcm_field_entry_t entry, 14338 bcm_gport_t *data); 14339 14340 /* Set match criteria for LearnInVPort qualifier. */ 14341 extern int bcm_field_qualify_LearnInVPort( 14342 int unit, 14343 bcm_field_entry_t entry, 14344 uint32 data, 14345 uint32 mask); 14346 14347 /* Get match criteria for LearnInVPort qualifier. */ 14348 extern int bcm_field_qualify_LearnInVPort_get( 14349 int unit, 14350 bcm_field_entry_t entry, 14351 uint32 *data, 14352 uint32 *mask); 14353 14354 /* Set enable criteria for LearnExtension qualifier. */ 14355 extern int bcm_field_qualify_LearnExtension( 14356 int unit, 14357 bcm_field_entry_t entry, 14358 uint8 data); 14359 14360 /* Get enable status of LearnExtension qualifier. */ 14361 extern int bcm_field_qualify_LearnExtension_get( 14362 int unit, 14363 bcm_field_entry_t entry, 14364 uint8 *data); 14365 14366 /* Set match criteria for Stacking Route qualifier. */ 14367 extern int bcm_field_qualify_StackingRoute( 14368 int unit, 14369 bcm_field_entry_t entry, 14370 uint32 data, 14371 uint32 mask); 14372 14373 /* Get match criteria for Stacking Route qualifier. */ 14374 extern int bcm_field_qualify_StackingRoute_get( 14375 int unit, 14376 bcm_field_entry_t entry, 14377 uint32 *data, 14378 uint32 *mask); 14379 14380 /* Set match criteria for DSP Extension qualifier. */ 14381 extern int bcm_field_qualify_DstSysPortExt( 14382 int unit, 14383 bcm_field_entry_t entry, 14384 uint16 data, 14385 uint16 mask); 14386 14387 /* Get match criteria for DSP Extension qualifier. */ 14388 extern int bcm_field_qualify_DstSysPortExt_get( 14389 int unit, 14390 bcm_field_entry_t entry, 14391 uint16 *data, 14392 uint16 *mask); 14393 14394 /* Set match criteria for PacketSize qualifier. */ 14395 extern int bcm_field_qualify_PacketSize( 14396 int unit, 14397 bcm_field_entry_t entry, 14398 uint32 data, 14399 uint32 mask); 14400 14401 /* Get match criteria for PacketSize qualifier. */ 14402 extern int bcm_field_qualify_PacketSize_get( 14403 int unit, 14404 bcm_field_entry_t entry, 14405 uint32 *data, 14406 uint32 *mask); 14407 14408 /* Set match criteria for InnerSrcMac qualifier. */ 14409 extern int bcm_field_qualify_InnerSrcMac( 14410 int unit, 14411 bcm_field_entry_t entry, 14412 bcm_mac_t data, 14413 bcm_mac_t mask); 14414 14415 /* Get match criteria for InnerSrcMac qualifier. */ 14416 extern int bcm_field_qualify_InnerSrcMac_get( 14417 int unit, 14418 bcm_field_entry_t entry, 14419 bcm_mac_t *data, 14420 bcm_mac_t *mask); 14421 14422 /* Set match criteria for InnerDstMac qualifier. */ 14423 extern int bcm_field_qualify_InnerDstMac( 14424 int unit, 14425 bcm_field_entry_t entry, 14426 bcm_mac_t data, 14427 bcm_mac_t mask); 14428 14429 /* Get match criteria for InnerDstMac qualifier. */ 14430 extern int bcm_field_qualify_InnerDstMac_get( 14431 int unit, 14432 bcm_field_entry_t entry, 14433 bcm_mac_t *data, 14434 bcm_mac_t *mask); 14435 14436 /* Set match criteria for InnerEtherType qualifier. */ 14437 extern int bcm_field_qualify_InnerEtherType( 14438 int unit, 14439 bcm_field_entry_t entry, 14440 uint16 data, 14441 uint16 mask); 14442 14443 /* Get match criteria for InnerEtherType qualifier. */ 14444 extern int bcm_field_qualify_InnerEtherType_get( 14445 int unit, 14446 bcm_field_entry_t entry, 14447 uint16 *data, 14448 uint16 *mask); 14449 14450 /* Set match criteria for MplsLabel1 qualifier. */ 14451 extern int bcm_field_qualify_MplsLabel1( 14452 int unit, 14453 bcm_field_entry_t entry, 14454 uint32 data, 14455 uint32 mask); 14456 14457 /* Get match criteria for MplsLabel1 qualifier. */ 14458 extern int bcm_field_qualify_MplsLabel1_get( 14459 int unit, 14460 bcm_field_entry_t entry, 14461 uint32 *data, 14462 uint32 *mask); 14463 14464 /* Set match criteria for MplsLabel1Ttl qualifier. */ 14465 extern int bcm_field_qualify_MplsLabel1Ttl( 14466 int unit, 14467 bcm_field_entry_t entry, 14468 uint8 data, 14469 uint8 mask); 14470 14471 /* Get match criteria for MplsLabel1Ttl qualifier. */ 14472 extern int bcm_field_qualify_MplsLabel1Ttl_get( 14473 int unit, 14474 bcm_field_entry_t entry, 14475 uint8 *data, 14476 uint8 *mask); 14477 14478 /* Set match criteria for MplsLabel1Bos qualifier. */ 14479 extern int bcm_field_qualify_MplsLabel1Bos( 14480 int unit, 14481 bcm_field_entry_t entry, 14482 uint8 data, 14483 uint8 mask); 14484 14485 /* Get match criteria for MplsLabel1Bos qualifier. */ 14486 extern int bcm_field_qualify_MplsLabel1Bos_get( 14487 int unit, 14488 bcm_field_entry_t entry, 14489 uint8 *data, 14490 uint8 *mask); 14491 14492 /* Set match criteria for MplsLabel1Exp qualifier. */ 14493 extern int bcm_field_qualify_MplsLabel1Exp( 14494 int unit, 14495 bcm_field_entry_t entry, 14496 uint8 data, 14497 uint8 mask); 14498 14499 /* Get match criteria for MplsLabel1Exp qualifier. */ 14500 extern int bcm_field_qualify_MplsLabel1Exp_get( 14501 int unit, 14502 bcm_field_entry_t entry, 14503 uint8 *data, 14504 uint8 *mask); 14505 14506 /* Set match criteria for MplsLabel1Id qualifier. */ 14507 extern int bcm_field_qualify_MplsLabel1Id( 14508 int unit, 14509 bcm_field_entry_t entry, 14510 uint32 data, 14511 uint32 mask); 14512 14513 /* Get match criteria for MplsLabel1Id qualifier. */ 14514 extern int bcm_field_qualify_MplsLabel1Id_get( 14515 int unit, 14516 bcm_field_entry_t entry, 14517 uint32 *data, 14518 uint32 *mask); 14519 14520 /* Set match criteria for MplsLabel2 qualifier. */ 14521 extern int bcm_field_qualify_MplsLabel2( 14522 int unit, 14523 bcm_field_entry_t entry, 14524 uint32 data, 14525 uint32 mask); 14526 14527 /* Get match criteria for MplsLabel2 qualifier. */ 14528 extern int bcm_field_qualify_MplsLabel2_get( 14529 int unit, 14530 bcm_field_entry_t entry, 14531 uint32 *data, 14532 uint32 *mask); 14533 14534 /* Set match criteria for MplsLabel2Ttl qualifier. */ 14535 extern int bcm_field_qualify_MplsLabel2Ttl( 14536 int unit, 14537 bcm_field_entry_t entry, 14538 uint8 data, 14539 uint8 mask); 14540 14541 /* Get match criteria for MplsLabel2Ttl qualifier. */ 14542 extern int bcm_field_qualify_MplsLabel2Ttl_get( 14543 int unit, 14544 bcm_field_entry_t entry, 14545 uint8 *data, 14546 uint8 *mask); 14547 14548 /* Set match criteria for MplsLabel2Bos qualifier. */ 14549 extern int bcm_field_qualify_MplsLabel2Bos( 14550 int unit, 14551 bcm_field_entry_t entry, 14552 uint8 data, 14553 uint8 mask); 14554 14555 /* Get match criteria for MplsLabel2Bos qualifier. */ 14556 extern int bcm_field_qualify_MplsLabel2Bos_get( 14557 int unit, 14558 bcm_field_entry_t entry, 14559 uint8 *data, 14560 uint8 *mask); 14561 14562 /* Set match criteria for MplsLabel2Exp qualifier. */ 14563 extern int bcm_field_qualify_MplsLabel2Exp( 14564 int unit, 14565 bcm_field_entry_t entry, 14566 uint8 data, 14567 uint8 mask); 14568 14569 /* Get match criteria for MplsLabel2Exp qualifier. */ 14570 extern int bcm_field_qualify_MplsLabel2Exp_get( 14571 int unit, 14572 bcm_field_entry_t entry, 14573 uint8 *data, 14574 uint8 *mask); 14575 14576 /* Set match criteria for MplsLabel2Id qualifier. */ 14577 extern int bcm_field_qualify_MplsLabel2Id( 14578 int unit, 14579 bcm_field_entry_t entry, 14580 uint32 data, 14581 uint32 mask); 14582 14583 /* Get match criteria for MplsLabel2Id qualifier. */ 14584 extern int bcm_field_qualify_MplsLabel2Id_get( 14585 int unit, 14586 bcm_field_entry_t entry, 14587 uint32 *data, 14588 uint32 *mask); 14589 14590 /* Set match criteria for MplsLabel3 qualifier. */ 14591 extern int bcm_field_qualify_MplsLabel3( 14592 int unit, 14593 bcm_field_entry_t entry, 14594 uint32 data, 14595 uint32 mask); 14596 14597 /* Get match criteria for MplsLabel3 qualifier. */ 14598 extern int bcm_field_qualify_MplsLabel3_get( 14599 int unit, 14600 bcm_field_entry_t entry, 14601 uint32 *data, 14602 uint32 *mask); 14603 14604 /* Set match criteria for MplsLabel3Ttl qualifier. */ 14605 extern int bcm_field_qualify_MplsLabel3Ttl( 14606 int unit, 14607 bcm_field_entry_t entry, 14608 uint8 data, 14609 uint8 mask); 14610 14611 /* Get match criteria for MplsLabel3Ttl qualifier. */ 14612 extern int bcm_field_qualify_MplsLabel3Ttl_get( 14613 int unit, 14614 bcm_field_entry_t entry, 14615 uint8 *data, 14616 uint8 *mask); 14617 14618 /* Set match criteria for MplsLabel3Bos qualifier. */ 14619 extern int bcm_field_qualify_MplsLabel3Bos( 14620 int unit, 14621 bcm_field_entry_t entry, 14622 uint8 data, 14623 uint8 mask); 14624 14625 /* Get match criteria for MplsLabel3Bos qualifier. */ 14626 extern int bcm_field_qualify_MplsLabel3Bos_get( 14627 int unit, 14628 bcm_field_entry_t entry, 14629 uint8 *data, 14630 uint8 *mask); 14631 14632 /* Set match criteria for MplsLabel3Exp qualifier. */ 14633 extern int bcm_field_qualify_MplsLabel3Exp( 14634 int unit, 14635 bcm_field_entry_t entry, 14636 uint8 data, 14637 uint8 mask); 14638 14639 /* Get match criteria for MplsLabel3Exp qualifier. */ 14640 extern int bcm_field_qualify_MplsLabel3Exp_get( 14641 int unit, 14642 bcm_field_entry_t entry, 14643 uint8 *data, 14644 uint8 *mask); 14645 14646 /* Set match criteria for MplsLabel3Id qualifier. */ 14647 extern int bcm_field_qualify_MplsLabel3Id( 14648 int unit, 14649 bcm_field_entry_t entry, 14650 uint32 data, 14651 uint32 mask); 14652 14653 /* Get match criteria for MplsLabel3Id qualifier. */ 14654 extern int bcm_field_qualify_MplsLabel3Id_get( 14655 int unit, 14656 bcm_field_entry_t entry, 14657 uint32 *data, 14658 uint32 *mask); 14659 14660 /* To qualify on svtag. */ 14661 extern int bcm_field_qualify_Svtag( 14662 int unit, 14663 bcm_field_entry_t entry, 14664 uint32 data, 14665 uint32 mask); 14666 14667 /* 14668 * Get value for bcmFieldQualifySvtag 14669 * qualifier from the field entry. 14670 */ 14671 extern int bcm_field_qualify_Svtag_get( 14672 int unit, 14673 bcm_field_entry_t entry, 14674 uint32 *data, 14675 uint32 *mask); 14676 14677 /* Qualify on Exact Match Hit Status. */ 14678 extern int bcm_field_qualify_ExactMatchHitStatus( 14679 int unit, 14680 bcm_field_entry_t entry, 14681 int group_pri, 14682 uint8 data, 14683 uint8 mask); 14684 14685 /* Get match criteria for ExactMatchHitStatus qualifier. */ 14686 extern int bcm_field_qualify_ExactMatchHitStatus_get( 14687 int unit, 14688 bcm_field_entry_t entry, 14689 int group_pri, 14690 uint8 *data, 14691 uint8 *mask); 14692 14693 /* Qualify on Exact Match Action Class Id. */ 14694 extern int bcm_field_qualify_ExactMatchActionClassId( 14695 int unit, 14696 bcm_field_entry_t entry, 14697 int group_pri, 14698 uint32 data, 14699 uint32 mask); 14700 14701 /* Get match criteria for ExactMatchActionClassId qualifier. */ 14702 extern int bcm_field_qualify_ExactMatchActionClassId_get( 14703 int unit, 14704 bcm_field_entry_t entry, 14705 int group_pri, 14706 uint32 *data, 14707 uint32 *mask); 14708 14709 /* Qualify on Exact Match Group Class Id. */ 14710 extern int bcm_field_qualify_ExactMatchGroupClassId( 14711 int unit, 14712 bcm_field_entry_t entry, 14713 int group_pri, 14714 bcm_field_group_t group); 14715 14716 /* Add an action to a field entry */ 14717 extern int bcm_field_action_config_add( 14718 int unit, 14719 bcm_field_entry_t entry, 14720 bcm_field_action_t action, 14721 int core_config_arr_len, 14722 bcm_field_action_core_config_t *core_config_arr); 14723 14724 /* Get action core specific parameters from a specified entry. */ 14725 extern int bcm_field_action_config_get( 14726 int unit, 14727 bcm_field_entry_t entry, 14728 bcm_field_action_t action, 14729 int core_config_arr_len, 14730 bcm_field_action_core_config_t *core_config_arr); 14731 14732 /* Given low level action, get the BCM actions and stages which use it. */ 14733 extern int bcm_field_internal_to_bcm_action_map( 14734 int unit, 14735 uint32 flags, 14736 int internal_action, 14737 uint32 bcm_action_size, 14738 bcm_field_internal_to_bcm_map_t *bcm_action_stage, 14739 uint32 *bcm_action_size_actual); 14740 14741 /* 14742 * Set new width (in bits) to a specific action. Width may be required to 14743 * be the default value. 14744 */ 14745 extern int bcm_field_action_width_set( 14746 int unit, 14747 uint32 flags, 14748 int internal_action, 14749 uint32 width); 14750 14751 /* 14752 * Get current width (in bits) set to a specific action or get default 14753 * width (in bits) of a specific action 14754 */ 14755 extern int bcm_field_action_width_get( 14756 int unit, 14757 uint32 flags, 14758 int internal_action, 14759 uint32 *width_p); 14760 14761 /* Get match criteria for ExactMatchGroupClassId qualifier. */ 14762 extern int bcm_field_qualify_ExactMatchGroupClassId_get( 14763 int unit, 14764 bcm_field_entry_t entry, 14765 int group_pri, 14766 bcm_field_group_t *group); 14767 14768 /* Set match criteria for Vlan Action ID. */ 14769 extern int bcm_field_qualify_VlanAction( 14770 int unit, 14771 bcm_field_entry_t entry, 14772 uint32 data, 14773 uint32 mask); 14774 14775 /* Get match criteria for Vlan Action ID qualifier. */ 14776 extern int bcm_field_qualify_VlanAction_get( 14777 int unit, 14778 bcm_field_entry_t entry, 14779 uint32 *data, 14780 uint32 *mask); 14781 14782 /* Add match criteria for bcmFieldQualifyDstMultipathOverlay. */ 14783 extern int bcm_field_qualify_DstMultipathOverlay( 14784 int unit, 14785 bcm_field_entry_t entry, 14786 bcm_if_t data, 14787 bcm_if_t mask); 14788 14789 /* Get match criteria for ECMP groups with Overlay flag. */ 14790 extern int bcm_field_qualify_DstMultipathOverlay_get( 14791 int unit, 14792 bcm_field_entry_t entry, 14793 bcm_if_t *data, 14794 bcm_if_t *mask); 14795 14796 /* Add match criteria for bcmFieldQualifyDstMultipathUnderlay. */ 14797 extern int bcm_field_qualify_DstMultipathUnderlay( 14798 int unit, 14799 bcm_field_entry_t entry, 14800 bcm_if_t data, 14801 bcm_if_t mask); 14802 14803 /* Get match criteria for ECMP groups with Underlay flag. */ 14804 extern int bcm_field_qualify_DstMultipathUnderlay_get( 14805 int unit, 14806 bcm_field_entry_t entry, 14807 bcm_if_t *data, 14808 bcm_if_t *mask); 14809 14810 /* Add an action to a field entry */ 14811 extern int bcm_field_action_add( 14812 int unit, 14813 bcm_field_entry_t entry, 14814 bcm_field_action_t action, 14815 uint32 param0, 14816 uint32 param1); 14817 14818 /* Delete an action from a field entry */ 14819 extern int bcm_field_action_delete( 14820 int unit, 14821 bcm_field_entry_t entry, 14822 bcm_field_action_t action, 14823 uint32 param0, 14824 uint32 param1); 14825 14826 /* Get Class size for provided qualifier. */ 14827 extern int bcm_field_class_size_get( 14828 int unit, 14829 bcm_field_qualify_t qual, 14830 uint16 *class_size); 14831 14832 /* 14833 * Add an action to a field class entry (an entry that is a member of a 14834 * compression stage). 14835 */ 14836 extern int bcm_field_action_class_add( 14837 int unit, 14838 bcm_field_entry_t entry, 14839 bcm_field_class_info_t *class_info); 14840 14841 /* 14842 * Get an action from a field class entry (an entry that is a member of a 14843 * direct extraction group). 14844 */ 14845 extern int bcm_field_action_class_get( 14846 int unit, 14847 bcm_field_entry_t entry, 14848 bcm_field_class_info_t *class_info); 14849 14850 /* Add an action to a field entry */ 14851 extern int bcm_field_action_mac_add( 14852 int unit, 14853 bcm_field_entry_t entry, 14854 bcm_field_action_t action, 14855 bcm_mac_t mac); 14856 14857 /* Add an action to a field entry */ 14858 extern int bcm_field_action_ports_add( 14859 int unit, 14860 bcm_field_entry_t entry, 14861 bcm_field_action_t action, 14862 bcm_pbmp_t pbmp); 14863 14864 /* 14865 * Retrieve the parameters for an action previously added to a field 14866 * entry 14867 */ 14868 extern int bcm_field_action_get( 14869 int unit, 14870 bcm_field_entry_t entry, 14871 bcm_field_action_t action, 14872 uint32 *param0, 14873 uint32 *param1); 14874 14875 /* 14876 * Retrieve the parameters for an action previously added to a field 14877 * entry 14878 */ 14879 extern int bcm_field_action_mac_get( 14880 int unit, 14881 bcm_field_entry_t entry, 14882 bcm_field_action_t action, 14883 bcm_mac_t *mac); 14884 14885 /* 14886 * Retrieve the parameters for an action previously added to a field 14887 * entry 14888 */ 14889 extern int bcm_field_action_ports_get( 14890 int unit, 14891 bcm_field_entry_t entry, 14892 bcm_field_action_t action, 14893 bcm_pbmp_t *pbmp); 14894 14895 /* Remove an action from a field entry */ 14896 extern int bcm_field_action_remove( 14897 int unit, 14898 bcm_field_entry_t entry, 14899 bcm_field_action_t action); 14900 14901 /* Remove all actions from a field entry */ 14902 extern int bcm_field_action_remove_all( 14903 int unit, 14904 bcm_field_entry_t entry); 14905 14906 #endif /* BCM_HIDE_DISPATCHABLE */ 14907 14908 /* Initialize a bcm_field_extraction_field_t. */ 14909 extern void bcm_field_extraction_field_t_init( 14910 bcm_field_extraction_field_t *action); 14911 14912 /* Initialize a bcm_field_extraction_action_t. */ 14913 extern void bcm_field_extraction_action_t_init( 14914 bcm_field_extraction_action_t *action); 14915 14916 #ifndef BCM_HIDE_DISPATCHABLE 14917 14918 /* 14919 * Add an action to a direct extraction field entry (an entry that is a 14920 * member of a direct extraction group). 14921 */ 14922 extern int bcm_field_direct_extraction_action_add( 14923 int unit, 14924 bcm_field_entry_t entry, 14925 bcm_field_extraction_action_t action, 14926 int count, 14927 bcm_field_extraction_field_t *extractions); 14928 14929 /* 14930 * Get an action from a direct extraction field entry (an entry that is a 14931 * member of a direct extraction group). 14932 */ 14933 extern int bcm_field_direct_extraction_action_get( 14934 int unit, 14935 bcm_field_entry_t entry, 14936 bcm_field_extraction_action_t *action, 14937 int max_count, 14938 bcm_field_extraction_field_t *extractions, 14939 int *actual_count); 14940 14941 /* Create stat collection entity. */ 14942 extern int bcm_field_stat_create( 14943 int unit, 14944 bcm_field_group_t group, 14945 int nstat, 14946 bcm_field_stat_t *stat_arr, 14947 int *stat_id); 14948 14949 /* 14950 * Create stat collection entity with specified Statistics entity ID 14951 * value. 14952 */ 14953 extern int bcm_field_stat_create_id( 14954 int unit, 14955 bcm_field_group_t group, 14956 int nstat, 14957 bcm_field_stat_t *stat_arr, 14958 int stat_id); 14959 14960 /* 14961 * Get flex stat counter ID associated with given field group and its 14962 * associated stats ID. 14963 */ 14964 extern int bcm_field_stat_id_get( 14965 int unit, 14966 bcm_field_group_t group, 14967 uint32 stat_id, 14968 uint32 *stat_counter_id); 14969 14970 /* Destroy stat collection entity. */ 14971 extern int bcm_field_stat_destroy( 14972 int unit, 14973 int stat_id); 14974 14975 /* Get number of counters associated with statistics entity. */ 14976 extern int bcm_field_stat_size( 14977 int unit, 14978 int stat_id, 14979 int *stat_size); 14980 14981 /* Get enabled statistics for specific collection entity. */ 14982 extern int bcm_field_stat_config_get( 14983 int unit, 14984 int stat_id, 14985 int nstat, 14986 bcm_field_stat_t *stat_arr); 14987 14988 /* Set 64-bit counter value for specific statistic type. */ 14989 extern int bcm_field_stat_set( 14990 int unit, 14991 int stat_id, 14992 bcm_field_stat_t stat, 14993 uint64 value); 14994 14995 /* Set 32-bit counter value for specific statistic type. */ 14996 extern int bcm_field_stat_set32( 14997 int unit, 14998 int stat_id, 14999 bcm_field_stat_t stat, 15000 uint32 value); 15001 15002 /* Set 64-bit counter value to all counters. */ 15003 extern int bcm_field_stat_all_set( 15004 int unit, 15005 int stat_id, 15006 uint64 value); 15007 15008 /* Set 32-bit counter value to all counters. */ 15009 extern int bcm_field_stat_all_set32( 15010 int unit, 15011 int stat_id, 15012 uint32 value); 15013 15014 /* Get 64-bit counter value for specific statistic type. */ 15015 extern int bcm_field_stat_get( 15016 int unit, 15017 int stat_id, 15018 bcm_field_stat_t stat, 15019 uint64 *value); 15020 15021 /* 15022 * Force an immediate counter update and retrieve specific statistic 15023 * type. 15024 */ 15025 extern int bcm_field_stat_sync_get( 15026 int unit, 15027 int stat_id, 15028 bcm_field_stat_t stat, 15029 uint64 *value); 15030 15031 /* Get 32-bit counter value for specific statistic type. */ 15032 extern int bcm_field_stat_get32( 15033 int unit, 15034 int stat_id, 15035 bcm_field_stat_t stat, 15036 uint32 *value); 15037 15038 /* 15039 * Force an immediate counter update and retrieve specific statistic 15040 * type. 15041 * Get 32-bit counter value for specific statistic type. 15042 */ 15043 extern int bcm_field_stat_sync_get32( 15044 int unit, 15045 int stat_id, 15046 bcm_field_stat_t stat, 15047 uint32 *value); 15048 15049 /* Get 64-bit counter values for multiple statistic types. */ 15050 extern int bcm_field_stat_multi_get( 15051 int unit, 15052 int stat_id, 15053 int nstat, 15054 bcm_field_stat_t *stat_arr, 15055 uint64 *value_arr); 15056 15057 /* Get 32-bit counter values for multiple statistic types. */ 15058 extern int bcm_field_stat_multi_get32( 15059 int unit, 15060 int stat_id, 15061 int nstat, 15062 bcm_field_stat_t *stat_arr, 15063 uint32 *value_arr); 15064 15065 /* Attach statistics entity to Field Processor entry. */ 15066 extern int bcm_field_entry_stat_attach( 15067 int unit, 15068 bcm_field_entry_t entry, 15069 int stat_id); 15070 15071 /* Attach statistics with stat action entity to Field Processor entry. */ 15072 extern int bcm_field_entry_stat_extended_attach( 15073 int unit, 15074 bcm_field_entry_t entry, 15075 int stat_id, 15076 bcm_field_stat_action_t stat_action); 15077 15078 /* Detach statistics entity from Field Processor entry. */ 15079 extern int bcm_field_entry_stat_detach( 15080 int unit, 15081 bcm_field_entry_t entry, 15082 int stat_id); 15083 15084 /* Get statistics entity attached to Field Processor entry. */ 15085 extern int bcm_field_entry_stat_get( 15086 int unit, 15087 bcm_field_entry_t entry, 15088 int *stat_id); 15089 15090 /* 15091 * Get statistics entity with stat action attached to Field Processor 15092 * entry. 15093 */ 15094 extern int bcm_field_entry_stat_extended_get( 15095 int unit, 15096 bcm_field_entry_t entry, 15097 int *stat_id, 15098 bcm_field_stat_action_t *stat_action); 15099 15100 #endif /* BCM_HIDE_DISPATCHABLE */ 15101 15102 /* Initialize Field Oam Stat Action Structure. */ 15103 extern void bcm_field_oam_stat_action_t_init( 15104 bcm_field_oam_stat_action_t *oam_action); 15105 15106 #ifndef BCM_HIDE_DISPATCHABLE 15107 15108 /* Add Oam Stat Action to the entry. */ 15109 extern int bcm_field_oam_stat_action_add( 15110 int unit, 15111 bcm_field_entry_t entry, 15112 bcm_field_oam_stat_action_t *oam_stat_action); 15113 15114 /* Delete Oam Stat Action from entry. */ 15115 extern int bcm_field_oam_stat_action_delete( 15116 int unit, 15117 bcm_field_entry_t entry, 15118 bcm_field_oam_stat_action_t *oam_stat_action); 15119 15120 /* Delete all the Oam Stat Actions from entry. */ 15121 extern int bcm_field_oam_stat_action_delete_all( 15122 int unit, 15123 bcm_field_entry_t entry); 15124 15125 /* 15126 * Get the Oam Stat action for a given Stat Object installed in the 15127 * entry. 15128 */ 15129 extern int bcm_field_oam_stat_action_get( 15130 int unit, 15131 bcm_field_entry_t entry, 15132 bcm_field_oam_stat_action_t *oam_stat_action); 15133 15134 /* Get all the Oam Stat actions added to the entry. */ 15135 extern int bcm_field_oam_stat_action_get_all( 15136 int unit, 15137 bcm_field_entry_t entry, 15138 int oam_stat_max, 15139 bcm_field_oam_stat_action_t *oam_stat_action, 15140 int *oam_stat_count); 15141 15142 #endif /* BCM_HIDE_DISPATCHABLE */ 15143 15144 /* Initialize Field Qualifier LLC header structure. */ 15145 extern void bcm_field_llc_header_t_init( 15146 bcm_field_llc_header_t *llc_header); 15147 15148 /* Initialize Field Qualifier SNAP header structure. */ 15149 extern void bcm_field_snap_header_t_init( 15150 bcm_field_snap_header_t *snap_header); 15151 15152 /* Initialize the Field Qualifier Set structure. */ 15153 extern void bcm_field_qset_t_init( 15154 bcm_field_qset_t *qset); 15155 15156 /* Initialize the Field Action Set structure. */ 15157 extern void bcm_field_aset_t_init( 15158 bcm_field_aset_t *aset); 15159 15160 /* Initialize the bcm_field_presel_set_t structure. */ 15161 extern void bcm_field_presel_set_t_init( 15162 bcm_field_presel_set_t *presel_set); 15163 15164 /* Initialize the Field Group Status structure. */ 15165 extern void bcm_field_group_status_t_init( 15166 bcm_field_group_status_t *fgroup); 15167 15168 #ifndef BCM_HIDE_DISPATCHABLE 15169 15170 #if defined(BROADCOM_DEBUG) 15171 /* Show current software state of the field module */ 15172 extern int bcm_field_show( 15173 int unit, 15174 const char *pfx); 15175 #endif 15176 15177 #if defined(BROADCOM_DEBUG) 15178 /* Show contents of a field entry */ 15179 extern int bcm_field_entry_dump( 15180 int unit, 15181 bcm_field_entry_t entry); 15182 #endif 15183 15184 #if defined(BROADCOM_DEBUG) 15185 /* Show contents of a field group */ 15186 extern int bcm_field_group_dump( 15187 int unit, 15188 bcm_field_group_t group); 15189 #endif 15190 15191 #endif /* BCM_HIDE_DISPATCHABLE */ 15192 15193 /* SDK 5.2.0 backward compatibility. */ 15194 #define bcmFieldQualifyOutVlan bcmFieldQualifyOuterVlan 15195 #define bcmFieldQualifyInVlan bcmFieldQualifyInnerVlan 15196 15197 /* SDK 5.2.0 backward compatibility. */ 15198 #define bcm_field_qualify_OutVlan bcm_field_qualify_OuterVlan 15199 #define bcm_field_qualify_InVlan bcm_field_qualify_InnerVlan 15200 15201 #ifndef BCM_HIDE_DISPATCHABLE 15202 15203 /* Attach counters entries to a field group */ 15204 extern int bcm_field_stat_attach( 15205 int unit, 15206 bcm_field_group_t group, 15207 uint32 stat_counter_id, 15208 uint32 *stat_id); 15209 15210 /* Detach counters entries to a field group. */ 15211 extern int bcm_field_stat_detach( 15212 int unit, 15213 uint32 stat_id); 15214 15215 /* Get counter statistic values for a field entity */ 15216 extern int bcm_field_stat_counter_get( 15217 int unit, 15218 uint32 stat_id, 15219 bcm_field_stat_t stat, 15220 uint32 num_entries, 15221 uint32 *counter_indexes, 15222 bcm_stat_value_t *counter_values); 15223 15224 /* 15225 * Force an immediate counter update and retrieve statistics value for a 15226 * field entity 15227 */ 15228 extern int bcm_field_stat_counter_sync_get( 15229 int unit, 15230 uint32 stat_id, 15231 bcm_field_stat_t stat, 15232 uint32 num_entries, 15233 uint32 *counter_indexes, 15234 bcm_stat_value_t *counter_values); 15235 15236 /* Set counter statistic values for a field entity */ 15237 extern int bcm_field_stat_counter_set( 15238 int unit, 15239 uint32 stat_id, 15240 bcm_field_stat_t stat, 15241 uint32 num_entries, 15242 uint32 *counter_indexes, 15243 bcm_stat_value_t *counter_values); 15244 15245 /* 15246 * Create a preselection specification using a specific ID for a specific 15247 * stage 15248 */ 15249 extern int bcm_field_presel_create_stage_id( 15250 int unit, 15251 bcm_field_stage_t stage, 15252 bcm_field_presel_t presel_id); 15253 15254 /* Destroy a preselection specification. */ 15255 extern int bcm_field_presel_destroy( 15256 int unit, 15257 bcm_field_presel_t presel_id); 15258 15259 /* Associate a set of preselectors with a Field group. */ 15260 extern int bcm_field_group_presel_set( 15261 int unit, 15262 bcm_field_group_t group, 15263 bcm_field_presel_set_t *presel); 15264 15265 /* Get the set of preselectors associated with a Field group. */ 15266 extern int bcm_field_group_presel_get( 15267 int unit, 15268 bcm_field_group_t group, 15269 bcm_field_presel_set_t *presel); 15270 15271 #endif /* BCM_HIDE_DISPATCHABLE */ 15272 15273 /* Field entry operation structure. */ 15274 typedef struct bcm_field_entry_oper_s { 15275 uint32 flags; /* Entry operation BCM_FIELD_ENTRY_OPER_XXX. */ 15276 bcm_field_entry_t entry_id; /* Entry identifier. */ 15277 } bcm_field_entry_oper_t; 15278 15279 /* Parameter for bcm_field_entry_oper_t. */ 15280 #define BCM_FIELD_ENTRY_OPER_BACKUP (1 << 0) /* Backup up an entry 15281 configuration. */ 15282 #define BCM_FIELD_ENTRY_OPER_RESTORE (1 << 1) /* Restore backed up entry 15283 configuration. */ 15284 #define BCM_FIELD_ENTRY_OPER_CLEANUP (1 << 2) /* Free resources used by 15285 back entry. */ 15286 #define BCM_FIELD_ENTRY_OPER_MASK (0x7) /* Mask of valid entry 15287 operations supported. */ 15288 15289 /* Initialize field entry operation structure */ 15290 extern void bcm_field_entry_oper_t_init( 15291 bcm_field_entry_oper_t *entry_oper); 15292 15293 #ifndef BCM_HIDE_DISPATCHABLE 15294 15295 /* Perform backup, restore and cleanup operations on a field entry. */ 15296 extern int bcm_field_entry_operation( 15297 int unit, 15298 bcm_field_entry_oper_t *entry_oper); 15299 15300 /* Get data field that the packet must match to trigger qualifier */ 15301 extern int bcm_field_qualify_data_get( 15302 int unit, 15303 bcm_field_entry_t eid, 15304 int qual_id, 15305 uint16 length_max, 15306 uint8 *data, 15307 uint8 *mask, 15308 uint16 *length); 15309 15310 /* Allocate a range checker according to multiple range types */ 15311 extern int bcm_field_range_multi_create( 15312 int unit, 15313 bcm_field_range_t *range_id, 15314 uint32 create_flags, 15315 int count, 15316 uint32 *range_flags, 15317 uint32 *min_value, 15318 uint32 *max_value); 15319 15320 /* Retrieve parameters associated with an existing multi-range checker */ 15321 extern int bcm_field_range_multi_get( 15322 int unit, 15323 bcm_field_range_t range_id, 15324 int max_count, 15325 uint32 *range_flags, 15326 uint32 *minimum_value, 15327 uint32 *maxamum_value, 15328 int *actual_count); 15329 15330 /* 15331 * Set match criteria for bcmFieldQualifyMplsOuterLabelPop 15332 * qualifier in the field entry. 15333 */ 15334 extern int bcm_field_qualify_MplsOuterLabelPop( 15335 int unit, 15336 bcm_field_entry_t entry, 15337 uint8 data, 15338 uint8 mask); 15339 15340 /* 15341 * Get match criteria for bcmFieldQualifyMplsOuterLabelPop 15342 * qualifier in the field entry. 15343 */ 15344 extern int bcm_field_qualify_MplsOuterLabelPop_get( 15345 int unit, 15346 bcm_field_entry_t entry, 15347 uint8 *data, 15348 uint8 *mask); 15349 15350 /* 15351 * Set match criteria for 15352 * bcmFieldQualifyMplsStationHitTunnelUnterminated 15353 * qualifier in the field entry. 15354 */ 15355 extern int bcm_field_qualify_MplsStationHitTunnelUnterminated( 15356 int unit, 15357 bcm_field_entry_t entry, 15358 uint8 data, 15359 uint8 mask); 15360 15361 /* 15362 * Get match criteria for 15363 * bcmFieldQualifyMplsStationHitTunnelUnterminated 15364 * qualifier in the field entry. 15365 */ 15366 extern int bcm_field_qualify_MplsStationHitTunnelUnterminated_get( 15367 int unit, 15368 bcm_field_entry_t entry, 15369 uint8 *data, 15370 uint8 *mask); 15371 15372 /* 15373 * Set match criteria for bcmFieldQualifyIngressClassField 15374 * qualifier in the field entry. 15375 */ 15376 extern int bcm_field_qualify_IngressClassField( 15377 int unit, 15378 bcm_field_entry_t entry, 15379 uint32 data, 15380 uint32 mask); 15381 15382 /* 15383 * Get match criteria for bcmFieldQualifyIngressClassField 15384 * qualifier in the field entry. 15385 */ 15386 extern int bcm_field_qualify_IngressClassField_get( 15387 int unit, 15388 bcm_field_entry_t entry, 15389 uint32 *data, 15390 uint32 *mask); 15391 15392 /* 15393 * Set match criteria for bcmFieldQualifyIngressInterfaceClassPort 15394 * qualifier in the field entry. 15395 */ 15396 extern int bcm_field_qualify_IngressInterfaceClassPort( 15397 int unit, 15398 bcm_field_entry_t entry, 15399 uint32 data, 15400 uint32 mask); 15401 15402 /* 15403 * Get match criteria for bcmFieldQualifyIngressInterfaceClassPort 15404 * qualifier in the field entry. 15405 */ 15406 extern int bcm_field_qualify_IngressInterfaceClassPort_get( 15407 int unit, 15408 bcm_field_entry_t entry, 15409 uint32 *data, 15410 uint32 *mask); 15411 15412 /* 15413 * Set match criteria for bcmFieldQualifyExternalValue0 15414 * qualifier in the field entry. 15415 */ 15416 extern int bcm_field_qualify_ExternalValue0( 15417 int unit, 15418 bcm_field_entry_t entry, 15419 uint64 data, 15420 uint64 mask); 15421 15422 /* 15423 * Get match criteria for bcmFieldQualifyExternalValue0 15424 * qualifier in the field entry. 15425 */ 15426 extern int bcm_field_qualify_ExternalValue0_get( 15427 int unit, 15428 bcm_field_entry_t entry, 15429 uint64 *data, 15430 uint64 *mask); 15431 15432 /* 15433 * Set match criteria for bcmFieldQualifyExternalValue1 15434 * qualifier in the field entry. 15435 */ 15436 extern int bcm_field_qualify_ExternalValue1( 15437 int unit, 15438 bcm_field_entry_t entry, 15439 uint64 data, 15440 uint64 mask); 15441 15442 /* 15443 * Get match criteria for bcmFieldQualifyExternalValue1 15444 * qualifier in the field entry. 15445 */ 15446 extern int bcm_field_qualify_ExternalValue1_get( 15447 int unit, 15448 bcm_field_entry_t entry, 15449 uint64 *data, 15450 uint64 *mask); 15451 15452 /* 15453 * Set match criteria for bcmFieldQualifyExternalValue2 15454 * qualifier in the field entry. 15455 */ 15456 extern int bcm_field_qualify_ExternalValue2( 15457 int unit, 15458 bcm_field_entry_t entry, 15459 uint64 data, 15460 uint64 mask); 15461 15462 /* 15463 * Get match criteria for bcmFieldQualifyExternalValue2 15464 * qualifier in the field entry. 15465 */ 15466 extern int bcm_field_qualify_ExternalValue2_get( 15467 int unit, 15468 bcm_field_entry_t entry, 15469 uint64 *data, 15470 uint64 *mask); 15471 15472 /* 15473 * Set match criteria for bcmFieldQualifyExternalValue3 15474 * qualifier in the field entry. 15475 */ 15476 extern int bcm_field_qualify_ExternalValue3( 15477 int unit, 15478 bcm_field_entry_t entry, 15479 uint64 data, 15480 uint64 mask); 15481 15482 /* 15483 * Get match criteria for bcmFieldQualifyExternalValue3 15484 * qualifier in the field entry. 15485 */ 15486 extern int bcm_field_qualify_ExternalValue3_get( 15487 int unit, 15488 bcm_field_entry_t entry, 15489 uint64 *data, 15490 uint64 *mask); 15491 15492 /* 15493 * Set match criteria for bcmFieldQualifyExternalValue4 15494 * qualifier in the field entry. 15495 */ 15496 extern int bcm_field_qualify_ExternalValue4( 15497 int unit, 15498 bcm_field_entry_t entry, 15499 uint64 data, 15500 uint64 mask); 15501 15502 /* 15503 * Get match criteria for bcmFieldQualifyExternalValue4 15504 * qualifier in the field entry. 15505 */ 15506 extern int bcm_field_qualify_ExternalValue4_get( 15507 int unit, 15508 bcm_field_entry_t entry, 15509 uint64 *data, 15510 uint64 *mask); 15511 15512 /* 15513 * Set match criteria for bcmFieldQualifyExternalValue5 15514 * qualifier in the field entry. 15515 */ 15516 extern int bcm_field_qualify_ExternalValue5( 15517 int unit, 15518 bcm_field_entry_t entry, 15519 uint64 data, 15520 uint64 mask); 15521 15522 /* 15523 * Get match criteria for bcmFieldQualifyExternalValue5 15524 * qualifier in the field entry. 15525 */ 15526 extern int bcm_field_qualify_ExternalValue5_get( 15527 int unit, 15528 bcm_field_entry_t entry, 15529 uint64 *data, 15530 uint64 *mask); 15531 15532 /* 15533 * Set match criteria for bcmFieldQualifyExternalValue6 15534 * qualifier in the field entry. 15535 */ 15536 extern int bcm_field_qualify_ExternalValue6( 15537 int unit, 15538 bcm_field_entry_t entry, 15539 uint64 data, 15540 uint64 mask); 15541 15542 /* 15543 * Get match criteria for bcmFieldQualifyExternalValue6 15544 * qualifier in the field entry. 15545 */ 15546 extern int bcm_field_qualify_ExternalValue6_get( 15547 int unit, 15548 bcm_field_entry_t entry, 15549 uint64 *data, 15550 uint64 *mask); 15551 15552 /* 15553 * Set match criteria for bcmFieldQualifyExternalValue7 15554 * qualifier in the field entry. 15555 */ 15556 extern int bcm_field_qualify_ExternalValue7( 15557 int unit, 15558 bcm_field_entry_t entry, 15559 uint64 data, 15560 uint64 mask); 15561 15562 /* 15563 * Get match criteria for bcmFieldQualifyExternalValue7 15564 * qualifier in the field entry. 15565 */ 15566 extern int bcm_field_qualify_ExternalValue7_get( 15567 int unit, 15568 bcm_field_entry_t entry, 15569 uint64 *data, 15570 uint64 *mask); 15571 15572 /* 15573 * Set match criteria for bcmFieldQualifyExternalHit0 15574 * qualifier in the field entry. 15575 */ 15576 extern int bcm_field_qualify_ExternalHit0( 15577 int unit, 15578 bcm_field_entry_t entry, 15579 uint8 data, 15580 uint8 mask); 15581 15582 /* 15583 * Get match criteria for bcmFieldQualifyExternalHit0 15584 * qualifier in the field entry. 15585 */ 15586 extern int bcm_field_qualify_ExternalHit0_get( 15587 int unit, 15588 bcm_field_entry_t entry, 15589 uint8 *data, 15590 uint8 *mask); 15591 15592 /* 15593 * Set match criteria for bcmFieldQualifyExternalHit1 15594 * qualifier in the field entry. 15595 */ 15596 extern int bcm_field_qualify_ExternalHit1( 15597 int unit, 15598 bcm_field_entry_t entry, 15599 uint8 data, 15600 uint8 mask); 15601 15602 /* 15603 * Get match criteria for bcmFieldQualifyExternalHit1 15604 * qualifier in the field entry. 15605 */ 15606 extern int bcm_field_qualify_ExternalHit1_get( 15607 int unit, 15608 bcm_field_entry_t entry, 15609 uint8 *data, 15610 uint8 *mask); 15611 15612 /* 15613 * Set match criteria for bcmFieldQualifyExternalHit2 15614 * qualifier in the field entry. 15615 */ 15616 extern int bcm_field_qualify_ExternalHit2( 15617 int unit, 15618 bcm_field_entry_t entry, 15619 uint8 data, 15620 uint8 mask); 15621 15622 /* 15623 * Get match criteria for bcmFieldQualifyExternalHit2 15624 * qualifier in the field entry. 15625 */ 15626 extern int bcm_field_qualify_ExternalHit2_get( 15627 int unit, 15628 bcm_field_entry_t entry, 15629 uint8 *data, 15630 uint8 *mask); 15631 15632 /* 15633 * Set match criteria for bcmFieldQualifyExternalHit3 15634 * qualifier in the field entry. 15635 */ 15636 extern int bcm_field_qualify_ExternalHit3( 15637 int unit, 15638 bcm_field_entry_t entry, 15639 uint8 data, 15640 uint8 mask); 15641 15642 /* 15643 * Get match criteria for bcmFieldQualifyExternalHit3 15644 * qualifier in the field entry. 15645 */ 15646 extern int bcm_field_qualify_ExternalHit3_get( 15647 int unit, 15648 bcm_field_entry_t entry, 15649 uint8 *data, 15650 uint8 *mask); 15651 15652 /* 15653 * Set match criteria for bcmFieldQualifyExternalHit4 15654 * qualifier in the field entry. 15655 */ 15656 extern int bcm_field_qualify_ExternalHit4( 15657 int unit, 15658 bcm_field_entry_t entry, 15659 uint8 data, 15660 uint8 mask); 15661 15662 /* 15663 * Get match criteria for bcmFieldQualifyExternalHit4 15664 * qualifier in the field entry. 15665 */ 15666 extern int bcm_field_qualify_ExternalHit4_get( 15667 int unit, 15668 bcm_field_entry_t entry, 15669 uint8 *data, 15670 uint8 *mask); 15671 15672 /* 15673 * Set match criteria for bcmFieldQualifyExternalHit5 15674 * qualifier in the field entry. 15675 */ 15676 extern int bcm_field_qualify_ExternalHit5( 15677 int unit, 15678 bcm_field_entry_t entry, 15679 uint8 data, 15680 uint8 mask); 15681 15682 /* 15683 * Get match criteria for bcmFieldQualifyExternalHit5 15684 * qualifier in the field entry. 15685 */ 15686 extern int bcm_field_qualify_ExternalHit5_get( 15687 int unit, 15688 bcm_field_entry_t entry, 15689 uint8 *data, 15690 uint8 *mask); 15691 15692 /* 15693 * Set match criteria for bcmFieldQualifyExternalHit6 15694 * qualifier in the field entry. 15695 */ 15696 extern int bcm_field_qualify_ExternalHit6( 15697 int unit, 15698 bcm_field_entry_t entry, 15699 uint8 data, 15700 uint8 mask); 15701 15702 /* 15703 * Get match criteria for bcmFieldQualifyExternalHit6 15704 * qualifier in the field entry. 15705 */ 15706 extern int bcm_field_qualify_ExternalHit6_get( 15707 int unit, 15708 bcm_field_entry_t entry, 15709 uint8 *data, 15710 uint8 *mask); 15711 15712 /* 15713 * Set match criteria for bcmFieldQualifyExternalHit7 15714 * qualifier in the field entry. 15715 */ 15716 extern int bcm_field_qualify_ExternalHit7( 15717 int unit, 15718 bcm_field_entry_t entry, 15719 uint8 data, 15720 uint8 mask); 15721 15722 /* 15723 * Get match criteria for bcmFieldQualifyExternalHit7 15724 * qualifier in the field entry. 15725 */ 15726 extern int bcm_field_qualify_ExternalHit7_get( 15727 int unit, 15728 bcm_field_entry_t entry, 15729 uint8 *data, 15730 uint8 *mask); 15731 15732 /* 15733 * Set match criteria for bcmFieldQualifyVpnUnknownDstMacDstPort 15734 * qualifier in the field entry. 15735 */ 15736 extern int bcm_field_qualify_VpnUnknownDstMacDstPort( 15737 int unit, 15738 bcm_field_entry_t entry, 15739 bcm_gport_t port_id); 15740 15741 /* 15742 * Get match criteria for bcmFieldQualifyVpnUnknownDstMacDstPort 15743 * qualifier in the field entry. 15744 */ 15745 extern int bcm_field_qualify_VpnUnknownDstMacDstPort_get( 15746 int unit, 15747 bcm_field_entry_t entry, 15748 bcm_gport_t *port_id); 15749 15750 /* 15751 * Set match criteria for bcmFieldQualifyVxlanNetworkId 15752 * qualifier in the field entry. 15753 */ 15754 extern int bcm_field_qualify_VxlanNetworkId( 15755 int unit, 15756 bcm_field_entry_t entry, 15757 uint32 data, 15758 uint32 mask); 15759 15760 /* 15761 * Get match criteria for bcmFieldQualifyVxlanNetworkId 15762 * qualifier in the field entry. 15763 */ 15764 extern int bcm_field_qualify_VxlanNetworkId_get( 15765 int unit, 15766 bcm_field_entry_t entry, 15767 uint32 *data, 15768 uint32 *mask); 15769 15770 /* 15771 * Set match criteria for bcmFieldQualifyVxlanFlags 15772 * qualifier in the field entry. 15773 */ 15774 extern int bcm_field_qualify_VxlanFlags( 15775 int unit, 15776 bcm_field_entry_t entry, 15777 uint8 data, 15778 uint8 mask); 15779 15780 /* 15781 * Get match criteria for bcmFieldQualifyVxlanFlags 15782 * qualifier in the field entry. 15783 */ 15784 extern int bcm_field_qualify_VxlanFlags_get( 15785 int unit, 15786 bcm_field_entry_t entry, 15787 uint8 *data, 15788 uint8 *mask); 15789 15790 /* 15791 * Set match criteria for bcmFieldQualifyNatNeeded 15792 * qualifier in the field entry. 15793 */ 15794 extern int bcm_field_qualify_NatNeeded( 15795 int unit, 15796 bcm_field_entry_t entry, 15797 uint8 data, 15798 uint8 mask); 15799 15800 /* 15801 * Get match criteria for bcmFieldQualifyNatNeeded 15802 * qualifier in the field entry. 15803 */ 15804 extern int bcm_field_qualify_NatNeeded_get( 15805 int unit, 15806 bcm_field_entry_t entry, 15807 uint8 *data, 15808 uint8 *mask); 15809 15810 /* 15811 * Set match criteria for bcmFieldQualifyNatDstRealmId 15812 * qualifier in the field entry. 15813 */ 15814 extern int bcm_field_qualify_NatDstRealmId( 15815 int unit, 15816 bcm_field_entry_t entry, 15817 uint8 data, 15818 uint8 mask); 15819 15820 /* 15821 * Get match criteria for bcmFieldQualifyNatDstRealmId 15822 * qualifier in the field entry. 15823 */ 15824 extern int bcm_field_qualify_NatDstRealmId_get( 15825 int unit, 15826 bcm_field_entry_t entry, 15827 uint8 *data, 15828 uint8 *mask); 15829 15830 /* 15831 * Set match criteria for bcmFieldQualifyNatSrcRealmId 15832 * qualifier in the field entry. 15833 */ 15834 extern int bcm_field_qualify_NatSrcRealmId( 15835 int unit, 15836 bcm_field_entry_t entry, 15837 uint8 data, 15838 uint8 mask); 15839 15840 /* 15841 * Get match criteria for bcmFieldQualifyNatSrcRealmId 15842 * qualifier in the field entry. 15843 */ 15844 extern int bcm_field_qualify_NatSrcRealmId_get( 15845 int unit, 15846 bcm_field_entry_t entry, 15847 uint8 *data, 15848 uint8 *mask); 15849 15850 /* 15851 * Set match criteria for bcmFieldQualifyIcmpError 15852 * qualifier in the field entry. 15853 */ 15854 extern int bcm_field_qualify_IcmpError( 15855 int unit, 15856 bcm_field_entry_t entry, 15857 uint8 data, 15858 uint8 mask); 15859 15860 /* 15861 * Get match criteria for bcmFieldQualifyIcmpError 15862 * qualifier in the field entry. 15863 */ 15864 extern int bcm_field_qualify_IcmpError_get( 15865 int unit, 15866 bcm_field_entry_t entry, 15867 uint8 *data, 15868 uint8 *mask); 15869 15870 /* 15871 * Set match criteria for bcmFieldQualifyTunnelId 15872 * qualifier in the field entry. 15873 */ 15874 extern int bcm_field_qualify_TunnelId( 15875 int unit, 15876 bcm_field_entry_t entry, 15877 uint32 data, 15878 uint32 mask); 15879 15880 /* 15881 * Get match criteria for bcmFieldQualifyTunnelId 15882 * qualifier in the field entry. 15883 */ 15884 extern int bcm_field_qualify_TunnelId_get( 15885 int unit, 15886 bcm_field_entry_t entry, 15887 uint32 *data, 15888 uint32 *mask); 15889 15890 /* 15891 * Set match criteria for bcmFieldQualifyArpSenderIp4 15892 * qualifier in the field entry. 15893 */ 15894 extern int bcm_field_qualify_ArpSenderIp4( 15895 int unit, 15896 bcm_field_entry_t entry, 15897 uint32 data, 15898 uint32 mask); 15899 15900 /* 15901 * Get match criteria for bcmFieldQualifyArpSenderIp4 15902 * qualifier in the field entry. 15903 */ 15904 extern int bcm_field_qualify_ArpSenderIp4_get( 15905 int unit, 15906 bcm_field_entry_t entry, 15907 uint32 *data, 15908 uint32 *mask); 15909 15910 /* 15911 * Set match criteria for bcmFieldQualifyArpTargetIp4 15912 * qualifier in the field entry. 15913 */ 15914 extern int bcm_field_qualify_ArpTargetIp4( 15915 int unit, 15916 bcm_field_entry_t entry, 15917 uint32 data, 15918 uint32 mask); 15919 15920 /* 15921 * Get match criteria for bcmFieldQualifyArpTargetIp4 15922 * qualifier in the field entry. 15923 */ 15924 extern int bcm_field_qualify_ArpTargetIp4_get( 15925 int unit, 15926 bcm_field_entry_t entry, 15927 uint32 *data, 15928 uint32 *mask); 15929 15930 /* 15931 * Set match criteria for bcmFieldQualifyArpOpcode 15932 * qualifier in the field entry. 15933 */ 15934 extern int bcm_field_qualify_ArpOpcode( 15935 int unit, 15936 bcm_field_entry_t entry, 15937 bcm_field_ArpOpcode_t data); 15938 15939 /* 15940 * Get match criteria for bcmFieldQualifyArpOpcode 15941 * qualifier in the field entry. 15942 */ 15943 extern int bcm_field_qualify_ArpOpcode_get( 15944 int unit, 15945 bcm_field_entry_t entry, 15946 bcm_field_ArpOpcode_t *data); 15947 15948 /* 15949 * Set match criteria for bcmFieldQualifyTranslatedOuterVlan 15950 * qualifier in the field entry. 15951 */ 15952 extern int bcm_field_qualify_TranslatedOuterVlan( 15953 int unit, 15954 bcm_field_entry_t entry, 15955 bcm_vlan_t data, 15956 bcm_vlan_t mask); 15957 15958 /* 15959 * Get match criteria for bcmFieldQualifyTranslatedOuterVlan 15960 * qualifier from the field entry. 15961 */ 15962 extern int bcm_field_qualify_TranslatedOuterVlan_get( 15963 int unit, 15964 bcm_field_entry_t entry, 15965 bcm_vlan_t *data, 15966 bcm_vlan_t *mask); 15967 15968 /* 15969 * Set match criteria for bcmFieldQualifyTranslatedOuterVlanId 15970 * qualifier in the field entry. 15971 */ 15972 extern int bcm_field_qualify_TranslatedOuterVlanId( 15973 int unit, 15974 bcm_field_entry_t entry, 15975 bcm_vlan_t data, 15976 bcm_vlan_t mask); 15977 15978 /* 15979 * Get match criteria for bcmFieldQualifyTranslatedOuterVlanId 15980 * qualifier from the field entry. 15981 */ 15982 extern int bcm_field_qualify_TranslatedOuterVlanId_get( 15983 int unit, 15984 bcm_field_entry_t entry, 15985 bcm_vlan_t *data, 15986 bcm_vlan_t *mask); 15987 15988 /* 15989 * Set match criteria for bcmFieldQualifyTranslatedOuterVlanPri 15990 * qualifier in the field entry. 15991 */ 15992 extern int bcm_field_qualify_TranslatedOuterVlanPri( 15993 int unit, 15994 bcm_field_entry_t entry, 15995 uint8 data, 15996 uint8 mask); 15997 15998 /* 15999 * Get match criteria for bcmFieldQualifyTranslatedOuterVlanPri 16000 * qualifier from the field entry. 16001 */ 16002 extern int bcm_field_qualify_TranslatedOuterVlanPri_get( 16003 int unit, 16004 bcm_field_entry_t entry, 16005 uint8 *data, 16006 uint8 *mask); 16007 16008 /* 16009 * Set match criteria for bcmFieldQualifyTranslatedOuterVlanCfi 16010 * qualifier in the field entry. 16011 */ 16012 extern int bcm_field_qualify_TranslatedOuterVlanCfi( 16013 int unit, 16014 bcm_field_entry_t entry, 16015 uint8 data, 16016 uint8 mask); 16017 16018 /* 16019 * Get match criteria for bcmFieldQualifyTranslatedOuterVlanCfi_get 16020 * qualifier from the field entry. 16021 */ 16022 extern int bcm_field_qualify_TranslatedOuterVlanCfi_get( 16023 int unit, 16024 bcm_field_entry_t entry, 16025 uint8 *data, 16026 uint8 *mask); 16027 16028 /* 16029 * Set match criteria for bcmFieldQualifyTranslatedInnerVlan 16030 * qualifier in the field entry. 16031 */ 16032 extern int bcm_field_qualify_TranslatedInnerVlan( 16033 int unit, 16034 bcm_field_entry_t entry, 16035 bcm_vlan_t data, 16036 bcm_vlan_t mask); 16037 16038 /* 16039 * Get match criteria for bcmFieldQualifyTranslatedInnerVlan 16040 * qualifier from the field entry. 16041 */ 16042 extern int bcm_field_qualify_TranslatedInnerVlan_get( 16043 int unit, 16044 bcm_field_entry_t entry, 16045 bcm_vlan_t *data, 16046 bcm_vlan_t *mask); 16047 16048 /* 16049 * Set match criteria for bcmFieldQualifyTranslatedInnerVlanId 16050 * qualifier in the field entry. 16051 */ 16052 extern int bcm_field_qualify_TranslatedInnerVlanId( 16053 int unit, 16054 bcm_field_entry_t entry, 16055 bcm_vlan_t data, 16056 bcm_vlan_t mask); 16057 16058 /* 16059 * Get match criteria for bcmFieldQualifyTranslatedInnerVlanId 16060 * qualifier from the field entry. 16061 */ 16062 extern int bcm_field_qualify_TranslatedInnerVlanId_get( 16063 int unit, 16064 bcm_field_entry_t entry, 16065 bcm_vlan_t *data, 16066 bcm_vlan_t *mask); 16067 16068 /* 16069 * Set match criteria for bcmFieldQualifyTranslatedInnerVlanPri 16070 * qualifier in the field entry. 16071 */ 16072 extern int bcm_field_qualify_TranslatedInnerVlanPri( 16073 int unit, 16074 bcm_field_entry_t entry, 16075 uint8 data, 16076 uint8 mask); 16077 16078 /* 16079 * Get match criteria for bcmFieldQualifyTranslatedInnerVlanPri 16080 * qualifier from the field entry. 16081 */ 16082 extern int bcm_field_qualify_TranslatedInnerVlanPri_get( 16083 int unit, 16084 bcm_field_entry_t entry, 16085 uint8 *data, 16086 uint8 *mask); 16087 16088 /* 16089 * Set match criteria for bcmFieldQualifyTranslatedInnerVlanCfi 16090 * qualifier in the field entry. 16091 */ 16092 extern int bcm_field_qualify_TranslatedInnerVlanCfi( 16093 int unit, 16094 bcm_field_entry_t entry, 16095 uint8 data, 16096 uint8 mask); 16097 16098 /* 16099 * Get match criteria for bcmFieldQualifyTranslatedInnerVlanCfi_get 16100 * qualifier from the field entry. 16101 */ 16102 extern int bcm_field_qualify_TranslatedInnerVlanCfi_get( 16103 int unit, 16104 bcm_field_entry_t entry, 16105 uint8 *data, 16106 uint8 *mask); 16107 16108 /* 16109 * Set match criteria for bcmFieldQualifyFibreChanRCtl 16110 * qualifier in the field entry. 16111 */ 16112 extern int bcm_field_qualify_FibreChanRCtl( 16113 int unit, 16114 bcm_field_entry_t entry, 16115 uint8 data, 16116 uint8 mask); 16117 16118 /* 16119 * Get match criteria for bcmFieldQualifyFibreChanRCtl 16120 * qualifier from the field entry. 16121 */ 16122 extern int bcm_field_qualify_FibreChanRCtl_get( 16123 int unit, 16124 bcm_field_entry_t entry, 16125 uint8 *data, 16126 uint8 *mask); 16127 16128 /* 16129 * Set match criteria for bcmFieldQualifyFibreChanFCtl 16130 * qualifier in the field entry. 16131 */ 16132 extern int bcm_field_qualify_FibreChanFCtl( 16133 int unit, 16134 bcm_field_entry_t entry, 16135 uint32 data, 16136 uint32 mask); 16137 16138 /* 16139 * Get match criteria for bcmFieldQualifyFibreChanFCtl 16140 * qualifier from the field entry. 16141 */ 16142 extern int bcm_field_qualify_FibreChanFCtl_get( 16143 int unit, 16144 bcm_field_entry_t entry, 16145 uint32 *data, 16146 uint32 *mask); 16147 16148 /* 16149 * Set match criteria for bcmFieldQualifyFibreChanCSCtl 16150 * qualifier in the field entry. 16151 */ 16152 extern int bcm_field_qualify_FibreChanCSCtl( 16153 int unit, 16154 bcm_field_entry_t entry, 16155 uint8 data, 16156 uint8 mask); 16157 16158 /* 16159 * Get match criteria for bcmFieldQualifyFibreChanCSCtl 16160 * qualifier from the field entry. 16161 */ 16162 extern int bcm_field_qualify_FibreChanCSCtl_get( 16163 int unit, 16164 bcm_field_entry_t entry, 16165 uint8 *data, 16166 uint8 *mask); 16167 16168 /* 16169 * Set match criteria for bcmFieldQualifyFibreChanDFCtl 16170 * qualifier in the field entry. 16171 */ 16172 extern int bcm_field_qualify_FibreChanDFCtl( 16173 int unit, 16174 bcm_field_entry_t entry, 16175 uint8 data, 16176 uint8 mask); 16177 16178 /* 16179 * Get match criteria for bcmFieldQualifyFibreChanDFCtl 16180 * qualifier from the field entry. 16181 */ 16182 extern int bcm_field_qualify_FibreChanDFCtl_get( 16183 int unit, 16184 bcm_field_entry_t entry, 16185 uint8 *data, 16186 uint8 *mask); 16187 16188 /* 16189 * Set match criteria for bcmFieldQualifyFibreChanType 16190 * qualifier in the field entry. 16191 */ 16192 extern int bcm_field_qualify_FibreChanType( 16193 int unit, 16194 bcm_field_entry_t entry, 16195 uint8 data, 16196 uint8 mask); 16197 16198 /* 16199 * Get match criteria for bcmFieldQualifyFibreChanType 16200 * qualifier from the field entry. 16201 */ 16202 extern int bcm_field_qualify_FibreChanType_get( 16203 int unit, 16204 bcm_field_entry_t entry, 16205 uint8 *data, 16206 uint8 *mask); 16207 16208 /* 16209 * Set match criteria for bcmFieldQualifyFibreChanSrcId 16210 * qualifier in the field entry. 16211 */ 16212 extern int bcm_field_qualify_FibreChanSrcId( 16213 int unit, 16214 bcm_field_entry_t entry, 16215 uint32 data, 16216 uint32 mask); 16217 16218 /* 16219 * Get match criteria for bcmFieldQualifyFibreChanSrcId 16220 * qualifier from the field entry. 16221 */ 16222 extern int bcm_field_qualify_FibreChanSrcId_get( 16223 int unit, 16224 bcm_field_entry_t entry, 16225 uint32 *data, 16226 uint32 *mask); 16227 16228 /* 16229 * Set match criteria for bcmFieldQualifyFibreChanDstId 16230 * qualifier in the field entry. 16231 */ 16232 extern int bcm_field_qualify_FibreChanDstId( 16233 int unit, 16234 bcm_field_entry_t entry, 16235 uint32 data, 16236 uint32 mask); 16237 16238 /* 16239 * Get match criteria for bcmFieldQualifyFibreChanDstId 16240 * qualifier from the field entry. 16241 */ 16242 extern int bcm_field_qualify_FibreChanDstId_get( 16243 int unit, 16244 bcm_field_entry_t entry, 16245 uint32 *data, 16246 uint32 *mask); 16247 16248 /* 16249 * Set match criteria for bcmFieldQualifyFibreChanVFTVersion 16250 * qualifier in the field entry. 16251 */ 16252 extern int bcm_field_qualify_FibreChanVFTVersion( 16253 int unit, 16254 bcm_field_entry_t entry, 16255 uint8 data, 16256 uint8 mask); 16257 16258 /* 16259 * Get match criteria for bcmFieldQualifyFibreChanVFTVersion 16260 * qualifier from the field entry. 16261 */ 16262 extern int bcm_field_qualify_FibreChanVFTVersion_get( 16263 int unit, 16264 bcm_field_entry_t entry, 16265 uint8 *data, 16266 uint8 *mask); 16267 16268 /* 16269 * Set match criteria for bcmFieldQualifyFibreChanVFTPri 16270 * qualifier in the field entry. 16271 */ 16272 extern int bcm_field_qualify_FibreChanVFTPri( 16273 int unit, 16274 bcm_field_entry_t entry, 16275 uint8 data, 16276 uint8 mask); 16277 16278 /* 16279 * Get match criteria for bcmFieldQualifyFibreChanVFTPri 16280 * qualifier from the field entry. 16281 */ 16282 extern int bcm_field_qualify_FibreChanVFTPri_get( 16283 int unit, 16284 bcm_field_entry_t entry, 16285 uint8 *data, 16286 uint8 *mask); 16287 16288 /* 16289 * Set match criteria for bcmFieldQualifyFibreChanVFTFabricId 16290 * qualifier in the field entry. 16291 */ 16292 extern int bcm_field_qualify_FibreChanVFTFabricId( 16293 int unit, 16294 bcm_field_entry_t entry, 16295 uint16 data, 16296 uint16 mask); 16297 16298 /* 16299 * Get match criteria for bcmFieldQualifyFibreChanVFTFabricId 16300 * qualifier from the field entry. 16301 */ 16302 extern int bcm_field_qualify_FibreChanVFTFabricId_get( 16303 int unit, 16304 bcm_field_entry_t entry, 16305 uint16 *data, 16306 uint16 *mask); 16307 16308 /* 16309 * Set match criteria for bcmFieldQualifyFibreChanVFTHopCount 16310 * qualifier in the field entry. 16311 */ 16312 extern int bcm_field_qualify_FibreChanVFTHopCount( 16313 int unit, 16314 bcm_field_entry_t entry, 16315 uint8 data, 16316 uint8 mask); 16317 16318 /* 16319 * Get match criteria for bcmFieldQualifyFibreChanVFTHopCount 16320 * qualifier from the field entry. 16321 */ 16322 extern int bcm_field_qualify_FibreChanVFTHopCount_get( 16323 int unit, 16324 bcm_field_entry_t entry, 16325 uint8 *data, 16326 uint8 *mask); 16327 16328 /* 16329 * Set match criteria for bcmFieldQualifyFibreChanVFTVsanId 16330 * qualifier in the field entry. 16331 */ 16332 extern int bcm_field_qualify_FibreChanVFTVsanId( 16333 int unit, 16334 bcm_field_entry_t entry, 16335 uint16 data, 16336 uint16 mask); 16337 16338 /* 16339 * Get match criteria for bcmFieldQualifyFibreChanVFTVsanId 16340 * qualifier from the field entry. 16341 */ 16342 extern int bcm_field_qualify_FibreChanVFTVsanId_get( 16343 int unit, 16344 bcm_field_entry_t entry, 16345 uint16 *data, 16346 uint16 *mask); 16347 16348 /* 16349 * Set match criteria for bcmFieldQualifyFibreChanVFTVsanPri 16350 * qualifier in the field entry. 16351 */ 16352 extern int bcm_field_qualify_FibreChanVFTVsanPri( 16353 int unit, 16354 bcm_field_entry_t entry, 16355 uint8 data, 16356 uint8 mask); 16357 16358 /* 16359 * Get match criteria for bcmFieldQualifyFibreChanVFTVsanPri 16360 * qualifier from the field entry. 16361 */ 16362 extern int bcm_field_qualify_FibreChanVFTVsanPri_get( 16363 int unit, 16364 bcm_field_entry_t entry, 16365 uint8 *data, 16366 uint8 *mask); 16367 16368 /* 16369 * Set match criteria for bcmFieldQualifyFcoeSOF 16370 * qualifier in the field entry. 16371 */ 16372 extern int bcm_field_qualify_FcoeSOF( 16373 int unit, 16374 bcm_field_entry_t entry, 16375 uint8 data, 16376 uint8 mask); 16377 16378 /* 16379 * Get match criteria for bcmFieldQualifyFcoeSOF 16380 * qualifier from the field entry. 16381 */ 16382 extern int bcm_field_qualify_FcoeSOF_get( 16383 int unit, 16384 bcm_field_entry_t entry, 16385 uint8 *data, 16386 uint8 *mask); 16387 16388 /* 16389 * Set match criteria for bcmFieldQualifyFibreChanZoneCheck 16390 * qualifier in the field entry. 16391 */ 16392 extern int bcm_field_qualify_FibreChanZoneCheck( 16393 int unit, 16394 bcm_field_entry_t entry, 16395 uint8 data, 16396 uint8 mask); 16397 16398 /* 16399 * Get match criteria for bcmFieldQualifyFibreChanZoneCheck 16400 * qualifier from the field entry. 16401 */ 16402 extern int bcm_field_qualify_FibreChanZoneCheck_get( 16403 int unit, 16404 bcm_field_entry_t entry, 16405 uint8 *data, 16406 uint8 *mask); 16407 16408 /* 16409 * Set match criteria for bcmFieldQualifyFibreChanSrcFpmaCheck 16410 * qualifier in the field entry. 16411 */ 16412 extern int bcm_field_qualify_FibreChanSrcFpmaCheck( 16413 int unit, 16414 bcm_field_entry_t entry, 16415 uint8 data, 16416 uint8 mask); 16417 16418 /* 16419 * Get match criteria for bcmFieldQualifyFibreChanSrcFpmaCheck 16420 * qualifier from the field entry. 16421 */ 16422 extern int bcm_field_qualify_FibreChanSrcFpmaCheck_get( 16423 int unit, 16424 bcm_field_entry_t entry, 16425 uint8 *data, 16426 uint8 *mask); 16427 16428 /* 16429 * Set match criteria for bcmFieldQualifyFibreChanSrcBindCheck 16430 * qualifier in the field entry. 16431 */ 16432 extern int bcm_field_qualify_FibreChanSrcBindCheck( 16433 int unit, 16434 bcm_field_entry_t entry, 16435 uint8 data, 16436 uint8 mask); 16437 16438 /* 16439 * Get match criteria for bcmFieldQualifyFibreChanSrcBindCheck 16440 * qualifier from the field entry. 16441 */ 16442 extern int bcm_field_qualify_FibreChanSrcBindCheck_get( 16443 int unit, 16444 bcm_field_entry_t entry, 16445 uint8 *data, 16446 uint8 *mask); 16447 16448 /* 16449 * Set match criteria for bcmFieldQualifyFcoeVersionIsZero 16450 * qualifier in the field entry. 16451 */ 16452 extern int bcm_field_qualify_FcoeVersionIsZero( 16453 int unit, 16454 bcm_field_entry_t entry, 16455 uint8 data, 16456 uint8 mask); 16457 16458 /* 16459 * Get match criteria for bcmFieldQualifyFcoeVersionIsZero 16460 * qualifier from the field entry. 16461 */ 16462 extern int bcm_field_qualify_FcoeVersionIsZero_get( 16463 int unit, 16464 bcm_field_entry_t entry, 16465 uint8 *data, 16466 uint8 *mask); 16467 16468 /* 16469 * Set match criteria for bcmFieldQualifyFibreChanVFTValid 16470 * qualifier in the field entry. 16471 */ 16472 extern int bcm_field_qualify_FibreChanVFTValid( 16473 int unit, 16474 bcm_field_entry_t entry, 16475 uint8 data, 16476 uint8 mask); 16477 16478 /* 16479 * Get match criteria for bcmFieldQualifyFibreChanVFTValid 16480 * qualifier from the field entry. 16481 */ 16482 extern int bcm_field_qualify_FibreChanVFTValid_get( 16483 int unit, 16484 bcm_field_entry_t entry, 16485 uint8 *data, 16486 uint8 *mask); 16487 16488 /* 16489 * Set match criteria for bcmFieldQualifyForwardingHeaderOffset 16490 * qualifier in the field entry. 16491 */ 16492 extern int bcm_field_qualify_ForwardingHeaderOffset( 16493 int unit, 16494 bcm_field_entry_t entry, 16495 bcm_field_data_offset_base_t base_header, 16496 uint32 data, 16497 uint32 mask); 16498 16499 /* 16500 * Get match criteria for bcmFieldQualifyForwardingHeaderOffset 16501 * qualifier from the field entry. 16502 */ 16503 extern int bcm_field_qualify_ForwardingHeaderOffset_get( 16504 int unit, 16505 bcm_field_entry_t entry, 16506 bcm_field_data_offset_base_t *base_header, 16507 uint32 *data, 16508 uint32 *mask); 16509 16510 #endif /* BCM_HIDE_DISPATCHABLE */ 16511 16512 typedef enum bcm_field_orientation_e { 16513 bcmFieldOrientationNetwork = 0, /* Network orientation (hub) */ 16514 bcmFieldOrientationAccess = 1, /* Access orientation (spoke) */ 16515 bcmFieldOrientationCount = 2 /* Always Last. Not a usable value. */ 16516 } bcm_field_orientation_t; 16517 16518 typedef enum bcm_field_start_packet_strip_e { 16519 bcmFieldStartToConfigurableStrip = 0, /* Configurable size of number of bytes 16520 to strip, according to param1. */ 16521 bcmFieldStartToL2Strip = 1, /* Remove the start-of-packet up to the 16522 L2 header. */ 16523 bcmFieldStartToFwdStrip = 2, /* Remove the start-of-packet up to the 16524 Forwarding header. */ 16525 bcmFieldStartToFwdNextStrip = 3, /* Remove the start-of-packet up to the 16526 header following the Forwarding 16527 header. */ 16528 bcmFieldStartStripCount = 4 /* Always Last. Not a usable value. */ 16529 } bcm_field_start_packet_strip_t; 16530 16531 #ifndef BCM_HIDE_DISPATCHABLE 16532 16533 /* 16534 * Set qualification on a particular stage. This feature is normally 16535 * used for preselectors. 16536 */ 16537 extern int bcm_field_qualify_Stage( 16538 int unit, 16539 bcm_field_entry_t entry, 16540 bcm_field_stage_t data); 16541 16542 /* Get stage qualifier information. */ 16543 extern int bcm_field_qualify_Stage_get( 16544 int unit, 16545 bcm_field_entry_t entry, 16546 bcm_field_stage_t *data); 16547 16548 /* 16549 * Configure match criteria for bcmFieldQualifyIpFragNonOrFirst 16550 * qualifier from the field entry. 16551 */ 16552 extern int bcm_field_qualify_IpFragNonOrFirst( 16553 int unit, 16554 bcm_field_entry_t entry, 16555 uint8 data, 16556 uint8 mask); 16557 16558 /* 16559 * Get match criteria for bcmFieldQualifyIpFragNonOrFirst 16560 * qualifier from the field entry. 16561 */ 16562 extern int bcm_field_qualify_IpFragNonOrFirst_get( 16563 int unit, 16564 bcm_field_entry_t entry, 16565 uint8 *data, 16566 uint8 *mask); 16567 16568 /* 16569 * Configure match criteria for bcmFieldQualifyPacketLength 16570 * qualifier from the field entry. 16571 */ 16572 extern int bcm_field_qualify_PacketLength( 16573 int unit, 16574 bcm_field_entry_t entry, 16575 uint16 data, 16576 uint16 mask); 16577 16578 /* 16579 * Get match criteria for bcmFieldQualifyPacketLength 16580 * qualifier from the field entry. 16581 */ 16582 extern int bcm_field_qualify_PacketLength_get( 16583 int unit, 16584 bcm_field_entry_t entry, 16585 uint16 *data, 16586 uint16 *mask); 16587 16588 /* 16589 * Set match criteria for bcmFieldQualifyGroupClass 16590 * qualifier in the field entry. 16591 */ 16592 extern int bcm_field_qualify_GroupClass( 16593 int unit, 16594 bcm_field_entry_t entry, 16595 uint32 data, 16596 uint32 mask); 16597 16598 /* 16599 * Get match criteria for bcmFieldQualifyGroupClass 16600 * qualifier in the field entry. 16601 */ 16602 extern int bcm_field_qualify_GroupClass_get( 16603 int unit, 16604 bcm_field_entry_t entry, 16605 uint32 *data, 16606 uint32 *mask); 16607 16608 /* 16609 * Set match criteria for bcmFieldQualifyUdfClass 16610 * qualifier in the field entry. 16611 */ 16612 extern int bcm_field_qualify_UdfClass( 16613 int unit, 16614 bcm_field_entry_t entry, 16615 uint32 data, 16616 uint32 mask); 16617 16618 /* 16619 * Get match criteria for bcmFieldQualifyUdfClass 16620 * qualifier in the field entry. 16621 */ 16622 extern int bcm_field_qualify_UdfClass_get( 16623 int unit, 16624 bcm_field_entry_t entry, 16625 uint32 *data, 16626 uint32 *mask); 16627 16628 /* 16629 * Set match criteria for bcmFieldQualifyInterfaceLookupClassPort 16630 * qualifier in the field entry. 16631 */ 16632 extern int bcm_field_qualify_InterfaceLookupClassPort( 16633 int unit, 16634 bcm_field_entry_t entry, 16635 uint32 data, 16636 uint32 mask); 16637 16638 /* 16639 * Get match criteria for bcmFieldQualifyInterfaceLookupClassPort 16640 * qualifier in the field entry. 16641 */ 16642 extern int bcm_field_qualify_InterfaceLookupClassPort_get( 16643 int unit, 16644 bcm_field_entry_t entry, 16645 uint32 *data, 16646 uint32 *mask); 16647 16648 /* 16649 * Set match criteria for 16650 * bcmFieldQualifyInterfaceIngressKeySelectClassPort 16651 * qualifier in the field entry. 16652 */ 16653 extern int bcm_field_qualify_InterfaceIngressKeySelectClassPort( 16654 int unit, 16655 bcm_field_entry_t entry, 16656 uint32 data, 16657 uint32 mask); 16658 16659 /* 16660 * Get match criteria for 16661 * bcmFieldQualifyInterfaceIngressKeySelectClassPort 16662 * qualifier in the field entry. 16663 */ 16664 extern int bcm_field_qualify_InterfaceIngressKeySelectClassPort_get( 16665 int unit, 16666 bcm_field_entry_t entry, 16667 uint32 *data, 16668 uint32 *mask); 16669 16670 /* 16671 * Set match criteria for bcmFieldQualifyITag 16672 * qualifier in the field entry. 16673 */ 16674 extern int bcm_field_qualify_ITag( 16675 int unit, 16676 bcm_field_entry_t entry, 16677 uint32 data, 16678 uint32 mask); 16679 16680 /* 16681 * Get match criteria for bcmFieldQualifyITag 16682 * qualifier from the field entry. 16683 */ 16684 extern int bcm_field_qualify_ITag_get( 16685 int unit, 16686 bcm_field_entry_t entry, 16687 uint32 *data, 16688 uint32 *mask); 16689 16690 /* 16691 * Set match criteria for bcmFieldQualifyBfdYourDiscriminator 16692 * qualifier in the field entry. 16693 */ 16694 extern int bcm_field_qualify_BfdYourDiscriminator( 16695 int unit, 16696 bcm_field_entry_t entry, 16697 uint32 data, 16698 uint32 mask); 16699 16700 /* 16701 * Get match criteria for bcmFieldQualifyBfdYourDiscriminator 16702 * qualifier from the field entry. 16703 */ 16704 extern int bcm_field_qualify_BfdYourDiscriminator_get( 16705 int unit, 16706 bcm_field_entry_t entry, 16707 uint32 *data, 16708 uint32 *mask); 16709 16710 /* 16711 * Set match criteria for bcmFieldQualifyCpuVisibilityPacket 16712 * qualifier in the field entry. 16713 */ 16714 extern int bcm_field_qualify_CpuVisibilityPacket( 16715 int unit, 16716 bcm_field_entry_t entry, 16717 uint8 data, 16718 uint8 mask); 16719 16720 /* 16721 * Get match criteria for bcmFieldQualifyCpuVisibilityPacket 16722 * qualifier from the field entry. 16723 */ 16724 extern int bcm_field_qualify_CpuVisibilityPacket_get( 16725 int unit, 16726 bcm_field_entry_t entry, 16727 uint8 *data, 16728 uint8 *mask); 16729 16730 /* 16731 * Set match criteria for bcmFieldQualifyDstL2MulticastGroup 16732 * qualifier in the field entry. 16733 */ 16734 extern int bcm_field_qualify_DstL2MulticastGroup( 16735 int unit, 16736 bcm_field_entry_t entry, 16737 bcm_multicast_t group, 16738 bcm_multicast_t mask); 16739 16740 /* 16741 * Get match criteria for bcmFieldQualifyDstL2MulticastGroup 16742 * qualifier from the field entry. 16743 */ 16744 extern int bcm_field_qualify_DstL2MulticastGroup_get( 16745 int unit, 16746 bcm_field_entry_t entry, 16747 bcm_multicast_t *group, 16748 bcm_multicast_t *mask); 16749 16750 /* 16751 * Set match criteria for bcmFieldQualifyDstL3MulticastGroup 16752 * qualifier in the field entry. 16753 */ 16754 extern int bcm_field_qualify_DstL3MulticastGroup( 16755 int unit, 16756 bcm_field_entry_t entry, 16757 bcm_multicast_t group, 16758 bcm_multicast_t mask); 16759 16760 /* 16761 * Get match criteria for bcmFieldQualifyDstL3MulticastGroup 16762 * qualifier from the field entry. 16763 */ 16764 extern int bcm_field_qualify_DstL3MulticastGroup_get( 16765 int unit, 16766 bcm_field_entry_t entry, 16767 bcm_multicast_t *group, 16768 bcm_multicast_t *mask); 16769 16770 #endif /* BCM_HIDE_DISPATCHABLE */ 16771 16772 /* Oam Type (ETHERNET, MPLS). */ 16773 typedef enum bcm_field_oam_type_e { 16774 bcmFieldOamTypeEthernet, /* Oam Type Ethernet. */ 16775 bcmFieldOamTypeMpls, /* Oam Type MPLS. */ 16776 bcmFieldOamTypeCount /* Always last. Not a usable value. */ 16777 } bcm_field_oam_type_t; 16778 16779 #define BCM_FIELD_OAM_TYPE \ 16780 { \ 16781 "Ethernet", \ 16782 "Mpls" \ 16783 } 16784 16785 /* 16786 * Mpls Oam Control Packet Type (UNKNOWN, VCCV1, VCCV2, VCCV3, 16787 * VCCV4/GAL_ACH). 16788 */ 16789 typedef enum bcm_field_MplsOam_Control_pktType_e { 16790 bcmFieldMplsOamControlPktTypeUnknown, /* Mpls Oam Control Packet Type UNKNOWN. */ 16791 bcmFieldMplsOamControlPktTypeVCCV1, /* Mpls Oam Control Packet Type VCCV1. */ 16792 bcmFieldMplsOamControlPktTypeVCCV2, /* Mpls Oam Control Packet Type VCCV2. */ 16793 bcmFieldMplsOamControlPktTypeVCCV3, /* Mpls Oam Control Packet Type VCCV3. */ 16794 bcmFieldMplsOamControlPktTypeVCCV4_GAL_ACH, /* Mpls Oam Control Packet Type 16795 VCCV4/GAL_ACH. */ 16796 bcmFieldMplsOamControlPktTypeCount /* Always last. Not a usable value. */ 16797 } bcm_field_MplsOam_Control_pktType_t; 16798 16799 #define BCM_FIELD_MPLS_OAM_CONTROL_PKT_TYPE \ 16800 { \ 16801 "Unknown", \ 16802 "VCCV1", \ 16803 "VCCV2", \ 16804 "VCCV3", \ 16805 "VCCV4_GAL_ACH" \ 16806 } 16807 16808 #ifndef BCM_HIDE_DISPATCHABLE 16809 16810 /* bcm_field_qualify_L3SrcBind */ 16811 extern int bcm_field_qualify_L3SrcBind( 16812 int unit, 16813 bcm_field_entry_t entry, 16814 uint8 data, 16815 uint8 mask); 16816 16817 /* 16818 * Get match criteria for bcmFieldQualifyL3SrcBind 16819 * qualifier from the field entry. 16820 */ 16821 extern int bcm_field_qualify_L3SrcBind_get( 16822 int unit, 16823 bcm_field_entry_t entry, 16824 uint8 *data, 16825 uint8 *mask); 16826 16827 /* bcm_field_qualify_ECid */ 16828 extern int bcm_field_qualify_ECid( 16829 int unit, 16830 bcm_field_entry_t entry, 16831 uint32 data, 16832 uint32 mask); 16833 16834 /* 16835 * Get match criteria for bcmFieldQualifyECid 16836 * qualifier from the field entry. 16837 */ 16838 extern int bcm_field_qualify_ECid_get( 16839 int unit, 16840 bcm_field_entry_t entry, 16841 uint32 *data, 16842 uint32 *mask); 16843 16844 /* bcm_field_qualify_IngressECid */ 16845 extern int bcm_field_qualify_IngressECid( 16846 int unit, 16847 bcm_field_entry_t entry, 16848 uint32 data, 16849 uint32 mask); 16850 16851 /* 16852 * Get match criteria for bcmFieldQualifyIngressECid 16853 * qualifier from the field entry. 16854 */ 16855 extern int bcm_field_qualify_IngressECid_get( 16856 int unit, 16857 bcm_field_entry_t entry, 16858 uint32 *data, 16859 uint32 *mask); 16860 16861 /* bcm_field_qualify_ETag */ 16862 extern int bcm_field_qualify_ETag( 16863 int unit, 16864 bcm_field_entry_t entry, 16865 uint64 data, 16866 uint64 mask); 16867 16868 /* 16869 * Get match criteria for bcmFieldQualifyETag 16870 * qualifier from the field entry. 16871 */ 16872 extern int bcm_field_qualify_ETag_get( 16873 int unit, 16874 bcm_field_entry_t entry, 16875 uint64 *data, 16876 uint64 *mask); 16877 16878 #endif /* BCM_HIDE_DISPATCHABLE */ 16879 16880 typedef enum bcm_field_system_header_e { 16881 bcmFieldSystemHeaderPphEei = 0, /* EEI extension of the PPH (Packet 16882 Processing Header) */ 16883 bcmFieldSystemHeaderCount = 1 /* Always Last. Not a usable value. */ 16884 } bcm_field_system_header_t; 16885 16886 typedef enum bcm_field_fabric_header_e { 16887 bcmFieldFabricHeaderEthernet = 0, /* Ethernet fabric header */ 16888 bcmFieldFabricHeaderTrafficManagementUcast = 1, /* Unicast Traffic Management fabric 16889 header */ 16890 bcmFieldFabricHeaderTrafficManagementMcast = 2, /* Multicast Traffic Management fabric 16891 header */ 16892 bcmFieldFabricHeaderTrafficManagementVPort = 3, /* VPort Traffic Management fabric 16893 header */ 16894 bcmFieldFabricHeaderStacking = 4, /* Stacking fabric header */ 16895 bcmFieldFabricHeaderEthernetDSP = 5, /* regular Ethernet, stacking FTMH with 16896 DSP Extension and PPH fabric header */ 16897 bcmFieldFabricHeaderEthernetLearn = 6, /* regular Ethernet, stacking FTMH with 16898 DSP Extension and PPH fabric header */ 16899 bcmFieldFabricHeaderEthernetlatency = 7, /* regular Ethernet, stacking FTMH with 16900 OAM-TS-LATENCY header */ 16901 bcmFieldFabricHeaderEthernetLearnDisable = 8, /* Regular Ethernet, with disabled PPH 16902 header learn extension. */ 16903 bcmFieldFabricHeaderCount = 9 /* Always Last. Not a usable value. */ 16904 } bcm_field_fabric_header_t; 16905 16906 /* Multi-range flags */ 16907 #define BCM_FIELD_RANGE_MULTI_WITH_ID 0x00000001 /* Range Id is provided */ 16908 #define BCM_FIELD_RANGE_MULTI_REPLACE 0x00000002 /* Replace existing range */ 16909 16910 /* VXLAN Flags from IETF Draft(for bcm_field_qualify_VxlanFlags). */ 16911 #define BCM_FIELD_VXLAN_VNI_VALID 0x8 /* VXLAN Network ID (VNI)- Valid */ 16912 16913 /* FCOE zone check action types. */ 16914 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_NOP 0 16915 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_DISABLE 1 16916 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_ENABLE 2 16917 16918 #ifndef BCM_HIDE_DISPATCHABLE 16919 16920 /* 16921 * Set match criteria for bcmFieldQualifyOamMdl 16922 * qualifier from the field entry 16923 */ 16924 extern int bcm_field_qualify_OamMdl( 16925 int unit, 16926 bcm_field_entry_t entry, 16927 uint8 data, 16928 uint8 mask); 16929 16930 /* 16931 * Get match criteria for bcmFieldQualifyOamMdl 16932 * qualifier from the field entry. 16933 */ 16934 extern int bcm_field_qualify_OamMdl_get( 16935 int unit, 16936 bcm_field_entry_t entry, 16937 uint8 *data, 16938 uint8 *mask); 16939 16940 /* Set match criteria for IntCongestionNotification qualifier. */ 16941 extern int bcm_field_qualify_IntCongestionNotification( 16942 int unit, 16943 bcm_field_entry_t entry, 16944 uint8 data, 16945 uint8 mask); 16946 16947 /* Get match criteria for IntCongestionNotification qualifier. */ 16948 extern int bcm_field_qualify_IntCongestionNotification_get( 16949 int unit, 16950 bcm_field_entry_t entry, 16951 uint8 *data, 16952 uint8 *mask); 16953 16954 /* bcm_field_qualify_SrcNivGport */ 16955 extern int bcm_field_qualify_SrcNivGport( 16956 int unit, 16957 bcm_field_entry_t entry, 16958 bcm_gport_t niv_port_id); 16959 16960 /* bcm_field_qualify_DstNivGport */ 16961 extern int bcm_field_qualify_DstNivGport( 16962 int unit, 16963 bcm_field_entry_t entry, 16964 bcm_gport_t niv_port_id); 16965 16966 /* 16967 * Get match criteria for bcmFieldQualifySrcNivGport 16968 * qualifier from the field entry. 16969 */ 16970 extern int bcm_field_qualify_SrcNivGport_get( 16971 int unit, 16972 bcm_field_entry_t entry, 16973 bcm_gport_t *niv_port_id); 16974 16975 /* 16976 * Get match criteria for bcmFieldQualifyDstNivGport 16977 * qualifier from the field entry. 16978 */ 16979 extern int bcm_field_qualify_DstNivGport_get( 16980 int unit, 16981 bcm_field_entry_t entry, 16982 bcm_gport_t *niv_port_id); 16983 16984 /* Set match criteria for DstGport qualifier. */ 16985 extern int bcm_field_qualify_DstGport( 16986 int unit, 16987 bcm_field_entry_t entry, 16988 bcm_gport_t port_id); 16989 16990 /* Get match criteria for DstGport qualifier. */ 16991 extern int bcm_field_qualify_DstGport_get( 16992 int unit, 16993 bcm_field_entry_t entry, 16994 bcm_gport_t *port_id); 16995 16996 /* Set match criteria for MirrorEgressDisabled qualifier. */ 16997 extern int bcm_field_qualify_MirrorEgressDisabled( 16998 int unit, 16999 bcm_field_entry_t entry, 17000 uint8 data, 17001 uint8 mask); 17002 17003 /* Get match criteria for MirrorEgressDisabled qualifier. */ 17004 extern int bcm_field_qualify_MirrorEgressDisabled_get( 17005 int unit, 17006 bcm_field_entry_t entry, 17007 uint8 *data, 17008 uint8 *mask); 17009 17010 /* Set match criteria for BypassSrcMacFilter qualifier. */ 17011 extern int bcm_field_qualify_BypassSrcMacFilter( 17012 int unit, 17013 bcm_field_entry_t entry, 17014 uint8 data, 17015 uint8 mask); 17016 17017 /* Get match criteria for BypassSrcMacFilter qualifier. */ 17018 extern int bcm_field_qualify_BypassSrcMacFilter_get( 17019 int unit, 17020 bcm_field_entry_t entry, 17021 uint8 *data, 17022 uint8 *mask); 17023 17024 /* Set match criteria for RxTrapCodeForSnoop qualifier. */ 17025 extern int bcm_field_qualify_RxTrapCodeForSnoop( 17026 int unit, 17027 bcm_field_entry_t entry, 17028 uint32 data, 17029 uint32 mask); 17030 17031 /* Get match criteria for RxTrapCodeForSnoop qualifier. */ 17032 extern int bcm_field_qualify_RxTrapCodeForSnoop_get( 17033 int unit, 17034 bcm_field_entry_t entry, 17035 uint32 *data, 17036 uint32 *mask); 17037 17038 /* Set match criteria for IpmcStarGroupValue qualifier. */ 17039 extern int bcm_field_qualify_IpmcStarGroupValue( 17040 int unit, 17041 bcm_field_entry_t entry, 17042 uint64 data, 17043 uint64 mask); 17044 17045 /* Get match criteria for IpmcStarGroupValue qualifier. */ 17046 extern int bcm_field_qualify_IpmcStarGroupValue_get( 17047 int unit, 17048 bcm_field_entry_t entry, 17049 uint64 *data, 17050 uint64 *mask); 17051 17052 /* Set match criteria for NativeVSwitch qualifier. */ 17053 extern int bcm_field_qualify_NativeVSwitch( 17054 int unit, 17055 bcm_field_entry_t entry, 17056 bcm_vlan_t data, 17057 bcm_vlan_t mask); 17058 17059 /* Get match criteria for NativeVSwitch qualifier. */ 17060 extern int bcm_field_qualify_NativeVSwitch_get( 17061 int unit, 17062 bcm_field_entry_t entry, 17063 bcm_vlan_t *data, 17064 bcm_vlan_t *mask); 17065 17066 /* Set match criteria for NativeVSwitchValid qualifier. */ 17067 extern int bcm_field_qualify_NativeVSwitchValid( 17068 int unit, 17069 bcm_field_entry_t entry, 17070 uint8 data, 17071 uint8 mask); 17072 17073 /* Get match criteria for NativeVSwitchValid qualifier. */ 17074 extern int bcm_field_qualify_NativeVSwitchValid_get( 17075 int unit, 17076 bcm_field_entry_t entry, 17077 uint8 *data, 17078 uint8 *mask); 17079 17080 /* Set match criteria for TrillIVersion qualifier. */ 17081 extern int bcm_field_qualify_TrillIVersion( 17082 int unit, 17083 bcm_field_entry_t entry, 17084 uint8 data, 17085 uint8 mask); 17086 17087 /* Get match criteria for TrillIVersion qualifier. */ 17088 extern int bcm_field_qualify_TrillIVersion_get( 17089 int unit, 17090 bcm_field_entry_t entry, 17091 uint8 *data, 17092 uint8 *mask); 17093 17094 /* Set match criteria for TrillIngressRbridge qualifier. */ 17095 extern int bcm_field_qualify_TrillIngressRbridge( 17096 int unit, 17097 bcm_field_entry_t entry, 17098 uint16 data, 17099 uint16 mask); 17100 17101 /* Get match criteria for TrillIngressRbridge qualifier. */ 17102 extern int bcm_field_qualify_TrillIngressRbridge_get( 17103 int unit, 17104 bcm_field_entry_t entry, 17105 uint16 *data, 17106 uint16 *mask); 17107 17108 /* Set match criteria for TrillMultiDestination qualifier. */ 17109 extern int bcm_field_qualify_TrillMultiDestination( 17110 int unit, 17111 bcm_field_entry_t entry, 17112 uint8 data, 17113 uint8 mask); 17114 17115 /* Get match criteria for TrillMultiDestination qualifier. */ 17116 extern int bcm_field_qualify_TrillMultiDestination_get( 17117 int unit, 17118 bcm_field_entry_t entry, 17119 uint8 *data, 17120 uint8 *mask); 17121 17122 /* Set match criteria for TrillOpLength qualifier. */ 17123 extern int bcm_field_qualify_TrillOpLength( 17124 int unit, 17125 bcm_field_entry_t entry, 17126 uint8 data, 17127 uint8 mask); 17128 17129 /* Get match criteria for TrillOpLength qualifier. */ 17130 extern int bcm_field_qualify_TrillOpLength_get( 17131 int unit, 17132 bcm_field_entry_t entry, 17133 uint8 *data, 17134 uint8 *mask); 17135 17136 /* Set match criteria for TrillHopCount qualifier. */ 17137 extern int bcm_field_qualify_TrillHopCount( 17138 int unit, 17139 bcm_field_entry_t entry, 17140 uint8 data, 17141 uint8 mask); 17142 17143 /* Get match criteria for TrillHopCount qualifier. */ 17144 extern int bcm_field_qualify_TrillHopCount_get( 17145 int unit, 17146 bcm_field_entry_t entry, 17147 uint8 *data, 17148 uint8 *mask); 17149 17150 /* Set match criteria for TrillPayload qualifier. */ 17151 extern int bcm_field_qualify_TrillPayload( 17152 int unit, 17153 bcm_field_entry_t entry, 17154 uint64 data, 17155 uint64 mask); 17156 17157 /* Get match criteria for TrillPayload qualifier. */ 17158 extern int bcm_field_qualify_TrillPayload_get( 17159 int unit, 17160 bcm_field_entry_t entry, 17161 uint64 *data, 17162 uint64 *mask); 17163 17164 /* Set match criteria for MplsForwardingLabelPayload qualifier. */ 17165 extern int bcm_field_qualify_MplsForwardingLabelPayload( 17166 int unit, 17167 bcm_field_entry_t entry, 17168 uint64 data, 17169 uint64 mask); 17170 17171 /* Get match criteria for MplsForwardingLabelPayload qualifier. */ 17172 extern int bcm_field_qualify_MplsForwardingLabelPayload_get( 17173 int unit, 17174 bcm_field_entry_t entry, 17175 uint64 *data, 17176 uint64 *mask); 17177 17178 /* Set match criteria for IncomingIpIfClass qualifier. */ 17179 extern int bcm_field_qualify_IncomingIpIfClass( 17180 int unit, 17181 bcm_field_entry_t entry, 17182 uint32 data, 17183 uint32 mask); 17184 17185 /* Get match criteria for IncomingIpIfClass qualifier. */ 17186 extern int bcm_field_qualify_IncomingIpIfClass_get( 17187 int unit, 17188 bcm_field_entry_t entry, 17189 uint32 *data, 17190 uint32 *mask); 17191 17192 /* Set match criteria for L2GreProtocolType qualifier. */ 17193 extern int bcm_field_qualify_L2GreProtocolType( 17194 int unit, 17195 bcm_field_entry_t entry, 17196 uint16 data, 17197 uint16 mask); 17198 17199 /* Get match criteria for L2GreProtocolType qualifier. */ 17200 extern int bcm_field_qualify_L2GreProtocolType_get( 17201 int unit, 17202 bcm_field_entry_t entry, 17203 uint16 *data, 17204 uint16 *mask); 17205 17206 /* Set match criteria for L2GreVsid qualifier. */ 17207 extern int bcm_field_qualify_L2GreVsid( 17208 int unit, 17209 bcm_field_entry_t entry, 17210 uint32 data, 17211 uint32 mask); 17212 17213 /* Get match criteria for L2GreVsid qualifier. */ 17214 extern int bcm_field_qualify_L2GreVsid_get( 17215 int unit, 17216 bcm_field_entry_t entry, 17217 uint32 *data, 17218 uint32 *mask); 17219 17220 /* Set match criteria for L2GreFlowId qualifier. */ 17221 extern int bcm_field_qualify_L2GreFlowId( 17222 int unit, 17223 bcm_field_entry_t entry, 17224 uint8 data, 17225 uint8 mask); 17226 17227 /* Get match criteria for L2GreFlowId qualifier. */ 17228 extern int bcm_field_qualify_L2GreFlowId_get( 17229 int unit, 17230 bcm_field_entry_t entry, 17231 uint8 *data, 17232 uint8 *mask); 17233 17234 /* Set match criteria for MimVlanPri qualifier. */ 17235 extern int bcm_field_qualify_MimVlanPri( 17236 int unit, 17237 bcm_field_entry_t entry, 17238 uint8 data, 17239 uint8 mask); 17240 17241 /* Get match criteria for MimVlanPri qualifier. */ 17242 extern int bcm_field_qualify_MimVlanPri_get( 17243 int unit, 17244 bcm_field_entry_t entry, 17245 uint8 *data, 17246 uint8 *mask); 17247 17248 /* Set match criteria for MimVlanCfi qualifier. */ 17249 extern int bcm_field_qualify_MimVlanCfi( 17250 int unit, 17251 bcm_field_entry_t entry, 17252 uint8 data, 17253 uint8 mask); 17254 17255 /* Get match criteria for MimVlanCfi qualifier. */ 17256 extern int bcm_field_qualify_MimVlanCfi_get( 17257 int unit, 17258 bcm_field_entry_t entry, 17259 uint8 *data, 17260 uint8 *mask); 17261 17262 /* Set match criteria for Fhei qualifier. */ 17263 extern int bcm_field_qualify_Fhei( 17264 int unit, 17265 bcm_field_entry_t entry, 17266 uint64 data, 17267 uint64 mask); 17268 17269 /* Get match criteria for Fhei qualifier. */ 17270 extern int bcm_field_qualify_Fhei_get( 17271 int unit, 17272 bcm_field_entry_t entry, 17273 uint64 *data, 17274 uint64 *mask); 17275 17276 /* Set match criteria for FheiSize qualifier. */ 17277 extern int bcm_field_qualify_FheiSize( 17278 int unit, 17279 bcm_field_entry_t entry, 17280 uint32 data, 17281 uint32 mask); 17282 17283 /* Get match criteria for FheiSize qualifier. */ 17284 extern int bcm_field_qualify_FheiSize_get( 17285 int unit, 17286 bcm_field_entry_t entry, 17287 uint32 *data, 17288 uint32 *mask); 17289 17290 /* 17291 * Set match criteria for bcmFieldQualifyOamType 17292 * qualifier from the field entry 17293 */ 17294 extern int bcm_field_qualify_OamType( 17295 int unit, 17296 bcm_field_entry_t entry, 17297 bcm_field_oam_type_t oam_type); 17298 17299 /* 17300 * Get match criteria for bcmFieldQualifyOamType 17301 * qualifier from the field entry. 17302 */ 17303 extern int bcm_field_qualify_OamType_get( 17304 int unit, 17305 bcm_field_entry_t entry, 17306 bcm_field_oam_type_t *oam_type); 17307 17308 /* Set match criteria for bcmFieldQualifyDstClassL2. */ 17309 extern int bcm_field_qualify_EthernetOamDstClassL2( 17310 int unit, 17311 bcm_field_entry_t entry, 17312 uint8 data, 17313 uint8 mask); 17314 17315 /* Get match criteria for bcmFieldQualifyDstClassL2. */ 17316 extern int bcm_field_qualify_EthernetOamDstClassL2_get( 17317 int unit, 17318 bcm_field_entry_t entry, 17319 uint8 *data, 17320 uint8 *mask); 17321 17322 /* Set match criteria for bcmFieldQualifyEthernetOamTxPktUPMEP. */ 17323 extern int bcm_field_qualify_EthernetOamTxPktUPMEP( 17324 int unit, 17325 bcm_field_entry_t entry, 17326 uint8 data, 17327 uint8 mask); 17328 17329 /* Get match criteria for bcmFieldQualifyEthernetOamTxPktUPMEP. */ 17330 extern int bcm_field_qualify_EthernetOamTxPktUPMEP_get( 17331 int unit, 17332 bcm_field_entry_t entry, 17333 uint8 *data, 17334 uint8 *mask); 17335 17336 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassNiv. */ 17337 extern int bcm_field_qualify_EthernetOamInterfaceClassNiv( 17338 int unit, 17339 bcm_field_entry_t entry, 17340 uint8 data, 17341 uint8 mask); 17342 17343 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassNiv. */ 17344 extern int bcm_field_qualify_EthernetOamInterfaceClassNiv_get( 17345 int unit, 17346 bcm_field_entry_t entry, 17347 uint8 *data, 17348 uint8 *mask); 17349 17350 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassMim. */ 17351 extern int bcm_field_qualify_EthernetOamInterfaceClassMim( 17352 int unit, 17353 bcm_field_entry_t entry, 17354 uint8 data, 17355 uint8 mask); 17356 17357 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassMim. */ 17358 extern int bcm_field_qualify_EthernetOamInterfaceClassMim_get( 17359 int unit, 17360 bcm_field_entry_t entry, 17361 uint8 *data, 17362 uint8 *mask); 17363 17364 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassVxlan. */ 17365 extern int bcm_field_qualify_EthernetOamInterfaceClassVxlan( 17366 int unit, 17367 bcm_field_entry_t entry, 17368 uint8 data, 17369 uint8 mask); 17370 17371 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVxlan. */ 17372 extern int bcm_field_qualify_EthernetOamInterfaceClassVxlan_get( 17373 int unit, 17374 bcm_field_entry_t entry, 17375 uint8 *data, 17376 uint8 *mask); 17377 17378 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassVlan. */ 17379 extern int bcm_field_qualify_EthernetOamInterfaceClassVlan( 17380 int unit, 17381 bcm_field_entry_t entry, 17382 uint8 data, 17383 uint8 mask); 17384 17385 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVlan. */ 17386 extern int bcm_field_qualify_EthernetOamInterfaceClassVlan_get( 17387 int unit, 17388 bcm_field_entry_t entry, 17389 uint8 *data, 17390 uint8 *mask); 17391 17392 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassPort. */ 17393 extern int bcm_field_qualify_EthernetOamInterfaceClassPort( 17394 int unit, 17395 bcm_field_entry_t entry, 17396 uint8 data, 17397 uint8 mask); 17398 17399 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassPort. */ 17400 extern int bcm_field_qualify_EthernetOamInterfaceClassPort_get( 17401 int unit, 17402 bcm_field_entry_t entry, 17403 uint8 *data, 17404 uint8 *mask); 17405 17406 /* 17407 * Set match criteria for 17408 * bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst. 17409 */ 17410 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeyFirst( 17411 int unit, 17412 bcm_field_entry_t entry, 17413 uint8 data, 17414 uint8 mask); 17415 17416 /* 17417 * Get match criteria for 17418 * bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst. 17419 */ 17420 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeyFirst_get( 17421 int unit, 17422 bcm_field_entry_t entry, 17423 uint8 *data, 17424 uint8 *mask); 17425 17426 /* 17427 * Set match criteria for 17428 * bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond. 17429 */ 17430 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeySecond( 17431 int unit, 17432 bcm_field_entry_t entry, 17433 uint8 data, 17434 uint8 mask); 17435 17436 /* 17437 * Get match criteria for 17438 * bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond. 17439 */ 17440 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeySecond_get( 17441 int unit, 17442 bcm_field_entry_t entry, 17443 uint8 *data, 17444 uint8 *mask); 17445 17446 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassMpls. */ 17447 extern int bcm_field_qualify_EthernetOamInterfaceClassMpls( 17448 int unit, 17449 bcm_field_entry_t entry, 17450 uint8 data, 17451 uint8 mask); 17452 17453 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassMpls. */ 17454 extern int bcm_field_qualify_EthernetOamInterfaceClassMpls_get( 17455 int unit, 17456 bcm_field_entry_t entry, 17457 uint8 *data, 17458 uint8 *mask); 17459 17460 /* Set match criteria for bcmFieldQualifyEthernetOamClassVpn. */ 17461 extern int bcm_field_qualify_EthernetOamClassVpn( 17462 int unit, 17463 bcm_field_entry_t entry, 17464 uint8 data, 17465 uint8 mask); 17466 17467 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVpn. */ 17468 extern int bcm_field_qualify_EthernetOamClassVpn_get( 17469 int unit, 17470 bcm_field_entry_t entry, 17471 uint8 *data, 17472 uint8 *mask); 17473 17474 /* Set match criteria for bcmFieldQualifyMplsOamGALLabelOnly. */ 17475 extern int bcm_field_qualify_MplsOamGALLabelOnly( 17476 int unit, 17477 bcm_field_entry_t entry, 17478 uint8 data, 17479 uint8 mask); 17480 17481 /* Get match criteria for bcmFieldQualifyMplsOamGALLabelOnly. */ 17482 extern int bcm_field_qualify_MplsOamGALLabelOnly_get( 17483 int unit, 17484 bcm_field_entry_t entry, 17485 uint8 *data, 17486 uint8 *mask); 17487 17488 /* Set match criteria for bcmFieldQualifyMplsOamUpperLabelDataDrop. */ 17489 extern int bcm_field_qualify_MplsOamUpperLabelDataDrop( 17490 int unit, 17491 bcm_field_entry_t entry, 17492 uint8 data, 17493 uint8 mask); 17494 17495 /* Get match criteria for bcmFieldQualifyMplsOamUpperLabelDataDrop. */ 17496 extern int bcm_field_qualify_MplsOamUpperLabelDataDrop_get( 17497 int unit, 17498 bcm_field_entry_t entry, 17499 uint8 *data, 17500 uint8 *mask); 17501 17502 /* Set match criteria for bcmFieldQualifyMplsOamGALExposed. */ 17503 extern int bcm_field_qualify_MplsOamGALExposed( 17504 int unit, 17505 bcm_field_entry_t entry, 17506 uint8 data, 17507 uint8 mask); 17508 17509 /* Get match criteria for bcmFieldQualifyMplsOamGALExposed. */ 17510 extern int bcm_field_qualify_MplsOamGALExposed_get( 17511 int unit, 17512 bcm_field_entry_t entry, 17513 uint8 *data, 17514 uint8 *mask); 17515 17516 /* Set match criteria for bcmFieldQualifyMplsOamControlPktType. */ 17517 extern int bcm_field_qualify_MplsOamControlPktType( 17518 int unit, 17519 bcm_field_entry_t entry, 17520 bcm_field_MplsOam_Control_pktType_t data); 17521 17522 /* Get match criteria for bcmFieldQualifyMplsOamControlPktType. */ 17523 extern int bcm_field_qualify_MplsOamControlPktType_get( 17524 int unit, 17525 bcm_field_entry_t entry, 17526 bcm_field_MplsOam_Control_pktType_t *data); 17527 17528 /* Set match criteria for bcmFieldQualifyMplsOamClassMplsSwitchLabel. */ 17529 extern int bcm_field_qualify_MplsOamClassMplsSwitchLabel( 17530 int unit, 17531 bcm_field_entry_t entry, 17532 uint16 data, 17533 uint16 mask); 17534 17535 /* Get match criteria for bcmFieldQualifyMplsOamClassMplsSwitchLabel. */ 17536 extern int bcm_field_qualify_MplsOamClassMplsSwitchLabel_get( 17537 int unit, 17538 bcm_field_entry_t entry, 17539 uint16 *data, 17540 uint16 *mask); 17541 17542 /* Set match criteria for bcmFieldQualifyOamEgressClassVxlt. */ 17543 extern int bcm_field_qualify_OamEgressClassVxlt( 17544 int unit, 17545 bcm_field_entry_t entry, 17546 uint16 data, 17547 uint16 mask); 17548 17549 /* Get match criteria for bcmFieldQualifyOamEgressClassVxlt. */ 17550 extern int bcm_field_qualify_OamEgressClassVxlt_get( 17551 int unit, 17552 bcm_field_entry_t entry, 17553 uint16 *data, 17554 uint16 *mask); 17555 17556 /* Set match criteria for bcmFieldQualifyOamEgressClassPort. */ 17557 extern int bcm_field_qualify_OamEgressClassPort( 17558 int unit, 17559 bcm_field_entry_t entry, 17560 uint16 data, 17561 uint16 mask); 17562 17563 /* Get match criteria for bcmFieldQualifyOamEgressClassPort. */ 17564 extern int bcm_field_qualify_OamEgressClassPort_get( 17565 int unit, 17566 bcm_field_entry_t entry, 17567 uint16 *data, 17568 uint16 *mask); 17569 17570 /* Set match criteria for OuterVlanActionRange qualifier. */ 17571 extern int bcm_field_qualify_OuterVlanActionRange( 17572 int unit, 17573 bcm_field_entry_t entry, 17574 bcm_vlan_t data, 17575 bcm_vlan_t mask); 17576 17577 /* Get match criteria for OuterVlanActionRange qualifier. */ 17578 extern int bcm_field_qualify_OuterVlanActionRange_get( 17579 int unit, 17580 bcm_field_entry_t entry, 17581 bcm_vlan_t *data, 17582 bcm_vlan_t *mask); 17583 17584 /* Set match criteria for InnerVlanActionRange qualifier. */ 17585 extern int bcm_field_qualify_InnerVlanActionRange( 17586 int unit, 17587 bcm_field_entry_t entry, 17588 bcm_vlan_t data, 17589 bcm_vlan_t mask); 17590 17591 /* Get match criteria for InnerVlanActionRange qualifier. */ 17592 extern int bcm_field_qualify_InnerVlanActionRange_get( 17593 int unit, 17594 bcm_field_entry_t entry, 17595 bcm_vlan_t *data, 17596 bcm_vlan_t *mask); 17597 17598 /* bcm_field_qualify_SrcVlanGport */ 17599 extern int bcm_field_qualify_SrcVlanGport( 17600 int unit, 17601 bcm_field_entry_t entry, 17602 bcm_gport_t vlan_port_id); 17603 17604 /* bcm_field_qualify_DstVlanGport */ 17605 extern int bcm_field_qualify_DstVlanGport( 17606 int unit, 17607 bcm_field_entry_t entry, 17608 bcm_gport_t vlan_port_id); 17609 17610 /* 17611 * Get match criteria for bcmFieldQualifySrcVlanGport 17612 * qualifier from the field entry. 17613 */ 17614 extern int bcm_field_qualify_SrcVlanGport_get( 17615 int unit, 17616 bcm_field_entry_t entry, 17617 bcm_gport_t *vlan_port_id); 17618 17619 /* 17620 * Get match criteria for bcmFieldQualifyDstVlanGport 17621 * qualifier from the field entry. 17622 */ 17623 extern int bcm_field_qualify_DstVlanGport_get( 17624 int unit, 17625 bcm_field_entry_t entry, 17626 bcm_gport_t *vlan_port_id); 17627 17628 /* Set match criteria for ClassId qualifier. */ 17629 extern int bcm_field_qualify_ClassId( 17630 int unit, 17631 bcm_field_entry_t entry, 17632 uint32 data, 17633 uint32 mask); 17634 17635 /* Get match criteria for ClassId qualifier. */ 17636 extern int bcm_field_qualify_ClassId_get( 17637 int unit, 17638 bcm_field_entry_t entry, 17639 uint32 *data, 17640 uint32 *mask); 17641 17642 /* 17643 * Set match criteria for bcmFieldQualifyIngressInterfaceClassVPort 17644 * qualifier in the field entry. 17645 */ 17646 extern int bcm_field_qualify_IngressInterfaceClassVPort( 17647 int unit, 17648 bcm_field_entry_t entry, 17649 uint32 data, 17650 uint32 mask); 17651 17652 /* 17653 * Get match criteria for bcmFieldQualifyIngressInterfaceClassVPort 17654 * qualifier in the field entry. 17655 */ 17656 extern int bcm_field_qualify_IngressInterfaceClassVPort_get( 17657 int unit, 17658 bcm_field_entry_t entry, 17659 uint32 *data, 17660 uint32 *mask); 17661 17662 /* bcm_field_qualify_SrcVlanGports */ 17663 extern int bcm_field_qualify_SrcVlanGports( 17664 int unit, 17665 bcm_field_entry_t entry, 17666 bcm_gport_t vlan_port_id, 17667 bcm_gport_t vlan_port_mask); 17668 17669 /* bcm_field_qualify_DstVlanGports */ 17670 extern int bcm_field_qualify_DstVlanGports( 17671 int unit, 17672 bcm_field_entry_t entry, 17673 bcm_gport_t vlan_port_id, 17674 bcm_gport_t vlan_port_mask); 17675 17676 /* 17677 * Get match criteria for bcmFieldQualifySrcVlanGports 17678 * qualifier from the field entry. 17679 */ 17680 extern int bcm_field_qualify_SrcVlanGports_get( 17681 int unit, 17682 bcm_field_entry_t entry, 17683 bcm_gport_t *vlan_port_id, 17684 bcm_gport_t *vlan_port_mask); 17685 17686 /* 17687 * Get match criteria for bcmFieldQualifyDstVlanGports 17688 * qualifier from the field entry. 17689 */ 17690 extern int bcm_field_qualify_DstVlanGports_get( 17691 int unit, 17692 bcm_field_entry_t entry, 17693 bcm_gport_t *vlan_port_id, 17694 bcm_gport_t *vlan_port_mask); 17695 17696 /* bcm_field_qualify_SrcVxlanGports */ 17697 extern int bcm_field_qualify_SrcVxlanGports( 17698 int unit, 17699 bcm_field_entry_t entry, 17700 bcm_gport_t vxlan_port_id, 17701 bcm_gport_t vxlan_port_mask); 17702 17703 /* bcm_field_qualify_DstVxlanGports */ 17704 extern int bcm_field_qualify_DstVxlanGports( 17705 int unit, 17706 bcm_field_entry_t entry, 17707 bcm_gport_t vxlan_port_id, 17708 bcm_gport_t vxlan_port_mask); 17709 17710 /* 17711 * Get match criteria for bcmFieldQualifySrcVxlanGports 17712 * qualifier from the field entry. 17713 */ 17714 extern int bcm_field_qualify_SrcVxlanGports_get( 17715 int unit, 17716 bcm_field_entry_t entry, 17717 bcm_gport_t *vxlan_port_id, 17718 bcm_gport_t *vxlan_port_mask); 17719 17720 /* 17721 * Get match criteria for bcmFieldQualifyDstVxlanGports 17722 * qualifier from the field entry. 17723 */ 17724 extern int bcm_field_qualify_DstVxlanGports_get( 17725 int unit, 17726 bcm_field_entry_t entry, 17727 bcm_gport_t *vxlan_port_id, 17728 bcm_gport_t *vxlan_port_mask); 17729 17730 /* bcm_field_qualify_SrcWlanGports */ 17731 extern int bcm_field_qualify_SrcWlanGports( 17732 int unit, 17733 bcm_field_entry_t entry, 17734 bcm_gport_t wlan_port_id, 17735 bcm_gport_t wlan_port_mask); 17736 17737 /* bcm_field_qualify_DstWlanGports */ 17738 extern int bcm_field_qualify_DstWlanGports( 17739 int unit, 17740 bcm_field_entry_t entry, 17741 bcm_gport_t wlan_port_id, 17742 bcm_gport_t wlan_port_mask); 17743 17744 /* 17745 * Get match criteria for bcmFieldQualifySrcWlanGports 17746 * qualifier from the field entry. 17747 */ 17748 extern int bcm_field_qualify_SrcWlanGports_get( 17749 int unit, 17750 bcm_field_entry_t entry, 17751 bcm_gport_t *wlan_port_id, 17752 bcm_gport_t *wlan_port_mask); 17753 17754 /* 17755 * Get match criteria for bcmFieldQualifyDstWlanGports 17756 * qualifier from the field entry. 17757 */ 17758 extern int bcm_field_qualify_DstWlanGports_get( 17759 int unit, 17760 bcm_field_entry_t entry, 17761 bcm_gport_t *wlan_port_id, 17762 bcm_gport_t *wlan_port_mask); 17763 17764 /* bcm_field_qualify_SrcMplsGports */ 17765 extern int bcm_field_qualify_SrcMplsGports( 17766 int unit, 17767 bcm_field_entry_t entry, 17768 bcm_gport_t mpls_port_id, 17769 bcm_gport_t mpls_port_mask); 17770 17771 /* bcm_field_qualify_DstMplsGports */ 17772 extern int bcm_field_qualify_DstMplsGports( 17773 int unit, 17774 bcm_field_entry_t entry, 17775 bcm_gport_t mpls_port_id, 17776 bcm_gport_t mpls_port_mask); 17777 17778 /* 17779 * Get match criteria for bcmFieldQualifySrcMplsGports 17780 * qualifier from the field entry. 17781 */ 17782 extern int bcm_field_qualify_SrcMplsGports_get( 17783 int unit, 17784 bcm_field_entry_t entry, 17785 bcm_gport_t *mpls_port_id, 17786 bcm_gport_t *mpls_port_mask); 17787 17788 /* 17789 * Get match criteria for bcmFieldQualifyDstMplsGports 17790 * qualifier from the field entry. 17791 */ 17792 extern int bcm_field_qualify_DstMplsGports_get( 17793 int unit, 17794 bcm_field_entry_t entry, 17795 bcm_gport_t *mpls_port_id, 17796 bcm_gport_t *mpls_port_mask); 17797 17798 /* bcm_field_qualify_SrcGports */ 17799 extern int bcm_field_qualify_SrcGports( 17800 int unit, 17801 bcm_field_entry_t entry, 17802 bcm_gport_t port_id, 17803 bcm_gport_t port_mask); 17804 17805 /* bcm_field_qualify_DstGports */ 17806 extern int bcm_field_qualify_DstGports( 17807 int unit, 17808 bcm_field_entry_t entry, 17809 bcm_gport_t port_id, 17810 bcm_gport_t port_mask); 17811 17812 /* 17813 * Get match criteria for bcmFieldQualifySrcGports 17814 * qualifier from the field entry. 17815 */ 17816 extern int bcm_field_qualify_SrcGports_get( 17817 int unit, 17818 bcm_field_entry_t entry, 17819 bcm_gport_t *port_id, 17820 bcm_gport_t *port_mask); 17821 17822 /* 17823 * Get match criteria for bcmFieldQualifyDstGports 17824 * qualifier from the field entry. 17825 */ 17826 extern int bcm_field_qualify_DstGports_get( 17827 int unit, 17828 bcm_field_entry_t entry, 17829 bcm_gport_t *port_id, 17830 bcm_gport_t *port_mask); 17831 17832 /* bcm_field_qualify_SrcMimGports */ 17833 extern int bcm_field_qualify_SrcMimGports( 17834 int unit, 17835 bcm_field_entry_t entry, 17836 bcm_gport_t mim_port_id, 17837 bcm_gport_t mim_port_mask); 17838 17839 /* bcm_field_qualify_DstMimGports */ 17840 extern int bcm_field_qualify_DstMimGports( 17841 int unit, 17842 bcm_field_entry_t entry, 17843 bcm_gport_t mim_port_id, 17844 bcm_gport_t mim_port_mask); 17845 17846 /* 17847 * Get match criteria for bcmFieldQualifySrcMimGports 17848 * qualifier from the field entry. 17849 */ 17850 extern int bcm_field_qualify_SrcMimGports_get( 17851 int unit, 17852 bcm_field_entry_t entry, 17853 bcm_gport_t *mim_port_id, 17854 bcm_gport_t *mim_port_mask); 17855 17856 /* 17857 * Get match criteria for bcmFieldQualifyDstMimGports 17858 * qualifier from the field entry. 17859 */ 17860 extern int bcm_field_qualify_DstMimGports_get( 17861 int unit, 17862 bcm_field_entry_t entry, 17863 bcm_gport_t *mim_port_id, 17864 bcm_gport_t *mim_port_mask); 17865 17866 /* bcm_field_qualify_SrcNivGports */ 17867 extern int bcm_field_qualify_SrcNivGports( 17868 int unit, 17869 bcm_field_entry_t entry, 17870 bcm_gport_t niv_port_id, 17871 bcm_gport_t niv_port_mask); 17872 17873 /* bcm_field_qualify_DstNivGports */ 17874 extern int bcm_field_qualify_DstNivGports( 17875 int unit, 17876 bcm_field_entry_t entry, 17877 bcm_gport_t niv_port_id, 17878 bcm_gport_t niv_port_mask); 17879 17880 /* 17881 * Get match criteria for bcmFieldQualifySrcNivGports 17882 * qualifier from the field entry. 17883 */ 17884 extern int bcm_field_qualify_SrcNivGports_get( 17885 int unit, 17886 bcm_field_entry_t entry, 17887 bcm_gport_t *niv_port_id, 17888 bcm_gport_t *niv_port_mask); 17889 17890 /* 17891 * Get match criteria for bcmFieldQualifyDstNivGports 17892 * qualifier from the field entry. 17893 */ 17894 extern int bcm_field_qualify_DstNivGports_get( 17895 int unit, 17896 bcm_field_entry_t entry, 17897 bcm_gport_t *niv_port_id, 17898 bcm_gport_t *niv_port_mask); 17899 17900 /* bcm_field_qualify_SrcModPortGports */ 17901 extern int bcm_field_qualify_SrcModPortGports( 17902 int unit, 17903 bcm_field_entry_t entry, 17904 bcm_gport_t port_id, 17905 bcm_gport_t port_mask); 17906 17907 /* 17908 * Get match criteria for bcmFieldQualifySrcModPortGports 17909 * qualifier from the field entry. 17910 */ 17911 extern int bcm_field_qualify_SrcModPortGports_get( 17912 int unit, 17913 bcm_field_entry_t entry, 17914 bcm_gport_t *port_id, 17915 bcm_gport_t *port_mask); 17916 17917 /* Qualify Reserved_1 field in Vxlan Header */ 17918 extern int bcm_field_qualify_VxlanHeaderBits8_31( 17919 int unit, 17920 bcm_field_entry_t entry, 17921 uint32 data, 17922 uint32 mask); 17923 17924 /* Get match criteria for Reserved_1 field in Vxlan Header */ 17925 extern int bcm_field_qualify_VxlanHeaderBits8_31_get( 17926 int unit, 17927 bcm_field_entry_t entry, 17928 uint32 *data, 17929 uint32 *mask); 17930 17931 /* Qualify Reserved_2 field in Vxlan Header */ 17932 extern int bcm_field_qualify_VxlanHeaderBits56_63( 17933 int unit, 17934 bcm_field_entry_t entry, 17935 uint8 data, 17936 uint8 mask); 17937 17938 /* Get match criteria for Reserved_2 field in Vxlan Header */ 17939 extern int bcm_field_qualify_VxlanHeaderBits56_63_get( 17940 int unit, 17941 bcm_field_entry_t entry, 17942 uint8 *data, 17943 uint8 *mask); 17944 17945 #endif /* BCM_HIDE_DISPATCHABLE */ 17946 17947 /* 17948 * Field Hint Type 17949 * 17950 * Specify the hint type for a group. 17951 */ 17952 typedef enum bcm_field_hint_type_e { 17953 bcmFieldHintTypeCompression = 0, /* Hint Type for Auto Compression */ 17954 bcmFieldHintTypeExtraction = 1, /* Hint Type for Qualifier Extraction */ 17955 bcmFieldHintTypeGroupAutoExpansion = 2, /* Hint Type for Group Auto Expansion */ 17956 bcmFieldHintTypeExactMatch = 3, /* Hint Type for Exact Match. */ 17957 bcmFieldHintTypeGroupIdenticalLookupId = 4, /* Hint Type for Group will have 17958 identical lookup Id as provided by 17959 the bcm_field_hint_t.group_id. */ 17960 bcmFieldHintTypeIngressFlowtracker = 5, /* Hint Type for Ingress Flowtracker. */ 17961 bcmFieldHintTypeFlexCtrOpaqueObjectSel = 6, /* Hint type for specifying the opaque 17962 object to be used by 17963 bcmFieldActionStatGroup. */ 17964 bcmFieldHintTypePolicerPoolSel = 7, /* Hint type for specifying the policer 17965 pool. Supported modes are 17966 bcmPolicerPoolxxx */ 17967 bcmFieldHintTypeCount = 8 /* Always Last. Not a usable value. */ 17968 } bcm_field_hint_type_t; 17969 17970 #define BCM_FIELD_HINT_TYPE_STRINGS \ 17971 { \ 17972 "Compression", \ 17973 "Extraction", \ 17974 "GroupAutoExpansion", \ 17975 "ExactMatch", \ 17976 "GroupIdenticalLookupId", \ 17977 "IngressFlowtracker", \ 17978 "FlexCtrOpaqueObjectSel", \ 17979 "PolicerPoolSel" \ 17980 } 17981 17982 /* 17983 * Field Hints. 17984 * 17985 * Flags values to update the bcm_field_hints_t structure. 17986 */ 17987 #define BCM_FIELD_HINT_EXACT_MATCH_ONLY (1 << 0) /* Exact Match Only. */ 17988 #define BCM_FIELD_GROUP_AUTO_EXPANSION_SMALL (1 << 1) /* Prefer expanding using 17989 smaller slices */ 17990 #define BCM_FIELD_GROUP_AUTO_EXPANSION_LARGE (1 << 2) /* Prefer expanding using 17991 larger slices */ 17992 #define BCM_FIELD_GROUP_MAX_SIZE_HARD_LIMIT (1 << 3) /* Set Hard limit for 17993 max_group_size. */ 17994 #define BCM_FIELD_HINT_EXACT_MATCH_GROUP_PRIORITY (1 << 4) /* Set Hint for Exact 17995 Match Group. */ 17996 #define BCM_FIELD_HINT_INGRESS_FLOWTRACKER_GROUP_SECONDARY_SLICE (1 << 5) /* Set Hint to use 17997 secondary slice for 17998 group in ingress 17999 flowtracker stage. */ 18000 18001 /* Specify hints to be used during group creation. */ 18002 typedef struct bcm_field_hint_s { 18003 bcm_field_hint_type_t hint_type; /* Field hints of type 18004 bcm_field_hint_type_t. */ 18005 bcm_field_qualify_t qual; /* Field qualifier bcmFieldQualifyXXX. */ 18006 uint32 max_values; /* To figure out the width of the 18007 compression output. */ 18008 uint32 start_bit; /* Builds the range in conjunction with 18009 end_bit which will indicate that in 18010 the 18011 full mask any 18012 bits outside of that range are 18013 guaranteed to be 0. */ 18014 uint32 end_bit; /* End bit of a mask for the qualifier 18015 in hint structure. */ 18016 uint32 flags; /* Flags. */ 18017 uint32 dosattack_event_flags; /* Dos Attack Events Flags. */ 18018 uint32 max_group_size; /* Max size of the group. */ 18019 int priority; /* Group priority. */ 18020 bcm_udf_id_t udf_id; /* UDF ID. */ 18021 bcm_field_group_t group_id; /* Original Group ID. */ 18022 int value; /* Value to be set for specific hint 18023 types. */ 18024 } bcm_field_hint_t; 18025 18026 /* Initialize Field Group Hint structure. */ 18027 extern void bcm_field_hint_t_init( 18028 bcm_field_hint_t *hint); 18029 18030 #ifndef BCM_HIDE_DISPATCHABLE 18031 18032 /* Generate a hint id. */ 18033 extern int bcm_field_hints_create( 18034 int unit, 18035 bcm_field_hintid_t *hint_id); 18036 18037 /* Associate a hint structure to the hint id. */ 18038 extern int bcm_field_hints_add( 18039 int unit, 18040 bcm_field_hintid_t hint_id, 18041 bcm_field_hint_t *hint); 18042 18043 /* Get the complete hint structure from the hint id. */ 18044 extern int bcm_field_hints_get( 18045 int unit, 18046 bcm_field_hintid_t hint_id, 18047 bcm_field_hint_t *hint); 18048 18049 /* Remove a hint structure from the hint id. */ 18050 extern int bcm_field_hints_delete( 18051 int unit, 18052 bcm_field_hintid_t hint_id, 18053 bcm_field_hint_t *hint); 18054 18055 /* Remove all hints from the hint id. */ 18056 extern int bcm_field_hints_delete_all( 18057 int unit, 18058 bcm_field_hintid_t hint_id); 18059 18060 /* Remove all hints from the hint id. */ 18061 extern int bcm_field_hints_destroy( 18062 int unit, 18063 bcm_field_hintid_t hint_id); 18064 18065 /* Set match criteria for OamInLifIdValid qualifier. */ 18066 extern int bcm_field_qualify_OamInLifIdValid( 18067 int unit, 18068 bcm_field_entry_t entry, 18069 uint8 data, 18070 uint8 mask); 18071 18072 /* Get match criteria for OamInLifIdValid qualifier. */ 18073 extern int bcm_field_qualify_OamInLifIdValid_get( 18074 int unit, 18075 bcm_field_entry_t entry, 18076 uint8 *data, 18077 uint8 *mask); 18078 18079 /* Set match criteria for OamInLifId qualifier. */ 18080 extern int bcm_field_qualify_OamInLifId( 18081 int unit, 18082 bcm_field_entry_t entry, 18083 uint32 data, 18084 uint32 mask); 18085 18086 /* Get match criteria for OamInLifId qualifier. */ 18087 extern int bcm_field_qualify_OamInLifId_get( 18088 int unit, 18089 bcm_field_entry_t entry, 18090 uint32 *data, 18091 uint32 *mask); 18092 18093 /* Set match criteria for OamUpMep qualifier. */ 18094 extern int bcm_field_qualify_OamUpMep( 18095 int unit, 18096 bcm_field_entry_t entry, 18097 uint8 data, 18098 uint8 mask); 18099 18100 /* Get match criteria for OamUpMep qualifier. */ 18101 extern int bcm_field_qualify_OamUpMep_get( 18102 int unit, 18103 bcm_field_entry_t entry, 18104 uint8 *data, 18105 uint8 *mask); 18106 18107 /* Set match criteria for OamSubtype qualifier. */ 18108 extern int bcm_field_qualify_OamSubtype( 18109 int unit, 18110 bcm_field_entry_t entry, 18111 uint8 data, 18112 uint8 mask); 18113 18114 /* Get match criteria for OamSubtype qualifier. */ 18115 extern int bcm_field_qualify_OamSubtype_get( 18116 int unit, 18117 bcm_field_entry_t entry, 18118 uint8 *data, 18119 uint8 *mask); 18120 18121 /* Set match criteria for OamHeaderOffset qualifier. */ 18122 extern int bcm_field_qualify_OamHeaderOffset( 18123 int unit, 18124 bcm_field_entry_t entry, 18125 uint32 data, 18126 uint32 mask); 18127 18128 /* Get match criteria for OamHeaderOffset qualifier. */ 18129 extern int bcm_field_qualify_OamHeaderOffset_get( 18130 int unit, 18131 bcm_field_entry_t entry, 18132 uint32 *data, 18133 uint32 *mask); 18134 18135 /* Set match criteria for OamStampOffset qualifier. */ 18136 extern int bcm_field_qualify_OamStampOffset( 18137 int unit, 18138 bcm_field_entry_t entry, 18139 uint32 data, 18140 uint32 mask); 18141 18142 /* Get match criteria for OamStampOffset qualifier. */ 18143 extern int bcm_field_qualify_OamStampOffset_get( 18144 int unit, 18145 bcm_field_entry_t entry, 18146 uint32 *data, 18147 uint32 *mask); 18148 18149 /* Set match criteria for OamMepId qualifier. */ 18150 extern int bcm_field_qualify_OamMepId( 18151 int unit, 18152 bcm_field_entry_t entry, 18153 uint32 data, 18154 uint32 mask); 18155 18156 /* Get match criteria for OamMepId qualifier. */ 18157 extern int bcm_field_qualify_OamMepId_get( 18158 int unit, 18159 bcm_field_entry_t entry, 18160 uint32 *data, 18161 uint32 *mask); 18162 18163 /* Set match criteria for OamMeterDisable qualifier. */ 18164 extern int bcm_field_qualify_OamMeterDisable( 18165 int unit, 18166 bcm_field_entry_t entry, 18167 uint8 data, 18168 uint8 mask); 18169 18170 /* Get match criteria for OamMeterDisable qualifier. */ 18171 extern int bcm_field_qualify_OamMeterDisable_get( 18172 int unit, 18173 bcm_field_entry_t entry, 18174 uint8 *data, 18175 uint8 *mask); 18176 18177 /* Set match criteria for OamTsSystemHeader qualifier. */ 18178 extern int bcm_field_qualify_OamTsSystemHeader( 18179 int unit, 18180 bcm_field_entry_t entry, 18181 uint64 data, 18182 uint64 mask); 18183 18184 /* Get match criteria for OamTsSystemHeader qualifier. */ 18185 extern int bcm_field_qualify_OamTsSystemHeader_get( 18186 int unit, 18187 bcm_field_entry_t entry, 18188 uint64 *data, 18189 uint64 *mask); 18190 18191 /* Set match criteria for EthernetOamHeaderBits0_31 qualifier. */ 18192 extern int bcm_field_qualify_EthernetOamHeaderBits0_31( 18193 int unit, 18194 bcm_field_entry_t entry, 18195 uint32 data, 18196 uint32 mask); 18197 18198 /* Get match criteria for EthernetOamHeaderBits0_31 qualifier. */ 18199 extern int bcm_field_qualify_EthernetOamHeaderBits0_31_get( 18200 int unit, 18201 bcm_field_entry_t entry, 18202 uint32 *data, 18203 uint32 *mask); 18204 18205 /* Set match criteria for EthernetOamHeaderBits32_63. */ 18206 extern int bcm_field_qualify_EthernetOamHeaderBits32_63( 18207 int unit, 18208 bcm_field_entry_t entry, 18209 uint32 data, 18210 uint32 mask); 18211 18212 /* Get match criteria for EthernetOamHeaderBits32_63. */ 18213 extern int bcm_field_qualify_EthernetOamHeaderBits32_63_get( 18214 int unit, 18215 bcm_field_entry_t entry, 18216 uint32 *data, 18217 uint32 *mask); 18218 18219 /* Set match criteria for MplsOamHeaderBits0_31. */ 18220 extern int bcm_field_qualify_MplsOamHeaderBits0_31( 18221 int unit, 18222 bcm_field_entry_t entry, 18223 uint32 data, 18224 uint32 mask); 18225 18226 /* Get match criteria for MplsOamHeaderBits0_31 qualifier. */ 18227 extern int bcm_field_qualify_MplsOamHeaderBits0_31_get( 18228 int unit, 18229 bcm_field_entry_t entry, 18230 uint32 *data, 18231 uint32 *mask); 18232 18233 /* Set match criteria for MplsOamHeaderBits32_63 qualifier. */ 18234 extern int bcm_field_qualify_MplsOamHeaderBits32_63( 18235 int unit, 18236 bcm_field_entry_t entry, 18237 uint32 data, 18238 uint32 mask); 18239 18240 /* Get match criteria for MplsOamHeaderBits32_63 qualifier. */ 18241 extern int bcm_field_qualify_MplsOamHeaderBits32_63_get( 18242 int unit, 18243 bcm_field_entry_t entry, 18244 uint32 *data, 18245 uint32 *mask); 18246 18247 /* Set match criteria for MplsOamACH qualifier. */ 18248 extern int bcm_field_qualify_MplsOamACH( 18249 int unit, 18250 bcm_field_entry_t entry, 18251 uint32 data, 18252 uint32 mask); 18253 18254 /* Get match criteria for MplsOamACH qualifier. */ 18255 extern int bcm_field_qualify_MplsOamACH_get( 18256 int unit, 18257 bcm_field_entry_t entry, 18258 uint32 *data, 18259 uint32 *mask); 18260 18261 /* Set match criteria for OamHeaderBits0_31 qualifier. */ 18262 extern int bcm_field_qualify_OamHeaderBits0_31( 18263 int unit, 18264 bcm_field_entry_t entry, 18265 uint32 data, 18266 uint32 mask); 18267 18268 /* Get match criteria for OamHeaderBits0_31 qualifier. */ 18269 extern int bcm_field_qualify_OamHeaderBits0_31_get( 18270 int unit, 18271 bcm_field_entry_t entry, 18272 uint32 *data, 18273 uint32 *mask); 18274 18275 /* Set match criteria for OamHeaderBits32_63 qualifier. */ 18276 extern int bcm_field_qualify_OamHeaderBits32_63( 18277 int unit, 18278 bcm_field_entry_t entry, 18279 uint32 data, 18280 uint32 mask); 18281 18282 /* Get match criteria for OamHeaderBits32_63 qualifier. */ 18283 extern int bcm_field_qualify_OamHeaderBits32_63_get( 18284 int unit, 18285 bcm_field_entry_t entry, 18286 uint32 *data, 18287 uint32 *mask); 18288 18289 /* 18290 * Set match criteria for bcmFieldQualifyDstMulticastGroups 18291 * qualifier in the field entry. 18292 */ 18293 extern int bcm_field_qualify_DstMulticastGroups( 18294 int unit, 18295 bcm_field_entry_t entry, 18296 bcm_multicast_t group, 18297 bcm_multicast_t mask); 18298 18299 /* 18300 * Get match criteria for bcmFieldQualifyDstMulticastGroups 18301 * qualifier from the field entry. 18302 */ 18303 extern int bcm_field_qualify_DstMulticastGroups_get( 18304 int unit, 18305 bcm_field_entry_t entry, 18306 bcm_multicast_t *group, 18307 bcm_multicast_t *mask); 18308 18309 #endif /* BCM_HIDE_DISPATCHABLE */ 18310 18311 /* 18312 * List of Field Processor group operational modes supported per-CAP 18313 * stage. 18314 */ 18315 typedef enum bcm_field_group_oper_mode_e { 18316 bcmFieldGroupOperModeGlobal = 0, /* Group Operational Global Mode Value. */ 18317 bcmFieldGroupOperModePipeLocal = 1, /* Group Operational Pipe Local Mode 18318 Value. */ 18319 bcmFieldGroupOperModeCount = 2 /* Always last. Not a usable value. */ 18320 } bcm_field_group_oper_mode_t; 18321 18322 #define BCM_FIELD_OPER_MODE_STRINGS \ 18323 { \ 18324 "Global", \ 18325 "PipeLocal" \ 18326 } 18327 18328 #ifndef BCM_HIDE_DISPATCHABLE 18329 18330 /* 18331 * Set operational mode of field group's in a particulat Filter Processor 18332 * Stage. 18333 */ 18334 extern int bcm_field_group_oper_mode_set( 18335 int unit, 18336 bcm_field_qualify_t stage, 18337 bcm_field_group_oper_mode_t mode); 18338 18339 /* 18340 * Get operational mode of field group's in a particulat Filter Processor 18341 * Stage. 18342 */ 18343 extern int bcm_field_group_oper_mode_get( 18344 int unit, 18345 bcm_field_qualify_t stage, 18346 bcm_field_group_oper_mode_t *mode); 18347 18348 /* bcm_field_qualify_InterfaceInPorts */ 18349 extern int bcm_field_qualify_InterfaceInPorts( 18350 int unit, 18351 bcm_field_entry_t entry, 18352 bcm_pbmp_t data, 18353 bcm_pbmp_t mask); 18354 18355 /* 18356 * Get match criteria for bcmFieldQualifyInPorts 18357 * qualifier from the field entry. 18358 */ 18359 extern int bcm_field_qualify_InterfaceInPorts_get( 18360 int unit, 18361 bcm_field_entry_t entry, 18362 bcm_pbmp_t *data, 18363 bcm_pbmp_t *mask); 18364 18365 /* 18366 * Configure match criteria for bcmFieldQualifyDestVirtualPortValid 18367 * qualifier from the field entry. 18368 */ 18369 extern int bcm_field_qualify_DestVirtualPortValid( 18370 int unit, 18371 bcm_field_entry_t entry, 18372 uint8 data, 18373 uint8 mask); 18374 18375 /* 18376 * Get match criteria for bcmFieldQualifyDestVirtualPortValid 18377 * qualifier from the field entry. 18378 */ 18379 extern int bcm_field_qualify_DestVirtualPortValid_get( 18380 int unit, 18381 bcm_field_entry_t entry, 18382 uint8 *data, 18383 uint8 *mask); 18384 18385 /* 18386 * Configure match criteria for bcmFieldQualifyInVPortWide 18387 * qualifier from the field entry. 18388 */ 18389 extern int bcm_field_qualify_InVPortWide( 18390 int unit, 18391 bcm_field_entry_t entry, 18392 uint64 data, 18393 uint64 mask); 18394 18395 /* 18396 * Get match criteria for bcmFieldQualifyInVPortWide 18397 * qualifier from the field entry. 18398 */ 18399 extern int bcm_field_qualify_InVPortWide_get( 18400 int unit, 18401 bcm_field_entry_t entry, 18402 uint64 *data, 18403 uint64 *mask); 18404 18405 /* 18406 * Configure match criteria for bcmFieldQualifyFcoeOxID 18407 * qualifier from the field entry. 18408 */ 18409 extern int bcm_field_qualify_FcoeOxID( 18410 int unit, 18411 bcm_field_entry_t entry, 18412 uint16 data, 18413 uint16 mask); 18414 18415 /* 18416 * Get match criteria for bcmFieldQualifyFcoeOxID 18417 * qualifier from the field entry. 18418 */ 18419 extern int bcm_field_qualify_FcoeOxID_get( 18420 int unit, 18421 bcm_field_entry_t entry, 18422 uint16 *data, 18423 uint16 *mask); 18424 18425 /* 18426 * Configure match criteria for bcmFieldQualifyFcoeRxID 18427 * qualifier from the field entry. 18428 */ 18429 extern int bcm_field_qualify_FcoeRxID( 18430 int unit, 18431 bcm_field_entry_t entry, 18432 uint16 data, 18433 uint16 mask); 18434 18435 /* 18436 * Get match criteria for bcmFieldQualifyFcoeRxID 18437 * qualifier from the field entry. 18438 */ 18439 extern int bcm_field_qualify_FcoeRxID_get( 18440 int unit, 18441 bcm_field_entry_t entry, 18442 uint16 *data, 18443 uint16 *mask); 18444 18445 /* 18446 * Configure match criteria for bcmFieldQualifyIpProtocolClass 18447 * qualifier from the field entry. 18448 */ 18449 extern int bcm_field_qualify_IpProtocolClass( 18450 int unit, 18451 bcm_field_entry_t entry, 18452 bcm_class_t data, 18453 bcm_class_t mask); 18454 18455 /* 18456 * Get match criteria for bcmFieldQualifyIpProtocolClass 18457 * qualifier from the field entry. 18458 */ 18459 extern int bcm_field_qualify_IpProtocolClass_get( 18460 int unit, 18461 bcm_field_entry_t entry, 18462 bcm_class_t *data, 18463 bcm_class_t *mask); 18464 18465 /* 18466 * Configure match criteria for bcmFieldQualifyEtherTypeClass 18467 * qualifier from the field entry. 18468 */ 18469 extern int bcm_field_qualify_EtherTypeClass( 18470 int unit, 18471 bcm_field_entry_t entry, 18472 bcm_class_t data, 18473 bcm_class_t mask); 18474 18475 /* 18476 * Get match criteria for bcmFieldQualifyEtherTypeClass 18477 * qualifier from the field entry. 18478 */ 18479 extern int bcm_field_qualify_EtherTypeClass_get( 18480 int unit, 18481 bcm_field_entry_t entry, 18482 bcm_class_t *data, 18483 bcm_class_t *mask); 18484 18485 /* 18486 * Configure match criteria for bcmFieldQualifyL4SrcPortClass 18487 * qualifier from the field entry. 18488 */ 18489 extern int bcm_field_qualify_L4SrcPortClass( 18490 int unit, 18491 bcm_field_entry_t entry, 18492 bcm_class_t data, 18493 bcm_class_t mask); 18494 18495 /* 18496 * Get match criteria for bcmFieldQualifyL4SrcPortClass 18497 * qualifier from the field entry. 18498 */ 18499 extern int bcm_field_qualify_L4SrcPortClass_get( 18500 int unit, 18501 bcm_field_entry_t entry, 18502 bcm_class_t *data, 18503 bcm_class_t *mask); 18504 18505 /* 18506 * Configure match criteria for bcmFieldQualifyL4DstPortClass 18507 * qualifier from the field entry. 18508 */ 18509 extern int bcm_field_qualify_L4DstPortClass( 18510 int unit, 18511 bcm_field_entry_t entry, 18512 bcm_class_t data, 18513 bcm_class_t mask); 18514 18515 /* 18516 * Get match criteria for bcmFieldQualifyL4DstPortClass 18517 * qualifier from the field entry. 18518 */ 18519 extern int bcm_field_qualify_L4DstPortClass_get( 18520 int unit, 18521 bcm_field_entry_t entry, 18522 bcm_class_t *data, 18523 bcm_class_t *mask); 18524 18525 /* 18526 * Configure match criteria for bcmFieldQualifySrcIpClass 18527 * qualifier from the field entry. 18528 */ 18529 extern int bcm_field_qualify_SrcIpClass( 18530 int unit, 18531 bcm_field_entry_t entry, 18532 bcm_class_t data, 18533 bcm_class_t mask); 18534 18535 /* 18536 * Get match criteria for bcmFieldQualifySrcIpClass 18537 * qualifier from the field entry. 18538 */ 18539 extern int bcm_field_qualify_SrcIpClass_get( 18540 int unit, 18541 bcm_field_entry_t entry, 18542 bcm_class_t *data, 18543 bcm_class_t *mask); 18544 18545 /* 18546 * Configure match criteria for bcmFieldQualifySrcIpClassMsbNibble 18547 * qualifier from the field entry. 18548 */ 18549 extern int bcm_field_qualify_SrcIpClassMsbNibble( 18550 int unit, 18551 bcm_field_entry_t entry, 18552 bcm_class_t data, 18553 bcm_class_t mask); 18554 18555 /* 18556 * Get match criteria for bcmFieldQualifySrcIpClassMsbNibble 18557 * qualifier from the field entry. 18558 */ 18559 extern int bcm_field_qualify_SrcIpClassMsbNibble_get( 18560 int unit, 18561 bcm_field_entry_t entry, 18562 bcm_class_t *data, 18563 bcm_class_t *mask); 18564 18565 /* 18566 * Configure match criteria for bcmFieldQualifySrcIpClassLower 18567 * qualifier from the field entry. 18568 */ 18569 extern int bcm_field_qualify_SrcIpClassLower( 18570 int unit, 18571 bcm_field_entry_t entry, 18572 bcm_class_t data, 18573 bcm_class_t mask); 18574 18575 /* 18576 * Get match criteria for bcmFieldQualifySrcIpClassLower 18577 * qualifier from the field entry. 18578 */ 18579 extern int bcm_field_qualify_SrcIpClassLower_get( 18580 int unit, 18581 bcm_field_entry_t entry, 18582 bcm_class_t *data, 18583 bcm_class_t *mask); 18584 18585 /* 18586 * Configure match criteria for bcmFieldQualifySrcIpClassUpper 18587 * qualifier from the field entry. 18588 */ 18589 extern int bcm_field_qualify_SrcIpClassUpper( 18590 int unit, 18591 bcm_field_entry_t entry, 18592 bcm_class_t data, 18593 bcm_class_t mask); 18594 18595 /* 18596 * Get match criteria for bcmFieldQualifySrcIpClassUpper 18597 * qualifier from the field entry. 18598 */ 18599 extern int bcm_field_qualify_SrcIpClassUpper_get( 18600 int unit, 18601 bcm_field_entry_t entry, 18602 bcm_class_t *data, 18603 bcm_class_t *mask); 18604 18605 /* 18606 * Configure match criteria for bcmFieldQualifySrcIp6Class 18607 * qualifier from the field entry. 18608 */ 18609 extern int bcm_field_qualify_SrcIp6Class( 18610 int unit, 18611 bcm_field_entry_t entry, 18612 bcm_class_t data, 18613 bcm_class_t mask); 18614 18615 /* 18616 * Get match criteria for bcmFieldQualifySrcIp6Class 18617 * qualifier from the field entry. 18618 */ 18619 extern int bcm_field_qualify_SrcIp6Class_get( 18620 int unit, 18621 bcm_field_entry_t entry, 18622 bcm_class_t *data, 18623 bcm_class_t *mask); 18624 18625 /* 18626 * Configure match criteria for bcmFieldQualifySrcIp6ClassMsbNibble 18627 * qualifier from the field entry. 18628 */ 18629 extern int bcm_field_qualify_SrcIp6ClassMsbNibble( 18630 int unit, 18631 bcm_field_entry_t entry, 18632 bcm_class_t data, 18633 bcm_class_t mask); 18634 18635 /* 18636 * Get match criteria for bcmFieldQualifySrcIp6ClassMsbNibble 18637 * qualifier from the field entry. 18638 */ 18639 extern int bcm_field_qualify_SrcIp6ClassMsbNibble_get( 18640 int unit, 18641 bcm_field_entry_t entry, 18642 bcm_class_t *data, 18643 bcm_class_t *mask); 18644 18645 /* 18646 * Configure match criteria for bcmFieldQualifySrcIp6ClassLower 18647 * qualifier from the field entry. 18648 */ 18649 extern int bcm_field_qualify_SrcIp6ClassLower( 18650 int unit, 18651 bcm_field_entry_t entry, 18652 bcm_class_t data, 18653 bcm_class_t mask); 18654 18655 /* 18656 * Get match criteria for bcmFieldQualifySrcIp6ClassLower 18657 * qualifier from the field entry. 18658 */ 18659 extern int bcm_field_qualify_SrcIp6ClassLower_get( 18660 int unit, 18661 bcm_field_entry_t entry, 18662 bcm_class_t *data, 18663 bcm_class_t *mask); 18664 18665 /* 18666 * Configure match criteria for bcmFieldQualifySrcIp6ClassUpper 18667 * qualifier from the field entry. 18668 */ 18669 extern int bcm_field_qualify_SrcIp6ClassUpper( 18670 int unit, 18671 bcm_field_entry_t entry, 18672 bcm_class_t data, 18673 bcm_class_t mask); 18674 18675 /* 18676 * Get match criteria for bcmFieldQualifySrcIp6ClassUpper 18677 * qualifier from the field entry. 18678 */ 18679 extern int bcm_field_qualify_SrcIp6ClassUpper_get( 18680 int unit, 18681 bcm_field_entry_t entry, 18682 bcm_class_t *data, 18683 bcm_class_t *mask); 18684 18685 /* 18686 * Configure match criteria for bcmFieldQualifyFcoeOxIDClass 18687 * qualifier from the field entry. 18688 */ 18689 extern int bcm_field_qualify_FcoeOxIDClass( 18690 int unit, 18691 bcm_field_entry_t entry, 18692 bcm_class_t data, 18693 bcm_class_t mask); 18694 18695 /* 18696 * Get match criteria for bcmFieldQualifyFcoeOxIDClass 18697 * qualifier from the field entry. 18698 */ 18699 extern int bcm_field_qualify_FcoeOxIDClass_get( 18700 int unit, 18701 bcm_field_entry_t entry, 18702 bcm_class_t *data, 18703 bcm_class_t *mask); 18704 18705 /* 18706 * Configure match criteria for bcmFieldQualifyDstIpClass 18707 * qualifier from the field entry. 18708 */ 18709 extern int bcm_field_qualify_DstIpClass( 18710 int unit, 18711 bcm_field_entry_t entry, 18712 bcm_class_t data, 18713 bcm_class_t mask); 18714 18715 /* 18716 * Get match criteria for bcmFieldQualifyDstIpClass 18717 * qualifier from the field entry. 18718 */ 18719 extern int bcm_field_qualify_DstIpClass_get( 18720 int unit, 18721 bcm_field_entry_t entry, 18722 bcm_class_t *data, 18723 bcm_class_t *mask); 18724 18725 /* 18726 * Configure match criteria for bcmFieldQualifyDstIpClassMsbNibble 18727 * qualifier from the field entry. 18728 */ 18729 extern int bcm_field_qualify_DstIpClassMsbNibble( 18730 int unit, 18731 bcm_field_entry_t entry, 18732 bcm_class_t data, 18733 bcm_class_t mask); 18734 18735 /* 18736 * Get match criteria for bcmFieldQualifyDstIpClassMsbNibble 18737 * qualifier from the field entry. 18738 */ 18739 extern int bcm_field_qualify_DstIpClassMsbNibble_get( 18740 int unit, 18741 bcm_field_entry_t entry, 18742 bcm_class_t *data, 18743 bcm_class_t *mask); 18744 18745 /* 18746 * Configure match criteria for bcmFieldQualifyDstIpClassLower 18747 * qualifier from the field entry. 18748 */ 18749 extern int bcm_field_qualify_DstIpClassLower( 18750 int unit, 18751 bcm_field_entry_t entry, 18752 bcm_class_t data, 18753 bcm_class_t mask); 18754 18755 /* 18756 * Get match criteria for bcmFieldQualifyDstIpClassLower 18757 * qualifier from the field entry. 18758 */ 18759 extern int bcm_field_qualify_DstIpClassLower_get( 18760 int unit, 18761 bcm_field_entry_t entry, 18762 bcm_class_t *data, 18763 bcm_class_t *mask); 18764 18765 /* 18766 * Configure match criteria for bcmFieldQualifyDstIpClassUpper 18767 * qualifier from the field entry. 18768 */ 18769 extern int bcm_field_qualify_DstIpClassUpper( 18770 int unit, 18771 bcm_field_entry_t entry, 18772 bcm_class_t data, 18773 bcm_class_t mask); 18774 18775 /* 18776 * Get match criteria for bcmFieldQualifyDstIpClassUpper 18777 * qualifier from the field entry. 18778 */ 18779 extern int bcm_field_qualify_DstIpClassUpper_get( 18780 int unit, 18781 bcm_field_entry_t entry, 18782 bcm_class_t *data, 18783 bcm_class_t *mask); 18784 18785 /* 18786 * Configure match criteria for bcmFieldQualifyDstIp6Class 18787 * qualifier from the field entry. 18788 */ 18789 extern int bcm_field_qualify_DstIp6Class( 18790 int unit, 18791 bcm_field_entry_t entry, 18792 bcm_class_t data, 18793 bcm_class_t mask); 18794 18795 /* 18796 * Get match criteria for bcmFieldQualifyDstIp6Class 18797 * qualifier from the field entry. 18798 */ 18799 extern int bcm_field_qualify_DstIp6Class_get( 18800 int unit, 18801 bcm_field_entry_t entry, 18802 bcm_class_t *data, 18803 bcm_class_t *mask); 18804 18805 /* 18806 * Configure match criteria for bcmFieldQualifyDstIp6ClassMsbNibble 18807 * qualifier from the field entry. 18808 */ 18809 extern int bcm_field_qualify_DstIp6ClassMsbNibble( 18810 int unit, 18811 bcm_field_entry_t entry, 18812 bcm_class_t data, 18813 bcm_class_t mask); 18814 18815 /* 18816 * Get match criteria for bcmFieldQualifyDstIp6ClassMsbNibble 18817 * qualifier from the field entry. 18818 */ 18819 extern int bcm_field_qualify_DstIp6ClassMsbNibble_get( 18820 int unit, 18821 bcm_field_entry_t entry, 18822 bcm_class_t *data, 18823 bcm_class_t *mask); 18824 18825 /* 18826 * Configure match criteria for bcmFieldQualifyDstIp6ClassLower 18827 * qualifier from the field entry. 18828 */ 18829 extern int bcm_field_qualify_DstIp6ClassLower( 18830 int unit, 18831 bcm_field_entry_t entry, 18832 bcm_class_t data, 18833 bcm_class_t mask); 18834 18835 /* 18836 * Get match criteria for bcmFieldQualifyDstIp6ClassLower 18837 * qualifier from the field entry. 18838 */ 18839 extern int bcm_field_qualify_DstIp6ClassLower_get( 18840 int unit, 18841 bcm_field_entry_t entry, 18842 bcm_class_t *data, 18843 bcm_class_t *mask); 18844 18845 /* 18846 * Configure match criteria for bcmFieldQualifyDstIp6ClassUpper 18847 * qualifier from the field entry. 18848 */ 18849 extern int bcm_field_qualify_DstIp6ClassUpper( 18850 int unit, 18851 bcm_field_entry_t entry, 18852 bcm_class_t data, 18853 bcm_class_t mask); 18854 18855 /* 18856 * Get match criteria for bcmFieldQualifyDstIp6ClassUpper 18857 * qualifier from the field entry. 18858 */ 18859 extern int bcm_field_qualify_DstIp6ClassUpper_get( 18860 int unit, 18861 bcm_field_entry_t entry, 18862 bcm_class_t *data, 18863 bcm_class_t *mask); 18864 18865 /* 18866 * Configure match criteria for bcmFieldQualifyFcoeRxIDClass 18867 * qualifier from the field entry. 18868 */ 18869 extern int bcm_field_qualify_FcoeRxIDClass( 18870 int unit, 18871 bcm_field_entry_t entry, 18872 bcm_class_t data, 18873 bcm_class_t mask); 18874 18875 /* 18876 * Get match criteria for bcmFieldQualifyFcoeRxIDClass 18877 * qualifier from the field entry. 18878 */ 18879 extern int bcm_field_qualify_FcoeRxIDClass_get( 18880 int unit, 18881 bcm_field_entry_t entry, 18882 bcm_class_t *data, 18883 bcm_class_t *mask); 18884 18885 /* 18886 * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClass 18887 * qualifier from the field entry. 18888 */ 18889 extern int bcm_field_qualify_FibreChanSrcIdClass( 18890 int unit, 18891 bcm_field_entry_t entry, 18892 bcm_class_t data, 18893 bcm_class_t mask); 18894 18895 /* 18896 * Get match criteria for bcmFieldQualifyFibreChanSrcIdClass 18897 * qualifier from the field entry. 18898 */ 18899 extern int bcm_field_qualify_FibreChanSrcIdClass_get( 18900 int unit, 18901 bcm_field_entry_t entry, 18902 bcm_class_t *data, 18903 bcm_class_t *mask); 18904 18905 /* 18906 * Configure match criteria for 18907 * bcmFieldQualifyFibreChanSrcIdClassMsbNibble 18908 * qualifier from the field entry. 18909 */ 18910 extern int bcm_field_qualify_FibreChanSrcIdClassMsbNibble( 18911 int unit, 18912 bcm_field_entry_t entry, 18913 bcm_class_t data, 18914 bcm_class_t mask); 18915 18916 /* 18917 * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassMsbNibble 18918 * qualifier from the field entry. 18919 */ 18920 extern int bcm_field_qualify_FibreChanSrcIdClassMsbNibble_get( 18921 int unit, 18922 bcm_field_entry_t entry, 18923 bcm_class_t *data, 18924 bcm_class_t *mask); 18925 18926 /* 18927 * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClassLower 18928 * qualifier from the field entry. 18929 */ 18930 extern int bcm_field_qualify_FibreChanSrcIdClassLower( 18931 int unit, 18932 bcm_field_entry_t entry, 18933 bcm_class_t data, 18934 bcm_class_t mask); 18935 18936 /* 18937 * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassLower 18938 * qualifier from the field entry. 18939 */ 18940 extern int bcm_field_qualify_FibreChanSrcIdClassLower_get( 18941 int unit, 18942 bcm_field_entry_t entry, 18943 bcm_class_t *data, 18944 bcm_class_t *mask); 18945 18946 /* 18947 * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClassUpper 18948 * qualifier from the field entry. 18949 */ 18950 extern int bcm_field_qualify_FibreChanSrcIdClassUpper( 18951 int unit, 18952 bcm_field_entry_t entry, 18953 bcm_class_t data, 18954 bcm_class_t mask); 18955 18956 /* 18957 * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassUpper 18958 * qualifier from the field entry. 18959 */ 18960 extern int bcm_field_qualify_FibreChanSrcIdClassUpper_get( 18961 int unit, 18962 bcm_field_entry_t entry, 18963 bcm_class_t *data, 18964 bcm_class_t *mask); 18965 18966 /* 18967 * Configure match criteria for bcmFieldQualifyFibreChanDstIdClass 18968 * qualifier from the field entry. 18969 */ 18970 extern int bcm_field_qualify_FibreChanDstIdClass( 18971 int unit, 18972 bcm_field_entry_t entry, 18973 bcm_class_t data, 18974 bcm_class_t mask); 18975 18976 /* 18977 * Get match criteria for bcmFieldQualifyFibreChanDstIdClass 18978 * qualifier from the field entry. 18979 */ 18980 extern int bcm_field_qualify_FibreChanDstIdClass_get( 18981 int unit, 18982 bcm_field_entry_t entry, 18983 bcm_class_t *data, 18984 bcm_class_t *mask); 18985 18986 /* 18987 * Configure match criteria for 18988 * bcmFieldQualifyFibreChanDstIdClassMsbNibble 18989 * qualifier from the field entry. 18990 */ 18991 extern int bcm_field_qualify_FibreChanDstIdClassMsbNibble( 18992 int unit, 18993 bcm_field_entry_t entry, 18994 bcm_class_t data, 18995 bcm_class_t mask); 18996 18997 /* 18998 * Get match criteria for bcmFieldQualifyFibreChanDstIdClassMsbNibble 18999 * qualifier from the field entry. 19000 */ 19001 extern int bcm_field_qualify_FibreChanDstIdClassMsbNibble_get( 19002 int unit, 19003 bcm_field_entry_t entry, 19004 bcm_class_t *data, 19005 bcm_class_t *mask); 19006 19007 /* 19008 * Configure match criteria for bcmFieldQualifyFibreChanDstIdClassLower 19009 * qualifier from the field entry. 19010 */ 19011 extern int bcm_field_qualify_FibreChanDstIdClassLower( 19012 int unit, 19013 bcm_field_entry_t entry, 19014 bcm_class_t data, 19015 bcm_class_t mask); 19016 19017 /* 19018 * Get match criteria for bcmFieldQualifyFibreChanDstIdClassLower 19019 * qualifier from the field entry. 19020 */ 19021 extern int bcm_field_qualify_FibreChanDstIdClassLower_get( 19022 int unit, 19023 bcm_field_entry_t entry, 19024 bcm_class_t *data, 19025 bcm_class_t *mask); 19026 19027 /* 19028 * Configure match criteria for bcmFieldQualifyFibreChanDstIdClassUpper 19029 * qualifier from the field entry. 19030 */ 19031 extern int bcm_field_qualify_FibreChanDstIdClassUpper( 19032 int unit, 19033 bcm_field_entry_t entry, 19034 bcm_class_t data, 19035 bcm_class_t mask); 19036 19037 /* 19038 * Get match criteria for bcmFieldQualifyFibreChanDstIdClassUpper 19039 * qualifier from the field entry. 19040 */ 19041 extern int bcm_field_qualify_FibreChanDstIdClassUpper_get( 19042 int unit, 19043 bcm_field_entry_t entry, 19044 bcm_class_t *data, 19045 bcm_class_t *mask); 19046 19047 /* 19048 * Configure match criteria for bcmFieldQualifyTcpClassZero 19049 * qualifier from the field entry. 19050 */ 19051 extern int bcm_field_qualify_TcpClassZero( 19052 int unit, 19053 bcm_field_entry_t entry, 19054 bcm_class_t data, 19055 bcm_class_t mask); 19056 19057 /* 19058 * Get match criteria for bcmFieldQualifyTcpClassZero 19059 * qualifier from the field entry. 19060 */ 19061 extern int bcm_field_qualify_TcpClassZero_get( 19062 int unit, 19063 bcm_field_entry_t entry, 19064 bcm_class_t *data, 19065 bcm_class_t *mask); 19066 19067 /* 19068 * Configure match criteria for bcmFieldQualifyTosClassZero 19069 * qualifier from the field entry. 19070 */ 19071 extern int bcm_field_qualify_TosClassZero( 19072 int unit, 19073 bcm_field_entry_t entry, 19074 bcm_class_t data, 19075 bcm_class_t mask); 19076 19077 /* 19078 * Get match criteria for bcmFieldQualifyTosClassZero 19079 * qualifier from the field entry. 19080 */ 19081 extern int bcm_field_qualify_TosClassZero_get( 19082 int unit, 19083 bcm_field_entry_t entry, 19084 bcm_class_t *data, 19085 bcm_class_t *mask); 19086 19087 /* 19088 * Configure match criteria for bcmFieldQualifyTtlClassZero 19089 * qualifier from the field entry. 19090 */ 19091 extern int bcm_field_qualify_TtlClassZero( 19092 int unit, 19093 bcm_field_entry_t entry, 19094 bcm_class_t data, 19095 bcm_class_t mask); 19096 19097 /* 19098 * Get match criteria for bcmFieldQualifyTtlClassZero 19099 * qualifier from the field entry. 19100 */ 19101 extern int bcm_field_qualify_TtlClassZero_get( 19102 int unit, 19103 bcm_field_entry_t entry, 19104 bcm_class_t *data, 19105 bcm_class_t *mask); 19106 19107 /* 19108 * Configure match criteria for bcmFieldQualifyTcpClassOne 19109 * qualifier from the field entry. 19110 */ 19111 extern int bcm_field_qualify_TcpClassOne( 19112 int unit, 19113 bcm_field_entry_t entry, 19114 bcm_class_t data, 19115 bcm_class_t mask); 19116 19117 /* 19118 * Get match criteria for bcmFieldQualifyTcpClassOne 19119 * qualifier from the field entry. 19120 */ 19121 extern int bcm_field_qualify_TcpClassOne_get( 19122 int unit, 19123 bcm_field_entry_t entry, 19124 bcm_class_t *data, 19125 bcm_class_t *mask); 19126 19127 /* 19128 * Configure match criteria for bcmFieldQualifyTosClassOne 19129 * qualifier from the field entry. 19130 */ 19131 extern int bcm_field_qualify_TosClassOne( 19132 int unit, 19133 bcm_field_entry_t entry, 19134 bcm_class_t data, 19135 bcm_class_t mask); 19136 19137 /* 19138 * Get match criteria for bcmFieldQualifyTosClassOne 19139 * qualifier from the field entry. 19140 */ 19141 extern int bcm_field_qualify_TosClassOne_get( 19142 int unit, 19143 bcm_field_entry_t entry, 19144 bcm_class_t *data, 19145 bcm_class_t *mask); 19146 19147 /* 19148 * Configure match criteria for bcmFieldQualifyTtlClassOne 19149 * qualifier from the field entry. 19150 */ 19151 extern int bcm_field_qualify_TtlClassOne( 19152 int unit, 19153 bcm_field_entry_t entry, 19154 bcm_class_t data, 19155 bcm_class_t mask); 19156 19157 /* 19158 * Get match criteria for bcmFieldQualifyTtlClassOne 19159 * qualifier from the field entry. 19160 */ 19161 extern int bcm_field_qualify_TtlClassOne_get( 19162 int unit, 19163 bcm_field_entry_t entry, 19164 bcm_class_t *data, 19165 bcm_class_t *mask); 19166 19167 #endif /* BCM_HIDE_DISPATCHABLE */ 19168 19169 /* bcm_field_redirect_type_e */ 19170 typedef enum bcm_field_redirect_type_e { 19171 bcmFieldRedirectTypeL3 = 0, /* Redirect based on L3 route flow. */ 19172 bcmFieldRedirectTypeAll = 1, /* Redirect all IP and non-IP flows. */ 19173 bcmFieldRedirectTypeCount = 3 /* Always Last. Not a usable value. */ 19174 } bcm_field_redirect_type_t; 19175 19176 #define BCM_FIELD_REDIRECT_TYPE \ 19177 { \ 19178 "bcmFieldRedirectTypeL3", \ 19179 "bcmFieldRedirectTypeAll" \ 19180 } 19181 19182 #ifndef BCM_HIDE_DISPATCHABLE 19183 19184 /* 19185 * Set match criteria for bcmFieldQualifyHiGigDstMulticast 19186 * qualifier in the field entry. 19187 */ 19188 extern int bcm_field_qualify_HiGigDstMulticast( 19189 int unit, 19190 bcm_field_entry_t entry, 19191 uint8 data, 19192 uint8 mask); 19193 19194 /* 19195 * Get match criteria for bcmFieldQualifyHiGigDstMulticast 19196 * qualifier from the field entry. 19197 */ 19198 extern int bcm_field_qualify_HiGigDstMulticast_get( 19199 int unit, 19200 bcm_field_entry_t entry, 19201 uint8 *data, 19202 uint8 *mask); 19203 19204 /* 19205 * Set match criteria for bcmFieldQualifyHiGigDstMulticastGroupId 19206 * qualifier in the field entry. 19207 */ 19208 extern int bcm_field_qualify_HiGigDstMulticastGroupId( 19209 int unit, 19210 bcm_field_entry_t entry, 19211 bcm_multicast_t group, 19212 bcm_multicast_t mask); 19213 19214 /* 19215 * Get match criteria for bcmFieldQualifyHiGigDstMulticastGroupId 19216 * qualifier from the field entry. 19217 */ 19218 extern int bcm_field_qualify_HiGigDstMulticastGroupId_get( 19219 int unit, 19220 bcm_field_entry_t entry, 19221 bcm_multicast_t *group, 19222 bcm_multicast_t *mask); 19223 19224 /* 19225 * Set match criteria for bcmFieldQualifyHigigTrafficClass 19226 * qualifier in the field entry. 19227 */ 19228 extern int bcm_field_qualify_HiGigTrafficClass( 19229 int unit, 19230 bcm_field_entry_t entry, 19231 uint8 data, 19232 uint8 mask); 19233 19234 /* 19235 * Get match criteria for bcmFieldQualifyHiGigTrafficClass 19236 * qualifier from the field entry. 19237 */ 19238 extern int bcm_field_qualify_HiGigTrafficClass_get( 19239 int unit, 19240 bcm_field_entry_t entry, 19241 uint8 *data, 19242 uint8 *mask); 19243 19244 /* 19245 * Set match criteria for bcmFieldQualifyHiGigDstModuleGport 19246 * qualifier in the field entry. 19247 */ 19248 extern int bcm_field_qualify_HiGigDstModuleGport( 19249 int unit, 19250 bcm_field_entry_t entry, 19251 bcm_gport_t port_id, 19252 bcm_gport_t port_mask); 19253 19254 /* 19255 * Get match criteria for bcmFieldQualifyHiGigDstModuleGport 19256 * qualifier from the field entry. 19257 */ 19258 extern int bcm_field_qualify_HiGigDstModuleGport_get( 19259 int unit, 19260 bcm_field_entry_t entry, 19261 bcm_gport_t *port_id, 19262 bcm_gport_t *port_mask); 19263 19264 /* 19265 * Set match criteria for bcmFieldQualifyHiGigDstPortGport 19266 * qualifier in the field entry. 19267 */ 19268 extern int bcm_field_qualify_HiGigDstPortGport( 19269 int unit, 19270 bcm_field_entry_t entry, 19271 bcm_gport_t port_id, 19272 bcm_gport_t mask); 19273 19274 /* 19275 * Get match criteria for bcmFieldQualifyHiGigDstPortGport 19276 * qualifier from the field entry. 19277 */ 19278 extern int bcm_field_qualify_HiGigDstPortGport_get( 19279 int unit, 19280 bcm_field_entry_t entry, 19281 bcm_gport_t *port_id, 19282 bcm_gport_t *port_mask); 19283 19284 /* 19285 * Set match criteria for bcmFieldQualifyHiGigDstModPortGport 19286 * qualifier in the field entry. 19287 */ 19288 extern int bcm_field_qualify_HiGigDstModPortGport( 19289 int unit, 19290 bcm_field_entry_t entry, 19291 bcm_gport_t port_id, 19292 bcm_gport_t port_mask); 19293 19294 /* 19295 * Get match criteria for bcmFieldQualifyHiGigDstModPortGport 19296 * qualifier from the field entry. 19297 */ 19298 extern int bcm_field_qualify_HiGigDstModPortGport_get( 19299 int unit, 19300 bcm_field_entry_t entry, 19301 bcm_gport_t *port_id, 19302 bcm_gport_t *port_mask); 19303 19304 /* 19305 * Set match criteria for bcmFieldQualifyHiGigSrcModuleGport 19306 * qualifier in the field entry. 19307 */ 19308 extern int bcm_field_qualify_HiGigSrcModuleGport( 19309 int unit, 19310 bcm_field_entry_t entry, 19311 bcm_gport_t port_id, 19312 bcm_gport_t port_mask); 19313 19314 /* 19315 * Get match criteria for bcmFieldQualifyHiGigSrcModuleGport 19316 * qualifier from the field entry. 19317 */ 19318 extern int bcm_field_qualify_HiGigSrcModuleGport_get( 19319 int unit, 19320 bcm_field_entry_t entry, 19321 bcm_gport_t *port_id, 19322 bcm_gport_t *port_mask); 19323 19324 /* 19325 * Set match criteria for bcmFieldQualifyHiGigSrcPortGport 19326 * qualifier in the field entry. 19327 */ 19328 extern int bcm_field_qualify_HiGigSrcPortGport( 19329 int unit, 19330 bcm_field_entry_t entry, 19331 bcm_gport_t port_id, 19332 bcm_gport_t port_mask); 19333 19334 /* 19335 * Get match criteria for bcmFieldQualifyHiGigSrcPortGport 19336 * qualifier from the field entry. 19337 */ 19338 extern int bcm_field_qualify_HiGigSrcPortGport_get( 19339 int unit, 19340 bcm_field_entry_t entry, 19341 bcm_gport_t *port_id, 19342 bcm_gport_t *port_mask); 19343 19344 /* 19345 * Set match criteria for bcmFieldQualifyHiGigSrcModPortGport 19346 * qualifier in the field entry. 19347 */ 19348 extern int bcm_field_qualify_HiGigSrcModPortGport( 19349 int unit, 19350 bcm_field_entry_t entry, 19351 bcm_gport_t port_id, 19352 bcm_gport_t port_mask); 19353 19354 /* 19355 * Get match criteria for bcmFieldQualifyHiGigSrcModPortGport 19356 * qualifier from the field entry. 19357 */ 19358 extern int bcm_field_qualify_HiGigSrcModPortGport_get( 19359 int unit, 19360 bcm_field_entry_t entry, 19361 bcm_gport_t *port_id, 19362 bcm_gport_t *port_mask); 19363 19364 /* 19365 * Set match criteria for bcmFieldQualifyHiGigLoadBalanceID 19366 * qualifier in the field entry. 19367 */ 19368 extern int bcm_field_qualify_HiGigLoadBalanceID( 19369 int unit, 19370 bcm_field_entry_t entry, 19371 uint8 data, 19372 uint8 mask); 19373 19374 /* 19375 * Get match criteria for bcmFieldQualifyHiGigLoadBalanceID 19376 * qualifier from the field entry. 19377 */ 19378 extern int bcm_field_qualify_HiGigLoadBalanceID_get( 19379 int unit, 19380 bcm_field_entry_t entry, 19381 uint8 *data, 19382 uint8 *mask); 19383 19384 /* 19385 * Set match criteria for bcmFieldQualifyHiGigColor 19386 * qualifier in the field entry. 19387 */ 19388 extern int bcm_field_qualify_HiGigColor( 19389 int unit, 19390 bcm_field_entry_t entry, 19391 uint8 color); 19392 19393 /* 19394 * Get match criteria for bcmFieldQualifyHiGigColor 19395 * qualifier in the field entry. 19396 */ 19397 extern int bcm_field_qualify_HiGigColor_get( 19398 int unit, 19399 bcm_field_entry_t entry, 19400 uint8 *color); 19401 19402 /* 19403 * Set match criteria for bcmFieldQualifyHiGigIntCongestionNotification 19404 * qualifier in the field entry. 19405 */ 19406 extern int bcm_field_qualify_HiGigIntCongestionNotification( 19407 int unit, 19408 bcm_field_entry_t entry, 19409 uint8 data, 19410 uint8 mask); 19411 19412 /* 19413 * Get match criteria for bcmFieldQualifyHiGigIntCongestionNotification 19414 * qualifier from the field entry. 19415 */ 19416 extern int bcm_field_qualify_HiGigIntCongestionNotification_get( 19417 int unit, 19418 bcm_field_entry_t entry, 19419 uint8 *data, 19420 uint8 *mask); 19421 19422 /* 19423 * Set match criteria for bcmFieldQualifyHiGigIngressTagged 19424 * qualifier in the field entry. 19425 */ 19426 extern int bcm_field_qualify_HiGigIngressTagged( 19427 int unit, 19428 bcm_field_entry_t entry, 19429 uint8 data, 19430 uint8 mask); 19431 19432 /* 19433 * Get match criteria for bcmFieldQualifyHiGigIngressTagged 19434 * qualifier from the field entry. 19435 */ 19436 extern int bcm_field_qualify_HiGigIngressTagged_get( 19437 int unit, 19438 bcm_field_entry_t entry, 19439 uint8 *data, 19440 uint8 *mask); 19441 19442 /* 19443 * Set match criteria for bcmFieldQualifyHiGigDstTrunk 19444 * qualifier in the field entry. 19445 */ 19446 extern int bcm_field_qualify_HiGigDstTrunk( 19447 int unit, 19448 bcm_field_entry_t entry, 19449 uint8 data, 19450 uint8 mask); 19451 19452 /* 19453 * Get match criteria for bcmFieldQualifyHiGigDstTrunk 19454 * qualifier from the field entry. 19455 */ 19456 extern int bcm_field_qualify_HiGigDstTrunk_get( 19457 int unit, 19458 bcm_field_entry_t entry, 19459 uint8 *data, 19460 uint8 *mask); 19461 19462 /* 19463 * Set match criteria for bcmFieldQualifyHiGigDstTrunkId 19464 * qualifier in the field entry. 19465 */ 19466 extern int bcm_field_qualify_HiGigDstTrunkId( 19467 int unit, 19468 bcm_field_entry_t entry, 19469 bcm_trunk_t data, 19470 bcm_trunk_t mask); 19471 19472 /* 19473 * Get match criteria for bcmFieldQualifyHiGigDstTrunkId 19474 * qualifier from the field entry. 19475 */ 19476 extern int bcm_field_qualify_HiGigDstTrunkId_get( 19477 int unit, 19478 bcm_field_entry_t entry, 19479 bcm_trunk_t *data, 19480 bcm_trunk_t *mask); 19481 19482 /* 19483 * Set match criteria for bcmFieldQualifyHiGigIngressL3SwitchPkt 19484 * qualifier in the field entry. 19485 */ 19486 extern int bcm_field_qualify_HiGigIngressL3SwitchPkt( 19487 int unit, 19488 bcm_field_entry_t entry, 19489 uint8 data, 19490 uint8 mask); 19491 19492 /* 19493 * Get match criteria for bcmFieldQualifyHiGigIngressL3SwitchPkt 19494 * qualifier from the field entry. 19495 */ 19496 extern int bcm_field_qualify_HiGigIngressL3SwitchPkt_get( 19497 int unit, 19498 bcm_field_entry_t entry, 19499 uint8 *data, 19500 uint8 *mask); 19501 19502 /* 19503 * Set match criteria for bcmFieldQualifyHiGigLabel 19504 * qualifier in the field entry. 19505 */ 19506 extern int bcm_field_qualify_HiGigLabel( 19507 int unit, 19508 bcm_field_entry_t entry, 19509 uint32 data, 19510 uint32 mask); 19511 19512 /* 19513 * Get match criteria for bcmFieldQualifyHiGigLabel 19514 * qualifier from the field entry. 19515 */ 19516 extern int bcm_field_qualify_HiGigLabel_get( 19517 int unit, 19518 bcm_field_entry_t entry, 19519 uint32 *data, 19520 uint32 *mask); 19521 19522 /* 19523 * Set match criteria for bcmFieldQualifyHiGigReplicationId 19524 * qualifier in the field entry. 19525 */ 19526 extern int bcm_field_qualify_HiGigReplicationId( 19527 int unit, 19528 bcm_field_entry_t entry, 19529 uint32 data, 19530 uint32 mask); 19531 19532 /* 19533 * Get match criteria for bcmFieldQualifyHiGigReplicationId 19534 * qualifier from the field entry. 19535 */ 19536 extern int bcm_field_qualify_HiGigReplicationId_get( 19537 int unit, 19538 bcm_field_entry_t entry, 19539 uint32 *data, 19540 uint32 *mask); 19541 19542 /* 19543 * Set match criteria for bcmFieldQualifyHiGigVlan 19544 * qualifier in the field entry. 19545 */ 19546 extern int bcm_field_qualify_HiGigVlan( 19547 int unit, 19548 bcm_field_entry_t entry, 19549 uint16 data, 19550 uint16 mask); 19551 19552 /* 19553 * Get match criteria for bcmFieldQualifyHiGigVlan 19554 * qualifier from the field entry. 19555 */ 19556 extern int bcm_field_qualify_HiGigVlan_get( 19557 int unit, 19558 bcm_field_entry_t entry, 19559 uint16 *data, 19560 uint16 *mask); 19561 19562 /* 19563 * Set match criteria for bcmFieldQualifyHiGigPortFilteringMode 19564 * qualifier in the field entry. 19565 */ 19566 extern int bcm_field_qualify_HiGigPortFilteringMode( 19567 int unit, 19568 bcm_field_entry_t entry, 19569 uint8 data, 19570 uint8 mask); 19571 19572 /* 19573 * Get match criteria for bcmFieldQualifyHiGigPortFilteringMode 19574 * qualifier from the field entry. 19575 */ 19576 extern int bcm_field_qualify_HiGigPortFilteringMode_get( 19577 int unit, 19578 bcm_field_entry_t entry, 19579 uint8 *data, 19580 uint8 *mask); 19581 19582 /* 19583 * Set match criteria for bcmFieldQualifyHiGigSrcTrunk 19584 * qualifier in the field entry. 19585 */ 19586 extern int bcm_field_qualify_HiGigSrcTrunk( 19587 int unit, 19588 bcm_field_entry_t entry, 19589 uint8 data, 19590 uint8 mask); 19591 19592 /* 19593 * Get match criteria for bcmFieldQualifyHiGigSrcTrunk 19594 * qualifier from the field entry. 19595 */ 19596 extern int bcm_field_qualify_HiGigSrcTrunk_get( 19597 int unit, 19598 bcm_field_entry_t entry, 19599 uint8 *data, 19600 uint8 *mask); 19601 19602 /* 19603 * Set match criteria for bcmFieldQualifyHiGigIngressClassificationTag 19604 * qualifier in the field entry. 19605 */ 19606 extern int bcm_field_qualify_HiGigIngressClassificationTag( 19607 int unit, 19608 bcm_field_entry_t entry, 19609 uint16 data, 19610 uint16 mask); 19611 19612 /* 19613 * Get match criteria for bcmFieldQualifyHiGigIngressClassificationTag 19614 * qualifier from the field entry. 19615 */ 19616 extern int bcm_field_qualify_HiGigIngressClassificationTag_get( 19617 int unit, 19618 bcm_field_entry_t entry, 19619 uint16 *data, 19620 uint16 *mask); 19621 19622 /* 19623 * Set match criteria for bcmFieldQualifyHiGigEgressMcast 19624 * qualifier in the field entry. 19625 */ 19626 extern int bcm_field_qualify_HiGigEgressMcast( 19627 int unit, 19628 bcm_field_entry_t entry, 19629 uint8 data, 19630 uint8 mask); 19631 19632 /* 19633 * Get match criteria for bcmFieldQualifyHiGigEgressMcast 19634 * qualifier from the field entry. 19635 */ 19636 extern int bcm_field_qualify_HiGigEgressMcast_get( 19637 int unit, 19638 bcm_field_entry_t entry, 19639 uint8 *data, 19640 uint8 *mask); 19641 19642 /* 19643 * Set match criteria for bcmFieldQualifyHiGigVni 19644 * qualifier in the field entry. 19645 */ 19646 extern int bcm_field_qualify_HiGigVni( 19647 int unit, 19648 bcm_field_entry_t entry, 19649 uint16 data, 19650 uint16 mask); 19651 19652 /* 19653 * Get match criteria for bcmFieldQualifyHiGigVni 19654 * qualifier from the field entry. 19655 */ 19656 extern int bcm_field_qualify_HiGigVni_get( 19657 int unit, 19658 bcm_field_entry_t entry, 19659 uint16 *data, 19660 uint16 *mask); 19661 19662 /* 19663 * Set match criteria for bcmFieldQualifyHiGigDstGport 19664 * qualifier in the field entry. 19665 */ 19666 extern int bcm_field_qualify_HiGigDstGport( 19667 int unit, 19668 bcm_field_entry_t entry, 19669 bcm_gport_t port_id, 19670 bcm_gport_t port_mask); 19671 19672 /* 19673 * Get match criteria for bcmFieldQualifyHiGigDstGport 19674 * qualifier from the field entry. 19675 */ 19676 extern int bcm_field_qualify_HiGigDstGport_get( 19677 int unit, 19678 bcm_field_entry_t entry, 19679 bcm_gport_t *port_id, 19680 bcm_gport_t *port_mask); 19681 19682 /* 19683 * Set match criteria for bcmFieldQualifyHiGigMulticastIndex 19684 * qualifier in the field entry. 19685 */ 19686 extern int bcm_field_qualify_HiGigMulticastIndex( 19687 int unit, 19688 bcm_field_entry_t entry, 19689 uint16 data, 19690 uint16 mask); 19691 19692 /* 19693 * Get match criteria for bcmFieldQualifyHiGigMulticastIndex 19694 * qualifier from the field entry. 19695 */ 19696 extern int bcm_field_qualify_HiGigMulticastIndex_get( 19697 int unit, 19698 bcm_field_entry_t entry, 19699 uint16 *data, 19700 uint16 *mask); 19701 19702 /* 19703 * Set match criteria for bcmFieldQualifyHiGigVpReplicationId 19704 * qualifier in the field entry. 19705 */ 19706 extern int bcm_field_qualify_HiGigVpReplicationId( 19707 int unit, 19708 bcm_field_entry_t entry, 19709 uint32 data, 19710 uint32 mask); 19711 19712 /* 19713 * Get match criteria for bcmFieldQualifyHiGigVpReplicationId 19714 * qualifier from the field entry. 19715 */ 19716 extern int bcm_field_qualify_HiGigVpReplicationId_get( 19717 int unit, 19718 bcm_field_entry_t entry, 19719 uint32 *data, 19720 uint32 *mask); 19721 19722 /* 19723 * Set match criteria for bcmFieldQualifyHiGigSrcGport 19724 * qualifier in the field entry. 19725 */ 19726 extern int bcm_field_qualify_HiGigSrcGport( 19727 int unit, 19728 bcm_field_entry_t entry, 19729 bcm_gport_t port_id, 19730 bcm_gport_t port_mask); 19731 19732 /* 19733 * Get match criteria for bcmFieldQualifyHiGigSrcGport 19734 * qualifier from the field entry. 19735 */ 19736 extern int bcm_field_qualify_HiGigSrcGport_get( 19737 int unit, 19738 bcm_field_entry_t entry, 19739 bcm_gport_t *port_id, 19740 bcm_gport_t *port_mask); 19741 19742 /* 19743 * Set match criteria for bcmFieldQualifyHiGigProtectionSwitchingStatus 19744 * qualifier in the field entry. 19745 */ 19746 extern int bcm_field_qualify_HiGigProtectionSwitchingStatus( 19747 int unit, 19748 bcm_field_entry_t entry, 19749 uint8 data, 19750 uint8 mask); 19751 19752 /* 19753 * Get match criteria for bcmFieldQualifyHiGigProtectionSwitchingStatus 19754 * qualifier from the field entry. 19755 */ 19756 extern int bcm_field_qualify_HiGigProtectionSwitchingStatus_get( 19757 int unit, 19758 bcm_field_entry_t entry, 19759 uint8 *data, 19760 uint8 *mask); 19761 19762 /* 19763 * Set match criteria for bcmFieldQualifyHiGigMirrorToVp 19764 * qualifier in the field entry. 19765 */ 19766 extern int bcm_field_qualify_HiGigMirrorToVp( 19767 int unit, 19768 bcm_field_entry_t entry, 19769 uint8 data, 19770 uint8 mask); 19771 19772 /* 19773 * Get match criteria for bcmFieldQualifyHiGigMirrorToVp 19774 * qualifier from the field entry. 19775 */ 19776 extern int bcm_field_qualify_HiGigMirrorToVp_get( 19777 int unit, 19778 bcm_field_entry_t entry, 19779 uint8 *data, 19780 uint8 *mask); 19781 19782 /* 19783 * Set match criteria for bcmFieldQualifyHiGigDstType 19784 * qualifier in the field entry. 19785 */ 19786 extern int bcm_field_qualify_HiGigDstType( 19787 int unit, 19788 bcm_field_entry_t entry, 19789 uint8 data, 19790 uint8 mask); 19791 19792 /* 19793 * Get match criteria for bcmFieldQualifyHiGigDstType 19794 * qualifier from the field entry. 19795 */ 19796 extern int bcm_field_qualify_HiGigDstType_get( 19797 int unit, 19798 bcm_field_entry_t entry, 19799 uint8 *data, 19800 uint8 *mask); 19801 19802 /* 19803 * Set match criteria for bcmFieldQualifyHiGigSrcType 19804 * qualifier in the field entry. 19805 */ 19806 extern int bcm_field_qualify_HiGigSrcType( 19807 int unit, 19808 bcm_field_entry_t entry, 19809 uint8 data, 19810 uint8 mask); 19811 19812 /* 19813 * Get match criteria for bcmFieldQualifyHiGigSrcType 19814 * qualifier from the field entry. 19815 */ 19816 extern int bcm_field_qualify_HiGigSrcType_get( 19817 int unit, 19818 bcm_field_entry_t entry, 19819 uint8 *data, 19820 uint8 *mask); 19821 19822 /* 19823 * Set match criteria for 19824 * bcmFieldQualifyHiGigOffloadEngineClassificationTag 19825 * qualifier in the field entry. 19826 */ 19827 extern int bcm_field_qualify_HiGigOffloadEngineClassificationTag( 19828 int unit, 19829 bcm_field_entry_t entry, 19830 uint16 data, 19831 uint16 mask); 19832 19833 /* 19834 * Get match criteria for 19835 * bcmFieldQualifyHiGigOffloadEngineClassificationTag 19836 * qualifier from the field entry. 19837 */ 19838 extern int bcm_field_qualify_HiGigOffloadEngineClassificationTag_get( 19839 int unit, 19840 bcm_field_entry_t entry, 19841 uint16 *data, 19842 uint16 *mask); 19843 19844 /* 19845 * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePktPriNew 19846 * qualifier in the field entry. 19847 */ 19848 extern int bcm_field_qualify_HiGigOffloadEnginePktPriNew( 19849 int unit, 19850 bcm_field_entry_t entry, 19851 uint8 data, 19852 uint8 mask); 19853 19854 /* 19855 * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePktPriNew 19856 * qualifier from the field entry. 19857 */ 19858 extern int bcm_field_qualify_HiGigOffloadEnginePktPriNew_get( 19859 int unit, 19860 bcm_field_entry_t entry, 19861 uint8 *data, 19862 uint8 *mask); 19863 19864 /* 19865 * Set match criteria for bcmFieldQualifyHiGigOffloadEngineDscpNew 19866 * qualifier in the field entry. 19867 */ 19868 extern int bcm_field_qualify_HiGigOffloadEngineDscpNew( 19869 int unit, 19870 bcm_field_entry_t entry, 19871 uint8 data, 19872 uint8 mask); 19873 19874 /* 19875 * Get match criteria for bcmFieldQualifyHiGigOffloadEngineDscpNew 19876 * qualifier from the field entry. 19877 */ 19878 extern int bcm_field_qualify_HiGigOffloadEngineDscpNew_get( 19879 int unit, 19880 bcm_field_entry_t entry, 19881 uint8 *data, 19882 uint8 *mask); 19883 19884 /* 19885 * Set match criteria for bcmFieldQualifyLoopBackQueue 19886 * qualifier in the field entry. 19887 */ 19888 extern int bcm_field_qualify_LoopBackQueue( 19889 int unit, 19890 bcm_field_entry_t entry, 19891 uint8 data, 19892 uint8 mask); 19893 19894 /* 19895 * Get match criteria for bcmFieldQualifyLoopBackQueue 19896 * qualifier from the field entry. 19897 */ 19898 extern int bcm_field_qualify_LoopBackQueue_get( 19899 int unit, 19900 bcm_field_entry_t entry, 19901 uint8 *data, 19902 uint8 *mask); 19903 19904 /* 19905 * Set match criteria for bcmFieldQualifyLoopBackSrcGport 19906 * qualifier in the field entry. 19907 */ 19908 extern int bcm_field_qualify_LoopBackSrcGport( 19909 int unit, 19910 bcm_field_entry_t entry, 19911 bcm_gport_t port_id, 19912 bcm_gport_t port_mask); 19913 19914 /* 19915 * Get match criteria for bcmFieldQualifyLoopBackSrcGport 19916 * qualifier from the field entry. 19917 */ 19918 extern int bcm_field_qualify_LoopBackSrcGport_get( 19919 int unit, 19920 bcm_field_entry_t entry, 19921 bcm_gport_t *port_id, 19922 bcm_gport_t *port_mask); 19923 19924 /* 19925 * Set match criteria for bcmFieldQualifyPktIsVisible 19926 * qualifier in the field entry. 19927 */ 19928 extern int bcm_field_qualify_PktIsVisible( 19929 int unit, 19930 bcm_field_entry_t entry, 19931 uint8 data, 19932 uint8 mask); 19933 19934 /* 19935 * Get match criteria for bcmFieldQualifyPktIsVisible 19936 * qualifier from the field entry. 19937 */ 19938 extern int bcm_field_qualify_PktIsVisible_get( 19939 int unit, 19940 bcm_field_entry_t entry, 19941 uint8 *data, 19942 uint8 *mask); 19943 19944 /* 19945 * Set match criteria for bcmFieldQualifyLoopBackCpuMasqueradePktProfile 19946 * qualifier in the field entry. 19947 */ 19948 extern int bcm_field_qualify_LoopBackCpuMasqueradePktProfile( 19949 int unit, 19950 bcm_field_entry_t entry, 19951 uint8 data, 19952 uint8 mask); 19953 19954 /* 19955 * Get match criteria for bcmFieldQualifyLoopBackCpuMasqueradePktProfile 19956 * qualifier from the field entry. 19957 */ 19958 extern int bcm_field_qualify_LoopBackCpuMasqueradePktProfile_get( 19959 int unit, 19960 bcm_field_entry_t entry, 19961 uint8 *data, 19962 uint8 *mask); 19963 19964 /* 19965 * Set match criteria for bcmFieldQualifyLoopBackColor 19966 * qualifier in the field entry. 19967 */ 19968 extern int bcm_field_qualify_LoopBackColor( 19969 int unit, 19970 bcm_field_entry_t entry, 19971 uint8 color); 19972 19973 /* 19974 * Get match criteria for bcmFieldQualifyLoopBackColor 19975 * qualifier from the field entry. 19976 */ 19977 extern int bcm_field_qualify_LoopBackColor_get( 19978 int unit, 19979 bcm_field_entry_t entry, 19980 uint8 *color); 19981 19982 /* 19983 * Set match criteria for bcmFieldQualifyLoopBackTrafficClass 19984 * qualifier in the field entry. 19985 */ 19986 extern int bcm_field_qualify_LoopBackTrafficClass( 19987 int unit, 19988 bcm_field_entry_t entry, 19989 uint8 data, 19990 uint8 mask); 19991 19992 /* 19993 * Get match criteria for bcmFieldQualifyLoopBackTrafficClass 19994 * qualifier from the field entry. 19995 */ 19996 extern int bcm_field_qualify_LoopBackTrafficClass_get( 19997 int unit, 19998 bcm_field_entry_t entry, 19999 uint8 *data, 20000 uint8 *mask); 20001 20002 /* 20003 * Set match criteria for bcmFieldQualifyLoopBackPacketProcessingPort 20004 * qualifier in the field entry. 20005 */ 20006 extern int bcm_field_qualify_LoopBackPacketProcessingPort( 20007 int unit, 20008 bcm_field_entry_t entry, 20009 bcm_gport_t port_id, 20010 bcm_gport_t port_mask); 20011 20012 /* 20013 * Get match criteria for bcmFieldQualifyLoopBackPacketProcessingPort 20014 * qualifier from the field entry. 20015 */ 20016 extern int bcm_field_qualify_LoopBackPacketProcessingPort_get( 20017 int unit, 20018 bcm_field_entry_t entry, 20019 bcm_gport_t *port_id, 20020 bcm_gport_t *port_mask); 20021 20022 #endif /* BCM_HIDE_DISPATCHABLE */ 20023 20024 /* bcm_field_src_class_mode_e */ 20025 typedef enum bcm_field_src_class_mode_e { 20026 bcmFieldSrcClassModeDefault = 0, /* XGS Default. */ 20027 bcmFieldSrcClassModeSDN = 1, /* Suitable for SDN. */ 20028 bcmFieldSrcClassModeBalanced = 2, /* Balanced mode. */ 20029 bcmFieldSrcClassModeOverlayNetworks = 3, /* Suitable for Overlay Networks. */ 20030 bcmFieldSrcClassModeCount = 4 /* Always Last. Not a usable value. */ 20031 } bcm_field_src_class_mode_t; 20032 20033 #define BCM_FIELD_SRC_CLASS_MODE_TYPE \ 20034 { \ 20035 "bcmFieldSrcClassModeDefault", \ 20036 "bcmFieldSrcClassModeSDN", \ 20037 "bcmFieldSrcClassModeBalanced", \ 20038 "bcmFieldSrcClassModeOverlayNetworks" \ 20039 } 20040 20041 /* Source Class Mode Structure. */ 20042 typedef struct bcm_field_src_class_s { 20043 uint16 src_class_field; /* Field Lookup stage Class ID value assigned by 20044 bcmFieldActionClassSourceSet action */ 20045 uint16 dst_class_field; /* Field Stage Lookup Class ID value assigned by 20046 bcmFieldActionClassDestSet action. */ 20047 uint32 udf_class; /* Class ID value from UDF lookup. */ 20048 uint32 intf_class_port; /* Class ID value from Port Table. */ 20049 uint32 intf_class_l2; /* Class ID value from Vlan or Vfi lookup. */ 20050 uint32 intf_class_l3; /* L3 ingress interface Class ID. */ 20051 uint32 intf_class_vport; /* Class ID value from Mim / L2Gre / VxLan / 20052 Mpls / Trill / Vlan Translation / Field 20053 Lookup stage source virtual port lookup. */ 20054 } bcm_field_src_class_t; 20055 20056 /* Initiaize Field Source Class Mode structure */ 20057 extern void bcm_field_src_class_t_init( 20058 bcm_field_src_class_t *src_class); 20059 20060 #ifndef BCM_HIDE_DISPATCHABLE 20061 20062 /* 20063 * Configures the mixed Source Class ID generation mode for Ingress 20064 * and Exact Match Search stages 20065 */ 20066 extern int bcm_field_source_class_mode_set( 20067 int unit, 20068 bcm_field_stage_t stage, 20069 bcm_pbmp_t pbmp, 20070 bcm_field_src_class_mode_t mode); 20071 20072 /* 20073 * Gets the mixed source class ID generation mode configured in hardware 20074 * for Field Ingress 20075 * and Exact Match Search stages 20076 */ 20077 extern int bcm_field_source_class_mode_get( 20078 int unit, 20079 bcm_field_stage_t stage, 20080 bcm_pbmp_t pbmp, 20081 bcm_field_src_class_mode_t *mode); 20082 20083 /* 20084 * Configure match criteria for bcmFieldQualifyMixedSrcClassId qualifier 20085 * for the preselection field entry 20086 */ 20087 extern int bcm_field_qualify_MixedSrcClassId( 20088 int unit, 20089 bcm_field_entry_t entry, 20090 bcm_pbmp_t pbmp, 20091 bcm_field_src_class_t data, 20092 bcm_field_src_class_t mask); 20093 20094 /* 20095 * Get match criteria for bcmFieldQualifyMixedSrcClassId qualifier 20096 * from the preselection field entry 20097 */ 20098 extern int bcm_field_qualify_MixedSrcClassId_get( 20099 int unit, 20100 bcm_field_entry_t entry, 20101 bcm_pbmp_t pbmp, 20102 bcm_field_src_class_t *data, 20103 bcm_field_src_class_t *mask); 20104 20105 /* 20106 * Configure match criteria for bcmFieldQualifyCustomHeaderPkt 20107 * qualifier from the field entry. 20108 */ 20109 extern int bcm_field_qualify_CustomHeaderPkt( 20110 int unit, 20111 bcm_field_entry_t entry, 20112 uint8 data, 20113 uint8 mask); 20114 20115 /* 20116 * Get match criteria for bcmFieldQualifyCustomHeaderPkt 20117 * qualifier from the field entry. 20118 */ 20119 extern int bcm_field_qualify_CustomHeaderPkt_get( 20120 int unit, 20121 bcm_field_entry_t entry, 20122 uint8 *data, 20123 uint8 *mask); 20124 20125 /* 20126 * Configure match criteria for bcmFieldQualifyCustomHeaderData 20127 * qualifier from the field entry. 20128 */ 20129 extern int bcm_field_qualify_CustomHeaderData( 20130 int unit, 20131 bcm_field_entry_t entry, 20132 uint32 data, 20133 uint32 mask); 20134 20135 /* 20136 * Get match criteria for bcmFieldQualifyCustomHeaderData 20137 * qualifier from the field entry. 20138 */ 20139 extern int bcm_field_qualify_CustomHeaderData_get( 20140 int unit, 20141 bcm_field_entry_t entry, 20142 uint32 *data, 20143 uint32 *mask); 20144 20145 /* 20146 * Set match criteria for bcmFieldQualifyMimlPkt 20147 * qualifier in the field entry. 20148 */ 20149 extern int bcm_field_qualify_MimlPkt( 20150 int unit, 20151 bcm_field_entry_t entry, 20152 uint8 data, 20153 uint8 mask); 20154 20155 /* 20156 * Get match criteria for bcmFieldQualifyMimlPkt 20157 * qualifier from the field entry. 20158 */ 20159 extern int bcm_field_qualify_MimlPkt_get( 20160 int unit, 20161 bcm_field_entry_t entry, 20162 uint8 *data, 20163 uint8 *mask); 20164 20165 /* 20166 * Set match criteria for bcmFieldQualifyMimlSrcMac 20167 * qualifier in the field entry. 20168 */ 20169 extern int bcm_field_qualify_MimlSrcMac( 20170 int unit, 20171 bcm_field_entry_t entry, 20172 bcm_mac_t data, 20173 bcm_mac_t mask); 20174 20175 /* 20176 * Set match criteria for bcmFieldQualifyMimlDstMac 20177 * qualifier in the field entry. 20178 */ 20179 extern int bcm_field_qualify_MimlDstMac( 20180 int unit, 20181 bcm_field_entry_t entry, 20182 bcm_mac_t data, 20183 bcm_mac_t mask); 20184 20185 /* To qualify on a port bitmap generated from SGLP. */ 20186 extern int bcm_field_qualify_SystemPortBitmap( 20187 int unit, 20188 bcm_field_entry_t entry, 20189 bcm_pbmp_t data, 20190 bcm_pbmp_t mask); 20191 20192 /* 20193 * Get match criteria for SystemPortBitmap qualifier from the field 20194 * entry. 20195 */ 20196 extern int bcm_field_qualify_SystemPortBitmap_get( 20197 int unit, 20198 bcm_field_entry_t entry, 20199 bcm_pbmp_t *data, 20200 bcm_pbmp_t *mask); 20201 20202 /* To qualify on a port bitmap generated from SVP. */ 20203 extern int bcm_field_qualify_SourceGportBitmap( 20204 int unit, 20205 bcm_field_entry_t entry, 20206 bcm_pbmp_t data, 20207 bcm_pbmp_t mask); 20208 20209 /* 20210 * Get match criteria for SourceGportBitmap qualifier from the field. 20211 * entry. 20212 */ 20213 extern int bcm_field_qualify_SourceGportBitmap_get( 20214 int unit, 20215 bcm_field_entry_t entry, 20216 bcm_pbmp_t *data, 20217 bcm_pbmp_t *mask); 20218 20219 /* To qualify on a port bitmap generated from device ingress port. */ 20220 extern int bcm_field_qualify_DevicePortBitmap( 20221 int unit, 20222 bcm_field_entry_t entry, 20223 bcm_pbmp_t data, 20224 bcm_pbmp_t mask); 20225 20226 /* 20227 * Get match criteria for DevicePortBitmap qualifier from the field 20228 * entry. 20229 */ 20230 extern int bcm_field_qualify_DevicePortBitmap_get( 20231 int unit, 20232 bcm_field_entry_t entry, 20233 bcm_pbmp_t *data, 20234 bcm_pbmp_t *mask); 20235 20236 /* 20237 * Get match criteria for bcmFieldQualifyMimlSrcMac 20238 * qualifier from the field entry. 20239 */ 20240 extern int bcm_field_qualify_MimlSrcMac_get( 20241 int unit, 20242 bcm_field_entry_t entry, 20243 bcm_mac_t *data, 20244 bcm_mac_t *mask); 20245 20246 /* 20247 * Get match criteria for bcmFieldQualifyMimlDstMac 20248 * qualifier from the field entry. 20249 */ 20250 extern int bcm_field_qualify_MimlDstMac_get( 20251 int unit, 20252 bcm_field_entry_t entry, 20253 bcm_mac_t *data, 20254 bcm_mac_t *mask); 20255 20256 /* 20257 * Set match criteria for bcmFieldQualifyMimlVlan 20258 * qualifier in the field entry. 20259 */ 20260 extern int bcm_field_qualify_MimlVlan( 20261 int unit, 20262 bcm_field_entry_t entry, 20263 bcm_vlan_t data, 20264 bcm_vlan_t mask); 20265 20266 /* 20267 * Get match criteria for bcmFieldQualifyMimlVlan 20268 * qualifier from the field entry. 20269 */ 20270 extern int bcm_field_qualify_MimlVlan_get( 20271 int unit, 20272 bcm_field_entry_t entry, 20273 bcm_vlan_t *data, 20274 bcm_vlan_t *mask); 20275 20276 /* 20277 * Set match criteria for bcmFieldQualifyMimlVlanId 20278 * qualifier in the field entry. 20279 */ 20280 extern int bcm_field_qualify_MimlVlanId( 20281 int unit, 20282 bcm_field_entry_t entry, 20283 bcm_vlan_t data, 20284 bcm_vlan_t mask); 20285 20286 /* 20287 * Get match criteria for bcmFieldQualifyMimlVlanId 20288 * qualifier from the field entry. 20289 */ 20290 extern int bcm_field_qualify_MimlVlanId_get( 20291 int unit, 20292 bcm_field_entry_t entry, 20293 bcm_vlan_t *data, 20294 bcm_vlan_t *mask); 20295 20296 /* 20297 * Set match criteria for bcmFieldQualifyMimlVlanPri 20298 * qualifier in the field entry. 20299 */ 20300 extern int bcm_field_qualify_MimlVlanPri( 20301 int unit, 20302 bcm_field_entry_t entry, 20303 uint8 data, 20304 uint8 mask); 20305 20306 /* 20307 * Get match criteria for bcmFieldQualifyMimlVlanPri 20308 * qualifier from the field entry. 20309 */ 20310 extern int bcm_field_qualify_MimlVlanPri_get( 20311 int unit, 20312 bcm_field_entry_t entry, 20313 uint8 *data, 20314 uint8 *mask); 20315 20316 /* 20317 * Set match criteria for bcmFieldQualifyMimlVlanCfi 20318 * qualifier in the field entry. 20319 */ 20320 extern int bcm_field_qualify_MimlVlanCfi( 20321 int unit, 20322 bcm_field_entry_t entry, 20323 uint8 data, 20324 uint8 mask); 20325 20326 /* 20327 * Get match criteria for bcmFieldQualifyMimlVlanCfi_get 20328 * qualifier from the field entry. 20329 */ 20330 extern int bcm_field_qualify_MimlVlanCfi_get( 20331 int unit, 20332 bcm_field_entry_t entry, 20333 uint8 *data, 20334 uint8 *mask); 20335 20336 /* 20337 * Set match criteria for bcmFieldQualifyMimlInnerTag 20338 * qualifier in the field entry. 20339 */ 20340 extern int bcm_field_qualify_MimlInnerTag( 20341 int unit, 20342 bcm_field_entry_t entry, 20343 uint32 data, 20344 uint32 mask); 20345 20346 /* 20347 * Get match criteria for bcmFieldQualifyMimlInnerTag_get 20348 * qualifier from the field entry. 20349 */ 20350 extern int bcm_field_qualify_MimlInnerTag_get( 20351 int unit, 20352 bcm_field_entry_t entry, 20353 uint32 *data, 20354 uint32 *mask); 20355 20356 /* 20357 * Set match criteria for bcmFieldQualifyCapwapHdrType 20358 * qualifier in the field entry. 20359 */ 20360 extern int bcm_field_qualify_CapwapHdrType( 20361 int unit, 20362 bcm_field_entry_t entry, 20363 uint8 data, 20364 uint8 mask); 20365 20366 /* 20367 * Get match criteria for bcmFieldQualifyCapwapHdrType 20368 * qualifier from the field entry. 20369 */ 20370 extern int bcm_field_qualify_CapwapHdrType_get( 20371 int unit, 20372 bcm_field_entry_t entry, 20373 uint8 *data, 20374 uint8 *mask); 20375 20376 /* 20377 * Set match criteria for bcmFieldQualifyCapwapHdrRid 20378 * qualifier in the field entry. 20379 */ 20380 extern int bcm_field_qualify_CapwapHdrRid( 20381 int unit, 20382 bcm_field_entry_t entry, 20383 uint8 data, 20384 uint8 mask); 20385 20386 /* 20387 * Get match criteria for bcmFieldQualifyCapwapHdrRid 20388 * qualifier from the field entry. 20389 */ 20390 extern int bcm_field_qualify_CapwapHdrRid_get( 20391 int unit, 20392 bcm_field_entry_t entry, 20393 uint8 *data, 20394 uint8 *mask); 20395 20396 /* 20397 * Set match criteria for bcmFieldQualifyCapwapPayloadSOF 20398 * qualifier in the field entry. 20399 */ 20400 extern int bcm_field_qualify_CapwapPayloadSOF( 20401 int unit, 20402 bcm_field_entry_t entry, 20403 uint8 data, 20404 uint8 mask); 20405 20406 /* 20407 * Get match criteria for bcmFieldQualifyCapwapPayloadSOF 20408 * qualifier from the field entry. 20409 */ 20410 extern int bcm_field_qualify_CapwapPayloadSOF_get( 20411 int unit, 20412 bcm_field_entry_t entry, 20413 uint8 *data, 20414 uint8 *mask); 20415 20416 /* 20417 * Set match criteria for bcmFieldQualifyCapwapPayloadDstMac 20418 * qualifier in the field entry. 20419 */ 20420 extern int bcm_field_qualify_CapwapPayloadDstMac( 20421 int unit, 20422 bcm_field_entry_t entry, 20423 bcm_mac_t data, 20424 bcm_mac_t mask); 20425 20426 /* 20427 * Get match criteria for CapwapPayloadDstMac 20428 * qualifier from the field entry. 20429 */ 20430 extern int bcm_field_qualify_CapwapPayloadDstMac_get( 20431 int unit, 20432 bcm_field_entry_t entry, 20433 bcm_mac_t *data, 20434 bcm_mac_t *mask); 20435 20436 /* 20437 * Set match criteria for bcmFieldQualifyCapwapPayloadSrcMac 20438 * qualifier in the field entry. 20439 */ 20440 extern int bcm_field_qualify_CapwapPayloadSrcMac( 20441 int unit, 20442 bcm_field_entry_t entry, 20443 bcm_mac_t data, 20444 bcm_mac_t mask); 20445 20446 /* 20447 * Get match criteria for bcmFieldQualifyCapwapPayloadSrcMac 20448 * qualifier from the field entry. 20449 */ 20450 extern int bcm_field_qualify_CapwapPayloadSrcMac_get( 20451 int unit, 20452 bcm_field_entry_t entry, 20453 bcm_mac_t *data, 20454 bcm_mac_t *mask); 20455 20456 /* 20457 * Configure match criteria for bcmFieldQualifyCapwapPayloadEtherType 20458 * qualifier from the field entry. 20459 */ 20460 extern int bcm_field_qualify_CapwapPayloadEtherType( 20461 int unit, 20462 bcm_field_entry_t entry, 20463 uint16 data, 20464 uint16 mask); 20465 20466 /* 20467 * Get match criteria for bcmFieldQualifyCapwapPayloadEtherType 20468 * qualifier from the field entry. 20469 */ 20470 extern int bcm_field_qualify_CapwapPayloadEtherType_get( 20471 int unit, 20472 bcm_field_entry_t entry, 20473 uint16 *data, 20474 uint16 *mask); 20475 20476 /* 20477 * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlan 20478 * qualifier in the field entry. 20479 */ 20480 extern int bcm_field_qualify_CapwapPayloadOuterVlan( 20481 int unit, 20482 bcm_field_entry_t entry, 20483 bcm_vlan_t data, 20484 bcm_vlan_t mask); 20485 20486 /* 20487 * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlan 20488 * qualifier from the field entry. 20489 */ 20490 extern int bcm_field_qualify_CapwapPayloadOuterVlan_get( 20491 int unit, 20492 bcm_field_entry_t entry, 20493 bcm_vlan_t *data, 20494 bcm_vlan_t *mask); 20495 20496 /* 20497 * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanId 20498 * qualifier in the field entry. 20499 */ 20500 extern int bcm_field_qualify_CapwapPayloadOuterVlanId( 20501 int unit, 20502 bcm_field_entry_t entry, 20503 bcm_vlan_t data, 20504 bcm_vlan_t mask); 20505 20506 /* 20507 * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanId 20508 * qualifier from the field entry. 20509 */ 20510 extern int bcm_field_qualify_CapwapPayloadOuterVlanId_get( 20511 int unit, 20512 bcm_field_entry_t entry, 20513 bcm_vlan_t *data, 20514 bcm_vlan_t *mask); 20515 20516 /* 20517 * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanPri 20518 * qualifier in the field entry. 20519 */ 20520 extern int bcm_field_qualify_CapwapPayloadOuterVlanPri( 20521 int unit, 20522 bcm_field_entry_t entry, 20523 uint8 data, 20524 uint8 mask); 20525 20526 /* 20527 * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanPri 20528 * qualifier from the field entry. 20529 */ 20530 extern int bcm_field_qualify_CapwapPayloadOuterVlanPri_get( 20531 int unit, 20532 bcm_field_entry_t entry, 20533 uint8 *data, 20534 uint8 *mask); 20535 20536 /* 20537 * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanCfi 20538 * qualifier in the field entry. 20539 */ 20540 extern int bcm_field_qualify_CapwapPayloadOuterVlanCfi( 20541 int unit, 20542 bcm_field_entry_t entry, 20543 uint8 data, 20544 uint8 mask); 20545 20546 /* 20547 * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanCfi_get 20548 * qualifier from the field entry. 20549 */ 20550 extern int bcm_field_qualify_CapwapPayloadOuterVlanCfi_get( 20551 int unit, 20552 bcm_field_entry_t entry, 20553 uint8 *data, 20554 uint8 *mask); 20555 20556 /* 20557 * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlan 20558 * qualifier in the field entry. 20559 */ 20560 extern int bcm_field_qualify_CapwapPayloadInnerVlan( 20561 int unit, 20562 bcm_field_entry_t entry, 20563 bcm_vlan_t data, 20564 bcm_vlan_t mask); 20565 20566 /* 20567 * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlan 20568 * qualifier from the field entry. 20569 */ 20570 extern int bcm_field_qualify_CapwapPayloadInnerVlan_get( 20571 int unit, 20572 bcm_field_entry_t entry, 20573 bcm_vlan_t *data, 20574 bcm_vlan_t *mask); 20575 20576 /* 20577 * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanId 20578 * qualifier in the field entry. 20579 */ 20580 extern int bcm_field_qualify_CapwapPayloadInnerVlanId( 20581 int unit, 20582 bcm_field_entry_t entry, 20583 bcm_vlan_t data, 20584 bcm_vlan_t mask); 20585 20586 /* 20587 * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanId 20588 * qualifier from the field entry. 20589 */ 20590 extern int bcm_field_qualify_CapwapPayloadInnerVlanId_get( 20591 int unit, 20592 bcm_field_entry_t entry, 20593 bcm_vlan_t *data, 20594 bcm_vlan_t *mask); 20595 20596 /* 20597 * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanPri 20598 * qualifier in the field entry. 20599 */ 20600 extern int bcm_field_qualify_CapwapPayloadInnerVlanPri( 20601 int unit, 20602 bcm_field_entry_t entry, 20603 uint8 data, 20604 uint8 mask); 20605 20606 /* 20607 * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanPri 20608 * qualifier from the field entry. 20609 */ 20610 extern int bcm_field_qualify_CapwapPayloadInnerVlanPri_get( 20611 int unit, 20612 bcm_field_entry_t entry, 20613 uint8 *data, 20614 uint8 *mask); 20615 20616 /* 20617 * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanCfi 20618 * qualifier in the field entry. 20619 */ 20620 extern int bcm_field_qualify_CapwapPayloadInnerVlanCfi( 20621 int unit, 20622 bcm_field_entry_t entry, 20623 uint8 data, 20624 uint8 mask); 20625 20626 /* 20627 * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanCfi_get 20628 * qualifier from the field entry. 20629 */ 20630 extern int bcm_field_qualify_CapwapPayloadInnerVlanCfi_get( 20631 int unit, 20632 bcm_field_entry_t entry, 20633 uint8 *data, 20634 uint8 *mask); 20635 20636 /* 20637 * Set match criteria for bcmFieldQualifyCapwapPayloadVlanFormat 20638 * qualifier in the field entry. 20639 */ 20640 extern int bcm_field_qualify_CapwapPayloadVlanFormat( 20641 int unit, 20642 bcm_field_entry_t entry, 20643 uint8 data, 20644 uint8 mask); 20645 20646 /* 20647 * Get match criteria for bcmFieldQualifyCapwapPayloadVlanFormat 20648 * qualifier from the field entry. 20649 */ 20650 extern int bcm_field_qualify_CapwapPayloadVlanFormat_get( 20651 int unit, 20652 bcm_field_entry_t entry, 20653 uint8 *data, 20654 uint8 *mask); 20655 20656 /* bcm_field_qualify_CapwapPayloadSip */ 20657 extern int bcm_field_qualify_CapwapPayloadSip( 20658 int unit, 20659 bcm_field_entry_t entry, 20660 bcm_ip_t data, 20661 bcm_ip_t mask); 20662 20663 /* bcm_field_qualify_CapwapPayloadDip */ 20664 extern int bcm_field_qualify_CapwapPayloadDip( 20665 int unit, 20666 bcm_field_entry_t entry, 20667 bcm_ip_t data, 20668 bcm_ip_t mask); 20669 20670 /* 20671 * Get match criteria for bcmFieldQualifyCapwapPayloadSip 20672 * qualifier from the field entry. 20673 */ 20674 extern int bcm_field_qualify_CapwapPayloadSip_get( 20675 int unit, 20676 bcm_field_entry_t entry, 20677 bcm_ip_t *data, 20678 bcm_ip_t *mask); 20679 20680 /* 20681 * Get match criteria for bcmFieldQualifyCapwapPayloadDip 20682 * qualifier from the field entry. 20683 */ 20684 extern int bcm_field_qualify_CapwapPayloadDip_get( 20685 int unit, 20686 bcm_field_entry_t entry, 20687 bcm_ip_t *data, 20688 bcm_ip_t *mask); 20689 20690 /* bcm_field_qualify_CapwapPayloadSip6 */ 20691 extern int bcm_field_qualify_CapwapPayloadSip6( 20692 int unit, 20693 bcm_field_entry_t entry, 20694 bcm_ip6_t data, 20695 bcm_ip6_t mask); 20696 20697 /* bcm_field_qualify_CapwapPayloadDip6 */ 20698 extern int bcm_field_qualify_CapwapPayloadDip6( 20699 int unit, 20700 bcm_field_entry_t entry, 20701 bcm_ip6_t data, 20702 bcm_ip6_t mask); 20703 20704 /* 20705 * Get match criteria for bcmFieldQualifyCapwapPayloadSip6 20706 * qualifier from the field entry. 20707 */ 20708 extern int bcm_field_qualify_CapwapPayloadSip6_get( 20709 int unit, 20710 bcm_field_entry_t entry, 20711 bcm_ip6_t *data, 20712 bcm_ip6_t *mask); 20713 20714 /* 20715 * Get match criteria for bcmFieldQualifyCapwapPayloadDip6 20716 * qualifier from the field entry. 20717 */ 20718 extern int bcm_field_qualify_CapwapPayloadDip6_get( 20719 int unit, 20720 bcm_field_entry_t entry, 20721 bcm_ip6_t *data, 20722 bcm_ip6_t *mask); 20723 20724 /* 20725 * Set match criteria for bcmFieldQualifyCapwapPayloadIpProtocol 20726 * qualifier in the field entry. 20727 */ 20728 extern int bcm_field_qualify_CapwapPayloadIpProtocol( 20729 int unit, 20730 bcm_field_entry_t entry, 20731 uint8 data, 20732 uint8 mask); 20733 20734 /* 20735 * Get match criteria for bcmFieldQualifyCapwapPayloadIpProtocol_get 20736 * qualifier from the field entry. 20737 */ 20738 extern int bcm_field_qualify_CapwapPayloadIpProtocol_get( 20739 int unit, 20740 bcm_field_entry_t entry, 20741 uint8 *data, 20742 uint8 *mask); 20743 20744 /* 20745 * Set match criteria for bcmFieldQualifyCapwapPayloadTos 20746 * qualifier in the field entry. 20747 */ 20748 extern int bcm_field_qualify_CapwapPayloadTos( 20749 int unit, 20750 bcm_field_entry_t entry, 20751 uint8 data, 20752 uint8 mask); 20753 20754 /* 20755 * Get match criteria for bcmFieldQualifyCapwapPayloadTos_get 20756 * qualifier from the field entry. 20757 */ 20758 extern int bcm_field_qualify_CapwapPayloadTos_get( 20759 int unit, 20760 bcm_field_entry_t entry, 20761 uint8 *data, 20762 uint8 *mask); 20763 20764 /* bcm_field_qualify_CapwapPayloadL4SrcPort */ 20765 extern int bcm_field_qualify_CapwapPayloadL4SrcPort( 20766 int unit, 20767 bcm_field_entry_t entry, 20768 bcm_l4_port_t data, 20769 bcm_l4_port_t mask); 20770 20771 /* bcm_field_qualify_CapwapPayloadL4DstPort */ 20772 extern int bcm_field_qualify_CapwapPayloadL4DstPort( 20773 int unit, 20774 bcm_field_entry_t entry, 20775 bcm_l4_port_t data, 20776 bcm_l4_port_t mask); 20777 20778 /* 20779 * Get match criteria for bcmFieldQualifyCapwapPayloadL4SrcPort 20780 * qualifier from the field entry. 20781 */ 20782 extern int bcm_field_qualify_CapwapPayloadL4SrcPort_get( 20783 int unit, 20784 bcm_field_entry_t entry, 20785 bcm_l4_port_t *data, 20786 bcm_l4_port_t *mask); 20787 20788 /* 20789 * Get match criteria for bcmFieldQualifyCapwapPayloadL4DstPort 20790 * qualifier from the field entry. 20791 */ 20792 extern int bcm_field_qualify_CapwapPayloadL4DstPort_get( 20793 int unit, 20794 bcm_field_entry_t entry, 20795 bcm_l4_port_t *data, 20796 bcm_l4_port_t *mask); 20797 20798 /* 20799 * Set match criteria for bcmFieldQualifyTafEnable 20800 * qualifier in the field entry. 20801 */ 20802 extern int bcm_field_qualify_TafEnable( 20803 int unit, 20804 bcm_field_entry_t entry, 20805 uint8 enable); 20806 20807 /* 20808 * Set match criteria for bcmFieldQualifyTafGateId 20809 * qualifier in the field entry. 20810 */ 20811 extern int bcm_field_qualify_TafGateId( 20812 int unit, 20813 bcm_field_entry_t entry, 20814 uint32 data, 20815 uint32 mask); 20816 20817 /* 20818 * Set match criteria for bcmFieldQualifyTafGateState 20819 * qualifier in the field entry. 20820 */ 20821 extern int bcm_field_qualify_TafGateState( 20822 int unit, 20823 bcm_field_entry_t entry, 20824 uint8 state); 20825 20826 /* 20827 * Set match criteria for bcmFieldQualifyTafCosProfile 20828 * qualifier in the field entry. 20829 */ 20830 extern int bcm_field_qualify_TafCosProfile( 20831 int unit, 20832 bcm_field_entry_t entry, 20833 uint32 data, 20834 uint32 mask); 20835 20836 /* 20837 * Get match criteria for bcmFieldQualifyTafEnable 20838 * qualifier from the field entry. 20839 */ 20840 extern int bcm_field_qualify_TafEnable_get( 20841 int unit, 20842 bcm_field_entry_t entry, 20843 uint8 *enable); 20844 20845 /* 20846 * Get match criteria for bcmFieldQualifyTafGateId 20847 * qualifier from the field entry. 20848 */ 20849 extern int bcm_field_qualify_TafGateId_get( 20850 int unit, 20851 bcm_field_entry_t entry, 20852 uint32 *data, 20853 uint32 *mask); 20854 20855 /* 20856 * Get match criteria for bcmFieldQualifyTafGateState 20857 * qualifier from the field entry. 20858 */ 20859 extern int bcm_field_qualify_TafGateState_get( 20860 int unit, 20861 bcm_field_entry_t entry, 20862 uint8 *state); 20863 20864 /* 20865 * Get match criteria for bcmFieldQualifyTafCosProfile 20866 * qualifier from the field entry. 20867 */ 20868 extern int bcm_field_qualify_TafCosProfile_get( 20869 int unit, 20870 bcm_field_entry_t entry, 20871 uint32 *data, 20872 uint32 *mask); 20873 20874 /* 20875 * Set match criteria for bcmFieldQualifyCapwapPayloadL3HdrParseable 20876 * qualifier in the field entry. 20877 */ 20878 extern int bcm_field_qualify_CapwapPayloadL3HdrParseable( 20879 int unit, 20880 bcm_field_entry_t entry, 20881 uint8 data, 20882 uint8 mask); 20883 20884 /* 20885 * Get match criteria for bcmFieldQualifyCapwapPayloadL3HdrParseable_get 20886 * qualifier from the field entry. 20887 */ 20888 extern int bcm_field_qualify_CapwapPayloadL3HdrParseable_get( 20889 int unit, 20890 bcm_field_entry_t entry, 20891 uint8 *data, 20892 uint8 *mask); 20893 20894 /* 20895 * Set match criteria for bcmFieldQualifyCapwapPayloadL4HdrParseable 20896 * qualifier in the field entry. 20897 */ 20898 extern int bcm_field_qualify_CapwapPayloadL4HdrParseable( 20899 int unit, 20900 bcm_field_entry_t entry, 20901 uint8 data, 20902 uint8 mask); 20903 20904 /* 20905 * Get match criteria for bcmFieldQualifyCapwapPayloadL4HdrParseable_get 20906 * qualifier from the field entry. 20907 */ 20908 extern int bcm_field_qualify_CapwapPayloadL4HdrParseable_get( 20909 int unit, 20910 bcm_field_entry_t entry, 20911 uint8 *data, 20912 uint8 *mask); 20913 20914 /* 20915 * Set match criteria for bcmFieldQualifyL2PayLoad 20916 * qualifier in the field entry. 20917 */ 20918 extern int bcm_field_qualify_L2PayLoad( 20919 int unit, 20920 bcm_field_entry_t entry, 20921 uint32 length, 20922 const uint8 *data, 20923 const uint8 *mask); 20924 20925 /* 20926 * Get match criteria for bcmFieldQualifyL2PayLoad 20927 * qualifier from the field entry. 20928 */ 20929 extern int bcm_field_qualify_L2PayLoad_get( 20930 int unit, 20931 bcm_field_entry_t entry, 20932 uint32 length, 20933 uint8 *data, 20934 uint8 *mask); 20935 20936 /* Set match criteria to qualify Rx Down Mep SAT terminated hit status. */ 20937 extern int bcm_field_qualify_DownMepSatTerminated( 20938 int unit, 20939 bcm_field_entry_t entry, 20940 uint8 data, 20941 uint8 mask); 20942 20943 /* Get match criteria for Rx Down Mep SAT terminated hit status. */ 20944 extern int bcm_field_qualify_DownMepSatTerminated_get( 20945 int unit, 20946 bcm_field_entry_t entry, 20947 uint8 *data, 20948 uint8 *mask); 20949 20950 /* Set match criteria for VLAN STG STP states. */ 20951 extern int bcm_field_qualify_StpState( 20952 int unit, 20953 bcm_field_entry_t entry, 20954 uint8 data); 20955 20956 /* Get match criteria for VLAN STG STP states. */ 20957 extern int bcm_field_qualify_StpState_get( 20958 int unit, 20959 bcm_field_entry_t entry, 20960 uint8 *data); 20961 20962 #endif /* BCM_HIDE_DISPATCHABLE */ 20963 20964 /* VLAN STG STP States (for bcm_field_qualify_StgState) */ 20965 #define BCM_FIELD_STG_STP_DISABLE 0x1 /* Disabled state */ 20966 #define BCM_FIELD_STG_STP_BLOCK 0x2 /* Blocked state */ 20967 #define BCM_FIELD_STG_STP_LEARN 0x4 /* Learn state */ 20968 #define BCM_FIELD_STG_STP_FORWARD 0x8 /* Forward state */ 20969 20970 #ifndef BCM_HIDE_DISPATCHABLE 20971 20972 /* 20973 * Set match criteria for bcmFieldQualifyHiGigMirrorOrSwitchPkt 20974 * qualifier in the field entry. 20975 */ 20976 extern int bcm_field_qualify_HiGigMirrorOrSwitchPkt( 20977 int unit, 20978 bcm_field_entry_t entry, 20979 uint8 data, 20980 uint8 mask); 20981 20982 /* 20983 * Get match criteria for bcmFieldQualifyHiGigMirrorOrSwitchPkt 20984 * qualifier from the field entry. 20985 */ 20986 extern int bcm_field_qualify_HiGigMirrorOrSwitchPkt_get( 20987 int unit, 20988 bcm_field_entry_t entry, 20989 uint8 *data, 20990 uint8 *mask); 20991 20992 /* 20993 * Set match criteria for bcmFieldQualifyHiGigMplsPkt 20994 * qualifier in the field entry. 20995 */ 20996 extern int bcm_field_qualify_HiGigMplsPkt( 20997 int unit, 20998 bcm_field_entry_t entry, 20999 uint8 data, 21000 uint8 mask); 21001 21002 /* 21003 * Get match criteria for bcmFieldQualifyHiGigMplsPkt 21004 * qualifier from the field entry. 21005 */ 21006 extern int bcm_field_qualify_HiGigMplsPkt_get( 21007 int unit, 21008 bcm_field_entry_t entry, 21009 uint8 *data, 21010 uint8 *mask); 21011 21012 /* 21013 * Set match criteria for bcmFieldQualifyHiGigLabelType 21014 * qualifier in the field entry. 21015 */ 21016 extern int bcm_field_qualify_HiGigLabelType( 21017 int unit, 21018 bcm_field_entry_t entry, 21019 uint8 data, 21020 uint8 mask); 21021 21022 /* 21023 * Get match criteria for bcmFieldQualifyHiGigLabelType 21024 * qualifier from the field entry. 21025 */ 21026 extern int bcm_field_qualify_HiGigLabelType_get( 21027 int unit, 21028 bcm_field_entry_t entry, 21029 uint8 *data, 21030 uint8 *mask); 21031 21032 /* 21033 * Set match criteria for bcmFieldQualifyHiGigForwardingType 21034 * qualifier in the field entry. 21035 */ 21036 extern int bcm_field_qualify_HiGigForwardingType( 21037 int unit, 21038 bcm_field_entry_t entry, 21039 bcm_field_HiGigForwardingType_t type); 21040 21041 /* 21042 * Get match criteria for bcmFieldQualifyHiGigForwardingType 21043 * qualifier from the field entry. 21044 */ 21045 extern int bcm_field_qualify_HiGigForwardingType_get( 21046 int unit, 21047 bcm_field_entry_t entry, 21048 bcm_field_HiGigForwardingType_t *type); 21049 21050 /* 21051 * Set match criteria for bcmFieldQualifyHiGigDoNotFlags 21052 * qualifier in the field entry. 21053 */ 21054 extern int bcm_field_qualify_HiGigDoNotFlags( 21055 int unit, 21056 bcm_field_entry_t entry, 21057 uint8 data, 21058 uint8 mask); 21059 21060 /* 21061 * Get match criteria for bcmFieldQualifyHiGigDoNotFlags 21062 * qualifier from the field entry. 21063 */ 21064 extern int bcm_field_qualify_HiGigDoNotFlags_get( 21065 int unit, 21066 bcm_field_entry_t entry, 21067 uint8 *data, 21068 uint8 *mask); 21069 21070 /* 21071 * Set match criteria for bcmFieldQualifyHiGigPreserveFlags 21072 * qualifier in the field entry. 21073 */ 21074 extern int bcm_field_qualify_HiGigPreserveFlags( 21075 int unit, 21076 bcm_field_entry_t entry, 21077 uint8 data, 21078 uint8 mask); 21079 21080 /* 21081 * Get match criteria for bcmFieldQualifyHiGigPreserveFlags 21082 * qualifier from the field entry. 21083 */ 21084 extern int bcm_field_qualify_HiGigPreserveFlags_get( 21085 int unit, 21086 bcm_field_entry_t entry, 21087 uint8 *data, 21088 uint8 *mask); 21089 21090 /* 21091 * Set match criteria for bcmFieldQualifyHiGigVpPreserveFlags 21092 * qualifier in the field entry. 21093 */ 21094 extern int bcm_field_qualify_HiGigVpPreserveFlags( 21095 int unit, 21096 bcm_field_entry_t entry, 21097 uint8 data, 21098 uint8 mask); 21099 21100 /* 21101 * Get match criteria for bcmFieldQualifyHiGigVpPreserveFlags 21102 * qualifier from the field entry. 21103 */ 21104 extern int bcm_field_qualify_HiGigVpPreserveFlags_get( 21105 int unit, 21106 bcm_field_entry_t entry, 21107 uint8 *data, 21108 uint8 *mask); 21109 21110 /* 21111 * Set match criteria for bcmFieldQualifyHiGigOffloadEngineDeferredFlags 21112 * qualifier in the field entry. 21113 */ 21114 extern int bcm_field_qualify_HiGigOffloadEngineDeferredFlags( 21115 int unit, 21116 bcm_field_entry_t entry, 21117 uint8 data, 21118 uint8 mask); 21119 21120 /* 21121 * Get match criteria for bcmFieldQualifyHiGigOffloadEngineDeferredFlags 21122 * qualifier from the field entry. 21123 */ 21124 extern int bcm_field_qualify_HiGigOffloadEngineDeferredFlags_get( 21125 int unit, 21126 bcm_field_entry_t entry, 21127 uint8 *data, 21128 uint8 *mask); 21129 21130 /* 21131 * Set match criteria for bcmFieldQualifyHiGigOffloadEngineVxltStatus 21132 * qualifier in the field entry. 21133 */ 21134 extern int bcm_field_qualify_HiGigOffloadEngineVxltStatus( 21135 int unit, 21136 bcm_field_entry_t entry, 21137 uint8 data, 21138 uint8 mask); 21139 21140 /* 21141 * Get match criteria for bcmFieldQualifyHiGigOffloadEngineVxltStatus 21142 * qualifier from the field entry. 21143 */ 21144 extern int bcm_field_qualify_HiGigOffloadEngineVxltStatus_get( 21145 int unit, 21146 bcm_field_entry_t entry, 21147 uint8 *data, 21148 uint8 *mask); 21149 21150 /* 21151 * Set match criteria for bcmFieldQualifyHiGigOffloadEngineSrcType 21152 * qualifier in the field entry. 21153 */ 21154 extern int bcm_field_qualify_HiGigOffloadEngineSrcType( 21155 int unit, 21156 bcm_field_entry_t entry, 21157 uint8 data, 21158 uint8 mask); 21159 21160 /* 21161 * Get match criteria for bcmFieldQualifyHiGigOffloadEngineSrcType 21162 * qualifier from the field entry. 21163 */ 21164 extern int bcm_field_qualify_HiGigOffloadEngineSrcType_get( 21165 int unit, 21166 bcm_field_entry_t entry, 21167 uint8 *data, 21168 uint8 *mask); 21169 21170 /* 21171 * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDscp 21172 * qualifier in the field entry. 21173 */ 21174 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDscp( 21175 int unit, 21176 bcm_field_entry_t entry, 21177 uint8 data, 21178 uint8 mask); 21179 21180 /* 21181 * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDscp 21182 * qualifier from the field entry. 21183 */ 21184 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDscp_get( 21185 int unit, 21186 bcm_field_entry_t entry, 21187 uint8 *data, 21188 uint8 *mask); 21189 21190 /* 21191 * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDot1p 21192 * qualifier in the field entry. 21193 */ 21194 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDot1p( 21195 int unit, 21196 bcm_field_entry_t entry, 21197 uint8 data, 21198 uint8 mask); 21199 21200 /* 21201 * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDot1p 21202 * qualifier from the field entry. 21203 */ 21204 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDot1p_get( 21205 int unit, 21206 bcm_field_entry_t entry, 21207 uint8 *data, 21208 uint8 *mask); 21209 21210 /* 21211 * Set match criteria for bcmFieldQualifyHiGigExtendedHeaderPresent 21212 * qualifier in the field entry. 21213 */ 21214 extern int bcm_field_qualify_HiGigExtendedHeaderPresent( 21215 int unit, 21216 bcm_field_entry_t entry, 21217 uint8 data, 21218 uint8 mask); 21219 21220 /* 21221 * Get match criteria for bcmFieldQualifyHiGigExtendedHeaderPresent 21222 * qualifier from the field entry. 21223 */ 21224 extern int bcm_field_qualify_HiGigExtendedHeaderPresent_get( 21225 int unit, 21226 bcm_field_entry_t entry, 21227 uint8 *data, 21228 uint8 *mask); 21229 21230 /* 21231 * Set match criteria for bcmFieldQualifyHiGigVpLagFailoverPacket 21232 * qualifier in the field entry. 21233 */ 21234 extern int bcm_field_qualify_HiGigVpLagFailoverPacket( 21235 int unit, 21236 bcm_field_entry_t entry, 21237 uint8 data, 21238 uint8 mask); 21239 21240 /* 21241 * Get match criteria for bcmFieldQualifyHiGigVpLagFailoverPacket 21242 * qualifier from the field entry. 21243 */ 21244 extern int bcm_field_qualify_HiGigVpLagFailoverPacket_get( 21245 int unit, 21246 bcm_field_entry_t entry, 21247 uint8 *data, 21248 uint8 *mask); 21249 21250 #endif /* BCM_HIDE_DISPATCHABLE */ 21251 21252 /* Initialize the Copy To CPU Field Config structure. */ 21253 extern void bcm_field_copytocpu_config_t_init( 21254 bcm_field_CopyToCpu_config_t *CopyToCpu_config); 21255 21256 #ifndef BCM_HIDE_DISPATCHABLE 21257 21258 /* 21259 * Configures the copy to CPU action based on the parameters in 21260 * Copy To CPU Field Config structure. 21261 */ 21262 extern int bcm_field_action_copytocpu_config_set( 21263 int unit, 21264 bcm_field_entry_t entry, 21265 bcm_field_CopyToCpu_config_t CopyToCpu_config); 21266 21267 /* 21268 * Gets the configured copy to CPU action parameters to 21269 * Copy To CPU Field Config structure. 21270 */ 21271 extern int bcm_field_action_copytocpu_config_get( 21272 int unit, 21273 bcm_field_entry_t entry, 21274 bcm_field_CopyToCpu_config_t *CopyToCpu_config); 21275 21276 #endif /* BCM_HIDE_DISPATCHABLE */ 21277 21278 /* Initialize the Redirect Field Config structure. */ 21279 extern void bcm_field_redirect_config_t_init( 21280 bcm_field_redirect_config_t *redirect_config); 21281 21282 #ifndef BCM_HIDE_DISPATCHABLE 21283 21284 /* 21285 * Configures the Redirect action based on the parameters in 21286 * Redirect Field Config structure. 21287 */ 21288 extern int bcm_field_action_redirect_config_set( 21289 int unit, 21290 bcm_field_entry_t entry, 21291 bcm_field_redirect_config_t redirect_config); 21292 21293 /* 21294 * Gets the configured Redirect action parameters to 21295 * Redirect Field Config structure. 21296 */ 21297 extern int bcm_field_action_redirect_config_get( 21298 int unit, 21299 bcm_field_entry_t entry, 21300 bcm_field_redirect_config_t *redirect_config); 21301 21302 /* 21303 * Set match criteria for bcmFieldQualifyTosLower4Bits 21304 * qualifier in the field entry. 21305 */ 21306 extern int bcm_field_qualify_TosLower4Bits( 21307 int unit, 21308 bcm_field_entry_t entry, 21309 uint8 data, 21310 uint8 mask); 21311 21312 /* 21313 * Get match criteria for bcmFieldQualifyTosLower4Bits 21314 * qualifier from the field entry. 21315 */ 21316 extern int bcm_field_qualify_TosLower4Bits_get( 21317 int unit, 21318 bcm_field_entry_t entry, 21319 uint8 *data, 21320 uint8 *mask); 21321 21322 /* 21323 * Set match criteria for bcmFieldQualifyOamEgressClass2Vxlt 21324 * qualifier in the field entry. 21325 */ 21326 extern int bcm_field_qualify_OamEgressClass2Vxlt( 21327 int unit, 21328 bcm_field_entry_t entry, 21329 uint32 data, 21330 uint32 mask); 21331 21332 /* 21333 * Get match criteria for bcmFieldQualifyOamEgressClass2Vxlt 21334 * qualifier from the field entry. 21335 */ 21336 extern int bcm_field_qualify_OamEgressClass2Vxlt_get( 21337 int unit, 21338 bcm_field_entry_t entry, 21339 uint32 *data, 21340 uint32 *mask); 21341 21342 /* 21343 * Set match criteria for bcmFieldQualifyOamEgressVxltFirstHit 21344 * qualifier in the field entry. 21345 */ 21346 extern int bcm_field_qualify_OamEgressVxltFirstHit( 21347 int unit, 21348 bcm_field_entry_t entry, 21349 uint8 data, 21350 uint8 mask); 21351 21352 /* 21353 * Get match criteria for bcmFieldQualifyOamEgressVxltFirstHit 21354 * qualifier from the field entry. 21355 */ 21356 extern int bcm_field_qualify_OamEgressVxltFirstHit_get( 21357 int unit, 21358 bcm_field_entry_t entry, 21359 uint8 *data, 21360 uint8 *mask); 21361 21362 /* 21363 * Set match criteria for bcmFieldQualifyOamEgressVxltSecondHit 21364 * qualifier in the field entry. 21365 */ 21366 extern int bcm_field_qualify_OamEgressVxltSecondHit( 21367 int unit, 21368 bcm_field_entry_t entry, 21369 uint8 data, 21370 uint8 mask); 21371 21372 /* 21373 * Get match criteria for bcmFieldQualifyOamEgressVxltSecondHit 21374 * qualifier from the field entry. 21375 */ 21376 extern int bcm_field_qualify_OamEgressVxltSecondHit_get( 21377 int unit, 21378 bcm_field_entry_t entry, 21379 uint8 *data, 21380 uint8 *mask); 21381 21382 /* 21383 * Set match criteria for bcmFieldQualifyOamDownMEPLoopbackPacket 21384 * qualifier in the field entry. 21385 */ 21386 extern int bcm_field_qualify_OamDownMEPLoopbackPacket( 21387 int unit, 21388 bcm_field_entry_t entry, 21389 uint8 data, 21390 uint8 mask); 21391 21392 /* 21393 * Get match criteria for bcmFieldQualifyOamDownMEPLoopbackPacket 21394 * qualifier from the field entry. 21395 */ 21396 extern int bcm_field_qualify_OamDownMEPLoopbackPacket_get( 21397 int unit, 21398 bcm_field_entry_t entry, 21399 uint8 *data, 21400 uint8 *mask); 21401 21402 /* 21403 * Set match criteria for bcmFieldQualifyOamEgressPortUnicastDstMacHit 21404 * qualifier in the field entry. 21405 */ 21406 extern int bcm_field_qualify_OamEgressPortUnicastDstMacHit( 21407 int unit, 21408 bcm_field_entry_t entry, 21409 uint8 data, 21410 uint8 mask); 21411 21412 /* 21413 * Get match criteria for bcmFieldQualifyOamEgressPortUnicastDstMacHit 21414 * qualifier from the field entry. 21415 */ 21416 extern int bcm_field_qualify_OamEgressPortUnicastDstMacHit_get( 21417 int unit, 21418 bcm_field_entry_t entry, 21419 uint8 *data, 21420 uint8 *mask); 21421 21422 /* 21423 * Set match criteria for bcmFieldQualifyIngressDropEthernetOamControl 21424 * qualifier in the field entry. 21425 */ 21426 extern int bcm_field_qualify_IngressDropEthernetOamControl( 21427 int unit, 21428 bcm_field_entry_t entry, 21429 bcm_field_oam_drop_mep_type_t mep_type); 21430 21431 /* 21432 * Get match criteria for bcmFieldQualifyIngressDropEthernetOamControl 21433 * qualifier from the field entry. 21434 */ 21435 extern int bcm_field_qualify_IngressDropEthernetOamControl_get( 21436 int unit, 21437 bcm_field_entry_t entry, 21438 bcm_field_oam_drop_mep_type_t *mep_type); 21439 21440 /* 21441 * Set match criteria for bcmFieldQualifyIngressDropEthernetOamData 21442 * qualifier in the field entry. 21443 */ 21444 extern int bcm_field_qualify_IngressDropEthernetOamData( 21445 int unit, 21446 bcm_field_entry_t entry, 21447 bcm_field_oam_drop_mep_type_t mep_type); 21448 21449 /* 21450 * Get match criteria for bcmFieldQualifyIngressDropEthernetOamData 21451 * qualifier from the field entry. 21452 */ 21453 extern int bcm_field_qualify_IngressDropEthernetOamData_get( 21454 int unit, 21455 bcm_field_entry_t entry, 21456 bcm_field_oam_drop_mep_type_t *mep_type); 21457 21458 /* 21459 * Set match criteria for bcmFieldQualifyIngressDropMplsOamControl 21460 * qualifier in the field entry. 21461 */ 21462 extern int bcm_field_qualify_IngressDropMplsOamControl( 21463 int unit, 21464 bcm_field_entry_t entry, 21465 bcm_field_oam_drop_mep_type_t mep_type); 21466 21467 /* 21468 * Get match criteria for bcmFieldQualifyIngressDropMplsOamControl 21469 * qualifier from the field entry. 21470 */ 21471 extern int bcm_field_qualify_IngressDropMplsOamControl_get( 21472 int unit, 21473 bcm_field_entry_t entry, 21474 bcm_field_oam_drop_mep_type_t *mep_type); 21475 21476 /* 21477 * Set match criteria for bcmFieldQualifyIngressDropMplsOamData 21478 * qualifier in the field entry. 21479 */ 21480 extern int bcm_field_qualify_IngressDropMplsOamData( 21481 int unit, 21482 bcm_field_entry_t entry, 21483 bcm_field_oam_drop_mep_type_t mep_type); 21484 21485 /* 21486 * Get match criteria for bcmFieldQualifyIngressDropMplsOamData 21487 * qualifier from the field entry. 21488 */ 21489 extern int bcm_field_qualify_IngressDropMplsOamData_get( 21490 int unit, 21491 bcm_field_entry_t entry, 21492 bcm_field_oam_drop_mep_type_t *mep_type); 21493 21494 /* 21495 * Set match criteria for EgressClassVxlan 21496 * qualifier. 21497 */ 21498 extern int bcm_field_qualify_EgressClassVxlan( 21499 int unit, 21500 bcm_field_entry_t entry, 21501 uint16 data, 21502 uint16 mask); 21503 21504 /* 21505 * Get match criteria for EgressClassVxlan 21506 * qualifier. 21507 */ 21508 extern int bcm_field_qualify_EgressClassVxlan_get( 21509 int unit, 21510 bcm_field_entry_t entry, 21511 uint16 *data, 21512 uint16 *mask); 21513 21514 /* 21515 * Set match criteria for bcmFieldQualifyOamEgressEtherType 21516 * qualifier in the field entry. 21517 */ 21518 extern int bcm_field_qualify_OamEgressEtherType( 21519 int unit, 21520 bcm_field_entry_t entry, 21521 uint16 data); 21522 21523 /* 21524 * Get match criteria for bcmFieldQualifyOamEgressEtherType 21525 * qualifier from the field entry. 21526 */ 21527 extern int bcm_field_qualify_OamEgressEtherType_get( 21528 int unit, 21529 bcm_field_entry_t entry, 21530 uint16 *data); 21531 21532 /* 21533 * Set match criteria for bcmFieldQualifyOamEgressMulticastMacHit 21534 * qualifier in the field entry. 21535 */ 21536 extern int bcm_field_qualify_OamEgressMulticastMacHit( 21537 int unit, 21538 bcm_field_entry_t entry, 21539 uint8 data); 21540 21541 /* 21542 * Get match criteria for bcmFieldQualifyOamEgressMulticastMacHit 21543 * qualifier from the field entry. 21544 */ 21545 extern int bcm_field_qualify_OamEgressMulticastMacHit_get( 21546 int unit, 21547 bcm_field_entry_t entry, 21548 uint8 *data); 21549 21550 /* 21551 * Set match criteria for bcmFieldQualifyTrunkMemberSourceModuleId 21552 * qualifier in the field entry. 21553 */ 21554 extern int bcm_field_qualify_TrunkMemberSourceModuleId( 21555 int unit, 21556 bcm_field_entry_t entry, 21557 int data, 21558 int mask); 21559 21560 /* 21561 * Get match criteria for bcmFieldQualifyTrunkMemberSourceModuleId 21562 * qualifier from the field entry. 21563 */ 21564 extern int bcm_field_qualify_TrunkMemberSourceModuleId_get( 21565 int unit, 21566 bcm_field_entry_t entry, 21567 int *data, 21568 int *mask); 21569 21570 /* 21571 * Set match criteria for bcmFieldQualifyOamEgressClassSrcMac 21572 * qualifier in the field entry. 21573 */ 21574 extern int bcm_field_qualify_OamEgressClassSrcMac( 21575 int unit, 21576 bcm_field_entry_t entry, 21577 uint32 data, 21578 uint32 mask); 21579 21580 /* 21581 * Get match criteria for bcmFieldQualifyOamEgressClassSrcMac 21582 * qualifier from the field entry. 21583 */ 21584 extern int bcm_field_qualify_OamEgressClassSrcMac_get( 21585 int unit, 21586 bcm_field_entry_t entry, 21587 uint32 *data, 21588 uint32 *mask); 21589 21590 /* 21591 * Set match criteria for bcmFieldQualifyMyStation2Hit 21592 * qualifier in the field entry. 21593 */ 21594 extern int bcm_field_qualify_MyStation2Hit( 21595 int unit, 21596 bcm_field_entry_t entry, 21597 uint8 data, 21598 uint8 mask); 21599 21600 /* 21601 * Get match criteria for bcmFieldQualifyMyStation2Hit 21602 * qualifier from the field entry. 21603 */ 21604 extern int bcm_field_qualify_MyStation2Hit_get( 21605 int unit, 21606 bcm_field_entry_t entry, 21607 uint8 *data, 21608 uint8 *mask); 21609 21610 /* 21611 * Set match criteria for bcmFieldQualifyPreemptablePacket qualifier in 21612 * the field entry. 21613 */ 21614 extern int bcm_field_qualify_PreemptablePacket( 21615 int unit, 21616 bcm_field_entry_t entry, 21617 uint8 data, 21618 uint8 mask); 21619 21620 /* 21621 * Get match criteria for bcmFieldQualifyPreemptablePacket qualifier in 21622 * the field entry. 21623 */ 21624 extern int bcm_field_qualify_PreemptablePacket_get( 21625 int unit, 21626 bcm_field_entry_t entry, 21627 uint8 *data, 21628 uint8 *mask); 21629 21630 /* 21631 * Set match criteria for bcmFieldQualifyVxlanClassValid 21632 * qualifier in the field entry. 21633 */ 21634 extern int bcm_field_qualify_VxlanClassValid( 21635 int unit, 21636 bcm_field_entry_t entry, 21637 uint8 data, 21638 uint8 mask); 21639 21640 /* 21641 * Get match criteria for bcmFieldQualifyVxlanClassValid 21642 * qualifier from the field entry. 21643 */ 21644 extern int bcm_field_qualify_VxlanClassValid_get( 21645 int unit, 21646 bcm_field_entry_t entry, 21647 uint8 *data, 21648 uint8 *mask); 21649 21650 /* 21651 * Set match criteria for bcmFieldQualifyVxlanPacket 21652 * qualifier in the field entry. 21653 */ 21654 extern int bcm_field_qualify_VxlanPacket( 21655 int unit, 21656 bcm_field_entry_t entry, 21657 uint8 data, 21658 uint8 mask); 21659 21660 /* 21661 * Get match criteria for bcmFieldQualifyVxlanPacket 21662 * qualifier from the field entry. 21663 */ 21664 extern int bcm_field_qualify_VxlanPacket_get( 21665 int unit, 21666 bcm_field_entry_t entry, 21667 uint8 *data, 21668 uint8 *mask); 21669 21670 /* 21671 * Set match criteria for bcmFieldQualifyVxlanVnidVlanTranslateHit 21672 * qualifier in the field entry. 21673 */ 21674 extern int bcm_field_qualify_VxlanVnidVlanTranslateHit( 21675 int unit, 21676 bcm_field_entry_t entry, 21677 uint8 data, 21678 uint8 mask); 21679 21680 /* 21681 * Get match criteria for bcmFieldQualifyVxlanVnidVlanTranslateHit 21682 * qualifier from the field entry. 21683 */ 21684 extern int bcm_field_qualify_VxlanVnidVlanTranslateHit_get( 21685 int unit, 21686 bcm_field_entry_t entry, 21687 uint8 *data, 21688 uint8 *mask); 21689 21690 /* 21691 * Set match criteria for bcmFieldQualifyVxlanPayloadVlanFormat 21692 * qualifier in the field entry. 21693 */ 21694 extern int bcm_field_qualify_VxlanPayloadVlanFormat( 21695 int unit, 21696 bcm_field_entry_t entry, 21697 uint8 data, 21698 uint8 mask); 21699 21700 /* 21701 * Get match criteria for bcmFieldQualifyVxlanPayloadVlanFormat 21702 * qualifier from the field entry. 21703 */ 21704 extern int bcm_field_qualify_VxlanPayloadVlanFormat_get( 21705 int unit, 21706 bcm_field_entry_t entry, 21707 uint8 *data, 21708 uint8 *mask); 21709 21710 /* 21711 * Set match criteria for bcmFieldQualifyTunnelPayloadDstMac 21712 * qualifier in the field entry. 21713 */ 21714 extern int bcm_field_qualify_TunnelPayloadDstMac( 21715 int unit, 21716 bcm_field_entry_t entry, 21717 bcm_mac_t data, 21718 bcm_mac_t mask); 21719 21720 /* 21721 * Get match criteria for bcmFieldQualifyTunnelPayloadDstMac 21722 * qualifier from the field entry. 21723 */ 21724 extern int bcm_field_qualify_TunnelPayloadDstMac_get( 21725 int unit, 21726 bcm_field_entry_t entry, 21727 bcm_mac_t *data, 21728 bcm_mac_t *mask); 21729 21730 /* 21731 * Set match criteria for bcmFieldQualifyTunnelPayloadSrcMac 21732 * qualifier in the field entry. 21733 */ 21734 extern int bcm_field_qualify_TunnelPayloadSrcMac( 21735 int unit, 21736 bcm_field_entry_t entry, 21737 bcm_mac_t data, 21738 bcm_mac_t mask); 21739 21740 /* 21741 * Get match criteria for bcmFieldQualifyTunnelPayloadSrcMac 21742 * qualifier from the field entry. 21743 */ 21744 extern int bcm_field_qualify_TunnelPayloadSrcMac_get( 21745 int unit, 21746 bcm_field_entry_t entry, 21747 bcm_mac_t *data, 21748 bcm_mac_t *mask); 21749 21750 /* 21751 * Set match criteria for EgressClassTunnel 21752 * qualifier. 21753 */ 21754 extern int bcm_field_qualify_EgressClassTunnel( 21755 int unit, 21756 bcm_field_entry_t entry, 21757 uint16 data, 21758 uint16 mask); 21759 21760 /* 21761 * Get match criteria for EgressClassTunnel 21762 * qualifier. 21763 */ 21764 extern int bcm_field_qualify_EgressClassTunnel_get( 21765 int unit, 21766 bcm_field_entry_t entry, 21767 uint16 *data, 21768 uint16 *mask); 21769 21770 /* 21771 * Set match criteria for EgressClassL3InterfaceTunnel 21772 * qualifier. 21773 */ 21774 extern int bcm_field_qualify_EgressClassL3InterfaceTunnel( 21775 int unit, 21776 bcm_field_entry_t entry, 21777 uint16 data, 21778 uint16 mask); 21779 21780 /* 21781 * Get match criteria for EgressClassL3InterfaceTunnel 21782 * qualifier. 21783 */ 21784 extern int bcm_field_qualify_EgressClassL3InterfaceTunnel_get( 21785 int unit, 21786 bcm_field_entry_t entry, 21787 uint16 *data, 21788 uint16 *mask); 21789 21790 /* Add VLAN actions to a field entry. */ 21791 extern int bcm_field_action_vlan_actions_add( 21792 int unit, 21793 bcm_field_entry_t entry, 21794 bcm_field_action_t action, 21795 bcm_vlan_action_set_t *vlan_action_set); 21796 21797 /* Retrieve VLAN actions configured to a field entry. */ 21798 extern int bcm_field_action_vlan_actions_get( 21799 int unit, 21800 bcm_field_entry_t entry, 21801 bcm_field_action_t action, 21802 bcm_vlan_action_set_t *vlan_action_set); 21803 21804 /* 21805 * Set match criteria for bcmFieldQualifyTunnelPayloadEtherType 21806 * qualifier in the field entry. 21807 */ 21808 extern int bcm_field_qualify_TunnelPayloadEtherType( 21809 int unit, 21810 bcm_field_entry_t entry, 21811 uint16 data, 21812 uint16 mask); 21813 21814 /* 21815 * Get match criteria for bcmFieldQualifyTunnelPayloadEtherType 21816 * qualifier from the field entry. 21817 */ 21818 extern int bcm_field_qualify_TunnelPayloadEtherType_get( 21819 int unit, 21820 bcm_field_entry_t entry, 21821 uint16 *data, 21822 uint16 *mask); 21823 21824 /* 21825 * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlan 21826 * qualifier in the field entry. 21827 */ 21828 extern int bcm_field_qualify_TunnelPayloadOuterVlan( 21829 int unit, 21830 bcm_field_entry_t entry, 21831 bcm_vlan_t data, 21832 bcm_vlan_t mask); 21833 21834 /* 21835 * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlan 21836 * qualifier from the field entry. 21837 */ 21838 extern int bcm_field_qualify_TunnelPayloadOuterVlan_get( 21839 int unit, 21840 bcm_field_entry_t entry, 21841 bcm_vlan_t *data, 21842 bcm_vlan_t *mask); 21843 21844 /* 21845 * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanId 21846 * qualifier in the field entry. 21847 */ 21848 extern int bcm_field_qualify_TunnelPayloadOuterVlanId( 21849 int unit, 21850 bcm_field_entry_t entry, 21851 bcm_vlan_t data, 21852 bcm_vlan_t mask); 21853 21854 /* 21855 * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanId 21856 * qualifier from the field entry. 21857 */ 21858 extern int bcm_field_qualify_TunnelPayloadOuterVlanId_get( 21859 int unit, 21860 bcm_field_entry_t entry, 21861 bcm_vlan_t *data, 21862 bcm_vlan_t *mask); 21863 21864 /* 21865 * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanPri 21866 * qualifier in the field entry. 21867 */ 21868 extern int bcm_field_qualify_TunnelPayloadOuterVlanPri( 21869 int unit, 21870 bcm_field_entry_t entry, 21871 uint8 data, 21872 uint8 mask); 21873 21874 /* 21875 * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanPri 21876 * qualifier from the field entry. 21877 */ 21878 extern int bcm_field_qualify_TunnelPayloadOuterVlanPri_get( 21879 int unit, 21880 bcm_field_entry_t entry, 21881 uint8 *data, 21882 uint8 *mask); 21883 21884 /* 21885 * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanCfi 21886 * qualifier in the field entry. 21887 */ 21888 extern int bcm_field_qualify_TunnelPayloadOuterVlanCfi( 21889 int unit, 21890 bcm_field_entry_t entry, 21891 uint8 data, 21892 uint8 mask); 21893 21894 /* 21895 * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanCfi 21896 * qualifier from the field entry. 21897 */ 21898 extern int bcm_field_qualify_TunnelPayloadOuterVlanCfi_get( 21899 int unit, 21900 bcm_field_entry_t entry, 21901 uint8 *data, 21902 uint8 *mask); 21903 21904 /* 21905 * Set match criteria for bcmFieldQualifyTunnelPayloadSip 21906 * qualifier in the field entry. 21907 */ 21908 extern int bcm_field_qualify_TunnelPayloadSip( 21909 int unit, 21910 bcm_field_entry_t entry, 21911 bcm_ip_t data, 21912 bcm_ip_t mask); 21913 21914 /* 21915 * Set match criteria for bcmFieldQualifyTunnelPayloadDip 21916 * qualifier in the field entry. 21917 */ 21918 extern int bcm_field_qualify_TunnelPayloadDip( 21919 int unit, 21920 bcm_field_entry_t entry, 21921 bcm_ip_t data, 21922 bcm_ip_t mask); 21923 21924 /* 21925 * Get match criteria for bcmFieldQualifyTunnelPayloadSip 21926 * qualifier from the field entry. 21927 */ 21928 extern int bcm_field_qualify_TunnelPayloadSip_get( 21929 int unit, 21930 bcm_field_entry_t entry, 21931 bcm_ip_t *data, 21932 bcm_ip_t *mask); 21933 21934 /* 21935 * Get match criteria for bcmFieldQualifyTunnelPayloadDip 21936 * qualifier from the field entry. 21937 */ 21938 extern int bcm_field_qualify_TunnelPayloadDip_get( 21939 int unit, 21940 bcm_field_entry_t entry, 21941 bcm_ip_t *data, 21942 bcm_ip_t *mask); 21943 21944 /* 21945 * Set match criteria for bcmFieldQualifyTunnelPayloadSip6 21946 * qualifier in the field entry. 21947 */ 21948 extern int bcm_field_qualify_TunnelPayloadSip6( 21949 int unit, 21950 bcm_field_entry_t entry, 21951 bcm_ip6_t data, 21952 bcm_ip6_t mask); 21953 21954 /* 21955 * Set match criteria for bcmFieldQualifyTunnelPayloadDip6 21956 * qualifier in the field entry. 21957 */ 21958 extern int bcm_field_qualify_TunnelPayloadDip6( 21959 int unit, 21960 bcm_field_entry_t entry, 21961 bcm_ip6_t data, 21962 bcm_ip6_t mask); 21963 21964 /* 21965 * Get match criteria for bcmFieldQualifyTunnelPayloadSip6 21966 * qualifier from the field entry. 21967 */ 21968 extern int bcm_field_qualify_TunnelPayloadSip6_get( 21969 int unit, 21970 bcm_field_entry_t entry, 21971 bcm_ip6_t *data, 21972 bcm_ip6_t *mask); 21973 21974 /* 21975 * Get match criteria for bcmFieldQualifyTunnelPayloadDip6 21976 * qualifier from the field entry. 21977 */ 21978 extern int bcm_field_qualify_TunnelPayloadDip6_get( 21979 int unit, 21980 bcm_field_entry_t entry, 21981 bcm_ip6_t *data, 21982 bcm_ip6_t *mask); 21983 21984 /* 21985 * Set match criteria for bcmFieldQualifyTunnelPayloadIpProtocol 21986 * qualifier in the field entry. 21987 */ 21988 extern int bcm_field_qualify_TunnelPayloadIpProtocol( 21989 int unit, 21990 bcm_field_entry_t entry, 21991 uint8 data, 21992 uint8 mask); 21993 21994 /* 21995 * Get match criteria for bcmFieldQualifyTunnelPayloadIpProtocol 21996 * qualifier from the field entry. 21997 */ 21998 extern int bcm_field_qualify_TunnelPayloadIpProtocol_get( 21999 int unit, 22000 bcm_field_entry_t entry, 22001 uint8 *data, 22002 uint8 *mask); 22003 22004 /* 22005 * Get match criteria for bcmFieldQualifyTunnelPayloadL4SrcPort 22006 * qualifier in the field entry. 22007 */ 22008 extern int bcm_field_qualify_TunnelPayloadL4SrcPort( 22009 int unit, 22010 bcm_field_entry_t entry, 22011 bcm_l4_port_t data, 22012 bcm_l4_port_t mask); 22013 22014 /* 22015 * Get match criteria for bcmFieldQualifyTunnelPayloadL4DstPort 22016 * qualifier in the field entry. 22017 */ 22018 extern int bcm_field_qualify_TunnelPayloadL4DstPort( 22019 int unit, 22020 bcm_field_entry_t entry, 22021 bcm_l4_port_t data, 22022 bcm_l4_port_t mask); 22023 22024 /* 22025 * Get match criteria for bcmFieldQualifyTunnelPayloadL4SrcPort 22026 * qualifier from the field entry. 22027 */ 22028 extern int bcm_field_qualify_TunnelPayloadL4SrcPort_get( 22029 int unit, 22030 bcm_field_entry_t entry, 22031 bcm_l4_port_t *data, 22032 bcm_l4_port_t *mask); 22033 22034 /* 22035 * Get match criteria for bcmFieldQualifyTunnelPayloadL4DstPort 22036 * qualifier from the field entry. 22037 */ 22038 extern int bcm_field_qualify_TunnelPayloadL4DstPort_get( 22039 int unit, 22040 bcm_field_entry_t entry, 22041 bcm_l4_port_t *data, 22042 bcm_l4_port_t *mask); 22043 22044 /* Assign a class_id for given Source MAC Address of SAT packet */ 22045 extern int bcm_field_sat_macsa_add( 22046 int unit, 22047 bcm_mac_t mac, 22048 uint32 class_id); 22049 22050 /* Get class_id for given Source MAC Address of SAT packet */ 22051 extern int bcm_field_sat_macsa_get( 22052 int unit, 22053 bcm_mac_t mac, 22054 uint32 *class_id); 22055 22056 /* 22057 * Delete the class_id associated with given Source MAC Address of SAT 22058 * packet. 22059 */ 22060 extern int bcm_field_sat_macsa_delete( 22061 int unit, 22062 bcm_mac_t mac); 22063 22064 /* Delete all Source MAC Address entries of SAT packets. */ 22065 extern int bcm_field_sat_macsa_delete_all( 22066 int unit); 22067 22068 /* Map a presel id to a name */ 22069 extern int bcm_field_presel_config_set( 22070 int unit, 22071 bcm_field_presel_t presel_id, 22072 bcm_field_presel_config_t *presel_config); 22073 22074 /* Get name from presel id */ 22075 extern int bcm_field_presel_config_get( 22076 int unit, 22077 bcm_field_presel_t presel_id, 22078 bcm_field_presel_config_t *presel_config); 22079 22080 /* 22081 * Set match criteria for bcmFieldQualifyRoceBthOpcode qualifier in the 22082 * field entry 22083 */ 22084 extern int bcm_field_qualify_RoceBthOpcode( 22085 int unit, 22086 bcm_field_entry_t entry, 22087 uint8 data, 22088 uint8 mask); 22089 22090 /* 22091 * Get match criteria for bcmFieldQualifyRoceBthOpcode qualifier in the 22092 * field entry 22093 */ 22094 extern int bcm_field_qualify_RoceBthOpcode_get( 22095 int unit, 22096 bcm_field_entry_t entry, 22097 uint8 *data, 22098 uint8 *mask); 22099 22100 /* 22101 * Set match criteria for bcmFieldQualifyRoceBthPartitionKey qualifier in 22102 * the field entry 22103 */ 22104 extern int bcm_field_qualify_RoceBthPartitionKey( 22105 int unit, 22106 bcm_field_entry_t entry, 22107 uint16 data, 22108 uint16 mask); 22109 22110 /* 22111 * Get match criteria for bcmFieldQualifyRoceBthPartitionKey qualifier in 22112 * the field entry 22113 */ 22114 extern int bcm_field_qualify_RoceBthPartitionKey_get( 22115 int unit, 22116 bcm_field_entry_t entry, 22117 uint16 *data, 22118 uint16 *mask); 22119 22120 /* 22121 * Set match criteria for bcmFieldQualifyRoceBthDstQueuePair qualifier in 22122 * the field entry 22123 */ 22124 extern int bcm_field_qualify_RoceBthDstQueuePair( 22125 int unit, 22126 bcm_field_entry_t entry, 22127 uint32 data, 22128 uint32 mask); 22129 22130 /* 22131 * Get match criteria for bcmFieldQualifyRoceBthDstQueuePair qualifier in 22132 * the field entry 22133 */ 22134 extern int bcm_field_qualify_RoceBthDstQueuePair_get( 22135 int unit, 22136 bcm_field_entry_t entry, 22137 uint32 *data, 22138 uint32 *mask); 22139 22140 /* 22141 * Set match criteria for bcmFieldQualifyRoceBthFlags qualifier in the 22142 * field entry 22143 */ 22144 extern int bcm_field_qualify_RoceBthFlags( 22145 int unit, 22146 bcm_field_entry_t entry, 22147 uint8 data, 22148 uint8 mask); 22149 22150 /* 22151 * Get match criteria for bcmFieldQualifyRoceBthFlags qualifier in the 22152 * field entry 22153 */ 22154 extern int bcm_field_qualify_RoceBthFlags_get( 22155 int unit, 22156 bcm_field_entry_t entry, 22157 uint8 *data, 22158 uint8 *mask); 22159 22160 /* 22161 * Set match criteria for bcmFieldQualifyRoceVer1Pkt qualifier in the 22162 * field entry 22163 */ 22164 extern int bcm_field_qualify_RoceVer1Pkt( 22165 int unit, 22166 bcm_field_entry_t entry, 22167 uint8 data, 22168 uint8 mask); 22169 22170 /* 22171 * Get match criteria for bcmFieldQualifyRoceVer1Pkt qualifier in the 22172 * field entry 22173 */ 22174 extern int bcm_field_qualify_RoceVer1Pkt_get( 22175 int unit, 22176 bcm_field_entry_t entry, 22177 uint8 *data, 22178 uint8 *mask); 22179 22180 /* 22181 * Set match criteria for bcmFieldQualifyRoceVer2Pkt qualifier in the 22182 * field entry 22183 */ 22184 extern int bcm_field_qualify_RoceVer2Pkt( 22185 int unit, 22186 bcm_field_entry_t entry, 22187 uint8 data, 22188 uint8 mask); 22189 22190 /* 22191 * Get match criteria for bcmFieldQualifyRoceVer2Pkt qualifier in the 22192 * field entry 22193 */ 22194 extern int bcm_field_qualify_RoceVer2Pkt_get( 22195 int unit, 22196 bcm_field_entry_t entry, 22197 uint8 *data, 22198 uint8 *mask); 22199 22200 #endif /* BCM_HIDE_DISPATCHABLE */ 22201 22202 /* Initialize Field Presel Config structure */ 22203 extern void bcm_field_presel_config_t_init( 22204 bcm_field_presel_config_t *presel_config); 22205 22206 #ifndef BCM_HIDE_DISPATCHABLE 22207 22208 /* 22209 * This API Qualify on forwarding TTL. may be selected on tunnel basis to 22210 * be taken from the tunnel layer or forwarding layer. 22211 */ 22212 extern int bcm_field_qualify_GeneratedTtl( 22213 int unit, 22214 bcm_field_entry_t entry, 22215 uint32 data, 22216 uint32 mask); 22217 22218 /* 22219 * This API Qualify on forwarding TTL. may be selected on tunnel basis to 22220 * be taken from the tunnel layer or forwarding layer. 22221 */ 22222 extern int bcm_field_qualify_GeneratedTtl_get( 22223 int unit, 22224 bcm_field_entry_t entry, 22225 uint32 *data, 22226 uint32 *mask); 22227 22228 /* Set match criteria for bcmFieldQualifyIpMulticastCompatible */ 22229 extern int bcm_field_qualify_IpMulticastCompatible( 22230 int unit, 22231 bcm_field_entry_t entry, 22232 uint32 data, 22233 uint32 mask); 22234 22235 /* Set match criteria for bcmFieldQualifyIpMulticastCompatible_get */ 22236 extern int bcm_field_qualify_IpMulticastCompatible_get( 22237 int unit, 22238 bcm_field_entry_t entry, 22239 uint32 *data, 22240 uint32 *mask); 22241 22242 #endif /* BCM_HIDE_DISPATCHABLE */ 22243 22244 /* SR (Seamless Redundancy) port type */ 22245 typedef enum bcm_field_port_sr_type_e { 22246 bcmFieldPortSRTypeNone = 0, /* SR not supported on this port */ 22247 bcmFieldPortSRTypeEthernet = 1, /* Ethernet */ 22248 bcmFieldPortSRTypePrp = 2, /* PRP */ 22249 bcmFieldPortSRTypeHsr = 3, /* HSR */ 22250 bcmFieldPortSRTypeDot1cb = 4, /* 802.1CB */ 22251 bcmFieldPortSRTypeCount = 5 /* Always last. Not a usable value. */ 22252 } bcm_field_port_sr_type_t; 22253 22254 /* SR (Seamless Redundancy) port mode */ 22255 typedef enum bcm_field_sr_port_mode_e { 22256 bcmFieldSRPortModeDefault = 0, /* Default mode (custom value 0) */ 22257 bcmFieldSRPortModeInterworkingPrp = 1, /* It's a PRP port in an interworking 22258 box */ 22259 bcmFieldSRPortModeCustom1 = 2, /* Custom value 1 */ 22260 bcmFieldSRPortModeCustom2 = 3, /* Custom value 2 */ 22261 bcmFieldSRPortModeCustom3 = 4, /* Custom value 3 */ 22262 bcmFieldSRPortModeCustom4 = 5, /* Custom value 4 */ 22263 bcmFieldSRPortModeCustom5 = 6, /* Custom value 5 */ 22264 bcmFieldSRPortModeCustom6 = 7, /* Custom value 6 */ 22265 bcmFieldSRPortModeCount = 8 /* Always last. Not a usable value. */ 22266 } bcm_field_sr_port_mode_t; 22267 22268 /* SR (Seamless Redundancy) tag type */ 22269 typedef enum bcm_field_sr_tag_type_e { 22270 bcmFieldSRTagTypeNone = 0, /* No SR tag present in the packet */ 22271 bcmFieldSRTagTypeHsr = 1, /* HSR */ 22272 bcmFieldSRTagTypePrp = 2, /* PRP */ 22273 bcmFieldSRTagTypeDot1cb = 3, /* IEEE 802.1CB */ 22274 bcmFieldSRTagTypeCount = 4 /* Always last. Not a usable value. */ 22275 } bcm_field_sr_tag_type_t; 22276 22277 /* SR (Seamless Redundancy) node type */ 22278 typedef enum bcm_field_sr_node_type_e { 22279 bcmFieldSRNodeTypeDan = 0, /* DAN node */ 22280 bcmFieldSRNodeTypeLinkLocal = 1, /* Link local MAC address */ 22281 bcmFieldSRNodeTypeSan = 2, /* SAN node */ 22282 bcmFieldSRNodeTypeSupervision = 3, /* PRP/HSR/802.1CB Supervision MAC 22283 address */ 22284 bcmFieldSRNodeTypeCount = 4 /* Always last. Not a usable value. */ 22285 } bcm_field_sr_node_type_t; 22286 22287 /* SR (Seamless Redundancy) supervision type */ 22288 typedef enum bcm_field_sr_supervision_type_e { 22289 bcmFieldSRSupervisionTypeNone = 0, /* Not an SR Supervision Packet */ 22290 bcmFieldSRSupervisionTypePrp = 1, /* PRP Supervision Packet */ 22291 bcmFieldSRSupervisionTypeHsr = 2, /* HSR Supervision Packet */ 22292 bcmFieldSRSupervisionTypeDot1cb = 3, /* 802.1CB Supervision Packet */ 22293 bcmFieldSRSupervisionTypeCount = 4 /* Always last. Not an usable value. */ 22294 } bcm_field_sr_supervision_type_t; 22295 22296 /* Used for IEEE1588Encapsulation value */ 22297 typedef enum bcm_field_IEEE1588Encap_e { 22298 bcmFieldIEEE1588EncapUdp = 0, /* UDP Encapsulation for IEEE-1588 */ 22299 bcmFieldIEEE1588EncapEth = 1 /* ETH Encapsulation for IEEE-1588 */ 22300 } bcm_field_IEEE1588Encap_t; 22301 22302 /* Parameter for bcmFieldQualifySRError */ 22303 #define BCM_FIELD_SR_ERROR_UNEXPECTED_PKT (1 << 0) /* Unexpected SR tag 22304 present */ 22305 #define BCM_FIELD_SR_ERROR_TAG_ERROR (1 << 1) /* Invalid SR tag format */ 22306 #define BCM_FIELD_SR_ERROR_RX_ERROR (1 << 2) /* Invalid SR flow or 22307 dropped due to errors */ 22308 22309 /* Parameter for bcmFieldActionSRNetIdSource */ 22310 #define BCM_FIELD_SR_NET_ID_SOURCE_FORCE_ZERO 0 /* Force NET ID to be 0 22311 (default) */ 22312 #define BCM_FIELD_SR_NET_ID_SOURCE_SRC_PORT 1 /* From source port NET 22313 ID configuration */ 22314 #define BCM_FIELD_SR_NET_ID_SOURCE_DST_PORT 2 /* From destination port 22315 NET ID configuration */ 22316 #define BCM_FIELD_SR_NET_ID_SOURCE_PACKET 3 /* From SR tag of the 22317 packet */ 22318 22319 /* Parameter for bcmFieldActionSRCopyToCpu */ 22320 #define BCM_FIELD_SR_COPYTOCPU_ANY 0 /* Copy to CPU regardless 22321 of SR status */ 22322 #define BCM_FIELD_SR_COPYTOCPU_NON_DUPLICATE 1 /* Copy to CPU only if 22323 it's a non-duplicate 22324 packet */ 22325 22326 /* Parameters for bcmFieldActionSRTagAdd and bcmFieldActionSRTagDelete */ 22327 #define BCM_FIELD_SR_TAG_TYPE_RESERVED 0 /* Reserved */ 22328 #define BCM_FIELD_SR_TAG_TYPE_HSR 1 /* HSR */ 22329 #define BCM_FIELD_SR_TAG_TYPE_PRP 2 /* PRP */ 22330 #define BCM_FIELD_SR_TAG_TYPE_DOT1CB 3 /* 802.1CB */ 22331 22332 #ifndef BCM_HIDE_DISPATCHABLE 22333 22334 /* Set match criteria for bcmFieldQualifySrcPortSRType */ 22335 extern int bcm_field_qualify_SrcPortSRType( 22336 int unit, 22337 bcm_field_entry_t entry, 22338 bcm_field_port_sr_type_t type); 22339 22340 /* Get match criteria for bcmFieldQualifySrcPortSRType */ 22341 extern int bcm_field_qualify_SrcPortSRType_get( 22342 int unit, 22343 bcm_field_entry_t entry, 22344 bcm_field_port_sr_type_t *type); 22345 22346 /* Set match criteria for bcmFieldQualifyDstPortSRType */ 22347 extern int bcm_field_qualify_DstPortSRType( 22348 int unit, 22349 bcm_field_entry_t entry, 22350 bcm_field_port_sr_type_t type); 22351 22352 /* Get match criteria for bcmFieldQualifyDstPortSRType */ 22353 extern int bcm_field_qualify_DstPortSRType_get( 22354 int unit, 22355 bcm_field_entry_t entry, 22356 bcm_field_port_sr_type_t *type); 22357 22358 /* Set match criteria for bcmFieldQualifySrcPortSRRoleInterlink */ 22359 extern int bcm_field_qualify_SrcPortSRRoleInterlink( 22360 int unit, 22361 bcm_field_entry_t entry, 22362 uint8 data); 22363 22364 /* Get match criteria for bcmFieldQualifySrcPortSRRoleInterlink */ 22365 extern int bcm_field_qualify_SrcPortSRRoleInterlink_get( 22366 int unit, 22367 bcm_field_entry_t entry, 22368 uint8 *data); 22369 22370 /* Set match criteria for bcmFieldQualifyDstPortSRRoleInterlink */ 22371 extern int bcm_field_qualify_DstPortSRRoleInterlink( 22372 int unit, 22373 bcm_field_entry_t entry, 22374 uint8 data); 22375 22376 /* Get match criteria for bcmFieldQualifyDstPortSRRoleInterlink */ 22377 extern int bcm_field_qualify_DstPortSRRoleInterlink_get( 22378 int unit, 22379 bcm_field_entry_t entry, 22380 uint8 *data); 22381 22382 /* Set match criteria for bcmFieldQualifySrcPortSRMode */ 22383 extern int bcm_field_qualify_SrcPortSRMode( 22384 int unit, 22385 bcm_field_entry_t entry, 22386 bcm_field_sr_port_mode_t type, 22387 uint8 mask); 22388 22389 /* Get match criteria for bcmFieldQualifySrcPortSRMode */ 22390 extern int bcm_field_qualify_SrcPortSRMode_get( 22391 int unit, 22392 bcm_field_entry_t entry, 22393 bcm_field_sr_port_mode_t *type, 22394 uint8 *mask); 22395 22396 /* Set match criteria for bcmFieldQualifyDstPortSRMode */ 22397 extern int bcm_field_qualify_DstPortSRMode( 22398 int unit, 22399 bcm_field_entry_t entry, 22400 bcm_field_sr_port_mode_t type, 22401 uint8 mask); 22402 22403 /* Get match criteria for bcmFieldQualifyDstPortSRMode */ 22404 extern int bcm_field_qualify_DstPortSRMode_get( 22405 int unit, 22406 bcm_field_entry_t entry, 22407 bcm_field_sr_port_mode_t *type, 22408 uint8 *mask); 22409 22410 /* Set match criteria for bcmFieldQualifySrcPortSRNetId */ 22411 extern int bcm_field_qualify_SrcPortSRNetId( 22412 int unit, 22413 bcm_field_entry_t entry, 22414 uint8 net_id, 22415 uint8 mask); 22416 22417 /* Get match criteria for bcmFieldQualifySrcPortSRNetId */ 22418 extern int bcm_field_qualify_SrcPortSRNetId_get( 22419 int unit, 22420 bcm_field_entry_t entry, 22421 uint8 *net_id, 22422 uint8 *mask); 22423 22424 /* Set match criteria for bcmFieldQualifyDstPortSRNetId */ 22425 extern int bcm_field_qualify_DstPortSRNetId( 22426 int unit, 22427 bcm_field_entry_t entry, 22428 uint8 net_id, 22429 uint8 mask); 22430 22431 /* Get match criteria for bcmFieldQualifyDstPortSRNetId */ 22432 extern int bcm_field_qualify_DstPortSRNetId_get( 22433 int unit, 22434 bcm_field_entry_t entry, 22435 uint8 *net_id, 22436 uint8 *mask); 22437 22438 /* Set match criteria for bcmFieldQualifySrcPortSRLanId */ 22439 extern int bcm_field_qualify_SrcPortSRLanId( 22440 int unit, 22441 bcm_field_entry_t entry, 22442 uint8 lan_id); 22443 22444 /* Get match criteria for bcmFieldQualifySrcPortSRLanId */ 22445 extern int bcm_field_qualify_SrcPortSRLanId_get( 22446 int unit, 22447 bcm_field_entry_t entry, 22448 uint8 *lan_id); 22449 22450 /* Set match criteria for bcmFieldQualifyDstPortSRLanId */ 22451 extern int bcm_field_qualify_DstPortSRLanId( 22452 int unit, 22453 bcm_field_entry_t entry, 22454 uint8 lan_id); 22455 22456 /* Get match criteria for bcmFieldQualifyDstPortSRLanId */ 22457 extern int bcm_field_qualify_DstPortSRLanId_get( 22458 int unit, 22459 bcm_field_entry_t entry, 22460 uint8 *lan_id); 22461 22462 /* Set match criteria for bcmFieldQualifySRTagType */ 22463 extern int bcm_field_qualify_SRTagType( 22464 int unit, 22465 bcm_field_entry_t entry, 22466 bcm_field_sr_tag_type_t type); 22467 22468 /* Get match criteria for bcmFieldQualifySRTagType */ 22469 extern int bcm_field_qualify_SRTagType_get( 22470 int unit, 22471 bcm_field_entry_t entry, 22472 bcm_field_sr_tag_type_t *type); 22473 22474 /* Set match criteria for bcmFieldQualifySRLanId */ 22475 extern int bcm_field_qualify_SRLanId( 22476 int unit, 22477 bcm_field_entry_t entry, 22478 int lan_id); 22479 22480 /* Get match criteria for bcmFieldQualifySRLanId */ 22481 extern int bcm_field_qualify_SRLanId_get( 22482 int unit, 22483 bcm_field_entry_t entry, 22484 int *lan_id); 22485 22486 /* Set match criteria for bcmFieldQualifySRNetId */ 22487 extern int bcm_field_qualify_SRNetId( 22488 int unit, 22489 bcm_field_entry_t entry, 22490 int net_id); 22491 22492 /* Get match criteria for bcmFieldQualifySRNetId */ 22493 extern int bcm_field_qualify_SRNetId_get( 22494 int unit, 22495 bcm_field_entry_t entry, 22496 int *net_id); 22497 22498 /* Set match criteria for bcmFieldQualifyVlanSREnable */ 22499 extern int bcm_field_qualify_VlanSREnable( 22500 int unit, 22501 bcm_field_entry_t entry, 22502 uint8 data); 22503 22504 /* Get match criteria for bcmFieldQualifyVlanSREnable */ 22505 extern int bcm_field_qualify_VlanSREnable_get( 22506 int unit, 22507 bcm_field_entry_t entry, 22508 uint8 *data); 22509 22510 /* Set match criteria for bcmFieldQualifyVlanSRLanId */ 22511 extern int bcm_field_qualify_VlanSRLanId( 22512 int unit, 22513 bcm_field_entry_t entry, 22514 uint8 lan_id); 22515 22516 /* Get match criteria for bcmFieldQualifyVlanSRLanId */ 22517 extern int bcm_field_qualify_VlanSRLanId_get( 22518 int unit, 22519 bcm_field_entry_t entry, 22520 uint8 *lan_id); 22521 22522 /* Set match criteria for bcmFieldQualifySRFlowId */ 22523 extern int bcm_field_qualify_SRFlowId( 22524 int unit, 22525 bcm_field_entry_t entry, 22526 uint32 data, 22527 uint32 mask); 22528 22529 /* Get match criteria for bcmFieldQualifySRFlowId */ 22530 extern int bcm_field_qualify_SRFlowId_get( 22531 int unit, 22532 bcm_field_entry_t entry, 22533 uint32 *data, 22534 uint32 *mask); 22535 22536 /* Set match criteria for bcmFieldQualifyL2DestSRNodeType */ 22537 extern int bcm_field_qualify_L2DestSRNodeType( 22538 int unit, 22539 bcm_field_entry_t entry, 22540 bcm_field_sr_node_type_t type); 22541 22542 /* Get match criteria for bcmFieldQualifyL2DestSRNodeType */ 22543 extern int bcm_field_qualify_L2DestSRNodeType_get( 22544 int unit, 22545 bcm_field_entry_t entry, 22546 bcm_field_sr_node_type_t *type); 22547 22548 /* Set match criteria for bcmFieldQualifySRNetIdMatched */ 22549 extern int bcm_field_qualify_SRNetIdMatched( 22550 int unit, 22551 bcm_field_entry_t entry, 22552 uint8 data); 22553 22554 /* Get match criteria for bcmFieldQualifySRNetIdMatched */ 22555 extern int bcm_field_qualify_SRNetIdMatched_get( 22556 int unit, 22557 bcm_field_entry_t entry, 22558 uint8 *data); 22559 22560 /* Set match criteria for bcmFieldQualifySRSrcNodeIsSan */ 22561 extern int bcm_field_qualify_SRSrcNodeIsSan( 22562 int unit, 22563 bcm_field_entry_t entry, 22564 uint8 data); 22565 22566 /* Get match criteria for bcmFieldQualifySRSrcNodeIsSan */ 22567 extern int bcm_field_qualify_SRSrcNodeIsSan_get( 22568 int unit, 22569 bcm_field_entry_t entry, 22570 uint8 *data); 22571 22572 /* Set match criteria for bcmFieldQualifySRSupervisionType */ 22573 extern int bcm_field_qualify_SRSupervisionType( 22574 int unit, 22575 bcm_field_entry_t entry, 22576 bcm_field_sr_supervision_type_t type); 22577 22578 /* Get match criteria for bcmFieldQualifySRSupervisionType */ 22579 extern int bcm_field_qualify_SRSupervisionType_get( 22580 int unit, 22581 bcm_field_entry_t entry, 22582 bcm_field_sr_supervision_type_t *type); 22583 22584 /* Set match criteria for bcmFieldQualifySRError */ 22585 extern int bcm_field_qualify_SRError( 22586 int unit, 22587 bcm_field_entry_t entry, 22588 uint32 data, 22589 uint32 mask); 22590 22591 /* Get match criteria for bcmFieldQualifySRError */ 22592 extern int bcm_field_qualify_SRError_get( 22593 int unit, 22594 bcm_field_entry_t entry, 22595 uint32 *data, 22596 uint32 *mask); 22597 22598 /* Set match criteria for bcmFieldQualifyL2SrcMulticastHit */ 22599 extern int bcm_field_qualify_L2SrcMulticastHit( 22600 int unit, 22601 bcm_field_entry_t entry, 22602 uint8 data, 22603 uint8 mask); 22604 22605 /* Get match criteria for bcmFieldQualifyL2SrcMulticastHit */ 22606 extern int bcm_field_qualify_L2SrcMulticastHit_get( 22607 int unit, 22608 bcm_field_entry_t entry, 22609 uint8 *data, 22610 uint8 *mask); 22611 22612 /* Set match criteria for bcmFieldQualifyL2DstMulticastHit */ 22613 extern int bcm_field_qualify_L2DstMulticastHit( 22614 int unit, 22615 bcm_field_entry_t entry, 22616 uint8 data, 22617 uint8 mask); 22618 22619 /* Get match criteria for bcmFieldQualifyL2DstMulticastHit */ 22620 extern int bcm_field_qualify_L2DstMulticastHit_get( 22621 int unit, 22622 bcm_field_entry_t entry, 22623 uint8 *data, 22624 uint8 *mask); 22625 22626 /* Set match criteria for bcmFieldQualifySRDuplicate */ 22627 extern int bcm_field_qualify_SRDuplicate( 22628 int unit, 22629 bcm_field_entry_t entry, 22630 uint8 data); 22631 22632 /* Get match criteria for bcmFieldQualifySRDuplicate */ 22633 extern int bcm_field_qualify_SRDuplicate_get( 22634 int unit, 22635 bcm_field_entry_t entry, 22636 uint8 *data); 22637 22638 /* Set match criteria for bcmFieldQualifyTsnFlowId */ 22639 extern int bcm_field_qualify_TsnFlowId( 22640 int unit, 22641 bcm_field_entry_t entry, 22642 uint32 data, 22643 uint32 mask); 22644 22645 extern int bcm_field_qualify_TsnFlowId_get( 22646 int unit, 22647 bcm_field_entry_t entry, 22648 uint32 *data, 22649 uint32 *mask); 22650 22651 /* Set match criteria for bcmFieldQualifyStaggeredValue0 */ 22652 extern int bcm_field_qualify_StaggeredValue0( 22653 int unit, 22654 bcm_field_entry_t entry, 22655 uint32 data, 22656 uint32 mask); 22657 22658 /* Set match criteria for bcmFieldQualifyStaggeredValue0_get */ 22659 extern int bcm_field_qualify_StaggeredValue0_get( 22660 int unit, 22661 bcm_field_entry_t entry, 22662 uint32 *data, 22663 uint32 *mask); 22664 22665 /* Set match criteria for bcmFieldQualifyStaggeredValue1 */ 22666 extern int bcm_field_qualify_StaggeredValue1( 22667 int unit, 22668 bcm_field_entry_t entry, 22669 uint32 data, 22670 uint32 mask); 22671 22672 /* Set match criteria for bcmFieldQualifyStaggeredValue1_get */ 22673 extern int bcm_field_qualify_StaggeredValue1_get( 22674 int unit, 22675 bcm_field_entry_t entry, 22676 uint32 *data, 22677 uint32 *mask); 22678 22679 /* Set match criteria for bcmFieldQualifyStaggeredValue2 */ 22680 extern int bcm_field_qualify_StaggeredValue2( 22681 int unit, 22682 bcm_field_entry_t entry, 22683 uint32 data, 22684 uint32 mask); 22685 22686 /* Set match criteria for bcmFieldQualifyStaggeredValue2_get */ 22687 extern int bcm_field_qualify_StaggeredValue2_get( 22688 int unit, 22689 bcm_field_entry_t entry, 22690 uint32 *data, 22691 uint32 *mask); 22692 22693 /* Set match criteria for bcmFieldQualifyStaggeredValue3 */ 22694 extern int bcm_field_qualify_StaggeredValue3( 22695 int unit, 22696 bcm_field_entry_t entry, 22697 uint32 data, 22698 uint32 mask); 22699 22700 /* Set match criteria for bcmFieldQualifyStaggeredValue3_get */ 22701 extern int bcm_field_qualify_StaggeredValue3_get( 22702 int unit, 22703 bcm_field_entry_t entry, 22704 uint32 *data, 22705 uint32 *mask); 22706 22707 /* Set match criteria for bcmFieldQualifyStaggeredDirectValue */ 22708 extern int bcm_field_qualify_StaggeredDirectValue( 22709 int unit, 22710 bcm_field_entry_t entry, 22711 uint32 data, 22712 uint32 mask); 22713 22714 /* Set match criteria for bcmFieldQualifyStaggeredDirectValue_get */ 22715 extern int bcm_field_qualify_StaggeredDirectValue_get( 22716 int unit, 22717 bcm_field_entry_t entry, 22718 uint32 *data, 22719 uint32 *mask); 22720 22721 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile0 */ 22722 extern int bcm_field_qualify_StaggeredPreselProfile0( 22723 int unit, 22724 bcm_field_entry_t entry, 22725 uint32 data, 22726 uint32 mask); 22727 22728 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile0_get */ 22729 extern int bcm_field_qualify_StaggeredPreselProfile0_get( 22730 int unit, 22731 bcm_field_entry_t entry, 22732 uint32 *data, 22733 uint32 *mask); 22734 22735 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile1 */ 22736 extern int bcm_field_qualify_StaggeredPreselProfile1( 22737 int unit, 22738 bcm_field_entry_t entry, 22739 uint32 data, 22740 uint32 mask); 22741 22742 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile1_get */ 22743 extern int bcm_field_qualify_StaggeredPreselProfile1_get( 22744 int unit, 22745 bcm_field_entry_t entry, 22746 uint32 *data, 22747 uint32 *mask); 22748 22749 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile2 */ 22750 extern int bcm_field_qualify_StaggeredPreselProfile2( 22751 int unit, 22752 bcm_field_entry_t entry, 22753 uint32 data, 22754 uint32 mask); 22755 22756 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile2_get */ 22757 extern int bcm_field_qualify_StaggeredPreselProfile2_get( 22758 int unit, 22759 bcm_field_entry_t entry, 22760 uint32 *data, 22761 uint32 *mask); 22762 22763 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile3 */ 22764 extern int bcm_field_qualify_StaggeredPreselProfile3( 22765 int unit, 22766 bcm_field_entry_t entry, 22767 uint32 data, 22768 uint32 mask); 22769 22770 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile3_get */ 22771 extern int bcm_field_qualify_StaggeredPreselProfile3_get( 22772 int unit, 22773 bcm_field_entry_t entry, 22774 uint32 *data, 22775 uint32 *mask); 22776 22777 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfileDirect */ 22778 extern int bcm_field_qualify_StaggeredPreselProfileDirect( 22779 int unit, 22780 bcm_field_entry_t entry, 22781 uint32 data, 22782 uint32 mask); 22783 22784 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfileDirect_get */ 22785 extern int bcm_field_qualify_StaggeredPreselProfileDirect_get( 22786 int unit, 22787 bcm_field_entry_t entry, 22788 uint32 *data, 22789 uint32 *mask); 22790 22791 /* Add ports to the specified group */ 22792 extern int bcm_field_group_ports_add( 22793 int unit, 22794 bcm_field_group_t group, 22795 bcm_pbmp_t pbmp); 22796 22797 /* Remove ports from the specified group */ 22798 extern int bcm_field_group_ports_remove( 22799 int unit, 22800 bcm_field_group_t group, 22801 bcm_pbmp_t pbmp); 22802 22803 /* Retrieve the bitmap of ports associated with a given field group. */ 22804 extern int bcm_field_group_ports_get( 22805 int unit, 22806 bcm_field_group_t group, 22807 bcm_pbmp_t *pbmp); 22808 22809 /* To verify whether a group can be created with a given qset and mode. */ 22810 extern int bcm_field_group_config_validate( 22811 int unit, 22812 bcm_field_group_config_t *group_config, 22813 bcm_field_group_mode_t *mode); 22814 22815 /* 22816 * To map a given set of TTL/ToS/TCP values of the packet to another set 22817 * of TTL/ToS/TCP values respectively. 22818 */ 22819 extern int bcm_field_class_map_set( 22820 int unit, 22821 bcm_field_stage_t stage, 22822 bcm_field_qualify_t qual, 22823 uint32 num_entries, 22824 uint32 *orig_values_array, 22825 uint32 *map_values_array); 22826 22827 /* 22828 * To get the set of mapped TTL/ToS/TCP values of the packet for a given 22829 * set of TTL/ToS/TCP values respectively. 22830 */ 22831 extern int bcm_field_class_map_get( 22832 int unit, 22833 bcm_field_stage_t stage, 22834 bcm_field_qualify_t qual, 22835 uint32 num_entries, 22836 uint32 *orig_values_array, 22837 uint32 *map_values_array); 22838 22839 /* Set match criteria for bcmFieldQualifyPreselId */ 22840 extern int bcm_field_qualify_PreselId( 22841 int unit, 22842 bcm_field_entry_t entry, 22843 uint32 data, 22844 uint32 mask); 22845 22846 /* Set match criteria for bcmFieldQualifyPreselId_get */ 22847 extern int bcm_field_qualify_PreselId_get( 22848 int unit, 22849 bcm_field_entry_t entry, 22850 uint32 *data, 22851 uint32 *mask); 22852 22853 /* Set match criteria for bcmFieldQualifyMirrorDest. */ 22854 extern int bcm_field_qualify_MirrorDest( 22855 int unit, 22856 bcm_field_entry_t entry, 22857 bcm_gport_t mirror_gport); 22858 22859 /* Get match criteria for bcmFieldQualifyMirrorDest. */ 22860 extern int bcm_field_qualify_MirrorDest_get( 22861 int unit, 22862 bcm_field_entry_t entry, 22863 bcm_gport_t *mirror_gport); 22864 22865 /* Set match criteria for bcm_field_qualify_PacketIsIEEE1588. */ 22866 extern int bcm_field_qualify_PacketIsIEEE1588( 22867 int unit, 22868 bcm_field_entry_t entry, 22869 uint8 data, 22870 uint8 mask); 22871 22872 /* Get match criteria for bcm_field_qualify_PacketIsIEEE1588_get. */ 22873 extern int bcm_field_qualify_PacketIsIEEE1588_get( 22874 int unit, 22875 bcm_field_entry_t entry, 22876 uint8 *data, 22877 uint8 *mask); 22878 22879 /* Set match criteria for field_qualify_IEEE1588Encapsulation. */ 22880 extern int bcm_field_qualify_IEEE1588Encapsulation( 22881 int unit, 22882 bcm_field_entry_t entry, 22883 bcm_field_IEEE1588Encap_t encap); 22884 22885 /* Get match criteria for field_qualify_IEEE1588Encapsulation_get. */ 22886 extern int bcm_field_qualify_IEEE1588Encapsulation_get( 22887 int unit, 22888 bcm_field_entry_t entry, 22889 bcm_field_IEEE1588Encap_t *encap); 22890 22891 /* Set match criteria for field_qualify_IEEE1588CompensateTimeStamp. */ 22892 extern int bcm_field_qualify_IEEE1588CompensateTimeStamp( 22893 int unit, 22894 bcm_field_entry_t entry, 22895 uint8 data, 22896 uint8 mask); 22897 22898 /* Get match criteria for field_qualify_IEEE1588CompensateTimeStamp_get. */ 22899 extern int bcm_field_qualify_IEEE1588CompensateTimeStamp_get( 22900 int unit, 22901 bcm_field_entry_t entry, 22902 uint8 *data, 22903 uint8 *mask); 22904 22905 /* Set match criteria for field_qualify_IEEE1588Command. */ 22906 extern int bcm_field_qualify_IEEE1588Command( 22907 int unit, 22908 bcm_field_entry_t entry, 22909 uint8 data, 22910 uint8 mask); 22911 22912 /* Get match criteria for field_qualify_IEEE1588Command_get. */ 22913 extern int bcm_field_qualify_IEEE1588Command_get( 22914 int unit, 22915 bcm_field_entry_t entry, 22916 uint8 *data, 22917 uint8 *mask); 22918 22919 /* Set match criteria for bcm_field_qualify_IEEE1588HeaderOffset. */ 22920 extern int bcm_field_qualify_IEEE1588HeaderOffset( 22921 int unit, 22922 bcm_field_entry_t entry, 22923 uint32 data, 22924 uint32 mask); 22925 22926 /* Get match criteria for field_qualify_IEEE1588HeaderOffset_get. */ 22927 extern int bcm_field_qualify_IEEE1588HeaderOffset_get( 22928 int unit, 22929 bcm_field_entry_t entry, 22930 uint32 *data, 22931 uint32 *mask); 22932 22933 #endif /* BCM_HIDE_DISPATCHABLE */ 22934 22935 /* 22936 * Field Qualifier System Header types (for 22937 * bcm_field_qualify_SysHdrType). 22938 */ 22939 typedef enum bcm_field_sys_hdr_type_e { 22940 bcmFieldSysHdrNone = 0, /* No System Header in the packet. */ 22941 bcmFieldSysHdrSubPort = 1, /* Subport type System Header. */ 22942 bcmFieldSysHdrLoopbackNot = 2, /* Not a system header of any Loopback 22943 type. */ 22944 bcmFieldSysHdrLoopbackAny = 3, /* Loopback system header 22945 (GenericLoopback or CPU Masquerade). */ 22946 bcmFieldSysHdrLoopbackGeneric = 4, /* System header of Generic Loopback. */ 22947 bcmFieldSysHdrLoopbackCpuMasquerade = 5, /* System header of Loopback CPU 22948 Masquerade. */ 22949 bcmFieldSysHdrHiGigNot = 6, /* Not a System header of any HiGig 22950 type. */ 22951 bcmFieldSysHdrHiGigAny = 7, /* System header of any HiGig type. */ 22952 bcmFieldSysHdrHiGigTypePpd0 = 8, /* HiGig with PPD0. */ 22953 bcmFieldSysHdrHiGigTypePpd2 = 9, /* HiGig with PPD2. */ 22954 bcmFieldSysHdrHiGigTypePpd0EhType0 = 10, /* HiGig with PPD0 Extension Header Type 22955 0. */ 22956 bcmFieldSysHdrHiGigTypePpd0EhType1 = 11, /* HiGig with PPD0 Extension Header Type 22957 1. */ 22958 bcmFieldSysHdrHiGigTypePpd0EhType2 = 12, /* HiGig with PPD0 Extension Header Type 22959 2. */ 22960 bcmFieldSysHdrHiGigTypePpd2EhType0 = 13, /* HiGig with PPD2 Extension Header Type 22961 0. */ 22962 bcmFieldSysHdrHiGigTypePpd2EhType1 = 14, /* HiGig with PPD2 Extension Header Type 22963 1. */ 22964 bcmFieldSysHdrHiGigTypePpd2EhType2 = 15, /* HiGig with PPD2 Extension Header Type 22965 2. */ 22966 bcmFieldSysHdrHiGigTypeUnknownPpd = 16, /* HiGig with unknown PPD. */ 22967 bcmFieldSysHdrHiGigTypeUnknownPpdWithEh = 17, /* HiGig with unknown PPD Extension 22968 header. */ 22969 bcmFieldSysHdrHiGigTypePpd1 = 18, /* HiGig with PPD1. */ 22970 bcmFieldSysHdrHiGigTypePpd1WithEh = 19, /* HiGig with PPD1 Extension Header. */ 22971 bcmFieldSysHdrTxTimestamp = 20, /* Requires BROADCOM_PREMIUM license */ 22972 bcmFieldSysHdrLoopbackRedirected = 21, /* Loopback redirected system header */ 22973 bcmFieldSysHdrRecircle = 22, /* Egress Pipeline NPL internal header */ 22974 bcmFieldSysHdrLastCount = 23 /* Always Last. Not a usable value. */ 22975 } bcm_field_sys_hdr_type_t; 22976 22977 #define BCM_FIELD_SYS_HDR_TYPE_STRINGS \ 22978 { \ 22979 "None", \ 22980 "SubPort", \ 22981 "LoopbackNot", \ 22982 "LoopbackAny", \ 22983 "LoopbackGeneric", \ 22984 "LoopbackCpuMasquerade", \ 22985 "HiGigNot", \ 22986 "HiGigAny", \ 22987 "HiGigTypePpd0", \ 22988 "HiGigTypePpd2", \ 22989 "HiGigTypePpd0EhType0", \ 22990 "HiGigTypePpd0EhType1", \ 22991 "HiGigTypePpd0EhType2", \ 22992 "HiGigTypePpd2EhType0", \ 22993 "HiGigTypePpd2EhType1", \ 22994 "HiGigTypePpd2EhType2", \ 22995 "HiGigTypeUnknownPpd", \ 22996 "HiGigTypeUnknownPpdWithEh", \ 22997 "HiGigTypePpd1", \ 22998 "HiGigTypePpd1WithEh", \ 22999 "TxTimestamp", \ 23000 "LoopbackRedirected", \ 23001 "Recircle" \ 23002 } 23003 23004 #ifndef BCM_HIDE_DISPATCHABLE 23005 23006 /* 23007 * API to add system header type to a field entry for field 23008 * qualification. 23009 */ 23010 extern int bcm_field_qualify_SysHdrType( 23011 int unit, 23012 bcm_field_entry_t entry, 23013 bcm_field_sys_hdr_type_t type); 23014 23015 /* API to retrieve system header type associated to a given field entry. */ 23016 extern int bcm_field_qualify_SysHdrType_get( 23017 int unit, 23018 bcm_field_entry_t entry, 23019 bcm_field_sys_hdr_type_t *type); 23020 23021 /* 23022 * API to add Subport Tag present status to a given field entry for 23023 * qualification. 23024 */ 23025 extern int bcm_field_qualify_SubportTagPresent( 23026 int unit, 23027 bcm_field_entry_t entry, 23028 uint8 data, 23029 uint8 mask); 23030 23031 #endif /* BCM_HIDE_DISPATCHABLE */ 23032 23033 /* Parameters for bcmFieldActionMplsLookupEnable */ 23034 #define BCM_FIELD_MPLS_ENABLE 1 /* Enabling MPLS support */ 23035 #define BCM_FIELD_MPLS_DISABLE 2 /* Disabling MPLS support */ 23036 23037 /* Parameters for bcmFieldActionTerminationAllowed */ 23038 #define BCM_FIELD_MPLS_TERM_ALLOWED (1 << 0) /* Enabling MPLS tunnel 23039 termination */ 23040 #define BCM_FIELD_IPV4_TERM_ALLOWED (1 << 1) /* Enabling L3 Ipv4 23041 termination */ 23042 #define BCM_FIELD_IPV6_TERM_ALLOWED (1 << 2) /* Enabling L3 Ipv6 23043 termination */ 23044 #define BCM_FIELD_IPV4_MCAST_TERM_ALLOWED (1 << 3) /* Enabling L3 Ipv4 23045 multicast termination */ 23046 #define BCM_FIELD_IPV6_MCAST_TERM_ALLOWED (1 << 4) /* Enabling L3 Ipv6 23047 multicast termination */ 23048 #define BCM_FIELD_ARP_RARP_TERM_ALLOWED (1 << 5) /* Enabling arp/rarp 23049 termination */ 23050 #define BCM_FIELD_L3_TNL_TERM_ALLOWED (1 << 6) /* Enabling L3 tunnel 23051 termination */ 23052 23053 #ifndef BCM_HIDE_DISPATCHABLE 23054 23055 /* 23056 * Configure match criteria for bcmFieldQualifyIpTunnelTtlClassZero 23057 * qualifier from the field entry. 23058 */ 23059 extern int bcm_field_qualify_IpTunnelTtlClassZero( 23060 int unit, 23061 bcm_field_entry_t entry, 23062 bcm_class_t data, 23063 bcm_class_t mask); 23064 23065 /* 23066 * API to retrieve Subport tag present status associated to a given field 23067 * entry. 23068 */ 23069 extern int bcm_field_qualify_SubportTagPresent_get( 23070 int unit, 23071 bcm_field_entry_t entry, 23072 uint8 *data, 23073 uint8 *mask); 23074 23075 #endif /* BCM_HIDE_DISPATCHABLE */ 23076 23077 /* bcm_field_network_tag_type_e */ 23078 typedef enum bcm_field_network_tag_type_e { 23079 bcmFieldNetworkTagVnTag = 0, /* Network tag type VNTAG. */ 23080 bcmFieldNetworkTagEtag = 1, /* Network tag type ETAG. */ 23081 bcmFieldNetworkTagLastCount = 2 /* Always Last. Not a usable value. */ 23082 } bcm_field_network_tag_type_t; 23083 23084 #define BCM_FIELD_NETWORK_TAG_TYPE \ 23085 { \ 23086 "VnTag", \ 23087 "Etag" \ 23088 } 23089 23090 #ifndef BCM_HIDE_DISPATCHABLE 23091 23092 /* 23093 * API to add network tag type to a field entry for the field 23094 * qualification. 23095 */ 23096 extern int bcm_field_qualify_NetworkTagType( 23097 int unit, 23098 bcm_field_entry_t entry, 23099 bcm_field_network_tag_type_t type); 23100 23101 /* API to retrieve network tag type associated to a given field entry. */ 23102 extern int bcm_field_qualify_NetworkTagType_get( 23103 int unit, 23104 bcm_field_entry_t entry, 23105 bcm_field_network_tag_type_t *type); 23106 23107 /* 23108 * API to add congestion Tag present status to a field entry for 23109 * qualification. 23110 */ 23111 extern int bcm_field_qualify_CnTagPresent( 23112 int unit, 23113 bcm_field_entry_t entry, 23114 uint8 data, 23115 uint8 mask); 23116 23117 /* 23118 * API to retrieve congestion tag present status associated to a given 23119 * field entry. 23120 */ 23121 extern int bcm_field_qualify_CnTagPresent_get( 23122 int unit, 23123 bcm_field_entry_t entry, 23124 uint8 *data, 23125 uint8 *mask); 23126 23127 #endif /* BCM_HIDE_DISPATCHABLE */ 23128 23129 /* bcm_field_l2_pkt_type_e */ 23130 typedef enum bcm_field_l2_pkt_type_e { 23131 bcmFieldL2PktTypeEthernet = 0, /* Ethernet L2 packet type. */ 23132 bcmFieldL2PktTypeSnap = 1, /* SNAP L2 packet type. */ 23133 bcmFieldL2PktTypeLLC = 2, /* LLC L2 packet type. */ 23134 bcmFieldL2PktTypeSnapOrLLC = 3, /* SNAP or LLC L2 packet type. */ 23135 bcmFieldL2PktTypeAny = 4, /* Any L2 packet type. */ 23136 bcmFieldL2PktTypeHG3Base = 5, /* HG3 Base L2 packet type */ 23137 bcmFieldL2PktTypeHG3Ext0 = 6, /* HG3 Ext0 L2 packet type */ 23138 bcmFieldL2PktTypeSvtag = 7, /* SVTAG L2 packet type */ 23139 bcmFieldL2PktTypeLastCount = 8 /* Always Last. Not a usable value. */ 23140 } bcm_field_l2_pkt_type_t; 23141 23142 #define BCM_FIELD_L2_PKT_TYPE \ 23143 { \ 23144 "Ethernet", \ 23145 "Snap", \ 23146 "LLC", \ 23147 "SnapOrLLC", \ 23148 "Any", \ 23149 "HG3Base", \ 23150 "HG3Ext0", \ 23151 "Svtag" \ 23152 } 23153 23154 #ifndef BCM_HIDE_DISPATCHABLE 23155 23156 /* API to add L2 Packet type to a field entry for qualification. */ 23157 extern int bcm_field_qualify_L2PktType( 23158 int unit, 23159 bcm_field_entry_t entry, 23160 bcm_field_l2_pkt_type_t type); 23161 23162 /* API to retrieve L2 Packet type associated to a field entry. */ 23163 extern int bcm_field_qualify_L2PktType_get( 23164 int unit, 23165 bcm_field_entry_t entry, 23166 bcm_field_l2_pkt_type_t *type); 23167 23168 #endif /* BCM_HIDE_DISPATCHABLE */ 23169 23170 /* bcm_field_pkt_type_e */ 23171 typedef enum bcm_field_pkt_type_e { 23172 bcmFieldPktTypeMplsNot = 0, /* Non-MPLS Packet type */ 23173 bcmFieldPktTypeMplsAny = 1, /* Any MPLS Packet type */ 23174 bcmFieldPktTypeMplsOneLabel = 2, /* MPLS with one label Packet type */ 23175 bcmFieldPktTypeMplsTwoLabel = 3, /* MPLS with two labels Packet type */ 23176 bcmFieldPktTypeMplsThreeLabel = 4, /* MPLS with three labels Packet type */ 23177 bcmFieldPktTypeMplsFourLabel = 5, /* MPLS with four labels Packet type */ 23178 bcmFieldPktTypeMplsFiveLabel = 6, /* MPLS with five labels Packet type */ 23179 bcmFieldPktTypeMplsSixLabel = 7, /* MPLS with six labels Packet type */ 23180 bcmFieldPktTypeMplsSevenLabel = 8, /* MPLS with seven labels Packet type */ 23181 bcmFieldPktTypeMplsMoreThanSevenLabel = 9, /* MPLS with more than seven labels 23182 Packet type */ 23183 bcmFieldPktTypeFCoENot = 10, /* Non-FCoE Packet type */ 23184 bcmFieldPktTypeFCoEAny = 11, /* Any FCoE Packet type */ 23185 bcmFieldPktTypeFCoEVft = 12, /* FCoE VFT Packet type */ 23186 bcmFieldPktTypeFCoEEncap = 13, /* FCoE ENCAP Packet type */ 23187 bcmFieldPktTypeFCoEIfr = 14, /* FCoE IFR Packet type */ 23188 bcmFieldPktTypeFCoEStd = 15, /* FCoE STD Packet type */ 23189 bcmFieldPktTypeFCoEVftStd = 16, /* FCoE VFT-STD Packet type */ 23190 bcmFieldPktTypeFCoEEncapStd = 17, /* FCoE ENCAP-STD Packet type */ 23191 bcmFieldPktTypeFCoEIfrStd = 18, /* FCoE IFR-STD Packet type */ 23192 bcmFieldPktTypeFCoEFip = 19, /* FCoE FIP Packet type */ 23193 bcmFieldPktType1588 = 20, /* 1588 Packet Type */ 23194 bcmFieldPktTypeArp = 21, /* ARP Packet Type */ 23195 bcmFieldPktTypeRarp = 22, /* RARP Packet Type */ 23196 bcmFieldPktTypeUnknownEtherType = 23, /* Packet with Unknown EtherType */ 23197 bcmFieldPktTypeMim = 24, /* MiM Packet type */ 23198 bcmFieldPktTypeOam = 25, /* OAM Packet Type */ 23199 bcmFieldPktTypeCnm = 26, /* CNM (congestion notification message) 23200 Packet Type */ 23201 bcmFieldPktTypeNshOverL2 = 27, /* NSH Over L2 Packet Type */ 23202 bcmFieldPktTypeNshOverMplsOneLabel = 28, /* NSH Over MPLS with one label Packet 23203 type */ 23204 bcmFieldPktTypeNshOverMplsTwoLabel = 29, /* NSH Over MPLS with two label Packet 23205 type */ 23206 bcmFieldPktTypeIp4Not = 30, /* Non-IPv4 Packet type */ 23207 bcmFieldPktTypeIp4Any = 31, /* Any IPv4 Packet Type */ 23208 bcmFieldPktTypeIp4Nsh = 32, /* NSH Over IPv4 Packet Type */ 23209 bcmFieldPktTypeIp4GpeNsh = 33, /* GPE-NSH Over IPv4 Packet Type */ 23210 bcmFieldPktTypeIp4Gre = 34, /* GRE over IPv4 Packet Type */ 23211 bcmFieldPktTypeIp4Bfd = 35, /* BFD Over IPv4 Packet Type */ 23212 bcmFieldPktTypeIp4Vxlan = 36, /* VXLAN Over IPv4 Packet Type */ 23213 bcmFieldPktTypeIp4Gpe = 37, /* GPE Over IPv4 Packet Type */ 23214 bcmFieldPktTypeIp4GeneveNsh = 38, /* GENEVE-NSH Over IPv4 Packet Type */ 23215 bcmFieldPktTypeIp41588Udp = 39, /* 1588 UDP Packet over IPv4 */ 23216 bcmFieldPktTypeIp4VxlanFlex = 40, /* VXLAN-Flex Over IPv4 Packet */ 23217 bcmFieldPktTypeIp4IPinIP = 41, /* IPv4 IP-in-IP Packet */ 23218 bcmFieldPktTypeIp4IPinGre = 42, /* IP GRE Ipv4 Packet */ 23219 bcmFieldPktTypeIp4Nvgre = 43, /* NVGRE IPv4 Packet */ 23220 bcmFieldPktTypeIp4Geneve = 44, /* IPv4-GENEVE Packet */ 23221 bcmFieldPktTypeIp4Gue = 45, /* IPv4-GUE Packet */ 23222 bcmFieldPktTypeIp4Tcp = 46, /* IPv4-TCP Packet */ 23223 bcmFieldPktTypeIp4Udp = 47, /* IPv4-UDF Packet */ 23224 bcmFieldPktTypeIp4Icmp = 48, /* IPv4-ICMP Packet */ 23225 bcmFieldPktTypeIp4Igmp = 49, /* IPv4-IGMP Packet */ 23226 bcmFieldPktTypeIp4IpWithExtra4Bytes = 50, /* IPv4 with Extra four bytes Packet */ 23227 bcmFieldPktTypeIp4Sctp = 51, /* IPv4 SCTP Packet */ 23228 bcmFieldPktTypeIp4MplsInIpAny = 52, /* Any MPLS in IPv4 Packet */ 23229 bcmFieldPktTypeIp4MplsInIpWithOneLabel = 53, /* MPLS with one label in IPv4 Packet */ 23230 bcmFieldPktTypeIp4MplsInIpWithTwoLabel = 54, /* MPLS with two label in IPv4 Packet */ 23231 bcmFieldPktTypeIp4MplsInIpWithThreeLabel = 55, /* MPLS with three label in IPv4 Packet */ 23232 bcmFieldPktTypeIp4MplsInIpWithFourLabel = 56, /* MPLS with four label in IPv4 Packet */ 23233 bcmFieldPktTypeIp4MplsInIpWithAnyCw = 57, /* Any MPLS with CW label in IPv4 Packet */ 23234 bcmFieldPktTypeIp4MplsInIpWithOneLabelAndCw = 58, /* MPLS with one label CW in IPv4 Packet */ 23235 bcmFieldPktTypeIp4MplsInIpWithTwoLabelAndCw = 59, /* MPLS with two label CW in IPv4 Packet */ 23236 bcmFieldPktTypeIp4MplsInIpWithThreeLabelAndCw = 60, /* MPLS with three label CW in IPv4 23237 Packet */ 23238 bcmFieldPktTypeIp4MplsInIpWithFourLabelAndCw = 61, /* MPLS with four label CW in IPv4 23239 Packet */ 23240 bcmFieldPktTypeIp6Not = 62, /* Non-IPv6 Packet */ 23241 bcmFieldPktTypeIp6Any = 63, /* Any IPv6 Packet */ 23242 bcmFieldPktTypeIp6Nsh = 64, /* NSH Over IPv6 Packet */ 23243 bcmFieldPktTypeIp6GpeNsh = 65, /* GPE-NSH Over IPv6 Packet */ 23244 bcmFieldPktTypeIp6Gre = 66, /* GRE Over IPv6 Packet */ 23245 bcmFieldPktTypeIp6Bfd = 67, /* BFD Over IPv6 Packet */ 23246 bcmFieldPktTypeIp6Vxlan = 68, /* VXLAN Over IPv6 Packet */ 23247 bcmFieldPktTypeIp6Gpe = 69, /* GPE Over IPv6 Packet */ 23248 bcmFieldPktTypeIp6GeneveNsh = 70, /* GENEVE-NSH Over IPv6 Packet */ 23249 bcmFieldPktTypeIp61588Udp = 71, /* 1588 UDF Packet over IPv6 */ 23250 bcmFieldPktTypeIp6VxlanFlex = 72, /* VXLAN-Flex Over IPv6 Packet */ 23251 bcmFieldPktTypeIp6IPinIP = 73, /* IPv6 IP-IN-IP Packet */ 23252 bcmFieldPktTypeIp6IPinGre = 74, /* IPv6 IP in GRE */ 23253 bcmFieldPktTypeIp6Nvgre = 75, /* IPv6 NVGRE Packet */ 23254 bcmFieldPktTypeIp6Geneve = 76, /* IPv6 GENEVE Packet */ 23255 bcmFieldPktTypeIp6Gue = 77, /* IPv6 GUE Packet */ 23256 bcmFieldPktTypeIp6Tcp = 78, /* IPv6 TCP Packet */ 23257 bcmFieldPktTypeIp6Udp = 79, /* IPv6 UDF Packet */ 23258 bcmFieldPktTypeIp6Icmp = 80, /* IPv6 ICMP Packet */ 23259 bcmFieldPktTypeIp6Igmp = 81, /* IPv6 IGMP Packet */ 23260 bcmFieldPktTypeIp6IpWithExtra4Bytes = 82, /* IPv6 with Extra four Bytes Packet */ 23261 bcmFieldPktTypeIp6Sctp = 83, /* IPv6 SCTP Packet */ 23262 bcmFieldPktTypeIp6MplsInIpAny = 84, /* Any MPLS in IPv6 Packet */ 23263 bcmFieldPktTypeIp6MplsInIpWithOneLabel = 85, /* MPLS with one label in IPv6 Packet */ 23264 bcmFieldPktTypeIp6MplsInIpWithTwoLabel = 86, /* MPLS with two labels in IPv6 Packet */ 23265 bcmFieldPktTypeIp6MplsInIpWithThreeLabel = 87, /* MPLS with three labels in IPv6 Packet */ 23266 bcmFieldPktTypeIp6MplsInIpWithFourLabel = 88, /* MPLS with four labels in IPv6 Packet */ 23267 bcmFieldPktTypeIp6MplsInIpWithAnyCw = 89, /* Any MPLS with CW Label in IPv6 Packet */ 23268 bcmFieldPktTypeIp6MplsInIpWithOneLabelAndCw = 90, /* MPLS with one label CW in IPv6 Packet */ 23269 bcmFieldPktTypeIp6MplsInIpWithTwoLabelAndCw = 91, /* MPLS with two label CW in IPv6 Packet */ 23270 bcmFieldPktTypeIp6MplsInIpWithThreeLabelAndCw = 92, /* MPLS with three label CW in IPv6 23271 Packet */ 23272 bcmFieldPktTypeIp6MplsInIpWithFourLabelAndCw = 93, /* MPLS with four labels in IPv6 Packet */ 23273 bcmFieldPktTypeNshOverMplsThreeLabel = 94, /* NSH Over MPLS with three labels 23274 Packet */ 23275 bcmFieldPktTypeIpv4UdpINT = 95, /* INT (Inband-Telemetry) packet type 23276 over IPv4-UDP. */ 23277 bcmFieldPktTypeIpv6UdpINT = 96, /* INT (Inband-Telemetry) packet type 23278 over IPv6-UDP. */ 23279 bcmFieldPktTypeUdpINT = 97, /* INT (Inband-Telemtry) Packet over any 23280 IP-UDP packet */ 23281 bcmFieldPktTypeIpv4IOAM = 98, /* IPv4 IOAM (Inband-OAM) Packet */ 23282 bcmFieldPktTypeIpv6IOAM = 99, /* IPv6 IOAM (Inband-OAM) Packet */ 23283 bcmFieldPktTypeIOAM = 100, /* IOAM (Inband-OAM) Packet over any IP 23284 Packet */ 23285 bcmFieldPktTypeIpv4TcpINT = 101, /* INT (Inband-Telemetry) packet type 23286 over IPv4-TCP. */ 23287 bcmFieldPktTypeIpv6TcpINT = 102, /* INT (Inband-Telemetry) packet type 23288 over IPv6-TCP. */ 23289 bcmFieldPktTypeTcpINT = 103, /* INT (Inband-Telemtry) Packet over 23290 IP-TCP packet */ 23291 bcmFieldPktTypeTcpIfa = 104, /* IFA (Inband-Flow Analyzer) Packet 23292 over IP-TCP packet */ 23293 bcmFieldPktTypeUdpIfa = 105, /* IFA (Inband-Flow Analyzer) Packet 23294 over IP-UDP packet */ 23295 bcmFieldPktTypeIpBfd = 106, /* BFD Over IP Packet Type */ 23296 bcmFieldPktTypeEthertype = 107, /* Packet with EtherType */ 23297 bcmFieldPktTypeIpIcmp = 108, /* IP-ICMP Packet */ 23298 bcmFieldPktTypeIpIgmp = 109, /* IP-IGMP Packet */ 23299 bcmFieldPktTypeIpTcp = 110, /* IP-TCP Packet */ 23300 bcmFieldPktTypeIpUdp = 111, /* IP-UDF Packet */ 23301 bcmFieldPktTypeUnknownL3 = 112, /* Packet with Unknown L3 */ 23302 bcmFieldPktTypeUnknownL4 = 113, /* Packet with Unknown L4 */ 23303 bcmFieldPktTypeUnknownL5 = 114, /* Packet with Unknown L5 */ 23304 bcmFieldPktTypeIpGpe = 115, /* GPE Over IP Packet Type */ 23305 bcmFieldPktTypeIpGre = 116, /* GRE over IP Packet Type */ 23306 bcmFieldPktTypeIpGreChksum = 117, /* GRE checksum over IP Packet Type */ 23307 bcmFieldPktTypeIpGreKey = 118, /* GRE key over IP Packet Type */ 23308 bcmFieldPktTypeIpGreRout = 119, /* GRE Rout over IP Packet Type */ 23309 bcmFieldPktTypeIpGreSeq = 120, /* GRE seq over IP Packet Type */ 23310 bcmFieldPktTypeIpIfa = 121, /* IFA (Inband-Flow Analyzer) Packet 23311 over IP packet */ 23312 bcmFieldPktTypeMplsAch = 122, /* Mpls Ach packet type */ 23313 bcmFieldPktTypeIpVxlan = 123, /* VXLAN Over IP Packet Type */ 23314 bcmFieldPktTypeIpv4IOAME2E = 124, /* IPv4 IOAM (Inband-OAM) E2E Packet */ 23315 bcmFieldPktTypeIpv6IOAME2E = 125, /* IPv6 IOAM (Inband-OAM) E2E Packet */ 23316 bcmFieldPktTypeIOAME2E = 126, /* IOAM (Inband-OAM) E2E Packet over any 23317 IP Packet */ 23318 bcmFieldPktTypeUdpManyInOne = 127, /* UDP Flows like UDP-IFA, VxLan, 23319 1588-UDP and IP-UDP., */ 23320 bcmFieldPktTypeTcpManyInOne = 128, /* TCP Flows like TCP-IFA and IP-TCP., */ 23321 bcmFieldPktTypeLastCount = 129 /* Not in use - Last Count */ 23322 } bcm_field_pkt_type_t; 23323 23324 #define BCM_FIELD_PKT_TYPE \ 23325 { \ 23326 "MplsNot", \ 23327 "MplsAny", \ 23328 "MplsOneLabel", \ 23329 "MplsTwoLabel", \ 23330 "MplsThreeLabel", \ 23331 "MplsFourLabel", \ 23332 "MplsFiveLabel", \ 23333 "MplsSixLabel", \ 23334 "MplsSevenLabel", \ 23335 "MplsMoreThanSevenLabel", \ 23336 "FCoENot", \ 23337 "FCoEAny", \ 23338 "FCoEVft", \ 23339 "FCoEEncap", \ 23340 "FCoEIfr", \ 23341 "FCoEStd", \ 23342 "FCoEVftStd", \ 23343 "FCoEEncapStd", \ 23344 "FCoEIfrStd", \ 23345 "FCoEFip", \ 23346 "1588", \ 23347 "Arp", \ 23348 "Rarp", \ 23349 "UnknownEtherType", \ 23350 "Mim", \ 23351 "Oam", \ 23352 "Cnm", \ 23353 "NshOverL2", \ 23354 "NshOverMplsOneLabel", \ 23355 "NshOverMplsTwoLabel", \ 23356 "Ip4Not", \ 23357 "Ip4Any", \ 23358 "Ip4Nsh", \ 23359 "Ip4GpeNsh", \ 23360 "Ip4Gre", \ 23361 "Ip4Bfd", \ 23362 "Ip4Vxlan", \ 23363 "Ip4Gpe", \ 23364 "Ip4GeneveNsh", \ 23365 "Ip41588Udp", \ 23366 "Ip4VxlanFlex", \ 23367 "Ip4IPinIP", \ 23368 "Ip4IPinGre", \ 23369 "Ip4Nvgre", \ 23370 "Ip4Geneve", \ 23371 "Ip4Gue", \ 23372 "Ip4Tcp", \ 23373 "Ip4Udp", \ 23374 "Ip4Icmp", \ 23375 "Ip4Igmp", \ 23376 "Ip4IpWithExtra4Bytes", \ 23377 "Ip4Sctp", \ 23378 "Ip4MplsInIpAny", \ 23379 "Ip4MplsInIpWithOneLabel", \ 23380 "Ip4MplsInIpWithTwoLabel", \ 23381 "Ip4MplsInIpWithThreeLabel", \ 23382 "Ip4MplsInIpWithFourLabel", \ 23383 "Ip4MplsInIpWithAnyCw", \ 23384 "Ip4MplsInIpWithOneLabelAndCw", \ 23385 "Ip4MplsInIpWithTwoLabelAndCw", \ 23386 "Ip4MplsInIpWithThreeLabelAndCw", \ 23387 "Ip4MplsInIpWithFourLabelAndCw", \ 23388 "Ip6Not", \ 23389 "Ip6Any", \ 23390 "Ip6Nsh", \ 23391 "Ip6GpeNsh", \ 23392 "Ip6Gre", \ 23393 "Ip6Bfd", \ 23394 "Ip6Vxlan", \ 23395 "Ip6Gpe", \ 23396 "Ip6GeneveNsh", \ 23397 "Ip61588Udp", \ 23398 "Ip6VxlanFlex", \ 23399 "Ip6IPinIP", \ 23400 "Ip6IPinGre", \ 23401 "Ip6Nvgre", \ 23402 "Ip6Geneve", \ 23403 "Ip6Gue", \ 23404 "Ip6Tcp", \ 23405 "Ip6Udp", \ 23406 "Ip6Icmp", \ 23407 "Ip6Igmp", \ 23408 "Ip6IpWithExtra4Bytes", \ 23409 "Ip6Sctp", \ 23410 "Ip6MplsInIpAny", \ 23411 "Ip6MplsInIpWithOneLabel", \ 23412 "Ip6MplsInIpWithTwoLabel", \ 23413 "Ip6MplsInIpWithThreeLabel", \ 23414 "Ip6MplsInIpWithFourLabel", \ 23415 "Ip6MplsInIpWithAnyCw", \ 23416 "Ip6MplsInIpWithOneLabelAndCw", \ 23417 "Ip6MplsInIpWithTwoLabelAndCw", \ 23418 "Ip6MplsInIpWithThreeLabelAndCw", \ 23419 "Ip6MplsInIpWithFourLabelAndCw", \ 23420 "NshOverMplsThreeLabel", \ 23421 "Ipv4UdpINT", \ 23422 "Ipv6UdpINT", \ 23423 "UdpINT", \ 23424 "Ipv4IOAM", \ 23425 "Ipv6IOAM", \ 23426 "IOAM", \ 23427 "Ipv4TcpINT", \ 23428 "Ipv6TcpINT", \ 23429 "TcpINT", \ 23430 "TcpIfa", \ 23431 "UdpIfa", \ 23432 "IpBfd", \ 23433 "Ethertype", \ 23434 "IpIcmp", \ 23435 "IpIgmp", \ 23436 "IpTcp", \ 23437 "IpUdp", \ 23438 "UnknownL3", \ 23439 "UnknownL4", \ 23440 "UnknownL5", \ 23441 "IpGpe", \ 23442 "IpGre", \ 23443 "IpGreChksum", \ 23444 "IpGreKey", \ 23445 "IpGreRout", \ 23446 "IpGreSeq", \ 23447 "IpIfa", \ 23448 "MplsAch", \ 23449 "IpVxlan", \ 23450 "Ipv4IOAME2E", \ 23451 "Ipv6IOAME2E", \ 23452 "IOAME2E", \ 23453 "UdpManyInOne", \ 23454 "TcpManyInOne" \ 23455 } 23456 23457 #ifndef BCM_HIDE_DISPATCHABLE 23458 23459 /* API to add Packet type to a field entry for qualification. */ 23460 extern int bcm_field_qualify_PktType( 23461 int unit, 23462 bcm_field_entry_t entry, 23463 bcm_field_pkt_type_t type); 23464 23465 /* API to retrieve field packet type associated to a field entry. */ 23466 extern int bcm_field_qualify_PktType_get( 23467 int unit, 23468 bcm_field_entry_t entry, 23469 bcm_field_pkt_type_t *type); 23470 23471 /* 23472 * API to add MPLS Control word present status to a field entry for field 23473 * qualification. 23474 */ 23475 extern int bcm_field_qualify_MplsCwPresent( 23476 int unit, 23477 bcm_field_entry_t entry, 23478 uint8 data, 23479 uint8 mask); 23480 23481 /* 23482 * API to retrieve MPLS Control word present status associated to a field 23483 * entry. 23484 */ 23485 extern int bcm_field_qualify_MplsCwPresent_get( 23486 int unit, 23487 bcm_field_entry_t entry, 23488 uint8 *data, 23489 uint8 *mask); 23490 23491 /* 23492 * API to add MPLS Multicast EtherType present status to a field entry 23493 * for qualification. 23494 */ 23495 extern int bcm_field_qualify_MplsMcastEthertypePresent( 23496 int unit, 23497 bcm_field_entry_t entry, 23498 uint8 data, 23499 uint8 mask); 23500 23501 /* 23502 * API to retrieve MPLS Multicast EtherType present status associated to 23503 * a field entry. 23504 */ 23505 extern int bcm_field_qualify_MplsMcastEthertypePresent_get( 23506 int unit, 23507 bcm_field_entry_t entry, 23508 uint8 *data, 23509 uint8 *mask); 23510 23511 #endif /* BCM_HIDE_DISPATCHABLE */ 23512 23513 /* bcm_field_ip_option_hdr_type_e */ 23514 typedef enum bcm_field_ip_option_hdr_type_e { 23515 bcmFieldIpOptionHdrTypeAH = 0, /* Authentication Header type */ 23516 bcmFieldIpOptionHdrTypeESP = 1, /* Encapsulating Security Payload type */ 23517 bcmFieldIpOptionHdrTypeWESP = 2, /* Wrapped ESP for traffic visibility 23518 type */ 23519 bcmFieldIpOptionHdrTypeAHESP = 3, /* Authentication Header and 23520 Encapsulating Security Payload type */ 23521 bcmFieldIpOptionHdrTypeAHWESP = 4, /* Authentication Header and Wrapped ESP 23522 type */ 23523 bcmFieldIpOptionHdrTypeGeneric = 5, /* Generic type */ 23524 bcmFieldIpOptionHdrTypeFrag = 6, /* Fragment type */ 23525 bcmFieldIpOptionHdrTypeGenericGeneric = 7, /* Generic over Generic type */ 23526 bcmFieldIpOptionHdrTypeGenericFrag = 8, /* Generic and Fragment type */ 23527 bcmFieldIpOptionHdrTypeGenericAH = 9, /* Generic and AH type */ 23528 bcmFieldIpOptionHdrTypeGenericESP = 10, /* Generic and ESP type */ 23529 bcmFieldIpOptionHdrTypeGenericWESP = 11, /* Generic and WESP type */ 23530 bcmFieldIpOptionHdrTypeFragAH = 12, /* Fragment and AH type */ 23531 bcmFieldIpOptionHdrTypeFragESP = 13, /* Fragment and ESP type */ 23532 bcmFieldIpOptionHdrTypeFragWESP = 14, /* Fragment and WESP type */ 23533 bcmFieldIpOptionHdrTypeAHExt2 = 15, /* Authentication Header type Ext hdr 2 */ 23534 bcmFieldIpOptionHdrTypeFragExt2 = 16, /* Fragment type Ext header 2 */ 23535 bcmFieldIpOptionHdrTypeLastCount = 17 /* Last count */ 23536 } bcm_field_ip_option_hdr_type_t; 23537 23538 #define BCM_FIELD_IP_OPTION_HDR_TYPE \ 23539 { \ 23540 "AH", \ 23541 "ESP", \ 23542 "WESP", \ 23543 "AHESP", \ 23544 "AHWESP", \ 23545 "Generic", \ 23546 "Frag", \ 23547 "GenericGeneric", \ 23548 "GenericFrag", \ 23549 "GenericAH", \ 23550 "GenericESP", \ 23551 "GenericWESP", \ 23552 "FragAH", \ 23553 "FragESP", \ 23554 "FragWESP", \ 23555 "AHExt2", \ 23556 "FragExt2" \ 23557 } 23558 23559 #ifndef BCM_HIDE_DISPATCHABLE 23560 23561 /* API to add IPv4 option header type to a field entry for qualification. */ 23562 extern int bcm_field_qualify_Ipv4OptionHdrType( 23563 int unit, 23564 bcm_field_entry_t entry, 23565 bcm_field_ip_option_hdr_type_t type); 23566 23567 /* 23568 * API to retrieve IPv4 option header type associated to a given field 23569 * entry. 23570 */ 23571 extern int bcm_field_qualify_Ipv4OptionHdrType_get( 23572 int unit, 23573 bcm_field_entry_t entry, 23574 bcm_field_ip_option_hdr_type_t *type); 23575 23576 /* 23577 * API to add IPv6 Extension header type to a field entry for 23578 * qualification. 23579 */ 23580 extern int bcm_field_qualify_Ipv6ExtensionHdrType( 23581 int unit, 23582 bcm_field_entry_t entry, 23583 bcm_field_ip_option_hdr_type_t type); 23584 23585 /* 23586 * API to retrieve IPv6 Extension header type associated to a field 23587 * entry. 23588 */ 23589 extern int bcm_field_qualify_Ipv6ExtensionHdrType_get( 23590 int unit, 23591 bcm_field_entry_t entry, 23592 bcm_field_ip_option_hdr_type_t *type); 23593 23594 /* API to add Overlay Vlan Tag Format to a field entry for qualification. */ 23595 extern int bcm_field_qualify_OverlayVlanFormat( 23596 int unit, 23597 bcm_field_entry_t entry, 23598 uint8 data, 23599 uint8 mask); 23600 23601 /* API to retrieve Overlay VLAN Tag format associated to a field entry. */ 23602 extern int bcm_field_qualify_OverlayVlanFormat_get( 23603 int unit, 23604 bcm_field_entry_t entry, 23605 uint8 *data, 23606 uint8 *mask); 23607 23608 /* 23609 * API to add Overlay L2 Packet type of a tunnel terminated packet to a 23610 * field entry for qualification. 23611 */ 23612 extern int bcm_field_qualify_OverlayL2PktType( 23613 int unit, 23614 bcm_field_entry_t entry, 23615 bcm_field_l2_pkt_type_t type); 23616 23617 /* API to retrieve Overlay L2 Packet type associated to a field entry. */ 23618 extern int bcm_field_qualify_OverlayL2PktType_get( 23619 int unit, 23620 bcm_field_entry_t entry, 23621 bcm_field_l2_pkt_type_t *type); 23622 23623 /* 23624 * API to add Overlay Packet type of a tunnel terminated packet to a 23625 * field entry for qualification. 23626 */ 23627 extern int bcm_field_qualify_OverlayPktType( 23628 int unit, 23629 bcm_field_entry_t entry, 23630 bcm_field_pkt_type_t type); 23631 23632 /* API to retrieve field packet type associated to a field entry. */ 23633 extern int bcm_field_qualify_OverlayPktType_get( 23634 int unit, 23635 bcm_field_entry_t entry, 23636 bcm_field_pkt_type_t *type); 23637 23638 /* 23639 * API to add IPv4 option header type of a tunnel terminated packet to a 23640 * field entry for qualification. 23641 */ 23642 extern int bcm_field_qualify_OverlayIpv4OptionHdrType( 23643 int unit, 23644 bcm_field_entry_t entry, 23645 bcm_field_ip_option_hdr_type_t type); 23646 23647 /* 23648 * API to retrieve IPv4 option header type associated to a given field 23649 * entry. 23650 */ 23651 extern int bcm_field_qualify_OverlayIpv4OptionHdrType_get( 23652 int unit, 23653 bcm_field_entry_t entry, 23654 bcm_field_ip_option_hdr_type_t *type); 23655 23656 /* 23657 * API to add Overlay IPv6 Extension header type of a tunnel terminated 23658 * packet to a field entry for qualification. 23659 */ 23660 extern int bcm_field_qualify_OverlayIpv6ExtensionHdrType( 23661 int unit, 23662 bcm_field_entry_t entry, 23663 bcm_field_ip_option_hdr_type_t type); 23664 23665 /* 23666 * API to retrieve IPv6 Extension header type associated to a field 23667 * entry. 23668 */ 23669 extern int bcm_field_qualify_OverlayIpv6ExtensionHdrType_get( 23670 int unit, 23671 bcm_field_entry_t entry, 23672 bcm_field_ip_option_hdr_type_t *type); 23673 23674 /* API to add qualification for Front panel packet to a field entry. */ 23675 extern int bcm_field_qualify_FrontPanelPkt( 23676 int unit, 23677 bcm_field_entry_t entry, 23678 uint8 data, 23679 uint8 mask); 23680 23681 /* 23682 * API to retrieve Front panel packet status of a incoming packet 23683 * associated to a given field entry. 23684 */ 23685 extern int bcm_field_qualify_FrontPanelPkt_get( 23686 int unit, 23687 bcm_field_entry_t entry, 23688 uint8 *data, 23689 uint8 *mask); 23690 23691 #endif /* BCM_HIDE_DISPATCHABLE */ 23692 23693 /* bcm_field_higig_proxy_tunnel_type_e */ 23694 typedef enum bcm_field_higig_proxy_tunnel_type_e { 23695 bcmFieldHiGigProxyTunnelTypeAny = 0, /* HiGig Proxy Tunnel Any. */ 23696 bcmFieldHiGigProxyTunnelTypeVxlan = 1, /* HiGig Proxy on VXLAN tunnel. */ 23697 bcmFieldHiGigProxyTunnelTypeL2Gre = 2, /* HiGig Proxy on L2GRE tunnel. */ 23698 bcmFieldHiGigProxyTunnelTypeMim = 3, /* HiGig Proxy on MIM tunnel. */ 23699 bcmFieldHiGigProxyTunnelTypeLastCount = 4 /* Always Last. Not a usable value. */ 23700 } bcm_field_higig_proxy_tunnel_type_t; 23701 23702 #define BCM_FIELD_HIGIG_PROXY_TUNNEL_TYPE \ 23703 { \ 23704 "Any", \ 23705 "Vxlan", \ 23706 "L2Gre", \ 23707 "Mim" \ 23708 } 23709 23710 #ifndef BCM_HIDE_DISPATCHABLE 23711 23712 /* API to add HiGig Proxy tunnel type to a field entry for qualification. */ 23713 extern int bcm_field_qualify_HiGigProxyTunnelType( 23714 int unit, 23715 bcm_field_entry_t entry, 23716 bcm_field_higig_proxy_tunnel_type_t type); 23717 23718 /* Retrieve HiGig Proxy tunnel type associated to a field entry. */ 23719 extern int bcm_field_qualify_HiGigProxyTunnelType_get( 23720 int unit, 23721 bcm_field_entry_t entry, 23722 bcm_field_higig_proxy_tunnel_type_t *type); 23723 23724 /* 23725 * API to add to match on IPMC Ipv4 packet qualification to a field 23726 * entry. 23727 */ 23728 extern int bcm_field_qualify_IpmcV4Pkt( 23729 int unit, 23730 bcm_field_entry_t entry, 23731 uint8 data, 23732 uint8 mask); 23733 23734 /* API to retrieve IPMC Ipv4 packet qualification from a field entry. */ 23735 extern int bcm_field_qualify_IpmcV4Pkt_get( 23736 int unit, 23737 bcm_field_entry_t entry, 23738 uint8 *data, 23739 uint8 *mask); 23740 23741 /* 23742 * API to add to match on IPMC Ipv6 packet qualification to a field 23743 * entry. 23744 */ 23745 extern int bcm_field_qualify_IpmcV6Pkt( 23746 int unit, 23747 bcm_field_entry_t entry, 23748 uint8 data, 23749 uint8 mask); 23750 23751 /* API to retrieve IPMC Ipv6 packet qualification from a field entry. */ 23752 extern int bcm_field_qualify_IpmcV6Pkt_get( 23753 int unit, 23754 bcm_field_entry_t entry, 23755 uint8 *data, 23756 uint8 *mask); 23757 23758 /* 23759 * Add to match on Network tag (VnTag or Etag) multicast packet 23760 * qualification to a field entry. 23761 */ 23762 extern int bcm_field_qualify_NetworkTagMulticastPkt( 23763 int unit, 23764 bcm_field_entry_t entry, 23765 uint8 data, 23766 uint8 mask); 23767 23768 /* 23769 * Get to match on Network tag (VnTag or Etag) multicast packet 23770 * qualification from a field entry. 23771 */ 23772 extern int bcm_field_qualify_NetworkTagMulticastPkt_get( 23773 int unit, 23774 bcm_field_entry_t entry, 23775 uint8 *data, 23776 uint8 *mask); 23777 23778 /* 23779 * Add to match on IP packet with zero TTL qualification to a field 23780 * entry. 23781 */ 23782 extern int bcm_field_qualify_IpTtlZeroPkt( 23783 int unit, 23784 bcm_field_entry_t entry, 23785 uint8 data, 23786 uint8 mask); 23787 23788 /* 23789 * Get to match on IP packet with TTL zero qualification from a field 23790 * entry. 23791 */ 23792 extern int bcm_field_qualify_IpTtlZeroPkt_get( 23793 int unit, 23794 bcm_field_entry_t entry, 23795 uint8 *data, 23796 uint8 *mask); 23797 23798 /* Add to match on IP fragment packet qualification to a field entry. */ 23799 extern int bcm_field_qualify_IpFragPkt( 23800 int unit, 23801 bcm_field_entry_t entry, 23802 uint8 data, 23803 uint8 mask); 23804 23805 /* Get to match on IP Fragment packet qualification from a field entry. */ 23806 extern int bcm_field_qualify_IpFragPkt_get( 23807 int unit, 23808 bcm_field_entry_t entry, 23809 uint8 *data, 23810 uint8 *mask); 23811 23812 /* 23813 * Add to match on outer priority tagged packet qualification to a field 23814 * entry. 23815 */ 23816 extern int bcm_field_qualify_OuterPriTaggedPkt( 23817 int unit, 23818 bcm_field_entry_t entry, 23819 uint8 data, 23820 uint8 mask); 23821 23822 /* 23823 * Get to match on outer priority tagged packet qualification from a 23824 * field entry. 23825 */ 23826 extern int bcm_field_qualify_OuterPriTaggedPkt_get( 23827 int unit, 23828 bcm_field_entry_t entry, 23829 uint8 *data, 23830 uint8 *mask); 23831 23832 /* 23833 * Add to match on IP in IP packet with zero TTL qualification to a field 23834 * entry. 23835 */ 23836 extern int bcm_field_qualify_IpInIpPkt( 23837 int unit, 23838 bcm_field_entry_t entry, 23839 uint8 data, 23840 uint8 mask); 23841 23842 /* Get to match on IP in IP packet qualification from a field entry. */ 23843 extern int bcm_field_qualify_IpInIpPkt_get( 23844 int unit, 23845 bcm_field_entry_t entry, 23846 uint8 *data, 23847 uint8 *mask); 23848 23849 /* 23850 * Add to match on IP packet with checksum OK qualification to a field 23851 * entry. 23852 */ 23853 extern int bcm_field_qualify_IpChecksumOkPkt( 23854 int unit, 23855 bcm_field_entry_t entry, 23856 uint8 data, 23857 uint8 mask); 23858 23859 /* 23860 * Get to match on IP packet with checksum OK qualification from a field 23861 * entry. 23862 */ 23863 extern int bcm_field_qualify_IpChecksumOkPkt_get( 23864 int unit, 23865 bcm_field_entry_t entry, 23866 uint8 *data, 23867 uint8 *mask); 23868 23869 /* 23870 * Add to match on PIM Bidirectional designated forwarding bit of the 23871 * incoming packet qualification to a field entry. 23872 */ 23873 extern int bcm_field_qualify_PimBidirDfStatus( 23874 int unit, 23875 bcm_field_entry_t entry, 23876 uint8 data, 23877 uint8 mask); 23878 23879 /* 23880 * Get to match on PIM Bidrectional designated forwarding bit of the 23881 * incoming packet qualification from a field entry. 23882 */ 23883 extern int bcm_field_qualify_PimBidirDfStatus_get( 23884 int unit, 23885 bcm_field_entry_t entry, 23886 uint8 *data, 23887 uint8 *mask); 23888 23889 #endif /* BCM_HIDE_DISPATCHABLE */ 23890 23891 /* bcm_field_interface_class_l2_type_e */ 23892 typedef enum bcm_field_interface_class_l2_type_e { 23893 bcmFieldInterfaceClassL2TypeVlan = 0, /* Class ID is from VLAN. */ 23894 bcmFieldInterfaceClassL2TypeVfi = 1, /* Class ID is from VFI. */ 23895 bcmFieldInterfaceClassL2TypeLastCount = 2 /* Always Last. Not a usable value. */ 23896 } bcm_field_interface_class_l2_type_t; 23897 23898 #define BCM_FIELD_INTERFACE_CLASS_L2_TYPE \ 23899 { \ 23900 "Vlan", \ 23901 "Vfi" \ 23902 } 23903 23904 #ifndef BCM_HIDE_DISPATCHABLE 23905 23906 /* Add Interface Class L2 type field qualification to a field entry. */ 23907 extern int bcm_field_qualify_InterfaceClassL2Type( 23908 int unit, 23909 bcm_field_entry_t entry, 23910 bcm_field_interface_class_l2_type_t type); 23911 23912 /* Get Interface Class L2 type field qualification from a field entry. */ 23913 extern int bcm_field_qualify_InterfaceClassL2Type_get( 23914 int unit, 23915 bcm_field_entry_t entry, 23916 bcm_field_interface_class_l2_type_t *type); 23917 23918 /* 23919 * Add to match on INT (Inband-Telemetry) header version packet 23920 * qualification to a field entry. 23921 */ 23922 extern int bcm_field_qualify_IntPktVersionOne( 23923 int unit, 23924 bcm_field_entry_t entry, 23925 uint8 data, 23926 uint8 mask); 23927 23928 /* 23929 * Get to match on INT (Inband-Telemetry) header version one packet 23930 * qualification from a field entry. 23931 */ 23932 extern int bcm_field_qualify_IntPktVersionOne_get( 23933 int unit, 23934 bcm_field_entry_t entry, 23935 uint8 *data, 23936 uint8 *mask); 23937 23938 /* 23939 * Add to match on INT (Inband-Telemetry) header Overflow Bit packet 23940 * qualification to a field entry. 23941 */ 23942 extern int bcm_field_qualify_IntPktOverflowed( 23943 int unit, 23944 bcm_field_entry_t entry, 23945 uint8 data, 23946 uint8 mask); 23947 23948 /* 23949 * Get to match on INT (Inband-Telemetry) header Overflow Bit packet 23950 * qualification from a field entry. 23951 */ 23952 extern int bcm_field_qualify_IntPktOverflowed_get( 23953 int unit, 23954 bcm_field_entry_t entry, 23955 uint8 *data, 23956 uint8 *mask); 23957 23958 /* 23959 * Add to match on INT (Inband-Telemetry) Valid Length Check packet 23960 * qualification to a field entry. 23961 */ 23962 extern int bcm_field_qualify_IntPktLengthValid( 23963 int unit, 23964 bcm_field_entry_t entry, 23965 uint8 data, 23966 uint8 mask); 23967 23968 /* 23969 * Get to match on INT (Inband-Telemetry) Valid Length Check packet 23970 * qualification from a field entry. 23971 */ 23972 extern int bcm_field_qualify_IntPktLengthValid_get( 23973 int unit, 23974 bcm_field_entry_t entry, 23975 uint8 *data, 23976 uint8 *mask); 23977 23978 #endif /* BCM_HIDE_DISPATCHABLE */ 23979 23980 /* bcm_field_int_pkt_type_e */ 23981 typedef enum bcm_field_int_pkt_type_e { 23982 bcmFieldIntPktTypeProbeReply = 0, /* INT Probe Reply. */ 23983 bcmFieldIntPktTypeProbeRequest = 1, /* INT Probe Request. */ 23984 bcmFieldIntPktTypeLastCount = 2 /* Always Last. Not a usable value. */ 23985 } bcm_field_int_pkt_type_t; 23986 23987 #define BCM_FIELD_INT_PKT_TYPE \ 23988 { \ 23989 "ProbeReply", \ 23990 "ProbeRequest" \ 23991 } 23992 23993 #ifndef BCM_HIDE_DISPATCHABLE 23994 23995 /* 23996 * Add INT (Inband-Telemetry) Packet type field qualification to a field 23997 * entry. 23998 */ 23999 extern int bcm_field_qualify_IntPktType( 24000 int unit, 24001 bcm_field_entry_t entry, 24002 bcm_field_int_pkt_type_t type); 24003 24004 /* 24005 * Get INT (Inband-Telemetry) Packet type field qualification from a 24006 * field entry. 24007 */ 24008 extern int bcm_field_qualify_IntPktType_get( 24009 int unit, 24010 bcm_field_entry_t entry, 24011 bcm_field_int_pkt_type_t *type); 24012 24013 /* 24014 * Add to match on INT (Inband-Telemetry) Maximum Hop Limit Check packet 24015 * qualification to a field entry. 24016 */ 24017 extern int bcm_field_qualify_IntPktFinalHop( 24018 int unit, 24019 bcm_field_entry_t entry, 24020 uint8 data, 24021 uint8 mask); 24022 24023 /* 24024 * Get to match on INT (Inband-Telemetry) Max Hop Limit Check packet 24025 * qualification from a field entry. 24026 */ 24027 extern int bcm_field_qualify_IntPktFinalHop_get( 24028 int unit, 24029 bcm_field_entry_t entry, 24030 uint8 *data, 24031 uint8 *mask); 24032 24033 #endif /* BCM_HIDE_DISPATCHABLE */ 24034 24035 /* Field Qualifier TunnelSubType (for bcm_field_qualify_TunnelSubType). */ 24036 typedef enum bcm_field_TunnelSubType_e { 24037 bcmFieldTunnelSubTypeNshOverGpeWithL3Pyld = 0, /* NSH with L3 Payload Tunnel in GPE. */ 24038 bcmFieldTunnelSubTypeNshOverL2WithL3Pyld = 1, /* NSH with L3 Payload Tunnel in L2 */ 24039 bcmFieldTunnelSubTypeNshOverMplsWithL3Pyld = 2, /* NSH with L3 Payload Tunnel in MPLS */ 24040 bcmFieldTunnelSubTypeUnknown = 3, /* Subtype Unknown or None. */ 24041 bcmFieldTunnelSubTypeCount = 4 /* Always Last. Not a usable value. */ 24042 } bcm_field_TunnelSubType_t; 24043 24044 #define BCM_FIELD_TUNNELSUBTYPE_STRINGS \ 24045 { \ 24046 "NshOverGpeWithL3Pyld", \ 24047 "NshOverL2WithL3Pyld", \ 24048 "NshOverMplsWithL3Pyld", \ 24049 "Unknown" \ 24050 } 24051 24052 #ifndef BCM_HIDE_DISPATCHABLE 24053 24054 /* Add tunnel sub-type field qualification to a field entry. */ 24055 extern int bcm_field_qualify_TunnelSubType( 24056 int unit, 24057 bcm_field_entry_t entry, 24058 bcm_field_TunnelSubType_t type); 24059 24060 /* Get tunnel sub-type field qualification from a field entry. */ 24061 extern int bcm_field_qualify_TunnelSubType_get( 24062 int unit, 24063 bcm_field_entry_t entry, 24064 bcm_field_TunnelSubType_t *type); 24065 24066 #endif /* BCM_HIDE_DISPATCHABLE */ 24067 24068 /* PMF pass. */ 24069 typedef enum bcm_field_pmf_pass_e { 24070 bcmFieldPmfPass0 = 0, /* Pass-0 */ 24071 bcmFieldPmfPass1 = 1, /* Pass-1 */ 24072 bcmFieldPmfPassCount = 2 /* nof pass. */ 24073 } bcm_field_pmf_pass_t; 24074 24075 /* 24076 * Indicates the maximum number of context selection qualifiers which can 24077 * be defined per single preselection entry 24078 */ 24079 #define BCM_FIELD_MAX_NOF_CS_QUALIFIERS (32) 24080 24081 /* Preselector identifier structure. */ 24082 typedef struct bcm_field_presel_entry_id_s { 24083 bcm_field_presel_t presel_id; /* ID of the preselector entry. */ 24084 bcm_field_stage_t stage; /* Preselection stage */ 24085 } bcm_field_presel_entry_id_t; 24086 24087 /* Preselector qualifier data structure. */ 24088 typedef struct bcm_field_presel_qualify_data_s { 24089 bcm_field_qualify_t qual_type; /* Type of the qualifier. */ 24090 int qual_arg; /* Qualifier argument */ 24091 uint32 qual_value; /* Value of the qualifier */ 24092 uint32 qual_mask; /* Mask of the qualifier */ 24093 } bcm_field_presel_qualify_data_t; 24094 24095 /* Preselector qualifier data structure. */ 24096 typedef struct bcm_field_presel_entry_data_s { 24097 uint8 entry_valid; /* If set, the whole preselection entry 24098 is set as valid. */ 24099 bcm_field_context_t context_id; /* ID of the PMF context. */ 24100 uint32 nof_qualifiers; /* Number of used qualifiers for CS. */ 24101 bcm_field_presel_qualify_data_t qual_data[BCM_FIELD_MAX_NOF_CS_QUALIFIERS]; /* Array of data of the used qualifiers. */ 24102 } bcm_field_presel_entry_data_t; 24103 24104 #ifndef BCM_HIDE_DISPATCHABLE 24105 24106 /* API to match on NSH Service Path ID. */ 24107 extern int bcm_field_qualify_NshServicePathId( 24108 int unit, 24109 bcm_field_entry_t entry, 24110 uint32 data, 24111 uint32 mask); 24112 24113 /* 24114 * Retrieve the match criteria fields for NshServicePathId qualifier 24115 * associated to a given field entry. 24116 */ 24117 extern int bcm_field_qualify_NshServicePathId_get( 24118 int unit, 24119 bcm_field_entry_t entry, 24120 uint32 *data, 24121 uint32 *mask); 24122 24123 /* API to match on NSH Service Index. */ 24124 extern int bcm_field_qualify_NshServiceIndex( 24125 int unit, 24126 bcm_field_entry_t entry, 24127 uint32 data, 24128 uint32 mask); 24129 24130 /* 24131 * Retrieve the match criteria fields for NshServiceIndex qualifier 24132 * associated to a given field entry. 24133 */ 24134 extern int bcm_field_qualify_NshServiceIndex_get( 24135 int unit, 24136 bcm_field_entry_t entry, 24137 uint32 *data, 24138 uint32 *mask); 24139 24140 /* 24141 * Qualifies on Roe frame type set in MPLS entry for a MPLS packet or 24142 * based on UDP port number for an IP tunnel packet. 24143 */ 24144 extern int bcm_field_qualify_RoeFrameType( 24145 int unit, 24146 bcm_field_entry_t entry, 24147 bcm_field_roe_frame_type_t data); 24148 24149 /* 24150 * To get the qualified inputs on the Roe frame type (see \ref 24151 * fp_bcm_field_roe_frame_type_t). 24152 */ 24153 extern int bcm_field_qualify_RoeFrameType_get( 24154 int unit, 24155 bcm_field_entry_t entry, 24156 bcm_field_roe_frame_type_t *data); 24157 24158 #endif /* BCM_HIDE_DISPATCHABLE */ 24159 24160 /* Initialize the bcm_field_presel_entry_id_t structure. */ 24161 extern void bcm_field_presel_entry_id_info_init( 24162 bcm_field_presel_entry_id_t *entry_id); 24163 24164 /* Initialize the bcm_field_presel_entry_data_t structure. */ 24165 extern void bcm_field_presel_entry_data_info_init( 24166 bcm_field_presel_entry_data_t *entry_data); 24167 24168 #ifndef BCM_HIDE_DISPATCHABLE 24169 24170 /* Set a preselector entity information. */ 24171 extern int bcm_field_presel_set( 24172 int unit, 24173 uint32 flags, 24174 bcm_field_presel_entry_id_t *entry_id, 24175 bcm_field_presel_entry_data_t *entry_data); 24176 24177 /* Set a preselector entity information. */ 24178 extern int bcm_field_presel_get( 24179 int unit, 24180 uint32 flags, 24181 bcm_field_presel_entry_id_t *entry_id, 24182 bcm_field_presel_entry_data_t *entry_data); 24183 24184 /* 24185 * API to match on BFD Good packet (Good here represents the valid TTL 24186 * range for 1-hop and M-hop). 24187 */ 24188 extern int bcm_field_qualify_BfdGoodPkt( 24189 int unit, 24190 bcm_field_entry_t entry, 24191 uint8 data, 24192 uint8 mask); 24193 24194 /* 24195 * Retrieve the match criteria fields for BfdGoodPkt qualifier associated 24196 * to a given field entry. 24197 */ 24198 extern int bcm_field_qualify_BfdGoodPkt_get( 24199 int unit, 24200 bcm_field_entry_t entry, 24201 uint8 *data, 24202 uint8 *mask); 24203 24204 /* 24205 * API to match whether the incoming BFD packet has destination loopback 24206 * IP Address. 24207 */ 24208 extern int bcm_field_qualify_BfdPktWithDstIpLoopbackAddr( 24209 int unit, 24210 bcm_field_entry_t entry, 24211 uint8 data, 24212 uint8 mask); 24213 24214 /* 24215 * Retrieve the match criteria fields for BfdPktWithDstIpLoopbackAddr 24216 * qualifier associated to a given field entry. 24217 */ 24218 extern int bcm_field_qualify_BfdPktWithDstIpLoopbackAddr_get( 24219 int unit, 24220 bcm_field_entry_t entry, 24221 uint8 *data, 24222 uint8 *mask); 24223 24224 /* 24225 * API to match on MPLS Control Packet (MPLS packet with VCCV_1/2/3/4 and 24226 * [LSP]/GAL/G-ACH). 24227 */ 24228 extern int bcm_field_qualify_MplsControlPkt( 24229 int unit, 24230 bcm_field_entry_t entry, 24231 uint8 data, 24232 uint8 mask); 24233 24234 /* 24235 * Retrieve the match criteria fields for MplsControlPkt qualifier 24236 * associated to a given field entry. 24237 */ 24238 extern int bcm_field_qualify_MplsControlPkt_get( 24239 int unit, 24240 bcm_field_entry_t entry, 24241 uint8 *data, 24242 uint8 *mask); 24243 24244 /* 24245 * Get match criteria for bcmFieldQualifyIpTunnelTtlClassZero 24246 * qualifier from the field entry. 24247 */ 24248 extern int bcm_field_qualify_IpTunnelTtlClassZero_get( 24249 int unit, 24250 bcm_field_entry_t entry, 24251 bcm_class_t *data, 24252 bcm_class_t *mask); 24253 24254 /* 24255 * Configure match criteria for bcmFieldQualifyIpTunnelTtl 24256 * qualifier from the field entry. 24257 */ 24258 extern int bcm_field_qualify_IpTunnelTtl( 24259 int unit, 24260 bcm_field_entry_t entry, 24261 uint8 data, 24262 uint8 mask); 24263 24264 /* 24265 * Get match criteria for bcmFieldQualifyIpTunnelTtl 24266 * qualifier from the field entry. 24267 */ 24268 extern int bcm_field_qualify_IpTunnelTtl_get( 24269 int unit, 24270 bcm_field_entry_t entry, 24271 uint8 *data, 24272 uint8 *mask); 24273 24274 /* To qualify on Class identifier derived from MPLS label 1 entry Lookup */ 24275 extern int bcm_field_qualify_InterfaceClassMplsLookup1( 24276 int unit, 24277 bcm_field_entry_t entry, 24278 uint16 data, 24279 uint16 mask); 24280 24281 /* 24282 * To get the qualified inputs on Class identifier derived from MPLS 24283 * label 1 entry Lookup 24284 */ 24285 extern int bcm_field_qualify_InterfaceClassMplsLookup1_get( 24286 int unit, 24287 bcm_field_entry_t entry, 24288 uint16 *data, 24289 uint16 *mask); 24290 24291 /* To qualify on Class identifier derived from MPLS label 2 entry Lookup */ 24292 extern int bcm_field_qualify_InterfaceClassMplsLookup2( 24293 int unit, 24294 bcm_field_entry_t entry, 24295 uint16 data, 24296 uint16 mask); 24297 24298 /* 24299 * To get the qualified inputs on Class identifier derived from MPLS 24300 * label 2 entry Lookup 24301 */ 24302 extern int bcm_field_qualify_InterfaceClassMplsLookup2_get( 24303 int unit, 24304 bcm_field_entry_t entry, 24305 uint16 *data, 24306 uint16 *mask); 24307 24308 /* To qualify on Class identifier derived from MPLS label 3 entry Lookup */ 24309 extern int bcm_field_qualify_InterfaceClassMplsLookup3( 24310 int unit, 24311 bcm_field_entry_t entry, 24312 uint16 data, 24313 uint16 mask); 24314 24315 /* 24316 * To get the qualified inputs on Class identifier derived from MPLS 24317 * label 3 entry Lookup 24318 */ 24319 extern int bcm_field_qualify_InterfaceClassMplsLookup3_get( 24320 int unit, 24321 bcm_field_entry_t entry, 24322 uint16 *data, 24323 uint16 *mask); 24324 24325 /* To qualify on Class identifier derived from L3 Tunnel */ 24326 extern int bcm_field_qualify_InterfaceClassL3Tunnel( 24327 int unit, 24328 bcm_field_entry_t entry, 24329 uint16 data, 24330 uint16 mask); 24331 24332 /* To get the qualified inputs on Class identifier derived from L3 Tunnel */ 24333 extern int bcm_field_qualify_InterfaceClassL3Tunnel_get( 24334 int unit, 24335 bcm_field_entry_t entry, 24336 uint16 *data, 24337 uint16 *mask); 24338 24339 #endif /* BCM_HIDE_DISPATCHABLE */ 24340 24341 #define BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP (32) /* Default constant for 24342 number of qualifiers 24343 per field group. */ 24344 #define BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP (32) /* Default constant for 24345 number of actions per 24346 field group. */ 24347 #define BCM_FIELD_NUMBER_OF_TCAM_BANKS (16) /* Default constant for 24348 number of TCAM banks. */ 24349 #define BCM_FIELD_NUMBER_OF_HASH_KEYS (8) /* Default constant for 24350 number of hash keys 24351 per hash context. */ 24352 24353 /* Field Group Types. */ 24354 typedef enum bcm_field_group_type_e { 24355 bcmFieldGroupTypeTcam = 0, /* TCAM Lookup group (Default). */ 24356 bcmFieldGroupTypeDirectTcam = 1, /* Direct group (no TCAM lookup). */ 24357 bcmFieldGroupTypeDirectMdb = 2, /* Direct group (MDB Interface). */ 24358 bcmFieldGroupTypeDirectExtraction = 3, /* Direct extraction (instead of TCAM) 24359 group. */ 24360 bcmFieldGroupTypeExactMatch = 4, /* Exact match group - partial masking 24361 is not supported. */ 24362 bcmFieldGroupTypeStateTable = 5, /* State Table group. */ 24363 bcmFieldGroupTypeExternalTcam = 6, /* External TCAM lookup group. */ 24364 bcmFieldGroupTypeConst = 7, /* Define Field Group with zero key 24365 size. */ 24366 bcmFieldGroupTypeCount = 8 /* Always last. Not a usable value. */ 24367 } bcm_field_group_type_t; 24368 24369 #define BCM_FIELD_GROUP_TYPE_STRINGS \ 24370 { \ 24371 "Tcam", \ 24372 "DirectTcam", \ 24373 "DirectMdb", \ 24374 "DirectExtraction", \ 24375 "ExactMatch", \ 24376 "StateTable", \ 24377 "ExternalTcam", \ 24378 "Const" \ 24379 } 24380 24381 /* Bank allocation modes. */ 24382 typedef enum bcm_field_tcam_bank_allocation_mode_e { 24383 bcmFieldTcamBankAllocationModeInvalid = -1, /* Invalid. */ 24384 bcmFieldTcamBankAllocationModeAuto = 0, /* Auto TCAM bank allocation mode: 24385 Starts with no banks and allocates 24386 banks on demand. */ 24387 bcmFieldTcamBankAllocationModeSelect = 1, /* Select TCAM bank allocation mode: 24388 For field groups with this type of 24389 allocation mode, user may supply an 24390 additional array when adding the 24391 field group to allocate certain bank 24392 ids. User can also later use the 24393 function 'bcm_field_tcam_bank_add()' 24394 to add banks to the field group 24395 allocated banks list */ 24396 bcmFieldTcamBankAllocationModeSelectWithLocation = 2, /* Select with location TCAM bank 24397 allocation mode: For field groups 24398 with this type of allocation mode, in 24399 addition to supplying banks to 24400 allocate array when adding the field 24401 group, per entry adding, priority 24402 acts as the location to insert the 24403 entry to. */ 24404 bcmFieldTcamBankAllocationModeCount = 3 /* Always last. Not a usable value. */ 24405 } bcm_field_tcam_bank_allocation_mode_t; 24406 24407 #define BCM_FIELD_TCAM_BANK_ALLOCATION_MODE_STRINGS \ 24408 { \ 24409 "Auto", \ 24410 "Select", \ 24411 "SelectWithLocation" \ 24412 } 24413 24414 /* 24415 * This structure holds the advanced parameters for TCAM type FG in 24416 * bcm_field_group_add() function. 24417 */ 24418 typedef struct bcm_field_group_tcam_info_s { 24419 int nof_tcam_banks; /* Number of TCAM banks to reserve for 24420 the given field group. */ 24421 int tcam_bank_ids[BCM_FIELD_NUMBER_OF_TCAM_BANKS]; /* The list of TCAM bank IDs to reserve 24422 for the field group to be created. 24423 This list is only valid for TCAM 24424 field groups. */ 24425 bcm_field_tcam_bank_allocation_mode_t bank_allocation_mode; /* Bank allocation mode, see 24426 bcm_field_tcam_bank_allocation_mode_e 24427 in field.h. */ 24428 } bcm_field_group_tcam_info_t; 24429 24430 /* 24431 * This structure holds the advanced parameters for TCAM type FG in 24432 * bcm_field_group_add() function. 24433 */ 24434 typedef struct bcm_field_group_external_info_s { 24435 uint8 capacity_valid; /* True when capacity has a meaningful info, 24436 otherwise default values are set. */ 24437 uint32 capacity; /* Set the minimum capacity reserved in 24438 EXTERNAL TCAM. Used if capacity_valid is 24439 true. */ 24440 uint8 algorithmic_mode_valid; /* Whether to set the property ALGORITHMIC 24441 for algorithmic mode */ 24442 uint32 algorithmic_mode; /* Set the algorithmic mode (algorithmic 24443 property) to this value. Used if 24444 algorithmic_mode_valid is true. */ 24445 } bcm_field_group_external_info_t; 24446 24447 /* Maximum length for a short name. */ 24448 #define BCM_FIELD_MAX_SHORT_NAME_LEN (72) 24449 24450 /* 24451 * This structure holds the basic parameters for bcm_field_group_add() 24452 * function. 24453 */ 24454 typedef struct bcm_field_group_info_s { 24455 bcm_field_stage_t stage; /* Field stage, for which stage the 24456 Field Group was created. */ 24457 bcm_field_group_type_t fg_type; /* Field Group type: The database may 24458 be: TCAM, Direct Table,Direct 24459 Extraction, Exact Match, Hashing, 24460 StateTable or MDB. */ 24461 int nof_quals; /* Number of valid qualifiers in the 24462 Field Group. */ 24463 bcm_field_qualify_t qual_types[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* BCM level qualifier look at 24464 bcm_field_qualify_t for more info. 24465 Number of meaningful elements on this 24466 array according to nof_quals. */ 24467 uint8 qual_is_ranged[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* If set, indicates that the 24468 corresponding qualifier is expected 24469 to accept a range of values for a 24470 single entry. */ 24471 int nof_actions; /* Number of valid actions in the action 24472 set of field group. */ 24473 bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to 24474 matching entries for this action set. */ 24475 int action_with_valid_bit[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* If set, then additional bit is added 24476 in payload to indicate weather this 24477 action is valid. */ 24478 bcm_field_group_tcam_info_t tcam_info; /* Advanced parameters for TCAM field 24479 group */ 24480 bcm_field_group_external_info_t external_info; /* Advanced parameters for external TCAM 24481 field group */ 24482 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 24483 int *ext_acl_db; /* Pointer to ext_acl_db. */ 24484 } bcm_field_group_info_t; 24485 24486 #ifndef BCM_HIDE_DISPATCHABLE 24487 24488 /* Add to match on BFD version packet qualification to a field entry. */ 24489 extern int bcm_field_qualify_BfdPktVersionOne( 24490 int unit, 24491 bcm_field_entry_t entry, 24492 uint8 data, 24493 uint8 mask); 24494 24495 /* Get BFD version one packet qualification from a field entry. */ 24496 extern int bcm_field_qualify_BfdPktVersionOne_get( 24497 int unit, 24498 bcm_field_entry_t entry, 24499 uint8 *data, 24500 uint8 *mask); 24501 24502 /* 24503 * Add to match on Inner BFD version packet qualification to a field 24504 * entry. 24505 */ 24506 extern int bcm_field_qualify_InnerBfdPktVersionOne( 24507 int unit, 24508 bcm_field_entry_t entry, 24509 uint8 data, 24510 uint8 mask); 24511 24512 /* Get Inner BFD version one packet qualification from a field entry. */ 24513 extern int bcm_field_qualify_InnerBfdPktVersionOne_get( 24514 int unit, 24515 bcm_field_entry_t entry, 24516 uint8 *data, 24517 uint8 *mask); 24518 24519 /* 24520 * Add to match on Geneve version 0 packet qualification to a field 24521 * entry. 24522 */ 24523 extern int bcm_field_qualify_GenevePktVersionZero( 24524 int unit, 24525 bcm_field_entry_t entry, 24526 uint8 data, 24527 uint8 mask); 24528 24529 /* Retreive Geneve version zero packet qualification from a field entry. */ 24530 extern int bcm_field_qualify_GenevePktVersionZero_get( 24531 int unit, 24532 bcm_field_entry_t entry, 24533 uint8 *data, 24534 uint8 *mask); 24535 24536 /* Add to match on Gpe version 0 packet qualification to a field entry. */ 24537 extern int bcm_field_qualify_GpePktVersionZero( 24538 int unit, 24539 bcm_field_entry_t entry, 24540 uint8 data, 24541 uint8 mask); 24542 24543 /* Retreive Gpe version zero packet qualification from a field entry. */ 24544 extern int bcm_field_qualify_GpePktVersionZero_get( 24545 int unit, 24546 bcm_field_entry_t entry, 24547 uint8 *data, 24548 uint8 *mask); 24549 24550 /* Add to match on OAM over Geneve packet qualification to a field entry. */ 24551 extern int bcm_field_qualify_GenevePktWithOam( 24552 int unit, 24553 bcm_field_entry_t entry, 24554 uint8 data, 24555 uint8 mask); 24556 24557 /* Retreive OAM over Geneve packet qualification from a field entry. */ 24558 extern int bcm_field_qualify_GenevePktWithOam_get( 24559 int unit, 24560 bcm_field_entry_t entry, 24561 uint8 *data, 24562 uint8 *mask); 24563 24564 /* Add to match on OAM over Gpe packet qualification to a field entry. */ 24565 extern int bcm_field_qualify_GpePktWithOam( 24566 int unit, 24567 bcm_field_entry_t entry, 24568 uint8 data, 24569 uint8 mask); 24570 24571 /* Retreive OAM over Gpe packet qualification from a field entry. */ 24572 extern int bcm_field_qualify_GpePktWithOam_get( 24573 int unit, 24574 bcm_field_entry_t entry, 24575 uint8 *data, 24576 uint8 *mask); 24577 24578 #endif /* BCM_HIDE_DISPATCHABLE */ 24579 24580 /* 24581 * Parameter flags form 24582 * bcmQualifyPktDstAddrType/bcmQualifyPktInnerDstAddrType. 24583 */ 24584 #define BCM_FIELD_PKT_DST_ADDR_TYPE_UCAST_MAC (1 << 0) /* Indicates the packet 24585 has unicast 24586 destination mac 24587 address. */ 24588 #define BCM_FIELD_PKT_DST_ADDR_TYPE_MCAST_MAC (1 << 1) /* Indicates the packet 24589 has multicast 24590 destination mac 24591 address. */ 24592 #define BCM_FIELD_PKT_DST_ADDR_TYPE_BCAST_MAC (1 << 2) /* Indicates the packet 24593 has broadcast 24594 destination mac 24595 address. */ 24596 #define BCM_FIELD_PKT_DST_ADDR_TYPE_UCAST_IP (1 << 3) /* Indicates the packet 24597 has unicast 24598 destination ip 24599 address. */ 24600 #define BCM_FIELD_PKT_DST_ADDR_TYPE_MCAST_IP (1 << 4) /* Indicates the packet 24601 has multicast 24602 destination ip 24603 address. */ 24604 #define BCM_FIELD_PKT_DST_ADDR_TYPE_BCAST_IP (1 << 5) /* Indicates the packet 24605 has broadcast 24606 destination ip 24607 address. */ 24608 24609 #ifndef BCM_HIDE_DISPATCHABLE 24610 24611 /* 24612 * Configure Match criteria for bcmFieldQualifyPktDstAddrType qualifier 24613 * for the field entry. 24614 */ 24615 extern int bcm_field_qualify_PktDstAddrType( 24616 int unit, 24617 bcm_field_entry_t entry, 24618 uint32 dst_addr_type); 24619 24620 /* 24621 * Get match criteria for bcmFieldQualifyPktDstAddrType qualifier from 24622 * the field entry. 24623 */ 24624 extern int bcm_field_qualify_PktDstAddrType_get( 24625 int unit, 24626 bcm_field_entry_t entry, 24627 uint32 *dst_addr_type); 24628 24629 /* 24630 * Configure Match criteria for bcmFieldQualifyPktInnerDstAddrType 24631 * qualifier for the field entry. 24632 */ 24633 extern int bcm_field_qualify_PktInnerDstAddrType( 24634 int unit, 24635 bcm_field_entry_t entry, 24636 uint32 dst_addr_type); 24637 24638 /* 24639 * Get match criteria for bcmFieldQualifyPktInnerDstAddrType qualifier 24640 * from the field entry. 24641 */ 24642 extern int bcm_field_qualify_PktInnerDstAddrType_get( 24643 int unit, 24644 bcm_field_entry_t entry, 24645 uint32 *dst_addr_type); 24646 24647 /* 24648 * Configure match criteria for bcmFieldQualifyInnerL4Ports 24649 * qualifier from the field entry. 24650 */ 24651 extern int bcm_field_qualify_InnerL4Ports( 24652 int unit, 24653 bcm_field_entry_t entry, 24654 uint8 data, 24655 uint8 mask); 24656 24657 /* 24658 * Get match criteria for bcmFieldQualifyInnerL4Ports 24659 * qualifier from the field entry. 24660 */ 24661 extern int bcm_field_qualify_InnerL4Ports_get( 24662 int unit, 24663 bcm_field_entry_t entry, 24664 uint8 *data, 24665 uint8 *mask); 24666 24667 /* 24668 * Configure match criteria for bcmFieldQualifyIp6PktNextHeader 24669 * qualifier for the field entry. 24670 */ 24671 extern int bcm_field_qualify_Ip6PktNextHeader( 24672 int unit, 24673 bcm_field_entry_t entry, 24674 uint8 data, 24675 uint8 mask); 24676 24677 /* 24678 * Get match criteria for bcmFieldQualifyIp6PktNextHeader 24679 * qualifier from the field entry. 24680 */ 24681 extern int bcm_field_qualify_Ip6PktNextHeader_get( 24682 int unit, 24683 bcm_field_entry_t entry, 24684 uint8 *data, 24685 uint8 *mask); 24686 24687 /* 24688 * Configure match criteria for bcmFieldQualifyIp6PktHopLimit 24689 * qualifier for the field entry. 24690 */ 24691 extern int bcm_field_qualify_Ip6PktHopLimit( 24692 int unit, 24693 bcm_field_entry_t entry, 24694 uint8 data, 24695 uint8 mask); 24696 24697 /* 24698 * Get match criteria for bcmFieldQualifyIp6PktHopLimit 24699 * qualifier from the field entry. 24700 */ 24701 extern int bcm_field_qualify_Ip6PktHopLimit_get( 24702 int unit, 24703 bcm_field_entry_t entry, 24704 uint8 *data, 24705 uint8 *mask); 24706 24707 /* 24708 * Configure match criteria for bcmFieldQualifyIp6PktTrafficClass 24709 * qualifier for the field entry. 24710 */ 24711 extern int bcm_field_qualify_Ip6PktTrafficClass( 24712 int unit, 24713 bcm_field_entry_t entry, 24714 uint8 data, 24715 uint8 mask); 24716 24717 /* 24718 * Get match criteria for bcmFieldQualifyIp6PktTrafficClass 24719 * qualifier from the field entry. 24720 */ 24721 extern int bcm_field_qualify_Ip6PktTrafficClass_get( 24722 int unit, 24723 bcm_field_entry_t entry, 24724 uint8 *data, 24725 uint8 *mask); 24726 24727 /* bcm_field_qualify_Ip4Tos */ 24728 extern int bcm_field_qualify_Ip4Tos( 24729 int unit, 24730 bcm_field_entry_t entry, 24731 uint8 data, 24732 uint8 mask); 24733 24734 /* 24735 * Get match criteria for bcmFieldQualifyIp4Tos 24736 * qualifier from the field entry. 24737 */ 24738 extern int bcm_field_qualify_Ip4Tos_get( 24739 int unit, 24740 bcm_field_entry_t entry, 24741 uint8 *data, 24742 uint8 *mask); 24743 24744 /* 24745 * Configure match criteria for bcmFieldQualifyInnerIp6PktNextHeader 24746 * qualifier for the field entry. 24747 */ 24748 extern int bcm_field_qualify_InnerIp6PktNextHeader( 24749 int unit, 24750 bcm_field_entry_t entry, 24751 uint8 data, 24752 uint8 mask); 24753 24754 /* 24755 * Get match criteria for bcmFieldQualifyInnerIp6PktNextHeader 24756 * qualifier from the field entry. 24757 */ 24758 extern int bcm_field_qualify_InnerIp6PktNextHeader_get( 24759 int unit, 24760 bcm_field_entry_t entry, 24761 uint8 *data, 24762 uint8 *mask); 24763 24764 /* 24765 * Configure match criteria for bcmFieldQualifyInnerIp6PktHopLimit 24766 * qualifier for the field entry. 24767 */ 24768 extern int bcm_field_qualify_InnerIp6PktHopLimit( 24769 int unit, 24770 bcm_field_entry_t entry, 24771 uint8 data, 24772 uint8 mask); 24773 24774 /* 24775 * Get match criteria for bcmFieldQualifyInnerIp6PktHopLimit 24776 * qualifier from the field entry. 24777 */ 24778 extern int bcm_field_qualify_InnerIp6PktHopLimit_get( 24779 int unit, 24780 bcm_field_entry_t entry, 24781 uint8 *data, 24782 uint8 *mask); 24783 24784 /* 24785 * Configure match criteria for bcmFieldQualifyIp6PktTrafficClass 24786 * qualifier for the field entry. 24787 */ 24788 extern int bcm_field_qualify_InnerIp6PktTrafficClass( 24789 int unit, 24790 bcm_field_entry_t entry, 24791 uint8 data, 24792 uint8 mask); 24793 24794 /* 24795 * Get match criteria for bcmFieldQualifyInnerIp6PktTrafficClass 24796 * qualifier from the field entry. 24797 */ 24798 extern int bcm_field_qualify_InnerIp6PktTrafficClass_get( 24799 int unit, 24800 bcm_field_entry_t entry, 24801 uint8 *data, 24802 uint8 *mask); 24803 24804 /* 24805 * Set match criteria for bcmFieldQualifyForwardCode 24806 * qualifier in the field entry. 24807 */ 24808 extern int bcm_field_qualify_ForwardCode( 24809 int unit, 24810 bcm_field_entry_t entry, 24811 uint8 data, 24812 uint8 mask); 24813 24814 /* 24815 * Get match criteria for bcmFieldQualifyForwardCode 24816 * qualifier in the field entry. 24817 */ 24818 extern int bcm_field_qualify_ForwardCode_get( 24819 int unit, 24820 bcm_field_entry_t entry, 24821 uint8 *data, 24822 uint8 *mask); 24823 24824 #endif /* BCM_HIDE_DISPATCHABLE */ 24825 24826 /* Invalid constant for Context ID, used in initialization. */ 24827 #define BCM_FIELD_CONTEXT_ID_INVALID ((bcm_field_context_t) (-1)) 24828 24829 /* 24830 * Default context is created in case when TCAM Context Selection is miss 24831 * and context 0 is chosen by defualt. 24832 * If user don't want to configure preselectors he can use default 24833 * context for bcm_field_group_context_attach(). 24834 * The default context is created on init for all stages. 24835 */ 24836 #define BCM_FIELD_CONTEXT_ID_DEFAULT (0) 24837 24838 /* Field Context Compare Types. */ 24839 typedef enum bcm_field_context_compare_type_e { 24840 bcmFieldContextCompareTypeNone = 0, /* No special mode, used for 24841 initialization. */ 24842 bcmFieldContextCompareTypeSingle = 1, /* Single-key compare. */ 24843 bcmFieldContextCompareTypeDouble = 2, /* Double-key compare. */ 24844 bcmFieldContextCompareTypeCount = 3 /* Always last. Not a usable value. */ 24845 } bcm_field_context_compare_type_t; 24846 24847 /* 24848 * This structure holds the context compare mode information for 24849 * bcm_field_context_create function. 24850 */ 24851 typedef struct bcm_field_context_compare_modes_s { 24852 bcm_field_context_compare_type_t compare_1_mode; /* Specifies compare type for the first 24853 pair. */ 24854 bcm_field_context_compare_type_t compare_2_mode; /* Specifies compare type for the second 24855 pair. */ 24856 } bcm_field_context_compare_modes_t; 24857 24858 /* 24859 * This structure holds the basic parameters for 24860 * bcm_dnx_field_context_create() function. 24861 */ 24862 typedef struct bcm_field_context_info_s { 24863 bcm_field_context_compare_modes_t context_compare_modes; /* Defines which compare types are set 24864 for this context, for each compare 24865 operation (compare1, compare2). */ 24866 bcm_field_context_t cascaded_from; /* The context-Id which the current 24867 context is cascaded from (relevant in 24868 iPMF2) stage. */ 24869 uint8 hashing_enabled; /* Enable in case a hash key is set on 24870 this context. */ 24871 uint8 state_table_enabled; /* Enabling state table for current 24872 context */ 24873 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 24874 } bcm_field_context_info_t; 24875 24876 /* Initialize the bcm_field_context_info_t structure. */ 24877 extern void bcm_field_context_info_t_init( 24878 bcm_field_context_info_t *context_info); 24879 24880 #ifndef BCM_HIDE_DISPATCHABLE 24881 24882 /* Create a new Field Context on a desired stage. */ 24883 extern int bcm_field_context_create( 24884 int unit, 24885 uint32 flags, 24886 bcm_field_stage_t stage, 24887 bcm_field_context_info_t *context_info, 24888 bcm_field_context_t *context_id); 24889 24890 /* Get all context info of a Field Context. */ 24891 extern int bcm_field_context_info_get( 24892 int unit, 24893 bcm_field_stage_t stage, 24894 bcm_field_context_t context_id, 24895 bcm_field_context_info_t *context_info); 24896 24897 /* Destroy Context ID, deallocate all relevant resources. */ 24898 extern int bcm_field_context_destroy( 24899 int unit, 24900 bcm_field_stage_t stage, 24901 bcm_field_context_t context_id); 24902 24903 #endif /* BCM_HIDE_DISPATCHABLE */ 24904 24905 /* Initialize the bcm_field_group_info_t structure. */ 24906 extern void bcm_field_group_info_t_init( 24907 bcm_field_group_info_t *fg_info); 24908 24909 #ifndef BCM_HIDE_DISPATCHABLE 24910 24911 /* This function creates a new Field group of any type on a desired stage */ 24912 extern int bcm_field_group_add( 24913 int unit, 24914 uint32 flags, 24915 bcm_field_group_info_t *fg_info, 24916 bcm_field_group_t *fg_id); 24917 24918 /* This function will get all info of a specific Field Group. */ 24919 extern int bcm_field_group_info_get( 24920 int unit, 24921 bcm_field_group_t fg_id, 24922 bcm_field_group_info_t *fg_info); 24923 24924 /* Delete Field Group, deallocate all relevant resources. */ 24925 extern int bcm_field_group_delete( 24926 int unit, 24927 bcm_field_group_t fg_id); 24928 24929 #endif /* BCM_HIDE_DISPATCHABLE */ 24930 24931 /* 24932 * General Field optional flags. Used if the user wants to specify which 24933 * ID should be allocated. 24934 */ 24935 #define BCM_FIELD_FLAG_WITH_ID (1 << 0) 24936 24937 /* 24938 * Used if we want to replace/update existing entity. For example: update 24939 * an existing entry - change its values. 24940 */ 24941 #define BCM_FIELD_FLAG_UPDATE (1 << 1) 24942 24943 /* Used if returned result is aligned to MSB. */ 24944 #define BCM_FIELD_FLAG_MSB_RESULT_ALIGN (1 << 2) 24945 24946 /* Used if returned result is aligned to LSB. */ 24947 #define BCM_FIELD_FLAG_LSB_RESULT_ALIGN (1 << 3) 24948 24949 /* 24950 * This flag enables external ACL counters for all entries in the 24951 * external ACL DB. 24952 */ 24953 #define BCM_FIELD_FLAG_EXTERNAL_COUNTERS (1 << 4) 24954 24955 /* 24956 * This flag aligns the MSB of the field group to a 32 bit grnularity 24957 * (i.e. the MSB of the field group will be placed at 31, 63, 127, etc. 24958 */ 24959 #define BCM_FIELD_FLAG_32_RESULT_MSB_ALIGN (1 << 5) 24960 24961 /* 24962 * This flag is used for external TCAM field groups, to indicate that 24963 * consecutive qualifers whose size in bits is not a multiplier of 8, 24964 * should be attemped to be combined to a single segment. 24965 */ 24966 #define BCM_FIELD_FLAG_QUAL_PACKING (1 << 6) 24967 24968 /* General invalid constant for Field */ 24969 #define BCM_FIELD_INVALID 0xFFFF 24970 24971 /* 24972 * General invalid constant for specific Field IDs, like presel_id, 24973 * context_id. Used in initialization. 24974 */ 24975 #define BCM_FIELD_ID_INVALID (-1) 24976 24977 /* Field Qualifier Input Types, indicate base layer type for qualifier. */ 24978 typedef enum bcm_field_input_types_e { 24979 bcmFieldInputTypeInvalid = -1, /* Invalid base layer. */ 24980 bcmFieldInputTypeLayerFwd = 0, /* Extracted from Layer info ,FWD layer 24981 index. */ 24982 bcmFieldInputTypeLayerAbsolute = 1, /* Extracted from Layer info ,Absolute 24983 layer index . */ 24984 bcmFieldInputTypeMetaData = 2, /* Extracted from MetaData. */ 24985 bcmFieldInputTypeLayerRecordsFwd = 3, /* Extracted from LR ,FWD layer index . */ 24986 bcmFieldInputTypeLayerRecordsAbsolute = 4, /* Extracted from LR ,Absolute layer 24987 index. */ 24988 bcmFieldInputTypeExternal = 5, /* Extracted from 'Cascaded From' field 24989 group result from the external field 24990 stage. */ 24991 bcmFieldInputTypeCascaded = 6, /* Extracted from 'Cascaded From' field 24992 group result. */ 24993 bcmFieldInputTypeConst = 7, /* Constant value. */ 24994 bcmFieldInputTypeCount = 8 /* Always last. Number of Base Types. */ 24995 } bcm_field_input_types_t; 24996 24997 #define BCM_FIELD_INPUT_TYPES_STRINGS \ 24998 { \ 24999 "LayerFwd", \ 25000 "LayerAbsolute", \ 25001 "MetaData", \ 25002 "LayerRecordsFwd", \ 25003 "LayerRecordsAbsolute", \ 25004 "External", \ 25005 "Cascaded", \ 25006 "Const" \ 25007 } 25008 25009 /* 25010 * Include information on each action that configured in 25011 * bcm_field_group_context_attach API. 25012 */ 25013 typedef struct bcm_field_action_attach_info_s { 25014 bcm_field_action_priority_t priority; /* Indicate the priority per action that 25015 was configured for specific Field 25016 Group the lower the number the higher 25017 the priority of the actions the 25018 higher FES/FEM id will be allocated */ 25019 uint8 valid_bit_polarity; /* Indicate the polarity per action that 25020 was configured for specific Field 25021 Group, the meaning of the 25022 use_valid_bit. Indicates whether 25023 condition bit can be based on 0 or 1. 25024 If there is a valid bit 25025 (use_valid_bit=1), 25026 the action will happen only if the 25027 valid bit is equal to the polarity 25028 bit. */ 25029 } bcm_field_action_attach_info_t; 25030 25031 /* 25032 * This struct will indicate how to extract the qualifier from the PBUS, 25033 * (MetaData/LR/Layer). 25034 */ 25035 typedef struct bcm_field_qualify_attach_info_s { 25036 bcm_field_input_types_t input_type; /* The base of qualifier, indicates from 25037 where the info is taken, relevant for 25038 all type of qualifiers. */ 25039 int input_arg; /* Dedicated argument for specified 25040 input_type. */ 25041 int offset; /* Additional offset for header 25042 qualifiers / offset for user defined 25043 qualifiers. */ 25044 } bcm_field_qualify_attach_info_t; 25045 25046 /* 25047 * This structure represents a single context_key element. This is an 25048 * abstract structure used only by other structures, like 25049 * bcm_field_context_hash_info_t and bcm_field_context_compare_info_t, as 25050 * a uniformed way to define context_keys. 25051 */ 25052 typedef struct bcm_field_context_key_info_s { 25053 int nof_quals; /* Number of valid qualifiers in the 25054 context key. */ 25055 bcm_field_qualify_t qual_types[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* BCM level qualifier look at 25056 bcm_field_qualify_t for more info. 25057 Number of meaningful elements on this 25058 array according to nof_quals. */ 25059 bcm_field_qualify_attach_info_t qual_info[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Indicate how to read the relevant 25060 qualifier from PBUS. The information 25061 is aligned to the qualifier types 25062 array above. */ 25063 } bcm_field_context_key_info_t; 25064 25065 /* 25066 * This structure represents a single context_payload element. This is an 25067 * abstract structure used only by other structures, like 25068 * bcm_field_group_attach_info_t, as a uniformed way to define 25069 * context_payloads. 25070 */ 25071 typedef struct bcm_field_context_payload_info_s { 25072 int nof_actions; /* Number of valid actions in the action 25073 set of the Field Group. */ 25074 bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to 25075 matching entries for this action set. 25076 BCM level action look at 25077 bcm_field_action_t for more info. */ 25078 bcm_field_action_attach_info_t action_info[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Information (priority) on each action 25079 that configured in 25080 bcm_field_group_context_attach() API */ 25081 int nof_invalidate_fems; /* Number of elements in 25082 invalidate_fems, Indicates the number 25083 of FEMs added to the field group that 25084 we want to disable for the context. */ 25085 bcm_field_action_priority_t *invalidate_fems; /* A pointer to an array of positions of 25086 FEMs, each indicating a FEM position 25087 of a FEM added to the field group, 25088 that should not be enabled for the 25089 context. */ 25090 uint32 payload_id; /* Payload Id for current field group 25091 inside the payload buffer. Payloads 25092 returned from the external tcam are 25093 acumulated sequentially. Indicates 25094 the valid hit bit for current field 25095 group. */ 25096 uint32 payload_offset; /* Payload location inside the payload 25097 buffer returned from the external 25098 tcam. */ 25099 } bcm_field_context_payload_info_t; 25100 25101 /* 25102 * This structure holds the basic parameters for 25103 * bcm_field_group_context_attach() function. 25104 */ 25105 typedef struct bcm_field_group_attach_info_s { 25106 bcm_field_context_key_info_t key_info; /* Context attach qualifiers 25107 information, like: number of valid 25108 qualifiers, qualifier type and how to 25109 read the relevant qualifier from 25110 PBUS. */ 25111 bcm_field_context_payload_info_t payload_info; /* Context attach actions information, 25112 like: number of valid actions, action 25113 type and priority. */ 25114 int compare_id; /* Compare id to use in case of 25115 comparison. Can be 0 or 1, depends on 25116 which compare pair is used in the 25117 comparison. */ 25118 } bcm_field_group_attach_info_t; 25119 25120 /* Initialize the bcm_field_qualify_attach_info_t structure. */ 25121 extern void bcm_field_qual_attach_info_t_init( 25122 bcm_field_qualify_attach_info_t *qual_info); 25123 25124 /* Initialize the bcm_field_group_attach_info_t structure. */ 25125 extern void bcm_field_group_attach_info_t_init( 25126 bcm_field_group_attach_info_t *attach_info); 25127 25128 #ifndef BCM_HIDE_DISPATCHABLE 25129 25130 /* 25131 * This Function Attach Field Group to specific context ID, and defines 25132 * the key template and action priorities for this lookup for this 25133 * specific context. 25134 */ 25135 extern int bcm_field_group_context_attach( 25136 int unit, 25137 uint32 flags, 25138 bcm_field_group_t fg_id, 25139 bcm_field_context_t context_id, 25140 bcm_field_group_attach_info_t *attach_info); 25141 25142 /* 25143 * This function will get all Group attach info of a specific Field 25144 * context and Field group. 25145 */ 25146 extern int bcm_field_group_context_info_get( 25147 int unit, 25148 bcm_field_group_t fg_id, 25149 bcm_field_context_t context_id, 25150 bcm_field_group_attach_info_t *attach_info); 25151 25152 /* 25153 * Reset/deallocate all resources that were allocated for the context ID 25154 * at input to the FG at input. 25155 */ 25156 extern int bcm_field_group_context_detach( 25157 int unit, 25158 bcm_field_group_t fg_id, 25159 bcm_field_context_t context_id); 25160 25161 #endif /* BCM_HIDE_DISPATCHABLE */ 25162 25163 /* Action width in words. */ 25164 #define BCM_FIELD_ACTION_WIDTH_IN_WORDS (4) 25165 25166 /* Qualifier width in words. */ 25167 #define BCM_FIELD_QUAL_WIDTH_IN_WORDS (5) 25168 25169 /* 25170 * Include information regarding a user defined action used by 25171 * bcm_field_action_create. 25172 */ 25173 typedef struct bcm_field_action_info_s { 25174 bcm_field_stage_t stage; /* Field stage, for which stage the 25175 action is created. */ 25176 bcm_field_action_t action_type; /* used as basis for the user defined 25177 action type, can be also void action */ 25178 int size; /* Size of the action to set in the 25179 payload in bits. */ 25180 int prefix_size; /* Size of the prefix to set in the 25181 payload in bits. */ 25182 int prefix_value; /* Value of the prefix (will be put in 25183 the MSB of the action). */ 25184 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 25185 } bcm_field_action_info_t; 25186 25187 /* 25188 * Include information regarding a qualifier. Used by 25189 * bcm_field_qualifier_create() for creating user defined qualifiers. 25190 */ 25191 typedef struct bcm_field_qualifier_info_create_s { 25192 int size; /* Size of the qualifier to set in the 25193 key in bits. */ 25194 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 25195 } bcm_field_qualifier_info_create_t; 25196 25197 /* 25198 * Includes information regarding a qualifier. Used by 25199 * bcm_field_qualifier_get() for retrieving information regarding 25200 * predefined or user defined qualifiers. 25201 */ 25202 typedef struct bcm_field_qualifier_info_get_s { 25203 bcm_field_qualifier_class_t qual_class; /* Class of the qualifier. Indicates the 25204 intput type of the qualifier for 25205 predefined qualifiers. */ 25206 int size; /* Size of the qualifier in the key in 25207 bits. */ 25208 int offset; /* The offset of the qualifier. */ 25209 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 25210 } bcm_field_qualifier_info_get_t; 25211 25212 /* 25213 * This structure holds the payload values needed for bcm_field_entry_add 25214 * function. 25215 */ 25216 typedef struct bcm_field_entry_action_s { 25217 bcm_field_action_t type; /* BCM action type, an action to perform 25218 in case of match. */ 25219 uint32 value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]; /* Set value for action (lookup result). */ 25220 } bcm_field_entry_action_t; 25221 25222 /* 25223 * This structure holds the key values needed for bcm_field_entry_add 25224 * function. 25225 */ 25226 typedef struct bcm_field_entry_qual_s { 25227 bcm_field_qualify_t type; /* BCM qualifier type, a classifier type 25228 for lookup. */ 25229 uint32 value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Set value for qualify (lookup key). */ 25230 uint32 max_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Sets the maximum value for ranged 25231 qualify (lookup key). */ 25232 uint32 mask[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Mask that dictates which of the value 25233 bits are relevant for lookup. */ 25234 } bcm_field_entry_qual_t; 25235 25236 /* 25237 * This structure holds the key values needed for bcm_field_entry_add 25238 * function. 25239 */ 25240 typedef struct bcm_field_entry_info_s { 25241 uint32 priority; /* Entry priority, relevant only for 25242 TCAM FG. The lower the number the 25243 higher the entry priority. Higher 25244 priority lookup will hit first. */ 25245 int nof_entry_quals; /* Number of valid qualifiers in the 25246 Field entry. */ 25247 bcm_field_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Entry qualifiers info including type, 25248 value, and mask, not all are relevant 25249 in various field group types. */ 25250 int nof_entry_actions; /* Number of valid actions in the Field 25251 entry. */ 25252 bcm_field_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type, 25253 value. */ 25254 bcm_core_t core; /* Entry's core */ 25255 uint8 valid_bit; /* Entry valid bit */ 25256 } bcm_field_entry_info_t; 25257 25258 /* Initialize the bcm_field_action_info_t structure. */ 25259 extern void bcm_field_action_info_t_init( 25260 bcm_field_action_info_t *action_info); 25261 25262 #ifndef BCM_HIDE_DISPATCHABLE 25263 25264 /* 25265 * This function create a user defined action, when user wants to use a 25266 * non-predefined, it indicated the size and gets an action ID. 25267 */ 25268 extern int bcm_field_action_create( 25269 int unit, 25270 uint32 flags, 25271 bcm_field_action_info_t *action_info, 25272 bcm_field_action_t *action_id); 25273 25274 /* 25275 * Maps the bcm value of a given action in a given stage to the 25276 * correspondig HW value. This functionality is needed when non-trivial 25277 * user defined actions are created and values need to be set for them 25278 */ 25279 extern int bcm_field_action_value_map( 25280 int unit, 25281 bcm_field_stage_t stage, 25282 bcm_field_action_t bcm_action, 25283 uint32 bcm_value[BCM_FIELD_ACTION_WIDTH_IN_WORDS], 25284 uint32 hw_value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]); 25285 25286 /* This function gets all information of an action. */ 25287 extern int bcm_field_action_info_get( 25288 int unit, 25289 bcm_field_action_t action_id, 25290 bcm_field_stage_t stage, 25291 bcm_field_action_info_t *action_info); 25292 25293 /* Destroys an existing user action based. */ 25294 extern int bcm_field_action_destroy( 25295 int unit, 25296 bcm_field_action_t action_id); 25297 25298 #endif /* BCM_HIDE_DISPATCHABLE */ 25299 25300 /* Initialize the bcm_field_qualifier_info_create_t structure. */ 25301 extern void bcm_field_qualifier_info_create_t_init( 25302 bcm_field_qualifier_info_create_t *qual_info); 25303 25304 /* Initialize the bcm_field_qualifier_info_get_t structure. */ 25305 extern void bcm_field_qualifier_info_get_t_init( 25306 bcm_field_qualifier_info_get_t *qual_info); 25307 25308 #ifndef BCM_HIDE_DISPATCHABLE 25309 25310 /* 25311 * This function creates a user defined qualifier, when user wants to use 25312 * a non-predefined, it indicated the size and gets a qualifier ID. 25313 */ 25314 extern int bcm_field_qualifier_create( 25315 int unit, 25316 uint32 flags, 25317 bcm_field_qualifier_info_create_t *qual_info, 25318 bcm_field_qualify_t *qual_id); 25319 25320 /* 25321 * Maps the bcm value of a given qualifier in a given stage to the 25322 * correspondig HW value. This functionality is needed when non-trivial 25323 * user defined qualifiers are created and values need to be set for them 25324 */ 25325 extern int bcm_field_qualifier_value_map( 25326 int unit, 25327 bcm_field_stage_t stage, 25328 bcm_field_qualify_t bcm_qual, 25329 uint32 bcm_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS], 25330 uint32 hw_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]); 25331 25332 /* This function gets all information of a qualifier. */ 25333 extern int bcm_field_qualifier_info_get( 25334 int unit, 25335 bcm_field_qualify_t qual_id, 25336 bcm_field_stage_t stage, 25337 bcm_field_qualifier_info_get_t *qual_info); 25338 25339 /* Destroys an existing user qualifier. */ 25340 extern int bcm_field_qualifier_destroy( 25341 int unit, 25342 bcm_field_qualify_t qual_id); 25343 25344 #endif /* BCM_HIDE_DISPATCHABLE */ 25345 25346 /* Object type for name to ID mapping. */ 25347 typedef enum bcm_field_name_to_id_type_e { 25348 bcmFieldNameToIdGroup = 0, /* Field group. */ 25349 bcmFieldNameToIdQualifier = 1, /* Qualifier. */ 25350 bcmFieldNameToIdAction = 2, /* Action. */ 25351 bcmFieldNameToIdContext = 3, /* Context. */ 25352 bcmFieldNameToIdAceFormat = 4, /* Context. */ 25353 bcmFieldNameToIdCount = 5 /* Always last. Not a usable value.. */ 25354 } bcm_field_name_to_id_type_t; 25355 25356 /* 25357 * Information for mapping name to ID. used by 25358 * bcm_field_object_name_to_id(). 25359 */ 25360 typedef struct bcm_field_name_to_id_info_s { 25361 bcm_field_stage_t stage; /* Field stage of the object. Relevant 25362 for contexts. */ 25363 bcm_field_name_to_id_type_t name_to_id_type; /* What type of object to translate 25364 (e.g. field group, qualifier, 25365 action). */ 25366 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* Name of the object. */ 25367 } bcm_field_name_to_id_info_t; 25368 25369 /* Initialize the bcm_field_name_to_id_info_t structure. */ 25370 extern void bcm_field_name_to_id_info_t_init( 25371 bcm_field_name_to_id_info_t *name_to_id_info); 25372 25373 /* Initialize the bcm_field_entry_info_t structure. */ 25374 extern void bcm_field_entry_info_t_init( 25375 bcm_field_entry_info_t *entry_info); 25376 25377 /* Initialize an array of bcm_field_entry_qual_t structures. */ 25378 extern void bcm_field_entry_qual_t_init( 25379 bcm_field_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]); 25380 25381 #ifndef BCM_HIDE_DISPATCHABLE 25382 25383 /* 25384 * This function creates, sets and installs to HW a single entry (ACL 25385 * rule) for a specific field group. 25386 */ 25387 extern int bcm_field_entry_add( 25388 int unit, 25389 uint32 flags, 25390 bcm_field_group_t fg_id, 25391 bcm_field_entry_info_t *entry_info, 25392 bcm_field_entry_t *entry_handle); 25393 25394 /* Get info for specific a field group by entry id. */ 25395 extern int bcm_field_entry_info_get( 25396 int unit, 25397 bcm_field_group_t fg_id, 25398 bcm_field_entry_t entry_handle, 25399 bcm_field_entry_info_t *entry_info); 25400 25401 /* Delete Entry From HW and free all allocated resources. */ 25402 extern int bcm_field_entry_delete( 25403 int unit, 25404 bcm_field_group_t fg_id, 25405 bcm_field_entry_qual_t entry_qual_info[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP], 25406 bcm_field_entry_t entry_handle); 25407 25408 /* Delete all entries in all field groups. */ 25409 extern int bcm_field_entry_delete_all( 25410 int unit); 25411 25412 #endif /* BCM_HIDE_DISPATCHABLE */ 25413 25414 /* 25415 * This enum contains Packet Layers to remove, used in the 25416 * BCM_FIELD_PACKET_STRIP() macro. 25417 */ 25418 typedef enum bcm_field_packet_remove_layers_e { 25419 bcmFieldPacketRemoveLayerFirst = 0, /* Invalid Param. */ 25420 bcmFieldPacketRemoveLayerOffset0 = bcmFieldPacketRemoveLayerFirst, /* Packet Layer offset 0. */ 25421 bcmFieldPacketRemoveLayerOffset1 = 1, /* Packet Layer offset 1. */ 25422 bcmFieldPacketRemoveLayerForwardingOffset0 = 2, /* Packet Layer Forwarding offset 0. */ 25423 bcmFieldPacketRemoveLayerForwardingOffset1 = 3, /* Packet Layer Forwarding offset 1. */ 25424 bcmFieldPacketRemoveLayerCount = 4 /* Always last. Not a usable value. */ 25425 } bcm_field_packet_remove_layers_t; 25426 25427 #define BCM_FIELD_PACKET_REMOVE_LAYER_STRINGS \ 25428 { \ 25429 "Offset0", \ 25430 "Offset1", \ 25431 "ForwardingOffset0", \ 25432 "ForwardingOffset1" \ 25433 } 25434 25435 /* 25436 * This macro encodes the number of headers to remove and number of bytes 25437 * to a single parameter, given as input to PMF action 25438 * bcmFieldActionStartPacketStrip. 25439 */ 25440 #define BCM_FIELD_PACKET_STRIP(remove_layers, fixed_num_bytes) ((fixed_num_bytes<<4) + (remove_layers)) 25441 25442 /* 25443 * This enum contains all Polynomial hashing Functions values that can be 25444 * passed to the 'hash_function' param in the 25445 * bcm_field_context_hash_info_t struct. 25446 */ 25447 typedef enum bcm_field_context_hash_function_e { 25448 bcmFieldContextHashFunctionFirst = 0, /* Invalid Param. */ 25449 bcmFieldContextHashFunctionFirstReserved = bcmFieldContextHashFunctionFirst, /* HW Reserved Value */ 25450 bcmFieldContextHashFunctionSecondReserved = 1, /* HW Reserved Value. */ 25451 bcmFieldContextHashFunctionThirdReserved = 2, /* Polynomial BISYNC hashing Function. */ 25452 bcmFieldContextHashFunctionCrc16Bisync = 3, /* Polynomial CRC 16 BISYNC hashing 25453 Function. */ 25454 bcmFieldContextHashFunctionCrc16Xor1 = 4, /* Polynomial CRC 16 XOR1 hashing 25455 Function. */ 25456 bcmFieldContextHashFunctionCrc16Xor2 = 5, /* Polynomial CRC 16 XOR2 hashing 25457 Function. */ 25458 bcmFieldContextHashFunctionCrc16Xor4 = 6, /* Polynomial CRC 16 XOR4 hashing 25459 Function. */ 25460 bcmFieldContextHashFunctionCrc16Xor8 = 7, /* Polynomial CRC 16 XOR8 hashing 25461 Function. */ 25462 bcmFieldContextHashFunctionXor16 = 8, /* Polynomial XOR16 hashing Function. */ 25463 bcmFieldContextHashFunctionCrc16Ccitt = 9, /* Polynomial CRC 16 CCITT hashing 25464 Function. */ 25465 bcmFieldContextHashFunctionCrc32ALow = 10, /* Polynomial CRC 32 A LOW hashing 25466 Function. */ 25467 bcmFieldContextHashFunctionCrc32Ahigh = 11, /* Polynomial CRC 32 A HIGH hashing 25468 Function. */ 25469 bcmFieldContextHashFunctionCrc32BLow = 12, /* Polynomial CRC 32 B LOW hashing 25470 Function. */ 25471 bcmFieldContextHashFunctionCrc32BHigh = 13, /* Polynomial CRC 32 B HIGH hashing 25472 Function. */ 25473 bcmFieldContextHashFunctionCount = 14 /* Always last. Not a usable value. */ 25474 } bcm_field_context_hash_function_t; 25475 25476 /* 25477 * This enum contains all Hashing Action Key values that can be passed to 25478 * the 'hash_config->action_key' param in the 25479 * bcm_field_context_hash_info_t struct. 25480 */ 25481 typedef enum bcm_field_context_hash_action_key_e { 25482 bcmFieldContextHashActionKeyFirst = 0, /* Invalid Param. */ 25483 bcmFieldContextHashActionKeyEcmpLbKey0 = bcmFieldContextHashActionKeyFirst, /* Hashing key ECMP_LB0. */ 25484 bcmFieldContextHashActionKeyEcmpLbKey1 = 1, /* Hashing key ECMP_LB1. */ 25485 bcmFieldContextHashActionKeyEcmpLbKey2 = 2, /* Hashing key ECMP_LB2. */ 25486 bcmFieldContextHashActionKeyNetworkLbKey = 3, /* Hashing key NETWORK_LB. */ 25487 bcmFieldContextHashActionKeyLagLbKey = 4, /* Hashing key LAG_LB. */ 25488 bcmFieldContextHashActionKeyAdditionalLbKey = 5, /* Hashing key ADDITIONAL_LB. */ 25489 bcmFieldContextHashActionKeyCount = 6 /* Always last. Not a usable value. */ 25490 } bcm_field_context_hash_action_key_t; 25491 25492 /* 25493 * This enum contains all Hashing Action Values that can be passed to the 25494 * 'hash_config->function_select' param in the 25495 * bcm_field_context_hash_info_t struct. 25496 */ 25497 typedef enum bcm_field_context_hash_action_value_e { 25498 bcmFieldContextHashActionValueFirst = 0, /* Invalid Param. */ 25499 bcmFieldContextHashActionValueNone = bcmFieldContextHashActionValueFirst, /* Hashing action value DO_NOTHING. */ 25500 bcmFieldContextHashActionValueReplaceCrc = 1, /* Hashing action value 25501 REPLACE_WITH_CRC_16. */ 25502 bcmFieldContextHashActionValueAugmentCrc = 2, /* Hashing action value 25503 AUGMENT_WITH_PMF_CRC_16. */ 25504 bcmFieldContextHashActionValueAugmentKey = 3, /* Hashing action value 25505 AUGMENT_WITH_KEY_J. */ 25506 bcmFieldContextHashActionValueCount = 4 /* Always last. Not a usable value. */ 25507 } bcm_field_context_hash_action_value_t; 25508 25509 /* 25510 * This enum contains all CRC Select values that can be passed to the 25511 * 'hash_config->crc_select' param in the bcm_field_context_hash_info_t 25512 * struct. 25513 */ 25514 typedef enum bcm_field_crc_select_e { 25515 bcmFieldCrcSelectInvalid = 0, /* Invalid */ 25516 bcmFieldCrcSelectFirst = 1, /* Indexer */ 25517 bcmFieldCrcSelectCrc16P0x10039 = bcmFieldCrcSelectFirst, /* CRC16 with 0x10039 polynomial */ 25518 bcmFieldCrcSelectCrc16P0x100d7 = 2, /* CRC16 with 0x100d7 polynomial */ 25519 bcmFieldCrcSelectCrc16P0x1015d = 3, /* CRC16 with 0x1015d polynomial */ 25520 bcmFieldCrcSelectCrc16P0x10939 = 4, /* CRC16 with 0x10939 polynomial */ 25521 bcmFieldCrcSelectCrc16P0x109e7 = 5, /* CRC16 with 0x109e7 polynomial */ 25522 bcmFieldCrcSelectCrc16P0x10ac5 = 6, /* CRC16 with 0x10ac5 polynomial */ 25523 bcmFieldCrcSelectCrc16P0x1203d = 7, /* CRC16 with 0x1203d polynomial */ 25524 bcmFieldCrcSelectCrc16P0x12105 = 8, /* CRC16 with 0x12105 polynomial */ 25525 bcmFieldCrcSelectCount /* Need to be always last */ 25526 } bcm_field_crc_select_t; 25527 25528 /* This structure holds detailed info about hash configuration. */ 25529 typedef struct bcm_field_context_hash_config_s { 25530 bcm_field_context_hash_action_key_t action_key; /* One of the various lb-keys which are 25531 iPMF1 output. */ 25532 bcm_field_context_hash_action_value_t function_select; /* Hashing Action which selects whether 25533 to keep the input lb-key or to 25534 replace it. */ 25535 bcm_field_crc_select_t crc_select; /* Selects which CRC polynomial 25536 (function) to use on hash function 25537 output (only works in case hash 25538 action is augment). */ 25539 } bcm_field_context_hash_config_t; 25540 25541 /* 25542 * This structure holds detailed info how hash key should be constructed, 25543 * needed for bcm_field_context_hash_create() function. 25544 */ 25545 typedef struct bcm_field_context_hash_info_s { 25546 bcm_field_context_key_info_t key_info; /* The Hash key information, describing 25547 the qualifiers and template of the 25548 constructed key */ 25549 uint8 compression; /* Disable/enable compress data (128->32 25550 bit). Typical usage: compress ipv6 25551 address into 32 bits. */ 25552 uint8 order; /* Disable/enable order data (smaller 25553 32-bits value will always be in 32LSB 25554 ). Typical usage order between 25555 generate the same key for 25556 bidirectional ip flows. */ 25557 bcm_field_context_hash_function_t hash_function; /* Hashing polynomial for hashing 25558 mechanism. */ 25559 bcm_field_context_hash_config_t hash_config; /* Hashing configuration params, 25560 describing which hash action is 25561 performed and which signals */ 25562 int nof_additional_hash_config; /* Number of additional hashing 25563 configuration */ 25564 bcm_field_context_hash_config_t additional_hash_config[BCM_FIELD_NUMBER_OF_HASH_KEYS]; /* Additional hashing configuration 25565 params. */ 25566 } bcm_field_context_hash_info_t; 25567 25568 /* 25569 * This structure holds detailed info for keys, which should be compared 25570 * needed for bcm_field_context_compare_create() function. 25571 */ 25572 typedef struct bcm_field_context_compare_info_s { 25573 bcm_field_context_key_info_t first_key_info; /* The information for the first key. */ 25574 bcm_field_context_key_info_t second_key_info; /* The information for the second key. */ 25575 } bcm_field_context_compare_info_t; 25576 25577 /* Initialize the bcm_field_context_hash_info_t structure. */ 25578 extern void bcm_field_context_hash_info_t_init( 25579 bcm_field_context_hash_info_t *hash_info); 25580 25581 #ifndef BCM_HIDE_DISPATCHABLE 25582 25583 /* 25584 * This function is used to create, allocate all resources and configure 25585 * HASH key which is used to create CRC. 25586 */ 25587 extern int bcm_field_context_hash_create( 25588 int unit, 25589 uint32 flags, 25590 bcm_field_stage_t stage, 25591 bcm_field_context_t context_id, 25592 bcm_field_context_hash_info_t *hash_info); 25593 25594 /* This function gets HASH info of a specific context. */ 25595 extern int bcm_field_context_hash_info_get( 25596 int unit, 25597 bcm_field_stage_t stage, 25598 bcm_field_context_t context_id, 25599 bcm_field_context_hash_info_t *hash_info); 25600 25601 /* 25602 * Destroy HASH key which is used to create CRC, deallocate all resources 25603 * allocated by bcm_field_context_hash_create. 25604 */ 25605 extern int bcm_field_context_hash_destroy( 25606 int unit, 25607 bcm_field_stage_t stage, 25608 bcm_field_context_t context_id); 25609 25610 #endif /* BCM_HIDE_DISPATCHABLE */ 25611 25612 /* Initialize the bcm_field_context_compare_info_t structure. */ 25613 extern void bcm_field_context_compare_info_t_init( 25614 bcm_field_context_compare_info_t *compare_info); 25615 25616 #ifndef BCM_HIDE_DISPATCHABLE 25617 25618 /* 25619 * This function is used to set up to two pairs of keys for comparison 25620 * for a given context. 25621 */ 25622 extern int bcm_field_context_compare_create( 25623 int unit, 25624 uint32 flags, 25625 bcm_field_stage_t stage, 25626 bcm_field_context_t context_id, 25627 uint32 pair_id, 25628 bcm_field_context_compare_info_t *cmp_info); 25629 25630 /* 25631 * This function returns information for a specific pair of keys which 25632 * used for comparison in a given context. 25633 */ 25634 extern int bcm_field_context_compare_info_get( 25635 int unit, 25636 bcm_field_stage_t stage, 25637 bcm_field_context_t context_id, 25638 uint32 pair_id, 25639 bcm_field_context_compare_info_t *cmp_info); 25640 25641 /* Destroys the compare keys in the given context. */ 25642 extern int bcm_field_context_compare_destroy( 25643 int unit, 25644 bcm_field_stage_t stage, 25645 bcm_field_context_t context_id, 25646 uint32 pair_id); 25647 25648 #endif /* BCM_HIDE_DISPATCHABLE */ 25649 25650 /* 25651 * List of all TCAM PP Databases. This enum is used as an input to part 25652 * of field TCAM functions to provide field TCAM functionaity to static 25653 * TCAM PP Databases. 25654 */ 25655 typedef enum bcm_field_app_db_e { 25656 bcmFieldAppDbInvalid = 0, /* Invalid Param. */ 25657 bcmFieldAppDbFirst = 1, /* First valid value (used for indexing) */ 25658 bcmFieldAppDbVlanPort = bcmFieldAppDbFirst, /* IN_AC_TCAM_DB */ 25659 bcmFieldAppDbIpmcV4 = 2, /* IPV4_MULTICAST_TCAM_FORWARD */ 25660 bcmFieldAppDbIpmcV6 = 3, /* IPV6_MULTICAST_TCAM_FORWARD */ 25661 bcmFieldAppDbTunnelTerminatorV4 = 4, /* IPV4_TT_TCAM_BASIC */ 25662 bcmFieldAppDbTunnelTerminatorBudV4 = 5, /* IPV4_TT_TCAM_2ND_PASS */ 25663 bcmFieldAppDbTunnelTerminatorV6 = 6, /* IPV6_MP_TT_TCAM_BASIC */ 25664 bcmFieldAppDbTunnelTerminatorBudV6 = 7, /* IPV6_MP_TT_TCAM_2ND_PASS */ 25665 bcmFieldAppDbMplsFrr = 8, /* MPLS_FRR_TCAM_DB */ 25666 bcmFieldAppDbOamIdentification = 9, /* OAM_TCAM_IDENTIFICATION_DB */ 25667 bcmFieldAppDbL3VPbrV4 = 10, /* IPV4_VRF_DB_TCAM */ 25668 bcmFieldAppDbL3VPbrV6 = 11, /* IPV6_VRF_DB_TCAM */ 25669 bcmFieldAppDbCount /* Should be last */ 25670 } bcm_field_app_db_t; 25671 25672 /* 25673 * This function holds information needed by the bank operation 25674 * (add/evacuate) APIs, it contains the field group ID or the TCAM APP ID 25675 * to add/evacuate the banks to/from (only one can be set, but not both), 25676 * and the list of the banks to do the operation on 25677 */ 25678 typedef struct bcm_field_tcam_bank_info_s { 25679 bcm_field_group_t fg_id; /* FG-ID */ 25680 bcm_field_app_db_t pp_app; /* PP-APP */ 25681 int nof_banks; /* Number of banks to evacuate */ 25682 int tcam_bank_ids[BCM_FIELD_NUMBER_OF_TCAM_BANKS]; /* Array that holds the TCAM bank IDs to 25683 be evacuated */ 25684 } bcm_field_tcam_bank_info_t; 25685 25686 /* Initialize the bcm_field_tcam_bank_info_t structure. */ 25687 extern void bcm_field_tcam_bank_info_t_init( 25688 bcm_field_tcam_bank_info_t *bank_info); 25689 25690 #ifndef BCM_HIDE_DISPATCHABLE 25691 25692 /* 25693 * Evacuates the given fg_id OR pp_app from the bank IDs that are given 25694 * in evac_info struct. 25695 * The evacuation process involves moving the entries of the given fg_id 25696 * from the targeted banks to other banks allocated by the fg_id, 25697 * if not enough space is available for moving the entries, this function 25698 * fails. 25699 */ 25700 extern int bcm_field_tcam_bank_evacuate( 25701 int unit, 25702 uint32 flags, 25703 bcm_field_tcam_bank_info_t *evac_info); 25704 25705 /* 25706 * Adds the given bank IDs to the given fg_id OR pp_app that are given in 25707 * add_info struct. 25708 */ 25709 extern int bcm_field_tcam_bank_add( 25710 int unit, 25711 uint32 flags, 25712 bcm_field_tcam_bank_info_t *add_info); 25713 25714 #endif /* BCM_HIDE_DISPATCHABLE */ 25715 25716 /* 25717 * ACE Format ID. Used to indicate the ID of an ACE format and the result 25718 * type of its entries. 25719 */ 25720 typedef uint8 bcm_field_ace_format_t; 25721 25722 /* 25723 * This structure represents a single context_payload element. This is an 25724 * abstract structure used only by other structures, like 25725 * bcm_field_group_attach_info_t, as a uniformed way to define 25726 * context_payloads. 25727 */ 25728 typedef struct bcm_field_ace_format_info_s { 25729 int nof_actions; /* Number of valid actions in the action 25730 set of ACE format. */ 25731 bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to 25732 matching entries for this action set. 25733 BCM level action look at 25734 bcm_field_action_t for more info. */ 25735 int action_with_valid_bit[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* If set, then additional bit is added 25736 in payload to indicate weather this 25737 action is valid. */ 25738 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 25739 } bcm_field_ace_format_info_t; 25740 25741 /* Initialize the bcm_field_ace_format_info_t structure. */ 25742 extern void bcm_field_ace_format_info_t_init( 25743 bcm_field_ace_format_info_t *ace_format_info); 25744 25745 #ifndef BCM_HIDE_DISPATCHABLE 25746 25747 /* 25748 * This function adds new ACE field format to Egress-PMF stage. This 25749 * format uses an ACE table (PPMC table) lookup for MC replication 25750 * entries and ACE pointers.Aligns field group add and field group 25751 * context attach. 25752 */ 25753 extern int bcm_field_ace_format_add( 25754 int unit, 25755 uint32 flags, 25756 bcm_field_ace_format_info_t *ace_format_info, 25757 bcm_field_ace_format_t *ace_format_id ); 25758 25759 /* Get the information about a specific ACE format. */ 25760 extern int bcm_field_ace_format_info_get( 25761 int unit, 25762 bcm_field_ace_format_t ace_format_id, 25763 bcm_field_ace_format_info_t *ace_format_info); 25764 25765 /* 25766 * This function deletes an ACE format, deallocates all relevant 25767 * resources. 25768 */ 25769 extern int bcm_field_ace_format_delete( 25770 int unit, 25771 bcm_field_ace_format_t ace_format_id); 25772 25773 #endif /* BCM_HIDE_DISPATCHABLE */ 25774 25775 /* This structure holds detailed info for ACE field entry. */ 25776 typedef struct bcm_field_ace_entry_info_s { 25777 int nof_entry_actions; /* Number of valid actions in the ACE 25778 field entry. */ 25779 bcm_field_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type, 25780 value.. */ 25781 } bcm_field_ace_entry_info_t; 25782 25783 /* Initialize the bcm_field_ace_entry_info_t structure. */ 25784 extern void bcm_field_ace_entry_info_t_init( 25785 bcm_field_ace_entry_info_t *entry_info); 25786 25787 #ifndef BCM_HIDE_DISPATCHABLE 25788 25789 /* This function adds new entry in hardware to indicated ACE format. */ 25790 extern int bcm_field_ace_entry_add( 25791 int unit, 25792 uint32 flags, 25793 bcm_field_ace_format_t ace_format_id , 25794 bcm_field_ace_entry_info_t *entry_info, 25795 uint32 *entry_handle); 25796 25797 /* 25798 * This function retrieves the entry information of a specific ACE Format 25799 * ID. 25800 */ 25801 extern int bcm_field_ace_entry_info_get( 25802 int unit, 25803 uint32 entry_handle, 25804 bcm_field_ace_entry_info_t *entry_info); 25805 25806 /* This function deletes an ACE entry from hardware. */ 25807 extern int bcm_field_ace_entry_delete( 25808 int unit, 25809 uint32 entry_handle); 25810 25811 #endif /* BCM_HIDE_DISPATCHABLE */ 25812 25813 /* 25814 * Indicates the first user action id to avoid overlapping with static 25815 * ones. 25816 */ 25817 #define BCM_FIELD_FIRST_USER_ACTION_ID (2048) 25818 25819 /* 25820 * Indicates the first user qualifier id to avoid overlapping with static 25821 * ones 25822 */ 25823 #define BCM_FIELD_FIRST_USER_QUALIFIER_ID (2048) 25824 25825 /* Calculates the User Defined action id. */ 25826 #define BCM_FIELD_ACTION_ID_MAP(user_action_id) (BCM_FIELD_FIRST_USER_ACTION_ID + user_action_id) 25827 25828 /* Calculates the User Defined qualifier id. */ 25829 #define BCM_FIELD_QUALIFIER_ID_MAP(user_qualifier_id) (BCM_FIELD_FIRST_USER_QUALIFIER_ID + user_qualifier_id) 25830 25831 /* 25832 * This enum contains all 'param_type' values that can be passed to the 25833 * bcm_field_context_param_set() function. 25834 */ 25835 typedef enum bcm_field_context_param_type_e { 25836 bcmFieldContextParamTypeFirst = 0, /* Invalid Param. */ 25837 bcmFieldContextParamTypeSystemHeaderProfile = bcmFieldContextParamTypeFirst, /* Selects a system header profile to 25838 determine which headers will be 25839 appended to packets matching the 25840 context. */ 25841 bcmFieldContextParamTypeSystemHeaderStrip = 1, /* Packet strip parameters - bytes and 25842 headers to remove. */ 25843 bcmFieldContextParamTypeKeyVal = 2, /* Set a constant value that can be used 25844 as qualifier for lookups performed by 25845 the context. */ 25846 bcmFieldContextParamTypeFlushLearnEnable = 3, /* Enable Flush learning. */ 25847 bcmFieldContextParamCount = 4 /* Always last. Not a usable value. */ 25848 } bcm_field_context_param_type_t; 25849 25850 /* 25851 * This structure holds all parameters, which can be set by 25852 * bcm_field_context_param_set() for a specific context. 25853 */ 25854 typedef struct bcm_field_context_param_info_s { 25855 bcm_field_context_param_type_t param_type; /* The type of the parameter to set. */ 25856 uint32 param_arg; /* Extra arg for the parameter to set. */ 25857 uint32 param_val; /* The value to set for the given 25858 parameter. */ 25859 } bcm_field_context_param_info_t; 25860 25861 /* Initialize the bcm_field_context_param_info_t structure. */ 25862 extern void bcm_field_context_param_info_t_init( 25863 bcm_field_context_param_info_t *context_params); 25864 25865 #ifndef BCM_HIDE_DISPATCHABLE 25866 25867 /* This function sets specific attribute value for a context. */ 25868 extern int bcm_field_context_param_set( 25869 int unit, 25870 uint32 flags, 25871 bcm_field_stage_t stage, 25872 bcm_field_context_t context_id, 25873 bcm_field_context_param_info_t *context_params); 25874 25875 #endif /* BCM_HIDE_DISPATCHABLE */ 25876 25877 /* Container of 4-bits identifiers of a FEM. */ 25878 typedef uint8 bcm_field_fem_id_t; 25879 25880 /* 25881 * Indicates the maximum number of conditions per FEM(Field Extraction 25882 * Macro). 25883 */ 25884 #define BCM_FIELD_NUMBER_OF_CONDITIONS_PER_FEM (16) 25885 25886 /* 25887 * Indicates the maximum number of extractions per FEM(Field Extraction 25888 * Macro). 25889 */ 25890 #define BCM_FIELD_NUMBER_OF_EXTRACTIONS_PER_FEM (4) 25891 25892 /* 25893 * Indicates the maximum number of mapping bits per FEM(Field Extraction 25894 * Macro). 25895 */ 25896 #define BCM_FIELD_NUMBER_OF_MAPPING_BITS_PER_FEM (24) 25897 25898 /* 25899 * This Enum used to select the source type for the output bit of action 25900 * extraction. 25901 */ 25902 typedef enum bcm_field_fem_extraction_output_source_type_e { 25903 bcmFieldFemExtractionOutputSourceTypeFirst = 0, /* Invalid Param. */ 25904 bcmFieldFemExtractionOutputSourceTypeForce = bcmFieldFemExtractionOutputSourceTypeFirst, /* Use a constant value for this bit. */ 25905 bcmFieldFemExtractionOutputSourceTypeKey = 1, /* Use a bit from the input key. */ 25906 bcmFieldFemExtractionOutputSourceTypeCount = 2 /* Always last. Not a usable value. */ 25907 } bcm_field_fem_extraction_output_source_type_t; 25908 25909 /* This structure holds detailed info for FEM condition info. */ 25910 typedef struct bcm_field_fem_extraction_output_bit_s { 25911 bcm_field_fem_extraction_output_source_type_t source_type; /* Output source type. */ 25912 uint8 offset; /* Offset from key select. */ 25913 uint8 forced_value; /* Force bit value in case source type 25914 == force. */ 25915 } bcm_field_fem_extraction_output_bit_t; 25916 25917 /* This structure holds detailed info for FEM extraction info. */ 25918 typedef struct bcm_field_fem_extraction_s { 25919 bcm_field_action_t action_type; /* Action type to be performed by this 25920 extraction. */ 25921 bcm_field_fem_extraction_output_bit_t output_bit[BCM_FIELD_NUMBER_OF_MAPPING_BITS_PER_FEM]; /* Array of extraction commands. Each 25922 extract 1 bit of the action value. */ 25923 uint32 increment; /* Add a constant value to the result of 25924 the extraction. */ 25925 } bcm_field_fem_extraction_t; 25926 25927 /* This structure holds detailed info for FEM condition info. */ 25928 typedef struct bcm_field_fem_condition_s { 25929 uint8 extraction_id; /* Choose one of 4 action extraction tables that 25930 will produce an action. */ 25931 uint8 is_action_valid; /* If TRUE, the FEM will produce an action for the 25932 given 4 bits word. */ 25933 } bcm_field_fem_condition_t; 25934 25935 /* This structure holds detailed info for FEM input info. */ 25936 typedef struct bcm_field_fem_input_info_s { 25937 uint8 input_offset; /* Offset inside the FG-ID result 25938 buffer. The FEM input is 32 bits 25939 long. When the FG result buffer is 25940 longer than 32 bits, offset is 25941 required (in resolution of 16 bits). */ 25942 bcm_field_group_t overriding_fg_id; /* If valid FG-ID, override the main 25943 group result buffer with 16 bits 25944 result from this specified TCAM-FG 25945 result. */ 25946 } bcm_field_fem_input_info_t; 25947 25948 /* This structure holds detailed info for FEM action info. */ 25949 typedef struct bcm_field_fem_action_info_s { 25950 bcm_field_fem_input_info_t fem_input; /* Structure holds all FEM input 25951 information. */ 25952 uint8 condition_msb; /* Select the MSB of a 4 bit chunk that 25953 will choose extraction tables ID 25954 taken from the 32 input bits selected 25955 by input offset (range of 3-31). */ 25956 bcm_field_fem_condition_t fem_condition[BCM_FIELD_NUMBER_OF_CONDITIONS_PER_FEM]; /* Array of structures, each describing 25957 the condition information for the 25958 FEM. */ 25959 bcm_field_fem_extraction_t fem_extraction[BCM_FIELD_NUMBER_OF_EXTRACTIONS_PER_FEM]; /* Array of structures, each describes 25960 the extraction information for the 25961 FEM,action combination including 25962 action type, how to construct the 25963 action values out of the 32 input 25964 bits, and option for an increment for 25965 adding constant value for the result 25966 of the extraction. */ 25967 } bcm_field_fem_action_info_t; 25968 25969 /* Initialize the bcm_field_fem_action_info_t structure. */ 25970 extern void bcm_field_fem_action_info_t_init( 25971 bcm_field_fem_action_info_t *fem_action_info); 25972 25973 #ifndef BCM_HIDE_DISPATCHABLE 25974 25975 /* 25976 * This function adds FEM machine as a resource to a specific field 25977 * group. 25978 */ 25979 extern int bcm_field_fem_action_add( 25980 int unit, 25981 uint32 flags, 25982 bcm_field_group_t fg_id, 25983 bcm_field_action_priority_t encoded_position, 25984 bcm_field_fem_action_info_t *fem_action_info); 25985 25986 /* 25987 * This function give the caller all info concerning contents of FEM 25988 * machine's HW and, also, some SW values (SWSTATE). 25989 */ 25990 extern int bcm_field_fem_action_info_get( 25991 int unit, 25992 bcm_field_group_t fg_id, 25993 bcm_field_action_priority_t encoded_position, 25994 bcm_field_fem_action_info_t *fem_action_info); 25995 25996 /* 25997 * This function sets FEM machine's HW and SW values (SWSTATE) to initial 25998 * values. 25999 */ 26000 extern int bcm_field_fem_action_delete( 26001 int unit, 26002 bcm_field_group_t fg_id, 26003 bcm_field_action_priority_t bcm_field_action_priority_t); 26004 26005 #endif /* BCM_HIDE_DISPATCHABLE */ 26006 26007 /* Opaque handle to a bitwie OR mask of an EFES. */ 26008 typedef uint32 bcm_field_efes_action_or_mask_t; 26009 26010 /* Indicates the maximum number of conditions per EFES. */ 26011 #define BCM_FIELD_NUMBER_OF_CONDITIONS_PER_EFES (4) 26012 26013 /* 26014 * This structure holds info for EFES configuration for one combination 26015 * of the condition bits. 26016 */ 26017 typedef struct bcm_field_efes_condition_conf_s { 26018 uint8 is_action_valid; /* If false, under this condition no 26019 action will take place (and all other 26020 fields are irrelevant). */ 26021 bcm_field_action_t action_type; /* The action type to perform. */ 26022 int action_lsb; /* The starting offset (from the LSB of 26023 the field group) of the bits to 26024 extract from the input to the action, 26025 not including valid bit. */ 26026 int action_nof_bits; /* The number of bits to extract from 26027 the input to the action, not 26028 including valid bit. */ 26029 uint8 action_with_valid_bit; /* Whether or not to use valid bit. If 26030 we use valid bit, itwill be placed 26031 one bit before action_lsb. */ 26032 uint8 valid_bit_polarity; /* If we use valid bit, what value (zero 26033 or one) will indicate that the action 26034 should take place. */ 26035 bcm_field_efes_action_or_mask_t action_or_mask; /* A bitwise OR mask that perfroms an OR 26036 with the output of the EFES. */ 26037 } bcm_field_efes_condition_conf_t; 26038 26039 /* 26040 * This structure holds info for EFES configuration for one combination 26041 * of the condition bits. 26042 */ 26043 typedef struct bcm_field_efes_action_info_s { 26044 uint8 is_condition_valid; /* Whether we use the 2MSB feature for 26045 condition bits. */ 26046 int condition_msb; /* The offset (from the LSB of the field 26047 group) of the MSB of the condition 26048 bits, if is_condition_valid is true. */ 26049 bcm_field_efes_condition_conf_t efes_condition_conf[BCM_FIELD_NUMBER_OF_CONDITIONS_PER_EFES]; /* Array of structures, each describing 26050 the configuration for a specific 26051 conbination of the condition bits. If 26052 is_condition_valid is false, only the 26053 first element is relevant. */ 26054 } bcm_field_efes_action_info_t; 26055 26056 /* Initialize the bcm_field_efes_action_info_t structure. */ 26057 extern void bcm_field_efes_action_info_t_init( 26058 bcm_field_efes_action_info_t *efes_action_info); 26059 26060 #ifndef BCM_HIDE_DISPATCHABLE 26061 26062 /* This function adds an EFES to a specific field group and context pair. */ 26063 extern int bcm_field_efes_action_add( 26064 int unit, 26065 uint32 flags, 26066 bcm_field_group_t fg_id, 26067 bcm_field_context_t context_id, 26068 bcm_field_action_priority_t *encoded_position, 26069 bcm_field_efes_action_info_t *efes_action_info); 26070 26071 /* 26072 * This function give the caller all info concerning contents of an EFES 26073 * that was added with bcm_field_efes_action_add(). 26074 */ 26075 extern int bcm_field_efes_action_info_get( 26076 int unit, 26077 bcm_field_group_t fg_id, 26078 bcm_field_context_t context_id, 26079 bcm_field_action_priority_t encoded_position, 26080 bcm_field_efes_action_info_t *efes_action_info); 26081 26082 /* 26083 * This function deletes an EFES that was added with 26084 * bcm_field_efes_action_add(). 26085 */ 26086 extern int bcm_field_efes_action_delete( 26087 int unit, 26088 bcm_field_group_t fg_id, 26089 bcm_field_context_t context_id, 26090 bcm_field_action_priority_t bcm_field_action_priority_t); 26091 26092 #endif /* BCM_HIDE_DISPATCHABLE */ 26093 26094 /* 26095 * The mask of position of the preferred location within the FES-FEM 26096 * array. 26097 */ 26098 #define BCM_FIELD_ACTION_POSITION_MASK (0xFFFF) 26099 26100 /* 26101 * The mask of priority of the preferred location within the FES-FEM 26102 * array. 26103 */ 26104 #define BCM_FIELD_ACTION_PRIORITY_MASK (0xFFFF) 26105 26106 /* The mask of the preferred FES-FEM array. */ 26107 #define BCM_FIELD_ACTION_ARRAY_MASK (0xF) 26108 26109 /* The offset of the preferred FES-FEM array. */ 26110 #define BCM_FIELD_ACTION_ARRAY_OFFSET (16) 26111 26112 /* The offset inside the FES-FEM array, where the valid bid is located. */ 26113 #define BCM_FIELD_ACTION_VALID_OFFSET (31) 26114 26115 /* 26116 * The value of the bit is reserved for BCM_FIELD_ACTION_DONT_CARE 'don't 26117 * care'. 0 means we care about position. 26118 */ 26119 #define BCM_FIELD_ACTION_DONT_CARE_OFFSET (30) 26120 26121 /* 26122 * The action priority used to indicate that we don't care about the 26123 * priority. 26124 */ 26125 #define BCM_FIELD_ACTION_DONT_CARE ((1U << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | (1U << BCM_FIELD_ACTION_VALID_OFFSET)) 26126 26127 /* 26128 * The action priority used to indicate that we do not want the action to 26129 * take place (no EFES is allocated for it). 26130 */ 26131 #define BCM_FIELD_ACTION_INVALIDATE (1 << (BCM_FIELD_ACTION_VALID_OFFSET - 1)) 26132 26133 /* 26134 * Flag to indicate position or priority. 1 means we indicate a specific 26135 * position. 0 means we indicate a numerical priority. 26136 */ 26137 #define BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET (20) 26138 26139 #define BCM_FIELD_ACTION_POSITION(_array_id_, _position_) \ 26140 (((((bcm_field_action_priority_t) (_position_)) & BCM_FIELD_ACTION_POSITION_MASK) | \ 26141 ((((bcm_field_action_priority_t) (_array_id_)) & BCM_FIELD_ACTION_ARRAY_MASK) \ 26142 << BCM_FIELD_ACTION_ARRAY_OFFSET) | \ 26143 (1 << BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET) | \ 26144 ((0 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | \ 26145 (1U << BCM_FIELD_ACTION_VALID_OFFSET)))) 26146 26147 #define BCM_FIELD_ACTION_PRIORITY(_array_id_, _priority_) \ 26148 (((((bcm_field_action_priority_t) (_priority_)) & BCM_FIELD_ACTION_PRIORITY_MASK) | \ 26149 (((bcm_field_action_priority_t) (_array_id_)) << BCM_FIELD_ACTION_ARRAY_OFFSET) | \ 26150 (0 << BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET) | \ 26151 ((0 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | \ 26152 (1U << BCM_FIELD_ACTION_VALID_OFFSET)))) 26153 26154 /* 26155 * The Enum described the system header profile types, which are used in 26156 * order to build the appropriate system headers in the Ingress Transmit 26157 * unit. 26158 */ 26159 typedef enum bcm_field_system_header_profile_e { 26160 bcmFieldSystemHeaderProfileFirst = 0, /* Invalid Param. */ 26161 bcmFieldSystemHeaderProfileNone = bcmFieldSystemHeaderProfileFirst, /* No system Headers. */ 26162 bcmFieldSystemHeaderProfileFtmh = 1, /* FTMH only. */ 26163 bcmFieldSystemHeaderProfileFtmhPph = 2, /* FTMH + PP header. */ 26164 bcmFieldSystemHeaderProfileFtmhTsh = 3, /* FTMH + Timestamp header. */ 26165 bcmFieldSystemHeaderProfileFtmhTshPph = 4, /* FTMH +Timestamp +PP header. */ 26166 bcmFieldSystemHeaderProfileFtmhTshPphUdh = 5, /* FTMH +Timestamp +PP header + User 26167 defined Header. Used for Ethernet 26168 header. */ 26169 bcmFieldSystemHeaderProfileFtmhUdh = 6, /* FTMH + User defined Header. */ 26170 bcmFieldSystemHeaderProfileCount = 7 /* Always last. Not a usable value. */ 26171 } bcm_field_system_header_profile_t; 26172 26173 #define BCM_FIELD_SYSTEM_HEADER_PROFILE_STRINGS \ 26174 { \ 26175 "None", \ 26176 "Ftmh", \ 26177 "FtmhPph", \ 26178 "FtmhTsh", \ 26179 "FtmhTshPph", \ 26180 "FtmhTshPphUdh", \ 26181 "FtmhUdh" \ 26182 } 26183 26184 /* Range Qualifier Types */ 26185 typedef enum bcm_field_range_type_e { 26186 bcmFieldRangeTypeFirst = 0, /* Invalid Param. */ 26187 bcmFieldRangeTypeL4SrcPort = bcmFieldRangeTypeFirst, /* L4 Source Port Range Qualifier. */ 26188 bcmFieldRangeTypeL4DstPort = 1, /* L4 Destination Port Range Qualifier. */ 26189 bcmFieldRangeTypeOutVport = 2, /* Egress Virtual Port Range Qualifier. */ 26190 bcmFieldRangeTypePacketHeaderSize = 3, /* Packet Header Size Range Qualifier. */ 26191 bcmFieldRangeTypeL4OpsPacketHeaderSize = 4, /* Packet Header Size Range Qualifier 26192 for L4 OPS. */ 26193 bcmFieldRangeTypeInTTL = 5, /* In TTL Range Qualifier */ 26194 bcmFieldRangeTypeUserDefined1Low = 6, /* User-Defined-1 Low (16b) Range 26195 Qualifier */ 26196 bcmFieldRangeTypeUserDefined1High = 7, /* User-Defined-1 High (16b) Range 26197 Qualifier */ 26198 bcmFieldRangeTypeUserDefined2Low = 8, /* User-Defined-2 Low (16b) Range 26199 Qualifier */ 26200 bcmFieldRangeTypeUserDefined2High = 9, /* User-Defined-2 High (16b) Range 26201 Qualifier */ 26202 bcmFieldRangeTypeCount = 10 /* Always last. Not a usable value. */ 26203 } bcm_field_range_type_t; 26204 26205 #define BCM_FIELD_RANGE_TYPE_STR \ 26206 { \ 26207 "L4SrcPort", \ 26208 "L4DstPort", \ 26209 "OutVport", \ 26210 "PacketHeaderSize", \ 26211 "L4OpsPacketHeaderSize", \ 26212 "InTTL", \ 26213 "UserDefined1Low", \ 26214 "UserDefined1High", \ 26215 "UserDefined2Low", \ 26216 "UserDefined2High" \ 26217 } 26218 26219 /* 26220 * This structure holds the info about range configuration, needed for 26221 * bcm_field_range_set API. 26222 */ 26223 typedef struct bcm_field_range_info_s { 26224 bcm_field_range_type_t range_type; /* Range type */ 26225 uint32 min_val; /* Minimum value of the range. */ 26226 uint32 max_val; /* Maximum value of the range. */ 26227 } bcm_field_range_info_t; 26228 26229 #ifndef BCM_HIDE_DISPATCHABLE 26230 26231 /* Set new Field Range used for range qualifier. */ 26232 extern int bcm_field_range_set( 26233 int unit, 26234 uint32 flags, 26235 bcm_field_stage_t stage, 26236 bcm_field_range_t range_id, 26237 bcm_field_range_info_t *range_info); 26238 26239 /* Set new Field Range used for range qualifier. */ 26240 extern int bcm_field_range_info_get( 26241 int unit, 26242 bcm_field_stage_t stage, 26243 bcm_field_range_t *range_id, 26244 bcm_field_range_info_t *range_info); 26245 26246 /* Get the offset of the qualifier in the key. */ 26247 extern int bcm_field_group_qualifier_offset_get( 26248 int unit, 26249 uint32 flags, 26250 bcm_field_group_t fg_id, 26251 bcm_field_qualify_t qualifier, 26252 int *offset); 26253 26254 /* Get the offset of the action in the action payload. */ 26255 extern int bcm_field_group_action_offset_get( 26256 int unit, 26257 uint32 flags, 26258 bcm_field_group_t fg_id, 26259 bcm_field_action_t action, 26260 int *offset); 26261 26262 #endif /* BCM_HIDE_DISPATCHABLE */ 26263 26264 /* Forwarding Layer Types. */ 26265 typedef enum bcm_field_layer_type_e { 26266 bcmFieldLayerTypeFirst = 0, 26267 bcmFieldLayerTypeEth = bcmFieldLayerTypeFirst, 26268 bcmFieldLayerTypeIp4 = 1, 26269 bcmFieldLayerTypeIp6 = 2, 26270 bcmFieldLayerTypeMpls = 3, 26271 bcmFieldLayerTypeMplsUa = 4, 26272 bcmFieldLayerTypeArp = 5, 26273 bcmFieldLayerTypeFcoe = 6, 26274 bcmFieldLayerTypeTcp = 7, 26275 bcmFieldLayerTypeUdp = 8, 26276 bcmFieldLayerTypeBfdSingleHop = 9, 26277 bcmFieldLayerTypeBfdMultiHop = 10, 26278 bcmFieldLayerTypePtpEvent = 11, 26279 bcmFieldLayerTypePtpGeneral = 12, 26280 bcmFieldLayerTypeY1731 = 13, 26281 bcmFieldLayerTypeIcmp = 14, 26282 bcmFieldLayerTypeBierTi = 15, 26283 bcmFieldLayerTypeBierMpls = 16, 26284 bcmFieldLayerTypeRch = 17, 26285 bcmFieldLayerTypePppoe = 18, 26286 bcmFieldLayerTypeSrv6Endpoint = 19, 26287 bcmFieldLayerTypeSrv6Beyond = 20, 26288 bcmFieldLayerTypeIgmp = 21, 26289 bcmFieldLayerTypeIpAny = 22, 26290 bcmFieldLayerTypeGre = 23, 26291 bcmFieldLayerTypeLt2pv3 = 24, 26292 bcmFieldLayerTypeVxlanGpe = 25, 26293 bcmFieldLayerTypeVxlan = 26, 26294 bcmFieldLayerTypeGeneve = 27, 26295 bcmFieldLayerTypeIpt = 28, 26296 bcmFieldLayerTypeTm = 29, 26297 bcmFieldLayerTypeUnknown = 30, 26298 bcmFieldLayerTypeTmLegacy = 31, 26299 bcmFieldLayerTypeSctp = 32, 26300 bcmFieldLayerTypeForwardingMPLS = 33, 26301 bcmFieldLayerTypeGtp = 34, 26302 bcmFieldLayerTypeCount = 35 /* Always last. Not a usable value. */ 26303 } bcm_field_layer_type_t; 26304 26305 #define BCM_FIELD_LAYER_TYPE_STRINGS \ 26306 { \ 26307 "Eth", \ 26308 "Ip4", \ 26309 "Ip6", \ 26310 "Mpls", \ 26311 "MplsUa", \ 26312 "Arp", \ 26313 "Fcoe", \ 26314 "Tcp", \ 26315 "Udp", \ 26316 "BfdSingleHop", \ 26317 "BfdMultiHop", \ 26318 "PtpEvent", \ 26319 "PtpGeneral", \ 26320 "Y1731", \ 26321 "Icmp", \ 26322 "BierTi", \ 26323 "BierMpls", \ 26324 "Rch", \ 26325 "Pppoe", \ 26326 "Srv6Endpoint", \ 26327 "Srv6Beyond", \ 26328 "Igmp", \ 26329 "IpAny", \ 26330 "Gre", \ 26331 "Lt2pv3", \ 26332 "VxlanGpe", \ 26333 "Vxlan", \ 26334 "Geneve", \ 26335 "Ipt", \ 26336 "Tm", \ 26337 "Unknown", \ 26338 "TmLegacy", \ 26339 "Sctp", \ 26340 "ForwardingMPLS", \ 26341 "Gtp" \ 26342 } 26343 26344 /* Forwarding Context. */ 26345 typedef enum bcm_field_forward_context_e { 26346 bcmFieldForwardContextFirst = 0, 26347 bcmFieldForwardContextEth = bcmFieldForwardContextFirst, 26348 bcmFieldForwardContextMirrorOrSs = 1, 26349 bcmFieldForwardContextIPv4UcR0 = 2, 26350 bcmFieldForwardContextIPv4McR0 = 3, 26351 bcmFieldForwardContextIPv6UcR0 = 4, 26352 bcmFieldForwardContextIPv6McR0 = 5, 26353 bcmFieldForwardContextBierMpls = 6, 26354 bcmFieldForwardContextBierTi = 7, 26355 bcmFieldForwardContextIngressTrapLegacy = 8, 26356 bcmFieldForwardContextCpuPort = 9, 26357 bcmFieldForwardContextRchEnc = 10, 26358 bcmFieldForwardContextRchPtchEnc = 11, 26359 bcmFieldForwardContextStackingPort = 12, 26360 bcmFieldForwardContextFcoeFcf = 13, 26361 bcmFieldForwardContextFcoeFcfVft = 14, 26362 bcmFieldForwardContextSrv6Endpoint = 15, 26363 bcmFieldForwardContextSrv6EndpointPsp = 16, 26364 bcmFieldForwardContextSrv6TunnelTerm = 17, 26365 bcmFieldForwardContextTm = 18, 26366 bcmFieldForwardContextRawProcessing = 19, 26367 bcmFieldForwardContextTdm = 20, 26368 bcmFieldForwardContextMplsInjectedFromOamp = 21, 26369 bcmFieldForwardContextErppTrap = 22, 26370 bcmFieldForwardContextDoNotEdit = 23, 26371 bcmFieldForwardContextMpls = 24, 26372 bcmFieldForwardContextIpv4UcR1 = 25, 26373 bcmFieldForwardContextIpv4McR1 = 26, 26374 bcmFieldForwardContextIpv6UcR1 = 27, 26375 bcmFieldForwardContextIpv6McR1 = 28, 26376 bcmFieldForwardContextCount = 29 /* Always last. Not a usable value. */ 26377 } bcm_field_forward_context_t; 26378 26379 #define BCM_FIELD_FORWARD_CONTEXT_STRINGS \ 26380 { \ 26381 "Eth", \ 26382 "MirrorOrSs", \ 26383 "IPv4UcR0", \ 26384 "IPv4McR0", \ 26385 "IPv6UcR0", \ 26386 "IPv6McR0", \ 26387 "BierMpls", \ 26388 "BierTi", \ 26389 "IngressTrapLegacy", \ 26390 "CpuPort", \ 26391 "RchEnc", \ 26392 "RchPtchEnc", \ 26393 "StackingPort", \ 26394 "FcoeFcf", \ 26395 "FcoeFcfVft", \ 26396 "Srv6Endpoint", \ 26397 "Srv6EndpointPsp", \ 26398 "Srv6TunnelTerm", \ 26399 "Tm", \ 26400 "RawProcessing", \ 26401 "Tdm", \ 26402 "MplsInjectedFromOamp", \ 26403 "ErppTrap", \ 26404 "DoNotEdit", \ 26405 "Mpls", \ 26406 "Ipv4UcR1", \ 26407 "Ipv4McR1", \ 26408 "Ipv6UcR1", \ 26409 "Ipv6McR1" \ 26410 } 26411 26412 /* The place of is_meter bit inside the stat profile. */ 26413 #define BCM_FILED_STAT_IS_METER_SHIFT (0) 26414 26415 /* The place of is_lm bit inside the stat profile. */ 26416 #define BCM_FILED_STAT_IS_LM_SHIFT (1) 26417 26418 /* The place of stat type bits inside the stat profile. */ 26419 #define BCM_FILED_STAT_TYPE_SHIFT (2) 26420 26421 /* The place, whre the valid bit is located, inside the stat profile. */ 26422 #define BCM_FILED_STAT_VALID_SHIFT (4) 26423 26424 /* 26425 * Base value for Ingress based Field Processor stage Group/Entry/Presel 26426 * Ids. 26427 */ 26428 #define BCM_FIELD_IFP_ID_BASE (0x00000000) 26429 26430 /* 26431 * Base value for Egress based Field Processor stage Group/Entry/Presel 26432 * Ids. 26433 */ 26434 #define BCM_FIELD_EFP_ID_BASE (0x01000000) 26435 26436 /* 26437 * Base value for VLAN based Field Processor stage Group/Entry/Presel 26438 * Ids. 26439 */ 26440 #define BCM_FIELD_VFP_ID_BASE (0x02000000) 26441 26442 /* 26443 * Base value for Exact Match based Field Processor stage 26444 * Group/Entry/Presel Ids. 26445 */ 26446 #define BCM_FIELD_EM_ID_BASE (0x03000000) 26447 26448 /* 26449 * Base value for Flow Tracker based Field Processor stage 26450 * Group/Entry/Presel Ids. 26451 */ 26452 #define BCM_FIELD_FT_ID_BASE (0x04000000) 26453 26454 /* Mask for stage Group/Entry/Presel Ids. */ 26455 #define BCM_FIELD_ID_MASK (0x00FFFFFF) 26456 26457 /* Parameters info for Field Action. */ 26458 typedef struct bcm_field_action_params_s { 26459 uint32 param0; /* First Parameter to Action */ 26460 uint32 param1; /* Second Parameter to Action */ 26461 uint32 param2; /* Third Parameter to Action */ 26462 bcm_pbmp_t pbmp; /* Port bitmap */ 26463 } bcm_field_action_params_t; 26464 26465 /* Match configuration info for Field Action. */ 26466 typedef struct bcm_field_action_match_config_s { 26467 uint8 elephant_pkt_only; /* To match only elephant flows */ 26468 bcm_pbmp_t egr_pbmp; /* Match Pbmp for Egress Port */ 26469 } bcm_field_action_match_config_t; 26470 26471 #ifndef BCM_HIDE_DISPATCHABLE 26472 26473 /* Add an action to a field entry */ 26474 extern int bcm_field_action_config_info_add( 26475 int unit, 26476 bcm_field_entry_t entry, 26477 bcm_field_action_t action, 26478 bcm_field_action_params_t *params, 26479 bcm_field_action_match_config_t *match_config); 26480 26481 /* 26482 * Retrieve the parameters for an action previously added to a field 26483 * entry 26484 */ 26485 extern int bcm_field_action_config_info_get( 26486 int unit, 26487 bcm_field_entry_t entry, 26488 bcm_field_action_t action, 26489 bcm_field_action_params_t *params, 26490 bcm_field_action_match_config_t *match_config); 26491 26492 /* 26493 * Configure match criteria for bcmFieldQualifyRangeCheckGroup 26494 * qualifier from the field entry. 26495 */ 26496 extern int bcm_field_qualify_RangeCheckGroup( 26497 int unit, 26498 bcm_field_entry_t entry, 26499 uint8 data, 26500 uint8 mask); 26501 26502 /* 26503 * Get match criteria for bcmFieldQualifyRangeCheckGroup 26504 * qualifier from the field entry. 26505 */ 26506 extern int bcm_field_qualify_RangeCheckGroup_get( 26507 int unit, 26508 bcm_field_entry_t entry, 26509 uint8 *data, 26510 uint8 *mask); 26511 26512 /* 26513 * Qualifies on Flow group id assigned(bcmFieldActionFlowtrackerGroupId) 26514 * by FlowTracker based Field Processor Stage. 26515 */ 26516 extern int bcm_field_qualify_FlowtrackerGroupId( 26517 int unit, 26518 bcm_field_entry_t entry, 26519 int data, 26520 int mask); 26521 26522 /* 26523 * To get the qualified inputs on Flow group id 26524 * assigned(bcmFieldActionFlowtrackerGroupId) by FlowTracker based Field 26525 * Processor Stage. 26526 */ 26527 extern int bcm_field_qualify_FlowtrackerGroupId_get( 26528 int unit, 26529 bcm_field_entry_t entry, 26530 int *data, 26531 int *mask); 26532 26533 /* Qualifies on Classifier ID from Flowtracker group. */ 26534 extern int bcm_field_qualify_FlowtrackerClassId( 26535 int unit, 26536 bcm_field_entry_t entry, 26537 int data, 26538 int mask); 26539 26540 /* To get the qualified inputs on Classifier ID from Flowtracker group. */ 26541 extern int bcm_field_qualify_FlowtrackerClassId_get( 26542 int unit, 26543 bcm_field_entry_t entry, 26544 int *data, 26545 int *mask); 26546 26547 /* Qualifies on event Flowtracker group valid or not. */ 26548 extern int bcm_field_qualify_FlowtrackerGroupValid( 26549 int unit, 26550 bcm_field_entry_t entry, 26551 uint8 data, 26552 uint8 mask); 26553 26554 /* To get the qualified inputs on event Flowtracker group valid or not. */ 26555 extern int bcm_field_qualify_FlowtrackerGroupValid_get( 26556 int unit, 26557 bcm_field_entry_t entry, 26558 uint8 *data, 26559 uint8 *mask); 26560 26561 /* Qualifies on event whether Flowtracker flow tracking is disabled. */ 26562 extern int bcm_field_qualify_FlowtrackerDisabled( 26563 int unit, 26564 bcm_field_entry_t entry, 26565 uint8 data, 26566 uint8 mask); 26567 26568 /* 26569 * To get the qualified inputs on event whether Flowtracker flow tracking 26570 * is disabled. 26571 */ 26572 extern int bcm_field_qualify_FlowtrackerDisabled_get( 26573 int unit, 26574 bcm_field_entry_t entry, 26575 uint8 *data, 26576 uint8 *mask); 26577 26578 /* Qualifies on event whether Flowtracker metering is exceeded. */ 26579 extern int bcm_field_qualify_FlowtrackerMeteringExceeded( 26580 int unit, 26581 bcm_field_entry_t entry, 26582 uint8 data, 26583 uint8 mask); 26584 26585 /* 26586 * To get the qualified inputs on event whether Flowtracker metering is 26587 * exceeded. 26588 */ 26589 extern int bcm_field_qualify_FlowtrackerMeteringExceeded_get( 26590 int unit, 26591 bcm_field_entry_t entry, 26592 uint8 *data, 26593 uint8 *mask); 26594 26595 /* 26596 * Qualifies on the event whether initial or sample copied to collector 26597 * happened by Flowtracker. 26598 */ 26599 extern int bcm_field_qualify_FlowtrackerCollectorCopy( 26600 int unit, 26601 bcm_field_entry_t entry, 26602 uint8 data, 26603 uint8 mask); 26604 26605 /* 26606 * To get the qualified inputs on event whether initial or sample copied 26607 * to collector happened by Flowtracker. 26608 */ 26609 extern int bcm_field_qualify_FlowtrackerCollectorCopy_get( 26610 int unit, 26611 bcm_field_entry_t entry, 26612 uint8 *data, 26613 uint8 *mask); 26614 26615 /* Qualifies on the Flowtracker event whether the flow table is full. */ 26616 extern int bcm_field_qualify_FlowtrackerFlowTableFull( 26617 int unit, 26618 bcm_field_entry_t entry, 26619 uint8 data, 26620 uint8 mask); 26621 26622 /* 26623 * To get the qualified inputs on Flowtracker event whether the flow 26624 * table is full. 26625 */ 26626 extern int bcm_field_qualify_FlowtrackerFlowTableFull_get( 26627 int unit, 26628 bcm_field_entry_t entry, 26629 uint8 *data, 26630 uint8 *mask); 26631 26632 /* Qualifies on the event whether flow limit for Flowtracker is exceeded. */ 26633 extern int bcm_field_qualify_FlowtrackerGroupFlowExceeded( 26634 int unit, 26635 bcm_field_entry_t entry, 26636 uint8 data, 26637 uint8 mask); 26638 26639 /* 26640 * To get the qualified inputs on the event whether flow limit for 26641 * Flowtracker is exceeded. 26642 */ 26643 extern int bcm_field_qualify_FlowtrackerGroupFlowExceeded_get( 26644 int unit, 26645 bcm_field_entry_t entry, 26646 uint8 *data, 26647 uint8 *mask); 26648 26649 /* Qualifies on the event whether Flowtracker export queue is full. */ 26650 extern int bcm_field_qualify_FlowtrackerExportQueueFull( 26651 int unit, 26652 bcm_field_entry_t entry, 26653 uint8 data, 26654 uint8 mask); 26655 26656 /* 26657 * To get the qualified inputs on the event whether Flowtracker export 26658 * queue is full. 26659 */ 26660 extern int bcm_field_qualify_FlowtrackerExportQueueFull_get( 26661 int unit, 26662 bcm_field_entry_t entry, 26663 uint8 *data, 26664 uint8 *mask); 26665 26666 #endif /* BCM_HIDE_DISPATCHABLE */ 26667 26668 /* Map a presel id to a name */ 26669 extern void bcm_field_range_info_t_init( 26670 bcm_field_range_info_t *range_info); 26671 26672 #ifndef BCM_HIDE_DISPATCHABLE 26673 26674 /* Qualifies on the tag type configured for opaque tags. */ 26675 extern int bcm_field_qualify_OpaqueTagType( 26676 int unit, 26677 bcm_field_entry_t entry, 26678 uint8 data, 26679 uint8 mask); 26680 26681 /* 26682 * To get the qualified inputs on the tag type configured for opaque 26683 * tags. 26684 */ 26685 extern int bcm_field_qualify_OpaqueTagType_get( 26686 int unit, 26687 bcm_field_entry_t entry, 26688 uint8 *data, 26689 uint8 *mask); 26690 26691 /* Qualifies on the higher 32 bits of opaque tag allowed in the system */ 26692 extern int bcm_field_qualify_OpaqueTagHigh( 26693 int unit, 26694 bcm_field_entry_t entry, 26695 uint32 data, 26696 uint32 mask); 26697 26698 /* 26699 * To get the qualified inputs on the higher 32 bits of opaque tag 26700 * allowed in the system. 26701 */ 26702 extern int bcm_field_qualify_OpaqueTagHigh_get( 26703 int unit, 26704 bcm_field_entry_t entry, 26705 uint32 *data, 26706 uint32 *mask); 26707 26708 /* Qualifies on the lower 32 bits of opaque tag allowed in the system */ 26709 extern int bcm_field_qualify_OpaqueTagLow( 26710 int unit, 26711 bcm_field_entry_t entry, 26712 uint32 data, 26713 uint32 mask); 26714 26715 /* 26716 * To get the qualified inputs on the lower 32 bits of opaque tag allowed 26717 * in the system. 26718 */ 26719 extern int bcm_field_qualify_OpaqueTagLow_get( 26720 int unit, 26721 bcm_field_entry_t entry, 26722 uint32 *data, 26723 uint32 *mask); 26724 26725 #endif /* BCM_HIDE_DISPATCHABLE */ 26726 26727 /* Dos Attack Events. */ 26728 #define BCM_FIELD_DOSATTACK_MACSA_DA_SAME (1 << 0) /* Dos Attack Event when 26729 Source MAC is same as 26730 Destination MAC. */ 26731 #define BCM_FIELD_DOSATTACK_IPFRAG_OFFSET (1 << 1) /* Dos Attack Event when 26732 Protocol field Offset 26733 in IPv4 Header is 26734 equal to 1. */ 26735 #define BCM_FIELD_DOSATTACK_V6_TYPE0_ROUTING_HDR (1 << 2) /* Dos Attack Event when 26736 Type0 Routing 26737 Extension header is 26738 present in IPv6. */ 26739 #define BCM_FIELD_DOSATTACK_V6_NON_LAST_FRAG_LT_1280 (1 << 3) /* Dos Attack Event when 26740 non-last fragment of 26741 IPv6 Packet is less 26742 than 1280 bytes. */ 26743 #define BCM_FIELD_DOSATTACK_FIRST_TCPIP_FRAG_SMALL (1 << 4) /* Dos Attack Event when 26744 First Fragment of IP 26745 payload with TCP is 26746 smaller than 26747 configured value. */ 26748 #define BCM_FIELD_DOSATTACK_TCP_OFFSET (1 << 5) /* Dos Attack Event when 26749 L4 is TCP and IP 26750 protocol offset is 26751 equal to 1. */ 26752 #define BCM_FIELD_DOSATTACK_SYN_FRAG (1 << 6) /* Dos Attack Event when 26753 TCP SYN Packet with 26754 Source Port 0-1023 for 26755 non-first fragments 26756 tcp/udp port values 26757 are always zero. */ 26758 #define BCM_FIELD_DOSATTACK_FLAGZERO_SEQZERO (1 << 7) /* Dos Attack Event when 26759 TCP Packets with 26760 control flags == 0 and 26761 sequence number == 0. */ 26762 #define BCM_FIELD_DOSATTACK_TCPFLAGS_FUP (1 << 8) /* Dos Attack Event when 26763 TCP Packets with 26764 FIN,URG & PSH bits set 26765 & sequence number == 26766 0. */ 26767 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SF (1 << 9) /* Dos Attack Event when 26768 TCP packets with SYN 26769 and FIN set. */ 26770 #define BCM_FIELD_DOSATTACK_TCPPORTS_EQUAL (1 << 10) /* Dos Attack Event when 26771 TCP Source and 26772 Destination ports are 26773 same. */ 26774 #define BCM_FIELD_DOSATTACK_UDPPORTS_EQUAL (1 << 11) /* Dos Attack Event when 26775 UDP Source and 26776 Destination ports are 26777 same. */ 26778 #define BCM_FIELD_DOSATTACK_ICMP (1 << 12) /* Dos Attack Event when 26779 ICMP V4 and V6 ping 26780 packet with payload 26781 bigger than configured 26782 value. */ 26783 #define BCM_FIELD_DOSATTACK_ICMPFRAGMENTS (1 << 13) /* Dos Attack Event when 26784 IPv4/IPv6 fragmented 26785 ICMP packets. */ 26786 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SR (1 << 14) /* Dos Attack Event when 26787 TCP packets with SYN 26788 and RST set. */ 26789 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SYN_FIRSTFRAG (1 << 15) /* Dos Attack Event when 26790 TCP with SYN set and 26791 first fragment of 26792 fragmented IP packet. */ 26793 #define BCM_FIELD_DOSATTACK_TCPFLAGS_FIN_NOACK (1 << 16) /* Dos Attack Event when 26794 TCP packet with FIN 26795 set but ACK not set. */ 26796 #define BCM_FIELD_DOSATTACK_TCPFLAGS_RST_NOACK (1 << 17) /* Dos Attack Event when 26797 TCP packet with RST 26798 set but ACK not set. */ 26799 #define BCM_FIELD_DOSATTACK_TCPFLAGS_NOSFRA (1 << 18) /* Dos Attack Event when 26800 TCP packet with SYN, 26801 FIN, RST and ACK not 26802 set. */ 26803 #define BCM_FIELD_DOSATTACK_TCP_DSTPORT_ZERO (1 << 19) /* Dos Attack Event when 26804 TCP packet with 26805 Destination port 26806 equals to 0. */ 26807 #define BCM_FIELD_DOSATTACK_TCP_SRCPORT_ZERO (1 << 20) /* Dos Attack Event when 26808 TCP packet with Source 26809 port equals to 0. */ 26810 #define BCM_FIELD_DOSATTACK_TCP_DST_IP_BCAST (1 << 21) /* Dos Attack Event when 26811 TCP Packet with 26812 Destination IP 26813 Broadcast. */ 26814 #define BCM_FIELD_DOSATTACK_TCPFLAGS_ZERO (1 << 22) /* Dos Attack Event when 26815 configured TCP flags 26816 is zero. */ 26817 #define BCM_FIELD_DOSATTACK_TCPFLAGS_RESVD_NONZERO (1 << 23) /* Dos Attack Event when 26818 configured Reserved 26819 flags is non-zero. */ 26820 #define BCM_FIELD_DOSATTACK_TCPFLAGS_ACK (1 << 24) /* Dos Attack Event when 26821 TCP flag ACK is set 26822 and Acknowledge number 26823 is zero. */ 26824 #define BCM_FIELD_DOSATTACK_TCPFLAGS_URG_NOURGPTR (1 << 25) /* Dos Attack Event when 26825 TCP Flag URG set and 26826 Urgent pointer is 26827 zero. */ 26828 #define BCM_FIELD_DOSATTACK_TCPFLAGS_NOURG_URGPTR (1 << 26) /* Dos Attack Event when 26829 TCP Flag URG not set 26830 and Urgent pointer is 26831 not zero. */ 26832 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SYNOPTION (1 << 27) /* Dos Attack Event when 26833 TCP Flag SYN set and 26834 Option same as 26835 configured value. */ 26836 26837 #ifndef BCM_HIDE_DISPATCHABLE 26838 26839 /* 26840 * Configure match criteria for bcmFieldQualifyInnerDosAttack 26841 * qualifier for the field entry. 26842 */ 26843 extern int bcm_field_qualify_InnerDosAttack( 26844 int unit, 26845 bcm_field_entry_t entry, 26846 uint8 data, 26847 uint8 mask); 26848 26849 /* 26850 * Get match criteria for bcmFieldQualifyInnerDosAttack 26851 * qualifier from the field entry. 26852 */ 26853 extern int bcm_field_qualify_InnerDosAttack_get( 26854 int unit, 26855 bcm_field_entry_t entry, 26856 uint8 *data, 26857 uint8 *mask); 26858 26859 /* 26860 * Configure Match criteria for bcmFieldQualifyDosAttackEvents qualifier 26861 * for the field entry. 26862 */ 26863 extern int bcm_field_qualify_DosAttackEvents( 26864 int unit, 26865 bcm_field_entry_t entry, 26866 uint32 data, 26867 uint32 mask); 26868 26869 /* 26870 * Get match criteria for bcmFieldQualifyDosAttackEvents qualifier from 26871 * the field entry. 26872 */ 26873 extern int bcm_field_qualify_DosAttackEvents_get( 26874 int unit, 26875 bcm_field_entry_t entry, 26876 uint32 *data, 26877 uint32 *mask); 26878 26879 /* 26880 * Configure Match criteria for bcmFieldQualifyInnerDosAttackEvents 26881 * qualifier for the field entry. 26882 */ 26883 extern int bcm_field_qualify_InnerDosAttackEvents( 26884 int unit, 26885 bcm_field_entry_t entry, 26886 uint32 data, 26887 uint32 mask); 26888 26889 /* 26890 * Get match criteria for bcmFieldQualifyInnerDosAttackEvents qualifier 26891 * from the field entry. 26892 */ 26893 extern int bcm_field_qualify_InnerDosAttackEvents_get( 26894 int unit, 26895 bcm_field_entry_t entry, 26896 uint32 *data, 26897 uint32 *mask); 26898 26899 #endif /* BCM_HIDE_DISPATCHABLE */ 26900 26901 /* Parameters for bcmFieldActionDlbEcmpMonitorEnable */ 26902 #define BCM_FIELD_DLB_ECMP_MON_DISABLE (1 << 0) /* Enabling Dlb Ecmp Monitor 26903 support */ 26904 #define BCM_FIELD_DLB_ECMP_MON_ENABLE (1 << 1) /* Disabling Dlb Ecmp Monitor 26905 support */ 26906 26907 /* Parameters for bcmFieldActionDlbTrunkMonitorEnable */ 26908 #define BCM_FIELD_DLB_TRUNK_MON_DISABLE (1 << 0) /* Enabling Dlb Trunk Monitor 26909 support */ 26910 #define BCM_FIELD_DLB_TRUNK_MON_ENABLE (1 << 1) /* Disabling Dlb Trunk 26911 Monitor support */ 26912 26913 #ifndef BCM_HIDE_DISPATCHABLE 26914 26915 /* Set match criteria for Container qualifier. */ 26916 extern int bcm_field_qualify_Container( 26917 int unit, 26918 bcm_field_entry_t entry, 26919 uint64 data, 26920 uint64 mask); 26921 26922 /* Get match criteria for Container qualifier. */ 26923 extern int bcm_field_qualify_Container_get( 26924 int unit, 26925 bcm_field_entry_t entry, 26926 uint64 *data, 26927 uint64 *mask); 26928 26929 /* 26930 * To qualify on Class identifier assigned by Egress adaptation 26931 * forwarding tables 26932 */ 26933 extern int bcm_field_qualify_EgressForwardingClassId( 26934 int unit, 26935 bcm_field_entry_t entry, 26936 int data, 26937 int mask); 26938 26939 /* 26940 * To get the qualified inputs on Class identifier assigned by Egress 26941 * adaptation forwarding tables 26942 */ 26943 extern int bcm_field_qualify_EgressForwardingClassId_get( 26944 int unit, 26945 bcm_field_entry_t entry, 26946 int *data, 26947 int *mask); 26948 26949 #endif /* BCM_HIDE_DISPATCHABLE */ 26950 26951 /* bcm_field_pkt_flow_type_e */ 26952 typedef enum bcm_field_pkt_flow_type_e { 26953 bcmFieldPktFlowTypeTunnelNone = 0, /* Type to identify non-tunnel flows 26954 like access or transit flows. */ 26955 bcmFieldPktFlowTypeTunnelL2 = 1, /* Type to identify L2 Tunnel flows. */ 26956 bcmFieldPktFlowTypeTunnelL3 = 2, /* Type to identify L3 Tunnel flows. */ 26957 bcmFieldPktFlowTypeLastCount = 4 /* Always Last. Not a usable value. */ 26958 } bcm_field_pkt_flow_type_t; 26959 26960 #define BCM_FIELD_PKT_FLOW_TYPE \ 26961 { \ 26962 "TunnelNone", \ 26963 "TunnelL2", \ 26964 "TunnelL3" \ 26965 } 26966 26967 #ifndef BCM_HIDE_DISPATCHABLE 26968 26969 /* 26970 * Selects Packet flow for preselector qualifiers in-order to program the 26971 * suitable offsets. The supported flows are \ref 26972 * field_pkt_flow_type_table 26973 */ 26974 extern int bcm_field_qualify_PktFlowType( 26975 int unit, 26976 bcm_field_entry_t entry, 26977 bcm_field_pkt_flow_type_t type); 26978 26979 /* To get the qualified inputs on Pkt Flow Type */ 26980 extern int bcm_field_qualify_PktFlowType_get( 26981 int unit, 26982 bcm_field_entry_t entry, 26983 bcm_field_pkt_flow_type_t *type); 26984 26985 /* To qualify on Class identifier assigned by Vlan translate tables */ 26986 extern int bcm_field_qualify_VlanTranslateClassId( 26987 int unit, 26988 bcm_field_entry_t entry, 26989 uint16 data, 26990 uint16 mask); 26991 26992 /* 26993 * To get the qualified inputs on Class identifier assigned by Vlan 26994 * Translate tables 26995 */ 26996 extern int bcm_field_qualify_VlanTranslateClassId_get( 26997 int unit, 26998 bcm_field_entry_t entry, 26999 uint16 *data, 27000 uint16 *mask); 27001 27002 /* To qualify on IP identifier field available in incoming IP header. */ 27003 extern int bcm_field_qualify_IpIdentifier( 27004 int unit, 27005 bcm_field_entry_t entry, 27006 uint16 data, 27007 uint16 mask); 27008 27009 /* To get the qualified inputs on IP identifier field */ 27010 extern int bcm_field_qualify_IpIdentifier_get( 27011 int unit, 27012 bcm_field_entry_t entry, 27013 uint16 *data, 27014 uint16 *mask); 27015 27016 /* 27017 * Configure match criteria for bcmFieldQualifyIp4Length 27018 * qualifier for the field entry. 27019 */ 27020 extern int bcm_field_qualify_Ip4Length( 27021 int unit, 27022 bcm_field_entry_t entry, 27023 uint16 data, 27024 uint16 mask); 27025 27026 /* 27027 * Get match criteria for bcmFieldQualifyIp4Length 27028 * qualifier from the field entry. 27029 */ 27030 extern int bcm_field_qualify_Ip4Length_get( 27031 int unit, 27032 bcm_field_entry_t entry, 27033 uint16 *data, 27034 uint16 *mask); 27035 27036 /* 27037 * Configure match criteria for bcmFieldQualifyIp6Length 27038 * qualifier for the field entry. 27039 */ 27040 extern int bcm_field_qualify_Ip6Length( 27041 int unit, 27042 bcm_field_entry_t entry, 27043 uint16 data, 27044 uint16 mask); 27045 27046 /* 27047 * Get match criteria for bcmFieldQualifyIp6Length 27048 * qualifier from the field entry. 27049 */ 27050 extern int bcm_field_qualify_Ip6Length_get( 27051 int unit, 27052 bcm_field_entry_t entry, 27053 uint16 *data, 27054 uint16 *mask); 27055 27056 /* 27057 * Configure match criteria for bcmFieldQualifyTunnelPayloadIp4Length 27058 * qualifier for the field entry. 27059 */ 27060 extern int bcm_field_qualify_TunnelPayloadIp4Length( 27061 int unit, 27062 bcm_field_entry_t entry, 27063 uint16 data, 27064 uint16 mask); 27065 27066 /* 27067 * Get match criteria for bcmFieldQualifyTunnelPayloadIp4Length 27068 * qualifier from the field entry. 27069 */ 27070 extern int bcm_field_qualify_TunnelPayloadIp4Length_get( 27071 int unit, 27072 bcm_field_entry_t entry, 27073 uint16 *data, 27074 uint16 *mask); 27075 27076 /* 27077 * Configure match criteria for bcmFieldQualifyTunnelPayloadIp6Length 27078 * qualifier for the field entry. 27079 */ 27080 extern int bcm_field_qualify_TunnelPayloadIp6Length( 27081 int unit, 27082 bcm_field_entry_t entry, 27083 uint16 data, 27084 uint16 mask); 27085 27086 /* 27087 * Get match criteria for bcmFieldQualifyTunnelPayloadIp6Length 27088 * qualifier from the field entry. 27089 */ 27090 extern int bcm_field_qualify_TunnelPayloadIp6Length_get( 27091 int unit, 27092 bcm_field_entry_t entry, 27093 uint16 *data, 27094 uint16 *mask); 27095 27096 /* To qualify on GBP Presence */ 27097 extern int bcm_field_qualify_GbpPresent( 27098 int unit, 27099 bcm_field_entry_t entry, 27100 uint8 data, 27101 uint8 mask); 27102 27103 /* To get the qualified inputs on GBP Presence */ 27104 extern int bcm_field_qualify_GbpPresent_get( 27105 int unit, 27106 bcm_field_entry_t entry, 27107 uint8 *data, 27108 uint8 *mask); 27109 27110 /* To qualify on Overlay GBP Presence */ 27111 extern int bcm_field_qualify_HiGigGbpPresent( 27112 int unit, 27113 bcm_field_entry_t entry, 27114 uint8 data, 27115 uint8 mask); 27116 27117 /* To get the qualified inputs on Overlay GBP Presence */ 27118 extern int bcm_field_qualify_HiGigGbpPresent_get( 27119 int unit, 27120 bcm_field_entry_t entry, 27121 uint8 *data, 27122 uint8 *mask); 27123 27124 /* To qualify on GBP source ID */ 27125 extern int bcm_field_qualify_GbpSrcId( 27126 int unit, 27127 bcm_field_entry_t entry, 27128 uint16 data, 27129 uint16 mask); 27130 27131 /* To get the qualified inputs on GBP source ID */ 27132 extern int bcm_field_qualify_GbpSrcId_get( 27133 int unit, 27134 bcm_field_entry_t entry, 27135 uint16 *data, 27136 uint16 *mask); 27137 27138 /* To qualify on GBP destination ID */ 27139 extern int bcm_field_qualify_GbpDstId( 27140 int unit, 27141 bcm_field_entry_t entry, 27142 uint16 data, 27143 uint16 mask); 27144 27145 /* To get the qualified inputs on GBP destination ID */ 27146 extern int bcm_field_qualify_GbpDstId_get( 27147 int unit, 27148 bcm_field_entry_t entry, 27149 uint16 *data, 27150 uint16 *mask); 27151 27152 /* To qualify on GBP source ID of the HIGIG packet. */ 27153 extern int bcm_field_qualify_HiGigGbpSrcId( 27154 int unit, 27155 bcm_field_entry_t entry, 27156 uint16 data, 27157 uint16 mask); 27158 27159 /* To get the qualified inputs on GBP source ID of the HiGig packet */ 27160 extern int bcm_field_qualify_HiGigGbpSrcId_get( 27161 int unit, 27162 bcm_field_entry_t entry, 27163 uint16 *data, 27164 uint16 *mask); 27165 27166 /* To qualify on Vxlan GBP Presence flag */ 27167 extern int bcm_field_qualify_VxlanGbpPresent( 27168 int unit, 27169 bcm_field_entry_t entry, 27170 uint8 data, 27171 uint8 mask); 27172 27173 /* To get the qualified inputs on Vxlan GBP Presence */ 27174 extern int bcm_field_qualify_VxlanGbpPresent_get( 27175 int unit, 27176 bcm_field_entry_t entry, 27177 uint8 *data, 27178 uint8 *mask); 27179 27180 /* 27181 * To Qualify on the results of Flowtracker checker events in Flow 27182 * Tracker Module. 27183 * Note: This qualifier needs a precondition that 27184 * bcmFieldQualifyFlowtrackerGroupId qualifier 27185 * has to be added in group's qset during group create and has to 27186 * be qualified 27187 * prior to qualifying on this(FlowtrackerCheck) qualifier. 27188 */ 27189 extern int bcm_field_qualify_FlowtrackerCheck( 27190 int unit, 27191 bcm_field_entry_t entry, 27192 bcm_flowtracker_group_t flow_group_id, 27193 uint32 num_checks, 27194 bcm_field_flowtrackercheck_t *list_of_check_ids); 27195 27196 /* 27197 * To get the qualified inputs the results of Flowtracker checker events 27198 * in Flow Tracker Module. 27199 */ 27200 extern int bcm_field_qualify_FlowtrackerCheck_get( 27201 int unit, 27202 bcm_field_entry_t entry, 27203 bcm_flowtracker_group_t flow_group_id, 27204 uint32 num_checks, 27205 bcm_field_flowtrackercheck_t *list_of_check_ids, 27206 uint32 *actual_num_checks); 27207 27208 /* Qualifies whether the packet flow is learnt by Flowtracker module */ 27209 extern int bcm_field_qualify_FlowtrackerLearn( 27210 int unit, 27211 bcm_field_entry_t entry, 27212 uint8 data, 27213 uint8 mask); 27214 27215 /* 27216 * To get the qualified inputs on whether the packet flow is learnt by 27217 * Flowtracker module. 27218 */ 27219 extern int bcm_field_qualify_FlowtrackerLearn_get( 27220 int unit, 27221 bcm_field_entry_t entry, 27222 uint8 *data, 27223 uint8 *mask); 27224 27225 /* To Qualify on the COS Map type type of bcm_field_cos_map_select_t. */ 27226 extern int bcm_field_qualify_CosMapSelect( 27227 int unit, 27228 bcm_field_entry_t entry, 27229 bcm_field_cos_map_select_t cos_map_select); 27230 27231 /* 27232 * To get the qualified inputs on the COS Map type type of 27233 * bcm_field_cos_map_select_t. 27234 */ 27235 extern int bcm_field_qualify_CosMapSelect_get( 27236 int unit, 27237 bcm_field_entry_t entry, 27238 bcm_field_cos_map_select_t *cos_map_select); 27239 27240 /* 27241 * To Qualify on Opaque Object1 which was assigned 27242 * by Flex modules for example NSH, INT..etc and VFP 27243 */ 27244 extern int bcm_field_qualify_OpaqueObject1( 27245 int unit, 27246 bcm_field_entry_t entry, 27247 uint16 data, 27248 uint16 mask); 27249 27250 /* 27251 * To get the qualified inputs on Opaque Object1 which was assigned 27252 * by Flex modules for example NSH, INT..etc and VFP 27253 */ 27254 extern int bcm_field_qualify_OpaqueObject1_get( 27255 int unit, 27256 bcm_field_entry_t entry, 27257 uint16 *data, 27258 uint16 *mask); 27259 27260 /* 27261 * To Qualify on Opaque Object2 which was assigned 27262 * by Flex modules for example NSH, INT..etc and VFP 27263 */ 27264 extern int bcm_field_qualify_OpaqueObject2( 27265 int unit, 27266 bcm_field_entry_t entry, 27267 uint16 data, 27268 uint16 mask); 27269 27270 /* 27271 * To get the qualified inputs on Opaque Object2 which was assigned 27272 * by Flex modules for example NSH, INT..etc and VFP 27273 */ 27274 extern int bcm_field_qualify_OpaqueObject2_get( 27275 int unit, 27276 bcm_field_entry_t entry, 27277 uint16 *data, 27278 uint16 *mask); 27279 27280 /* 27281 * To Qualify on Opaque Object3 which was assigned 27282 * by Flex modules for example NSH, INT..etc and VFP 27283 */ 27284 extern int bcm_field_qualify_OpaqueObject3( 27285 int unit, 27286 bcm_field_entry_t entry, 27287 uint16 data, 27288 uint16 mask); 27289 27290 /* 27291 * To get the qualified inputs on Opaque Object3 which was assigned 27292 * by Flex modules for example NSH, INT..etc and VFP 27293 */ 27294 extern int bcm_field_qualify_OpaqueObject3_get( 27295 int unit, 27296 bcm_field_entry_t entry, 27297 uint16 *data, 27298 uint16 *mask); 27299 27300 /* 27301 * To Qualify on Opaque Object4 which was assigned 27302 * by Flex modules for example NSH, INT..etc and VFP 27303 */ 27304 extern int bcm_field_qualify_OpaqueObject4( 27305 int unit, 27306 bcm_field_entry_t entry, 27307 uint16 data, 27308 uint16 mask); 27309 27310 /* 27311 * To get the qualified inputs on Opaque Object4 which was assigned 27312 * by Flex modules for example NSH, INT..etc and VFP 27313 */ 27314 extern int bcm_field_qualify_OpaqueObject4_get( 27315 int unit, 27316 bcm_field_entry_t entry, 27317 uint16 *data, 27318 uint16 *mask); 27319 27320 /* To qualify on the packet's Incoming Outer VLAN ID. */ 27321 extern int bcm_field_qualify_IncomingOuterVlanId( 27322 int unit, 27323 bcm_field_entry_t entry, 27324 bcm_vlan_t data, 27325 bcm_vlan_t mask); 27326 27327 /* To get the qualified inputs on the packet's Incoming Outer VLAN ID */ 27328 extern int bcm_field_qualify_IncomingOuterVlanId_get( 27329 int unit, 27330 bcm_field_entry_t entry, 27331 bcm_vlan_t *data, 27332 bcm_vlan_t *mask); 27333 27334 #endif /* BCM_HIDE_DISPATCHABLE */ 27335 27336 /* Loopback subtypes */ 27337 typedef enum bcm_field_loopback_subtype_e { 27338 bcmFieldLoopbackSubtypeIfa = 0, /* Loopback Subtype Inband Flow Analysis */ 27339 bcmFieldLoopbackSubtypeCount = 1 /* Always last. Not to be used. */ 27340 } bcm_field_loopback_subtype_t; 27341 27342 /* Egress Flow control for bcmFieldActionEgressFlowControlEnable */ 27343 typedef enum bcm_field_egress_flow_control_e { 27344 bcmFieldEgressFlowControlLoopbackRedirect = 0, /* Egress Flow Control for Loopback 27345 Redirect */ 27346 bcmFieldEgressFlowControlAppendIncomingOuterVlan = 1, /* The incoming Outer Vlan tag will be 27347 appended in the outgoing packet */ 27348 bcmFieldEgressFlowControlAppendOuterVlanNew = 2, /* New Outer Vlan tag will be appended 27349 in the outgoing packet */ 27350 bcmFieldEgressFlowControlTranslateSnatSrcIpOnly = 3, /* Source IP address translation for 27351 SNAT */ 27352 bcmFieldEgressFlowControlTranslateDnatSrcIpDstIp = 4, /* Source and Destination IP addresses 27353 translation for DNAT */ 27354 bcmFieldEgressFlowControlTranslateSnaptSrcIpL4SrcPort = 5, /* Source IP address and L4 Source port 27355 translation for SNAPT */ 27356 bcmFieldEgressFlowControlTranslateSnaptSrcIpDstIpL4SrcPortL4DstPort = 6, /* Source and Destination IP addresses 27357 and L4 Source and Destination ports 27358 translation for SNAPT */ 27359 bcmFieldEgressFlowControlTranslateDnatDstIpOnly = 7, /* Destination IP address translation 27360 for DNAT */ 27361 bcmFieldEgressFlowControlTranslateDnaptDstIpL4DstPort = 8, /* Destination IP address and L3 27362 destination port translation for 27363 DNAPT */ 27364 bcmFieldEgressFlowControlTranslateDnaptSrcIpDstIpL4SrcPortL4DstPort = 9, /* Source and Destination IP addresses 27365 and L4 Source and Destination ports 27366 translation for DNAPT */ 27367 bcmFieldEgressFlowControlTranslateIpmc = 10, /* Multicast NAT */ 27368 bcmFieldEgressFlowControlVlanNew = 11, /* Triggers Egress Vlan Translation 27369 Lookup for new VLAN */ 27370 bcmFieldEgressFlowControlSrcMacVlanNew = 12, /* Triggers Egress Vlan Translation 27371 Lookup for new Source MAC and VLAN */ 27372 bcmFieldEgressFlowControlDstMacVlanNew = 13, /* Triggers Egress Vlan Translation 27373 Lookup for new Destination MAC and 27374 VLAN */ 27375 bcmFieldEgressFlowControlSrcMacDstMacVlanNew = 14, /* Triggers Egress Vlan Translation 27376 Lookup for new Source and Destination 27377 MAC and VLAN */ 27378 bcmFieldEgressFlowControlTranslateSnatSrcIpDstIp = 15, /* Source and Destination IP addresses 27379 translation for SNAT */ 27380 bcmFieldEgressFlowControlIfaCopyToCpuWithMetadata = 16, /* Copy to cpu IFA packet with metadata */ 27381 bcmFieldEgressFlowControlIfaLastNodeWithMetadata = 17, /* IFA Last node with Metadata */ 27382 bcmFieldEgressFlowControlIfaProbeSecondPass = 18, /* IFA probe second pass */ 27383 bcmFieldEgressFlowControlTunnelDecap = 19, /* Tunnel Decap */ 27384 bcmFieldEgressFlowControlNshInsert = 20, /* Insertion of NSH header */ 27385 bcmFieldEgressFlowControlNshTerminate = 21, /* NSH Termination */ 27386 bcmFieldEgressFlowControlNshTermMdClassPayload = 22, /* Add NSH Termination metadata class 27387 payload */ 27388 bcmFieldEgressFlowControlIfaHdrInsertionOverTrunk = 23, /* Insert IFA Header Over trunk */ 27389 bcmFieldEgressFlowControlCount = 24 /* Always last. Not to be used. */ 27390 } bcm_field_egress_flow_control_t; 27391 27392 /* Egress Flow Encap for bcmFieldActionEgressFlowEncapEnable */ 27393 typedef enum bcm_field_egress_flow_encap_e { 27394 bcmFieldEgressFlowEncapAppendIncomingOuterVlan = 0, /* The incoming Outer Vlan tag will be 27395 appended in the outgoing packet */ 27396 bcmFieldEgressFlowEncapTwampOwampTxTimestamp = 1, /* Requires BROADCOM_PREMIUM license */ 27397 bcmFieldEgressFlowEncapIOAMEnable = 2, /* Requires BROADCOM_PREMIUM license */ 27398 bcmFieldEgressFlowEncapIOAMOverflowFlagSet = 3, /* Requires BROADCOM_PREMIUM license */ 27399 bcmFieldEgressFlowEncapMacsecEncryptRxControlPktSvtagAdd = 4, /* Set control bit in SVTAG for MACSEC 27400 RX Control Packets. */ 27401 bcmFieldEgressFlowEncapIfaCopyToCpuWithMetadata = 5, /* Copy to cpu IFA packet with Metadata */ 27402 bcmFieldEgressFlowEncapIfaUdpHdrUpdate = 6, /* IFA UDP header update */ 27403 bcmFieldEgressFlowEncapIntReply = 7, /* INT metadata header insertion */ 27404 bcmFieldEgressFlowEncapIOAME2EEnable = 8, /* IOAM E2E Enable */ 27405 bcmFieldEgressFlowEncapTunnelDecap = 9, /* Tunnel Decap */ 27406 bcmFieldEgressFlowEncapNshMdTypeEqualToOne = 10, /* NSH Metadata type equal to One */ 27407 bcmFieldEgressFlowEncapNshMdTypeEqualToTwo = 11, /* NSH Metadata type equal to Two */ 27408 bcmFieldEgressFlowEncapIfaCopyToCpuWithMetadataOverTrunk = 12, /* Copy to CPU IFA with Metadata over 27409 trunk */ 27410 bcmFieldEgressFlowEncapIfaOverTrunkEnable = 13, /* Enable IFA over trunk */ 27411 bcmFieldEgressFlowEncapCount = 14 /* Always last. Not to be used. */ 27412 } bcm_field_egress_flow_encap_t; 27413 27414 #ifndef BCM_HIDE_DISPATCHABLE 27415 27416 /* To qualify on Subtype of the Loopback header */ 27417 extern int bcm_field_qualify_LoopbackSubtype( 27418 int unit, 27419 bcm_field_entry_t entry, 27420 bcm_field_loopback_subtype_t lb_subtype); 27421 27422 /* To get the qualified inputs on Subtype of the Loopback header */ 27423 extern int bcm_field_qualify_LoopbackSubtype_get( 27424 int unit, 27425 bcm_field_entry_t entry, 27426 bcm_field_loopback_subtype_t *lb_subtype); 27427 27428 #endif /* BCM_HIDE_DISPATCHABLE */ 27429 27430 /* Parameters for bcmFieldActionDlbEcmpMonitorEnable */ 27431 #define BCM_FIELD_L3INGRESS_STRENGTH_HIGH (1 << 0) /* This prioritizes 27432 L3_TUNNEL/MPLS over 27433 VFP, Port and Vlan 27434 Mpls */ 27435 #define BCM_FIELD_L3INGRESS_STRENGTH_LOW (1 << 1) /* This prioritizes 27436 L3_TUNNEL/MPLS and 27437 Port over VFP and Vlan 27438 Mpls */ 27439 27440 /* 27441 * Used as data value for qualifier 27442 * bcm_field_qualify_MacsecControlPkt.Used as param0 for action 27443 * bcmFieldActionMacSecDecryptPktType and 27444 * bcmFieldActionMacSecEncryptPktType 27445 */ 27446 typedef enum bcm_field_macsec_encrypt_decrypt_pkt_e { 27447 bcmFieldMacSecEncryptDecryptPktData = 0, /* MACSEC Encrypt data packet or Decrypt 27448 data packet. */ 27449 bcmFieldMacSecEncryptDecryptPktControl = 1, /* MACSEC Encrypt control packet or 27450 Decrypt control packet. */ 27451 bcmFieldMacSecEncryptDecryptPktCount = 2 /* Always last. Not to be used. */ 27452 } bcm_field_macsec_encrypt_decrypt_pkt_t; 27453 27454 /* Compare result operands between a pair of values. */ 27455 typedef enum bcm_field_compare_operand_e { 27456 bcmFieldCompareOperandFirst = 0, /* The first value is equal to the 27457 second value. */ 27458 bcmFieldCompareOperandEqual = bcmFieldCompareOperandFirst, /* The first value is equal to the 27459 second value. */ 27460 bcmFieldCompareOperandNotEqual = 1, /* The first value is not equal to the 27461 second value. */ 27462 bcmFieldCompareOperandFirstKeySmaller = 2, /* The first value is smaller then the 27463 second value. */ 27464 bcmFieldCompareOperandFirstKeyNotSmaller = 3, /* The first value is not smaller then 27465 the second value. */ 27466 bcmFieldCompareOperandFirstKeyBigger = 4, /* The first value is bigger then the 27467 second value. */ 27468 bcmFieldCompareOperandFirstKeyNotBigger = 5, /* The first value is not bigger then 27469 the second value. */ 27470 bcmFieldCompareOperandCount = 6 /* Always last. Number of Base Types. */ 27471 } bcm_field_compare_operand_t; 27472 27473 #define BCM_FIELD_COMPARE_OPERAND_STRINGS \ 27474 { \ 27475 "Equal", \ 27476 "NotEqual", \ 27477 "FirstKeySmaller", \ 27478 "FirstKeyNotSmaller", \ 27479 "FirstKeyBigger", \ 27480 "FirstKeyNotBigger" \ 27481 } 27482 27483 #ifndef BCM_HIDE_DISPATCHABLE 27484 27485 /* 27486 * Gives the offset of a specific compare operand inside the 6-bit 27487 * compare result. 27488 */ 27489 extern int bcm_field_compare_operand_offset_get( 27490 int unit, 27491 int pair_id, 27492 bcm_field_compare_operand_t compare_operand, 27493 int *offset); 27494 27495 #endif /* BCM_HIDE_DISPATCHABLE */ 27496 27497 /* 27498 * Field optional flag used for flushing hit indication info for all 27499 * entries. 27500 */ 27501 #define BCM_FIELD_ENTRY_HIT_FLUSH_ALL (1 << 1) 27502 27503 #ifndef BCM_HIDE_DISPATCHABLE 27504 27505 /* Get hit indication info for a specific entry per core. */ 27506 extern int bcm_field_entry_hit_get( 27507 int unit, 27508 uint32 flags, 27509 bcm_field_entry_t entry_handle, 27510 uint8 *entry_hit_core_bmp); 27511 27512 /* 27513 * This function flushes hit information of an entry or all entries, from 27514 * hardware. 27515 */ 27516 extern int bcm_field_entry_hit_flush( 27517 int unit, 27518 uint32 flags, 27519 bcm_field_entry_t entry_handle); 27520 27521 #endif /* BCM_HIDE_DISPATCHABLE */ 27522 27523 /* Ace context. */ 27524 typedef enum bcm_field_ace_context_e { 27525 bcmFieldAceContextFirst = 0, /* First element, not in use. */ 27526 bcmFieldAceContextNull = bcmFieldAceContextFirst, /* Null ACE context. */ 27527 bcmFieldAceContextReflector = 1, /* Ace context which is used for 27528 Reflector application (ERPP Trap). */ 27529 bcmFieldAceContextForwardingCodeOverride = 2, /* Ace context which is used for 27530 Forwarding code override. */ 27531 bcmFieldAceContextIFATrap = 3, /* Ace context which is used for IFA 27532 Trap. */ 27533 bcmFieldAceContextAlternateMarking = 4, /* ACE context action, used to set the 27534 context selection for ENCAP_1/2. */ 27535 bcmFieldAceContextTmToCOE = 5, /* ACE context which is used for TM to 27536 COE */ 27537 bcmFieldAceContextMplsTransitCCMSignal = 6, /* ACE context which is used for CCM 27538 packet to send back the signal defect */ 27539 bcmFieldAceContextAlternateMarkingIntermediate = 7, /* ACE context which is used for set the 27540 context selection for ENCAP_1 for 27541 intermidiate PE note */ 27542 bcmFieldAceContextCount = 8 /* Always last. Not a usable value. */ 27543 } bcm_field_ace_context_t; 27544 27545 #define BCM_FIELD_ACE_CONTEXT_STRINGS \ 27546 { \ 27547 "Null", \ 27548 "Reflector", \ 27549 "ForwardingCodeOverride", \ 27550 "IFATrap", \ 27551 "AlternateMarking", \ 27552 "TmToCOE", \ 27553 "MplsTransitCCMSignal", \ 27554 "AlternateMarkingIntermediate" \ 27555 } 27556 27557 #ifndef BCM_HIDE_DISPATCHABLE 27558 27559 /* 27560 * Set match criteria for bcmFieldQualifyInVportDataIndex 27561 * qualifier in the field entry. 27562 */ 27563 extern int bcm_field_qualify_InVportDataIndex( 27564 int unit, 27565 bcm_field_entry_t entry, 27566 uint8 data, 27567 uint8 mask); 27568 27569 /* 27570 * Get match criteria for bcmFieldQualifyInVportDataIndex 27571 * qualifier from the field entry. 27572 */ 27573 extern int bcm_field_qualify_InVportDataIndex_get( 27574 int unit, 27575 bcm_field_entry_t entry, 27576 uint8 *data, 27577 uint8 *mask); 27578 27579 /* To qualify on the MACSEC control packet */ 27580 extern int bcm_field_qualify_MacSecControlPkt( 27581 int unit, 27582 bcm_field_entry_t entry, 27583 bcm_field_macsec_encrypt_decrypt_pkt_t data); 27584 27585 /* To get the qualified inputs on the MACSEC control packet */ 27586 extern int bcm_field_qualify_MacSecControlPkt_get( 27587 int unit, 27588 bcm_field_entry_t entry, 27589 bcm_field_macsec_encrypt_decrypt_pkt_t *data); 27590 27591 /* To qualify on the C-Bit of MACSEC SECTAG. */ 27592 extern int bcm_field_qualify_MacSecSecTagCbit( 27593 int unit, 27594 bcm_field_entry_t entry, 27595 uint8 data, 27596 uint8 mask); 27597 27598 /* To get the qualified inputs on the C-Bit of the MACSEC SECTAG. */ 27599 extern int bcm_field_qualify_MacSecSecTagCbit_get( 27600 int unit, 27601 bcm_field_entry_t entry, 27602 uint8 *data, 27603 uint8 *mask); 27604 27605 /* To qualify on the E-Bit of MACSEC SECTAG */ 27606 extern int bcm_field_qualify_MacSecSecTagEbit( 27607 int unit, 27608 bcm_field_entry_t entry, 27609 uint8 data, 27610 uint8 mask); 27611 27612 /* To get the qualified inputs on the C-Bit of MACSEC SECTAG */ 27613 extern int bcm_field_qualify_MacSecSecTagEbit_get( 27614 int unit, 27615 bcm_field_entry_t entry, 27616 uint8 *data, 27617 uint8 *mask); 27618 27619 /* Qualifies on Underlay destination egress next hop. */ 27620 extern int bcm_field_qualify_DstL3EgressUnderlay( 27621 int unit, 27622 bcm_field_entry_t entry, 27623 bcm_if_t if_id); 27624 27625 /* Retrieves qualifies inputs on Underlay destination egress next hop. */ 27626 extern int bcm_field_qualify_DstL3EgressUnderlay_get( 27627 int unit, 27628 bcm_field_entry_t entry, 27629 bcm_if_t *if_id); 27630 27631 /* Qualifies on range of Underlay destination egress next hops. */ 27632 extern int bcm_field_qualify_DstL3EgressNextHopsUnderlay( 27633 int unit, 27634 bcm_field_entry_t entry, 27635 uint32 data, 27636 uint32 mask); 27637 27638 /* 27639 * Retrieves qualifies inputs on range of Underlay destination egress 27640 * next hops. 27641 */ 27642 extern int bcm_field_qualify_DstL3EgressNextHopsUnderlay_get( 27643 int unit, 27644 bcm_field_entry_t entry, 27645 uint32 *data, 27646 uint32 *mask); 27647 27648 /* To Qualify on Class ID assigned to packet based on Egress Port */ 27649 extern int bcm_field_qualify_EgressClassPort( 27650 int unit, 27651 bcm_field_entry_t entry, 27652 uint16 data, 27653 uint16 mask); 27654 27655 /* 27656 * To get the qualified inputs on Class ID assigned to packet based on 27657 * Egress Port 27658 */ 27659 extern int bcm_field_qualify_EgressClassPort_get( 27660 int unit, 27661 bcm_field_entry_t entry, 27662 uint16 *data, 27663 uint16 *mask); 27664 27665 /* 27666 * Set match criteria for bcmFieldQualifyINTProbeMarker1 qualifier for a 27667 * given field entry. 27668 */ 27669 extern int bcm_field_qualify_INTProbeMarker1( 27670 int unit, 27671 bcm_field_entry_t entry, 27672 uint32 data, 27673 uint32 mask); 27674 27675 /* 27676 * Get match criteria for bcmFieldQualifyINTProbeMarker1 qualifier for a 27677 * given field entry. 27678 */ 27679 extern int bcm_field_qualify_INTProbeMarker1_get( 27680 int unit, 27681 bcm_field_entry_t entry, 27682 uint32 *data, 27683 uint32 *mask); 27684 27685 /* 27686 * Set match criteria for bcmFieldQualifyINTProbeMarker2 qualifier for a 27687 * given field entry. 27688 */ 27689 extern int bcm_field_qualify_INTProbeMarker2( 27690 int unit, 27691 bcm_field_entry_t entry, 27692 uint32 data, 27693 uint32 mask); 27694 27695 /* 27696 * Get match criteria for bcmFieldQualifyINTProbeMarker2 qualifier for a 27697 * given field entry. 27698 */ 27699 extern int bcm_field_qualify_INTProbeMarker2_get( 27700 int unit, 27701 bcm_field_entry_t entry, 27702 uint32 *data, 27703 uint32 *mask); 27704 27705 /* 27706 * Set match criteria for bcmFieldQualifyINTReserved4Bytes qualifier for 27707 * a given field entry. 27708 */ 27709 extern int bcm_field_qualify_INTReserved4Bytes( 27710 int unit, 27711 bcm_field_entry_t entry, 27712 uint32 data, 27713 uint32 mask); 27714 27715 /* 27716 * Get match criteria for bcmFieldQualifyINTReserved4Bytes qualifier for 27717 * a given field entry. 27718 */ 27719 extern int bcm_field_qualify_INTReserved4Bytes_get( 27720 int unit, 27721 bcm_field_entry_t entry, 27722 uint32 *data, 27723 uint32 *mask); 27724 27725 /* To qualify on the type of Flow control packet */ 27726 extern int bcm_field_qualify_FlowControlType( 27727 int unit, 27728 bcm_field_entry_t entry, 27729 bcm_field_flow_control_pkt_type_t fc_type); 27730 27731 /* To get qualified inputs on the type of Flow control packet */ 27732 extern int bcm_field_qualify_FlowControlType_get( 27733 int unit, 27734 bcm_field_entry_t entry, 27735 bcm_field_flow_control_pkt_type_t *fc_type); 27736 27737 /* Requires BROADCOM_PREMIUM license */ 27738 extern int bcm_field_qualify_TimeStampTxPktType( 27739 int unit, 27740 bcm_field_entry_t entry, 27741 bcm_field_timestamp_transmit_pkt_type_t ts_pkt_type); 27742 27743 /* Requires BROADCOM_PREMIUM license */ 27744 extern int bcm_field_qualify_TimeStampTxPktType_get( 27745 int unit, 27746 bcm_field_entry_t entry, 27747 bcm_field_timestamp_transmit_pkt_type_t *ts_pkt_type); 27748 27749 /* Requires BROADCOM_PREMIUM license */ 27750 extern int bcm_field_qualify_SysHdrLocalDstport( 27751 int unit, 27752 bcm_field_entry_t entry, 27753 bcm_port_t data, 27754 bcm_port_t mask); 27755 27756 /* Requires BROADCOM_PREMIUM license */ 27757 extern int bcm_field_qualify_SysHdrLocalDstport_get( 27758 int unit, 27759 bcm_field_entry_t entry, 27760 bcm_port_t *data, 27761 bcm_port_t *mask); 27762 27763 /* Qualify IP forward plus one next protocol. */ 27764 extern int bcm_field_qualify_IpFwdPlusOneNextProtocol( 27765 int unit, 27766 bcm_field_entry_t entry, 27767 uint32 data, 27768 uint32 mask); 27769 27770 /* Get qualifier IP forward plus one next protocol. */ 27771 extern int bcm_field_qualify_IpFwdPlusOneNextProtocol_get( 27772 int unit, 27773 bcm_field_entry_t entry, 27774 uint32 *data, 27775 uint32 *mask); 27776 27777 /* Requires BROADCOM_PREMIUM license */ 27778 extern int bcm_field_qualify_IOAMNameSpaceIdMatch( 27779 int unit, 27780 bcm_field_entry_t entry, 27781 uint8 data, 27782 uint8 mask); 27783 27784 /* Requires BROADCOM_PREMIUM license */ 27785 extern int bcm_field_qualify_IOAMNameSpaceIdMatch_get( 27786 int unit, 27787 bcm_field_entry_t entry, 27788 uint8 *data, 27789 uint8 *mask); 27790 27791 /* Requires BROADCOM_PREMIUM license */ 27792 extern int bcm_field_qualify_IOAMPktOverflowed( 27793 int unit, 27794 bcm_field_entry_t entry, 27795 uint8 data, 27796 uint8 mask); 27797 27798 /* Requires BROADCOM_PREMIUM license */ 27799 extern int bcm_field_qualify_IOAMPktOverflowed_get( 27800 int unit, 27801 bcm_field_entry_t entry, 27802 uint8 *data, 27803 uint8 *mask); 27804 27805 /* Requires BROADCOM_PREMIUM license */ 27806 extern int bcm_field_qualify_IOAMRemainingLenValid( 27807 int unit, 27808 bcm_field_entry_t entry, 27809 uint8 data, 27810 uint8 mask); 27811 27812 /* Requires BROADCOM_PREMIUM license */ 27813 extern int bcm_field_qualify_IOAMRemainingLenValid_get( 27814 int unit, 27815 bcm_field_entry_t entry, 27816 uint8 *data, 27817 uint8 *mask); 27818 27819 /* To qualify on packet Igmp type value. */ 27820 extern int bcm_field_qualify_IgmpType( 27821 int unit, 27822 bcm_field_entry_t entry, 27823 uint16 data, 27824 uint16 mask); 27825 27826 /* 27827 * Get value for bcmFieldQualifyIgmpType 27828 * qualifier from the field entry. 27829 */ 27830 extern int bcm_field_qualify_IgmpType_get( 27831 int unit, 27832 bcm_field_entry_t entry, 27833 uint8 *data, 27834 uint8 *mask); 27835 27836 /* bcm_field_qualify_L2IngressInterface */ 27837 extern int bcm_field_qualify_L2IngressInterface( 27838 int unit, 27839 bcm_field_entry_t entry, 27840 uint32 intf_id, 27841 uint32 mask); 27842 27843 /* 27844 * Get match criteria for bcmFieldQualifyL2IngressInterface 27845 * qualifier from the field entry. 27846 */ 27847 extern int bcm_field_qualify_L2IngressInterface_get( 27848 int unit, 27849 bcm_field_entry_t entry, 27850 uint32 *data, 27851 uint32 *mask); 27852 27853 /* bcm_field_qualify_L3SrcHit */ 27854 extern int bcm_field_qualify_L3SrcHit( 27855 int unit, 27856 bcm_field_entry_t entry, 27857 uint8 data, 27858 uint8 mask); 27859 27860 /* 27861 * Get match criteria for bcmFieldQualifyL3SrcHit 27862 * qualifier from the field entry. 27863 */ 27864 extern int bcm_field_qualify_L3SrcHit_get( 27865 int unit, 27866 bcm_field_entry_t entry, 27867 uint8 *data, 27868 uint8 *mask); 27869 27870 /* bcm_field_qualify_L3DestHit */ 27871 extern int bcm_field_qualify_L3DestHit( 27872 int unit, 27873 bcm_field_entry_t entry, 27874 uint8 data, 27875 uint8 mask); 27876 27877 /* 27878 * Get match criteria for bcmFieldQualifyL3DestHit 27879 * qualifier from the field entry. 27880 */ 27881 extern int bcm_field_qualify_L3DestHit_get( 27882 int unit, 27883 bcm_field_entry_t entry, 27884 uint8 *data, 27885 uint8 *mask); 27886 27887 /* Add packet mac validations qualification to a field entry. */ 27888 extern int bcm_field_qualify_L2MacInfo( 27889 int unit, 27890 bcm_field_entry_t entry, 27891 uint32 data, 27892 uint32 mask); 27893 27894 /* Get packet L2 mac info qualification from a field entry. */ 27895 extern int bcm_field_qualify_L2MacInfo_get( 27896 int unit, 27897 bcm_field_entry_t entry, 27898 uint32 *data, 27899 uint32 *mask); 27900 27901 /* Add packet L4 info qualification to a field entry. */ 27902 extern int bcm_field_qualify_L4Info( 27903 int unit, 27904 bcm_field_entry_t entry, 27905 uint32 data, 27906 uint32 mask); 27907 27908 /* Get packet L4 info qualification from a field entry. */ 27909 extern int bcm_field_qualify_L4Info_get( 27910 int unit, 27911 bcm_field_entry_t entry, 27912 uint32 *data, 27913 uint32 *mask); 27914 27915 /* 27916 * Add to match on inner priority tagged packet qualification to a field 27917 * entry. 27918 */ 27919 extern int bcm_field_qualify_InnerPriTaggedPkt( 27920 int unit, 27921 bcm_field_entry_t entry, 27922 uint8 data, 27923 uint8 mask); 27924 27925 /* 27926 * Get to match on inner priority tagged packet qualification from a 27927 * field entry. 27928 */ 27929 extern int bcm_field_qualify_InnerPriTaggedPkt_get( 27930 int unit, 27931 bcm_field_entry_t entry, 27932 uint8 *data, 27933 uint8 *mask); 27934 27935 /* bcm_field_qualify_HiGig3Class */ 27936 extern int bcm_field_qualify_HiGig3Class( 27937 int unit, 27938 bcm_field_entry_t entry, 27939 uint32 data, 27940 uint32 mask); 27941 27942 /* 27943 * Get match criteria for bcmFieldQualifyHiGig3Class 27944 * qualifier from the field entry. 27945 */ 27946 extern int bcm_field_qualify_HiGig3Class_get( 27947 int unit, 27948 bcm_field_entry_t entry, 27949 uint32 *data, 27950 uint32 *mask); 27951 27952 /* Add HiGig3 packet flags qualification to a field entry. */ 27953 extern int bcm_field_qualify_HiGig3Flags( 27954 int unit, 27955 bcm_field_entry_t entry, 27956 uint16 data, 27957 uint16 mask); 27958 27959 /* Get higig3 packet flags from a field entry. */ 27960 extern int bcm_field_qualify_HiGig3Flags_get( 27961 int unit, 27962 bcm_field_entry_t entry, 27963 uint16 *data, 27964 uint16 *mask); 27965 27966 /* Add higig3 loopback packet flags qualification to a field entry. */ 27967 extern int bcm_field_qualify_LoopbackHiGig3Flags( 27968 int unit, 27969 bcm_field_entry_t entry, 27970 uint16 data, 27971 uint16 mask); 27972 27973 /* Get higig3 loopback packet flags from a field entry. */ 27974 extern int bcm_field_qualify_LoopbackHiGig3Flags_get( 27975 int unit, 27976 bcm_field_entry_t entry, 27977 uint16 *data, 27978 uint16 *mask); 27979 27980 /* To qualify on number of Ip extension headers present in packet. */ 27981 extern int bcm_field_qualify_IpExtensionHdrNum( 27982 int unit, 27983 bcm_field_entry_t entry, 27984 uint8 data, 27985 uint8 mask); 27986 27987 /* 27988 * Get value for bcmFieldQualifyIpExtensionHdrNum 27989 * qualifier from the field entry. 27990 */ 27991 extern int bcm_field_qualify_IpExtensionHdrNum_get( 27992 int unit, 27993 bcm_field_entry_t entry, 27994 uint8 *data, 27995 uint8 *mask); 27996 27997 /* To qualify on opaque control id from L2_IIF table. */ 27998 extern int bcm_field_qualify_IngressL2InterfaceOpaqueCtrlId( 27999 int unit, 28000 bcm_field_entry_t entry, 28001 uint8 data, 28002 uint8 mask); 28003 28004 /* 28005 * Get value for bcmFieldQualifyIngressL2InterfaceOpaqueCtrlId 28006 * qualifier from the field entry. 28007 */ 28008 extern int bcm_field_qualify_IngressL2InterfaceOpaqueCtrlId_get( 28009 int unit, 28010 bcm_field_entry_t entry, 28011 uint8 *data, 28012 uint8 *mask); 28013 28014 /* To qualify on opaque control from device port table. */ 28015 extern int bcm_field_qualify_DevicePortOpaqueCommand( 28016 int unit, 28017 bcm_field_entry_t entry, 28018 uint8 data, 28019 uint8 mask); 28020 28021 /* 28022 * Get value for bcmFieldQualifyDevicePortOpaqueCommand 28023 * qualifier from the field entry. 28024 */ 28025 extern int bcm_field_qualify_DevicePortOpaqueCommand_get( 28026 int unit, 28027 bcm_field_entry_t entry, 28028 uint8 *data, 28029 uint8 *mask); 28030 28031 /* To qualify on class id provided by L2_IIF/SVP/L3_IIF ingress tables. */ 28032 extern int bcm_field_qualify_IngressInterfaceClass( 28033 int unit, 28034 bcm_field_entry_t entry, 28035 uint32 data, 28036 uint32 mask); 28037 28038 /* 28039 * Get value for bcmFieldQualifyIngressInterfaceClass 28040 * qualifier from the field entry. 28041 */ 28042 extern int bcm_field_qualify_IngressInterfaceClass_get( 28043 int unit, 28044 bcm_field_entry_t entry, 28045 uint32 *data, 28046 uint32 *mask); 28047 28048 /* To qualify on opaque control from L3_IIF table. */ 28049 extern int bcm_field_qualify_IngressL3InterfaceOpaqueCtrlId( 28050 int unit, 28051 bcm_field_entry_t entry, 28052 uint8 data, 28053 uint8 mask); 28054 28055 /* 28056 * Get value for bcmFieldQualifyIngressL3InterfaceOpaqueCtrlId 28057 * qualifier from the field entry. 28058 */ 28059 extern int bcm_field_qualify_IngressL3InterfaceOpaqueCtrlId_get( 28060 int unit, 28061 bcm_field_entry_t entry, 28062 uint8 *data, 28063 uint8 *mask); 28064 28065 /* To qualify on opaque control from SVP table. */ 28066 extern int bcm_field_qualify_SvpOpaqueCtrlId( 28067 int unit, 28068 bcm_field_entry_t entry, 28069 uint8 data, 28070 uint8 mask); 28071 28072 /* 28073 * Get value for bcmFieldQualifySvpOpaqueCtrlId 28074 * qualifier from the field entry. 28075 */ 28076 extern int bcm_field_qualify_SvpOpaqueCtrlId_get( 28077 int unit, 28078 bcm_field_entry_t entry, 28079 uint8 *data, 28080 uint8 *mask); 28081 28082 /* To qualify on opaque control from VFI table. */ 28083 extern int bcm_field_qualify_VpnOpaqueCtrlId( 28084 int unit, 28085 bcm_field_entry_t entry, 28086 uint8 data, 28087 uint8 mask); 28088 28089 /* 28090 * Get value for bcmFieldQualifyVpnOpaqueCtrlId 28091 * qualifier from the field entry. 28092 */ 28093 extern int bcm_field_qualify_VpnOpaqueCtrlId_get( 28094 int unit, 28095 bcm_field_entry_t entry, 28096 uint8 *data, 28097 uint8 *mask); 28098 28099 /* To qualify on L2 source discard bit. */ 28100 extern int bcm_field_qualify_L2SrcDiscard( 28101 int unit, 28102 bcm_field_entry_t entry, 28103 uint8 data, 28104 uint8 mask); 28105 28106 /* 28107 * Get value for bcmFieldQualifyL2SrcDiscard 28108 * qualifier from the field entry. 28109 */ 28110 extern int bcm_field_qualify_L2SrcDiscard_get( 28111 int unit, 28112 bcm_field_entry_t entry, 28113 uint8 *data, 28114 uint8 *mask); 28115 28116 /* To qualify on L2 learning commands. */ 28117 extern int bcm_field_qualify_L2LearnCommands( 28118 int unit, 28119 bcm_field_entry_t entry, 28120 uint32 data, 28121 uint32 mask); 28122 28123 /* 28124 * Get value for bcmFieldQualifyL2LearnCommands 28125 * qualifier from the field entry. 28126 */ 28127 extern int bcm_field_qualify_L2LearnCommands_get( 28128 int unit, 28129 bcm_field_entry_t entry, 28130 uint32 *data, 28131 uint32 *mask); 28132 28133 /* To qualify on tunnel termination status bits. */ 28134 extern int bcm_field_qualify_TunnelTermStatus( 28135 int unit, 28136 bcm_field_entry_t entry, 28137 uint32 data, 28138 uint32 mask); 28139 28140 /* 28141 * Get value for bcmFieldQualifyTunnelTermStatus 28142 * qualifier from the field entry. 28143 */ 28144 extern int bcm_field_qualify_TunnelTermStatus_get( 28145 int unit, 28146 bcm_field_entry_t entry, 28147 uint32 *data, 28148 uint32 *mask); 28149 28150 /* To qualify on loopback packet header flag bits. */ 28151 extern int bcm_field_qualify_LoopbackHdrFlags( 28152 int unit, 28153 bcm_field_entry_t entry, 28154 uint32 data, 28155 uint32 mask); 28156 28157 /* 28158 * Get value for bcmFieldQualifyLoopbackHdrFlags 28159 * qualifier from the field entry. 28160 */ 28161 extern int bcm_field_qualify_LoopbackHdrFlags_get( 28162 int unit, 28163 bcm_field_entry_t entry, 28164 uint32 *data, 28165 uint32 *mask); 28166 28167 /* To qualify on packet status. */ 28168 extern int bcm_field_qualify_PacketStatus( 28169 int unit, 28170 bcm_field_entry_t entry, 28171 uint32 data, 28172 uint32 mask); 28173 28174 /* 28175 * Get value for bcmFieldQualifyPacketStatus 28176 * qualifier from the field entry. 28177 */ 28178 extern int bcm_field_qualify_PacketStatus_get( 28179 int unit, 28180 bcm_field_entry_t entry, 28181 uint32 *data, 28182 uint32 *mask); 28183 28184 /* To qualify on packet forwarding status. */ 28185 extern int bcm_field_qualify_ForwardingStatus( 28186 int unit, 28187 bcm_field_entry_t entry, 28188 uint32 data, 28189 uint32 mask); 28190 28191 /* 28192 * Get value for bcmFieldQualifyForwardingStatus 28193 * qualifier from the field entry. 28194 */ 28195 extern int bcm_field_qualify_ForwardingStatus_get( 28196 int unit, 28197 bcm_field_entry_t entry, 28198 uint32 *data, 28199 uint32 *mask); 28200 28201 /* To qualify on alternate tunnel EtherType. */ 28202 extern int bcm_field_qualify_TunnelAltEtherType( 28203 int unit, 28204 bcm_field_entry_t entry, 28205 uint16 data, 28206 uint16 mask); 28207 28208 /* 28209 * Get value for bcmFieldQualifyTunnelAltEtherType 28210 * qualifier from the field entry. 28211 */ 28212 extern int bcm_field_qualify_TunnelAltEtherType_get( 28213 int unit, 28214 bcm_field_entry_t entry, 28215 uint16 *data, 28216 uint16 *mask); 28217 28218 /* To qualify on alternate tunnel source Ipv4. */ 28219 extern int bcm_field_qualify_TunnelAltSrcIp( 28220 int unit, 28221 bcm_field_entry_t entry, 28222 bcm_ip_t data, 28223 bcm_ip_t mask); 28224 28225 /* 28226 * Get value for bcmFieldQualifyTunnelAltSrcIp 28227 * qualifier from the field entry. 28228 */ 28229 extern int bcm_field_qualify_TunnelAltSrcIp_get( 28230 int unit, 28231 bcm_field_entry_t entry, 28232 bcm_ip_t *data, 28233 bcm_ip_t *mask); 28234 28235 /* To qualify on alternate tunnel source Ipv6. */ 28236 extern int bcm_field_qualify_TunnelAltSrcIp6( 28237 int unit, 28238 bcm_field_entry_t entry, 28239 bcm_ip6_t data, 28240 bcm_ip6_t mask); 28241 28242 /* 28243 * Get value for bcmFieldQualifyTunnelAltSrcIp6 28244 * qualifier from the field entry. 28245 */ 28246 extern int bcm_field_qualify_TunnelAltSrcIp6_get( 28247 int unit, 28248 bcm_field_entry_t entry, 28249 bcm_ip6_t *data, 28250 bcm_ip6_t *mask); 28251 28252 /* To qualify on alternate tunnel destination Ipv4. */ 28253 extern int bcm_field_qualify_TunnelAltDstIp( 28254 int unit, 28255 bcm_field_entry_t entry, 28256 bcm_ip_t data, 28257 bcm_ip_t mask); 28258 28259 /* 28260 * Get value for bcmFieldQualifyTunnelAltDstIp 28261 * qualifier from the field entry. 28262 */ 28263 extern int bcm_field_qualify_TunnelAltDstIp_get( 28264 int unit, 28265 bcm_field_entry_t entry, 28266 bcm_ip_t *data, 28267 bcm_ip_t *mask); 28268 28269 /* To qualify on alternate tunnel destination Ipv6. */ 28270 extern int bcm_field_qualify_TunnelAltDstIp6( 28271 int unit, 28272 bcm_field_entry_t entry, 28273 bcm_ip6_t data, 28274 bcm_ip6_t mask); 28275 28276 /* 28277 * Get value for bcmFieldQualifyTunnelAltDstIp6 28278 * qualifier from the field entry. 28279 */ 28280 extern int bcm_field_qualify_TunnelAltDstIp6_get( 28281 int unit, 28282 bcm_field_entry_t entry, 28283 bcm_ip6_t *data, 28284 bcm_ip6_t *mask); 28285 28286 /* To qualify on alternate tunnel ip protocol. */ 28287 extern int bcm_field_qualify_TunnelAltIpProtocol( 28288 int unit, 28289 bcm_field_entry_t entry, 28290 uint8 data, 28291 uint8 mask); 28292 28293 /* 28294 * Get value for bcmFieldQualifyTunnelAltIpProtocol 28295 * qualifier from the field entry. 28296 */ 28297 extern int bcm_field_qualify_TunnelAltIpProtocol_get( 28298 int unit, 28299 bcm_field_entry_t entry, 28300 uint8 *data, 28301 uint8 *mask); 28302 28303 /* To qualify on alternate tunnel l4 source port. */ 28304 extern int bcm_field_qualify_TunnelAltL4SrcPort( 28305 int unit, 28306 bcm_field_entry_t entry, 28307 uint16 data, 28308 uint16 mask); 28309 28310 /* 28311 * Get value for bcmFieldQualifyTunnelAltL4SrcPort 28312 * qualifier from the field entry. 28313 */ 28314 extern int bcm_field_qualify_TunnelAltL4SrcPort_get( 28315 int unit, 28316 bcm_field_entry_t entry, 28317 uint16 *data, 28318 uint16 *mask); 28319 28320 /* To qualify on alternate tunnel l4 destination port. */ 28321 extern int bcm_field_qualify_TunnelAltL4DstPort( 28322 int unit, 28323 bcm_field_entry_t entry, 28324 uint16 data, 28325 uint16 mask); 28326 28327 /* 28328 * Get value for bcmFieldQualifyTunnelAltL4DstPort 28329 * qualifier from the field entry. 28330 */ 28331 extern int bcm_field_qualify_TunnelAltL4DstPort_get( 28332 int unit, 28333 bcm_field_entry_t entry, 28334 uint16 *data, 28335 uint16 *mask); 28336 28337 /* To qualify on outer Ip Information. */ 28338 extern int bcm_field_qualify_OuterIpInfo( 28339 int unit, 28340 bcm_field_entry_t entry, 28341 uint32 data, 28342 uint32 mask); 28343 28344 /* 28345 * Get value for bcmFieldQualifyOuterIpInfo 28346 * qualifier from the field entry. 28347 */ 28348 extern int bcm_field_qualify_OuterIpInfo_get( 28349 int unit, 28350 bcm_field_entry_t entry, 28351 uint32 *data, 28352 uint32 *mask); 28353 28354 /* To qualify on outer Ip Information. */ 28355 extern int bcm_field_qualify_OuterL2MacInfo( 28356 int unit, 28357 bcm_field_entry_t entry, 28358 uint32 data, 28359 uint32 mask); 28360 28361 /* 28362 * Get value for bcmFieldQualifyOuterL2MacInfo 28363 * qualifier from the field entry. 28364 */ 28365 extern int bcm_field_qualify_OuterL2MacInfo_get( 28366 int unit, 28367 bcm_field_entry_t entry, 28368 uint32 *data, 28369 uint32 *mask); 28370 28371 /* To qualify on outer L4 Information. */ 28372 extern int bcm_field_qualify_OuterL4Info( 28373 int unit, 28374 bcm_field_entry_t entry, 28375 uint32 data, 28376 uint32 mask); 28377 28378 /* 28379 * Get value for bcmFieldQualifyOuterL4Info 28380 * qualifier from the field entry. 28381 */ 28382 extern int bcm_field_qualify_OuterL4Info_get( 28383 int unit, 28384 bcm_field_entry_t entry, 28385 uint32 *data, 28386 uint32 *mask); 28387 28388 /* To qualify on inner Ip Information. */ 28389 extern int bcm_field_qualify_InnerIpInfo( 28390 int unit, 28391 bcm_field_entry_t entry, 28392 uint32 data, 28393 uint32 mask); 28394 28395 /* 28396 * Get value for bcmFieldQualifyInnerIpInfo 28397 * qualifier from the field entry. 28398 */ 28399 extern int bcm_field_qualify_InnerIpInfo_get( 28400 int unit, 28401 bcm_field_entry_t entry, 28402 uint32 *data, 28403 uint32 *mask); 28404 28405 /* To qualify on inner Ip Information. */ 28406 extern int bcm_field_qualify_InnerL2MacInfo( 28407 int unit, 28408 bcm_field_entry_t entry, 28409 uint32 data, 28410 uint32 mask); 28411 28412 /* 28413 * Get value for bcmFieldQualifyInnerL2MacInfo 28414 * qualifier from the field entry. 28415 */ 28416 extern int bcm_field_qualify_InnerL2MacInfo_get( 28417 int unit, 28418 bcm_field_entry_t entry, 28419 uint32 *data, 28420 uint32 *mask); 28421 28422 /* To qualify on inner L4 Information. */ 28423 extern int bcm_field_qualify_InnerL4Info( 28424 int unit, 28425 bcm_field_entry_t entry, 28426 uint32 data, 28427 uint32 mask); 28428 28429 /* 28430 * Get value for bcmFieldQualifyInnerL4Info 28431 * qualifier from the field entry. 28432 */ 28433 extern int bcm_field_qualify_InnerL4Info_get( 28434 int unit, 28435 bcm_field_entry_t entry, 28436 uint32 *data, 28437 uint32 *mask); 28438 28439 /* To qualify on effective Ttl Information. */ 28440 extern int bcm_field_qualify_EffectiveTtl( 28441 int unit, 28442 bcm_field_entry_t entry, 28443 uint8 data, 28444 uint8 mask); 28445 28446 /* 28447 * Get value for bcmFieldQualifyEffectiveTtl 28448 * qualifier from the field entry. 28449 */ 28450 extern int bcm_field_qualify_EffectiveTtl_get( 28451 int unit, 28452 bcm_field_entry_t entry, 28453 uint8 *data, 28454 uint8 *mask); 28455 28456 /* To qualify on flex state result counter a0 value. */ 28457 extern int bcm_field_qualify_FlexStateResultA0( 28458 int unit, 28459 bcm_field_entry_t entry, 28460 uint32 data, 28461 uint32 mask); 28462 28463 /* 28464 * Get value for bcmFieldQualifyFlexStateResultA0 28465 * qualifier from the field entry. 28466 */ 28467 extern int bcm_field_qualify_FlexStateResultA0_get( 28468 int unit, 28469 bcm_field_entry_t entry, 28470 uint32 *data, 28471 uint32 *mask); 28472 28473 /* To qualify on flex state result counter a1 value. */ 28474 extern int bcm_field_qualify_FlexStateResultA1( 28475 int unit, 28476 bcm_field_entry_t entry, 28477 uint32 data, 28478 uint32 mask); 28479 28480 /* 28481 * Get value for bcmFieldQualifyFlexStateResultA1 28482 * qualifier from the field entry. 28483 */ 28484 extern int bcm_field_qualify_FlexStateResultA1_get( 28485 int unit, 28486 bcm_field_entry_t entry, 28487 uint32 *data, 28488 uint32 *mask); 28489 28490 /* To qualify on forwarding header last ip protocol value. */ 28491 extern int bcm_field_qualify_LastIpProtocol( 28492 int unit, 28493 bcm_field_entry_t entry, 28494 uint8 data, 28495 uint8 mask); 28496 28497 /* 28498 * Get value for bcmFieldQualifyLastIpProtocol 28499 * qualifier from the field entry. 28500 */ 28501 extern int bcm_field_qualify_LastIpProtocol_get( 28502 int unit, 28503 bcm_field_entry_t entry, 28504 uint8 *data, 28505 uint8 *mask); 28506 28507 /* To qualify on MPLS label4. */ 28508 extern int bcm_field_qualify_MplsLabel4( 28509 int unit, 28510 bcm_field_entry_t entry, 28511 uint32 data, 28512 uint32 mask); 28513 28514 /* 28515 * Get value for bcmFieldQualifyMplsLabel4 28516 * qualifier from the field entry. 28517 */ 28518 extern int bcm_field_qualify_MplsLabel4_get( 28519 int unit, 28520 bcm_field_entry_t entry, 28521 uint32 *data, 28522 uint32 *mask); 28523 28524 /* To qualify on MPLS label4 ttl value. */ 28525 extern int bcm_field_qualify_MplsLabel4Ttl( 28526 int unit, 28527 bcm_field_entry_t entry, 28528 uint8 data, 28529 uint8 mask); 28530 28531 /* 28532 * Get value for bcmFieldQualifyMplsLabel4Ttl 28533 * qualifier from the field entry. 28534 */ 28535 extern int bcm_field_qualify_MplsLabel4Ttl_get( 28536 int unit, 28537 bcm_field_entry_t entry, 28538 uint8 *data, 28539 uint8 *mask); 28540 28541 /* To qualify on MPLS label4 bos value. */ 28542 extern int bcm_field_qualify_MplsLabel4Bos( 28543 int unit, 28544 bcm_field_entry_t entry, 28545 uint8 data, 28546 uint8 mask); 28547 28548 /* 28549 * Get value for bcmFieldQualifyMplsLabel4Bos 28550 * qualifier from the field entry. 28551 */ 28552 extern int bcm_field_qualify_MplsLabel4Bos_get( 28553 int unit, 28554 bcm_field_entry_t entry, 28555 uint8 *data, 28556 uint8 *mask); 28557 28558 /* To qualify on MPLS label4 exp value. */ 28559 extern int bcm_field_qualify_MplsLabel4Exp( 28560 int unit, 28561 bcm_field_entry_t entry, 28562 uint8 data, 28563 uint8 mask); 28564 28565 /* 28566 * Get value for bcmFieldQualifyMplsLabel4Exp 28567 * qualifier from the field entry. 28568 */ 28569 extern int bcm_field_qualify_MplsLabel4Exp_get( 28570 int unit, 28571 bcm_field_entry_t entry, 28572 uint8 *data, 28573 uint8 *mask); 28574 28575 /* To qualify on MPLS label4 id value. */ 28576 extern int bcm_field_qualify_MplsLabel4Id( 28577 int unit, 28578 bcm_field_entry_t entry, 28579 uint32 data, 28580 uint32 mask); 28581 28582 /* 28583 * Get value for bcmFieldQualifyMplsLabel4Id 28584 * qualifier from the field entry. 28585 */ 28586 extern int bcm_field_qualify_MplsLabel4Id_get( 28587 int unit, 28588 bcm_field_entry_t entry, 28589 uint32 *data, 28590 uint32 *mask); 28591 28592 /* To qualify on MPLS label5. */ 28593 extern int bcm_field_qualify_MplsLabel5( 28594 int unit, 28595 bcm_field_entry_t entry, 28596 uint32 data, 28597 uint32 mask); 28598 28599 /* 28600 * Get value for bcmFieldQualifyMplsLabel5 28601 * qualifier from the field entry. 28602 */ 28603 extern int bcm_field_qualify_MplsLabel5_get( 28604 int unit, 28605 bcm_field_entry_t entry, 28606 uint32 *data, 28607 uint32 *mask); 28608 28609 /* To qualify on MPLS label5 ttl value. */ 28610 extern int bcm_field_qualify_MplsLabel5Ttl( 28611 int unit, 28612 bcm_field_entry_t entry, 28613 uint8 data, 28614 uint8 mask); 28615 28616 /* 28617 * Get value for bcmFieldQualifyMplsLabel5Ttl 28618 * qualifier from the field entry. 28619 */ 28620 extern int bcm_field_qualify_MplsLabel5Ttl_get( 28621 int unit, 28622 bcm_field_entry_t entry, 28623 uint8 *data, 28624 uint8 *mask); 28625 28626 /* To qualify on MPLS label5 bos value. */ 28627 extern int bcm_field_qualify_MplsLabel5Bos( 28628 int unit, 28629 bcm_field_entry_t entry, 28630 uint8 data, 28631 uint8 mask); 28632 28633 /* 28634 * Get value for bcmFieldQualifyMplsLabel5Bos 28635 * qualifier from the field entry. 28636 */ 28637 extern int bcm_field_qualify_MplsLabel5Bos_get( 28638 int unit, 28639 bcm_field_entry_t entry, 28640 uint8 *data, 28641 uint8 *mask); 28642 28643 /* To qualify on MPLS label5 exp value. */ 28644 extern int bcm_field_qualify_MplsLabel5Exp( 28645 int unit, 28646 bcm_field_entry_t entry, 28647 uint8 data, 28648 uint8 mask); 28649 28650 /* 28651 * Get value for bcmFieldQualifyMplsLabel5Exp 28652 * qualifier from the field entry. 28653 */ 28654 extern int bcm_field_qualify_MplsLabel5Exp_get( 28655 int unit, 28656 bcm_field_entry_t entry, 28657 uint8 *data, 28658 uint8 *mask); 28659 28660 /* To qualify on MPLS label5 id value. */ 28661 extern int bcm_field_qualify_MplsLabel5Id( 28662 int unit, 28663 bcm_field_entry_t entry, 28664 uint32 data, 28665 uint32 mask); 28666 28667 /* 28668 * Get value for bcmFieldQualifyMplsLabel5Id 28669 * qualifier from the field entry. 28670 */ 28671 extern int bcm_field_qualify_MplsLabel5Id_get( 28672 int unit, 28673 bcm_field_entry_t entry, 28674 uint32 *data, 28675 uint32 *mask); 28676 28677 /* To qualify on MPLS label6. */ 28678 extern int bcm_field_qualify_MplsLabel6( 28679 int unit, 28680 bcm_field_entry_t entry, 28681 uint32 data, 28682 uint32 mask); 28683 28684 /* 28685 * Get value for bcmFieldQualifyMplsLabel6 28686 * qualifier from the field entry. 28687 */ 28688 extern int bcm_field_qualify_MplsLabel6_get( 28689 int unit, 28690 bcm_field_entry_t entry, 28691 uint32 *data, 28692 uint32 *mask); 28693 28694 /* To qualify on MPLS label6 ttl value. */ 28695 extern int bcm_field_qualify_MplsLabel6Ttl( 28696 int unit, 28697 bcm_field_entry_t entry, 28698 uint8 data, 28699 uint8 mask); 28700 28701 /* 28702 * Get value for bcmFieldQualifyMplsLabel6Ttl 28703 * qualifier from the field entry. 28704 */ 28705 extern int bcm_field_qualify_MplsLabel6Ttl_get( 28706 int unit, 28707 bcm_field_entry_t entry, 28708 uint8 *data, 28709 uint8 *mask); 28710 28711 /* To qualify on MPLS label6 bos value. */ 28712 extern int bcm_field_qualify_MplsLabel6Bos( 28713 int unit, 28714 bcm_field_entry_t entry, 28715 uint8 data, 28716 uint8 mask); 28717 28718 /* 28719 * Get value for bcmFieldQualifyMplsLabel6Bos 28720 * qualifier from the field entry. 28721 */ 28722 extern int bcm_field_qualify_MplsLabel6Bos_get( 28723 int unit, 28724 bcm_field_entry_t entry, 28725 uint8 *data, 28726 uint8 *mask); 28727 28728 /* To qualify on MPLS label6 exp value. */ 28729 extern int bcm_field_qualify_MplsLabel6Exp( 28730 int unit, 28731 bcm_field_entry_t entry, 28732 uint8 data, 28733 uint8 mask); 28734 28735 /* 28736 * Get value for bcmFieldQualifyMplsLabel6Exp 28737 * qualifier from the field entry. 28738 */ 28739 extern int bcm_field_qualify_MplsLabel6Exp_get( 28740 int unit, 28741 bcm_field_entry_t entry, 28742 uint8 *data, 28743 uint8 *mask); 28744 28745 /* To qualify on MPLS label6 id value. */ 28746 extern int bcm_field_qualify_MplsLabel6Id( 28747 int unit, 28748 bcm_field_entry_t entry, 28749 uint32 data, 28750 uint32 mask); 28751 28752 /* 28753 * Get value for bcmFieldQualifyMplsLabel6Id 28754 * qualifier from the field entry. 28755 */ 28756 extern int bcm_field_qualify_MplsLabel6Id_get( 28757 int unit, 28758 bcm_field_entry_t entry, 28759 uint32 *data, 28760 uint32 *mask); 28761 28762 /* To qualify on MPLS label7. */ 28763 extern int bcm_field_qualify_MplsLabel7( 28764 int unit, 28765 bcm_field_entry_t entry, 28766 uint32 data, 28767 uint32 mask); 28768 28769 /* 28770 * Get value for bcmFieldQualifyMplsLabel7 28771 * qualifier from the field entry. 28772 */ 28773 extern int bcm_field_qualify_MplsLabel7_get( 28774 int unit, 28775 bcm_field_entry_t entry, 28776 uint32 *data, 28777 uint32 *mask); 28778 28779 /* To qualify on MPLS label7 ttl value. */ 28780 extern int bcm_field_qualify_MplsLabel7Ttl( 28781 int unit, 28782 bcm_field_entry_t entry, 28783 uint8 data, 28784 uint8 mask); 28785 28786 /* 28787 * Get value for bcmFieldQualifyMplsLabel7Ttl 28788 * qualifier from the field entry. 28789 */ 28790 extern int bcm_field_qualify_MplsLabel7Ttl_get( 28791 int unit, 28792 bcm_field_entry_t entry, 28793 uint8 *data, 28794 uint8 *mask); 28795 28796 /* To qualify on MPLS label7 bos value. */ 28797 extern int bcm_field_qualify_MplsLabel7Bos( 28798 int unit, 28799 bcm_field_entry_t entry, 28800 uint8 data, 28801 uint8 mask); 28802 28803 /* 28804 * Get value for bcmFieldQualifyMplsLabel7Bos 28805 * qualifier from the field entry. 28806 */ 28807 extern int bcm_field_qualify_MplsLabel7Bos_get( 28808 int unit, 28809 bcm_field_entry_t entry, 28810 uint8 *data, 28811 uint8 *mask); 28812 28813 /* To qualify on MPLS label7 exp value. */ 28814 extern int bcm_field_qualify_MplsLabel7Exp( 28815 int unit, 28816 bcm_field_entry_t entry, 28817 uint8 data, 28818 uint8 mask); 28819 28820 /* 28821 * Get value for bcmFieldQualifyMplsLabel7Exp 28822 * qualifier from the field entry. 28823 */ 28824 extern int bcm_field_qualify_MplsLabel7Exp_get( 28825 int unit, 28826 bcm_field_entry_t entry, 28827 uint8 *data, 28828 uint8 *mask); 28829 28830 /* To qualify on MPLS label7 id value. */ 28831 extern int bcm_field_qualify_MplsLabel7Id( 28832 int unit, 28833 bcm_field_entry_t entry, 28834 uint32 data, 28835 uint32 mask); 28836 28837 /* 28838 * Get value for bcmFieldQualifyMplsLabel7Id 28839 * qualifier from the field entry. 28840 */ 28841 extern int bcm_field_qualify_MplsLabel7Id_get( 28842 int unit, 28843 bcm_field_entry_t entry, 28844 uint32 *data, 28845 uint32 *mask); 28846 28847 /* To qualify on L5 Payload byte 1. */ 28848 extern int bcm_field_qualify_L5PayloadByte1( 28849 int unit, 28850 bcm_field_entry_t entry, 28851 uint8 data, 28852 uint8 mask); 28853 28854 /* 28855 * Get value for bcmFieldQualifyL5PayloadByte1 28856 * qualifier from the field entry. 28857 */ 28858 extern int bcm_field_qualify_L5PayloadByte1_get( 28859 int unit, 28860 bcm_field_entry_t entry, 28861 uint8 *data, 28862 uint8 *mask); 28863 28864 /* To qualify on L5 Payload byte 2. */ 28865 extern int bcm_field_qualify_L5PayloadByte2( 28866 int unit, 28867 bcm_field_entry_t entry, 28868 uint8 data, 28869 uint8 mask); 28870 28871 /* 28872 * Get value for bcmFieldQualifyL5PayloadByte2 28873 * qualifier from the field entry. 28874 */ 28875 extern int bcm_field_qualify_L5PayloadByte2_get( 28876 int unit, 28877 bcm_field_entry_t entry, 28878 uint8 *data, 28879 uint8 *mask); 28880 28881 /* To qualify on L5 Payload byte 3. */ 28882 extern int bcm_field_qualify_L5PayloadByte3( 28883 int unit, 28884 bcm_field_entry_t entry, 28885 uint8 data, 28886 uint8 mask); 28887 28888 /* 28889 * Get value for bcmFieldQualifyL5PayloadByte3 28890 * qualifier from the field entry. 28891 */ 28892 extern int bcm_field_qualify_L5PayloadByte3_get( 28893 int unit, 28894 bcm_field_entry_t entry, 28895 uint8 *data, 28896 uint8 *mask); 28897 28898 /* To qualify on L5 Payload byte 4. */ 28899 extern int bcm_field_qualify_L5PayloadByte4( 28900 int unit, 28901 bcm_field_entry_t entry, 28902 uint8 data, 28903 uint8 mask); 28904 28905 /* 28906 * Get value for bcmFieldQualifyL5PayloadByte4 28907 * qualifier from the field entry. 28908 */ 28909 extern int bcm_field_qualify_L5PayloadByte4_get( 28910 int unit, 28911 bcm_field_entry_t entry, 28912 uint8 *data, 28913 uint8 *mask); 28914 28915 /* To qualify on L5 Payload byte 5. */ 28916 extern int bcm_field_qualify_L5PayloadByte5( 28917 int unit, 28918 bcm_field_entry_t entry, 28919 uint8 data, 28920 uint8 mask); 28921 28922 /* 28923 * Get value for bcmFieldQualifyL5PayloadByte5 28924 * qualifier from the field entry. 28925 */ 28926 extern int bcm_field_qualify_L5PayloadByte5_get( 28927 int unit, 28928 bcm_field_entry_t entry, 28929 uint8 *data, 28930 uint8 *mask); 28931 28932 /* To qualify on L5 Payload byte 6. */ 28933 extern int bcm_field_qualify_L5PayloadByte6( 28934 int unit, 28935 bcm_field_entry_t entry, 28936 uint8 data, 28937 uint8 mask); 28938 28939 /* 28940 * Get value for bcmFieldQualifyL5PayloadByte6 28941 * qualifier from the field entry. 28942 */ 28943 extern int bcm_field_qualify_L5PayloadByte6_get( 28944 int unit, 28945 bcm_field_entry_t entry, 28946 uint8 *data, 28947 uint8 *mask); 28948 28949 /* To qualify on L5 Payload byte 7. */ 28950 extern int bcm_field_qualify_L5PayloadByte7( 28951 int unit, 28952 bcm_field_entry_t entry, 28953 uint8 data, 28954 uint8 mask); 28955 28956 /* 28957 * Get value for bcmFieldQualifyL5PayloadByte7 28958 * qualifier from the field entry. 28959 */ 28960 extern int bcm_field_qualify_L5PayloadByte7_get( 28961 int unit, 28962 bcm_field_entry_t entry, 28963 uint8 *data, 28964 uint8 *mask); 28965 28966 /* To qualify on L5 Payload byte 8. */ 28967 extern int bcm_field_qualify_L5PayloadByte8( 28968 int unit, 28969 bcm_field_entry_t entry, 28970 uint8 data, 28971 uint8 mask); 28972 28973 /* 28974 * Get value for bcmFieldQualifyL5PayloadByte8 28975 * qualifier from the field entry. 28976 */ 28977 extern int bcm_field_qualify_L5PayloadByte8_get( 28978 int unit, 28979 bcm_field_entry_t entry, 28980 uint8 *data, 28981 uint8 *mask); 28982 28983 /* To qualify on Outer L5 Payload byte 1. */ 28984 extern int bcm_field_qualify_OuterL5PayloadByte1( 28985 int unit, 28986 bcm_field_entry_t entry, 28987 uint8 data, 28988 uint8 mask); 28989 28990 /* 28991 * Get value for bcmFieldQualifyOuterL5PayloadByte1 28992 * qualifier from the field entry. 28993 */ 28994 extern int bcm_field_qualify_OuterL5PayloadByte1_get( 28995 int unit, 28996 bcm_field_entry_t entry, 28997 uint8 *data, 28998 uint8 *mask); 28999 29000 /* To qualify on Outer L5 Payload byte 2. */ 29001 extern int bcm_field_qualify_OuterL5PayloadByte2( 29002 int unit, 29003 bcm_field_entry_t entry, 29004 uint8 data, 29005 uint8 mask); 29006 29007 /* 29008 * Get value for bcmFieldQualifyOuterL5PayloadByte2 29009 * qualifier from the field entry. 29010 */ 29011 extern int bcm_field_qualify_OuterL5PayloadByte2_get( 29012 int unit, 29013 bcm_field_entry_t entry, 29014 uint8 *data, 29015 uint8 *mask); 29016 29017 /* To qualify on Outer L5 Payload byte 3. */ 29018 extern int bcm_field_qualify_OuterL5PayloadByte3( 29019 int unit, 29020 bcm_field_entry_t entry, 29021 uint8 data, 29022 uint8 mask); 29023 29024 /* 29025 * Get value for bcmFieldQualifyOuterL5PayloadByte3 29026 * qualifier from the field entry. 29027 */ 29028 extern int bcm_field_qualify_OuterL5PayloadByte3_get( 29029 int unit, 29030 bcm_field_entry_t entry, 29031 uint8 *data, 29032 uint8 *mask); 29033 29034 /* To qualify on Outer L5 Payload byte 4. */ 29035 extern int bcm_field_qualify_OuterL5PayloadByte4( 29036 int unit, 29037 bcm_field_entry_t entry, 29038 uint8 data, 29039 uint8 mask); 29040 29041 /* 29042 * Get value for bcmFieldQualifyOuterL5PayloadByte4 29043 * qualifier from the field entry. 29044 */ 29045 extern int bcm_field_qualify_OuterL5PayloadByte4_get( 29046 int unit, 29047 bcm_field_entry_t entry, 29048 uint8 *data, 29049 uint8 *mask); 29050 29051 /* To qualify on Outer L5 Payload byte 5. */ 29052 extern int bcm_field_qualify_OuterL5PayloadByte5( 29053 int unit, 29054 bcm_field_entry_t entry, 29055 uint8 data, 29056 uint8 mask); 29057 29058 /* 29059 * Get value for bcmFieldQualifyOuterL5PayloadByte5 29060 * qualifier from the field entry. 29061 */ 29062 extern int bcm_field_qualify_OuterL5PayloadByte5_get( 29063 int unit, 29064 bcm_field_entry_t entry, 29065 uint8 *data, 29066 uint8 *mask); 29067 29068 /* To qualify on Outer L5 Payload byte 6. */ 29069 extern int bcm_field_qualify_OuterL5PayloadByte6( 29070 int unit, 29071 bcm_field_entry_t entry, 29072 uint8 data, 29073 uint8 mask); 29074 29075 /* 29076 * Get value for bcmFieldQualifyOuterL5PayloadByte6 29077 * qualifier from the field entry. 29078 */ 29079 extern int bcm_field_qualify_OuterL5PayloadByte6_get( 29080 int unit, 29081 bcm_field_entry_t entry, 29082 uint8 *data, 29083 uint8 *mask); 29084 29085 /* To qualify on Outer L5 Payload byte 7. */ 29086 extern int bcm_field_qualify_OuterL5PayloadByte7( 29087 int unit, 29088 bcm_field_entry_t entry, 29089 uint8 data, 29090 uint8 mask); 29091 29092 /* 29093 * Get value for bcmFieldQualifyOuterL5PayloadByte7 29094 * qualifier from the field entry. 29095 */ 29096 extern int bcm_field_qualify_OuterL5PayloadByte7_get( 29097 int unit, 29098 bcm_field_entry_t entry, 29099 uint8 *data, 29100 uint8 *mask); 29101 29102 /* To qualify on Outer L5 Payload byte 8. */ 29103 extern int bcm_field_qualify_OuterL5PayloadByte8( 29104 int unit, 29105 bcm_field_entry_t entry, 29106 uint8 data, 29107 uint8 mask); 29108 29109 /* 29110 * Get value for bcmFieldQualifyOuterL5PayloadByte8 29111 * qualifier from the field entry. 29112 */ 29113 extern int bcm_field_qualify_OuterL5PayloadByte8_get( 29114 int unit, 29115 bcm_field_entry_t entry, 29116 uint8 *data, 29117 uint8 *mask); 29118 29119 /* To qualify on source mac of Arp/Rarp packet. */ 29120 extern int bcm_field_qualify_ArpSrcMac( 29121 int unit, 29122 bcm_field_entry_t entry, 29123 bcm_mac_t data, 29124 bcm_mac_t mask); 29125 29126 /* 29127 * Get value for bcmFieldQualifyArpSrcMac 29128 * qualifier from the field entry. 29129 */ 29130 extern int bcm_field_qualify_ArpSrcMac_get( 29131 int unit, 29132 bcm_field_entry_t entry, 29133 bcm_mac_t *data, 29134 bcm_mac_t *mask); 29135 29136 /* To qualify on destination mac of Arp/Rarp packet. */ 29137 extern int bcm_field_qualify_ArpDstMac( 29138 int unit, 29139 bcm_field_entry_t entry, 29140 bcm_mac_t data, 29141 bcm_mac_t mask); 29142 29143 /* 29144 * Get value for bcmFieldQualifyArpDstMac 29145 * qualifier from the field entry. 29146 */ 29147 extern int bcm_field_qualify_ArpDstMac_get( 29148 int unit, 29149 bcm_field_entry_t entry, 29150 bcm_mac_t *data, 29151 bcm_mac_t *mask); 29152 29153 /* To qualify on layer2 egress interface(L2_OIF). */ 29154 extern int bcm_field_qualify_L2EgressInterface( 29155 int unit, 29156 bcm_field_entry_t entry, 29157 uint32 data, 29158 uint32 mask); 29159 29160 /* 29161 * Get value for bcmFieldQualifyL2EgressInterface 29162 * qualifier from the field entry. 29163 */ 29164 extern int bcm_field_qualify_L2EgressInterface_get( 29165 int unit, 29166 bcm_field_entry_t entry, 29167 uint32 *data, 29168 uint32 *mask); 29169 29170 /* To qualify on spanning tree profile index. */ 29171 extern int bcm_field_qualify_Stg( 29172 int unit, 29173 bcm_field_entry_t entry, 29174 bcm_stg_t data, 29175 bcm_stg_t mask); 29176 29177 /* 29178 * Get value for bcmFieldQualifyStg 29179 * qualifier from the field entry. 29180 */ 29181 extern int bcm_field_qualify_Stg_get( 29182 int unit, 29183 bcm_field_entry_t entry, 29184 bcm_stg_t *data, 29185 bcm_stg_t *mask); 29186 29187 /* To qualify on cosq queue number. */ 29188 extern int bcm_field_qualify_CosQueueNum( 29189 int unit, 29190 bcm_field_entry_t entry, 29191 uint16 data, 29192 uint16 mask); 29193 29194 /* 29195 * Get value for bcmFieldQualifyCosQueueNum 29196 * qualifier from the field entry. 29197 */ 29198 extern int bcm_field_qualify_CosQueueNum_get( 29199 int unit, 29200 bcm_field_entry_t entry, 29201 uint16 *data, 29202 uint16 *mask); 29203 29204 /* To qualify on packet marked as copy to CPU. */ 29205 extern int bcm_field_qualify_CopyToCpu( 29206 int unit, 29207 bcm_field_entry_t entry, 29208 uint8 data, 29209 uint8 mask); 29210 29211 /* 29212 * Get value for bcmFieldQualifyCopyToCpu 29213 * qualifier from the field entry. 29214 */ 29215 extern int bcm_field_qualify_CopyToCpu_get( 29216 int unit, 29217 bcm_field_entry_t entry, 29218 uint8 *data, 29219 uint8 *mask); 29220 29221 /* To qualify on packet marked as truncate copy to CPU. */ 29222 extern int bcm_field_qualify_CopyToCpuTruncate( 29223 int unit, 29224 bcm_field_entry_t entry, 29225 uint8 data, 29226 uint8 mask); 29227 29228 /* 29229 * Get value for bcmFieldQualifyCopyToCpuTruncate 29230 * qualifier from the field entry. 29231 */ 29232 extern int bcm_field_qualify_CopyToCpuTruncate_get( 29233 int unit, 29234 bcm_field_entry_t entry, 29235 uint8 *data, 29236 uint8 *mask); 29237 29238 /* To qualify on multicast packet. */ 29239 extern int bcm_field_qualify_McastPkt( 29240 int unit, 29241 bcm_field_entry_t entry, 29242 uint8 data, 29243 uint8 mask); 29244 29245 /* 29246 * Get value for bcmFieldQualifyMcastPkt 29247 * qualifier from the field entry. 29248 */ 29249 extern int bcm_field_qualify_McastPkt_get( 29250 int unit, 29251 bcm_field_entry_t entry, 29252 uint8 *data, 29253 uint8 *mask); 29254 29255 /* To qualify on untagged packet. */ 29256 extern int bcm_field_qualify_UntagPkt( 29257 int unit, 29258 bcm_field_entry_t entry, 29259 uint8 data, 29260 uint8 mask); 29261 29262 /* 29263 * Get value for bcmFieldQualifyUntagPkt 29264 * qualifier from the field entry. 29265 */ 29266 extern int bcm_field_qualify_UntagPkt_get( 29267 int unit, 29268 bcm_field_entry_t entry, 29269 uint8 *data, 29270 uint8 *mask); 29271 29272 /* To qualify on packet marked as donot modify forwarding header. */ 29273 extern int bcm_field_qualify_DoNotModify( 29274 int unit, 29275 bcm_field_entry_t entry, 29276 uint8 data, 29277 uint8 mask); 29278 29279 /* 29280 * Get value for bcmFieldQualifyDoNotModify 29281 * qualifier from the field entry. 29282 */ 29283 extern int bcm_field_qualify_DoNotModify_get( 29284 int unit, 29285 bcm_field_entry_t entry, 29286 uint8 *data, 29287 uint8 *mask); 29288 29289 /* Add tx port type field qualification to a field entry. */ 29290 extern int bcm_field_qualify_TxPortType( 29291 int unit, 29292 bcm_field_entry_t entry, 29293 bcm_field_PortType_t port_type); 29294 29295 /* Get tx port type field qualification from a field entry. */ 29296 extern int bcm_field_qualify_TxPortType_get( 29297 int unit, 29298 bcm_field_entry_t entry, 29299 bcm_field_PortType_t *port_type); 29300 29301 /* Add rx port type field qualification to a field entry. */ 29302 extern int bcm_field_qualify_RxPortType( 29303 int unit, 29304 bcm_field_entry_t entry, 29305 bcm_field_PortType_t port_type); 29306 29307 /* Get rx port type field qualification from a field entry. */ 29308 extern int bcm_field_qualify_RxPortType_get( 29309 int unit, 29310 bcm_field_entry_t entry, 29311 bcm_field_PortType_t *port_type); 29312 29313 /* Add packet destination type field qualification to a field entry. */ 29314 extern int bcm_field_qualify_DstType( 29315 int unit, 29316 bcm_field_entry_t entry, 29317 bcm_field_DstType_t dst_type); 29318 29319 /* Get packet destinaion type field qualification from a field entry. */ 29320 extern int bcm_field_qualify_DstType_get( 29321 int unit, 29322 bcm_field_entry_t entry, 29323 bcm_field_DstType_t *dst_type); 29324 29325 /* 29326 * Add loopback packet header destination type field qualification to a 29327 * field entry. 29328 */ 29329 extern int bcm_field_qualify_LoopbackHdrDstType( 29330 int unit, 29331 bcm_field_entry_t entry, 29332 bcm_field_DstType_t lb_hdr_dst_type); 29333 29334 /* Get packet destinaion type field qualification from a field entry. */ 29335 extern int bcm_field_qualify_LoopbackHdrDstType_get( 29336 int unit, 29337 bcm_field_entry_t entry, 29338 bcm_field_DstType_t *lb_hdr_dst_type); 29339 29340 /* To qualify on mirror packet type. */ 29341 extern int bcm_field_qualify_MirrorPktType( 29342 int unit, 29343 bcm_field_entry_t entry, 29344 uint32 data, 29345 uint32 mask); 29346 29347 /* 29348 * Get value for bcmFieldQualifyMirrorPktType 29349 * qualifier from the field entry. 29350 */ 29351 extern int bcm_field_qualify_MirrorPktType_get( 29352 int unit, 29353 bcm_field_entry_t entry, 29354 uint32 *data, 29355 uint32 *mask); 29356 29357 /* To qualify on PTP packet message type. */ 29358 extern int bcm_field_qualify_PtpMsgType( 29359 int unit, 29360 bcm_field_entry_t entry, 29361 uint8 data, 29362 uint8 mask); 29363 29364 /* 29365 * Get value for bcmFieldQualifyPtpMsgType 29366 * qualifier from the field entry. 29367 */ 29368 extern int bcm_field_qualify_PtpMsgType_get( 29369 int unit, 29370 bcm_field_entry_t entry, 29371 uint8 *data, 29372 uint8 *mask); 29373 29374 /* To qualify on PTP packet version. */ 29375 extern int bcm_field_qualify_PtpVersion( 29376 int unit, 29377 bcm_field_entry_t entry, 29378 uint8 data, 29379 uint8 mask); 29380 29381 /* 29382 * Get value for bcmFieldQualifyPtpVersion 29383 * qualifier from the field entry. 29384 */ 29385 extern int bcm_field_qualify_PtpVersion_get( 29386 int unit, 29387 bcm_field_entry_t entry, 29388 uint8 *data, 29389 uint8 *mask); 29390 29391 /* To qualify on PTP packet control. */ 29392 extern int bcm_field_qualify_PtpPktCtrl( 29393 int unit, 29394 bcm_field_entry_t entry, 29395 uint16 data, 29396 uint16 mask); 29397 29398 /* 29399 * Get value for bcmFieldQualifyPtpPktCtrl 29400 * qualifier from the field entry. 29401 */ 29402 extern int bcm_field_qualify_PtpPktCtrl_get( 29403 int unit, 29404 bcm_field_entry_t entry, 29405 uint16 *data, 29406 uint16 *mask); 29407 29408 /* To qualify on vlan membership check. */ 29409 extern int bcm_field_qualify_VlanMembershipCheck( 29410 int unit, 29411 bcm_field_entry_t entry, 29412 uint8 data, 29413 uint8 mask); 29414 29415 /* 29416 * Get value for bcmFieldQualifyVlanMembershipCheck 29417 * qualifier from the field entry. 29418 */ 29419 extern int bcm_field_qualify_VlanMembershipCheck_get( 29420 int unit, 29421 bcm_field_entry_t entry, 29422 uint8 *data, 29423 uint8 *mask); 29424 29425 /* To qualify on packets marked for inner vlan tag preserve. */ 29426 extern int bcm_field_qualify_InnerVlanTagPreserve( 29427 int unit, 29428 bcm_field_entry_t entry, 29429 uint8 data, 29430 uint8 mask); 29431 29432 /* 29433 * Get value for bcmFieldQualifyInnerVlanTagPreserve 29434 * qualifier from the field entry. 29435 */ 29436 extern int bcm_field_qualify_InnerVlanTagPreserve_get( 29437 int unit, 29438 bcm_field_entry_t entry, 29439 uint8 *data, 29440 uint8 *mask); 29441 29442 /* To qualify on packets marked for outer vlan tag preserve. */ 29443 extern int bcm_field_qualify_OuterVlanTagPreserve( 29444 int unit, 29445 bcm_field_entry_t entry, 29446 uint8 data, 29447 uint8 mask); 29448 29449 /* 29450 * Get value for bcmFieldQualifyOuterVlanTagPreserve 29451 * qualifier from the field entry. 29452 */ 29453 extern int bcm_field_qualify_OuterVlanTagPreserve_get( 29454 int unit, 29455 bcm_field_entry_t entry, 29456 uint8 *data, 29457 uint8 *mask); 29458 29459 /* To qualify on forwarding eligibility */ 29460 extern int bcm_field_qualify_ForwardingEligible( 29461 int unit, 29462 bcm_field_entry_t entry, 29463 uint32 data, 29464 uint32 mask); 29465 29466 /* 29467 * Get value for bcmFieldQualifyForwardingEligible 29468 * qualifier from the field entry. 29469 */ 29470 extern int bcm_field_qualify_ForwardingEligible_get( 29471 int unit, 29472 bcm_field_entry_t entry, 29473 uint32 *data, 29474 uint32 *mask); 29475 29476 /* To qualify on class id retreived from forwarding MPLS lookup */ 29477 extern int bcm_field_qualify_InterfaceClassMpls( 29478 int unit, 29479 bcm_field_entry_t entry, 29480 uint16 data, 29481 uint16 mask); 29482 29483 /* 29484 * Get value for bcmFieldQualifyInterfaceClassMpls 29485 * qualifier from the field entry. 29486 */ 29487 extern int bcm_field_qualify_InterfaceClassMpls_get( 29488 int unit, 29489 bcm_field_entry_t entry, 29490 uint16 *data, 29491 uint16 *mask); 29492 29493 /* To qualify on packet L3 check. */ 29494 extern int bcm_field_qualify_L3Check( 29495 int unit, 29496 bcm_field_entry_t entry, 29497 uint32 data, 29498 uint32 mask); 29499 29500 /* 29501 * Get value for bcmFieldQualifyL3Check 29502 * qualifier from the field entry. 29503 */ 29504 extern int bcm_field_qualify_L3Check_get( 29505 int unit, 29506 bcm_field_entry_t entry, 29507 uint32 *data, 29508 uint32 *mask); 29509 29510 /* To qualify on L2 Interface match. */ 29511 extern int bcm_field_qualify_L2InterfaceMatch( 29512 int unit, 29513 bcm_field_entry_t entry, 29514 uint8 data, 29515 uint8 mask); 29516 29517 /* 29518 * Get value for bcmFieldQualifyL2InterfaceMatch 29519 * qualifier from the field entry. 29520 */ 29521 extern int bcm_field_qualify_L2InterfaceMatch_get( 29522 int unit, 29523 bcm_field_entry_t entry, 29524 uint8 *data, 29525 uint8 *mask); 29526 29527 /* To qualify on opaque control id from protocol pkt forward table. */ 29528 extern int bcm_field_qualify_ProtocolPktOpaqueCtrlId( 29529 int unit, 29530 bcm_field_entry_t entry, 29531 uint8 data, 29532 uint8 mask); 29533 29534 /* 29535 * Get value for bcmFieldQualifyProtocolPktOpaqueCtrlId 29536 * qualifier from the field entry. 29537 */ 29538 extern int bcm_field_qualify_ProtocolPktOpaqueCtrlId_get( 29539 int unit, 29540 bcm_field_entry_t entry, 29541 uint8 *data, 29542 uint8 *mask); 29543 29544 /* To qualify on class field provided by FP lookup stage. */ 29545 extern int bcm_field_qualify_LookupClassField( 29546 int unit, 29547 bcm_field_entry_t entry, 29548 uint32 data, 29549 uint32 mask); 29550 29551 /* 29552 * Get value for bcmFieldQualifyLookupClassField 29553 * qualifier from the field entry. 29554 */ 29555 extern int bcm_field_qualify_LookupClassField_get( 29556 int unit, 29557 bcm_field_entry_t entry, 29558 uint32 *data, 29559 uint32 *mask); 29560 29561 /* 29562 * To qualify on opaque object 0 provided by exact match or flowtracker 29563 * stage. 29564 */ 29565 extern int bcm_field_qualify_ExactMatchOpaqueObject0( 29566 int unit, 29567 bcm_field_entry_t entry, 29568 uint16 data, 29569 uint16 mask); 29570 29571 /* 29572 * Get value for bcmFieldQualifyExactMatchOpaqueObject0 29573 * qualifier from the field entry. 29574 */ 29575 extern int bcm_field_qualify_ExactMatchOpaqueObject0_get( 29576 int unit, 29577 bcm_field_entry_t entry, 29578 uint16 *data, 29579 uint16 *mask); 29580 29581 /* To qualify on type value of ICMP packet. */ 29582 extern int bcm_field_qualify_IcmpType( 29583 int unit, 29584 bcm_field_entry_t entry, 29585 uint8 data, 29586 uint8 mask); 29587 29588 /* 29589 * Get value for bcmFieldQualifyIcmpType 29590 * qualifier from the field entry. 29591 */ 29592 extern int bcm_field_qualify_IcmpType_get( 29593 int unit, 29594 bcm_field_entry_t entry, 29595 uint8 *data, 29596 uint8 *mask); 29597 29598 /* To qualify on outer vlan range match status */ 29599 extern int bcm_field_qualify_OuterVlanRangeMatch( 29600 int unit, 29601 bcm_field_entry_t entry, 29602 uint8 data, 29603 uint8 mask); 29604 29605 /* 29606 * Get value for bcmFieldQualifyOuterVlanRangeMatch 29607 * qualifier from the field entry. 29608 */ 29609 extern int bcm_field_qualify_OuterVlanRangeMatch_get( 29610 int unit, 29611 bcm_field_entry_t entry, 29612 uint8 *data, 29613 uint8 *mask); 29614 29615 /* To qualify on inner vlan range match status */ 29616 extern int bcm_field_qualify_InnerVlanRangeMatch( 29617 int unit, 29618 bcm_field_entry_t entry, 29619 uint8 data, 29620 uint8 mask); 29621 29622 /* 29623 * Get value for bcmFieldQualifyInnerVlanRangeMatch 29624 * qualifier from the field entry. 29625 */ 29626 extern int bcm_field_qualify_InnerVlanRangeMatch_get( 29627 int unit, 29628 bcm_field_entry_t entry, 29629 uint8 *data, 29630 uint8 *mask); 29631 29632 /* 29633 * Set match criteria for bcmFieldQualifyTunnelHeaderDstMac 29634 * qualifier in the field entry. 29635 */ 29636 extern int bcm_field_qualify_TunnelHeaderDstMac( 29637 int unit, 29638 bcm_field_entry_t entry, 29639 bcm_mac_t data, 29640 bcm_mac_t mask); 29641 29642 /* 29643 * Get match criteria for bcmFieldQualifyTunnelHeaderDstMac 29644 * qualifier from the field entry. 29645 */ 29646 extern int bcm_field_qualify_TunnelHeaderDstMac_get( 29647 int unit, 29648 bcm_field_entry_t entry, 29649 bcm_mac_t *data, 29650 bcm_mac_t *mask); 29651 29652 /* 29653 * Set match criteria for bcmFieldQualifyTunnelHeaderSrcMac 29654 * qualifier in the field entry. 29655 */ 29656 extern int bcm_field_qualify_TunnelHeaderSrcMac( 29657 int unit, 29658 bcm_field_entry_t entry, 29659 bcm_mac_t data, 29660 bcm_mac_t mask); 29661 29662 /* 29663 * Get match criteria for bcmFieldQualifyTunnelHeaderSrcMac 29664 * qualifier from the field entry. 29665 */ 29666 extern int bcm_field_qualify_TunnelHeaderSrcMac_get( 29667 int unit, 29668 bcm_field_entry_t entry, 29669 bcm_mac_t *data, 29670 bcm_mac_t *mask); 29671 29672 /* 29673 * Set match criteria for bcmFieldQualifyTunnelHeaderSip 29674 * qualifier in the field entry. 29675 */ 29676 extern int bcm_field_qualify_TunnelHeaderSip( 29677 int unit, 29678 bcm_field_entry_t entry, 29679 bcm_ip_t data, 29680 bcm_ip_t mask); 29681 29682 /* 29683 * Set match criteria for bcmFieldQualifyTunnelHeaderDip 29684 * qualifier in the field entry. 29685 */ 29686 extern int bcm_field_qualify_TunnelHeaderDip( 29687 int unit, 29688 bcm_field_entry_t entry, 29689 bcm_ip_t data, 29690 bcm_ip_t mask); 29691 29692 /* 29693 * Get match criteria for bcmFieldQualifyTunnelHeaderSip 29694 * qualifier from the field entry. 29695 */ 29696 extern int bcm_field_qualify_TunnelHeaderSip_get( 29697 int unit, 29698 bcm_field_entry_t entry, 29699 bcm_ip_t *data, 29700 bcm_ip_t *mask); 29701 29702 /* 29703 * Get match criteria for bcmFieldQualifyTunnelHeaderDip 29704 * qualifier from the field entry. 29705 */ 29706 extern int bcm_field_qualify_TunnelHeaderDip_get( 29707 int unit, 29708 bcm_field_entry_t entry, 29709 bcm_ip_t *data, 29710 bcm_ip_t *mask); 29711 29712 /* 29713 * Set match criteria for bcmFieldQualifyTunnelHeaderSip6 29714 * qualifier in the field entry. 29715 */ 29716 extern int bcm_field_qualify_TunnelHeaderSip6( 29717 int unit, 29718 bcm_field_entry_t entry, 29719 bcm_ip6_t data, 29720 bcm_ip6_t mask); 29721 29722 /* 29723 * Set match criteria for bcmFieldQualifyTunnelHeaderDip6 29724 * qualifier in the field entry. 29725 */ 29726 extern int bcm_field_qualify_TunnelHeaderDip6( 29727 int unit, 29728 bcm_field_entry_t entry, 29729 bcm_ip6_t data, 29730 bcm_ip6_t mask); 29731 29732 /* 29733 * Get match criteria for bcmFieldQualifyTunnelHeaderSip6 29734 * qualifier from the field entry. 29735 */ 29736 extern int bcm_field_qualify_TunnelHeaderSip6_get( 29737 int unit, 29738 bcm_field_entry_t entry, 29739 bcm_ip6_t *data, 29740 bcm_ip6_t *mask); 29741 29742 /* 29743 * Get match criteria for bcmFieldQualifyTunnelHeaderDip6 29744 * qualifier from the field entry. 29745 */ 29746 extern int bcm_field_qualify_TunnelHeaderDip6_get( 29747 int unit, 29748 bcm_field_entry_t entry, 29749 bcm_ip6_t *data, 29750 bcm_ip6_t *mask); 29751 29752 /* 29753 * Set match criteria for bcmFieldQualifyTunnelHeaderIpProtocol 29754 * qualifier in the field entry. 29755 */ 29756 extern int bcm_field_qualify_TunnelHeaderIpProtocol( 29757 int unit, 29758 bcm_field_entry_t entry, 29759 uint8 data, 29760 uint8 mask); 29761 29762 /* 29763 * Get match criteria for bcmFieldQualifyTunnelHeaderIpProtocol 29764 * qualifier from the field entry. 29765 */ 29766 extern int bcm_field_qualify_TunnelHeaderIpProtocol_get( 29767 int unit, 29768 bcm_field_entry_t entry, 29769 uint8 *data, 29770 uint8 *mask); 29771 29772 /* bcm_field_qualify_L3EgressIntf */ 29773 extern int bcm_field_qualify_L3EgressIntf( 29774 int unit, 29775 bcm_field_entry_t entry, 29776 uint32 intf_id, 29777 uint32 mask); 29778 29779 /* 29780 * Get match criteria for bcmFieldQualifyL3EgressIntf 29781 * qualifier from the field entry. 29782 */ 29783 extern int bcm_field_qualify_L3EgressIntf_get( 29784 int unit, 29785 bcm_field_entry_t entry, 29786 uint32 *data, 29787 uint32 *mask); 29788 29789 /* Add packet forward type field qualification to a field entry. */ 29790 extern int bcm_field_qualify_PktFwdType( 29791 int unit, 29792 bcm_field_entry_t entry, 29793 bcm_field_PktFwdType_t type); 29794 29795 /* Get packet forward type field qualification from a field entry. */ 29796 extern int bcm_field_qualify_PktFwdType_get( 29797 int unit, 29798 bcm_field_entry_t entry, 29799 bcm_field_PktFwdType_t *type); 29800 29801 #endif /* BCM_HIDE_DISPATCHABLE */ 29802 29803 /* Packet colors for flex counter. */ 29804 #define BCM_FIELD_COUNT_ALL 0 29805 #define BCM_FIELD_COUNT_GREEN 1 29806 #define BCM_FIELD_COUNT_YELLOW 2 29807 #define BCM_FIELD_COUNT_RED 4 29808 29809 /* 29810 * Flex counter configuration structure. Used to attach or detach the 29811 * flex counter to field entry. 29812 */ 29813 typedef struct bcm_field_flexctr_config_s { 29814 uint32 flexctr_action_id; /* Flex counter action ID. */ 29815 uint32 counter_index; /* Index to the counters associated to the flex 29816 counter action. */ 29817 uint8 color; /* Packet color to be counted, 29818 BCM_FIELD_COUNT_xxx */ 29819 } bcm_field_flexctr_config_t; 29820 29821 #ifndef BCM_HIDE_DISPATCHABLE 29822 29823 /* 29824 * Attach the flexctr action and its associated counter index to the 29825 * field entry. The counter index in the 'bcm_field_flexctr_config_t' 29826 * structure should be in the range of maximum counters associated to the 29827 * flexctr action. 29828 */ 29829 extern int bcm_field_entry_flexctr_attach( 29830 int unit, 29831 bcm_field_entry_t entry, 29832 bcm_field_flexctr_config_t *flexctr_cfg); 29833 29834 /* Detach the flexctr for a given field entry. */ 29835 extern int bcm_field_entry_flexctr_detach( 29836 int unit, 29837 bcm_field_entry_t entry, 29838 bcm_field_flexctr_config_t *flexctr_cfg); 29839 29840 #endif /* BCM_HIDE_DISPATCHABLE */ 29841 29842 /* 29843 * Presel Group configuration structure. Used to create a field presel 29844 * group with specific attributes. 29845 */ 29846 typedef struct bcm_field_presel_group_config_s { 29847 uint32 flags; /* Presel Group create flags 29848 BCM_FIELD_GROUP_CREATE_XXX. */ 29849 bcm_field_qset_t qset; /* Group qualifier set. */ 29850 bcm_field_presel_group_t presel_group; /* Presel Group ID. */ 29851 bcm_field_hintid_t hintid; /* Hints for Presel Group Creation. */ 29852 } bcm_field_presel_group_config_t; 29853 29854 /* Initialize Field Presel Group Config structure. */ 29855 extern void bcm_field_presel_group_config_t_init( 29856 bcm_field_presel_group_config_t *group_config); 29857 29858 #ifndef BCM_HIDE_DISPATCHABLE 29859 29860 /* Create a field presel group with specific attributes. */ 29861 extern int bcm_field_presel_group_config_create( 29862 int unit, 29863 bcm_field_presel_group_config_t *group_config); 29864 29865 /* Destroys a given field presel group. */ 29866 extern int bcm_field_presel_group_destroy( 29867 int unit, 29868 bcm_field_presel_group_t presel_group); 29869 29870 /* 29871 * Retrieve a field presel group config attributes for a given presel 29872 * group Id mentioned in the input structure. 29873 */ 29874 extern int bcm_field_presel_group_config_get( 29875 int unit, 29876 bcm_field_presel_group_config_t *group_config); 29877 29878 /* 29879 * Set match criteria for bcmFieldQualifySubportGroupIds 29880 * qualifier in the field entry. 29881 */ 29882 extern int bcm_field_qualify_SubportGroupIds( 29883 int unit, 29884 bcm_field_entry_t entry, 29885 uint32 num_groups, 29886 bcm_subport_port_group_t *subport_group_id_arr); 29887 29888 /* 29889 * Get match criteria for bcmFieldQualifySubportGroupIds 29890 * qualifier from the field entry. 29891 */ 29892 extern int bcm_field_qualify_SubportGroupIds_get( 29893 int unit, 29894 bcm_field_entry_t entry, 29895 uint32 num_groups, 29896 bcm_subport_port_group_t *subport_group_id_arr, 29897 uint32 *actual_groups); 29898 29899 /* To qualify on Flowtracker Class from Source 1. */ 29900 extern int bcm_field_qualify_FlowtrackerClassIdSource1( 29901 int unit, 29902 bcm_field_entry_t entry, 29903 uint16 data, 29904 uint16 mask); 29905 29906 /* To get qualified inputs on Flowtracker Class from Source 1. */ 29907 extern int bcm_field_qualify_FlowtrackerClassIdSource1_get( 29908 int unit, 29909 bcm_field_entry_t entry, 29910 uint16 *data, 29911 uint16 *mask); 29912 29913 /* To qualify on Flowtracker Class from Source 2. */ 29914 extern int bcm_field_qualify_FlowtrackerClassIdSource2( 29915 int unit, 29916 bcm_field_entry_t entry, 29917 uint16 data, 29918 uint16 mask); 29919 29920 /* To get qualified inputs on Flowtracker Class from Source 2. */ 29921 extern int bcm_field_qualify_FlowtrackerClassIdSource2_get( 29922 int unit, 29923 bcm_field_entry_t entry, 29924 uint16 *data, 29925 uint16 *mask); 29926 29927 /* Map an object name (field group, action, qualifier etc.) to an ID. */ 29928 extern int bcm_field_name_to_id( 29929 int unit, 29930 uint32 flags, 29931 bcm_field_name_to_id_info_t *name_to_id_info, 29932 int *nof_ids, 29933 uint32 *ids); 29934 29935 /* Create a field presel ID with specific attributes. */ 29936 extern int bcm_field_presel_config_create( 29937 int unit, 29938 bcm_field_presel_config_t *presel_config); 29939 29940 /* To Qualify on type of the Egress port control */ 29941 extern int bcm_field_qualify_EgressPortCtrlType( 29942 int unit, 29943 bcm_field_entry_t entry, 29944 bcm_field_egress_port_ctrl_t ctrl_type); 29945 29946 /* To Qualify on type of the Egress port control */ 29947 extern int bcm_field_qualify_EgressPortCtrlType_get( 29948 int unit, 29949 bcm_field_entry_t entry, 29950 bcm_field_egress_port_ctrl_t *ctrl_type); 29951 29952 /* To qualify if IFA metadata header current length equals to 0 */ 29953 extern int bcm_field_qualify_IfaCurrentLengthEqualToZero( 29954 int unit, 29955 bcm_field_entry_t entry, 29956 uint8 data, 29957 uint8 mask); 29958 29959 /* 29960 * To get qualified inputs on if IFA metadata header current length 29961 * equals to 0 29962 */ 29963 extern int bcm_field_qualify_IfaCurrentLengthEqualToZero_get( 29964 int unit, 29965 bcm_field_entry_t entry, 29966 uint8 *data, 29967 uint8 *mask); 29968 29969 /* To qualify if IFA metadata header hop limit equals to 0 */ 29970 extern int bcm_field_qualify_IfaHopLimitEqualToZero( 29971 int unit, 29972 bcm_field_entry_t entry, 29973 uint8 data, 29974 uint8 mask); 29975 29976 /* 29977 * To get qualified inputs on if IFA metadata header hop limit equals to 29978 * 0 29979 */ 29980 extern int bcm_field_qualify_IfaHopLimitEqualToZero_get( 29981 int unit, 29982 bcm_field_entry_t entry, 29983 uint8 *data, 29984 uint8 *mask); 29985 29986 /* To qualify if IFA version is 2 */ 29987 extern int bcm_field_qualify_IfaVersion2( 29988 int unit, 29989 bcm_field_entry_t entry, 29990 uint8 data, 29991 uint8 mask); 29992 29993 /* To get qualified inputs on if IFA version is 2 */ 29994 extern int bcm_field_qualify_IfaVersion2_get( 29995 int unit, 29996 bcm_field_entry_t entry, 29997 uint8 *data, 29998 uint8 *mask); 29999 30000 /* To qualify on IFA Global Name Space. */ 30001 extern int bcm_field_qualify_IfaGlobalNameSpace( 30002 int unit, 30003 bcm_field_entry_t entry, 30004 uint32 data, 30005 uint32 mask); 30006 30007 /* To get qualified inputs on IFA Global Name Space. */ 30008 extern int bcm_field_qualify_IfaGlobalNameSpace_get( 30009 int unit, 30010 bcm_field_entry_t entry, 30011 uint32 *data, 30012 uint32 *mask); 30013 30014 /* To qualify on IFA Local Name Space. */ 30015 extern int bcm_field_qualify_IfaLocalNameSpace( 30016 int unit, 30017 bcm_field_entry_t entry, 30018 uint32 data, 30019 uint32 mask); 30020 30021 /* To get qualified inputs on IFA Local Name Space. */ 30022 extern int bcm_field_qualify_IfaLocalNameSpace_get( 30023 int unit, 30024 bcm_field_entry_t entry, 30025 uint32 *data, 30026 uint32 *mask); 30027 30028 /* To qualify on IFA metadata header current length. */ 30029 extern int bcm_field_qualify_IfaCurrentLength( 30030 int unit, 30031 bcm_field_entry_t entry, 30032 uint32 data, 30033 uint32 mask); 30034 30035 /* To get qualified inputs on IFA metadata header current length. */ 30036 extern int bcm_field_qualify_IfaCurrentLength_get( 30037 int unit, 30038 bcm_field_entry_t entry, 30039 uint32 *data, 30040 uint32 *mask); 30041 30042 /* To qualify on IFA metadata header Request vector. */ 30043 extern int bcm_field_qualify_IfaRequestVector( 30044 int unit, 30045 bcm_field_entry_t entry, 30046 uint32 data, 30047 uint32 mask); 30048 30049 /* To get qualified inputs on IFA metadata header request vector. */ 30050 extern int bcm_field_qualify_IfaRequestVector_get( 30051 int unit, 30052 bcm_field_entry_t entry, 30053 uint32 *data, 30054 uint32 *mask); 30055 30056 /* To qualify on IFA Flags. */ 30057 extern int bcm_field_qualify_IfaFlags( 30058 int unit, 30059 bcm_field_entry_t entry, 30060 uint32 data, 30061 uint32 mask); 30062 30063 /* To get qualified inputs on IFA Flags. */ 30064 extern int bcm_field_qualify_IfaFlags_get( 30065 int unit, 30066 bcm_field_entry_t entry, 30067 uint32 *data, 30068 uint32 *mask); 30069 30070 /* To qualify on IFA Max length. */ 30071 extern int bcm_field_qualify_IfaMaxLength( 30072 int unit, 30073 bcm_field_entry_t entry, 30074 uint32 data, 30075 uint32 mask); 30076 30077 /* To get qualified inputs on IFA Max length. */ 30078 extern int bcm_field_qualify_IfaMaxLength_get( 30079 int unit, 30080 bcm_field_entry_t entry, 30081 uint32 *data, 30082 uint32 *mask); 30083 30084 /* To qualify on IFA Action vector */ 30085 extern int bcm_field_qualify_IfaActionVector( 30086 int unit, 30087 bcm_field_entry_t entry, 30088 uint32 data, 30089 uint32 mask); 30090 30091 /* To get qualified inputs on IFA action vector. */ 30092 extern int bcm_field_qualify_IfaActionVector_get( 30093 int unit, 30094 bcm_field_entry_t entry, 30095 uint32 *data, 30096 uint32 *mask); 30097 30098 #endif /* BCM_HIDE_DISPATCHABLE */ 30099 30100 /* Initialize the field destination match structure. */ 30101 extern void bcm_field_destination_match_t_init( 30102 bcm_field_destination_match_t *match); 30103 30104 /* Initialize the field destination action structure. */ 30105 extern void bcm_field_destination_action_t_init( 30106 bcm_field_destination_action_t *action); 30107 30108 #ifndef BCM_HIDE_DISPATCHABLE 30109 30110 /* Add a field destination entry. */ 30111 extern int bcm_field_destination_entry_add( 30112 int unit, 30113 uint32 options, 30114 bcm_field_destination_match_t *match, 30115 bcm_field_destination_action_t *action); 30116 30117 /* Get a field destination entry. */ 30118 extern int bcm_field_destination_entry_get( 30119 int unit, 30120 bcm_field_destination_match_t *match, 30121 bcm_field_destination_action_t *action); 30122 30123 #endif /* BCM_HIDE_DISPATCHABLE */ 30124 30125 /* Field destination entry traverse callback function */ 30126 typedef int (*bcm_field_destination_entry_traverse_cb)( 30127 int unit, 30128 bcm_field_destination_match_t *match, 30129 bcm_field_destination_action_t *action, 30130 void *user_data); 30131 30132 #ifndef BCM_HIDE_DISPATCHABLE 30133 30134 /* Traverse field destination entries. */ 30135 extern int bcm_field_destination_entry_traverse( 30136 int unit, 30137 bcm_field_destination_entry_traverse_cb callback, 30138 void *user_data); 30139 30140 /* Delete a field destination entry. */ 30141 extern int bcm_field_destination_entry_delete( 30142 int unit, 30143 bcm_field_destination_match_t *match); 30144 30145 /* Attach the statistic counter ID to a field destination entry. */ 30146 extern int bcm_field_destination_stat_attach( 30147 int unit, 30148 bcm_field_destination_match_t *match, 30149 uint32 stat_counter_id); 30150 30151 /* Get the statistic counter ID attached to a field destination entry. */ 30152 extern int bcm_field_destination_stat_id_get( 30153 int unit, 30154 bcm_field_destination_match_t *match, 30155 uint32 *stat_counter_id); 30156 30157 /* Detach the statistic counter ID attached to a field destination entry. */ 30158 extern int bcm_field_destination_stat_detach( 30159 int unit, 30160 bcm_field_destination_match_t *match); 30161 30162 /* Set the flex counter object value for a field destination entry. */ 30163 extern int bcm_field_destination_flexctr_object_set( 30164 int unit, 30165 bcm_field_destination_match_t *match, 30166 uint32 value); 30167 30168 /* Get the flex counter object value of a field destination entry. */ 30169 extern int bcm_field_destination_flexctr_object_get( 30170 int unit, 30171 bcm_field_destination_match_t *match, 30172 uint32 *value); 30173 30174 #endif /* BCM_HIDE_DISPATCHABLE */ 30175 30176 /* 30177 * This structure is used to configure one FFC for user-defined range 30178 * type 30179 */ 30180 typedef struct bcm_field_range_qual_info_s { 30181 bcm_field_qualify_t qual_type; /* BCM level qualifier look at 30182 bcm_field_qualify_t for more info. */ 30183 bcm_field_qualify_attach_info_t qual_info; /* Indicate how to read the relevant 30184 qualifier from PBUS. */ 30185 } bcm_field_range_qual_info_t; 30186 30187 #ifndef BCM_HIDE_DISPATCHABLE 30188 30189 /* Configures the L4 OPS Extended FFCs */ 30190 extern int bcm_field_range_type_config_set( 30191 int unit, 30192 uint32 flags, 30193 bcm_field_stage_t stage, 30194 bcm_field_context_t context_id, 30195 uint32 configurable_range_index, 30196 bcm_field_range_qual_info_t *range_qualifier_info); 30197 30198 /* Returns the L4 OPS Extended FFCs configuration */ 30199 extern int bcm_field_range_type_config_get( 30200 int unit, 30201 uint32 flags, 30202 bcm_field_stage_t stage, 30203 bcm_field_context_t context_id, 30204 uint32 configurable_range_index, 30205 bcm_field_range_qual_info_t *range_qualifier_info); 30206 30207 /* Qualify on Application signature. */ 30208 extern int bcm_field_qualify_ApplSignatureId( 30209 int unit, 30210 bcm_field_entry_t entry, 30211 uint16 data, 30212 uint16 mask); 30213 30214 /* Get qualified inputs on Application signature. */ 30215 extern int bcm_field_qualify_ApplSignatureId_get( 30216 int unit, 30217 bcm_field_entry_t entry, 30218 uint16 *data, 30219 uint16 *mask); 30220 30221 /* Qualify on Application signature based on Inner Payload. */ 30222 extern int bcm_field_qualify_InnerApplSignatureId( 30223 int unit, 30224 bcm_field_entry_t entry, 30225 uint16 data, 30226 uint16 mask); 30227 30228 /* Get qualified inputs on Application signature based on Inner Payload. */ 30229 extern int bcm_field_qualify_InnerApplSignatureId_get( 30230 int unit, 30231 bcm_field_entry_t entry, 30232 uint16 *data, 30233 uint16 *mask); 30234 30235 /* Qualify on Cos Queue. */ 30236 extern int bcm_field_qualify_CosQueueId( 30237 int unit, 30238 bcm_field_entry_t entry, 30239 bcm_gport_t queue_gport); 30240 30241 /* Get qualified inputs on Cos Queue. */ 30242 extern int bcm_field_qualify_CosQueueId_get( 30243 int unit, 30244 bcm_field_entry_t entry, 30245 bcm_gport_t *queue_gport); 30246 30247 /* Qualify on Congestion Experienced Status. */ 30248 extern int bcm_field_qualify_CongestionExperienced( 30249 int unit, 30250 bcm_field_entry_t entry, 30251 uint8 data, 30252 uint8 mask); 30253 30254 /* Get qualified inputs on Congestion Experienced Status */ 30255 extern int bcm_field_qualify_CongestionExperienced_get( 30256 int unit, 30257 bcm_field_entry_t entry, 30258 uint8 *data, 30259 uint8 *mask); 30260 30261 /* Qualify on Congestion Marked Status. */ 30262 extern int bcm_field_qualify_CongestionMarked( 30263 int unit, 30264 bcm_field_entry_t entry, 30265 uint8 data, 30266 uint8 mask); 30267 30268 /* Get qualified inputs on Congestion Marked Status */ 30269 extern int bcm_field_qualify_CongestionMarked_get( 30270 int unit, 30271 bcm_field_entry_t entry, 30272 uint8 *data, 30273 uint8 *mask); 30274 30275 /* Qualify if packet is stored in unicast Cos Queue. */ 30276 extern int bcm_field_qualify_IsUcastCosQueue( 30277 int unit, 30278 bcm_field_entry_t entry, 30279 uint8 data, 30280 uint8 mask); 30281 30282 /* Get qualified inputs if packet is stored in unicast Cos Queue. */ 30283 extern int bcm_field_qualify_IsUcastCosQueue_get( 30284 int unit, 30285 bcm_field_entry_t entry, 30286 uint8 *data, 30287 uint8 *mask); 30288 30289 /* Qualify on Egress Port Cos Queue value. */ 30290 extern int bcm_field_qualify_EgressPortQueue( 30291 int unit, 30292 bcm_field_entry_t entry, 30293 uint8 data, 30294 uint8 mask); 30295 30296 /* Get qualified inputs on Egress Port Cos Queue value. */ 30297 extern int bcm_field_qualify_EgressPortQueue_get( 30298 int unit, 30299 bcm_field_entry_t entry, 30300 uint8 *data, 30301 uint8 *mask); 30302 30303 /* Qualify on Flowtracker Aggregate Class. */ 30304 extern int bcm_field_qualify_FlowtrackerAggregateClass( 30305 int unit, 30306 bcm_field_entry_t entry, 30307 uint16 data, 30308 uint16 mask); 30309 30310 /* Get qualified inputs on Flowtracker Aggregate Class. */ 30311 extern int bcm_field_qualify_FlowtrackerAggregateClass_get( 30312 int unit, 30313 bcm_field_entry_t entry, 30314 uint16 *data, 30315 uint16 *mask); 30316 30317 #endif /* BCM_HIDE_DISPATCHABLE */ 30318 30319 /* bcm_field_drop_reason_e */ 30320 typedef enum bcm_field_drop_reason_e { 30321 bcmFieldDropReasonNoDrop = 0, /* Drop reason No Drop */ 30322 bcmFieldDropReasonCMLFlags = 1, /* Ingress drop reason CML flags */ 30323 bcmFieldDropReasonL2SrcStaticMove = 2, /* Ingress drop reason L2 src static 30324 move */ 30325 bcmFieldDropReasonL2SrcDiscard = 3, /* Ingress drop reason L2 src discard */ 30326 bcmFieldDropReasonMacSaMulticast = 4, /* Ingress drop reason MacSa Multicast */ 30327 bcmFieldDropReasonOuterTpidCheckFailed = 5, /* Ingress drop reason Outer TPID check 30328 failed */ 30329 bcmFieldDropReasonIncomingPvlanCheckFailed = 6, /* Ingress drop reason Incoming PVLAN 30330 check failed */ 30331 bcmFieldDropReasonPktIntegrityCheckFailed = 7, /* Ingress drop reason Pkt integrity 30332 check failed */ 30333 bcmFieldDropReasonProtocolPktDrop = 8, /* Ingress drop reason Protocol packet 30334 drop */ 30335 bcmFieldDropReasonMembershipCheckFailed = 9, /* Ingress drop reason Membership check 30336 failed */ 30337 bcmFieldDropReasonSpanningTreeCheckFailed = 10, /* Ingress drop reason spanning tree 30338 check failed */ 30339 bcmFieldDropReasonL2DstLookupMiss = 11, /* Ingress drop reason L2 Dst lookup 30340 miss */ 30341 bcmFieldDropReasonL2DstDiscard = 12, /* Ingress drop reason L2 Dst discard */ 30342 bcmFieldDropReasonL3DstLookupMiss = 13, /* Ingress drop reason L3 Dst lookup 30343 miss */ 30344 bcmFieldDropReasonL3DstDiscard = 14, /* Ingress drop reason L3 Dst discard */ 30345 bcmFieldDropReasonL3HdrError = 15, /* Ingress drop reason L3 header Error */ 30346 bcmFieldDropReasonL3TTLError = 16, /* Ingress drop reason L3 TTL error */ 30347 bcmFieldDropReasonIPMCL3IIFOrRPAIDCheckFailed = 17, /* Ingress drop reason IPMC L3 IIF or 30348 RPA ID check failed */ 30349 bcmFieldDropReasonTunnelTTLCheckFailed = 18, /* Ingress drop reason Tunnel TTL check 30350 failed */ 30351 bcmFieldDropReasonTunnelShimHdrError = 19, /* Ingress drop reason Tunnel Shim 30352 header error */ 30353 bcmFieldDropReasonTunnelObjectValidationFailed = 20, /* Ingress drop reason Tunnel object 30354 validation failed */ 30355 bcmFieldDropReasonTunnelAdaptDrop = 21, /* Ingress drop reason Tunnel adapt drop */ 30356 bcmFieldDropReasonPVLANDrop = 22, /* Ingress drop reason PVLAN Drop */ 30357 bcmFieldDropReasonVFP = 23, /* Ingress drop reason VFP */ 30358 bcmFieldDropReasonIFP = 24, /* Ingress drop reason IFP */ 30359 bcmFieldDropReasonIFPMeter = 25, /* Ingress drop reason IFP Meter */ 30360 bcmFieldDropReasonDSTFP = 26, /* Ingress drop reason Destination FP */ 30361 bcmFieldDropReasonMplsProtectionDrop = 27, /* Ingress drop reason Mpls protection 30362 drop */ 30363 bcmFieldDropReasonMplsLabelActionInvalid = 28, /* Ingress drop reason Mpls label action 30364 invalid */ 30365 bcmFieldDropReasonMplsTermPolicySelectTableDrop = 29, /* Ingress drop reason Mpls term policy 30366 select table drop */ 30367 bcmFieldDropReasonMPLSReservedLabelExposed = 30, /* Ingress drop reason Mpls reserved 30368 label exposed */ 30369 bcmFieldDropReasonMplsTTLError = 31, /* Ingress drop reason Mpls TTL error */ 30370 bcmFieldDropReasonMplsEcnError = 32, /* Ingress drop reason Mpls Ecn error */ 30371 bcmFieldDropReasonEMFT = 33, /* Ingress drop reason EM FT */ 30372 bcmFieldDropReasonIVXLT = 34, /* Ingress drop reason IVXLT */ 30373 bcmFieldDropReasonUrpfCheckFailed = 35, /* Ingress drop reason Urpf check failed */ 30374 bcmFieldDropReasonSrcPortKnockoutDrop = 36, /* Ingress drop reason Srcport knockout 30375 drop */ 30376 bcmFieldDropReasonLagFailoverPortDown = 37, /* Ingress drop reason Lag failover port 30377 down */ 30378 bcmFieldDropReasonSplitHorizonCheckFailed = 38, /* Ingress drop reason Split horizon 30379 check failed */ 30380 bcmFieldDropReasonDstLinkDown = 39, /* Ingress drop reason Dst linkdown */ 30381 bcmFieldDropReasonBlockMaskDrop = 40, /* Ingress drop reason Block mask drop */ 30382 bcmFieldDropReasonL3MtuCheckFailed = 41, /* Ingress drop reason L3 Mtu check 30383 failed */ 30384 bcmFieldDropReasonSeqNumCheckFailed = 42, /* Ingress drop reason Seq num check 30385 failed */ 30386 bcmFieldDropReasonL3IIFEqL3OIF = 43, /* Ingress drop reason L3 IIF Equals L3 30387 OIF */ 30388 bcmFieldDropReasonStormControlDrop = 44, /* Ingress drop reason Storm control 30389 drop */ 30390 bcmFieldDropReasonEgrMembershipCheckFailed = 45, /* Ingress drop reason Egr membership 30391 check failed */ 30392 bcmFieldDropReasonEgrSpanningTreeCheckFailed = 46, /* Ingress drop reason Egr spanning tree 30393 check failed */ 30394 bcmFieldDropReasonDstPBMZero = 47, /* Ingress drop reason Dst PBM zero */ 30395 bcmFieldDropReasonMplsCtrlPktDrop = 48, /* Ingress drop reason Mpls ctrl pkt 30396 drop */ 30397 bcmFieldDropReasonL2OIFDrop = 49, /* Egress drop reason L2 OIF */ 30398 bcmFieldDropReasonEgrMembershipDrop = 50, /* Egress drop reason due to membership 30399 check */ 30400 bcmFieldDropReasonDvpMembershipDrop = 51, /* Egress drop reason dvp membsership 30401 check */ 30402 bcmFieldDropReasonTtlDrop = 52, /* Egress drop reason ttl drop */ 30403 bcmFieldDropReasonL3SameIntfDrop = 53, /* Egress drop reason l3 same interface */ 30404 bcmFieldDropReasonL2SamePortDrop = 54, /* Egress drop reason l2 same port */ 30405 bcmFieldDropReasonSplitHorizonDrop = 55, /* Egress drop reason split horizon */ 30406 bcmFieldDropReasonSpanningTreeDisableDrop = 56, /* Egress drop reason spanning tree 30407 disabled */ 30408 bcmFieldDropReasonSpanningTreeBlockDrop = 57, /* Egress drop reason spanning tree 30409 blocked */ 30410 bcmFieldDropReasonEFP = 58, /* Egress drop reason filter processor */ 30411 bcmFieldDropReasonEgrMeterDrop = 59, /* Egress drop reason meter drop */ 30412 bcmFieldDropReasonEgrMtuDrop = 60, /* Egress drop reason MTU check */ 30413 bcmFieldDropReasonEgrVxltDrop = 61, /* Egress drop reason vlan translate */ 30414 bcmFieldDropReasonEgrCellTooLargeDrop = 62, /* Egress drop reason cell is too large */ 30415 bcmFieldDropReasonEgrCellTooSmallDrop = 63, /* Egress drop reason cell is too small */ 30416 bcmFieldDropReasonQosRemarkingDrop = 64, /* Egress drop reason qos remarking */ 30417 bcmFieldDropReasonSvpEqualDvpDrop = 65, /* Egress drop reason svp is equal to 30418 dvp */ 30419 bcmFieldDropReasonInvalid1588Pkt = 66, /* Egress drop reason invalid 1588 30420 packet */ 30421 bcmFieldDropReasonFlexEditorDrop = 67, /* Egress drop reason flex editor */ 30422 bcmFieldDropReasonEgrRecircleHdrDrop = 68, /* Egress drop reason EP NIH */ 30423 bcmFieldDropReasonIfaMdDeleteDrop = 69, /* Egress drop reason IFA MD delete */ 30424 bcmFieldDropReasonIngPortGroupLimit = 70, /* MMU drop reason ingress port group 30425 limit */ 30426 bcmFieldDropReasonIngPortServicePoolLimit = 71, /* MMU drop reason ingress port service 30427 pool limit */ 30428 bcmFieldDropReasonIngHeadroomPoolLimit = 72, /* MMU drop reason headroom pool limit */ 30429 bcmFieldDropReasonEgrQueueLimit = 73, /* MMU drop reason egress queue limit */ 30430 bcmFieldDropReasonEgrPortServicePoolLimit = 74, /* MMU drop reason egress port service 30431 pool limit */ 30432 bcmFieldDropReasonWREDCheck = 75, /* MMU drop reason WRED check */ 30433 bcmFieldDropReasonIngRecircleHdrDrop = 76, /* MMU drop reason EP NIH packet */ 30434 bcmFieldDropReasonMtopIpv4Gateway = 77, /* MMU drop reason MTOP IPV4 gateway */ 30435 bcmFieldDropReasonLastCount = 78 /* Always Last. Not a usable value. */ 30436 } bcm_field_drop_reason_t; 30437 30438 #define BCM_FIELD_DROP_REASON \ 30439 { \ 30440 "NoDrop", \ 30441 "CMLFlags", \ 30442 "L2SrcStaticMove", \ 30443 "L2SrcDiscard", \ 30444 "MacSaMulticast", \ 30445 "OuterTpidCheckFailed", \ 30446 "IncomingPvlanCheckFailed", \ 30447 "PktIntegrityCheckFailed", \ 30448 "ProtocolPktDrop", \ 30449 "MembershipCheckFailed", \ 30450 "SpanningTreeCheckFailed", \ 30451 "L2DstLookupMiss", \ 30452 "L2DstDiscard", \ 30453 "L3DstLookupMiss", \ 30454 "L3DstDiscard", \ 30455 "L3HdrError", \ 30456 "L3TTLError", \ 30457 "IPMCL3IIFOrRPAIDCheckFailed", \ 30458 "TunnelTTLCheckFailed", \ 30459 "TunnelShimHdrError", \ 30460 "TunnelObjectValidationFailed", \ 30461 "TunnelAdaptDrop", \ 30462 "PVLANDrop", \ 30463 "VFP", \ 30464 "IFP", \ 30465 "IFPMeter", \ 30466 "DSTFP", \ 30467 "MplsProtectionDrop", \ 30468 "MplsLabelActionInvalid", \ 30469 "MplsTermPolicySelectTableDrop", \ 30470 "MPLSReservedLabelExposed", \ 30471 "MplsTTLError", \ 30472 "MplsEcnError", \ 30473 "EMFT", \ 30474 "IVXLT", \ 30475 "UrpfCheckFailed", \ 30476 "SrcPortKnockoutDrop", \ 30477 "LagFailoverPortDown", \ 30478 "SplitHorizonCheckFailed", \ 30479 "DstLinkDown", \ 30480 "BlockMaskDrop", \ 30481 "L3MtuCheckFailed", \ 30482 "SeqNumCheckFailed", \ 30483 "L3IIFEqL3OIF", \ 30484 "StormControlDrop", \ 30485 "EgrMembershipCheckFailed", \ 30486 "EgrSpanningTreeCheckFailed", \ 30487 "DstPBMZero", \ 30488 "MplsCtrlPktDrop", \ 30489 "L2OIFDrop", \ 30490 "EgrMembershipDrop", \ 30491 "DvpMembershipDrop", \ 30492 "TtlDrop", \ 30493 "L3SameIntfDrop", \ 30494 "L2SamePortDrop", \ 30495 "SplitHorizonDrop", \ 30496 "SpanningTreeDisableDrop", \ 30497 "SpanningTreeBlockDrop", \ 30498 "EFP", \ 30499 "EgrMeterDrop", \ 30500 "EgrMtuDrop", \ 30501 "EgrVxltDrop", \ 30502 "EgrCellTooLargeDrop", \ 30503 "EgrCellTooSmallDrop", \ 30504 "QosRemarkingDrop", \ 30505 "SvpEqualDvpDrop", \ 30506 "Invalid1588Pkt", \ 30507 "FlexEditorDrop", \ 30508 "EgrRecircleHdrDrop", \ 30509 "IfaMdDeleteDrop", \ 30510 "IngPortGroupLimit", \ 30511 "IngPortServicePoolLimit", \ 30512 "IngHeadroomPoolLimit", \ 30513 "EgrQueueLimit", \ 30514 "EgrPortServicePoolLimit", \ 30515 "WREDCheck", \ 30516 "IngRecircleHdrDrop", \ 30517 "MtopIpv4Gateway" \ 30518 } 30519 30520 /* Copy to cpu Reason (for bcm_field_qualify_CopyToCpuReasonLow). */ 30521 #define BCM_FIELD_COPY_TO_CPU_REASON_NO_COPY_TO_CPU (1 << 0) /* Copytocpu reason No 30522 copy to cpu */ 30523 #define BCM_FIELD_COPY_TO_CPU_REASON_CML_FLAGS (1 << 1) /* Copytocpu reason CML 30524 flags */ 30525 #define BCM_FIELD_COPY_TO_CPU_REASON_L2_SRC_STATIC_MOVE (1 << 2) /* Copytocpu reason L2 30526 src static move */ 30527 #define BCM_FIELD_COPY_TO_CPU_REASON_L2_SRC_DISCARD (1 << 3) /* Copytocpu reason L2 30528 src discard */ 30529 #define BCM_FIELD_COPY_TO_CPU_REASON_MACSA_MULTICAST (1 << 4) /* Copytocpu reason Macsa 30530 multicast */ 30531 #define BCM_FIELD_COPY_TO_CPU_REASON_PKT_INTEGRITY_CHECK_FAILED (1 << 5) /* Copytocpu reason Pkt 30532 intergrity check 30533 failed */ 30534 #define BCM_FIELD_COPY_TO_CPU_REASON_PROTOCOL_PKT (1 << 6) /* Copytocpu reason 30535 Protocol pkt */ 30536 #define BCM_FIELD_COPY_TO_CPU_REASON_MEMBERSHIP_CHECK_FAILED (1 << 7) /* Copytocpu reason 30537 Membership check 30538 failed */ 30539 #define BCM_FIELD_COPY_TO_CPU_REASON_SPANNING_TREE_CHECK_FAILED (1 << 8) /* Copytocpu reason 30540 Spanning tree check 30541 failed */ 30542 #define BCM_FIELD_COPY_TO_CPU_REASON_L2_DST_LOOKUP_MISS (1 << 9) /* Copytocpu reason L2 30543 dst lookup miss */ 30544 #define BCM_FIELD_COPY_TO_CPU_REASON_L2_DST_LOOKUP (1 << 10) /* Copytocpu reason L2 30545 dst lookup */ 30546 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_DST_LOOKUP_MISS (1 << 11) /* Copytocpu reason L3 30547 dst lookup miss */ 30548 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_DST_LOOKUP (1 << 12) /* Copytocpu reason L3 30549 dst lookup */ 30550 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_HDR_ERROR (1 << 13) /* Copytocpu reason L3 30551 hdr error */ 30552 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_TTL_ERROR (1 << 14) /* Copytocpu reason L3 30553 TTL error */ 30554 #define BCM_FIELD_COPY_TO_CPU_REASON_IPMC_L3_IIF_OR_RPA_ID_CHECK_FAILED (1 << 15) /* Copytocpu reason IOMC 30555 L3 IIF Or RPA Id check 30556 failed */ 30557 #define BCM_FIELD_COPY_TO_CPU_REASON_LEARN_CACHE_FULL (1 << 16) /* Copytocpu reason Learn 30558 cache full */ 30559 #define BCM_FIELD_COPY_TO_CPU_REASON_VFP (1 << 17) /* Copytocpu reason VFP */ 30560 #define BCM_FIELD_COPY_TO_CPU_REASON_IFP (1 << 18) /* Copytocpu reason IFP */ 30561 #define BCM_FIELD_COPY_TO_CPU_REASON_IFP_METER (1 << 19) /* Copytocpu reason IFP 30562 Meter */ 30563 #define BCM_FIELD_COPY_TO_CPU_REASON_DST_FP (1 << 20) /* Copytocpu reason 30564 Destination FP */ 30565 #define BCM_FIELD_COPY_TO_CPU_REASON_SVP (1 << 21) /* Copytocpu reason SVP */ 30566 #define BCM_FIELD_COPY_TO_CPU_REASON_EM_FT (1 << 22) /* Copytocpu reason EM FT */ 30567 #define BCM_FIELD_COPY_TO_CPU_REASON_IVXLT (1 << 23) /* Copytocpu reason IVXLT */ 30568 #define BCM_FIELD_COPY_TO_CPU_REASON_MIRROR_SAMPLER_SAMPLED (1 << 24) /* Copytocpu reason 30569 Mirror sampler sampled */ 30570 #define BCM_FIELD_COPY_TO_CPU_REASON_MIRROR_SAMPLER_EGR_SAMPLED (1 << 25) /* Copytocpu reason 30571 Mirror sampler egr 30572 sampled */ 30573 #define BCM_FIELD_COPY_TO_CPU_REASON_SER_DROP (1 << 26) /* Copytocpu reason Ser 30574 drop */ 30575 #define BCM_FIELD_COPY_TO_CPU_REASON_URPF_CHECK_FAILED (1 << 27) /* Copytocpu reason Urpf 30576 check failed */ 30577 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_IIF_EQ_L3_OIF (1 << 28) /* Copytocpu reason L3 30578 IIF Equals L3 OIF */ 30579 #define BCM_FIELD_COPY_TO_CPU_REASON_DLB_ECMP_MONITOR_EN_OR_MEMBER_REASSINED (1 << 29) /* Copytocpu reason Dlb 30580 Ecmp Monitor En Or 30581 Member Reassined */ 30582 #define BCM_FIELD_COPY_TO_CPU_REASON_DLB_LAG_MONITOR_EN_OR_MEMBER_REASSINED (1 << 30) /* Copytocpu reason Dlb 30583 Lag Monitor En Or 30584 Member Reassined */ 30585 #define BCM_FIELD_COPY_TO_CPU_REASON_MPLS_CTRL_PKT_TO_CPU (1U << 31) /* Copytocpu reason Mpls 30586 ctrl pkt to cpu */ 30587 30588 /* Copy to cpu Reason (for bcm_field_qualify_CopyToCpuReasonHigh). */ 30589 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_0 (1 << 0) /* Copytocpu reason 30590 Matched rule bit 0 */ 30591 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_1 (1 << 1) /* Copytocpu reason 30592 Matched rule bit 1 */ 30593 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_2 (1 << 2) /* Copytocpu reason 30594 Matched rule bit 2 */ 30595 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_3 (1 << 3) /* Copytocpu reason 30596 Matched rule bit 3 */ 30597 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_4 (1 << 4) /* Copytocpu reason 30598 Matched rule bit 4 */ 30599 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_5 (1 << 5) /* Copytocpu reason 30600 Matched rule bit 5 */ 30601 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_6 (1 << 6) /* Copytocpu reason 30602 Matched rule bit 6 */ 30603 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_7 (1 << 7) /* Copytocpu reason 30604 Matched rule bit 7 */ 30605 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_TRACE_DO_NOT_MIRROR (1 << 8) /* Copytocpu reason Trace 30606 do not mirror */ 30607 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_TRACE_DO_NOT_COPY_TO_CPU (1 << 9) /* Copytocpu reason Trace 30608 do not CopyToCpu */ 30609 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_TRACE_DOP (1 << 10) /* Copytocpu reason Trace 30610 dop */ 30611 30612 #ifndef BCM_HIDE_DISPATCHABLE 30613 30614 /* API to add First Drop reason to a field entry for qualification. */ 30615 extern int bcm_field_qualify_FirstDropReason( 30616 int unit, 30617 bcm_field_entry_t entry, 30618 bcm_field_drop_reason_t type); 30619 30620 /* API to retrieve First Drop reason associated to a field entry. */ 30621 extern int bcm_field_qualify_FirstDropReason_get( 30622 int unit, 30623 bcm_field_entry_t entry, 30624 bcm_field_drop_reason_t *type); 30625 30626 /* API to add Drop reason to a field entry for qualification. */ 30627 extern int bcm_field_qualify_DropReason( 30628 int unit, 30629 bcm_field_entry_t entry, 30630 bcm_field_drop_reason_t type); 30631 30632 /* API to retrieve Drop reason associated to a field entry. */ 30633 extern int bcm_field_qualify_DropReason_get( 30634 int unit, 30635 bcm_field_entry_t entry, 30636 bcm_field_drop_reason_t *type); 30637 30638 /* 30639 * API to add redirect header first drop reason to a field entry for 30640 * qualification. 30641 */ 30642 extern int bcm_field_qualify_RecircleHdrFirstDropReason( 30643 int unit, 30644 bcm_field_entry_t entry, 30645 bcm_field_drop_reason_t type); 30646 30647 /* 30648 * API to retrieve redirect header first drop reason associated to a 30649 * field entry. 30650 */ 30651 extern int bcm_field_qualify_RecircleHdrFirstDropReason_get( 30652 int unit, 30653 bcm_field_entry_t entry, 30654 bcm_field_drop_reason_t *type); 30655 30656 /* 30657 * API to add redirect header drop reason to a field entry for 30658 * qualification. 30659 */ 30660 extern int bcm_field_qualify_RecircleHdrDropReason( 30661 int unit, 30662 bcm_field_entry_t entry, 30663 bcm_field_drop_reason_t type); 30664 30665 /* 30666 * API to retrieve redirect header drop reason associated to a field 30667 * entry. 30668 */ 30669 extern int bcm_field_qualify_RecircleHdrDropReason_get( 30670 int unit, 30671 bcm_field_entry_t entry, 30672 bcm_field_drop_reason_t *type); 30673 30674 /* To qualify on RecircleHdrCode. */ 30675 extern int bcm_field_qualify_RecircleHdrCode( 30676 int unit, 30677 bcm_field_entry_t entry, 30678 uint8 data, 30679 uint8 mask); 30680 30681 /* 30682 * Get value for bcmFieldQualifyRecircleHdrCode 30683 * qualifier from the field entry. 30684 */ 30685 extern int bcm_field_qualify_RecircleHdrCode_get( 30686 int unit, 30687 bcm_field_entry_t entry, 30688 uint8 *data, 30689 uint8 *mask); 30690 30691 /* To qualify on macsec opaque object. */ 30692 extern int bcm_field_qualify_MacSecOpaque( 30693 int unit, 30694 bcm_field_entry_t entry, 30695 uint16 data, 30696 uint16 mask); 30697 30698 /* 30699 * Get value for bcmFieldQualifyMacSecOpaque 30700 * qualifier from the field entry. 30701 */ 30702 extern int bcm_field_qualify_MacSecOpaque_get( 30703 int unit, 30704 bcm_field_entry_t entry, 30705 uint16 *data, 30706 uint16 *mask); 30707 30708 /* To qualify on mirrored copy of MMU dropped packet. */ 30709 extern int bcm_field_qualify_MirrorOnDrop( 30710 int unit, 30711 bcm_field_entry_t entry, 30712 uint8 data, 30713 uint8 mask); 30714 30715 /* 30716 * Get value for bcmFieldQualifyMirrorOnDrop 30717 * qualifier from the field entry. 30718 */ 30719 extern int bcm_field_qualify_MirrorOnDrop_get( 30720 int unit, 30721 bcm_field_entry_t entry, 30722 uint8 *data, 30723 uint8 *mask); 30724 30725 #endif /* BCM_HIDE_DISPATCHABLE */ 30726 30727 /* bcm_field_mirror_on_drop_reason_e */ 30728 typedef enum bcm_field_mirror_on_drop_reason_e { 30729 bcmFieldMirrorOnDropReasonSharedPoolLimit = 0, /* MMU drop reason is due to shared pool 30730 limit */ 30731 bcmFieldMirrorOnDropReasonIngressPortGroupLimit = 1, /* MMU drop reason is due to ingress 30732 port limit */ 30733 bcmFieldMirrorOnDropReasonIngressPortServicePoolLimit = 2, /* MMU drop reason is due to ingress 30734 port service pool limit */ 30735 bcmFieldMirrorOnDropReasonIngressHeadroomPoolLimit = 3, /* MMU drop reason is due to ingress 30736 headroom pool limit */ 30737 bcmFieldMirrorOnDropReasonEgressQueueLimit = 4, /* MMU drop reason is due to egress 30738 queue limit */ 30739 bcmFieldMirrorOnDropReasonEgressPortServicePoolLimit = 5, /* MMU drop reason is due to egress port 30740 service pool limit */ 30741 bcmFieldMirrorOnDropReasonWREDCheck = 6, /* MMU drop reason is due to WRED check */ 30742 bcmFieldMirrorOnDropReasonLastCount = 1 /* Always Last. Not a usable value. */ 30743 } bcm_field_mirror_on_drop_reason_t; 30744 30745 #define BCM_FIELD_MIRROR_ON_DROP_REASON \ 30746 { \ 30747 "SharedPoolLimit", \ 30748 "IngressPortGroupLimit", \ 30749 "IngressPortServicePoolLimit", \ 30750 "IngressHeadroomPoolLimit", \ 30751 "EgressQueueLimit", \ 30752 "EgressPortServicePoolLimit", \ 30753 "WREDCheck" \ 30754 } 30755 30756 #ifndef BCM_HIDE_DISPATCHABLE 30757 30758 /* To qualify on packets mirrored due to MMU drop. */ 30759 extern int bcm_field_qualify_MirrorOnDropReason( 30760 int unit, 30761 bcm_field_entry_t entry, 30762 bcm_field_mirror_on_drop_reason_t type); 30763 30764 /* API to retrieve mirror on drop reason associated to a field entry. */ 30765 extern int bcm_field_qualify_MirrorOnDropReason_get( 30766 int unit, 30767 bcm_field_entry_t entry, 30768 bcm_field_mirror_on_drop_reason_t *type); 30769 30770 /* To qualify on Inband telemetry control. */ 30771 extern int bcm_field_qualify_IntCtrl( 30772 int unit, 30773 bcm_field_entry_t entry, 30774 uint32 data, 30775 uint32 mask); 30776 30777 /* 30778 * Get value for bcmFieldQualifyIntCtrl 30779 * qualifier from the field entry. 30780 */ 30781 extern int bcm_field_qualify_IntCtrl_get( 30782 int unit, 30783 bcm_field_entry_t entry, 30784 uint32 *data, 30785 uint32 *mask); 30786 30787 /* To qualify on IFA hop count. */ 30788 extern int bcm_field_qualify_IfaHopCount( 30789 int unit, 30790 bcm_field_entry_t entry, 30791 uint16 data, 30792 uint16 mask); 30793 30794 /* 30795 * Get value for bcmFieldQualifyIfaHopCount 30796 * qualifier from the field entry. 30797 */ 30798 extern int bcm_field_qualify_IfaHopCount_get( 30799 int unit, 30800 bcm_field_entry_t entry, 30801 uint16 *data, 30802 uint16 *mask); 30803 30804 /* To qualify on IFA hop limit. */ 30805 extern int bcm_field_qualify_IfaHopLimit( 30806 int unit, 30807 bcm_field_entry_t entry, 30808 uint16 data, 30809 uint16 mask); 30810 30811 /* 30812 * Get value for bcmFieldQualifyIfaHopLimit 30813 * qualifier from the field entry. 30814 */ 30815 extern int bcm_field_qualify_IfaHopLimit_get( 30816 int unit, 30817 bcm_field_entry_t entry, 30818 uint16 *data, 30819 uint16 *mask); 30820 30821 /* API to add copy to cpu reason to a field entry for qualification. */ 30822 extern int bcm_field_qualify_CopyToCpuReasonLow( 30823 int unit, 30824 bcm_field_entry_t entry, 30825 uint32 data, 30826 uint32 mask); 30827 30828 /* API to retrieve copy to cpu reason associated to a field entry. */ 30829 extern int bcm_field_qualify_CopyToCpuReasonLow_get( 30830 int unit, 30831 bcm_field_entry_t entry, 30832 uint32 *data, 30833 uint32 *mask); 30834 30835 /* API to add copy to cpu reason to a field entry for qualification. */ 30836 extern int bcm_field_qualify_CopyToCpuReasonHigh( 30837 int unit, 30838 bcm_field_entry_t entry, 30839 uint32 data, 30840 uint32 mask); 30841 30842 /* API to retrieve copy to cpu reason associated to a field entry. */ 30843 extern int bcm_field_qualify_CopyToCpuReasonHigh_get( 30844 int unit, 30845 bcm_field_entry_t entry, 30846 uint32 *data, 30847 uint32 *mask); 30848 30849 /* 30850 * Set match criteria for Rtag7CHashUpper 30851 * qualifier. 30852 */ 30853 extern int bcm_field_qualify_Rtag7CHashUpper( 30854 int unit, 30855 bcm_field_entry_t entry, 30856 uint16 data, 30857 uint16 mask); 30858 30859 /* 30860 * Get match criteria for Rtag7CHashUpper 30861 * qualifier. 30862 */ 30863 extern int bcm_field_qualify_Rtag7CHashUpper_get( 30864 int unit, 30865 bcm_field_entry_t entry, 30866 uint16 *data, 30867 uint16 *mask); 30868 30869 /* 30870 * Set match criteria for Rtag7CHashLower 30871 * qualifier. 30872 */ 30873 extern int bcm_field_qualify_Rtag7CHashLower( 30874 int unit, 30875 bcm_field_entry_t entry, 30876 uint16 data, 30877 uint16 mask); 30878 30879 /* 30880 * Get match criteria for Rtag7CHashLower 30881 * qualifier. 30882 */ 30883 extern int bcm_field_qualify_Rtag7CHashLower_get( 30884 int unit, 30885 bcm_field_entry_t entry, 30886 uint16 *data, 30887 uint16 *mask); 30888 30889 /* 30890 * API to add overlay network tag type to a field entry for the field 30891 * qualification. 30892 */ 30893 extern int bcm_field_qualify_OverlayNetworkTagType( 30894 int unit, 30895 bcm_field_entry_t entry, 30896 bcm_field_network_tag_type_t type); 30897 30898 /* 30899 * API to retrieve overlay network tag type associated to a given field 30900 * entry. 30901 */ 30902 extern int bcm_field_qualify_OverlayNetworkTagType_get( 30903 int unit, 30904 bcm_field_entry_t entry, 30905 bcm_field_network_tag_type_t *type); 30906 30907 /* API to add Ip option header type to a field entry for qualification. */ 30908 extern int bcm_field_qualify_IpOptionHdrType( 30909 int unit, 30910 bcm_field_entry_t entry, 30911 bcm_field_ip_option_hdr_type_t type); 30912 30913 /* 30914 * API to retrieve IP option header type associated to a given field 30915 * entry. 30916 */ 30917 extern int bcm_field_qualify_IpOptionHdrType_get( 30918 int unit, 30919 bcm_field_entry_t entry, 30920 bcm_field_ip_option_hdr_type_t *type); 30921 30922 /* 30923 * API to add overlay Ip option header type to a field entry for 30924 * qualification. 30925 */ 30926 extern int bcm_field_qualify_OverlayIpOptionHdrType( 30927 int unit, 30928 bcm_field_entry_t entry, 30929 bcm_field_ip_option_hdr_type_t type); 30930 30931 /* 30932 * API to retrieve overlay IP option header type associated to a given 30933 * field entry. 30934 */ 30935 extern int bcm_field_qualify_OverlayIpOptionHdrType_get( 30936 int unit, 30937 bcm_field_entry_t entry, 30938 bcm_field_ip_option_hdr_type_t *type); 30939 30940 /* 30941 * Set match criteria for OverlayEgressClass ID 30942 * qualifier. 30943 */ 30944 extern int bcm_field_qualify_OverlayEgressClass( 30945 int unit, 30946 bcm_field_entry_t entry, 30947 uint16 data, 30948 uint16 mask); 30949 30950 /* 30951 * Get match criteria for OverlayEgressClass ID 30952 * qualifier. 30953 */ 30954 extern int bcm_field_qualify_OverlayEgressClass_get( 30955 int unit, 30956 bcm_field_entry_t entry, 30957 uint16 *data, 30958 uint16 *mask); 30959 30960 /* 30961 * Set match criteria for Egress DOP Trigger 30962 * qualifier. 30963 */ 30964 extern int bcm_field_qualify_EgressDOPTrigger( 30965 int unit, 30966 bcm_field_entry_t entry, 30967 uint8 data, 30968 uint8 mask); 30969 30970 /* 30971 * Get match criteria for Egress DOP Trigger 30972 * qualifier. 30973 */ 30974 extern int bcm_field_qualify_EgressDOPTrigger_get( 30975 int unit, 30976 bcm_field_entry_t entry, 30977 uint8 *data, 30978 uint8 *mask); 30979 30980 /* 30981 * Set match criteria for EgressTunnelIpHeaderFlowLabel 30982 * qualifier. 30983 */ 30984 extern int bcm_field_qualify_EgressTunnelIpHeaderFlowLabel( 30985 int unit, 30986 bcm_field_entry_t entry, 30987 uint32 data, 30988 uint32 mask); 30989 30990 /* 30991 * Get match criteria for EgressTunnelIpHeaderFlowLabel 30992 * qualifier. 30993 */ 30994 extern int bcm_field_qualify_EgressTunnelIpHeaderFlowLabel_get( 30995 int unit, 30996 bcm_field_entry_t entry, 30997 uint32 *data, 30998 uint32 *mask); 30999 31000 /* 31001 * Set match criteria for EgressTunnelIpHeaderEcn 31002 * qualifier. 31003 */ 31004 extern int bcm_field_qualify_EgressTunnelIpHeaderEcn( 31005 int unit, 31006 bcm_field_entry_t entry, 31007 uint8 data, 31008 uint8 mask); 31009 31010 /* 31011 * Get match criteria for EgressTunnelIpHeaderEcn 31012 * qualifier. 31013 */ 31014 extern int bcm_field_qualify_EgressTunnelIpHeaderEcn_get( 31015 int unit, 31016 bcm_field_entry_t entry, 31017 uint8 *data, 31018 uint8 *mask); 31019 31020 /* 31021 * Set match criteria for EgressTunnelIpHeaderDscp 31022 * qualifier. 31023 */ 31024 extern int bcm_field_qualify_EgressTunnelIpHeaderDscp( 31025 int unit, 31026 bcm_field_entry_t entry, 31027 uint8 data, 31028 uint8 mask); 31029 31030 /* 31031 * Get match criteria for EgressTunnelIpHeaderDscp 31032 * qualifier. 31033 */ 31034 extern int bcm_field_qualify_EgressTunnelIpHeaderDscp_get( 31035 int unit, 31036 bcm_field_entry_t entry, 31037 uint8 *data, 31038 uint8 *mask); 31039 31040 /* 31041 * Set match criteria for IpExtHdr2Protocol 31042 * qualifier. 31043 */ 31044 extern int bcm_field_qualify_IpExtHdr2Protocol( 31045 int unit, 31046 bcm_field_entry_t entry, 31047 uint8 data, 31048 uint8 mask); 31049 31050 /* 31051 * Get match criteria for IpExtHdr2Protocol 31052 * qualifier. 31053 */ 31054 extern int bcm_field_qualify_IpExtHdr2Protocol_get( 31055 int unit, 31056 bcm_field_entry_t entry, 31057 uint8 *data, 31058 uint8 *mask); 31059 31060 /* bcm_field_qualify_EgressL3TunnelGport */ 31061 extern int bcm_field_qualify_EgressL3TunnelGport( 31062 int unit, 31063 bcm_field_entry_t entry, 31064 bcm_gport_t tunnel_port_id); 31065 31066 /* 31067 * Get match criteria for EgressL3TunnelGport 31068 * qualifier from the field entry. 31069 */ 31070 extern int bcm_field_qualify_EgressL3TunnelGport_get( 31071 int unit, 31072 bcm_field_entry_t entry, 31073 bcm_gport_t *tunnel_port_id); 31074 31075 #endif /* BCM_HIDE_DISPATCHABLE */ 31076 31077 /* bcm_field_pkt_queue_notif_e */ 31078 typedef enum bcm_field_pkt_queue_notif_e { 31079 bcmFieldPktQueueNotifCongestionIndication = 0, /* Congestion Experienced indication 31080 from MMU */ 31081 bcmFieldPktQueueNotifUnicastQueuing = 1 /* Unicast Queuing */ 31082 } bcm_field_pkt_queue_notif_t; 31083 31084 #define BCM_FIELD_PKT_QUEUE_NOTIF \ 31085 { \ 31086 "CongestionIndication", \ 31087 "UnicastQueuing" \ 31088 } 31089 31090 #ifndef BCM_HIDE_DISPATCHABLE 31091 31092 /* 31093 * API to add Egress pkt queue notification to a field entry for 31094 * qualification. 31095 */ 31096 extern int bcm_field_qualify_EgressPktQueueNotification( 31097 int unit, 31098 bcm_field_entry_t entry, 31099 bcm_field_pkt_queue_notif_t type); 31100 31101 /* 31102 * API to retrieve Egress pkt queue notification associated to a field 31103 * entry. 31104 */ 31105 extern int bcm_field_qualify_EgressPktQueueNotification_get( 31106 int unit, 31107 bcm_field_entry_t entry, 31108 bcm_field_pkt_queue_notif_t *type); 31109 31110 #endif /* BCM_HIDE_DISPATCHABLE */ 31111 31112 /* bcm_field_l2_pkt_type_e */ 31113 typedef enum bcm_field_mcast_pkt_reason_e { 31114 bcmFieldMcastPktReasonSwitchCopy = 0, /* Switch copy indication from MMU */ 31115 bcmFieldMcastPktReasonReplicatedCopy = 1, /* L3IPMC replicated copy indication 31116 from MMU */ 31117 bcmFieldMcastPktReasonL3Only = 2, /* L3 ONLY indication from MMU */ 31118 bcmFieldMcastPktReasonLastCount = 3 /* Always Last. Not a usable value. */ 31119 } bcm_field_mcast_pkt_reason_t; 31120 31121 #define BCM_FIELD_MAST_PKT_REASON \ 31122 { \ 31123 "SwitchCopy", \ 31124 "ReplicatedCopy", \ 31125 "L3Only", \ 31126 "LastCount" \ 31127 } 31128 31129 #ifndef BCM_HIDE_DISPATCHABLE 31130 31131 /* 31132 * API to add Egress Multicast Packet reason to a field entry for 31133 * qualification. 31134 */ 31135 extern int bcm_field_qualify_EgressMcastPktReason( 31136 int unit, 31137 bcm_field_entry_t entry, 31138 bcm_field_mcast_pkt_reason_t type); 31139 31140 /* 31141 * API to retrieve Egress multicast Packet reason associated to a field 31142 * entry. 31143 */ 31144 extern int bcm_field_qualify_EgressMcastPktReason_get( 31145 int unit, 31146 bcm_field_entry_t entry, 31147 bcm_field_mcast_pkt_reason_t *type); 31148 31149 /* To qualify on L2 Egr Interface control id. */ 31150 extern int bcm_field_qualify_L2EgrIntfEfpCtrlId( 31151 int unit, 31152 bcm_field_entry_t entry, 31153 uint8 data, 31154 uint8 mask); 31155 31156 /* 31157 * Get value for L2 Egr Interface control id 31158 * qualifier from the field entry. 31159 */ 31160 extern int bcm_field_qualify_L2EgrIntfEfpCtrlId_get( 31161 int unit, 31162 bcm_field_entry_t entry, 31163 uint8 *data, 31164 uint8 *mask); 31165 31166 #endif /* BCM_HIDE_DISPATCHABLE */ 31167 31168 /* Enums for VlanTagActions */ 31169 typedef enum bcm_field_vlan_tag_action_e { 31170 bcmFieldVlanTagActionDelete = 0, /* Delete Vlan Tag */ 31171 bcmFieldVlanTagActionAddOrReplace = 1, /* Add or replace Vlan tag. */ 31172 bcmFieldVlanTagActionLastCount = 2 /* Always last. Not to be used. */ 31173 } bcm_field_vlan_tag_action_t; 31174 31175 /* bcm_field_compression_map_type_e */ 31176 typedef enum bcm_field_compression_map_type_e { 31177 bcmFieldCompressionDirectMapTypeTtl = 0, /* Compression type TTL to match 31178 qualifier bcmFieldQualifyTtl. */ 31179 bcmFieldCompressionDirectMapTypeTos = 1, /* Compression type to match qualifier 31180 bcmFieldQualifyTosLower4Bits. */ 31181 bcmFieldCompressionDirectMapTypeTcp = 2, /* Compression type TCP flags to match 31182 qualifier bcmFieldQualifyTcpControl */ 31183 bcmFieldCompressionIndexMapTypeEthertype = 3, /* Compression type Ethertype to match 31184 qualifier bcmFieldQualifyEtherType. */ 31185 bcmFieldCompressionIndexMapTypeIpProtocol = 4, /* Compression type IP Protocol to match 31186 qualifier 31187 bcmFieldQualifyExtensionHeaderType. */ 31188 bcmFieldCompressionDirectMapTypeTtlZero = 5, /* Compression type TTL to match 31189 qualifier 31190 bcmFieldQualifyTtlClassZero. */ 31191 bcmFieldCompressionDirectMapTypeTtlOne = 6, /* Compression type TTL to match 31192 qualifier bcmFieldQualifyTtlClassOne. */ 31193 bcmFieldCompressionDirectMapTypeTosZero = 7, /* Compression type to match qualifier 31194 bcmFieldQualifyTosClassZero. */ 31195 bcmFieldCompressionDirectMapTypeTosOne = 8, /* Compression type to match qualifier 31196 bcmFieldQualifyTosClassOne. */ 31197 bcmFieldCompressionDirectMapTypeTcpZero = 9, /* Compression type TCP flags to match 31198 qualifier bcmFieldQualifyTcpClassZero */ 31199 bcmFieldCompressionDirectMapTypeTcpOne = 10, /* Compression type TCP flags to match 31200 qualifier bcmFieldQualifyTcpClassOne */ 31201 bcmFieldCompressionDirectMapTypeIpTunnelTtl = 11, /* Compression type Tunnel TTL to match 31202 qualifier bcmFieldQualifyIpTunnelTtl. */ 31203 bcmFieldCompressionDirectMapTypeIpProtocol = 12, /* Compression type IP Protocol to match 31204 qualifier 31205 bcmFieldQualifyIpProtocolClass. */ 31206 bcmFieldCompressionLastMapTypeCount = 13 /* Always Last. Not a usable value. */ 31207 } bcm_field_compression_map_type_t; 31208 31209 #define BCM_FIELD_COMPRESSION_TYPE \ 31210 { \ 31211 "DirectMapTypeTtl", \ 31212 "DirectMapTypeTos", \ 31213 "DirectMapTypeTcp", \ 31214 "IndexMapTypeEthertype", \ 31215 "IndexMapTypeIpProtocol", \ 31216 "DirectMapTypeTtlZero", \ 31217 "DirectMapTypeTtlOne", \ 31218 "DirectMapTypeTosZero", \ 31219 "DirectMapTypeTosOne", \ 31220 "DirectMapTypeTcpZero", \ 31221 "DirectMapTypeTcpOne", \ 31222 "DirectMapTypeIpTunnelTtl", \ 31223 "DirectMapTypeIpProtocol" \ 31224 } 31225 31226 #ifndef BCM_HIDE_DISPATCHABLE 31227 31228 /* To set the remapped compression values for a particular value. */ 31229 extern int bcm_field_compression_direct_mapped_set( 31230 int unit, 31231 bcm_field_compression_map_type_t type, 31232 bcm_pbmp_t ports, 31233 uint16 entry_cnt, 31234 uint16 *val_arr, 31235 uint16 *map_val_arr); 31236 31237 /* To get the remapped compression values for a particular value. */ 31238 extern int bcm_field_compression_direct_mapped_get( 31239 int unit, 31240 bcm_field_compression_map_type_t type, 31241 bcm_pbmp_t ports, 31242 uint16 entry_cnt, 31243 uint16 *val_arr, 31244 uint16 *map_val_arr); 31245 31246 /* 31247 * To set the remapped compression values for a particular value at a 31248 * particular index. 31249 */ 31250 extern int bcm_field_compression_index_mapped_set( 31251 int unit, 31252 bcm_field_compression_map_type_t type, 31253 uint16 index, 31254 bcm_pbmp_t ports, 31255 uint16 val, 31256 uint16 map_val); 31257 31258 /* 31259 * To get the remapped compression values for a particular value at a 31260 * particular index. 31261 */ 31262 extern int bcm_field_compression_index_mapped_get( 31263 int unit, 31264 bcm_field_compression_map_type_t type, 31265 uint16 index, 31266 bcm_pbmp_t ports, 31267 uint16 *val, 31268 uint16 *map_val); 31269 31270 /* To qualify on Module Header Priority. */ 31271 extern int bcm_field_qualify_MHPriority( 31272 int unit, 31273 bcm_field_entry_t entry, 31274 uint8 data, 31275 uint8 mask); 31276 31277 /* To get qualified inputs on Module Header Priority. */ 31278 extern int bcm_field_qualify_MHPriority_get( 31279 int unit, 31280 bcm_field_entry_t entry, 31281 uint8 *data, 31282 uint8 *mask); 31283 31284 /* bcm_field_qualify_InnerTcpControl */ 31285 extern int bcm_field_qualify_InnerTcpControl( 31286 int unit, 31287 bcm_field_entry_t entry, 31288 uint8 data, 31289 uint8 mask); 31290 31291 /* 31292 * Get match criteria for bcmFieldQualifyInnerTcpControl 31293 * qualifier from the field entry. 31294 */ 31295 extern int bcm_field_qualify_InnerTcpControl_get( 31296 int unit, 31297 bcm_field_entry_t entry, 31298 uint8 *data, 31299 uint8 *mask); 31300 31301 /* 31302 * Set match criteria for IntFlags 31303 * qualifier. 31304 */ 31305 extern int bcm_field_qualify_IntFlags( 31306 int unit, 31307 bcm_field_entry_t entry, 31308 uint8 data, 31309 uint8 mask); 31310 31311 /* 31312 * Get match criteria for IntFlags 31313 * qualifier. 31314 */ 31315 extern int bcm_field_qualify_IntFlags_get( 31316 int unit, 31317 bcm_field_entry_t entry, 31318 uint8 *data, 31319 uint8 *mask); 31320 31321 /* 31322 * Set match criteria for IntUdpChecksumEqualsZero 31323 * qualifier. 31324 */ 31325 extern int bcm_field_qualify_IntUdpChecksumEqualsZero( 31326 int unit, 31327 bcm_field_entry_t entry, 31328 uint8 data, 31329 uint8 mask); 31330 31331 /* 31332 * Get match criteria for IntUdpChecksumEqualsZero 31333 * qualifier. 31334 */ 31335 extern int bcm_field_qualify_IntUdpChecksumEqualsZero_get( 31336 int unit, 31337 bcm_field_entry_t entry, 31338 uint8 *data, 31339 uint8 *mask); 31340 31341 /* 31342 * Set match criteria for IntMetadataHdrType 31343 * qualifier. 31344 */ 31345 extern int bcm_field_qualify_IntMetadataHdrType( 31346 int unit, 31347 bcm_field_entry_t entry, 31348 uint8 data, 31349 uint8 mask); 31350 31351 /* 31352 * Get match criteria for IntMetadataHdrType 31353 * qualifier. 31354 */ 31355 extern int bcm_field_qualify_IntMetadataHdrType_get( 31356 int unit, 31357 bcm_field_entry_t entry, 31358 uint8 *data, 31359 uint8 *mask); 31360 31361 /* 31362 * Set match criteria for CompressionDstHit 31363 * qualifier. 31364 */ 31365 extern int bcm_field_qualify_CompressionDstHit( 31366 int unit, 31367 bcm_field_entry_t entry, 31368 uint8 data, 31369 uint8 mask); 31370 31371 /* 31372 * Get match criteria for CompressionDstHit 31373 * qualifier. 31374 */ 31375 extern int bcm_field_qualify_CompressionDstHit_get( 31376 int unit, 31377 bcm_field_entry_t entry, 31378 uint8 *data, 31379 uint8 *mask); 31380 31381 /* 31382 * Set match criteria for CompressionSrcHit 31383 * qualifier. 31384 */ 31385 extern int bcm_field_qualify_CompressionSrcHit( 31386 int unit, 31387 bcm_field_entry_t entry, 31388 uint8 data, 31389 uint8 mask); 31390 31391 /* 31392 * Get match criteria for CompressionSrcHit 31393 * qualifier. 31394 */ 31395 extern int bcm_field_qualify_CompressionSrcHit_get( 31396 int unit, 31397 bcm_field_entry_t entry, 31398 uint8 *data, 31399 uint8 *mask); 31400 31401 #endif /* BCM_HIDE_DISPATCHABLE */ 31402 31403 /* bcm_field_IntHdr_Location_e */ 31404 typedef enum bcm_field_IntHdr_Location_e { 31405 bcmfieldIntHdrLocationInner = 0, /* INT header location is inner payload. */ 31406 bcmfieldIntHdrLocationOuter = 1, /* INT header location is outer payload. */ 31407 bcmfieldIntHdrLocationBoth = 2, /* INT header location is both inner and 31408 outer payload. */ 31409 bcmfieldIntHdrLocationCount = 3 /* Always Last. Not a usable value. */ 31410 } bcm_field_IntHdr_Location_t; 31411 31412 #define BCM_FIELD_INT_HEADER_LOCATION \ 31413 { \ 31414 "bcmfieldIntHdrLocationInner", \ 31415 "bcmfieldIntHdrLocationOuter", \ 31416 "bcmfieldIntHdrLocationBoth" \ 31417 } 31418 31419 /* bcm_field_IntHdr_Type_e */ 31420 typedef enum bcm_field_IntHdr_Type_e { 31421 bcmfieldIntHdrTypeNone = 0, /* INT header type NONE. */ 31422 bcmfieldIntHdrTypeINTDP = 1, /* INT header type INT_DP. */ 31423 bcmfieldIntHdrTypeIFA = 2, /* INT header type IFA. */ 31424 bcmfieldIntHdrTypeIOAM = 3, /* INT header type IOAM. */ 31425 bcmfieldIntHdrTypeCount = 4 /* Always Last. Not a usable value. */ 31426 } bcm_field_IntHdr_Type_t; 31427 31428 #define BCM_FIELD_INT_HEADER_TYPE \ 31429 { \ 31430 "bcmfieldIntHdrTypeNone", \ 31431 "bcmfieldIntHdrTypeINTDP", \ 31432 "bcmfieldIntHdrTypeIFA", \ 31433 "bcmfieldIntHdrTypeIOAM" \ 31434 } 31435 31436 #ifndef BCM_HIDE_DISPATCHABLE 31437 31438 /* 31439 * Set match criteria for IntHdrType 31440 * qualifier. 31441 */ 31442 extern int bcm_field_qualify_IntHdrType( 31443 int unit, 31444 bcm_field_entry_t entry, 31445 bcm_field_IntHdr_Type_t int_type); 31446 31447 /* 31448 * Get match criteria for IntHdrType 31449 * qualifier. 31450 */ 31451 extern int bcm_field_qualify_IntHdrType_get( 31452 int unit, 31453 bcm_field_entry_t entry, 31454 bcm_field_IntHdr_Type_t *int_type); 31455 31456 /* 31457 * Set match criteria for IntHdrPresent 31458 * qualifier. 31459 */ 31460 extern int bcm_field_qualify_IntHdrPresent( 31461 int unit, 31462 bcm_field_entry_t entry, 31463 bcm_field_IntHdr_Location_t int_type); 31464 31465 /* 31466 * Get match criteria for IntHdrPresent 31467 * qualifier. 31468 */ 31469 extern int bcm_field_qualify_IntHdrPresent_get( 31470 int unit, 31471 bcm_field_entry_t entry, 31472 bcm_field_IntHdr_Location_t *int_type); 31473 31474 #endif /* BCM_HIDE_DISPATCHABLE */ 31475 31476 /* bcm_field_pkt_misc_ctrl_e */ 31477 typedef enum bcm_field_pkt_misc_ctrl_e { 31478 bcmFieldPktMiscCtrlNone = 0, /* No operation */ 31479 bcmFieldPktMiscCtrlGoodIpPkt = 1, /* Good IP packet. */ 31480 bcmFieldPktMiscCtrlNotGoodIpPkt = 2, /* Not Good IP packet. */ 31481 bcmFieldPktMiscCtrlBpduPkt = 3, /* BPDU packet. */ 31482 bcmFieldPktMiscCtrlNotBpduPkt = 4, /* Not BPDU packet. */ 31483 bcmFieldPktMiscCtrlPimBidirPkt = 5, /* PIM Bidirectional Flow. */ 31484 bcmFieldPktMiscCtrlNotPimBidirPkt = 6, /* Not PIM Bidirectional Flow. */ 31485 bcmFieldPktMiscCtrlHiGig3MirrorPkt = 7, /* HiGig3 Mirror Packet. */ 31486 bcmFieldPktMiscCtrlNotHiGig3MirrorPkt = 8, /* Not HiGig3 Mirror Packet. */ 31487 bcmFieldPktMiscCtrlLastCount = 9 /* Always Last. Not a usable value. */ 31488 } bcm_field_pkt_misc_ctrl_t; 31489 31490 #ifndef BCM_HIDE_DISPATCHABLE 31491 31492 /* Set match criteria for Packet Misc Controls. */ 31493 extern int bcm_field_qualify_PktMiscCtrl( 31494 int unit, 31495 bcm_field_entry_t entry, 31496 bcm_field_pkt_misc_ctrl_t pkt_misc_ctrl); 31497 31498 /* Get match criteria for Packet Misc controls qualifier. */ 31499 extern int bcm_field_qualify_PktMiscCtrl_get( 31500 int unit, 31501 bcm_field_entry_t entry, 31502 bcm_field_pkt_misc_ctrl_t *pkt_misc_ctrl); 31503 31504 /* Set match criteria for HiGig3 packet. */ 31505 extern int bcm_field_qualify_HiGig3Pkt( 31506 int unit, 31507 bcm_field_entry_t entry, 31508 uint8 data, 31509 uint8 mask); 31510 31511 /* Get match criteria for HiGig3 packet qualifier. */ 31512 extern int bcm_field_qualify_HiGig3Pkt_get( 31513 int unit, 31514 bcm_field_entry_t entry, 31515 uint8 *data, 31516 uint8 *mask); 31517 31518 /* Set match criteria for Loopback Lag Failover packet. */ 31519 extern int bcm_field_qualify_LoopbackLagFailoverPkt( 31520 int unit, 31521 bcm_field_entry_t entry, 31522 uint8 data, 31523 uint8 mask); 31524 31525 /* Get match criteria for Loopback Lag Failover packet qualifier. */ 31526 extern int bcm_field_qualify_LoopbackLagFailoverPkt_get( 31527 int unit, 31528 bcm_field_entry_t entry, 31529 uint8 *data, 31530 uint8 *mask); 31531 31532 #endif /* BCM_HIDE_DISPATCHABLE */ 31533 31534 /* Macros for VLAN Tag Preserve */ 31535 #define BCM_FIELD_OUTER_VLAN_TAG_PRESERVE (1 << 0) /* Preserve Outer VLAN 31536 Tag */ 31537 #define BCM_FIELD_INNER_VLAN_TAG_PRESERVE (1 << 1) /* Preserve Inner VLAN 31538 Tag */ 31539 31540 #ifndef BCM_HIDE_DISPATCHABLE 31541 31542 /* 31543 * Set match criteria for bcmFieldQualifyForwardingOuterVlanPri 31544 * qualifier in the field entry. 31545 */ 31546 extern int bcm_field_qualify_ForwardingOuterVlanPri( 31547 int unit, 31548 bcm_field_entry_t entry, 31549 uint8 data, 31550 uint8 mask); 31551 31552 /* 31553 * Get match criteria for bcmFieldQualifyForwardingOuterVlanPri 31554 * qualifier from the field entry. 31555 */ 31556 extern int bcm_field_qualify_ForwardingOuterVlanPri_get( 31557 int unit, 31558 bcm_field_entry_t entry, 31559 uint8 *data, 31560 uint8 *mask); 31561 31562 /* 31563 * Set match criteria for bcmFieldQualifyForwardingOuterTpid qualifier 31564 * in the field entry. 31565 */ 31566 extern int bcm_field_qualify_ForwardingOuterTpid( 31567 int unit, 31568 bcm_field_entry_t entry, 31569 uint16 data, 31570 uint16 mask); 31571 31572 /* 31573 * Get match criteria for bcmFieldQualifyForwardingOuterTpid qualifier 31574 * from the field entry. 31575 */ 31576 extern int bcm_field_qualify_ForwardingOuterTpid_get( 31577 int unit, 31578 bcm_field_entry_t entry, 31579 uint16 *data, 31580 uint16 *mask); 31581 31582 /* 31583 * Set match criteria for bcmFieldQualifyIncomingVlanFormat qualifier in 31584 * the field entry. 31585 */ 31586 extern int bcm_field_qualify_IncomingVlanFormat( 31587 int unit, 31588 bcm_field_entry_t entry, 31589 uint8 data, 31590 uint8 mask); 31591 31592 /* 31593 * Get match criteria for bcmFieldQualifyIncomingVlanFormat qualifier 31594 * from the field entry. 31595 */ 31596 extern int bcm_field_qualify_IncomingVlanFormat_get( 31597 int unit, 31598 bcm_field_entry_t entry, 31599 uint8 *data, 31600 uint8 *mask); 31601 31602 /* 31603 * Set match criteria for bcmFieldQualifyBfdMultiplierLen qualifier in 31604 * the field entry. 31605 */ 31606 extern int bcm_field_qualify_BfdMultiplierLen( 31607 int unit, 31608 bcm_field_entry_t entry, 31609 uint16 data, 31610 uint16 mask); 31611 31612 /* Set match criteria for BFD Version Flags in the field entry. */ 31613 extern int bcm_field_qualify_BfdVerFlags( 31614 int unit, 31615 bcm_field_entry_t entry, 31616 uint8 data, 31617 uint8 mask); 31618 31619 /* Set match criteria for GPE Flags in the field entry. */ 31620 extern int bcm_field_qualify_GpeFlags( 31621 int unit, 31622 bcm_field_entry_t entry, 31623 uint8 data, 31624 uint8 mask); 31625 31626 /* Set match criteria for GPE Network ID in the field entry. */ 31627 extern int bcm_field_qualify_GpeNetworkId( 31628 int unit, 31629 bcm_field_entry_t entry, 31630 uint32 data, 31631 uint32 mask); 31632 31633 /* Set match criteria for GPE Protocol in the field entry. */ 31634 extern int bcm_field_qualify_GpeProtocol( 31635 int unit, 31636 bcm_field_entry_t entry, 31637 uint8 data, 31638 uint8 mask); 31639 31640 /* Set match criteria for GPE Reserved0 in the field entry. */ 31641 extern int bcm_field_qualify_GpeReserved0( 31642 int unit, 31643 bcm_field_entry_t entry, 31644 uint16 data, 31645 uint16 mask); 31646 31647 /* Set match criteria for GPE Reserved1 in the field entry. */ 31648 extern int bcm_field_qualify_GpeReserved1( 31649 int unit, 31650 bcm_field_entry_t entry, 31651 uint8 data, 31652 uint8 mask); 31653 31654 /* Set match criteria for IFA Attribute Opaque data in the field entry. */ 31655 extern int bcm_field_qualify_IfaAttrOpaqData( 31656 int unit, 31657 bcm_field_entry_t entry, 31658 uint16 data, 31659 uint16 mask); 31660 31661 /* Set match criteria for IGMP Max Response time in the field entry. */ 31662 extern int bcm_field_qualify_IgmpMaxRespTime( 31663 int unit, 31664 bcm_field_entry_t entry, 31665 uint8 data, 31666 uint8 mask); 31667 31668 /* Set match criteria for MPLS TOP Header in the field entry. */ 31669 extern int bcm_field_qualify_MplsTopHeader( 31670 int unit, 31671 bcm_field_entry_t entry, 31672 uint32 data, 31673 uint32 mask); 31674 31675 /* Set match criteria for MPLS VC Label header in the field entry. */ 31676 extern int bcm_field_qualify_MplsVcLabelHeader( 31677 int unit, 31678 bcm_field_entry_t entry, 31679 uint32 data, 31680 uint32 mask); 31681 31682 /* Set match criteria for TCP Ack number in the field entry. */ 31683 extern int bcm_field_qualify_TcpAckNum( 31684 int unit, 31685 bcm_field_entry_t entry, 31686 uint32 data, 31687 uint32 mask); 31688 31689 /* Set match criteria for TCP Sequence Num in the field entry. */ 31690 extern int bcm_field_qualify_TcpSequenceNum( 31691 int unit, 31692 bcm_field_entry_t entry, 31693 uint32 data, 31694 uint32 mask); 31695 31696 /* Set match criteria for UDP Length in the field entry. */ 31697 extern int bcm_field_qualify_UdpLength( 31698 int unit, 31699 bcm_field_entry_t entry, 31700 uint16 data, 31701 uint16 mask); 31702 31703 /* Set match criteria for PTP Rserved1 in the field entry. */ 31704 extern int bcm_field_qualify_PtpReserved1( 31705 int unit, 31706 bcm_field_entry_t entry, 31707 uint8 data, 31708 uint8 mask); 31709 31710 /* Set match criteria for PTP Transport Spec in the field entry. */ 31711 extern int bcm_field_qualify_PtpTransportSpec( 31712 int unit, 31713 bcm_field_entry_t entry, 31714 uint8 data, 31715 uint8 mask); 31716 31717 /* Get match criteria for BFD Multiplier Length. */ 31718 extern int bcm_field_qualify_BfdMultiplierLen_get( 31719 int unit, 31720 bcm_field_entry_t entry, 31721 uint16 data, 31722 uint16 mask); 31723 31724 /* Get match criteria for BFD Version Flags. */ 31725 extern int bcm_field_qualify_BfdVerFlags_get( 31726 int unit, 31727 bcm_field_entry_t entry, 31728 uint8 data, 31729 uint8 mask); 31730 31731 /* Get match criteria for GPE Flags. */ 31732 extern int bcm_field_qualify_GpeFlags_get( 31733 int unit, 31734 bcm_field_entry_t entry, 31735 uint8 data, 31736 uint8 mask); 31737 31738 /* Get match criteria for GPE Network ID. */ 31739 extern int bcm_field_qualify_GpeNetworkId_get( 31740 int unit, 31741 bcm_field_entry_t entry, 31742 uint32 data, 31743 uint32 mask); 31744 31745 /* Get match criteria for GPE Protocol. */ 31746 extern int bcm_field_qualify_GpeProtocol_get( 31747 int unit, 31748 bcm_field_entry_t entry, 31749 uint8 data, 31750 uint8 mask); 31751 31752 /* Get match criteria for GPE Reserved0. */ 31753 extern int bcm_field_qualify_GpeReserved0_get( 31754 int unit, 31755 bcm_field_entry_t entry, 31756 uint16 data, 31757 uint16 mask); 31758 31759 /* Get match criteria for GPE Reserved1. */ 31760 extern int bcm_field_qualify_GpeReserved1_get( 31761 int unit, 31762 bcm_field_entry_t entry, 31763 uint8 data, 31764 uint8 mask); 31765 31766 /* Get match criteria for IFA Attribute Opaque data. */ 31767 extern int bcm_field_qualify_IfaAttrOpaqData_get( 31768 int unit, 31769 bcm_field_entry_t entry, 31770 uint16 data, 31771 uint16 mask); 31772 31773 /* Get match criteria for IGMP Max Response time. */ 31774 extern int bcm_field_qualify_IgmpMaxRespTime_get( 31775 int unit, 31776 bcm_field_entry_t entry, 31777 uint8 data, 31778 uint8 mask); 31779 31780 /* Get match criteria for MPLS TOP Header. */ 31781 extern int bcm_field_qualify_MplsTopHeader_get( 31782 int unit, 31783 bcm_field_entry_t entry, 31784 uint32 data, 31785 uint32 mask); 31786 31787 /* Get match criteria for MPLS VC Label header. */ 31788 extern int bcm_field_qualify_MplsVcLabelHeader_get( 31789 int unit, 31790 bcm_field_entry_t entry, 31791 uint32 data, 31792 uint32 mask); 31793 31794 /* Get match criteria for TCP Ack number. */ 31795 extern int bcm_field_qualify_TcpAckNum_get( 31796 int unit, 31797 bcm_field_entry_t entry, 31798 uint32 data, 31799 uint32 mask); 31800 31801 /* Get match criteria for TCP Sequence Num. */ 31802 extern int bcm_field_qualify_TcpSequenceNum_get( 31803 int unit, 31804 bcm_field_entry_t entry, 31805 uint32 data, 31806 uint32 mask); 31807 31808 /* Get match criteria for UDP Length. */ 31809 extern int bcm_field_qualify_UdpLength_get( 31810 int unit, 31811 bcm_field_entry_t entry, 31812 uint16 data, 31813 uint16 mask); 31814 31815 /* Get match criteria for PTP Rserved1. */ 31816 extern int bcm_field_qualify_PtpReserved1_get( 31817 int unit, 31818 bcm_field_entry_t entry, 31819 uint8 data, 31820 uint8 mask); 31821 31822 /* Get match criteria for PTP Transport Spec. */ 31823 extern int bcm_field_qualify_PtpTransportSpec_get( 31824 int unit, 31825 bcm_field_entry_t entry, 31826 uint8 data, 31827 uint8 mask); 31828 31829 /* List the actions supported for a given stage */ 31830 extern int bcm_field_stage_aset_get( 31831 int unit, 31832 bcm_field_stage_t stage, 31833 bcm_field_aset_t *aset); 31834 31835 /* 31836 * The API retrieves the allocated container ID information in 31837 * cont_id_arr and the size of each container in cont_sz_arr for a given 31838 * action, the actual_ct is the valid size of the array which holds the 31839 * container ID and the size. If max_ct is zero, 31840 * bcm_field_action_cont_info_get will ignore the pointers for 31841 * cont_id_arr, cont_sz_arr; instead it will count the number of elements 31842 * needed to return the current full state and write that at actual_ct 31843 * and also returns the action size. 31844 */ 31845 extern int bcm_field_action_cont_info_get( 31846 int unit, 31847 bcm_field_stage_t stage, 31848 bcm_field_action_t action, 31849 uint8 max_ct, 31850 uint16 *cont_id_arr, 31851 uint16 *cont_sz_arr, 31852 uint8 *actual_ct, 31853 uint8 *action_size); 31854 31855 /* 31856 * To qualify on Loopback header drop indicator for IFA switch probe 31857 * copy. 31858 */ 31859 extern int bcm_field_qualify_LoopbackIfaSwitchCopyDrop( 31860 int unit, 31861 bcm_field_entry_t entry, 31862 uint8 data, 31863 uint8 mask); 31864 31865 /* 31866 * To get qualified inputs on Loopback header drop indicator for IFA 31867 * switch probe copy. 31868 */ 31869 extern int bcm_field_qualify_LoopbackIfaSwitchCopyDrop_get( 31870 int unit, 31871 bcm_field_entry_t entry, 31872 uint8 *data, 31873 uint8 *mask); 31874 31875 /* To qualify on the PDELAY_REQ message. */ 31876 extern int bcm_field_qualify_PdelayReq( 31877 int unit, 31878 bcm_field_entry_t entry, 31879 uint8 data, 31880 uint8 mask); 31881 31882 /* To get qualified inputs on the PDELAY_REQ. */ 31883 extern int bcm_field_qualify_PdelayReq_get( 31884 int unit, 31885 bcm_field_entry_t entry, 31886 uint8 *data, 31887 uint8 *mask); 31888 31889 #endif /* BCM_HIDE_DISPATCHABLE */ 31890 31891 /* 31892 * Structure holds a qualifier to be qualified upon as part of the entry 31893 * in the field flush machine TCAM. 31894 */ 31895 typedef struct bcm_field_flush_entry_qual_s { 31896 bcm_field_qualify_t type; /* Qualifier type. */ 31897 uint32 value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Set value for qualify (lookup key). */ 31898 uint32 mask[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Mask value that dictates which of the 31899 value bits are relevant for lookup. */ 31900 } bcm_field_flush_entry_qual_t; 31901 31902 /* 31903 * Structure holds an action to be qualified upon as part of the entry 31904 * in the field flush machine TCAM, or to be modified as part of the 31905 * payload. 31906 */ 31907 typedef struct bcm_field_flush_entry_action_s { 31908 bcm_field_action_t type; /* Action type. */ 31909 uint32 value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]; /* Set value for action (lookup key) or 31910 new value to be modified (in 31911 payload). */ 31912 uint32 mask[BCM_FIELD_ACTION_WIDTH_IN_WORDS]; /* Mask that dictates which of the value 31913 bits are relevant for lookup, (in 31914 key) or to be changed (in action). */ 31915 uint8 valid_bit_value; /* What value of valid bit to expect in 31916 key or written in payload (if there 31917 is a valid bit for the action). */ 31918 uint8 valid_bit_mask; /* Whether to qualify upon the valid bit 31919 value in key or whether to change the 31920 valid bit in payload (if there is a 31921 valid bit for the action). */ 31922 } bcm_field_flush_entry_action_t; 31923 31924 /* Structure holds flush profile information. */ 31925 typedef struct bcm_field_flush_profile_info_s { 31926 uint32 high_threshold_value; /* when age-counter is higher than this 31927 threshold, flow is considered as High 31928 Flow */ 31929 uint32 low_threshold_value; /* when age-counter is lower than this 31930 threshold, flow is considered as Low Flow */ 31931 uint32 increment_value; /* the age-counter increment value */ 31932 uint32 decrement_value; /* the age-counter decrement value */ 31933 uint32 maximal_value; /* the age-counter maximum value 31934 (age-counter upper limit value) */ 31935 uint32 out_value; /* the age-counter age-out value 31936 (age-counter value for deleting an entry 31937 from database) */ 31938 uint32 init_value; /* age-counter initial value for new entry */ 31939 } bcm_field_flush_profile_info_t; 31940 31941 /* Structure holds flush entry key to qualify upon. */ 31942 typedef struct bcm_field_flush_entry_key_s { 31943 int nof_entry_quals; /* Number of valid qualifiers in the 31944 flush rule Field entry. */ 31945 bcm_field_flush_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Entry qualifiers info including type, 31946 value, and mask, used to qualify upon 31947 what entry was hit. */ 31948 int nof_entry_actions; /* Number of valid actions in the flush 31949 rule Field entry. */ 31950 bcm_field_flush_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type, 31951 value, and mask, used to qualify upon 31952 what entry was hit. */ 31953 uint8 hit; /* the hit value. */ 31954 uint8 hit_mask; /* the mask to be applied on hit field. */ 31955 } bcm_field_flush_entry_key_t; 31956 31957 /* Structure holds flush action information. */ 31958 typedef struct bcm_field_flush_entry_payload_s { 31959 uint8 hit_clear_cmd; /* Clear hit bit of the entry. */ 31960 uint8 delete_cmd; /* Remove the entry. */ 31961 uint8 transplant_cmd; /* Edit the entry. */ 31962 int nof_entry_actions; /* Number of valid actions in the flush 31963 action Field entry. */ 31964 bcm_field_flush_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type, 31965 value to be changed (by mask). 31966 Relevant if transplant is true. */ 31967 } bcm_field_flush_entry_payload_t; 31968 31969 /* Structure holds flush entry information. */ 31970 typedef struct bcm_field_flush_entry_info_s { 31971 bcm_field_flush_entry_key_t key; /* Flush entry key to be compared by the 31972 TCAM. */ 31973 bcm_field_flush_entry_payload_t payload; /* Flush entry payload for actions to be 31974 performed, including changing the 31975 payload of the EXEM entry. */ 31976 } bcm_field_flush_entry_info_t; 31977 31978 #ifndef BCM_HIDE_DISPATCHABLE 31979 31980 /* 31981 * This function allocates a flush profile, sets it and installs it to 31982 * HW. 31983 */ 31984 extern int bcm_field_flush_profile_create( 31985 int unit, 31986 uint32 flags, 31987 bcm_field_flush_profile_info_t *flush_profile_info, 31988 uint32 *flush_profile_id); 31989 31990 /* Gets a flush profile information. */ 31991 extern int bcm_field_flush_profile_get( 31992 int unit, 31993 uint32 flags, 31994 uint32 flush_profile_id, 31995 bcm_field_flush_profile_info_t *flush_profile_info); 31996 31997 /* 31998 * This function de-allocates a flush profile and sets the HW back to 31999 * default values. 32000 */ 32001 extern int bcm_field_flush_profile_destroy( 32002 int unit, 32003 uint32 flags, 32004 uint32 flush_profile_id); 32005 32006 /* This function attaches a field-group to a flush profile. */ 32007 extern int bcm_field_flush_profile_attach( 32008 int unit, 32009 uint32 flags, 32010 bcm_field_group_t fg_id, 32011 uint32 flush_profile_id); 32012 32013 /* 32014 * This function creates, sets and installs to HW a single flush machine 32015 * entry (rule and action) for a specific field group. 32016 */ 32017 extern int bcm_field_flush_entry_add( 32018 int unit, 32019 uint32 flags, 32020 bcm_field_group_t fg_id, 32021 int entry_id, 32022 bcm_field_flush_entry_info_t *flush_entry_info); 32023 32024 /* 32025 * Gets the a single flush machine entry (rule and action) for a specific 32026 * field group. 32027 */ 32028 extern int bcm_field_flush_entry_get( 32029 int unit, 32030 uint32 flags, 32031 bcm_field_group_t fg_id, 32032 int entry_id, 32033 bcm_field_flush_entry_info_t *flush_entry_info); 32034 32035 /* 32036 * Clears a single flush machine entry (rule and action) for a specific 32037 * field group. 32038 */ 32039 extern int bcm_field_flush_entry_delete( 32040 int unit, 32041 uint32 flags, 32042 bcm_field_group_t fg_id, 32043 int entry_id); 32044 32045 #endif /* BCM_HIDE_DISPATCHABLE */ 32046 32047 /* Initialize the field flush entry structure. */ 32048 extern void bcm_field_flush_entry_info_t_init( 32049 bcm_field_flush_entry_info_t *flush_entry_info); 32050 32051 /* Initialize the field flush profile structure. */ 32052 extern void bcm_field_flush_profile_info_t_init( 32053 bcm_field_flush_profile_info_t *flush_profile_info); 32054 32055 #ifndef BCM_HIDE_DISPATCHABLE 32056 32057 /* Add match criteria for bcmFieldQualifyDstMultipathLevel1. */ 32058 extern int bcm_field_qualify_DstMultipathLevel1( 32059 int unit, 32060 bcm_field_entry_t entry, 32061 bcm_if_t data, 32062 bcm_if_t mask); 32063 32064 /* Get match criteria for Level 1 ECMP groups from a field entry. */ 32065 extern int bcm_field_qualify_DstMultipathLevel1_get( 32066 int unit, 32067 bcm_field_entry_t entry, 32068 bcm_if_t *data, 32069 bcm_if_t *mask); 32070 32071 /* Add match criteria for bcmFieldQualifyDstMultipathLevel2. */ 32072 extern int bcm_field_qualify_DstMultipathLevel2( 32073 int unit, 32074 bcm_field_entry_t entry, 32075 bcm_if_t data, 32076 bcm_if_t mask); 32077 32078 /* Get match criteria for Level 2 ECMP groups from a field entry. */ 32079 extern int bcm_field_qualify_DstMultipathLevel2_get( 32080 int unit, 32081 bcm_field_entry_t entry, 32082 bcm_if_t *data, 32083 bcm_if_t *mask); 32084 32085 /* Add match criteria for bcmFieldQualifyL2SrcMiscClassId. */ 32086 extern int bcm_field_qualify_L2SrcMiscClassId( 32087 int unit, 32088 bcm_field_entry_t entry, 32089 uint8 data, 32090 uint8 mask); 32091 32092 /* 32093 * Get match criteria for bcmFieldQualifyL2SrcMiscClassId from a field 32094 * entry. 32095 */ 32096 extern int bcm_field_qualify_L2SrcMiscClassId_get( 32097 int unit, 32098 bcm_field_entry_t entry, 32099 uint8 *data, 32100 uint8 *mask); 32101 32102 /* Add match criteria for bcmFieldQualifyL2DstMiscClassId. */ 32103 extern int bcm_field_qualify_L2DstMiscClassId( 32104 int unit, 32105 bcm_field_entry_t entry, 32106 uint8 data, 32107 uint8 mask); 32108 32109 /* 32110 * Get match criteria for bcmFieldQualifyL2DstMiscClassId from a field 32111 * entry. 32112 */ 32113 extern int bcm_field_qualify_L2DstMiscClassId_get( 32114 int unit, 32115 bcm_field_entry_t entry, 32116 uint8 *data, 32117 uint8 *mask); 32118 32119 /* Add match criteria for bcmFieldQualifyL3SrcMiscClassId. */ 32120 extern int bcm_field_qualify_L3SrcMiscClassId( 32121 int unit, 32122 bcm_field_entry_t entry, 32123 uint8 data, 32124 uint8 mask); 32125 32126 /* 32127 * Get match criteria for bcmFieldQualifyL3SrcMiscClassId from a field 32128 * entry. 32129 */ 32130 extern int bcm_field_qualify_L3SrcMiscClassId_get( 32131 int unit, 32132 bcm_field_entry_t entry, 32133 uint8 *data, 32134 uint8 *mask); 32135 32136 /* Add match criteria for bcmFieldQualifyL2DstMiscClassId. */ 32137 extern int bcm_field_qualify_L3DstMiscClassId( 32138 int unit, 32139 bcm_field_entry_t entry, 32140 uint8 data, 32141 uint8 mask); 32142 32143 /* 32144 * Get match criteria for bcmFieldQualifyL3DstMiscClassId from a field 32145 * entry. 32146 */ 32147 extern int bcm_field_qualify_L3DstMiscClassId_get( 32148 int unit, 32149 bcm_field_entry_t entry, 32150 uint8 *data, 32151 uint8 *mask); 32152 32153 /* Add match criteria for bcmFieldQualifyIpFragInfo. */ 32154 extern int bcm_field_qualify_IpFragInfo( 32155 int unit, 32156 bcm_field_entry_t entry, 32157 uint16 data, 32158 uint16 mask); 32159 32160 /* Get match criteria for bcmFieldQualifyIpFragInfo from a field entry. */ 32161 extern int bcm_field_qualify_IpFragInfo_get( 32162 int unit, 32163 bcm_field_entry_t entry, 32164 uint16 *data, 32165 uint16 *mask); 32166 32167 /* Add match criteria for bcmFieldQualifyRawResidenceTime. */ 32168 extern int bcm_field_qualify_RawResidenceTime( 32169 int unit, 32170 bcm_field_entry_t entry, 32171 uint32 data, 32172 uint32 mask); 32173 32174 /* 32175 * Get match criteria for bcmFieldQualifyRawResidenceTime from a field 32176 * entry. 32177 */ 32178 extern int bcm_field_qualify_RawResidenceTime_get( 32179 int unit, 32180 bcm_field_entry_t entry, 32181 uint32 *data, 32182 uint32 *mask); 32183 32184 /* bcm_field_qualify_InDscpExp */ 32185 extern int bcm_field_qualify_InDscpExp( 32186 int unit, 32187 bcm_field_entry_t entry, 32188 uint8 data, 32189 uint8 mask); 32190 32191 /* 32192 * Get match criteria for bcmFieldQualifyInDscpExp 32193 * qualifier from the field entry. 32194 */ 32195 extern int bcm_field_qualify_InDscpExp_get( 32196 int unit, 32197 bcm_field_entry_t entry, 32198 uint8 *data, 32199 uint8 *mask); 32200 32201 /* Fetch qset details for a mode and packet type. */ 32202 extern int bcm_field_group_mode_qset_get( 32203 int unit, 32204 bcm_field_group_mode_type_t mode_type, 32205 bcm_field_group_packet_type_t packet_type, 32206 bcm_field_qset_t *qset); 32207 32208 /* Add match criteria for bcmFieldQualifyIfaNextHdr. */ 32209 extern int bcm_field_qualify_IfaNextHdr( 32210 int unit, 32211 bcm_field_entry_t entry, 32212 uint8 data, 32213 uint8 mask); 32214 32215 /* Get match criteria for bcmFieldQualifyIfaNextHdr from a field entry. */ 32216 extern int bcm_field_qualify_IfaNextHdr_get( 32217 int unit, 32218 bcm_field_entry_t entry, 32219 uint8 *data, 32220 uint8 *mask); 32221 32222 /* Add match criteria for bcmFieldQualifyIfaVersion. */ 32223 extern int bcm_field_qualify_IfaVersion( 32224 int unit, 32225 bcm_field_entry_t entry, 32226 uint8 data, 32227 uint8 mask); 32228 32229 /* Get match criteria for bcmFieldQualifyIfaVersion from a field entry. */ 32230 extern int bcm_field_qualify_IfaVersion_get( 32231 int unit, 32232 bcm_field_entry_t entry, 32233 uint8 *data, 32234 uint8 *mask); 32235 32236 /* To qualify on opaque control id 1 from L2_IIF table. */ 32237 extern int bcm_field_qualify_IngressL2InterfaceOpaqueCtrlId1( 32238 int unit, 32239 bcm_field_entry_t entry, 32240 uint8 data, 32241 uint8 mask); 32242 32243 /* 32244 * Get value for bcmFieldQualifyIngressL2InterfaceOpaqueCtrlId1 32245 * qualifier from the field entry. 32246 */ 32247 extern int bcm_field_qualify_IngressL2InterfaceOpaqueCtrlId1_get( 32248 int unit, 32249 bcm_field_entry_t entry, 32250 uint8 *data, 32251 uint8 *mask); 32252 32253 /* To qualify on flex digest control id A from L2_IIF table. */ 32254 extern int bcm_field_qualify_IngressL2InterfaceFlexDigestCtrlIdA( 32255 int unit, 32256 bcm_field_entry_t entry, 32257 uint8 data, 32258 uint8 mask); 32259 32260 /* 32261 * Get value for bcmFieldQualifyIngressL2InterfaceFlexDigestCtrlIdA 32262 * qualifier from the field entry. 32263 */ 32264 extern int bcm_field_qualify_IngressL2InterfaceFlexDigestCtrlIdA_get( 32265 int unit, 32266 bcm_field_entry_t entry, 32267 uint8 *data, 32268 uint8 *mask); 32269 32270 /* To qualify on flex digest control id B from L2_IIF table. */ 32271 extern int bcm_field_qualify_IngressL2InterfaceFlexDigestCtrlIdB( 32272 int unit, 32273 bcm_field_entry_t entry, 32274 uint8 data, 32275 uint8 mask); 32276 32277 /* 32278 * Get value for bcmFieldQualifyIngressL2InterfaceFlexDigestCtrlIdB 32279 * qualifier from the field entry. 32280 */ 32281 extern int bcm_field_qualify_IngressL2InterfaceFlexDigestCtrlIdB_get( 32282 int unit, 32283 bcm_field_entry_t entry, 32284 uint8 *data, 32285 uint8 *mask); 32286 32287 /* To match on Forwarding packet resolution */ 32288 extern int bcm_field_qualify_ForwardingPacketRes( 32289 int unit, 32290 bcm_field_entry_t entry, 32291 uint32 data, 32292 uint32 mask); 32293 32294 /* 32295 * Get match criteria for bcmFieldQualifyForwardingPacketRes 32296 * qualifier from the field entry. 32297 */ 32298 extern int bcm_field_qualify_ForwardingPacketRes_get( 32299 int unit, 32300 bcm_field_entry_t entry, 32301 uint32 *data, 32302 uint32 *mask); 32303 32304 /* To qualify on EP NIH Header Opaque property value. */ 32305 extern int bcm_field_qualify_RecircleHdrOpaqueCtrlIdC( 32306 int unit, 32307 bcm_field_entry_t entry, 32308 int data, 32309 int mask); 32310 32311 /* 32312 * Get value for bcmFieldQualifyRecircleHdrOpaqueCtrlIdC 32313 * qualifier from the field entry. 32314 */ 32315 extern int bcm_field_qualify_RecircleHdrOpaqueCtrlIdC_get( 32316 int unit, 32317 bcm_field_entry_t entry, 32318 int *data, 32319 int *mask); 32320 32321 /* 32322 * Set match criteria for Mpls forwarding ControlWord 32323 * qualifier. 32324 */ 32325 extern int bcm_field_qualify_MplsForwardingControlWord( 32326 int unit, 32327 bcm_field_entry_t entry, 32328 uint32 data, 32329 uint32 mask); 32330 32331 /* 32332 * Get match criteria for Mpls Forwarding ControlWord 32333 * qualifier. 32334 */ 32335 extern int bcm_field_qualify_MplsForwardingControlWord_get( 32336 int unit, 32337 bcm_field_entry_t entry, 32338 uint32 *data, 32339 uint32 *mask); 32340 32341 #endif /* BCM_HIDE_DISPATCHABLE */ 32342 32343 /* bcm_field_mpls_ctrl_pkt_type_e */ 32344 typedef enum bcm_field_mpls_ctrl_pkt_type_e { 32345 bcmFieldMplsCtrlPktTypeNone = 0, /* MPLS Control packet type none. */ 32346 bcmFieldMplsCtrlPktTypePwVccv4 = 1, /* MPLS Control packet type 32347 PW_VCCV_TYPE_4. */ 32348 bcmFieldMplsCtrlPktTypeGAch = 2, /* MPLS Control packet type G_ACH. */ 32349 bcmFieldMplsCtrlPktTypeLastCount = 3 /* Always Last. Not a usable value. */ 32350 } bcm_field_mpls_ctrl_pkt_type_t; 32351 32352 #define BCM_FIELD_MPLS_CTRL_PKT_TYPE \ 32353 { \ 32354 "None", \ 32355 "PwVccv4", \ 32356 "GAch" \ 32357 } 32358 32359 #ifndef BCM_HIDE_DISPATCHABLE 32360 32361 /* 32362 * API to add MPLS control packet type to a field entry for 32363 * qualification. 32364 */ 32365 extern int bcm_field_qualify_MplsCtrlPktType( 32366 int unit, 32367 bcm_field_entry_t entry, 32368 bcm_field_mpls_ctrl_pkt_type_t type); 32369 32370 /* API to retrieve MPLS control packet type associated to a field entry. */ 32371 extern int bcm_field_qualify_MplsCtrlPktType_get( 32372 int unit, 32373 bcm_field_entry_t entry, 32374 bcm_field_mpls_ctrl_pkt_type_t *type); 32375 32376 #endif /* BCM_HIDE_DISPATCHABLE */ 32377 32378 #endif /* __BCM_FIELD_H__ */