field.h (916758B)
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 * DO NOT EDIT THIS FILE! 9 * This file is auto-generated. 10 * Edits to this file will be lost when it is regenerated. 11 */ 12 13 #ifndef __BCM_FIELD_H__ 14 #define __BCM_FIELD_H__ 15 16 #include <bcm/types.h> 17 #include <shared/field.h> 18 #include <bcm/policer.h> 19 #include <bcm/port.h> 20 #include <bcm/rx.h> 21 #include <bcm/flowtracker.h> 22 23 /* Entry priority. */ 24 #define BCM_FIELD_ENTRY_PRIO_HIGHEST (0x7fffffff) /* Highest possible entry 25 priority in a group. */ 26 #define BCM_FIELD_ENTRY_PRIO_DONT_CARE BCM_FIELD_ENTRY_PRIO_LOWEST /* Default entry priority. */ 27 #define BCM_FIELD_ENTRY_PRIO_LOWEST (0) /* Lowest possible entry 28 priority in a group. */ 29 30 /* Macros for Replace L2 Field Actions */ 31 #define BCM_FIELD_REPLACE_VLAN_PRIORITY 0 /* Replace vlan priority 32 with user provided 33 Priority without CFI 34 bit being set. User 35 provides Vlan priority 36 value (0-7) as an 37 input through param1 38 and CFI (bit being 39 unset) bit is appended 40 internally by FP 41 action handler. */ 42 #define BCM_FIELD_REPLACE_VLAN_PRIORITY_USE_INTERNAL_CFI 1 /* Replace vlan priority 43 with user provided 44 priority with CFI bit 45 set. User provides 46 Vlan priority value 47 (0-7) as an input 48 through param1 and CFI 49 bit ((bit being set) 50 is appended internally 51 by FP action handler. */ 52 #define BCM_FIELD_REPLACE_VLAN_PRIORITY_FROM_INT_PRIO_AND_CNG 2 /* Replace Vlan priority 53 mapped from internal 54 priority and CNG 55 derived for a packet. 56 Param1 is not 57 applicable to this 58 type. */ 59 60 #define BCM_FIELD_ENTRY_PRIO_DEFAULT BCM_FIELD_ENTRY_PRIO_LOWEST /* Default priority assigned 61 to new entries */ 62 63 #define BCM_FIELD_MAX_NAME_LEN 100 /* Maximum length for a name */ 64 65 #define BCM_FIELD_EXTRACTION_FLAG_CONSTANT (0x00000001) /* Indicates constant 66 value will be used 67 instead of qualifier 68 extraction */ 69 #define BCM_FIELD_EXTRACTION_FLAG_DATA_FIELD (0x00000002) /* Indicates qualifier 70 specified is data 71 field ID instead of 72 bcmFieldQualify* */ 73 74 #define BCM_FIELD_ENTRY_INVALID (-1) /* Indicates invalid and/or free 75 entry */ 76 77 /* Macros for field entry copy */ 78 #define BCM_FIELD_ENTRY_COPY_WITHOUT_STATS (1 << 0) /* Avoid copying stats 79 during entry copy */ 80 81 /* Macros for field contol bcmFieldControlGbpSrcMacMcastBitSet */ 82 #define BCM_FIELD_GBP_SRC_ID_NEQ_DST_ID (0x0) /* Applies this control only 83 when GBP Source ID not 84 equals to GBP Destination 85 ID (GBP_SID!=GBP_DID) */ 86 #define BCM_FIELD_GBP_SRC_ID_EQ_DST_ID (0x1) /* Applies this control only 87 when GBP Source ID equals 88 to GBP Destination ID 89 (GBP_SID==GBP_DID) */ 90 91 /* Macros for field stage slice info retrieval */ 92 #define BCM_FIELD_SLICE_ALLOCATED (1 << 0) /* Specify whether the 93 slice is allocated to 94 any group 0 if not 95 allocated. 1 if 96 allocated */ 97 #define BCM_FIELD_SLICE_MODE_SINGLE (1 << 1) /* Slice mode is single 98 wide */ 99 #define BCM_FIELD_SLICE_MODE_DOUBLE (1 << 2) /* Slice mode is double 100 wide */ 101 #define BCM_FIELD_SLICE_MODE_TRIPLE (1 << 3) /* Slice mode is triple 102 wide */ 103 #define BCM_FIELD_SLICE_MODE_INTRADOUBLE (1 << 4) /* Slice mode is intra 104 slice double wide */ 105 #define BCM_FIELD_SLICE_PART_PRIMARY (1 << 5) /* Slice is the primary 106 part */ 107 #define BCM_FIELD_SLICE_PART_SECONDARY (1 << 6) /* Slice is the secondary 108 part */ 109 #define BCM_FIELD_SLICE_PART_TERTIARY (1 << 7) /* Slice is the tertiary 110 part */ 111 #define BCM_FIELD_SLICE_PART_PRIMARY_EXPANDED (1 << 8) /* Slice is auto expanded 112 primary part */ 113 #define BCM_FIELD_SLICE_PART_SECONDARY_EXPANDED (1 << 9) /* Slice is auto expanded 114 secondary part */ 115 #define BCM_FIELD_SLICE_PART_TERTIARY_EXPANDED (1 << 10) /* Slice is auto expanded 116 tertiary part */ 117 #define BCM_FIELD_SLICE_PART_INTRADOUBLE_EXPANDED (1 << 11) /* Slice is auto expanded 118 intra slice double 119 wide part */ 120 #define BCM_FIELD_SLICE_MW_SUPPORTED (1 << 12) /* Slice supports multi 121 wide groups */ 122 #define BCM_FIELD_MAX_GROUPS_PER_SLICE 32 /* Maximum number of 123 groups allowed in a 124 slice */ 125 #define BCM_FIELD_STAGE_MAX_SLICES 18 /* Maximum number of 126 slices per stage */ 127 128 /* This structure holds details of entries in a slice */ 129 typedef struct bcm_field_stage_slice_info_s { 130 int total_entries; /* Total number of entries available in 131 given slice */ 132 int free_entries; /* Total number of free entries 133 available in given slice */ 134 int flags; /* Flags to identify the properties of 135 slice */ 136 int slice_gid_ct; /* Number of groups sharing the given 137 slice */ 138 bcm_field_group_t slice_gid_list[BCM_FIELD_MAX_GROUPS_PER_SLICE]; /* The groupIds associated with the 139 slice */ 140 } bcm_field_stage_slice_info_t; 141 142 /* bcm_field_stat_action_e */ 143 typedef enum bcm_field_stat_action_e { 144 bcmFieldStatActionNone = 0, /* No Operation. */ 145 bcmFieldStatActionIncrement = 1, /* Increment the stat. */ 146 bcmFieldStatActionIncrementCancel = 2, /* Do not increment the stat. */ 147 bcmFieldStatActionSample = 3, /* Sample the stat value to the packet. */ 148 bcmFieldStatActionCount = 4 /* Always Last. Not a usable value. */ 149 } bcm_field_stat_action_t; 150 151 #define BCM_FIELD_STAT_ACTION \ 152 { \ 153 "None", \ 154 "Increment", \ 155 "IncrementCancel", \ 156 "Sample" \ 157 } 158 159 /* Oam Stat Action Structure. */ 160 typedef struct bcm_field_oam_stat_action_s { 161 bcm_stat_object_t stat_object; /* Flex Stat Object */ 162 uint32 stat_mode_id; /* Flex Stat Mode */ 163 bcm_field_stat_action_t action; /* Field Stat Action */ 164 } bcm_field_oam_stat_action_t; 165 166 /* Packet content (data) qualification object flags. */ 167 #define BCM_FIELD_DATA_QUALIFIER_WITH_ID (1 << 0) 168 #define BCM_FIELD_DATA_QUALIFIER_REPLACE (1 << 1) 169 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_IP4_OPTIONS_ADJUST (1 << 2) 170 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_IP6_EXTENSIONS_ADJUST (1 << 3) 171 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_GRE_OPTIONS_ADJUST (1 << 4) 172 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_NEGATIVE (1 << 5) /* The 'offset' field is 173 interpretated as 174 negative */ 175 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_BIT_RES (1 << 6) /* The 'offset' field is 176 computed with a bit 177 resolution */ 178 #define BCM_FIELD_DATA_QUALIFIER_LENGTH_BIT_RES (1 << 7) /* The 'length' field is 179 computed with a bit 180 resolution */ 181 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_PREDEFINED (1 << 8) /* The 'qualifier' field 182 is used instead of 183 'offset_base' */ 184 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_FLEX_HASH (1 << 9) /* The 'qualifier' field 185 is used to create flex 186 hash entry' */ 187 #define BCM_FIELD_DATA_QUALIFIER_STAGE_LOOKUP (1 << 10) /* The 'qualifier' field 188 is used to create for 189 Lookup Stage */ 190 #define BCM_FIELD_DATA_QUALIFIER_TYPE_L2 (1 << 11) /* The 'qualifier' type 191 will be L2 */ 192 #define BCM_FIELD_DATA_QUALIFIER_TYPE_IPV4 (1 << 12) /* The 'qualifier' type 193 will be ipv4 */ 194 #define BCM_FIELD_DATA_QUALIFIER_TYPE_IPV6 (1 << 13) /* The 'qualifier' type 195 will be ipv6 */ 196 #define BCM_FIELD_DATA_QUALIFIER_TYPE_MPLS (1 << 14) /* The 'qualifier' type 197 will be mpls */ 198 #define BCM_FIELD_DATA_QUALIFIER_BIT_OFFSET_DNX_ORDER (1 << 15) /* Control the qualifier 199 bit numbering */ 200 201 /* Packet content (data) qualification vlan tag format. */ 202 #define BCM_FIELD_DATA_FORMAT_VLAN_TAG_ANY (0xffff) 203 #define BCM_FIELD_DATA_FORMAT_VLAN_NO_TAG (1 << 0) 204 #define BCM_FIELD_DATA_FORMAT_VLAN_SINGLE_TAGGED (1 << 1) 205 #define BCM_FIELD_DATA_FORMAT_VLAN_DOUBLE_TAGGED (1 << 2) 206 207 /* Packet content (data) qualification L2 header format. */ 208 #define BCM_FIELD_DATA_FORMAT_L2_ANY (0xffff) 209 #define BCM_FIELD_DATA_FORMAT_L2_ETH_II (1 << 0) 210 #define BCM_FIELD_DATA_FORMAT_L2_SNAP (1 << 1) 211 #define BCM_FIELD_DATA_FORMAT_L2_LLC (1 << 2) 212 213 /* Packet content (data) qualification L3 header version. */ 214 #define BCM_FIELD_DATA_FORMAT_IP_ANY (0xffff) 215 #define BCM_FIELD_DATA_FORMAT_IP_NONE (1 << 0) 216 #define BCM_FIELD_DATA_FORMAT_IP4 (1 << 1) 217 #define BCM_FIELD_DATA_FORMAT_IP6 (1 << 2) 218 #define BCM_FIELD_DATA_FORMAT_IP4_WITH_OPTIONS (1 << 3) 219 #define BCM_FIELD_DATA_FORMAT_IP6_WITH_OPTIONS (1 << 4) 220 221 /* Packet content (data) qualification Mpls encapsulation. */ 222 #define BCM_FIELD_DATA_FORMAT_MPLS_ANY (0xffff) 223 #define BCM_FIELD_DATA_FORMAT_MPLS_ONE_LABEL (1 << 0) 224 #define BCM_FIELD_DATA_FORMAT_MPLS_TWO_LABELS (1 << 1) 225 #define BCM_FIELD_DATA_FORMAT_MPLS_THREE_LABELS (1 << 2) 226 #define BCM_FIELD_DATA_FORMAT_MPLS_FOUR_LABELS (1 << 3) 227 #define BCM_FIELD_DATA_FORMAT_MPLS_FIVE_LABELS (1 << 4) 228 229 /* Packet content (data) qualification FCoE encapsulation. */ 230 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ANY (0xffff) 231 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN (1 << 0) /* Standard fibre-channel 232 header */ 233 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ENCAP (1 << 1) /* Encapsulation header */ 234 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_VIRTUAL (1 << 2) /* Virtual fabric tag 235 (VFT) header */ 236 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ROUTED (1 << 3) /* Interfabric routing 237 (IFR) header */ 238 239 /* Packet content (data) qualification Tunnel. */ 240 #define BCM_FIELD_DATA_FORMAT_TUNNEL_ANY (0xffff) 241 #define BCM_FIELD_DATA_FORMAT_TUNNEL_NONE (1 << 0) 242 #define BCM_FIELD_DATA_FORMAT_TUNNEL_IP_IN_IP (1 << 1) 243 #define BCM_FIELD_DATA_FORMAT_TUNNEL_GRE (1 << 2) 244 #define BCM_FIELD_DATA_FORMAT_TUNNEL_MPLS (1 << 3) 245 #define BCM_FIELD_DATA_FORMAT_TUNNEL_FCOE (1 << 4) /* Fibre Channel over 246 Ethernet (FCoE), 247 ethertype 0x8906 */ 248 #define BCM_FIELD_DATA_FORMAT_TUNNEL_FCOE_INIT (1 << 5) /* FCoE initialization 249 protocol (FIP), 250 ethertype 0x8914 */ 251 252 /* Packet content (data) qualification Flags. */ 253 #define BCM_FIELD_DATA_FORMAT_F_MASK (0x3ff) 254 #define BCM_FIELD_DATA_FORMAT_F_ENCAP_STACK (1 << 0) /* Indicates incoming 255 packet is a Higig 256 Packet */ 257 #define BCM_FIELD_DATA_FORMAT_F_NO_ENCAP_STACK (1 << 1) /* Indicates incoming 258 packet is not a Higig 259 Packet */ 260 #define BCM_FIELD_DATA_FORMAT_F_VNTAG (1 << 2) /* Indicates incoming 261 packet is a VNTAG 262 Packet */ 263 #define BCM_FIELD_DATA_FORMAT_F_NO_VNTAG (1 << 3) /* Indicates incoming 264 packet is not a VNTAG 265 Packet */ 266 #define BCM_FIELD_DATA_FORMAT_F_CNTAG (1 << 4) /* Indicates incoming 267 packet is a CNTAG 268 Packet */ 269 #define BCM_FIELD_DATA_FORMAT_F_NO_CNTAG (1 << 5) /* Indicates incoming 270 packet is not a CNTAG 271 Packet */ 272 #define BCM_FIELD_DATA_FORMAT_F_ETAG (1 << 6) /* Indicates incoming 273 packet is a ETAG 274 Packet */ 275 #define BCM_FIELD_DATA_FORMAT_F_NO_ETAG (1 << 7) /* Indicates incoming 276 packet is not a ETAG 277 Packet */ 278 #define BCM_FIELD_DATA_FORMAT_F_ICNM (1 << 8) /* Indicates incoming 279 packet is a ICNM 280 Packet */ 281 #define BCM_FIELD_DATA_FORMAT_F_NO_ICNM (1 << 9) /* Indicates incoming 282 packet is not a ICNM 283 Packet */ 284 285 /* bcm_field_data_offset_base_e */ 286 typedef enum bcm_field_data_offset_base_e { 287 bcmFieldDataOffsetBasePacketStart = 0, /* Offset provided from the beginning of 288 a packet. */ 289 bcmFieldDataOffsetBaseOuterL3Header = 1, /* Offset provided from the beginning of 290 outer L3 header. */ 291 bcmFieldDataOffsetBaseInnerL3Header = 2, /* Offset provided from the beginning of 292 inner L3 header. */ 293 bcmFieldDataOffsetBaseOuterL4Header = 3, /* Offset provided from the beginning of 294 outer L4 header.. */ 295 bcmFieldDataOffsetBaseInnerL4Header = 4, /* Offset provided from the beginning of 296 inner L4 header. */ 297 bcmFieldDataOffsetBaseHigigHeader = 5, /* Offset provided from the beginning of 298 Higig header. */ 299 bcmFieldDataOffsetBaseHigig2Header = 6, /* Offset provided from the beginning of 300 Higig header. */ 301 bcmFieldDataOffsetBaseFcoeHeader = 7, /* Offset provided from the beginning of 302 FCoE header. */ 303 bcmFieldDataOffsetBaseDeprecated8 = 8, /* Deprecated 8. */ 304 bcmFieldDataOffsetBaseL2Header = 9, /* Ethernet header. */ 305 bcmFieldDataOffsetBaseFirstHeader = 10, /* First header after Ethernet. */ 306 bcmFieldDataOffsetBaseSecondHeader = 11, /* Second header after Ethernet. */ 307 bcmFieldDataOffsetBaseThirdHeader = 12, /* Third header after Ethernet. */ 308 bcmFieldDataOffsetBaseMplsLabel1Header = 13, /* Offset provided from the beginning of 309 the Mpls Label 1 header. */ 310 bcmFieldDataOffsetBaseMplsLabel2Header = 14, /* Offset provided from the beginning of 311 the Mpls Label 2 header. */ 312 bcmFieldDataOffsetBaseMplsLabel3Header = 15, /* Offset provided from the beginning of 313 the Mpls Label 3 header. */ 314 bcmFieldDataOffsetBaseInnerL2Header = 16, /* Offset provided from the beginning of 315 inner L2 header. */ 316 bcmFieldDataOffsetBaseTrillHeader = 17, /* Offset provided from the beginning of 317 Trill header. */ 318 bcmFieldDataOffsetBaseFourthHeader = 18, /* Fourth header after Ethernet. */ 319 bcmFieldDataOffsetBaseForwardingHeader = 19, /* Header used for the forwarding. */ 320 bcmFieldDataOffsetBaseNextForwardingHeader = 20, /* First header after the forwarding 321 header. */ 322 bcmFieldDataOffsetBaseTrillPayload = 21, /* Offset provided from the beginning of 323 Trill Payload. */ 324 bcmFieldDataOffsetBaseCount = 22 /* Always Last. Not a usable value. */ 325 } bcm_field_data_offset_base_t; 326 327 #define BCM_FIELD_DATA_OFFSET_BASE \ 328 { \ 329 "bcmFieldDataOffsetBasePacketStart", \ 330 "bcmFieldDataOffsetBaseOuterL3Header", \ 331 "bcmFieldDataOffsetBaseInnerL3Header", \ 332 "bcmFieldDataOffsetBaseOuterL4Header", \ 333 "bcmFieldDataOffsetBaseInnerL4Header", \ 334 "bcmFieldDataOffsetBaseHigigHeader", \ 335 "bcmFieldDataOffsetBaseHigig2Header", \ 336 "bcmFieldDataOffsetBaseFcoeHeader", \ 337 "bcmFieldDataOffsetBaseDeprecated8", \ 338 "bcmFieldDataOffsetBaseL2Header", \ 339 "bcmFieldDataOffsetBaseFirstHeader", \ 340 "bcmFieldDataOffsetBaseSecondHeader", \ 341 "bcmFieldDataOffsetBaseThirdHeader", \ 342 "bcmFieldDataOffsetBaseMplsLabel1Header", \ 343 "bcmFieldDataOffsetBaseMplsLabel2Header", \ 344 "bcmFieldDataOffsetBaseMplsLabel3Header", \ 345 "bcmFieldDataOffsetBaseInnerL2Header", \ 346 "bcmFieldDataOffsetBaseTrillHeader", \ 347 "bcmFieldDataOffsetBaseFourthHeader", \ 348 "bcmFieldDataOffsetBaseForwardingHeader", \ 349 "bcmFieldDataOffsetBaseNextForwardingHeader", \ 350 "bcmFieldDataOffsetBaseTrillPayload" \ 351 } 352 353 /* Ethertype based DATA packet qualifier structure. */ 354 typedef struct bcm_field_data_ethertype_s { 355 int relative_offset; /* Packet byte offset relative to qualifier 356 byte offset. */ 357 bcm_port_ethertype_t ethertype; /* Ether type. */ 358 uint16 l2; /* Packet l2 format. 359 (FIELD_DATA_FORMAT_L2_XXX) */ 360 uint16 vlan_tag; /* vlan_tag_format. 361 (FIELD_DATA_FORMAT_VLAN_XXX) */ 362 uint32 flags; /* Flags. (FIELD_DATA_FORMAT_F_XXX) */ 363 } bcm_field_data_ethertype_t; 364 365 /* Ip protocol/Next header based DATA packet qualifier structure. */ 366 typedef struct bcm_field_data_ip_protocol_s { 367 int relative_offset; /* Packet byte offset relative to qualifier byte 368 offset. */ 369 uint16 flags; /* Packet ip header version. 370 (FIELD_DATA_FORMAT_IP_XXX) */ 371 uint8 ip; /* Ip protocol id. */ 372 uint16 l2; /* Packet l2 format. (FIELD_DATA_FORMAT_L2_XXX) */ 373 uint16 vlan_tag; /* vlan_tag_format. (FIELD_DATA_FORMAT_VLAN_XXX) */ 374 } bcm_field_data_ip_protocol_t; 375 376 /* Packet format based DATA qualifier specification structure. */ 377 typedef struct bcm_field_data_packet_format_s { 378 int relative_offset; /* Packet byte offset relative to qualifier byte 379 offset. */ 380 uint16 l2; /* Packet l2 format. (FIELD_DATA_FORMAT_L2_XXX) */ 381 uint16 vlan_tag; /* vlan_tag_format. (FIELD_DATA_FORMAT_VLAN_XXX) */ 382 uint16 outer_ip; /* Outer IP header 383 version.(FIELD_DATA_FORMAT_IP_XXX) */ 384 uint16 inner_ip; /* Inner IP header 385 version.(FIELD_DATA_FORMAT_IP_XXX) */ 386 uint16 tunnel; /* Tunnel.(FIELD_DATA_FORMAT_TUNNEL_XXX) */ 387 uint16 mpls; /* Mpls labels.(FIELD_DATA_FORMAT_MPLS_XXX) */ 388 uint16 fibre_chan_outer; /* Header 389 type.(FIELD_DATA_FORMAT_FIBRE_CHAN_XXX) */ 390 uint16 fibre_chan_inner; /* Header 391 type.(FIELD_DATA_FORMAT_FIBRE_CHAN_XXX) */ 392 uint32 flags; /* Flags. (FIELD_DATA_FORMAT_F_XXX) */ 393 } bcm_field_data_packet_format_t; 394 395 /* Packet colors. */ 396 #define BCM_FIELD_COLOR_PRESERVE 0 397 #define BCM_FIELD_COLOR_GREEN 1 398 #define BCM_FIELD_COLOR_YELLOW 2 399 #define BCM_FIELD_COLOR_RED 3 400 #define BCM_FIELD_COLOR_BLACK 4 401 402 /* IPv4 Flags from RFC-791 (for bcm_field_qualify_IpFlags). */ 403 #define BCM_FIELD_IPFLAGS_MF 0x1 /* More Fragments. */ 404 #define BCM_FIELD_IPFLAGS_DF 0x2 /* Don't Fragment. */ 405 #define BCM_FIELD_IPFLAGS_RF 0x4 /* Reserved. */ 406 #define BCM_FIELD_IPFLAGS_MASK 0x7 /* All bits. */ 407 408 /* TCP Control Flags from RFC-793 (for bcm_field_qualify_TcpControl). */ 409 #define BCM_FIELD_TCPCONTROL_FIN 0x01 /* No more data. */ 410 #define BCM_FIELD_TCPCONTROL_SYN 0x02 /* Sync seq numbers. */ 411 #define BCM_FIELD_TCPCONTROL_RST 0x04 /* Reset connection. */ 412 #define BCM_FIELD_TCPCONTROL_PSH 0x08 /* Push. */ 413 #define BCM_FIELD_TCPCONTROL_ACK 0x10 /* Ack field valid. */ 414 #define BCM_FIELD_TCPCONTROL_URG 0x20 /* Urgent field valid. */ 415 #define BCM_FIELD_TCPCONTROL_R40 0x40 /* Reserved. */ 416 #define BCM_FIELD_TCPCONTROL_R80 0x80 /* Reserved. */ 417 #define BCM_FIELD_TCPCONTROL_MASK 0x3f /* All non-reserved bits. */ 418 419 /* IP Info (for bcm_field_qualify_IpInfo). */ 420 #define BCM_FIELD_IP_HDR_OFFSET_ZERO 0x0001 421 #define BCM_FIELD_IP_HDR_FLAGS_MF 0x0002 422 #define BCM_FIELD_IP_CHECKSUM_OK 0x0004 423 #define BCM_FIELD_IP_VERSION_ERR 0x0008 /* Error in the IP 'version' 424 field value */ 425 426 /* 427 * Field Qualifier VlanFormat (for bcm_field_qualify_VlanFormat). 428 * Used to qualify packets based on vlan tag format. 429 */ 430 #define BCM_FIELD_VLAN_FORMAT_UNTAGGED 0x0 /* Untagged packet 431 present. */ 432 #define BCM_FIELD_VLAN_FORMAT_OUTER_TAGGED 0x1 /* Outer tag present. */ 433 #define BCM_FIELD_VLAN_FORMAT_INNER_TAGGED 0x2 /* Inner tag present. */ 434 #define BCM_FIELD_VLAN_FORMAT_OUTER_TAGGED_VID_ZERO 0x4 /* Outer tag present and 435 vlan id is zero. */ 436 #define BCM_FIELD_VLAN_FORMAT_INNER_TAGGED_VID_ZERO 0x8 /* Inner tag present and 437 vlan id is zero. */ 438 439 /* Packet Resolution Values (for bcm_field_qualify_PacketRes). */ 440 #define BCM_FIELD_PKT_RES_UNKNOWN 0x0 /* No resolution. */ 441 #define BCM_FIELD_PKT_RES_CONTROL 0x1 /* Ethernet control 442 (8808). */ 443 #define BCM_FIELD_PKT_RES_BPDU 0x2 /* L2 cache BPDU bit. */ 444 #define BCM_FIELD_PKT_RES_L2BC 0x3 /* L2 broadcast. */ 445 #define BCM_FIELD_PKT_RES_L2UC 0x4 /* L2 unicast. */ 446 #define BCM_FIELD_PKT_RES_L2UNKNOWN 0x5 /* Unknown L2 dest (DLF). */ 447 #define BCM_FIELD_PKT_RES_L3MCUNKNOWN 0x6 /* Unknown L3 multicast. */ 448 #define BCM_FIELD_PKT_RES_L3MCKNOWN 0x7 /* Known L3 multicast. */ 449 #define BCM_FIELD_PKT_RES_L2MCKNOWN 0x8 /* Known L2 multicast. */ 450 #define BCM_FIELD_PKT_RES_L2MCUNKNOWN 0x9 /* Unknown L2 multicast. */ 451 #define BCM_FIELD_PKT_RES_L3UCKNOWN 0xa /* Known L3 unicast. */ 452 #define BCM_FIELD_PKT_RES_L3UCUNKNOWN 0xb /* Unknown L3 unicast. */ 453 #define BCM_FIELD_PKT_RES_MPLSKNOWN 0xc /* Known MPLS packet . */ 454 #define BCM_FIELD_PKT_RES_MPLSL3KNOWN 0xd /* Known MPLS L3 packet. */ 455 #define BCM_FIELD_PKT_RES_MPLSL2KNOWN 0xe /* Known MPLS L2 packet. */ 456 #define BCM_FIELD_PKT_RES_MPLSUNKNOWN 0xf /* Unknown MPLS packet . */ 457 #define BCM_FIELD_PKT_RES_MIMKNOWN 0x10 /* Known MIM packet. */ 458 #define BCM_FIELD_PKT_RES_MIMUNKNOWN 0x11 /* Unknown MIM packet . */ 459 #define BCM_FIELD_PKT_RES_TRILLKNOWN 0x12 /* Known TRILL packet */ 460 #define BCM_FIELD_PKT_RES_TRILLUNKNOWN 0x13 /* Unknown TRILL packet */ 461 #define BCM_FIELD_PKT_RES_NIVKNOWN 0x14 /* Known NIV packet */ 462 #define BCM_FIELD_PKT_RES_NIVUNKNOWN 0x15 /* Unknown NIV packet */ 463 #define BCM_FIELD_PKT_RES_OAM 0x16 /* Packet hit OAM CFM 464 LMEP */ 465 #define BCM_FIELD_PKT_RES_BFD 0x17 /* Packet hit BFD session */ 466 #define BCM_FIELD_PKT_RES_ICNM 0x18 /* Congestion 467 notification */ 468 #define BCM_FIELD_PKT_RES_IEEE1588 0x19 /* IEEE 1588 packet */ 469 #define BCM_FIELD_PKT_RES_L2GREKNOWN 0x1a /* Known L2 GRE packet */ 470 #define BCM_FIELD_PKT_RES_VXLANKNOWN 0x1b /* Known VxLan Packet */ 471 #define BCM_FIELD_PKT_RES_FCOEKNOWN 0x1c /* Known FCoE Packet */ 472 #define BCM_FIELD_PKT_RES_FCOEUNKNOWN 0x1d /* Unknown FCoE Packet */ 473 #define BCM_FIELD_PKT_RES_MPLSMCKNOWN 0x1e /* Known MPLS Multicast 474 packet */ 475 #define BCM_FIELD_PKT_RES_PIMBIDIRUNKNOWN 0x1f /* Unknown PIM-BIDIR 476 packet from DF */ 477 #define BCM_FIELD_PKT_RES_L2_ANY 0x20 /* To match any L2 478 packet. It combines 479 the resolution types 480 BCM_FIELD_PKT_RES_L2BC, 481 BCM_FIELD_PKT_RES_L2UC, 482 BCM_FIELD_PKT_RES_L2UNKNOWN, 483 BCM_FIELD_PKT_RES_L2MCKNOWN 484 and 485 BCM_FIELD_PKT_RES_L2MCUNKNOWN */ 486 #define BCM_FIELD_PKT_RES_L2MC_ANY 0x21 /* To match any L2 MC 487 packet. This options 488 is to combine the 489 resolution types 490 BCM_FIELD_PKT_RES_L2MCKNOW 491 and 492 BCM_FIELD_PKT_RES_L2MCUNKNOWN */ 493 #define BCM_FIELD_PKT_RES_TRILL_ANY 0x22 /* To match any Trill 494 packet. This option is 495 to combine the 496 resolution types 497 BCM_FIELD_PKT_RES_TRILLKNOWN 498 and 499 BCM_FIELD_PKT_RES_TRILLUNKNOWN */ 500 #define BCM_FIELD_PKT_RES_NIV_ANY 0x23 /* To match any NIV 501 packet. This option is 502 to combine resolution 503 types 504 BCM_FIELD_PKT_RES_NIVKNOWN 505 and 506 BCM_FIELD_PKT_RES_NIVUNKNOWN */ 507 #define BCM_FIELD_PKT_RES_MPLS_ANY 0x24 /* To match any FCOE 508 packet. This option is 509 to combine resolution 510 types 511 BCM_FIELD_PKT_RES_MPLSKNOWN, 512 BCM_FIELD_PKT_RES_MPLSL3KNOWN, 513 BCM_FIELD_PKT_RES_MPLSL2KNOWN, 514 BCM_FIELD_PKT_RES_MPLSUNKNOWN 515 and 516 BCM_FIELD_PKT_RES_MPLSMCKNOWN */ 517 #define BCM_FIELD_PKT_RES_MIM_ANY 0x25 /* To match any MIM 518 packet. This option is 519 to combine resolution 520 types 521 BCM_FIELD_PKT_RES_MIMKNOWN 522 and 523 BCM_FIELD_PKT_RES_MIMUNKNOWN */ 524 #define BCM_FIELD_PKT_RES_FCOE_ANY 0x26 /* To match any FCOE 525 packet. This option is 526 to combine resolution 527 types 528 BCM_FIELD_PKT_RES_FCOEKNOWN 529 and 530 BCM_FIELD_PKT_RES_FCOEUNKNOWN */ 531 #define BCM_FIELD_PKT_RES_L3_ANY 0x27 /* To match any L3 532 packet. This option is 533 to combine resolution 534 types 535 BCM_FIELD_PKT_RES_L3MCKNOWN, 536 BCM_FIELD_PKT_RES_L3MCUNKNOWN, 537 BCM_FIELD_PKT_RES_L3KNOWN 538 and 539 BCM_FIELD_PKT_RES_L3UNKNOWN */ 540 #define BCM_FIELD_PKT_RES_LAST (BCM_FIELD_PKT_RES_L3_ANY) /* Must be >= highest 541 valid 542 BCM_FIELD_PKT_RES_* */ 543 544 /* 545 * Vlan Translation Lookup status values (for 546 * bcm_field_qualify_VlanTranslationHit) 547 */ 548 #define BCM_FIELD_VXLT_LOOKUP_STATUS_NO_HIT 0x0 /* No Hit */ 549 #define BCM_FIELD_VXLT_LOOKUP_STATUS_HIT 0x1 /* Hit(First or Second 550 Hit) */ 551 #define BCM_FIELD_VXLT_LOOKUP_STATUS_FIRST_HIT 0x2 /* First Hit */ 552 #define BCM_FIELD_VXLT_LOOKUP_STATUS_SECOND_HIT 0x4 /* Second Hit */ 553 554 /* 555 * Mpls Forwarding Label action values (for 556 * bcm_field_qualify_MplsForwardingLabelAction) 557 */ 558 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_INVALID 0x0 /* Invalid */ 559 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_PHP 0x2 /* PHP */ 560 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_SWAP 0x3 /* SWAP the MPLS label */ 561 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP 0x4 /* POP the MPLS label. 562 This action is valid 563 for MPLS scenarios 564 which supports more 565 than 3 label lookups 566 through loopback. This 567 was added in TR3 which 568 supports upto 6 label 569 lookup. So 3 labels 570 can be POPed in first 571 pass and using this 572 action encoding in 573 IFP, we can catch such 574 packets. But for other 575 devices which supports 576 only 2 or 3 label 577 lookups, this encoding 578 is not valid. */ 579 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_L2_VPN 0x5 /* POP the MPLS label and 580 use L2 VPN */ 581 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_L3_VPN 0x6 /* POP the MPLS label and 582 use L3 VPN */ 583 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_ENTROPY 0x7 /* POP the MPLS label and 584 use Entropy */ 585 586 /* FibreChanZoneCheck values (for bcm_field_qualify_FibreChanZoneCheck) */ 587 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_NOT_DONE 0x0 /* Zone Check Did Not 588 Take Place */ 589 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_ALLOW 0x1 /* Allow + Hit */ 590 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_MISS 0x2 /* Miss */ 591 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_DENY 0x3 /* Deny + Hit */ 592 593 /* Module header opcodes (for bcm_field_qualify_MHOpcode). */ 594 #define BCM_FIELD_MHOPCODE_CONTROL 0 595 #define BCM_FIELD_MHOPCODE_UNICAST 1 596 #define BCM_FIELD_MHOPCODE_BROADCAST_DLF 2 597 #define BCM_FIELD_MHOPCODE_MULTICAST 3 598 #define BCM_FIELD_MHOPCODE_IPMULTICAST 4 599 600 /* User-defined field maximums. */ 601 #define BCM_FIELD_USER_MAX_UDF_NUM 1 /* UDF0 or UDF1. */ 602 #define BCM_FIELD_USER_MAX_USER_NUM 3 /* Valid range: 0..3 */ 603 #define BCM_FIELD_USER_NUM_UDFS 277 604 #define BCM_FIELD_USER_FIELD_SIZE 4 /* Bytes per user_num. */ 605 #define BCM_FIELD_USER_MAX_LENGTH (1 << 5) /* Number of bits. */ 606 607 /* Meter select parameters. */ 608 #define BCM_FIELD_METER_PEAK 1 609 #define BCM_FIELD_METER_COMMITTED 2 610 611 /* Metering modes for bcmFieldActionMeterConfig param0. */ 612 #define BCM_FIELD_METER_MODE_DEFAULT 0x0 613 #define BCM_FIELD_METER_MODE_FLOW 0x1 614 #define BCM_FIELD_METER_MODE_trTCM_COLOR_BLIND 0x2 615 #define BCM_FIELD_METER_MODE_trTCM_COLOR_AWARE 0x3 616 #define BCM_FIELD_METER_MODE_srTCM_COLOR_BLIND 0x6 617 #define BCM_FIELD_METER_MODE_srTCM_COLOR_AWARE 0x7 618 619 /* Policy options for bcmFieldActionPrioPktNew param1. */ 620 #define BCM_FIELD_SPCP_MARK_MAPPED 0x01 621 #define BCM_FIELD_SPCP_MARK_USE_INNER_PCP 0x02 622 #define BCM_FIELD_SPCP_MARK_USE_OUTER_PCP 0x04 623 #define BCM_FIELD_SPCP_MARK_USE_PORT_DEFAULT 0x08 624 #define BCM_FIELD_SPCP_MARK_MASK 0x0f 625 #define BCM_FIELD_CPCP_MARK_MAPPED 0x10 626 #define BCM_FIELD_CPCP_MARK_USE_INNER_PCP 0x20 627 #define BCM_FIELD_CPCP_MARK_USE_OUTER_PCP 0x40 628 #define BCM_FIELD_CPCP_MARK_USE_PORT_DEFAULT 0x80 629 #define BCM_FIELD_CPCP_MARK_MASK 0xf0 630 631 /* 632 * Policy options for bcmFieldActionInnerVlanNew and 633 * bcmFieldActionOuterVlanNew param1. 634 */ 635 #define BCM_FIELD_TAG_AS_RECEIVED 0x01 636 #define BCM_FIELD_TAG_AS_NORMALIZED 0x02 637 #define BCM_FIELD_TAG_COPY 0x04 638 #define BCM_FIELD_TAG_REMOVE 0x08 639 #define BCM_FIELD_TAG_REPLACE 0x10 640 641 /* 642 * Counter pair modes for bcmFieldActionUpdateCounter 643 * 644 * Specifies increment mode for upper (counter_num=1) and lower 645 * (counter_num=0) counter in the pair. For example: GREEN_YELLOW would 646 * increment the upper counter for green packets and the lower counter 647 * for yellow packets. 648 * 649 * BCM_FIELD_COUNTER_MODE_BYTES can be ORd with any of the other values 650 * to make the counter count bytes instead of packets. 651 */ 652 #define BCM_FIELD_COUNTER_MODE_NO_NO 0x0000 653 #define BCM_FIELD_COUNTER_MODE_NO_YES 0x0001 654 #define BCM_FIELD_COUNTER_MODE_YES_NO 0x0002 655 #define BCM_FIELD_COUNTER_MODE_RED_NOTRED 0x0003 656 #define BCM_FIELD_COUNTER_MODE_GREEN_NOTGREEN 0x0004 657 #define BCM_FIELD_COUNTER_MODE_GREEN_RED 0x0005 658 #define BCM_FIELD_COUNTER_MODE_GREEN_YELLOW 0x0006 659 #define BCM_FIELD_COUNTER_MODE_RED_YELLOW 0x0007 660 #define BCM_FIELD_COUNTER_MODE_BYTES_PACKETS 0x0008 /* Upper counter is 661 bytes; lower counter 662 is packets */ 663 #define BCM_FIELD_COUNTER_MODE_GREEN 0x0010 664 #define BCM_FIELD_COUNTER_MODE_YELLOW 0x0020 665 #define BCM_FIELD_COUNTER_MODE_RED 0x0040 666 #define BCM_FIELD_COUNTER_MODE_ALL 0x0070 667 #define BCM_FIELD_COUNTER_MODE_PACKETS 0x0000 668 #define BCM_FIELD_COUNTER_MODE_BYTES 0x0100 669 #define BCM_FIELD_COUNTER_MODE_DEFAULT BCM_FIELD_COUNTER_MODE_NO_YES 670 671 /* Redirect ECMP hash key selection. */ 672 #define BCM_FIELD_MULTIPATH_HASH_DISABLE 0x0 673 #define BCM_FIELD_MULTIPATH_HASH_DIP 0x1 674 #define BCM_FIELD_MULTIPATH_HASH_SIP 0x2 675 #define BCM_FIELD_MULTIPATH_HASH_SIP_DIP 0x3 676 #define BCM_FIELD_MULTIPATH_HASH_DST_SRC_L4_DIP_SIP 0x4 677 #define BCM_FIELD_MULTIPATH_HASH_SRC_DST_L4_SIP_DIP 0x5 678 #define BCM_FIELD_MULTIPATH_HASH_SRC_L4_SIP 0x6 679 #define BCM_FIELD_MULTIPATH_HASH_DST_L4_DIP 0x7 680 681 /* Filter types for bcmFieldActionFilters. */ 682 #define BCM_FIELD_FILTER_LAG 0x1 /* LAG Filter overrides the 683 rule */ 684 #define BCM_FIELD_FILTER_TAGGED 0x2 /* Tag Framing Filter 685 overrides the rule */ 686 #define BCM_FIELD_FILTER_PORT_MASK 0x4 /* Port Mask Filter overrides 687 the rule */ 688 #define BCM_FIELD_FILTER_STP 0x8 /* STP Filter overrides the 689 rule */ 690 #define BCM_FIELD_FILTER_EAP 0x10 /* EAP Filter overrides the 691 rule */ 692 #define BCM_FIELD_FILTER_INGRESS_VLAN 0x20 /* Ingress Vlan Filter 693 overrides the rule */ 694 #define BCM_FIELD_FILTER_EGRESS_VLAN 0x40 /* Egress Vlan Filter 695 overrides the rule */ 696 #define BCM_FIELD_FILTER_SA 0x80 /* Source address Filter 697 overrides the rule */ 698 #define BCM_FIELD_FILTER_SA_DISABLED 0x100 /* Disable SA filtering */ 699 #define BCM_FIELD_FILTER_BYPASS_ALL 0x200 /* Bypass all filtering */ 700 #define BCM_FIELD_FILTER_ALL 0x3ff 701 702 /* Policer use options for bcmFieldActionUsePolicerResult param0. */ 703 #define BCM_FIELD_USE_POLICER_RESULT_INGRESS 0x01 /* Use policer result on 704 ingress */ 705 #define BCM_FIELD_USE_POLICER_RESULT_EGRESS 0x02 /* Use policer result on 706 egress */ 707 708 /* 709 * Global policer selection flag. 710 * 711 * If policer ID passed to (bcm_field_entry_policer_attach) API 712 * corresponds to global meters, below flag can be used to configure 713 * highest priority to lookup table policer with respect to the priority 714 * of the policers in other tables. 715 */ 716 #define BCM_FIELD_POLICER_GLOBAL_METER_USE_STAGE_LOOKUP_ACTION 0x01 /* Use lookup stage 717 policer */ 718 719 /* Flags for bcm_field_qualify_HiGigDoNotFlags. */ 720 #define BCM_FIELD_HIGIG_DONOT_MODIFY 0x1 /* Packet should be sent to 721 the destination port 722 unmodified. This flag can 723 be used only for Egress 724 packet modification on 725 Virtual Ports and is not 726 applicable to Offload 727 Engines. */ 728 #define BCM_FIELD_HIGIG_DONOT_LEARN 0x2 /* Do not perform MAC 729 learning. */ 730 731 /* Flags for bcmFieldQualifyHiGigOffloadEngineVxltStatus. */ 732 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_NOT_ATTEMPTED 0x0 /* VLAN Translation was 733 not attempted on this 734 packet. */ 735 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_NOT_DONE 0x1 /* VLAN Translation was 736 allowed by the 737 redirect rule, but 738 there was no 739 translation to be done 740 i.e. no vxt-related 741 packet modifications 742 were done */ 743 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_DONE 0x2 /* VLAN translation was 744 allowed by the 745 redirect rule, and 746 VLAN translation was 747 done. */ 748 749 /* Flags for bcmFieldQualifyHiGigOffloadEngineDeferredFlags. */ 750 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_DROP 0x01 /* Defer Drop Action. */ 751 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_CHANGE_PKT_PRIORITY 0x02 /* Defer Change in Packet 752 Priority. */ 753 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_CHANGE_DSCP 0x04 /* Defer Change in DSCP 754 value. */ 755 756 /* Flags for bcmFieldQualifyHiGigLabelType. */ 757 #define BCM_FIELD_HIGIG_LABEL_TYPE_HIGIGPLUS_OVERLAY 0x00 /* Original HiGig+ 758 Overlay. */ 759 #define BCM_FIELD_HIGIG_LABEL_TYPE_INGRESS_MODPORT 0x01 /* The module ID and port 760 number through which 761 the packet originally 762 entered the system. */ 763 #define BCM_FIELD_HIGIG_LABEL_TYPE_MIRROR_CLASSIFICATION_TAG 0x02 /* An opaque field 764 generated by the ACL 765 that triggers this 766 packet. Can be used to 767 assist the MTP in 768 packet classification. */ 769 #define BCM_FIELD_HIGIG_LABEL_TYPE_QTAG 0x03 /* QTAG (Used to pass 770 QTAG when usage using 771 EH is not desirable) */ 772 773 /* 774 * Flags for bcmFieldQualifyHiGigPreserveFlags and 775 * bcmFieldQualifyHiGigVpPreserveFlags. 776 */ 777 #define BCM_FIELD_HIGIG_PRESERVE_DSCP 0x1 /* Do not change DSCP of the 778 outermost IP header. */ 779 #define BCM_FIELD_HIGIG_PRESERVE_DOT1P 0x2 /* Do not change 802.1p/CFI 780 bits of the outermost L2 781 header. */ 782 783 /* Flags for bcmFieldQualifyHiGigMirrorOrSwitchPkt. */ 784 #define BCM_FIELD_HIGIG_MIRROR 0x01 /* Mirror and Switch. */ 785 786 /* 787 * Various header format extension values for qualification / 788 * preselection 789 */ 790 typedef enum bcm_field_header_format_extension_e { 791 bcmFieldHeaderFormatExtensionDontCare = 0, /* Select packets with any header format 792 extension */ 793 bcmFieldHeaderFormatExtensionFtmh = 1, /* Select only packets which are FTMH */ 794 bcmFieldHeaderFormatExtensionIpUdpGtp1 = 2, /* Select only packets which UDP/IP and 795 GPRS Tunneling Protocol (GTP1) */ 796 bcmFieldHeaderFormatExtensionIpUdpGtp2 = 3, /* Select only packets which UDP/IP and 797 GPRS Tunneling Protocol (GTP2) */ 798 bcmFieldHeaderFormatExtensionFcoe = 4, /* Select only packets which are Fiber 799 Channel Over Ethernet */ 800 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3 = 5, /* 'Non_L4' stands for IPV4 which is 801 neither UDP nor TCP. Hit is marked 802 when parser speculates that, 803 following MPLS, the next protocol is 804 IPV4 (on the third header) but not L4 */ 805 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3 = 6, /* 'Non_L4' stands for IPV6 which is 806 neither UDP nor TCP. Hit is marked 807 when parser speculates that, 808 following MPLS, the next protocol is 809 IPV6 (on the third header) but not L4 */ 810 bcmFieldHeaderFormatExtensionMplsL4IPV4isH3 = 7, /* 'L4' stands for UDP/TCP. Hit is 811 marked when parser speculates that, 812 following MPLS, the next protocol is 813 L4 of IPV4 (on the third header) */ 814 bcmFieldHeaderFormatExtensionMplsL4IPV6isH3 = 8, /* 'L4' stands for UDP/TCP. Hit is 815 marked when parser speculates that, 816 following MPLS, the next protocol is 817 L4 of IPV6 (on the third header) */ 818 bcmFieldHeaderFormatExtensionMplsETHisH3 = 9, /* Hit is marked when parser speculates 819 that, following MPLS, the next 820 protocol is Ethernet (on the third 821 header) */ 822 bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH4 = 10, /* 'Non_L4' stands for IPV4 which is 823 neither UDP nor TCP. Hit is marked 824 when parser speculates that, 825 following MPLS, the next protocol is 826 Ethernet followed by IPV4 (on the 827 fourth header) but not L4 */ 828 bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH4 = 11, /* 'Non_L4' stands for IPV4 which is 829 neither UDP nor TCP. Hit is marked 830 when parser speculates that, 831 following MPLS, the next protocol is 832 Ethernet followed by IPV6 (on the 833 fourth header) but not L4 */ 834 bcmFieldHeaderFormatExtensionMplsL4IPV4isH4 = 12, /* 'L4' stands for UDP/TCP. Hit is 835 marked when parser speculates that, 836 following MPLS, the next protocol is 837 Ethernet followed by L4 of IPV4 (on 838 the fourth header) */ 839 bcmFieldHeaderFormatExtensionMplsL4IPV6isH4 = 13, /* 'L4' stands for UDP/TCP. Hit is 840 marked when parser speculates that, 841 following MPLS, the next protocol is 842 Ethernet followed by L4 of IPV6 (on 843 the fourth header) */ 844 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsAny = 14, /* Group combining 845 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3 846 & 847 bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH4 */ 848 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsAny = 15, /* Group combining 849 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3 850 & 851 bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH4 */ 852 bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH3 = 16, /* Group combining 853 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3 854 & 855 bcmFieldHeaderFormatExtensionMplsL4IPV4isH3 */ 856 bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH3 = 17, /* Group combining 857 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3 858 & 859 bcmFieldHeaderFormatExtensionMplsL4IPV6isH3 */ 860 bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH5 = 18, /* 'Non_L4' stands for IPV4 which is 861 neither UDP nor TCP. Hit is marked 862 when parser speculates that, 863 following MPLS, the next protocol is 864 Ethernet followed by IPV4 (on the 865 fifth header) but not L4 */ 866 bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH5 = 19, /* 'Non_L4' stands for IPV4 which is 867 neither UDP nor TCP. Hit is marked 868 when parser speculates that, 869 following MPLS, the next protocol is 870 Ethernet followed by IPV6 (on the 871 fifth header) but not L4 */ 872 bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH5 = 20, /* Group combining 873 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH5 874 & 875 bcmFieldHeaderFormatExtensionMplsL4IPV4isH5 */ 876 bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH5 = 21, /* Group combining 877 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH5 878 & 879 bcmFieldHeaderFormatExtensionMplsL4IPV6isH5 */ 880 bcmFieldHeaderFormatExtensionMplsETHisH4 = 22, /* Hit is marked when parser speculates 881 that, following MPLS, the next 882 protocol is Ethernet (on the fourth 883 header) */ 884 bcmFieldHeaderFormatExtensionMplsAnyEthIsH3H4 = 23, /* Group combining 885 bcmFieldHeaderFormatExtensionMplsETHisH3 886 & 887 bcmFieldHeaderFormatExtensionMplsETHisH4 */ 888 bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH4 = 24, /* Group combining 889 bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH4 890 & 891 bcmFieldHeaderFormatExtensionMplsL4IPV4isH4 */ 892 bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH4 = 25, /* Group combining 893 bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH4 894 & 895 bcmFieldHeaderFormatExtensionMplsL4IPV6isH4 */ 896 bcmFieldHeaderFormatExtensionMplsL4IPV4isH5 = 26, /* 'L4' stands for UDP/TCP. Hit is 897 marked when parser speculates that, 898 following MPLS, the next protocol is 899 Ethernet followed by L4 of IPV4 (on 900 the fifth header). */ 901 bcmFieldHeaderFormatExtensionMplsL4IPV6isH5 = 27, /* 'L4' stands for UDP/TCP. Hit is 902 marked when parser speculates that, 903 following MPLS, the next protocol is 904 Ethernet followed by L4 of IPV6 (on 905 the fifth header). */ 906 bcmFieldHeaderFormatExtensionCount = 28 /* Always Last. Not a usable value. */ 907 } bcm_field_header_format_extension_t; 908 909 #define BCM_FIELD_HEADER_FORMAT_EXTENSION \ 910 { \ 911 "DontCare", \ 912 "Ftmh", \ 913 "IpUdpGtp1", \ 914 "IpUdpGtp2", \ 915 "Fcoe", \ 916 "MplsNonL4IPV4IsH3", \ 917 "MplsNonL4IPV6IsH3", \ 918 "MplsL4IPV4isH3", \ 919 "MplsL4IPV6isH3", \ 920 "MplsETHisH3", \ 921 "MplsNonL4IPV4isH4", \ 922 "MplsNonL4IPV6isH4", \ 923 "MplsL4IPV4isH4", \ 924 "MplsL4IPV6isH4", \ 925 "MplsNonL4IPV4IsAny", \ 926 "MplsNonL4IPV6IsAny", \ 927 "MplsAnyL4IPV4IsH3", \ 928 "MplsAnyL4IPV6IsH3", \ 929 "MplsNonL4IPV4isH5", \ 930 "MplsNonL4IPV6isH5", \ 931 "MplsAnyL4IPV4IsH5", \ 932 "MplsAnyL4IPV6IsH5", \ 933 "MplsETHisH4", \ 934 "MplsAnyEthIsH3H4", \ 935 "MplsAnyL4IPV4IsH4", \ 936 "MplsAnyL4IPV6IsH4", \ 937 "MplsL4IPV4isH5", \ 938 "MplsL4IPV6isH5" \ 939 } 940 941 /* Various packet header formats for qualification / preselection */ 942 typedef enum bcm_field_header_format_e { 943 bcmFieldHeaderFormatL2 = 0, /* L2 packet (headers = L2) */ 944 bcmFieldHeaderFormatIp4 = 1, /* IPv4 packet (headers = L2, IPv4, L4) */ 945 bcmFieldHeaderFormatIp4AnyL2L3 = 2, /* Any IPv4 packet (headers = L2, IPv4, 946 Any) */ 947 bcmFieldHeaderFormatIp6 = 3, /* IPv6 packet (headers = L2, IPv6, L4) */ 948 bcmFieldHeaderFormatIp6AnyL2L3 = 4, /* Any IPv6 packet (headers = L2, IPv6, 949 Any) */ 950 bcmFieldHeaderFormatMplsLabel1 = 5, /* MPLS packet with one label (headers = 951 L2, MPLS (1 label), L4) */ 952 bcmFieldHeaderFormatMplsLabel1AnyL2L3 = 6, /* Any MPLS packet with one label 953 (headers = L2, MPLS (1 label), Any) */ 954 bcmFieldHeaderFormatMplsLabel2 = 7, /* MPLS packet with two labels (headers 955 = L2, MPLS (2 labels), L4) */ 956 bcmFieldHeaderFormatMplsLabel2AnyL2L3 = 8, /* Any MPLS packet with two labels 957 (headers = L2, MPLS (2 labels), Any) */ 958 bcmFieldHeaderFormatMplsLabel3 = 9, /* MPLS packet with three labels 959 (headers = L2, MPLS (3 labels), L4) */ 960 bcmFieldHeaderFormatMplsLabel3AnyL2L3 = 10, /* Any MPLS packet with three labels 961 (headers = L2, MPLS (3 labels), Any) */ 962 bcmFieldHeaderFormatTrill = 11, /* Trill packet (headers = L2, Trill) */ 963 bcmFieldHeaderFormatEthEth = 12, /* L2 over L2 packet (headers = L2, L2) */ 964 bcmFieldHeaderFormatEthTrillEth = 13, /* L2 over Trill packet (headers = L2, 965 Trill, L2) */ 966 bcmFieldHeaderFormatIp4Ip4 = 14, /* IPv4 over IPv4 packet (headers = L2, 967 IPv4, IPv4) */ 968 bcmFieldHeaderFormatIp6Ip4 = 15, /* IPv6 over IPv4 packet (headers = L2, 969 IPv4, IPv6) */ 970 bcmFieldHeaderFormatIp4MplsLabel1 = 16, /* IPv4 over MPLS with one label 971 (headers = L2, MPLS (one label), 972 IPv4) */ 973 bcmFieldHeaderFormatIp4MplsLabel2 = 17, /* IPv4 over MPLS with two labels 974 (headers = L2, MPLS (two labels), 975 IPv4) */ 976 bcmFieldHeaderFormatIp4MplsLabel3 = 18, /* IPv4 over MPLS with three labels 977 (headers = L2, MPLS (three labels), 978 IPv4) */ 979 bcmFieldHeaderFormatIp6MplsLabel1 = 19, /* IPv6 over MPLS with one label 980 (headers = L2, MPLS (one label), 981 IPv6) */ 982 bcmFieldHeaderFormatIp6MplsLabel2 = 20, /* IPv6 over MPLS with two labels 983 (headers = L2, MPLS (two labels), 984 IPv6) */ 985 bcmFieldHeaderFormatIp6MplsLabel3 = 21, /* IPv6 over MPLS with three labels 986 (headers = L2, MPLS (three labels), 987 IPv6) */ 988 bcmFieldHeaderFormatEthMplsLabel1 = 22, /* L2 over MPLS with one label (headers 989 = L2, MPLS (one label), L2) */ 990 bcmFieldHeaderFormatEthMplsLabel2 = 23, /* L2 over MPLS with two labels (headers 991 = L2, MPLS (two labels), L2) */ 992 bcmFieldHeaderFormatEthMplsLabel3 = 24, /* L2 over MPLS with three labels 993 (headers = L2, MPLS (three labels), 994 L2) */ 995 bcmFieldHeaderFormatIp4EthMplsLabel1 = 25, /* IPv4 over L2 over MPLS with one label 996 (headers = L2, MPLS (one label), L2, 997 IPv4) */ 998 bcmFieldHeaderFormatIp4EthMplsLabel2 = 26, /* IPv4 over L2 over MPLS with two 999 labels (headers = L2, MPLS (two 1000 labels), L2, IPv4) */ 1001 bcmFieldHeaderFormatIp4EthMplsLabel3 = 27, /* IPv4 over L2 over MPLS with three 1002 labels (headers = L2, MPLS (three 1003 labels), L2, IPv4) */ 1004 bcmFieldHeaderFormatTrafficManagement = 28, /* Traffic Management packet injected by 1005 an external Packet Processor */ 1006 bcmFieldHeaderFormatEthIp4Eth = 29, /* L2 over IPv4 over L2 packet (headers 1007 = L2, IPv4, L2) */ 1008 bcmFieldHeaderFormatFCoE = 30, /* FCoE packet */ 1009 bcmFieldHeaderFormatMplsAnyLabelAnyL2L3 = 31, /* Any Number of MPLS labels 1/2/3 and 1010 any L2/L3 */ 1011 bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV4IsH3 = 32, /* 'Non_L4' stands for IPV4 which is 1012 neither UDP nor TCP. Hit is marked 1013 when parser detected that, after MPLS 1014 termination, the next protocol is 1015 IPV4 (on the third header) but not 1016 L4. */ 1017 bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV6IsH3 = 33, /* 'Non_L4' stands for IPV6 which is 1018 neither UDP nor TCP. Hit is marked 1019 when parser detected that, after MPLS 1020 termination, the next protocol is 1021 IPV6 (on the third header) but not 1022 L4. */ 1023 bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV4IsH3 = 34, /* 'L4' stands for UDP/TCP. Hit is 1024 marked when parser detected that, 1025 after MPLS termination, the next 1026 protocol is L4 of IPV4 (on the third 1027 header). */ 1028 bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV6IsH3 = 35, /* 'L4' stands for UDP/TCP. Hit is 1029 marked when parser detected that, 1030 after MPLS termination, the next 1031 protocol is L4 of IPV6 (on the third 1032 header). */ 1033 bcmFieldHeaderFormatAfterTunnelTerminatedEthIsH3 = 36, /* Hit is marked when parser detected 1034 that, after MPLS termination, the 1035 next protocol Ethernet (on the third 1036 header). */ 1037 bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV4IsH4ETHisH3 = 37, /* 'Non_L4' stands for IPV4 which is 1038 neither UDP nor TCP. Hit is marked 1039 when parser detected that, after MPLS 1040 termination, the next protocol is 1041 Ethernet followed by IPV4 (on the 1042 fourth header) but not L4. */ 1043 bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV6IsH4ETHisH3 = 38, /* 'Non_L4' stands for IPV4 which is 1044 neither UDP nor TCP. Hit is marked 1045 when parser detected that, after MPLS 1046 termination, the next protocol is 1047 Ethernet followed by IPV6 (on the 1048 fourth header) but not L4. */ 1049 bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV4IsH4ETHisH3 = 39, /* 'L4' stands for UDP/TCP. Hit is 1050 marked when parser detected that, 1051 after MPLS termination, the next 1052 protocol is Ethernet followed by L4 1053 of IPV4 (on the fourth header). */ 1054 bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV6IsH4ETHisH3 = 40, /* 'L4' stands for UDP/TCP. Hit is 1055 marked when parser detected that, 1056 after MPLS termination, the next 1057 protocol is Ethernet followed by L4 1058 of IPV6 (on the fourth header). */ 1059 bcmFieldHeaderFormatMpls = 41, /* MPLS packet (Packet containing MPLS) */ 1060 bcmFieldHeaderFormatIp4Ip6 = 42, /* IPv4 over IPv6 packet (headers = L2, 1061 IPv4, IPv6) */ 1062 bcmFieldHeaderFormatIp6Ip6 = 43, /* IPv6 over IPv6 packet (headers = L2, 1063 IPv6, IPv6) */ 1064 bcmFieldHeaderFormatFCoENoEncap = 44, /* FCoE packet with standard header only 1065 (no extended header) */ 1066 bcmFieldHeaderFormatCount = 45 /* Always Last. Not a usable value. */ 1067 } bcm_field_header_format_t; 1068 1069 #define BCM_FIELD_HEADER_FORMAT \ 1070 { \ 1071 "L2", \ 1072 "Ip4", \ 1073 "Ip4AnyL2L3", \ 1074 "Ip6", \ 1075 "Ip6AnyL2L3", \ 1076 "MplsLabel1", \ 1077 "MplsLabel1AnyL2L3", \ 1078 "MplsLabel2", \ 1079 "MplsLabel2AnyL2L3", \ 1080 "MplsLabel3", \ 1081 "MplsLabel3AnyL2L3", \ 1082 "Trill", \ 1083 "EthEth", \ 1084 "EthTrillEth", \ 1085 "Ip4Ip4", \ 1086 "Ip6Ip4", \ 1087 "Ip4MplsLabel1", \ 1088 "Ip4MplsLabel2", \ 1089 "Ip4MplsLabel3", \ 1090 "Ip6MplsLabel1", \ 1091 "Ip6MplsLabel2", \ 1092 "Ip6MplsLabel3", \ 1093 "EthMplsLabel1", \ 1094 "EthMplsLabel2", \ 1095 "EthMplsLabel3", \ 1096 "Ip4EthMplsLabel1", \ 1097 "Ip4EthMplsLabel2", \ 1098 "Ip4EthMplsLabel3", \ 1099 "TrafficManagement", \ 1100 "EthIp4Eth", \ 1101 "FCoE", \ 1102 "MplsAnyLabelAnyL2L3", \ 1103 "AfterTunnelTerminatedNonL4IPV4IsH3", \ 1104 "AfterTunnelTerminatedNonL4IPV6IsH3", \ 1105 "AfterTunnelTerminatedL4IPV4IsH3", \ 1106 "AfterTunnelTerminatedL4IPV6IsH3", \ 1107 "AfterTunnelTerminatedEthIsH3", \ 1108 "AfterTunnelTerminatedNonL4IPV4IsH4ETHisH3", \ 1109 "AfterTunnelTerminatedNonL4IPV6IsH4ETHisH3", \ 1110 "AfterTunnelTerminatedL4IPV4IsH4ETHisH3", \ 1111 "AfterTunnelTerminatedL4IPV6IsH4ETHisH3", \ 1112 "Mpls", \ 1113 "Ip4Ip6", \ 1114 "Ip6Ip6", \ 1115 "FCoENoEncap" \ 1116 } 1117 1118 /* 1119 * Specifies a set of possible header formats for matching, for use with 1120 * bcmFieldQualifyHeaderFormatSet. 1121 */ 1122 typedef struct bcm_field_header_format_set_s { 1123 SHR_BITDCL w[_SHR_BITDCLSIZE(bcmFieldHeaderFormatCount)]; 1124 } bcm_field_header_format_set_t; 1125 1126 #define BCM_FIELD_HEADER_FORMAT_SET_INIT(hfset) \ 1127 sal_memset(&(hfset), 0, sizeof(bcm_field_header_format_set_t)) 1128 1129 #define BCM_FIELD_HEADER_FORMAT_SET_ADD(hfset, hf) SHR_BITSET(((hfset).w), (hf)) 1130 1131 #define BCM_FIELD_HEADER_FORMAT_SET_REMOVE(hfset, hf) SHR_BITCLR(((hfset).w), (hf)) 1132 1133 #define BCM_FIELD_HEADER_FORMAT_SET_TEST(hfset, hf) SHR_BITGET(((hfset).w), (hf)) 1134 1135 /* Opaque handle to a field action priority. */ 1136 typedef uint32 bcm_field_action_priority_t; 1137 1138 /* 1139 * Structure to indicate selected FEM id, identifying it by array to 1140 * clarify priority between FEMs abd FESes. 1141 */ 1142 typedef struct bcm_field_array_n_position_s { 1143 uint8 array_id; /* Index of the FES/FEM array in the stage. */ 1144 uint16 fem_position_in_array; /* Position of FES/FEM (by FES/FEM ID) 1145 within the FES/FEM array. */ 1146 } bcm_field_array_n_position_t; 1147 1148 /* 1149 * Field Qualifiers 1150 * 1151 * Field qualifiers are collected into qualifier sets (qsets), which are 1152 * used to allocate field groups. 1153 * 1154 * Note: These are in order of their bit width. Do not change the order 1155 * or the field select code algorithm for wide-mode will get slower. 1156 */ 1157 typedef enum bcm_field_qualify_e { 1158 bcmFieldQualifySrcIp6 = 0, /* Source IPv6 Address. */ 1159 bcmFieldQualifyDstIp6 = 1, /* Destination IPv6 Address. */ 1160 bcmFieldQualifySrcIp6High = 2, /* Src. IPv6 Address (High/Upper 64 1161 bits). */ 1162 bcmFieldQualifyDstIp6High = 3, /* Dest IPv6 Address (High/Upper 64 1163 bits). */ 1164 bcmFieldQualifySrcIp6Low = 4, /* Src. IPv6 Address (Low/Lower 64 1165 bits). */ 1166 bcmFieldQualifyDstIp6Low = 5, /* Dest IPv6 Address (Low/Lower 64 1167 bits). */ 1168 bcmFieldQualifySrcMac = 6, /* Source L2 MAC Address. */ 1169 bcmFieldQualifyDstMac = 7, /* Destination L2 MAC Address. */ 1170 bcmFieldQualifySnap = 8, /* 40: SNAP Header. */ 1171 bcmFieldQualifySrcIp = 9, /* Source IPv4 Address. */ 1172 bcmFieldQualifyDstIp = 10, /* Destination IPv4 Address. */ 1173 bcmFieldQualifyLlc = 11, /* 24: LLC Header. */ 1174 bcmFieldQualifyInPort = 12, /* Single Input Port. */ 1175 bcmFieldQualifyInPorts = 13, /* Input Port Bitmap. */ 1176 bcmFieldQualifyOutPorts = 14, /* Output Port Bitmap. */ 1177 bcmFieldQualifyDrop = 15, /* Packet is flagged to be dropped . */ 1178 bcmFieldQualifyIp6FlowLabel = 16, /* IPv6 Flow Label. */ 1179 bcmFieldQualifyOuterVlan = 17, /* Outer VLAN. */ 1180 bcmFieldQualifyOuterVlanId = 18, /* Outer VLAN Id. */ 1181 bcmFieldQualifyOuterVlanPri = 19, /* Outer VLAN priority. */ 1182 bcmFieldQualifyOuterVlanCfi = 20, /* Outer VLAN Cfi. */ 1183 bcmFieldQualifyInnerVlan = 21, /* Inner VLAN (double-tagged pkts 1184 only). */ 1185 bcmFieldQualifyInnerVlanId = 22, /* Inner VLAN Id. */ 1186 bcmFieldQualifyInnerVlanPri = 23, /* Inner VLAN priority. */ 1187 bcmFieldQualifyInnerVlanCfi = 24, /* Inner VLAN Cfi. */ 1188 bcmFieldQualifyLookupStatus = 25, /* DEPRECATED Lookup status 1189 (BCM_FIELD_LOOKUP_xxx). */ 1190 bcmFieldQualifyRangeCheck = 26, /* TCP/UDP Port Range Check Results. */ 1191 bcmFieldQualifyL4PortRangeCheck = bcmFieldQualifyRangeCheck, /* TCP/UDP Port Range Check Results */ 1192 bcmFieldQualifyL4SrcPort = 27, /* TCP/UDP Source Port. */ 1193 bcmFieldQualifyL4DstPort = 28, /* TCP/UDP Destination Port. */ 1194 bcmFieldQualifyEtherType = 29, /* Ethernet Type. */ 1195 bcmFieldQualifyIpProtocol = 30, /* IP Protocol Field. */ 1196 bcmFieldQualifyIp6NextHeader = bcmFieldQualifyIpProtocol, /* IPv6 Next Header/IP Protocol. */ 1197 bcmFieldQualifyDSCP = 31, /* Diffserv Code Point. */ 1198 bcmFieldQualifyTos = bcmFieldQualifyDSCP, /* Tos - same as DSCP. */ 1199 bcmFieldQualifyIp6TrafficClass = bcmFieldQualifyDSCP, /* IPv6 Traffic Class. */ 1200 bcmFieldQualifyTtl = 32, /* Time To Live/Hop Limit. */ 1201 bcmFieldQualifyIp6HopLimit = bcmFieldQualifyTtl, /* IPv6 Hop Limit. */ 1202 bcmFieldQualifySrcModid = 33, /* Source Module ID (deprecated). */ 1203 bcmFieldQualifySrcPortTgid = 34, /* Source Port/Trunk Group ID 1204 (deprecated). */ 1205 bcmFieldQualifySrcPort = 35, /* Source Module ID and Port . */ 1206 bcmFieldQualifySrcTrunk = 36, /* Source Trunk Group ID . */ 1207 bcmFieldQualifySrcTrunkMemberGport = 37, /* Source Trunk Member Port . */ 1208 bcmFieldQualifyDstModid = 38, /* Destination Module ID (deprecated). */ 1209 bcmFieldQualifyDstPortTgid = 39, /* Dest Port/Trunk Group ID 1210 (deprecated. */ 1211 bcmFieldQualifyDstPort = 40, /* Destination Module ID and Port . */ 1212 bcmFieldQualifyDstTrunk = 41, /* Destination Trunk Group ID . */ 1213 bcmFieldQualifyTcpControl = 42, /* TCP Control Flags. */ 1214 bcmFieldQualifyPacketRes = 43, /* Pkt resolution 1215 (BCM_FIELD_PKT_RES_xxx). */ 1216 bcmFieldQualifyPacketFormat = 44, /* DEPRECATED Packet Format 1217 (BCM_FIELD_PKT_FMT_xxx). */ 1218 bcmFieldQualifySrcClassL2 = 45, /* Source Class based on L2 lookup 1219 result. */ 1220 bcmFieldQualifySrcClassL3 = 46, /* Source Class based on L3 lookup 1221 result. */ 1222 bcmFieldQualifySrcClassField = 47, /* Source Class based on 1223 bcmFieldStageLookup result. */ 1224 bcmFieldQualifyDstClassL2 = 48, /* Destination Class based on L2 lookup 1225 result. */ 1226 bcmFieldQualifyDstClassL3 = 49, /* Destination Class based on L3 lookup 1227 result. */ 1228 bcmFieldQualifyDstClassField = 50, /* Destination Class based on 1229 bcmFieldStageLookup result. */ 1230 bcmFieldQualifyIpInfo = 51, /* IP Information (BCM_FIELD_IP_xxx). */ 1231 bcmFieldQualifyIpProtocolCommon = 52, /* 3: Common IP protocols. */ 1232 bcmFieldQualifyMHOpcode = 53, /* Module Header Opcode. */ 1233 bcmFieldQualifyIpFlags = 54, /* IPv4 Flags. */ 1234 bcmFieldQualifyInnerTpid = 55, /* 2: Inner VLAN TPID. */ 1235 bcmFieldQualifyOuterTpid = 56, /* 2: Outer VLAN TPID. */ 1236 bcmFieldQualifyInnerIpType = 57, /* Inner ip header IP Type 1237 (bcmFieldIpTypeXXX). */ 1238 bcmFieldQualifyTunnelType = 58, /* TunnelType (bcmFieldTunnelXXX). */ 1239 bcmFieldQualifyLoopbackType = 59, /* LoopbackType 1240 (bcmFieldLoopbackTypeXXX). */ 1241 bcmFieldQualifyLoopback = 60, /* Packets forwarded through loopback 1242 interface. */ 1243 bcmFieldQualifyIpType = 61, /* IP Type (bcmFieldIpTypeXXX). */ 1244 bcmFieldQualifyForwardingType = 62, /* Packet forwarding type 1245 (bcmFieldForwardingTypeXXX). */ 1246 bcmFieldQualifyDecap = 63, /* Decapsulation occurred. */ 1247 bcmFieldQualifyHiGig = 64, /* HiGig packet. */ 1248 bcmFieldQualifyHiGigProxy = 65, /* HiGig proxy processing is enabled. */ 1249 bcmFieldQualifyDstHiGig = 66, /* Packet being forwarded to higig 1250 port. */ 1251 bcmFieldQualifyStage = 67, /* Field Processor pipeline stage. */ 1252 bcmFieldQualifyStageIngress = 68, /* Field Processor pipeline ingress 1253 stage. */ 1254 bcmFieldQualifyStageIngressSecurity = 69, /* Field Processor ingress security 1255 stage. */ 1256 bcmFieldQualifyStageIngressQoS = 70, /* Field Processor ingress QOS stage. */ 1257 bcmFieldQualifyStageLookup = 71, /* Field Processor pipeline lookup 1258 stage. */ 1259 bcmFieldQualifyStageEgress = 72, /* Field Processor pipeline egress 1260 stage. */ 1261 bcmFieldQualifyStageEgressSecurity = 73, /* Field Processor egress security 1262 stage. */ 1263 bcmFieldQualifyStageExternal = 74, /* Field Processor Rules in External 1264 slice. */ 1265 bcmFieldQualifyDeprecated75 = 75, /* Deprecated 75 */ 1266 bcmFieldQualifyDeprecated76 = 76, /* Deprecated 76 */ 1267 bcmFieldQualifyTcpSequenceZero = 77, /* Sequence number = 0. */ 1268 bcmFieldQualifyTcpHeaderSize = 78, /* TCP Header Size. */ 1269 bcmFieldQualifyInterfaceClassL2 = 79, /* Vlan Class Id. */ 1270 bcmFieldQualifyInterfaceClassL3 = 80, /* L3 Interface Class Id. */ 1271 bcmFieldQualifyInterfaceClassPort = 81, /* Port Class Id. */ 1272 bcmFieldQualifyL3Routable = 82, /* L3 routable bit for FB2. */ 1273 bcmFieldQualifyIpFrag = 83, /* IP Fragment info. */ 1274 bcmFieldQualifyVrf = 84, /* VRF Id for FB 2. */ 1275 bcmFieldQualifyL3Ingress = 85, /* L3 ingress interface. */ 1276 bcmFieldQualifyOutPort = 86, /* Single Output Port. */ 1277 bcmFieldQualifyIp4 = 87, /* Qualify IpType == IPv4Any. */ 1278 bcmFieldQualifyIp6 = 88, /* Qualify IpType == Ipv6Any. */ 1279 bcmFieldQualifyL2Format = 89, /* Qualify on L2 header format. */ 1280 bcmFieldQualifyVlanFormat = 90, /* Qualify on vlan tag format. */ 1281 bcmFieldQualifyTranslatedVlanFormat = 91, /* Qualify on translated vlan tag 1282 format. */ 1283 bcmFieldQualifyExtensionHeaderType = 92, /* Qualify on Next Header Field in 1284 First Extension Header. */ 1285 bcmFieldQualifyExtensionHeaderSubCode = 93, /* Qualify on First byte after 1286 extension header length field. */ 1287 bcmFieldQualifyExtensionHeader2Type = 94, /* Qualify on Next Header Field in 1288 Second Extension Header. */ 1289 bcmFieldQualifyL4Ports = 95, /* Four bytes after L3 header are 1290 available. */ 1291 bcmFieldQualifyMirrorCopy = 96, /* Qualify mirrored traffic. */ 1292 bcmFieldQualifyTunnelTerminated = 97, /* Qualify tunnel terminated traffic. */ 1293 bcmFieldQualifyMplsTerminated = 98, /* Qualify mpls terminated traffic. */ 1294 bcmFieldQualifyInnerSrcIp = 99, /* Inner ip header source IPv4 Address. */ 1295 bcmFieldQualifyInnerDstIp = 100, /* Inner ip header destination IPv4 1296 Address. */ 1297 bcmFieldQualifyInnerSrcIp6 = 101, /* Inner ip header source IPv6 Address. */ 1298 bcmFieldQualifyInnerDstIp6 = 102, /* Inner ip header destination IPv6 1299 Address. */ 1300 bcmFieldQualifyInnerSrcIp6High = 103, /* Inner ip header Src. IPv6 Address 1301 (High/Upper 64 bits). */ 1302 bcmFieldQualifyInnerDstIp6High = 104, /* Inner ip header Dest IPv6 Address 1303 (High/Upper 64 bits). */ 1304 bcmFieldQualifyInnerTtl = 105, /* Inner ip header time To Live/Hop 1305 Limit. */ 1306 bcmFieldQualifyInnerIp6HopLimit = bcmFieldQualifyInnerTtl, /* Inner IPv6 header Hop Limit. */ 1307 bcmFieldQualifyInnerTos = 106, /* Inner ip header diffserv Code Point. */ 1308 bcmFieldQualifyInnerDSCP = bcmFieldQualifyInnerTos, /* Inner DSCP */ 1309 bcmFieldQualifyInnerIp6TrafficClass = bcmFieldQualifyInnerTos, /* Inner IPv6 header Traffic Class. */ 1310 bcmFieldQualifyInnerIpProtocol = 107, /* Inner ip header IP Protocol Field. */ 1311 bcmFieldQualifyInnerIp6NextHeader = bcmFieldQualifyInnerIpProtocol, /* Inner Ip6 header Next Header/IP 1312 Protocol. */ 1313 bcmFieldQualifyInnerIpFrag = 108, /* Inner ip header IP Fragment info. */ 1314 bcmFieldQualifyVlanTranslationHit = 109, /* Vlan Translation table hit. */ 1315 bcmFieldQualifyForwardingVlanValid = 110, /* Forwarding vlan is valid. */ 1316 bcmFieldQualifyIngressStpState = 111, /* Ingress Vlan STG STP state. */ 1317 bcmFieldQualifyL2SrcHit = 112, /* L2 Source lookup success. */ 1318 bcmFieldQualifyL2SrcStatic = 113, /* L2 Source is static entry. */ 1319 bcmFieldQualifyL2DestHit = 114, /* L2 Destination lookup success. */ 1320 bcmFieldQualifyL2StationMove = 115, /* L2 Source port mismatch. */ 1321 bcmFieldQualifyL2CacheHit = 116, /* L2 Destination cache lookup success. */ 1322 bcmFieldQualifyL3SrcHostHit = 117, /* L3 Source lookup host table hit. */ 1323 bcmFieldQualifyL3DestHostHit = 118, /* L3 Destination lookup host table 1324 hit. */ 1325 bcmFieldQualifyL3DestRouteHit = 119, /* L3 Destination lookup route table 1326 hit. */ 1327 bcmFieldQualifyIpmcStarGroupHit = 120, /* L3 Multicast lookup (Star,Group) 1328 hit. */ 1329 bcmFieldQualifyDosAttack = 121, /* Denial of Service attack frame. */ 1330 bcmFieldQualifyDeprecated122 = 122, /* Deprecated 122 */ 1331 bcmFieldQualifyClassId = 123, /* internal use only. */ 1332 bcmFieldQualifyDeprecated124 = 124, /* Deprecated 124 */ 1333 bcmFieldQualifyIcmpTypeCode = 125, /* internal use only. */ 1334 bcmFieldQualifyDeprecated126 = 126, /* Deprecated 126 */ 1335 bcmFieldQualifyInnerIpProtocolCommon = 127, /* Inner ip header IP Protocol Common 1336 Field. */ 1337 bcmFieldQualifyInnerL4SrcPort = 128, /* TCP/UDP Source Port. */ 1338 bcmFieldQualifyInnerL4DstPort = 129, /* TCP/UDP Destination Port. */ 1339 bcmFieldQualifyInnerIp6FlowLabel = 130, /* Inner IPv6 header Flow Label. */ 1340 bcmFieldQualifyDstL3Egress = 131, /* Egress Object id. */ 1341 bcmFieldQualifyDstMulticastGroup = 132, /* Multicast Group id. */ 1342 bcmFieldQualifySrcMplsGport = 133, /* Source Mpls gport. */ 1343 bcmFieldQualifyDstMplsGport = 134, /* Destination Mpls gport. */ 1344 bcmFieldQualifySrcMimGport = 135, /* Source Mim gport. */ 1345 bcmFieldQualifyDstMimGport = 136, /* Destination Mim gport. */ 1346 bcmFieldQualifySrcWlanGport = 137, /* Source Wlan gport. */ 1347 bcmFieldQualifyDstWlanGport = 138, /* Destination Wlan gport. */ 1348 bcmFieldQualifySrcModPortGport = 139, /* Source module/port pair. */ 1349 bcmFieldQualifySrcModuleGport = 140, /* Source module. */ 1350 bcmFieldQualifyColor = 141, /* Packet color. */ 1351 bcmFieldQualifyIntPriority = 142, /* Internal priority. */ 1352 bcmFieldQualifyForwardingVlanId = 143, /* Forwarding vlan id. */ 1353 bcmFieldQualifyVpn = 144, /* Vpn id. */ 1354 bcmFieldQualifyFlowId = 145, /* Flow id. */ 1355 bcmFieldQualifyInVPort = 146, /* Ingress virtual port id. */ 1356 bcmFieldQualifyOutVPort = 147, /* Egress virtual port id. */ 1357 bcmFieldQualifyFibreChanOuter = 148, /* Outer Fibre Channel header type. */ 1358 bcmFieldQualifyFibreChanInner = 149, /* Inner Fibre Channel header type. */ 1359 bcmFieldQualifyVnTag = 150, /* NIV VN tag. */ 1360 bcmFieldQualifyCnTag = 151, /* QCN CN tag. */ 1361 bcmFieldQualifyFabricQueueTag = 152, /* Fabric queue tag. */ 1362 bcmFieldQualifyMyStationHit = 153, /* When RIOT is not enabled or not 1363 supported, qualifies on L2 tunnel 1364 termination lookup or Routing hit 1365 status (default). When RIOT is 1366 supported and enabled, qualifies on 1367 L2 underlay tunnel termination lookup 1368 hit status. */ 1369 bcmFieldQualifyDstMultipath = 154, /* Destination Multipath ID. */ 1370 bcmFieldQualifyL2PayloadFirstEightBytes = 155, /* First eight bytes of L2 Payload. */ 1371 bcmFieldQualifySrcVirtualPortValid = 156, /* Source Virtual Port is valid. */ 1372 bcmFieldQualifyDstL3EgressNextHops = 157, /* Consecutive L3 Egress Next hops. */ 1373 bcmFieldQualifyRecoverableDrop = 158, /* Recoverable drop indication. */ 1374 bcmFieldQualifyRepCopy = 159, /* Externally-replicated copy. */ 1375 bcmFieldQualifyIpTunnelHit = 160, /* IP tunnel lookup hit. */ 1376 bcmFieldQualifyMplsLabel1Hit = 161, /* MPLS label 1 lookup hit. */ 1377 bcmFieldQualifyTrillEgressRbridgeHit = 162, /* TRILL egress Rbridge lookup hit. */ 1378 bcmFieldQualifyL2GreSrcIpHit = 163, /* Layer 2 GRE source IP address lookup 1379 hit. */ 1380 bcmFieldQualifyMimSrcGportHit = 164, /* MiM source port lookup hit. */ 1381 bcmFieldQualifyMplsLabel2Hit = 165, /* MPLS label 2 lookup hit. */ 1382 bcmFieldQualifyTrillIngressRbridgeHit = 166, /* TRILL ingress Rbridge lookup hit. */ 1383 bcmFieldQualifyL2GreVfiHit = 167, /* Layer 2 GRE VFI lookup hit. */ 1384 bcmFieldQualifyMimVfiHit = 168, /* MiM VFI lookup hit. */ 1385 bcmFieldQualifyGenericAssociatedChannelLabelValid = 169, /* MPLS GAL valid. */ 1386 bcmFieldQualifyRouterAlertLabelValid = 170, /* MPLS RAL valid. */ 1387 bcmFieldQualifyDstIpLocal = 171, /* Dest IP is local. */ 1388 bcmFieldQualifyNormalizeIpAddrs = 172, /* Normalize IP addresses. */ 1389 bcmFieldQualifyNormalizeMacAddrs = 173, /* Normalize MAC addresses. */ 1390 bcmFieldQualifyIpAddrsNormalized = 174, /* IP addresses were normalized. */ 1391 bcmFieldQualifyMacAddrsNormalized = 175, /* MAC addresses were normalized. */ 1392 bcmFieldQualifyMplsForwardingLabel = 176, /* MPLS forwarding label. */ 1393 bcmFieldQualifyMplsForwardingLabelTtl = 177, /* TTL field of MPLS forwarding label. */ 1394 bcmFieldQualifyMplsForwardingLabelBos = 178, /* BOS field of MPLS forwarding label. */ 1395 bcmFieldQualifyMplsForwardingLabelExp = 179, /* EXP field of MPLS forwarding label. */ 1396 bcmFieldQualifyMplsForwardingLabelId = 180, /* ID field of MPLS forwarding label. */ 1397 bcmFieldQualifyMplsControlWord = 181, /* MPLS control word. */ 1398 bcmFieldQualifyRtag7AHashUpper = 182, /* Upper half of RTAG7 hash A result. */ 1399 bcmFieldQualifyRtag7AHashLower = 183, /* Lower half of RTAG7 hash A result. */ 1400 bcmFieldQualifyRtag7BHashUpper = 184, /* Upper half of RTAG7 hash B result. */ 1401 bcmFieldQualifyRtag7BHashLower = 185, /* Lower half of RTAG7 hash B result. */ 1402 bcmFieldQualifyMplsForwardingLabelAction = 186, /* MPLS forwarding label action. */ 1403 bcmFieldQualifyMplsControlWordValid = 187, /* MPLS control word valid. */ 1404 bcmFieldQualifyEgressClass = 188, /* Class assigned by next hop */ 1405 bcmFieldQualifyEgressClassL3Interface = 189, /* Class assigned by egress interface */ 1406 bcmFieldQualifyEgressClassTrill = 190, /* Class assigned by egress TRILL */ 1407 bcmFieldQualifyEgressClassWlan = 191, /* Class assigned by egress WLAN */ 1408 bcmFieldQualifyEgressClassL2Gre = 192, /* Class assigned by egress L2 GRE */ 1409 bcmFieldQualifyLlidValue = 193, /* LLID value (2 bytes) in preamble. */ 1410 bcmFieldQualifyCpuQueue = 194, /* CPU COS Queue value. */ 1411 bcmFieldQualifyMpls = 195, /* Qualify on MPLS packets */ 1412 bcmFieldQualifySrcGport = 196, /* Source module/port pair or 1413 MPLS/MiM/WLAN/Niv/Vlan port. */ 1414 bcmFieldQualifyHeaderFormat = 197, /* Qualify on header format */ 1415 bcmFieldQualifyHeaderFormatSet = 198, /* Qualify on header format set */ 1416 bcmFieldQualifyL2Learn = 199, /* Set if L2 learning is enabled */ 1417 bcmFieldQualifyPortOrientation = 200, /* Orientation in a Hub-Spoke topology 1418 (Hub or Spoke) */ 1419 bcmFieldQualifyEcnValue = 201, /* ECN Value */ 1420 bcmFieldQualifyRxTrapCode = 202, /* Rx Trap Id */ 1421 bcmFieldQualifyPtch = 203, /* Opaque attribute field of the 1422 Injected packets. Part of the PTCH 1423 header in 88650 */ 1424 bcmFieldQualifyMplsBos = 204, /* Qualify on packets whose header 1425 parsing reached the MPLS BoS label */ 1426 bcmFieldQualifyRxTrapData = 205, /* Rx Trap Data */ 1427 bcmFieldQualifyPolicerIntPrio = 206, /* Internal priority for the policer */ 1428 bcmFieldQualifyPacketTerminatedBytes = 207, /* Number of bytes terminated */ 1429 bcmFieldQualifyBypassFilter = 208, /* Qualify packets bypassing any 1430 filtering */ 1431 bcmFieldQualifyReplicantAny = 209, /* Qualify any Multicast packets */ 1432 bcmFieldQualifyReplicantFirst = 210, /* First-replication copy of the packet */ 1433 bcmFieldQualifyTrillEgressRbridge = 211, /* Egress RBridge Nickname */ 1434 bcmFieldQualifyISid = 212, /* I-SID (MAC-in-MAC lookup-id) */ 1435 bcmFieldQualifyInterfaceClassProcessingPort = 213, /* Packet-processing Port Class ID */ 1436 bcmFieldQualifyDstRpfGport = 214, /* RPF destination (gport) for the RPF 1437 Check */ 1438 bcmFieldQualifyTrunkHashResult = 215, /* Trunk Hash Result (i.e., the 1439 Load-balancing Key) */ 1440 bcmFieldQualifyDhcp = 216, /* Qualify DHCP packets */ 1441 bcmFieldQualifySnoopCopy = 217, /* Snooped traffic */ 1442 bcmFieldQualifyForwardCopy = 218, /* Forwarded traffic */ 1443 bcmFieldQualifyInterfaceClassVPort = 219, /* Virtual Port Interface Class ID */ 1444 bcmFieldQualifyVPortRangeCheck = 220, /* Virtual Port Range Check Results */ 1445 bcmFieldQualifyPacketLengthRangeCheck = 221, /* Packet length Range Check Results */ 1446 bcmFieldQualifyStageIngressVlanTranslation = 222, /* VLAN Translation stage */ 1447 bcmFieldQualifyStageIngressTunnelTerminated = 223, /* Tunnel termination stage */ 1448 bcmFieldQualifyStageIngressMplsTerminated = 224, /* MPLS Termination stage */ 1449 bcmFieldQualifyStageIngressIpTunnel = 225, /* IP tunnel termination stage */ 1450 bcmFieldQualifyStageIngressL2Src = 226, /* L2 Source lookup stage */ 1451 bcmFieldQualifyStageIngressL2Dest = 227, /* L2 Destination lookup stage */ 1452 bcmFieldQualifyStageIngressL3SrcRoute = 228, /* L3 Source Route lookup stage */ 1453 bcmFieldQualifyStageIngressL3DestRoute = 229, /* L3 Destination Route lookup stage */ 1454 bcmFieldQualifyStageIngressIpmc = 230, /* IP Multicast lookup stage */ 1455 bcmFieldQualifyTunnelTerminatedHit = 231, /* Tunnel termination hit */ 1456 bcmFieldQualifyMplsTerminatedHit = 232, /* MPLS Termination hit */ 1457 bcmFieldQualifyL3SrcRouteHit = 233, /* L3 Source Route lookup hit */ 1458 bcmFieldQualifyIpmcHit = 234, /* IP Multicast lookup hit */ 1459 bcmFieldQualifyVlanTranslationValue = 235, /* VLAN Translation lookup value */ 1460 bcmFieldQualifyTunnelTerminatedValue = 236, /* Tunnel Termination lookup value */ 1461 bcmFieldQualifyMplsTerminatedValue = 237, /* MPLS Termination lookup value */ 1462 bcmFieldQualifyIpTunnelValue = 238, /* IP Tunnel Termination lookup value */ 1463 bcmFieldQualifyL2SrcValue = 239, /* L2 Source lookup value */ 1464 bcmFieldQualifyL2DestValue = 240, /* L2 Destination lookup value */ 1465 bcmFieldQualifyL3SrcRouteValue = 241, /* L3 Source lookup value */ 1466 bcmFieldQualifyL3DestRouteValue = 242, /* L3 Destination lookup value */ 1467 bcmFieldQualifyIpmcValue = 243, /* IP Multicast lookup value */ 1468 bcmFieldQualifyLearnSrcMac = 244, /* MAC Source Address learnt */ 1469 bcmFieldQualifyLearnVlan = 245, /* Vlan learnt */ 1470 bcmFieldQualifyLearnSrcPort = 246, /* Source Port learnt */ 1471 bcmFieldQualifyPacketSize = 247, /* Packet size in Bytes. */ 1472 bcmFieldQualifyInnerSrcMac = 248, /* Inner Source L2 MAC Address. */ 1473 bcmFieldQualifyInnerDstMac = 249, /* Inner Destination L2 MAC Address. */ 1474 bcmFieldQualifyInnerEtherType = 250, /* Inner Ethernet Type */ 1475 bcmFieldQualifyMplsLabel1 = 251, /* MPLS Label 1 */ 1476 bcmFieldQualifyMplsLabel1Ttl = 252, /* TTL field of the first MPLS Label */ 1477 bcmFieldQualifyMplsLabel1Bos = 253, /* BoS field of the first MPLS Label */ 1478 bcmFieldQualifyMplsLabel1Exp = 254, /* Exp field of the first MPLS Label */ 1479 bcmFieldQualifyMplsLabel1Id = 255, /* ID field of the first MPLS Label */ 1480 bcmFieldQualifyMplsLabel2 = 256, /* MPLS Label 2 */ 1481 bcmFieldQualifyMplsLabel2Ttl = 257, /* TTL field of the second MPLS Label */ 1482 bcmFieldQualifyMplsLabel2Bos = 258, /* BoS field of the second MPLS Label */ 1483 bcmFieldQualifyMplsLabel2Exp = 259, /* Exp field of the second MPLS Label */ 1484 bcmFieldQualifyMplsLabel2Id = 260, /* ID field of the second MPLS Label */ 1485 bcmFieldQualifyMplsLabel3 = 261, /* MPLS Label 3 */ 1486 bcmFieldQualifyMplsLabel3Ttl = 262, /* TTL field of the third MPLS Label */ 1487 bcmFieldQualifyMplsLabel3Bos = 263, /* BoS field of the third MPLS Label */ 1488 bcmFieldQualifyMplsLabel3Exp = 264, /* Exp field of the third MPLS Label */ 1489 bcmFieldQualifyMplsLabel3Id = 265, /* ID field of the third MPLS Label */ 1490 bcmFieldQualifyCascadedKeyValue = 266, /* Value of key cascaded from prior 1491 group in cascade */ 1492 bcmFieldQualifyMplsOuterLabelPop = 267, /* Qualifies MPLS Outer Label Popped 1493 Packets */ 1494 bcmFieldQualifyMplsStationHitTunnelUnterminated = 268, /* Qualifies Mpls Station Hit Tunnel 1495 Unterminated Packets */ 1496 bcmFieldQualifyIngressClassField = 269, /* Class Id assigned for packet by 1497 Ingress Stage */ 1498 bcmFieldQualifyIngressInterfaceClassPort = 270, /* Class Id assigned for packet based on 1499 Ingress Port */ 1500 bcmFieldQualifyExternalValue0 = 271, /* External lookup 0 value */ 1501 bcmFieldQualifyExternalValue1 = 272, /* External lookup 1 value */ 1502 bcmFieldQualifyExternalValue2 = 273, /* External lookup 2 value */ 1503 bcmFieldQualifyExternalValue3 = 274, /* External lookup 3 value */ 1504 bcmFieldQualifyExternalHit0 = 275, /* External lookup 0 hit */ 1505 bcmFieldQualifyExternalHit1 = 276, /* External lookup 1 hit */ 1506 bcmFieldQualifyExternalHit2 = 277, /* External lookup 2 hit */ 1507 bcmFieldQualifyExternalHit3 = 278, /* External lookup 3 hit */ 1508 bcmFieldQualifyVpnUnknownDstMacDstPort = 279, /* Destination for unknown-DA packets. 1509 Set per Vpn. */ 1510 bcmFieldQualifyVxlanNetworkId = 280, /* Vxlan Network/Segment Id */ 1511 bcmFieldQualifyVxlanFlags = 281, /* VxLan header Flags */ 1512 bcmFieldQualifyNatNeeded = 282, /* Qualify packets where NAT is needed */ 1513 bcmFieldQualifyNatDstRealmId = 283, /* Qualify packets on Dst Realm Id */ 1514 bcmFieldQualifyNatSrcRealmId = 284, /* Qualify packets on Src Realm Id */ 1515 bcmFieldQualifyIcmpError = 285, /* Qualifies any packet with ICMP Error */ 1516 bcmFieldQualifyTunnelId = 286, /* Tunnel Id */ 1517 bcmFieldQualifyArpSenderIp4 = 287, /* Sender IPv4 field of ARP header */ 1518 bcmFieldQualifyArpTargetIp4 = 288, /* Target IPv4 field of ARP header */ 1519 bcmFieldQualifyArpOpcode = 289, /* Opcode field of ARP header.Values set 1520 according to bcmFieldArpOpcode */ 1521 bcmFieldQualifyTranslatedOuterVlan = 290, /* Translated Outer VLAN ID, Cfi, 1522 Priority */ 1523 bcmFieldQualifyTranslatedOuterVlanId = 291, /* Translated Outer VLAN ID */ 1524 bcmFieldQualifyTranslatedOuterVlanPri = 292, /* Translated Outer VLAN Priority */ 1525 bcmFieldQualifyTranslatedOuterVlanCfi = 293, /* Translated Outer VLAN Cfi */ 1526 bcmFieldQualifyTranslatedInnerVlan = 294, /* Translated Inner VLAN ID, Cfi, 1527 Priority */ 1528 bcmFieldQualifyTranslatedInnerVlanId = 295, /* Translated Inner VLAN ID */ 1529 bcmFieldQualifyTranslatedInnerVlanPri = 296, /* Translated Inner VLAN Priority */ 1530 bcmFieldQualifyTranslatedInnerVlanCfi = 297, /* Translated Inner VLAN Cfi */ 1531 bcmFieldQualifyConstantZero = 298, /* Constant zero-value. Useful for 1532 Direct group mode. */ 1533 bcmFieldQualifyConstantOne = 299, /* Constant one-value. Useful for Direct 1534 group mode. */ 1535 bcmFieldQualifyFibreChanRCtl = 300, /* Fibre Channel's R_Ctl (Routing 1536 Control) flags. */ 1537 bcmFieldQualifyFibreChanFCtl = 301, /* Fibre Channel's F_Ctl (Frame Control) 1538 flags. */ 1539 bcmFieldQualifyFibreChanCSCtl = 302, /* Fibre Channel's CS_Ctl (Class 1540 Specified Control) flags. */ 1541 bcmFieldQualifyFibreChanDFCtl = 303, /* Fibre Channel's DF_Ctl (Data Field 1542 Control) flags. */ 1543 bcmFieldQualifyFibreChanType = 304, /* Match an FP entry based on Fibre 1544 Channel's Type. */ 1545 bcmFieldQualifyFibreChanSrcId = 305, /* Fibre Channel's Src Id */ 1546 bcmFieldQualifyFibreChanDstId = 306, /* Fibre Channel's Dst Id. */ 1547 bcmFieldQualifyFibreChanZoneCheck = 307, /* Fibre Channel's Zone Check Status 1548 (BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_xxx). */ 1549 bcmFieldQualifyFibreChanSrcFpmaCheck = 308, /* Fibre Channel's Src FPMA Prefix Check 1550 Status. */ 1551 bcmFieldQualifyFibreChanSrcBindCheck = 309, /* Fibre Channel's Src Bind Check 1552 Status. */ 1553 bcmFieldQualifyFibreChanVFTVersion = 310, /* Fibre Channel's VFT version. */ 1554 bcmFieldQualifyFibreChanVFTPri = 311, /* Fibre Channel's VFT Priority. */ 1555 bcmFieldQualifyFibreChanVFTFabricId = 312, /* Fibre Channel's VFT Fabric Id. */ 1556 bcmFieldQualifyFibreChanVFTHopCount = 313, /* Fibre Channel's VFT Hop Count. */ 1557 bcmFieldQualifyFibreChanVFTVsanId = 314, /* Fibre Channel's VFT Internal VSAN ID. */ 1558 bcmFieldQualifyFibreChanVFTVsanPri = 315, /* Fibre Channel's VFT VSAN Priority. */ 1559 bcmFieldQualifyFibreChanVFTValid = 316, /* Fibre Channel's VFT header 1560 presence/validity. */ 1561 bcmFieldQualifyFcoeSOF = 317, /* Match an FP entry based on Fcoe SOF. */ 1562 bcmFieldQualifyFcoeVersionIsZero = 318, /* FCoE Version Is Zero. */ 1563 bcmFieldQualifyForwardingHeaderOffset = 319, /* Distance of the forwarding header 1564 from the start-of-packet. Unit: 1565 bytes. */ 1566 bcmFieldQualifyL3SrcBind = 320, /* L3 source bind lookup success. */ 1567 bcmFieldQualifyECid = 321, /* E-CID base. Same as ExtenderPortVid. */ 1568 bcmFieldQualifyIngressECid = 322, /* Ingress E-CID base. */ 1569 bcmFieldQualifyETag = 323, /* E-Tag value. */ 1570 bcmFieldQualifyIngressVPortBridgeDisable = 324, /* Ingress VPort Bridge same-interface 1571 disabled */ 1572 bcmFieldQualifyHashValue = 325, /* Hash value */ 1573 bcmFieldQualifyIsEqualValue = 326, /* Result value of the is-equal 1574 operation */ 1575 bcmFieldQualifyStageHash = 327, /* Hashing stage */ 1576 bcmFieldQualifyUrpfMode = 328, /* URPF mode according to 1577 bcm_field_urpf_mode_t */ 1578 bcmFieldQualifyAppType = 329, /* Packet Application type 1579 (bcmFieldAppTypeXXX). */ 1580 bcmFieldQualifySubportPktTag = 330, /* Ingress LLTAG. */ 1581 bcmFieldQualifySrcVxlanGport = 331, /* Qualify vxlan source gport. */ 1582 bcmFieldQualifyDstVxlanGport = 332, /* Qualify vxlan destination gport. */ 1583 bcmFieldQualifyOamMdl = 333, /* Qualify OAM Maintenance Domain 1584 Levels. */ 1585 bcmFieldQualifyIntCongestionNotification = 334, /* Qualify internal congestion 1586 notification value. */ 1587 bcmFieldQualifySrcNivGport = 335, /* Source Niv gport. */ 1588 bcmFieldQualifyDstNivGport = 336, /* Destination Niv gport. */ 1589 bcmFieldQualifyDstGport = 337, /* Destination Niv port. */ 1590 bcmFieldQualifyMirrorEgressDisabled = 338, /* Egress Mirroring disabled. */ 1591 bcmFieldQualifyBypassSrcMacFilter = 339, /* Qualify packets bypassing Source MAC 1592 Address filtering. */ 1593 bcmFieldQualifyRxTrapCodeForSnoop = 340, /* Rx Trap code ID used for snoop. */ 1594 bcmFieldQualifyIpmcStarGroupValue = 341, /* L3 Multicast lookup (Star,Group) 1595 Value. */ 1596 bcmFieldQualifyNativeVSwitch = 342, /* Native-VSwitch (for 1597 Routing-over-overlay packets). */ 1598 bcmFieldQualifyNativeVSwitchValid = 343, /* Valid native-VSwitch (for 1599 Routing-over-overlay packets). */ 1600 bcmFieldQualifyTrillIVersion = 344, /* TRILL version field. */ 1601 bcmFieldQualifyTrillIngressRbridge = 345, /* Ingress Rbridge Nickname. */ 1602 bcmFieldQualifyTrillMultiDestination = 346, /* RILL Multi-destination field. */ 1603 bcmFieldQualifyTrillOpLength = 347, /* TRILL Options length field. */ 1604 bcmFieldQualifyTrillHopCount = 348, /* TRILL Hop count field . */ 1605 bcmFieldQualifyTrillPayload = 349, /* Payload of TRILL header. */ 1606 bcmFieldQualifyMplsForwardingLabelPayload = 350, /* Payload of MPLS forwarding label. */ 1607 bcmFieldQualifyIncomingIpIfClass = 351, /* Incoming IP interface Class ID. */ 1608 bcmFieldQualifyL2GreProtocolType = 352, /* L2GRE Protocol type field . */ 1609 bcmFieldQualifyL2GreVsid = 353, /* L2GRE Virtual Subnet ID field. */ 1610 bcmFieldQualifyL2GreFlowId = 354, /* L2GRE Flow ID field. */ 1611 bcmFieldQualifyMimVlanPri = 355, /* MAC-in-MAC VLAN Priority field. */ 1612 bcmFieldQualifyMimVlanCfi = 356, /* MAC-in-MAC VLAN Cfi field. */ 1613 bcmFieldQualifyFhei = 357, /* DNX FHEI header field. */ 1614 bcmFieldQualifyFheiSize = 358, /* DNX FHEI header size in bytes. */ 1615 bcmFieldQualifyEthernetOamHeaderBits0_31 = 359, /* Ethernet OAM Header First 4 Bytes. */ 1616 bcmFieldQualifyEthernetOamHeaderBits32_63 = 360, /* Ethernet OAM Header Second 4 Bytes. */ 1617 bcmFieldQualifyEthernetOamDstClassL2 = 361, /* Ethernet OAM Destination Class based 1618 on L2 lookup result. */ 1619 bcmFieldQualifyEthernetOamTxPktUPMEP = 362, /* Ethernet OAM UP-MEP Tx Packet. */ 1620 bcmFieldQualifyEthernetOamInterfaceClassNiv = 363, /* Ethernet OAM ClassId from Source VP 1621 Table. */ 1622 bcmFieldQualifyEthernetOamInterfaceClassMim = 364, /* Ethernet OAM ClassId from Source VP 1623 Table. */ 1624 bcmFieldQualifyEthernetOamInterfaceClassVxlan = 365, /* Ethernet OAM ClassId from Source VP 1625 Table. */ 1626 bcmFieldQualifyEthernetOamInterfaceClassVlan = 366, /* Ethernet OAM ClassId from Source VP 1627 Table. */ 1628 bcmFieldQualifyEthernetOamInterfaceClassPort = 367, /* Ethernet OAM Class Id assigned for 1629 packet based on Ingress Port. */ 1630 bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst = 368, /* Ethernet OAM Class Id assigned for 1631 packet based on 1st Lookup in 1632 Vlan_Xlate table. */ 1633 bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond = 369, /* Ethernet OAM Class Id assigned for 1634 packet based on 2nd Lookup in 1635 Vlan_Xlate table. */ 1636 bcmFieldQualifyEthernetOamInterfaceClassMpls = 370, /* Ethernet OAM Class Id assigned for 1637 packet based on Source VP table. */ 1638 bcmFieldQualifyEthernetOamClassVpn = 371, /* Ethernet OAM Class Id assigned for 1639 packet based on VFI table. */ 1640 bcmFieldQualifyMplsOamHeaderBits0_31 = 372, /* Mpls OAM Header First 4 Bytes. */ 1641 bcmFieldQualifyMplsOamHeaderBits32_63 = 373, /* Mpls OAM Header Second 4 Bytes. */ 1642 bcmFieldQualifyMplsOamGALLabelOnly = 374, /* MPLS OAM packets having GAL Label 1643 Only. */ 1644 bcmFieldQualifyMplsOamUpperLabelDataDrop = 375, /* MPLS OAM Labels above the forwarding 1645 label. */ 1646 bcmFieldQualifyMplsOamGALExposed = 376, /* MPLS OAM packets having GAL exposed. */ 1647 bcmFieldQualifyMplsOamACH = 377, /* MPLS OAM ACH Header. */ 1648 bcmFieldQualifyMplsOamControlPktType = 378, /* MPLS OAM control packets based on 1649 Packet Type. */ 1650 bcmFieldQualifyMplsOamClassMplsSwitchLabel = 379, /* MPLS OAM Class Id assigned for 1651 packet based on MPLS table. */ 1652 bcmFieldQualifyOamHeaderBits0_31 = 380, /* OAM Header First 4 Bytes. */ 1653 bcmFieldQualifyOamHeaderBits32_63 = 381, /* OAM Header Second 4 Bytes. */ 1654 bcmFieldQualifyOamEgressClassVxlt = 382, /* OAM Class Id assigned for packet 1655 based on EGR_VXLT table. */ 1656 bcmFieldQualifyOamEgressClassPort = 383, /* OAM Class Id assigned for packet 1657 based on Port table. */ 1658 bcmFieldQualifyUdf = 384, /* Qualify UDF selected data */ 1659 bcmFieldQualifyOuterVlanActionRange = 385, /* compressed outer vlan tag */ 1660 bcmFieldQualifyInnerVlanActionRange = 386, /* compressed inner vlan tag */ 1661 bcmFieldQualifyIngressInterfaceClassVPort = 387, /* Class Id assigned for packet based on 1662 Ingress GPort */ 1663 bcmFieldQualifySrcVlanGport = 388, /* Qualify Source Vlan Gport */ 1664 bcmFieldQualifyDstVlanGport = 389, /* Qualify Destination Vlan Gport */ 1665 bcmFieldQualifyOamType = 390, /* Qualify Ethernet/MPLS OAM. */ 1666 bcmFieldQualifySrcVlanGports = 391, /* Qualify Source Vlan Gports */ 1667 bcmFieldQualifyDstVlanGports = 392, /* Qualify Destination Vlan Gports */ 1668 bcmFieldQualifySrcVxlanGports = 393, /* Qualify Source Vxlan Gports */ 1669 bcmFieldQualifyDstVxlanGports = 394, /* Qualify Destination Vxlan Gports */ 1670 bcmFieldQualifySrcWlanGports = 395, /* Qualify Source Wlan Gports */ 1671 bcmFieldQualifyDstWlanGports = 396, /* Qualify Destination Wlan Gports */ 1672 bcmFieldQualifySrcMplsGports = 397, /* Qualify Source Mpls Gports */ 1673 bcmFieldQualifyDstMplsGports = 398, /* Qualify Destination Mpls Gports */ 1674 bcmFieldQualifySrcGports = 399, /* Qualify Source module/port pair or 1675 MPLS/MiM/WLAN/Niv/Vlan ports */ 1676 bcmFieldQualifyDstGports = 400, /* Qualify Destination Niv Gports */ 1677 bcmFieldQualifySrcMimGports = 401, /* Qualify Source Mim Gports */ 1678 bcmFieldQualifyDstMimGports = 402, /* Qualify Destination Mim Gports */ 1679 bcmFieldQualifySrcNivGports = 403, /* Qualify Source Niv Gports */ 1680 bcmFieldQualifyDstNivGports = 404, /* Qualify Destination Niv Gports */ 1681 bcmFieldQualifySrcModPortGports = 405, /* Qualify Source ModPort Gports */ 1682 bcmFieldQualifyLearnInVPort = 406, /* Qualify Learnt Incoming VPort */ 1683 bcmFieldQualifyStackingRoute = 407, /* Qualify Stacking Route */ 1684 bcmFieldQualifyRxTrapStrength = 408, /* Qualify Rx Trap Strength */ 1685 bcmFieldQualifyVxlanHeaderBits8_31 = 409, /* Qualify Reserved_1 field in Vxlan 1686 Header */ 1687 bcmFieldQualifyVxlanHeaderBits56_63 = 410, /* Qualify Reserved_2 field in Vxlan 1688 Header */ 1689 bcmFieldQualifyOamInLifIdValid = 411, /* Indicates if the LIF that has been 1690 found is an OAM LIF. */ 1691 bcmFieldQualifyOamInLifId = 412, /* Indicates the last OAM LIF that has 1692 been found. This value is valid only 1693 if SOC_PPC_FP_QUAL_VTT_OAM_LIF_VALID 1694 is set. */ 1695 bcmFieldQualifyOamUpMep = 413, /* It indicates if the OAM packet is 1696 UP-MEP (sent to a destination in the 1697 network, as opposed to a specific 1698 port). This term belongs to the OAM 1699 jargon. */ 1700 bcmFieldQualifyOamSubtype = 414, /* In OAM the packet type is specified 1701 in the OAM header and mapped to a 1702 subtype in the hardware. This value 1703 indicates the hardware type that it 1704 is mapped to. */ 1705 bcmFieldQualifyOamHeaderOffset = 415, /* This field indicates the offset of 1706 the OAM header relative to the start 1707 of packet (as opposed to start of 1708 header-offset) */ 1709 bcmFieldQualifyOamStampOffset = 416, /* This qualifier indicates the offset 1710 to the position, in the OAM header, 1711 where the ToD or counter value should 1712 be stamped 1713 relative to the 1714 start of packet (as opposed to start 1715 of header-offset[0]). */ 1716 bcmFieldQualifyOamMepId = 417, /* This qualifier indicates is according 1717 to the following encoding: OAM-ID 1718 (17) = OAM-2-Match ? 1719 {4'b0, 1720 OAM-2-ID (13)} : {1'b1, OAM-LIF (16)} 1721 If MEP is handled in OAMP, then the 1722 OAM-ID is the MEP-ID 1723 1724 (equivalent to the index used to 1725 access the MEP DB). */ 1726 bcmFieldQualifyOamMeterDisable = 418, /* This qualifier is an attribute that 1727 is passed to the PMF and can also be 1728 configured by the user per MEP. 1729 It has no meaning 1730 other than being a qualifier in the 1731 PMF. */ 1732 bcmFieldQualifyOamTsSystemHeader = 419, /* The entire OAM-TS is passed to the 1733 egress PMF (48 bit) */ 1734 bcmFieldQualifyDstMulticastGroups = 420, /* Qualify Multicast Group ids */ 1735 bcmFieldQualifyInterfaceInPorts = 421, /* Qualify Interface In Ports */ 1736 bcmFieldQualifyDestVirtualPortValid = 422, /* Destination Virtual Port is valid. */ 1737 bcmFieldQualifyInVPortWide = 423, /* Wide attribute of Ingress VPort . */ 1738 bcmFieldQualifyStageClass = 424, /* Pseudo Compression Class Stage. */ 1739 bcmFieldQualifyStageClassExactMatch = 425, /* Pseudo Compression Exact Match Class 1740 Stage. */ 1741 bcmFieldQualifyFcoeOxID = 426, /* FCoE Originator Exchange ID. */ 1742 bcmFieldQualifyFcoeRxID = 427, /* FCoE Responder Exchange ID. */ 1743 bcmFieldQualifyIpProtocolClass = 428, /* IP Protocol ID Class. */ 1744 bcmFieldQualifyEtherTypeClass = 429, /* EtherType Class. */ 1745 bcmFieldQualifyL4SrcPortClass = 430, /* L4 Source Port Class. */ 1746 bcmFieldQualifyL4DstPortClass = 431, /* L4 Destination Port Class. */ 1747 bcmFieldQualifySrcIpClass = 432, /* IPv4 SIP Class. */ 1748 bcmFieldQualifySrcIpClassMsbNibble = 433, /* IPv4 SIP Class 4-bits. */ 1749 bcmFieldQualifySrcIpClassLower = 434, /* IPv4 SIP Class Lower 16-bits. */ 1750 bcmFieldQualifySrcIpClassUpper = 435, /* IPv4 SIP Class Upper 16-bits. */ 1751 bcmFieldQualifySrcIp6Class = 436, /* IPv6 SIP Class. */ 1752 bcmFieldQualifySrcIp6ClassMsbNibble = 437, /* IPv6 SIP Class 4-bits. */ 1753 bcmFieldQualifySrcIp6ClassLower = 438, /* Ipv6 SIP Class Lower 16-bits. */ 1754 bcmFieldQualifySrcIp6ClassUpper = 439, /* IPv6 SIP Class Upper 16-bits. */ 1755 bcmFieldQualifyFcoeOxIDClass = 440, /* FCoE Originator Exchange ID Class. */ 1756 bcmFieldQualifyDstIpClass = 441, /* IPv4 DIP Class. */ 1757 bcmFieldQualifyDstIpClassMsbNibble = 442, /* IPv4 DIP Class 4-bits. */ 1758 bcmFieldQualifyDstIpClassLower = 443, /* IPv4 DIP Class Lower 16-bits. */ 1759 bcmFieldQualifyDstIpClassUpper = 444, /* IPv4 DIP Class Upper 16-bits. */ 1760 bcmFieldQualifyDstIp6Class = 445, /* IPv6 DIP Class. */ 1761 bcmFieldQualifyDstIp6ClassMsbNibble = 446, /* Ipv6 DIP Class 4-bits. */ 1762 bcmFieldQualifyDstIp6ClassLower = 447, /* IPv6 DIP Class Lower 16-bits. */ 1763 bcmFieldQualifyDstIp6ClassUpper = 448, /* IPv6 DIP Class Upper 16-bits. */ 1764 bcmFieldQualifyFcoeRxIDClass = 449, /* FCoE Responder Exchange ID Class. */ 1765 bcmFieldQualifyFibreChanSrcIdClass = 450, /* Fibre Channel Src Id Class. */ 1766 bcmFieldQualifyFibreChanSrcIdClassMsbNibble = 451, /* Fibre Channel Src Id Class 4-bits. */ 1767 bcmFieldQualifyFibreChanSrcIdClassLower = 452, /* Fibre Channel Src Id Class Lower 1768 16-bits. */ 1769 bcmFieldQualifyFibreChanSrcIdClassUpper = 453, /* Fibre Channel Src Id Class Upper 1770 16-bits. */ 1771 bcmFieldQualifyFibreChanDstIdClass = 454, /* Fibre Channel Dst Id Class. */ 1772 bcmFieldQualifyFibreChanDstIdClassMsbNibble = 455, /* Fibre Channel Dst Id Class 4-bits. */ 1773 bcmFieldQualifyFibreChanDstIdClassLower = 456, /* Fibre Channel Dst Id Class Lower 1774 16-bits. */ 1775 bcmFieldQualifyFibreChanDstIdClassUpper = 457, /* Fibre Channel Dst Id Class Upper 1776 16-bits. */ 1777 bcmFieldQualifyTcpClassZero = 458, /* TCP Class from TCP_FN0. */ 1778 bcmFieldQualifyTosClassZero = 459, /* TOS Class from TOS_FN0. */ 1779 bcmFieldQualifyTtlClassZero = 460, /* TTL Class from TTL_FN0. */ 1780 bcmFieldQualifyTcpClassOne = 461, /* TCP Class from TCP_FN1. */ 1781 bcmFieldQualifyTosClassOne = 462, /* TOS Class from TOS_FN1. */ 1782 bcmFieldQualifyTtlClassOne = 463, /* TTL Class from TTL_FN1. */ 1783 bcmFieldQualifyOuterVlanPriCfi = 464, /* Outer VLAN Pri + Cfi (4 bits). */ 1784 bcmFieldQualifyForwardHdrSrcMac = 465, /* FWD Header SA MAC (48 bits). */ 1785 bcmFieldQualifyForwardHdrDstMac = 466, /* FWD Header DA MAC (48 bits). */ 1786 bcmFieldQualifyForwardHdrVlanId = 467, /* FWD Header Vlan Id (12 bits). */ 1787 bcmFieldQualifyDstSysPortExt = 468, /* FTMH Destination System Port (DSP) 1788 Extension (16 bits). */ 1789 bcmFieldQualifyStageIngressExactMatch = 469, /* Field Processor pipeline ingress 1790 exact match stage. */ 1791 bcmFieldQualifyLearnExtension = 470, /* Learn Extension Data. */ 1792 bcmFieldQualifyIpFragNonOrFirst = 471, /* Non Fragmented IP Packet or First 1793 Fragment of IP Packet. */ 1794 bcmFieldQualifyPacketLength = 472, /* Packet Length Excluding L2 Header(+ 1795 Vlan Tag for Tagged packets). */ 1796 bcmFieldQualifyGroupClass = 473, /* Field Group Class Id (Logical Table 1797 Class Id) assigned by pre-selection 1798 entry. */ 1799 bcmFieldQualifyUdfClass = 474, /* Class ID associated to packet on UDF 1800 match. */ 1801 bcmFieldQualifyInterfaceLookupClassPort = 475, /* VFP Port Class Id that can be 1802 matched in Ingress Filter Processor. */ 1803 bcmFieldQualifyHiGigDstMulticast = 476, /* Indicates if the HiGig Destination is 1804 a Multicast or Unicast. */ 1805 bcmFieldQualifyHiGigDstMulticastGroupId = 477, /* Destination Multicast Group Id. */ 1806 bcmFieldQualifyHiGigTrafficClass = 478, /* QOS provided by Fabric when 1807 forwarding the packet through Fabric. */ 1808 bcmFieldQualifyHiGigDstModuleGport = 479, /* Destination Module ID. */ 1809 bcmFieldQualifyHiGigDstPortGport = 480, /* Destination Port. */ 1810 bcmFieldQualifyHiGigDstModPortGport = 481, /* Destination Module ID and Port. */ 1811 bcmFieldQualifyHiGigSrcModuleGport = 482, /* Source Module ID. */ 1812 bcmFieldQualifyHiGigSrcPortGport = 483, /* Source Port. */ 1813 bcmFieldQualifyHiGigSrcModPortGport = 484, /* Source Module ID and Port. */ 1814 bcmFieldQualifyHiGigLoadBalanceID = 485, /* A packet flow hashing index for 1815 distribution of packet flows through 1816 a multipath fabric. */ 1817 bcmFieldQualifyHiGigColor = 486, /* Indicates Traffic rate violation 1818 status of the packet measured by 1819 Ingress Module.This can be 1820 Green/Yellow/Red */ 1821 bcmFieldQualifyHiGigIntCongestionNotification = 487, /* Indicates ECN and Transport Protocol 1822 Class Information generated by 1823 Ingress Module. */ 1824 bcmFieldQualifyHiGigIngressTagged = 488, /* Tagged packet was ingressed at the 1825 HiGig Port. */ 1826 bcmFieldQualifyHiGigDstTrunk = 489, /* Is the Destination port is Trunk 1827 Port? */ 1828 bcmFieldQualifyHiGigDstTrunkId = 490, /* Destination HiGig Trunk Group Id. */ 1829 bcmFieldQualifyHiGigIngressL3SwitchPkt = 491, /* Packet is L3 switched at the Source 1830 Port */ 1831 bcmFieldQualifyHiGigLabel = 492, /* 20 Bit Label Present in HiGig Header. 1832 Label Type can be QTag/Mirror 1833 Classification Tag/System Ingress 1834 Port. */ 1835 bcmFieldQualifyHiGigReplicationId = 493, /* Replication ID used to identify 1836 Packet modifications to be applied 1837 for this replicated copy. */ 1838 bcmFieldQualifyHiGigVlan = 494, /* Vlan tag information in HiGig Header */ 1839 bcmFieldQualifyHiGigPortFilteringMode = 495, /* Port Filtering mode used for 1840 Multicast packets. */ 1841 bcmFieldQualifyHiGigSrcTrunk = 496, /* Indicates the packet is originally 1842 ingressed on Trunk Port. */ 1843 bcmFieldQualifyHiGigIngressClassificationTag = 497, /* Classification Tag assigned to packet 1844 in Ingress Filter Processor(IFP). */ 1845 bcmFieldQualifyHiGigEgressMcast = 498, /* Indicates whether the packet is sent 1846 to a single point or a multi-point 1847 tree within the egress chip. */ 1848 bcmFieldQualifyHiGigVni = 499, /* Virtual Network Identifier (ISID) 1849 which identifies the service instance 1850 for this packet. */ 1851 bcmFieldQualifyHiGigDstGport = 500, /* The destination VP index for egress 1852 chip packet modification and 1853 encapsulation. */ 1854 bcmFieldQualifyHiGigMulticastIndex = 501, /* The destination multicast index for 1855 egress chip packet modification and 1856 encapsulation. */ 1857 bcmFieldQualifyHiGigVpReplicationId = 502, /* The destination Replication ID for 1858 egress chip packet modification and 1859 encapsulation. */ 1860 bcmFieldQualifyHiGigSrcGport = 503, /* The Source VP index from which the 1861 packet ingressed the system. */ 1862 bcmFieldQualifyHiGigProtectionSwitchingStatus = 504, /* This indicates the egress packet 1863 processor to use working / protection 1864 path based on the decision made in 1865 the ingress packet processor. */ 1866 bcmFieldQualifyHiGigMirrorToVp = 505, /* Indicates whether the packet is a 1867 mirrored copy or Switched Copy */ 1868 bcmFieldQualifyHiGigDstType = 506, /* Indicates whether the destination is 1869 Virtual or Physical. */ 1870 bcmFieldQualifyHiGigSrcType = 507, /* Indicates whether the source is 1871 Virtual or Physical. */ 1872 bcmFieldQualifyHiGigOffloadEngineClassificationTag = 508, /* Opaque field generated by the ACL 1873 rule that triggered the redirect to 1874 the offload engine. */ 1875 bcmFieldQualifyHiGigOffloadEnginePktPriNew = 509, /* New 802.1p bits */ 1876 bcmFieldQualifyHiGigOffloadEngineDscpNew = 510, /* New DSCP value. */ 1877 bcmFieldQualifyLoopBackQueue = 511, /* Loopback Port Queue Number. It is 1878 used in the MMU for buffer account 1879 and flow control of traffic received 1880 on the internal loopback port. */ 1881 bcmFieldQualifyLoopBackSrcGport = 512, /* Source field for the packet. It can 1882 be a Virtual/Physical port. */ 1883 bcmFieldQualifyPktIsVisible = 513, /* Triggers capture of intermediate 1884 packet processing results for this 1885 packet. */ 1886 bcmFieldQualifyLoopBackCpuMasqueradePktProfile = 514, /* Pointer to indicate disposition of 1887 these packets in the Ingress 1888 Pipeline. */ 1889 bcmFieldQualifyLoopBackColor = 515, /* Indicates Traffic rate violation 1890 status of the packet measured by 1891 Ingress Module.This can be 1892 Green/Yellow/Red. */ 1893 bcmFieldQualifyLoopBackTrafficClass = 516, /* QOS provided by Fabric when 1894 forwarding the packet through Fabric. */ 1895 bcmFieldQualifyLoopBackPacketProcessingPort = 517, /* Device Port Number which is to be 1896 used for processing the packet in the 1897 Ingress Pipeline. This must be a port 1898 that is programmed in the device to 1899 be a front panel (Ethernet) port. */ 1900 bcmFieldQualifyMixedSrcClassId = 518, /* Mixed Source ID value used in 1901 Pre-selection. */ 1902 bcmFieldQualifyITag = 519, /* Service Instance Tag in MAC-in-MAC. */ 1903 bcmFieldQualifyInterfaceIngressKeySelectClassPort = 520, /* Ingress port class id assigned to 1904 port by port table. */ 1905 bcmFieldQualifyBfdYourDiscriminator = 521, /* BFD Your Discriminator. */ 1906 bcmFieldQualifyCpuVisibilityPacket = 522, /* CPU visibility packet. */ 1907 bcmFieldQualifyDstL2MulticastGroup = 523, /* Destination L2 Multicast Group Id. */ 1908 bcmFieldQualifyDstL3MulticastGroup = 524, /* Destination L3 Multicast Group Id. */ 1909 bcmFieldQualifyExactMatchHitStatus = 525, /* Exact Match Hit Status. */ 1910 bcmFieldQualifyExactMatchActionClassId = 526, /* Exact Match Action Class Identifier. */ 1911 bcmFieldQualifyExactMatchGroupClassId = 527, /* Exact Match Group Class Identifier. */ 1912 bcmFieldQualifyL2PayLoad = 528, /* Qualify Bytes after L2 Header */ 1913 bcmFieldQualifyCustomHeaderPkt = 529, /* Qualify Custom Header packets. */ 1914 bcmFieldQualifyCustomHeaderData = 530, /* Qualify the content of Custom Header 1915 32-bits. */ 1916 bcmFieldQualifyMimlPkt = 531, /* Qualify for MiML or non-MiML packet. */ 1917 bcmFieldQualifyMimlSrcMac = 532, /* Mac-in-Mac Lite(MiML) Source MAC 1918 Address. */ 1919 bcmFieldQualifyMimlDstMac = 533, /* Mac-in-Mac Lite(MiML) Destination MAC 1920 Address. */ 1921 bcmFieldQualifyMimlVlan = 534, /* Mac-in-Mac Lite(MiML) VLAN ID, Cfi, 1922 Priority. */ 1923 bcmFieldQualifyMimlVlanId = 535, /* Mac-in-Mac Lite(MiML) VLAN ID. */ 1924 bcmFieldQualifyMimlVlanPri = 536, /* Mac-in-Mac Lite(MiML) VLAN Priority. */ 1925 bcmFieldQualifyMimlVlanCfi = 537, /* Mac-in-Mac Lite(MiML) VLAN Cfi. */ 1926 bcmFieldQualifyMimlInnerTag = 538, /* Mac-in-Mac Lite(MiML) inner tag 1927 fields {MIML_PKT_TYPE, MIML_IID, 1928 MIML_RSVD, MIML_LENGTH}. */ 1929 bcmFieldQualifyCapwapHdrType = 539, /* The TYPE field in CAPWAP header. */ 1930 bcmFieldQualifyCapwapHdrRid = 540, /* The RID field in CAPWAP header. */ 1931 bcmFieldQualifyCapwapPayloadSOF = 541, /* It indicates the CAPWAP payload is 1932 non-fragmented or first fragment. */ 1933 bcmFieldQualifyCapwapPayloadDstMac = 542, /* destination MAC address in CAPWAP 1934 payload. */ 1935 bcmFieldQualifyCapwapPayloadSrcMac = 543, /* source MAC address in CAPWAP payload. */ 1936 bcmFieldQualifyCapwapPayloadEtherType = 544, /* Ethernet type in CAPWAP payload. */ 1937 bcmFieldQualifyCapwapPayloadOuterVlan = 545, /* Outer VLAN tag in CAPWAP payload. */ 1938 bcmFieldQualifyCapwapPayloadOuterVlanId = 546, /* Outer VLAN id in CAPWAP payload. */ 1939 bcmFieldQualifyCapwapPayloadOuterVlanPri = 547, /* Outer VLAN priority in CAPWAP 1940 payload. */ 1941 bcmFieldQualifyCapwapPayloadOuterVlanCfi = 548, /* Outer VLAN CFI in CAPWAP payload. */ 1942 bcmFieldQualifyCapwapPayloadInnerVlan = 549, /* Inner VLAN tag in CAPWAP payload. */ 1943 bcmFieldQualifyCapwapPayloadInnerVlanId = 550, /* Inner VLAN id in CAPWAP payload. */ 1944 bcmFieldQualifyCapwapPayloadInnerVlanPri = 551, /* Inner VLAN priority in CAPWAP 1945 payload. */ 1946 bcmFieldQualifyCapwapPayloadInnerVlanCfi = 552, /* Inner VLAN CFI in CAPWAP payload. */ 1947 bcmFieldQualifyCapwapPayloadVlanFormat = 553, /* VLAN tag format in CAPWAP payload. */ 1948 bcmFieldQualifyCapwapPayloadSip = 554, /* IPv4 source address in CAPWAP 1949 payload. */ 1950 bcmFieldQualifyCapwapPayloadDip = 555, /* IPv4 destination address in CAPWAP 1951 payload. */ 1952 bcmFieldQualifyCapwapPayloadSip6 = 556, /* IPv6 source address in CAPWAP 1953 payload. */ 1954 bcmFieldQualifyCapwapPayloadDip6 = 557, /* IPv6 destination address in CAPWAP 1955 payload. */ 1956 bcmFieldQualifyCapwapPayloadIpProtocol = 558, /* IP Protocol value in CAPWAP payload. */ 1957 bcmFieldQualifyCapwapPayloadTos = 559, /* Type-of-Service value in CAPWAP 1958 payload. */ 1959 bcmFieldQualifyCapwapPayloadL4DstPort = 560, /* UDP/TCP destination port number in 1960 CAPWAP payload. */ 1961 bcmFieldQualifyCapwapPayloadL4SrcPort = 561, /* UDP/TCP source port number in CAPWAP 1962 payload. */ 1963 bcmFieldQualifyCapwapPayloadL3HdrParseable = 562, /* It indicates the parser can parse 1964 ipv4/ipv6 header in the wireless 1965 payload. */ 1966 bcmFieldQualifyCapwapPayloadL4HdrParseable = 563, /* It indicates the parser can parse 1967 UDP/TCP header in the wireless 1968 payload. */ 1969 bcmFieldQualifyVlanAction = 564, /* Vlan Action Set ID. */ 1970 bcmFieldQualifyDownMepSatTerminated = 565, /* Qualify Rx Down Mep SAT terminated 1971 hit status. */ 1972 bcmFieldQualifyDstMultipathOverlay = 566, /* Qualify on ECMP groups with overlay 1973 flag */ 1974 bcmFieldQualifyDstMultipathUnderlay = 567, /* Qualify on ECMP groups with Underlay 1975 flag */ 1976 bcmFieldQualifyStpState = 568, /* Qualify on VLAN STG STP states. */ 1977 bcmFieldQualifyHiGigMirrorOrSwitchPkt = 569, /* Indicates whether the packet has to 1978 be mirrored and switched. */ 1979 bcmFieldQualifyHiGigPreserveFlags = 570, /* Indicates the DSCP/DOT1P flags should 1980 not be modified. */ 1981 bcmFieldQualifyHiGigMplsPkt = 571, /* When set, indicates packet contains a 1982 20 bit label. Otherwise packet 1983 contains MPLS information. */ 1984 bcmFieldQualifyHiGigDoNotFlags = 572, /* Donot Learn(do not perform MAC 1985 learning) and Donot Modify(Send the 1986 packet to destination unmodified) 1987 Flags. */ 1988 bcmFieldQualifyHiGigVpPreserveFlags = 573, /* Indicates the VP not to modify the 1989 DSCP/DOT1P flags. */ 1990 bcmFieldQualifyHiGigOffloadEngineVxltStatus = 574, /* Indicates whether the Packet has been 1991 through Vlan Translation. */ 1992 bcmFieldQualifyHiGigForwardingType = 575, /* Indicates the forwarding type whether 1993 it is a control/L2/L3/broadcast 1994 packet. */ 1995 bcmFieldQualifyHiGigLabelType = 576, /* Indicates contents of Label. It can 1996 be a QTag/ Mirror Classification Tag/ 1997 Original System Ingress Port through 1998 which the packet ingressed/ Original 1999 HiGig+ Overlay. */ 2000 bcmFieldQualifyHiGigExtendedHeaderPresent = 577, /* Indicates whether extended header is 2001 present in the HiGiG header or not. */ 2002 bcmFieldQualifyHiGigVpLagFailoverPacket = 578, /* When set, it indicates that the 2003 packet is redirected by a LAG 2004 failover and the packet must not be 2005 redirected again by LAG failover. */ 2006 bcmFieldQualifyHiGigOffloadEnginePreserveDscp = 579, /* Indicates offload engine not to 2007 change the DSCP in the packet. */ 2008 bcmFieldQualifyHiGigOffloadEnginePreserveDot1p = 580, /* Indicates offload engine not to 2009 change the DOT1P in the packet. */ 2010 bcmFieldQualifyHiGigOffloadEngineDeferredFlags = 581, /* Indicates whether a drop action/DSCP 2011 change/802.1 change was deferred. */ 2012 bcmFieldQualifyHiGigOffloadEngineSrcType = 582, /* This applies to packets destined to 2013 Offload Engine and this indicates 2014 whether the packet is ingressed on a 2015 Physical port / Virtual Port. */ 2016 bcmFieldQualifySystemPortBitmap = 583, /* To qualify on a port bitmap generated 2017 from SGLP. */ 2018 bcmFieldQualifySourceGportBitmap = 584, /* To qualify on a port bitmap generated 2019 from SVP. */ 2020 bcmFieldQualifyDevicePortBitmap = 585, /* To qualify on a port bitmap generated 2021 from device ingress port. */ 2022 bcmFieldQualifyTosLower4Bits = 586, /* To qualify on Lower 4bits of TOS. */ 2023 bcmFieldQualifyOamEgressClass2Vxlt = 587, /* To qualify on OAM Class Id assigned 2024 for packet based on Second Lookup in 2025 EGR_VLAN_XLATE table. */ 2026 bcmFieldQualifyOamEgressVxltFirstHit = 588, /* To qualify on First EGR_VXLT lookup 2027 hit status. */ 2028 bcmFieldQualifyOamEgressVxltSecondHit = 589, /* To qualify on Second EGR_VXLT lookup 2029 hit status. */ 2030 bcmFieldQualifyOamDownMEPLoopbackPacket = 590, /* Indicates Down-MEP Loopback or 2031 Down-SAT Latching Loopback packet. */ 2032 bcmFieldQualifyOamEgressPortUnicastDstMacHit = 591, /* To qualify on EGR_PORT MAC DA hit 2033 status. */ 2034 bcmFieldQualifyOamSat = 592, /* Pseudo qualifier for OAM/SAT. */ 2035 bcmFieldQualifyIngressDropEthernetOamControl = 593, /* To qualify on Drop reasons for 2036 Ethernet Oam Control Packets based on 2037 MEP type. */ 2038 bcmFieldQualifyIngressDropEthernetOamData = 594, /* To qualify on Drop reasons for 2039 Ethernet Oam Data Packets based on 2040 MEP type. */ 2041 bcmFieldQualifyIngressDropMplsOamControl = 595, /* To qualify on Drop reasons for Mpls 2042 Oam Control Packets based on MEP 2043 type. */ 2044 bcmFieldQualifyIngressDropMplsOamData = 596, /* To qualify on Drop reasons for Mpls 2045 Oam Data Packets based on MEP type. */ 2046 bcmFieldQualifyEgressClassVxlan = 597, /* Class assigned by Egress Vxlan */ 2047 bcmFieldQualifyOamEgressEtherType = 598, /* To qualify on OAM/SAT Ethernet Type. 2048 Allowed values are 0x8902 and 0x88b7 */ 2049 bcmFieldQualifyOamEgressMulticastMacHit = 599, /* To qualify on Multicast OAM Dest Mac 2050 Address Range Hit. Allowed values 2051 BCM_FIELD_OAM_MULTICAST_MAC_XXX */ 2052 bcmFieldQualifyTrunkMemberSourceModuleId = 600, /* To qualify on Module ID on a trunk 2053 member port. */ 2054 bcmFieldQualifyOamEgressClassSrcMac = 601, /* To qualify on SourceMac Class ID 2055 assigned for packet based on Hit in 2056 EGR_OAM_SAT_MISC_MAC_SA_0.15 2057 registers. */ 2058 bcmFieldQualifyMyStation2Hit = 602, /* Applicable when RIOT is enabled or l2 2059 entry is used as my station (by 2060 enabling config 2061 l2_entry_used_as_my_station) is set. 2062 To qualify on Overlay L2 termination 2063 lookup hit status for tunnel packets 2064 or Routing hit status for non-tunnel 2065 packets or when l2 entry added as my 2066 station is hit. */ 2067 bcmFieldQualifyExternalValue4 = 603, /* External lookup 4 value */ 2068 bcmFieldQualifyExternalValue5 = 604, /* External lookup 5 value */ 2069 bcmFieldQualifyExternalHit4 = 605, /* External lookup 4 hit */ 2070 bcmFieldQualifyExternalHit5 = 606, /* External lookup 5 hit */ 2071 bcmFieldQualifyGeneratedTtl = 607, /* Get match criteria for 2072 bcmFieldQualifyGeneratedTtl qualifier 2073 from the field entry. */ 2074 bcmFieldQualifyIpMulticastCompatible = 608, /* Packet is compatible for multicast. */ 2075 bcmFieldQualifyEgressClassTunnel = 609, /* Class assigned by next hop tunnel */ 2076 bcmFieldQualifyEgressClassL3InterfaceTunnel = 610, /* Class assigned by egress interface 2077 tunnel */ 2078 bcmFieldQualifyStaggeredValue0 = 611, /* Value taken from action result 0 in 2079 staggered mode. */ 2080 bcmFieldQualifyStaggeredValue1 = 612, /* Value taken from action result 1 in 2081 staggered mode. */ 2082 bcmFieldQualifyStaggeredValue2 = 613, /* Value taken from action result 2 in 2083 staggered mode. */ 2084 bcmFieldQualifyStaggeredValue3 = 614, /* Value taken from action result 3 in 2085 staggered mode. */ 2086 bcmFieldQualifyStaggeredDirectValue = 615, /* Value taken from KAPS payload in 2087 staggered mode. */ 2088 bcmFieldQualifyStaggeredPreselProfile0 = 616, /* Program selection profile value taken 2089 from action result 0 in staggered 2090 mode. */ 2091 bcmFieldQualifyStaggeredPreselProfile1 = 617, /* Program selection profile value taken 2092 from action result 1 in staggered 2093 mode. */ 2094 bcmFieldQualifyStaggeredPreselProfile2 = 618, /* Program selection profile value taken 2095 from action result 2 in staggered 2096 mode. */ 2097 bcmFieldQualifyStaggeredPreselProfile3 = 619, /* Program selection profile value taken 2098 from action result 3 in staggered 2099 mode. */ 2100 bcmFieldQualifyStaggeredPreselProfileDirect = 620, /* Program selection profile value taken 2101 from KAPS payload 0 in staggered 2102 mode. */ 2103 bcmFieldQaulifyPreselId = 621, /* Program selection value in 2nd Pass 2104 according to the 1st Pass 2105 preselector-id. */ 2106 bcmFieldQualifyEthernetData = 622, /* Egress data qualifier base only. 2107 NWK_RCRDS Ethernet data field, 2108 containing Ethernet tags (if any) and 2109 Ethertype. */ 2110 bcmFieldQualifyPreemptablePacket = 623, /* Preemptable Packet */ 2111 bcmFieldQualifyVxlanClassValid = 624, /* VXLAN Class is valid or not */ 2112 bcmFieldQualifyVxlanPacket = 625, /* Indicates whether it is a VXLAN 2113 packet */ 2114 bcmFieldQualifyVxlanVnidVlanTranslateHit = 626, /* VXLAN Network Identifier (VN_ID) 2115 lookup hit through vlan translation */ 2116 bcmFieldQualifyVxlanPayloadVlanFormat = 627, /* VLAN tag format in VXLAN payload */ 2117 bcmFieldQualifyTunnelPayloadDstMac = 628, /* Destination MAC address in Tunnel 2118 payload */ 2119 bcmFieldQualifyTunnelPayloadSrcMac = 629, /* Source MAC address in Tunnel payload */ 2120 bcmFieldQualifyTunnelPayloadEtherType = 630, /* Ethernet type in Tunnel payload */ 2121 bcmFieldQualifyTunnelPayloadOuterVlan = 631, /* Outer VLAN tag in Tunnel payload */ 2122 bcmFieldQualifyTunnelPayloadOuterVlanId = 632, /* Outer VLAN id in Tunnel payload */ 2123 bcmFieldQualifyTunnelPayloadOuterVlanPri = 633, /* Outer VLAN priority in Tunnel payload */ 2124 bcmFieldQualifyTunnelPayloadOuterVlanCfi = 634, /* Outer VLAN CFI in Tunnel payload */ 2125 bcmFieldQualifyTunnelPayloadSip = 635, /* IPv4 source address in Tunnel payload */ 2126 bcmFieldQualifyTunnelPayloadDip = 636, /* IPv4 destination address in Tunnel 2127 payload */ 2128 bcmFieldQualifyTunnelPayloadSip6 = 637, /* IPv6 source address in Tunnel payload */ 2129 bcmFieldQualifyTunnelPayloadDip6 = 638, /* IPv6 destination address in Tunnel 2130 payload */ 2131 bcmFieldQualifyTunnelPayloadIpProtocol = 639, /* IP Protocol value in Tunnel payload */ 2132 bcmFieldQualifyTunnelPayloadL4DstPort = 640, /* UDP/TCP destination port number in 2133 Tunnel payload */ 2134 bcmFieldQualifyTunnelPayloadL4SrcPort = 641, /* UDP/TCP source port number in Tunnel 2135 payload */ 2136 bcmFieldQualifyRoceBthOpcode = 642, /* To qualify on OP code on RoCEv1 / 2137 RoCEv2 Base Transport Header(BTH) */ 2138 bcmFieldQualifyRoceBthPartitionKey = 643, /* To qualify on partition key on RoCEv1 2139 / RoCEv2 Base Transport Header (BTH) */ 2140 bcmFieldQualifyRoceBthDstQueuePair = 644, /* To qualify on destination queue pair 2141 on RoCEv1 / RoCEv2 Base Transport 2142 Header(BTH) */ 2143 bcmFieldQualifyRoceBthFlags = 645, /* To qualify on flags on RoCEv1 / 2144 RoCEv2 Base Transport Header(BTH) */ 2145 bcmFieldQualifyRoceVer1Pkt = 646, /* Indicate whether it is a RoCEv1 2146 packet */ 2147 bcmFieldQualifyRoceVer2Pkt = 647, /* Indicate whether it is a RoCEv2 2148 packet */ 2149 bcmFieldQualifySrcPortSRType = 648, /* SR (Seamless Redundancy) port type 2150 (bcmFieldPortSRTypeXXX) assigned to 2151 the source port */ 2152 bcmFieldQualifyDstPortSRType = 649, /* SR (Seamless Redundancy) port type 2153 (bcmFieldPortSRTypeXXX) assigned to 2154 the destination port */ 2155 bcmFieldQualifySrcPortSRRoleInterlink = 650, /* Indicates whether the SR role for the 2156 source is an interlink */ 2157 bcmFieldQualifyDstPortSRRoleInterlink = 651, /* Indicates whether the SR role for the 2158 destination is an interlink */ 2159 bcmFieldQualifySrcPortSRMode = 652, /* The SR port mode 2160 (bcmFieldSRPortModeXXX) assigned to 2161 the source port */ 2162 bcmFieldQualifyDstPortSRMode = 653, /* The SR port mode 2163 (bcmFieldSRPortModeXXX) assigned to 2164 the destination port */ 2165 bcmFieldQualifySrcPortSRNetId = 654, /* The SR NET ID (0~7) assigned to the 2166 source port */ 2167 bcmFieldQualifyDstPortSRNetId = 655, /* The SR NET ID (0~7) assigned to the 2168 destination port */ 2169 bcmFieldQualifySrcPortSRLanId = 656, /* The SR LAN ID (0 for LAN A and 1 for 2170 LAN B) assigned to the source port */ 2171 bcmFieldQualifyDstPortSRLanId = 657, /* The SR LAN ID (0 for LAN A and 1 for 2172 LAN B) assigned to the destination 2173 port */ 2174 bcmFieldQualifySRTagType = 658, /* The SR (Seamless Redundancy) tag type 2175 (bcmFieldSRTagTypeXXX) identified in 2176 this packet */ 2177 bcmFieldQualifySRLanId = 659, /* The SR LAN ID (0 for LAN A and 1 for 2178 LAN B) in the SR tag. Valid only if 2179 the packet contains an SR tag. */ 2180 bcmFieldQualifySRNetId = 660, /* The SR NET ID (0~7) in the SR tag. 2181 Valid only if the packet contains an 2182 SR tag. */ 2183 bcmFieldQualifyVlanSREnable = 661, /* Indicates whether SR (Seamless 2184 Redundancy) is enabled in this VLAN */ 2185 bcmFieldQualifyVlanSRLanId = 662, /* Indicates the SR LAN ID (0 for LAN A 2186 and 1 for LAN B) for this VLAN. Valid 2187 only if SR is enabled for this VLAN. */ 2188 bcmFieldQualifySRFlowId = 663, /* SR flow ID for the SR flow that the 2189 packet belongs to */ 2190 bcmFieldQualifyL2DestSRNodeType = 664, /* SR node type (bcmFieldSRNodeTypeXXX) 2191 for the destination address */ 2192 bcmFieldQualifySRNetIdMatched = 665, /* Indicates whether the SR packet's NET 2193 ID matches the configured NET ID on 2194 the destination port */ 2195 bcmFieldQualifySRSrcNodeIsSan = 666, /* Indicates whether the source address 2196 belongs to an SR SAN node */ 2197 bcmFieldQualifySRSupervisionType = 667, /* The SR supervision type 2198 (bcmFieldSRSupervisionTypeXXX) if 2199 it's an SR supervision packet */ 2200 bcmFieldQualifySRError = 668, /* Indicates SR errors for the packet */ 2201 bcmFieldQualifyL2SrcMulticastHit = 669, /* Indicates L2 source address found on 2202 the correct multicast group. */ 2203 bcmFieldQualifyL2DstMulticastHit = 670, /* Indicates L2 destination address 2204 found and result is a multicast 2205 group. */ 2206 bcmFieldQualifySRDuplicate = 671, /* SR (Seamless Redundancy): Indicates 2207 whether this packet is a duplicate SR 2208 packet */ 2209 bcmFieldQualifyTsnFlowId = 672, /* TSN (Time-Sensitive Networking) flow 2210 ID for the TSN flow that the packet 2211 belongs to */ 2212 bcmFieldQualifyExternalValue6 = 673, /* External lookup 6 value */ 2213 bcmFieldQualifyExternalValue7 = 674, /* External lookup 7 value */ 2214 bcmFieldQualifyExternalHit6 = 675, /* External lookup 6 hit */ 2215 bcmFieldQualifyExternalHit7 = 676, /* External lookup 7 hit */ 2216 bcmFieldQualifyMirrorDest = 677, /* Link Layer mirror command value */ 2217 bcmFieldQualifyPacketIsIEEE1588 = 678, /* Indicating whether the packet is 1588 */ 2218 bcmFieldQualifyIEEE1588Encapsulation = 679, /* IEEE-1588 Encapsulation according to 2219 bcm_field_IEEE1588Encap_t */ 2220 bcmFieldQualifyIEEE1588CompensateTimeStamp = 680, /* IEEE-1588 update time stamp */ 2221 bcmFieldQualifyIEEE1588Command = 681, /* Command used by egress pipeline, 2222 indicating if CF(correction field) 2223 needs to be update */ 2224 bcmFieldQualifyIEEE1588HeaderOffset = 682, /* This field indicates the offset of 2225 the IEEE-1588 header. Offset in bytes */ 2226 bcmFieldQualifyHeaderFormatExtension = 683, /* Qualify on header format extension 2227 from profile of header format */ 2228 bcmFieldQualifyMacSecTagPresent = 684, /* Qualifies the MACSEC tagged packets */ 2229 bcmFieldQualifyMacSecTag = 685, /* Qualifies on the SecTag field in 2230 MACSEC tagged packets */ 2231 bcmFieldQualifyMacSecDstMacRangeHit = 686, /* Qualifies hit on Destination MAC 2232 addresses range; which is configured 2233 by API 2234 bcm_field_macsec_DstMacRange_set */ 2235 bcmFieldQualifyFromMacSecPort = 687, /* Packet forwarded through the internal 2236 MACSEC port */ 2237 bcmFieldQualifyMacSecFlow = 688, /* Qualifies on the MACSEC packet flow */ 2238 bcmFieldQualifyEgressBridgedForwardingDataHigh = 689, /* Used for ACL-while-bridging. Contains 2239 the 64 bits of packet data starting 2240 80 bits after SA */ 2241 bcmFieldQualifyEgressBridgedForwardingDataLow = 690, /* Used for ACL-while-bridging. Contains 2242 the 56 bits of packet data starting 2243 144 bits after SA */ 2244 bcmFieldQualifyEgressBridgedAclDataHigh = 691, /* Used for ACL-while-bridging. Contains 2245 the 40 bits of packet data starting 2246 200 bits after SA */ 2247 bcmFieldQualifyEgressBridgedAclDataLow = 692, /* Used for ACL-while-bridging. 2248 Contains the 32 bits of packet data 2249 starting 240 bits after SA */ 2250 bcmFieldQualifySysHdrType = 693, /* Qualifier is to match on incoming 2251 packet system header type */ 2252 bcmFieldQualifySubportTagPresent = 694, /* Match on packet's subport tag */ 2253 bcmFieldQualifyNetworkTagType = 695, /* Match on Network (VnTag/Etag) */ 2254 bcmFieldQualifyCnTagPresent = 696, /* Match on congestion tag */ 2255 bcmFieldQualifyL2PktType = 697, /* Match on L2 Packet Type 2256 (Ethernet/Snap/Llc/None) */ 2257 bcmFieldQualifyPktType = 698, /* Match on Packet type after L2 header */ 2258 bcmFieldQualifyMplsCwPresent = 699, /* Match on MPLS Control word */ 2259 bcmFieldQualifyMplsMcastEthertypePresent = 700, /* Match on Multicast MPLS Ethertype */ 2260 bcmFieldQualifyIpv4OptionHdrType = 701, /* Match on IPv4 Option header types. */ 2261 bcmFieldQualifyIpv6ExtensionHdrType = 702, /* Match on IPv6 Extension header types. */ 2262 bcmFieldQualifyOverlayVlanFormat = 703, /* Match on Overlay vlan tag format. */ 2263 bcmFieldQualifyOverlayL2PktType = 704, /* Match on Overlay L2 Packet type */ 2264 bcmFieldQualifyOverlayPktType = 705, /* Match on Overlay Packet type */ 2265 bcmFieldQualifyOverlayIpv4OptionHdrType = 706, /* Match on Overlay IPv4 option header 2266 types */ 2267 bcmFieldQualifyOverlayIpv6ExtensionHdrType = 707, /* Match on Overlay IPv6 option header 2268 types */ 2269 bcmFieldQualifyFrontPanelPkt = 708, /* Match on packets incoming from Front 2270 panel ports */ 2271 bcmFieldQualifyHiGigProxyTunnelType = 709, /* Match on incoming HiGig Proxy tunnel 2272 types */ 2273 bcmFieldQualifyIpFragPkt = 710, /* Match on IP Fragment packet */ 2274 bcmFieldQualifyOuterPriTaggedPkt = 711, /* Match on Outer priority tagged packet */ 2275 bcmFieldQualifyIpInIpPkt = 712, /* Match on IP in IP packet */ 2276 bcmFieldQualifyIpmcV4Pkt = 713, /* Match on packets with IPMC IPv4 2277 packet */ 2278 bcmFieldQualifyIpmcV6Pkt = 714, /* Match on packets with IPMC IPv6 2279 packet */ 2280 bcmFieldQualifyIpChecksumOkPkt = 715, /* Match on IP packet with Checksum OK */ 2281 bcmFieldQualifyNetworkTagMulticastPkt = 716, /* Match on multicast packets with VNTAG 2282 or ETAG */ 2283 bcmFieldQualifyIpTtlZeroPkt = 717, /* Match on IP packet with Zero TTL 2284 value */ 2285 bcmFieldQualifyPimBidirDfStatus = 718, /* Match on PIM Bi-directional 2286 Designated Forwarder status */ 2287 bcmFieldQualifyInterfaceClassL2Type = 719, /* Qualifier is to to indicate whether 2288 the Interface L2 Class ID is from VFI 2289 or VLAN */ 2290 bcmFieldQualifyIntPktVersionOne = 720, /* Match on the INT (Inband-Telemetry) 2291 Version One. The data '1' indicates 2292 the INT version is set to 1, 0 2293 indicates version other than 1. */ 2294 bcmFieldQualifyIntPktOverflowed = 721, /* Match on the INT (Inband-Telemetry) 2295 Header Overflow Bit. The data '1' 2296 indicates the frame is full of 2297 telemetry information. The INT header 2298 current length exceeds max length and 2299 can't add any more metadata to it. */ 2300 bcmFieldQualifyIntPktLengthValid = 722, /* Match on the INT (Inband-Telemetry) 2301 valid length, the data '1' indicates 2302 the difference between INT Header max 2303 length and current length is greater 2304 than INT Metadata length, that is the 2305 frame is capable of accommodating INT 2306 metadata. */ 2307 bcmFieldQualifyIntPktType = 723, /* Match on the INT (Inband-Telemetry) 2308 Message Type (bcmFieldIntPktTypeXX). */ 2309 bcmFieldQualifyIntPktFinalHop = 724, /* Match on the INT (Inband-Telemetry) 2310 Maximum Hop Limit Check, the data '1' 2311 indicates INT exceeds Max Hop Count 2312 (Hop Limit >= Hop Count). */ 2313 bcmFieldQualifyTunnelSubType = 725, /* TunnelType (bcmFieldTunnelSubTypeXXX 2314 in bcm_field_tunnel_subtype_t). */ 2315 bcmFieldQualifyNshServicePathId = 726, /* Match on NSH Service Path ID. */ 2316 bcmFieldQualifyNshServiceIndex = 727, /* Match on NSH Service Index. */ 2317 bcmFieldQualifyKeyGenVar = 728, /* Match on Key Gen Var */ 2318 bcmFieldQualifyRoeFrameType = 729, /* Match on Roe frame type set in MPLS 2319 entry for a MPLS packet or based on 2320 UDP port number for an IP tunnel 2321 packet. Roe frame types are defined 2322 by bcm_field_roe_frame_type_t. */ 2323 bcmFieldQualifyBfdGoodPkt = 730, /* Match on BFD Good packet (Good here 2324 represents the valid TTL range for 2325 1-hop and M-hop). */ 2326 bcmFieldQualifyBfdPktWithDstIpLoopbackAddr = 731, /* Match whether the incoming BFD packet 2327 has destination loopback IP Address. */ 2328 bcmFieldQualifyMplsControlPkt = 732, /* Match on MPLS Control Packet (packet 2329 with VCCV_1/2/3/4 and 2330 [LSP]/GAL/G-ACH). */ 2331 bcmFieldQualifyStageIngressFlowtracker = 733, /* Field Processor pipeline ingress 2332 flowtracker stage. */ 2333 bcmFieldQualifyInterfaceClassMplsLookup1 = 734, /* Qualifies on Class identifier derived 2334 from MPLS label 1 entry Lookup. */ 2335 bcmFieldQualifyInterfaceClassMplsLookup2 = 735, /* Qualifies on Class identifier derived 2336 from MPLS label 2 entry Lookup. */ 2337 bcmFieldQualifyInterfaceClassMplsLookup3 = 736, /* Qualifies on Class identifier derived 2338 from MPLS label 3 entry Lookup. */ 2339 bcmFieldQualifyInterfaceClassL3Tunnel = 737, /* Qualifies on Class identifier derived 2340 from L3 Tunnel. */ 2341 bcmFieldQualifyBfdPktVersionOne = 738, /* Match on BFD Version One. The data 2342 '1' indicates the ersion as 1, 0 2343 indicates version other than 1. */ 2344 bcmFieldQualifyGenevePktVersionZero = 739, /* Match on Geneve Version Zero. The 2345 data '1' indicates the version as 0, 2346 '0' indicates version other than 0. */ 2347 bcmFieldQualifyGpePktVersionZero = 740, /* Match on Gpe Version Zero. The data 2348 '1' indicates the version as 0, '0' 2349 indicates version other than 0. */ 2350 bcmFieldQualifyGenevePktWithOam = 741, /* Match on BFD over Geneve Packet. */ 2351 bcmFieldQualifyGpePktWithOam = 742, /* Match on BFD over Gpe Packet. */ 2352 bcmFieldQualifyInnerBfdPktVersionOne = 743, /* Match on Inner BFD Version One. The 2353 data '1' indicates the ersion as 1, 0 2354 indicates version other than 1. */ 2355 bcmFieldQualifyPktDstAddrType = 744, /* Match on Packet destination address 2356 type. */ 2357 bcmFieldQualifyPktInnerDstAddrType = 745, /* Match on Packet inner destination 2358 address type. */ 2359 bcmFieldQualifyInnerL4Ports = 746, /* Four bytes after Inner L3 header are 2360 available. */ 2361 bcmFieldQualifyTafEnable = 747, /* Qualifies on TAF (Time Aware 2362 Filtering) enable */ 2363 bcmFieldQualifyTafGateId = 748, /* Qualifies on TAF(Time Aware 2364 Filtering) gate id */ 2365 bcmFieldQualifyTafGateState = 749, /* Qualifies on TAF(Time Aware 2366 Filtering) gate state */ 2367 bcmFieldQualifyTafCosProfile = 750, /* Qualifies on TAF(Time Aware 2368 Filtering) CoS profile */ 2369 bcmFieldQualifyElkRangeL4DstPort = 751, /* Qualifies for L4 Dst port of ELK 2370 range */ 2371 bcmFieldQualifyElkRangeL4SrcPort = 752, /* Qualifies for L4 Src port of ELK 2372 range */ 2373 bcmFieldQualifyIp6PktNextHeader = 753, /* Qualifies for Next Header protocol 2374 field in IPv6 header. */ 2375 bcmFieldQualifyIp6PktHopLimit = 754, /* Qualifies for Hop limit protocol 2376 field in IPv6 header. */ 2377 bcmFieldQualifyIp6PktTrafficClass = 755, /* Qualifies for Traffic Class protocol 2378 field in IPv6 header. */ 2379 bcmFieldQualifyInnerIp6PktNextHeader = 756, /* Qualifies for Next Header protocol 2380 field in Inner IPv6 header. */ 2381 bcmFieldQualifyInnerIp6PktHopLimit = 757, /* Qualifies for Hop limit protocol 2382 field in Inner IPv6 header. */ 2383 bcmFieldQualifyInnerIp6PktTrafficClass = 758, /* Qualifies for Traffic Class protocol 2384 field in Inner IPv6 header. */ 2385 bcmFieldQualifyIpTunnelTtl = 759, /* Qualifies on outer TTL for IP Tunnels 2386 and Vxlan */ 2387 bcmFieldQualifyIpTunnelTtlClassZero = 760, /* Qualifies on outer TTL class for IP 2388 Tunnels and Vxlan */ 2389 bcmFieldQualifyRangeCheckGroup = 761, /* Range Group Identifier for a set of 2390 Range IDs. */ 2391 bcmFieldQualifyFlowtrackerGroupId = 762, /* Qualifies on Flow group id 2392 assigned(bcmFieldActionFlowtrackerGroupId) 2393 by FlowTracker based Field Processor 2394 Stage. */ 2395 bcmFieldQualifyFlowtrackerClassId = 763, /* Qualifies on Classifier ID from 2396 Flowtracker group */ 2397 bcmFieldQualifyFlowtrackerGroupValid = 764, /* Qualifies on event Flowtracker group 2398 valid status */ 2399 bcmFieldQualifyFlowtrackerDisabled = 765, /* Qualifies on event whether 2400 Flowtracker flow tracking is 2401 disabled. */ 2402 bcmFieldQualifyFlowtrackerMeteringExceeded = 766, /* Qualifies on the event whether 2403 Flowtracker metering is exceeded. */ 2404 bcmFieldQualifyFlowtrackerCollectorCopy = 767, /* Qualifies on the event whether 2405 initial or sample copied to collector 2406 happened by Flowtracker. */ 2407 bcmFieldQualifyFlowtrackerFlowTableFull = 768, /* Qualifies on the Flowtracker event 2408 whether the flow table is full. */ 2409 bcmFieldQualifyFlowtrackerGroupFlowExceeded = 769, /* Qualifies on the event whether flow 2410 limit for Flowtracker is exceeded. */ 2411 bcmFieldQualifyFlowtrackerExportQueueFull = 770, /* Qualifies on the event whether 2412 Flowtracker export queue is full. */ 2413 bcmFieldQualifyOpaqueTagType = 771, /* Qualifies on the tag type configured 2414 for opaque tags. */ 2415 bcmFieldQualifyOpaqueTagHigh = 772, /* Qualifies on the higher 32 bits of 2416 opaque tag. */ 2417 bcmFieldQualifyOpaqueTagLow = 773, /* Qualifies on the lower 32 bits of 2418 opaque tag. */ 2419 bcmFieldQualifyInnerDosAttack = 774, /* Denial of Service attack in inner 2420 headers of frame. */ 2421 bcmFieldQualifyDosAttackEvents = 775, /* Qualifies on the dos attack events in 2422 outer header of frame. */ 2423 bcmFieldQualifyInnerDosAttackEvents = 776, /* Qualifies on the dos attack events in 2424 inner header of frame. */ 2425 bcmFieldQualifySrcTMPort = 777, /* Qualifies on source TM port. */ 2426 bcmFieldQualifyContainer = 778, /* This qualifier will be used as 2427 container in IPMF3, to receive the 2428 action buffer, when performing 2429 cascading between IPMF2 and IPMF3. */ 2430 bcmFieldQualifyEgressForwardingClassId = 779, /* Qualifies on the Class Identifier 2431 assigned by Egress Adaptation 2432 forwarding tables. */ 2433 bcmFieldQualifyPktFlowType = 780, /* Psuedo Qualifier to define the flow 2434 for the rules configured to match on 2435 qualifiers related to zone match Ids. */ 2436 bcmFieldQualifyVlanTranslateClassId = 781, /* Qualifies on the Class Identifier 2437 assigned by Vlan Translate tables. */ 2438 bcmFieldQualifyIpIdentifier = 782, /* Qualifies on 16-bits Identifier field 2439 available in IP Header. */ 2440 bcmFieldQualifyTcpWindowSize = 783, /* Qualifies on the Tcp Window protocol 2441 field in TCP header of the packet. */ 2442 bcmFieldQualifyIp4Length = 784, /* Qualifies on the total length 2443 protocol field of IPv4 header of the 2444 packet. */ 2445 bcmFieldQualifyIp6Length = 785, /* Qualifies on the payload Length 2446 protocol field of IPv6 header of the 2447 packet. */ 2448 bcmFieldQualifyTunnelPayloadIp4Length = 786, /* Qualifies on the total length 2449 protocol field of inner IPv4 header 2450 of the packet. */ 2451 bcmFieldQualifyTunnelPayloadIp6Length = 787, /* Qualifies on the payload Length 2452 protocol field of inner IPv6 header 2453 of the packet. */ 2454 bcmFieldQualifyGbpPresent = 788, /* When set matches on GBP Presence. */ 2455 bcmFieldQualifyHiGigGbpPresent = 789, /* When set matches on presence of GBP 2456 Source ID, present after L2 Tag, 2457 carried to the remote device, via 2458 HiGig.. */ 2459 bcmFieldQualifyGbpSrcId = 790, /* Qualifies on the GBP Source ID of the 2460 packet. */ 2461 bcmFieldQualifyVxlanGbpPresent = 791, /* When set matches on Vxlan GBP 2462 presence flag. */ 2463 bcmFieldQualifyFlowtrackerCheck = 792, /* Qualifies on the results of 2464 Flowtracker checker events in Flow 2465 Tracker Module. */ 2466 bcmFieldQualifyFlowtrackerLearn = 793, /* Match on packet which was learnt by 2467 Flowtracker module */ 2468 bcmFieldQualifyCosMapSelect = 794, /* Match on the COS map type */ 2469 bcmFieldQualifyOpaqueObject1 = 795, /* Matches on Opaque Object1 */ 2470 bcmFieldQualifyOpaqueObject2 = 796, /* Matches on Opaque Object2 */ 2471 bcmFieldQualifyOpaqueObject3 = 797, /* Matches on Opaque Object3 */ 2472 bcmFieldQualifyOpaqueObject4 = 798, /* Matches on Opaque Object4 */ 2473 bcmFieldQualifyIncomingOuterVlanId = 799, /* Qualifies on the packet?s Incoming 2474 Outer VLAN ID */ 2475 bcmFieldQualifyGbpDstId = 800, /* Qualifies on the GBP Destination ID 2476 of the packet */ 2477 bcmFieldQualifyHiGigGbpSrcId = 801, /* Qualifies on GBP Source ID, present 2478 after L2 Tag, carried to the remote 2479 device, via HiGig. */ 2480 bcmFieldQualifyLoopbackSubtype = 802, /* Qualifies on subtype of the Loopback 2481 header */ 2482 bcmFieldQualifyPphPresent = 803, /* Qualifies on PPH present field in 2483 ITMH. */ 2484 bcmFieldQualifyPacketProcessingInVportClass = 804, /* Qualifies on PPH In-LIF profile. */ 2485 bcmFieldQualifyUDHBase0 = 805, /* Qualifies UDH0 base value */ 2486 bcmFieldQualifyUDHBase1 = 806, /* Qualifies UDH1 base value */ 2487 bcmFieldQualifyUDHBase2 = 807, /* Qualifies UDH2 base value */ 2488 bcmFieldQualifyUDHBase3 = 808, /* Qualifies UDH3 base value */ 2489 bcmFieldQualifyNetworkQos = 809, /* Qualify Upon Network Qos. */ 2490 bcmFieldQualifyAceEntryId = 810, /* Qualify Upon ACE entry ID. */ 2491 bcmFieldQualifyIp4Protocol = 811, /* Qualify Upon IPv4 Protocol. */ 2492 bcmFieldQualifyIp4Tos = 812, /* Qualify Upon IPv4 TOS. */ 2493 bcmFieldQualifyIp4Ttl = 813, /* Qualify Upon IPv4 TTL. */ 2494 bcmFieldQualifyInVportDataIndex = 814, /* Qualifies upon the ingress logical 2495 port data index. */ 2496 bcmFieldQualifyEtherTypeUntagged = 815, /* Ethernet Type, only for untagged 2497 frames. */ 2498 bcmFieldQualifyNetworkLoadBalanceKeyInitial = 816, /* Qualifies on the initial Network Load 2499 Balancing key. */ 2500 bcmFieldQualifyNetworkLoadBalanceKey = 817, /* Qualifies on the Network Load 2501 Balancing key, after ingress PMF1 2502 stage */ 2503 bcmFieldQualifyEcmpLoadBalanceKey0Initial = 818, /* Qualifies on the initial ECMP Load 2504 Balancing key 0. */ 2505 bcmFieldQualifyEcmpLoadBalanceKey0 = 819, /* Qualifies on the ECMP Load Balancing 2506 key 0, after ingress PMF1 stage */ 2507 bcmFieldQualifyEcmpLoadBalanceKey1Initial = 820, /* Qualifies on the initial ECMP Load 2508 Balancing key 1. */ 2509 bcmFieldQualifyEcmpLoadBalanceKey1 = 821, /* Qualifies on the ECMP Load Balancing 2510 key 1, after ingress PMF1 stage */ 2511 bcmFieldQualifyEcmpLoadBalanceKey2Initial = 822, /* Qualifies on the initial ECMP Load 2512 Balancing key 2. */ 2513 bcmFieldQualifyEcmpLoadBalanceKey2 = 823, /* Qualifies on the ECMP Load Balancing 2514 key 2, after ingress PMF1 stage */ 2515 bcmFieldQualifyTrunkLoadBalanceKeyInitial = 824, /* Qualifies on the initial LAG Load 2516 Balancing Key */ 2517 bcmFieldQualifyStateTableKey = 825, /* Qualifies on the memory index which 2518 the state data is set */ 2519 bcmFieldQualifyStateTableData = 826, /* Qualifies on the state table payload. */ 2520 bcmFieldQualifyCompareKeysResult0 = 827, /* Qualifies on the Result of comapring 2521 the first pair of initial keys */ 2522 bcmFieldQualifyCompareKeysResult1 = 828, /* Qualifies on the Result of comapring 2523 the second pair of initial keys */ 2524 bcmFieldQualifyCompareKeysTcam0 = 829, /* Qualifies on the Result of comapring 2525 inital key and TCAM result 0 */ 2526 bcmFieldQualifyCompareKeysTcam1 = 830, /* Qualifies on the Result of comapring 2527 inital key and TCAM result 1. */ 2528 bcmFieldQualifyLayerRecordType = 831, /* Qualifies on the Layer Record Type. */ 2529 bcmFieldQualifyLayerRecordOffset = 832, /* Qualifies on the Layer Record Offset. */ 2530 bcmFieldQualifyLayerRecordQualifier = 833, /* Qualifies on the Layer Record 2531 Qualfier (info). */ 2532 bcmFieldQualifyUDHBase = 834, /* User define header base, used in 2533 IPMF3. */ 2534 bcmFieldQualifyForwardingLayerIndex = 835, /* Qualifies on the Forwarding Layer 2535 Index. */ 2536 bcmFieldQualifyIPTProfile = 836, /* Qualifies upon IPT Profile. */ 2537 bcmFieldQualifyAcInLifWideData = 837, /* Qualifies on the Ac in-lif 2538 wide(generic) data */ 2539 bcmFieldQualifyNativeAcInLifWideData = 838, /* Qualifies on the native Ac in-lif 2540 wide(generic) data */ 2541 bcmFieldQualifyForwardingProfile = 839, /* Qualifies on the Forwarding Profile. */ 2542 bcmFieldQualifyContextId = 840, /* Qualifies on the Context Id. */ 2543 bcmFieldQualifyForwardingLayerQualifier = 841, /* Qualifies on the Forwarding Layer 2544 Qualifier. */ 2545 bcmFieldQualifyTracePacket = 842, /* Qualifies on the Trace Packet. */ 2546 bcmFieldQualifyTrunkLoadBalanceKey = 843, /* Qualifies on the LAG Load Balancing 2547 Key. */ 2548 bcmFieldQualifyForward = 844, /* Raw data for detination. */ 2549 bcmFieldQualifyParsingStartType = 845, /* Qualifies on the layer type that 2550 egress parser should consider. */ 2551 bcmFieldQualifyParsingStartOffset = 846, /* Qualifies on which offset egress 2552 parser should start parsing. */ 2553 bcmFieldQualifyUDHData0 = 847, /* Qualifies on user defined header 0 2554 data. */ 2555 bcmFieldQualifyUDHData1 = 848, /* Qualifies on user defined header 1 2556 data. */ 2557 bcmFieldQualifyUDHData2 = 849, /* Qualifies on user defined header 2 2558 data. */ 2559 bcmFieldQualifyUDHData3 = 850, /* Qualifies on user defined header 3 2560 data. */ 2561 bcmFieldQualifyRxSnoopStrength = 851, /* Qualifies on Snoop strength. */ 2562 bcmFieldQualifyRxSnoopCode = 852, /* Qualifies on Snoop code. */ 2563 bcmFieldQualifyVisibility = 853, /* Qualifies on whether visibility is 2564 set. */ 2565 bcmFieldQualifyVisibilityClear = 854, /* Qualifies on whether visibility is 2566 clear. */ 2567 bcmFieldQualifyEthernetMulticast = 855, /* Qualify on Ethernet packets which 2568 destination MAC address is multicast 2569 (MAC-DA[40] is set). */ 2570 bcmFieldQualifyEthernetBroadcast = 856, /* Qualify on Ethernet packets which 2571 destination MAC address is broadcast 2572 (MAC-DA[47:0] is all 1). */ 2573 bcmFieldQualifyEthernetFirstTpidExist = 857, /* Qualify on Ethernet packets which 2574 their first Vlan TPID exists. */ 2575 bcmFieldQualifyEthernetFirstTpidIndex = 858, /* Qualify on Ethernet packets first 2576 Vlan TPID Index. */ 2577 bcmFieldQualifyEthernetSecondTpidExist = 859, /* Qualify on Ethernet packets which 2578 their second Vlan TPID exists. */ 2579 bcmFieldQualifyEthernetSecondTpidIndex = 860, /* Qualify on Ethernet packets second 2580 Vlan TPID Index. */ 2581 bcmFieldQualifyEthernetThirdTpidExist = 861, /* Qualify on Ethernet packets which 2582 their third Vlan TPID exists. */ 2583 bcmFieldQualifyEthernetThirdTpidIndex = 862, /* Qualify on Ethernet packets third 2584 Vlan TPID Index. */ 2585 bcmFieldQualifyIpHasOptions = 863, /* Qualify on IPv4 packets where the IP 2586 Header include options. */ 2587 bcmFieldQualifyIpFirstFrag = 864, /* Qualify on IPv4 packets where the IP 2588 Header is fragmented and this is the 2589 first fragment. */ 2590 bcmFieldQualifyIpTunnelType = 865, /* Qualify on IPv4 TunnelType 2591 (bcmFieldTunnelXXX). */ 2592 bcmFieldQualifyIp6MulticastCompatible = 866, /* Qualify on IPv6 packets which their 2593 DIP is Multicast (8msb are 0xFF). */ 2594 bcmFieldQualifyIp6FirstAdditionalHeaderExist = 867, /* Qualify on IPv6 packets first 2595 additional header exists. */ 2596 bcmFieldQualifyItmhExtensionExist = 868, /* Qualify if Ingress TM Header 2597 extension exists. */ 2598 bcmFieldQualifyItmhDestinationFec = 869, /* Qualify if Ingress TM Header 2599 destination is FEC. */ 2600 bcmFieldQualifyItmhPphType = 870, /* Qualify on Ingress TM Header PPH 2601 type. */ 2602 bcmFieldQualifyStatSamplingCode = 871, /* Qualify on Statistic Sampling code 2603 value. */ 2604 bcmFieldQualifyStatSamplingQualifier = 872, /* Qualify on Statistic Sampling 2605 qualifier value. */ 2606 bcmFieldQualifyRpfEcmpMode = 873, /* Qualify on RPF ECMP MODE value. */ 2607 bcmFieldQualifyStatOamLM = 874, /* Qualify on OAM LM counter value. */ 2608 bcmFieldQualifyInInterface = 875, /* Qualify on the in LIF encoded as 2609 interface. */ 2610 bcmFieldQualifyOutInterface = 876, /* Qualify on the out LIF encoded as 2611 interface */ 2612 bcmFieldQualifyInVportClass = 877, /* Qualify on the profile of an in LIF 2613 encoded as Gport. */ 2614 bcmFieldQualifyOutVportClass = 878, /* Qualify on the profile of an out LIF 2615 encoded as Gport. */ 2616 bcmFieldQualifyInterfaceClass = 879, /* Qualify on the profile of a LIF 2617 encoded as interface. */ 2618 bcmFieldQualifyPortClassPacketProcessing = 880, /* Qualify on the profile of a packet 2619 processing port. */ 2620 bcmFieldQualifyPortClassTrafficManagement = 881, /* Qualify on the profile of a traffic 2621 management port. */ 2622 bcmFieldQualifyOutPortTrafficManagement = 882, /* Qualify upon out-TM port. */ 2623 bcmFieldQualifyMulticastRpfMode = 883, /* Qualify upon Multicast RPF Mode. */ 2624 bcmFieldQualifyTpid = 884, /* Qualify upon VLAN TPID. */ 2625 bcmFieldQualifyVlanId = 885, /* Qualify upon VLAN tag Id. */ 2626 bcmFieldQualifyVlanPri = 886, /* Qualify upon VLAN priority. */ 2627 bcmFieldQualifyVlanCfi = 887, /* Qualify upon VLAN Cfi. */ 2628 bcmFieldQualifyVlanPriCfi = 888, /* Qualify upon VLAN Cfi+Pri (4 bits). */ 2629 bcmFieldQualifyVlan = 889, /* Qualify upon VLAN Tag. */ 2630 bcmFieldQualifyMplsLabel = 890, /* Qualify upon MPLS Label. */ 2631 bcmFieldQualifyMplsLabelId = 891, /* Qualify upon ID field of the MPLS 2632 Label. */ 2633 bcmFieldQualifyMplsLabelTtl = 892, /* Qualify upon TTL field of the MPLS 2634 Label. */ 2635 bcmFieldQualifyMplsLabelBos = 893, /* Qualify upon BOS field of the MPLS 2636 Label. */ 2637 bcmFieldQualifyMplsLabelExp = 894, /* Qualify upon EXP field of the MPLS 2638 Label. */ 2639 bcmFieldQualifyInVPort0 = 895, /* Ingress virtual port 0. */ 2640 bcmFieldQualifyInVPort1 = 896, /* Ingress virtual port 1. */ 2641 bcmFieldQualifyOutVPort0 = 897, /* Egress virtual port 0. */ 2642 bcmFieldQualifyOutVPort1 = 898, /* Egress virtual port 1. */ 2643 bcmFieldQualifyOutVPort2 = 899, /* Egress virtual port 2. */ 2644 bcmFieldQualifyOutVPort3 = 900, /* Egress virtual port 3. */ 2645 bcmFieldQualifyBierStringOffset = 901, /* Qualifies upon Bier string offset. */ 2646 bcmFieldQualifyBierStringSize = 902, /* Qualifies upon Bier string size. */ 2647 bcmFieldQualifyPacketIsBier = 903, /* Qualifies upon Bier packets. */ 2648 bcmFieldQualifyPortClassPacketProcessingGeneralData = 904, /* Qualify on the general data profile 2649 of a packet processing port. */ 2650 bcmFieldQualifyForwardingAdditionalInfo = 905, /* Qualifies on the Forwarding 2651 additional info. */ 2652 bcmFieldQualifyInVportClass0 = 906, /* Qualify on the profile of an in LIF 2653 encoded as Gport. */ 2654 bcmFieldQualifyInVportClass1 = 907, /* Qualify on the profile of an in LIF 2655 encoded as Gport. */ 2656 bcmFieldQualifyStatId0 = 908, /* Qualifies on statistics ID 0. */ 2657 bcmFieldQualifyStatId1 = 909, /* Qualifies on statistics ID 1. */ 2658 bcmFieldQualifyStatId2 = 910, /* Qualifies on statistics ID 2. */ 2659 bcmFieldQualifyStatId3 = 911, /* Qualifies on statistics ID 3. */ 2660 bcmFieldQualifyStatId4 = 912, /* Qualifies on statistics ID 4. */ 2661 bcmFieldQualifyStatId5 = 913, /* Qualifies on statistics ID 5. */ 2662 bcmFieldQualifyStatId6 = 914, /* Qualifies on statistics ID 6. */ 2663 bcmFieldQualifyStatId7 = 915, /* Qualifies on statistics ID 7. */ 2664 bcmFieldQualifyStatId8 = 916, /* Qualifies on statistics ID 8. */ 2665 bcmFieldQualifyStatId9 = 917, /* Qualifies on statistics ID 9. */ 2666 bcmFieldQualifyStatProfile0 = 918, /* Qualifies on statistics profile 0. */ 2667 bcmFieldQualifyStatProfile1 = 919, /* Qualifies on statistics profile 1. */ 2668 bcmFieldQualifyStatProfile2 = 920, /* Qualifies on statistics profile 2. */ 2669 bcmFieldQualifyStatProfile3 = 921, /* Qualifies on statistics profile 3. */ 2670 bcmFieldQualifyStatProfile4 = 922, /* Qualifies on statistics profile 4. */ 2671 bcmFieldQualifyStatProfile5 = 923, /* Qualifies on statistics profile 5. */ 2672 bcmFieldQualifyStatProfile6 = 924, /* Qualifies on statistics profile 6. */ 2673 bcmFieldQualifyStatProfile7 = 925, /* Qualifies on statistics profile 7. */ 2674 bcmFieldQualifyStatProfile8 = 926, /* Qualifies on statistics profile 8. */ 2675 bcmFieldQualifyStatProfile9 = 927, /* Qualifies on statistics profile 9. */ 2676 bcmFieldQualifyExtStat0 = 928, /* Qualifies on External Statistics ID 2677 0. */ 2678 bcmFieldQualifyExtStat1 = 929, /* Qualifies on External Statistics ID 2679 1. */ 2680 bcmFieldQualifyExtStat2 = 930, /* Qualifies on External Statistics ID 2681 2. */ 2682 bcmFieldQualifyExtStat3 = 931, /* Qualifies on External Statistics ID 2683 3. */ 2684 bcmFieldQualifyExtStatProfile0 = 932, /* Qualifies on External Statistics 2685 profile 0. */ 2686 bcmFieldQualifyExtStatProfile1 = 933, /* Qualifies on External Statistics 2687 profile 1. */ 2688 bcmFieldQualifyExtStatProfile2 = 934, /* Qualifies on External Statistics 2689 profile 2. */ 2690 bcmFieldQualifyExtStatProfile3 = 935, /* Qualifies on External Statistics 2691 profile 3. */ 2692 bcmFieldQualifyStatMetaData = 936, /* Qualifies on Statistics meta data. */ 2693 bcmFieldQualifyDstL3EgressUnderlay = 937, /* Qualifies on Underlay destination 2694 egress object id. */ 2695 bcmFieldQualifyDstL3EgressNextHopsUnderlay = 938, /* Consecutive Underlay L3 Egress Next 2696 hops. */ 2697 bcmFieldQualifyEgressClassPort = 939, /* Qualifies on Class ID assigned to 2698 packet based on Egress Port. The 2699 class ID is assigned to egress port 2700 using bcm_port_class_set(unit, port, 2701 bcmPortClassEgress, class_id); */ 2702 bcmFieldQualifyINTProbeMarker1 = 940, /* Qualifies on INT Prober Marker1 2703 field. */ 2704 bcmFieldQualifyINTProbeMarker2 = 941, /* Qualifies on INT Prober Marker2 2705 field. */ 2706 bcmFieldQualifyINTReserved4Bytes = 942, /* Qualifies on INT Reserved 4 bytes 2707 after Prober Marker2 field in the INT 2708 header. */ 2709 bcmFieldQualifyInVPort0Raw = 943, /* Qualifies on In LIF 0 raw value. */ 2710 bcmFieldQualifyInVPort1Raw = 944, /* Qualifies on In LIF 1 raw value. */ 2711 bcmFieldQualifyOutVPort0Raw = 945, /* Qualifies on Out LIF 0 raw value. */ 2712 bcmFieldQualifyOutVPort1Raw = 946, /* Qualifies on Out LIF 1 raw value. */ 2713 bcmFieldQualifyOutVPort2Raw = 947, /* Qualifies on Out LIF 2 raw value. */ 2714 bcmFieldQualifyOutVPort3Raw = 948, /* Qualifies on Out LIF 3 raw value. */ 2715 bcmFieldQualifyAppTypePredefined = 949, /* Qualifies on predefined AppType. */ 2716 bcmFieldQualifyFlowControlType = 950, /* Indicates the type of Flow control 2717 packet. */ 2718 bcmFieldQualifyTimeStampTxPktType = 951, /* Matches on Tx Timestamp packet type. */ 2719 bcmFieldQualifySysHdrLocalDstport = 952, /* Matches on System Header Local 2720 Destination port. */ 2721 bcmFieldQualifyCount = 953 /* Always Last. Not a usable value. */ 2722 } bcm_field_qualify_t; 2723 2724 #define BCM_FIELD_QUALIFY_STRINGS \ 2725 { \ 2726 "SrcIp6", \ 2727 "DstIp6", \ 2728 "SrcIp6High", \ 2729 "DstIp6High", \ 2730 "SrcIp6Low", \ 2731 "DstIp6Low", \ 2732 "SrcMac", \ 2733 "DstMac", \ 2734 "Snap", \ 2735 "SrcIp", \ 2736 "DstIp", \ 2737 "Llc", \ 2738 "InPort", \ 2739 "InPorts", \ 2740 "OutPorts", \ 2741 "Drop", \ 2742 "Ip6FlowLabel", \ 2743 "OuterVlan", \ 2744 "OuterVlanId", \ 2745 "OuterVlanPri", \ 2746 "OuterVlanCfi", \ 2747 "InnerVlan", \ 2748 "InnerVlanId", \ 2749 "InnerVlanPri", \ 2750 "InnerVlanCfi", \ 2751 "LookupStatus", \ 2752 "RangeCheck", \ 2753 "L4SrcPort", \ 2754 "L4DstPort", \ 2755 "EtherType", \ 2756 "IpProtocol", \ 2757 "DSCP", \ 2758 "Ttl", \ 2759 "SrcModid", \ 2760 "SrcPortTgid", \ 2761 "SrcPort", \ 2762 "SrcTrunk", \ 2763 "SrcTrunkMemberGport", \ 2764 "DstModid", \ 2765 "DstPortTgid", \ 2766 "DstPort", \ 2767 "DstTrunk", \ 2768 "TcpControl", \ 2769 "PacketRes", \ 2770 "PacketFormat", \ 2771 "SrcClassL2", \ 2772 "SrcClassL3", \ 2773 "SrcClassField", \ 2774 "DstClassL2", \ 2775 "DstClassL3", \ 2776 "DstClassField", \ 2777 "IpInfo", \ 2778 "IpProtocolCommon", \ 2779 "MHOpcode", \ 2780 "IpFlags", \ 2781 "InnerTpid", \ 2782 "OuterTpid", \ 2783 "InnerIpType", \ 2784 "TunnelType", \ 2785 "LoopbackType", \ 2786 "Loopback", \ 2787 "IpType", \ 2788 "ForwardingType", \ 2789 "Decap", \ 2790 "HiGig", \ 2791 "HiGigProxy", \ 2792 "DstHiGig", \ 2793 "Stage", \ 2794 "StageIngress", \ 2795 "StageIngressSecurity", \ 2796 "StageIngressQoS", \ 2797 "StageLookup", \ 2798 "StageEgress", \ 2799 "StageEgressSecurity", \ 2800 "StageExternal", \ 2801 "Deprecated75", \ 2802 "Deprecated76", \ 2803 "TcpSequenceZero", \ 2804 "TcpHeaderSize", \ 2805 "InterfaceClassL2", \ 2806 "InterfaceClassL3", \ 2807 "InterfaceClassPort", \ 2808 "L3Routable", \ 2809 "IpFrag", \ 2810 "Vrf", \ 2811 "L3Ingress", \ 2812 "OutPort", \ 2813 "Ip4", \ 2814 "Ip6", \ 2815 "L2Format", \ 2816 "VlanFormat", \ 2817 "TranslatedVlanFormat", \ 2818 "ExtensionHeaderType", \ 2819 "ExtensionHeaderSubCode", \ 2820 "ExtensionHeader2Type", \ 2821 "L4Ports", \ 2822 "MirrorCopy", \ 2823 "TunnelTerminated", \ 2824 "MplsTerminated", \ 2825 "InnerSrcIp", \ 2826 "InnerDstIp", \ 2827 "InnerSrcIp6", \ 2828 "InnerDstIp6", \ 2829 "InnerSrcIp6High", \ 2830 "InnerDstIp6High", \ 2831 "InnerTtl", \ 2832 "InnerTos", \ 2833 "InnerIpProtocol", \ 2834 "InnerIpFrag", \ 2835 "VlanTranslationHit", \ 2836 "ForwardingVlanValid", \ 2837 "IngressStpState", \ 2838 "L2SrcHit", \ 2839 "L2SrcStatic", \ 2840 "L2DestHit", \ 2841 "L2StationMove", \ 2842 "L2CacheHit", \ 2843 "L3SrcHostHit", \ 2844 "L3DestHostHit", \ 2845 "L3DestRouteHit", \ 2846 "IpmcStarGroupHit", \ 2847 "DosAttack", \ 2848 "Deprecated122", \ 2849 "ClassId", \ 2850 "Deprecated124", \ 2851 "IcmpTypeCode", \ 2852 "Deprecated126", \ 2853 "InnerIpProtocolCommon", \ 2854 "InnerL4SrcPort", \ 2855 "InnerL4DstPort", \ 2856 "InnerIp6FlowLabel", \ 2857 "DstL3Egress", \ 2858 "DstMulticastGroup", \ 2859 "SrcMplsGport", \ 2860 "DstMplsGport", \ 2861 "SrcMimGport", \ 2862 "DstMimGport", \ 2863 "SrcWlanGport", \ 2864 "DstWlanGport", \ 2865 "SrcModPortGport", \ 2866 "SrcModuleGport", \ 2867 "Color", \ 2868 "IntPriority", \ 2869 "ForwardingVlanId", \ 2870 "Vpn", \ 2871 "FlowId", \ 2872 "InVPort", \ 2873 "OutVPort", \ 2874 "FibreChanOuter", \ 2875 "FibreChanInner", \ 2876 "VnTag", \ 2877 "CnTag", \ 2878 "FabricQueueTag", \ 2879 "MyStationHit", \ 2880 "DstMultipath", \ 2881 "L2PayloadFirstEightBytes", \ 2882 "SrcVirtualPortValid", \ 2883 "DstL3EgressNextHops", \ 2884 "RecoverableDrop", \ 2885 "RepCopy", \ 2886 "IpTunnelHit", \ 2887 "MplsLabel1Hit", \ 2888 "TrillEgressRbridgeHit", \ 2889 "L2GreSrcIpHit", \ 2890 "MimSrcGportHit", \ 2891 "MplsLabel2Hit", \ 2892 "TrillIngressRbridgeHit", \ 2893 "L2GreVfiHit", \ 2894 "MimVfiHit", \ 2895 "GenericAssociatedChannelLabelValid", \ 2896 "RouterAlertLabelValid", \ 2897 "DstIpLocal", \ 2898 "NormalizeIpAddrs", \ 2899 "NormalizeMacAddrs", \ 2900 "IpAddrsNormalized", \ 2901 "MacAddrsNormalized", \ 2902 "MplsForwardingLabel", \ 2903 "MplsForwardingLabelTtl", \ 2904 "MplsForwardingLabelBos", \ 2905 "MplsForwardingLabelExp", \ 2906 "MplsForwardingLabelId", \ 2907 "MplsControlWord", \ 2908 "Rtag7AHashUpper", \ 2909 "Rtag7AHashLower", \ 2910 "Rtag7BHashUpper", \ 2911 "Rtag7BHashLower", \ 2912 "MplsForwardingLabelAction", \ 2913 "MplsControlWordValid", \ 2914 "EgressClass", \ 2915 "EgressClassL3Interface", \ 2916 "EgressClassTrill", \ 2917 "EgressClassWlan", \ 2918 "EgressClassL2Gre", \ 2919 "LlidValue", \ 2920 "CpuQueue", \ 2921 "Mpls", \ 2922 "SrcGport", \ 2923 "HeaderFormat", \ 2924 "HeaderFormatSet", \ 2925 "L2Learn", \ 2926 "PortOrientation", \ 2927 "EcnValue", \ 2928 "RxTrapCode", \ 2929 "Ptch", \ 2930 "MplsBos", \ 2931 "RxTrapData", \ 2932 "PolicerIntPrio", \ 2933 "PacketTerminatedBytes", \ 2934 "BypassFilter", \ 2935 "ReplicantAny", \ 2936 "ReplicantFirst", \ 2937 "TrillEgressRbridge", \ 2938 "ISid", \ 2939 "InterfaceClassProcessingPort", \ 2940 "DstRpfGport", \ 2941 "TrunkHashResult", \ 2942 "Dhcp", \ 2943 "SnoopCopy", \ 2944 "ForwardCopy", \ 2945 "InterfaceClassVPort", \ 2946 "VPortRangeCheck", \ 2947 "PacketLengthRangeCheck", \ 2948 "StageIngressVlanTranslation", \ 2949 "StageIngressTunnelTerminated", \ 2950 "StageIngressMplsTerminated", \ 2951 "StageIngressIpTunnel", \ 2952 "StageIngressL2Src", \ 2953 "StageIngressL2Dest", \ 2954 "StageIngressL3SrcRoute", \ 2955 "StageIngressL3DestRoute", \ 2956 "StageIngressIpmc", \ 2957 "TunnelTerminatedHit", \ 2958 "MplsTerminatedHit", \ 2959 "L3SrcRouteHit", \ 2960 "IpmcHit", \ 2961 "VlanTranslationValue", \ 2962 "TunnelTerminatedValue", \ 2963 "MplsTerminatedValue", \ 2964 "IpTunnelValue", \ 2965 "L2SrcValue", \ 2966 "L2DestValue", \ 2967 "L3SrcRouteValue", \ 2968 "L3DestRouteValue", \ 2969 "IpmcValue", \ 2970 "LearnSrcMac", \ 2971 "LearnVlan", \ 2972 "LearnSrcPort", \ 2973 "PacketSize", \ 2974 "InnerSrcMac", \ 2975 "InnerDstMac", \ 2976 "InnerEtherType", \ 2977 "MplsLabel1", \ 2978 "MplsLabel1Ttl", \ 2979 "MplsLabel1Bos", \ 2980 "MplsLabel1Exp", \ 2981 "MplsLabel1Id", \ 2982 "MplsLabel2", \ 2983 "MplsLabel2Ttl", \ 2984 "MplsLabel2Bos", \ 2985 "MplsLabel2Exp", \ 2986 "MplsLabel2Id", \ 2987 "MplsLabel3", \ 2988 "MplsLabel3Ttl", \ 2989 "MplsLabel3Bos", \ 2990 "MplsLabel3Exp", \ 2991 "MplsLabel3Id", \ 2992 "CascadedKeyValue", \ 2993 "MplsOuterLabelPop", \ 2994 "MplsStationHitTunnelUnterminated", \ 2995 "IngressClassField", \ 2996 "IngressInterfaceClassPort", \ 2997 "ExternalValue0", \ 2998 "ExternalValue1", \ 2999 "ExternalValue2", \ 3000 "ExternalValue3", \ 3001 "ExternalHit0", \ 3002 "ExternalHit1", \ 3003 "ExternalHit2", \ 3004 "ExternalHit3", \ 3005 "VpnUnknownDstMacDstPort", \ 3006 "VxlanNetworkId", \ 3007 "VxlanFlags", \ 3008 "NatNeeded", \ 3009 "NatDstRealmId", \ 3010 "NatSrcRealmId", \ 3011 "IcmpError", \ 3012 "TunnelId", \ 3013 "ArpSenderIp4", \ 3014 "ArpTargetIp4", \ 3015 "ArpOpcode", \ 3016 "TranslatedOuterVlan", \ 3017 "TranslatedOuterVlanId", \ 3018 "TranslatedOuterVlanPri", \ 3019 "TranslatedOuterVlanCfi", \ 3020 "TranslatedInnerVlan", \ 3021 "TranslatedInnerVlanId", \ 3022 "TranslatedInnerVlanPri", \ 3023 "TranslatedInnerVlanCfi", \ 3024 "ConstantZero", \ 3025 "ConstantOne", \ 3026 "FibreChanRCtl", \ 3027 "FibreChanFCtl", \ 3028 "FibreChanCSCtl", \ 3029 "FibreChanDFCtl", \ 3030 "FibreChanType", \ 3031 "FibreChanSrcId", \ 3032 "FibreChanDstId", \ 3033 "FibreChanZoneCheck", \ 3034 "FibreChanSrcFpmaCheck", \ 3035 "FibreChanSrcBindCheck", \ 3036 "FibreChanVFTVersion", \ 3037 "FibreChanVFTPri", \ 3038 "FibreChanVFTFabricId", \ 3039 "FibreChanVFTHopCount", \ 3040 "FibreChanVFTVsanId", \ 3041 "FibreChanVFTVsanPri", \ 3042 "FibreChanVFTValid", \ 3043 "FcoeSOF", \ 3044 "FcoeVersionIsZero", \ 3045 "ForwardingHeaderOffset", \ 3046 "L3SrcBind", \ 3047 "ECid", \ 3048 "IngressECid", \ 3049 "ETag", \ 3050 "IngressVPortBridgeDisable", \ 3051 "HashValue", \ 3052 "IsEqualValue", \ 3053 "StageHash", \ 3054 "UrpfMode", \ 3055 "AppType", \ 3056 "SubportPktTag", \ 3057 "SrcVxlanGport", \ 3058 "DstVxlanGport", \ 3059 "OamMdl", \ 3060 "IntCongestionNotification", \ 3061 "SrcNivGport", \ 3062 "DstNivGport", \ 3063 "DstGport", \ 3064 "MirrorEgressDisabled", \ 3065 "BypassSrcMacFilter", \ 3066 "RxTrapCodeForSnoop", \ 3067 "IpmcStarGroupValue", \ 3068 "NativeVSwitch", \ 3069 "NativeVSwitchValid", \ 3070 "TrillIVersion", \ 3071 "TrillIngressRbridge", \ 3072 "TrillMultiDestination", \ 3073 "TrillOpLength", \ 3074 "TrillHopCount", \ 3075 "TrillPayload", \ 3076 "MplsForwardingLabelPayload", \ 3077 "IncomingIpIfClass", \ 3078 "L2GreProtocolType", \ 3079 "L2GreVsid", \ 3080 "L2GreFlowId", \ 3081 "MimVlanPri", \ 3082 "MimVlanCfi", \ 3083 "Fhei", \ 3084 "FheiSize", \ 3085 "EthernetOamHeaderBits0_31", \ 3086 "EthernetOamHeaderBits32_63", \ 3087 "EthernetOamDstClassL2", \ 3088 "EthernetOamTxPktUPMEP", \ 3089 "EthernetOamInterfaceClassNiv", \ 3090 "EthernetOamInterfaceClassMim", \ 3091 "EthernetOamInterfaceClassVxlan", \ 3092 "EthernetOamInterfaceClassVlan", \ 3093 "EthernetOamInterfaceClassPort", \ 3094 "EthernetOamClassVlanTranslateKeyFirst", \ 3095 "EthernetOamClassVlanTranslateKeySecond", \ 3096 "EthernetOamInterfaceClassMpls", \ 3097 "EthernetOamClassVpn", \ 3098 "MplsOamHeaderBits0_31", \ 3099 "MplsOamHeaderBits32_63", \ 3100 "MplsOamGALLabelOnly", \ 3101 "MplsOamUpperLabelDataDrop", \ 3102 "MplsOamGALExposed", \ 3103 "MplsOamACH", \ 3104 "MplsOamControlPktType", \ 3105 "MplsOamClassMplsSwitchLabel", \ 3106 "OamHeaderBits0_31", \ 3107 "OamHeaderBits32_63", \ 3108 "OamEgressClassVxlt", \ 3109 "OamEgressClassPort", \ 3110 "Udf", \ 3111 "OuterVlanActionRange", \ 3112 "InnerVlanActionRange", \ 3113 "IngressInterfaceClassVPort", \ 3114 "SrcVlanGport", \ 3115 "DstVlanGport", \ 3116 "OamType", \ 3117 "SrcVlanGports", \ 3118 "DstVlanGports", \ 3119 "SrcVxlanGports", \ 3120 "DstVxlanGports", \ 3121 "SrcWlanGports", \ 3122 "DstWlanGports", \ 3123 "SrcMplsGports", \ 3124 "DstMplsGports", \ 3125 "SrcGports", \ 3126 "DstGports", \ 3127 "SrcMimGports", \ 3128 "DstMimGports", \ 3129 "SrcNivGports", \ 3130 "DstNivGports", \ 3131 "SrcModPortGports", \ 3132 "LearnInVPort", \ 3133 "StackingRoute", \ 3134 "RxTrapStrength", \ 3135 "VxlanHeaderBits8_31", \ 3136 "VxlanHeaderBits56_63", \ 3137 "OamInLifIdValid", \ 3138 "OamInLifId", \ 3139 "OamUpMep", \ 3140 "OamSubtype", \ 3141 "OamHeaderOffset", \ 3142 "OamStampOffset", \ 3143 "OamMepId", \ 3144 "OamMeterDisable", \ 3145 "OamTsSystemHeader", \ 3146 "DstMulticastGroups", \ 3147 "InterfaceInPorts", \ 3148 "DestVirtualPortValid", \ 3149 "InVPortWide", \ 3150 "StageClass", \ 3151 "StageClassExactMatch", \ 3152 "FcoeOxID", \ 3153 "FcoeRxID", \ 3154 "IpProtocolClass", \ 3155 "EtherTypeClass", \ 3156 "L4SrcPortClass", \ 3157 "L4DstPortClass", \ 3158 "SrcIpClass", \ 3159 "SrcIpClassMsbNibble", \ 3160 "SrcIpClassLower", \ 3161 "SrcIpClassUpper", \ 3162 "SrcIp6Class", \ 3163 "SrcIp6ClassMsbNibble", \ 3164 "SrcIp6ClassLower", \ 3165 "SrcIp6ClassUpper", \ 3166 "FcoeOxIDClass", \ 3167 "DstIpClass", \ 3168 "DstIpClassMsbNibble", \ 3169 "DstIpClassLower", \ 3170 "DstIpClassUpper", \ 3171 "DstIp6Class", \ 3172 "DstIp6ClassMsbNibble", \ 3173 "DstIp6ClassLower", \ 3174 "DstIp6ClassUpper", \ 3175 "FcoeRxIDClass", \ 3176 "FibreChanSrcIdClass", \ 3177 "FibreChanSrcIdClassMsbNibble", \ 3178 "FibreChanSrcIdClassLower", \ 3179 "FibreChanSrcIdClassUpper", \ 3180 "FibreChanDstIdClass", \ 3181 "FibreChanDstIdClassMsbNibble", \ 3182 "FibreChanDstIdClassLower", \ 3183 "FibreChanDstIdClassUpper", \ 3184 "TcpClassZero", \ 3185 "TosClassZero", \ 3186 "TtlClassZero", \ 3187 "TcpClassOne", \ 3188 "TosClassOne", \ 3189 "TtlClassOne", \ 3190 "OuterVlanPriCfi", \ 3191 "ForwardHdrSrcMac", \ 3192 "ForwardHdrDstMac", \ 3193 "ForwardHdrVlanId", \ 3194 "DstSysPortExt", \ 3195 "StageIngressExactMatch", \ 3196 "LearnExtension", \ 3197 "IpFragNonOrFirst", \ 3198 "PacketLength", \ 3199 "GroupClass", \ 3200 "UdfClass", \ 3201 "InterfaceLookupClassPort", \ 3202 "HiGigDstMulticast", \ 3203 "HiGigDstMulticastGroupId", \ 3204 "HiGigTrafficClass", \ 3205 "HiGigDstModuleGport", \ 3206 "HiGigDstPortGport", \ 3207 "HiGigDstModPortGport", \ 3208 "HiGigSrcModuleGport", \ 3209 "HiGigSrcPortGport", \ 3210 "HiGigSrcModPortGport", \ 3211 "HiGigLoadBalanceID", \ 3212 "HiGigColor", \ 3213 "HiGigIntCongestionNotification", \ 3214 "HiGigIngressTagged", \ 3215 "HiGigDstTrunk", \ 3216 "HiGigDstTrunkId", \ 3217 "HiGigIngressL3SwitchPkt", \ 3218 "HiGigLabel", \ 3219 "HiGigReplicationId", \ 3220 "HiGigVlan", \ 3221 "HiGigPortFilteringMode", \ 3222 "HiGigSrcTrunk", \ 3223 "HiGigIngressClassificationTag", \ 3224 "HiGigEgressMcast", \ 3225 "HiGigVni", \ 3226 "HiGigDstGport", \ 3227 "HiGigMulticastIndex", \ 3228 "HiGigVpReplicationId", \ 3229 "HiGigSrcGport", \ 3230 "HiGigProtectionSwitchingStatus", \ 3231 "HiGigMirrorToVp", \ 3232 "HiGigDstType", \ 3233 "HiGigSrcType", \ 3234 "HiGigOffloadEngineClassificationTag", \ 3235 "HiGigOffloadEnginePktPriNew", \ 3236 "HiGigOffloadEngineDscpNew", \ 3237 "LoopBackQueue", \ 3238 "LoopBackSrcGport", \ 3239 "PktIsVisible", \ 3240 "LoopBackCpuMasqueradePktProfile", \ 3241 "LoopBackColor", \ 3242 "LoopBackTrafficClass", \ 3243 "LoopBackPacketProcessingPort", \ 3244 "MixedSrcClassId", \ 3245 "ITag", \ 3246 "InterfaceIngressKeySelectClassPort", \ 3247 "BfdYourDiscriminator", \ 3248 "CpuVisibilityPacket", \ 3249 "DstL2MulticastGroup", \ 3250 "DstL3MulticastGroup", \ 3251 "ExactMatchHitStatus", \ 3252 "ExactMatchActionClassId", \ 3253 "ExactMatchGroupClassId", \ 3254 "L2PayLoad", \ 3255 "CustomHeaderPkt", \ 3256 "CustomHeaderData", \ 3257 "MimlPkt", \ 3258 "MimlSrcMac", \ 3259 "MimlDstMac", \ 3260 "MimlVlan", \ 3261 "MimlVlanId", \ 3262 "MimlVlanPri", \ 3263 "MimlVlanCfi", \ 3264 "MimlInnerTag", \ 3265 "CapwapHdrType", \ 3266 "CapwapHdrRid", \ 3267 "CapwapPayloadSOF", \ 3268 "CapwapPayloadDstMac", \ 3269 "CapwapPayloadSrcMac", \ 3270 "CapwapPayloadEtherType", \ 3271 "CapwapPayloadOuterVlan", \ 3272 "CapwapPayloadOuterVlanId", \ 3273 "CapwapPayloadOuterVlanPri", \ 3274 "CapwapPayloadOuterVlanCfi", \ 3275 "CapwapPayloadInnerVlan", \ 3276 "CapwapPayloadInnerVlanId", \ 3277 "CapwapPayloadInnerVlanPri", \ 3278 "CapwapPayloadInnerVlanCfi", \ 3279 "CapwapPayloadVlanFormat", \ 3280 "CapwapPayloadSip", \ 3281 "CapwapPayloadDip", \ 3282 "CapwapPayloadSip6", \ 3283 "CapwapPayloadDip6", \ 3284 "CapwapPayloadIpProtocol", \ 3285 "CapwapPayloadTos", \ 3286 "CapwapPayloadL4DstPort", \ 3287 "CapwapPayloadL4SrcPort", \ 3288 "CapwapPayloadL3HdrParseable", \ 3289 "CapwapPayloadL4HdrParseable", \ 3290 "VlanAction", \ 3291 "DownMepSatTerminated", \ 3292 "DstMultipathOverlay", \ 3293 "DstMultipathUnderlay", \ 3294 "StpState", \ 3295 "HiGigMirrorOrSwitchPkt", \ 3296 "HiGigPreserveFlags", \ 3297 "HiGigMplsPkt", \ 3298 "HiGigDoNotFlags", \ 3299 "HiGigVpPreserveFlags", \ 3300 "HiGigOffloadEngineVxltStatus", \ 3301 "HiGigForwardingType", \ 3302 "HiGigLabelType", \ 3303 "HiGigExtendedHeaderPresent", \ 3304 "HiGigVpLagFailoverPacket", \ 3305 "HiGigOffloadEnginePreserveDscp", \ 3306 "HiGigOffloadEnginePreserveDot1p", \ 3307 "HiGigOffloadEngineDeferredFlags", \ 3308 "HiGigOffloadEngineSrcType", \ 3309 "SystemPortBitmap", \ 3310 "SourceGportBitmap", \ 3311 "DevicePortBitmap", \ 3312 "TosLower4Bits", \ 3313 "OamEgressClass2Vxlt", \ 3314 "OamEgressVxltFirstHit", \ 3315 "OamEgressVxltSecondHit", \ 3316 "OamDownMEPLoopbackPacket", \ 3317 "OamEgressPortUnicastDstMacHit", \ 3318 "OamSat", \ 3319 "IngressDropEthernetOamControl", \ 3320 "IngressDropEthernetOamData", \ 3321 "IngressDropMplsOamControl", \ 3322 "IngressDropMplsOamData", \ 3323 "EgressClassVxlan", \ 3324 "OamEgressEtherType", \ 3325 "OamEgressMulticastMacHit", \ 3326 "TrunkMemberSourceModuleId", \ 3327 "OamEgressClassSrcMac", \ 3328 "MyStation2Hit", \ 3329 "ExternalValue4", \ 3330 "ExternalValue5", \ 3331 "ExternalHit4", \ 3332 "ExternalHit5", \ 3333 "GeneratedTtl", \ 3334 "IpMulticastCompatible", \ 3335 "EgressClassTunnel", \ 3336 "EgressClassL3InterfaceTunnel", \ 3337 "StaggeredValue0", \ 3338 "StaggeredValue1", \ 3339 "StaggeredValue2", \ 3340 "StaggeredValue3", \ 3341 "StaggeredDirectValue", \ 3342 "StaggeredPreselProfile0", \ 3343 "StaggeredPreselProfile1", \ 3344 "StaggeredPreselProfile2", \ 3345 "StaggeredPreselProfile3", \ 3346 "StaggeredPreselProfileDirect", \ 3347 "bcmFieldQaulifyPreselId", \ 3348 "EthernetData", \ 3349 "PreemptablePacket", \ 3350 "VxlanClassValid", \ 3351 "VxlanPacket", \ 3352 "VxlanVnidVlanTranslateHit", \ 3353 "VxlanPayloadVlanFormat", \ 3354 "TunnelPayloadDstMac", \ 3355 "TunnelPayloadSrcMac", \ 3356 "TunnelPayloadEtherType", \ 3357 "TunnelPayloadOuterVlan", \ 3358 "TunnelPayloadOuterVlanId", \ 3359 "TunnelPayloadOuterVlanPri", \ 3360 "TunnelPayloadOuterVlanCfi", \ 3361 "TunnelPayloadSip", \ 3362 "TunnelPayloadDip", \ 3363 "TunnelPayloadSip6", \ 3364 "TunnelPayloadDip6", \ 3365 "TunnelPayloadIpProtocol", \ 3366 "TunnelPayloadL4DstPort", \ 3367 "TunnelPayloadL4SrcPort", \ 3368 "RoceBthOpcode", \ 3369 "RoceBthPartitionKey", \ 3370 "RoceBthDstQueuePair", \ 3371 "RoceBthFlags", \ 3372 "RoceVer1Pkt", \ 3373 "RoceVer2Pkt", \ 3374 "SrcPortSRType", \ 3375 "DstPortSRType", \ 3376 "SrcPortSRRoleInterlink", \ 3377 "DstPortSRRoleInterlink", \ 3378 "SrcPortSRMode", \ 3379 "DstPortSRMode", \ 3380 "SrcPortSRNetId", \ 3381 "DstPortSRNetId", \ 3382 "SrcPortSRLanId", \ 3383 "DstPortSRLanId", \ 3384 "SRTagType", \ 3385 "SRLanId", \ 3386 "SRNetId", \ 3387 "VlanSREnable", \ 3388 "VlanSRLanId", \ 3389 "SRFlowId", \ 3390 "L2DestSRNodeType", \ 3391 "SRNetIdMatched", \ 3392 "SRSrcNodeIsSan", \ 3393 "SRSupervisionType", \ 3394 "SRError", \ 3395 "L2SrcMulticastHit", \ 3396 "L2DstMulticastHit", \ 3397 "SRDuplicate", \ 3398 "TsnFlowId", \ 3399 "ExternalValue6", \ 3400 "ExternalValue7", \ 3401 "ExternalHit6", \ 3402 "ExternalHit7", \ 3403 "MirrorDest", \ 3404 "PacketIsIEEE1588", \ 3405 "IEEE1588Encapsulation", \ 3406 "IEEE1588CompensateTimeStamp", \ 3407 "IEEE1588Command", \ 3408 "IEEE1588HeaderOffset", \ 3409 "HeaderFormatExtension", \ 3410 "MacSecTagPresent", \ 3411 "MacSecTag", \ 3412 "MacSecDstMacRangeHit", \ 3413 "FromMacSecPort", \ 3414 "MacSecFlow", \ 3415 "EgressBridgedForwardingDataHigh", \ 3416 "EgressBridgedForwardingDataLow", \ 3417 "EgressBridgedAclDataHigh", \ 3418 "EgressBridgedAclDataLow", \ 3419 "SysHdrType", \ 3420 "SubportTagPresent", \ 3421 "NetworkTagType", \ 3422 "CnTagPresent", \ 3423 "L2PktType", \ 3424 "PktType", \ 3425 "MplsCwPresent", \ 3426 "MplsMcastEthertypePresent", \ 3427 "Ipv4OptionHdrType", \ 3428 "Ipv6ExtensionHdrType", \ 3429 "OverlayVlanFormat", \ 3430 "OverlayL2PktType", \ 3431 "OverlayPktType", \ 3432 "OverlayIpv4OptionHdrType", \ 3433 "OverlayIpv6ExtensionHdrType", \ 3434 "FrontPanelPkt", \ 3435 "HiGigProxyTunnelType", \ 3436 "IpFragPkt", \ 3437 "OuterPriTaggedPkt", \ 3438 "IpInIpPkt", \ 3439 "IpmcV4Pkt", \ 3440 "IpmcV6Pkt", \ 3441 "IpChecksumOkPkt", \ 3442 "NetworkTagMulticastPkt", \ 3443 "IpTtlZeroPkt", \ 3444 "PimBidirDfStatus", \ 3445 "InterfaceClassL2Type", \ 3446 "IntPktVersionOne", \ 3447 "IntPktOverflowed", \ 3448 "IntPktLengthValid", \ 3449 "IntPktType", \ 3450 "IntPktFinalHop", \ 3451 "TunnelSubType", \ 3452 "NshServicePathId", \ 3453 "NshServiceIndex", \ 3454 "KeyGenVar", \ 3455 "RoeFrameType", \ 3456 "BfdGoodPkt", \ 3457 "BfdPktWithDstIpLoopbackAddr", \ 3458 "MplsControlPkt", \ 3459 "StageIngressFlowtracker", \ 3460 "InterfaceClassMplsLookup1", \ 3461 "InterfaceClassMplsLookup2", \ 3462 "InterfaceClassMplsLookup3", \ 3463 "InterfaceClassL3Tunnel", \ 3464 "BfdPktVersionOne", \ 3465 "GenevePktVersionZero", \ 3466 "GpePktVersionZero", \ 3467 "GenevePktWithOam", \ 3468 "GpePktWithOam", \ 3469 "InnerBfdPktVersionOne", \ 3470 "PktDstAddrType", \ 3471 "PktInnerDstAddrType", \ 3472 "InnerL4Ports", \ 3473 "TafEnable", \ 3474 "TafGateId", \ 3475 "TafGateState", \ 3476 "TafCosProfile", \ 3477 "ElkRangeL4DstPort", \ 3478 "ElkRangeL4SrcPort", \ 3479 "Ip6PktNextHeader", \ 3480 "Ip6PktHopLimit", \ 3481 "Ip6PktTrafficClass", \ 3482 "InnerIp6PktNextHeader", \ 3483 "InnerIp6PktHopLimit", \ 3484 "InnerIp6PktTrafficClass", \ 3485 "IpTunnelTtl", \ 3486 "IpTunnelTtlClassZero", \ 3487 "RangeCheckGroup", \ 3488 "FlowtrackerGroupId", \ 3489 "FlowtrackerClassId", \ 3490 "FlowtrackerGroupValid", \ 3491 "FlowtrackerDisabled", \ 3492 "FlowtrackerMeteringExceeded", \ 3493 "FlowtrackerCollectorCopy", \ 3494 "FlowtrackerFlowTableFull", \ 3495 "FlowtrackerGroupFlowExceeded", \ 3496 "FlowtrackerExportQueueFull", \ 3497 "OpaqueTagType", \ 3498 "OpaqueTagHigh", \ 3499 "OpaqueTagLow", \ 3500 "InnerDosAttack", \ 3501 "DosAttackEvents", \ 3502 "InnerDosAttackEvents", \ 3503 "SrcTMPort", \ 3504 "Container", \ 3505 "EgressForwardingClassId", \ 3506 "PktFlowType", \ 3507 "VlanTranslateClassId", \ 3508 "IpIdentifier", \ 3509 "TcpWindowSize", \ 3510 "Ip4Length", \ 3511 "Ip6Length", \ 3512 "TunnelPayloadIp4Length", \ 3513 "TunnelPayloadIp6Length", \ 3514 "GbpPresent", \ 3515 "HiGigGbpPresent", \ 3516 "GbpSrcId", \ 3517 "VxlanGbpPresent", \ 3518 "FlowtrackerCheck", \ 3519 "FlowtrackerLearn", \ 3520 "CosMapSelect", \ 3521 "OpaqueObject1", \ 3522 "OpaqueObject2", \ 3523 "OpaqueObject3", \ 3524 "OpaqueObject4", \ 3525 "IncomingOuterVlanId", \ 3526 "GbpDstId", \ 3527 "HiGigGbpSrcId", \ 3528 "LoopbackSubtype", \ 3529 "PphPresent", \ 3530 "PacketProcessingInVportClass", \ 3531 "UDHBase0", \ 3532 "UDHBase1", \ 3533 "UDHBase2", \ 3534 "UDHBase3", \ 3535 "NetworkQos", \ 3536 "AceEntryId", \ 3537 "Ip4Protocol", \ 3538 "Ip4Tos", \ 3539 "Ip4Ttl", \ 3540 "InVportDataIndex", \ 3541 "EtherTypeUntagged", \ 3542 "NetworkLoadBalanceKeyInitial", \ 3543 "NetworkLoadBalanceKey", \ 3544 "EcmpLoadBalanceKey0Initial", \ 3545 "EcmpLoadBalanceKey0", \ 3546 "EcmpLoadBalanceKey1Initial", \ 3547 "EcmpLoadBalanceKey1", \ 3548 "EcmpLoadBalanceKey2Initial", \ 3549 "EcmpLoadBalanceKey2", \ 3550 "TrunkLoadBalanceKeyInitial", \ 3551 "StateTableKey", \ 3552 "StateTableData", \ 3553 "CompareKeysResult0", \ 3554 "CompareKeysResult1", \ 3555 "CompareKeysTcam0", \ 3556 "CompareKeysTcam1", \ 3557 "LayerRecordType", \ 3558 "LayerRecordOffset", \ 3559 "LayerRecordQualifier", \ 3560 "UDHBase", \ 3561 "ForwardingLayerIndex", \ 3562 "IPTProfile", \ 3563 "AcInLifWideData", \ 3564 "NativeAcInLifWideData", \ 3565 "ForwardingProfile", \ 3566 "ContextId", \ 3567 "ForwardingLayerQualifier", \ 3568 "TracePacket", \ 3569 "TrunkLoadBalanceKey", \ 3570 "Forward", \ 3571 "ParsingStartType", \ 3572 "ParsingStartOffset", \ 3573 "UDHData0", \ 3574 "UDHData1", \ 3575 "UDHData2", \ 3576 "UDHData3", \ 3577 "RxSnoopStrength", \ 3578 "RxSnoopCode", \ 3579 "Visibility", \ 3580 "VisibilityClear", \ 3581 "EthernetMulticast", \ 3582 "EthernetBroadcast", \ 3583 "EthernetFirstTpidExist", \ 3584 "EthernetFirstTpidIndex", \ 3585 "EthernetSecondTpidExist", \ 3586 "EthernetSecondTpidIndex", \ 3587 "EthernetThirdTpidExist", \ 3588 "EthernetThirdTpidIndex", \ 3589 "IpHasOptions", \ 3590 "IpFirstFrag", \ 3591 "IpTunnelType", \ 3592 "Ip6MulticastCompatible", \ 3593 "Ip6FirstAdditionalHeaderExist", \ 3594 "ItmhExtensionExist", \ 3595 "ItmhDestinationFec", \ 3596 "ItmhPphType", \ 3597 "StatSamplingCode", \ 3598 "StatSamplingQualifier", \ 3599 "RpfEcmpMode", \ 3600 "StatOamLM", \ 3601 "InInterface", \ 3602 "OutInterface", \ 3603 "InVportClass", \ 3604 "OutVportClass", \ 3605 "InterfaceClass", \ 3606 "PortClassPacketProcessing", \ 3607 "PortClassTrafficManagement", \ 3608 "OutPortTrafficManagement", \ 3609 "MulticastRpfMode", \ 3610 "Tpid", \ 3611 "VlanId", \ 3612 "VlanPri", \ 3613 "VlanCfi", \ 3614 "VlanPriCfi", \ 3615 "Vlan", \ 3616 "MplsLabel", \ 3617 "MplsLabelId", \ 3618 "MplsLabelTtl", \ 3619 "MplsLabelBos", \ 3620 "MplsLabelExp", \ 3621 "InVPort0", \ 3622 "InVPort1", \ 3623 "OutVPort0", \ 3624 "OutVPort1", \ 3625 "OutVPort2", \ 3626 "OutVPort3", \ 3627 "BierStringOffset", \ 3628 "BierStringSize", \ 3629 "PacketIsBier", \ 3630 "PortClassPacketProcessingGeneralData", \ 3631 "ForwardingAdditionalInfo", \ 3632 "InVportClass0", \ 3633 "InVportClass1", \ 3634 "StatId0", \ 3635 "StatId1", \ 3636 "StatId2", \ 3637 "StatId3", \ 3638 "StatId4", \ 3639 "StatId5", \ 3640 "StatId6", \ 3641 "StatId7", \ 3642 "StatId8", \ 3643 "StatId9", \ 3644 "StatProfile0", \ 3645 "StatProfile1", \ 3646 "StatProfile2", \ 3647 "StatProfile3", \ 3648 "StatProfile4", \ 3649 "StatProfile5", \ 3650 "StatProfile6", \ 3651 "StatProfile7", \ 3652 "StatProfile8", \ 3653 "StatProfile9", \ 3654 "ExtStat0", \ 3655 "ExtStat1", \ 3656 "ExtStat2", \ 3657 "ExtStat3", \ 3658 "ExtStatProfile0", \ 3659 "ExtStatProfile1", \ 3660 "ExtStatProfile2", \ 3661 "ExtStatProfile3", \ 3662 "StatMetaData", \ 3663 "DstL3EgressUnderlay", \ 3664 "DstL3EgressNextHopsUnderlay", \ 3665 "EgressClassPort", \ 3666 "INTProbeMarker1", \ 3667 "INTProbeMarker2", \ 3668 "INTReserved4Bytes", \ 3669 "InVPort0Raw", \ 3670 "InVPort1Raw", \ 3671 "OutVPort0Raw", \ 3672 "OutVPort1Raw", \ 3673 "OutVPort2Raw", \ 3674 "OutVPort3Raw", \ 3675 "AppTypePredefined", \ 3676 "FlowControlType", \ 3677 "TimeStampTxPktType", \ 3678 "SysHdrLocalDstport" \ 3679 } 3680 3681 /* Field Qualifier Class (for bcm_field_qualifier_info_get()). */ 3682 typedef enum bcm_field_qualifier_class_e { 3683 bcmFieldQualifierClassMetaData = 0, /* Info taken from the packet's 3684 MetaData. Can use 3685 FieldInputTypeMetaData. */ 3686 bcmFieldQualifierClassHeader = 1, /* Info taken from the packet's header. 3687 Can use FieldInputTypeLayerFwd or 3688 FieldInputTypeLayerAbsolute. */ 3689 bcmFieldQualifierClassLayerRecord = 2, /* Info taken from the packet's layer 3690 records. Can use 3691 FieldInputTypeLayerRecordsFwd or 3692 FieldInputTypeLayerRecordsAbsolute. */ 3693 bcmFieldQualifierClassUserCreated = 3, /* User defined qualifier. Can use any 3694 input type. */ 3695 bcmFieldQualifierClassCount = 4 /* Always Last. Not a usable value. */ 3696 } bcm_field_qualifier_class_t; 3697 3698 #define BCM_FIELD_QUALIFIERCLASS_STRINGS \ 3699 { \ 3700 "bcmFieldQualifierClassMetaData", \ 3701 "bcmFieldQualifierClassHeader", \ 3702 "bcmFieldQualifierClassLayerRecord", \ 3703 "bcmFieldQualifierClassUserCreated" \ 3704 } 3705 3706 /* 3707 * Field Stage Type 3708 * 3709 * Selects which pipeline stage an entry applies to. 3710 */ 3711 typedef enum bcm_field_stage_e { 3712 bcmFieldStageFirst = 0, /* Earliest Field stage in device. */ 3713 bcmFieldStageIngressEarly = 1, /* Early Ingress Field stage. */ 3714 bcmFieldStageIngressLate = 2, /* Late Ingress Field stage. */ 3715 bcmFieldStageDefault = 3, /* Default stage for device. */ 3716 bcmFieldStageLast = 4, /* Latest Field stage in device. */ 3717 bcmFieldStageIngress = 5, /* Ingress stage, when there is only one 3718 such. */ 3719 bcmFieldStageEgress = 6, /* Egress field stage */ 3720 bcmFieldStageExternal = 7, /* External field stage */ 3721 bcmFieldStageHash = 8, /* Hashing stage */ 3722 bcmFieldStageIngressExactMatch = 9, /* Ingress exact match stage */ 3723 bcmFieldStageIngressFlowtracker = 10, /* Ingress flowtracker stage */ 3724 bcmFieldStageIngressPMF1 = 11, /* Stage Ingress PMF-1 */ 3725 bcmFieldStageIngressPMF2 = 12, /* Stage Ingress PMF-2 */ 3726 bcmFieldStageIngressPMF3 = 13, /* Stage Ingress PMF-3 */ 3727 bcmFieldStageLookup = 14, /* Stage Lookup */ 3728 bcmFieldStageClass = 15, /* Stage Class */ 3729 bcmFieldStageEgressExtension = 16, /* Extension of the egress field stage, 3730 performing actions later. */ 3731 bcmFieldStageCount = 17 /* Always Last. Not a usable value. */ 3732 } bcm_field_stage_t; 3733 3734 #define BCM_FIELD_STAGE_STRINGS \ 3735 { \ 3736 "First", \ 3737 "IngressEarly", \ 3738 "IngressLate", \ 3739 "Default", \ 3740 "Last", \ 3741 "Ingress", \ 3742 "Egress", \ 3743 "External", \ 3744 "Hash", \ 3745 "IngressExactMatch", \ 3746 "IngressFlowtracker", \ 3747 "IngressPMF1", \ 3748 "IngressPMF2", \ 3749 "IngressPMF3", \ 3750 "Lookup", \ 3751 "Class", \ 3752 "EgressExtension" \ 3753 } 3754 3755 /* 3756 * information related to the preselectors management advance mode per 3757 * stage. 3758 */ 3759 typedef struct bcm_field_stage_info_s { 3760 int field_presel_advanced_mode; /* is presel advanced mode enabled. */ 3761 int field_presel_max_id; /* The maximum presel id that can be 3762 defined for a new created program 3763 selector in advanced mode. */ 3764 int field_presel_staggered_max_id; /* The maximum presel id that can be 3765 defined for a new created program 3766 selector in staggered mode. */ 3767 } bcm_field_stage_info_t; 3768 3769 /* DATA qualifier object, used for creation of custom data qualifiers. */ 3770 typedef struct bcm_field_data_qualifier_s { 3771 int qual_id; /* Data qualifier id. */ 3772 uint32 flags; /* Data qualifier flags 3773 BCM_FIELD_DATA_QUALIFIER_XXX. */ 3774 bcm_field_data_offset_base_t offset_base; /* Offset base adjustment. */ 3775 uint16 offset; /* Packet byte offset. */ 3776 int length; /* Matched data byte length. */ 3777 bcm_field_qualify_t qualifier; /* Data qualifier based on a predefined 3778 qualifier. Used when 3779 BCM_FIELD_DATA_QUALIFIER_OFFSET_PREDEFINED 3780 is set. */ 3781 bcm_field_stage_t stage; /* Data qualifier stage (e.g. when based 3782 on predefined qualifiers). */ 3783 uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Data Qualifier. */ 3784 } bcm_field_data_qualifier_t; 3785 3786 #define BCM_FIELD_QUALIFY_MAX (bcmFieldQualifyCount + BCM_FIELD_USER_NUM_UDFS) /* Must be >= bcmFieldQualifyCount. */ 3787 3788 #define BCM_FIELD_QUALIFY_WIDTH_MAX 50 3789 3790 #define BCM_FIELD_QSET_WIDTH_MAX \ 3791 ((BCM_FIELD_QUALIFY_WIDTH_MAX+1) * \ 3792 bcmFieldQualifyCount + 1) 3793 3794 #define BCM_FIELD_EXACT_MATCH_MASK (~0) /* Mask parameter value. */ 3795 3796 /* 3797 * Field Qualifier Decap. 3798 * 3799 * Possible data values for bcm_field_qualify_decap(). 3800 */ 3801 typedef enum bcm_field_decap_e { 3802 bcmFieldDecapNone = 0, /* No Decap. */ 3803 bcmFieldDecapL2Mpls = 1, /* L2 MPLS Decap. */ 3804 bcmFieldDecapL3Mpls = 2, /* L3 MPLS Decap. */ 3805 bcmFieldDecapOtherMPLS = 3, /* non-L2 or L3 MPLS Decap. */ 3806 bcmFieldDecapIpTunnel = 4, /* IP Tunnel Decap. */ 3807 bcmFieldDecapIpGreTunnel = 5, /* IP GRE Tunnel Decap. */ 3808 bcmFieldDecapIpUdpTunnel = 6, /* IP UDP Tunnel Decap. */ 3809 bcmFieldDecapIpPimTunnel = 7, /* IP PIM Tunnel Decap. */ 3810 bcmFieldDecapVxlan = 8, /* VXLAN Decap. */ 3811 bcmFieldDecapCount = 9 /* Always Last. Not a usable value. */ 3812 } bcm_field_decap_t; 3813 3814 #define BCM_FIELD_DECAP_STRINGS \ 3815 { \ 3816 "None", \ 3817 "L2Mpls", \ 3818 "L3Mpls", \ 3819 "OtherMPLS", \ 3820 "IpTunnel", \ 3821 "IpGreTunnel", \ 3822 "IpUdpTunnel", \ 3823 "IpPimTunnel", \ 3824 "Vxlan" \ 3825 } 3826 3827 /* 3828 * Field Qualifier Forwarding Type (for 3829 * bcm_field_qualify_ForwardingType). 3830 */ 3831 typedef enum bcm_field_ForwardingType_e { 3832 bcmFieldForwardingTypeAny = 0, /* Don't care. */ 3833 bcmFieldForwardingTypeL2 = 1, /* L2 switching forwarding. */ 3834 bcmFieldForwardingTypeL3 = 2, /* L3 routing forwarding. */ 3835 bcmFieldForwardingTypeL2Shared = 3, /* Shared vlan L2 forwarding. */ 3836 bcmFieldForwardingTypeL2Independent = 4, /* Vlan based L2 forwarding. */ 3837 bcmFieldForwardingTypeL2Vpn = 5, /* VFI based L2 forwarding. */ 3838 bcmFieldForwardingTypeL2VpnDirect = 6, /* L2 point to point vpn forwarding. */ 3839 bcmFieldForwardingTypeL3Direct = 7, /* L3 predefined next hop forwarding. */ 3840 bcmFieldForwardingTypeIp4Ucast = 8, /* IPv4 Unicast Routing forwarding. */ 3841 bcmFieldForwardingTypeIp4Mcast = 9, /* IPv4 Multicast Routing forwarding. */ 3842 bcmFieldForwardingTypeIp6Ucast = 10, /* IPv6 Unicast Routing forwarding. */ 3843 bcmFieldForwardingTypeIp6Mcast = 11, /* IPv6 Multicast Routing forwarding. */ 3844 bcmFieldForwardingTypeMpls = 12, /* MPLS Switching forwarding. */ 3845 bcmFieldForwardingTypeTrill = 13, /* Trill forwarding. */ 3846 bcmFieldForwardingTypeRxReason = 14, /* Forwarding according to a RxReason. */ 3847 bcmFieldForwardingTypeTrafficManagement = 15, /* Traffic Management forwarding, when 3848 an external Packet Processor sets the 3849 forwarding decision. */ 3850 bcmFieldForwardingTypeSnoop = 16, /* Snooped packet. */ 3851 bcmFieldForwardingTypeMplsLabel1 = 17, /* MPLS Switching forwarding according 3852 to the 1st label */ 3853 bcmFieldForwardingTypeMplsLabel2 = 18, /* MPLS Switching forwarding according 3854 to the 2nd label */ 3855 bcmFieldForwardingTypeMplsLabel3 = 19, /* MPLS Switching forwarding according 3856 to the 3rd label */ 3857 bcmFieldForwardingTypeFCoE = 20, /* Fiber Channel over Ethernet 3858 forwarding. */ 3859 bcmFieldForwardingTypePortExtender = 21, /* VNTAG/ETAG based forwarding. */ 3860 bcmFieldForwardingTypeCustom1 = 22, /* Custom_1 forwarding. */ 3861 bcmFieldForwardingTypeCustom2 = 23, /* Custom_2 forwarding. */ 3862 bcmFieldForwardingTypeL2SharedVpn = 24, /* Shared VFI based L2 Forwarding. */ 3863 bcmFieldForwardingTypePortDirect = 25, /* Port based Point to Point Forwarding. */ 3864 bcmFieldForwardingTypeSvpDirect = 26, /* SVP based Point to Point Forwarding. */ 3865 bcmFieldForwardingTypeVlanDirect = 27, /* VLAN based Point to Point Forwarding. */ 3866 bcmFieldForwardingTypeCount = 28 /* Always Last. Not a usable value. */ 3867 } bcm_field_ForwardingType_t; 3868 3869 #define BCM_FIELD_FORWARDINGTYPE_STRINGS \ 3870 { \ 3871 "Any", \ 3872 "L2", \ 3873 "L3", \ 3874 "L2Shared", \ 3875 "L2Independent", \ 3876 "L2Vpn", \ 3877 "L2VpnDirect", \ 3878 "L3Direct", \ 3879 "Ip4Ucast", \ 3880 "Ip4Mcast", \ 3881 "Ip6Ucast", \ 3882 "Ip6Mcast", \ 3883 "Mpls", \ 3884 "Trill", \ 3885 "RxReason", \ 3886 "TrafficManagement", \ 3887 "Snoop", \ 3888 "MplsLabel1", \ 3889 "MplsLabel2", \ 3890 "MplsLabel3", \ 3891 "FCoE", \ 3892 "PortExtender", \ 3893 "Custom1", \ 3894 "Custom2", \ 3895 "L2SharedVpn", \ 3896 "PortDirect", \ 3897 "SvpDirect", \ 3898 "VlanDirect" \ 3899 } 3900 3901 /* 3902 * Field Qualifier HiGig Forwarding Type (for 3903 * bcm_field_qualify_HiGigForwardingType). 3904 */ 3905 typedef enum bcm_field_HiGigForwardingType_e { 3906 bcmFieldHiGigForwardingTypeControlPacket = 0, /* Control Packet. */ 3907 bcmFieldHiGigForwardingTypeKnownL2 = 1, /* L2 Unicast/ Known L2 Multicast. */ 3908 bcmFieldHiGigForwardingTypeKnownL3 = 2, /* L3 Unicast/ Known L3 Multicast. */ 3909 bcmFieldHiGigForwardingTypeUnknownL2Multicast = 3, /* Unknown L2 Multicast. */ 3910 bcmFieldHiGigForwardingTypeUnknownL3Multicast = 4, /* Unknown L3 Multicast. */ 3911 bcmFieldHiGigForwardingTypeBroadcastOnUnknownL2Unicast = 5, /* Broadcast due to Unknown L2 Unicast. */ 3912 bcmFieldHiGigForwardingTypeBroadcast = 6, /* Broadcast. */ 3913 bcmFieldHiGigForwardingTypeCount = 7 /* Always Last. Not a usable value. */ 3914 } bcm_field_HiGigForwardingType_t; 3915 3916 #define BCM_FIELD_HIGIGFORWARDINGTYPE_STRINGS \ 3917 { \ 3918 "ControlPacket", \ 3919 "KnownL2", \ 3920 "KnownL3", \ 3921 "UnknownL2Multicast", \ 3922 "UnknownL3Multicast", \ 3923 "BroadcastOnUnknownL2Unicast", \ 3924 "Broadcast" \ 3925 } 3926 3927 /* Field Qualifier Application Type (for bcm_field_qualify_AppType). */ 3928 typedef enum bcm_field_AppType_e { 3929 bcmFieldAppTypeAny = 0, /* Don't care. */ 3930 bcmFieldAppTypeL2 = 1, /* L2 bridging. */ 3931 bcmFieldAppTypeL2VpnDirect = 2, /* Cross connect service. */ 3932 bcmFieldAppTypeIp4Ucast = 3, /* IPv4 Unicast Routing. */ 3933 bcmFieldAppTypeIp4McastBidir = 4, /* IPv4 Multicast BIDIR Routing. */ 3934 bcmFieldAppTypeIp6Ucast = 5, /* IPv6 Unicast Routing. */ 3935 bcmFieldAppTypeIp6Mcast = 6, /* IPv6 Multicast Routing forwarding. */ 3936 bcmFieldAppTypeMpls = 7, /* MPLS Switching forwarding. */ 3937 bcmFieldAppTypeArp = 8, /* ARP forwarding. */ 3938 bcmFieldAppTypeTrillUcast = 9, /* Trill Unicast forwarding. */ 3939 bcmFieldAppTypeTrillMcast = 10, /* Trill Multicast forwarding. */ 3940 bcmFieldAppTypeL2TrillMcast = 11, /* L2 Multicast after Trill termination. */ 3941 bcmFieldAppTypeTrafficManagement = 12, /* Traffic Management forwarding, when 3942 an external Packet Processor sets the 3943 forwarding decision. */ 3944 bcmFieldAppTypeMiM = 13, /* MAC-in-MAC forwarding. */ 3945 bcmFieldAppTypeL2MiM = 14, /* L2 forwarding after MAC-in-MAC 3946 termination. */ 3947 bcmFieldAppTypeIp4UcastRpf = 15, /* IPv4 Unicast Routing (coupled to the 3948 RPF lookup). */ 3949 bcmFieldAppTypeIp6UcastRpf = 16, /* IPv6 Unicast Routing (coupled to the 3950 RPF lookup). */ 3951 bcmFieldAppTypeIp4McastRpf = 17, /* IPv4 Multicast Routing (coupled to 3952 the RPF lookup). */ 3953 bcmFieldAppTypeCompIp4McastRpf = 18, /* Compatible IPv4 Multicast Routing 3954 (coupled to the RPF lookup). */ 3955 bcmFieldAppTypeIp6McastRpf = 19, /* IPv6 Multicast Routing (coupled to 3956 the RPF lookup). */ 3957 bcmFieldAppTypeMplsCoupling = 20, /* Coupling MPLS Switching. */ 3958 bcmFieldAppTypeFCoE = 21, /* FCoE without VFT and local D_ID. */ 3959 bcmFieldAppTypeFCoETransit = 22, /* Transit FCoE (bridging). */ 3960 bcmFieldAppTypeFCoEVft = 23, /* FCoE with VFT Routing. */ 3961 bcmFieldAppTypeFCoERemote = 24, /* FCoE without VFT and remote D_ID 3962 Routing. */ 3963 bcmFieldAppTypeFCoEVftRemote = 25, /* FCoE wth VFT and remote D_ID v. */ 3964 bcmFieldAppTypeL2VpnExtended = 26, /* Extended P2P forwarding. */ 3965 bcmFieldAppTypeIp4MacSrcBind = 27, /* IPV4-MAC Source bind. */ 3966 bcmFieldAppTypeIp6MacSrcBind = 28, /* IPV6-MAC Source bind. */ 3967 bcmFieldAppTypeIp4SrcBind = 29, /* IPV4 Source bind. */ 3968 bcmFieldAppTypeIp6SrcBind = 30, /* IPV6 Source bind. */ 3969 bcmFieldAppTypeVplsGreIp = 31, /* VPLS tunnel over GREoIP tunnel. */ 3970 bcmFieldAppTypeFglTrillMcast = 32, /* Fine-grained labeling Trill Multicast 3971 forwarding. */ 3972 bcmFieldAppTypeBfdIp4SingleHop = 33, /* BFD ipv4 single hop. */ 3973 bcmFieldAppTypeBfdEcho = 34, /* BFD Echo. */ 3974 bcmFieldAppTypeIp4DoubleCapacity = 35, /* IPv4 Unicast Routing with double 3975 capacity in external tcam. */ 3976 bcmFieldAppTypeIp6UcastPublic = 36, /* IPv6 Unicast Public Routing. */ 3977 bcmFieldAppTypeIp6UcastRpfPublic = 37, /* IPv6 Unicast Public Routing (coupled 3978 to the RPF lookup). */ 3979 bcmFieldAppTypeIp4UcastPublic = 38, /* IPv4 Unicast Public Routing. */ 3980 bcmFieldAppTypeIp4UcastRpfPublic = 39, /* IPv4 Unicast Public Routing (coupled 3981 to the RPF lookup). */ 3982 bcmFieldAppTypeIp4McastL2Ssm = 40, /* IPv4 L2 Source Specific Multicast 3983 forwarding. */ 3984 bcmFieldAppTypeIp6McastL2Ssm = 41, /* IPv6 L2 Source Specific Multicast 3985 forwarding. */ 3986 bcmFieldAppTypeBfdIp6SingleHop = 42, /* BFD ipv6 single hop. */ 3987 bcmFieldAppTypeCount = 43 /* Always Last. Not a usable value. */ 3988 } bcm_field_AppType_t; 3989 3990 #define BCM_FIELD_APPTYPE_STRINGS \ 3991 { \ 3992 "Any", \ 3993 "L2", \ 3994 "L2VpnDirect", \ 3995 "Ip4Ucast", \ 3996 "Ip4McastBidir", \ 3997 "Ip6Ucast", \ 3998 "Ip6Mcast", \ 3999 "Mpls", \ 4000 "Arp", \ 4001 "TrillUcast", \ 4002 "TrillMcast", \ 4003 "L2TrillMcast", \ 4004 "TrafficManagement", \ 4005 "MiM", \ 4006 "L2MiM", \ 4007 "Ip4UcastRpf", \ 4008 "Ip6UcastRpf", \ 4009 "Ip4McastRpf", \ 4010 "CompIp4McastRpf", \ 4011 "Ip6McastRpf", \ 4012 "MplsCoupling", \ 4013 "FCoE", \ 4014 "FCoETransit", \ 4015 "FCoEVft", \ 4016 "FCoERemote", \ 4017 "FCoEVftRemote", \ 4018 "L2VpnExtended", \ 4019 "Ip4MacSrcBind", \ 4020 "Ip6MacSrcBind", \ 4021 "Ip4SrcBind", \ 4022 "Ip6SrcBind", \ 4023 "VplsGreIp", \ 4024 "FglTrillMcast", \ 4025 "BfdIp4SingleHop", \ 4026 "BfdEcho", \ 4027 "Ip4DoubleCapacity", \ 4028 "Ip6UcastPublic", \ 4029 "Ip6UcastRpfPublic", \ 4030 "Ip4UcastPublic", \ 4031 "Ip4UcastRpfPublic", \ 4032 "Ip4McastL2Ssm", \ 4033 "Ip6McastL2Ssm", \ 4034 "BfdIp6SingleHop" \ 4035 } 4036 4037 /* Field Qualifier LoopbackType (for bcm_field_qualify_LoopbackType). */ 4038 typedef enum bcm_field_LoopbackType_e { 4039 bcmFieldLoopbackTypeAny = 0, /* Don't care. */ 4040 bcmFieldLoopbackTypeMirror = 1, /* Mirrored frames. */ 4041 bcmFieldLoopbackTypeWlan = 2, /* WLAN frames. */ 4042 bcmFieldLoopbackTypeMim = 3, /* Mac in Mac frames. */ 4043 bcmFieldLoopbackTypeRedirect = 4, /* Redirected frames. */ 4044 bcmFieldLoopbackTypeTrillNetwork = 5, /* Trill network port loopback. */ 4045 bcmFieldLoopbackTypeTrillAccess = 6, /* Trill access port loopback. */ 4046 bcmFieldLoopbackTypeRegexMatch = 7, /* Regex NLF loopback packet. */ 4047 bcmFieldLoopbackTypeMplsP2mp = 8, /* MPLS P2MP second pass loopback 4048 packet. */ 4049 bcmFieldLoopbackTypeQcn = 9, /* QCN loopback packet. */ 4050 bcmFieldLoopbackTypeWlanEncap = 10, /* WLAN ENCAP NLF loopback packet. */ 4051 bcmFieldLoopbackTypeWlanEncapEncrypt = 11, /* WLAN ENCAP needs encryption loopback 4052 packet. */ 4053 bcmFieldLoopbackTypeWlanDecap = 12, /* WLAN DECAP NLF loopback packet. */ 4054 bcmFieldLoopbackTypePassThru = 13, /* PassThru NLF loopback packet. */ 4055 bcmFieldLoopbackTypeMplsExtendedLookup = 14, /* MPLS extended lookup packet. */ 4056 bcmFieldLoopbackTypeL2Gre = 15, /* L2 GRE loopback packet. */ 4057 bcmFieldLoopbackTypeVxlan = 16, /* Vxlan loopback packet. */ 4058 bcmFieldLoopbackTypeTunnelAny = 17, /* MinM, L2GRE and VXLAN tunnel loopback 4059 packet. */ 4060 bcmFieldLoopbackTypeMasquerade = 18, /* Process as if it was received on 4061 front panel port. */ 4062 bcmFieldLoopbackTypeCount = 19 /* Always Last. Not a usable value. */ 4063 } bcm_field_LoopbackType_t; 4064 4065 #define BCM_FIELD_LOOPBACKTYPE_STRINGS \ 4066 { \ 4067 "Any", \ 4068 "Mirror", \ 4069 "Wlan", \ 4070 "Mim", \ 4071 "Redirect", \ 4072 "TrillNetwork", \ 4073 "TrillAccess", \ 4074 "RegexMatch", \ 4075 "MplsP2mp", \ 4076 "Qcn", \ 4077 "WlanEncap", \ 4078 "WlanEncapEncrypt", \ 4079 "WlanDecap", \ 4080 "PassThru", \ 4081 "MplsExtendedLookup", \ 4082 "L2Gre", \ 4083 "Vxlan", \ 4084 "TunnelAny", \ 4085 "Masquerade" \ 4086 } 4087 4088 /* 4089 * Field Qualifier FibreChan (for bcm_field_qualify_FibreChanOuter and 4090 * bcm_field_qualify_FibreChanInner). 4091 */ 4092 typedef enum bcm_field_FibreChan_e { 4093 bcmFieldFibreChanAny = 0, /* Don't care. */ 4094 bcmFieldFibreChan = 1, /* Standard Fibre Channel header. */ 4095 bcmFieldFibreChanEncap = 2, /* Encapsulation (ENC) header. */ 4096 bcmFieldFibreChanVirtual = 3, /* Virtual fabric tag (VFT) header. */ 4097 bcmFieldFibreChanRouted = 4, /* Interfabric routing (IFR) header. */ 4098 bcmFieldFibreChanCount = 5 /* Always Last. Not a usable value. */ 4099 } bcm_field_FibreChan_t; 4100 4101 #define BCM_FIELD_FIBRECHAN_STRINGS \ 4102 { \ 4103 "Any", \ 4104 "bcmFieldFibreChan", \ 4105 "Encap", \ 4106 "Virtual", \ 4107 "Routed" \ 4108 } 4109 4110 /* Field Qualifier TunnelType (for bcm_field_qualify_TunnelType). */ 4111 typedef enum bcm_field_TunnelType_e { 4112 bcmFieldTunnelTypeAny = 0, /* Don't care. */ 4113 bcmFieldTunnelTypeIp = 1, /* IP in IP, Istap, GRE. */ 4114 bcmFieldTunnelTypeMpls = 2, /* MPLS. */ 4115 bcmFieldTunnelTypeMim = 3, /* Mac in Mac. */ 4116 bcmFieldTunnelTypeWlanWtpToAc = 4, /* WLAN access point to access control. */ 4117 bcmFieldTunnelTypeWlanAcToAc = 5, /* WLAN access control to access 4118 control. */ 4119 bcmFieldTunnelTypeAutoMulticast = 6, /* IPV4 Automatic multicast. */ 4120 bcmFieldTunnelTypeTrill = 7, /* Trill. */ 4121 bcmFieldTunnelTypeL2Gre = 8, /* L2 GRE. */ 4122 bcmFieldTunnelTypeIp6 = 9, /* IPv6 termination. */ 4123 bcmFieldTunnelTypeMplsControlWord = 10, /* MPLS with Control Word terminated. */ 4124 bcmFieldTunnelTypeMplsLabel2 = 11, /* 2 MPLS labels terminated. */ 4125 bcmFieldTunnelTypeMplsLabel2ControlWord = 12, /* 2 MPLS labels with Control Word 4126 terminated. */ 4127 bcmFieldTunnelTypeMplsLabel3 = 13, /* 3 MPLS labels terminated. */ 4128 bcmFieldTunnelTypeMplsLabel3ControlWord = 14, /* 3 MPLS labels with Control Word 4129 terminated. */ 4130 bcmFieldTunnelTypeVxlan = 15, /* Vxlan Tunnel Packet. */ 4131 bcmFieldTunnelTypeNone = 16, /* L2 termination. */ 4132 bcmFieldTunnelTypeVxlanFlex = 17, /* Vxlan Flex Tunnel Packet. */ 4133 bcmFieldTunnelTypeGpe = 18, /* GPE (Generic Protocol Extension for 4134 VXLAN) Tunnel Packet. */ 4135 bcmFieldTunnelTypeGeneve = 19, /* Geneve Tunnel Packet. */ 4136 bcmFieldTunnelTypeMplsOverGre = 20, /* MPLS Over GRE Tunnel Packet. */ 4137 bcmFieldTunnelTypeNsh = 21, /* Network Service Header (NSH) Tunnel 4138 Packet. */ 4139 bcmFieldTunnelTypeCount = 22 /* Always Last. Not a usable value. */ 4140 } bcm_field_TunnelType_t; 4141 4142 #define BCM_FIELD_TUNNELTYPE_STRINGS \ 4143 { \ 4144 "Any", \ 4145 "Ip", \ 4146 "Mpls", \ 4147 "Mim", \ 4148 "WlanWtpToAc", \ 4149 "WlanAcToAc", \ 4150 "AutoMulticast", \ 4151 "Trill", \ 4152 "L2Gre", \ 4153 "Ip6", \ 4154 "MplsControlWord", \ 4155 "MplsLabel2", \ 4156 "MplsLabel2ControlWord", \ 4157 "MplsLabel3", \ 4158 "MplsLabel3ControlWord", \ 4159 "Vxlan", \ 4160 "None", \ 4161 "VxlanFlex", \ 4162 "Gpe", \ 4163 "Geneve", \ 4164 "MplsOverGre", \ 4165 "Nsh" \ 4166 } 4167 4168 /* Field Qualifier IpType (for bcm_field_qualify_IpType). */ 4169 typedef enum bcm_field_IpType_e { 4170 bcmFieldIpTypeAny = 0, /* Don't care. */ 4171 bcmFieldIpTypeNonIp = 1, /* Non-Ip packet. */ 4172 bcmFieldIpTypeIpv4Not = 2, /* Anything but IPv4 packets. */ 4173 bcmFieldIpTypeIpv4NoOpts = 3, /* IPv4 without options. */ 4174 bcmFieldIpTypeIpv4WithOpts = 4, /* IPv4 with options. */ 4175 bcmFieldIpTypeIpv4Any = 5, /* Any IPv4 packet. */ 4176 bcmFieldIpTypeIpv6Not = 6, /* Anything but IPv6 packets. */ 4177 bcmFieldIpTypeIpv6NoExtHdr = 7, /* IPv6 packet without any extension 4178 header. */ 4179 bcmFieldIpTypeIpv6OneExtHdr = 8, /* IPv6 packet with one extension 4180 header. */ 4181 bcmFieldIpTypeIpv6TwoExtHdr = 9, /* IPv6 packet with two or more 4182 extension headers. */ 4183 bcmFieldIpTypeIpv6 = 10, /* IPv6 packet. */ 4184 bcmFieldIpTypeIp = 11, /* IPv4 and IPv6 packets. */ 4185 bcmFieldIpTypeArp = 12, /* ARP/RARP. */ 4186 bcmFieldIpTypeArpRequest = 13, /* ARP Request. */ 4187 bcmFieldIpTypeArpReply = 14, /* ARP Reply. */ 4188 bcmFieldIpTypeMplsUnicast = 15, /* Mpls unicast frame (ethertype = 4189 0x8847). */ 4190 bcmFieldIpTypeMplsMulticast = 16, /* Mpls mcast frame (ethertype = 4191 0x8848). */ 4192 bcmFieldIpTypeTrill = 17, /* Trill packet. */ 4193 bcmFieldIpTypeMim = 18, /* Mac-in-Mac frame. */ 4194 bcmFieldIpTypeMpls = 19, /* MPLS Packets. */ 4195 bcmFieldIpTypeCfm = 20, /* CFM Packets (0x8902). */ 4196 bcmFieldIpTypeFCoE = 21, /* Fiber Channel Packets (0x8906). */ 4197 bcmFieldIpTypeCount = 22 /* Always Last. Not a usable value. */ 4198 } bcm_field_IpType_t; 4199 4200 #define BCM_FIELD_IPTYPE_STRINGS \ 4201 { \ 4202 "Any", \ 4203 "NonIp", \ 4204 "Ipv4Not", \ 4205 "Ipv4NoOpts", \ 4206 "Ipv4WithOpts", \ 4207 "Ipv4Any", \ 4208 "Ipv6Not", \ 4209 "Ipv6NoExtHdr", \ 4210 "Ipv6OneExtHdr", \ 4211 "Ipv6TwoExtHdr", \ 4212 "Ipv6", \ 4213 "Ip", \ 4214 "Arp", \ 4215 "ArpRequest", \ 4216 "ArpReply", \ 4217 "MplsUnicast", \ 4218 "MplsMulticast", \ 4219 "Trill", \ 4220 "Mim", \ 4221 "Mpls", \ 4222 "Cfm", \ 4223 "FCoE" \ 4224 } 4225 4226 /* 4227 * Field Qualifier IpProtocolCommon (for 4228 * bcm_field_qualify_IpProtocolCommon). 4229 */ 4230 typedef enum bcm_field_IpProtocolCommon_e { 4231 bcmFieldIpProtocolCommonTcp = 0, /* TCP Packets (6) */ 4232 bcmFieldIpProtocolCommonUdp = 1, /* UDP Packets (17) */ 4233 bcmFieldIpProtocolCommonIgmp = 2, /* IGMP Packets (2) */ 4234 bcmFieldIpProtocolCommonIcmp = 3, /* ICMP Packets (1) */ 4235 bcmFieldIpProtocolCommonIp6Icmp = 4, /* IPv6 ICMP Packets (58) */ 4236 bcmFieldIpProtocolCommonIp6HopByHop = 5, /* IPv6 Hop-by-Hop Packets (0) */ 4237 bcmFieldIpProtocolCommonIpInIp = 6, /* IPv4 Payload Packets (4) */ 4238 bcmFieldIpProtocolCommonTcpUdp = 7, /* TCP and UDP Packets (6 & 17) */ 4239 bcmFieldIpProtocolCommonUnknown = 8, /* Not-standard IP Protocol. */ 4240 bcmFieldIpProtocolCommonIp6InIp = 9, /* IPv6 (0x29) */ 4241 bcmFieldIpProtocolCommonMplsInIp = 10, /* MPLS (0x89) */ 4242 bcmFieldIpProtocolCommonCount = 11 /* Always Last. Not a usable value. */ 4243 } bcm_field_IpProtocolCommon_t; 4244 4245 #define BCM_FIELD_IPPROTOCOLCOMMON_STRINGS \ 4246 { \ 4247 "Tcp", \ 4248 "Udp", \ 4249 "Igmp", \ 4250 "Icmp", \ 4251 "Ip6Icmp", \ 4252 "Ip6HopByHop", \ 4253 "IpInIp", \ 4254 "TcpUdp", \ 4255 "Unknown", \ 4256 "Ip6InIp", \ 4257 "MplsInIp" \ 4258 } 4259 4260 /* Field Qualifier IpFrag (for bcm_field_qualify_IpFrag). */ 4261 typedef enum bcm_field_IpFrag_e { 4262 bcmFieldIpFragNon = 0, /* Non-fragmented packet. */ 4263 bcmFieldIpFragFirst = 1, /* First fragment of fragmented packet. */ 4264 bcmFieldIpFragNonOrFirst = 2, /* Non-fragmented or first fragment. */ 4265 bcmFieldIpFragNotFirst = 3, /* Not the first fragment. */ 4266 bcmFieldIpFragAny = 4, /* Any fragment of fragmented packet. */ 4267 bcmFieldIpFragCount = 5 /* Always last. Not a usable value. */ 4268 } bcm_field_IpFrag_t; 4269 4270 /* Urpf mode */ 4271 typedef enum bcm_field_urpf_mode_e { 4272 bcmFieldUrpfLoose = 0, /* Loose mode Unicast RPF. */ 4273 bcmFieldUrpfStrict = 1, /* Strict mode Unicast RPF */ 4274 bcmFieldUrpfCount = 2 /* Always Last. Not a usable value. */ 4275 } bcm_field_urpf_mode_t; 4276 4277 /* 4278 * Field Qualifier L2Format (for bcm_field_qualify_L2Format). 4279 * Used to qualify packets based on L2 header format. 4280 */ 4281 typedef enum bcm_field_L2Format_e { 4282 bcmFieldL2FormatAny = 0, /* Do not qualify on L2 format. */ 4283 bcmFieldL2FormatEthII = 1, /* Ethernet 2 (802.2). */ 4284 bcmFieldL2FormatSnap = 2, /* Sub-Network Access Protocol (SNAP). */ 4285 bcmFieldL2FormatLlc = 3, /* Logical Link Control. */ 4286 bcmFieldL2Format802dot3 = 4, /* 802.3 frame format. */ 4287 bcmFieldL2FormatDeprecated5 = 5, /* Deprecated. Do not use. */ 4288 bcmFieldL2FormatMiM = 6, /* MAC-In-MAC. */ 4289 bcmFieldL2FormatCount = 7 /* Always Last. Not a usable value. */ 4290 } bcm_field_L2Format_t; 4291 4292 #define BCM_FIELD_L2FORMAT_STRINGS \ 4293 { \ 4294 "Any", \ 4295 "EthII", \ 4296 "Snap", \ 4297 "Llc", \ 4298 "802dot3", \ 4299 "Deprecated5", \ 4300 "MiM" \ 4301 } 4302 4303 /* 4304 * Field action olp_header_type (for bcmFieldActionOamOlpHeaderAdd). 4305 * Used to specify the type of the OLP header to be added. 4306 */ 4307 typedef enum bcm_field_olp_header_type_e { 4308 bcmFieldOlpHeaderTypeEthCC = 0, /* Ethernet Oam Down MEP Ccm packet. */ 4309 bcmFieldOlpHeaderTypeEthOamCcm = bcmFieldOlpHeaderTypeEthCC, /* Ethernet Oam Down MEP Ccm packet. */ 4310 bcmFieldOlpHeaderTypeEthLmDm = 1, /* Ethernet Oam Down MEP LM/DM packet. */ 4311 bcmFieldOlpHeaderTypeEthOamLmDm = bcmFieldOlpHeaderTypeEthLmDm, /* Ethernet Oam Down MEP LM/DM packet. */ 4312 bcmFieldOlpHeaderTypeEthOthers = 2, /* Ethernet Oam Down MEP Other opcode 4313 packet. */ 4314 bcmFieldOlpHeaderTypeEthOamOthers = bcmFieldOlpHeaderTypeEthOthers, /* Ethernet Oam Down MEP Other opcode 4315 packet. */ 4316 bcmFieldOlpHeaderTypeBfdOam = 3, /* BFD Oam packet */ 4317 bcmFieldOlpHeaderTypeEthOamLm = 4, /* Ethernet Oam Down Mep LM packet */ 4318 bcmFieldOlpHeaderTypeEthOamDm = 5, /* Ethernet Oam Down Mep DM packet */ 4319 bcmFieldOlpHeaderTypeBhhOamCcm = 6, /* BHH OAM CCM packet */ 4320 bcmFieldOlpHeaderTypeBhhOamLm = 7, /* BHH Oam LM packet */ 4321 bcmFieldOlpHeaderTypeBhhOamDm = 8, /* BHH Oam DM packet */ 4322 bcmFieldOlpHeaderTypeBhhOamOthers = 9, /* BHH OAM other opcode type packet */ 4323 bcmFieldOlpHeaderTypeRfc6374Dlm = 10, /* MPLS LM/DM DLM packet */ 4324 bcmFieldOlpHeaderTypeRfc6374Dm = 11, /* MPLS LM/DM DM packet */ 4325 bcmFieldOlpHeaderTypeRfc6374DlmPlusDm = 12, /* MPLS LM/DM DLM + DM packet */ 4326 bcmFieldOlpHeaderTypeRfc6374Ilm = 13, /* MPLS LM/DM ILM packet */ 4327 bcmFieldOlpHeaderTypeRfc6374IlmPlusDm = 14, /* MPLS LM/DM ILM + DM packet */ 4328 bcmFieldOlpHeaderTypeSat = 15, /* Down Service Activation Test packet */ 4329 bcmFieldOlpHeaderTypeOtherAch = 16, /* OAM packets with other ACH types */ 4330 bcmFieldOlpHeaderTypeEthOamUpMepCcm = 17, /* Ethernet Oam Up MEP Ccm packet. */ 4331 bcmFieldOlpHeaderTypeEthOamUpMepLm = 18, /* Ethernet Oam Up MEP Lm packet. */ 4332 bcmFieldOlpHeaderTypeEthOamUpMepDm = 19, /* Ethernet Oam Up MEP Dm packet. */ 4333 bcmFieldOlpHeaderTypeEthOamUpMepOthers = 20, /* Ethernet Oam Up MEP Other opcode 4334 packet. */ 4335 bcmFieldOlpHeaderTypeUpSat = 21, /* Up Service Activation Test packet. */ 4336 bcmFieldOlpHeaderTypeMacSecEncrypt = 22, /* OLP header type for MACSEC Encrypt 4337 flow. */ 4338 bcmFieldOlpHeaderTypeMacSecDecrypt = 23, /* OLP header type for MACSEC Decrypt 4339 flow. */ 4340 bcmFieldOlpHeaderTypeCount = 24 /* Always Last. Not a usable value. */ 4341 } bcm_field_olp_header_type_t; 4342 4343 #define BCM_FIELD_OLP_HEADER_TYPE_STRINGS \ 4344 { \ 4345 "EthCC", \ 4346 "EthLmDm", \ 4347 "EthOthers", \ 4348 "BfdOam", \ 4349 "EthOamLm", \ 4350 "EthOamDm", \ 4351 "BhhOamCcm", \ 4352 "BhhOamLm", \ 4353 "BhhOamDm", \ 4354 "BhhOamOthers", \ 4355 "Rfc6374Dlm", \ 4356 "Rfc6374Dm", \ 4357 "Rfc6374DlmPlusDm", \ 4358 "Rfc6374Ilm", \ 4359 "Rfc6374IlmPlusDm", \ 4360 "Sat", \ 4361 "OtherAch", \ 4362 "EthOamUpMepCcm", \ 4363 "EthOamUpMepLm", \ 4364 "EthOamUpMepDm", \ 4365 "EthOamUpMepOthers", \ 4366 "UpSat", \ 4367 "MacSecEncrypt", \ 4368 "MacSecDecrypt" \ 4369 } 4370 4371 /* 4372 * Field action oam_domain (for bcmFieldActionOamDomain). 4373 * Used to specify the OAM domain on which endpoints lookup has to be 4374 * done. 4375 */ 4376 typedef enum bcm_field_oam_domain_e { 4377 bcmFieldOamDomainCVlan = 0, /* Endpoints configured on C-VLAN. */ 4378 bcmFieldOamDomainSVlan = 1, /* Endpoints configured on S-VLAN. */ 4379 bcmFieldOamDomainDoubleVlan = 2, /* Endpoints configured on S+C-VLAN. */ 4380 bcmFieldOamDomainPbbTe = 3, /* Endpoints configured on PBB-TE. */ 4381 bcmFieldOamDomainMplsLmDmSectionPort = 4, /* RFC 6374 Section - Port based 4382 loss/delay measurement. */ 4383 bcmFieldOamDomainMplsLmDmSectionInnerVlan = 5, /* RFC 6374 Section - Port + Inner vlan 4384 based loss/delay measurement. */ 4385 bcmFieldOamDomainMplsLmDmSectionOuterVlan = 6, /* RFC 6374 Section - Port + Outer vlan 4386 based loss/delay measurement. */ 4387 bcmFieldOamDomainMplsLmDmSectionOuterPlusInnerVlan = 7, /* RFC 6374 Section - Port + Outer vlan 4388 + Inner Vlan based loss/delay 4389 measurement. */ 4390 bcmFieldOamDomainMplsLmDmPw = 8, /* RFC 6374 Pseudowire based loss/delay 4391 measurement. */ 4392 bcmFieldOamDomainMplsLmDmLspLabel = 9, /* RFC 6374 LSP based loss/delay 4393 measurement. */ 4394 bcmFieldOamDomainCount = 10 /* Always Last. Not a usable value. */ 4395 } bcm_field_oam_domain_t; 4396 4397 #define BCM_FIELD_OAM_DOMAIN_STRINGS \ 4398 { \ 4399 "CVlan", \ 4400 "SVlan", \ 4401 "DoubleVlan", \ 4402 "PbbTe", \ 4403 "MplsLmDmSectionPort", \ 4404 "MplsLmDmSectionInnerVlan", \ 4405 "MplsLmDmSectionOuterVlan", \ 4406 "MplsLmDmSectionOuterPlusInnerVlan", \ 4407 "MplsLmDmPw", \ 4408 "MplsLmDmLspLabel" \ 4409 } 4410 4411 /* 4412 * Field Qualify oam_drop_mep_type (for bcmFieldQualifyIngressDropXXX). 4413 * Used to Qualify on Drop reasons related to OAM Data or Control packets 4414 * based on MEP type. 4415 */ 4416 typedef enum bcm_field_oam_drop_mep_type_e { 4417 bcmFieldOamDropInvalid = 0, /* Invalid. */ 4418 bcmFieldOamDropPortDownMepControl = 1, /* Drop Reasons for Port Down MEP 4419 control packets. */ 4420 bcmFieldOamDropPortDownMepData = 2, /* Drop Reasons for Port Down MEP data 4421 packets. */ 4422 bcmFieldOamDropInnerVlanDownMepControl = 3, /* Drop Reasons for Inner Vlan Down MEP 4423 control packets. */ 4424 bcmFieldOamDropInnerVlanDownMepData = 4, /* Drop Reasons for Inner Vlan Down MEP 4425 data packets. */ 4426 bcmFieldOamDropOuterVlanDownMepControl = 5, /* Drop Reasons for Outer Vlan Down MEP 4427 control packets. */ 4428 bcmFieldOamDropOuterVlanDownMepData = 6, /* Drop Reasons for Outer Vlan Down MEP 4429 data packets. */ 4430 bcmFieldOamDropInnerPlusOuterVlanDownMepControl = 7, /* Drop Reasons for Inner + Outer Vlan 4431 Down MEP control packets. */ 4432 bcmFieldOamDropInnerPlusOuterVlanDownMepData = 8, /* Drop Reasons for Inner + Outer Vlan 4433 Down MEP data packets. */ 4434 bcmFieldOamDropInnerVlanUpMepData = 9, /* Drop Reasons for Inner Vlan Up MEP 4435 data packets. */ 4436 bcmFieldOamDropOuterVlanUpMepData = 10, /* Drop Reasons for Outer Vlan Up MEP 4437 data packets. */ 4438 bcmFieldOamDropInnerPlusOuterVlanUpMepData = 11, /* Drop Reasons for Inner + Outer Vlan 4439 Up MEP data packets. */ 4440 bcmFieldOamDropSectionPortMepControl = 12, /* Drop Reasons for Port Section MEP 4441 control packets. */ 4442 bcmFieldOamDropSectionPortMepData = 13, /* Drop Reasons for Port Section MEP 4443 data packets. */ 4444 bcmFieldOamDropSectionInnerVlanMepControl = 14, /* Drop Reasons for Inner Vlan Section 4445 MEP control packets. */ 4446 bcmFieldOamDropSectionInnerVlanMepData = 15, /* Drop Reasons for Inner Vlan Section 4447 MEP data packets. */ 4448 bcmFieldOamDropSectionOuterVlanMepControl = 16, /* Drop Reasons for Outer Vlan Section 4449 MEP control packets. */ 4450 bcmFieldOamDropSectionOuterVlanMepData = 17, /* Drop Reasons for Outer Vlan Section 4451 MEP data packets. */ 4452 bcmFieldOamDropSectionInnerPlusOuterVlanMepControl = 18, /* Drop Reasons for Inner + Outer Vlan 4453 Section MEP control packets. */ 4454 bcmFieldOamDropSectionInnerPlusOuterVlanMepData = 19, /* Drop Reasons for Inner + Outer Vlan 4455 Section MEP data packets. */ 4456 bcmFieldOamDropLSPMepControl = 20, /* Drop Reasons for LSP MEP control 4457 packets. */ 4458 bcmFieldOamDropLSPMepData = 21, /* Drop Reasons for LSP MEP data 4459 packets. */ 4460 bcmFieldOamDropPwMepControl = 22, /* Drop Reasons for PsuedoWire MEP 4461 control packets. */ 4462 bcmFieldOamDropPwMepData = 23, /* Drop Reasons for PsuedoWire MEP data 4463 packets. */ 4464 bcmFieldOamDropCount = 24 /* Always Last. Not a usable value. */ 4465 } bcm_field_oam_drop_mep_type_t; 4466 4467 #define BCM_FIELD_OAM_DROP_MEP_TYPE_STRINGS \ 4468 { \ 4469 "Invalid", \ 4470 "PortDownMepControl", \ 4471 "PortDownMepData", \ 4472 "InnerVlanDownMepControl", \ 4473 "InnerVlanDownMepData", \ 4474 "OuterVlanDownMepControl", \ 4475 "OuterVlanDownMepData", \ 4476 "InnerPlusOuterVlanDownMepControl", \ 4477 "InnerPlusOuterVlanDownMepData", \ 4478 "InnerVlanUpMepData", \ 4479 "OuterVlanUpMepData", \ 4480 "InnerPlusOuterVlanUpMepData", \ 4481 "SectionPortMepControl", \ 4482 "SectionPortMepData", \ 4483 "SectionInnerVlanMepControl", \ 4484 "SectionInnerVlanMepData", \ 4485 "SectionOuterVlanMepControl", \ 4486 "SectionOuterVlanMepData", \ 4487 "SectionInnerPlusOuterVlanMepControl", \ 4488 "SectionInnerPlusOuterVlanMepData", \ 4489 "LSPMepControl", \ 4490 "LSPMepData", \ 4491 "PwMepControl", \ 4492 "PwMepData" \ 4493 } 4494 4495 /* LLC Header Format. */ 4496 typedef struct bcm_field_llc_header_s { 4497 uint8 dsap; 4498 uint8 ssap; 4499 uint8 control; 4500 } bcm_field_llc_header_t; 4501 4502 /* SNAP Header Format. */ 4503 typedef struct bcm_field_snap_header_s { 4504 uint32 org_code; 4505 uint16 type; 4506 } bcm_field_snap_header_t; 4507 4508 /* 4509 * Range Check. 4510 * 4511 * bcm_field_range_create requires exactly one of SRCPORT or DSTPORT or 4512 * FIELD_RANGE_OUTER_VLAN or FIELD_RANGE_PACKET_LENGTH. 4513 */ 4514 #define BCM_FIELD_RANGE_SRCPORT 0x00000001 /* Check source port range */ 4515 #define BCM_FIELD_RANGE_DSTPORT 0x00000002 /* Check dest port range */ 4516 #define BCM_FIELD_RANGE_TCP 0x00000004 /* Check TCP port range */ 4517 #define BCM_FIELD_RANGE_UDP 0x00000008 /* Check UDP port range */ 4518 #define BCM_FIELD_RANGE_INVERT 0x00000010 /* Check for match outside 4519 specified port range */ 4520 #define BCM_FIELD_RANGE_EXTERNAL 0x00000020 /* Create range checker on 4521 External table (5661x 4522 only) */ 4523 #define BCM_FIELD_RANGE_OUTER_VLAN 0x00000040 /* Check outer VLAN ID range */ 4524 #define BCM_FIELD_RANGE_INNER_VLAN 0x00000080 /* Check inner VLAN ID range */ 4525 #define BCM_FIELD_RANGE_PACKET_LENGTH 0x00000100 /* Check packet length range */ 4526 #define BCM_FIELD_RANGE_LOOKUP 0x00000200 /* Create range checker on 4527 Lookup table */ 4528 #define BCM_FIELD_RANGE_OUT_VPORT 0x00000400 /* Check OutVPort range */ 4529 #define BCM_FIELD_RANGE_REPLACE 0x00000800 /* Modify configurations of 4530 an existing range checker. 4531 Using this flag, the Range 4532 checker's range limits 4533 (min/max) and Type can be 4534 modified dynamically. */ 4535 4536 /* Opaque handle to a field range. */ 4537 typedef uint32 bcm_field_range_t; 4538 4539 /* Field udf_spec defines the locations of user-defined byte fields. */ 4540 typedef struct bcm_field_udf_spec_s { 4541 uint32 offset[384]; 4542 } bcm_field_udf_spec_t; 4543 4544 /* Field qset defines the set of fields used for lookup. */ 4545 typedef struct bcm_field_qset_s { 4546 SHR_BITDCL w[_SHR_BITDCLSIZE(BCM_FIELD_QUALIFY_MAX)]; 4547 SHR_BITDCL udf_map[_SHR_BITDCLSIZE(BCM_FIELD_USER_NUM_UDFS)]; 4548 } bcm_field_qset_t; 4549 4550 #define BCM_FIELD_QSET_INIT(qset) \ 4551 sal_memset(&(qset), 0, sizeof(bcm_field_qset_t)) 4552 4553 #define BCM_FIELD_QSET_ADD(qset, q) SHR_BITSET(((qset).w), (q)) 4554 4555 #define BCM_FIELD_QSET_REMOVE(qset, q) SHR_BITCLR(((qset).w), (q)) 4556 4557 #define BCM_FIELD_QSET_TEST(qset, q) SHR_BITGET(((qset).w), (q)) 4558 4559 /* 4560 * Group Priority. 4561 * 4562 * Numerically higher values are higher priority. Each priority value may 4563 * be used only once. BCM_FIELD_GROUP_PRIO_ANY can be used to have a 4564 * priority assigned automatically. 4565 */ 4566 #define BCM_FIELD_GROUP_PRIO_ANY -0x7fffffff 4567 4568 /* 4569 * Copy To Cpu Flags. 4570 * 4571 * bcm_field_action_copytocpu_config_set requires atleast of these flags 4572 * to be configured for CopyToCpu action. 4573 */ 4574 #define BCM_FIELD_COPYTOCPU_GREEN_PACKET 0x00000001 /* Copy to cpu only Green 4575 Packets regardless of 4576 its drop */ 4577 #define BCM_FIELD_COPYTOCPU_YELLOW_PACKET 0x00000002 /* Copy to cpu only 4578 Yellow Packets 4579 regardless of its drop */ 4580 #define BCM_FIELD_COPYTOCPU_RED_PACKET 0x00000004 /* Copy to cpu only Red 4581 Packets regardless of 4582 its drop */ 4583 #define BCM_FIELD_COPYTOCPU_ALL_PACKET 0x00000007 /* Copy to cpu All 4584 Packets regardless of 4585 its drop */ 4586 #define BCM_FIELD_COPYTOCPU_TRUNCATE 0x00000008 /* Copy to cpu only the 4587 first cell of Packets */ 4588 #define BCM_FIELD_COPYTOCPU_GREEN_DROPPED_PACKET 0x00000010 /* Copy to cpu only 4589 Dropped Green Packets */ 4590 #define BCM_FIELD_COPYTOCPU_YELLOW_DROPPED_PACKET 0x00000020 /* Copy to cpu only 4591 Dropped Yellow Packets */ 4592 #define BCM_FIELD_COPYTOCPU_RED_DROPPED_PACKET 0x00000040 /* Copy to cpu only 4593 Dropped Red Packets */ 4594 #define BCM_FIELD_COPYTOCPU_DROPPED_PACKET 0x00000070 /* Copy to cpu All 4595 Dropped Packets */ 4596 #define BCM_FIELD_COPYTOCPU_GREEN_NOT_DROPPED_PACKET 0x00000080 /* Copy to cpu only 4597 Non-dropped Green 4598 Packets */ 4599 #define BCM_FIELD_COPYTOCPU_YELLOW_NOT_DROPPED_PACKET 0x00000100 /* Copy to cpu only 4600 Non-dropped Yellow 4601 Packets */ 4602 #define BCM_FIELD_COPYTOCPU_RED_NOT_DROPPED_PACKET 0x00000200 /* Copy to cpu only 4603 Non-dropped Red 4604 Packets */ 4605 #define BCM_FIELD_COPYTOCPU_NOT_DROPPED_PACKET 0x00000380 /* Copy to cpu All 4606 Non-dropped Packets */ 4607 4608 /* Field CopyToCpu Config Format. */ 4609 typedef struct bcm_field_CopyToCpu_config_s { 4610 uint32 flags; /* CopyToCpu flags (BCM_FIELD_COPYTOCPU_XXX). */ 4611 uint32 match_rule; /* CopyToCpu matched rule ID. */ 4612 } bcm_field_CopyToCpu_config_t; 4613 4614 /* 4615 * Redirect Flags. 4616 * 4617 * bcm_field_action_redirect_config_set requires atleast of these flags 4618 * to be configured for Redirect action. 4619 */ 4620 #define BCM_FIELD_REDIRECT_GREEN_PACKET 0x00000001 /* Redirect only Green 4621 Packets regardless of 4622 its drop */ 4623 #define BCM_FIELD_REDIRECT_YELLOW_PACKET 0x00000002 /* Redirect only Yellow 4624 Packets regardless of 4625 its drop */ 4626 #define BCM_FIELD_REDIRECT_RED_PACKET 0x00000004 /* Redirect only Red 4627 Packets regardless of 4628 its drop */ 4629 #define BCM_FIELD_REDIRECT_ALL_PACKET 0x00000007 /* Redirect All Packets 4630 regardless of its drop */ 4631 #define BCM_FIELD_REDIRECT_TRUNCATE 0x00000008 /* Redirect only the 4632 first cell of Packets */ 4633 #define BCM_FIELD_REDIRECT_SOURCE_USE_ORIGINAL_SOURCE 0x00000010 /* Use original packet 4634 source as Redirected 4635 packet source */ 4636 #define BCM_FIELD_REDIRECT_SOURCE_USE_ORIGINAL_DESTINATION 0x00000020 /* Use original packet 4637 destination as 4638 Redirected packet 4639 source */ 4640 #define BCM_FIELD_REDIRECT_SOURCE_USE_CONFIGURED 0x00000040 /* Use configured source 4641 as Redirected packet 4642 source */ 4643 #define BCM_FIELD_REDIRECT_GREEN_DROPPED_PACKET 0x00000080 /* Redirect only Dropped 4644 Green Packets */ 4645 #define BCM_FIELD_REDIRECT_YELLOW_DROPPED_PACKET 0x00000100 /* Redirect only Dropped 4646 Yellow Packets */ 4647 #define BCM_FIELD_REDIRECT_RED_DROPPED_PACKET 0x00000200 /* Redirect only Dropped 4648 Red Packets */ 4649 #define BCM_FIELD_REDIRECT_DROPPED_PACKET 0x00000380 /* Redirect All Dropped 4650 Packets */ 4651 #define BCM_FIELD_REDIRECT_GREEN_NOT_DROPPED_PACKET 0x00000400 /* Redirect only 4652 Non-dropped Green 4653 Packets */ 4654 #define BCM_FIELD_REDIRECT_YELLOW_NOT_DROPPED_PACKET 0x00000800 /* Redirect only 4655 Non-dropped Yellow 4656 Packets */ 4657 #define BCM_FIELD_REDIRECT_RED_NOT_DROPPED_PACKET 0x00001000 /* Redirect only 4658 Non-dropped Red 4659 Packets */ 4660 #define BCM_FIELD_REDIRECT_NOT_DROPPED_PACKET 0x00001C00 /* Redirect All 4661 Non-dropped Packets */ 4662 4663 /* 4664 * Field action Redirection (for bcmFieldActionRedirect). 4665 * Used to specify the Redirection type in 4666 * bcm_field_action_redirect_config_set. 4667 */ 4668 typedef enum bcm_field_redirect_destination_type_e { 4669 bcmFieldRedirectDestinationInvalid = 0, /* Invalid. */ 4670 bcmFieldRedirectDestinationPort = 1, /* Destination Port. */ 4671 bcmFieldRedirectDestinationTrunk = 2, /* Destination Trunk. */ 4672 bcmFieldRedirectDestinationMCast = 3, /* Destination L2 Multicast. */ 4673 bcmFieldRedirectDestinationCount = 4 /* Always Last. Not a usable value. */ 4674 } bcm_field_redirect_destination_type_t; 4675 4676 #define BCM_FIELD_REDIRECTION_STRINGS \ 4677 { \ 4678 "Invalid", \ 4679 "Port", \ 4680 "Trunk", \ 4681 "MCast" \ 4682 } 4683 4684 /* Field Redirect Config Format. */ 4685 typedef struct bcm_field_redirect_config_s { 4686 uint32 flags; /* Redirect flags 4687 (BCM_FIELD_REDIRECT_XXX). */ 4688 bcm_field_redirect_destination_type_t destination_type; /* Destination type. */ 4689 int destination; /* Destination of the re-directed 4690 packets. */ 4691 int source_port; /* Source port to use for re-directed 4692 packets. */ 4693 } bcm_field_redirect_config_t; 4694 4695 /* bcm_field_action_e */ 4696 typedef enum bcm_field_action_e { 4697 bcmFieldActionCosQNew = 0, /* Change CoS Queue; param0: New CoS 4698 Queue. */ 4699 bcmFieldActionCosQCpuNew = 1, /* Change CoS Queue when CopyToCpu; 4700 param0: New CoS Queue. */ 4701 bcmFieldActionVlanCosQNew = 2, /* Change VLAN CoS Queue; param0: New 4702 CoS Queue. */ 4703 bcmFieldActionUcastCosQNew = 3, /* Change CoS Queue for unicast packets; 4704 param0: New CoS Queue. */ 4705 bcmFieldActionMcastCosQNew = 4, /* Change CoS Queue for multicast 4706 packets; param0: New CoS Queue. */ 4707 bcmFieldActionPrioPktAndIntCopy = 5, /* Pkt & internal priority from inner 4708 tag. */ 4709 bcmFieldActionPrioPktAndIntNew = 6, /* Pkt & internal priority from arg; 4710 param0: New priority. */ 4711 bcmFieldActionPrioPktAndIntTos = 7, /* Pkt & internal priority from TOS 4712 field. */ 4713 bcmFieldActionPrioPktAndIntCancel = 8, /* Override another rule. */ 4714 bcmFieldActionPrioPktCopy = 9, /* Pkt priority from inner tag. */ 4715 bcmFieldActionPrioPktNew = 10, /* Pkt priority from arg; param0: New 4716 priority. */ 4717 bcmFieldActionPrioPktTos = 11, /* Pkt priority from TOS field. */ 4718 bcmFieldActionPrioPktCancel = 12, /* Override another rule. */ 4719 bcmFieldActionPrioIntCopy = 13, /* Internal priority from inner tag. */ 4720 bcmFieldActionPrioIntNew = 14, /* Internal priority from arg; param0: 4721 New priority. */ 4722 bcmFieldActionPrioIntTos = 15, /* Internal priority from TOS field. */ 4723 bcmFieldActionPrioIntCancel = 16, /* Override another rule. */ 4724 bcmFieldActionTosNew = 17, /* Change TOS value in IP header; 4725 param0: New TOS value. */ 4726 bcmFieldActionTosCopy = 18, /* Copy priority from outer tag to IP 4727 hdr. */ 4728 bcmFieldActionTosCancel = 19, /* Override another rule. */ 4729 bcmFieldActionDscpNew = 20, /* Change DSCP value; param0: New DSCP 4730 value. */ 4731 bcmFieldActionDscpCancel = 21, /* Override another rule. */ 4732 bcmFieldActionEcnNew = 22, /* Change ECN value in IP header TOS; 4733 param0: New ECN value. */ 4734 bcmFieldActionCopyToCpu = 23, /* Copy to CPU. */ 4735 bcmFieldActionCopyToCpuCancel = 24, /* Override another rule. */ 4736 bcmFieldActionSwitchToCpuCancel = 25, /* Override switch logic copy-to-CPU. */ 4737 bcmFieldActionSwitchToCpuReinstate = 26, /* Reinstate copy-to-CPU switch logic. */ 4738 bcmFieldActionTimeStampToCpu = 27, /* Send a copy to cpu with timestamp and 4739 drop the packet */ 4740 bcmFieldActionTimeStampToCpuCancel = 28, /* Override another action (don't 4741 copy,don't drop) */ 4742 bcmFieldActionRedirectPort = 29, /* Redirect Packet to single port; 4743 param0: Destination modid; param1: 4744 Destination port. */ 4745 bcmFieldActionRedirect = bcmFieldActionRedirectPort, /* Same as bcmFieldActionRedirectPort. */ 4746 bcmFieldActionRedirectTrunk = 30, /* Redirect Packet to a trunk; param0: 4747 Destination trunk ID. */ 4748 bcmFieldActionRedirectCancel = 31, /* Override another rule. */ 4749 bcmFieldActionRedirectPbmp = 32, /* Replace port bitmap; param0: 4750 Destination port bitmap. */ 4751 bcmFieldActionRedirectIpmc = 33, /* Replace L3 multicast L3 & L2 bitmap; 4752 param0: IP Multicast Index. */ 4753 bcmFieldActionRedirectMcast = 34, /* Replace L2 multicast dest bitmap; 4754 param0: L2 Multicast Index. */ 4755 bcmFieldActionRedirectVlan = 35, /* Redirect to VLAN port bitmap. */ 4756 bcmFieldActionRedirectBcastPbmp = 36, /* Replace L2 broadcast dest bitmap; 4757 param0: Destination port bitmap. */ 4758 bcmFieldActionEgressMask = 37, /* Apply egress mask; param0: 4759 Destination port bitmap mask. */ 4760 bcmFieldActionEgressPortsAdd = 38, /* Add additional egress ports; param0: 4761 Destination port bitmap. */ 4762 bcmFieldActionDrop = 39, /* Drop. */ 4763 bcmFieldActionDropCancel = 40, /* Override another rule. */ 4764 bcmFieldActionMirrorOverride = 41, /* Override any mirroring for packet. */ 4765 bcmFieldActionMirrorIngress = 42, /* Ingress mirror; param0: Dest modid; 4766 param1: Dest port/tgid. */ 4767 bcmFieldActionMirrorEgress = 43, /* Egress mirror; param0: Dest modid; 4768 param1: Dest port/tgid. */ 4769 bcmFieldActionL3ChangeVlan = 44, /* Change VLAN on L3-switched packets; 4770 param0: ECMP or next hop info. */ 4771 bcmFieldActionL3ChangeVlanCancel = 45, /* Override another rule. */ 4772 bcmFieldActionL3ChangeMacDa = 46, /* Change MAC DA on L3-switched packets; 4773 param0: ECMP or next hop info. */ 4774 bcmFieldActionL3ChangeMacDaCancel = 47, /* Override another rule; param0: Next 4775 hop table index. */ 4776 bcmFieldActionL3Switch = 48, /* L3-switch packet; param0: ECMP or 4777 next hop info. */ 4778 bcmFieldActionL3SwitchCancel = 49, /* Override another rule. */ 4779 bcmFieldActionAddClassTag = 50, /* Add Classification Tag. */ 4780 bcmFieldActionDropPrecedence = 51, /* Set Drop Precedence; param0: 4781 BCM_FIELD_COLOR_xxx. */ 4782 bcmFieldActionRpDrop = 52, /* Red Priority Drop. */ 4783 bcmFieldActionRpDropCancel = 53, /* Override another rule. */ 4784 bcmFieldActionRpDropPrecedence = 54, /* Set Red Priority Drop Precedence; 4785 param0: BCM_FIELD_COLOR_xxx. */ 4786 bcmFieldActionRpCopyToCpu = 55, /* Red Priority Copy to CPU. */ 4787 bcmFieldActionRpCopyToCpuCancel = 56, /* Override another rule. */ 4788 bcmFieldActionRpSwitchToCpuCancel = 57, /* Override switch logic copy-to-CPU. */ 4789 bcmFieldActionRpSwitchToCpuReinstate = 58, /* Reinstate copy-to-CPU switch logic. */ 4790 bcmFieldActionRpTimeStampToCpu = 59, /* Send a copy to cpu with timestamp and 4791 drop the packet */ 4792 bcmFieldActionRpTimeStampToCpuCancel = 60, /* Override another action (don't 4793 copy,don't drop) */ 4794 bcmFieldActionRpDscpNew = 61, /* Red packet change DSCP value; param0: 4795 New DSCP value. */ 4796 bcmFieldActionRpDscpCancel = 62, /* Override any changes to DSCP field. */ 4797 bcmFieldActionRpEcnNew = 63, /* Red packet change ECN value; param0: 4798 New ECN value. */ 4799 bcmFieldActionRpOuterVlanPrioNew = 64, /* Red packet 802.1p priority from arg; 4800 param0: New priority. */ 4801 bcmFieldActionRpInnerVlanPrioNew = 65, /* Red packet 802.1p priority from arg; 4802 param0: New priority. */ 4803 bcmFieldActionRpOuterVlanCfiNew = 66, /* Red packet 802.1p CFI from arg; 4804 param0: New CFI bit value. */ 4805 bcmFieldActionRpInnerVlanCfiNew = 67, /* Red packet 802.1p CFI from arg; 4806 param0: New CFI bit value. */ 4807 bcmFieldActionRpPrioPktCopy = 68, /* Red packet priority from inner tag. */ 4808 bcmFieldActionRpPrioPktNew = 69, /* Red packet priority from argument0; 4809 param0: New priority. */ 4810 bcmFieldActionRpPrioPktTos = 70, /* Red Packet priority from TOS field in 4811 IP header. */ 4812 bcmFieldActionRpPrioPktCancel = 71, /* Override another rule. */ 4813 bcmFieldActionRpCosQNew = 72, /* Red packet change CoS Queue; param0: 4814 New CoS Queue. */ 4815 bcmFieldActionRpVlanCosQNew = 73, /* Red packet change VLAN CoSQ; param0: 4816 New CoS Queue. */ 4817 bcmFieldActionRpUcastCosQNew = 74, /* Red unicast packet change CoS Queue; 4818 param0: New CoS Queue. */ 4819 bcmFieldActionRpMcastCosQNew = 75, /* Red multicast packet change CoS 4820 Queue; param0: New CoS Queue. */ 4821 bcmFieldActionRpPrioPktAndIntCopy = 76, /* Red packet Packet & Internal priority 4822 from inner tag. */ 4823 bcmFieldActionRpPrioPktAndIntNew = 77, /* Red packet Packet & Internal priority 4824 from param0; param0: New priority. */ 4825 bcmFieldActionRpPrioPktAndIntTos = 78, /* Red packet Packet & Internal priority 4826 from TOS field. */ 4827 bcmFieldActionRpPrioPktAndIntCancel = 79, /* Override any internal priority 4828 changes. */ 4829 bcmFieldActionRpPrioIntCopy = 80, /* Red packet internal priority from 4830 inner VLAN tag. */ 4831 bcmFieldActionRpPrioIntNew = 81, /* Red packet internal priority from an 4832 argument; param0: New priority. */ 4833 bcmFieldActionRpPrioIntTos = 82, /* Red packet internal priority from IP 4834 header TOS field. */ 4835 bcmFieldActionRpPrioIntCancel = 83, /* Red packet override any internal 4836 priority changes. */ 4837 bcmFieldActionYpDrop = 84, /* Yellow Priority Drop. */ 4838 bcmFieldActionYpDropCancel = 85, /* Override another rule. */ 4839 bcmFieldActionYpDropPrecedence = 86, /* Set Yellow Priority Drop Precedence; 4840 param0: BCM_FIELD_COLOR_xxx. */ 4841 bcmFieldActionYpCopyToCpu = 87, /* Yellow Priority Copy to CPU. */ 4842 bcmFieldActionYpCopyToCpuCancel = 88, /* Override another rule. */ 4843 bcmFieldActionYpSwitchToCpuCancel = 89, /* Override switch logic copy-to-CPU. */ 4844 bcmFieldActionYpSwitchToCpuReinstate = 90, /* Reinstate copy-to-CPU switch logic. */ 4845 bcmFieldActionYpTimeStampToCpu = 91, /* Send a copy to cpu with timestamp and 4846 drop the packet */ 4847 bcmFieldActionYpTimeStampToCpuCancel = 92, /* Override another action (don't 4848 copy,don't drop) */ 4849 bcmFieldActionYpDscpNew = 93, /* Yellow packet change DSCP value; 4850 param0: New DSCP value. */ 4851 bcmFieldActionYpDscpCancel = 94, /* Override any changes to DSCP field. */ 4852 bcmFieldActionYpEcnNew = 95, /* Yellow packet change ECN value; 4853 param0: New ECN value. */ 4854 bcmFieldActionYpOuterVlanPrioNew = 96, /* Yellow packet 802.1p priority from 4855 arg. */ 4856 bcmFieldActionYpInnerVlanPrioNew = 97, /* Yellow packet 802.1p priority from 4857 arg; param0: New priority. */ 4858 bcmFieldActionYpOuterVlanCfiNew = 98, /* Yellow packet 802.1p CFI from arg; 4859 param0: New CFI bit value. */ 4860 bcmFieldActionYpInnerVlanCfiNew = 99, /* Yellow packet 802.1p CFI from arg; 4861 param0: New CFI bit value. */ 4862 bcmFieldActionYpPrioPktCopy = 100, /* Yellow packet priority from inner 4863 tag. */ 4864 bcmFieldActionYpPrioPktNew = 101, /* Yellow packet priority from param0; 4865 param0: New priority. */ 4866 bcmFieldActionYpPrioPktTos = 102, /* Yellow packet priority from TOS field 4867 in IP header. */ 4868 bcmFieldActionYpPrioPktCancel = 103, /* Override another rule. */ 4869 bcmFieldActionYpCosQNew = 104, /* Yellow packet change CoS Queue; 4870 param0: New CoS Queue. */ 4871 bcmFieldActionYpVlanCosQNew = 105, /* Yellow packet change VLAN CoSQ; 4872 param0: New CoS Queue. */ 4873 bcmFieldActionYpUcastCosQNew = 106, /* Yellow unicast packet change CoS 4874 Queue; param0: New CoS Queue. */ 4875 bcmFieldActionYpMcastCosQNew = 107, /* Yellow multicast packet change CoS 4876 Queue; param0: New CoS Queue. */ 4877 bcmFieldActionYpPrioPktAndIntCopy = 108, /* Yellow packet Packet & Internal 4878 priority from inner tag. */ 4879 bcmFieldActionYpPrioPktAndIntNew = 109, /* Yellow packet Packet & Internal 4880 priority from param0; param0: New 4881 priority. */ 4882 bcmFieldActionYpPrioPktAndIntTos = 110, /* Yellow packet Packet & Internal 4883 priority from TOS field. */ 4884 bcmFieldActionYpPrioPktAndIntCancel = 111, /* Override any int priority changes. */ 4885 bcmFieldActionYpPrioIntCopy = 112, /* Yellow packet internal priority from 4886 inner VLAN tag. */ 4887 bcmFieldActionYpPrioIntNew = 113, /* Yellow packet internal priority from 4888 an argument; param0: New priority. */ 4889 bcmFieldActionYpPrioIntTos = 114, /* Yellow packet internal priority from 4890 IP header TOS field. */ 4891 bcmFieldActionYpPrioIntCancel = 115, /* Yellow packet override any internal 4892 priority changes. */ 4893 bcmFieldActionUpdateCounter = 116, /* Update Counter; param0: 4894 BCM_FIELD_COUNTER_MODE_xxx. */ 4895 bcmFieldActionMeterConfig = 117, /* Meter configuration; param0: 4896 BCM_FIELD_METER_MODE_xxx; param1: if 4897 param0 == BCM_FIELD_METER_MODE_FLOW, 4898 this denotes BCM_FIELD_METER_PEAK(1) 4899 or BCM_FIELD_METER_COMMITTED(2). */ 4900 bcmFieldActionColorIndependent = 118, /* Make L3SW_CHANGE_MACDA_OR_VLAN 4901 actions color independent. */ 4902 bcmFieldActionClassDestSet = 119, /* Set destination address lookup class 4903 ID. */ 4904 bcmFieldActionClassSet = bcmFieldActionClassDestSet, /* Same as bcmFieldActionClassDestSet. */ 4905 bcmFieldActionClassSourceSet = 120, /* Set source address lookup class ID. */ 4906 bcmFieldActionVrfSet = 121, /* Set VRF ID. */ 4907 bcmFieldActionInnerVlanNew = 122, /* Replace inner VLAN ID; param0: New 4908 inner VLAN ID. */ 4909 bcmFieldActionInnerVlanPrioNew = 123, /* Replace inner VLAN tag priority; 4910 param0: New inner VLAN tag priority. */ 4911 bcmFieldActionInnerVlanDelete = 124, /* Delete inner VLAN tag. */ 4912 bcmFieldActionOuterVlanDelete = 125, /* Delete outer VLAN tag. */ 4913 bcmFieldActionOuterVlanDeleteCancel = 126, /* Override previous outer VLAN tag 4914 delete. */ 4915 bcmFieldActionInnerVlanAdd = 127, /* Add a new Inner VLAN tag. */ 4916 bcmFieldActionInnerVlanCfiNew = 128, /* Replace packet 802.1p CFI from arg. */ 4917 bcmFieldActionOuterVlanNew = 129, /* Replace outer VLAN ID; param0: New 4918 outer VLAN ID. */ 4919 bcmFieldActionVlanNew = bcmFieldActionOuterVlanNew, /* Same as bcmFieldActionOuterVlanNew. */ 4920 bcmFieldActionOuterVlanAdd = 130, /* Add a new Outer VLAN tag. */ 4921 bcmFieldActionVlanAdd = bcmFieldActionOuterVlanAdd, /* Same as bcmFieldActionOuterVlanAdd. */ 4922 bcmFieldActionOuterVlanAddCancel = 131, /* Override previous outer VLAN tag add. */ 4923 bcmFieldActionOuterVlanLookup = 132, /* Lookup outer VLAN tag. */ 4924 bcmFieldActionVlanLookup = bcmFieldActionOuterVlanLookup, /* Same as 4925 bcmFieldActionOuterVlanLookup. */ 4926 bcmFieldActionOuterVlanPrioNew = 133, /* Replace outer VLAN tag priority; 4927 param0: New outer VLAN tag priority. */ 4928 bcmFieldActionOuterVlanCfiNew = 134, /* Replace packet 802.1p CFI from arg; 4929 param0: New CFI bit value; param0: 4930 New CFI bit value. */ 4931 bcmFieldActionOuterTpidNew = 135, /* Replace TPID in outer VLAN tag; 4932 param0: New tpid. */ 4933 bcmFieldActionGpDrop = 136, /* Green Priority Drop. */ 4934 bcmFieldActionGpDropCancel = 137, /* Override another rule. */ 4935 bcmFieldActionGpDropPrecedence = 138, /* Set Green Priority Drop Precedence; 4936 param0: BCM_FIELD_COLOR_xxx. */ 4937 bcmFieldActionGpCopyToCpu = 139, /* Green Priority Copy to CPU. */ 4938 bcmFieldActionGpCopyToCpuCancel = 140, /* Override another rule. */ 4939 bcmFieldActionGpSwitchToCpuCancel = 141, /* Override switch logic copy-to-CPU. */ 4940 bcmFieldActionGpSwitchToCpuReinstate = 142, /* Reinstate copy-to-CPU switch logic. */ 4941 bcmFieldActionGpTimeStampToCpu = 143, /* Send a copy to cpu with timestamp and 4942 drop the packet */ 4943 bcmFieldActionGpTimeStampToCpuCancel = 144, /* Override another action (don't 4944 copy,don't drop) */ 4945 bcmFieldActionGpDscpNew = 145, /* Green packet change DSCP value; 4946 param0: New DSCP value. */ 4947 bcmFieldActionGpDscpCancel = 146, /* Override any changes to DSCP field. */ 4948 bcmFieldActionGpEcnNew = 147, /* Green packet change ECN value; 4949 param0: New ECN value. */ 4950 bcmFieldActionGpTosPrecedenceNew = 148, /* Green packet change Tos byte 4951 precedence value; param0: New 4952 precedence value. */ 4953 bcmFieldActionGpTosPrecedenceCopy = 149, /* Green packet copy Tos byte precedence 4954 from 802.1p priority. */ 4955 bcmFieldActionGpOuterVlanPrioNew = 150, /* Green packet 802.1p priority from 4956 arg. */ 4957 bcmFieldActionGpInnerVlanPrioNew = 151, /* Green packet 802.1p priority from 4958 arg; param0: New priority. */ 4959 bcmFieldActionGpOuterVlanCfiNew = 152, /* Green packet 802.1p CFI from arg; 4960 param0: New CFI bit value. */ 4961 bcmFieldActionGpInnerVlanCfiNew = 153, /* Green packet 802.1p CFI from arg; 4962 param0: New CFI bit value. */ 4963 bcmFieldActionGpPrioPktCopy = 154, /* Green packet priority from inner tag. */ 4964 bcmFieldActionGpPrioPktNew = 155, /* Green packet priority from param0; 4965 param0: New priority. */ 4966 bcmFieldActionGpPrioPktTos = 156, /* Green packet priority from TOS field 4967 in IP header. */ 4968 bcmFieldActionGpPrioPktCancel = 157, /* Override another rule. */ 4969 bcmFieldActionGpCosQNew = 158, /* Green packet change CoS Queue; 4970 param0: New CoS Queue. */ 4971 bcmFieldActionGpVlanCosQNew = 159, /* Green packet change VLAN CoSQ; 4972 param0: New CoS Queue. */ 4973 bcmFieldActionGpUcastCosQNew = 160, /* Green unicast packet change CoS 4974 Queue; param0: New CoS Queue. */ 4975 bcmFieldActionGpMcastCosQNew = 161, /* Green multicast packet change CoS 4976 Queue; param0: New CoS Queue. */ 4977 bcmFieldActionGpPrioPktAndIntCopy = 162, /* Green packet Packet & Internal 4978 priority from inner tag. */ 4979 bcmFieldActionGpPrioPktAndIntNew = 163, /* Green packet Packet & Internal 4980 priority from param0; param0: New 4981 priority. */ 4982 bcmFieldActionGpPrioPktAndIntTos = 164, /* Green packet Packet & Internal 4983 priority from TOS field. */ 4984 bcmFieldActionGpPrioPktAndIntCancel = 165, /* Override any int priority changes. */ 4985 bcmFieldActionGpPrioIntCopy = 166, /* Green packet internal priority from 4986 inner VLAN tag. */ 4987 bcmFieldActionGpPrioIntNew = 167, /* Green packet internal priority from 4988 an argument; param0: New priority. */ 4989 bcmFieldActionGpPrioIntTos = 168, /* Green packet internal priority from 4990 IP header TOS field. */ 4991 bcmFieldActionGpPrioIntCancel = 169, /* Green packet override any internal 4992 priority changes. */ 4993 bcmFieldActionDoNotChangeTtl = 170, /* Do not decrement TTL. */ 4994 bcmFieldActionDoNotCheckUrpf = 171, /* Do not check reverse path for unicast 4995 traffic. */ 4996 bcmFieldActionDoNotCheckVlan = 172, /* Do not check VLAN membership and STG 4997 STP state. */ 4998 bcmFieldActionDoNotLearn = 173, /* Disable L2 learning. */ 4999 bcmFieldActionIpFix = 174, /* Record the packet regardless of port 5000 ipfix enable. */ 5001 bcmFieldActionIpFixCancel = 175, /* Record the packet action override. */ 5002 bcmFieldActionIncomingMplsPortSet = 176, /* Assign incoming MPLS port. */ 5003 bcmFieldActionDeprecated177 = 177, /* Deprecated. Do not use. */ 5004 bcmFieldActionNewClassId = 178, /* Assign new classification ID. */ 5005 bcmFieldActionDeprecated179 = 179, /* Deprecated. Do not use. */ 5006 bcmFieldActionDeprecated180 = 180, /* Deprecated. Do not use. */ 5007 bcmFieldActionDeprecated181 = 181, /* Deprecated. Do not use. */ 5008 bcmFieldActionDeprecated182 = 182, /* Deprecated. Do not use. */ 5009 bcmFieldActionDeprecated183 = 183, /* Deprecated. Do not use. */ 5010 bcmFieldActionDeprecated184 = 184, /* Deprecated. Do not use. */ 5011 bcmFieldActionDeprecated185 = 185, /* Deprecated. Do not use. */ 5012 bcmFieldActionMultipathHash = 186, /* ECMP Hash selection for 5013 bcmFieldActionL3Switch action. */ 5014 bcmFieldActionIpfixRate = 187, /* Set IPFIX flow rate meter; param0: 5015 rate id */ 5016 bcmFieldActionOffloadRedirect = 188, /* Redirect packet to offload engine. */ 5017 bcmFieldActionOffloadClassSet = 189, /* Set Class Id in offload engine 5018 redirected traffic. */ 5019 bcmFieldActionOffloadDropIndication = 190, /* Set drop indicator in offload engine 5020 redirected traffic. */ 5021 bcmFieldActionOamUpMep = 191, /* Indicate UP MEP. */ 5022 bcmFieldActionOamTx = 192, /* Indicate TX direction OAM PDU or data 5023 packet. Used as MSB of 5024 FieldActionOamLmBasePtr'. */ 5025 bcmFieldActionOamLmepMdl = 193, /* MDL value for the LMEP. */ 5026 bcmFieldActionOamServicePriMappingPtr = 194, /* Concatenated with the internal 5027 priority as index to LM packet 5028 counter. */ 5029 bcmFieldActionOamLmBasePtr = 195, /* Set base pointer to LM packet 5030 counter. */ 5031 bcmFieldActionOamDmEnable = 196, /* Enable OAM Delay Measurement. */ 5032 bcmFieldActionOamLmEnable = 197, /* Enable OAM Loss Measurement. */ 5033 bcmFieldActionOamLmepEnable = 198, /* Enable OAM loss/delay measurement. */ 5034 bcmFieldActionOamPbbteLookupEnable = 199, /* Indicate SVP should be used as the 5035 key for LMEP lookup. */ 5036 bcmFieldActionSrcMacNew = 200, /* Replace source mac of the packet. */ 5037 bcmFieldActionDstMacNew = 201, /* Replace destination mac of the 5038 packet. */ 5039 bcmFieldActionVnTagNew = 202, /* Replace NIV VN tag if present, add if 5040 not present; param0: VN tag. */ 5041 bcmFieldActionVnTagDelete = 203, /* Delete NIV VN tag. */ 5042 bcmFieldActionDeprecated204 = 204, /* Deprecated. Do not use. */ 5043 bcmFieldActionDeprecated205 = 205, /* Deprecated. Do not use. */ 5044 bcmFieldActionVportNew = 206, /* Replace/assign virtual port id. */ 5045 bcmFieldActionVportSpcpNew = 207, /* Replace/assign virtual port's spcp. */ 5046 bcmFieldActionVportCpcpNew = 208, /* Replace/assign virtual port's cpcp. */ 5047 bcmFieldActionVportTcNew = 209, /* Replace/assign virtual port's traffic 5048 class. */ 5049 bcmFieldActionVportDpNew = 210, /* Replace/assign virtual port's drop 5050 precedence. */ 5051 bcmFieldActionRedirectVportPort = 211, /* Redirect Packet to single VportPort; 5052 param0: Destination vport; param1: 5053 Destination port. */ 5054 bcmFieldActionMacDaKnown = 212, /* Packet is not treated as a DLF type */ 5055 bcmFieldActionFilters = 213, /* Enable Filters to override the rule; 5056 param0: filter 5057 types(BCM_FIELD_FILTER_XXX) */ 5058 bcmFieldActionFabricQueue = 214, /* Enable ext header on hg ports. */ 5059 bcmFieldActionCnmCancel = 215, /* Do not generate QCN congestion 5060 notification message. */ 5061 bcmFieldActionQcnUndo = bcmFieldActionCnmCancel, /* Do not perform a Congestion test on 5062 this packet (no QCN message can be 5063 generated) */ 5064 bcmFieldActionDynamicHgTrunkCancel = 216, /* Disable dynamic HiGig trunking. */ 5065 bcmFieldActionEgressMirrorDisable = 217, /* Disable Egress Mirror for matching 5066 packet. */ 5067 bcmFieldActionMultipathHashAdditionalInfo = 218, /* Add additional information to 5068 matching packet's LAG/ECMP 5069 load-balancing hash calculation */ 5070 bcmFieldActionDeprecated219 = 219, /* Deprecated. Do not use. */ 5071 bcmFieldActionMirrorEgressDisable = 220, /* Disable egress mirror; param0 = TRUE 5072 to disable, FALSE otherwise */ 5073 bcmFieldActionOuterVlanCopyInner = 221, /* Copy the VLAN id from the inner tag 5074 to the outer. */ 5075 bcmFieldActionOuterVlanPrioCopyInner = 222, /* Copy the 802.1p priority from the 5076 inner tag to the outer. */ 5077 bcmFieldActionOuterVlanCfiCopyInner = 223, /* Copy the CFI bit from the inner tag 5078 to the outer. */ 5079 bcmFieldActionInnerVlanCopyOuter = 224, /* Copy the VLAN id from the outer tag 5080 to the inner. */ 5081 bcmFieldActionInnerVlanPrioCopyOuter = 225, /* Copy the 802.1p priority from the 5082 outer tag to the inner. */ 5083 bcmFieldActionInnerVlanCfiCopyOuter = 226, /* Copy the CFI bit from the outer tag 5084 to the inner. */ 5085 bcmFieldActionCompressSrcIp6 = 227, /* Map incoming IPv6 packet Source IP to 5086 ingress field processor IPv4 Source 5087 IP field. */ 5088 bcmFieldActionCompressDstIp6 = 228, /* Map incoming IPv6 packet Destination 5089 IP to ingress field processor IPv4 5090 Destination IP field. */ 5091 bcmFieldActionServicePoolIdNew = 229, /* Change Service Pool ID; param0: New 5092 Service Pool ID. */ 5093 bcmFieldActionUseGlobalMeterColor = 230, /* Use service meters output color 5094 instead of CNG based color as input 5095 packet color */ 5096 bcmFieldActionRedirectEgrNextHop = 231, /* Redirect packet to next hop; param0: 5097 ECMP or next hop info. */ 5098 bcmFieldActionTrunkLoadBalanceCancel = 232, /* Disable trunk load balancing */ 5099 bcmFieldActionEcmpLoadBalanceCancel = 233, /* Disable ECMP group load balancing */ 5100 bcmFieldActionDoNotOverride = 234, /* Do not override actions */ 5101 bcmFieldActionEgressClassSelect = 235, /* Select class to pass to EFP */ 5102 bcmFieldActionHiGigClassSelect = 236, /* Select class for HiGig */ 5103 bcmFieldActionOamDmTimeFormat = 237, /* Select time format for OAM delay 5104 measurement */ 5105 bcmFieldActionOamLmDmSampleEnable = 238, /* Indicates if packet should be 5106 processed as an OAMPDU belonging to 5107 this MEP */ 5108 bcmFieldActionOamTagStatusCheck = 239, 5109 bcmFieldActionOamTunnelControl = 240, /* Select whether OAMPDU can either be 5110 in a tunnel that is terminated or not 5111 tunneled */ 5112 bcmFieldActionRegex = 241, /* Perform DPI */ 5113 bcmFieldActionNoRegex = 242, /* Do not perform DPI */ 5114 bcmFieldActionStat0 = 243, /* Update statistics (statId in param0) 5115 on entry hit. See 5116 bcm_field_entry_stat_attach and 5117 related APIs. */ 5118 bcmFieldActionStat = bcmFieldActionStat0, /* Alias for bcmFieldActionStat0 */ 5119 bcmFieldActionPolicerLevel0 = 244, /* Apply policer (policerId in param0) 5120 to traffic hitting this entry. See 5121 bcm_field_entry_policer_attach and 5122 related APIs. */ 5123 bcmFieldActionPolicerLevel1 = 245, /* Apply policer (policerId in param0) 5124 to traffic hitting this entry. See 5125 bcm_field_entry_policer_attach and 5126 related APIs. */ 5127 bcmFieldActionPolicerGroup = 246, /* Flag in ASETs to indicate group 5128 policer usage with the group */ 5129 bcmFieldActionStatGroup = 247, /* Flag in ASETs to indicate stat group 5130 usage with the group */ 5131 bcmFieldActionVSQ = 248, /* Assign matching packets to specified 5132 VSQ (param0). */ 5133 bcmFieldActionIntPriorityAndDropPrecedence = 249, /* Change internal priority and drop 5134 precedence. param0 = new internal 5135 priority. param1 = new drop 5136 precedence */ 5137 bcmFieldActionISQ = 250, /* Assign matching packets to specified 5138 ISQ (param0). */ 5139 bcmFieldActionTrap = 251, /* Trap matched packets (treat them 5140 according to the specified trap 5141 profile) */ 5142 bcmFieldActionUsePolicerResult = 252, /* Specify/override where policer result 5143 will be used for matched packets. 5144 See BCM_FIELD_USE_POLICER_RESULT_* 5145 for flags that go in param0. */ 5146 bcmFieldActionStat1 = 253, /* Secondary statistics update for 5147 matched packets (statId in param0) */ 5148 bcmFieldActionStatTag = 254, /* Assign statistics tag (such as for 5149 external statistics engine) to 5150 matched packets */ 5151 bcmFieldActionSnoop = 255, /* Snoop matched packets (treat them 5152 according to the specified snoop 5153 profile) */ 5154 bcmFieldActionTtlSet = 256, /* New TTL */ 5155 bcmFieldActionIncomingIpIfSet = 257, /* Assign incoming IP interface */ 5156 bcmFieldActionOrientationSet = 258, /* Set the new Orientation */ 5157 bcmFieldActionTrunkHashKeySet = 259, /* Set the Trunk Hash Key */ 5158 bcmFieldActionDstRpfGportNew = 260, /* Set the RPF Destination */ 5159 bcmFieldActionDhcpPkt = 261, /* Indicate whether the Packet is DHCP */ 5160 bcmFieldActionSrcGportNew = 262, /* Set the Source-Port */ 5161 bcmFieldActionForwardingTypeNew = 263, /* Set the new Forwarding type */ 5162 bcmFieldActionStartPacketStrip = 264, /* Strip the start-of-packet */ 5163 bcmFieldActionSystemHeaderSet = 265, /* Modify a System Header */ 5164 bcmFieldActionVSwitchNew = 266, /* Replace Virtual Switch */ 5165 bcmFieldActionLearnSrcMacNew = 267, /* Replace the learnt packet source MAC 5166 address */ 5167 bcmFieldActionLearnSrcPortNew = 268, /* Replace the learnt packet source Port */ 5168 bcmFieldActionLearnForwardingVlanIdNew = 269, /* Replace the learnt packet Forwarding 5169 Vlan ID */ 5170 bcmFieldActionQosMapIdNew = 270, /* Set the QoS map Id */ 5171 bcmFieldActionVlanActionSetNew = 271, /* Modify the VLAN Action Set Id */ 5172 bcmFieldActionVlanTranslationValueSet = 272, /* Set VLAN Translation lookup result */ 5173 bcmFieldActionTunnelTerminatedValueSet = 273, /* Set Tunnel termination lookup result */ 5174 bcmFieldActionMplsTerminatedValueSet = 274, /* Set MPLS termination lookup result */ 5175 bcmFieldActionIpTunnelValueSet = 275, /* Set IP Tunnel termination lookup 5176 result */ 5177 bcmFieldActionL2SrcValueSet = 276, /* Set L2 Source lookup result */ 5178 bcmFieldActionL2DestValueSet = 277, /* Set L2 Destination lookup result */ 5179 bcmFieldActionL3SrcRouteValueSet = 278, /* Set L3 Source lookup result */ 5180 bcmFieldActionL3DestRouteValueSet = 279, /* Set L3 Destination lookup result */ 5181 bcmFieldActionIpmcValueSet = 280, /* Set IP Multicast lookup result */ 5182 bcmFieldActionCascadedKeyValueSet = 281, /* Set key value to cascade to later 5183 group for a packet */ 5184 bcmFieldActionIngressGportSet = 282, /* Set a new ingress Gport 5185 (MPLS/Mim/WLAN) value. */ 5186 bcmFieldActionExternalValue0Set = 283, /* Set External lookup 0 result */ 5187 bcmFieldActionExternalValue1Set = 284, /* Set External lookup 1 result */ 5188 bcmFieldActionExternalValue2Set = 285, /* Set External lookup 2 result */ 5189 bcmFieldActionExternalValue3Set = 286, /* Set External lookup 3 result */ 5190 bcmFieldActionNatCancel = 287, /* Do Not perform NAT on this matching 5191 packet */ 5192 bcmFieldActionNat = 288, /* Perform NAT operation on the matching 5193 packet */ 5194 bcmFieldActionNatEgressOverride = 289, /* Override NAT Egress information with 5195 the given Egress information for 5196 Translation */ 5197 bcmFieldActionRegexActionCancel = 290, /* Suppress action taken by the Regex 5198 module for matching pkt. */ 5199 bcmFieldActionPortPrioIntCosQNew = 291, /* Change CoS Queue; param0: Classifier 5200 ID param1: Queue offset or l2 UC 5201 Gport. */ 5202 bcmFieldActionRpPortPrioIntCosQNew = 292, /* Red packet change CoS Queue; param0: 5203 Classifier ID param1: Queue offset or 5204 l2 UC Gport. */ 5205 bcmFieldActionYpPortPrioIntCosQNew = 293, /* Yellow packet change CoS Queue; 5206 param0: Classifier ID param1: Queue 5207 offset or l2 UC Gport. */ 5208 bcmFieldActionGpPortPrioIntCosQNew = 294, /* Green packet change CoS Queue; 5209 param0: Classifier ID param1: Queue 5210 offset or l2 UC Gport. */ 5211 bcmFieldActionYpMirrorIngress = 295, /* Yellow packet ingress mirror; param0: 5212 Dest modid; param1: Dest port/tgid. */ 5213 bcmFieldActionYpRedirectPort = 296, /* Redirect yellow packet to single 5214 port; param0: Destination modid; 5215 param1: Destination port. */ 5216 bcmFieldActionDeprecated297 = 297, /* Deprecated. Do not use. */ 5217 bcmFieldActionFibreChanSrcBindEnable = 298, /* Enable or Disable Source Bind Check 5218 for Fibre Chan packets */ 5219 bcmFieldActionFibreChanFpmaPrefixCheckEnable = 299, /* Enable or Disable FPMA prefix check 5220 for Fibre Chan packets */ 5221 bcmFieldActionFibreChanZoneCheckEnable = 300, /* Enable or Disable Zone Check for 5222 Fibre Chan packets */ 5223 bcmFieldActionFibreChanVsanId = 301, /* VSAN Id generated via VFP. */ 5224 bcmFieldActionFibreChanZoneCheckActionCancel = 302, /* To Accept or Ignore previously made 5225 Zone check result */ 5226 bcmFieldActionFibreChanIntVsanPri = 303, /* New VSAN Priority. */ 5227 bcmFieldActionLearnInVPortNew = 304, /* Replace the learnt packet InVPort. */ 5228 bcmFieldActionOamDomain = 305, /* Set the OAM domains on which the MEP 5229 lookups are done. param0 can be used 5230 to set first domain and param1 for 5231 second domain. */ 5232 bcmFieldActionOamOlpHeaderAdd = 306, /* Add OLP header for this packet - 5233 param0 to be used for passing the 5234 header type. */ 5235 bcmFieldActionOamSessionId = 307, /* OAM session Id to be used in OLP Rx 5236 header - param0 to be used for 5237 passing the session id. */ 5238 bcmFieldActionOuterVlanCfiCancel = 308, /* Disable the CFI remarking of the 5239 outer vlan tag CFI bit. */ 5240 bcmFieldActionInnerVlanPriCancel = 309, /* Disable the PCP remarking of the 5241 inner vlan tag priority bits. */ 5242 bcmFieldActionPrioIntRemark = 310, /* Assign a new packet internal priority 5243 for PCP or CFI remarking. */ 5244 bcmFieldActionUseDefaultWred = 311, /* Use the discard settings from default 5245 WRED configuration */ 5246 bcmFieldActionHashValueSet = 312, /* Set Hash result */ 5247 bcmFieldActionL3IngressSet = 313, /* Assign L3 Ingress Interface value to 5248 packet. */ 5249 bcmFieldActionInterfaceClassVPort = 314, /* Set the Virtual Port Interface Class 5250 ID . */ 5251 bcmFieldActionIngSampleEnable = 315, /* Set the SFLOW Ingress Sampling. */ 5252 bcmFieldActionEgrSampleEnable = 316, /* Set the SFLOW Egress Sampling. */ 5253 bcmFieldActionHashSelect0 = 317, /* Set the hash buckets bitmap for Hash 5254 key A. */ 5255 bcmFieldActionHashSelect1 = 318, /* Set the hash buckets bitmap for Hash 5256 key B. */ 5257 bcmFieldActionTrunkResilientHashCancel = 319, /* Cancels the resilient hash on Trunk. */ 5258 bcmFieldActionHgTrunkResilientHashCancel = 320, /* Cancels the resilient hash on HiGiG 5259 Trunk. */ 5260 bcmFieldActionEcmpResilientHashCancel = 321, /* Cancels the resilient hash on ECMP. */ 5261 bcmFieldActionUnmodifiedPacketRedirectPort = 322, /* Redirect Unmodified Packet to single 5262 port; param0: Destination Gport. */ 5263 bcmFieldActionEtagNew = 323, /* Replace Port Extender ETAG if 5264 present, add if not present; param0: 5265 ETAG. */ 5266 bcmFieldActionEtagDelete = 324, /* Delete Port Extender ETAG. */ 5267 bcmFieldActionPfcClassNew = 325, /* Change the PFC class of the packet; 5268 param0 : new PFC class value. */ 5269 bcmFieldActionRpIntCongestionNotificationNew = 326, /* Replace the internal congestion 5270 notification value of red packet; 5271 param0: Internal congestion 5272 notification value. */ 5273 bcmFieldActionYpIntCongestionNotificationNew = 327, /* Replace the internal congestion 5274 notification value of yellow packet; 5275 param0: Internal congestion 5276 notification value. */ 5277 bcmFieldActionGpIntCongestionNotificationNew = 328, /* Replace the internal congestion 5278 notification value of green packet; 5279 param0: Internal congestion 5280 notification value. */ 5281 bcmFieldActionRpHGCongestionClassNew = 329, /* Replace the value of CongestionClass 5282 field in Higig header for red packet; 5283 param0: CongestionClass value. */ 5284 bcmFieldActionYpHGCongestionClassNew = 330, /* Replace the value of CongestionClass 5285 field in Higig header for yellow 5286 packet; param0: CongestionClass 5287 value. */ 5288 bcmFieldActionGpHGCongestionClassNew = 331, /* Replace the value of CongestionClass 5289 field in Higig header for green 5290 packet; param0: CongestionClass 5291 value. */ 5292 bcmFieldActionRedirDropPrecedence = 332, /* Set the redirect drop precedence of 5293 packets. param0:BCM_FIELD_COLOR_xxx 5294 param1:n/a. */ 5295 bcmFieldActionRpRedirDropPrecedence = 333, /* Set the redirect drop precedence of 5296 Red packets. 5297 param0:BCM_FIELD_COLOR_xxx 5298 param1:n/a. */ 5299 bcmFieldActionYpRedirDropPrecedence = 334, /* Set the redirect drop precedence of 5300 Yellow packets. 5301 param0:BCM_FIELD_COLOR_xxx 5302 param1:n/a. */ 5303 bcmFieldActionGpRedirDropPrecedence = 335, /* Set the redirect drop precedence of 5304 Green packets. 5305 param0:BCM_FIELD_COLOR_xxx 5306 param1:n/a. */ 5307 bcmFieldActionHiGigDstModuleGportNew = 336, /* Replace the value of DST_MODID field 5308 in Higig header ; param0: New 5309 Destination Module Id. */ 5310 bcmFieldActionHiGigDstPortGportNew = 337, /* Replace the value of DST_PORT field 5311 in Higig header ; param0: New 5312 Destination Port Id. */ 5313 bcmFieldActionHiGigDstGportNew = 338, /* Replace the value of DST_MODID and 5314 DST_PORT fields in Higig header ; 5315 param0: New Destination Gport. */ 5316 bcmFieldActionGpHiGigDropPrecedenceNew = 339, /* Replace the value of Drop Precedence 5317 field in Higig header for Green 5318 Packets; param0: BCM_FIELD_COLOR_xxx. */ 5319 bcmFieldActionYpHiGigDropPrecedenceNew = 340, /* Replace the value of Drop Precedence 5320 field in Higig header for Yellow 5321 packets; param0: BCM_FIELD_COLOR_xxx. */ 5322 bcmFieldActionRpHiGigDropPrecedenceNew = 341, /* Replace the value of Drop Precedence 5323 field in Higig header for Red 5324 packets; param0: BCM_FIELD_COLOR_xxx. */ 5325 bcmFieldActionHiGigDropPrecedenceNew = 342, /* Replace the value of Drop Precedence 5326 field in Higig header for 5327 any(Green/Yellow/Red) packets; 5328 param0: BCM_FIELD_COLOR_xxx. */ 5329 bcmFieldActionGpHiGigIntPriNew = 343, /* Replace the value of Traffic Class 5330 field in Higig header for Green 5331 packets; param0: New Internal 5332 Priority. */ 5333 bcmFieldActionYpHiGigIntPriNew = 344, /* Replace the value of Traffic Class 5334 field in Higig header for Yellow 5335 packets; param0: New Internal 5336 Priority. */ 5337 bcmFieldActionRpHiGigIntPriNew = 345, /* Replace the value of Traffic Class 5338 field in Higig header for Red 5339 packets; param0: New Internal 5340 Priority. */ 5341 bcmFieldActionHiGigIntPriNew = 346, /* Replace the value of Traffic Class 5342 field in Higig header for 5343 any(green/Yellow/Red) packet; param0: 5344 New Internal Priority. */ 5345 bcmFieldActionLoopbackSrcModuleGportNew = 347, /* Replace the value of Source ModId 5346 field in Loopback header ; param0: 5347 New Source Module Id. */ 5348 bcmFieldActionLoopbackSrcPortGportNew = 348, /* Replace the value of Source PortId 5349 field in Loopback header ; param0: 5350 New Source Port Id. */ 5351 bcmFieldActionLoopbackSrcGportNew = 349, /* Replace the value of Source ModId and 5352 Source PortId fields in Loopback 5353 header ; param0: New Source Gport. */ 5354 bcmFieldActionLoopbackCpuMasqueradePktProfileNew = 350, /* Replace the value of Packet Profile 5355 field in Loopback header ; param0: 5356 New Packet Profile. */ 5357 bcmFieldActionLoopbackPacketProcessingPortNew = 351, /* Replace the value of Packet 5358 Processing port field in Loopback 5359 header ; param0: New Packet 5360 Processing Port. */ 5361 bcmFieldActionLoopBackTypeNew = 352, /* Replace the value of Loopback Type 5362 field in Loopback header ; param0: 5363 Loopback Type 5364 (bcmFieldLoopbackTypeXXX). */ 5365 bcmFieldActionRecoverableDropCancel = 353, /* Override drop decision taken by 5366 Protection switching logic */ 5367 bcmFieldActionStackingRouteNew = 354, /* Replace the value of the stacking 5368 route */ 5369 bcmFieldActionPphPresentSet = 355, /* If set, a Packet Processing header is 5370 present. */ 5371 bcmFieldActionVxlanHeaderBits8_31_Set = 356, /* Set Vxlan Header Reserved_1 Field */ 5372 bcmFieldActionVxlanHeaderBits56_63_Set = 357, /* Set Vxlan Header Reserved_2 Field */ 5373 bcmFieldActionFabricHeaderSet = 358, /* If set, a Packet Processing header is 5374 present. */ 5375 bcmFieldActionOam = 359, /* It comprises several fields that are 5376 changed at the same time: OAM-Up-Mep, 5377 OAM-Sub-Type, OAM-offset, 5378 OAM-Stamp-Offset */ 5379 bcmFieldActionVpnSet = 360, /* Set a new VPN value; param0: VPN Id. */ 5380 bcmFieldActionL3DestRoutePublicValueSet = 361, /* Set L3 Destination public lookup 5381 result. */ 5382 bcmFieldActionL3SrcRoutePublicValueSet = 362, /* Set L3 Source public lookup result. */ 5383 bcmFieldActionClassZero = 363, /* Class Action Zero. */ 5384 bcmFieldActionClassOne = 364, /* Class Action One. */ 5385 bcmFieldActionTrapReduced = 365, /* Trap action without qualifier. */ 5386 bcmFieldActionGroupClassSet = 366, /* Assign Class Id value to a Ingress 5387 Field Group. */ 5388 bcmFieldActionEgressPbmpNullCopyToCpu = 367, /* Dropped Packets Copy to Cpu */ 5389 bcmFieldActionPimBidirFwd = 368, /* If set, enable PIM-BIDIR forwarding 5390 of IP Multicast packets. */ 5391 bcmFieldActionDscpMapNew = 369, /* Qos Mapping for Incoming packet DSCP */ 5392 bcmFieldActionReserved370 = 370, /* Reserved action. */ 5393 bcmFieldActionReserved371 = 371, /* Reserved action. */ 5394 bcmFieldActionReserved372 = 372, /* Reserved action. */ 5395 bcmFieldActionReserved373 = 373, /* Reserved action. */ 5396 bcmFieldActionFabricEHAddOrUpdate = 374, /* To add or update the Higig extended 5397 header(4 bytes) to Higig Packets. */ 5398 bcmFieldActionDot1pPreserve = 375, /* To prohibit changing/rewriting of 5399 packets 802.1p priority. */ 5400 bcmFieldActionGpDot1pPreserve = 376, /* To prohibit changing/rewriting of 5401 Green packets 802.1p priority. */ 5402 bcmFieldActionYpDot1pPreserve = 377, /* To prohibit changing/rewriting of 5403 yellow packets 802.1p priority. */ 5404 bcmFieldActionRpDot1pPreserve = 378, /* To prohibit changing/rewriting of red 5405 packets 802.1p priority. */ 5406 bcmFieldActionDscpPreserve = 379, /* To prohibit changing/rewriting of 5407 packets DSCP. */ 5408 bcmFieldActionGpDscpPreserve = 380, /* To prohibit changing/rewriting of 5409 green packets DSCP. */ 5410 bcmFieldActionYpDscpPreserve = 381, /* To prohibit changing/rewriting of 5411 yellow packets DSCP. */ 5412 bcmFieldActionRpDscpPreserve = 382, /* To prohibit changing/rewriting of red 5413 packets DSCP. */ 5414 bcmFieldActionChangeL2FieldsCancel = 383, /* Cancel Changing OuterVlan, SrcMac, 5415 DstMac, VnTag, Etag from lower 5416 priority groups. */ 5417 bcmFieldActionBFDSessionIdNew = 384, /* Assign new Session Id to BFD 5418 EndPoint. */ 5419 bcmFieldActionCosMapNew = 385, /* Override the default internal 5420 priority to cosq mapping derived in 5421 ingress pipeline using new IFP Cos 5422 Map. */ 5423 bcmFieldActionGpCosMapNew = 386, /* Override the default internal 5424 priority to cosq mapping derived in 5425 ingress pipeline using new IFP Cos 5426 Map for Green Packets only. */ 5427 bcmFieldActionYpCosMapNew = 387, /* Override the default internal 5428 priority to cosq mapping derived in 5429 ingress pipeline using new IFP Cos 5430 Map for Yellow Packets only. */ 5431 bcmFieldActionRpCosMapNew = 388, /* Override the default internal 5432 priority to cosq mapping derived in 5433 ingress pipeline using new IFP Cos 5434 Map for Red Packets only. */ 5435 bcmFieldActionVxlanHeaderFlags = 389, /* Set Vxlan Header Flags Field. */ 5436 bcmFieldActionChangeL2Fields = 390, /* Modify L2 fields for the given L3 5437 egress object. */ 5438 bcmFieldActionExactMatchClassId = 391, /* Exact Match Action Class Id. */ 5439 bcmFieldActionPfcTx = 392, /* Send out a PFC frame. parma0: local 5440 port number. param1: the enable 5441 vector of the PFC frame */ 5442 bcmFieldActionSwitchEncap = 393, /* To encapsulate MiML or Custom Header 5443 in the customer ethernet packet for 5444 selected packets */ 5445 bcmFieldActionStatVportNew = 394, /* Replace/assign virtual port id 5446 attached to specific statistic */ 5447 bcmFieldActionUcastQueueNew = 395, /* Assign new Unicast Queue Number 5448 param0: l2 UC queue gport. */ 5449 bcmFieldActionRpUcastQueueNew = 396, /* Red packet Assign new Unicast Queue 5450 Number param0: l2 UC queue gport. */ 5451 bcmFieldActionYpUcastQueueNew = 397, /* Yellow Packet Assign new Unicast 5452 Queue Number param0: l2 UC queue 5453 gport. */ 5454 bcmFieldActionGpUcastQueueNew = 398, /* Green Packet Assign new Unicast Queue 5455 Number param0: l2 UC queue gport. */ 5456 bcmFieldActionIntCosUcastQueueNew = 399, /* Assign new Unicast Queue Number 5457 param0: l2 UC queue gport. param1: 5458 classifier id */ 5459 bcmFieldActionRpIntCosUcastQueueNew = 400, /* Red Packet Assign new Unicast Queue 5460 Number param0: l2 UC queue gport. 5461 param1: classifier id */ 5462 bcmFieldActionYpIntCosUcastQueueNew = 401, /* Yellow Packet Assign new Unicast 5463 Queue Number param0: l2 UC queue 5464 gport. param1: classifier id */ 5465 bcmFieldActionGpIntCosUcastQueueNew = 402, /* Green Packet Assign new Unicast Queue 5466 Number param0: l2 UC queue gport. 5467 param1: classifier id */ 5468 bcmFieldActionHgTrunkRandomRoundRobinHashCancel = 403, /* Cancel Random or Roundrobin hash 5469 configured for Higig Trunks */ 5470 bcmFieldActionTrunkRandomRoundRobinHashCancel = 404, /* Cancel Random or Roundrobin hash 5471 configured for Trunks */ 5472 bcmFieldActionEcmpRandomRoundRobinHashCancel = 405, /* Cancel Random or Roundrobin hash 5473 configured for Ecmp */ 5474 bcmFieldActionPacketTraceEnable = 406, /* trigger storing all instrumentation 5475 triggers for this packet to a buffer. 5476 Other than IFP, same can be done 5477 using packet visibility API */ 5478 bcmFieldActionStrength = 407, /* Strength for CopyToCpu or Redirection 5479 packets */ 5480 bcmFieldActionRedirectBufferPriority = 408, /* Buffer priority for CopyToCpu or 5481 Redirection packets */ 5482 bcmFieldActionRedirectPrioIntNew = 409, /* Internal priority for Redirected 5483 packets */ 5484 bcmFieldActionRpRedirectPrioIntNew = 410, /* Internal priority for Redirected Red 5485 packets */ 5486 bcmFieldActionYpRedirectPrioIntNew = 411, /* Internal priority for Redirected 5487 Yellow packets */ 5488 bcmFieldActionGpRedirectPrioIntNew = 412, /* Internal priority for Redirected 5489 Green packets */ 5490 bcmFieldActionUntaggedPacketPriorityNew = 413, /* set input priority for untagged 5491 packets. (not internal priority, 5492 refer doc) */ 5493 bcmFieldActionDoNotCutThrough = 414, /* On configuring this action, the 5494 packet is not eligible for 5495 cut-through mode in MMU. It will take 5496 the default store and forward method. */ 5497 bcmFieldActionLoopbackOamResponse = 415, /* Generate OAM Loopback response. */ 5498 bcmFieldActionLoopbackSatResponse = 416, /* Generate SAT latching Loopback 5499 response. */ 5500 bcmFieldActionOamStatObjectSessionId = 417, /* Adds LM counter index to OLP header 5501 to uniquely identify OAM session. */ 5502 bcmFieldActionServicePrioIntCosQNew = 418, /* Change CoS Queue; param0: Classifier 5503 ID param1: Queue offset. */ 5504 bcmFieldActionRpServicePrioIntCosQNew = 419, /* Red packet change CoS Queue; param0: 5505 Classifier ID param1: Queue offset. */ 5506 bcmFieldActionYpServicePrioIntCosQNew = 420, /* Yellow packet change CoS Queue; 5507 param0: Classifier ID param1: Queue 5508 offset. */ 5509 bcmFieldActionGpServicePrioIntCosQNew = 421, /* Green packet change CoS Queue; 5510 param0: Classifier ID param1: Queue 5511 offset. */ 5512 bcmFieldActionProtectionSwitchingDrop = 422, /* Drop the data packets on working or 5513 protected path of PBB in VFP. */ 5514 bcmFieldActionServicePoolIdPrecedenceNew = 423, /* Change SPID and SPAP; param0: New 5515 Service Pool ID param1: Service Pool 5516 Precedence (color) */ 5517 bcmFieldActionSwapMacDaSa = 424, /* Swap Destination and Source Mac 5518 addresses */ 5519 bcmFieldActionSwapSourceIPDestIP = 425, /* Swap Destination and Source IP 5520 addresses */ 5521 bcmFieldActionReplaceTtl = 426, /* TTL is replaced with the value 5522 programmed by 5523 bcmFieldControlReplacementTtl instead 5524 of decrementing */ 5525 bcmFieldActionPacketIsL3SAT = 427, /* Indicates matched packet is L3SAT 5526 packet and calculates offset to the 5527 start of the L3SAT PDU */ 5528 bcmFieldActionReplaceSrcMac = 428, /* Replace Source Mac */ 5529 bcmFieldActionReplaceDstMac = 429, /* Replace Destination Mac */ 5530 bcmFieldActionReplaceInnerVlan = 430, /* Replace Inner Vlan */ 5531 bcmFieldActionReplaceOuterVlan = 431, /* Replace Outer Vlan */ 5532 bcmFieldActionReplaceInnerVlanPriority = 432, /* Replace Inner Vlan Priority */ 5533 bcmFieldActionReplaceOuterVlanPriority = 433, /* ReplaceOuter Vlan Priority */ 5534 bcmFieldActionStatAndPolicer = 434, /* Stat and Policer Action */ 5535 bcmFieldActionSnoopAndTrap = 435, /* Snoop and Trap Action */ 5536 bcmFieldActionIEEE1588 = 436, /* Setting varoius parameters for 1588 5537 frames */ 5538 bcmFieldActionExternalValue4Set = 437, /* Set External lookup 4 result */ 5539 bcmFieldActionExternalValue5Set = 438, /* Set External lookup 5 result */ 5540 bcmFieldActionForward = 439, /* Set Forwarding destination raw value */ 5541 bcmFieldActionTrapCodeQualifier = 440, /* Set Trap destination value (trap code 5542 + forward strength+ snoop strength ) 5543 in addition to configurable value 5544 that further resolves the cause of 5545 the trap in the context of the 5546 CPU-Trap-Code */ 5547 bcmFieldActionPphSnoopCode = 441, /* Set the PPH Snoop code value */ 5548 bcmFieldActionEgressTimeStampInsert = 442, /* Insert EPIPE timestamp. */ 5549 bcmFieldActionIngressTimeStampInsert = 443, /* Insert IPIPE timestamp. */ 5550 bcmFieldActionIngressTimeStampInsertCancel = 444, /* Do not insert ingress timestamp. 5551 Overrules port config. */ 5552 bcmFieldActionEgressTimeStampInsertCancel = 445, /* Do not insert egress timestamp. 5553 Overrules port config. */ 5554 bcmFieldActionMplsLabel1ExpNew = 446, /* Change the EXP field in forwarding 5555 label of MPLS packets. */ 5556 bcmFieldActionDynamicEcmpEnable = 447, /* Force packets to use DLB when matched 5557 by IFP rules, even though the Group 5558 Table indicates hash-based load 5559 balancing is to be used. */ 5560 bcmFieldActionDynamicTrunkEnable = 448, /* Force packets to use DLB when matched 5561 by IFP rules, even though the Group 5562 Table indicates hash-based load 5563 balancing is to be used. */ 5564 bcmFieldActionDynamicEcmpCancel = bcmFieldActionEcmpLoadBalanceCancel, /* Same as 5565 bcmFieldActionEcmpLoadBalanceCancel. */ 5566 bcmFieldActionDynamicTrunkCancel = 449, /* Force packets to use hash-based load 5567 balancing, even though the group is 5568 configured to support DLB. */ 5569 bcmFieldActionDgm = 450, /* Indicate IFP action is valid. It is 5570 mandatory to add this action to for 5571 the following three actions to get 5572 applied. */ 5573 bcmFieldActionDgmThreshold = 451, /* Indicates the IFP action is only 5574 valid when the primary optimal band 5575 is equal to or below this threshold. 5576 If threshold is set to 7, this action 5577 will always be valid. */ 5578 bcmFieldActionDgmBias = 452, /* Indicates the bias in favor of the 5579 alternate path in DGM. */ 5580 bcmFieldActionDgmCost = 453, /* Indicates the cost of switching over 5581 to the alternate path in DGM. */ 5582 bcmFieldActionStaggeredValue0Set = 454, /* Value taken from action result 0 in 5583 staggered mode. */ 5584 bcmFieldActionStaggeredValue1Set = 455, /* Value taken from action result 1 in 5585 staggered mode. */ 5586 bcmFieldActionStaggeredValue2Set = 456, /* Value taken from action result 2 in 5587 staggered mode. */ 5588 bcmFieldActionStaggeredValue3Set = 457, /* Value taken from action result 3 in 5589 staggered mode. */ 5590 bcmFieldActionStaggeredDirectValueSet = 458, /* Value taken from KAPS payload in 5591 staggered mode. */ 5592 bcmFieldActionStaggeredPreselProfile0Set = 459, /* Program selection profile value taken 5593 from action result 0 in staggered 5594 mode. */ 5595 bcmFieldActionStaggeredPreselProfile1Set = 460, /* Program selection profile value taken 5596 from action result 1 in staggered 5597 mode. */ 5598 bcmFieldActionStaggeredPreselProfile2Set = 461, /* Program selection profile value taken 5599 from action result 2 in staggered 5600 mode. */ 5601 bcmFieldActionStaggeredPreselProfile3Set = 462, /* Program selection profile value taken 5602 from action result 3 in staggered 5603 mode. */ 5604 bcmFieldActionStaggeredPreselProfileDirectSet = 463, /* Program selection profile value taken 5605 from KAPS payload 0 in staggered 5606 mode. */ 5607 bcmFieldActionEnableVlanCheck = 464, /* Check VLAN membership and STG STP 5608 state */ 5609 bcmFieldActionAdmitProfile = 465, /* Return admit profile by 5610 bcmFieldAdmitProfile_t */ 5611 bcmFieldActionDynamicHgTrunkEnable = 466, /* Force packets to use DLB when matched 5612 by IFP rules, even though the Group 5613 Table indicates hash-based load 5614 balancing is to be used. */ 5615 bcmFieldActionVxlanTerminate = 467, /* De-capsulate VXLAN tunnel header */ 5616 bcmFieldActionUseTunnelPayload = 468, /* To use Tunnel payload header fields 5617 for hashing */ 5618 bcmFieldActionVlanActions = 469, /* Set actions to modify VLAN tag 5619 fields. */ 5620 bcmFieldActionSRDuplicateDrop = 470, /* SR (Seamless Redundancy): drop the 5621 packet if it's an SR duplicate */ 5622 bcmFieldActionSRDuplicateDropCancel = 471, /* SR (Seamless Redundancy): Do not drop 5623 the duplicate packet (override 5624 another rule) */ 5625 bcmFieldActionSRNetIdFilter = 472, /* SR (Seamless Redundancy): NET ID 5626 filtering drop the packet if its NET 5627 ID is the same as destination ports */ 5628 bcmFieldActionSRNetIdSource = 473, /* SR: Indicates the source which NET ID 5629 comes from; param0: 5630 BCM_FIELD_SR_NET_ID_SOURCE_xxx */ 5631 bcmFieldActionFilterSrcMacPorts = 474, /* SR: Apply source port filtering based 5632 on source address */ 5633 bcmFieldActionSRCopyToCpu = 475, /* SR: Copy all packets or only 5634 non-duplicate packets to CPU with 5635 specified custom reason code; param0: 5636 BCM_FIELD_SR_COPYTOCPU_xxx; param1: 5637 custom CPU RX reason code (1~63) */ 5638 bcmFieldActionSRTagAdd = 476, /* Insert SR (Seamless Redundancy) tag 5639 in the packet; param0: SR packet type 5640 (BCM_FIELD_SR_TAG_TYPE_xxx) */ 5641 bcmFieldActionSRTagDelete = 477, /* Delete SR (Seamless Redundancy) tag 5642 (if present) in the packet; param0: 5643 SR packet type 5644 (BCM_FIELD_SR_TAG_TYPE_xxx) */ 5645 bcmFieldActionSRLanIdNew = 478, /* Specify SR(Seamless Redundancy) LAN 5646 ID; param0: 0 for LAN A, 1 for LAN B */ 5647 bcmFieldActionSRNetIdNew = 479, /* Specify SR(Seamless Redundancy) NET 5648 ID; param0: NET ID 0~7 */ 5649 bcmFieldActionSRFlowIdNew = 480, /* Specify SR(Seamless Redundancy) flow 5650 ID; param0: SR flow ID */ 5651 bcmFieldActionSRFlowPriMapIdNew = 481, /* Specify TSN priority map for 5652 SR(Seamless Redundancy) flow; param0: 5653 TSN priority map ID */ 5654 bcmFieldActionMtuSize = 482, /* Specify MTU size that the packet 5655 should be checked against. It 5656 overrides the MTU size specified from 5657 MTU profile. */ 5658 bcmFieldActionStuSize = 483, /* Specify STU (Shortest Transmission 5659 Unit) size that the packet should be 5660 checked against. It overrides the STU 5661 size specified from MTU profile. */ 5662 bcmFieldActionTsnFlowIdNew = 484, /* Specify TSN (Time-Sensitive 5663 Networking) flow ID; param0: TSN flow 5664 ID. */ 5665 bcmFieldActionTsnFlowPriMapIdNew = 485, /* Specify TSN priority map for TSN 5666 flow; param0: TSN priority map ID */ 5667 bcmFieldActionMtuProfileIdNew = 486, /* Specify the TSN MTU profile ID; 5668 param0: new MTU profile ID */ 5669 bcmFieldActionStuProfileIdNew = 487, /* Specify the TSN STU (Shortest 5670 Transmission Unit) profile ID; 5671 param0: new STU profile ID */ 5672 bcmFieldActionExternalValue6Set = 488, /* Set External lookup 6 result */ 5673 bcmFieldActionExternalValue7Set = 489, /* Set External lookup 7 result */ 5674 bcmFieldActionEsmSearchKeySrcMac = 490, /* This action sets ESM search key to 5675 perform only L2 Source Mac Address 5676 Lookup */ 5677 bcmFieldActionTrunkResilientHashEnable = 491, /* Forcefully Enable Resilient hashing 5678 for Trunk groups. */ 5679 bcmFieldActionTrunkResilientHashDisable = 492, /* Forcefully Disable Resilient hashing 5680 for Trunk groups. */ 5681 bcmFieldActionEcmpResilientHashEnable = 493, /* Forcefully Enable Resilient hashing 5682 for ECMP groups. */ 5683 bcmFieldActionEcmpResilientHashDisable = 494, /* Forcefully Disable Resilient hashing 5684 for ECMP groups. */ 5685 bcmFieldActionHiGigTrunkResilientHashEnable = 495, /* Forcefully Enable Resilient hashing 5686 for HiGig Trunk groups. */ 5687 bcmFieldActionHiGigTrunkResilientHashDisable = 496, /* Forcefully Disable Resilient hashing 5688 for HiGig Trunk groups. */ 5689 bcmFieldActionMacSecDecrypt = 497, /* This action adds MACSEC Decrypt OLP 5690 header in Egress Pipe. This action 5691 does not modify packet in Egress 5692 Pipe. */ 5693 bcmFieldActionMacSecEncrypt = 498, /* This action only adds MACSEC Encrypt 5694 OLP header in Egress Pipe. */ 5695 bcmFieldActionMacSecSubPortNumAdd = 499, /* This action assigns MACSEC Subport 5696 number to be used by MACSEC engine 5697 for Security Association lookup */ 5698 bcmFieldActionMacSecPktTypeSet = 500, /* This action assigns a MACSEC packet 5699 type to be used in MACSEC block. 5700 MACSEC packet type is defined by 5701 bcm_field_macsec_pkt_type_t. */ 5702 bcmFieldActionLatencyFlowId = 501, /* Update Latency-Flow-Id in OAM-TS 5703 HEADER; param0: New Latency-Flow-Id 5704 value. */ 5705 bcmFieldActionIntEncapEnable = 502, /* This action triggers to insert INT 5706 metadata header to the incoming valid 5707 INT packet. */ 5708 bcmFieldActionIntTurnAround = 503, /* This action triggers to turn-around 5709 the packet if it fails to detect the 5710 INT packet (one of the case if the 5711 packet reaches hop limit). */ 5712 bcmFieldActionMacSecRedirectIpmc = 504, /* This action redirects multicast 5713 MACSEC packets to MACSEC engine and 5714 also adds OLP header in Egress 5715 Pipeline. */ 5716 bcmFieldActionAddIngOuterVlanToEgrOuterVlan = 505, /* This action is to add the incoming 5717 outer VLAN tag to the outgoing packet 5718 in Egress Pipeline. */ 5719 bcmFieldActionErspan3HdrVlanCosPktCopy = 506, /* This action is to copy the incoming 5720 outer VLAN and COS in the outgoing 5721 ERSPAN3 header. */ 5722 bcmFieldActionErspan3HdrGbpSrcIdAdd = 507, /* This action is to add the GBP source 5723 ID in ERSPAN3 header. */ 5724 bcmFieldActionErspan3HdrUdf2Add = 508, /* This action is to add the User 5725 Defined Field 2 in ERSPAN3 header. */ 5726 bcmFieldActionRoeFrameTypeSet = 509, /* This action is to set or overwrite 5727 Roe frame type. Roe frame types are 5728 defined by 5729 bcm_field_roe_frame_type_t. */ 5730 bcmFieldActionFlowtrackerGroupId = 510, /* This action is to associate 5731 flowtracker group. */ 5732 bcmFieldActionStatisticPtr0 = 511, /* Statistic pointer 0 for statistic 5733 interface (stat I/F). */ 5734 bcmFieldActionStatisticPtr1 = 512, /* Statistic pointer 1 for statistic 5735 interface (stat I/F). */ 5736 bcmFieldActionTafGatePriMap = 513, /* This action specify the priority 5737 mapping of TAF (Time Aware Filtering) 5738 gate. */ 5739 bcmFieldActionIntEncapUpdate = 514, /* This action triggers to update 5740 existing INT metadata header of a 5741 incoming valid INT packet. */ 5742 bcmFieldActionMplsLookupEnable = 515, /* Enable MPLS lookup similar to the 5743 functionality managed by VLAN 5744 controls; param0:BCM_FIELD_MPLS_XXX */ 5745 bcmFieldActionTerminationAllowed = 516, /* Overrides MY_STATION_TCAM actions; 5746 param0:BCM_FIELD_XXX_TERM_ALLOWED */ 5747 bcmFieldActionMatchPbmpDrop = 517, /* Drop packets on a port or a group of 5748 ports after IFP resolution */ 5749 bcmFieldActionMatchPbmpRedirect = 518, /* Redirect packets on a port or a group 5750 of ports after IFP resolution */ 5751 bcmFieldActionIntEncapDisable = 519, /* This action triggers to disable the 5752 insertion of INT metadata header to 5753 the incoming valid INT packet. */ 5754 bcmFieldActionElephantLookupEnable = 520, /* Enable Elephant flow lookup. */ 5755 bcmFieldActionElephantLookupDisable = 521, /* Disable Elephant flow lookup. */ 5756 bcmFieldActionElephantColorEnable = 522, /* Enable color assignment for a packet 5757 identified as Elephant. */ 5758 bcmFieldActionElephantColorDisable = 523, /* Disable color assignment for a packet 5759 identified as Elephant. */ 5760 bcmFieldActionElephantQueueEnable = 524, /* Enable Queue assignment for a packet 5761 identified as Elephant. */ 5762 bcmFieldActionElephantQueueDisable = 525, /* Disable Queue assignment for a packet 5763 identified as Elephant. */ 5764 bcmFieldActionLatencyMonitorEnable = 526, /* Enable Latency Monitor for a given 5765 monitor IDs. */ 5766 bcmFieldActionLatencyMonitorDisable = 527, /* Disable Latency Monitor for a given 5767 monitor IDs. */ 5768 bcmFieldActionOamLmCounterPoolId = 528, /* This action assigns OAM LM Counter 5769 Pool ID. */ 5770 bcmFieldActionLoopbackType = 529, /* Loopback Type of type 5771 bcm_field_LoopbackType_t. */ 5772 bcmFieldActionVisibilityEnable = 530, /* This action marks a packet as 5773 Visibility Packet */ 5774 bcmFieldActionDlbEcmpMonitorEnable = 531, /* This action is to enable/disable ecmp 5775 monitor during DLB. */ 5776 bcmFieldActionMirrorZeroingEnable = 532, /* This action is to enable zeroing 5777 [payload wiping] on any mirrored 5778 packet */ 5779 bcmFieldActionNshEncapEnable = 533, /* This action triggers to NSH 5780 encapuslation in the outgoing packet. */ 5781 bcmFieldActionNshServicePathId = 534, /* Add Service Path ID to the NSH for 5782 the lookups at egress stage. */ 5783 bcmFieldActionNshServiceIndex = 535, /* Add Service Index to the NSH for the 5784 lookups at egress stage. */ 5785 bcmFieldActionL3IngressStrengthSet = 536, /* Set the strength levels for L3_IIF 5786 assignment from various sources w.r.t 5787 VFP.. */ 5788 bcmFieldActionGbpClassifierAdd = 537, /* Indicates that GBP is present for 5789 EPIPE for Multicast flows. */ 5790 bcmFieldActionGbpSrcIdNew = 538, /* Assign a new GBP source ID for 5791 matched packet. */ 5792 bcmFieldActionAssignOpaqueObject1 = 539, /* Assign a flex Opaque 1 object. */ 5793 bcmFieldActionAssignOpaqueObject2 = 540, /* Assign a flex Opaque 2 object. */ 5794 bcmFieldActionAssignOpaqueObject3 = 541, /* Assign a flex Opaque 3 object. */ 5795 bcmFieldActionAssignOpaqueObject4 = 542, /* Assign a flex Opaque 4 object. */ 5796 bcmFieldActionAssignExtractionCtrlId = 543, /* Assign a flex Extraction Control ID. */ 5797 bcmFieldActionAssignEditCtrlId = 544, /* Assign a flex Extraction Control ID. */ 5798 bcmFieldActionFlowtrackerEnable = 545, /* Enable/Disable Flowtracking for flows 5799 hitting this entry. */ 5800 bcmFieldActionFlowtrackerNewLearnEnable = 546, /* Enable/Disable new learning in 5801 flowtracker for flows hitting this 5802 entry. */ 5803 bcmFieldActionCosMapSelect = 547, /* This action applies the given COS map 5804 type (as defined in 5805 bcm_field_cos_map_select_t) */ 5806 bcmFieldActionGbpSrcMacMcastBitSet = 548, /* This action converts matched packet?s 5807 Source Mac to Multicast based on 5808 Field Control 5809 bcmFieldControlGbpSrcMacMcastBitSet */ 5810 bcmFieldActionGbpDstIdNew = 549, /* Assign a new GBP Destination ID for 5811 matched packet. */ 5812 bcmFieldActionLoopbackSubtype = 550, /* This action adds Subtype in the 5813 Loopback header. */ 5814 bcmFieldActionEgressFlowControlEnable = 551, /* This action enables Egress Flow 5815 controls */ 5816 bcmFieldActionEgressFlowEncapEnable = 552, /* This action enables Egress Flow encap 5817 of type bcm_field_egress_flow_encap_t */ 5818 bcmFieldActionSystemHeaderSizeAdjust = 553, /* Updates the System Header Size Adjust 5819 value. */ 5820 bcmFieldActionInVportClass0 = 554, /* Updates the profile of an in LIF 0 5821 encoded as Gport. */ 5822 bcmFieldActionInVportClass1 = 555, /* Updates the profile of an in LIF 1 5823 encoded as Gport. */ 5824 bcmFieldActionNetworkQos = 556, /* Set the Network QoS. */ 5825 bcmFieldActionVoid = 557, /* This action will be used when no Hw 5826 resource should be taken (SW only). */ 5827 bcmFieldActionContainer = 558, /* This action will be used as container 5828 in IPMF2, to parse the action buffer, 5829 when performing cascading between 5830 IPMF2 and IPMF3. */ 5831 bcmFieldActionParsingStartType = 559, /* Indicate the layer type that egress 5832 parser should consider. */ 5833 bcmFieldActionParsingStartOffset = 560, /* Indicate from which offset egress 5834 parser should start parsing (all info 5835 before that will not be parsed). */ 5836 bcmFieldActionEgressForwardingIndex = 561, /* Indicate for egress parser which 5837 layer is the Forwarding layer. */ 5838 bcmFieldActionUDHData0 = 562, /* User Define Header 0 data. */ 5839 bcmFieldActionUDHData1 = 563, /* User Define Header 1 data. */ 5840 bcmFieldActionUDHData2 = 564, /* User Define Header 2 data. */ 5841 bcmFieldActionUDHData3 = 565, /* User Define Header 3 data. */ 5842 bcmFieldActionUDHBase0 = 566, /* User Define Header 0 base. */ 5843 bcmFieldActionUDHBase1 = 567, /* User Define Header 1 base. */ 5844 bcmFieldActionUDHBase2 = 568, /* User Define Header 2 base. */ 5845 bcmFieldActionUDHBase3 = 569, /* User Define Header 3 base. */ 5846 bcmFieldActionUDHBase = 570, /* User define header base, used in 5847 IPMF3. */ 5848 bcmFieldActionIPTProfile = 571, /* IPT Profile action. */ 5849 bcmFieldActionIPTCommand = 572, /* IPT Profile command. */ 5850 bcmFieldActionStatId0 = 573, /* Updates statistics ID on entry hit. */ 5851 bcmFieldActionStatId1 = 574, /* Updates statistics ID on entry hit. */ 5852 bcmFieldActionStatId2 = 575, /* Updates statistics ID on entry hit. */ 5853 bcmFieldActionStatId3 = 576, /* Updates statistics ID on entry hit. */ 5854 bcmFieldActionStatId4 = 577, /* Updates statistics ID on entry hit. */ 5855 bcmFieldActionStatId5 = 578, /* Updates statistics ID on entry hit. */ 5856 bcmFieldActionStatId6 = 579, /* Updates statistics ID on entry hit. */ 5857 bcmFieldActionStatId7 = 580, /* Updates statistics ID on entry hit. */ 5858 bcmFieldActionStatId8 = 581, /* Updates statistics ID on entry hit. */ 5859 bcmFieldActionStatId9 = 582, /* Updates statistics ID on entry hit. */ 5860 bcmFieldActionStatProfile0 = 583, /* Updates statistics profile on entry 5861 hit. */ 5862 bcmFieldActionStatProfile1 = 584, /* Updates statistics profile on entry 5863 hit. */ 5864 bcmFieldActionStatProfile2 = 585, /* Updates statistics profile on entry 5865 hit. */ 5866 bcmFieldActionStatProfile3 = 586, /* Updates statistics profile on entry 5867 hit. */ 5868 bcmFieldActionStatProfile4 = 587, /* Updates statistics profile on entry 5869 hit. */ 5870 bcmFieldActionStatProfile5 = 588, /* Updates statistics profile on entry 5871 hit. */ 5872 bcmFieldActionStatProfile6 = 589, /* Updates statistics profile on entry 5873 hit. */ 5874 bcmFieldActionStatProfile7 = 590, /* Updates statistics profile on entry 5875 hit. */ 5876 bcmFieldActionStatProfile8 = 591, /* Updates statistics profile on entry 5877 hit. */ 5878 bcmFieldActionStatProfile9 = 592, /* Updates statistics profile on entry 5879 hit. */ 5880 bcmFieldActionInvalidNext = 593, /* Indicates to not execute the next 5881 action. */ 5882 bcmFieldActionIngressDoNotLearn = 594, /* Disables L2 learning in ingress. */ 5883 bcmFieldActionEgressDoNotLearn = 595, /* Disables L2 learning in egress. */ 5884 bcmFieldActionDstRpf = 596, /* Set the RPF destination. */ 5885 bcmFieldActionDstRpfValid = 597, /* Validate the RPF destination. */ 5886 bcmFieldActionVisibilityClear = 598, /* Clear visibility. */ 5887 bcmFieldActionStatMetaData = 599, /* Set statistics metaData. */ 5888 bcmFieldActionAceEntryId = 600, /* Set ace ID pointer. */ 5889 bcmFieldActionInVport0 = 601, /* Set INLIF0, value given as Gport. */ 5890 bcmFieldActionInVport1 = 602, /* Set INLIF1, value given as Gport. */ 5891 bcmFieldActionOutVport0 = 603, /* Set OUTLIF0, value given as Gport. */ 5892 bcmFieldActionOutVport1 = 604, /* Set OUTLIF1, value given as Gport. */ 5893 bcmFieldActionOutVport2 = 605, /* Set OUTLIF2, value given as Gport. */ 5894 bcmFieldActionOutVport3 = 606, /* Set OUTLIF3, value given as Gport. */ 5895 bcmFieldActionExtStat0 = 607, /* Update External Statistics ID 0. */ 5896 bcmFieldActionExtStat1 = 608, /* Update External Statistics ID 1. */ 5897 bcmFieldActionExtStat2 = 609, /* Update External Statistics ID 2. */ 5898 bcmFieldActionExtStat3 = 610, /* Update External Statistics ID 3. */ 5899 bcmFieldActionForwardingTypeMeterMap = 611, /* Maps L2 forwarding type to one of the 5900 general meters. */ 5901 bcmFieldActionStatSampling = 612, /* Updates statistical sampling value. */ 5902 bcmFieldActionStatOamLM = 613, /* Updates OAM LM counter value. */ 5903 bcmFieldActionForwardingLayerIndex = 614, /* Changes the forwarding Layer index at 5904 Egress. */ 5905 bcmFieldActionInInterface0 = 615, /* Changes the in LIF (INLIF0) encoded 5906 as interface. */ 5907 bcmFieldActionInInterface1 = 616, /* Changes the in LIF (INLIF1) encoded 5908 as interface. */ 5909 bcmFieldActionOutInterface0 = 617, /* Changes the out LIF (OUTLIF0) encoded 5910 as interface. */ 5911 bcmFieldActionOutInterface1 = 618, /* Changes the out LIF (OUTLIF1) encoded 5912 as interface. */ 5913 bcmFieldActionOutInterface2 = 619, /* Changes the out LIF (OUTLIF2) encoded 5914 as interface. */ 5915 bcmFieldActionOutInterface3 = 620, /* Changes the out LIF (OUTLIF3) encoded 5916 as interface. */ 5917 bcmFieldActionTrapStrength = 621, /* Updates the Trap Strength. */ 5918 bcmFieldActionSnoopStrength = 622, /* Updates the Snoop strength. */ 5919 bcmFieldActionOutPortTrafficManagement = 623, /* Updates the Out-TM port. */ 5920 bcmFieldActionAceContextValue = 624, /* Updates ACE context. */ 5921 bcmFieldActionBierStringOffset = 625, /* Updates Bier string offset. */ 5922 bcmFieldActionBierStringSize = 626, /* Updates Bier string size. */ 5923 bcmFieldActionPacketIsBier = 627, /* Updates is Bier packet. */ 5924 bcmFieldActionEventor = 628, /* Enable push data to eventor. */ 5925 bcmFieldActionForwardingAdditionalInfo = 629, /* Updates forwarding additional 5926 information. */ 5927 bcmFieldActionSmallExemLearn = 630, /* Updates the Small Exact Match learn 5928 info (IPMF2 only). */ 5929 bcmFieldActionLargeExemLearn = 631, /* Updates the Large Exact Match learn 5930 info (IPMF1 only). */ 5931 bcmFieldActionGroupLookupDisable = 632, /* Disables FP lookup for a given group 5932 or groups sharing same slice 5933 (Applicable to Presel only). */ 5934 bcmFieldActionOamCopyToCpu = 633, /* Copies packet to CPU along with OAM 5935 reason code be carried to CPU */ 5936 bcmFieldActionGpOamCopyToCpu = 634, /* Copies Green packet to CPU along with 5937 OAM reason code be carried to CPU */ 5938 bcmFieldActionYpOamCopyToCpu = 635, /* Copies Yellow packet to CPU along 5939 with OAM reason code be carried to 5940 CPU */ 5941 bcmFieldActionRpOamCopyToCpu = 636, /* Copies Red packet to CPU along with 5942 OAM reason code be carried to CPU */ 5943 bcmFieldActionInVport0Raw = 637, /* Change the In Lif0, with raw value. */ 5944 bcmFieldActionInVport1Raw = 638, /* Change the In Lif1, with raw value. */ 5945 bcmFieldActionOutVport0Raw = 639, /* Change the Out Lif 0, with raw value. */ 5946 bcmFieldActionOutVport1Raw = 640, /* Change the Out Lif 1, with raw value. */ 5947 bcmFieldActionOutVport2Raw = 641, /* Change the Out Lif 2, with raw value. */ 5948 bcmFieldActionOutVport3Raw = 642, /* Change the Out Lif 3, with raw value. */ 5949 bcmFieldActionAppendPointerCompensation = 643, /* Configures pointer to header append 5950 compensation value. */ 5951 bcmFieldActionAssignNatClassId = 644, /* Assigns NAT class ID to have lookup 5952 in Egress Vlan translation for NAT. */ 5953 bcmFieldActionAssignChangeL2FieldsClassId = 645, /* Assigns class ID to have a lookup in 5954 Egress Vlan translation for Change L2 5955 Fields. */ 5956 bcmFieldActionCount = 646 /* Always Last. Not a usable value. */ 5957 } bcm_field_action_t; 5958 5959 #define BCM_FIELD_ACTION_STRINGS \ 5960 { \ 5961 "CosQNew", \ 5962 "CosQCpuNew", \ 5963 "VlanCosQNew", \ 5964 "UcastCosQNew", \ 5965 "McastCosQNew", \ 5966 "PrioPktAndIntCopy", \ 5967 "PrioPktAndIntNew", \ 5968 "PrioPktAndIntTos", \ 5969 "PrioPktAndIntCancel", \ 5970 "PrioPktCopy", \ 5971 "PrioPktNew", \ 5972 "PrioPktTos", \ 5973 "PrioPktCancel", \ 5974 "PrioIntCopy", \ 5975 "PrioIntNew", \ 5976 "PrioIntTos", \ 5977 "PrioIntCancel", \ 5978 "TosNew", \ 5979 "TosCopy", \ 5980 "TosCancel", \ 5981 "DscpNew", \ 5982 "DscpCancel", \ 5983 "EcnNew", \ 5984 "CopyToCpu", \ 5985 "CopyToCpuCancel", \ 5986 "SwitchToCpuCancel", \ 5987 "SwitchToCpuReinstate", \ 5988 "TimeStampToCpu", \ 5989 "TimeStampToCpuCancel", \ 5990 "RedirectPort", \ 5991 "RedirectTrunk", \ 5992 "RedirectCancel", \ 5993 "RedirectPbmp", \ 5994 "RedirectIpmc", \ 5995 "RedirectMcast", \ 5996 "RedirectVlan", \ 5997 "RedirectBcastPbmp", \ 5998 "EgressMask", \ 5999 "EgressPortsAdd", \ 6000 "Drop", \ 6001 "DropCancel", \ 6002 "MirrorOverride", \ 6003 "MirrorIngress", \ 6004 "MirrorEgress", \ 6005 "L3ChangeVlan", \ 6006 "L3ChangeVlanCancel", \ 6007 "L3ChangeMacDa", \ 6008 "L3ChangeMacDaCancel", \ 6009 "L3Switch", \ 6010 "L3SwitchCancel", \ 6011 "AddClassTag", \ 6012 "DropPrecedence", \ 6013 "RpDrop", \ 6014 "RpDropCancel", \ 6015 "RpDropPrecedence", \ 6016 "RpCopyToCpu", \ 6017 "RpCopyToCpuCancel", \ 6018 "RpSwitchToCpuCancel", \ 6019 "RpSwitchToCpuReinstate", \ 6020 "RpTimeStampToCpu", \ 6021 "RpTimeStampToCpuCancel", \ 6022 "RpDscpNew", \ 6023 "RpDscpCancel", \ 6024 "RpEcnNew", \ 6025 "RpOuterVlanPrioNew", \ 6026 "RpInnerVlanPrioNew", \ 6027 "RpOuterVlanCfiNew", \ 6028 "RpInnerVlanCfiNew", \ 6029 "RpPrioPktCopy", \ 6030 "RpPrioPktNew", \ 6031 "RpPrioPktTos", \ 6032 "RpPrioPktCancel", \ 6033 "RpCosQNew", \ 6034 "RpVlanCosQNew", \ 6035 "RpUcastCosQNew", \ 6036 "RpMcastCosQNew", \ 6037 "RpPrioPktAndIntCopy", \ 6038 "RpPrioPktAndIntNew", \ 6039 "RpPrioPktAndIntTos", \ 6040 "RpPrioPktAndIntCancel", \ 6041 "RpPrioIntCopy", \ 6042 "RpPrioIntNew", \ 6043 "RpPrioIntTos", \ 6044 "RpPrioIntCancel", \ 6045 "YpDrop", \ 6046 "YpDropCancel", \ 6047 "YpDropPrecedence", \ 6048 "YpCopyToCpu", \ 6049 "YpCopyToCpuCancel", \ 6050 "YpSwitchToCpuCancel", \ 6051 "YpSwitchToCpuReinstate", \ 6052 "YpTimeStampToCpu", \ 6053 "YpTimeStampToCpuCancel", \ 6054 "YpDscpNew", \ 6055 "YpDscpCancel", \ 6056 "YpEcnNew", \ 6057 "YpOuterVlanPrioNew", \ 6058 "YpInnerVlanPrioNew", \ 6059 "YpOuterVlanCfiNew", \ 6060 "YpInnerVlanCfiNew", \ 6061 "YpPrioPktCopy", \ 6062 "YpPrioPktNew", \ 6063 "YpPrioPktTos", \ 6064 "YpPrioPktCancel", \ 6065 "YpCosQNew", \ 6066 "YpVlanCosQNew", \ 6067 "YpUcastCosQNew", \ 6068 "YpMcastCosQNew", \ 6069 "YpPrioPktAndIntCopy", \ 6070 "YpPrioPktAndIntNew", \ 6071 "YpPrioPktAndIntTos", \ 6072 "YpPrioPktAndIntCancel", \ 6073 "YpPrioIntCopy", \ 6074 "YpPrioIntNew", \ 6075 "YpPrioIntTos", \ 6076 "YpPrioIntCancel", \ 6077 "UpdateCounter", \ 6078 "MeterConfig", \ 6079 "ColorIndependent", \ 6080 "ClassDestSet", \ 6081 "ClassSourceSet", \ 6082 "VrfSet", \ 6083 "InnerVlanNew", \ 6084 "InnerVlanPrioNew", \ 6085 "InnerVlanDelete", \ 6086 "OuterVlanDelete", \ 6087 "OuterVlanDeleteCancel", \ 6088 "InnerVlanAdd", \ 6089 "InnerVlanCfiNew", \ 6090 "OuterVlanNew", \ 6091 "OuterVlanAdd", \ 6092 "OuterVlanAddCancel", \ 6093 "OuterVlanLookup", \ 6094 "OuterVlanPrioNew", \ 6095 "OuterVlanCfiNew", \ 6096 "OuterTpidNew", \ 6097 "GpDrop", \ 6098 "GpDropCancel", \ 6099 "GpDropPrecedence", \ 6100 "GpCopyToCpu", \ 6101 "GpCopyToCpuCancel", \ 6102 "GpSwitchToCpuCancel", \ 6103 "GpSwitchToCpuReinstate", \ 6104 "GpTimeStampToCpu", \ 6105 "GpTimeStampToCpuCancel", \ 6106 "GpDscpNew", \ 6107 "GpDscpCancel", \ 6108 "GpEcnNew", \ 6109 "GpTosPrecedenceNew", \ 6110 "GpTosPrecedenceCopy", \ 6111 "GpOuterVlanPrioNew", \ 6112 "GpInnerVlanPrioNew", \ 6113 "GpOuterVlanCfiNew", \ 6114 "GpInnerVlanCfiNew", \ 6115 "GpPrioPktCopy", \ 6116 "GpPrioPktNew", \ 6117 "GpPrioPktTos", \ 6118 "GpPrioPktCancel", \ 6119 "GpCosQNew", \ 6120 "GpVlanCosQNew", \ 6121 "GpUcastCosQNew", \ 6122 "GpMcastCosQNew", \ 6123 "GpPrioPktAndIntCopy", \ 6124 "GpPrioPktAndIntNew", \ 6125 "GpPrioPktAndIntTos", \ 6126 "GpPrioPktAndIntCancel", \ 6127 "GpPrioIntCopy", \ 6128 "GpPrioIntNew", \ 6129 "GpPrioIntTos", \ 6130 "GpPrioIntCancel", \ 6131 "DoNotChangeTtl", \ 6132 "DoNotCheckUrpf", \ 6133 "DoNotCheckVlan", \ 6134 "DoNotLearn", \ 6135 "IpFix", \ 6136 "IpFixCancel", \ 6137 "IncomingMplsPortSet", \ 6138 "Deprecated177", \ 6139 "NewClassId", \ 6140 "Deprecated179", \ 6141 "Deprecated180", \ 6142 "Deprecated181", \ 6143 "Deprecated182", \ 6144 "Deprecated183", \ 6145 "Deprecated184", \ 6146 "Deprecated185", \ 6147 "MultipathHash", \ 6148 "IpfixRate", \ 6149 "OffloadRedirect", \ 6150 "OffloadClassSet", \ 6151 "OffloadDropIndication", \ 6152 "OamUpMep", \ 6153 "OamTx", \ 6154 "OamLmepMdl", \ 6155 "OamServicePriMappingPtr", \ 6156 "OamLmBasePtr", \ 6157 "OamDmEnable", \ 6158 "OamLmEnable", \ 6159 "OamLmepEnable", \ 6160 "OamPbbteLookupEnable", \ 6161 "SrcMacNew", \ 6162 "DstMacNew", \ 6163 "VnTagNew", \ 6164 "VnTagDelete", \ 6165 "Deprecated204", \ 6166 "Deprecated205", \ 6167 "VportNew", \ 6168 "VportSpcpNew", \ 6169 "VportCpcpNew", \ 6170 "VportTcNew", \ 6171 "VportDpNew", \ 6172 "RedirectVportPort", \ 6173 "MacDaKnown", \ 6174 "Filters", \ 6175 "FabricQueue", \ 6176 "CnmCancel", \ 6177 "DynamicHgTrunkCancel", \ 6178 "EgressMirrorDisable", \ 6179 "MultipathHashAdditionalInfo", \ 6180 "Deprecated219", \ 6181 "MirrorEgressDisable", \ 6182 "OuterVlanCopyInner", \ 6183 "OuterVlanPrioCopyInner", \ 6184 "OuterVlanCfiCopyInner", \ 6185 "InnerVlanCopyOuter", \ 6186 "InnerVlanPrioCopyOuter", \ 6187 "InnerVlanCfiCopyOuter", \ 6188 "CompressSrcIp6", \ 6189 "CompressDstIp6", \ 6190 "ServicePoolIdNew", \ 6191 "UseGlobalMeterColor", \ 6192 "RedirectEgrNextHop", \ 6193 "TrunkLoadBalanceCancel", \ 6194 "EcmpLoadBalanceCancel", \ 6195 "DoNotOverride", \ 6196 "EgressClassSelect", \ 6197 "HiGigClassSelect", \ 6198 "OamDmTimeFormat", \ 6199 "OamLmDmSampleEnable", \ 6200 "OamTagStatusCheck", \ 6201 "OamTunnelControl", \ 6202 "Regex", \ 6203 "NoRegex", \ 6204 "Stat0", \ 6205 "PolicerLevel0", \ 6206 "PolicerLevel1", \ 6207 "PolicerGroup", \ 6208 "StatGroup", \ 6209 "VSQ", \ 6210 "IntPriorityAndDropPrecedence", \ 6211 "ISQ", \ 6212 "Trap", \ 6213 "UsePolicerResult", \ 6214 "Stat1", \ 6215 "StatTag", \ 6216 "Snoop", \ 6217 "TtlSet", \ 6218 "IncomingIpIfSet", \ 6219 "OrientationSet", \ 6220 "TrunkHashKeySet", \ 6221 "DstRpfGportNew", \ 6222 "DhcpPkt", \ 6223 "SrcGportNew", \ 6224 "ForwardingTypeNew", \ 6225 "StartPacketStrip", \ 6226 "SystemHeaderSet", \ 6227 "VSwitchNew", \ 6228 "LearnSrcMacNew", \ 6229 "LearnSrcPortNew", \ 6230 "LearnForwardingVlanIdNew", \ 6231 "QosMapIdNew", \ 6232 "VlanActionSetNew", \ 6233 "VlanTranslationValueSet", \ 6234 "TunnelTerminatedValueSet", \ 6235 "MplsTerminatedValueSet", \ 6236 "IpTunnelValueSet", \ 6237 "L2SrcValueSet", \ 6238 "L2DestValueSet", \ 6239 "L3SrcRouteValueSet", \ 6240 "L3DestRouteValueSet", \ 6241 "IpmcValueSet", \ 6242 "CascadedKeyValueSet", \ 6243 "IngressGportSet", \ 6244 "ExternalValue0Set", \ 6245 "ExternalValue1Set", \ 6246 "ExternalValue2Set", \ 6247 "ExternalValue3Set", \ 6248 "NatCancel", \ 6249 "Nat", \ 6250 "NatEgressOverride", \ 6251 "RegexActionCancel", \ 6252 "PortPrioIntCosQNew", \ 6253 "RpPortPrioIntCosQNew", \ 6254 "YpPortPrioIntCosQNew", \ 6255 "GpPortPrioIntCosQNew", \ 6256 "YpMirrorIngress", \ 6257 "YpRedirectPort", \ 6258 "Deprecated297", \ 6259 "FibreChanSrcBindEnable", \ 6260 "FibreChanFpmaPrefixCheckEnable", \ 6261 "FibreChanZoneCheckEnable", \ 6262 "FibreChanVsanId", \ 6263 "FibreChanZoneCheckActionCancel", \ 6264 "FibreChanIntVsanPri", \ 6265 "LearnInVPortNew", \ 6266 "OamDomain", \ 6267 "OamOlpHeaderAdd", \ 6268 "OamSessionId", \ 6269 "OuterVlanCfiCancel", \ 6270 "InnerVlanPriCancel", \ 6271 "PrioIntRemark", \ 6272 "UseDefaultWred", \ 6273 "HashValueSet", \ 6274 "L3IngressSet", \ 6275 "InterfaceClassVPort", \ 6276 "IngSampleEnable", \ 6277 "EgrSampleEnable", \ 6278 "HashSelect0", \ 6279 "HashSelect1", \ 6280 "TrunkResilientHashCancel", \ 6281 "HgTrunkResilientHashCancel", \ 6282 "EcmpResilientHashCancel", \ 6283 "UnmodifiedPacketRedirectPort", \ 6284 "EtagNew", \ 6285 "EtagDelete", \ 6286 "PfcClassNew", \ 6287 "RpIntCongestionNotificationNew", \ 6288 "YpIntCongestionNotificationNew", \ 6289 "GpIntCongestionNotificationNew", \ 6290 "RpHGCongestionClassNew", \ 6291 "YpHGCongestionClassNew", \ 6292 "GpHGCongestionClassNew", \ 6293 "RedirDropPrecedence", \ 6294 "RpRedirDropPrecedence", \ 6295 "YpRedirDropPrecedence", \ 6296 "GpRedirDropPrecedence", \ 6297 "HiGigDstModuleGportNew", \ 6298 "HiGigDstPortGportNew", \ 6299 "HiGigDstGportNew", \ 6300 "GpHiGigDropPrecedenceNew", \ 6301 "YpHiGigDropPrecedenceNew", \ 6302 "RpHiGigDropPrecedenceNew", \ 6303 "HiGigDropPrecedenceNew", \ 6304 "GpHiGigIntPriNew", \ 6305 "YpHiGigIntPriNew", \ 6306 "RpHiGigIntPriNew", \ 6307 "HiGigIntPriNew", \ 6308 "LoopbackSrcModuleGportNew", \ 6309 "LoopbackSrcPortGportNew", \ 6310 "LoopbackSrcGportNew", \ 6311 "LoopbackCpuMasqueradePktProfileNew", \ 6312 "LoopbackPacketProcessingPortNew", \ 6313 "LoopBackTypeNew", \ 6314 "RecoverableDropCancel", \ 6315 "StackingRouteNew", \ 6316 "PphPresentSet", \ 6317 "VxlanHeaderBits8_31_Set", \ 6318 "VxlanHeaderBits56_63_Set", \ 6319 "FabricHeaderSet", \ 6320 "Oam", \ 6321 "VpnSet", \ 6322 "L3DestRoutePublicValueSet", \ 6323 "L3SrcRoutePublicValueSet", \ 6324 "ClassZero", \ 6325 "ClassOne", \ 6326 "TrapReduced", \ 6327 "GroupClassSet", \ 6328 "EgressPbmpNullCopyToCpu", \ 6329 "PimBidirFwd", \ 6330 "DscpMapNew", \ 6331 "Reserved370", \ 6332 "Reserved371", \ 6333 "Reserved372", \ 6334 "Reserved373", \ 6335 "FabricEHAddOrUpdate", \ 6336 "Dot1pPreserve", \ 6337 "GpDot1pPreserve", \ 6338 "YpDot1pPreserve", \ 6339 "RpDot1pPreserve", \ 6340 "DscpPreserve", \ 6341 "GpDscpPreserve", \ 6342 "YpDscpPreserve", \ 6343 "RpDscpPreserve", \ 6344 "ChangeL2FieldsCancel", \ 6345 "BFDSessionIdNew", \ 6346 "CosMapNew", \ 6347 "GpCosMapNew", \ 6348 "YpCosMapNew", \ 6349 "RpCosMapNew", \ 6350 "VxlanHeaderFlags", \ 6351 "ChangeL2Fields", \ 6352 "ExactMatchClassId", \ 6353 "PfcTx", \ 6354 "SwitchEncap", \ 6355 "StatVportNew", \ 6356 "UcastQueueNew", \ 6357 "RpUcastQueueNew", \ 6358 "YpUcastQueueNew", \ 6359 "GpUcastQueueNew", \ 6360 "IntCosUcastQueueNew", \ 6361 "RpIntCosUcastQueueNew", \ 6362 "YpIntCosUcastQueueNew", \ 6363 "GpIntCosUcastQueueNew", \ 6364 "HgTrunkRandomRoundRobinHashCancel", \ 6365 "TrunkRandomRoundRobinHashCancel", \ 6366 "EcmpRandomRoundRobinHashCancel", \ 6367 "PacketTraceEnable", \ 6368 "Strength", \ 6369 "RedirectBufferPriority", \ 6370 "RedirectPrioIntNew", \ 6371 "RpRedirectPrioIntNew", \ 6372 "YpRedirectPrioIntNew", \ 6373 "GpRedirectPrioIntNew", \ 6374 "UntaggedPacketPriorityNew", \ 6375 "DoNotCutThrough", \ 6376 "LoopbackOamResponse", \ 6377 "LoopbackSatResponse", \ 6378 "OamStatObjectSessionId", \ 6379 "ServicePrioIntCosQNew", \ 6380 "RpServicePrioIntCosQNew", \ 6381 "YpServicePrioIntCosQNew", \ 6382 "GpServicePrioIntCosQNew", \ 6383 "ProtectionSwitchingDrop", \ 6384 "ServicePoolIdPrecedenceNew", \ 6385 "SwapMacDaSa", \ 6386 "SwapSourceIPDestIP", \ 6387 "ReplaceTtl", \ 6388 "PacketIsL3SAT", \ 6389 "ReplaceSrcMac", \ 6390 "ReplaceDstMac", \ 6391 "ReplaceInnerVlan", \ 6392 "ReplaceOuterVlan", \ 6393 "ReplaceInnerVlanPriority", \ 6394 "ReplaceOuterVlanPriority", \ 6395 "StatAndPolicer", \ 6396 "SnoopAndTrap", \ 6397 "IEEE1588", \ 6398 "ExternalValue4Set", \ 6399 "ExternalValue5Set", \ 6400 "Forward", \ 6401 "TrapCodeQualifier", \ 6402 "PphSnoopCode", \ 6403 "EgressTimeStampInsert", \ 6404 "IngressTimeStampInsert", \ 6405 "IngressTimeStampInsertCancel", \ 6406 "EgressTimeStampInsertCancel", \ 6407 "MplsLabel1ExpNew", \ 6408 "DynamicEcmpEnable", \ 6409 "DynamicTrunkEnable", \ 6410 "DynamicTrunkCancel", \ 6411 "Dgm", \ 6412 "DgmThreshold", \ 6413 "DgmBias", \ 6414 "DgmCost", \ 6415 "StaggeredValue0Set", \ 6416 "StaggeredValue1Set", \ 6417 "StaggeredValue2Set", \ 6418 "StaggeredValue3Set", \ 6419 "StaggeredDirectValueSet", \ 6420 "StaggeredPreselProfile0Set", \ 6421 "StaggeredPreselProfile1Set", \ 6422 "StaggeredPreselProfile2Set", \ 6423 "StaggeredPreselProfile3Set", \ 6424 "StaggeredPreselProfileDirectSet", \ 6425 "EnableVlanCheck", \ 6426 "AdmitProfile", \ 6427 "DynamicHgTrunkEnable", \ 6428 "VxlanTerminate", \ 6429 "UseTunnelPayload", \ 6430 "VlanActions", \ 6431 "SRDuplicateDrop", \ 6432 "SRDuplicateDropCancel", \ 6433 "SRNetIdFilter", \ 6434 "SRNetIdSource", \ 6435 "FilterSrcMacPorts", \ 6436 "SRCopyToCpu", \ 6437 "SRTagAdd", \ 6438 "SRTagDelete", \ 6439 "SRLanIdNew", \ 6440 "SRNetIdNew", \ 6441 "SRFlowIdNew", \ 6442 "SRFlowPriMapIdNew", \ 6443 "MtuSize", \ 6444 "StuSize", \ 6445 "TsnFlowIdNew", \ 6446 "TsnFlowPriMapIdNew", \ 6447 "MtuProfileIdNew", \ 6448 "StuProfileIdNew", \ 6449 "ExternalValue6Set", \ 6450 "ExternalValue7Set", \ 6451 "EsmSearchKeySrcMac", \ 6452 "TrunkResilientHashEnable", \ 6453 "TrunkResilientHashDisable", \ 6454 "EcmpResilientHashEnable", \ 6455 "EcmpResilientHashDisable", \ 6456 "HiGigTrunkResilientHashEnable", \ 6457 "HiGigTrunkResilientHashDisable", \ 6458 "MacSecDecrypt", \ 6459 "MacSecEncrypt", \ 6460 "MacSecSubPortNumAdd", \ 6461 "MacSecPktTypeSet", \ 6462 "LatencyFlowId", \ 6463 "IntEncapEnable", \ 6464 "IntTurnAround", \ 6465 "MacSecRedirectIpmc", \ 6466 "AddIngOuterVlanToEgrOuterVlan", \ 6467 "Erspan3HdrVlanCosPktCopy", \ 6468 "Erspan3HdrGbpSrcIdAdd", \ 6469 "Erspan3HdrUdf2Add", \ 6470 "RoeFrameTypeSet", \ 6471 "FlowtrackerGroupId", \ 6472 "StatisticPtr0", \ 6473 "StatisticPtr1", \ 6474 "TafGatePriMap", \ 6475 "IntEncapUpdate", \ 6476 "MplsLookupEnable", \ 6477 "TerminationAllowed", \ 6478 "MatchPbmpDrop", \ 6479 "MatchPbmpRedirect", \ 6480 "IntEncapDisable", \ 6481 "ElephantLookupEnable", \ 6482 "ElephantLookupDisable", \ 6483 "ElephantColorEnable", \ 6484 "ElephantColorDisable", \ 6485 "ElephantQueueEnable", \ 6486 "ElephantQueueDisable", \ 6487 "LatencyMonitorEnable", \ 6488 "LatencyMonitorDisable", \ 6489 "OamLmCounterPoolId", \ 6490 "LoopbackType", \ 6491 "VisibilityEnable", \ 6492 "DlbEcmpMonitorEnable", \ 6493 "MirrorZeroingEnable", \ 6494 "NshEncapEnable", \ 6495 "NshServicePathId", \ 6496 "NshServiceIndex", \ 6497 "L3IngressStrengthSet", \ 6498 "GbpClassifierAdd", \ 6499 "GbpSrcIdNew", \ 6500 "AssignOpaqueObject1", \ 6501 "AssignOpaqueObject2", \ 6502 "AssignOpaqueObject3", \ 6503 "AssignOpaqueObject4", \ 6504 "AssignExtractionCtrlId", \ 6505 "AssignEditCtrlId", \ 6506 "FlowtrackerEnable", \ 6507 "FlowtrackerNewLearnEnable", \ 6508 "CosMapSelect", \ 6509 "GbpSrcMacMcastBitSet", \ 6510 "GbpDstIdNew", \ 6511 "LoopbackSubtype", \ 6512 "EgressFlowControlEnable", \ 6513 "EgressFlowEncapEnable", \ 6514 "SystemHeaderSizeAdjust", \ 6515 "InVportClass0", \ 6516 "InVportClass1", \ 6517 "NetworkQos", \ 6518 "Void", \ 6519 "Container", \ 6520 "ParsingStartType", \ 6521 "ParsingStartOffset", \ 6522 "EgressForwardingIndex", \ 6523 "UDHData0", \ 6524 "UDHData1", \ 6525 "UDHData2", \ 6526 "UDHData3", \ 6527 "UDHBase0", \ 6528 "UDHBase1", \ 6529 "UDHBase2", \ 6530 "UDHBase3", \ 6531 "UDHBase", \ 6532 "IPTProfile", \ 6533 "IPTCommand", \ 6534 "StatId0", \ 6535 "StatId1", \ 6536 "StatId2", \ 6537 "StatId3", \ 6538 "StatId4", \ 6539 "StatId5", \ 6540 "StatId6", \ 6541 "StatId7", \ 6542 "StatId8", \ 6543 "StatId9", \ 6544 "StatProfile0", \ 6545 "StatProfile1", \ 6546 "StatProfile2", \ 6547 "StatProfile3", \ 6548 "StatProfile4", \ 6549 "StatProfile5", \ 6550 "StatProfile6", \ 6551 "StatProfile7", \ 6552 "StatProfile8", \ 6553 "StatProfile9", \ 6554 "InvalidNext", \ 6555 "IngressDoNotLearn", \ 6556 "EgressDoNotLearn", \ 6557 "DstRpf", \ 6558 "DstRpfValid", \ 6559 "VisibilityClear", \ 6560 "StatMetaData", \ 6561 "AceEntryId", \ 6562 "InVport0", \ 6563 "InVport1", \ 6564 "OutVport0", \ 6565 "OutVport1", \ 6566 "OutVport2", \ 6567 "OutVport3", \ 6568 "ExtStat0", \ 6569 "ExtStat1", \ 6570 "ExtStat2", \ 6571 "ExtStat3", \ 6572 "ForwardingTypeMeterMap", \ 6573 "StatSampling", \ 6574 "StatOamLM", \ 6575 "ForwardingLayerIndex", \ 6576 "InInterface0", \ 6577 "InInterface1", \ 6578 "OutInterface0", \ 6579 "OutInterface1", \ 6580 "OutInterface2", \ 6581 "OutInterface3", \ 6582 "TrapStrength", \ 6583 "SnoopStrength", \ 6584 "OutPortTrafficManagement", \ 6585 "AceContextValue", \ 6586 "BierStringOffset", \ 6587 "BierStringSize", \ 6588 "PacketIsBier", \ 6589 "Eventor", \ 6590 "ForwardingAdditionalInfo", \ 6591 "SmallExemLearn", \ 6592 "LargeExemLearn", \ 6593 "GroupLookupDisable", \ 6594 "OamCopyToCpu", \ 6595 "GpOamCopyToCpu", \ 6596 "YpOamCopyToCpu", \ 6597 "RpOamCopyToCpu", \ 6598 "InVport0Raw", \ 6599 "InVport1Raw", \ 6600 "OutVport0Raw", \ 6601 "OutVport1Raw", \ 6602 "OutVport2Raw", \ 6603 "OutVport3Raw", \ 6604 "AppendPointerCompensation", \ 6605 "AssignNatClassId", \ 6606 "AssignChangeL2FieldsClassId" \ 6607 } 6608 6609 /* Used as data value for qualifier bcm_field_qualify_MacSecFlow */ 6610 typedef enum bcm_field_macsec_flow_e { 6611 bcmFieldMacSecFlowNotMacSec = 0, /* Regular non MACSEC packets */ 6612 bcmFieldMacSecFlowForEncrypt = 1, /* MACSEC packets for Encryption to 6613 MACSEC port */ 6614 bcmFieldMacSecFlowForDecrypt = 2, /* MACSEC packets for Decryption to 6615 MACSEC port */ 6616 bcmFieldMacSecFlowAfterDecrypt = 3, /* MACSEC packets after Decryption from 6617 MACSEC port */ 6618 bcmFieldMacSecFlowCount = 4 /* Always last. Not to be used. */ 6619 } bcm_field_macsec_flow_t; 6620 6621 /* Used as param0 for action bcmFieldActionMacSecPktTypeSet */ 6622 typedef enum bcm_field_macsec_pkt_type_e { 6623 bcmFieldMacSecPktTypeNonMacSec = 0, /* Regular non MACSEC packets */ 6624 bcmFieldMacSecPktTypeMacSec = 1, /* MACSEC Data packet */ 6625 bcmFieldMacSecPktTypeMacSecMgmt = 2, /* Both BPDU & KaY tagged packets */ 6626 bcmFieldMacSecPktTypeKaYFrames = 3, /* MACSEC packets with SecTAG.TCI.E=1 6627 and SecTAG.TCI.C=0 */ 6628 bcmFieldMacSecPktTypeControlPkt = 4, /* MACSEC Control packet */ 6629 bcmFieldMacSecPktTypeMacSecEncrypted = 5, /* MACSEC already encrypted packet */ 6630 bcmFieldMacSecPktTypeCount = 6 /* Always last. Not to be used. */ 6631 } bcm_field_macsec_pkt_type_t; 6632 6633 /* Timestamp transmit packet type */ 6634 typedef enum bcm_field_timestamp_transmit_pkt_type_e { 6635 bcmFieldTimestampTwampOwamp = 0, /* TWAMP/OWAMP Tx packet */ 6636 bcmFieldTimestampCount = 1 /* Always last. Not to be used. */ 6637 } bcm_field_timestamp_transmit_pkt_type_t; 6638 6639 /* Flow control packet type */ 6640 typedef enum bcm_field_flow_control_pkt_type_e { 6641 bcmFieldFlowControlPktTypeDataPkt = 0, /* Data packet */ 6642 bcmFieldFlowControlPktTypePause = 1, /* Pause flow control */ 6643 bcmFieldFlowControlPktTypePfc = 2, /* PFC flow control */ 6644 bcmFieldFlowControlPktTypeE2ecc = 3, /* E2ECC flow control */ 6645 bcmFieldFlowControlPktTypeCount = 4 /* Always last. Not to be used. */ 6646 } bcm_field_flow_control_pkt_type_t; 6647 6648 /* 6649 * Roe Frame Types used for qualifier bcmFieldQualifyRoeFrameType and 6650 * action bcmFieldActionRoeFrameTypeSet. 6651 */ 6652 typedef enum bcm_field_roe_frame_type_e { 6653 bcmFieldRoeFrameTypeNone = 0, /* Frame type is neither Radio over Ethernet 6654 nor Custom Protocol. */ 6655 bcmFieldRoeFrameTypeRoe = 1, /* Frame type is Radio over Ethernet. */ 6656 bcmFieldRoeFrameTypeCustom = 2, /* Frame type is Custom Protocol. */ 6657 bcmFieldRoeFrameTypeCount = 3 /* Always last. Not to be used. */ 6658 } bcm_field_roe_frame_type_t; 6659 6660 #define BCM_FIELD_ROE_FRAME_TYPE_STRINGS \ 6661 { \ 6662 "None", \ 6663 "Roe", \ 6664 "Custom" \ 6665 } 6666 6667 /* 6668 * Used as parameter for COS MAP select APIs like 6669 * bcm_field_qualify_CosMapSelect and bcmFieldActionCosMapSelect 6670 */ 6671 typedef enum bcm_field_cos_map_select_e { 6672 bcmFieldCosMapSelectWired = 0, /* Wired */ 6673 bcmFieldCosMapSelectWireless = 1, /* Wireless */ 6674 bcmFieldCosMapSelectCount = 2 /* Always last. Not to be used. */ 6675 } bcm_field_cos_map_select_t; 6676 6677 /* 6678 * Used for action bcmFieldActionAdmitProfile to return profile number by 6679 * enum. 6680 */ 6681 typedef enum bcm_field_admit_profile_e { 6682 bcmFieldAdmitProfileEcnNonCapable = 0, /* Packet is not ECN capable. Use 6683 profile 0. */ 6684 bcmFieldAdmitProfileEcnCapable = 1 /* Packet is ECN capable. Use profile 1. */ 6685 } bcm_field_admit_profile_t; 6686 6687 /* Double Actions param1 values enum */ 6688 typedef enum bcm_field_double_action_vals_e { 6689 bcmFieldDoubleActionNone = 0, /* Run No Action */ 6690 bcmFieldDoubleActionFirst = 1, /* Run First Action */ 6691 bcmFieldDoubleActionSecond = 2, /* Run Second Action */ 6692 bcmFieldDoubleActionBoth = 3 /* Run Both Actions */ 6693 } bcm_field_double_action_vals_t; 6694 6695 #define BCM_FIELD_DOUBLE_ACTION_VALS \ 6696 { \ 6697 "None", \ 6698 "First", \ 6699 "Second", \ 6700 "Both" \ 6701 } 6702 6703 /* 6704 * BCM action and the stage on which it applies specified internal 6705 * action. See bcm_field_internal_to_bcm_action_map() 6706 */ 6707 typedef struct bcm_field_internal_to_bcm_map_s { 6708 bcm_field_action_t bcm_action; /* BCM action containing specified internal 6709 action. See 6710 bcm_field_internal_to_bcm_action_map() */ 6711 bcm_field_stage_t bcm_stage; /* BCM stage related to specified internal 6712 action. See 6713 bcm_field_internal_to_bcm_action_map() */ 6714 } bcm_field_internal_to_bcm_map_t; 6715 6716 /* Holds which action to set width for, and the size of width to set */ 6717 typedef struct bcm_field_action_width_s { 6718 uint32 action; 6719 uint32 width; 6720 uint8 valid; 6721 } bcm_field_action_width_t; 6722 6723 /* 6724 * Used to specify the actions that can be taken by the entries in a 6725 * group 6726 */ 6727 typedef struct bcm_field_aset_s { 6728 SHR_BITDCL w[_SHR_BITDCLSIZE(bcmFieldActionCount)]; 6729 bcm_field_action_width_t actions_width[16]; /* Actions width struct, used by 6730 bcm_petra_field_action_width_set to 6731 set width for certain action, 16 is 6732 max_actions_per_db */ 6733 } bcm_field_aset_t; 6734 6735 #define BCM_FIELD_ASET_INIT(aset) \ 6736 sal_memset(&(aset), 0, sizeof(bcm_field_aset_t)) 6737 6738 #define BCM_FIELD_ASET_ADD(aset, q) SHR_BITSET(((aset).w), (q)) 6739 6740 #define BCM_FIELD_ASET_ADD_WIDTH(aset, q, width_) \ 6741 do { \ 6742 int __i__ = 0; \ 6743 uint8 __new_valid__ = 1; \ 6744 SHR_BITSET(((aset).w), (q)); \ 6745 for (;(aset).actions_width[__i__].valid != 0;__i__++); \ 6746 if (__i__ < 16) { \ 6747 sal_memcpy(&((aset).actions_width[__i__].action), &(q), sizeof((q))); \ 6748 sal_memcpy(&((aset).actions_width[__i__].width), &(width_), sizeof((width_))); \ 6749 sal_memcpy(&((aset).actions_width[__i__].valid), &(__new_valid__), 1); \ 6750 } \ 6751 } while(0) 6752 6753 #define BCM_FIELD_ASET_REMOVE(aset, q) SHR_BITCLR(((aset).w), (q)) 6754 6755 #define BCM_FIELD_ASET_TEST(aset, q) SHR_BITGET(((aset).w), (q)) 6756 6757 /* 6758 * Match rule value used by OAM CCM Embedded App to indicate MEP type 6759 * through bcmFieldActionCopyToCpu Action 6760 */ 6761 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_PORT 0x1 /* Match rule values used 6762 by OAM CCM Embedded 6763 App to indicate Port 6764 MEP type */ 6765 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_INNER_VLAN 0x2 /* Match rule values used 6766 by OAM CCM Embedded 6767 App to indicate Inner 6768 vlan MEP type */ 6769 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_OUTER_VLAN 0x3 /* Match rule values used 6770 by OAM CCM Embedded 6771 App to indicate Outer 6772 vlan MEP type */ 6773 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_INNER_PLUS_OUTER_VLAN 0x4 /* Match rule values used 6774 by OAM CCM Embedded 6775 App to indicate Inner 6776 + Outer vlan MEP type */ 6777 6778 /* 6779 * Match rule value used by BFD Embedded App to indicate endpoint type 6780 * through bcmFieldActionCopyToCpu Action 6781 */ 6782 #define BCM_FIELD_BFD_MATCHED_RULE_MPLS_TUNNEL_PHP 0x1 /* Match rule value used 6783 by BFD Embedded App to 6784 indicate MPLS PHP 6785 tunnel type */ 6786 6787 #define BCM_FIELD_PRESEL_INIT(presel_set) \ 6788 sal_memset(&(presel_set), 0, sizeof(bcm_field_presel_set_t)) 6789 6790 #define BCM_FIELD_PRESEL_ADD(presel_set, presel_id) SHR_BITSET(((presel_set).w), (presel_id)) 6791 6792 #define BCM_FIELD_PRESEL_REMOVE(presel_set, presel_id) SHR_BITCLR(((presel_set).w), (presel_id)) 6793 6794 #define BCM_FIELD_PRESEL_TEST(presel_set, presel_id) SHR_BITGET(((presel_set).w), (presel_id)) 6795 6796 #define BCM_FIELD_ACTION_WIDTH_MAX 48 6797 6798 #define BCM_FIELD_ASET_WIDTH_MAX \ 6799 ((BCM_FIELD_ACTION_WIDTH_MAX+1) * \ 6800 bcmFieldActionCount + 1) 6801 6802 /* Parameter flags for bcmFieldActionFabricQueue action. */ 6803 #define BCM_FABRIC_QUEUE_CUSTOMER (1 << 29) /* Indicates the intended 6804 application for the 6805 SBX_QUEUE_TAG.0x0-Fabric 6806 Interface Chip.0x1 Traffic 6807 Manager. */ 6808 #define BCM_FABRIC_QUEUE_QOS_BASE (1 << 30) /* Offset to base queue 6809 number from the QUEUE_MAP 6810 Table. Index into 6811 QUEUE_MAP Table is 6812 DST_MODID, DST_PID. */ 6813 #define BCM_FABRIC_QUEUE_DEST_OFFSET (1 << 31) /* Index into QUEUE_MAP 6814 Table used for lookup. . */ 6815 6816 /* Unit capabilities flags. */ 6817 #define BCM_FIELD_STAT_WIDE_MODE (1 << 0) /* Unit has wide-mode slices. */ 6818 #define BCM_FIELD_STAT_SLICE_EN (1 << 1) /* Enable/disable slice lookup. */ 6819 #define BCM_FIELD_STAT_COS_QUEUE (1 << 2) /* Unit has CoS Queue change 6820 actions. */ 6821 6822 /* information related to the field class. */ 6823 typedef struct bcm_field_class_info_s { 6824 bcm_field_action_t action; /* field class action. */ 6825 bcm_class_t class_id; /* field class value. */ 6826 } bcm_field_class_info_t; 6827 6828 /* This API is deprecated and no longer supported. */ 6829 typedef struct bcm_field_status_s { 6830 int group_total; /* Total possible number of groups in unit. */ 6831 int group_free; /* Unused groups in unit. */ 6832 uint32 flags; /* Unit capabilities flags. */ 6833 } bcm_field_status_t; 6834 6835 /* Field name. */ 6836 typedef struct bcm_field_presel_config_s { 6837 uint8 name[BCM_FIELD_MAX_NAME_LEN]; 6838 } bcm_field_presel_config_t; 6839 6840 /* 6841 * Value for bcmFieldControlSharedVlanFieldSet. 6842 * 6843 * When using shared VLAN feature, the shared VLAN ID can be used in 6844 * place of the packet's inner or outer vlan ID during packet 6845 * classification. 6846 */ 6847 #define BCM_FIELD_SHARED_VLAN_NONE 0 /* Do not use shared VLAN ID. */ 6848 #define BCM_FIELD_SHARED_VLAN_INNER 1 /* Use shared VLAN ID as inner 6849 VLAN ID. */ 6850 #define BCM_FIELD_SHARED_VLAN_OUTER 2 /* Use shared VLAN ID as outer 6851 VLAN ID. */ 6852 6853 /* Field control elements. */ 6854 typedef enum bcm_field_control_e { 6855 bcmFieldControlStage = 0, /* Select default Field Processor stage. */ 6856 bcmFieldControlColorIndependent = 1, /* Default for color in/dependent. */ 6857 bcmFieldControlUdfHigig0 = 2, /* UDF_ID=7, has 1st word of Higig 6858 Packet (deprecated). */ 6859 bcmFieldControlUdfHigig1 = 3, /* UDF_ID=6, has 2nd word of Higig 6860 Packet (deprecated). */ 6861 bcmFieldControlUdfHigig2 = 4, /* UDF_ID=5, has 3rd word of Higig 6862 Packet (deprecated). */ 6863 bcmFieldControlSharedVlanFieldSet = 5, /* Shared VLAN ID as inner/outer VLAN. 6864 See BCM_FIELD_SHARED_VLAN_xxx. */ 6865 bcmFieldControlRedirectIngressVlanCheck = 6, /* Enable ingress vlan membership check 6866 for FP redirected traffic. */ 6867 bcmFieldControlRedirectNonUcastTrunkResolve = 7, /* Enable uniform distribution of 6868 non-unicast FP redirected traffic. */ 6869 bcmFieldControlRedirectExcludeSrcPort = 8, /* Exclude source port/trunk from FP 6870 redirection destination. */ 6871 bcmFieldControlRedirectPortFloodBlock = 9, /* Enable port flood blocking policy for 6872 FP redirected traffic. */ 6873 bcmFieldControlRedirectVlanFloodBlock = 10, /* Enable vlan flood blocking policy for 6874 FP redirected traffic. */ 6875 bcmFieldControlArpAsIp = 11, /* Treat ARP packets as Ip. */ 6876 bcmFieldControlRarpAsIp = 12, /* Treat RARP packets as Ip. */ 6877 bcmFieldControlIntraDoubleEnable = 13, /* Enable/Disable INTRA slice groups. */ 6878 bcmFieldControlExternalUdfEnable = 14, /* Enable/Disable External UDF support. */ 6879 bcmFieldControlRedirectNonUcastEtherTrunkResolve = 15, /* Enable uniform distribution of 6880 non-unicast FP redirected traffic 6881 over Ethernet Ports. */ 6882 bcmFieldControlRedirectNonUcastFabricTrunkResolve = 16, /* Enable uniform distribution of 6883 non-unicast FP redirected traffic 6884 over HiGig Ports. */ 6885 bcmFieldControlStatSyncEnable = 17, /* Field stat get api will sync up with 6886 hardware before returning the stat 6887 value. */ 6888 bcmFieldControlCascadedKeyWidth = 18, /* Default width of key cascaded between 6889 groups */ 6890 bcmFieldControlPolicerGroupSharingEnable = 19, /* Enable/Disable sharing of policer by 6891 field groups. */ 6892 bcmFieldControlRedirectNextHopExcludeSrcPort = 20, /* Enable removal of system ingress port 6893 from port-bitmap for packets that 6894 have been Redirected to a Next-hop 6895 index by the IFP. */ 6896 bcmFieldControlIngressLogicalPolicerPoolsMode = 21, /* Configure Logical Policer pool mode. 6897 It can be set only if the policers 6898 are not existing. */ 6899 bcmFieldControlEcmpHashOffset = 22, /* Configure offset for every ECMP hash 6900 key. */ 6901 bcmFieldControlEcmpHashUseCrc = 23, /* If set, then use CRC32 hash, else use 6902 XOR function. */ 6903 bcmFieldControlEcmpHashUseUpper5Bits = 24, /* If set, uses upper-most 5 bits of 6904 hash result, else uses least 6905 significant 5-bits of hash result. */ 6906 bcmFieldControlEcmpHashEnable = 25, /* If set, then enable the use of the 6907 ECMP_HASH_SEL field from the Field 6908 Processor. */ 6909 bcmFieldControlOverrideStageLookupPhb = 26, /* If set, internal priority assigned by 6910 L2/L3/DSCP lookups overrides internal 6911 priority assigned by VFP */ 6912 bcmFieldControlRedirectExcludeEtherSrcPort = 27, /* Exclude the ingress front panel port 6913 from FP redirection destination. */ 6914 bcmFieldControlRedirectExcludeHiGigSrcPort = 28, /* Exclude the ingress higig port from 6915 FP redirection destination. */ 6916 bcmFieldControlReplacementTtl = 29, /* To program the TTL value to be used 6917 by bcmFieldActionReplaceTtl */ 6918 bcmFieldControlLargeDirectLuKeyLength = 30, /* Field processor large direct lookup 6919 key length. valid values are 14,15,16 6920 or 17. */ 6921 bcmFieldControlKeyGenVar = 31, /* Value for KeyGenVar */ 6922 bcmFieldControlEgressAutoExpandWithPolicer = 32, /* Enable or disable auto expansion with 6923 policers in case of non-shared meter 6924 pool of Egress stage. */ 6925 bcmFieldControlDlbMonitorIngressRandomSeed = 33, /* Set RNG seed for DLB flow monitoring 6926 for IFP. This RNG seed overwrites the 6927 RNG seed set by the switch control 6928 bcmSwitchDlbMonitorIngressRandomSeed. 6929 This seed is used by the device for 6930 the flow which matches IFP entries 6931 with action 6932 bcmFieldActionDlbEcmpMonitorEnable. */ 6933 bcmFieldControlGbpSrcMacMcastBitSet = 34, /* This Field control converts packet?s 6934 Source mac to Multicast when IFP 6935 action 6936 bcmFieldActionGbpSrcMacMcastBitSet is 6937 applied on the matched packet. */ 6938 bcmFieldControlCount = 35 /* Always last. Not a usable value. */ 6939 } bcm_field_control_t; 6940 6941 #define BCM_FIELD_CONTROL_STRINGS \ 6942 { \ 6943 "Stage", \ 6944 "ColorIndependent", \ 6945 "UdfHigig0", \ 6946 "UdfHigig1", \ 6947 "UdfHigig2", \ 6948 "SharedVlanFieldSet", \ 6949 "RedirectIngressVlanCheck", \ 6950 "RedirectNonUcastTrunkResolve", \ 6951 "RedirectExcludeSrcPort", \ 6952 "RedirectPortFloodBlock", \ 6953 "RedirectVlanFloodBlock", \ 6954 "ArpAsIp", \ 6955 "RarpAsIp", \ 6956 "IntraDoubleEnable", \ 6957 "ExternalUdfEnable", \ 6958 "RedirectNonUcastEtherTrunkResolve", \ 6959 "RedirectNonUcastFabricTrunkResolve", \ 6960 "StatSyncEnable", \ 6961 "CascadedKeyWidth", \ 6962 "PolicerGroupSharingEnable", \ 6963 "RedirectNextHopExcludeSrcPort", \ 6964 "IngressLogicalPolicerPoolsMode", \ 6965 "EcmpHashOffset", \ 6966 "EcmpHashUseCrc", \ 6967 "EcmpHashUseUpper5Bits", \ 6968 "EcmpHashEnable", \ 6969 "OverrideStageLookupPhb", \ 6970 "RedirectExcludeEtherSrcPort", \ 6971 "RedirectExcludeHiGigSrcPort", \ 6972 "ReplacementTtl", \ 6973 "LargeDirectLuKeyLength", \ 6974 "KeyGenVar", \ 6975 "EgressAutoExpandWithPolicer", \ 6976 "DlbMonitorIngressRandomSeed", \ 6977 "GbpSrcMacMcastBitSet" \ 6978 } 6979 6980 /* Field Group Status structure. */ 6981 typedef struct bcm_field_group_status_s { 6982 int prio_min; /* Minimum priority within group. */ 6983 int prio_max; /* Maximum priority within group. */ 6984 int entries_total; /* Total possible entries in group. */ 6985 int entries_free; /* Unused entries in slice. */ 6986 int counters_total; /* Total possible counters in slice. */ 6987 int counters_free; /* Unused counters in slice. */ 6988 int meters_total; /* Total meters in slice. */ 6989 int meters_free; /* Unused meters in slice. */ 6990 int entry_count; /* Number of entries in the group. */ 6991 int counter_count; /* Number of counters attached to group entries. */ 6992 int meter_count; /* Number of meters attached to group entries. */ 6993 } bcm_field_group_status_t; 6994 6995 /* Group Modes (single, double or triple wide). */ 6996 typedef enum bcm_field_group_mode_e { 6997 bcmFieldGroupModeSingle = 0, /* Single-wide group. */ 6998 bcmFieldGroupModeDouble = 1, /* Double-wide group. */ 6999 bcmFieldGroupModeTriple = 2, /* Triple-wide group. */ 7000 bcmFieldGroupModeQuad = 3, /* Quad-wide group. */ 7001 bcmFieldGroupModeAuto = 4, /* Auto-expand group based on Qset 7002 (default). */ 7003 bcmFieldGroupModeDirect = 5, /* Direct group (no TCAM lookup). */ 7004 bcmFieldGroupModeDirectExtraction = 6, /* Direct extraction (instead of TCAM) 7005 group. */ 7006 bcmFieldGroupModeHashing = 7, /* Hash function group - no entries are 7007 expected. */ 7008 bcmFieldGroupModeExactMatch = 8, /* Exact match group - partial masking 7009 is not supported. */ 7010 bcmFieldGroupModeIntraSliceDouble = 9, /* Intraslice double wide group. */ 7011 bcmFieldGroupModeCount = 10 /* Always last. Not a usable value. */ 7012 } bcm_field_group_mode_t; 7013 7014 #define BCM_FIELD_GROUP_MODE_STRINGS \ 7015 { \ 7016 "Single", \ 7017 "Double", \ 7018 "Triple", \ 7019 "Quad", \ 7020 "Auto", \ 7021 "Direct", \ 7022 "DirectExtraction", \ 7023 "Hashing", \ 7024 "ExactMatch", \ 7025 "IntraSliceDouble" \ 7026 } 7027 7028 /* 7029 * Ingress Policer Pool Modes (8x1024default, 16x512Contiguous, 7030 * 16x512Split). 7031 */ 7032 typedef enum bcm_field_ingress_policer_pools_e { 7033 bcmFieldIngressLogicalPolicerPools8x1024, /* 8 Meter pools with 1024 entries in 7034 each pool (Default Configuration). */ 7035 bcmFieldIngressLogicalPolicerPools16x512Contiguous, /* 16 Meter pools with 512 entries in 7036 each pool in Contiguous mode. */ 7037 bcmFieldIngressLogicalPolicerPools16x512Split, /* 16 Meter pools with 512 entries in 7038 each pool in Split mode. */ 7039 bcmFieldIngressPolicerPoolsCount /* Always last. Not a usable value. */ 7040 } bcm_field_ingress_policer_pools_t; 7041 7042 #define BCM_FIELD_INGRESS_POLICER_POOL_MODE_STRINGS \ 7043 { \ 7044 "bcmFieldIngressLogicalPolicerPools8x1024", \ 7045 "bcmFieldIngressLogicalPolicerPools16x512Contiguous", \ 7046 "bcmFieldIngressLogicalPolicerPools16x512Split" \ 7047 } 7048 7049 #define bcmFieldGroupModeDefault bcmFieldGroupModeAuto 7050 7051 #define BCM_FIELD_GROUP_MODE_WIDTH_MAX 24 7052 7053 /* Parameter for bcmFieldActionEgressClassSelect */ 7054 #define BCM_FIELD_EGRESS_CLASS_SELECT_PORT 0 7055 #define BCM_FIELD_EGRESS_CLASS_SELECT_SVP 1 7056 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_IIF 2 7057 #define BCM_FIELD_EGRESS_CLASS_SELECT_FIELD_SRC 3 7058 #define BCM_FIELD_EGRESS_CLASS_SELECT_FIELD_DST 4 7059 #define BCM_FIELD_EGRESS_CLASS_SELECT_L2_SRC 5 7060 #define BCM_FIELD_EGRESS_CLASS_SELECT_L2_DST 6 7061 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_SRC 7 7062 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_DST 8 7063 #define BCM_FIELD_EGRESS_CLASS_SELECT_VLAN 9 7064 #define BCM_FIELD_EGRESS_CLASS_SELECT_VRF 10 7065 #define BCM_FIELD_EGRESS_CLASS_SELECT_NEW 11 7066 7067 /* Parameter for bcmFieldActionHiGigClassSelect */ 7068 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGRESS 0 7069 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_DVP 1 7070 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_L3_INTERFACE 2 7071 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_NEXT_HOP 3 7072 #define BCM_FIELD_HIGIG_CLASS_SELECT_PORT 4 7073 7074 /* parameter for bcmFieldActionOamDmTimeFormat */ 7075 #define BCM_FIELD_OAM_DM_TIME_FORMAT_IEEE1588 0 7076 #define BCM_FIELD_OAM_DM_TIME_FORMAT_NTP 1 7077 7078 /* Parameter for bcmFieldActionOamTagStatusCheck */ 7079 #define BCM_FIELD_OAM_TAG_STATUS_OUTER_MASK (1 << 0) 7080 #define BCM_FIELD_OAM_TAG_STATUS_INNER_MASK (1 << 1) 7081 #define BCM_FIELD_OAM_TAG_STATUS_INNER_L2_OUTER_MASK (1 << 2) 7082 #define BCM_FIELD_OAM_TAG_STATUS_INNER_L2_INNER_MASK (1 << 3) 7083 7084 /* Parameter for bcmFieldActionOamTunnelControl */ 7085 #define BCM_FIELD_OAM_TUNNEL_CONTROL_ANY 0 7086 #define BCM_FIELD_OAM_TUNNEL_CONTROL_NOT_TUNNELDED 1 7087 7088 /* Parameter for qualifier bcmFieldQualifyOamEgressMulticastMacHit */ 7089 #define BCM_FIELD_OAM_MUTLICAST_MAC_NO_HIT 0x1 /* Destination MAC 7090 address not in OAM 7091 Multicast MAC CLASS1 7092 or CLASS 2 Address 7093 Range */ 7094 #define BCM_FIELD_OAM_MUTLICAST_MAC_CLASS1_HIT 0x2 /* Destination MAC 7095 address in OAM 7096 Multicast MAC CLASS1 7097 Address Range 7098 01-80-C2-00-00-30 to 7099 01-80-C2-00-00-37 */ 7100 #define BCM_FIELD_OAM_MUTLICAST_MAC_CLASS2_HIT 0x3 /* Destination MAC 7101 address in OAM 7102 Multicast MAC CLASS2 7103 Address Range 7104 01-80-C2-00-00-38 to 7105 01-80-C2-00-00-3f */ 7106 7107 /* Group config create API optional flags. */ 7108 #define BCM_FIELD_GROUP_CREATE_WITH_ID (1 << 0) 7109 #define BCM_FIELD_GROUP_CREATE_WITH_PORT (1 << 1) 7110 #define BCM_FIELD_GROUP_CREATE_WITH_MODE (1 << 2) 7111 #define BCM_FIELD_GROUP_CREATE_SMALL (1 << 3) 7112 #define BCM_FIELD_GROUP_CREATE_LARGE (1 << 4) 7113 #define BCM_FIELD_GROUP_CREATE_WITH_ASET (1 << 5) 7114 #define BCM_FIELD_GROUP_CREATE_WITH_PRESELSET (1 << 6) 7115 #define BCM_FIELD_GROUP_CREATE_INSERTION_ORDER_LOOSE (1 << 7) /* If set, do not apply 7116 the rule where TCAM 7117 entries with identical 7118 priorities are ordered 7119 in the TCAM according 7120 to their insertion 7121 order */ 7122 #define BCM_FIELD_GROUP_CREATE_IS_EQUAL (1 << 8) /* If set, the is-equal 7123 result of this Field 7124 group key and the 7125 Field group 7126 'group_ref' is set in 7127 the 7128 bcmFieldQualifyIsEqualValue 7129 qualifier */ 7130 #define BCM_FIELD_GROUP_CREATE_SPARSE_ENTRY_PRIORITIES (1 << 9) /* If set, the TCAM 7131 shuffle algorithm 7132 assumes only sparse 7133 priorities assigned to 7134 the Field group 7135 entries */ 7136 #define BCM_FIELD_GROUP_CREATE_SINGLE (1 << 10) /* If set, use single 7137 resource for field 7138 group */ 7139 #define BCM_FIELD_GROUP_CREATE_IS_CASCADED (1 << 11) /* If set, the cascaded 7140 action value of this 7141 Field group is set in 7142 the 7143 bcmFieldQualifyCascadedKeyValue 7144 qualifier of the Field 7145 group 'group_ref'. */ 7146 #define BCM_FIELD_GROUP_CREATE_HANDLE_ENTRIES_BY_KEY (1 << 12) /* If set, entries in 7147 this group is handled 7148 by key and not by ID. 7149 entries with identical 7150 key cannot be added. 7151 getting and deleting 7152 entries should be 7153 according to the key'. */ 7154 #define BCM_FIELD_GROUP_CREATE_WITH_CYCLE (1 << 13) /* If set, use created 7155 cycle value for field 7156 group */ 7157 #define BCM_FIELD_GROUP_CREATE_WITH_PROGRAMS (1 << 14) /* Create field group 7158 attached with specific 7159 program(s). */ 7160 #define BCM_FIELD_GROUP_CREATE_WITH_CE_ID (1 << 15) /* Create field group 7161 with user provided ce 7162 id(s). */ 7163 #define BCM_FIELD_GROUP_CREATE_WITH_MW_SUPPORT (1 << 16) /* Create field group 7164 with multiwide 7165 support. The allocated 7166 slice for this group 7167 can spam multiwide 7168 modes. */ 7169 7170 #define BCM_FIELD_PRESEL_SEL_MAX 1024 /* Maximum Preselection entries 7171 supported. */ 7172 7173 /* Bitmap of all possible preselection specification IDs. */ 7174 typedef struct bcm_field_presel_set_s { 7175 SHR_BITDCL w[_SHR_BITDCLSIZE(BCM_FIELD_PRESEL_SEL_MAX)]; 7176 } bcm_field_presel_set_t; 7177 7178 #define BCM_FIELD_PRESEL_ENTRY_SET(_eid_, _presel_id_) (_eid_ = _presel_id_ | BCM_FIELD_QUALIFY_PRESEL) /* Build Preselector Entry ID for 7179 the given preselector ID. */ 7180 7181 /* Identifier for bcm_field_hint_t structure */ 7182 typedef uint32 bcm_field_hintid_t; 7183 7184 /* Default Action resolution ID for groups. */ 7185 #define BCM_FIELD_GROUP_ACTION_RES_ID_DEFAULT -1 /* Group default action 7186 resolution id value */ 7187 7188 /* Group Cycle value. */ 7189 typedef enum bcm_field_group_cycle_e { 7190 bcmFieldGroupCycle0 = 0, /* Create Field Group in Cycle 0. */ 7191 bcmFieldGroupCycle1 = 1, /* Create Field Group in Cycle 1. */ 7192 bcmFieldGroupCycleCount = 2 /* Always last. Not a usable value. */ 7193 } bcm_field_group_cycle_t; 7194 7195 #define BCM_FIELD_GROUP_CYCLE_STRINGS \ 7196 { \ 7197 "Cycle0", \ 7198 "Cycle1" \ 7199 } 7200 7201 /* PMF Program ID. */ 7202 typedef uint32 bcm_field_context_t; 7203 7204 /* Maximum number of presels per FG. */ 7205 #define BCM_FIELD_NOF_PRESEL_PER_FG 32 /* Maximum number of presels per 7206 fg */ 7207 7208 /* Maximum number of qualifiers per FG . */ 7209 #define BCM_FIELD_NOF_QUALS_PER_FG 32 /* Maximum number of quals per fg */ 7210 7211 /* Maximum number of ce id per qualifier . */ 7212 #define BCM_FIELD_NOF_CE_ID_PER_QUAL 8 /* Maximum number of ce ids 7213 per qualifier */ 7214 7215 /* Description of a qualifier ce information. */ 7216 typedef struct bcm_field_qual_ce_info_s { 7217 bcm_field_qualify_t qual; /* Qualifier for which the ce info is 7218 provided */ 7219 int nof_ce_ids; /* Number of ce ids for the given 7220 qualifeir */ 7221 int ce_id[BCM_FIELD_NOF_CE_ID_PER_QUAL]; /* ce ids for the given qualifier */ 7222 int key_index[BCM_FIELD_NOF_CE_ID_PER_QUAL]; /* key_index for the given ce ids. In 7223 case the key is double key and the 7224 ce_id is located in the second key - 7225 this index should be set to 1 */ 7226 } bcm_field_qual_ce_info_t; 7227 7228 /* Opaque handle to a field presel. */ 7229 typedef int bcm_field_presel_t; 7230 7231 #ifndef BCM_HIDE_DISPATCHABLE 7232 7233 /* Create a preselection specification. */ 7234 extern int bcm_field_presel_create( 7235 int unit, 7236 bcm_field_presel_t *presel_id); 7237 7238 /* Create a preselection specification using a specific ID. */ 7239 extern int bcm_field_presel_create_id( 7240 int unit, 7241 bcm_field_presel_t presel_id); 7242 7243 #endif /* BCM_HIDE_DISPATCHABLE */ 7244 7245 /* Description of a group hw information. */ 7246 typedef struct bcm_field_group_presel_info_s { 7247 bcm_field_presel_t presel_id; /* Presel Id for the given group hw info */ 7248 int nof_qual_info; /* Number of qualifiers in the hw info */ 7249 bcm_field_qual_ce_info_t qual_info[BCM_FIELD_NOF_QUALS_PER_FG]; /* Hw info for the given qualifier */ 7250 } bcm_field_group_presel_info_t; 7251 7252 /* Initialize Field Group Hw Info structure. */ 7253 extern void bcm_field_group_presel_info_init( 7254 int nof_presel_info, 7255 bcm_field_group_presel_info_t *presel_info); 7256 7257 /* 7258 * Group configuration structure. Used to create a field group with 7259 * specific attributes. 7260 */ 7261 typedef struct bcm_field_group_config_s { 7262 uint32 flags; /* Group create flags 7263 BCM_FIELD_GROUP_CREATE_XXX. */ 7264 bcm_field_qset_t qset; /* Group qualifier set. */ 7265 int priority; /* Group priority. */ 7266 bcm_field_group_mode_t mode; /* Group mode. */ 7267 bcm_pbmp_t ports; /* Group member ports. */ 7268 bcm_field_group_t group; /* Group. */ 7269 bcm_field_aset_t aset; /* Group action set */ 7270 bcm_field_presel_set_t preselset; /* Group preselector set */ 7271 bcm_field_presel_set_t group_ref; /* Reference Field group for operation 7272 set by the Flag. */ 7273 int max_entry_priorities; /* Number of entries priorities in the 7274 group. 0 means unlimited. */ 7275 bcm_field_hintid_t hintid; /* Hints for Group Creation. */ 7276 int action_res_id; /* Action resolution id for Group. */ 7277 uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Group. */ 7278 bcm_field_group_cycle_t cycle; /* Create Field Group Cycle. */ 7279 uint32 pgm_bmp; /* Bitmap of program-ids which the 7280 current field group will be pointing 7281 to. */ 7282 uint32 share_id; /* Group share ID. Groups created with 7283 same share ID may share TCAM banks. */ 7284 } bcm_field_group_config_t; 7285 7286 /* Used to create a field group with specific attributes. */ 7287 typedef struct bcm_field_group_config_extension_s { 7288 uint32 flags; /* Group create flags 7289 BCM_FIELD_GROUP_CREATE_XXX. */ 7290 bcm_field_qset_t qset; /* Group qualifier set. */ 7291 int priority; /* Group priority. */ 7292 bcm_field_group_mode_t mode; /* Group mode. */ 7293 bcm_pbmp_t ports; /* Group member ports. */ 7294 bcm_field_group_t group; /* Group. */ 7295 bcm_field_aset_t aset; /* Group action set */ 7296 bcm_field_presel_set_t preselset; /* Group preselector set */ 7297 bcm_field_presel_set_t group_ref; /* Reference Field group for operation 7298 set by the Flag. */ 7299 int max_entry_priorities; /* Number of entries priorities in the 7300 group. 0 means unlimited. */ 7301 bcm_field_hintid_t hintid; /* Hints for Group Creation. */ 7302 int action_res_id; /* Action resolution id for Group. */ 7303 uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Group. */ 7304 bcm_field_group_cycle_t cycle; /* Create Field Group Cycle. */ 7305 uint32 pgm_bmp; /* Bitmap of program-ids which the 7306 current field group will be pointing 7307 to. */ 7308 uint32 share_id; /* Group share ID. Groups created with 7309 same share ID may share TCAM banks. */ 7310 uint32 nof_presel_info; /* Number of presel_info elements. */ 7311 bcm_field_group_presel_info_t *presel_info; /* Per preselector data. */ 7312 } bcm_field_group_config_extension_t; 7313 7314 /* Description of a single extraction point. */ 7315 typedef struct bcm_field_extraction_field_s { 7316 uint32 flags; /* Flags for this extraction point */ 7317 bcm_field_qualify_t qualifier; /* BCM field qualifier ID (or 7318 bcmFieldQualifyCount is using constant 7319 value) */ 7320 int lsb; /* Least significant bit to be extracted 7321 from qualifier */ 7322 int bits; /* Number of bits to use, valid for both 7323 qualifier extraction and constant */ 7324 int value; /* Constant value (if qualifier is 7325 bcmFieldQualifyCount) */ 7326 } bcm_field_extraction_field_t; 7327 7328 /* 7329 * A single action, composed of possibly several extraction fields, for 7330 * an entry in a direct extraction group. 7331 */ 7332 typedef struct bcm_field_extraction_action_s { 7333 bcm_field_action_t action; /* BCM field action ID of the action to be built 7334 by extraction */ 7335 int bias; /* Bias value added to the final extracted value 7336 before using it as an argument to the action */ 7337 } bcm_field_extraction_action_t; 7338 7339 /* core specific paramters for a field group entry */ 7340 typedef struct bcm_field_action_core_config_s { 7341 uint32 flags; /* flags for core specific action */ 7342 int param0; /* action core-specific paramter No.0 */ 7343 int param1; /* action core-specific paramter No.1 */ 7344 int param2; /* action core-specific paramter No.2 */ 7345 int param3; /* action core-specific paramter No.3 */ 7346 } bcm_field_action_core_config_t; 7347 7348 /* core specific paramters for a field group entry */ 7349 typedef struct bcm_field_flowtrackercheck_s { 7350 bcm_flowtracker_check_t flow_check_id; /* Flowtracker check ID */ 7351 uint32 value; /* Value for flowtracker check ID */ 7352 } bcm_field_flowtrackercheck_t; 7353 7354 #define BCM_ILLEGAL_ACTION_PARAMETER (-1) /* Indicates meaningless 7355 paramX on 7356 bcm_field_action_core_config_t */ 7357 7358 /* Field Qualifier Arp Opcode (for bcm_field_qualify_ArpOpcode). */ 7359 typedef enum bcm_field_ArpOpcode_e { 7360 bcmFieldArpOpcodeRequest = 0, /* Request opcode. */ 7361 bcmFieldArpOpcodeReply = 1, /* Reply opcode. */ 7362 bcmFieldArpOpcodeCount = 2 /* Always last; not a usable value. */ 7363 } bcm_field_ArpOpcode_t; 7364 7365 #define BCM_FIELD_FARPOPCODE_STRINGS \ 7366 { \ 7367 "Request", \ 7368 "Reply" \ 7369 } 7370 7371 /* 7372 * Bitmap for the various options on 'flags' on 7373 * bcm_field_action_width_set() or bcm_field_action_width_get() 7374 */ 7375 typedef enum bcm_field_action_width_flags_e { 7376 bcm_default_action_width = 0 /* When this bit is set then ignore 'width' 7377 and set action runtime width to its 7378 default value. */ 7379 } bcm_field_action_width_flags_t; 7380 7381 #ifndef BCM_HIDE_DISPATCHABLE 7382 7383 /* Initialize field software subsystem. */ 7384 extern int bcm_field_init( 7385 int unit); 7386 7387 /* De-initialize field software subsystem. */ 7388 extern int bcm_field_detach( 7389 int unit); 7390 7391 /* Get a field control value. */ 7392 extern int bcm_field_control_get( 7393 int unit, 7394 bcm_field_control_t control, 7395 uint32 *state); 7396 7397 /* Set a field control value. */ 7398 extern int bcm_field_control_set( 7399 int unit, 7400 bcm_field_control_t control, 7401 uint32 state); 7402 7403 /* This function retrieves the number of slices in a given stage. */ 7404 extern int bcm_field_stage_slice_count_get( 7405 int unit, 7406 bcm_field_stage_t stage_id, 7407 int *slice_count); 7408 7409 /* 7410 * This function retrives the entries information for the given slice 7411 * number. 7412 */ 7413 extern int bcm_field_stage_slice_info_get( 7414 int unit, 7415 bcm_field_stage_t stage_id, 7416 bcm_pbmp_t pbmp, 7417 int slice_no, 7418 bcm_field_stage_slice_info_t *slice_info); 7419 7420 /* List the qualifiers supported for a given stage. */ 7421 extern int bcm_field_stage_qset_get( 7422 int unit, 7423 bcm_field_stage_t stage, 7424 uint8 presel, 7425 bcm_field_qset_t *qset); 7426 7427 /* Get per-stage field information */ 7428 extern int bcm_field_stage_info_get( 7429 int unit, 7430 bcm_field_stage_t stage, 7431 bcm_field_stage_info_t *info); 7432 7433 #endif /* BCM_HIDE_DISPATCHABLE */ 7434 7435 /* Initialize UDF specification structure. */ 7436 extern void bcm_field_udf_spec_t_init( 7437 bcm_field_udf_spec_t *udf_spec); 7438 7439 #ifndef BCM_HIDE_DISPATCHABLE 7440 7441 /* Create a field group. */ 7442 extern int bcm_field_group_create( 7443 int unit, 7444 bcm_field_qset_t qset, 7445 int pri, 7446 bcm_field_group_t *group); 7447 7448 /* Create a field group. */ 7449 extern int bcm_field_group_create_id( 7450 int unit, 7451 bcm_field_qset_t qset, 7452 int pri, 7453 bcm_field_group_t group); 7454 7455 /* Enable or Disable Auto expansion of entries for a group. */ 7456 extern int bcm_field_group_expansion_enable_set( 7457 int unit, 7458 bcm_field_group_t group, 7459 int enable); 7460 7461 /* Get Auto expansion configuration for a group. */ 7462 extern int bcm_field_group_expansion_enable_get( 7463 int unit, 7464 bcm_field_group_t group, 7465 int *enable); 7466 7467 /* Create a field group. */ 7468 extern int bcm_field_group_create_mode( 7469 int unit, 7470 bcm_field_qset_t qset, 7471 int pri, 7472 bcm_field_group_mode_t mode, 7473 bcm_field_group_t *group); 7474 7475 /* Create a field group. */ 7476 extern int bcm_field_group_create_mode_id( 7477 int unit, 7478 bcm_field_qset_t qset, 7479 int pri, 7480 bcm_field_group_mode_t mode, 7481 bcm_field_group_t group); 7482 7483 /* Create a field group. */ 7484 extern int bcm_field_group_port_create_mode( 7485 int unit, 7486 bcm_port_t port, 7487 bcm_field_qset_t qset, 7488 int pri, 7489 bcm_field_group_mode_t mode, 7490 bcm_field_group_t *group); 7491 7492 /* Create a field group. */ 7493 extern int bcm_field_group_port_create_mode_id( 7494 int unit, 7495 bcm_port_t port, 7496 bcm_field_qset_t qset, 7497 int pri, 7498 bcm_field_group_mode_t mode, 7499 bcm_field_group_t group); 7500 7501 /* Create a field group. */ 7502 extern int bcm_field_group_ports_create_mode( 7503 int unit, 7504 bcm_pbmp_t pbmp, 7505 bcm_field_qset_t qset, 7506 int pri, 7507 bcm_field_group_mode_t mode, 7508 bcm_field_group_t *group); 7509 7510 /* Create a field group. */ 7511 extern int bcm_field_group_ports_create_mode_id( 7512 int unit, 7513 bcm_pbmp_t pbmp, 7514 bcm_field_qset_t qset, 7515 int pri, 7516 bcm_field_group_mode_t mode, 7517 bcm_field_group_t group); 7518 7519 /* Create a wlan field group. */ 7520 extern int bcm_field_group_wlan_create_mode( 7521 int unit, 7522 bcm_field_qset_t qset, 7523 int pri, 7524 bcm_field_group_mode_t mode, 7525 bcm_field_group_t *group); 7526 7527 /* Create a wlan field group. */ 7528 extern int bcm_field_group_wlan_create_mode_id( 7529 int unit, 7530 bcm_field_qset_t qset, 7531 int pri, 7532 bcm_field_group_mode_t mode, 7533 bcm_field_group_t group); 7534 7535 /* Get the mode of a group. */ 7536 extern int bcm_field_group_mode_get( 7537 int unit, 7538 bcm_field_group_t group, 7539 bcm_field_group_mode_t *mode); 7540 7541 /* Create a field group with specific attributes. */ 7542 extern int bcm_field_group_config_create( 7543 int unit, 7544 bcm_field_group_config_t *group_config); 7545 7546 /* Create a field group with extension specific attributes. */ 7547 extern int bcm_field_group_config_extension_create( 7548 int unit, 7549 bcm_field_group_config_extension_t *group_config); 7550 7551 #endif /* BCM_HIDE_DISPATCHABLE */ 7552 7553 /* Initialize Field Group Config structure. */ 7554 extern void bcm_field_group_config_t_init( 7555 bcm_field_group_config_t *group_config); 7556 7557 /* Initialize Field Group Config Extension structure. */ 7558 extern void bcm_field_group_config_extension_t_init( 7559 bcm_field_group_config_extension_t *group_config); 7560 7561 /* FP group traverse callback function */ 7562 typedef int (*bcm_field_group_traverse_cb)( 7563 int unit, 7564 bcm_field_group_t group, 7565 void *user_data); 7566 7567 #ifndef BCM_HIDE_DISPATCHABLE 7568 7569 /* 7570 * Traverse all the fp groups in the system, calling a specified callback 7571 * for each one 7572 */ 7573 extern int bcm_field_group_traverse( 7574 int unit, 7575 bcm_field_group_traverse_cb callback, 7576 void *user_data); 7577 7578 /* 7579 * Destroys field entries in the given group (both software object and 7580 * the actual hardware entry) before destroying the field group. Field 7581 * group sw object is also destroyed as well. 7582 */ 7583 extern int bcm_field_group_flush( 7584 int unit, 7585 bcm_field_group_t group); 7586 7587 /* Change or retrieve the qualifiers for a field group. */ 7588 extern int bcm_field_group_set( 7589 int unit, 7590 bcm_field_group_t group, 7591 bcm_field_qset_t qset); 7592 7593 /* Change or retrieve the qualifiers for a field group. */ 7594 extern int bcm_field_group_get( 7595 int unit, 7596 bcm_field_group_t group, 7597 bcm_field_qset_t *qset); 7598 7599 /* Change or retrieve the actions for a field group. */ 7600 extern int bcm_field_group_action_set( 7601 int unit, 7602 bcm_field_group_t group, 7603 bcm_field_aset_t aset); 7604 7605 /* Change or retrieve the actions for a field group. */ 7606 extern int bcm_field_group_action_get( 7607 int unit, 7608 bcm_field_group_t group, 7609 bcm_field_aset_t *aset); 7610 7611 /* Deallocates a field group. */ 7612 extern int bcm_field_group_destroy( 7613 int unit, 7614 bcm_field_group_t group); 7615 7616 /* Compress field group entries. */ 7617 extern int bcm_field_group_compress( 7618 int unit, 7619 bcm_field_group_t group); 7620 7621 /* Set or Clear entry as default entry to group. */ 7622 extern int bcm_field_group_default_entry_set( 7623 int unit, 7624 bcm_field_group_t group, 7625 bcm_field_entry_t entry, 7626 int enable); 7627 7628 /* Get default entry id associated to group. */ 7629 extern int bcm_field_group_default_entry_get( 7630 int unit, 7631 bcm_field_group_t group, 7632 bcm_field_entry_t *entry); 7633 7634 /* Set field group priority. */ 7635 extern int bcm_field_group_priority_set( 7636 int unit, 7637 bcm_field_group_t group, 7638 int priority); 7639 7640 /* Get field group priority. */ 7641 extern int bcm_field_group_priority_get( 7642 int unit, 7643 bcm_field_group_t group, 7644 int *priority); 7645 7646 /* Retrieve status of a specified field group. */ 7647 extern int bcm_field_group_status_get( 7648 int unit, 7649 bcm_field_group_t group, 7650 bcm_field_group_status_t *status); 7651 7652 /* Set the group enable state. */ 7653 extern int bcm_field_group_enable_set( 7654 int unit, 7655 bcm_field_group_t group, 7656 int enable); 7657 7658 /* Get the group enable state. */ 7659 extern int bcm_field_group_enable_get( 7660 int unit, 7661 bcm_field_group_t group, 7662 int *enable); 7663 7664 /* Allocate a range checker with specified configuration. */ 7665 extern int bcm_field_range_create( 7666 int unit, 7667 bcm_field_range_t *range, 7668 uint32 flags, 7669 bcm_l4_port_t min, 7670 bcm_l4_port_t max); 7671 7672 /* 7673 * Install all entries of a field group into the hardware tables (will 7674 * silently reinstall entries already in the hardware tables) 7675 */ 7676 extern int bcm_field_group_install( 7677 int unit, 7678 bcm_field_group_t group); 7679 7680 /* 7681 * Remove all entries of a field group from the hardware tables (will 7682 * silently ignore entries not in the hardware tables) 7683 */ 7684 extern int bcm_field_group_remove( 7685 int unit, 7686 bcm_field_group_t group); 7687 7688 /* Allocate a range checker with specified configuration. */ 7689 extern int bcm_field_range_create_id( 7690 int unit, 7691 bcm_field_range_t range, 7692 uint32 flags, 7693 bcm_l4_port_t min, 7694 bcm_l4_port_t max); 7695 7696 /* 7697 * Allocate a range checker with specified configuration associated with 7698 * an interface group. 7699 */ 7700 extern int bcm_field_range_group_create( 7701 int unit, 7702 bcm_field_range_t *range, 7703 uint32 flags, 7704 bcm_l4_port_t min, 7705 bcm_l4_port_t max, 7706 bcm_if_group_t group); 7707 7708 /* 7709 * Allocate a range checker with specified configuration associated with 7710 * an interface group. 7711 */ 7712 extern int bcm_field_range_group_create_id( 7713 int unit, 7714 bcm_field_range_t range, 7715 uint32 flags, 7716 bcm_l4_port_t min, 7717 bcm_l4_port_t max, 7718 bcm_if_group_t group); 7719 7720 /* Retrieve parameters associated with an existing range checker. */ 7721 extern int bcm_field_range_get( 7722 int unit, 7723 bcm_field_range_t range, 7724 uint32 *flags, 7725 bcm_l4_port_t *min, 7726 bcm_l4_port_t *max); 7727 7728 /* Destroy a virtual range checker. */ 7729 extern int bcm_field_range_destroy( 7730 int unit, 7731 bcm_field_range_t range); 7732 7733 #endif /* BCM_HIDE_DISPATCHABLE */ 7734 7735 /* Initialize Field Data Qualifier structure. */ 7736 extern void bcm_field_data_qualifier_t_init( 7737 bcm_field_data_qualifier_t *data_qual); 7738 7739 /* Initialize ethertype based field data qualifier. */ 7740 extern void bcm_field_data_ethertype_t_init( 7741 bcm_field_data_ethertype_t *etype); 7742 7743 /* Initialize ip protocol based field data qualifier. */ 7744 extern void bcm_field_data_ip_protocol_t_init( 7745 bcm_field_data_ip_protocol_t *ip_protocol); 7746 7747 /* Initialize packet format based field data qualifier. */ 7748 extern void bcm_field_data_packet_format_t_init( 7749 bcm_field_data_packet_format_t *packet_format); 7750 7751 /* Initialize field class info structure. */ 7752 extern void bcm_field_class_info_t_init( 7753 bcm_field_class_info_t *class_info); 7754 7755 #ifndef BCM_HIDE_DISPATCHABLE 7756 7757 /* Create an data/offset based qualifier. */ 7758 extern int bcm_field_data_qualifier_create( 7759 int unit, 7760 bcm_field_data_qualifier_t *data_qualifier); 7761 7762 /* Return list of ids of defined data qualifiers, per standard API idiom. */ 7763 extern int bcm_field_data_qualifier_multi_get( 7764 int unit, 7765 int qual_size, 7766 int *qual_array, 7767 int *qual_count); 7768 7769 /* Return configuration of given data qualifier. */ 7770 extern int bcm_field_data_qualifier_get( 7771 int unit, 7772 int qual_id, 7773 bcm_field_data_qualifier_t *qual); 7774 7775 /* Destroy an data/offset based qualifier. */ 7776 extern int bcm_field_data_qualifier_destroy( 7777 int unit, 7778 int qual_id); 7779 7780 /* Delete all data/offset based qualifiers. */ 7781 extern int bcm_field_data_qualifier_destroy_all( 7782 int unit); 7783 7784 /* Add ethertype based offset to data qualifier object. */ 7785 extern int bcm_field_data_qualifier_ethertype_add( 7786 int unit, 7787 int qual_id, 7788 bcm_field_data_ethertype_t *etype); 7789 7790 /* Remove ethertype based offset from data qualifier object. */ 7791 extern int bcm_field_data_qualifier_ethertype_delete( 7792 int unit, 7793 int qual_id, 7794 bcm_field_data_ethertype_t *etype); 7795 7796 /* Add ip protocol based offset to data qualifier object. */ 7797 extern int bcm_field_data_qualifier_ip_protocol_add( 7798 int unit, 7799 int qual_id, 7800 bcm_field_data_ip_protocol_t *ip_protocol); 7801 7802 /* Remove ip protocol based offset from data qualifier object. */ 7803 extern int bcm_field_data_qualifier_ip_protocol_delete( 7804 int unit, 7805 int qual_id, 7806 bcm_field_data_ip_protocol_t *ip_protocol); 7807 7808 /* Add packet format based offset/s to data qualifier object. */ 7809 extern int bcm_field_data_qualifier_packet_format_add( 7810 int unit, 7811 int qual_id, 7812 bcm_field_data_packet_format_t *packet_format); 7813 7814 /* Remove packet format based offset/s from data qualifier object. */ 7815 extern int bcm_field_data_qualifier_packet_format_delete( 7816 int unit, 7817 int qual_id, 7818 bcm_field_data_packet_format_t *packet_format); 7819 7820 /* Add field data qualifier to group qset. */ 7821 extern int bcm_field_qset_data_qualifier_add( 7822 int unit, 7823 bcm_field_qset_t *qset, 7824 int qual_id); 7825 7826 /* Delete a field data qualifier from group qset. */ 7827 extern int bcm_field_qset_data_qualifier_delete( 7828 int unit, 7829 bcm_field_qset_t *qset, 7830 int qual_id); 7831 7832 /* Get field data qualifiers included in group qset. */ 7833 extern int bcm_field_qset_data_qualifier_get( 7834 int unit, 7835 bcm_field_qset_t qset, 7836 int qual_max, 7837 int *qual_arr, 7838 int *qual_count); 7839 7840 /* Create a blank field entry. */ 7841 extern int bcm_field_entry_create( 7842 int unit, 7843 bcm_field_group_t group, 7844 bcm_field_entry_t *entry); 7845 7846 #endif /* BCM_HIDE_DISPATCHABLE */ 7847 7848 #define BCM_FIELD_DATA_QUALIFIER_SHIFT 14 7849 7850 #define BCM_FIELD_DATA_QUALIFIER_SET(data_qual_id, qual_id) (qual_id = (1 << BCM_FIELD_DATA_QUALIFIER_SHIFT) | data_qual_id) 7851 7852 #ifndef BCM_HIDE_DISPATCHABLE 7853 7854 /* Create a blank field entry. */ 7855 extern int bcm_field_entry_create_id( 7856 int unit, 7857 bcm_field_group_t group, 7858 bcm_field_entry_t entry); 7859 7860 /* Create a blank field entry. */ 7861 extern int bcm_field_entry_multi_get( 7862 int unit, 7863 bcm_field_group_t group, 7864 int entry_size, 7865 bcm_field_entry_t *entry_array, 7866 int *entry_count); 7867 7868 /* Destroy a field entry. */ 7869 extern int bcm_field_entry_destroy( 7870 int unit, 7871 bcm_field_entry_t entry); 7872 7873 /* Destroy all field entries. */ 7874 extern int bcm_field_entry_destroy_all( 7875 int unit); 7876 7877 /* 7878 * Create a copy of an existing entry and control the entry copy using 7879 * flags 7880 */ 7881 extern int bcm_field_entry_config_copy( 7882 int unit, 7883 bcm_field_entry_t src_entry, 7884 bcm_field_entry_t *dst_entry, 7885 uint32 flags); 7886 7887 /* Create a copy of an existing field entry. */ 7888 extern int bcm_field_entry_copy( 7889 int unit, 7890 bcm_field_entry_t src_entry, 7891 bcm_field_entry_t *dst_entry); 7892 7893 /* Create a copy of an existing field entry. */ 7894 extern int bcm_field_entry_copy_id( 7895 int unit, 7896 bcm_field_entry_t src_entry, 7897 bcm_field_entry_t dst_entry); 7898 7899 /* Install a field entry into the hardware tables. */ 7900 extern int bcm_field_entry_install( 7901 int unit, 7902 bcm_field_entry_t entry); 7903 7904 #endif /* BCM_HIDE_DISPATCHABLE */ 7905 7906 #define BCM_FIELD_LARGE_DIRECT_ENTRY_ID_PACK(_entry_id, _group_id, _index) \ 7907 _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_PACK(_entry_id, _group_id, _index) 7908 7909 7910 #define BCM_FIELD_LARGE_DIRECT_ENTRY_ID_UNPACK(_entry_id, _group_id, _index) \ 7911 _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_UNPACK(_entry_id, _group_id, _index) 7912 7913 7914 #ifndef BCM_HIDE_DISPATCHABLE 7915 7916 /* Install a field entry into large direct tables. */ 7917 extern int bcm_field_entry_install_and_handler_update( 7918 int unit, 7919 bcm_field_entry_t entry, 7920 bcm_field_entry_t *large_dt_entry); 7921 7922 /* Re-install a field entry into the hardware tables. */ 7923 extern int bcm_field_entry_reinstall( 7924 int unit, 7925 bcm_field_entry_t entry); 7926 7927 /* Remove a field entry from the hardware tables. */ 7928 extern int bcm_field_entry_remove( 7929 int unit, 7930 bcm_field_entry_t entry); 7931 7932 /* Enable or Disable a field Entry in hardware table by toggling VALIDf. */ 7933 extern int bcm_field_entry_enable_set( 7934 int unit, 7935 bcm_field_entry_t entry, 7936 int enable_flag); 7937 7938 /* Get the Enable or Disable status of a field Entry. */ 7939 extern int bcm_field_entry_enable_get( 7940 int unit, 7941 bcm_field_entry_t entry, 7942 int *enable_flag); 7943 7944 /* Attach a policer to a field entry. */ 7945 extern int bcm_field_entry_policer_attach( 7946 int unit, 7947 bcm_field_entry_t entry_id, 7948 int level, 7949 bcm_policer_t policer_id); 7950 7951 /* Detach a policer from a field entry. */ 7952 extern int bcm_field_entry_policer_detach( 7953 int unit, 7954 bcm_field_entry_t entry_id, 7955 int level); 7956 7957 /* Detach all policers from a field entry. */ 7958 extern int bcm_field_entry_policer_detach_all( 7959 int unit, 7960 bcm_field_entry_t entry_id); 7961 7962 /* Get the policer(s) attached to a field entry. */ 7963 extern int bcm_field_entry_policer_get( 7964 int unit, 7965 bcm_field_entry_t entry_id, 7966 int level, 7967 bcm_policer_t *policer_id); 7968 7969 /* Get/Set the priority for an entry within a group. */ 7970 extern int bcm_field_entry_prio_get( 7971 int unit, 7972 bcm_field_entry_t entry, 7973 int *prio); 7974 7975 /* Get/Set the priority for an entry within a group. */ 7976 extern int bcm_field_entry_prio_set( 7977 int unit, 7978 bcm_field_entry_t entry, 7979 int prio); 7980 7981 /* Invalidate HW FP entries that have not been replayed after warm boot. */ 7982 extern int bcm_field_resync( 7983 int unit); 7984 7985 /* Add qualifier objects to field group qset. */ 7986 extern int bcm_field_qset_id_multi_set( 7987 int unit, 7988 bcm_field_qualify_t qualifier, 7989 int num_objects, 7990 int *object_list, 7991 bcm_field_qset_t *qset); 7992 7993 /* Delete qualifier objects to field group qset. */ 7994 extern int bcm_field_qset_id_multi_delete( 7995 int unit, 7996 bcm_field_qualify_t qualifier, 7997 int num_objects, 7998 int *object_list, 7999 bcm_field_qset_t *qset); 8000 8001 /* Get qualifier objects added to the field group qset. */ 8002 extern int bcm_field_qset_id_multi_get( 8003 int unit, 8004 bcm_field_qset_t qset, 8005 bcm_field_qualify_t qualifier, 8006 int max_objects, 8007 int *object_list, 8008 int *count_objects); 8009 8010 #endif /* BCM_HIDE_DISPATCHABLE */ 8011 8012 #define BCM_FIELD_ENTRY_LARGE_DIRECT_LOOKUP 0x10000000 /* OR with ID when 8013 calling 8014 bcm_field_entry_* 8015 functions to indicate 8016 large direct lookup 8017 advanced application */ 8018 8019 #define BCM_FIELD_ENTRY_KEEP_LOCATION 0x20000000 /* OR with ID when calling 8020 bcm_field_entry_remove 8021 functions to indicate TCAM 8022 location of entry is kept 8023 for 8024 bcm_field_entry_install 8025 function */ 8026 8027 #define BCM_FIELD_SEL_NOT_IN_TABLE 0xfff0 8028 8029 #define BCM_FIELD_QUALIFY_PRESEL 0x40000000 /* OR with ID when calling 8030 bcm_field_qualify_* functions 8031 to indicate ID is a 8032 preselector instead of an 8033 entry */ 8034 8035 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_INGRESS 0x80001000 /* OR with ID when 8036 calling 8037 bcm_field_qualify_* 8038 functions to indicate 8039 ID is a preselector in 8040 ingress stage instead 8041 of an entry */ 8042 8043 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_EGRESS 0x80002000 /* OR with ID when 8044 calling 8045 bcm_field_qualify_* 8046 functions to indicate 8047 ID is a preselector in 8048 egress stage instead 8049 of an entry */ 8050 8051 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_HASH 0x80004000 /* OR with ID when 8052 calling 8053 bcm_field_qualify_* 8054 functions to indicate 8055 ID is a preselector in 8056 hashing stage instead 8057 of an entry */ 8058 8059 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_EXTERNAL 0x80008000 /* OR with ID when 8060 calling 8061 bcm_field_qualify_* 8062 functions to indicate 8063 ID is a preselector in 8064 external stage */ 8065 8066 #define BCM_FIELD_QUALIFY_PRESEL_STAGGERED 0x41000000 /* OR with ID when 8067 calling 8068 bcm_field_qualify_* 8069 functions to indicate 8070 ID is a preselector in 8071 staggered mode */ 8072 8073 #define BCM_FIELD_PRESEL_STAGGERED 512 /* flag to indicate the prsele-id 8074 is staggered and should be 8075 configured in the second pass 8076 program selection table */ 8077 8078 #ifndef BCM_HIDE_DISPATCHABLE 8079 8080 /* Remove all qualifications from a field entry. */ 8081 extern int bcm_field_qualify_clear( 8082 int unit, 8083 bcm_field_entry_t entry); 8084 8085 /* Add data field that the packet must match to trigger qualifier. */ 8086 extern int bcm_field_qualify_data( 8087 int unit, 8088 bcm_field_entry_t eid, 8089 int qual_id, 8090 uint8 *data, 8091 uint8 *mask, 8092 uint16 length); 8093 8094 /* Add UDF data that the packet must match to trigger qualifier. */ 8095 extern int bcm_field_qualify_udf( 8096 int unit, 8097 bcm_field_entry_t eid, 8098 bcm_udf_id_t udf_id, 8099 int length, 8100 uint8 *data, 8101 uint8 *mask); 8102 8103 /* Get UDF data that the packet configured to match on. */ 8104 extern int bcm_field_qualify_udf_get( 8105 int unit, 8106 bcm_field_entry_t eid, 8107 bcm_udf_id_t udf_id, 8108 int max_length, 8109 uint8 *data, 8110 uint8 *mask, 8111 int *actual_length); 8112 8113 /* Remove match criteria from a field processor entry. */ 8114 extern int bcm_field_qualifier_delete( 8115 int unit, 8116 bcm_field_entry_t entry, 8117 bcm_field_qualify_t qual_id); 8118 8119 /* bcm_field_qualify_InPort */ 8120 extern int bcm_field_qualify_InPort( 8121 int unit, 8122 bcm_field_entry_t entry, 8123 bcm_port_t data, 8124 bcm_port_t mask); 8125 8126 /* bcm_field_qualify_OutPort */ 8127 extern int bcm_field_qualify_OutPort( 8128 int unit, 8129 bcm_field_entry_t entry, 8130 bcm_port_t data, 8131 bcm_port_t mask); 8132 8133 /* bcm_field_qualify_InPorts */ 8134 extern int bcm_field_qualify_InPorts( 8135 int unit, 8136 bcm_field_entry_t entry, 8137 bcm_pbmp_t data, 8138 bcm_pbmp_t mask); 8139 8140 /* bcm_field_qualify_OutPorts */ 8141 extern int bcm_field_qualify_OutPorts( 8142 int unit, 8143 bcm_field_entry_t entry, 8144 bcm_pbmp_t data, 8145 bcm_pbmp_t mask); 8146 8147 /* bcm_field_qualify_Drop */ 8148 extern int bcm_field_qualify_Drop( 8149 int unit, 8150 bcm_field_entry_t entry, 8151 uint8 data, 8152 uint8 mask); 8153 8154 /* bcm_field_qualify_SrcPort */ 8155 extern int bcm_field_qualify_SrcPort( 8156 int unit, 8157 bcm_field_entry_t entry, 8158 bcm_module_t data_modid, 8159 bcm_module_t mask_modid, 8160 bcm_port_t data_port, 8161 bcm_port_t mask_port); 8162 8163 /* bcm_field_qualify_SrcTrunk */ 8164 extern int bcm_field_qualify_SrcTrunk( 8165 int unit, 8166 bcm_field_entry_t entry, 8167 bcm_trunk_t data, 8168 bcm_trunk_t mask); 8169 8170 /* 8171 * Set match criteria for bcmFieldQualifySrcTrunkMemberGport 8172 * qualifier in the field entry. 8173 */ 8174 extern int bcm_field_qualify_SrcTrunkMemberGport( 8175 int unit, 8176 bcm_field_entry_t entry, 8177 bcm_gport_t data); 8178 8179 /* bcm_field_qualify_SrcTMPort */ 8180 extern int bcm_field_qualify_SrcTMPort( 8181 int unit, 8182 bcm_field_entry_t entry, 8183 bcm_port_t data_port, 8184 bcm_port_t mask_port); 8185 8186 /* bcm_field_qualify_DstPort */ 8187 extern int bcm_field_qualify_DstPort( 8188 int unit, 8189 bcm_field_entry_t entry, 8190 bcm_module_t data_modid, 8191 bcm_module_t mask_modid, 8192 bcm_port_t data_port, 8193 bcm_port_t mask_port); 8194 8195 /* bcm_field_qualify_DstTrunk */ 8196 extern int bcm_field_qualify_DstTrunk( 8197 int unit, 8198 bcm_field_entry_t entry, 8199 bcm_trunk_t data, 8200 bcm_trunk_t mask); 8201 8202 /* bcm_field_qualify_InnerL4SrcPort */ 8203 extern int bcm_field_qualify_InnerL4SrcPort( 8204 int unit, 8205 bcm_field_entry_t entry, 8206 bcm_l4_port_t data, 8207 bcm_l4_port_t mask); 8208 8209 /* bcm_field_qualify_InnerL4DstPort */ 8210 extern int bcm_field_qualify_InnerL4DstPort( 8211 int unit, 8212 bcm_field_entry_t entry, 8213 bcm_l4_port_t data, 8214 bcm_l4_port_t mask); 8215 8216 /* bcm_field_qualify_L4SrcPort */ 8217 extern int bcm_field_qualify_L4SrcPort( 8218 int unit, 8219 bcm_field_entry_t entry, 8220 bcm_l4_port_t data, 8221 bcm_l4_port_t mask); 8222 8223 /* bcm_field_qualify_L4DstPort */ 8224 extern int bcm_field_qualify_L4DstPort( 8225 int unit, 8226 bcm_field_entry_t entry, 8227 bcm_l4_port_t data, 8228 bcm_l4_port_t mask); 8229 8230 /* bcm_field_qualify_OuterVlan */ 8231 extern int bcm_field_qualify_OuterVlan( 8232 int unit, 8233 bcm_field_entry_t entry, 8234 bcm_vlan_t data, 8235 bcm_vlan_t mask); 8236 8237 /* 8238 * Set match criteria for bcmFieldQualifyOuterVlanId 8239 * qualifier in the field entry. 8240 */ 8241 extern int bcm_field_qualify_OuterVlanId( 8242 int unit, 8243 bcm_field_entry_t entry, 8244 bcm_vlan_t data, 8245 bcm_vlan_t mask); 8246 8247 /* 8248 * Set match criteria for bcmFieldQualifyOuterVlanPri 8249 * qualifier in the field entry. 8250 */ 8251 extern int bcm_field_qualify_OuterVlanPri( 8252 int unit, 8253 bcm_field_entry_t entry, 8254 uint8 data, 8255 uint8 mask); 8256 8257 /* 8258 * Set match criteria for bcmFieldQualifyOuterVlanCfi 8259 * qualifier in the field entry. 8260 */ 8261 extern int bcm_field_qualify_OuterVlanCfi( 8262 int unit, 8263 bcm_field_entry_t entry, 8264 uint8 data, 8265 uint8 mask); 8266 8267 /* 8268 * Set match criteria for bcmFieldQualifyOuterVlanPriCfi 8269 * qualifier in the field entry. 8270 */ 8271 extern int bcm_field_qualify_OuterVlanPriCfi( 8272 int unit, 8273 bcm_field_entry_t entry, 8274 uint8 data, 8275 uint8 mask); 8276 8277 /* bcm_field_qualify_InnerVlan */ 8278 extern int bcm_field_qualify_InnerVlan( 8279 int unit, 8280 bcm_field_entry_t entry, 8281 bcm_vlan_t data, 8282 bcm_vlan_t mask); 8283 8284 /* 8285 * Set match criteria for bcmFieldQualifyInnerVlanId 8286 * qualifier in the field entry. 8287 */ 8288 extern int bcm_field_qualify_InnerVlanId( 8289 int unit, 8290 bcm_field_entry_t entry, 8291 bcm_vlan_t data, 8292 bcm_vlan_t mask); 8293 8294 /* 8295 * Set match criteria for bcmFieldQualifyInnerVlanPri 8296 * qualifier in the field entry. 8297 */ 8298 extern int bcm_field_qualify_InnerVlanPri( 8299 int unit, 8300 bcm_field_entry_t entry, 8301 uint8 data, 8302 uint8 mask); 8303 8304 /* 8305 * Set match criteria for bcmFieldQualifyInnerVlanCfi 8306 * qualifier in the field entry. 8307 */ 8308 extern int bcm_field_qualify_InnerVlanCfi( 8309 int unit, 8310 bcm_field_entry_t entry, 8311 uint8 data, 8312 uint8 mask); 8313 8314 /* bcm_field_qualify_EtherType */ 8315 extern int bcm_field_qualify_EtherType( 8316 int unit, 8317 bcm_field_entry_t entry, 8318 uint16 data, 8319 uint16 mask); 8320 8321 /* Add loopback field qualification to a field entry. */ 8322 extern int bcm_field_qualify_Loopback( 8323 int unit, 8324 bcm_field_entry_t entry, 8325 uint8 data, 8326 uint8 mask); 8327 8328 /* Add loopback type field qualification to a field entry. */ 8329 extern int bcm_field_qualify_LoopbackType( 8330 int unit, 8331 bcm_field_entry_t entry, 8332 bcm_field_LoopbackType_t loopback_type); 8333 8334 /* Add tunnel type field qualification to a field entry. */ 8335 extern int bcm_field_qualify_TunnelType( 8336 int unit, 8337 bcm_field_entry_t entry, 8338 bcm_field_TunnelType_t tunnel_type); 8339 8340 /* bcm_field_qualify_DstL3Egress */ 8341 extern int bcm_field_qualify_DstL3Egress( 8342 int unit, 8343 bcm_field_entry_t entry, 8344 bcm_if_t if_id); 8345 8346 /* bcm_field_qualify_DstMulticastGroup */ 8347 extern int bcm_field_qualify_DstMulticastGroup( 8348 int unit, 8349 bcm_field_entry_t entry, 8350 bcm_multicast_t group); 8351 8352 /* bcm_field_qualify_SrcMplsGport */ 8353 extern int bcm_field_qualify_SrcMplsGport( 8354 int unit, 8355 bcm_field_entry_t entry, 8356 bcm_gport_t mpls_port_id); 8357 8358 /* bcm_field_qualify_DstMplsGport */ 8359 extern int bcm_field_qualify_DstMplsGport( 8360 int unit, 8361 bcm_field_entry_t entry, 8362 bcm_gport_t mpls_port_id); 8363 8364 /* bcm_field_qualify_SrcMimGport */ 8365 extern int bcm_field_qualify_SrcMimGport( 8366 int unit, 8367 bcm_field_entry_t entry, 8368 bcm_gport_t mim_port_id); 8369 8370 /* bcm_field_qualify_DstMimGport */ 8371 extern int bcm_field_qualify_DstMimGport( 8372 int unit, 8373 bcm_field_entry_t entry, 8374 bcm_gport_t mim_port_id); 8375 8376 /* bcm_field_qualify_SrcWlanGport */ 8377 extern int bcm_field_qualify_SrcWlanGport( 8378 int unit, 8379 bcm_field_entry_t entry, 8380 bcm_gport_t wlan_port_id); 8381 8382 /* bcm_field_qualify_DstWlanGport */ 8383 extern int bcm_field_qualify_DstWlanGport( 8384 int unit, 8385 bcm_field_entry_t entry, 8386 bcm_gport_t wlan_port_id); 8387 8388 /* bcm_field_qualify_SrcVxlanGport */ 8389 extern int bcm_field_qualify_SrcVxlanGport( 8390 int unit, 8391 bcm_field_entry_t entry, 8392 bcm_gport_t vxlan_port_id); 8393 8394 /* bcm_field_qualify_DstVxlanGport */ 8395 extern int bcm_field_qualify_DstVxlanGport( 8396 int unit, 8397 bcm_field_entry_t entry, 8398 bcm_gport_t vxlan_port_id); 8399 8400 /* 8401 * Set match criteria for bcmFieldQualifyIntPriority 8402 * qualifier in the field entry. 8403 */ 8404 extern int bcm_field_qualify_IntPriority( 8405 int unit, 8406 bcm_field_entry_t entry, 8407 uint8 data, 8408 uint8 mask); 8409 8410 /* 8411 * Set match criteria for bcmFieldQualifyForwardingVlanId 8412 * qualifier in the field entry. 8413 */ 8414 extern int bcm_field_qualify_ForwardingVlanId( 8415 int unit, 8416 bcm_field_entry_t entry, 8417 bcm_vlan_t data, 8418 bcm_vlan_t mask); 8419 8420 /* 8421 * Get match criteria for bcmFieldQualifyForwardingVlanId 8422 * qualifier from the field entry. 8423 */ 8424 extern int bcm_field_qualify_ForwardingVlanId_get( 8425 int unit, 8426 bcm_field_entry_t entry, 8427 bcm_vlan_t *data, 8428 bcm_vlan_t *mask); 8429 8430 /* 8431 * Set match criteria for bcmFieldQualifyVpn 8432 * qualifier in the field entry. 8433 */ 8434 extern int bcm_field_qualify_Vpn( 8435 int unit, 8436 bcm_field_entry_t entry, 8437 bcm_vpn_t data, 8438 bcm_vpn_t mask); 8439 8440 /* 8441 * Get match criteria for bcmFieldQualifyVpn 8442 * qualifier from the field entry. 8443 */ 8444 extern int bcm_field_qualify_Vpn_get( 8445 int unit, 8446 bcm_field_entry_t entry, 8447 bcm_vpn_t *data, 8448 bcm_vpn_t *mask); 8449 8450 /* 8451 * Set match criteria for bcmFieldQualifyColor 8452 * qualifier in the field entry. 8453 */ 8454 extern int bcm_field_qualify_Color( 8455 int unit, 8456 bcm_field_entry_t entry, 8457 uint8 color); 8458 8459 /* 8460 * Set match criteria for bcmFieldQualifySrcModPortGport 8461 * qualifier in the field entry. 8462 */ 8463 extern int bcm_field_qualify_SrcModPortGport( 8464 int unit, 8465 bcm_field_entry_t entry, 8466 bcm_gport_t data); 8467 8468 /* 8469 * Set match criteria for bcmFieldQualifySrcModuleGport 8470 * qualifier in the field entry. 8471 */ 8472 extern int bcm_field_qualify_SrcModuleGport( 8473 int unit, 8474 bcm_field_entry_t entry, 8475 bcm_gport_t data); 8476 8477 /* bcm_field_qualify_IpProtocol */ 8478 extern int bcm_field_qualify_IpProtocol( 8479 int unit, 8480 bcm_field_entry_t entry, 8481 uint8 data, 8482 uint8 mask); 8483 8484 /* bcm_field_qualify_IpInfo */ 8485 extern int bcm_field_qualify_IpInfo( 8486 int unit, 8487 bcm_field_entry_t entry, 8488 uint32 data, 8489 uint32 mask); 8490 8491 /* bcm_field_qualify_PacketRes */ 8492 extern int bcm_field_qualify_PacketRes( 8493 int unit, 8494 bcm_field_entry_t entry, 8495 uint32 data, 8496 uint32 mask); 8497 8498 /* bcm_field_qualify_SrcIp */ 8499 extern int bcm_field_qualify_SrcIp( 8500 int unit, 8501 bcm_field_entry_t entry, 8502 bcm_ip_t data, 8503 bcm_ip_t mask); 8504 8505 /* bcm_field_qualify_DstIp */ 8506 extern int bcm_field_qualify_DstIp( 8507 int unit, 8508 bcm_field_entry_t entry, 8509 bcm_ip_t data, 8510 bcm_ip_t mask); 8511 8512 /* bcm_field_qualify_KeyGenVar */ 8513 extern int bcm_field_qualify_KeyGenVar( 8514 int unit, 8515 bcm_field_entry_t entry, 8516 uint32 data, 8517 uint32 mask); 8518 8519 /* bcm_field_qualify_DSCP */ 8520 extern int bcm_field_qualify_DSCP( 8521 int unit, 8522 bcm_field_entry_t entry, 8523 uint8 data, 8524 uint8 mask); 8525 8526 /* bcm_field_qualify_Tos */ 8527 extern int bcm_field_qualify_Tos( 8528 int unit, 8529 bcm_field_entry_t entry, 8530 uint8 data, 8531 uint8 mask); 8532 8533 /* bcm_field_qualify_IpFlags */ 8534 extern int bcm_field_qualify_IpFlags( 8535 int unit, 8536 bcm_field_entry_t entry, 8537 uint8 data, 8538 uint8 mask); 8539 8540 /* bcm_field_qualify_TcpControl */ 8541 extern int bcm_field_qualify_TcpControl( 8542 int unit, 8543 bcm_field_entry_t entry, 8544 uint8 data, 8545 uint8 mask); 8546 8547 /* bcm_field_qualify_TcpSequenceZero */ 8548 extern int bcm_field_qualify_TcpSequenceZero( 8549 int unit, 8550 bcm_field_entry_t entry, 8551 uint32 flag); 8552 8553 /* bcm_field_qualify_TcpHeaderSize */ 8554 extern int bcm_field_qualify_TcpHeaderSize( 8555 int unit, 8556 bcm_field_entry_t entry, 8557 uint8 data, 8558 uint8 mask); 8559 8560 /* bcm_field_qualify_Ttl */ 8561 extern int bcm_field_qualify_Ttl( 8562 int unit, 8563 bcm_field_entry_t entry, 8564 uint8 data, 8565 uint8 mask); 8566 8567 /* bcm_field_qualify_RangeCheck */ 8568 extern int bcm_field_qualify_RangeCheck( 8569 int unit, 8570 bcm_field_entry_t entry, 8571 bcm_field_range_t range, 8572 int invert); 8573 8574 /* bcm_field_qualify_SrcIp6 */ 8575 extern int bcm_field_qualify_SrcIp6( 8576 int unit, 8577 bcm_field_entry_t entry, 8578 bcm_ip6_t data, 8579 bcm_ip6_t mask); 8580 8581 /* bcm_field_qualify_DstIp6 */ 8582 extern int bcm_field_qualify_DstIp6( 8583 int unit, 8584 bcm_field_entry_t entry, 8585 bcm_ip6_t data, 8586 bcm_ip6_t mask); 8587 8588 /* bcm_field_qualify_SrcIp6High */ 8589 extern int bcm_field_qualify_SrcIp6High( 8590 int unit, 8591 bcm_field_entry_t entry, 8592 bcm_ip6_t data, 8593 bcm_ip6_t mask); 8594 8595 /* bcm_field_qualify_DstIp6High */ 8596 extern int bcm_field_qualify_DstIp6High( 8597 int unit, 8598 bcm_field_entry_t entry, 8599 bcm_ip6_t data, 8600 bcm_ip6_t mask); 8601 8602 /* bcm_field_qualify_DstIp6Low */ 8603 extern int bcm_field_qualify_DstIp6Low( 8604 int unit, 8605 bcm_field_entry_t entry, 8606 bcm_ip6_t data, 8607 bcm_ip6_t mask); 8608 8609 /* bcm_field_qualify_SrcIp6Low */ 8610 extern int bcm_field_qualify_SrcIp6Low( 8611 int unit, 8612 bcm_field_entry_t entry, 8613 bcm_ip6_t data, 8614 bcm_ip6_t mask); 8615 8616 /* bcm_field_qualify_Ip6NextHeader */ 8617 extern int bcm_field_qualify_Ip6NextHeader( 8618 int unit, 8619 bcm_field_entry_t entry, 8620 uint8 data, 8621 uint8 mask); 8622 8623 /* bcm_field_qualify_Ip6TrafficClass */ 8624 extern int bcm_field_qualify_Ip6TrafficClass( 8625 int unit, 8626 bcm_field_entry_t entry, 8627 uint8 data, 8628 uint8 mask); 8629 8630 /* bcm_field_qualify_InnerIp6FlowLabel */ 8631 extern int bcm_field_qualify_InnerIp6FlowLabel( 8632 int unit, 8633 bcm_field_entry_t entry, 8634 uint32 data, 8635 uint32 mask); 8636 8637 /* bcm_field_qualify_Ip6FlowLabel */ 8638 extern int bcm_field_qualify_Ip6FlowLabel( 8639 int unit, 8640 bcm_field_entry_t entry, 8641 uint32 data, 8642 uint32 mask); 8643 8644 /* bcm_field_qualify_Ip6HopLimit */ 8645 extern int bcm_field_qualify_Ip6HopLimit( 8646 int unit, 8647 bcm_field_entry_t entry, 8648 uint8 data, 8649 uint8 mask); 8650 8651 /* bcm_field_qualify_SrcMac */ 8652 extern int bcm_field_qualify_SrcMac( 8653 int unit, 8654 bcm_field_entry_t entry, 8655 bcm_mac_t data, 8656 bcm_mac_t mask); 8657 8658 /* bcm_field_qualify_DstMac */ 8659 extern int bcm_field_qualify_DstMac( 8660 int unit, 8661 bcm_field_entry_t entry, 8662 bcm_mac_t data, 8663 bcm_mac_t mask); 8664 8665 /* bcm_field_qualify_InnerIpType */ 8666 extern int bcm_field_qualify_InnerIpType( 8667 int unit, 8668 bcm_field_entry_t entry, 8669 bcm_field_IpType_t type); 8670 8671 /* bcm_field_qualify_ForwardingType */ 8672 extern int bcm_field_qualify_ForwardingType( 8673 int unit, 8674 bcm_field_entry_t entry, 8675 bcm_field_ForwardingType_t type); 8676 8677 /* bcm_field_qualify_AppType */ 8678 extern int bcm_field_qualify_AppType( 8679 int unit, 8680 bcm_field_entry_t entry, 8681 bcm_field_AppType_t type); 8682 8683 /* bcm_field_qualify_IpType */ 8684 extern int bcm_field_qualify_IpType( 8685 int unit, 8686 bcm_field_entry_t entry, 8687 bcm_field_IpType_t type); 8688 8689 /* bcm_field_qualify_L2Format */ 8690 extern int bcm_field_qualify_L2Format( 8691 int unit, 8692 bcm_field_entry_t entry, 8693 bcm_field_L2Format_t type); 8694 8695 /* bcm_field_qualify_VlanFormat */ 8696 extern int bcm_field_qualify_VlanFormat( 8697 int unit, 8698 bcm_field_entry_t entry, 8699 uint8 data, 8700 uint8 mask); 8701 8702 /* bcm_field_qualify_MHOpcode */ 8703 extern int bcm_field_qualify_MHOpcode( 8704 int unit, 8705 bcm_field_entry_t entry, 8706 uint8 data, 8707 uint8 mask); 8708 8709 /* bcm_field_qualify_Decap */ 8710 extern int bcm_field_qualify_Decap( 8711 int unit, 8712 bcm_field_entry_t entry, 8713 bcm_field_decap_t decap); 8714 8715 /* Qualify on HiGig packets. */ 8716 extern int bcm_field_qualify_HiGig( 8717 int unit, 8718 bcm_field_entry_t entry, 8719 uint8 data, 8720 uint8 mask); 8721 8722 /* Qualify on HiGig destination packets. */ 8723 extern int bcm_field_qualify_DstHiGig( 8724 int unit, 8725 bcm_field_entry_t entry, 8726 uint8 data, 8727 uint8 mask); 8728 8729 /* Qualify on HiGig lookup packets. */ 8730 extern int bcm_field_qualify_HiGigProxy( 8731 int unit, 8732 bcm_field_entry_t entry, 8733 uint8 data, 8734 uint8 mask); 8735 8736 /* bcm_field_qualify_InterfaceClassPort */ 8737 extern int bcm_field_qualify_InterfaceClassPort( 8738 int unit, 8739 bcm_field_entry_t entry, 8740 uint32 data, 8741 uint32 mask); 8742 8743 /* bcm_field_qualify_InterfaceClassL2 */ 8744 extern int bcm_field_qualify_InterfaceClassL2( 8745 int unit, 8746 bcm_field_entry_t entry, 8747 uint32 data, 8748 uint32 mask); 8749 8750 /* bcm_field_qualify_InterfaceClassL3 */ 8751 extern int bcm_field_qualify_InterfaceClassL3( 8752 int unit, 8753 bcm_field_entry_t entry, 8754 uint32 data, 8755 uint32 mask); 8756 8757 /* bcm_field_qualify_SrcClassL2 */ 8758 extern int bcm_field_qualify_SrcClassL2( 8759 int unit, 8760 bcm_field_entry_t entry, 8761 uint32 data, 8762 uint32 mask); 8763 8764 /* bcm_field_qualify_SrcClassL3 */ 8765 extern int bcm_field_qualify_SrcClassL3( 8766 int unit, 8767 bcm_field_entry_t entry, 8768 uint32 data, 8769 uint32 mask); 8770 8771 /* bcm_field_qualify_SrcClassField */ 8772 extern int bcm_field_qualify_SrcClassField( 8773 int unit, 8774 bcm_field_entry_t entry, 8775 uint32 data, 8776 uint32 mask); 8777 8778 /* bcm_field_qualify_DstClassL2 */ 8779 extern int bcm_field_qualify_DstClassL2( 8780 int unit, 8781 bcm_field_entry_t entry, 8782 uint32 data, 8783 uint32 mask); 8784 8785 /* bcm_field_qualify_DstClassL3 */ 8786 extern int bcm_field_qualify_DstClassL3( 8787 int unit, 8788 bcm_field_entry_t entry, 8789 uint32 data, 8790 uint32 mask); 8791 8792 /* bcm_field_qualify_DstClassField */ 8793 extern int bcm_field_qualify_DstClassField( 8794 int unit, 8795 bcm_field_entry_t entry, 8796 uint32 data, 8797 uint32 mask); 8798 8799 /* bcm_field_qualify_DstMultipath */ 8800 extern int bcm_field_qualify_DstMultipath( 8801 int unit, 8802 bcm_field_entry_t entry, 8803 bcm_if_t mpintf); 8804 8805 /* bcm_field_qualify_DstMultipath_get */ 8806 extern int bcm_field_qualify_DstMultipath_get( 8807 int unit, 8808 bcm_field_entry_t entry, 8809 bcm_if_t *mpintf); 8810 8811 /* bcm_field_qualify_IpProtocolCommon */ 8812 extern int bcm_field_qualify_IpProtocolCommon( 8813 int unit, 8814 bcm_field_entry_t entry, 8815 bcm_field_IpProtocolCommon_t protocol); 8816 8817 /* bcm_field_qualify_InnerIpProtocolCommon */ 8818 extern int bcm_field_qualify_InnerIpProtocolCommon( 8819 int unit, 8820 bcm_field_entry_t entry, 8821 bcm_field_IpProtocolCommon_t protocol); 8822 8823 /* bcm_field_qualify_Snap */ 8824 extern int bcm_field_qualify_Snap( 8825 int unit, 8826 bcm_field_entry_t entry, 8827 bcm_field_snap_header_t data, 8828 bcm_field_snap_header_t mask); 8829 8830 /* bcm_field_qualify_Llc */ 8831 extern int bcm_field_qualify_Llc( 8832 int unit, 8833 bcm_field_entry_t entry, 8834 bcm_field_llc_header_t data, 8835 bcm_field_llc_header_t mask); 8836 8837 /* bcm_field_qualify_InnerTpid */ 8838 extern int bcm_field_qualify_InnerTpid( 8839 int unit, 8840 bcm_field_entry_t entry, 8841 uint16 tpid); 8842 8843 /* bcm_field_qualify_OuterTpid */ 8844 extern int bcm_field_qualify_OuterTpid( 8845 int unit, 8846 bcm_field_entry_t entry, 8847 uint16 tpid); 8848 8849 /* bcm_field_qualify_L3Routable */ 8850 extern int bcm_field_qualify_L3Routable( 8851 int unit, 8852 bcm_field_entry_t entry, 8853 uint8 data, 8854 uint8 mask); 8855 8856 /* bcm_field_qualify_IpFrag */ 8857 extern int bcm_field_qualify_IpFrag( 8858 int unit, 8859 bcm_field_entry_t entry, 8860 bcm_field_IpFrag_t frag_info); 8861 8862 /* bcm_field_qualify_Vrf */ 8863 extern int bcm_field_qualify_Vrf( 8864 int unit, 8865 bcm_field_entry_t entry, 8866 uint32 data, 8867 uint32 mask); 8868 8869 /* bcm_field_qualify_L3Ingress */ 8870 extern int bcm_field_qualify_L3Ingress( 8871 int unit, 8872 bcm_field_entry_t entry, 8873 uint32 intf_id, 8874 uint32 mask); 8875 8876 /* bcm_field_qualify_ExtensionHeaderType */ 8877 extern int bcm_field_qualify_ExtensionHeaderType( 8878 int unit, 8879 bcm_field_entry_t entry, 8880 uint8 data, 8881 uint8 mask); 8882 8883 /* bcm_field_qualify_ExtensionHeaderSubCode */ 8884 extern int bcm_field_qualify_ExtensionHeaderSubCode( 8885 int unit, 8886 bcm_field_entry_t entry, 8887 uint8 data, 8888 uint8 mask); 8889 8890 /* bcm_field_qualify_ExtensionHeader2Type */ 8891 extern int bcm_field_qualify_ExtensionHeader2Type( 8892 int unit, 8893 bcm_field_entry_t entry, 8894 uint8 data, 8895 uint8 mask); 8896 8897 /* bcm_field_qualify_L4Ports */ 8898 extern int bcm_field_qualify_L4Ports( 8899 int unit, 8900 bcm_field_entry_t entry, 8901 uint8 data, 8902 uint8 mask); 8903 8904 /* bcm_field_qualify_MirrorCopy */ 8905 extern int bcm_field_qualify_MirrorCopy( 8906 int unit, 8907 bcm_field_entry_t entry, 8908 uint8 data, 8909 uint8 mask); 8910 8911 /* bcm_field_qualify_TunnelTerminated */ 8912 extern int bcm_field_qualify_TunnelTerminated( 8913 int unit, 8914 bcm_field_entry_t entry, 8915 uint8 data, 8916 uint8 mask); 8917 8918 /* bcm_field_qualify_MplsTerminated */ 8919 extern int bcm_field_qualify_MplsTerminated( 8920 int unit, 8921 bcm_field_entry_t entry, 8922 uint8 data, 8923 uint8 mask); 8924 8925 /* bcm_field_qualify_InnerSrcIp */ 8926 extern int bcm_field_qualify_InnerSrcIp( 8927 int unit, 8928 bcm_field_entry_t entry, 8929 bcm_ip_t data, 8930 bcm_ip_t mask); 8931 8932 /* bcm_field_qualify_InnerDstIp */ 8933 extern int bcm_field_qualify_InnerDstIp( 8934 int unit, 8935 bcm_field_entry_t entry, 8936 bcm_ip_t data, 8937 bcm_ip_t mask); 8938 8939 /* bcm_field_qualify_InnerSrcIp6 */ 8940 extern int bcm_field_qualify_InnerSrcIp6( 8941 int unit, 8942 bcm_field_entry_t entry, 8943 bcm_ip6_t data, 8944 bcm_ip6_t mask); 8945 8946 /* bcm_field_qualify_InnerDstIp6 */ 8947 extern int bcm_field_qualify_InnerDstIp6( 8948 int unit, 8949 bcm_field_entry_t entry, 8950 bcm_ip6_t data, 8951 bcm_ip6_t mask); 8952 8953 /* bcm_field_qualify_InnerSrcIp6High */ 8954 extern int bcm_field_qualify_InnerSrcIp6High( 8955 int unit, 8956 bcm_field_entry_t entry, 8957 bcm_ip6_t data, 8958 bcm_ip6_t mask); 8959 8960 /* bcm_field_qualify_InnerDstIp6High */ 8961 extern int bcm_field_qualify_InnerDstIp6High( 8962 int unit, 8963 bcm_field_entry_t entry, 8964 bcm_ip6_t data, 8965 bcm_ip6_t mask); 8966 8967 /* bcm_field_qualify_InnerIp6HopLimit */ 8968 extern int bcm_field_qualify_InnerIp6HopLimit( 8969 int unit, 8970 bcm_field_entry_t entry, 8971 uint8 data, 8972 uint8 mask); 8973 8974 /* bcm_field_qualify_InnerTtl */ 8975 extern int bcm_field_qualify_InnerTtl( 8976 int unit, 8977 bcm_field_entry_t entry, 8978 uint8 data, 8979 uint8 mask); 8980 8981 /* bcm_field_qualify_InnerTos */ 8982 extern int bcm_field_qualify_InnerTos( 8983 int unit, 8984 bcm_field_entry_t entry, 8985 uint8 data, 8986 uint8 mask); 8987 8988 /* bcm_field_qualify_InnerDSCP */ 8989 extern int bcm_field_qualify_InnerDSCP( 8990 int unit, 8991 bcm_field_entry_t entry, 8992 uint8 data, 8993 uint8 mask); 8994 8995 /* bcm_field_qualify_InnerIpProtocol */ 8996 extern int bcm_field_qualify_InnerIpProtocol( 8997 int unit, 8998 bcm_field_entry_t entry, 8999 uint8 data, 9000 uint8 mask); 9001 9002 /* bcm_field_qualify_InnerIp6NextHeader */ 9003 extern int bcm_field_qualify_InnerIp6NextHeader( 9004 int unit, 9005 bcm_field_entry_t entry, 9006 uint8 data, 9007 uint8 mask); 9008 9009 /* bcm_field_qualify_InnerIpFrag */ 9010 extern int bcm_field_qualify_InnerIpFrag( 9011 int unit, 9012 bcm_field_entry_t entry, 9013 bcm_field_IpFrag_t frag_info); 9014 9015 /* bcm_field_qualify_DosAttack */ 9016 extern int bcm_field_qualify_DosAttack( 9017 int unit, 9018 bcm_field_entry_t entry, 9019 uint8 data, 9020 uint8 mask); 9021 9022 /* bcm_field_qualify_IpmcStarGroupHit */ 9023 extern int bcm_field_qualify_IpmcStarGroupHit( 9024 int unit, 9025 bcm_field_entry_t entry, 9026 uint8 data, 9027 uint8 mask); 9028 9029 /* bcm_field_qualify_MyStationHit */ 9030 extern int bcm_field_qualify_MyStationHit( 9031 int unit, 9032 bcm_field_entry_t entry, 9033 uint8 data, 9034 uint8 mask); 9035 9036 /* Match on first eight bytes of L2 payload */ 9037 extern int bcm_field_qualify_L2PayloadFirstEightBytes( 9038 int unit, 9039 bcm_field_entry_t entry, 9040 uint32 data1, 9041 uint32 data2, 9042 uint32 mask1, 9043 uint32 mask2); 9044 9045 /* bcm_field_qualify_L3DestRouteHit */ 9046 extern int bcm_field_qualify_L3DestRouteHit( 9047 int unit, 9048 bcm_field_entry_t entry, 9049 uint8 data, 9050 uint8 mask); 9051 9052 /* bcm_field_qualify_L3DestHostHit */ 9053 extern int bcm_field_qualify_L3DestHostHit( 9054 int unit, 9055 bcm_field_entry_t entry, 9056 uint8 data, 9057 uint8 mask); 9058 9059 /* bcm_field_qualify_L3SrcHostHit */ 9060 extern int bcm_field_qualify_L3SrcHostHit( 9061 int unit, 9062 bcm_field_entry_t entry, 9063 uint8 data, 9064 uint8 mask); 9065 9066 /* bcm_field_qualify_L2CacheHit */ 9067 extern int bcm_field_qualify_L2CacheHit( 9068 int unit, 9069 bcm_field_entry_t entry, 9070 uint8 data, 9071 uint8 mask); 9072 9073 /* bcm_field_qualify_L2StationMove */ 9074 extern int bcm_field_qualify_L2StationMove( 9075 int unit, 9076 bcm_field_entry_t entry, 9077 uint8 data, 9078 uint8 mask); 9079 9080 /* bcm_field_qualify_L2DestHit */ 9081 extern int bcm_field_qualify_L2DestHit( 9082 int unit, 9083 bcm_field_entry_t entry, 9084 uint8 data, 9085 uint8 mask); 9086 9087 /* bcm_field_qualify_L2SrcStatic */ 9088 extern int bcm_field_qualify_L2SrcStatic( 9089 int unit, 9090 bcm_field_entry_t entry, 9091 uint8 data, 9092 uint8 mask); 9093 9094 /* bcm_field_qualify_L2SrcHit */ 9095 extern int bcm_field_qualify_L2SrcHit( 9096 int unit, 9097 bcm_field_entry_t entry, 9098 uint8 data, 9099 uint8 mask); 9100 9101 /* bcm_field_qualify_IngressStpState */ 9102 extern int bcm_field_qualify_IngressStpState( 9103 int unit, 9104 bcm_field_entry_t entry, 9105 uint8 data, 9106 uint8 mask); 9107 9108 /* bcm_field_qualify_IngressVPortBridgeDisable */ 9109 extern int bcm_field_qualify_IngressVPortBridgeDisable( 9110 int unit, 9111 bcm_field_entry_t entry, 9112 uint8 data, 9113 uint8 mask); 9114 9115 /* 9116 * Get match criteria for bcmFieldQualifyIngressVPortBridgeDisable 9117 * qualifier from the field entry. 9118 */ 9119 extern int bcm_field_qualify_IngressVPortBridgeDisable_get( 9120 int unit, 9121 bcm_field_entry_t entry, 9122 uint8 *data, 9123 uint8 *mask); 9124 9125 /* bcm_field_qualify_ForwardingVlanValid */ 9126 extern int bcm_field_qualify_ForwardingVlanValid( 9127 int unit, 9128 bcm_field_entry_t entry, 9129 uint8 data, 9130 uint8 mask); 9131 9132 /* bcm_field_qualify_SrcVirtualPortValid */ 9133 extern int bcm_field_qualify_SrcVirtualPortValid( 9134 int unit, 9135 bcm_field_entry_t entry, 9136 uint8 data, 9137 uint8 mask); 9138 9139 /* 9140 * Set match criteria for bcmFieldQualifyDstL3EgressNextHops 9141 * qualifier in the field entry. 9142 */ 9143 extern int bcm_field_qualify_DstL3EgressNextHops( 9144 int unit, 9145 bcm_field_entry_t entry, 9146 uint32 data, 9147 uint32 mask); 9148 9149 /* bcm_field_qualify_VlanTranslationHit */ 9150 extern int bcm_field_qualify_VlanTranslationHit( 9151 int unit, 9152 bcm_field_entry_t entry, 9153 uint8 data, 9154 uint8 mask); 9155 9156 /* bcm_field_qualify_IcmpTypeCode */ 9157 extern int bcm_field_qualify_IcmpTypeCode( 9158 int unit, 9159 bcm_field_entry_t entry, 9160 uint16 data, 9161 uint16 mask); 9162 9163 /* 9164 * Set match criteria for bcmFieldQualifyTranslatedVlanFormat 9165 * qualifier in the field entry. 9166 */ 9167 extern int bcm_field_qualify_TranslatedVlanFormat( 9168 int unit, 9169 bcm_field_entry_t entry, 9170 uint8 data, 9171 uint8 mask); 9172 9173 /* 9174 * Add Fibre Channel outer header type field qualification to a field 9175 * entry. 9176 */ 9177 extern int bcm_field_qualify_FibreChanOuter( 9178 int unit, 9179 bcm_field_entry_t entry, 9180 bcm_field_FibreChan_t fibre_chan_type); 9181 9182 /* 9183 * Add Fibre Channel inner header type field qualification to a field 9184 * entry. 9185 */ 9186 extern int bcm_field_qualify_FibreChanInner( 9187 int unit, 9188 bcm_field_entry_t entry, 9189 bcm_field_FibreChan_t fibre_chan_type); 9190 9191 /* bcm_field_qualify_VnTag */ 9192 extern int bcm_field_qualify_VnTag( 9193 int unit, 9194 bcm_field_entry_t entry, 9195 uint32 data, 9196 uint32 mask); 9197 9198 /* bcm_field_qualify_SubportPktTag */ 9199 extern int bcm_field_qualify_SubportPktTag( 9200 int unit, 9201 bcm_field_entry_t entry, 9202 uint16 data, 9203 uint16 mask); 9204 9205 /* bcm_field_qualify_CnTag */ 9206 extern int bcm_field_qualify_CnTag( 9207 int unit, 9208 bcm_field_entry_t entry, 9209 uint32 data, 9210 uint32 mask); 9211 9212 /* bcm_field_qualify_FabricQueueTag */ 9213 extern int bcm_field_qualify_FabricQueueTag( 9214 int unit, 9215 bcm_field_entry_t entry, 9216 uint32 data, 9217 uint32 mask); 9218 9219 /* 9220 * Get match criteria for bcmFieldQualifyIntPriority 9221 * qualifier from the field entry. 9222 */ 9223 extern int bcm_field_qualify_IntPriority_get( 9224 int unit, 9225 bcm_field_entry_t entry, 9226 uint8 *data, 9227 uint8 *mask); 9228 9229 /* 9230 * Get match criteria for bcmFieldQualifyColor 9231 * qualifier from the field entry. 9232 */ 9233 extern int bcm_field_qualify_Color_get( 9234 int unit, 9235 bcm_field_entry_t entry, 9236 uint8 *color); 9237 9238 /* 9239 * Get match criteria for bcmFieldQualifySrcModPortGport 9240 * qualifier from the field entry. 9241 */ 9242 extern int bcm_field_qualify_SrcModPortGport_get( 9243 int unit, 9244 bcm_field_entry_t entry, 9245 bcm_gport_t *data); 9246 9247 /* 9248 * Get match criteria for bcmFieldQualifySrcModuleGport 9249 * qualifier from the field entry. 9250 */ 9251 extern int bcm_field_qualify_SrcModuleGport_get( 9252 int unit, 9253 bcm_field_entry_t entry, 9254 bcm_gport_t *data); 9255 9256 /* Get loopback type field qualification from a field entry. */ 9257 extern int bcm_field_qualify_LoopbackType_get( 9258 int unit, 9259 bcm_field_entry_t entry, 9260 bcm_field_LoopbackType_t *loopback_type); 9261 9262 /* Get tunnel type field qualification from a field entry. */ 9263 extern int bcm_field_qualify_TunnelType_get( 9264 int unit, 9265 bcm_field_entry_t entry, 9266 bcm_field_TunnelType_t *tunnel_type); 9267 9268 /* 9269 * Get match criteria for bcmFieldQualifyDstL3Egress 9270 * qualifier from the field entry. 9271 */ 9272 extern int bcm_field_qualify_DstL3Egress_get( 9273 int unit, 9274 bcm_field_entry_t entry, 9275 bcm_if_t *if_id); 9276 9277 /* 9278 * Get match criteria for bcmFieldQualifyDstMulticastGroup 9279 * qualifier from the field entry. 9280 */ 9281 extern int bcm_field_qualify_DstMulticastGroup_get( 9282 int unit, 9283 bcm_field_entry_t entry, 9284 bcm_multicast_t *group); 9285 9286 /* 9287 * Get match criteria for bcmFieldQualifySrcMplsGport 9288 * qualifier from the field entry. 9289 */ 9290 extern int bcm_field_qualify_SrcMplsGport_get( 9291 int unit, 9292 bcm_field_entry_t entry, 9293 bcm_gport_t *mpls_port_id); 9294 9295 /* 9296 * Get match criteria for bcmFieldQualifyDstMplsGport 9297 * qualifier from the field entry. 9298 */ 9299 extern int bcm_field_qualify_DstMplsGport_get( 9300 int unit, 9301 bcm_field_entry_t entry, 9302 bcm_gport_t *mpls_port_id); 9303 9304 /* 9305 * Get match criteria for bcmFieldQualifySrcMimGport 9306 * qualifier from the field entry. 9307 */ 9308 extern int bcm_field_qualify_SrcMimGport_get( 9309 int unit, 9310 bcm_field_entry_t entry, 9311 bcm_gport_t *mim_port_id); 9312 9313 /* 9314 * Get match criteria for bcmFieldQualifyDstMimGport 9315 * qualifier from the field entry. 9316 */ 9317 extern int bcm_field_qualify_DstMimGport_get( 9318 int unit, 9319 bcm_field_entry_t entry, 9320 bcm_gport_t *mim_port_id); 9321 9322 /* 9323 * Get match criteria for bcmFieldQualifySrcWlanGport 9324 * qualifier from the field entry. 9325 */ 9326 extern int bcm_field_qualify_SrcWlanGport_get( 9327 int unit, 9328 bcm_field_entry_t entry, 9329 bcm_gport_t *wlan_port_id); 9330 9331 /* 9332 * Get match criteria for bcmFieldQualifyDstWlanGport 9333 * qualifier from the field entry. 9334 */ 9335 extern int bcm_field_qualify_DstWlanGport_get( 9336 int unit, 9337 bcm_field_entry_t entry, 9338 bcm_gport_t *wlan_port_id); 9339 9340 /* 9341 * Get match criteria for bcmFieldQualifySrcVxlanGport 9342 * qualifier from the field entry. 9343 */ 9344 extern int bcm_field_qualify_SrcVxlanGport_get( 9345 int unit, 9346 bcm_field_entry_t entry, 9347 bcm_gport_t *vxlan_port_id); 9348 9349 /* 9350 * Get match criteria for bcmFieldQualifyDstVxlanGport 9351 * qualifier from the field entry. 9352 */ 9353 extern int bcm_field_qualify_DstVxlanGport_get( 9354 int unit, 9355 bcm_field_entry_t entry, 9356 bcm_gport_t *vxlan_port_id); 9357 9358 /* Get loopback field qualification from a field entry. */ 9359 extern int bcm_field_qualify_Loopback_get( 9360 int unit, 9361 bcm_field_entry_t entry, 9362 uint8 *data, 9363 uint8 *mask); 9364 9365 /* 9366 * Get match criteria for bcmFieldQualifyInPort 9367 * qualifier from the field entry. 9368 */ 9369 extern int bcm_field_qualify_InPort_get( 9370 int unit, 9371 bcm_field_entry_t entry, 9372 bcm_port_t *data, 9373 bcm_port_t *mask); 9374 9375 /* 9376 * Get match criteria for bcmFieldQualifyOutPort 9377 * qualifier from the field entry. 9378 */ 9379 extern int bcm_field_qualify_OutPort_get( 9380 int unit, 9381 bcm_field_entry_t entry, 9382 bcm_port_t *data, 9383 bcm_port_t *mask); 9384 9385 /* 9386 * Get match criteria for bcmFieldQualifyInPorts 9387 * qualifier from the field entry. 9388 */ 9389 extern int bcm_field_qualify_InPorts_get( 9390 int unit, 9391 bcm_field_entry_t entry, 9392 bcm_pbmp_t *data, 9393 bcm_pbmp_t *mask); 9394 9395 /* 9396 * Get match criteria for bcmFieldQualifyOutPorts 9397 * qualifier from the field entry. 9398 */ 9399 extern int bcm_field_qualify_OutPorts_get( 9400 int unit, 9401 bcm_field_entry_t entry, 9402 bcm_pbmp_t *data, 9403 bcm_pbmp_t *mask); 9404 9405 /* 9406 * Get match criteria for bcmFieldQualifyDrop 9407 * qualifier from the field entry. 9408 */ 9409 extern int bcm_field_qualify_Drop_get( 9410 int unit, 9411 bcm_field_entry_t entry, 9412 uint8 *data, 9413 uint8 *mask); 9414 9415 /* 9416 * Get match criteria for bcmFieldQualifySrcPort 9417 * qualifier from the field entry. 9418 */ 9419 extern int bcm_field_qualify_SrcPort_get( 9420 int unit, 9421 bcm_field_entry_t entry, 9422 bcm_module_t *data_modid, 9423 bcm_module_t *mask_modid, 9424 bcm_port_t *data_port, 9425 bcm_port_t *mask_port); 9426 9427 /* 9428 * Get match criteria for bcmFieldQualifySrcTrunk 9429 * qualifier from the field entry. 9430 */ 9431 extern int bcm_field_qualify_SrcTrunk_get( 9432 int unit, 9433 bcm_field_entry_t entry, 9434 bcm_trunk_t *data, 9435 bcm_trunk_t *mask); 9436 9437 /* 9438 * Get match criteria for bcmFieldQualifySrcTrunkMemberGport 9439 * qualifier from the field entry. 9440 */ 9441 extern int bcm_field_qualify_SrcTrunkMemberGport_get( 9442 int unit, 9443 bcm_field_entry_t entry, 9444 bcm_gport_t *data); 9445 9446 /* 9447 * Get match criteria for bcmFieldQualifySrcTMPort 9448 * qualifier from the field entry. 9449 */ 9450 extern int bcm_field_qualify_SrcTMPort_get( 9451 int unit, 9452 bcm_field_entry_t entry, 9453 bcm_port_t *data_port, 9454 bcm_port_t *mask_port); 9455 9456 /* 9457 * Get match criteria for bcmFieldQualifyDstPort 9458 * qualifier from the field entry. 9459 */ 9460 extern int bcm_field_qualify_DstPort_get( 9461 int unit, 9462 bcm_field_entry_t entry, 9463 bcm_module_t *data_modid, 9464 bcm_module_t *mask_modid, 9465 bcm_port_t *data_port, 9466 bcm_port_t *mask_port); 9467 9468 /* 9469 * Get match criteria for bcmFieldQualifyDstTrunk 9470 * qualifier from the field entry. 9471 */ 9472 extern int bcm_field_qualify_DstTrunk_get( 9473 int unit, 9474 bcm_field_entry_t entry, 9475 bcm_trunk_t *data, 9476 bcm_trunk_t *mask); 9477 9478 /* 9479 * Get match criteria for bcmFieldQualifyInnerL4SrcPort 9480 * qualifier from the field entry. 9481 */ 9482 extern int bcm_field_qualify_InnerL4SrcPort_get( 9483 int unit, 9484 bcm_field_entry_t entry, 9485 bcm_l4_port_t *data, 9486 bcm_l4_port_t *mask); 9487 9488 /* 9489 * Get match criteria for bcmFieldQualifyInnerL4DstPort 9490 * qualifier from the field entry. 9491 */ 9492 extern int bcm_field_qualify_InnerL4DstPort_get( 9493 int unit, 9494 bcm_field_entry_t entry, 9495 bcm_l4_port_t *data, 9496 bcm_l4_port_t *mask); 9497 9498 /* 9499 * Get match criteria for bcmFieldQualifyL4SrcPort 9500 * qualifier from the field entry. 9501 */ 9502 extern int bcm_field_qualify_L4SrcPort_get( 9503 int unit, 9504 bcm_field_entry_t entry, 9505 bcm_l4_port_t *data, 9506 bcm_l4_port_t *mask); 9507 9508 /* 9509 * Get match criteria for bcmFieldQualifyL4DstPort 9510 * qualifier from the field entry. 9511 */ 9512 extern int bcm_field_qualify_L4DstPort_get( 9513 int unit, 9514 bcm_field_entry_t entry, 9515 bcm_l4_port_t *data, 9516 bcm_l4_port_t *mask); 9517 9518 /* 9519 * Get match criteria for bcmFieldQualifyOuterVlan 9520 * qualifier from the field entry. 9521 */ 9522 extern int bcm_field_qualify_OuterVlan_get( 9523 int unit, 9524 bcm_field_entry_t entry, 9525 bcm_vlan_t *data, 9526 bcm_vlan_t *mask); 9527 9528 /* 9529 * Get match criteria for bcmFieldQualifyOuterVlanId 9530 * qualifier from the field entry. 9531 */ 9532 extern int bcm_field_qualify_OuterVlanId_get( 9533 int unit, 9534 bcm_field_entry_t entry, 9535 bcm_vlan_t *data, 9536 bcm_vlan_t *mask); 9537 9538 /* 9539 * Get match criteria for bcmFieldQualifyOuterVlanPri 9540 * qualifier from the field entry. 9541 */ 9542 extern int bcm_field_qualify_OuterVlanPri_get( 9543 int unit, 9544 bcm_field_entry_t entry, 9545 uint8 *data, 9546 uint8 *mask); 9547 9548 /* 9549 * Get match criteria for bcmFieldQualifyOuterVlanCfi 9550 * qualifier from the field entry. 9551 */ 9552 extern int bcm_field_qualify_OuterVlanCfi_get( 9553 int unit, 9554 bcm_field_entry_t entry, 9555 uint8 *data, 9556 uint8 *mask); 9557 9558 /* 9559 * Get match criteria for bcmFieldQualifyOuterVlanPriCfi 9560 * qualifier from the field entry. 9561 */ 9562 extern int bcm_field_qualify_OuterVlanPriCfi_get( 9563 int unit, 9564 bcm_field_entry_t entry, 9565 uint8 *data, 9566 uint8 *mask); 9567 9568 /* 9569 * Get match criteria for bcmFieldQualifyInnerVlan 9570 * qualifier from the field entry. 9571 */ 9572 extern int bcm_field_qualify_InnerVlan_get( 9573 int unit, 9574 bcm_field_entry_t entry, 9575 bcm_vlan_t *data, 9576 bcm_vlan_t *mask); 9577 9578 /* 9579 * Get match criteria for bcmFieldQualifyInnerVlanId 9580 * qualifier from the field entry. 9581 */ 9582 extern int bcm_field_qualify_InnerVlanId_get( 9583 int unit, 9584 bcm_field_entry_t entry, 9585 bcm_vlan_t *data, 9586 bcm_vlan_t *mask); 9587 9588 /* 9589 * Get match criteria for bcmFieldQualifyInnerVlanPri 9590 * qualifier from the field entry. 9591 */ 9592 extern int bcm_field_qualify_InnerVlanPri_get( 9593 int unit, 9594 bcm_field_entry_t entry, 9595 uint8 *data, 9596 uint8 *mask); 9597 9598 /* 9599 * Get match criteria for bcmFieldQualifyInnerVlanCfi_get 9600 * qualifier from the field entry. 9601 */ 9602 extern int bcm_field_qualify_InnerVlanCfi_get( 9603 int unit, 9604 bcm_field_entry_t entry, 9605 uint8 *data, 9606 uint8 *mask); 9607 9608 /* 9609 * Get match criteria for bcmFieldQualifyEtherType 9610 * qualifier from the field entry. 9611 */ 9612 extern int bcm_field_qualify_EtherType_get( 9613 int unit, 9614 bcm_field_entry_t entry, 9615 uint16 *data, 9616 uint16 *mask); 9617 9618 /* 9619 * Get match criteria for bcmFieldQualifyIpProtocol 9620 * qualifier from the field entry. 9621 */ 9622 extern int bcm_field_qualify_IpProtocol_get( 9623 int unit, 9624 bcm_field_entry_t entry, 9625 uint8 *data, 9626 uint8 *mask); 9627 9628 /* 9629 * Get match criteria for bcmFieldQualifyIpInfo 9630 * qualifier from the field entry. 9631 */ 9632 extern int bcm_field_qualify_IpInfo_get( 9633 int unit, 9634 bcm_field_entry_t entry, 9635 uint32 *data, 9636 uint32 *mask); 9637 9638 /* 9639 * Get match criteria for bcmFieldQualifyPacketRes 9640 * qualifier from the field entry. 9641 */ 9642 extern int bcm_field_qualify_PacketRes_get( 9643 int unit, 9644 bcm_field_entry_t entry, 9645 uint32 *data, 9646 uint32 *mask); 9647 9648 /* 9649 * Get match criteria for bcmFieldQualifySrcIp 9650 * qualifier from the field entry. 9651 */ 9652 extern int bcm_field_qualify_SrcIp_get( 9653 int unit, 9654 bcm_field_entry_t entry, 9655 bcm_ip_t *data, 9656 bcm_ip_t *mask); 9657 9658 /* 9659 * Get match criteria for bcmFieldQualifyDstIp 9660 * qualifier from the field entry. 9661 */ 9662 extern int bcm_field_qualify_DstIp_get( 9663 int unit, 9664 bcm_field_entry_t entry, 9665 bcm_ip_t *data, 9666 bcm_ip_t *mask); 9667 9668 /* 9669 * Get match criteria for bcmFieldQualifyTos 9670 * qualifier from the field entry. 9671 */ 9672 extern int bcm_field_qualify_Tos_get( 9673 int unit, 9674 bcm_field_entry_t entry, 9675 uint8 *data, 9676 uint8 *mask); 9677 9678 /* 9679 * Get match criteria for bcmFieldQualifyDSCP 9680 * qualifier from the field entry. 9681 */ 9682 extern int bcm_field_qualify_DSCP_get( 9683 int unit, 9684 bcm_field_entry_t entry, 9685 uint8 *data, 9686 uint8 *mask); 9687 9688 /* 9689 * Get match criteria for bcmFieldQualifyIpFlags 9690 * qualifier from the field entry. 9691 */ 9692 extern int bcm_field_qualify_IpFlags_get( 9693 int unit, 9694 bcm_field_entry_t entry, 9695 uint8 *data, 9696 uint8 *mask); 9697 9698 /* 9699 * Get match criteria for bcmFieldQualifyTcpControl 9700 * qualifier from the field entry. 9701 */ 9702 extern int bcm_field_qualify_TcpControl_get( 9703 int unit, 9704 bcm_field_entry_t entry, 9705 uint8 *data, 9706 uint8 *mask); 9707 9708 /* 9709 * Get match criteria for bcmFieldQualifyTcpSequenceZero 9710 * qualifier from the field entry. 9711 */ 9712 extern int bcm_field_qualify_TcpSequenceZero_get( 9713 int unit, 9714 bcm_field_entry_t entry, 9715 uint32 *flag); 9716 9717 /* 9718 * Get match criteria for bcmFieldQualifyTcpHeaderSize 9719 * qualifier from the field entry. 9720 */ 9721 extern int bcm_field_qualify_TcpHeaderSize_get( 9722 int unit, 9723 bcm_field_entry_t entry, 9724 uint8 *data, 9725 uint8 *mask); 9726 9727 /* 9728 * Get match criteria for bcmFieldQualifyTtl 9729 * qualifier from the field entry. 9730 */ 9731 extern int bcm_field_qualify_Ttl_get( 9732 int unit, 9733 bcm_field_entry_t entry, 9734 uint8 *data, 9735 uint8 *mask); 9736 9737 /* 9738 * Get match criteria for bcmFieldQualifyRangeCheck 9739 * qualifier from the field entry. 9740 */ 9741 extern int bcm_field_qualify_RangeCheck_get( 9742 int unit, 9743 bcm_field_entry_t entry, 9744 int max_count, 9745 bcm_field_range_t *range, 9746 int *invert, 9747 int *count); 9748 9749 /* 9750 * Get match criteria for bcmFieldQualifySrcIp6 9751 * qualifier from the field entry. 9752 */ 9753 extern int bcm_field_qualify_SrcIp6_get( 9754 int unit, 9755 bcm_field_entry_t entry, 9756 bcm_ip6_t *data, 9757 bcm_ip6_t *mask); 9758 9759 /* 9760 * Get match criteria for bcmFieldQualifyDstIp6 9761 * qualifier from the field entry. 9762 */ 9763 extern int bcm_field_qualify_DstIp6_get( 9764 int unit, 9765 bcm_field_entry_t entry, 9766 bcm_ip6_t *data, 9767 bcm_ip6_t *mask); 9768 9769 /* 9770 * Get match criteria for bcmFieldQualifySrcIp6High 9771 * qualifier from the field entry. 9772 */ 9773 extern int bcm_field_qualify_SrcIp6High_get( 9774 int unit, 9775 bcm_field_entry_t entry, 9776 bcm_ip6_t *data, 9777 bcm_ip6_t *mask); 9778 9779 /* 9780 * Get match criteria for bcmFieldQualifyDstIp6High 9781 * qualifier from the field entry. 9782 */ 9783 extern int bcm_field_qualify_DstIp6High_get( 9784 int unit, 9785 bcm_field_entry_t entry, 9786 bcm_ip6_t *data, 9787 bcm_ip6_t *mask); 9788 9789 /* 9790 * Get match criteria for bcmFieldQualifyDstIp6Low 9791 * qualifier from the field entry. 9792 */ 9793 extern int bcm_field_qualify_DstIp6Low_get( 9794 int unit, 9795 bcm_field_entry_t entry, 9796 bcm_ip6_t *data, 9797 bcm_ip6_t *mask); 9798 9799 /* 9800 * Get match criteria for bcmFieldQualifySrcIp6Low 9801 * qualifier from the field entry. 9802 */ 9803 extern int bcm_field_qualify_SrcIp6Low_get( 9804 int unit, 9805 bcm_field_entry_t entry, 9806 bcm_ip6_t *data, 9807 bcm_ip6_t *mask); 9808 9809 /* 9810 * Get match criteria for bcmFieldQualifyIp6NextHeader 9811 * qualifier from the field entry. 9812 */ 9813 extern int bcm_field_qualify_Ip6NextHeader_get( 9814 int unit, 9815 bcm_field_entry_t entry, 9816 uint8 *data, 9817 uint8 *mask); 9818 9819 /* 9820 * Get match criteria for bcmFieldQualifyIp6TrafficClass 9821 * qualifier from the field entry. 9822 */ 9823 extern int bcm_field_qualify_Ip6TrafficClass_get( 9824 int unit, 9825 bcm_field_entry_t entry, 9826 uint8 *data, 9827 uint8 *mask); 9828 9829 /* 9830 * Get match criteria for bcmFieldQualifyInnerIp6FlowLabel 9831 * qualifier from the field entry. 9832 */ 9833 extern int bcm_field_qualify_InnerIp6FlowLabel_get( 9834 int unit, 9835 bcm_field_entry_t entry, 9836 uint32 *data, 9837 uint32 *mask); 9838 9839 /* 9840 * Get match criteria for bcmFieldQualifyIp6FlowLabel 9841 * qualifier from the field entry. 9842 */ 9843 extern int bcm_field_qualify_Ip6FlowLabel_get( 9844 int unit, 9845 bcm_field_entry_t entry, 9846 uint32 *data, 9847 uint32 *mask); 9848 9849 /* 9850 * Get match criteria for bcmFieldQualifyIp6HopLimit 9851 * qualifier from the field entry. 9852 */ 9853 extern int bcm_field_qualify_Ip6HopLimit_get( 9854 int unit, 9855 bcm_field_entry_t entry, 9856 uint8 *data, 9857 uint8 *mask); 9858 9859 /* 9860 * Get match criteria for bcmFieldQualifySrcMac 9861 * qualifier from the field entry. 9862 */ 9863 extern int bcm_field_qualify_SrcMac_get( 9864 int unit, 9865 bcm_field_entry_t entry, 9866 bcm_mac_t *data, 9867 bcm_mac_t *mask); 9868 9869 /* 9870 * Get match criteria for bcmFieldQualifyDstMac 9871 * qualifier from the field entry. 9872 */ 9873 extern int bcm_field_qualify_DstMac_get( 9874 int unit, 9875 bcm_field_entry_t entry, 9876 bcm_mac_t *data, 9877 bcm_mac_t *mask); 9878 9879 /* 9880 * Set match criteria for bcmFieldQualifyForwardHdrSrcMac 9881 * qualifier from the field entry. 9882 */ 9883 extern int bcm_field_qualify_ForwardHdrSrcMac( 9884 int unit, 9885 bcm_field_entry_t entry, 9886 bcm_mac_t data, 9887 bcm_mac_t mask); 9888 9889 /* 9890 * Get match criteria for bcmFieldQualifyForwardHdrSrcMac 9891 * qualifier from the field entry. 9892 */ 9893 extern int bcm_field_qualify_ForwardHdrSrcMac_get( 9894 int unit, 9895 bcm_field_entry_t entry, 9896 bcm_mac_t *data, 9897 bcm_mac_t *mask); 9898 9899 /* 9900 * Set match criteria for bcmFieldQualifyForwardHdrDstMac 9901 * qualifier from the field entry. 9902 */ 9903 extern int bcm_field_qualify_ForwardHdrDstMac( 9904 int unit, 9905 bcm_field_entry_t entry, 9906 bcm_mac_t data, 9907 bcm_mac_t mask); 9908 9909 /* 9910 * Get match criteria for bcmFieldQualifyForwardHdrDstMac 9911 * qualifier from the field entry. 9912 */ 9913 extern int bcm_field_qualify_ForwardHdrDstMac_get( 9914 int unit, 9915 bcm_field_entry_t entry, 9916 bcm_mac_t *data, 9917 bcm_mac_t *mask); 9918 9919 /* 9920 * Set match criteria for bcmFieldQualifyForwardHdrVlanId 9921 * qualifier in the field entry. 9922 */ 9923 extern int bcm_field_qualify_ForwardHdrVlanId( 9924 int unit, 9925 bcm_field_entry_t entry, 9926 bcm_vlan_t data, 9927 bcm_vlan_t mask); 9928 9929 /* 9930 * Get match criteria for bcmFieldQualifyForwardHdrVlanId 9931 * qualifier from the field entry. 9932 */ 9933 extern int bcm_field_qualify_ForwardHdrVlanId_get( 9934 int unit, 9935 bcm_field_entry_t entry, 9936 bcm_vlan_t *data, 9937 bcm_vlan_t *mask); 9938 9939 /* 9940 * Get match criteria for bcmFieldQualifyInnerIpType 9941 * qualifier from the field entry. 9942 */ 9943 extern int bcm_field_qualify_InnerIpType_get( 9944 int unit, 9945 bcm_field_entry_t entry, 9946 bcm_field_IpType_t *type); 9947 9948 /* 9949 * Get match criteria for bcmFieldQualifyForwardingType 9950 * qualifier from the field entry. 9951 */ 9952 extern int bcm_field_qualify_ForwardingType_get( 9953 int unit, 9954 bcm_field_entry_t entry, 9955 bcm_field_ForwardingType_t *type); 9956 9957 /* 9958 * Get match criteria for bcmFieldQualifyAppType 9959 * qualifier from the field entry. 9960 */ 9961 extern int bcm_field_qualify_AppType_get( 9962 int unit, 9963 bcm_field_entry_t entry, 9964 bcm_field_AppType_t *type); 9965 9966 /* 9967 * Get match criteria for bcmFieldQualifyIpType 9968 * qualifier from the field entry. 9969 */ 9970 extern int bcm_field_qualify_IpType_get( 9971 int unit, 9972 bcm_field_entry_t entry, 9973 bcm_field_IpType_t *type); 9974 9975 /* 9976 * Get match criteria for bcmFieldQualifyL2Format 9977 * qualifier from the field entry. 9978 */ 9979 extern int bcm_field_qualify_L2Format_get( 9980 int unit, 9981 bcm_field_entry_t entry, 9982 bcm_field_L2Format_t *type); 9983 9984 /* 9985 * Get match criteria for bcmFieldQualifyTranslatedVlanFormat 9986 * qualifier from the field entry. 9987 */ 9988 extern int bcm_field_qualify_TranslatedVlanFormat_get( 9989 int unit, 9990 bcm_field_entry_t entry, 9991 uint8 *data, 9992 uint8 *mask); 9993 9994 /* 9995 * Get match criteria for bcmFieldQualifyVlanFormat 9996 * qualifier from the field entry. 9997 */ 9998 extern int bcm_field_qualify_VlanFormat_get( 9999 int unit, 10000 bcm_field_entry_t entry, 10001 uint8 *data, 10002 uint8 *mask); 10003 10004 /* 10005 * Get match criteria for bcmFieldQualifyMHOpcode 10006 * qualifier from the field entry. 10007 */ 10008 extern int bcm_field_qualify_MHOpcode_get( 10009 int unit, 10010 bcm_field_entry_t entry, 10011 uint8 *data, 10012 uint8 *mask); 10013 10014 /* bcm_field_qualify_Decap_get */ 10015 extern int bcm_field_qualify_Decap_get( 10016 int unit, 10017 bcm_field_entry_t entry, 10018 bcm_field_decap_t *decap); 10019 10020 /* 10021 * Get match criteria for bcmFieldQualifyDstHiGig 10022 * qualifier from the field entry. 10023 */ 10024 extern int bcm_field_qualify_DstHiGig_get( 10025 int unit, 10026 bcm_field_entry_t entry, 10027 uint8 *data, 10028 uint8 *mask); 10029 10030 /* 10031 * Get match criteria for bcmFieldQualifyHiGig 10032 * qualifier from the field entry. 10033 */ 10034 extern int bcm_field_qualify_HiGig_get( 10035 int unit, 10036 bcm_field_entry_t entry, 10037 uint8 *data, 10038 uint8 *mask); 10039 10040 /* 10041 * Get match criteria for bcmFieldQualifyHiGigProxy 10042 * qualifier from the field entry. 10043 */ 10044 extern int bcm_field_qualify_HiGigProxy_get( 10045 int unit, 10046 bcm_field_entry_t entry, 10047 uint8 *data, 10048 uint8 *mask); 10049 10050 /* 10051 * Get match criteria for bcmFieldQualifyInterfaceClassPort 10052 * qualifier from the field entry. 10053 */ 10054 extern int bcm_field_qualify_InterfaceClassPort_get( 10055 int unit, 10056 bcm_field_entry_t entry, 10057 uint32 *data, 10058 uint32 *mask); 10059 10060 /* 10061 * Get match criteria for bcmFieldQualifyInterfaceClassL2 10062 * qualifier from the field entry. 10063 */ 10064 extern int bcm_field_qualify_InterfaceClassL2_get( 10065 int unit, 10066 bcm_field_entry_t entry, 10067 uint32 *data, 10068 uint32 *mask); 10069 10070 /* 10071 * Get match criteria for bcmFieldQualifyInterfaceClassL3 10072 * qualifier from the field entry. 10073 */ 10074 extern int bcm_field_qualify_InterfaceClassL3_get( 10075 int unit, 10076 bcm_field_entry_t entry, 10077 uint32 *data, 10078 uint32 *mask); 10079 10080 /* 10081 * Get match criteria for bcmFieldQualifySrcClassL2 10082 * qualifier from the field entry. 10083 */ 10084 extern int bcm_field_qualify_SrcClassL2_get( 10085 int unit, 10086 bcm_field_entry_t entry, 10087 uint32 *data, 10088 uint32 *mask); 10089 10090 /* 10091 * Get match criteria for bcmFieldQualifySrcClassL3 10092 * qualifier from the field entry. 10093 */ 10094 extern int bcm_field_qualify_SrcClassL3_get( 10095 int unit, 10096 bcm_field_entry_t entry, 10097 uint32 *data, 10098 uint32 *mask); 10099 10100 /* 10101 * Get match criteria for bcmFieldQualifySrcClassField 10102 * qualifier from the field entry. 10103 */ 10104 extern int bcm_field_qualify_SrcClassField_get( 10105 int unit, 10106 bcm_field_entry_t entry, 10107 uint32 *data, 10108 uint32 *mask); 10109 10110 /* 10111 * Get match criteria for bcmFieldQualifyDstClassL2 10112 * qualifier from the field entry. 10113 */ 10114 extern int bcm_field_qualify_DstClassL2_get( 10115 int unit, 10116 bcm_field_entry_t entry, 10117 uint32 *data, 10118 uint32 *mask); 10119 10120 /* 10121 * Get match criteria for bcmFieldQualifyDstClassL3 10122 * qualifier from the field entry. 10123 */ 10124 extern int bcm_field_qualify_DstClassL3_get( 10125 int unit, 10126 bcm_field_entry_t entry, 10127 uint32 *data, 10128 uint32 *mask); 10129 10130 /* 10131 * Get match criteria for bcmFieldQualifyDstClassField 10132 * qualifier from the field entry. 10133 */ 10134 extern int bcm_field_qualify_DstClassField_get( 10135 int unit, 10136 bcm_field_entry_t entry, 10137 uint32 *data, 10138 uint32 *mask); 10139 10140 /* 10141 * Get match criteria for bcmFieldQualifyIpProtocolCommon 10142 * qualifier from the field entry. 10143 */ 10144 extern int bcm_field_qualify_IpProtocolCommon_get( 10145 int unit, 10146 bcm_field_entry_t entry, 10147 bcm_field_IpProtocolCommon_t *protocol); 10148 10149 /* 10150 * Get match criteria for bcmFieldQualifyInnerIpProtocolCommon 10151 * qualifier from the field entry. 10152 */ 10153 extern int bcm_field_qualify_InnerIpProtocolCommon_get( 10154 int unit, 10155 bcm_field_entry_t entry, 10156 bcm_field_IpProtocolCommon_t *protocol); 10157 10158 /* 10159 * Get match criteria for bcmFieldQualifySnap 10160 * qualifier from the field entry. 10161 */ 10162 extern int bcm_field_qualify_Snap_get( 10163 int unit, 10164 bcm_field_entry_t entry, 10165 bcm_field_snap_header_t *data, 10166 bcm_field_snap_header_t *mask); 10167 10168 /* 10169 * Get match criteria for bcmFieldQualifyLlc 10170 * qualifier from the field entry. 10171 */ 10172 extern int bcm_field_qualify_Llc_get( 10173 int unit, 10174 bcm_field_entry_t entry, 10175 bcm_field_llc_header_t *data, 10176 bcm_field_llc_header_t *mask); 10177 10178 /* 10179 * Get match criteria for bcmFieldQualifyInnerTpid 10180 * qualifier from the field entry. 10181 */ 10182 extern int bcm_field_qualify_InnerTpid_get( 10183 int unit, 10184 bcm_field_entry_t entry, 10185 uint16 *tpid); 10186 10187 /* 10188 * Get match criteria for bcmFieldQualifyOuterTpid 10189 * qualifier from the field entry. 10190 */ 10191 extern int bcm_field_qualify_OuterTpid_get( 10192 int unit, 10193 bcm_field_entry_t entry, 10194 uint16 *tpid); 10195 10196 /* 10197 * Get match criteria for bcmFieldQualifyL3Routable 10198 * qualifier from the field entry. 10199 */ 10200 extern int bcm_field_qualify_L3Routable_get( 10201 int unit, 10202 bcm_field_entry_t entry, 10203 uint8 *data, 10204 uint8 *mask); 10205 10206 /* 10207 * Get match criteria for bcmFieldQualifyIpFrag 10208 * qualifier from the field entry. 10209 */ 10210 extern int bcm_field_qualify_IpFrag_get( 10211 int unit, 10212 bcm_field_entry_t entry, 10213 bcm_field_IpFrag_t *frag_info); 10214 10215 /* 10216 * Get match criteria for bcmFieldQualifyVrf 10217 * qualifier from the field entry. 10218 */ 10219 extern int bcm_field_qualify_Vrf_get( 10220 int unit, 10221 bcm_field_entry_t entry, 10222 uint32 *data, 10223 uint32 *mask); 10224 10225 /* 10226 * Get match criteria for bcmFieldQualifyL3Ingress 10227 * qualifier from the field entry. 10228 */ 10229 extern int bcm_field_qualify_L3Ingress_get( 10230 int unit, 10231 bcm_field_entry_t entry, 10232 uint32 *data, 10233 uint32 *mask); 10234 10235 /* 10236 * Get match criteria for bcmFieldQualifyExtensionHeaderType 10237 * qualifier from the field entry. 10238 */ 10239 extern int bcm_field_qualify_ExtensionHeaderType_get( 10240 int unit, 10241 bcm_field_entry_t entry, 10242 uint8 *data, 10243 uint8 *mask); 10244 10245 /* 10246 * Get match criteria for bcmFieldQualifyExtensionHeaderSubCode 10247 * qualifier from the field entry. 10248 */ 10249 extern int bcm_field_qualify_ExtensionHeaderSubCode_get( 10250 int unit, 10251 bcm_field_entry_t entry, 10252 uint8 *data, 10253 uint8 *mask); 10254 10255 /* 10256 * Get match criteria for bcmFieldQualifyExtensionHeader2Type 10257 * qualifier from the field entry. 10258 */ 10259 extern int bcm_field_qualify_ExtensionHeader2Type_get( 10260 int unit, 10261 bcm_field_entry_t entry, 10262 uint8 *data, 10263 uint8 *mask); 10264 10265 /* 10266 * Get match criteria for bcmFieldQualifyL4Ports 10267 * qualifier from the field entry. 10268 */ 10269 extern int bcm_field_qualify_L4Ports_get( 10270 int unit, 10271 bcm_field_entry_t entry, 10272 uint8 *data, 10273 uint8 *mask); 10274 10275 /* 10276 * Get match criteria for bcmFieldQualifyMirrorCopy 10277 * qualifier from the field entry. 10278 */ 10279 extern int bcm_field_qualify_MirrorCopy_get( 10280 int unit, 10281 bcm_field_entry_t entry, 10282 uint8 *data, 10283 uint8 *mask); 10284 10285 /* 10286 * Get match criteria for bcmFieldQualifyTunnelTerminated 10287 * qualifier from the field entry. 10288 */ 10289 extern int bcm_field_qualify_TunnelTerminated_get( 10290 int unit, 10291 bcm_field_entry_t entry, 10292 uint8 *data, 10293 uint8 *mask); 10294 10295 /* 10296 * Get match criteria for bcmFieldQualifyMplsTerminated 10297 * qualifier from the field entry. 10298 */ 10299 extern int bcm_field_qualify_MplsTerminated_get( 10300 int unit, 10301 bcm_field_entry_t entry, 10302 uint8 *data, 10303 uint8 *mask); 10304 10305 /* 10306 * Get match criteria for bcmFieldQualifyInnerSrcIp 10307 * qualifier from the field entry. 10308 */ 10309 extern int bcm_field_qualify_InnerSrcIp_get( 10310 int unit, 10311 bcm_field_entry_t entry, 10312 bcm_ip_t *data, 10313 bcm_ip_t *mask); 10314 10315 /* 10316 * Get match criteria for bcmFieldQualifyInnerDstIp 10317 * qualifier from the field entry. 10318 */ 10319 extern int bcm_field_qualify_InnerDstIp_get( 10320 int unit, 10321 bcm_field_entry_t entry, 10322 bcm_ip_t *data, 10323 bcm_ip_t *mask); 10324 10325 /* 10326 * Get match criteria for bcmFieldQualifyInnerSrcIp6 10327 * qualifier from the field entry. 10328 */ 10329 extern int bcm_field_qualify_InnerSrcIp6_get( 10330 int unit, 10331 bcm_field_entry_t entry, 10332 bcm_ip6_t *data, 10333 bcm_ip6_t *mask); 10334 10335 /* 10336 * Get match criteria for bcmFieldQualifyInnerDstIp6 10337 * qualifier from the field entry. 10338 */ 10339 extern int bcm_field_qualify_InnerDstIp6_get( 10340 int unit, 10341 bcm_field_entry_t entry, 10342 bcm_ip6_t *data, 10343 bcm_ip6_t *mask); 10344 10345 /* 10346 * Get match criteria for bcmFieldQualifyInnerSrcIp6High 10347 * qualifier from the field entry. 10348 */ 10349 extern int bcm_field_qualify_InnerSrcIp6High_get( 10350 int unit, 10351 bcm_field_entry_t entry, 10352 bcm_ip6_t *data, 10353 bcm_ip6_t *mask); 10354 10355 /* 10356 * Get match criteria for bcmFieldQualifyInnerDstIp6High 10357 * qualifier from the field entry. 10358 */ 10359 extern int bcm_field_qualify_InnerDstIp6High_get( 10360 int unit, 10361 bcm_field_entry_t entry, 10362 bcm_ip6_t *data, 10363 bcm_ip6_t *mask); 10364 10365 /* 10366 * Get match criteria for bcmFieldQualifyInnerTtl 10367 * qualifier from the field entry. 10368 */ 10369 extern int bcm_field_qualify_InnerTtl_get( 10370 int unit, 10371 bcm_field_entry_t entry, 10372 uint8 *data, 10373 uint8 *mask); 10374 10375 /* 10376 * Get match criteria for bcmFieldQualifyInnerIp6HopLimit 10377 * qualifier from the field entry. 10378 */ 10379 extern int bcm_field_qualify_InnerIp6HopLimit_get( 10380 int unit, 10381 bcm_field_entry_t entry, 10382 uint8 *data, 10383 uint8 *mask); 10384 10385 /* 10386 * Get match criteria for bcmFieldQualifyInnerTos 10387 * qualifier from the field entry. 10388 */ 10389 extern int bcm_field_qualify_InnerTos_get( 10390 int unit, 10391 bcm_field_entry_t entry, 10392 uint8 *data, 10393 uint8 *mask); 10394 10395 /* 10396 * Get match criteria for bcmFieldQualifyInnerDSCP 10397 * qualifier from the field entry. 10398 */ 10399 extern int bcm_field_qualify_InnerDSCP_get( 10400 int unit, 10401 bcm_field_entry_t entry, 10402 uint8 *data, 10403 uint8 *mask); 10404 10405 /* 10406 * Get match criteria for bcmFieldQualifyInnerIpProtocol 10407 * qualifier from the field entry. 10408 */ 10409 extern int bcm_field_qualify_InnerIpProtocol_get( 10410 int unit, 10411 bcm_field_entry_t entry, 10412 uint8 *data, 10413 uint8 *mask); 10414 10415 /* 10416 * Get match criteria for bcmFieldQualifyInnerIp6NextHeader 10417 * qualifier from the field entry. 10418 */ 10419 extern int bcm_field_qualify_InnerIp6NextHeader_get( 10420 int unit, 10421 bcm_field_entry_t entry, 10422 uint8 *data, 10423 uint8 *mask); 10424 10425 /* 10426 * Get match criteria for bcmFieldQualifyInnerIpFrag 10427 * qualifier from the field entry. 10428 */ 10429 extern int bcm_field_qualify_InnerIpFrag_get( 10430 int unit, 10431 bcm_field_entry_t entry, 10432 bcm_field_IpFrag_t *frag_info); 10433 10434 /* 10435 * Get match criteria for bcmFieldQualifyDosAttack 10436 * qualifier from the field entry. 10437 */ 10438 extern int bcm_field_qualify_DosAttack_get( 10439 int unit, 10440 bcm_field_entry_t entry, 10441 uint8 *data, 10442 uint8 *mask); 10443 10444 /* 10445 * Get match criteria for bcmFieldQualifyIpmcStarGroupHit 10446 * qualifier from the field entry. 10447 */ 10448 extern int bcm_field_qualify_IpmcStarGroupHit_get( 10449 int unit, 10450 bcm_field_entry_t entry, 10451 uint8 *data, 10452 uint8 *mask); 10453 10454 /* 10455 * Get match criteria for bcmFieldQualifyMyStationHit 10456 * qualifier from the field entry. 10457 */ 10458 extern int bcm_field_qualify_MyStationHit_get( 10459 int unit, 10460 bcm_field_entry_t entry, 10461 uint8 *data, 10462 uint8 *mask); 10463 10464 /* 10465 * Get match criteria for bcmFieldQualifyL2PayloadFirstEightBytes 10466 * qualifier from the field entry. 10467 */ 10468 extern int bcm_field_qualify_L2PayloadFirstEightBytes_get( 10469 int unit, 10470 bcm_field_entry_t entry, 10471 uint32 *data1, 10472 uint32 *data2, 10473 uint32 *mask1, 10474 uint32 *mask2); 10475 10476 /* 10477 * Get match criteria for bcmFieldQualifyL3DestRouteHit 10478 * qualifier from the field entry. 10479 */ 10480 extern int bcm_field_qualify_L3DestRouteHit_get( 10481 int unit, 10482 bcm_field_entry_t entry, 10483 uint8 *data, 10484 uint8 *mask); 10485 10486 /* 10487 * Get match criteria for bcmFieldQualifyL3DestHostHit 10488 * qualifier from the field entry. 10489 */ 10490 extern int bcm_field_qualify_L3DestHostHit_get( 10491 int unit, 10492 bcm_field_entry_t entry, 10493 uint8 *data, 10494 uint8 *mask); 10495 10496 /* 10497 * Get match criteria for bcmFieldQualifyL3SrcHostHit 10498 * qualifier from the field entry. 10499 */ 10500 extern int bcm_field_qualify_L3SrcHostHit_get( 10501 int unit, 10502 bcm_field_entry_t entry, 10503 uint8 *data, 10504 uint8 *mask); 10505 10506 /* 10507 * Get match criteria for bcmFieldQualifyL2CacheHit 10508 * qualifier from the field entry. 10509 */ 10510 extern int bcm_field_qualify_L2CacheHit_get( 10511 int unit, 10512 bcm_field_entry_t entry, 10513 uint8 *data, 10514 uint8 *mask); 10515 10516 /* 10517 * Get match criteria for bcmFieldQualifyL2StationMove 10518 * qualifier from the field entry. 10519 */ 10520 extern int bcm_field_qualify_L2StationMove_get( 10521 int unit, 10522 bcm_field_entry_t entry, 10523 uint8 *data, 10524 uint8 *mask); 10525 10526 /* 10527 * Get match criteria for bcmFieldQualifyL2DestHit 10528 * qualifier from the field entry. 10529 */ 10530 extern int bcm_field_qualify_L2DestHit_get( 10531 int unit, 10532 bcm_field_entry_t entry, 10533 uint8 *data, 10534 uint8 *mask); 10535 10536 /* 10537 * Get match criteria for bcmFieldQualifyL2SrcStatic 10538 * qualifier from the field entry. 10539 */ 10540 extern int bcm_field_qualify_L2SrcStatic_get( 10541 int unit, 10542 bcm_field_entry_t entry, 10543 uint8 *data, 10544 uint8 *mask); 10545 10546 /* 10547 * Get match criteria for bcmFieldQualifyL2SrcHit 10548 * qualifier from the field entry. 10549 */ 10550 extern int bcm_field_qualify_L2SrcHit_get( 10551 int unit, 10552 bcm_field_entry_t entry, 10553 uint8 *data, 10554 uint8 *mask); 10555 10556 /* 10557 * Get match criteria for bcmFieldQualifyIngressStpState 10558 * qualifier from the field entry. 10559 */ 10560 extern int bcm_field_qualify_IngressStpState_get( 10561 int unit, 10562 bcm_field_entry_t entry, 10563 uint8 *data, 10564 uint8 *mask); 10565 10566 /* 10567 * Get match criteria for bcmFieldQualifyForwardingVlanValid 10568 * qualifier from the field entry. 10569 */ 10570 extern int bcm_field_qualify_ForwardingVlanValid_get( 10571 int unit, 10572 bcm_field_entry_t entry, 10573 uint8 *data, 10574 uint8 *mask); 10575 10576 /* 10577 * Get match criteria for bcmFieldQualifySrcVirtualPortValid 10578 * qualifier from the field entry. 10579 */ 10580 extern int bcm_field_qualify_SrcVirtualPortValid_get( 10581 int unit, 10582 bcm_field_entry_t entry, 10583 uint8 *data, 10584 uint8 *mask); 10585 10586 /* 10587 * Get match criteria for bcmFieldQualifyDstL3EgressNextHops 10588 * qualifier from the field entry. 10589 */ 10590 extern int bcm_field_qualify_DstL3EgressNextHops_get( 10591 int unit, 10592 bcm_field_entry_t entry, 10593 uint32 *data, 10594 uint32 *mask); 10595 10596 /* 10597 * Get match criteria for bcmFieldQualifyVlanTranslationHit 10598 * qualifier from the field entry. 10599 */ 10600 extern int bcm_field_qualify_VlanTranslationHit_get( 10601 int unit, 10602 bcm_field_entry_t entry, 10603 uint8 *data, 10604 uint8 *mask); 10605 10606 /* 10607 * Get match criteria for bcmFieldQualifyIcmpTypeCode 10608 * qualifier from the field entry. 10609 */ 10610 extern int bcm_field_qualify_IcmpTypeCode_get( 10611 int unit, 10612 bcm_field_entry_t entry, 10613 uint16 *data, 10614 uint16 *mask); 10615 10616 /* 10617 * Get Fibre Channel outer header type field qualification from a field 10618 * entry. 10619 */ 10620 extern int bcm_field_qualify_FibreChanOuter_get( 10621 int unit, 10622 bcm_field_entry_t entry, 10623 bcm_field_FibreChan_t *fibre_chan_type); 10624 10625 /* 10626 * Get Fibre Channel inner header type field qualification from a field 10627 * entry. 10628 */ 10629 extern int bcm_field_qualify_FibreChanInner_get( 10630 int unit, 10631 bcm_field_entry_t entry, 10632 bcm_field_FibreChan_t *fibre_chan_type); 10633 10634 /* 10635 * Get match criteria for bcmFieldQualifyVnTag 10636 * qualifier from the field entry. 10637 */ 10638 extern int bcm_field_qualify_VnTag_get( 10639 int unit, 10640 bcm_field_entry_t entry, 10641 uint32 *data, 10642 uint32 *mask); 10643 10644 /* 10645 * Get match criteria for bcmFieldQualifySubportPktTag 10646 * qualifier from the field entry. 10647 */ 10648 extern int bcm_field_qualify_SubportPktTag_get( 10649 int unit, 10650 bcm_field_entry_t entry, 10651 uint16 *data, 10652 uint16 *mask); 10653 10654 /* 10655 * Get match criteria for bcmFieldQualifyCnTag 10656 * qualifier from the field entry. 10657 */ 10658 extern int bcm_field_qualify_CnTag_get( 10659 int unit, 10660 bcm_field_entry_t entry, 10661 uint32 *data, 10662 uint32 *mask); 10663 10664 /* 10665 * Get match criteria for bcmFieldQualifyFabricQueueTag 10666 * qualifier from the field entry. 10667 */ 10668 extern int bcm_field_qualify_FabricQueueTag_get( 10669 int unit, 10670 bcm_field_entry_t entry, 10671 uint32 *data, 10672 uint32 *mask); 10673 10674 /* bcm_field_qualify_FlowId */ 10675 extern int bcm_field_qualify_FlowId( 10676 int unit, 10677 bcm_field_entry_t entry, 10678 uint16 data, 10679 uint16 mask); 10680 10681 /* bcm_field_qualify_InVPort */ 10682 extern int bcm_field_qualify_InVPort( 10683 int unit, 10684 bcm_field_entry_t entry, 10685 uint8 data, 10686 uint8 mask); 10687 10688 /* bcm_field_qualify_OutVPort */ 10689 extern int bcm_field_qualify_OutVPort( 10690 int unit, 10691 bcm_field_entry_t entry, 10692 uint8 data, 10693 uint8 mask); 10694 10695 /* bcm_field_qualify_InVPort32 */ 10696 extern int bcm_field_qualify_InVPort32( 10697 int unit, 10698 bcm_field_entry_t entry, 10699 uint32 data, 10700 uint32 mask); 10701 10702 /* bcm_field_qualify_OutVPort32 */ 10703 extern int bcm_field_qualify_OutVPort32( 10704 int unit, 10705 bcm_field_entry_t entry, 10706 uint32 data, 10707 uint32 mask); 10708 10709 /* 10710 * Get match criteria for bcmFieldQualifyFlowId 10711 * qualifier from the field entry. 10712 */ 10713 extern int bcm_field_qualify_FlowId_get( 10714 int unit, 10715 bcm_field_entry_t entry, 10716 uint16 *data, 10717 uint16 *mask); 10718 10719 /* 10720 * Get match criteria for bcmFieldQualifyInVPort 10721 * qualifier from the field entry (8-bits). 10722 */ 10723 extern int bcm_field_qualify_InVPort_get( 10724 int unit, 10725 bcm_field_entry_t entry, 10726 uint8 *data, 10727 uint8 *mask); 10728 10729 /* 10730 * Get match criteria for bcmFieldQualifyOutVPort 10731 * qualifier from the field entry (8-bits). 10732 */ 10733 extern int bcm_field_qualify_OutVPort_get( 10734 int unit, 10735 bcm_field_entry_t entry, 10736 uint8 *data, 10737 uint8 *mask); 10738 10739 /* 10740 * Get match criteria for bcmFieldQualifyInVPort 10741 * qualifier from the field entry (32-bits). 10742 */ 10743 extern int bcm_field_qualify_InVPort32_get( 10744 int unit, 10745 bcm_field_entry_t entry, 10746 uint32 *data, 10747 uint32 *mask); 10748 10749 /* 10750 * Get match criteria for bcmFieldQualifyOutVPort 10751 * qualifier from the field entry (32-bits). 10752 */ 10753 extern int bcm_field_qualify_OutVPort32_get( 10754 int unit, 10755 bcm_field_entry_t entry, 10756 uint32 *data, 10757 uint32 *mask); 10758 10759 /* bcm_field_qualify_LlidValue */ 10760 extern int bcm_field_qualify_LlidValue( 10761 int unit, 10762 bcm_field_entry_t entry, 10763 uint16 data, 10764 uint16 mask); 10765 10766 /* 10767 * Get LLID value for bcmFieldQualifyLlidValue 10768 * qualifier from the field entry. 10769 */ 10770 extern int bcm_field_qualify_LlidValue_get( 10771 int unit, 10772 bcm_field_entry_t entry, 10773 uint16 *data, 10774 uint16 *mask); 10775 10776 /* 10777 * Set match criteria for RecoverableDrop 10778 * qualifier. 10779 */ 10780 extern int bcm_field_qualify_RecoverableDrop( 10781 int unit, 10782 bcm_field_entry_t entry, 10783 uint8 data, 10784 uint8 mask); 10785 10786 /* 10787 * Get match criteria for RecoverableDrop 10788 * qualifier. 10789 */ 10790 extern int bcm_field_qualify_RecoverableDrop_get( 10791 int unit, 10792 bcm_field_entry_t entry, 10793 uint8 *data, 10794 uint8 *mask); 10795 10796 /* 10797 * Set match criteria for RepCopy 10798 * qualifier. 10799 */ 10800 extern int bcm_field_qualify_RepCopy( 10801 int unit, 10802 bcm_field_entry_t entry, 10803 uint8 data, 10804 uint8 mask); 10805 10806 /* 10807 * Get match criteria for RepCopy 10808 * qualifier. 10809 */ 10810 extern int bcm_field_qualify_RepCopy_get( 10811 int unit, 10812 bcm_field_entry_t entry, 10813 uint8 *data, 10814 uint8 *mask); 10815 10816 /* 10817 * Set match criteria for IpTunnelHit 10818 * qualifier. 10819 */ 10820 extern int bcm_field_qualify_IpTunnelHit( 10821 int unit, 10822 bcm_field_entry_t entry, 10823 uint8 data, 10824 uint8 mask); 10825 10826 /* 10827 * Get match criteria for IpTunnelHit 10828 * qualifier. 10829 */ 10830 extern int bcm_field_qualify_IpTunnelHit_get( 10831 int unit, 10832 bcm_field_entry_t entry, 10833 uint8 *data, 10834 uint8 *mask); 10835 10836 /* 10837 * Set match criteria for MplsLabel1Hit 10838 * qualifier. 10839 */ 10840 extern int bcm_field_qualify_MplsLabel1Hit( 10841 int unit, 10842 bcm_field_entry_t entry, 10843 uint8 data, 10844 uint8 mask); 10845 10846 /* 10847 * Get match criteria for MplsLabel1Hit 10848 * qualifier. 10849 */ 10850 extern int bcm_field_qualify_MplsLabel1Hit_get( 10851 int unit, 10852 bcm_field_entry_t entry, 10853 uint8 *data, 10854 uint8 *mask); 10855 10856 /* 10857 * Set match criteria for TrillEgressRbridgeHit 10858 * qualifier. 10859 */ 10860 extern int bcm_field_qualify_TrillEgressRbridgeHit( 10861 int unit, 10862 bcm_field_entry_t entry, 10863 uint8 data, 10864 uint8 mask); 10865 10866 /* 10867 * Get match criteria for TrillEgressRbridgeHit 10868 * qualifier. 10869 */ 10870 extern int bcm_field_qualify_TrillEgressRbridgeHit_get( 10871 int unit, 10872 bcm_field_entry_t entry, 10873 uint8 *data, 10874 uint8 *mask); 10875 10876 /* 10877 * Set match criteria for L2GreSrcIpHit 10878 * qualifier. 10879 */ 10880 extern int bcm_field_qualify_L2GreSrcIpHit( 10881 int unit, 10882 bcm_field_entry_t entry, 10883 uint8 data, 10884 uint8 mask); 10885 10886 /* 10887 * Get match criteria for L2GreSrcIpHit 10888 * qualifier. 10889 */ 10890 extern int bcm_field_qualify_L2GreSrcIpHit_get( 10891 int unit, 10892 bcm_field_entry_t entry, 10893 uint8 *data, 10894 uint8 *mask); 10895 10896 /* 10897 * Set match criteria for MimSrcGportHit 10898 * qualifier. 10899 */ 10900 extern int bcm_field_qualify_MimSrcGportHit( 10901 int unit, 10902 bcm_field_entry_t entry, 10903 uint8 data, 10904 uint8 mask); 10905 10906 /* 10907 * Get match criteria for MimSrcGportHit 10908 * qualifier. 10909 */ 10910 extern int bcm_field_qualify_MimSrcGportHit_get( 10911 int unit, 10912 bcm_field_entry_t entry, 10913 uint8 *data, 10914 uint8 *mask); 10915 10916 /* 10917 * Set match criteria for MplsLabel2Hit 10918 * qualifier. 10919 */ 10920 extern int bcm_field_qualify_MplsLabel2Hit( 10921 int unit, 10922 bcm_field_entry_t entry, 10923 uint8 data, 10924 uint8 mask); 10925 10926 /* 10927 * Get match criteria for MplsLabel2Hit 10928 * qualifier. 10929 */ 10930 extern int bcm_field_qualify_MplsLabel2Hit_get( 10931 int unit, 10932 bcm_field_entry_t entry, 10933 uint8 *data, 10934 uint8 *mask); 10935 10936 /* 10937 * Set match criteria for TrillIngressRbridgeHit 10938 * qualifier. 10939 */ 10940 extern int bcm_field_qualify_TrillIngressRbridgeHit( 10941 int unit, 10942 bcm_field_entry_t entry, 10943 uint8 data, 10944 uint8 mask); 10945 10946 /* 10947 * Get match criteria for TrillIngressRbridgeHit 10948 * qualifier. 10949 */ 10950 extern int bcm_field_qualify_TrillIngressRbridgeHit_get( 10951 int unit, 10952 bcm_field_entry_t entry, 10953 uint8 *data, 10954 uint8 *mask); 10955 10956 /* 10957 * Set match criteria for L2GreVfiHit 10958 * qualifier. 10959 */ 10960 extern int bcm_field_qualify_L2GreVfiHit( 10961 int unit, 10962 bcm_field_entry_t entry, 10963 uint8 data, 10964 uint8 mask); 10965 10966 /* 10967 * Get match criteria for L2GreVfiHit 10968 * qualifier. 10969 */ 10970 extern int bcm_field_qualify_L2GreVfiHit_get( 10971 int unit, 10972 bcm_field_entry_t entry, 10973 uint8 *data, 10974 uint8 *mask); 10975 10976 /* 10977 * Set match criteria for MimVfiHit 10978 * qualifier. 10979 */ 10980 extern int bcm_field_qualify_MimVfiHit( 10981 int unit, 10982 bcm_field_entry_t entry, 10983 uint8 data, 10984 uint8 mask); 10985 10986 /* 10987 * Get match criteria for MimVfiHit 10988 * qualifier. 10989 */ 10990 extern int bcm_field_qualify_MimVfiHit_get( 10991 int unit, 10992 bcm_field_entry_t entry, 10993 uint8 *data, 10994 uint8 *mask); 10995 10996 /* 10997 * Set match criteria for GenericAssociatedChannelLabelValid 10998 * qualifier. 10999 */ 11000 extern int bcm_field_qualify_GenericAssociatedChannelLabelValid( 11001 int unit, 11002 bcm_field_entry_t entry, 11003 uint8 data, 11004 uint8 mask); 11005 11006 /* 11007 * Get match criteria for GenericAssociatedChannelLabelValid 11008 * qualifier. 11009 */ 11010 extern int bcm_field_qualify_GenericAssociatedChannelLabelValid_get( 11011 int unit, 11012 bcm_field_entry_t entry, 11013 uint8 *data, 11014 uint8 *mask); 11015 11016 /* 11017 * Set match criteria for RouterAlertLabelValid 11018 * qualifier. 11019 */ 11020 extern int bcm_field_qualify_RouterAlertLabelValid( 11021 int unit, 11022 bcm_field_entry_t entry, 11023 uint8 data, 11024 uint8 mask); 11025 11026 /* 11027 * Get match criteria for RouterAlertLabelValid 11028 * qualifier. 11029 */ 11030 extern int bcm_field_qualify_RouterAlertLabelValid_get( 11031 int unit, 11032 bcm_field_entry_t entry, 11033 uint8 *data, 11034 uint8 *mask); 11035 11036 /* 11037 * Set match criteria for DspIpLocal 11038 * qualifier. 11039 */ 11040 extern int bcm_field_qualify_DstIpLocal( 11041 int unit, 11042 bcm_field_entry_t entry, 11043 uint8 data, 11044 uint8 mask); 11045 11046 /* 11047 * Get match criteria for DspIpLocal 11048 * qualifier. 11049 */ 11050 extern int bcm_field_qualify_DstIpLocal_get( 11051 int unit, 11052 bcm_field_entry_t entry, 11053 uint8 *data, 11054 uint8 *mask); 11055 11056 /* 11057 * Set match criteria for IpAddrsNormalized 11058 * qualifier. 11059 */ 11060 extern int bcm_field_qualify_IpAddrsNormalized( 11061 int unit, 11062 bcm_field_entry_t entry, 11063 uint8 data, 11064 uint8 mask); 11065 11066 /* 11067 * Get match criteria for IpAddrsNormalized 11068 * qualifier. 11069 */ 11070 extern int bcm_field_qualify_IpAddrsNormalized_get( 11071 int unit, 11072 bcm_field_entry_t entry, 11073 uint8 *data, 11074 uint8 *mask); 11075 11076 /* 11077 * Set match criteria for MacAddrsNormalized 11078 * qualifier. 11079 */ 11080 extern int bcm_field_qualify_MacAddrsNormalized( 11081 int unit, 11082 bcm_field_entry_t entry, 11083 uint8 data, 11084 uint8 mask); 11085 11086 /* 11087 * Get match criteria for MacAddrsNormalized 11088 * qualifier. 11089 */ 11090 extern int bcm_field_qualify_MacAddrsNormalized_get( 11091 int unit, 11092 bcm_field_entry_t entry, 11093 uint8 *data, 11094 uint8 *mask); 11095 11096 /* 11097 * Set match criteria for MplsForwardingLabel 11098 * qualifier. 11099 */ 11100 extern int bcm_field_qualify_MplsForwardingLabel( 11101 int unit, 11102 bcm_field_entry_t entry, 11103 uint32 data, 11104 uint32 mask); 11105 11106 /* 11107 * Get match criteria for MplsForwardingLabel 11108 * qualifier. 11109 */ 11110 extern int bcm_field_qualify_MplsForwardingLabel_get( 11111 int unit, 11112 bcm_field_entry_t entry, 11113 uint32 *data, 11114 uint32 *mask); 11115 11116 /* 11117 * Set match criteria for MplsForwardingLabelTtl 11118 * qualifier. 11119 */ 11120 extern int bcm_field_qualify_MplsForwardingLabelTtl( 11121 int unit, 11122 bcm_field_entry_t entry, 11123 uint8 data, 11124 uint8 mask); 11125 11126 /* 11127 * Get match criteria for MplsForwardingLabelTtl 11128 * qualifier. 11129 */ 11130 extern int bcm_field_qualify_MplsForwardingLabelTtl_get( 11131 int unit, 11132 bcm_field_entry_t entry, 11133 uint8 *data, 11134 uint8 *mask); 11135 11136 /* 11137 * Set match criteria for MplsForwardingLabelBos 11138 * qualifier. 11139 */ 11140 extern int bcm_field_qualify_MplsForwardingLabelBos( 11141 int unit, 11142 bcm_field_entry_t entry, 11143 uint8 data, 11144 uint8 mask); 11145 11146 /* 11147 * Get match criteria for MplsForwardingLabelBos 11148 * qualifier. 11149 */ 11150 extern int bcm_field_qualify_MplsForwardingLabelBos_get( 11151 int unit, 11152 bcm_field_entry_t entry, 11153 uint8 *data, 11154 uint8 *mask); 11155 11156 /* 11157 * Set match criteria for MplsForwardingLabelExp 11158 * qualifier. 11159 */ 11160 extern int bcm_field_qualify_MplsForwardingLabelExp( 11161 int unit, 11162 bcm_field_entry_t entry, 11163 uint8 data, 11164 uint8 mask); 11165 11166 /* 11167 * Get match criteria for MplsForwardingLabelExp 11168 * qualifier. 11169 */ 11170 extern int bcm_field_qualify_MplsForwardingLabelExp_get( 11171 int unit, 11172 bcm_field_entry_t entry, 11173 uint8 *data, 11174 uint8 *mask); 11175 11176 /* 11177 * Set match criteria for MplsForwardingLabelId 11178 * qualifier. 11179 */ 11180 extern int bcm_field_qualify_MplsForwardingLabelId( 11181 int unit, 11182 bcm_field_entry_t entry, 11183 uint32 data, 11184 uint32 mask); 11185 11186 /* 11187 * Get match criteria for MplsForwardingLabelId 11188 * qualifier. 11189 */ 11190 extern int bcm_field_qualify_MplsForwardingLabelId_get( 11191 int unit, 11192 bcm_field_entry_t entry, 11193 uint32 *data, 11194 uint32 *mask); 11195 11196 /* 11197 * Set match criteria for MplsControlWord 11198 * qualifier. 11199 */ 11200 extern int bcm_field_qualify_MplsControlWord( 11201 int unit, 11202 bcm_field_entry_t entry, 11203 uint32 data, 11204 uint32 mask); 11205 11206 /* 11207 * Get match criteria for MplsControlWord 11208 * qualifier. 11209 */ 11210 extern int bcm_field_qualify_MplsControlWord_get( 11211 int unit, 11212 bcm_field_entry_t entry, 11213 uint32 *data, 11214 uint32 *mask); 11215 11216 /* 11217 * Set match criteria for Rtag7AHashUpper 11218 * qualifier. 11219 */ 11220 extern int bcm_field_qualify_Rtag7AHashUpper( 11221 int unit, 11222 bcm_field_entry_t entry, 11223 uint16 data, 11224 uint16 mask); 11225 11226 /* 11227 * Get match criteria for Rtag7AHashUpper 11228 * qualifier. 11229 */ 11230 extern int bcm_field_qualify_Rtag7AHashUpper_get( 11231 int unit, 11232 bcm_field_entry_t entry, 11233 uint16 *data, 11234 uint16 *mask); 11235 11236 /* 11237 * Set match criteria for Rtag7AHashLower 11238 * qualifier. 11239 */ 11240 extern int bcm_field_qualify_Rtag7AHashLower( 11241 int unit, 11242 bcm_field_entry_t entry, 11243 uint16 data, 11244 uint16 mask); 11245 11246 /* 11247 * Get match criteria for Rtag7AHashLower 11248 * qualifier. 11249 */ 11250 extern int bcm_field_qualify_Rtag7AHashLower_get( 11251 int unit, 11252 bcm_field_entry_t entry, 11253 uint16 *data, 11254 uint16 *mask); 11255 11256 /* 11257 * Set match criteria for Rtag7BHashUpper 11258 * qualifier. 11259 */ 11260 extern int bcm_field_qualify_Rtag7BHashUpper( 11261 int unit, 11262 bcm_field_entry_t entry, 11263 uint16 data, 11264 uint16 mask); 11265 11266 /* 11267 * Get match criteria for Rtag7BHashUpper 11268 * qualifier. 11269 */ 11270 extern int bcm_field_qualify_Rtag7BHashUpper_get( 11271 int unit, 11272 bcm_field_entry_t entry, 11273 uint16 *data, 11274 uint16 *mask); 11275 11276 /* 11277 * Set match criteria for Rtag7BHashLower 11278 * qualifier. 11279 */ 11280 extern int bcm_field_qualify_Rtag7BHashLower( 11281 int unit, 11282 bcm_field_entry_t entry, 11283 uint16 data, 11284 uint16 mask); 11285 11286 /* 11287 * Get match criteria for Rtag7BHashLower 11288 * qualifier. 11289 */ 11290 extern int bcm_field_qualify_Rtag7BHashLower_get( 11291 int unit, 11292 bcm_field_entry_t entry, 11293 uint16 *data, 11294 uint16 *mask); 11295 11296 /* 11297 * Set match criteria for MplsForwardingLabelAction 11298 * qualifier(8 bits). 11299 */ 11300 extern int bcm_field_qualify_MplsForwardingLabelAction( 11301 int unit, 11302 bcm_field_entry_t entry, 11303 uint8 data, 11304 uint8 mask); 11305 11306 /* 11307 * Get match criteria for MplsForwardingLabelAction 11308 * qualifier(8 bits). 11309 */ 11310 extern int bcm_field_qualify_MplsForwardingLabelAction_get( 11311 int unit, 11312 bcm_field_entry_t entry, 11313 uint8 *data, 11314 uint8 *mask); 11315 11316 /* 11317 * Set match criteria for MplsForwardingLabelAction 11318 * qualifier (32 bits). 11319 */ 11320 extern int bcm_field_qualify_MplsForwardingLabelAction32( 11321 int unit, 11322 bcm_field_entry_t entry, 11323 uint32 data, 11324 uint32 mask); 11325 11326 /* 11327 * Get match criteria for MplsForwardingLabelAction 11328 * qualifier (32 bits). 11329 */ 11330 extern int bcm_field_qualify_MplsForwardingLabelAction32_get( 11331 int unit, 11332 bcm_field_entry_t entry, 11333 uint32 *data, 11334 uint32 *mask); 11335 11336 /* 11337 * Set match criteria for MplsControlWordValid 11338 * qualifier. 11339 */ 11340 extern int bcm_field_qualify_MplsControlWordValid( 11341 int unit, 11342 bcm_field_entry_t entry, 11343 uint8 data, 11344 uint8 mask); 11345 11346 /* 11347 * Get match criteria for MplsControlWordValid 11348 * qualifier. 11349 */ 11350 extern int bcm_field_qualify_MplsControlWordValid_get( 11351 int unit, 11352 bcm_field_entry_t entry, 11353 uint8 *data, 11354 uint8 *mask); 11355 11356 /* 11357 * Set match criteria for EgressClass 11358 * qualifier. 11359 */ 11360 extern int bcm_field_qualify_EgressClass( 11361 int unit, 11362 bcm_field_entry_t entry, 11363 uint16 data, 11364 uint16 mask); 11365 11366 /* 11367 * Get match criteria for EgressClass 11368 * qualifier. 11369 */ 11370 extern int bcm_field_qualify_EgressClass_get( 11371 int unit, 11372 bcm_field_entry_t entry, 11373 uint16 *data, 11374 uint16 *mask); 11375 11376 /* 11377 * Set match criteria for EgressClassL3Interface 11378 * qualifier. 11379 */ 11380 extern int bcm_field_qualify_EgressClassL3Interface( 11381 int unit, 11382 bcm_field_entry_t entry, 11383 uint16 data, 11384 uint16 mask); 11385 11386 /* 11387 * Get match criteria for EgressClassL3Interface 11388 * qualifier. 11389 */ 11390 extern int bcm_field_qualify_EgressClassL3Interface_get( 11391 int unit, 11392 bcm_field_entry_t entry, 11393 uint16 *data, 11394 uint16 *mask); 11395 11396 /* 11397 * Set match criteria for EgressClassTrill 11398 * qualifier. 11399 */ 11400 extern int bcm_field_qualify_EgressClassTrill( 11401 int unit, 11402 bcm_field_entry_t entry, 11403 uint16 data, 11404 uint16 mask); 11405 11406 /* 11407 * Get match criteria for EgressClassTrill 11408 * qualifier. 11409 */ 11410 extern int bcm_field_qualify_EgressClassTrill_get( 11411 int unit, 11412 bcm_field_entry_t entry, 11413 uint16 *data, 11414 uint16 *mask); 11415 11416 /* 11417 * Set match criteria for EgressClassWlan 11418 * qualifier. 11419 */ 11420 extern int bcm_field_qualify_EgressClassWlan( 11421 int unit, 11422 bcm_field_entry_t entry, 11423 uint16 data, 11424 uint16 mask); 11425 11426 /* 11427 * Get match criteria for EgressClassWlan 11428 * qualifier. 11429 */ 11430 extern int bcm_field_qualify_EgressClassWlan_get( 11431 int unit, 11432 bcm_field_entry_t entry, 11433 uint16 *data, 11434 uint16 *mask); 11435 11436 /* 11437 * Set match criteria for EgressClassL2Gre 11438 * qualifier. 11439 */ 11440 extern int bcm_field_qualify_EgressClassL2Gre( 11441 int unit, 11442 bcm_field_entry_t entry, 11443 uint16 data, 11444 uint16 mask); 11445 11446 /* 11447 * Get match criteria for EgressClassL2Gre 11448 * qualifier. 11449 */ 11450 extern int bcm_field_qualify_EgressClassL2Gre_get( 11451 int unit, 11452 bcm_field_entry_t entry, 11453 uint16 *data, 11454 uint16 *mask); 11455 11456 /* Set match criteria for CpuQueue qualifier. */ 11457 extern int bcm_field_qualify_CpuQueue( 11458 int unit, 11459 bcm_field_entry_t entry, 11460 uint8 data, 11461 uint8 mask); 11462 11463 /* Get match criteria for CpuQueue qualifier. */ 11464 extern int bcm_field_qualify_CpuQueue_get( 11465 int unit, 11466 bcm_field_entry_t entry, 11467 uint8 *data, 11468 uint8 *mask); 11469 11470 /* Set match criteria for SrcGport qualifier. */ 11471 extern int bcm_field_qualify_SrcGport( 11472 int unit, 11473 bcm_field_entry_t entry, 11474 bcm_gport_t port_id); 11475 11476 /* Get match criteria for SrcGport qualifier. */ 11477 extern int bcm_field_qualify_SrcGport_get( 11478 int unit, 11479 bcm_field_entry_t entry, 11480 bcm_gport_t *port_id); 11481 11482 /* 11483 * Set match for the header format indicated. This qualifier is similar 11484 * to HeaderFormatSet, but this one allows only one matching header 11485 * format to be specified. 11486 */ 11487 extern int bcm_field_qualify_HeaderFormat( 11488 int unit, 11489 bcm_field_entry_t entry, 11490 bcm_field_header_format_t header_format); 11491 11492 /* Get matching header format. */ 11493 extern int bcm_field_qualify_HeaderFormat_get( 11494 int unit, 11495 bcm_field_entry_t entry, 11496 bcm_field_header_format_t *header_format); 11497 11498 /* 11499 * Set match for the header format extension indicated. The profile, out 11500 * of which header_format_extension must be selected, is set by the 11501 * previously selected header format. 11502 */ 11503 extern int bcm_field_qualify_HeaderFormatExtension( 11504 int unit, 11505 bcm_field_entry_t entry, 11506 bcm_field_header_format_extension_t header_format_extension); 11507 11508 /* 11509 * Get header format extension that is currently set for the indicated 11510 * entry. 11511 */ 11512 extern int bcm_field_qualify_HeaderFormatExtension_get( 11513 int unit, 11514 bcm_field_entry_t entry, 11515 bcm_field_header_format_extension_t *header_format_extension); 11516 11517 /* 11518 * Set match for the header formats included in the format_header_set. 11519 * This qualifier is similar to HeaderFormat, but this qualifier allows 11520 * the caller to specify more than one header format to match. 11521 */ 11522 extern int bcm_field_qualify_HeaderFormatSet( 11523 int unit, 11524 bcm_field_entry_t entry, 11525 bcm_field_header_format_set_t header_format_set); 11526 11527 /* Get matching header format set. */ 11528 extern int bcm_field_qualify_HeaderFormatSet_get( 11529 int unit, 11530 bcm_field_entry_t entry, 11531 bcm_field_header_format_set_t *header_format_set); 11532 11533 /* Set match criteria for L2Learn qualifier. */ 11534 extern int bcm_field_qualify_L2Learn( 11535 int unit, 11536 bcm_field_entry_t entry, 11537 uint8 data, 11538 uint8 mask); 11539 11540 /* Get match criteria for L2Learn qualifier. */ 11541 extern int bcm_field_qualify_L2Learn_get( 11542 int unit, 11543 bcm_field_entry_t entry, 11544 uint8 *data, 11545 uint8 *mask); 11546 11547 /* Set match criteria for PortOrientation qualifier. */ 11548 extern int bcm_field_qualify_PortOrientation( 11549 int unit, 11550 bcm_field_entry_t entry, 11551 uint8 data, 11552 uint8 mask); 11553 11554 /* Get match criteria for PortOrientation qualifier. */ 11555 extern int bcm_field_qualify_PortOrientation_get( 11556 int unit, 11557 bcm_field_entry_t entry, 11558 uint8 *data, 11559 uint8 *mask); 11560 11561 /* To qualify the MACSEC tagged packets */ 11562 extern int bcm_field_qualify_MacSecTagPresent( 11563 int unit, 11564 bcm_field_entry_t entry, 11565 uint8 data, 11566 uint8 mask); 11567 11568 /* To get the qualified inputs on the MACSEC tagged packets */ 11569 extern int bcm_field_qualify_MacSecTagPresent_get( 11570 int unit, 11571 bcm_field_entry_t entry, 11572 uint8 *data, 11573 uint8 *mask); 11574 11575 /* To qualify on the SecTag field in MACSEC tagged packets */ 11576 extern int bcm_field_qualify_MacSecTag( 11577 int unit, 11578 bcm_field_entry_t entry, 11579 uint8 data, 11580 uint8 mask); 11581 11582 /* To get the qualified inputs on SecTag field in MACSEC tagged packets */ 11583 extern int bcm_field_qualify_MacSecTag_get( 11584 int unit, 11585 bcm_field_entry_t entry, 11586 uint8 *data, 11587 uint8 *mask); 11588 11589 /* 11590 * To qualify the hit on Destination MAC addresses range. The range can 11591 * be configured by API bcm_field_macsec_DstMacRange_set 11592 */ 11593 extern int bcm_field_qualify_MacSecDstMacRangeHit( 11594 int unit, 11595 bcm_field_entry_t entry, 11596 uint8 data, 11597 uint8 mask); 11598 11599 /* To get the qualified inputs on the Destination MAC addresses range hit */ 11600 extern int bcm_field_qualify_MacSecDstMacRangeHit_get( 11601 int unit, 11602 bcm_field_entry_t entry, 11603 uint8 *data, 11604 uint8 *mask); 11605 11606 /* 11607 * To configure lower and upper limits to be used by qualifier 11608 * bcmFieldQualifyMacSecDstMacRangeHit 11609 */ 11610 extern int bcm_field_macsec_DstMacRange_set( 11611 int unit, 11612 bcm_mac_t lower_limit, 11613 bcm_mac_t upper_limit); 11614 11615 /* 11616 * To get the configured lower and upper limits to be used by qualifier 11617 * bcmFieldQualifyMacSecDstMacRangeHit 11618 */ 11619 extern int bcm_field_macsec_DstMacRange_get( 11620 int unit, 11621 bcm_mac_t *lower_limit, 11622 bcm_mac_t *upper_limit); 11623 11624 /* To qualify on packet forwarded through the internal MACSEC port */ 11625 extern int bcm_field_qualify_FromMacSecPort( 11626 int unit, 11627 bcm_field_entry_t entry, 11628 uint8 data, 11629 uint8 mask); 11630 11631 /* 11632 * To get the qualified inputs on packet forwarded through the internal 11633 * MACSEC port 11634 */ 11635 extern int bcm_field_qualify_FromMacSecPort_get( 11636 int unit, 11637 bcm_field_entry_t entry, 11638 uint8 *data, 11639 uint8 *mask); 11640 11641 /* To qualify on the MACSEC packet flow */ 11642 extern int bcm_field_qualify_MacSecFlow( 11643 int unit, 11644 bcm_field_entry_t entry, 11645 bcm_field_macsec_flow_t data); 11646 11647 /* To get the qualified inputs on the MACSEC packet flow */ 11648 extern int bcm_field_qualify_MacSecFlow_get( 11649 int unit, 11650 bcm_field_entry_t entry, 11651 bcm_field_macsec_flow_t *data); 11652 11653 /* Set match criteria for PortOrientation qualifier. */ 11654 extern int bcm_field_qualify_EcnValue( 11655 int unit, 11656 bcm_field_entry_t entry, 11657 uint8 data, 11658 uint8 mask); 11659 11660 /* Get match criteria for EcnValue qualifier. */ 11661 extern int bcm_field_qualify_EcnValue_get( 11662 int unit, 11663 bcm_field_entry_t entry, 11664 uint8 *data, 11665 uint8 *mask); 11666 11667 /* Set match criteria for RxTrapCode qualifier. */ 11668 extern int bcm_field_qualify_RxTrapCode( 11669 int unit, 11670 bcm_field_entry_t entry, 11671 bcm_rx_trap_t data); 11672 11673 /* Get match criteria for RxTrapCode qualifier. */ 11674 extern int bcm_field_qualify_RxTrapCode_get( 11675 int unit, 11676 bcm_field_entry_t entry, 11677 bcm_rx_trap_t *data); 11678 11679 /* Set match criteria for RxTrapCode qualifier. */ 11680 extern int bcm_field_qualify_RxTrapCode32( 11681 int unit, 11682 bcm_field_entry_t entry, 11683 uint32 data, 11684 uint32 mask); 11685 11686 /* Get match criteria for RxTrapCode qualifier. */ 11687 extern int bcm_field_qualify_RxTrapCode32_get( 11688 int unit, 11689 bcm_field_entry_t entry, 11690 uint32 *data, 11691 uint32 *mask); 11692 11693 /* Set match criteria for RxTrapStrength qualifier. */ 11694 extern int bcm_field_qualify_RxTrapStrength( 11695 int unit, 11696 bcm_field_entry_t entry, 11697 uint32 data, 11698 uint32 mask); 11699 11700 /* Get match criteria for RxTrapStrength qualifier. */ 11701 extern int bcm_field_qualify_RxTrapStrength_get( 11702 int unit, 11703 bcm_field_entry_t entry, 11704 uint32 *data, 11705 uint32 *mask); 11706 11707 /* Set match criteria for Ptch qualifier. */ 11708 extern int bcm_field_qualify_Ptch( 11709 int unit, 11710 bcm_field_entry_t entry, 11711 uint8 data, 11712 uint8 mask); 11713 11714 /* Get match criteria for Ptch qualifier. */ 11715 extern int bcm_field_qualify_Ptch_get( 11716 int unit, 11717 bcm_field_entry_t entry, 11718 uint8 *data, 11719 uint8 *mask); 11720 11721 /* Set match criteria for MplsBos qualifier. */ 11722 extern int bcm_field_qualify_MplsBos( 11723 int unit, 11724 bcm_field_entry_t entry, 11725 uint8 data, 11726 uint8 mask); 11727 11728 /* Get match criteria for MplsBos qualifier. */ 11729 extern int bcm_field_qualify_MplsBos_get( 11730 int unit, 11731 bcm_field_entry_t entry, 11732 uint8 *data, 11733 uint8 *mask); 11734 11735 /* Set match criteria for RxTrapData qualifier. */ 11736 extern int bcm_field_qualify_RxTrapData( 11737 int unit, 11738 bcm_field_entry_t entry, 11739 uint32 data, 11740 uint32 mask); 11741 11742 /* Get match criteria for RxTrapData qualifier. */ 11743 extern int bcm_field_qualify_RxTrapData_get( 11744 int unit, 11745 bcm_field_entry_t entry, 11746 uint32 *data, 11747 uint32 *mask); 11748 11749 /* Set match criteria for PolicerIntPrio qualifier. */ 11750 extern int bcm_field_qualify_PolicerIntPrio( 11751 int unit, 11752 bcm_field_entry_t entry, 11753 uint8 data, 11754 uint8 mask); 11755 11756 /* Get match criteria for PolicerIntPrio qualifier. */ 11757 extern int bcm_field_qualify_PolicerIntPrio_get( 11758 int unit, 11759 bcm_field_entry_t entry, 11760 uint8 *data, 11761 uint8 *mask); 11762 11763 /* Set match criteria for PacketTerminatedBytes qualifier. */ 11764 extern int bcm_field_qualify_PacketTerminatedBytes( 11765 int unit, 11766 bcm_field_entry_t entry, 11767 uint32 data, 11768 uint32 mask); 11769 11770 /* Get match criteria for PacketTerminatedBytes qualifier. */ 11771 extern int bcm_field_qualify_PacketTerminatedBytes_get( 11772 int unit, 11773 bcm_field_entry_t entry, 11774 uint32 *data, 11775 uint32 *mask); 11776 11777 /* Set match criteria for BypassFilter qualifier (8-bits). */ 11778 extern int bcm_field_qualify_BypassFilter( 11779 int unit, 11780 bcm_field_entry_t entry, 11781 uint8 data, 11782 uint8 mask); 11783 11784 /* Get match criteria for BypassFilter qualifier (8-bits). */ 11785 extern int bcm_field_qualify_BypassFilter_get( 11786 int unit, 11787 bcm_field_entry_t entry, 11788 uint8 *data, 11789 uint8 *mask); 11790 11791 /* Set match criteria for BypassFilter qualifier (32-bits). */ 11792 extern int bcm_field_qualify_BypassFilter32( 11793 int unit, 11794 bcm_field_entry_t entry, 11795 uint32 data, 11796 uint32 mask); 11797 11798 /* Get match criteria for BypassFilter qualifier (32-bits). */ 11799 extern int bcm_field_qualify_BypassFilter32_get( 11800 int unit, 11801 bcm_field_entry_t entry, 11802 uint32 *data, 11803 uint32 *mask); 11804 11805 /* Set match criteria for ReplicantAny qualifier. */ 11806 extern int bcm_field_qualify_ReplicantAny( 11807 int unit, 11808 bcm_field_entry_t entry, 11809 uint8 data, 11810 uint8 mask); 11811 11812 /* Get match criteria for ReplicantAny qualifier. */ 11813 extern int bcm_field_qualify_ReplicantAny_get( 11814 int unit, 11815 bcm_field_entry_t entry, 11816 uint8 *data, 11817 uint8 *mask); 11818 11819 /* Set match criteria for ReplicantFirst qualifier. */ 11820 extern int bcm_field_qualify_ReplicantFirst( 11821 int unit, 11822 bcm_field_entry_t entry, 11823 uint8 data, 11824 uint8 mask); 11825 11826 /* Get match criteria for ReplicantFirst qualifier. */ 11827 extern int bcm_field_qualify_ReplicantFirst_get( 11828 int unit, 11829 bcm_field_entry_t entry, 11830 uint8 *data, 11831 uint8 *mask); 11832 11833 /* Set match criteria for TrillEgressRbridge qualifier. */ 11834 extern int bcm_field_qualify_TrillEgressRbridge( 11835 int unit, 11836 bcm_field_entry_t entry, 11837 uint32 data, 11838 uint32 mask); 11839 11840 /* Get match criteria for TrillEgressRbridge qualifier. */ 11841 extern int bcm_field_qualify_TrillEgressRbridge_get( 11842 int unit, 11843 bcm_field_entry_t entry, 11844 uint32 *data, 11845 uint32 *mask); 11846 11847 /* Set match criteria for ISid qualifier. */ 11848 extern int bcm_field_qualify_ISid( 11849 int unit, 11850 bcm_field_entry_t entry, 11851 uint32 data, 11852 uint32 mask); 11853 11854 /* Get match criteria for ISid qualifier. */ 11855 extern int bcm_field_qualify_ISid_get( 11856 int unit, 11857 bcm_field_entry_t entry, 11858 uint32 *data, 11859 uint32 *mask); 11860 11861 /* Set match criteria for InterfaceClassProcessingPort qualifier. */ 11862 extern int bcm_field_qualify_InterfaceClassProcessingPort( 11863 int unit, 11864 bcm_field_entry_t entry, 11865 uint64 data, 11866 uint64 mask); 11867 11868 /* Get match criteria for InterfaceClassProcessingPort qualifier. */ 11869 extern int bcm_field_qualify_InterfaceClassProcessingPort_get( 11870 int unit, 11871 bcm_field_entry_t entry, 11872 uint64 *data, 11873 uint64 *mask); 11874 11875 /* Set match criteria for DstRpfGport qualifier. */ 11876 extern int bcm_field_qualify_DstRpfGport( 11877 int unit, 11878 bcm_field_entry_t entry, 11879 bcm_gport_t data); 11880 11881 /* Get match criteria for DstRpfGport qualifier. */ 11882 extern int bcm_field_qualify_DstRpfGport_get( 11883 int unit, 11884 bcm_field_entry_t entry, 11885 bcm_gport_t *data); 11886 11887 /* Set match criteria for TrunkHashResult qualifier. */ 11888 extern int bcm_field_qualify_TrunkHashResult( 11889 int unit, 11890 bcm_field_entry_t entry, 11891 uint32 data, 11892 uint32 mask); 11893 11894 /* Get match criteria for TrunkHashResult qualifier. */ 11895 extern int bcm_field_qualify_TrunkHashResult_get( 11896 int unit, 11897 bcm_field_entry_t entry, 11898 uint32 *data, 11899 uint32 *mask); 11900 11901 /* Set match criteria for Dhcp qualifier. */ 11902 extern int bcm_field_qualify_Dhcp( 11903 int unit, 11904 bcm_field_entry_t entry, 11905 uint8 data, 11906 uint8 mask); 11907 11908 /* Get match criteria for Dhcp qualifier. */ 11909 extern int bcm_field_qualify_Dhcp_get( 11910 int unit, 11911 bcm_field_entry_t entry, 11912 uint8 *data, 11913 uint8 *mask); 11914 11915 /* Set match criteria for SnoopCopy qualifier. */ 11916 extern int bcm_field_qualify_SnoopCopy( 11917 int unit, 11918 bcm_field_entry_t entry, 11919 uint8 data, 11920 uint8 mask); 11921 11922 /* Get match criteria for SnoopCopy qualifier. */ 11923 extern int bcm_field_qualify_SnoopCopy_get( 11924 int unit, 11925 bcm_field_entry_t entry, 11926 uint8 *data, 11927 uint8 *mask); 11928 11929 /* Set match criteria for ForwardCopy qualifier. */ 11930 extern int bcm_field_qualify_ForwardCopy( 11931 int unit, 11932 bcm_field_entry_t entry, 11933 uint8 data, 11934 uint8 mask); 11935 11936 /* Get match criteria for ForwardCopy qualifier. */ 11937 extern int bcm_field_qualify_ForwardCopy_get( 11938 int unit, 11939 bcm_field_entry_t entry, 11940 uint8 *data, 11941 uint8 *mask); 11942 11943 /* Set match criteria for InterfaceClassVPort qualifier. */ 11944 extern int bcm_field_qualify_InterfaceClassVPort( 11945 int unit, 11946 bcm_field_entry_t entry, 11947 uint32 data, 11948 uint32 mask); 11949 11950 /* Get match criteria for InterfaceClassVPort qualifier. */ 11951 extern int bcm_field_qualify_InterfaceClassVPort_get( 11952 int unit, 11953 bcm_field_entry_t entry, 11954 uint32 *data, 11955 uint32 *mask); 11956 11957 /* Set match criteria for L4PortRangeCheck qualifier. */ 11958 extern int bcm_field_qualify_L4PortRangeCheck( 11959 int unit, 11960 bcm_field_entry_t entry, 11961 bcm_field_range_t range, 11962 int invert); 11963 11964 /* Get match criteria for L4PortRangeCheck qualifier. */ 11965 extern int bcm_field_qualify_L4PortRangeCheck_get( 11966 int unit, 11967 bcm_field_entry_t entry, 11968 int max_count, 11969 bcm_field_range_t *range, 11970 int *invert, 11971 int *count); 11972 11973 /* Set match criteria for VPortRangeCheck qualifier. */ 11974 extern int bcm_field_qualify_VPortRangeCheck( 11975 int unit, 11976 bcm_field_entry_t entry, 11977 bcm_field_range_t range, 11978 int invert); 11979 11980 /* 11981 * Get match criteria for VPortRangeCheck 11982 * qualifier from the field entry. 11983 */ 11984 extern int bcm_field_qualify_VPortRangeCheck_get( 11985 int unit, 11986 bcm_field_entry_t entry, 11987 int max_count, 11988 bcm_field_range_t *range, 11989 int *invert, 11990 int *count); 11991 11992 /* Set match criteria for PacketLengthRangeCheck qualifier. */ 11993 extern int bcm_field_qualify_PacketLengthRangeCheck( 11994 int unit, 11995 bcm_field_entry_t entry, 11996 bcm_field_range_t range, 11997 int invert); 11998 11999 /* 12000 * Get match criteria for PacketLengthRangeCheck 12001 * qualifier from the field entry. 12002 */ 12003 extern int bcm_field_qualify_PacketLengthRangeCheck_get( 12004 int unit, 12005 bcm_field_entry_t entry, 12006 int max_count, 12007 bcm_field_range_t *range, 12008 int *invert, 12009 int *count); 12010 12011 /* Set match criteria for TunnelTerminatedHit qualifier. */ 12012 extern int bcm_field_qualify_TunnelTerminatedHit( 12013 int unit, 12014 bcm_field_entry_t entry, 12015 uint8 data, 12016 uint8 mask); 12017 12018 /* Get match criteria for TunnelTerminatedHit qualifier. */ 12019 extern int bcm_field_qualify_TunnelTerminatedHit_get( 12020 int unit, 12021 bcm_field_entry_t entry, 12022 uint8 *data, 12023 uint8 *mask); 12024 12025 /* Set match criteria for MplsTerminatedHit qualifier. */ 12026 extern int bcm_field_qualify_MplsTerminatedHit( 12027 int unit, 12028 bcm_field_entry_t entry, 12029 uint8 data, 12030 uint8 mask); 12031 12032 /* Get match criteria for MplsTerminatedHit qualifier. */ 12033 extern int bcm_field_qualify_MplsTerminatedHit_get( 12034 int unit, 12035 bcm_field_entry_t entry, 12036 uint8 *data, 12037 uint8 *mask); 12038 12039 /* Set match criteria for L3SrcRouteHit qualifier. */ 12040 extern int bcm_field_qualify_L3SrcRouteHit( 12041 int unit, 12042 bcm_field_entry_t entry, 12043 uint8 data, 12044 uint8 mask); 12045 12046 /* Get match criteria for L3SrcRouteHit qualifier. */ 12047 extern int bcm_field_qualify_L3SrcRouteHit_get( 12048 int unit, 12049 bcm_field_entry_t entry, 12050 uint8 *data, 12051 uint8 *mask); 12052 12053 /* Set match criteria for IpmcHit qualifier. */ 12054 extern int bcm_field_qualify_IpmcHit( 12055 int unit, 12056 bcm_field_entry_t entry, 12057 uint8 data, 12058 uint8 mask); 12059 12060 /* Get match criteria for IpmcHit qualifier. */ 12061 extern int bcm_field_qualify_IpmcHit_get( 12062 int unit, 12063 bcm_field_entry_t entry, 12064 uint8 *data, 12065 uint8 *mask); 12066 12067 /* Set match criteria for VlanTranslationValue qualifier. */ 12068 extern int bcm_field_qualify_VlanTranslationValue( 12069 int unit, 12070 bcm_field_entry_t entry, 12071 uint64 data, 12072 uint64 mask); 12073 12074 /* Get match criteria for VlanTranslationValue qualifier. */ 12075 extern int bcm_field_qualify_VlanTranslationValue_get( 12076 int unit, 12077 bcm_field_entry_t entry, 12078 uint64 *data, 12079 uint64 *mask); 12080 12081 /* Set match criteria for TunnelTerminatedValue qualifier. */ 12082 extern int bcm_field_qualify_TunnelTerminatedValue( 12083 int unit, 12084 bcm_field_entry_t entry, 12085 uint64 data, 12086 uint64 mask); 12087 12088 /* Get match criteria for TunnelTerminatedValue qualifier. */ 12089 extern int bcm_field_qualify_TunnelTerminatedValue_get( 12090 int unit, 12091 bcm_field_entry_t entry, 12092 uint64 *data, 12093 uint64 *mask); 12094 12095 /* Set match criteria for MplsTerminatedValue qualifier. */ 12096 extern int bcm_field_qualify_MplsTerminatedValue( 12097 int unit, 12098 bcm_field_entry_t entry, 12099 uint64 data, 12100 uint64 mask); 12101 12102 /* Get match criteria for MplsTerminatedValue qualifier. */ 12103 extern int bcm_field_qualify_MplsTerminatedValue_get( 12104 int unit, 12105 bcm_field_entry_t entry, 12106 uint64 *data, 12107 uint64 *mask); 12108 12109 /* Set match criteria for IpTunnelValue qualifier. */ 12110 extern int bcm_field_qualify_IpTunnelValue( 12111 int unit, 12112 bcm_field_entry_t entry, 12113 uint64 data, 12114 uint64 mask); 12115 12116 /* Get match criteria for IpTunnelValue qualifier. */ 12117 extern int bcm_field_qualify_IpTunnelValue_get( 12118 int unit, 12119 bcm_field_entry_t entry, 12120 uint64 *data, 12121 uint64 *mask); 12122 12123 /* Set match criteria for L2SrcValue qualifier. */ 12124 extern int bcm_field_qualify_L2SrcValue( 12125 int unit, 12126 bcm_field_entry_t entry, 12127 uint64 data, 12128 uint64 mask); 12129 12130 /* Get match criteria for L2SrcValue qualifier. */ 12131 extern int bcm_field_qualify_L2SrcValue_get( 12132 int unit, 12133 bcm_field_entry_t entry, 12134 uint64 *data, 12135 uint64 *mask); 12136 12137 /* Set match criteria for L2DestValue qualifier. */ 12138 extern int bcm_field_qualify_L2DestValue( 12139 int unit, 12140 bcm_field_entry_t entry, 12141 uint64 data, 12142 uint64 mask); 12143 12144 /* Get match criteria for L2DestValue qualifier. */ 12145 extern int bcm_field_qualify_L2DestValue_get( 12146 int unit, 12147 bcm_field_entry_t entry, 12148 uint64 *data, 12149 uint64 *mask); 12150 12151 /* Set match criteria for L3SrcRouteValue qualifier. */ 12152 extern int bcm_field_qualify_L3SrcRouteValue( 12153 int unit, 12154 bcm_field_entry_t entry, 12155 uint64 data, 12156 uint64 mask); 12157 12158 /* Get match criteria for L3SrcRouteValue qualifier. */ 12159 extern int bcm_field_qualify_L3SrcRouteValue_get( 12160 int unit, 12161 bcm_field_entry_t entry, 12162 uint64 *data, 12163 uint64 *mask); 12164 12165 /* Set match criteria for L3DestRouteValue qualifier. */ 12166 extern int bcm_field_qualify_L3DestRouteValue( 12167 int unit, 12168 bcm_field_entry_t entry, 12169 uint64 data, 12170 uint64 mask); 12171 12172 /* Get match criteria for L3DestRouteValue qualifier. */ 12173 extern int bcm_field_qualify_L3DestRouteValue_get( 12174 int unit, 12175 bcm_field_entry_t entry, 12176 uint64 *data, 12177 uint64 *mask); 12178 12179 /* Set match criteria for IpmcValue qualifier. */ 12180 extern int bcm_field_qualify_IpmcValue( 12181 int unit, 12182 bcm_field_entry_t entry, 12183 uint64 data, 12184 uint64 mask); 12185 12186 /* Get match criteria for IpmcValue qualifier. */ 12187 extern int bcm_field_qualify_IpmcValue_get( 12188 int unit, 12189 bcm_field_entry_t entry, 12190 uint64 *data, 12191 uint64 *mask); 12192 12193 /* Set match criteria for CascadedKeyValue qualifier. */ 12194 extern int bcm_field_qualify_CascadedKeyValue( 12195 int unit, 12196 bcm_field_entry_t entry, 12197 uint32 data, 12198 uint32 mask); 12199 12200 /* Get match criteria for CascadedKeyValue qualifier. */ 12201 extern int bcm_field_qualify_CascadedKeyValue_get( 12202 int unit, 12203 bcm_field_entry_t entry, 12204 uint32 *data, 12205 uint32 *mask); 12206 12207 /* Set match criteria for IsEqualValue qualifier. */ 12208 extern int bcm_field_qualify_IsEqualValue( 12209 int unit, 12210 bcm_field_entry_t entry, 12211 uint8 data, 12212 uint8 mask); 12213 12214 /* Get match criteria for IsEqualValue qualifier. */ 12215 extern int bcm_field_qualify_IsEqualValue_get( 12216 int unit, 12217 bcm_field_entry_t entry, 12218 uint8 *data, 12219 uint8 *mask); 12220 12221 /* Set match criteria for LearnSrcMac qualifier. */ 12222 extern int bcm_field_qualify_LearnSrcMac( 12223 int unit, 12224 bcm_field_entry_t entry, 12225 bcm_mac_t data, 12226 bcm_mac_t mask); 12227 12228 /* Get match criteria for LearnSrcMac qualifier. */ 12229 extern int bcm_field_qualify_LearnSrcMac_get( 12230 int unit, 12231 bcm_field_entry_t entry, 12232 bcm_mac_t *data, 12233 bcm_mac_t *mask); 12234 12235 /* Set match criteria for LearnVlan qualifier. */ 12236 extern int bcm_field_qualify_LearnVlan( 12237 int unit, 12238 bcm_field_entry_t entry, 12239 bcm_vlan_t data, 12240 bcm_vlan_t mask); 12241 12242 /* Get match criteria for LearnVlan qualifier. */ 12243 extern int bcm_field_qualify_LearnVlan_get( 12244 int unit, 12245 bcm_field_entry_t entry, 12246 bcm_vlan_t *data, 12247 bcm_vlan_t *mask); 12248 12249 /* Set match criteria for LearnSrcPort qualifier. */ 12250 extern int bcm_field_qualify_LearnSrcPort( 12251 int unit, 12252 bcm_field_entry_t entry, 12253 bcm_gport_t data); 12254 12255 /* Get match criteria for LearnSrcPort qualifier. */ 12256 extern int bcm_field_qualify_LearnSrcPort_get( 12257 int unit, 12258 bcm_field_entry_t entry, 12259 bcm_gport_t *data); 12260 12261 /* Set match criteria for LearnInVPort qualifier. */ 12262 extern int bcm_field_qualify_LearnInVPort( 12263 int unit, 12264 bcm_field_entry_t entry, 12265 uint32 data, 12266 uint32 mask); 12267 12268 /* Get match criteria for LearnInVPort qualifier. */ 12269 extern int bcm_field_qualify_LearnInVPort_get( 12270 int unit, 12271 bcm_field_entry_t entry, 12272 uint32 *data, 12273 uint32 *mask); 12274 12275 /* Set enable criteria for LearnExtension qualifier. */ 12276 extern int bcm_field_qualify_LearnExtension( 12277 int unit, 12278 bcm_field_entry_t entry, 12279 uint8 data); 12280 12281 /* Get enable status of LearnExtension qualifier. */ 12282 extern int bcm_field_qualify_LearnExtension_get( 12283 int unit, 12284 bcm_field_entry_t entry, 12285 uint8 *data); 12286 12287 /* Set match criteria for Stacking Route qualifier. */ 12288 extern int bcm_field_qualify_StackingRoute( 12289 int unit, 12290 bcm_field_entry_t entry, 12291 uint32 data, 12292 uint32 mask); 12293 12294 /* Get match criteria for Stacking Route qualifier. */ 12295 extern int bcm_field_qualify_StackingRoute_get( 12296 int unit, 12297 bcm_field_entry_t entry, 12298 uint32 *data, 12299 uint32 *mask); 12300 12301 /* Set match criteria for DSP Extension qualifier. */ 12302 extern int bcm_field_qualify_DstSysPortExt( 12303 int unit, 12304 bcm_field_entry_t entry, 12305 uint16 data, 12306 uint16 mask); 12307 12308 /* Get match criteria for DSP Extension qualifier. */ 12309 extern int bcm_field_qualify_DstSysPortExt_get( 12310 int unit, 12311 bcm_field_entry_t entry, 12312 uint16 *data, 12313 uint16 *mask); 12314 12315 /* Set match criteria for PacketSize qualifier. */ 12316 extern int bcm_field_qualify_PacketSize( 12317 int unit, 12318 bcm_field_entry_t entry, 12319 uint32 data, 12320 uint32 mask); 12321 12322 /* Get match criteria for PacketSize qualifier. */ 12323 extern int bcm_field_qualify_PacketSize_get( 12324 int unit, 12325 bcm_field_entry_t entry, 12326 uint32 *data, 12327 uint32 *mask); 12328 12329 /* Set match criteria for InnerSrcMac qualifier. */ 12330 extern int bcm_field_qualify_InnerSrcMac( 12331 int unit, 12332 bcm_field_entry_t entry, 12333 bcm_mac_t data, 12334 bcm_mac_t mask); 12335 12336 /* Get match criteria for InnerSrcMac qualifier. */ 12337 extern int bcm_field_qualify_InnerSrcMac_get( 12338 int unit, 12339 bcm_field_entry_t entry, 12340 bcm_mac_t *data, 12341 bcm_mac_t *mask); 12342 12343 /* Set match criteria for InnerDstMac qualifier. */ 12344 extern int bcm_field_qualify_InnerDstMac( 12345 int unit, 12346 bcm_field_entry_t entry, 12347 bcm_mac_t data, 12348 bcm_mac_t mask); 12349 12350 /* Get match criteria for InnerDstMac qualifier. */ 12351 extern int bcm_field_qualify_InnerDstMac_get( 12352 int unit, 12353 bcm_field_entry_t entry, 12354 bcm_mac_t *data, 12355 bcm_mac_t *mask); 12356 12357 /* Set match criteria for InnerEtherType qualifier. */ 12358 extern int bcm_field_qualify_InnerEtherType( 12359 int unit, 12360 bcm_field_entry_t entry, 12361 uint16 data, 12362 uint16 mask); 12363 12364 /* Get match criteria for InnerEtherType qualifier. */ 12365 extern int bcm_field_qualify_InnerEtherType_get( 12366 int unit, 12367 bcm_field_entry_t entry, 12368 uint16 *data, 12369 uint16 *mask); 12370 12371 /* Set match criteria for MplsLabel1 qualifier. */ 12372 extern int bcm_field_qualify_MplsLabel1( 12373 int unit, 12374 bcm_field_entry_t entry, 12375 uint32 data, 12376 uint32 mask); 12377 12378 /* Get match criteria for MplsLabel1 qualifier. */ 12379 extern int bcm_field_qualify_MplsLabel1_get( 12380 int unit, 12381 bcm_field_entry_t entry, 12382 uint32 *data, 12383 uint32 *mask); 12384 12385 /* Set match criteria for MplsLabel1Ttl qualifier. */ 12386 extern int bcm_field_qualify_MplsLabel1Ttl( 12387 int unit, 12388 bcm_field_entry_t entry, 12389 uint8 data, 12390 uint8 mask); 12391 12392 /* Get match criteria for MplsLabel1Ttl qualifier. */ 12393 extern int bcm_field_qualify_MplsLabel1Ttl_get( 12394 int unit, 12395 bcm_field_entry_t entry, 12396 uint8 *data, 12397 uint8 *mask); 12398 12399 /* Set match criteria for MplsLabel1Bos qualifier. */ 12400 extern int bcm_field_qualify_MplsLabel1Bos( 12401 int unit, 12402 bcm_field_entry_t entry, 12403 uint8 data, 12404 uint8 mask); 12405 12406 /* Get match criteria for MplsLabel1Bos qualifier. */ 12407 extern int bcm_field_qualify_MplsLabel1Bos_get( 12408 int unit, 12409 bcm_field_entry_t entry, 12410 uint8 *data, 12411 uint8 *mask); 12412 12413 /* Set match criteria for MplsLabel1Exp qualifier. */ 12414 extern int bcm_field_qualify_MplsLabel1Exp( 12415 int unit, 12416 bcm_field_entry_t entry, 12417 uint8 data, 12418 uint8 mask); 12419 12420 /* Get match criteria for MplsLabel1Exp qualifier. */ 12421 extern int bcm_field_qualify_MplsLabel1Exp_get( 12422 int unit, 12423 bcm_field_entry_t entry, 12424 uint8 *data, 12425 uint8 *mask); 12426 12427 /* Set match criteria for MplsLabel1Id qualifier. */ 12428 extern int bcm_field_qualify_MplsLabel1Id( 12429 int unit, 12430 bcm_field_entry_t entry, 12431 uint32 data, 12432 uint32 mask); 12433 12434 /* Get match criteria for MplsLabel1Id qualifier. */ 12435 extern int bcm_field_qualify_MplsLabel1Id_get( 12436 int unit, 12437 bcm_field_entry_t entry, 12438 uint32 *data, 12439 uint32 *mask); 12440 12441 /* Set match criteria for MplsLabel2 qualifier. */ 12442 extern int bcm_field_qualify_MplsLabel2( 12443 int unit, 12444 bcm_field_entry_t entry, 12445 uint32 data, 12446 uint32 mask); 12447 12448 /* Get match criteria for MplsLabel2 qualifier. */ 12449 extern int bcm_field_qualify_MplsLabel2_get( 12450 int unit, 12451 bcm_field_entry_t entry, 12452 uint32 *data, 12453 uint32 *mask); 12454 12455 /* Set match criteria for MplsLabel2Ttl qualifier. */ 12456 extern int bcm_field_qualify_MplsLabel2Ttl( 12457 int unit, 12458 bcm_field_entry_t entry, 12459 uint8 data, 12460 uint8 mask); 12461 12462 /* Get match criteria for MplsLabel2Ttl qualifier. */ 12463 extern int bcm_field_qualify_MplsLabel2Ttl_get( 12464 int unit, 12465 bcm_field_entry_t entry, 12466 uint8 *data, 12467 uint8 *mask); 12468 12469 /* Set match criteria for MplsLabel2Bos qualifier. */ 12470 extern int bcm_field_qualify_MplsLabel2Bos( 12471 int unit, 12472 bcm_field_entry_t entry, 12473 uint8 data, 12474 uint8 mask); 12475 12476 /* Get match criteria for MplsLabel2Bos qualifier. */ 12477 extern int bcm_field_qualify_MplsLabel2Bos_get( 12478 int unit, 12479 bcm_field_entry_t entry, 12480 uint8 *data, 12481 uint8 *mask); 12482 12483 /* Set match criteria for MplsLabel2Exp qualifier. */ 12484 extern int bcm_field_qualify_MplsLabel2Exp( 12485 int unit, 12486 bcm_field_entry_t entry, 12487 uint8 data, 12488 uint8 mask); 12489 12490 /* Get match criteria for MplsLabel2Exp qualifier. */ 12491 extern int bcm_field_qualify_MplsLabel2Exp_get( 12492 int unit, 12493 bcm_field_entry_t entry, 12494 uint8 *data, 12495 uint8 *mask); 12496 12497 /* Set match criteria for MplsLabel2Id qualifier. */ 12498 extern int bcm_field_qualify_MplsLabel2Id( 12499 int unit, 12500 bcm_field_entry_t entry, 12501 uint32 data, 12502 uint32 mask); 12503 12504 /* Get match criteria for MplsLabel2Id qualifier. */ 12505 extern int bcm_field_qualify_MplsLabel2Id_get( 12506 int unit, 12507 bcm_field_entry_t entry, 12508 uint32 *data, 12509 uint32 *mask); 12510 12511 /* Set match criteria for MplsLabel3 qualifier. */ 12512 extern int bcm_field_qualify_MplsLabel3( 12513 int unit, 12514 bcm_field_entry_t entry, 12515 uint32 data, 12516 uint32 mask); 12517 12518 /* Get match criteria for MplsLabel3 qualifier. */ 12519 extern int bcm_field_qualify_MplsLabel3_get( 12520 int unit, 12521 bcm_field_entry_t entry, 12522 uint32 *data, 12523 uint32 *mask); 12524 12525 /* Set match criteria for MplsLabel3Ttl qualifier. */ 12526 extern int bcm_field_qualify_MplsLabel3Ttl( 12527 int unit, 12528 bcm_field_entry_t entry, 12529 uint8 data, 12530 uint8 mask); 12531 12532 /* Get match criteria for MplsLabel3Ttl qualifier. */ 12533 extern int bcm_field_qualify_MplsLabel3Ttl_get( 12534 int unit, 12535 bcm_field_entry_t entry, 12536 uint8 *data, 12537 uint8 *mask); 12538 12539 /* Set match criteria for MplsLabel3Bos qualifier. */ 12540 extern int bcm_field_qualify_MplsLabel3Bos( 12541 int unit, 12542 bcm_field_entry_t entry, 12543 uint8 data, 12544 uint8 mask); 12545 12546 /* Get match criteria for MplsLabel3Bos qualifier. */ 12547 extern int bcm_field_qualify_MplsLabel3Bos_get( 12548 int unit, 12549 bcm_field_entry_t entry, 12550 uint8 *data, 12551 uint8 *mask); 12552 12553 /* Set match criteria for MplsLabel3Exp qualifier. */ 12554 extern int bcm_field_qualify_MplsLabel3Exp( 12555 int unit, 12556 bcm_field_entry_t entry, 12557 uint8 data, 12558 uint8 mask); 12559 12560 /* Get match criteria for MplsLabel3Exp qualifier. */ 12561 extern int bcm_field_qualify_MplsLabel3Exp_get( 12562 int unit, 12563 bcm_field_entry_t entry, 12564 uint8 *data, 12565 uint8 *mask); 12566 12567 /* Set match criteria for MplsLabel3Id qualifier. */ 12568 extern int bcm_field_qualify_MplsLabel3Id( 12569 int unit, 12570 bcm_field_entry_t entry, 12571 uint32 data, 12572 uint32 mask); 12573 12574 /* Get match criteria for MplsLabel3Id qualifier. */ 12575 extern int bcm_field_qualify_MplsLabel3Id_get( 12576 int unit, 12577 bcm_field_entry_t entry, 12578 uint32 *data, 12579 uint32 *mask); 12580 12581 /* Set match criteria for ExactMatchHitStatus qualifier. */ 12582 extern int bcm_field_qualify_ExactMatchHitStatus( 12583 int unit, 12584 bcm_field_entry_t entry, 12585 int group_pri, 12586 uint8 data, 12587 uint8 mask); 12588 12589 /* Get match criteria for ExactMatchHitStatus qualifier. */ 12590 extern int bcm_field_qualify_ExactMatchHitStatus_get( 12591 int unit, 12592 bcm_field_entry_t entry, 12593 int group_pri, 12594 uint8 *data, 12595 uint8 *mask); 12596 12597 /* Set match criteria for ExactMatchActionClassId qualifier. */ 12598 extern int bcm_field_qualify_ExactMatchActionClassId( 12599 int unit, 12600 bcm_field_entry_t entry, 12601 int group_pri, 12602 uint32 data, 12603 uint32 mask); 12604 12605 /* Get match criteria for ExactMatchActionClassId qualifier. */ 12606 extern int bcm_field_qualify_ExactMatchActionClassId_get( 12607 int unit, 12608 bcm_field_entry_t entry, 12609 int group_pri, 12610 uint32 *data, 12611 uint32 *mask); 12612 12613 /* Set match criteria for ExactMatchGroupClassId qualifier. */ 12614 extern int bcm_field_qualify_ExactMatchGroupClassId( 12615 int unit, 12616 bcm_field_entry_t entry, 12617 int group_pri, 12618 bcm_field_group_t group); 12619 12620 /* Add action core specific parameters to a specified entry. */ 12621 extern int bcm_field_action_config_add( 12622 int unit, 12623 bcm_field_entry_t entry, 12624 bcm_field_action_t action, 12625 int core_config_arr_len, 12626 bcm_field_action_core_config_t *core_config_arr); 12627 12628 /* Get action core specific parameters from a specified entry. */ 12629 extern int bcm_field_action_config_get( 12630 int unit, 12631 bcm_field_entry_t entry, 12632 bcm_field_action_t action, 12633 int core_config_arr_len, 12634 bcm_field_action_core_config_t *core_config_arr); 12635 12636 /* Given low level action, get the BCM actions and stages which use it. */ 12637 extern int bcm_field_internal_to_bcm_action_map( 12638 int unit, 12639 uint32 flags, 12640 int internal_action, 12641 uint32 bcm_action_size, 12642 bcm_field_internal_to_bcm_map_t *bcm_action_stage, 12643 uint32 *bcm_action_size_actual); 12644 12645 /* 12646 * Set new width (in bits) to a specific action. Width may be required to 12647 * be the default value. See 'flags' 12648 */ 12649 extern int bcm_field_action_width_set( 12650 int unit, 12651 uint32 flags, 12652 int internal_action, 12653 uint32 width); 12654 12655 /* 12656 * Get width (in bits) of specific action. Width may be required to be 12657 * the default value. See 'flags' 12658 */ 12659 extern int bcm_field_action_width_get( 12660 int unit, 12661 uint32 flags, 12662 int internal_action, 12663 uint32 *width_p); 12664 12665 /* Get match criteria for ExactMatchGroupClassId qualifier. */ 12666 extern int bcm_field_qualify_ExactMatchGroupClassId_get( 12667 int unit, 12668 bcm_field_entry_t entry, 12669 int group_pri, 12670 bcm_field_group_t *group); 12671 12672 /* Set match criteria for Vlan Action ID. */ 12673 extern int bcm_field_qualify_VlanAction( 12674 int unit, 12675 bcm_field_entry_t entry, 12676 uint32 data, 12677 uint32 mask); 12678 12679 /* Get match criteria for Vlan Action ID qualifier. */ 12680 extern int bcm_field_qualify_VlanAction_get( 12681 int unit, 12682 bcm_field_entry_t entry, 12683 uint32 *data, 12684 uint32 *mask); 12685 12686 /* Set match criteria for ECMP groups with Overlay flag. */ 12687 extern int bcm_field_qualify_DstMultipathOverlay( 12688 int unit, 12689 bcm_field_entry_t entry, 12690 bcm_if_t data, 12691 bcm_if_t mask); 12692 12693 /* Get match criteria for ECMP groups with Overlay flag. */ 12694 extern int bcm_field_qualify_DstMultipathOverlay_get( 12695 int unit, 12696 bcm_field_entry_t entry, 12697 bcm_if_t *data, 12698 bcm_if_t *mask); 12699 12700 /* Set match criteria for ECMP groups with Underlay flag. */ 12701 extern int bcm_field_qualify_DstMultipathUnderlay( 12702 int unit, 12703 bcm_field_entry_t entry, 12704 bcm_if_t data, 12705 bcm_if_t mask); 12706 12707 /* Get match criteria for ECMP groups with Underlay flag. */ 12708 extern int bcm_field_qualify_DstMultipathUnderlay_get( 12709 int unit, 12710 bcm_field_entry_t entry, 12711 bcm_if_t *data, 12712 bcm_if_t *mask); 12713 12714 /* Add an action to a field entry. */ 12715 extern int bcm_field_action_add( 12716 int unit, 12717 bcm_field_entry_t entry, 12718 bcm_field_action_t action, 12719 uint32 param0, 12720 uint32 param1); 12721 12722 /* Delete an action from a field entry. */ 12723 extern int bcm_field_action_delete( 12724 int unit, 12725 bcm_field_entry_t entry, 12726 bcm_field_action_t action, 12727 uint32 param0, 12728 uint32 param1); 12729 12730 /* Retrieve the class size for given qualifier. */ 12731 extern int bcm_field_class_size_get( 12732 int unit, 12733 bcm_field_qualify_t qual, 12734 uint16 *class_size); 12735 12736 /* Add an class action to a field entry. */ 12737 extern int bcm_field_action_class_add( 12738 int unit, 12739 bcm_field_entry_t entry, 12740 bcm_field_class_info_t *class_info); 12741 12742 /* 12743 * Retrieve the parameters for an class action previously added to a 12744 * field entry. 12745 */ 12746 extern int bcm_field_action_class_get( 12747 int unit, 12748 bcm_field_entry_t entry, 12749 bcm_field_class_info_t *class_info); 12750 12751 /* Add an action to a field entry. */ 12752 extern int bcm_field_action_mac_add( 12753 int unit, 12754 bcm_field_entry_t entry, 12755 bcm_field_action_t action, 12756 bcm_mac_t mac); 12757 12758 /* Add an action to a field entry. */ 12759 extern int bcm_field_action_ports_add( 12760 int unit, 12761 bcm_field_entry_t entry, 12762 bcm_field_action_t action, 12763 bcm_pbmp_t pbmp); 12764 12765 /* 12766 * Retrieve the parameters for an action previously added to a field 12767 * entry. 12768 */ 12769 extern int bcm_field_action_get( 12770 int unit, 12771 bcm_field_entry_t entry, 12772 bcm_field_action_t action, 12773 uint32 *param0, 12774 uint32 *param1); 12775 12776 /* 12777 * Retrieve the parameters for an action previously added to a field 12778 * entry. 12779 */ 12780 extern int bcm_field_action_mac_get( 12781 int unit, 12782 bcm_field_entry_t entry, 12783 bcm_field_action_t action, 12784 bcm_mac_t *mac); 12785 12786 /* 12787 * Retrieve the parameters for an action previously added to a field 12788 * entry. 12789 */ 12790 extern int bcm_field_action_ports_get( 12791 int unit, 12792 bcm_field_entry_t entry, 12793 bcm_field_action_t action, 12794 bcm_pbmp_t *pbmp); 12795 12796 /* 12797 * Remove an action from a field entry. Same as bcm_field_action_delete 12798 * for actions without parameters. 12799 */ 12800 extern int bcm_field_action_remove( 12801 int unit, 12802 bcm_field_entry_t entry, 12803 bcm_field_action_t action); 12804 12805 /* Remove all actions from a field entry. */ 12806 extern int bcm_field_action_remove_all( 12807 int unit, 12808 bcm_field_entry_t entry); 12809 12810 #endif /* BCM_HIDE_DISPATCHABLE */ 12811 12812 /* Clear a bcm_field_extraction_field_t to reasonable default values */ 12813 extern void bcm_field_extraction_field_t_init( 12814 bcm_field_extraction_field_t *action); 12815 12816 /* Clear a bcm_field_extraction_action_t to reasonable default values */ 12817 extern void bcm_field_extraction_action_t_init( 12818 bcm_field_extraction_action_t *action); 12819 12820 #ifndef BCM_HIDE_DISPATCHABLE 12821 12822 /* 12823 * Add an extraction action to a specified direct extraction entry. Such 12824 * actions can be removed using bcm_field_action_remove. 12825 */ 12826 extern int bcm_field_direct_extraction_action_add( 12827 int unit, 12828 bcm_field_entry_t entry, 12829 bcm_field_extraction_action_t action, 12830 int count, 12831 bcm_field_extraction_field_t *extractions); 12832 12833 /* Get an extraction action from a direct extraction entry */ 12834 extern int bcm_field_direct_extraction_action_get( 12835 int unit, 12836 bcm_field_entry_t entry, 12837 bcm_field_extraction_action_t *action, 12838 int max_count, 12839 bcm_field_extraction_field_t *extractions, 12840 int *actual_count); 12841 12842 /* Create stat collection entity. */ 12843 extern int bcm_field_stat_create( 12844 int unit, 12845 bcm_field_group_t group, 12846 int nstat, 12847 bcm_field_stat_t *stat_arr, 12848 int *stat_id); 12849 12850 /* Create stat collection entity with specified ID. */ 12851 extern int bcm_field_stat_create_id( 12852 int unit, 12853 bcm_field_group_t group, 12854 int nstat, 12855 bcm_field_stat_t *stat_arr, 12856 int stat_id); 12857 12858 /* Provide stat counter ids associated with given field group */ 12859 extern int bcm_field_stat_id_get( 12860 int unit, 12861 bcm_field_group_t group, 12862 uint32 stat_id, 12863 uint32 *stat_counter_id); 12864 12865 /* Destroy stat collection entity. */ 12866 extern int bcm_field_stat_destroy( 12867 int unit, 12868 int stat_id); 12869 12870 /* 12871 * Get number of different statistics associated with stat collection 12872 * entity. 12873 */ 12874 extern int bcm_field_stat_size( 12875 int unit, 12876 int stat_id, 12877 int *stat_size); 12878 12879 /* Get enabled statistics for specific collection entity. */ 12880 extern int bcm_field_stat_config_get( 12881 int unit, 12882 int stat_id, 12883 int nstat, 12884 bcm_field_stat_t *stat_arr); 12885 12886 /* Set 64 bit counter value for specific statistic type. */ 12887 extern int bcm_field_stat_set( 12888 int unit, 12889 int stat_id, 12890 bcm_field_stat_t stat, 12891 uint64 value); 12892 12893 /* Set lower 32 bit counter value for specific statistic type. */ 12894 extern int bcm_field_stat_set32( 12895 int unit, 12896 int stat_id, 12897 bcm_field_stat_t stat, 12898 uint32 value); 12899 12900 /* Set 64 bit counter value for all statistics types. */ 12901 extern int bcm_field_stat_all_set( 12902 int unit, 12903 int stat_id, 12904 uint64 value); 12905 12906 /* Set lower 32 bit counter value for all statistic types. */ 12907 extern int bcm_field_stat_all_set32( 12908 int unit, 12909 int stat_id, 12910 uint32 value); 12911 12912 /* Get 64 bit counter value for specific statistic type. */ 12913 extern int bcm_field_stat_get( 12914 int unit, 12915 int stat_id, 12916 bcm_field_stat_t stat, 12917 uint64 *value); 12918 12919 /* Get 64 bit counter value for specific statistic type. */ 12920 extern int bcm_field_stat_sync_get( 12921 int unit, 12922 int stat_id, 12923 bcm_field_stat_t stat, 12924 uint64 *value); 12925 12926 /* Get lower 32 bit counter value for specific statistic type. */ 12927 extern int bcm_field_stat_get32( 12928 int unit, 12929 int stat_id, 12930 bcm_field_stat_t stat, 12931 uint32 *value); 12932 12933 /* Get lower 32 bit counter value for specific statistic type. */ 12934 extern int bcm_field_stat_sync_get32( 12935 int unit, 12936 int stat_id, 12937 bcm_field_stat_t stat, 12938 uint32 *value); 12939 12940 /* Get 64 bit counter values for multiple statistic types. */ 12941 extern int bcm_field_stat_multi_get( 12942 int unit, 12943 int stat_id, 12944 int nstat, 12945 bcm_field_stat_t *stat_arr, 12946 uint64 *value_arr); 12947 12948 /* Get lower 32 bit counter values for multiple statistic types. */ 12949 extern int bcm_field_stat_multi_get32( 12950 int unit, 12951 int stat_id, 12952 int nstat, 12953 bcm_field_stat_t *stat_arr, 12954 uint32 *value_arr); 12955 12956 /* Attach statistics entity to Field Processor entry. */ 12957 extern int bcm_field_entry_stat_attach( 12958 int unit, 12959 bcm_field_entry_t entry, 12960 int stat_id); 12961 12962 /* Attach statistics with stat action entity to Field Processor entry. */ 12963 extern int bcm_field_entry_stat_extended_attach( 12964 int unit, 12965 bcm_field_entry_t entry, 12966 int stat_id, 12967 bcm_field_stat_action_t stat_action); 12968 12969 /* Detach statistics entity from Field Processor entry. */ 12970 extern int bcm_field_entry_stat_detach( 12971 int unit, 12972 bcm_field_entry_t entry, 12973 int stat_id); 12974 12975 /* Get statistics entity attached to Field Processor entry. */ 12976 extern int bcm_field_entry_stat_get( 12977 int unit, 12978 bcm_field_entry_t entry, 12979 int *stat_id); 12980 12981 /* 12982 * Get statistics with stat action entity attached to Field Processor 12983 * entry. 12984 */ 12985 extern int bcm_field_entry_stat_extended_get( 12986 int unit, 12987 bcm_field_entry_t entry, 12988 int *stat_id, 12989 bcm_field_stat_action_t *stat_action); 12990 12991 #endif /* BCM_HIDE_DISPATCHABLE */ 12992 12993 /* Initialize Field Oam Stat Action Structure. */ 12994 extern void bcm_field_oam_stat_action_t_init( 12995 bcm_field_oam_stat_action_t *oam_action); 12996 12997 #ifndef BCM_HIDE_DISPATCHABLE 12998 12999 /* Add Oam Stat action to Field Processor entry. */ 13000 extern int bcm_field_oam_stat_action_add( 13001 int unit, 13002 bcm_field_entry_t entry, 13003 bcm_field_oam_stat_action_t *oam_stat_action); 13004 13005 /* Remove Oam Stat action from Field Processor entry. */ 13006 extern int bcm_field_oam_stat_action_delete( 13007 int unit, 13008 bcm_field_entry_t entry, 13009 bcm_field_oam_stat_action_t *oam_stat_action); 13010 13011 /* Remove all Oam Stat action from Field Processor entry. */ 13012 extern int bcm_field_oam_stat_action_delete_all( 13013 int unit, 13014 bcm_field_entry_t entry); 13015 13016 /* Get Oam Stat action from Field Processor entry. */ 13017 extern int bcm_field_oam_stat_action_get( 13018 int unit, 13019 bcm_field_entry_t entry, 13020 bcm_field_oam_stat_action_t *oam_stat_action); 13021 13022 /* Get all Oam Stat action from Field Processor entry. */ 13023 extern int bcm_field_oam_stat_action_get_all( 13024 int unit, 13025 bcm_field_entry_t entry, 13026 int oam_stat_max, 13027 bcm_field_oam_stat_action_t *oam_stat_action, 13028 int *oam_stat_count); 13029 13030 #endif /* BCM_HIDE_DISPATCHABLE */ 13031 13032 /* Initialize Field Qualifier LLC header structure. */ 13033 extern void bcm_field_llc_header_t_init( 13034 bcm_field_llc_header_t *llc_header); 13035 13036 /* Initialize Field Qualifier SNAP header structure. */ 13037 extern void bcm_field_snap_header_t_init( 13038 bcm_field_snap_header_t *snap_header); 13039 13040 /* Initialize the Field Qualifier Set structure. */ 13041 extern void bcm_field_qset_t_init( 13042 bcm_field_qset_t *qset); 13043 13044 /* Initialize the Field Action Set structure. */ 13045 extern void bcm_field_aset_t_init( 13046 bcm_field_aset_t *aset); 13047 13048 /* Initialize the Field Presel Set structure. */ 13049 extern void bcm_field_presel_set_t_init( 13050 bcm_field_presel_set_t *presel_set); 13051 13052 /* Initialize the Field Group Status structure. */ 13053 extern void bcm_field_group_status_t_init( 13054 bcm_field_group_status_t *fgroup); 13055 13056 #ifndef BCM_HIDE_DISPATCHABLE 13057 13058 #if defined(BROADCOM_DEBUG) 13059 /* Show current software state of the field module. */ 13060 extern int bcm_field_show( 13061 int unit, 13062 const char *pfx); 13063 #endif 13064 13065 #if defined(BROADCOM_DEBUG) 13066 /* Show contents of a field entry. */ 13067 extern int bcm_field_entry_dump( 13068 int unit, 13069 bcm_field_entry_t entry); 13070 #endif 13071 13072 #if defined(BROADCOM_DEBUG) 13073 /* Show contents of a field group. */ 13074 extern int bcm_field_group_dump( 13075 int unit, 13076 bcm_field_group_t group); 13077 #endif 13078 13079 #endif /* BCM_HIDE_DISPATCHABLE */ 13080 13081 /* SDK 5.2.0 backward compatibility. */ 13082 #define bcmFieldQualifyOutVlan bcmFieldQualifyOuterVlan 13083 #define bcmFieldQualifyInVlan bcmFieldQualifyInnerVlan 13084 13085 /* SDK 5.2.0 backward compatibility. */ 13086 #define bcm_field_qualify_OutVlan bcm_field_qualify_OuterVlan 13087 #define bcm_field_qualify_InVlan bcm_field_qualify_InnerVlan 13088 13089 #ifndef BCM_HIDE_DISPATCHABLE 13090 13091 /* Attach counters entries to a field group */ 13092 extern int bcm_field_stat_attach( 13093 int unit, 13094 bcm_field_group_t group, 13095 uint32 stat_counter_id, 13096 uint32 *stat_id); 13097 13098 /* Detach counters entries to a field group. */ 13099 extern int bcm_field_stat_detach( 13100 int unit, 13101 uint32 stat_id); 13102 13103 /* Get counter statistic values for a field entity */ 13104 extern int bcm_field_stat_counter_get( 13105 int unit, 13106 uint32 stat_id, 13107 bcm_field_stat_t stat, 13108 uint32 num_entries, 13109 uint32 *counter_indexes, 13110 bcm_stat_value_t *counter_values); 13111 13112 /* Get counter statistic values for a field entity */ 13113 extern int bcm_field_stat_counter_sync_get( 13114 int unit, 13115 uint32 stat_id, 13116 bcm_field_stat_t stat, 13117 uint32 num_entries, 13118 uint32 *counter_indexes, 13119 bcm_stat_value_t *counter_values); 13120 13121 /* Set counter statistic values for a field entity */ 13122 extern int bcm_field_stat_counter_set( 13123 int unit, 13124 uint32 stat_id, 13125 bcm_field_stat_t stat, 13126 uint32 num_entries, 13127 uint32 *counter_indexes, 13128 bcm_stat_value_t *counter_values); 13129 13130 /* 13131 * Create a preselection specification for a specific stage using a 13132 * specific ID. 13133 */ 13134 extern int bcm_field_presel_create_stage_id( 13135 int unit, 13136 bcm_field_stage_t stage, 13137 bcm_field_presel_t presel_id); 13138 13139 /* Destroy a preselection specification. */ 13140 extern int bcm_field_presel_destroy( 13141 int unit, 13142 bcm_field_presel_t presel_id); 13143 13144 /* Associate a set of preselectors with a group. */ 13145 extern int bcm_field_group_presel_set( 13146 int unit, 13147 bcm_field_group_t group, 13148 bcm_field_presel_set_t *presel); 13149 13150 /* Get the set of preselectors associated with a group. */ 13151 extern int bcm_field_group_presel_get( 13152 int unit, 13153 bcm_field_group_t group, 13154 bcm_field_presel_set_t *presel); 13155 13156 #endif /* BCM_HIDE_DISPATCHABLE */ 13157 13158 /* Field entry operation structure. */ 13159 typedef struct bcm_field_entry_oper_s { 13160 uint32 flags; /* Entry operation BCM_FIELD_ENTRY_OPER_XXX. */ 13161 bcm_field_entry_t entry_id; /* Entry identifier. */ 13162 } bcm_field_entry_oper_t; 13163 13164 /* Parameter for bcm_field_entry_oper_t. */ 13165 #define BCM_FIELD_ENTRY_OPER_BACKUP (1 << 0) /* Backup up an entry 13166 configuration. */ 13167 #define BCM_FIELD_ENTRY_OPER_RESTORE (1 << 1) /* Restore backed up entry 13168 configuration. */ 13169 #define BCM_FIELD_ENTRY_OPER_CLEANUP (1 << 2) /* Free resources used by 13170 back entry. */ 13171 #define BCM_FIELD_ENTRY_OPER_MASK (0x7) /* Mask of valid entry 13172 operations supported. */ 13173 13174 /* Initialize field entry operation structure. */ 13175 extern void bcm_field_entry_oper_t_init( 13176 bcm_field_entry_oper_t *entry_oper); 13177 13178 #ifndef BCM_HIDE_DISPATCHABLE 13179 13180 /* Perform operation on a field processor entry. */ 13181 extern int bcm_field_entry_operation( 13182 int unit, 13183 bcm_field_entry_oper_t *entry_oper); 13184 13185 /* Perform operation on a field processor entry. */ 13186 extern int bcm_field_qualify_data_get( 13187 int unit, 13188 bcm_field_entry_t eid, 13189 int qual_id, 13190 uint16 length_max, 13191 uint8 *data, 13192 uint8 *mask, 13193 uint16 *length); 13194 13195 extern int bcm_field_range_multi_create( 13196 int unit, 13197 bcm_field_range_t *range_id, 13198 uint32 create_flags, 13199 int count, 13200 uint32 *range_flags, 13201 uint32 *min_value, 13202 uint32 *max_value); 13203 13204 extern int bcm_field_range_multi_get( 13205 int unit, 13206 bcm_field_range_t range_id, 13207 int max_count, 13208 uint32 *range_flags, 13209 uint32 *minimum_value, 13210 uint32 *maxamum_value, 13211 int *actual_count); 13212 13213 /* 13214 * Set match criteria for bcmFieldQualifyMplsOuterLabelPop 13215 * qualifier in the field entry. 13216 */ 13217 extern int bcm_field_qualify_MplsOuterLabelPop( 13218 int unit, 13219 bcm_field_entry_t entry, 13220 uint8 data, 13221 uint8 mask); 13222 13223 /* 13224 * Get match criteria for bcmFieldQualifyMplsOuterLabelPop 13225 * qualifier in the field entry. 13226 */ 13227 extern int bcm_field_qualify_MplsOuterLabelPop_get( 13228 int unit, 13229 bcm_field_entry_t entry, 13230 uint8 *data, 13231 uint8 *mask); 13232 13233 /* 13234 * Set match criteria for 13235 * bcmFieldQualifyMplsStationHitTunnelUnterminated 13236 * qualifier in the field entry. 13237 */ 13238 extern int bcm_field_qualify_MplsStationHitTunnelUnterminated( 13239 int unit, 13240 bcm_field_entry_t entry, 13241 uint8 data, 13242 uint8 mask); 13243 13244 /* 13245 * Get match criteria for 13246 * bcmFieldQualifyMplsStationHitTunnelUnterminated 13247 * qualifier in the field entry. 13248 */ 13249 extern int bcm_field_qualify_MplsStationHitTunnelUnterminated_get( 13250 int unit, 13251 bcm_field_entry_t entry, 13252 uint8 *data, 13253 uint8 *mask); 13254 13255 /* 13256 * Set match criteria for bcmFieldQualifyIngressClassField 13257 * qualifier in the field entry. 13258 */ 13259 extern int bcm_field_qualify_IngressClassField( 13260 int unit, 13261 bcm_field_entry_t entry, 13262 uint32 data, 13263 uint32 mask); 13264 13265 /* 13266 * Get match criteria for bcmFieldQualifyIngressClassField 13267 * qualifier in the field entry. 13268 */ 13269 extern int bcm_field_qualify_IngressClassField_get( 13270 int unit, 13271 bcm_field_entry_t entry, 13272 uint32 *data, 13273 uint32 *mask); 13274 13275 /* 13276 * Set match criteria for bcmFieldQualifyIngressInterfaceClassPort 13277 * qualifier in the field entry. 13278 */ 13279 extern int bcm_field_qualify_IngressInterfaceClassPort( 13280 int unit, 13281 bcm_field_entry_t entry, 13282 uint32 data, 13283 uint32 mask); 13284 13285 /* 13286 * Get match criteria for bcmFieldQualifyIngressInterfaceClassPort 13287 * qualifier in the field entry. 13288 */ 13289 extern int bcm_field_qualify_IngressInterfaceClassPort_get( 13290 int unit, 13291 bcm_field_entry_t entry, 13292 uint32 *data, 13293 uint32 *mask); 13294 13295 /* 13296 * Set match criteria for bcmFieldQualifyExternalValue0 13297 * qualifier in the field entry. 13298 */ 13299 extern int bcm_field_qualify_ExternalValue0( 13300 int unit, 13301 bcm_field_entry_t entry, 13302 uint64 data, 13303 uint64 mask); 13304 13305 /* 13306 * Get match criteria for bcmFieldQualifyExternalValue0 13307 * qualifier in the field entry. 13308 */ 13309 extern int bcm_field_qualify_ExternalValue0_get( 13310 int unit, 13311 bcm_field_entry_t entry, 13312 uint64 *data, 13313 uint64 *mask); 13314 13315 /* 13316 * Set match criteria for bcmFieldQualifyExternalValue1 13317 * qualifier in the field entry. 13318 */ 13319 extern int bcm_field_qualify_ExternalValue1( 13320 int unit, 13321 bcm_field_entry_t entry, 13322 uint64 data, 13323 uint64 mask); 13324 13325 /* 13326 * Get match criteria for bcmFieldQualifyExternalValue1 13327 * qualifier in the field entry. 13328 */ 13329 extern int bcm_field_qualify_ExternalValue1_get( 13330 int unit, 13331 bcm_field_entry_t entry, 13332 uint64 *data, 13333 uint64 *mask); 13334 13335 /* 13336 * Set match criteria for bcmFieldQualifyExternalValue2 13337 * qualifier in the field entry. 13338 */ 13339 extern int bcm_field_qualify_ExternalValue2( 13340 int unit, 13341 bcm_field_entry_t entry, 13342 uint64 data, 13343 uint64 mask); 13344 13345 /* 13346 * Get match criteria for bcmFieldQualifyExternalValue2 13347 * qualifier in the field entry. 13348 */ 13349 extern int bcm_field_qualify_ExternalValue2_get( 13350 int unit, 13351 bcm_field_entry_t entry, 13352 uint64 *data, 13353 uint64 *mask); 13354 13355 /* 13356 * Set match criteria for bcmFieldQualifyExternalValue3 13357 * qualifier in the field entry. 13358 */ 13359 extern int bcm_field_qualify_ExternalValue3( 13360 int unit, 13361 bcm_field_entry_t entry, 13362 uint64 data, 13363 uint64 mask); 13364 13365 /* 13366 * Get match criteria for bcmFieldQualifyExternalValue3 13367 * qualifier in the field entry. 13368 */ 13369 extern int bcm_field_qualify_ExternalValue3_get( 13370 int unit, 13371 bcm_field_entry_t entry, 13372 uint64 *data, 13373 uint64 *mask); 13374 13375 /* 13376 * Set match criteria for bcmFieldQualifyExternalValue4 13377 * qualifier in the field entry. 13378 */ 13379 extern int bcm_field_qualify_ExternalValue4( 13380 int unit, 13381 bcm_field_entry_t entry, 13382 uint64 data, 13383 uint64 mask); 13384 13385 /* 13386 * Get match criteria for bcmFieldQualifyExternalValue4 13387 * qualifier in the field entry. 13388 */ 13389 extern int bcm_field_qualify_ExternalValue4_get( 13390 int unit, 13391 bcm_field_entry_t entry, 13392 uint64 *data, 13393 uint64 *mask); 13394 13395 /* 13396 * Set match criteria for bcmFieldQualifyExternalValue5 13397 * qualifier in the field entry. 13398 */ 13399 extern int bcm_field_qualify_ExternalValue5( 13400 int unit, 13401 bcm_field_entry_t entry, 13402 uint64 data, 13403 uint64 mask); 13404 13405 /* 13406 * Get match criteria for bcmFieldQualifyExternalValue5 13407 * qualifier in the field entry. 13408 */ 13409 extern int bcm_field_qualify_ExternalValue5_get( 13410 int unit, 13411 bcm_field_entry_t entry, 13412 uint64 *data, 13413 uint64 *mask); 13414 13415 /* 13416 * Set match criteria for bcmFieldQualifyExternalValue6 13417 * qualifier in the field entry. 13418 */ 13419 extern int bcm_field_qualify_ExternalValue6( 13420 int unit, 13421 bcm_field_entry_t entry, 13422 uint64 data, 13423 uint64 mask); 13424 13425 /* 13426 * Get match criteria for bcmFieldQualifyExternalValue6 13427 * qualifier in the field entry. 13428 */ 13429 extern int bcm_field_qualify_ExternalValue6_get( 13430 int unit, 13431 bcm_field_entry_t entry, 13432 uint64 *data, 13433 uint64 *mask); 13434 13435 /* 13436 * Set match criteria for bcmFieldQualifyExternalValue7 13437 * qualifier in the field entry. 13438 */ 13439 extern int bcm_field_qualify_ExternalValue7( 13440 int unit, 13441 bcm_field_entry_t entry, 13442 uint64 data, 13443 uint64 mask); 13444 13445 /* 13446 * Get match criteria for bcmFieldQualifyExternalValue7 13447 * qualifier in the field entry. 13448 */ 13449 extern int bcm_field_qualify_ExternalValue7_get( 13450 int unit, 13451 bcm_field_entry_t entry, 13452 uint64 *data, 13453 uint64 *mask); 13454 13455 /* 13456 * Set match criteria for bcmFieldQualifyExternalHit0 13457 * qualifier in the field entry. 13458 */ 13459 extern int bcm_field_qualify_ExternalHit0( 13460 int unit, 13461 bcm_field_entry_t entry, 13462 uint8 data, 13463 uint8 mask); 13464 13465 /* 13466 * Get match criteria for bcmFieldQualifyExternalHit0 13467 * qualifier in the field entry. 13468 */ 13469 extern int bcm_field_qualify_ExternalHit0_get( 13470 int unit, 13471 bcm_field_entry_t entry, 13472 uint8 *data, 13473 uint8 *mask); 13474 13475 /* 13476 * Set match criteria for bcmFieldQualifyExternalHit1 13477 * qualifier in the field entry. 13478 */ 13479 extern int bcm_field_qualify_ExternalHit1( 13480 int unit, 13481 bcm_field_entry_t entry, 13482 uint8 data, 13483 uint8 mask); 13484 13485 /* 13486 * Get match criteria for bcmFieldQualifyExternalHit1 13487 * qualifier in the field entry. 13488 */ 13489 extern int bcm_field_qualify_ExternalHit1_get( 13490 int unit, 13491 bcm_field_entry_t entry, 13492 uint8 *data, 13493 uint8 *mask); 13494 13495 /* 13496 * Set match criteria for bcmFieldQualifyExternalHit2 13497 * qualifier in the field entry. 13498 */ 13499 extern int bcm_field_qualify_ExternalHit2( 13500 int unit, 13501 bcm_field_entry_t entry, 13502 uint8 data, 13503 uint8 mask); 13504 13505 /* 13506 * Get match criteria for bcmFieldQualifyExternalHit2 13507 * qualifier in the field entry. 13508 */ 13509 extern int bcm_field_qualify_ExternalHit2_get( 13510 int unit, 13511 bcm_field_entry_t entry, 13512 uint8 *data, 13513 uint8 *mask); 13514 13515 /* 13516 * Set match criteria for bcmFieldQualifyExternalHit3 13517 * qualifier in the field entry. 13518 */ 13519 extern int bcm_field_qualify_ExternalHit3( 13520 int unit, 13521 bcm_field_entry_t entry, 13522 uint8 data, 13523 uint8 mask); 13524 13525 /* 13526 * Get match criteria for bcmFieldQualifyExternalHit3 13527 * qualifier in the field entry. 13528 */ 13529 extern int bcm_field_qualify_ExternalHit3_get( 13530 int unit, 13531 bcm_field_entry_t entry, 13532 uint8 *data, 13533 uint8 *mask); 13534 13535 /* 13536 * Set match criteria for bcmFieldQualifyExternalHit4 13537 * qualifier in the field entry. 13538 */ 13539 extern int bcm_field_qualify_ExternalHit4( 13540 int unit, 13541 bcm_field_entry_t entry, 13542 uint8 data, 13543 uint8 mask); 13544 13545 /* 13546 * Get match criteria for bcmFieldQualifyExternalHit4 13547 * qualifier in the field entry. 13548 */ 13549 extern int bcm_field_qualify_ExternalHit4_get( 13550 int unit, 13551 bcm_field_entry_t entry, 13552 uint8 *data, 13553 uint8 *mask); 13554 13555 /* 13556 * Set match criteria for bcmFieldQualifyExternalHit5 13557 * qualifier in the field entry. 13558 */ 13559 extern int bcm_field_qualify_ExternalHit5( 13560 int unit, 13561 bcm_field_entry_t entry, 13562 uint8 data, 13563 uint8 mask); 13564 13565 /* 13566 * Get match criteria for bcmFieldQualifyExternalHit5 13567 * qualifier in the field entry. 13568 */ 13569 extern int bcm_field_qualify_ExternalHit5_get( 13570 int unit, 13571 bcm_field_entry_t entry, 13572 uint8 *data, 13573 uint8 *mask); 13574 13575 /* 13576 * Set match criteria for bcmFieldQualifyExternalHit6 13577 * qualifier in the field entry. 13578 */ 13579 extern int bcm_field_qualify_ExternalHit6( 13580 int unit, 13581 bcm_field_entry_t entry, 13582 uint8 data, 13583 uint8 mask); 13584 13585 /* 13586 * Get match criteria for bcmFieldQualifyExternalHit6 13587 * qualifier in the field entry. 13588 */ 13589 extern int bcm_field_qualify_ExternalHit6_get( 13590 int unit, 13591 bcm_field_entry_t entry, 13592 uint8 *data, 13593 uint8 *mask); 13594 13595 /* 13596 * Set match criteria for bcmFieldQualifyExternalHit7 13597 * qualifier in the field entry. 13598 */ 13599 extern int bcm_field_qualify_ExternalHit7( 13600 int unit, 13601 bcm_field_entry_t entry, 13602 uint8 data, 13603 uint8 mask); 13604 13605 /* 13606 * Get match criteria for bcmFieldQualifyExternalHit7 13607 * qualifier in the field entry. 13608 */ 13609 extern int bcm_field_qualify_ExternalHit7_get( 13610 int unit, 13611 bcm_field_entry_t entry, 13612 uint8 *data, 13613 uint8 *mask); 13614 13615 /* 13616 * Set match criteria for bcmFieldQualifyVpnUnknownDstMacDstPort 13617 * qualifier in the field entry. 13618 */ 13619 extern int bcm_field_qualify_VpnUnknownDstMacDstPort( 13620 int unit, 13621 bcm_field_entry_t entry, 13622 bcm_gport_t port_id); 13623 13624 /* 13625 * Get match criteria for bcmFieldQualifyVpnUnknownDstMacDstPort 13626 * qualifier in the field entry. 13627 */ 13628 extern int bcm_field_qualify_VpnUnknownDstMacDstPort_get( 13629 int unit, 13630 bcm_field_entry_t entry, 13631 bcm_gport_t *port_id); 13632 13633 /* 13634 * Set match criteria for bcmFieldQualifyVxlanNetworkId 13635 * qualifier in the field entry. 13636 */ 13637 extern int bcm_field_qualify_VxlanNetworkId( 13638 int unit, 13639 bcm_field_entry_t entry, 13640 uint32 data, 13641 uint32 mask); 13642 13643 /* 13644 * Get match criteria for bcmFieldQualifyVxlanNetworkId 13645 * qualifier in the field entry. 13646 */ 13647 extern int bcm_field_qualify_VxlanNetworkId_get( 13648 int unit, 13649 bcm_field_entry_t entry, 13650 uint32 *data, 13651 uint32 *mask); 13652 13653 /* 13654 * Set match criteria for bcmFieldQualifyVxlanFlags 13655 * qualifier in the field entry. 13656 */ 13657 extern int bcm_field_qualify_VxlanFlags( 13658 int unit, 13659 bcm_field_entry_t entry, 13660 uint8 data, 13661 uint8 mask); 13662 13663 /* 13664 * Get match criteria for bcmFieldQualifyVxlanFlags 13665 * qualifier in the field entry. 13666 */ 13667 extern int bcm_field_qualify_VxlanFlags_get( 13668 int unit, 13669 bcm_field_entry_t entry, 13670 uint8 *data, 13671 uint8 *mask); 13672 13673 /* 13674 * Set match criteria for bcmFieldQualifyNatNeeded 13675 * qualifier in the field entry. 13676 */ 13677 extern int bcm_field_qualify_NatNeeded( 13678 int unit, 13679 bcm_field_entry_t entry, 13680 uint8 data, 13681 uint8 mask); 13682 13683 /* 13684 * Get match criteria for bcmFieldQualifyNatNeeded 13685 * qualifier in the field entry. 13686 */ 13687 extern int bcm_field_qualify_NatNeeded_get( 13688 int unit, 13689 bcm_field_entry_t entry, 13690 uint8 *data, 13691 uint8 *mask); 13692 13693 /* 13694 * Set match criteria for bcmFieldQualifyNatDstRealmId 13695 * qualifier in the field entry. 13696 */ 13697 extern int bcm_field_qualify_NatDstRealmId( 13698 int unit, 13699 bcm_field_entry_t entry, 13700 uint8 data, 13701 uint8 mask); 13702 13703 /* 13704 * Get match criteria for bcmFieldQualifyNatDstRealmId 13705 * qualifier in the field entry. 13706 */ 13707 extern int bcm_field_qualify_NatDstRealmId_get( 13708 int unit, 13709 bcm_field_entry_t entry, 13710 uint8 *data, 13711 uint8 *mask); 13712 13713 /* 13714 * Set match criteria for bcmFieldQualifyNatSrcRealmId 13715 * qualifier in the field entry. 13716 */ 13717 extern int bcm_field_qualify_NatSrcRealmId( 13718 int unit, 13719 bcm_field_entry_t entry, 13720 uint8 data, 13721 uint8 mask); 13722 13723 /* 13724 * Get match criteria for bcmFieldQualifyNatSrcRealmId 13725 * qualifier in the field entry. 13726 */ 13727 extern int bcm_field_qualify_NatSrcRealmId_get( 13728 int unit, 13729 bcm_field_entry_t entry, 13730 uint8 *data, 13731 uint8 *mask); 13732 13733 /* 13734 * Set match criteria for bcmFieldQualifyIcmpError 13735 * qualifier in the field entry. 13736 */ 13737 extern int bcm_field_qualify_IcmpError( 13738 int unit, 13739 bcm_field_entry_t entry, 13740 uint8 data, 13741 uint8 mask); 13742 13743 /* 13744 * Get match criteria for bcmFieldQualifyIcmpError 13745 * qualifier in the field entry. 13746 */ 13747 extern int bcm_field_qualify_IcmpError_get( 13748 int unit, 13749 bcm_field_entry_t entry, 13750 uint8 *data, 13751 uint8 *mask); 13752 13753 /* 13754 * Set match criteria for bcmFieldQualifyTunnelId 13755 * qualifier in the field entry. 13756 */ 13757 extern int bcm_field_qualify_TunnelId( 13758 int unit, 13759 bcm_field_entry_t entry, 13760 uint32 data, 13761 uint32 mask); 13762 13763 /* 13764 * Get match criteria for bcmFieldQualifyTunnelId 13765 * qualifier in the field entry. 13766 */ 13767 extern int bcm_field_qualify_TunnelId_get( 13768 int unit, 13769 bcm_field_entry_t entry, 13770 uint32 *data, 13771 uint32 *mask); 13772 13773 /* 13774 * Set match criteria for bcmFieldQualifyArpSenderIp4 13775 * qualifier in the field entry. 13776 */ 13777 extern int bcm_field_qualify_ArpSenderIp4( 13778 int unit, 13779 bcm_field_entry_t entry, 13780 uint32 data, 13781 uint32 mask); 13782 13783 /* 13784 * Get match criteria for bcmFieldQualifyArpSenderIp4 13785 * qualifier in the field entry. 13786 */ 13787 extern int bcm_field_qualify_ArpSenderIp4_get( 13788 int unit, 13789 bcm_field_entry_t entry, 13790 uint32 *data, 13791 uint32 *mask); 13792 13793 /* 13794 * Set match criteria for bcmFieldQualifyArpTargetIp4 13795 * qualifier in the field entry. 13796 */ 13797 extern int bcm_field_qualify_ArpTargetIp4( 13798 int unit, 13799 bcm_field_entry_t entry, 13800 uint32 data, 13801 uint32 mask); 13802 13803 /* 13804 * Get match criteria for bcmFieldQualifyArpTargetIp4 13805 * qualifier in the field entry. 13806 */ 13807 extern int bcm_field_qualify_ArpTargetIp4_get( 13808 int unit, 13809 bcm_field_entry_t entry, 13810 uint32 *data, 13811 uint32 *mask); 13812 13813 /* 13814 * Set match criteria for bcmFieldQualifyArpOpcode 13815 * qualifier in the field entry. 13816 */ 13817 extern int bcm_field_qualify_ArpOpcode( 13818 int unit, 13819 bcm_field_entry_t entry, 13820 bcm_field_ArpOpcode_t data); 13821 13822 /* 13823 * Get match criteria for bcmFieldQualifyArpOpcode 13824 * qualifier in the field entry. 13825 */ 13826 extern int bcm_field_qualify_ArpOpcode_get( 13827 int unit, 13828 bcm_field_entry_t entry, 13829 bcm_field_ArpOpcode_t *data); 13830 13831 /* 13832 * Set match criteria for bcmFieldQualifyTranslatedOuterVlan 13833 * qualifier in the field entry. 13834 */ 13835 extern int bcm_field_qualify_TranslatedOuterVlan( 13836 int unit, 13837 bcm_field_entry_t entry, 13838 bcm_vlan_t data, 13839 bcm_vlan_t mask); 13840 13841 /* 13842 * Get match criteria for bcmFieldQualifyTranslatedOuterVlan 13843 * qualifier from the field entry. 13844 */ 13845 extern int bcm_field_qualify_TranslatedOuterVlan_get( 13846 int unit, 13847 bcm_field_entry_t entry, 13848 bcm_vlan_t *data, 13849 bcm_vlan_t *mask); 13850 13851 /* 13852 * Set match criteria for bcmFieldQualifyTranslatedOuterVlanId 13853 * qualifier in the field entry. 13854 */ 13855 extern int bcm_field_qualify_TranslatedOuterVlanId( 13856 int unit, 13857 bcm_field_entry_t entry, 13858 bcm_vlan_t data, 13859 bcm_vlan_t mask); 13860 13861 /* 13862 * Get match criteria for bcmFieldQualifyTranslatedOuterVlanId 13863 * qualifier from the field entry. 13864 */ 13865 extern int bcm_field_qualify_TranslatedOuterVlanId_get( 13866 int unit, 13867 bcm_field_entry_t entry, 13868 bcm_vlan_t *data, 13869 bcm_vlan_t *mask); 13870 13871 /* 13872 * Set match criteria for bcmFieldQualifyTranslatedOuterVlanPri 13873 * qualifier in the field entry. 13874 */ 13875 extern int bcm_field_qualify_TranslatedOuterVlanPri( 13876 int unit, 13877 bcm_field_entry_t entry, 13878 uint8 data, 13879 uint8 mask); 13880 13881 /* 13882 * Get match criteria for bcmFieldQualifyTranslatedOuterVlanPri 13883 * qualifier from the field entry. 13884 */ 13885 extern int bcm_field_qualify_TranslatedOuterVlanPri_get( 13886 int unit, 13887 bcm_field_entry_t entry, 13888 uint8 *data, 13889 uint8 *mask); 13890 13891 /* 13892 * Set match criteria for bcmFieldQualifyTranslatedOuterVlanCfi 13893 * qualifier in the field entry. 13894 */ 13895 extern int bcm_field_qualify_TranslatedOuterVlanCfi( 13896 int unit, 13897 bcm_field_entry_t entry, 13898 uint8 data, 13899 uint8 mask); 13900 13901 /* 13902 * Get match criteria for bcmFieldQualifyTranslatedOuterVlanCfi_get 13903 * qualifier from the field entry. 13904 */ 13905 extern int bcm_field_qualify_TranslatedOuterVlanCfi_get( 13906 int unit, 13907 bcm_field_entry_t entry, 13908 uint8 *data, 13909 uint8 *mask); 13910 13911 /* 13912 * Set match criteria for bcmFieldQualifyTranslatedInnerVlan 13913 * qualifier in the field entry. 13914 */ 13915 extern int bcm_field_qualify_TranslatedInnerVlan( 13916 int unit, 13917 bcm_field_entry_t entry, 13918 bcm_vlan_t data, 13919 bcm_vlan_t mask); 13920 13921 /* 13922 * Get match criteria for bcmFieldQualifyTranslatedInnerVlan 13923 * qualifier from the field entry. 13924 */ 13925 extern int bcm_field_qualify_TranslatedInnerVlan_get( 13926 int unit, 13927 bcm_field_entry_t entry, 13928 bcm_vlan_t *data, 13929 bcm_vlan_t *mask); 13930 13931 /* 13932 * Set match criteria for bcmFieldQualifyTranslatedInnerVlanId 13933 * qualifier in the field entry. 13934 */ 13935 extern int bcm_field_qualify_TranslatedInnerVlanId( 13936 int unit, 13937 bcm_field_entry_t entry, 13938 bcm_vlan_t data, 13939 bcm_vlan_t mask); 13940 13941 /* 13942 * Get match criteria for bcmFieldQualifyTranslatedInnerVlanId 13943 * qualifier from the field entry. 13944 */ 13945 extern int bcm_field_qualify_TranslatedInnerVlanId_get( 13946 int unit, 13947 bcm_field_entry_t entry, 13948 bcm_vlan_t *data, 13949 bcm_vlan_t *mask); 13950 13951 /* 13952 * Set match criteria for bcmFieldQualifyTranslatedInnerVlanPri 13953 * qualifier in the field entry. 13954 */ 13955 extern int bcm_field_qualify_TranslatedInnerVlanPri( 13956 int unit, 13957 bcm_field_entry_t entry, 13958 uint8 data, 13959 uint8 mask); 13960 13961 /* 13962 * Get match criteria for bcmFieldQualifyTranslatedInnerVlanPri 13963 * qualifier from the field entry. 13964 */ 13965 extern int bcm_field_qualify_TranslatedInnerVlanPri_get( 13966 int unit, 13967 bcm_field_entry_t entry, 13968 uint8 *data, 13969 uint8 *mask); 13970 13971 /* 13972 * Set match criteria for bcmFieldQualifyTranslatedInnerVlanCfi 13973 * qualifier in the field entry. 13974 */ 13975 extern int bcm_field_qualify_TranslatedInnerVlanCfi( 13976 int unit, 13977 bcm_field_entry_t entry, 13978 uint8 data, 13979 uint8 mask); 13980 13981 /* 13982 * Get match criteria for bcmFieldQualifyTranslatedInnerVlanCfi_get 13983 * qualifier from the field entry. 13984 */ 13985 extern int bcm_field_qualify_TranslatedInnerVlanCfi_get( 13986 int unit, 13987 bcm_field_entry_t entry, 13988 uint8 *data, 13989 uint8 *mask); 13990 13991 /* 13992 * Set match criteria for bcmFieldQualifyFibreChanRCtl 13993 * qualifier in the field entry. 13994 */ 13995 extern int bcm_field_qualify_FibreChanRCtl( 13996 int unit, 13997 bcm_field_entry_t entry, 13998 uint8 data, 13999 uint8 mask); 14000 14001 /* 14002 * Get match criteria for bcmFieldQualifyFibreChanRCtl 14003 * qualifier from the field entry. 14004 */ 14005 extern int bcm_field_qualify_FibreChanRCtl_get( 14006 int unit, 14007 bcm_field_entry_t entry, 14008 uint8 *data, 14009 uint8 *mask); 14010 14011 /* 14012 * Set match criteria for bcmFieldQualifyFibreChanFCtl 14013 * qualifier in the field entry. 14014 */ 14015 extern int bcm_field_qualify_FibreChanFCtl( 14016 int unit, 14017 bcm_field_entry_t entry, 14018 uint32 data, 14019 uint32 mask); 14020 14021 /* 14022 * Get match criteria for bcmFieldQualifyFibreChanFCtl 14023 * qualifier from the field entry. 14024 */ 14025 extern int bcm_field_qualify_FibreChanFCtl_get( 14026 int unit, 14027 bcm_field_entry_t entry, 14028 uint32 *data, 14029 uint32 *mask); 14030 14031 /* 14032 * Set match criteria for bcmFieldQualifyFibreChanCSCtl 14033 * qualifier in the field entry. 14034 */ 14035 extern int bcm_field_qualify_FibreChanCSCtl( 14036 int unit, 14037 bcm_field_entry_t entry, 14038 uint8 data, 14039 uint8 mask); 14040 14041 /* 14042 * Get match criteria for bcmFieldQualifyFibreChanCSCtl 14043 * qualifier from the field entry. 14044 */ 14045 extern int bcm_field_qualify_FibreChanCSCtl_get( 14046 int unit, 14047 bcm_field_entry_t entry, 14048 uint8 *data, 14049 uint8 *mask); 14050 14051 /* 14052 * Set match criteria for bcmFieldQualifyFibreChanDFCtl 14053 * qualifier in the field entry. 14054 */ 14055 extern int bcm_field_qualify_FibreChanDFCtl( 14056 int unit, 14057 bcm_field_entry_t entry, 14058 uint8 data, 14059 uint8 mask); 14060 14061 /* 14062 * Get match criteria for bcmFieldQualifyFibreChanDFCtl 14063 * qualifier from the field entry. 14064 */ 14065 extern int bcm_field_qualify_FibreChanDFCtl_get( 14066 int unit, 14067 bcm_field_entry_t entry, 14068 uint8 *data, 14069 uint8 *mask); 14070 14071 /* 14072 * Set match criteria for bcmFieldQualifyFibreChanType 14073 * qualifier in the field entry. 14074 */ 14075 extern int bcm_field_qualify_FibreChanType( 14076 int unit, 14077 bcm_field_entry_t entry, 14078 uint8 data, 14079 uint8 mask); 14080 14081 /* 14082 * Get match criteria for bcmFieldQualifyFibreChanType 14083 * qualifier from the field entry. 14084 */ 14085 extern int bcm_field_qualify_FibreChanType_get( 14086 int unit, 14087 bcm_field_entry_t entry, 14088 uint8 *data, 14089 uint8 *mask); 14090 14091 /* 14092 * Set match criteria for bcmFieldQualifyFibreChanSrcId 14093 * qualifier in the field entry. 14094 */ 14095 extern int bcm_field_qualify_FibreChanSrcId( 14096 int unit, 14097 bcm_field_entry_t entry, 14098 uint32 data, 14099 uint32 mask); 14100 14101 /* 14102 * Get match criteria for bcmFieldQualifyFibreChanSrcId 14103 * qualifier from the field entry. 14104 */ 14105 extern int bcm_field_qualify_FibreChanSrcId_get( 14106 int unit, 14107 bcm_field_entry_t entry, 14108 uint32 *data, 14109 uint32 *mask); 14110 14111 /* 14112 * Set match criteria for bcmFieldQualifyFibreChanDstId 14113 * qualifier in the field entry. 14114 */ 14115 extern int bcm_field_qualify_FibreChanDstId( 14116 int unit, 14117 bcm_field_entry_t entry, 14118 uint32 data, 14119 uint32 mask); 14120 14121 /* 14122 * Get match criteria for bcmFieldQualifyFibreChanDstId 14123 * qualifier from the field entry. 14124 */ 14125 extern int bcm_field_qualify_FibreChanDstId_get( 14126 int unit, 14127 bcm_field_entry_t entry, 14128 uint32 *data, 14129 uint32 *mask); 14130 14131 /* 14132 * Set match criteria for bcmFieldQualifyFibreChanVFTVersion 14133 * qualifier in the field entry. 14134 */ 14135 extern int bcm_field_qualify_FibreChanVFTVersion( 14136 int unit, 14137 bcm_field_entry_t entry, 14138 uint8 data, 14139 uint8 mask); 14140 14141 /* 14142 * Get match criteria for bcmFieldQualifyFibreChanVFTVersion 14143 * qualifier from the field entry. 14144 */ 14145 extern int bcm_field_qualify_FibreChanVFTVersion_get( 14146 int unit, 14147 bcm_field_entry_t entry, 14148 uint8 *data, 14149 uint8 *mask); 14150 14151 /* 14152 * Set match criteria for bcmFieldQualifyFibreChanVFTPri 14153 * qualifier in the field entry. 14154 */ 14155 extern int bcm_field_qualify_FibreChanVFTPri( 14156 int unit, 14157 bcm_field_entry_t entry, 14158 uint8 data, 14159 uint8 mask); 14160 14161 /* 14162 * Get match criteria for bcmFieldQualifyFibreChanVFTPri 14163 * qualifier from the field entry. 14164 */ 14165 extern int bcm_field_qualify_FibreChanVFTPri_get( 14166 int unit, 14167 bcm_field_entry_t entry, 14168 uint8 *data, 14169 uint8 *mask); 14170 14171 /* 14172 * Set match criteria for bcmFieldQualifyFibreChanVFTFabricId 14173 * qualifier in the field entry. 14174 */ 14175 extern int bcm_field_qualify_FibreChanVFTFabricId( 14176 int unit, 14177 bcm_field_entry_t entry, 14178 uint16 data, 14179 uint16 mask); 14180 14181 /* 14182 * Get match criteria for bcmFieldQualifyFibreChanVFTFabricId 14183 * qualifier from the field entry. 14184 */ 14185 extern int bcm_field_qualify_FibreChanVFTFabricId_get( 14186 int unit, 14187 bcm_field_entry_t entry, 14188 uint16 *data, 14189 uint16 *mask); 14190 14191 /* 14192 * Set match criteria for bcmFieldQualifyFibreChanVFTHopCount 14193 * qualifier in the field entry. 14194 */ 14195 extern int bcm_field_qualify_FibreChanVFTHopCount( 14196 int unit, 14197 bcm_field_entry_t entry, 14198 uint8 data, 14199 uint8 mask); 14200 14201 /* 14202 * Get match criteria for bcmFieldQualifyFibreChanVFTHopCount 14203 * qualifier from the field entry. 14204 */ 14205 extern int bcm_field_qualify_FibreChanVFTHopCount_get( 14206 int unit, 14207 bcm_field_entry_t entry, 14208 uint8 *data, 14209 uint8 *mask); 14210 14211 /* 14212 * Set match criteria for bcmFieldQualifyFibreChanVFTVsanId 14213 * qualifier in the field entry. 14214 */ 14215 extern int bcm_field_qualify_FibreChanVFTVsanId( 14216 int unit, 14217 bcm_field_entry_t entry, 14218 uint16 data, 14219 uint16 mask); 14220 14221 /* 14222 * Get match criteria for bcmFieldQualifyFibreChanVFTVsanId 14223 * qualifier from the field entry. 14224 */ 14225 extern int bcm_field_qualify_FibreChanVFTVsanId_get( 14226 int unit, 14227 bcm_field_entry_t entry, 14228 uint16 *data, 14229 uint16 *mask); 14230 14231 /* 14232 * Set match criteria for bcmFieldQualifyFibreChanVFTVsanPri 14233 * qualifier in the field entry. 14234 */ 14235 extern int bcm_field_qualify_FibreChanVFTVsanPri( 14236 int unit, 14237 bcm_field_entry_t entry, 14238 uint8 data, 14239 uint8 mask); 14240 14241 /* 14242 * Get match criteria for bcmFieldQualifyFibreChanVFTVsanPri 14243 * qualifier from the field entry. 14244 */ 14245 extern int bcm_field_qualify_FibreChanVFTVsanPri_get( 14246 int unit, 14247 bcm_field_entry_t entry, 14248 uint8 *data, 14249 uint8 *mask); 14250 14251 /* 14252 * Set match criteria for bcmFieldQualifyFcoeSOF 14253 * qualifier in the field entry. 14254 */ 14255 extern int bcm_field_qualify_FcoeSOF( 14256 int unit, 14257 bcm_field_entry_t entry, 14258 uint8 data, 14259 uint8 mask); 14260 14261 /* 14262 * Get match criteria for bcmFieldQualifyFcoeSOF 14263 * qualifier from the field entry. 14264 */ 14265 extern int bcm_field_qualify_FcoeSOF_get( 14266 int unit, 14267 bcm_field_entry_t entry, 14268 uint8 *data, 14269 uint8 *mask); 14270 14271 /* 14272 * Set match criteria for bcmFieldQualifyFibreChanZoneCheck 14273 * qualifier in the field entry. 14274 */ 14275 extern int bcm_field_qualify_FibreChanZoneCheck( 14276 int unit, 14277 bcm_field_entry_t entry, 14278 uint8 data, 14279 uint8 mask); 14280 14281 /* 14282 * Get match criteria for bcmFieldQualifyFibreChanZoneCheck 14283 * qualifier from the field entry. 14284 */ 14285 extern int bcm_field_qualify_FibreChanZoneCheck_get( 14286 int unit, 14287 bcm_field_entry_t entry, 14288 uint8 *data, 14289 uint8 *mask); 14290 14291 /* 14292 * Set match criteria for bcmFieldQualifyFibreChanSrcFpmaCheck 14293 * qualifier in the field entry. 14294 */ 14295 extern int bcm_field_qualify_FibreChanSrcFpmaCheck( 14296 int unit, 14297 bcm_field_entry_t entry, 14298 uint8 data, 14299 uint8 mask); 14300 14301 /* 14302 * Get match criteria for bcmFieldQualifyFibreChanSrcFpmaCheck 14303 * qualifier from the field entry. 14304 */ 14305 extern int bcm_field_qualify_FibreChanSrcFpmaCheck_get( 14306 int unit, 14307 bcm_field_entry_t entry, 14308 uint8 *data, 14309 uint8 *mask); 14310 14311 /* 14312 * Set match criteria for bcmFieldQualifyFibreChanSrcBindCheck 14313 * qualifier in the field entry. 14314 */ 14315 extern int bcm_field_qualify_FibreChanSrcBindCheck( 14316 int unit, 14317 bcm_field_entry_t entry, 14318 uint8 data, 14319 uint8 mask); 14320 14321 /* 14322 * Get match criteria for bcmFieldQualifyFibreChanSrcBindCheck 14323 * qualifier from the field entry. 14324 */ 14325 extern int bcm_field_qualify_FibreChanSrcBindCheck_get( 14326 int unit, 14327 bcm_field_entry_t entry, 14328 uint8 *data, 14329 uint8 *mask); 14330 14331 /* 14332 * Set match criteria for bcmFieldQualifyFcoeVersionIsZero 14333 * qualifier in the field entry. 14334 */ 14335 extern int bcm_field_qualify_FcoeVersionIsZero( 14336 int unit, 14337 bcm_field_entry_t entry, 14338 uint8 data, 14339 uint8 mask); 14340 14341 /* 14342 * Get match criteria for bcmFieldQualifyFcoeVersionIsZero 14343 * qualifier from the field entry. 14344 */ 14345 extern int bcm_field_qualify_FcoeVersionIsZero_get( 14346 int unit, 14347 bcm_field_entry_t entry, 14348 uint8 *data, 14349 uint8 *mask); 14350 14351 /* 14352 * Set match criteria for bcmFieldQualifyFibreChanVFTValid 14353 * qualifier in the field entry. 14354 */ 14355 extern int bcm_field_qualify_FibreChanVFTValid( 14356 int unit, 14357 bcm_field_entry_t entry, 14358 uint8 data, 14359 uint8 mask); 14360 14361 /* 14362 * Get match criteria for bcmFieldQualifyFibreChanVFTValid 14363 * qualifier from the field entry. 14364 */ 14365 extern int bcm_field_qualify_FibreChanVFTValid_get( 14366 int unit, 14367 bcm_field_entry_t entry, 14368 uint8 *data, 14369 uint8 *mask); 14370 14371 /* 14372 * Set match criteria for bcmFieldQualifyForwardingHeaderOffset 14373 * qualifier in the field entry. 14374 */ 14375 extern int bcm_field_qualify_ForwardingHeaderOffset( 14376 int unit, 14377 bcm_field_entry_t entry, 14378 bcm_field_data_offset_base_t base_header, 14379 uint32 data, 14380 uint32 mask); 14381 14382 /* 14383 * Get match criteria for bcmFieldQualifyForwardingHeaderOffset 14384 * qualifier from the field entry. 14385 */ 14386 extern int bcm_field_qualify_ForwardingHeaderOffset_get( 14387 int unit, 14388 bcm_field_entry_t entry, 14389 bcm_field_data_offset_base_t *base_header, 14390 uint32 *data, 14391 uint32 *mask); 14392 14393 #endif /* BCM_HIDE_DISPATCHABLE */ 14394 14395 typedef enum bcm_field_orientation_e { 14396 bcmFieldOrientationNetwork = 0, /* Network orientation (hub) */ 14397 bcmFieldOrientationAccess = 1, /* Access orientation (spoke) */ 14398 bcmFieldOrientationCount = 2 /* Always Last. Not a usable value. */ 14399 } bcm_field_orientation_t; 14400 14401 typedef enum bcm_field_start_packet_strip_e { 14402 bcmFieldStartToConfigurableStrip = 0, /* Configurable size of number of bytes 14403 to strip, according to param1. */ 14404 bcmFieldStartToL2Strip = 1, /* Remove the start-of-packet up to the 14405 L2 header. */ 14406 bcmFieldStartToFwdStrip = 2, /* Remove the start-of-packet up to the 14407 Forwarding header. */ 14408 bcmFieldStartToFwdNextStrip = 3, /* Remove the start-of-packet up to the 14409 header following the Forwarding 14410 header. */ 14411 bcmFieldStartStripCount = 4 /* Always Last. Not a usable value. */ 14412 } bcm_field_start_packet_strip_t; 14413 14414 #ifndef BCM_HIDE_DISPATCHABLE 14415 14416 /* 14417 * Set qualification on a particular stage. This feature is normally 14418 * used for preselectors. 14419 */ 14420 extern int bcm_field_qualify_Stage( 14421 int unit, 14422 bcm_field_entry_t entry, 14423 bcm_field_stage_t data); 14424 14425 /* Get stage qualifier information. */ 14426 extern int bcm_field_qualify_Stage_get( 14427 int unit, 14428 bcm_field_entry_t entry, 14429 bcm_field_stage_t *data); 14430 14431 /* 14432 * Configure match criteria for bcmFieldQualifyIpFragNonOrFirst 14433 * qualifier from the field entry. 14434 */ 14435 extern int bcm_field_qualify_IpFragNonOrFirst( 14436 int unit, 14437 bcm_field_entry_t entry, 14438 uint8 data, 14439 uint8 mask); 14440 14441 /* 14442 * Get match criteria for bcmFieldQualifyIpFragNonOrFirst 14443 * qualifier from the field entry. 14444 */ 14445 extern int bcm_field_qualify_IpFragNonOrFirst_get( 14446 int unit, 14447 bcm_field_entry_t entry, 14448 uint8 *data, 14449 uint8 *mask); 14450 14451 /* 14452 * Configure match criteria for bcmFieldQualifyPacketLength 14453 * qualifier from the field entry. 14454 */ 14455 extern int bcm_field_qualify_PacketLength( 14456 int unit, 14457 bcm_field_entry_t entry, 14458 uint16 data, 14459 uint16 mask); 14460 14461 /* 14462 * Get match criteria for bcmFieldQualifyPacketLength 14463 * qualifier from the field entry. 14464 */ 14465 extern int bcm_field_qualify_PacketLength_get( 14466 int unit, 14467 bcm_field_entry_t entry, 14468 uint16 *data, 14469 uint16 *mask); 14470 14471 /* 14472 * Set match criteria for bcmFieldQualifyGroupClass 14473 * qualifier in the field entry. 14474 */ 14475 extern int bcm_field_qualify_GroupClass( 14476 int unit, 14477 bcm_field_entry_t entry, 14478 uint32 data, 14479 uint32 mask); 14480 14481 /* 14482 * Get match criteria for bcmFieldQualifyGroupClass 14483 * qualifier in the field entry. 14484 */ 14485 extern int bcm_field_qualify_GroupClass_get( 14486 int unit, 14487 bcm_field_entry_t entry, 14488 uint32 *data, 14489 uint32 *mask); 14490 14491 /* 14492 * Set match criteria for bcmFieldQualifyUdfClass 14493 * qualifier in the field entry. 14494 */ 14495 extern int bcm_field_qualify_UdfClass( 14496 int unit, 14497 bcm_field_entry_t entry, 14498 uint32 data, 14499 uint32 mask); 14500 14501 /* 14502 * Get match criteria for bcmFieldQualifyUdfClass 14503 * qualifier in the field entry. 14504 */ 14505 extern int bcm_field_qualify_UdfClass_get( 14506 int unit, 14507 bcm_field_entry_t entry, 14508 uint32 *data, 14509 uint32 *mask); 14510 14511 /* 14512 * Set match criteria for bcmFieldQualifyInterfaceLookupClassPort 14513 * qualifier in the field entry. 14514 */ 14515 extern int bcm_field_qualify_InterfaceLookupClassPort( 14516 int unit, 14517 bcm_field_entry_t entry, 14518 uint32 data, 14519 uint32 mask); 14520 14521 /* 14522 * Get match criteria for bcmFieldQualifyInterfaceLookupClassPort 14523 * qualifier in the field entry. 14524 */ 14525 extern int bcm_field_qualify_InterfaceLookupClassPort_get( 14526 int unit, 14527 bcm_field_entry_t entry, 14528 uint32 *data, 14529 uint32 *mask); 14530 14531 /* 14532 * Set match criteria for 14533 * bcmFieldQualifyInterfaceIngressKeySelectClassPort 14534 * qualifier in the field entry. 14535 */ 14536 extern int bcm_field_qualify_InterfaceIngressKeySelectClassPort( 14537 int unit, 14538 bcm_field_entry_t entry, 14539 uint32 data, 14540 uint32 mask); 14541 14542 /* 14543 * Get match criteria for 14544 * bcmFieldQualifyInterfaceIngressKeySelectClassPort 14545 * qualifier in the field entry. 14546 */ 14547 extern int bcm_field_qualify_InterfaceIngressKeySelectClassPort_get( 14548 int unit, 14549 bcm_field_entry_t entry, 14550 uint32 *data, 14551 uint32 *mask); 14552 14553 /* 14554 * Set match criteria for bcmFieldQualifyITag 14555 * qualifier in the field entry. 14556 */ 14557 extern int bcm_field_qualify_ITag( 14558 int unit, 14559 bcm_field_entry_t entry, 14560 uint32 data, 14561 uint32 mask); 14562 14563 /* 14564 * Get match criteria for bcmFieldQualifyITag 14565 * qualifier from the field entry. 14566 */ 14567 extern int bcm_field_qualify_ITag_get( 14568 int unit, 14569 bcm_field_entry_t entry, 14570 uint32 *data, 14571 uint32 *mask); 14572 14573 /* 14574 * Set match criteria for bcmFieldQualifyBfdYourDiscriminator 14575 * qualifier in the field entry. 14576 */ 14577 extern int bcm_field_qualify_BfdYourDiscriminator( 14578 int unit, 14579 bcm_field_entry_t entry, 14580 uint32 data, 14581 uint32 mask); 14582 14583 /* 14584 * Get match criteria for bcmFieldQualifyBfdYourDiscriminator 14585 * qualifier from the field entry. 14586 */ 14587 extern int bcm_field_qualify_BfdYourDiscriminator_get( 14588 int unit, 14589 bcm_field_entry_t entry, 14590 uint32 *data, 14591 uint32 *mask); 14592 14593 /* 14594 * Set match criteria for bcmFieldQualifyCpuVisibilityPacket 14595 * qualifier in the field entry. 14596 */ 14597 extern int bcm_field_qualify_CpuVisibilityPacket( 14598 int unit, 14599 bcm_field_entry_t entry, 14600 uint8 data, 14601 uint8 mask); 14602 14603 /* 14604 * Get match criteria for bcmFieldQualifyCpuVisibilityPacket 14605 * qualifier from the field entry. 14606 */ 14607 extern int bcm_field_qualify_CpuVisibilityPacket_get( 14608 int unit, 14609 bcm_field_entry_t entry, 14610 uint8 *data, 14611 uint8 *mask); 14612 14613 /* 14614 * Set match criteria for bcmFieldQualifyDstL2MulticastGroup 14615 * qualifier in the field entry. 14616 */ 14617 extern int bcm_field_qualify_DstL2MulticastGroup( 14618 int unit, 14619 bcm_field_entry_t entry, 14620 bcm_multicast_t group, 14621 bcm_multicast_t mask); 14622 14623 /* 14624 * Get match criteria for bcmFieldQualifyDstL2MulticastGroup 14625 * qualifier from the field entry. 14626 */ 14627 extern int bcm_field_qualify_DstL2MulticastGroup_get( 14628 int unit, 14629 bcm_field_entry_t entry, 14630 bcm_multicast_t *group, 14631 bcm_multicast_t *mask); 14632 14633 /* 14634 * Set match criteria for bcmFieldQualifyDstL3MulticastGroup 14635 * qualifier in the field entry. 14636 */ 14637 extern int bcm_field_qualify_DstL3MulticastGroup( 14638 int unit, 14639 bcm_field_entry_t entry, 14640 bcm_multicast_t group, 14641 bcm_multicast_t mask); 14642 14643 /* 14644 * Get match criteria for bcmFieldQualifyDstL3MulticastGroup 14645 * qualifier from the field entry. 14646 */ 14647 extern int bcm_field_qualify_DstL3MulticastGroup_get( 14648 int unit, 14649 bcm_field_entry_t entry, 14650 bcm_multicast_t *group, 14651 bcm_multicast_t *mask); 14652 14653 #endif /* BCM_HIDE_DISPATCHABLE */ 14654 14655 /* Oam Type (ETHERNET, MPLS). */ 14656 typedef enum bcm_field_oam_type_e { 14657 bcmFieldOamTypeEthernet, /* Oam Type Ethernet. */ 14658 bcmFieldOamTypeMpls, /* Oam Type MPLS. */ 14659 bcmFieldOamTypeCount /* Always last. Not a usable value. */ 14660 } bcm_field_oam_type_t; 14661 14662 #define BCM_FIELD_OAM_TYPE \ 14663 { \ 14664 "Ethernet", \ 14665 "Mpls" \ 14666 } 14667 14668 /* 14669 * Mpls Oam Control Packet Type (UNKNOWN, VCCV1, VCCV2, VCCV3, 14670 * VCCV4/GAL_ACH). 14671 */ 14672 typedef enum bcm_field_MplsOam_Control_pktType_e { 14673 bcmFieldMplsOamControlPktTypeUnknown, /* Mpls Oam Control Packet Type UNKNOWN. */ 14674 bcmFieldMplsOamControlPktTypeVCCV1, /* Mpls Oam Control Packet Type VCCV1. */ 14675 bcmFieldMplsOamControlPktTypeVCCV2, /* Mpls Oam Control Packet Type VCCV2. */ 14676 bcmFieldMplsOamControlPktTypeVCCV3, /* Mpls Oam Control Packet Type VCCV3. */ 14677 bcmFieldMplsOamControlPktTypeVCCV4_GAL_ACH, /* Mpls Oam Control Packet Type 14678 VCCV4/GAL_ACH. */ 14679 bcmFieldMplsOamControlPktTypeCount /* Always last. Not a usable value. */ 14680 } bcm_field_MplsOam_Control_pktType_t; 14681 14682 #define BCM_FIELD_MPLS_OAM_CONTROL_PKT_TYPE \ 14683 { \ 14684 "Unknown", \ 14685 "VCCV1", \ 14686 "VCCV2", \ 14687 "VCCV3", \ 14688 "VCCV4_GAL_ACH" \ 14689 } 14690 14691 #ifndef BCM_HIDE_DISPATCHABLE 14692 14693 /* bcm_field_qualify_L3SrcBind */ 14694 extern int bcm_field_qualify_L3SrcBind( 14695 int unit, 14696 bcm_field_entry_t entry, 14697 uint8 data, 14698 uint8 mask); 14699 14700 /* 14701 * Get match criteria for bcmFieldQualifyL3SrcBind 14702 * qualifier from the field entry. 14703 */ 14704 extern int bcm_field_qualify_L3SrcBind_get( 14705 int unit, 14706 bcm_field_entry_t entry, 14707 uint8 *data, 14708 uint8 *mask); 14709 14710 /* bcm_field_qualify_ECid */ 14711 extern int bcm_field_qualify_ECid( 14712 int unit, 14713 bcm_field_entry_t entry, 14714 uint32 data, 14715 uint32 mask); 14716 14717 /* 14718 * Get match criteria for bcmFieldQualifyECid 14719 * qualifier from the field entry. 14720 */ 14721 extern int bcm_field_qualify_ECid_get( 14722 int unit, 14723 bcm_field_entry_t entry, 14724 uint32 *data, 14725 uint32 *mask); 14726 14727 /* bcm_field_qualify_IngressECid */ 14728 extern int bcm_field_qualify_IngressECid( 14729 int unit, 14730 bcm_field_entry_t entry, 14731 uint32 data, 14732 uint32 mask); 14733 14734 /* 14735 * Get match criteria for bcmFieldQualifyIngressECid 14736 * qualifier from the field entry. 14737 */ 14738 extern int bcm_field_qualify_IngressECid_get( 14739 int unit, 14740 bcm_field_entry_t entry, 14741 uint32 *data, 14742 uint32 *mask); 14743 14744 /* bcm_field_qualify_ETag */ 14745 extern int bcm_field_qualify_ETag( 14746 int unit, 14747 bcm_field_entry_t entry, 14748 uint64 data, 14749 uint64 mask); 14750 14751 /* 14752 * Get match criteria for bcmFieldQualifyETag 14753 * qualifier from the field entry. 14754 */ 14755 extern int bcm_field_qualify_ETag_get( 14756 int unit, 14757 bcm_field_entry_t entry, 14758 uint64 *data, 14759 uint64 *mask); 14760 14761 #endif /* BCM_HIDE_DISPATCHABLE */ 14762 14763 typedef enum bcm_field_system_header_e { 14764 bcmFieldSystemHeaderPphEei = 0, /* EEI extension of the PPH (Packet 14765 Processing Header) */ 14766 bcmFieldSystemHeaderCount = 1 /* Always Last. Not a usable value. */ 14767 } bcm_field_system_header_t; 14768 14769 typedef enum bcm_field_fabric_header_e { 14770 bcmFieldFabricHeaderEthernet = 0, /* Ethernet fabric header */ 14771 bcmFieldFabricHeaderTrafficManagementUcast = 1, /* Unicast Traffic Management fabric 14772 header */ 14773 bcmFieldFabricHeaderTrafficManagementMcast = 2, /* Multicast Traffic Management fabric 14774 header */ 14775 bcmFieldFabricHeaderTrafficManagementVPort = 3, /* VPort Traffic Management fabric 14776 header */ 14777 bcmFieldFabricHeaderStacking = 4, /* Stacking fabric header */ 14778 bcmFieldFabricHeaderEthernetDSP = 5, /* regular Ethernet, stacking FTMH with 14779 DSP Extension and PPH fabric header */ 14780 bcmFieldFabricHeaderEthernetLearn = 6, /* regular Ethernet, stacking FTMH with 14781 DSP Extension and PPH fabric header */ 14782 bcmFieldFabricHeaderEthernetlatency = 7, /* regular Ethernet, stacking FTMH with 14783 OAM-TS-LATENCY header */ 14784 bcmFieldFabricHeaderEthernetLearnDisable = 8, /* Regular Ethernet, with disabled PPH 14785 header learn extension. */ 14786 bcmFieldFabricHeaderCount = 9 /* Always Last. Not a usable value. */ 14787 } bcm_field_fabric_header_t; 14788 14789 /* Multi-range flags */ 14790 #define BCM_FIELD_RANGE_MULTI_WITH_ID 0x00000001 /* Range Id is provided */ 14791 #define BCM_FIELD_RANGE_MULTI_REPLACE 0x00000002 /* Replace existing range */ 14792 14793 /* VXLAN Flags from IETF Draft(for bcm_field_qualify_VxlanFlags). */ 14794 #define BCM_FIELD_VXLAN_VNI_VALID 0x8 /* VXLAN Network ID (VNI)- Valid */ 14795 14796 /* FCOE zone check action types. */ 14797 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_NOP 0 14798 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_DISABLE 1 14799 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_ENABLE 2 14800 14801 #ifndef BCM_HIDE_DISPATCHABLE 14802 14803 /* 14804 * Set match criteria for bcmFieldQualifyOamMdl 14805 * qualifier from the field entry 14806 */ 14807 extern int bcm_field_qualify_OamMdl( 14808 int unit, 14809 bcm_field_entry_t entry, 14810 uint8 data, 14811 uint8 mask); 14812 14813 /* 14814 * Get match criteria for bcmFieldQualifyOamMdl 14815 * qualifier from the field entry. 14816 */ 14817 extern int bcm_field_qualify_OamMdl_get( 14818 int unit, 14819 bcm_field_entry_t entry, 14820 uint8 *data, 14821 uint8 *mask); 14822 14823 /* Set match criteria for IntCongestionNotification qualifier. */ 14824 extern int bcm_field_qualify_IntCongestionNotification( 14825 int unit, 14826 bcm_field_entry_t entry, 14827 uint8 data, 14828 uint8 mask); 14829 14830 /* Get match criteria for IntCongestionNotification qualifier. */ 14831 extern int bcm_field_qualify_IntCongestionNotification_get( 14832 int unit, 14833 bcm_field_entry_t entry, 14834 uint8 *data, 14835 uint8 *mask); 14836 14837 /* bcm_field_qualify_SrcNivGport */ 14838 extern int bcm_field_qualify_SrcNivGport( 14839 int unit, 14840 bcm_field_entry_t entry, 14841 bcm_gport_t niv_port_id); 14842 14843 /* bcm_field_qualify_DstNivGport */ 14844 extern int bcm_field_qualify_DstNivGport( 14845 int unit, 14846 bcm_field_entry_t entry, 14847 bcm_gport_t niv_port_id); 14848 14849 /* 14850 * Get match criteria for bcmFieldQualifySrcNivGport 14851 * qualifier from the field entry. 14852 */ 14853 extern int bcm_field_qualify_SrcNivGport_get( 14854 int unit, 14855 bcm_field_entry_t entry, 14856 bcm_gport_t *niv_port_id); 14857 14858 /* 14859 * Get match criteria for bcmFieldQualifyDstNivGport 14860 * qualifier from the field entry. 14861 */ 14862 extern int bcm_field_qualify_DstNivGport_get( 14863 int unit, 14864 bcm_field_entry_t entry, 14865 bcm_gport_t *niv_port_id); 14866 14867 /* Set match criteria for DstGport qualifier. */ 14868 extern int bcm_field_qualify_DstGport( 14869 int unit, 14870 bcm_field_entry_t entry, 14871 bcm_gport_t port_id); 14872 14873 /* Get match criteria for DstGport qualifier. */ 14874 extern int bcm_field_qualify_DstGport_get( 14875 int unit, 14876 bcm_field_entry_t entry, 14877 bcm_gport_t *port_id); 14878 14879 /* Set match criteria for MirrorEgressDisabled qualifier. */ 14880 extern int bcm_field_qualify_MirrorEgressDisabled( 14881 int unit, 14882 bcm_field_entry_t entry, 14883 uint8 data, 14884 uint8 mask); 14885 14886 /* Get match criteria for MirrorEgressDisabled qualifier. */ 14887 extern int bcm_field_qualify_MirrorEgressDisabled_get( 14888 int unit, 14889 bcm_field_entry_t entry, 14890 uint8 *data, 14891 uint8 *mask); 14892 14893 /* Set match criteria for BypassSrcMacFilter qualifier. */ 14894 extern int bcm_field_qualify_BypassSrcMacFilter( 14895 int unit, 14896 bcm_field_entry_t entry, 14897 uint8 data, 14898 uint8 mask); 14899 14900 /* Get match criteria for BypassSrcMacFilter qualifier. */ 14901 extern int bcm_field_qualify_BypassSrcMacFilter_get( 14902 int unit, 14903 bcm_field_entry_t entry, 14904 uint8 *data, 14905 uint8 *mask); 14906 14907 /* Set match criteria for RxTrapCodeForSnoop qualifier. */ 14908 extern int bcm_field_qualify_RxTrapCodeForSnoop( 14909 int unit, 14910 bcm_field_entry_t entry, 14911 uint32 data, 14912 uint32 mask); 14913 14914 /* Get match criteria for RxTrapCodeForSnoop qualifier. */ 14915 extern int bcm_field_qualify_RxTrapCodeForSnoop_get( 14916 int unit, 14917 bcm_field_entry_t entry, 14918 uint32 *data, 14919 uint32 *mask); 14920 14921 /* Set match criteria for IpmcStarGroupValue qualifier. */ 14922 extern int bcm_field_qualify_IpmcStarGroupValue( 14923 int unit, 14924 bcm_field_entry_t entry, 14925 uint64 data, 14926 uint64 mask); 14927 14928 /* Get match criteria for IpmcStarGroupValue qualifier. */ 14929 extern int bcm_field_qualify_IpmcStarGroupValue_get( 14930 int unit, 14931 bcm_field_entry_t entry, 14932 uint64 *data, 14933 uint64 *mask); 14934 14935 /* Set match criteria for NativeVSwitch qualifier. */ 14936 extern int bcm_field_qualify_NativeVSwitch( 14937 int unit, 14938 bcm_field_entry_t entry, 14939 bcm_vlan_t data, 14940 bcm_vlan_t mask); 14941 14942 /* Get match criteria for NativeVSwitch qualifier. */ 14943 extern int bcm_field_qualify_NativeVSwitch_get( 14944 int unit, 14945 bcm_field_entry_t entry, 14946 bcm_vlan_t *data, 14947 bcm_vlan_t *mask); 14948 14949 /* Set match criteria for NativeVSwitchValid qualifier. */ 14950 extern int bcm_field_qualify_NativeVSwitchValid( 14951 int unit, 14952 bcm_field_entry_t entry, 14953 uint8 data, 14954 uint8 mask); 14955 14956 /* Get match criteria for NativeVSwitchValid qualifier. */ 14957 extern int bcm_field_qualify_NativeVSwitchValid_get( 14958 int unit, 14959 bcm_field_entry_t entry, 14960 uint8 *data, 14961 uint8 *mask); 14962 14963 /* Set match criteria for TrillIVersion qualifier. */ 14964 extern int bcm_field_qualify_TrillIVersion( 14965 int unit, 14966 bcm_field_entry_t entry, 14967 uint8 data, 14968 uint8 mask); 14969 14970 /* Get match criteria for TrillIVersion qualifier. */ 14971 extern int bcm_field_qualify_TrillIVersion_get( 14972 int unit, 14973 bcm_field_entry_t entry, 14974 uint8 *data, 14975 uint8 *mask); 14976 14977 /* Set match criteria for TrillIngressRbridge qualifier. */ 14978 extern int bcm_field_qualify_TrillIngressRbridge( 14979 int unit, 14980 bcm_field_entry_t entry, 14981 uint16 data, 14982 uint16 mask); 14983 14984 /* Get match criteria for TrillIngressRbridge qualifier. */ 14985 extern int bcm_field_qualify_TrillIngressRbridge_get( 14986 int unit, 14987 bcm_field_entry_t entry, 14988 uint16 *data, 14989 uint16 *mask); 14990 14991 /* Set match criteria for TrillMultiDestination qualifier. */ 14992 extern int bcm_field_qualify_TrillMultiDestination( 14993 int unit, 14994 bcm_field_entry_t entry, 14995 uint8 data, 14996 uint8 mask); 14997 14998 /* Get match criteria for TrillMultiDestination qualifier. */ 14999 extern int bcm_field_qualify_TrillMultiDestination_get( 15000 int unit, 15001 bcm_field_entry_t entry, 15002 uint8 *data, 15003 uint8 *mask); 15004 15005 /* Set match criteria for TrillOpLength qualifier. */ 15006 extern int bcm_field_qualify_TrillOpLength( 15007 int unit, 15008 bcm_field_entry_t entry, 15009 uint8 data, 15010 uint8 mask); 15011 15012 /* Get match criteria for TrillOpLength qualifier. */ 15013 extern int bcm_field_qualify_TrillOpLength_get( 15014 int unit, 15015 bcm_field_entry_t entry, 15016 uint8 *data, 15017 uint8 *mask); 15018 15019 /* Set match criteria for TrillHopCount qualifier. */ 15020 extern int bcm_field_qualify_TrillHopCount( 15021 int unit, 15022 bcm_field_entry_t entry, 15023 uint8 data, 15024 uint8 mask); 15025 15026 /* Get match criteria for TrillHopCount qualifier. */ 15027 extern int bcm_field_qualify_TrillHopCount_get( 15028 int unit, 15029 bcm_field_entry_t entry, 15030 uint8 *data, 15031 uint8 *mask); 15032 15033 /* Set match criteria for TrillPayload qualifier. */ 15034 extern int bcm_field_qualify_TrillPayload( 15035 int unit, 15036 bcm_field_entry_t entry, 15037 uint64 data, 15038 uint64 mask); 15039 15040 /* Get match criteria for TrillPayload qualifier. */ 15041 extern int bcm_field_qualify_TrillPayload_get( 15042 int unit, 15043 bcm_field_entry_t entry, 15044 uint64 *data, 15045 uint64 *mask); 15046 15047 /* Set match criteria for MplsForwardingLabelPayload qualifier. */ 15048 extern int bcm_field_qualify_MplsForwardingLabelPayload( 15049 int unit, 15050 bcm_field_entry_t entry, 15051 uint64 data, 15052 uint64 mask); 15053 15054 /* Get match criteria for MplsForwardingLabelPayload qualifier. */ 15055 extern int bcm_field_qualify_MplsForwardingLabelPayload_get( 15056 int unit, 15057 bcm_field_entry_t entry, 15058 uint64 *data, 15059 uint64 *mask); 15060 15061 /* Set match criteria for IncomingIpIfClass qualifier. */ 15062 extern int bcm_field_qualify_IncomingIpIfClass( 15063 int unit, 15064 bcm_field_entry_t entry, 15065 uint32 data, 15066 uint32 mask); 15067 15068 /* Get match criteria for IncomingIpIfClass qualifier. */ 15069 extern int bcm_field_qualify_IncomingIpIfClass_get( 15070 int unit, 15071 bcm_field_entry_t entry, 15072 uint32 *data, 15073 uint32 *mask); 15074 15075 /* Set match criteria for L2GreProtocolType qualifier. */ 15076 extern int bcm_field_qualify_L2GreProtocolType( 15077 int unit, 15078 bcm_field_entry_t entry, 15079 uint16 data, 15080 uint16 mask); 15081 15082 /* Get match criteria for L2GreProtocolType qualifier. */ 15083 extern int bcm_field_qualify_L2GreProtocolType_get( 15084 int unit, 15085 bcm_field_entry_t entry, 15086 uint16 *data, 15087 uint16 *mask); 15088 15089 /* Set match criteria for L2GreVsid qualifier. */ 15090 extern int bcm_field_qualify_L2GreVsid( 15091 int unit, 15092 bcm_field_entry_t entry, 15093 uint32 data, 15094 uint32 mask); 15095 15096 /* Get match criteria for L2GreVsid qualifier. */ 15097 extern int bcm_field_qualify_L2GreVsid_get( 15098 int unit, 15099 bcm_field_entry_t entry, 15100 uint32 *data, 15101 uint32 *mask); 15102 15103 /* Set match criteria for L2GreFlowId qualifier. */ 15104 extern int bcm_field_qualify_L2GreFlowId( 15105 int unit, 15106 bcm_field_entry_t entry, 15107 uint8 data, 15108 uint8 mask); 15109 15110 /* Get match criteria for L2GreFlowId qualifier. */ 15111 extern int bcm_field_qualify_L2GreFlowId_get( 15112 int unit, 15113 bcm_field_entry_t entry, 15114 uint8 *data, 15115 uint8 *mask); 15116 15117 /* Set match criteria for MimVlanPri qualifier. */ 15118 extern int bcm_field_qualify_MimVlanPri( 15119 int unit, 15120 bcm_field_entry_t entry, 15121 uint8 data, 15122 uint8 mask); 15123 15124 /* Get match criteria for MimVlanPri qualifier. */ 15125 extern int bcm_field_qualify_MimVlanPri_get( 15126 int unit, 15127 bcm_field_entry_t entry, 15128 uint8 *data, 15129 uint8 *mask); 15130 15131 /* Set match criteria for MimVlanCfi qualifier. */ 15132 extern int bcm_field_qualify_MimVlanCfi( 15133 int unit, 15134 bcm_field_entry_t entry, 15135 uint8 data, 15136 uint8 mask); 15137 15138 /* Get match criteria for MimVlanCfi qualifier. */ 15139 extern int bcm_field_qualify_MimVlanCfi_get( 15140 int unit, 15141 bcm_field_entry_t entry, 15142 uint8 *data, 15143 uint8 *mask); 15144 15145 /* Set match criteria for Fhei qualifier. */ 15146 extern int bcm_field_qualify_Fhei( 15147 int unit, 15148 bcm_field_entry_t entry, 15149 uint64 data, 15150 uint64 mask); 15151 15152 /* Get match criteria for Fhei qualifier. */ 15153 extern int bcm_field_qualify_Fhei_get( 15154 int unit, 15155 bcm_field_entry_t entry, 15156 uint64 *data, 15157 uint64 *mask); 15158 15159 /* Set match criteria for FheiSize qualifier. */ 15160 extern int bcm_field_qualify_FheiSize( 15161 int unit, 15162 bcm_field_entry_t entry, 15163 uint32 data, 15164 uint32 mask); 15165 15166 /* Get match criteria for FheiSize qualifier. */ 15167 extern int bcm_field_qualify_FheiSize_get( 15168 int unit, 15169 bcm_field_entry_t entry, 15170 uint32 *data, 15171 uint32 *mask); 15172 15173 /* 15174 * Set match criteria for bcmFieldQualifyOamType 15175 * qualifier from the field entry 15176 */ 15177 extern int bcm_field_qualify_OamType( 15178 int unit, 15179 bcm_field_entry_t entry, 15180 bcm_field_oam_type_t oam_type); 15181 15182 /* 15183 * Get match criteria for bcmFieldQualifyOamType 15184 * qualifier from the field entry. 15185 */ 15186 extern int bcm_field_qualify_OamType_get( 15187 int unit, 15188 bcm_field_entry_t entry, 15189 bcm_field_oam_type_t *oam_type); 15190 15191 /* Set match criteria for bcmFieldQualifyDstClassL2. */ 15192 extern int bcm_field_qualify_EthernetOamDstClassL2( 15193 int unit, 15194 bcm_field_entry_t entry, 15195 uint8 data, 15196 uint8 mask); 15197 15198 /* Get match criteria for bcmFieldQualifyDstClassL2. */ 15199 extern int bcm_field_qualify_EthernetOamDstClassL2_get( 15200 int unit, 15201 bcm_field_entry_t entry, 15202 uint8 *data, 15203 uint8 *mask); 15204 15205 /* Set match criteria for bcmFieldQualifyEthernetOamTxPktUPMEP. */ 15206 extern int bcm_field_qualify_EthernetOamTxPktUPMEP( 15207 int unit, 15208 bcm_field_entry_t entry, 15209 uint8 data, 15210 uint8 mask); 15211 15212 /* Get match criteria for bcmFieldQualifyEthernetOamTxPktUPMEP. */ 15213 extern int bcm_field_qualify_EthernetOamTxPktUPMEP_get( 15214 int unit, 15215 bcm_field_entry_t entry, 15216 uint8 *data, 15217 uint8 *mask); 15218 15219 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassNiv. */ 15220 extern int bcm_field_qualify_EthernetOamInterfaceClassNiv( 15221 int unit, 15222 bcm_field_entry_t entry, 15223 uint8 data, 15224 uint8 mask); 15225 15226 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassNiv. */ 15227 extern int bcm_field_qualify_EthernetOamInterfaceClassNiv_get( 15228 int unit, 15229 bcm_field_entry_t entry, 15230 uint8 *data, 15231 uint8 *mask); 15232 15233 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassMim. */ 15234 extern int bcm_field_qualify_EthernetOamInterfaceClassMim( 15235 int unit, 15236 bcm_field_entry_t entry, 15237 uint8 data, 15238 uint8 mask); 15239 15240 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassMim. */ 15241 extern int bcm_field_qualify_EthernetOamInterfaceClassMim_get( 15242 int unit, 15243 bcm_field_entry_t entry, 15244 uint8 *data, 15245 uint8 *mask); 15246 15247 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassVxlan. */ 15248 extern int bcm_field_qualify_EthernetOamInterfaceClassVxlan( 15249 int unit, 15250 bcm_field_entry_t entry, 15251 uint8 data, 15252 uint8 mask); 15253 15254 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVxlan. */ 15255 extern int bcm_field_qualify_EthernetOamInterfaceClassVxlan_get( 15256 int unit, 15257 bcm_field_entry_t entry, 15258 uint8 *data, 15259 uint8 *mask); 15260 15261 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassVlan. */ 15262 extern int bcm_field_qualify_EthernetOamInterfaceClassVlan( 15263 int unit, 15264 bcm_field_entry_t entry, 15265 uint8 data, 15266 uint8 mask); 15267 15268 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVlan. */ 15269 extern int bcm_field_qualify_EthernetOamInterfaceClassVlan_get( 15270 int unit, 15271 bcm_field_entry_t entry, 15272 uint8 *data, 15273 uint8 *mask); 15274 15275 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassPort. */ 15276 extern int bcm_field_qualify_EthernetOamInterfaceClassPort( 15277 int unit, 15278 bcm_field_entry_t entry, 15279 uint8 data, 15280 uint8 mask); 15281 15282 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassPort. */ 15283 extern int bcm_field_qualify_EthernetOamInterfaceClassPort_get( 15284 int unit, 15285 bcm_field_entry_t entry, 15286 uint8 *data, 15287 uint8 *mask); 15288 15289 /* 15290 * Set match criteria for 15291 * bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst. 15292 */ 15293 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeyFirst( 15294 int unit, 15295 bcm_field_entry_t entry, 15296 uint8 data, 15297 uint8 mask); 15298 15299 /* 15300 * Get match criteria for 15301 * bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst. 15302 */ 15303 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeyFirst_get( 15304 int unit, 15305 bcm_field_entry_t entry, 15306 uint8 *data, 15307 uint8 *mask); 15308 15309 /* 15310 * Set match criteria for 15311 * bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond. 15312 */ 15313 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeySecond( 15314 int unit, 15315 bcm_field_entry_t entry, 15316 uint8 data, 15317 uint8 mask); 15318 15319 /* 15320 * Get match criteria for 15321 * bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond. 15322 */ 15323 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeySecond_get( 15324 int unit, 15325 bcm_field_entry_t entry, 15326 uint8 *data, 15327 uint8 *mask); 15328 15329 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassMpls. */ 15330 extern int bcm_field_qualify_EthernetOamInterfaceClassMpls( 15331 int unit, 15332 bcm_field_entry_t entry, 15333 uint8 data, 15334 uint8 mask); 15335 15336 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassMpls. */ 15337 extern int bcm_field_qualify_EthernetOamInterfaceClassMpls_get( 15338 int unit, 15339 bcm_field_entry_t entry, 15340 uint8 *data, 15341 uint8 *mask); 15342 15343 /* Set match criteria for bcmFieldQualifyEthernetOamClassVpn. */ 15344 extern int bcm_field_qualify_EthernetOamClassVpn( 15345 int unit, 15346 bcm_field_entry_t entry, 15347 uint8 data, 15348 uint8 mask); 15349 15350 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVpn. */ 15351 extern int bcm_field_qualify_EthernetOamClassVpn_get( 15352 int unit, 15353 bcm_field_entry_t entry, 15354 uint8 *data, 15355 uint8 *mask); 15356 15357 /* Set match criteria for bcmFieldQualifyMplsOamGALLabelOnly. */ 15358 extern int bcm_field_qualify_MplsOamGALLabelOnly( 15359 int unit, 15360 bcm_field_entry_t entry, 15361 uint8 data, 15362 uint8 mask); 15363 15364 /* Get match criteria for bcmFieldQualifyMplsOamGALLabelOnly. */ 15365 extern int bcm_field_qualify_MplsOamGALLabelOnly_get( 15366 int unit, 15367 bcm_field_entry_t entry, 15368 uint8 *data, 15369 uint8 *mask); 15370 15371 /* Set match criteria for bcmFieldQualifyMplsOamUpperLabelDataDrop. */ 15372 extern int bcm_field_qualify_MplsOamUpperLabelDataDrop( 15373 int unit, 15374 bcm_field_entry_t entry, 15375 uint8 data, 15376 uint8 mask); 15377 15378 /* Get match criteria for bcmFieldQualifyMplsOamUpperLabelDataDrop. */ 15379 extern int bcm_field_qualify_MplsOamUpperLabelDataDrop_get( 15380 int unit, 15381 bcm_field_entry_t entry, 15382 uint8 *data, 15383 uint8 *mask); 15384 15385 /* Set match criteria for bcmFieldQualifyMplsOamGALExposed. */ 15386 extern int bcm_field_qualify_MplsOamGALExposed( 15387 int unit, 15388 bcm_field_entry_t entry, 15389 uint8 data, 15390 uint8 mask); 15391 15392 /* Get match criteria for bcmFieldQualifyMplsOamGALExposed. */ 15393 extern int bcm_field_qualify_MplsOamGALExposed_get( 15394 int unit, 15395 bcm_field_entry_t entry, 15396 uint8 *data, 15397 uint8 *mask); 15398 15399 /* Set match criteria for bcmFieldQualifyMplsOamControlPktType. */ 15400 extern int bcm_field_qualify_MplsOamControlPktType( 15401 int unit, 15402 bcm_field_entry_t entry, 15403 bcm_field_MplsOam_Control_pktType_t data); 15404 15405 /* Get match criteria for bcmFieldQualifyMplsOamControlPktType. */ 15406 extern int bcm_field_qualify_MplsOamControlPktType_get( 15407 int unit, 15408 bcm_field_entry_t entry, 15409 bcm_field_MplsOam_Control_pktType_t *data); 15410 15411 /* Set match criteria for bcmFieldQualifyMplsOamClassMplsSwitchLabel. */ 15412 extern int bcm_field_qualify_MplsOamClassMplsSwitchLabel( 15413 int unit, 15414 bcm_field_entry_t entry, 15415 uint16 data, 15416 uint16 mask); 15417 15418 /* Get match criteria for bcmFieldQualifyMplsOamClassMplsSwitchLabel. */ 15419 extern int bcm_field_qualify_MplsOamClassMplsSwitchLabel_get( 15420 int unit, 15421 bcm_field_entry_t entry, 15422 uint16 *data, 15423 uint16 *mask); 15424 15425 /* Set match criteria for bcmFieldQualifyOamEgressClassVxlt. */ 15426 extern int bcm_field_qualify_OamEgressClassVxlt( 15427 int unit, 15428 bcm_field_entry_t entry, 15429 uint16 data, 15430 uint16 mask); 15431 15432 /* Get match criteria for bcmFieldQualifyOamEgressClassVxlt. */ 15433 extern int bcm_field_qualify_OamEgressClassVxlt_get( 15434 int unit, 15435 bcm_field_entry_t entry, 15436 uint16 *data, 15437 uint16 *mask); 15438 15439 /* Set match criteria for bcmFieldQualifyOamEgressClassPort. */ 15440 extern int bcm_field_qualify_OamEgressClassPort( 15441 int unit, 15442 bcm_field_entry_t entry, 15443 uint16 data, 15444 uint16 mask); 15445 15446 /* Get match criteria for bcmFieldQualifyOamEgressClassPort. */ 15447 extern int bcm_field_qualify_OamEgressClassPort_get( 15448 int unit, 15449 bcm_field_entry_t entry, 15450 uint16 *data, 15451 uint16 *mask); 15452 15453 /* Set match criteria for OuterVlanActionRange qualifier. */ 15454 extern int bcm_field_qualify_OuterVlanActionRange( 15455 int unit, 15456 bcm_field_entry_t entry, 15457 bcm_vlan_t data, 15458 bcm_vlan_t mask); 15459 15460 /* Get match criteria for OuterVlanActionRange qualifier. */ 15461 extern int bcm_field_qualify_OuterVlanActionRange_get( 15462 int unit, 15463 bcm_field_entry_t entry, 15464 bcm_vlan_t *data, 15465 bcm_vlan_t *mask); 15466 15467 /* Set match criteria for InnerVlanActionRange qualifier. */ 15468 extern int bcm_field_qualify_InnerVlanActionRange( 15469 int unit, 15470 bcm_field_entry_t entry, 15471 bcm_vlan_t data, 15472 bcm_vlan_t mask); 15473 15474 /* Get match criteria for InnerVlanActionRange qualifier. */ 15475 extern int bcm_field_qualify_InnerVlanActionRange_get( 15476 int unit, 15477 bcm_field_entry_t entry, 15478 bcm_vlan_t *data, 15479 bcm_vlan_t *mask); 15480 15481 /* bcm_field_qualify_SrcVlanGport */ 15482 extern int bcm_field_qualify_SrcVlanGport( 15483 int unit, 15484 bcm_field_entry_t entry, 15485 bcm_gport_t vlan_port_id); 15486 15487 /* bcm_field_qualify_DstVlanGport */ 15488 extern int bcm_field_qualify_DstVlanGport( 15489 int unit, 15490 bcm_field_entry_t entry, 15491 bcm_gport_t vlan_port_id); 15492 15493 /* 15494 * Get match criteria for bcmFieldQualifySrcVlanGport 15495 * qualifier from the field entry. 15496 */ 15497 extern int bcm_field_qualify_SrcVlanGport_get( 15498 int unit, 15499 bcm_field_entry_t entry, 15500 bcm_gport_t *vlan_port_id); 15501 15502 /* 15503 * Get match criteria for bcmFieldQualifyDstVlanGport 15504 * qualifier from the field entry. 15505 */ 15506 extern int bcm_field_qualify_DstVlanGport_get( 15507 int unit, 15508 bcm_field_entry_t entry, 15509 bcm_gport_t *vlan_port_id); 15510 15511 /* Set match criteria for ClassId qualifier. */ 15512 extern int bcm_field_qualify_ClassId( 15513 int unit, 15514 bcm_field_entry_t entry, 15515 uint32 data, 15516 uint32 mask); 15517 15518 /* Get match criteria for ClassId qualifier. */ 15519 extern int bcm_field_qualify_ClassId_get( 15520 int unit, 15521 bcm_field_entry_t entry, 15522 uint32 *data, 15523 uint32 *mask); 15524 15525 /* 15526 * Set match criteria for bcmFieldQualifyIngressInterfaceClassVPort 15527 * qualifier in the field entry. 15528 */ 15529 extern int bcm_field_qualify_IngressInterfaceClassVPort( 15530 int unit, 15531 bcm_field_entry_t entry, 15532 uint32 data, 15533 uint32 mask); 15534 15535 /* 15536 * Get match criteria for bcmFieldQualifyIngressInterfaceClassVPort 15537 * qualifier in the field entry. 15538 */ 15539 extern int bcm_field_qualify_IngressInterfaceClassVPort_get( 15540 int unit, 15541 bcm_field_entry_t entry, 15542 uint32 *data, 15543 uint32 *mask); 15544 15545 /* bcm_field_qualify_SrcVlanGports */ 15546 extern int bcm_field_qualify_SrcVlanGports( 15547 int unit, 15548 bcm_field_entry_t entry, 15549 bcm_gport_t vlan_port_id, 15550 bcm_gport_t vlan_port_mask); 15551 15552 /* bcm_field_qualify_DstVlanGports */ 15553 extern int bcm_field_qualify_DstVlanGports( 15554 int unit, 15555 bcm_field_entry_t entry, 15556 bcm_gport_t vlan_port_id, 15557 bcm_gport_t vlan_port_mask); 15558 15559 /* 15560 * Get match criteria for bcmFieldQualifySrcVlanGports 15561 * qualifier from the field entry. 15562 */ 15563 extern int bcm_field_qualify_SrcVlanGports_get( 15564 int unit, 15565 bcm_field_entry_t entry, 15566 bcm_gport_t *vlan_port_id, 15567 bcm_gport_t *vlan_port_mask); 15568 15569 /* 15570 * Get match criteria for bcmFieldQualifyDstVlanGports 15571 * qualifier from the field entry. 15572 */ 15573 extern int bcm_field_qualify_DstVlanGports_get( 15574 int unit, 15575 bcm_field_entry_t entry, 15576 bcm_gport_t *vlan_port_id, 15577 bcm_gport_t *vlan_port_mask); 15578 15579 /* bcm_field_qualify_SrcVxlanGports */ 15580 extern int bcm_field_qualify_SrcVxlanGports( 15581 int unit, 15582 bcm_field_entry_t entry, 15583 bcm_gport_t vxlan_port_id, 15584 bcm_gport_t vxlan_port_mask); 15585 15586 /* bcm_field_qualify_DstVxlanGports */ 15587 extern int bcm_field_qualify_DstVxlanGports( 15588 int unit, 15589 bcm_field_entry_t entry, 15590 bcm_gport_t vxlan_port_id, 15591 bcm_gport_t vxlan_port_mask); 15592 15593 /* 15594 * Get match criteria for bcmFieldQualifySrcVxlanGports 15595 * qualifier from the field entry. 15596 */ 15597 extern int bcm_field_qualify_SrcVxlanGports_get( 15598 int unit, 15599 bcm_field_entry_t entry, 15600 bcm_gport_t *vxlan_port_id, 15601 bcm_gport_t *vxlan_port_mask); 15602 15603 /* 15604 * Get match criteria for bcmFieldQualifyDstVxlanGports 15605 * qualifier from the field entry. 15606 */ 15607 extern int bcm_field_qualify_DstVxlanGports_get( 15608 int unit, 15609 bcm_field_entry_t entry, 15610 bcm_gport_t *vxlan_port_id, 15611 bcm_gport_t *vxlan_port_mask); 15612 15613 /* bcm_field_qualify_SrcWlanGports */ 15614 extern int bcm_field_qualify_SrcWlanGports( 15615 int unit, 15616 bcm_field_entry_t entry, 15617 bcm_gport_t wlan_port_id, 15618 bcm_gport_t wlan_port_mask); 15619 15620 /* bcm_field_qualify_DstWlanGports */ 15621 extern int bcm_field_qualify_DstWlanGports( 15622 int unit, 15623 bcm_field_entry_t entry, 15624 bcm_gport_t wlan_port_id, 15625 bcm_gport_t wlan_port_mask); 15626 15627 /* 15628 * Get match criteria for bcmFieldQualifySrcWlanGports 15629 * qualifier from the field entry. 15630 */ 15631 extern int bcm_field_qualify_SrcWlanGports_get( 15632 int unit, 15633 bcm_field_entry_t entry, 15634 bcm_gport_t *wlan_port_id, 15635 bcm_gport_t *wlan_port_mask); 15636 15637 /* 15638 * Get match criteria for bcmFieldQualifyDstWlanGports 15639 * qualifier from the field entry. 15640 */ 15641 extern int bcm_field_qualify_DstWlanGports_get( 15642 int unit, 15643 bcm_field_entry_t entry, 15644 bcm_gport_t *wlan_port_id, 15645 bcm_gport_t *wlan_port_mask); 15646 15647 /* bcm_field_qualify_SrcMplsGports */ 15648 extern int bcm_field_qualify_SrcMplsGports( 15649 int unit, 15650 bcm_field_entry_t entry, 15651 bcm_gport_t mpls_port_id, 15652 bcm_gport_t mpls_port_mask); 15653 15654 /* bcm_field_qualify_DstMplsGports */ 15655 extern int bcm_field_qualify_DstMplsGports( 15656 int unit, 15657 bcm_field_entry_t entry, 15658 bcm_gport_t mpls_port_id, 15659 bcm_gport_t mpls_port_mask); 15660 15661 /* 15662 * Get match criteria for bcmFieldQualifySrcMplsGports 15663 * qualifier from the field entry. 15664 */ 15665 extern int bcm_field_qualify_SrcMplsGports_get( 15666 int unit, 15667 bcm_field_entry_t entry, 15668 bcm_gport_t *mpls_port_id, 15669 bcm_gport_t *mpls_port_mask); 15670 15671 /* 15672 * Get match criteria for bcmFieldQualifyDstMplsGports 15673 * qualifier from the field entry. 15674 */ 15675 extern int bcm_field_qualify_DstMplsGports_get( 15676 int unit, 15677 bcm_field_entry_t entry, 15678 bcm_gport_t *mpls_port_id, 15679 bcm_gport_t *mpls_port_mask); 15680 15681 /* bcm_field_qualify_SrcGports */ 15682 extern int bcm_field_qualify_SrcGports( 15683 int unit, 15684 bcm_field_entry_t entry, 15685 bcm_gport_t port_id, 15686 bcm_gport_t port_mask); 15687 15688 /* bcm_field_qualify_DstGports */ 15689 extern int bcm_field_qualify_DstGports( 15690 int unit, 15691 bcm_field_entry_t entry, 15692 bcm_gport_t port_id, 15693 bcm_gport_t port_mask); 15694 15695 /* 15696 * Get match criteria for bcmFieldQualifySrcGports 15697 * qualifier from the field entry. 15698 */ 15699 extern int bcm_field_qualify_SrcGports_get( 15700 int unit, 15701 bcm_field_entry_t entry, 15702 bcm_gport_t *port_id, 15703 bcm_gport_t *port_mask); 15704 15705 /* 15706 * Get match criteria for bcmFieldQualifyDstGports 15707 * qualifier from the field entry. 15708 */ 15709 extern int bcm_field_qualify_DstGports_get( 15710 int unit, 15711 bcm_field_entry_t entry, 15712 bcm_gport_t *port_id, 15713 bcm_gport_t *port_mask); 15714 15715 /* bcm_field_qualify_SrcMimGports */ 15716 extern int bcm_field_qualify_SrcMimGports( 15717 int unit, 15718 bcm_field_entry_t entry, 15719 bcm_gport_t mim_port_id, 15720 bcm_gport_t mim_port_mask); 15721 15722 /* bcm_field_qualify_DstMimGports */ 15723 extern int bcm_field_qualify_DstMimGports( 15724 int unit, 15725 bcm_field_entry_t entry, 15726 bcm_gport_t mim_port_id, 15727 bcm_gport_t mim_port_mask); 15728 15729 /* 15730 * Get match criteria for bcmFieldQualifySrcMimGports 15731 * qualifier from the field entry. 15732 */ 15733 extern int bcm_field_qualify_SrcMimGports_get( 15734 int unit, 15735 bcm_field_entry_t entry, 15736 bcm_gport_t *mim_port_id, 15737 bcm_gport_t *mim_port_mask); 15738 15739 /* 15740 * Get match criteria for bcmFieldQualifyDstMimGports 15741 * qualifier from the field entry. 15742 */ 15743 extern int bcm_field_qualify_DstMimGports_get( 15744 int unit, 15745 bcm_field_entry_t entry, 15746 bcm_gport_t *mim_port_id, 15747 bcm_gport_t *mim_port_mask); 15748 15749 /* bcm_field_qualify_SrcNivGports */ 15750 extern int bcm_field_qualify_SrcNivGports( 15751 int unit, 15752 bcm_field_entry_t entry, 15753 bcm_gport_t niv_port_id, 15754 bcm_gport_t niv_port_mask); 15755 15756 /* bcm_field_qualify_DstNivGports */ 15757 extern int bcm_field_qualify_DstNivGports( 15758 int unit, 15759 bcm_field_entry_t entry, 15760 bcm_gport_t niv_port_id, 15761 bcm_gport_t niv_port_mask); 15762 15763 /* 15764 * Get match criteria for bcmFieldQualifySrcNivGports 15765 * qualifier from the field entry. 15766 */ 15767 extern int bcm_field_qualify_SrcNivGports_get( 15768 int unit, 15769 bcm_field_entry_t entry, 15770 bcm_gport_t *niv_port_id, 15771 bcm_gport_t *niv_port_mask); 15772 15773 /* 15774 * Get match criteria for bcmFieldQualifyDstNivGports 15775 * qualifier from the field entry. 15776 */ 15777 extern int bcm_field_qualify_DstNivGports_get( 15778 int unit, 15779 bcm_field_entry_t entry, 15780 bcm_gport_t *niv_port_id, 15781 bcm_gport_t *niv_port_mask); 15782 15783 /* bcm_field_qualify_SrcModPortGports */ 15784 extern int bcm_field_qualify_SrcModPortGports( 15785 int unit, 15786 bcm_field_entry_t entry, 15787 bcm_gport_t port_id, 15788 bcm_gport_t port_mask); 15789 15790 /* 15791 * Get match criteria for bcmFieldQualifySrcModPortGports 15792 * qualifier from the field entry. 15793 */ 15794 extern int bcm_field_qualify_SrcModPortGports_get( 15795 int unit, 15796 bcm_field_entry_t entry, 15797 bcm_gport_t *port_id, 15798 bcm_gport_t *port_mask); 15799 15800 /* Qualify Reserved_1 field in Vxlan Header */ 15801 extern int bcm_field_qualify_VxlanHeaderBits8_31( 15802 int unit, 15803 bcm_field_entry_t entry, 15804 uint32 data, 15805 uint32 mask); 15806 15807 /* Get match criteria for Reserved_1 field in Vxlan Header */ 15808 extern int bcm_field_qualify_VxlanHeaderBits8_31_get( 15809 int unit, 15810 bcm_field_entry_t entry, 15811 uint32 *data, 15812 uint32 *mask); 15813 15814 /* Qualify Reserved_2 field in Vxlan Header */ 15815 extern int bcm_field_qualify_VxlanHeaderBits56_63( 15816 int unit, 15817 bcm_field_entry_t entry, 15818 uint8 data, 15819 uint8 mask); 15820 15821 /* Get match criteria for Reserved_2 field in Vxlan Header */ 15822 extern int bcm_field_qualify_VxlanHeaderBits56_63_get( 15823 int unit, 15824 bcm_field_entry_t entry, 15825 uint8 *data, 15826 uint8 *mask); 15827 15828 #endif /* BCM_HIDE_DISPATCHABLE */ 15829 15830 /* 15831 * Field Hint Type 15832 * 15833 * Specify the hint type for a group. 15834 */ 15835 typedef enum bcm_field_hint_type_e { 15836 bcmFieldHintTypeCompression = 0, /* Hint Type for Auto Compression */ 15837 bcmFieldHintTypeExtraction = 1, /* Hint Type for Qualifier Extraction */ 15838 bcmFieldHintTypeGroupAutoExpansion = 2, /* Hint Type for Group Auto Expansion */ 15839 bcmFieldHintTypeExactMatch = 3, /* Hint Type for Exact Match. */ 15840 bcmFieldHintTypeCount = 4 /* Always Last. Not a usable value. */ 15841 } bcm_field_hint_type_t; 15842 15843 #define BCM_FIELD_HINT_TYPE_STRINGS \ 15844 { \ 15845 "Compression", \ 15846 "Extraction", \ 15847 "GroupAutoExpansion", \ 15848 "ExactMatch" \ 15849 } 15850 15851 /* 15852 * Field Hints. 15853 * 15854 * Flags values to update the bcm_field_hints_t structure. 15855 */ 15856 #define BCM_FIELD_HINT_EXACT_MATCH_ONLY (1 << 0) /* Exact Match Only. */ 15857 #define BCM_FIELD_GROUP_AUTO_EXPANSION_SMALL (1 << 1) /* Prefer expanding using 15858 smaller slices */ 15859 #define BCM_FIELD_GROUP_AUTO_EXPANSION_LARGE (1 << 2) /* Prefer expanding using 15860 larger slices */ 15861 #define BCM_FIELD_GROUP_MAX_SIZE_HARD_LIMIT (1 << 3) /* Set Hard limit for 15862 max_group_size. */ 15863 #define BCM_FIELD_HINT_EXACT_MATCH_GROUP_PRIORITY (1 << 4) /* Set Hint for Exact 15864 Match Group. */ 15865 15866 /* Specify hints to be used during group creation. */ 15867 typedef struct bcm_field_hint_s { 15868 bcm_field_hint_type_t hint_type; /* Field hints of type 15869 bcm_field_hint_type_t. */ 15870 bcm_field_qualify_t qual; /* Field qualifier bcmFieldQualifyXXX. */ 15871 uint32 max_values; /* To figure out the width of the 15872 compression output. */ 15873 uint32 start_bit; /* Builds the range in conjunction with 15874 end_bit which will indicate that in 15875 the 15876 full mask any 15877 bits outside of that range are 15878 guaranteed to be 0. */ 15879 uint32 end_bit; /* End bit of a mask for the qualifier 15880 in hint structure. */ 15881 uint32 flags; /* Flags. */ 15882 uint32 dosattack_event_flags; /* Dos Attack Events Flags. */ 15883 uint32 max_group_size; /* Max size of the group. */ 15884 int priority; /* Group priority. */ 15885 bcm_udf_id_t udf_id; /* UDF ID. */ 15886 } bcm_field_hint_t; 15887 15888 /* Initialize Field Group Hint Structure. */ 15889 extern void bcm_field_hint_t_init( 15890 bcm_field_hint_t *hint); 15891 15892 #ifndef BCM_HIDE_DISPATCHABLE 15893 15894 /* Create a hint id. */ 15895 extern int bcm_field_hints_create( 15896 int unit, 15897 bcm_field_hintid_t *hint_id); 15898 15899 /* Add bcm_field_hint_t structure to a hint_id */ 15900 extern int bcm_field_hints_add( 15901 int unit, 15902 bcm_field_hintid_t hint_id, 15903 bcm_field_hint_t *hint); 15904 15905 /* Get bcm_field_hint_t structure from a hint_id */ 15906 extern int bcm_field_hints_get( 15907 int unit, 15908 bcm_field_hintid_t hint_id, 15909 bcm_field_hint_t *hint); 15910 15911 /* Delete bcm_field_hint_t structure from a hint_id */ 15912 extern int bcm_field_hints_delete( 15913 int unit, 15914 bcm_field_hintid_t hint_id, 15915 bcm_field_hint_t *hint); 15916 15917 /* Delete all the bcm_field_hint_t structures from a hint_id */ 15918 extern int bcm_field_hints_delete_all( 15919 int unit, 15920 bcm_field_hintid_t hint_id); 15921 15922 /* 15923 * Delete all the bcm_field_hint_t structures from a hint_id 15924 * and also the hint id so that the id can be reused 15925 */ 15926 extern int bcm_field_hints_destroy( 15927 int unit, 15928 bcm_field_hintid_t hint_id); 15929 15930 /* Set match criteria for OamInLifIdValid qualifier. */ 15931 extern int bcm_field_qualify_OamInLifIdValid( 15932 int unit, 15933 bcm_field_entry_t entry, 15934 uint8 data, 15935 uint8 mask); 15936 15937 /* Get match criteria for OamInLifIdValid qualifier. */ 15938 extern int bcm_field_qualify_OamInLifIdValid_get( 15939 int unit, 15940 bcm_field_entry_t entry, 15941 uint8 *data, 15942 uint8 *mask); 15943 15944 /* Set match criteria for OamInLifId qualifier. */ 15945 extern int bcm_field_qualify_OamInLifId( 15946 int unit, 15947 bcm_field_entry_t entry, 15948 uint32 data, 15949 uint32 mask); 15950 15951 /* Get match criteria for OamInLifId qualifier. */ 15952 extern int bcm_field_qualify_OamInLifId_get( 15953 int unit, 15954 bcm_field_entry_t entry, 15955 uint32 *data, 15956 uint32 *mask); 15957 15958 /* Set match criteria for OamUpMep qualifier. */ 15959 extern int bcm_field_qualify_OamUpMep( 15960 int unit, 15961 bcm_field_entry_t entry, 15962 uint8 data, 15963 uint8 mask); 15964 15965 /* Get match criteria for OamUpMep qualifier. */ 15966 extern int bcm_field_qualify_OamUpMep_get( 15967 int unit, 15968 bcm_field_entry_t entry, 15969 uint8 *data, 15970 uint8 *mask); 15971 15972 /* Set match criteria for OamSubtype qualifier. */ 15973 extern int bcm_field_qualify_OamSubtype( 15974 int unit, 15975 bcm_field_entry_t entry, 15976 uint8 data, 15977 uint8 mask); 15978 15979 /* Get match criteria for OamSubtype qualifier. */ 15980 extern int bcm_field_qualify_OamSubtype_get( 15981 int unit, 15982 bcm_field_entry_t entry, 15983 uint8 *data, 15984 uint8 *mask); 15985 15986 /* Set match criteria for OamHeaderOffset qualifier. */ 15987 extern int bcm_field_qualify_OamHeaderOffset( 15988 int unit, 15989 bcm_field_entry_t entry, 15990 uint32 data, 15991 uint32 mask); 15992 15993 /* Get match criteria for OamHeaderOffset qualifier. */ 15994 extern int bcm_field_qualify_OamHeaderOffset_get( 15995 int unit, 15996 bcm_field_entry_t entry, 15997 uint32 *data, 15998 uint32 *mask); 15999 16000 /* Set match criteria for OamStampOffset qualifier. */ 16001 extern int bcm_field_qualify_OamStampOffset( 16002 int unit, 16003 bcm_field_entry_t entry, 16004 uint32 data, 16005 uint32 mask); 16006 16007 /* Get match criteria for OamStampOffset qualifier. */ 16008 extern int bcm_field_qualify_OamStampOffset_get( 16009 int unit, 16010 bcm_field_entry_t entry, 16011 uint32 *data, 16012 uint32 *mask); 16013 16014 /* Set match criteria for OamMepId qualifier. */ 16015 extern int bcm_field_qualify_OamMepId( 16016 int unit, 16017 bcm_field_entry_t entry, 16018 uint32 data, 16019 uint32 mask); 16020 16021 /* Get match criteria for OamMepId qualifier. */ 16022 extern int bcm_field_qualify_OamMepId_get( 16023 int unit, 16024 bcm_field_entry_t entry, 16025 uint32 *data, 16026 uint32 *mask); 16027 16028 /* Set match criteria for OamMeterDisable qualifier. */ 16029 extern int bcm_field_qualify_OamMeterDisable( 16030 int unit, 16031 bcm_field_entry_t entry, 16032 uint8 data, 16033 uint8 mask); 16034 16035 /* Get match criteria for OamMeterDisable qualifier. */ 16036 extern int bcm_field_qualify_OamMeterDisable_get( 16037 int unit, 16038 bcm_field_entry_t entry, 16039 uint8 *data, 16040 uint8 *mask); 16041 16042 /* Set match criteria for OamTsSystemHeader qualifier. */ 16043 extern int bcm_field_qualify_OamTsSystemHeader( 16044 int unit, 16045 bcm_field_entry_t entry, 16046 uint64 data, 16047 uint64 mask); 16048 16049 /* Get match criteria for OamTsSystemHeader qualifier. */ 16050 extern int bcm_field_qualify_OamTsSystemHeader_get( 16051 int unit, 16052 bcm_field_entry_t entry, 16053 uint64 *data, 16054 uint64 *mask); 16055 16056 /* Set match criteria for EthernetOamHeaderBits0_31 qualifier. */ 16057 extern int bcm_field_qualify_EthernetOamHeaderBits0_31( 16058 int unit, 16059 bcm_field_entry_t entry, 16060 uint32 data, 16061 uint32 mask); 16062 16063 /* Get match criteria for EthernetOamHeaderBits0_31 qualifier. */ 16064 extern int bcm_field_qualify_EthernetOamHeaderBits0_31_get( 16065 int unit, 16066 bcm_field_entry_t entry, 16067 uint32 *data, 16068 uint32 *mask); 16069 16070 /* Set match criteria for EthernetOamHeaderBits32_63. */ 16071 extern int bcm_field_qualify_EthernetOamHeaderBits32_63( 16072 int unit, 16073 bcm_field_entry_t entry, 16074 uint32 data, 16075 uint32 mask); 16076 16077 /* Get match criteria for EthernetOamHeaderBits32_63. */ 16078 extern int bcm_field_qualify_EthernetOamHeaderBits32_63_get( 16079 int unit, 16080 bcm_field_entry_t entry, 16081 uint32 *data, 16082 uint32 *mask); 16083 16084 /* Set match criteria for MplsOamHeaderBits0_31. */ 16085 extern int bcm_field_qualify_MplsOamHeaderBits0_31( 16086 int unit, 16087 bcm_field_entry_t entry, 16088 uint32 data, 16089 uint32 mask); 16090 16091 /* Get match criteria for MplsOamHeaderBits0_31 qualifier. */ 16092 extern int bcm_field_qualify_MplsOamHeaderBits0_31_get( 16093 int unit, 16094 bcm_field_entry_t entry, 16095 uint32 *data, 16096 uint32 *mask); 16097 16098 /* Set match criteria for MplsOamHeaderBits32_63 qualifier. */ 16099 extern int bcm_field_qualify_MplsOamHeaderBits32_63( 16100 int unit, 16101 bcm_field_entry_t entry, 16102 uint32 data, 16103 uint32 mask); 16104 16105 /* Get match criteria for MplsOamHeaderBits32_63 qualifier. */ 16106 extern int bcm_field_qualify_MplsOamHeaderBits32_63_get( 16107 int unit, 16108 bcm_field_entry_t entry, 16109 uint32 *data, 16110 uint32 *mask); 16111 16112 /* Set match criteria for MplsOamACH qualifier. */ 16113 extern int bcm_field_qualify_MplsOamACH( 16114 int unit, 16115 bcm_field_entry_t entry, 16116 uint32 data, 16117 uint32 mask); 16118 16119 /* Get match criteria for MplsOamACH qualifier. */ 16120 extern int bcm_field_qualify_MplsOamACH_get( 16121 int unit, 16122 bcm_field_entry_t entry, 16123 uint32 *data, 16124 uint32 *mask); 16125 16126 /* Set match criteria for OamHeaderBits0_31 qualifier. */ 16127 extern int bcm_field_qualify_OamHeaderBits0_31( 16128 int unit, 16129 bcm_field_entry_t entry, 16130 uint32 data, 16131 uint32 mask); 16132 16133 /* Get match criteria for OamHeaderBits0_31 qualifier. */ 16134 extern int bcm_field_qualify_OamHeaderBits0_31_get( 16135 int unit, 16136 bcm_field_entry_t entry, 16137 uint32 *data, 16138 uint32 *mask); 16139 16140 /* Set match criteria for OamHeaderBits32_63 qualifier. */ 16141 extern int bcm_field_qualify_OamHeaderBits32_63( 16142 int unit, 16143 bcm_field_entry_t entry, 16144 uint32 data, 16145 uint32 mask); 16146 16147 /* Get match criteria for OamHeaderBits32_63 qualifier. */ 16148 extern int bcm_field_qualify_OamHeaderBits32_63_get( 16149 int unit, 16150 bcm_field_entry_t entry, 16151 uint32 *data, 16152 uint32 *mask); 16153 16154 /* 16155 * Set match criteria for bcmFieldQualifyDstMulticastGroups 16156 * qualifier in the field entry. 16157 */ 16158 extern int bcm_field_qualify_DstMulticastGroups( 16159 int unit, 16160 bcm_field_entry_t entry, 16161 bcm_multicast_t group, 16162 bcm_multicast_t mask); 16163 16164 /* 16165 * Get match criteria for bcmFieldQualifyDstMulticastGroups 16166 * qualifier from the field entry. 16167 */ 16168 extern int bcm_field_qualify_DstMulticastGroups_get( 16169 int unit, 16170 bcm_field_entry_t entry, 16171 bcm_multicast_t *group, 16172 bcm_multicast_t *mask); 16173 16174 #endif /* BCM_HIDE_DISPATCHABLE */ 16175 16176 /* 16177 * List of Field Processor group operational modes supported per-CAP 16178 * stage. 16179 */ 16180 typedef enum bcm_field_group_oper_mode_e { 16181 bcmFieldGroupOperModeGlobal = 0, /* Group Operational Global Mode Value. */ 16182 bcmFieldGroupOperModePipeLocal = 1, /* Group Operational Pipe Local Mode 16183 Value. */ 16184 bcmFieldGroupOperModeCount = 2 /* Always last. Not a usable value. */ 16185 } bcm_field_group_oper_mode_t; 16186 16187 #define BCM_FIELD_OPER_MODE_STRINGS \ 16188 { \ 16189 "Global", \ 16190 "PipeLocal" \ 16191 } 16192 16193 #ifndef BCM_HIDE_DISPATCHABLE 16194 16195 /* Configure Field Processor Group operational mode per-CAP stage. */ 16196 extern int bcm_field_group_oper_mode_set( 16197 int unit, 16198 bcm_field_qualify_t stage, 16199 bcm_field_group_oper_mode_t mode); 16200 16201 /* 16202 * Retrieves current Field Processor Group operational mode per-CAP 16203 * stage. 16204 */ 16205 extern int bcm_field_group_oper_mode_get( 16206 int unit, 16207 bcm_field_qualify_t stage, 16208 bcm_field_group_oper_mode_t *mode); 16209 16210 /* bcm_field_qualify_InterfaceInPorts */ 16211 extern int bcm_field_qualify_InterfaceInPorts( 16212 int unit, 16213 bcm_field_entry_t entry, 16214 bcm_pbmp_t data, 16215 bcm_pbmp_t mask); 16216 16217 /* 16218 * Get match criteria for bcmFieldQualifyInPorts 16219 * qualifier from the field entry. 16220 */ 16221 extern int bcm_field_qualify_InterfaceInPorts_get( 16222 int unit, 16223 bcm_field_entry_t entry, 16224 bcm_pbmp_t *data, 16225 bcm_pbmp_t *mask); 16226 16227 /* 16228 * Configure match criteria for bcmFieldQualifyDestVirtualPortValid 16229 * qualifier from the field entry. 16230 */ 16231 extern int bcm_field_qualify_DestVirtualPortValid( 16232 int unit, 16233 bcm_field_entry_t entry, 16234 uint8 data, 16235 uint8 mask); 16236 16237 /* 16238 * Get match criteria for bcmFieldQualifyDestVirtualPortValid 16239 * qualifier from the field entry. 16240 */ 16241 extern int bcm_field_qualify_DestVirtualPortValid_get( 16242 int unit, 16243 bcm_field_entry_t entry, 16244 uint8 *data, 16245 uint8 *mask); 16246 16247 /* 16248 * Configure match criteria for bcmFieldQualifyInVPortWide 16249 * qualifier from the field entry. 16250 */ 16251 extern int bcm_field_qualify_InVPortWide( 16252 int unit, 16253 bcm_field_entry_t entry, 16254 uint64 data, 16255 uint64 mask); 16256 16257 /* 16258 * Get match criteria for bcmFieldQualifyInVPortWide 16259 * qualifier from the field entry. 16260 */ 16261 extern int bcm_field_qualify_InVPortWide_get( 16262 int unit, 16263 bcm_field_entry_t entry, 16264 uint64 *data, 16265 uint64 *mask); 16266 16267 /* 16268 * Configure match criteria for bcmFieldQualifyFcoeOxID 16269 * qualifier from the field entry. 16270 */ 16271 extern int bcm_field_qualify_FcoeOxID( 16272 int unit, 16273 bcm_field_entry_t entry, 16274 uint16 data, 16275 uint16 mask); 16276 16277 /* 16278 * Get match criteria for bcmFieldQualifyFcoeOxID 16279 * qualifier from the field entry. 16280 */ 16281 extern int bcm_field_qualify_FcoeOxID_get( 16282 int unit, 16283 bcm_field_entry_t entry, 16284 uint16 *data, 16285 uint16 *mask); 16286 16287 /* 16288 * Configure match criteria for bcmFieldQualifyFcoeRxID 16289 * qualifier from the field entry. 16290 */ 16291 extern int bcm_field_qualify_FcoeRxID( 16292 int unit, 16293 bcm_field_entry_t entry, 16294 uint16 data, 16295 uint16 mask); 16296 16297 /* 16298 * Get match criteria for bcmFieldQualifyFcoeRxID 16299 * qualifier from the field entry. 16300 */ 16301 extern int bcm_field_qualify_FcoeRxID_get( 16302 int unit, 16303 bcm_field_entry_t entry, 16304 uint16 *data, 16305 uint16 *mask); 16306 16307 /* 16308 * Configure match criteria for bcmFieldQualifyIpProtocolClass 16309 * qualifier from the field entry. 16310 */ 16311 extern int bcm_field_qualify_IpProtocolClass( 16312 int unit, 16313 bcm_field_entry_t entry, 16314 bcm_class_t data, 16315 bcm_class_t mask); 16316 16317 /* 16318 * Get match criteria for bcmFieldQualifyIpProtocolClass 16319 * qualifier from the field entry. 16320 */ 16321 extern int bcm_field_qualify_IpProtocolClass_get( 16322 int unit, 16323 bcm_field_entry_t entry, 16324 bcm_class_t *data, 16325 bcm_class_t *mask); 16326 16327 /* 16328 * Configure match criteria for bcmFieldQualifyEtherTypeClass 16329 * qualifier from the field entry. 16330 */ 16331 extern int bcm_field_qualify_EtherTypeClass( 16332 int unit, 16333 bcm_field_entry_t entry, 16334 bcm_class_t data, 16335 bcm_class_t mask); 16336 16337 /* 16338 * Get match criteria for bcmFieldQualifyEtherTypeClass 16339 * qualifier from the field entry. 16340 */ 16341 extern int bcm_field_qualify_EtherTypeClass_get( 16342 int unit, 16343 bcm_field_entry_t entry, 16344 bcm_class_t *data, 16345 bcm_class_t *mask); 16346 16347 /* 16348 * Configure match criteria for bcmFieldQualifyL4SrcPortClass 16349 * qualifier from the field entry. 16350 */ 16351 extern int bcm_field_qualify_L4SrcPortClass( 16352 int unit, 16353 bcm_field_entry_t entry, 16354 bcm_class_t data, 16355 bcm_class_t mask); 16356 16357 /* 16358 * Get match criteria for bcmFieldQualifyL4SrcPortClass 16359 * qualifier from the field entry. 16360 */ 16361 extern int bcm_field_qualify_L4SrcPortClass_get( 16362 int unit, 16363 bcm_field_entry_t entry, 16364 bcm_class_t *data, 16365 bcm_class_t *mask); 16366 16367 /* 16368 * Configure match criteria for bcmFieldQualifyL4DstPortClass 16369 * qualifier from the field entry. 16370 */ 16371 extern int bcm_field_qualify_L4DstPortClass( 16372 int unit, 16373 bcm_field_entry_t entry, 16374 bcm_class_t data, 16375 bcm_class_t mask); 16376 16377 /* 16378 * Get match criteria for bcmFieldQualifyL4DstPortClass 16379 * qualifier from the field entry. 16380 */ 16381 extern int bcm_field_qualify_L4DstPortClass_get( 16382 int unit, 16383 bcm_field_entry_t entry, 16384 bcm_class_t *data, 16385 bcm_class_t *mask); 16386 16387 /* 16388 * Configure match criteria for bcmFieldQualifySrcIpClass 16389 * qualifier from the field entry. 16390 */ 16391 extern int bcm_field_qualify_SrcIpClass( 16392 int unit, 16393 bcm_field_entry_t entry, 16394 bcm_class_t data, 16395 bcm_class_t mask); 16396 16397 /* 16398 * Get match criteria for bcmFieldQualifySrcIpClass 16399 * qualifier from the field entry. 16400 */ 16401 extern int bcm_field_qualify_SrcIpClass_get( 16402 int unit, 16403 bcm_field_entry_t entry, 16404 bcm_class_t *data, 16405 bcm_class_t *mask); 16406 16407 /* 16408 * Configure match criteria for bcmFieldQualifySrcIpClassMsbNibble 16409 * qualifier from the field entry. 16410 */ 16411 extern int bcm_field_qualify_SrcIpClassMsbNibble( 16412 int unit, 16413 bcm_field_entry_t entry, 16414 bcm_class_t data, 16415 bcm_class_t mask); 16416 16417 /* 16418 * Get match criteria for bcmFieldQualifySrcIpClassMsbNibble 16419 * qualifier from the field entry. 16420 */ 16421 extern int bcm_field_qualify_SrcIpClassMsbNibble_get( 16422 int unit, 16423 bcm_field_entry_t entry, 16424 bcm_class_t *data, 16425 bcm_class_t *mask); 16426 16427 /* 16428 * Configure match criteria for bcmFieldQualifySrcIpClassLower 16429 * qualifier from the field entry. 16430 */ 16431 extern int bcm_field_qualify_SrcIpClassLower( 16432 int unit, 16433 bcm_field_entry_t entry, 16434 bcm_class_t data, 16435 bcm_class_t mask); 16436 16437 /* 16438 * Get match criteria for bcmFieldQualifySrcIpClassLower 16439 * qualifier from the field entry. 16440 */ 16441 extern int bcm_field_qualify_SrcIpClassLower_get( 16442 int unit, 16443 bcm_field_entry_t entry, 16444 bcm_class_t *data, 16445 bcm_class_t *mask); 16446 16447 /* 16448 * Configure match criteria for bcmFieldQualifySrcIpClassUpper 16449 * qualifier from the field entry. 16450 */ 16451 extern int bcm_field_qualify_SrcIpClassUpper( 16452 int unit, 16453 bcm_field_entry_t entry, 16454 bcm_class_t data, 16455 bcm_class_t mask); 16456 16457 /* 16458 * Get match criteria for bcmFieldQualifySrcIpClassUpper 16459 * qualifier from the field entry. 16460 */ 16461 extern int bcm_field_qualify_SrcIpClassUpper_get( 16462 int unit, 16463 bcm_field_entry_t entry, 16464 bcm_class_t *data, 16465 bcm_class_t *mask); 16466 16467 /* 16468 * Configure match criteria for bcmFieldQualifySrcIp6Class 16469 * qualifier from the field entry. 16470 */ 16471 extern int bcm_field_qualify_SrcIp6Class( 16472 int unit, 16473 bcm_field_entry_t entry, 16474 bcm_class_t data, 16475 bcm_class_t mask); 16476 16477 /* 16478 * Get match criteria for bcmFieldQualifySrcIp6Class 16479 * qualifier from the field entry. 16480 */ 16481 extern int bcm_field_qualify_SrcIp6Class_get( 16482 int unit, 16483 bcm_field_entry_t entry, 16484 bcm_class_t *data, 16485 bcm_class_t *mask); 16486 16487 /* 16488 * Configure match criteria for bcmFieldQualifySrcIp6ClassMsbNibble 16489 * qualifier from the field entry. 16490 */ 16491 extern int bcm_field_qualify_SrcIp6ClassMsbNibble( 16492 int unit, 16493 bcm_field_entry_t entry, 16494 bcm_class_t data, 16495 bcm_class_t mask); 16496 16497 /* 16498 * Get match criteria for bcmFieldQualifySrcIp6ClassMsbNibble 16499 * qualifier from the field entry. 16500 */ 16501 extern int bcm_field_qualify_SrcIp6ClassMsbNibble_get( 16502 int unit, 16503 bcm_field_entry_t entry, 16504 bcm_class_t *data, 16505 bcm_class_t *mask); 16506 16507 /* 16508 * Configure match criteria for bcmFieldQualifySrcIp6ClassLower 16509 * qualifier from the field entry. 16510 */ 16511 extern int bcm_field_qualify_SrcIp6ClassLower( 16512 int unit, 16513 bcm_field_entry_t entry, 16514 bcm_class_t data, 16515 bcm_class_t mask); 16516 16517 /* 16518 * Get match criteria for bcmFieldQualifySrcIp6ClassLower 16519 * qualifier from the field entry. 16520 */ 16521 extern int bcm_field_qualify_SrcIp6ClassLower_get( 16522 int unit, 16523 bcm_field_entry_t entry, 16524 bcm_class_t *data, 16525 bcm_class_t *mask); 16526 16527 /* 16528 * Configure match criteria for bcmFieldQualifySrcIp6ClassUpper 16529 * qualifier from the field entry. 16530 */ 16531 extern int bcm_field_qualify_SrcIp6ClassUpper( 16532 int unit, 16533 bcm_field_entry_t entry, 16534 bcm_class_t data, 16535 bcm_class_t mask); 16536 16537 /* 16538 * Get match criteria for bcmFieldQualifySrcIp6ClassUpper 16539 * qualifier from the field entry. 16540 */ 16541 extern int bcm_field_qualify_SrcIp6ClassUpper_get( 16542 int unit, 16543 bcm_field_entry_t entry, 16544 bcm_class_t *data, 16545 bcm_class_t *mask); 16546 16547 /* 16548 * Configure match criteria for bcmFieldQualifyFcoeOxIDClass 16549 * qualifier from the field entry. 16550 */ 16551 extern int bcm_field_qualify_FcoeOxIDClass( 16552 int unit, 16553 bcm_field_entry_t entry, 16554 bcm_class_t data, 16555 bcm_class_t mask); 16556 16557 /* 16558 * Get match criteria for bcmFieldQualifyFcoeOxIDClass 16559 * qualifier from the field entry. 16560 */ 16561 extern int bcm_field_qualify_FcoeOxIDClass_get( 16562 int unit, 16563 bcm_field_entry_t entry, 16564 bcm_class_t *data, 16565 bcm_class_t *mask); 16566 16567 /* 16568 * Configure match criteria for bcmFieldQualifyDstIpClass 16569 * qualifier from the field entry. 16570 */ 16571 extern int bcm_field_qualify_DstIpClass( 16572 int unit, 16573 bcm_field_entry_t entry, 16574 bcm_class_t data, 16575 bcm_class_t mask); 16576 16577 /* 16578 * Get match criteria for bcmFieldQualifyDstIpClass 16579 * qualifier from the field entry. 16580 */ 16581 extern int bcm_field_qualify_DstIpClass_get( 16582 int unit, 16583 bcm_field_entry_t entry, 16584 bcm_class_t *data, 16585 bcm_class_t *mask); 16586 16587 /* 16588 * Configure match criteria for bcmFieldQualifyDstIpClassMsbNibble 16589 * qualifier from the field entry. 16590 */ 16591 extern int bcm_field_qualify_DstIpClassMsbNibble( 16592 int unit, 16593 bcm_field_entry_t entry, 16594 bcm_class_t data, 16595 bcm_class_t mask); 16596 16597 /* 16598 * Get match criteria for bcmFieldQualifyDstIpClassMsbNibble 16599 * qualifier from the field entry. 16600 */ 16601 extern int bcm_field_qualify_DstIpClassMsbNibble_get( 16602 int unit, 16603 bcm_field_entry_t entry, 16604 bcm_class_t *data, 16605 bcm_class_t *mask); 16606 16607 /* 16608 * Configure match criteria for bcmFieldQualifyDstIpClassLower 16609 * qualifier from the field entry. 16610 */ 16611 extern int bcm_field_qualify_DstIpClassLower( 16612 int unit, 16613 bcm_field_entry_t entry, 16614 bcm_class_t data, 16615 bcm_class_t mask); 16616 16617 /* 16618 * Get match criteria for bcmFieldQualifyDstIpClassLower 16619 * qualifier from the field entry. 16620 */ 16621 extern int bcm_field_qualify_DstIpClassLower_get( 16622 int unit, 16623 bcm_field_entry_t entry, 16624 bcm_class_t *data, 16625 bcm_class_t *mask); 16626 16627 /* 16628 * Configure match criteria for bcmFieldQualifyDstIpClassUpper 16629 * qualifier from the field entry. 16630 */ 16631 extern int bcm_field_qualify_DstIpClassUpper( 16632 int unit, 16633 bcm_field_entry_t entry, 16634 bcm_class_t data, 16635 bcm_class_t mask); 16636 16637 /* 16638 * Get match criteria for bcmFieldQualifyDstIpClassUpper 16639 * qualifier from the field entry. 16640 */ 16641 extern int bcm_field_qualify_DstIpClassUpper_get( 16642 int unit, 16643 bcm_field_entry_t entry, 16644 bcm_class_t *data, 16645 bcm_class_t *mask); 16646 16647 /* 16648 * Configure match criteria for bcmFieldQualifyDstIp6Class 16649 * qualifier from the field entry. 16650 */ 16651 extern int bcm_field_qualify_DstIp6Class( 16652 int unit, 16653 bcm_field_entry_t entry, 16654 bcm_class_t data, 16655 bcm_class_t mask); 16656 16657 /* 16658 * Get match criteria for bcmFieldQualifyDstIp6Class 16659 * qualifier from the field entry. 16660 */ 16661 extern int bcm_field_qualify_DstIp6Class_get( 16662 int unit, 16663 bcm_field_entry_t entry, 16664 bcm_class_t *data, 16665 bcm_class_t *mask); 16666 16667 /* 16668 * Configure match criteria for bcmFieldQualifyDstIp6ClassMsbNibble 16669 * qualifier from the field entry. 16670 */ 16671 extern int bcm_field_qualify_DstIp6ClassMsbNibble( 16672 int unit, 16673 bcm_field_entry_t entry, 16674 bcm_class_t data, 16675 bcm_class_t mask); 16676 16677 /* 16678 * Get match criteria for bcmFieldQualifyDstIp6ClassMsbNibble 16679 * qualifier from the field entry. 16680 */ 16681 extern int bcm_field_qualify_DstIp6ClassMsbNibble_get( 16682 int unit, 16683 bcm_field_entry_t entry, 16684 bcm_class_t *data, 16685 bcm_class_t *mask); 16686 16687 /* 16688 * Configure match criteria for bcmFieldQualifyDstIp6ClassLower 16689 * qualifier from the field entry. 16690 */ 16691 extern int bcm_field_qualify_DstIp6ClassLower( 16692 int unit, 16693 bcm_field_entry_t entry, 16694 bcm_class_t data, 16695 bcm_class_t mask); 16696 16697 /* 16698 * Get match criteria for bcmFieldQualifyDstIp6ClassLower 16699 * qualifier from the field entry. 16700 */ 16701 extern int bcm_field_qualify_DstIp6ClassLower_get( 16702 int unit, 16703 bcm_field_entry_t entry, 16704 bcm_class_t *data, 16705 bcm_class_t *mask); 16706 16707 /* 16708 * Configure match criteria for bcmFieldQualifyDstIp6ClassUpper 16709 * qualifier from the field entry. 16710 */ 16711 extern int bcm_field_qualify_DstIp6ClassUpper( 16712 int unit, 16713 bcm_field_entry_t entry, 16714 bcm_class_t data, 16715 bcm_class_t mask); 16716 16717 /* 16718 * Get match criteria for bcmFieldQualifyDstIp6ClassUpper 16719 * qualifier from the field entry. 16720 */ 16721 extern int bcm_field_qualify_DstIp6ClassUpper_get( 16722 int unit, 16723 bcm_field_entry_t entry, 16724 bcm_class_t *data, 16725 bcm_class_t *mask); 16726 16727 /* 16728 * Configure match criteria for bcmFieldQualifyFcoeRxIDClass 16729 * qualifier from the field entry. 16730 */ 16731 extern int bcm_field_qualify_FcoeRxIDClass( 16732 int unit, 16733 bcm_field_entry_t entry, 16734 bcm_class_t data, 16735 bcm_class_t mask); 16736 16737 /* 16738 * Get match criteria for bcmFieldQualifyFcoeRxIDClass 16739 * qualifier from the field entry. 16740 */ 16741 extern int bcm_field_qualify_FcoeRxIDClass_get( 16742 int unit, 16743 bcm_field_entry_t entry, 16744 bcm_class_t *data, 16745 bcm_class_t *mask); 16746 16747 /* 16748 * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClass 16749 * qualifier from the field entry. 16750 */ 16751 extern int bcm_field_qualify_FibreChanSrcIdClass( 16752 int unit, 16753 bcm_field_entry_t entry, 16754 bcm_class_t data, 16755 bcm_class_t mask); 16756 16757 /* 16758 * Get match criteria for bcmFieldQualifyFibreChanSrcIdClass 16759 * qualifier from the field entry. 16760 */ 16761 extern int bcm_field_qualify_FibreChanSrcIdClass_get( 16762 int unit, 16763 bcm_field_entry_t entry, 16764 bcm_class_t *data, 16765 bcm_class_t *mask); 16766 16767 /* 16768 * Configure match criteria for 16769 * bcmFieldQualifyFibreChanSrcIdClassMsbNibble 16770 * qualifier from the field entry. 16771 */ 16772 extern int bcm_field_qualify_FibreChanSrcIdClassMsbNibble( 16773 int unit, 16774 bcm_field_entry_t entry, 16775 bcm_class_t data, 16776 bcm_class_t mask); 16777 16778 /* 16779 * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassMsbNibble 16780 * qualifier from the field entry. 16781 */ 16782 extern int bcm_field_qualify_FibreChanSrcIdClassMsbNibble_get( 16783 int unit, 16784 bcm_field_entry_t entry, 16785 bcm_class_t *data, 16786 bcm_class_t *mask); 16787 16788 /* 16789 * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClassLower 16790 * qualifier from the field entry. 16791 */ 16792 extern int bcm_field_qualify_FibreChanSrcIdClassLower( 16793 int unit, 16794 bcm_field_entry_t entry, 16795 bcm_class_t data, 16796 bcm_class_t mask); 16797 16798 /* 16799 * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassLower 16800 * qualifier from the field entry. 16801 */ 16802 extern int bcm_field_qualify_FibreChanSrcIdClassLower_get( 16803 int unit, 16804 bcm_field_entry_t entry, 16805 bcm_class_t *data, 16806 bcm_class_t *mask); 16807 16808 /* 16809 * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClassUpper 16810 * qualifier from the field entry. 16811 */ 16812 extern int bcm_field_qualify_FibreChanSrcIdClassUpper( 16813 int unit, 16814 bcm_field_entry_t entry, 16815 bcm_class_t data, 16816 bcm_class_t mask); 16817 16818 /* 16819 * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassUpper 16820 * qualifier from the field entry. 16821 */ 16822 extern int bcm_field_qualify_FibreChanSrcIdClassUpper_get( 16823 int unit, 16824 bcm_field_entry_t entry, 16825 bcm_class_t *data, 16826 bcm_class_t *mask); 16827 16828 /* 16829 * Configure match criteria for bcmFieldQualifyFibreChanDstIdClass 16830 * qualifier from the field entry. 16831 */ 16832 extern int bcm_field_qualify_FibreChanDstIdClass( 16833 int unit, 16834 bcm_field_entry_t entry, 16835 bcm_class_t data, 16836 bcm_class_t mask); 16837 16838 /* 16839 * Get match criteria for bcmFieldQualifyFibreChanDstIdClass 16840 * qualifier from the field entry. 16841 */ 16842 extern int bcm_field_qualify_FibreChanDstIdClass_get( 16843 int unit, 16844 bcm_field_entry_t entry, 16845 bcm_class_t *data, 16846 bcm_class_t *mask); 16847 16848 /* 16849 * Configure match criteria for 16850 * bcmFieldQualifyFibreChanDstIdClassMsbNibble 16851 * qualifier from the field entry. 16852 */ 16853 extern int bcm_field_qualify_FibreChanDstIdClassMsbNibble( 16854 int unit, 16855 bcm_field_entry_t entry, 16856 bcm_class_t data, 16857 bcm_class_t mask); 16858 16859 /* 16860 * Get match criteria for bcmFieldQualifyFibreChanDstIdClassMsbNibble 16861 * qualifier from the field entry. 16862 */ 16863 extern int bcm_field_qualify_FibreChanDstIdClassMsbNibble_get( 16864 int unit, 16865 bcm_field_entry_t entry, 16866 bcm_class_t *data, 16867 bcm_class_t *mask); 16868 16869 /* 16870 * Configure match criteria for bcmFieldQualifyFibreChanDstIdClassLower 16871 * qualifier from the field entry. 16872 */ 16873 extern int bcm_field_qualify_FibreChanDstIdClassLower( 16874 int unit, 16875 bcm_field_entry_t entry, 16876 bcm_class_t data, 16877 bcm_class_t mask); 16878 16879 /* 16880 * Get match criteria for bcmFieldQualifyFibreChanDstIdClassLower 16881 * qualifier from the field entry. 16882 */ 16883 extern int bcm_field_qualify_FibreChanDstIdClassLower_get( 16884 int unit, 16885 bcm_field_entry_t entry, 16886 bcm_class_t *data, 16887 bcm_class_t *mask); 16888 16889 /* 16890 * Configure match criteria for bcmFieldQualifyFibreChanDstIdClassUpper 16891 * qualifier from the field entry. 16892 */ 16893 extern int bcm_field_qualify_FibreChanDstIdClassUpper( 16894 int unit, 16895 bcm_field_entry_t entry, 16896 bcm_class_t data, 16897 bcm_class_t mask); 16898 16899 /* 16900 * Get match criteria for bcmFieldQualifyFibreChanDstIdClassUpper 16901 * qualifier from the field entry. 16902 */ 16903 extern int bcm_field_qualify_FibreChanDstIdClassUpper_get( 16904 int unit, 16905 bcm_field_entry_t entry, 16906 bcm_class_t *data, 16907 bcm_class_t *mask); 16908 16909 /* 16910 * Configure match criteria for bcmFieldQualifyTcpClassZero 16911 * qualifier from the field entry. 16912 */ 16913 extern int bcm_field_qualify_TcpClassZero( 16914 int unit, 16915 bcm_field_entry_t entry, 16916 bcm_class_t data, 16917 bcm_class_t mask); 16918 16919 /* 16920 * Get match criteria for bcmFieldQualifyTcpClassZero 16921 * qualifier from the field entry. 16922 */ 16923 extern int bcm_field_qualify_TcpClassZero_get( 16924 int unit, 16925 bcm_field_entry_t entry, 16926 bcm_class_t *data, 16927 bcm_class_t *mask); 16928 16929 /* 16930 * Configure match criteria for bcmFieldQualifyTosClassZero 16931 * qualifier from the field entry. 16932 */ 16933 extern int bcm_field_qualify_TosClassZero( 16934 int unit, 16935 bcm_field_entry_t entry, 16936 bcm_class_t data, 16937 bcm_class_t mask); 16938 16939 /* 16940 * Get match criteria for bcmFieldQualifyTosClassZero 16941 * qualifier from the field entry. 16942 */ 16943 extern int bcm_field_qualify_TosClassZero_get( 16944 int unit, 16945 bcm_field_entry_t entry, 16946 bcm_class_t *data, 16947 bcm_class_t *mask); 16948 16949 /* 16950 * Configure match criteria for bcmFieldQualifyTtlClassZero 16951 * qualifier from the field entry. 16952 */ 16953 extern int bcm_field_qualify_TtlClassZero( 16954 int unit, 16955 bcm_field_entry_t entry, 16956 bcm_class_t data, 16957 bcm_class_t mask); 16958 16959 /* 16960 * Get match criteria for bcmFieldQualifyTtlClassZero 16961 * qualifier from the field entry. 16962 */ 16963 extern int bcm_field_qualify_TtlClassZero_get( 16964 int unit, 16965 bcm_field_entry_t entry, 16966 bcm_class_t *data, 16967 bcm_class_t *mask); 16968 16969 /* 16970 * Configure match criteria for bcmFieldQualifyTcpClassOne 16971 * qualifier from the field entry. 16972 */ 16973 extern int bcm_field_qualify_TcpClassOne( 16974 int unit, 16975 bcm_field_entry_t entry, 16976 bcm_class_t data, 16977 bcm_class_t mask); 16978 16979 /* 16980 * Get match criteria for bcmFieldQualifyTcpClassOne 16981 * qualifier from the field entry. 16982 */ 16983 extern int bcm_field_qualify_TcpClassOne_get( 16984 int unit, 16985 bcm_field_entry_t entry, 16986 bcm_class_t *data, 16987 bcm_class_t *mask); 16988 16989 /* 16990 * Configure match criteria for bcmFieldQualifyTosClassOne 16991 * qualifier from the field entry. 16992 */ 16993 extern int bcm_field_qualify_TosClassOne( 16994 int unit, 16995 bcm_field_entry_t entry, 16996 bcm_class_t data, 16997 bcm_class_t mask); 16998 16999 /* 17000 * Get match criteria for bcmFieldQualifyTosClassOne 17001 * qualifier from the field entry. 17002 */ 17003 extern int bcm_field_qualify_TosClassOne_get( 17004 int unit, 17005 bcm_field_entry_t entry, 17006 bcm_class_t *data, 17007 bcm_class_t *mask); 17008 17009 /* 17010 * Configure match criteria for bcmFieldQualifyTtlClassOne 17011 * qualifier from the field entry. 17012 */ 17013 extern int bcm_field_qualify_TtlClassOne( 17014 int unit, 17015 bcm_field_entry_t entry, 17016 bcm_class_t data, 17017 bcm_class_t mask); 17018 17019 /* 17020 * Get match criteria for bcmFieldQualifyTtlClassOne 17021 * qualifier from the field entry. 17022 */ 17023 extern int bcm_field_qualify_TtlClassOne_get( 17024 int unit, 17025 bcm_field_entry_t entry, 17026 bcm_class_t *data, 17027 bcm_class_t *mask); 17028 17029 #endif /* BCM_HIDE_DISPATCHABLE */ 17030 17031 /* bcm_field_redirect_type_e */ 17032 typedef enum bcm_field_redirect_type_e { 17033 bcmFieldRedirectTypeL3 = 0, /* Redirect based on L3 route flow. */ 17034 bcmFieldRedirectTypeAll = 1, /* Redirect all IP and non-IP flows. */ 17035 bcmFieldRedirectTypeCount = 3 /* Always Last. Not a usable value. */ 17036 } bcm_field_redirect_type_t; 17037 17038 #define BCM_FIELD_REDIRECT_TYPE \ 17039 { \ 17040 "bcmFieldRedirectTypeL3", \ 17041 "bcmFieldRedirectTypeAll" \ 17042 } 17043 17044 #ifndef BCM_HIDE_DISPATCHABLE 17045 17046 /* 17047 * Set match criteria for bcmFieldQualifyHiGigDstMulticast 17048 * qualifier in the field entry. 17049 */ 17050 extern int bcm_field_qualify_HiGigDstMulticast( 17051 int unit, 17052 bcm_field_entry_t entry, 17053 uint8 data, 17054 uint8 mask); 17055 17056 /* 17057 * Get match criteria for bcmFieldQualifyHiGigDstMulticast 17058 * qualifier from the field entry. 17059 */ 17060 extern int bcm_field_qualify_HiGigDstMulticast_get( 17061 int unit, 17062 bcm_field_entry_t entry, 17063 uint8 *data, 17064 uint8 *mask); 17065 17066 /* 17067 * Set match criteria for bcmFieldQualifyHiGigDstMulticastGroupId 17068 * qualifier in the field entry. 17069 */ 17070 extern int bcm_field_qualify_HiGigDstMulticastGroupId( 17071 int unit, 17072 bcm_field_entry_t entry, 17073 bcm_multicast_t group, 17074 bcm_multicast_t mask); 17075 17076 /* 17077 * Get match criteria for bcmFieldQualifyHiGigDstMulticastGroupId 17078 * qualifier from the field entry. 17079 */ 17080 extern int bcm_field_qualify_HiGigDstMulticastGroupId_get( 17081 int unit, 17082 bcm_field_entry_t entry, 17083 bcm_multicast_t *group, 17084 bcm_multicast_t *mask); 17085 17086 /* 17087 * Set match criteria for bcmFieldQualifyHigigTrafficClass 17088 * qualifier in the field entry. 17089 */ 17090 extern int bcm_field_qualify_HiGigTrafficClass( 17091 int unit, 17092 bcm_field_entry_t entry, 17093 uint8 data, 17094 uint8 mask); 17095 17096 /* 17097 * Get match criteria for bcmFieldQualifyHiGigTrafficClass 17098 * qualifier from the field entry. 17099 */ 17100 extern int bcm_field_qualify_HiGigTrafficClass_get( 17101 int unit, 17102 bcm_field_entry_t entry, 17103 uint8 *data, 17104 uint8 *mask); 17105 17106 /* 17107 * Set match criteria for bcmFieldQualifyHiGigDstModuleGport 17108 * qualifier in the field entry. 17109 */ 17110 extern int bcm_field_qualify_HiGigDstModuleGport( 17111 int unit, 17112 bcm_field_entry_t entry, 17113 bcm_gport_t port_id, 17114 bcm_gport_t port_mask); 17115 17116 /* 17117 * Get match criteria for bcmFieldQualifyHiGigDstModuleGport 17118 * qualifier from the field entry. 17119 */ 17120 extern int bcm_field_qualify_HiGigDstModuleGport_get( 17121 int unit, 17122 bcm_field_entry_t entry, 17123 bcm_gport_t *port_id, 17124 bcm_gport_t *port_mask); 17125 17126 /* 17127 * Set match criteria for bcmFieldQualifyHiGigDstPortGport 17128 * qualifier in the field entry. 17129 */ 17130 extern int bcm_field_qualify_HiGigDstPortGport( 17131 int unit, 17132 bcm_field_entry_t entry, 17133 bcm_gport_t port_id, 17134 bcm_gport_t mask); 17135 17136 /* 17137 * Get match criteria for bcmFieldQualifyHiGigDstPortGport 17138 * qualifier from the field entry. 17139 */ 17140 extern int bcm_field_qualify_HiGigDstPortGport_get( 17141 int unit, 17142 bcm_field_entry_t entry, 17143 bcm_gport_t *port_id, 17144 bcm_gport_t *port_mask); 17145 17146 /* 17147 * Set match criteria for bcmFieldQualifyHiGigDstModPortGport 17148 * qualifier in the field entry. 17149 */ 17150 extern int bcm_field_qualify_HiGigDstModPortGport( 17151 int unit, 17152 bcm_field_entry_t entry, 17153 bcm_gport_t port_id, 17154 bcm_gport_t port_mask); 17155 17156 /* 17157 * Get match criteria for bcmFieldQualifyHiGigDstModPortGport 17158 * qualifier from the field entry. 17159 */ 17160 extern int bcm_field_qualify_HiGigDstModPortGport_get( 17161 int unit, 17162 bcm_field_entry_t entry, 17163 bcm_gport_t *port_id, 17164 bcm_gport_t *port_mask); 17165 17166 /* 17167 * Set match criteria for bcmFieldQualifyHiGigSrcModuleGport 17168 * qualifier in the field entry. 17169 */ 17170 extern int bcm_field_qualify_HiGigSrcModuleGport( 17171 int unit, 17172 bcm_field_entry_t entry, 17173 bcm_gport_t port_id, 17174 bcm_gport_t port_mask); 17175 17176 /* 17177 * Get match criteria for bcmFieldQualifyHiGigSrcModuleGport 17178 * qualifier from the field entry. 17179 */ 17180 extern int bcm_field_qualify_HiGigSrcModuleGport_get( 17181 int unit, 17182 bcm_field_entry_t entry, 17183 bcm_gport_t *port_id, 17184 bcm_gport_t *port_mask); 17185 17186 /* 17187 * Set match criteria for bcmFieldQualifyHiGigSrcPortGport 17188 * qualifier in the field entry. 17189 */ 17190 extern int bcm_field_qualify_HiGigSrcPortGport( 17191 int unit, 17192 bcm_field_entry_t entry, 17193 bcm_gport_t port_id, 17194 bcm_gport_t port_mask); 17195 17196 /* 17197 * Get match criteria for bcmFieldQualifyHiGigSrcPortGport 17198 * qualifier from the field entry. 17199 */ 17200 extern int bcm_field_qualify_HiGigSrcPortGport_get( 17201 int unit, 17202 bcm_field_entry_t entry, 17203 bcm_gport_t *port_id, 17204 bcm_gport_t *port_mask); 17205 17206 /* 17207 * Set match criteria for bcmFieldQualifyHiGigSrcModPortGport 17208 * qualifier in the field entry. 17209 */ 17210 extern int bcm_field_qualify_HiGigSrcModPortGport( 17211 int unit, 17212 bcm_field_entry_t entry, 17213 bcm_gport_t port_id, 17214 bcm_gport_t port_mask); 17215 17216 /* 17217 * Get match criteria for bcmFieldQualifyHiGigSrcModPortGport 17218 * qualifier from the field entry. 17219 */ 17220 extern int bcm_field_qualify_HiGigSrcModPortGport_get( 17221 int unit, 17222 bcm_field_entry_t entry, 17223 bcm_gport_t *port_id, 17224 bcm_gport_t *port_mask); 17225 17226 /* 17227 * Set match criteria for bcmFieldQualifyHiGigLoadBalanceID 17228 * qualifier in the field entry. 17229 */ 17230 extern int bcm_field_qualify_HiGigLoadBalanceID( 17231 int unit, 17232 bcm_field_entry_t entry, 17233 uint8 data, 17234 uint8 mask); 17235 17236 /* 17237 * Get match criteria for bcmFieldQualifyHiGigLoadBalanceID 17238 * qualifier from the field entry. 17239 */ 17240 extern int bcm_field_qualify_HiGigLoadBalanceID_get( 17241 int unit, 17242 bcm_field_entry_t entry, 17243 uint8 *data, 17244 uint8 *mask); 17245 17246 /* 17247 * Set match criteria for bcmFieldQualifyHiGigColor 17248 * qualifier in the field entry. 17249 */ 17250 extern int bcm_field_qualify_HiGigColor( 17251 int unit, 17252 bcm_field_entry_t entry, 17253 uint8 color); 17254 17255 /* 17256 * Get match criteria for bcmFieldQualifyHiGigColor 17257 * qualifier in the field entry. 17258 */ 17259 extern int bcm_field_qualify_HiGigColor_get( 17260 int unit, 17261 bcm_field_entry_t entry, 17262 uint8 *color); 17263 17264 /* 17265 * Set match criteria for bcmFieldQualifyHiGigIntCongestionNotification 17266 * qualifier in the field entry. 17267 */ 17268 extern int bcm_field_qualify_HiGigIntCongestionNotification( 17269 int unit, 17270 bcm_field_entry_t entry, 17271 uint8 data, 17272 uint8 mask); 17273 17274 /* 17275 * Get match criteria for bcmFieldQualifyHiGigIntCongestionNotification 17276 * qualifier from the field entry. 17277 */ 17278 extern int bcm_field_qualify_HiGigIntCongestionNotification_get( 17279 int unit, 17280 bcm_field_entry_t entry, 17281 uint8 *data, 17282 uint8 *mask); 17283 17284 /* 17285 * Set match criteria for bcmFieldQualifyHiGigIngressTagged 17286 * qualifier in the field entry. 17287 */ 17288 extern int bcm_field_qualify_HiGigIngressTagged( 17289 int unit, 17290 bcm_field_entry_t entry, 17291 uint8 data, 17292 uint8 mask); 17293 17294 /* 17295 * Get match criteria for bcmFieldQualifyHiGigIngressTagged 17296 * qualifier from the field entry. 17297 */ 17298 extern int bcm_field_qualify_HiGigIngressTagged_get( 17299 int unit, 17300 bcm_field_entry_t entry, 17301 uint8 *data, 17302 uint8 *mask); 17303 17304 /* 17305 * Set match criteria for bcmFieldQualifyHiGigDstTrunk 17306 * qualifier in the field entry. 17307 */ 17308 extern int bcm_field_qualify_HiGigDstTrunk( 17309 int unit, 17310 bcm_field_entry_t entry, 17311 uint8 data, 17312 uint8 mask); 17313 17314 /* 17315 * Get match criteria for bcmFieldQualifyHiGigDstTrunk 17316 * qualifier from the field entry. 17317 */ 17318 extern int bcm_field_qualify_HiGigDstTrunk_get( 17319 int unit, 17320 bcm_field_entry_t entry, 17321 uint8 *data, 17322 uint8 *mask); 17323 17324 /* 17325 * Set match criteria for bcmFieldQualifyHiGigDstTrunkId 17326 * qualifier in the field entry. 17327 */ 17328 extern int bcm_field_qualify_HiGigDstTrunkId( 17329 int unit, 17330 bcm_field_entry_t entry, 17331 bcm_trunk_t data, 17332 bcm_trunk_t mask); 17333 17334 /* 17335 * Get match criteria for bcmFieldQualifyHiGigDstTrunkId 17336 * qualifier from the field entry. 17337 */ 17338 extern int bcm_field_qualify_HiGigDstTrunkId_get( 17339 int unit, 17340 bcm_field_entry_t entry, 17341 bcm_trunk_t *data, 17342 bcm_trunk_t *mask); 17343 17344 /* 17345 * Set match criteria for bcmFieldQualifyHiGigIngressL3SwitchPkt 17346 * qualifier in the field entry. 17347 */ 17348 extern int bcm_field_qualify_HiGigIngressL3SwitchPkt( 17349 int unit, 17350 bcm_field_entry_t entry, 17351 uint8 data, 17352 uint8 mask); 17353 17354 /* 17355 * Get match criteria for bcmFieldQualifyHiGigIngressL3SwitchPkt 17356 * qualifier from the field entry. 17357 */ 17358 extern int bcm_field_qualify_HiGigIngressL3SwitchPkt_get( 17359 int unit, 17360 bcm_field_entry_t entry, 17361 uint8 *data, 17362 uint8 *mask); 17363 17364 /* 17365 * Set match criteria for bcmFieldQualifyHiGigLabel 17366 * qualifier in the field entry. 17367 */ 17368 extern int bcm_field_qualify_HiGigLabel( 17369 int unit, 17370 bcm_field_entry_t entry, 17371 uint32 data, 17372 uint32 mask); 17373 17374 /* 17375 * Get match criteria for bcmFieldQualifyHiGigLabel 17376 * qualifier from the field entry. 17377 */ 17378 extern int bcm_field_qualify_HiGigLabel_get( 17379 int unit, 17380 bcm_field_entry_t entry, 17381 uint32 *data, 17382 uint32 *mask); 17383 17384 /* 17385 * Set match criteria for bcmFieldQualifyHiGigReplicationId 17386 * qualifier in the field entry. 17387 */ 17388 extern int bcm_field_qualify_HiGigReplicationId( 17389 int unit, 17390 bcm_field_entry_t entry, 17391 uint32 data, 17392 uint32 mask); 17393 17394 /* 17395 * Get match criteria for bcmFieldQualifyHiGigReplicationId 17396 * qualifier from the field entry. 17397 */ 17398 extern int bcm_field_qualify_HiGigReplicationId_get( 17399 int unit, 17400 bcm_field_entry_t entry, 17401 uint32 *data, 17402 uint32 *mask); 17403 17404 /* 17405 * Set match criteria for bcmFieldQualifyHiGigVlan 17406 * qualifier in the field entry. 17407 */ 17408 extern int bcm_field_qualify_HiGigVlan( 17409 int unit, 17410 bcm_field_entry_t entry, 17411 uint16 data, 17412 uint16 mask); 17413 17414 /* 17415 * Get match criteria for bcmFieldQualifyHiGigVlan 17416 * qualifier from the field entry. 17417 */ 17418 extern int bcm_field_qualify_HiGigVlan_get( 17419 int unit, 17420 bcm_field_entry_t entry, 17421 uint16 *data, 17422 uint16 *mask); 17423 17424 /* 17425 * Set match criteria for bcmFieldQualifyHiGigPortFilteringMode 17426 * qualifier in the field entry. 17427 */ 17428 extern int bcm_field_qualify_HiGigPortFilteringMode( 17429 int unit, 17430 bcm_field_entry_t entry, 17431 uint8 data, 17432 uint8 mask); 17433 17434 /* 17435 * Get match criteria for bcmFieldQualifyHiGigPortFilteringMode 17436 * qualifier from the field entry. 17437 */ 17438 extern int bcm_field_qualify_HiGigPortFilteringMode_get( 17439 int unit, 17440 bcm_field_entry_t entry, 17441 uint8 *data, 17442 uint8 *mask); 17443 17444 /* 17445 * Set match criteria for bcmFieldQualifyHiGigSrcTrunk 17446 * qualifier in the field entry. 17447 */ 17448 extern int bcm_field_qualify_HiGigSrcTrunk( 17449 int unit, 17450 bcm_field_entry_t entry, 17451 uint8 data, 17452 uint8 mask); 17453 17454 /* 17455 * Get match criteria for bcmFieldQualifyHiGigSrcTrunk 17456 * qualifier from the field entry. 17457 */ 17458 extern int bcm_field_qualify_HiGigSrcTrunk_get( 17459 int unit, 17460 bcm_field_entry_t entry, 17461 uint8 *data, 17462 uint8 *mask); 17463 17464 /* 17465 * Set match criteria for bcmFieldQualifyHiGigIngressClassificationTag 17466 * qualifier in the field entry. 17467 */ 17468 extern int bcm_field_qualify_HiGigIngressClassificationTag( 17469 int unit, 17470 bcm_field_entry_t entry, 17471 uint16 data, 17472 uint16 mask); 17473 17474 /* 17475 * Get match criteria for bcmFieldQualifyHiGigIngressClassificationTag 17476 * qualifier from the field entry. 17477 */ 17478 extern int bcm_field_qualify_HiGigIngressClassificationTag_get( 17479 int unit, 17480 bcm_field_entry_t entry, 17481 uint16 *data, 17482 uint16 *mask); 17483 17484 /* 17485 * Set match criteria for bcmFieldQualifyHiGigEgressMcast 17486 * qualifier in the field entry. 17487 */ 17488 extern int bcm_field_qualify_HiGigEgressMcast( 17489 int unit, 17490 bcm_field_entry_t entry, 17491 uint8 data, 17492 uint8 mask); 17493 17494 /* 17495 * Get match criteria for bcmFieldQualifyHiGigEgressMcast 17496 * qualifier from the field entry. 17497 */ 17498 extern int bcm_field_qualify_HiGigEgressMcast_get( 17499 int unit, 17500 bcm_field_entry_t entry, 17501 uint8 *data, 17502 uint8 *mask); 17503 17504 /* 17505 * Set match criteria for bcmFieldQualifyHiGigVni 17506 * qualifier in the field entry. 17507 */ 17508 extern int bcm_field_qualify_HiGigVni( 17509 int unit, 17510 bcm_field_entry_t entry, 17511 uint16 data, 17512 uint16 mask); 17513 17514 /* 17515 * Get match criteria for bcmFieldQualifyHiGigVni 17516 * qualifier from the field entry. 17517 */ 17518 extern int bcm_field_qualify_HiGigVni_get( 17519 int unit, 17520 bcm_field_entry_t entry, 17521 uint16 *data, 17522 uint16 *mask); 17523 17524 /* 17525 * Set match criteria for bcmFieldQualifyHiGigDstGport 17526 * qualifier in the field entry. 17527 */ 17528 extern int bcm_field_qualify_HiGigDstGport( 17529 int unit, 17530 bcm_field_entry_t entry, 17531 bcm_gport_t port_id, 17532 bcm_gport_t port_mask); 17533 17534 /* 17535 * Get match criteria for bcmFieldQualifyHiGigDstGport 17536 * qualifier from the field entry. 17537 */ 17538 extern int bcm_field_qualify_HiGigDstGport_get( 17539 int unit, 17540 bcm_field_entry_t entry, 17541 bcm_gport_t *port_id, 17542 bcm_gport_t *port_mask); 17543 17544 /* 17545 * Set match criteria for bcmFieldQualifyHiGigMulticastIndex 17546 * qualifier in the field entry. 17547 */ 17548 extern int bcm_field_qualify_HiGigMulticastIndex( 17549 int unit, 17550 bcm_field_entry_t entry, 17551 uint16 data, 17552 uint16 mask); 17553 17554 /* 17555 * Get match criteria for bcmFieldQualifyHiGigMulticastIndex 17556 * qualifier from the field entry. 17557 */ 17558 extern int bcm_field_qualify_HiGigMulticastIndex_get( 17559 int unit, 17560 bcm_field_entry_t entry, 17561 uint16 *data, 17562 uint16 *mask); 17563 17564 /* 17565 * Set match criteria for bcmFieldQualifyHiGigVpReplicationId 17566 * qualifier in the field entry. 17567 */ 17568 extern int bcm_field_qualify_HiGigVpReplicationId( 17569 int unit, 17570 bcm_field_entry_t entry, 17571 uint32 data, 17572 uint32 mask); 17573 17574 /* 17575 * Get match criteria for bcmFieldQualifyHiGigVpReplicationId 17576 * qualifier from the field entry. 17577 */ 17578 extern int bcm_field_qualify_HiGigVpReplicationId_get( 17579 int unit, 17580 bcm_field_entry_t entry, 17581 uint32 *data, 17582 uint32 *mask); 17583 17584 /* 17585 * Set match criteria for bcmFieldQualifyHiGigSrcGport 17586 * qualifier in the field entry. 17587 */ 17588 extern int bcm_field_qualify_HiGigSrcGport( 17589 int unit, 17590 bcm_field_entry_t entry, 17591 bcm_gport_t port_id, 17592 bcm_gport_t port_mask); 17593 17594 /* 17595 * Get match criteria for bcmFieldQualifyHiGigSrcGport 17596 * qualifier from the field entry. 17597 */ 17598 extern int bcm_field_qualify_HiGigSrcGport_get( 17599 int unit, 17600 bcm_field_entry_t entry, 17601 bcm_gport_t *port_id, 17602 bcm_gport_t *port_mask); 17603 17604 /* 17605 * Set match criteria for bcmFieldQualifyHiGigProtectionSwitchingStatus 17606 * qualifier in the field entry. 17607 */ 17608 extern int bcm_field_qualify_HiGigProtectionSwitchingStatus( 17609 int unit, 17610 bcm_field_entry_t entry, 17611 uint8 data, 17612 uint8 mask); 17613 17614 /* 17615 * Get match criteria for bcmFieldQualifyHiGigProtectionSwitchingStatus 17616 * qualifier from the field entry. 17617 */ 17618 extern int bcm_field_qualify_HiGigProtectionSwitchingStatus_get( 17619 int unit, 17620 bcm_field_entry_t entry, 17621 uint8 *data, 17622 uint8 *mask); 17623 17624 /* 17625 * Set match criteria for bcmFieldQualifyHiGigMirrorToVp 17626 * qualifier in the field entry. 17627 */ 17628 extern int bcm_field_qualify_HiGigMirrorToVp( 17629 int unit, 17630 bcm_field_entry_t entry, 17631 uint8 data, 17632 uint8 mask); 17633 17634 /* 17635 * Get match criteria for bcmFieldQualifyHiGigMirrorToVp 17636 * qualifier from the field entry. 17637 */ 17638 extern int bcm_field_qualify_HiGigMirrorToVp_get( 17639 int unit, 17640 bcm_field_entry_t entry, 17641 uint8 *data, 17642 uint8 *mask); 17643 17644 /* 17645 * Set match criteria for bcmFieldQualifyHiGigDstType 17646 * qualifier in the field entry. 17647 */ 17648 extern int bcm_field_qualify_HiGigDstType( 17649 int unit, 17650 bcm_field_entry_t entry, 17651 uint8 data, 17652 uint8 mask); 17653 17654 /* 17655 * Get match criteria for bcmFieldQualifyHiGigDstType 17656 * qualifier from the field entry. 17657 */ 17658 extern int bcm_field_qualify_HiGigDstType_get( 17659 int unit, 17660 bcm_field_entry_t entry, 17661 uint8 *data, 17662 uint8 *mask); 17663 17664 /* 17665 * Set match criteria for bcmFieldQualifyHiGigSrcType 17666 * qualifier in the field entry. 17667 */ 17668 extern int bcm_field_qualify_HiGigSrcType( 17669 int unit, 17670 bcm_field_entry_t entry, 17671 uint8 data, 17672 uint8 mask); 17673 17674 /* 17675 * Get match criteria for bcmFieldQualifyHiGigSrcType 17676 * qualifier from the field entry. 17677 */ 17678 extern int bcm_field_qualify_HiGigSrcType_get( 17679 int unit, 17680 bcm_field_entry_t entry, 17681 uint8 *data, 17682 uint8 *mask); 17683 17684 /* 17685 * Set match criteria for 17686 * bcmFieldQualifyHiGigOffloadEngineClassificationTag 17687 * qualifier in the field entry. 17688 */ 17689 extern int bcm_field_qualify_HiGigOffloadEngineClassificationTag( 17690 int unit, 17691 bcm_field_entry_t entry, 17692 uint16 data, 17693 uint16 mask); 17694 17695 /* 17696 * Get match criteria for 17697 * bcmFieldQualifyHiGigOffloadEngineClassificationTag 17698 * qualifier from the field entry. 17699 */ 17700 extern int bcm_field_qualify_HiGigOffloadEngineClassificationTag_get( 17701 int unit, 17702 bcm_field_entry_t entry, 17703 uint16 *data, 17704 uint16 *mask); 17705 17706 /* 17707 * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePktPriNew 17708 * qualifier in the field entry. 17709 */ 17710 extern int bcm_field_qualify_HiGigOffloadEnginePktPriNew( 17711 int unit, 17712 bcm_field_entry_t entry, 17713 uint8 data, 17714 uint8 mask); 17715 17716 /* 17717 * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePktPriNew 17718 * qualifier from the field entry. 17719 */ 17720 extern int bcm_field_qualify_HiGigOffloadEnginePktPriNew_get( 17721 int unit, 17722 bcm_field_entry_t entry, 17723 uint8 *data, 17724 uint8 *mask); 17725 17726 /* 17727 * Set match criteria for bcmFieldQualifyHiGigOffloadEngineDscpNew 17728 * qualifier in the field entry. 17729 */ 17730 extern int bcm_field_qualify_HiGigOffloadEngineDscpNew( 17731 int unit, 17732 bcm_field_entry_t entry, 17733 uint8 data, 17734 uint8 mask); 17735 17736 /* 17737 * Get match criteria for bcmFieldQualifyHiGigOffloadEngineDscpNew 17738 * qualifier from the field entry. 17739 */ 17740 extern int bcm_field_qualify_HiGigOffloadEngineDscpNew_get( 17741 int unit, 17742 bcm_field_entry_t entry, 17743 uint8 *data, 17744 uint8 *mask); 17745 17746 /* 17747 * Set match criteria for bcmFieldQualifyLoopBackQueue 17748 * qualifier in the field entry. 17749 */ 17750 extern int bcm_field_qualify_LoopBackQueue( 17751 int unit, 17752 bcm_field_entry_t entry, 17753 uint8 data, 17754 uint8 mask); 17755 17756 /* 17757 * Get match criteria for bcmFieldQualifyLoopBackQueue 17758 * qualifier from the field entry. 17759 */ 17760 extern int bcm_field_qualify_LoopBackQueue_get( 17761 int unit, 17762 bcm_field_entry_t entry, 17763 uint8 *data, 17764 uint8 *mask); 17765 17766 /* 17767 * Set match criteria for bcmFieldQualifyLoopBackSrcGport 17768 * qualifier in the field entry. 17769 */ 17770 extern int bcm_field_qualify_LoopBackSrcGport( 17771 int unit, 17772 bcm_field_entry_t entry, 17773 bcm_gport_t port_id, 17774 bcm_gport_t port_mask); 17775 17776 /* 17777 * Get match criteria for bcmFieldQualifyLoopBackSrcGport 17778 * qualifier from the field entry. 17779 */ 17780 extern int bcm_field_qualify_LoopBackSrcGport_get( 17781 int unit, 17782 bcm_field_entry_t entry, 17783 bcm_gport_t *port_id, 17784 bcm_gport_t *port_mask); 17785 17786 /* 17787 * Set match criteria for bcmFieldQualifyPktIsVisible 17788 * qualifier in the field entry. 17789 */ 17790 extern int bcm_field_qualify_PktIsVisible( 17791 int unit, 17792 bcm_field_entry_t entry, 17793 uint8 data, 17794 uint8 mask); 17795 17796 /* 17797 * Get match criteria for bcmFieldQualifyPktIsVisible 17798 * qualifier from the field entry. 17799 */ 17800 extern int bcm_field_qualify_PktIsVisible_get( 17801 int unit, 17802 bcm_field_entry_t entry, 17803 uint8 *data, 17804 uint8 *mask); 17805 17806 /* 17807 * Set match criteria for bcmFieldQualifyLoopBackCpuMasqueradePktProfile 17808 * qualifier in the field entry. 17809 */ 17810 extern int bcm_field_qualify_LoopBackCpuMasqueradePktProfile( 17811 int unit, 17812 bcm_field_entry_t entry, 17813 uint8 data, 17814 uint8 mask); 17815 17816 /* 17817 * Get match criteria for bcmFieldQualifyLoopBackCpuMasqueradePktProfile 17818 * qualifier from the field entry. 17819 */ 17820 extern int bcm_field_qualify_LoopBackCpuMasqueradePktProfile_get( 17821 int unit, 17822 bcm_field_entry_t entry, 17823 uint8 *data, 17824 uint8 *mask); 17825 17826 /* 17827 * Set match criteria for bcmFieldQualifyLoopBackColor 17828 * qualifier in the field entry. 17829 */ 17830 extern int bcm_field_qualify_LoopBackColor( 17831 int unit, 17832 bcm_field_entry_t entry, 17833 uint8 color); 17834 17835 /* 17836 * Get match criteria for bcmFieldQualifyLoopBackColor 17837 * qualifier from the field entry. 17838 */ 17839 extern int bcm_field_qualify_LoopBackColor_get( 17840 int unit, 17841 bcm_field_entry_t entry, 17842 uint8 *color); 17843 17844 /* 17845 * Set match criteria for bcmFieldQualifyLoopBackTrafficClass 17846 * qualifier in the field entry. 17847 */ 17848 extern int bcm_field_qualify_LoopBackTrafficClass( 17849 int unit, 17850 bcm_field_entry_t entry, 17851 uint8 data, 17852 uint8 mask); 17853 17854 /* 17855 * Get match criteria for bcmFieldQualifyLoopBackTrafficClass 17856 * qualifier from the field entry. 17857 */ 17858 extern int bcm_field_qualify_LoopBackTrafficClass_get( 17859 int unit, 17860 bcm_field_entry_t entry, 17861 uint8 *data, 17862 uint8 *mask); 17863 17864 /* 17865 * Set match criteria for bcmFieldQualifyLoopBackPacketProcessingPort 17866 * qualifier in the field entry. 17867 */ 17868 extern int bcm_field_qualify_LoopBackPacketProcessingPort( 17869 int unit, 17870 bcm_field_entry_t entry, 17871 bcm_gport_t port_id, 17872 bcm_gport_t port_mask); 17873 17874 /* 17875 * Get match criteria for bcmFieldQualifyLoopBackPacketProcessingPort 17876 * qualifier from the field entry. 17877 */ 17878 extern int bcm_field_qualify_LoopBackPacketProcessingPort_get( 17879 int unit, 17880 bcm_field_entry_t entry, 17881 bcm_gport_t *port_id, 17882 bcm_gport_t *port_mask); 17883 17884 #endif /* BCM_HIDE_DISPATCHABLE */ 17885 17886 /* bcm_field_src_class_mode_e */ 17887 typedef enum bcm_field_src_class_mode_e { 17888 bcmFieldSrcClassModeDefault = 0, /* XGS Default. */ 17889 bcmFieldSrcClassModeSDN = 1, /* Suitable for SDN. */ 17890 bcmFieldSrcClassModeBalanced = 2, /* Balanced mode. */ 17891 bcmFieldSrcClassModeOverlayNetworks = 3, /* Suitable for Overlay Networks. */ 17892 bcmFieldSrcClassModeCount = 4 /* Always Last. Not a usable value. */ 17893 } bcm_field_src_class_mode_t; 17894 17895 #define BCM_FIELD_SRC_CLASS_MODE_TYPE \ 17896 { \ 17897 "bcmFieldSrcClassModeDefault", \ 17898 "bcmFieldSrcClassModeSDN", \ 17899 "bcmFieldSrcClassModeBalanced", \ 17900 "bcmFieldSrcClassModeOverlayNetworks" \ 17901 } 17902 17903 /* Source Class Mode Structure. */ 17904 typedef struct bcm_field_src_class_s { 17905 uint16 src_class_field; /* Field Lookup stage Class ID value assigned by 17906 bcmFieldActionClassSourceSet action */ 17907 uint16 dst_class_field; /* Field Stage Lookup Class ID value assigned by 17908 bcmFieldActionClassDestSet action. */ 17909 uint32 udf_class; /* Class ID value from UDF lookup. */ 17910 uint32 intf_class_port; /* Class ID value from Port Table. */ 17911 uint32 intf_class_l2; /* Class ID value from Vlan or Vfi lookup. */ 17912 uint32 intf_class_l3; /* L3 ingress interface Class ID. */ 17913 uint32 intf_class_vport; /* Class ID value from Mim / L2Gre / VxLan / 17914 Mpls / Trill / Vlan Translation / Field 17915 Lookup stage source virtual port lookup. */ 17916 } bcm_field_src_class_t; 17917 17918 /* Initialize Field Source Class Mode structure. */ 17919 extern void bcm_field_src_class_t_init( 17920 bcm_field_src_class_t *src_class); 17921 17922 #ifndef BCM_HIDE_DISPATCHABLE 17923 17924 /* 17925 * Configures the mixed Source Class ID generation 17926 * mode for Ingress and Exact Match Search stages. 17927 */ 17928 extern int bcm_field_source_class_mode_set( 17929 int unit, 17930 bcm_field_stage_t stage, 17931 bcm_pbmp_t pbmp, 17932 bcm_field_src_class_mode_t mode); 17933 17934 /* 17935 * Gets the mixed source class ID generation mode configured 17936 * for Field Ingress and EM search stages. 17937 */ 17938 extern int bcm_field_source_class_mode_get( 17939 int unit, 17940 bcm_field_stage_t stage, 17941 bcm_pbmp_t pbmp, 17942 bcm_field_src_class_mode_t *mode); 17943 17944 /* 17945 * Configure match criteria for bcmFieldQualifyMixedSrcClassId 17946 * qualifier from the field entry. 17947 */ 17948 extern int bcm_field_qualify_MixedSrcClassId( 17949 int unit, 17950 bcm_field_entry_t entry, 17951 bcm_pbmp_t pbmp, 17952 bcm_field_src_class_t data, 17953 bcm_field_src_class_t mask); 17954 17955 /* 17956 * Get match criteria for bcmFieldQualifyMixedSrcClassId 17957 * qualifier from the field entry. 17958 */ 17959 extern int bcm_field_qualify_MixedSrcClassId_get( 17960 int unit, 17961 bcm_field_entry_t entry, 17962 bcm_pbmp_t pbmp, 17963 bcm_field_src_class_t *data, 17964 bcm_field_src_class_t *mask); 17965 17966 /* 17967 * Configure match criteria for bcmFieldQualifyCustomHeaderPkt 17968 * qualifier from the field entry. 17969 */ 17970 extern int bcm_field_qualify_CustomHeaderPkt( 17971 int unit, 17972 bcm_field_entry_t entry, 17973 uint8 data, 17974 uint8 mask); 17975 17976 /* 17977 * Get match criteria for bcmFieldQualifyCustomHeaderPkt 17978 * qualifier from the field entry. 17979 */ 17980 extern int bcm_field_qualify_CustomHeaderPkt_get( 17981 int unit, 17982 bcm_field_entry_t entry, 17983 uint8 *data, 17984 uint8 *mask); 17985 17986 /* 17987 * Configure match criteria for bcmFieldQualifyCustomHeaderData 17988 * qualifier from the field entry. 17989 */ 17990 extern int bcm_field_qualify_CustomHeaderData( 17991 int unit, 17992 bcm_field_entry_t entry, 17993 uint32 data, 17994 uint32 mask); 17995 17996 /* 17997 * Get match criteria for bcmFieldQualifyCustomHeaderData 17998 * qualifier from the field entry. 17999 */ 18000 extern int bcm_field_qualify_CustomHeaderData_get( 18001 int unit, 18002 bcm_field_entry_t entry, 18003 uint32 *data, 18004 uint32 *mask); 18005 18006 /* 18007 * Set match criteria for bcmFieldQualifyMimlPkt 18008 * qualifier in the field entry. 18009 */ 18010 extern int bcm_field_qualify_MimlPkt( 18011 int unit, 18012 bcm_field_entry_t entry, 18013 uint8 data, 18014 uint8 mask); 18015 18016 /* 18017 * Get match criteria for bcmFieldQualifyMimlPkt 18018 * qualifier from the field entry. 18019 */ 18020 extern int bcm_field_qualify_MimlPkt_get( 18021 int unit, 18022 bcm_field_entry_t entry, 18023 uint8 *data, 18024 uint8 *mask); 18025 18026 /* 18027 * Set match criteria for bcmFieldQualifyMimlSrcMac 18028 * qualifier in the field entry. 18029 */ 18030 extern int bcm_field_qualify_MimlSrcMac( 18031 int unit, 18032 bcm_field_entry_t entry, 18033 bcm_mac_t data, 18034 bcm_mac_t mask); 18035 18036 /* 18037 * Set match criteria for bcmFieldQualifyMimlDstMac 18038 * qualifier in the field entry. 18039 */ 18040 extern int bcm_field_qualify_MimlDstMac( 18041 int unit, 18042 bcm_field_entry_t entry, 18043 bcm_mac_t data, 18044 bcm_mac_t mask); 18045 18046 /* To qualify on a port bitmap generated from SGLP. */ 18047 extern int bcm_field_qualify_SystemPortBitmap( 18048 int unit, 18049 bcm_field_entry_t entry, 18050 bcm_pbmp_t data, 18051 bcm_pbmp_t mask); 18052 18053 /* 18054 * Get match criteria for SystemPortBitmap qualifier from the field 18055 * entry. 18056 */ 18057 extern int bcm_field_qualify_SystemPortBitmap_get( 18058 int unit, 18059 bcm_field_entry_t entry, 18060 bcm_pbmp_t *data, 18061 bcm_pbmp_t *mask); 18062 18063 /* To qualify on a port bitmap generated from Source Virtual Port. */ 18064 extern int bcm_field_qualify_SourceGportBitmap( 18065 int unit, 18066 bcm_field_entry_t entry, 18067 bcm_pbmp_t data, 18068 bcm_pbmp_t mask); 18069 18070 /* 18071 * Get match criteria for SourceGportBitmap qualifier from the field 18072 * entry. 18073 */ 18074 extern int bcm_field_qualify_SourceGportBitmap_get( 18075 int unit, 18076 bcm_field_entry_t entry, 18077 bcm_pbmp_t *data, 18078 bcm_pbmp_t *mask); 18079 18080 /* To qualify on a port bitmap generated from Device ingress port. */ 18081 extern int bcm_field_qualify_DevicePortBitmap( 18082 int unit, 18083 bcm_field_entry_t entry, 18084 bcm_pbmp_t data, 18085 bcm_pbmp_t mask); 18086 18087 /* 18088 * Get match criteria for DevicePortBitmap qualifier from the field 18089 * entry. 18090 */ 18091 extern int bcm_field_qualify_DevicePortBitmap_get( 18092 int unit, 18093 bcm_field_entry_t entry, 18094 bcm_pbmp_t *data, 18095 bcm_pbmp_t *mask); 18096 18097 /* 18098 * Get match criteria for bcmFieldQualifyMimlSrcMac 18099 * qualifier from the field entry. 18100 */ 18101 extern int bcm_field_qualify_MimlSrcMac_get( 18102 int unit, 18103 bcm_field_entry_t entry, 18104 bcm_mac_t *data, 18105 bcm_mac_t *mask); 18106 18107 /* 18108 * Get match criteria for bcmFieldQualifyMimlDstMac 18109 * qualifier from the field entry. 18110 */ 18111 extern int bcm_field_qualify_MimlDstMac_get( 18112 int unit, 18113 bcm_field_entry_t entry, 18114 bcm_mac_t *data, 18115 bcm_mac_t *mask); 18116 18117 /* 18118 * Set match criteria for bcmFieldQualifyMimlVlan 18119 * qualifier in the field entry. 18120 */ 18121 extern int bcm_field_qualify_MimlVlan( 18122 int unit, 18123 bcm_field_entry_t entry, 18124 bcm_vlan_t data, 18125 bcm_vlan_t mask); 18126 18127 /* 18128 * Get match criteria for bcmFieldQualifyMimlVlan 18129 * qualifier from the field entry. 18130 */ 18131 extern int bcm_field_qualify_MimlVlan_get( 18132 int unit, 18133 bcm_field_entry_t entry, 18134 bcm_vlan_t *data, 18135 bcm_vlan_t *mask); 18136 18137 /* 18138 * Set match criteria for bcmFieldQualifyMimlVlanId 18139 * qualifier in the field entry. 18140 */ 18141 extern int bcm_field_qualify_MimlVlanId( 18142 int unit, 18143 bcm_field_entry_t entry, 18144 bcm_vlan_t data, 18145 bcm_vlan_t mask); 18146 18147 /* 18148 * Get match criteria for bcmFieldQualifyMimlVlanId 18149 * qualifier from the field entry. 18150 */ 18151 extern int bcm_field_qualify_MimlVlanId_get( 18152 int unit, 18153 bcm_field_entry_t entry, 18154 bcm_vlan_t *data, 18155 bcm_vlan_t *mask); 18156 18157 /* 18158 * Set match criteria for bcmFieldQualifyMimlVlanPri 18159 * qualifier in the field entry. 18160 */ 18161 extern int bcm_field_qualify_MimlVlanPri( 18162 int unit, 18163 bcm_field_entry_t entry, 18164 uint8 data, 18165 uint8 mask); 18166 18167 /* 18168 * Get match criteria for bcmFieldQualifyMimlVlanPri 18169 * qualifier from the field entry. 18170 */ 18171 extern int bcm_field_qualify_MimlVlanPri_get( 18172 int unit, 18173 bcm_field_entry_t entry, 18174 uint8 *data, 18175 uint8 *mask); 18176 18177 /* 18178 * Set match criteria for bcmFieldQualifyMimlVlanCfi 18179 * qualifier in the field entry. 18180 */ 18181 extern int bcm_field_qualify_MimlVlanCfi( 18182 int unit, 18183 bcm_field_entry_t entry, 18184 uint8 data, 18185 uint8 mask); 18186 18187 /* 18188 * Get match criteria for bcmFieldQualifyMimlVlanCfi_get 18189 * qualifier from the field entry. 18190 */ 18191 extern int bcm_field_qualify_MimlVlanCfi_get( 18192 int unit, 18193 bcm_field_entry_t entry, 18194 uint8 *data, 18195 uint8 *mask); 18196 18197 /* 18198 * Set match criteria for bcmFieldQualifyMimlInnerTag 18199 * qualifier in the field entry. 18200 */ 18201 extern int bcm_field_qualify_MimlInnerTag( 18202 int unit, 18203 bcm_field_entry_t entry, 18204 uint32 data, 18205 uint32 mask); 18206 18207 /* 18208 * Get match criteria for bcmFieldQualifyMimlInnerTag_get 18209 * qualifier from the field entry. 18210 */ 18211 extern int bcm_field_qualify_MimlInnerTag_get( 18212 int unit, 18213 bcm_field_entry_t entry, 18214 uint32 *data, 18215 uint32 *mask); 18216 18217 /* 18218 * Set match criteria for bcmFieldQualifyCapwapHdrType 18219 * qualifier in the field entry. 18220 */ 18221 extern int bcm_field_qualify_CapwapHdrType( 18222 int unit, 18223 bcm_field_entry_t entry, 18224 uint8 data, 18225 uint8 mask); 18226 18227 /* 18228 * Get match criteria for bcmFieldQualifyCapwapHdrType 18229 * qualifier from the field entry. 18230 */ 18231 extern int bcm_field_qualify_CapwapHdrType_get( 18232 int unit, 18233 bcm_field_entry_t entry, 18234 uint8 *data, 18235 uint8 *mask); 18236 18237 /* 18238 * Set match criteria for bcmFieldQualifyCapwapHdrRid 18239 * qualifier in the field entry. 18240 */ 18241 extern int bcm_field_qualify_CapwapHdrRid( 18242 int unit, 18243 bcm_field_entry_t entry, 18244 uint8 data, 18245 uint8 mask); 18246 18247 /* 18248 * Get match criteria for bcmFieldQualifyCapwapHdrRid 18249 * qualifier from the field entry. 18250 */ 18251 extern int bcm_field_qualify_CapwapHdrRid_get( 18252 int unit, 18253 bcm_field_entry_t entry, 18254 uint8 *data, 18255 uint8 *mask); 18256 18257 /* 18258 * Set match criteria for bcmFieldQualifyCapwapPayloadSOF 18259 * qualifier in the field entry. 18260 */ 18261 extern int bcm_field_qualify_CapwapPayloadSOF( 18262 int unit, 18263 bcm_field_entry_t entry, 18264 uint8 data, 18265 uint8 mask); 18266 18267 /* 18268 * Get match criteria for bcmFieldQualifyCapwapPayloadSOF 18269 * qualifier from the field entry. 18270 */ 18271 extern int bcm_field_qualify_CapwapPayloadSOF_get( 18272 int unit, 18273 bcm_field_entry_t entry, 18274 uint8 *data, 18275 uint8 *mask); 18276 18277 /* 18278 * Set match criteria for bcmFieldQualifyCapwapPayloadDstMac 18279 * qualifier in the field entry. 18280 */ 18281 extern int bcm_field_qualify_CapwapPayloadDstMac( 18282 int unit, 18283 bcm_field_entry_t entry, 18284 bcm_mac_t data, 18285 bcm_mac_t mask); 18286 18287 /* 18288 * Get match criteria for CapwapPayloadDstMac 18289 * qualifier from the field entry. 18290 */ 18291 extern int bcm_field_qualify_CapwapPayloadDstMac_get( 18292 int unit, 18293 bcm_field_entry_t entry, 18294 bcm_mac_t *data, 18295 bcm_mac_t *mask); 18296 18297 /* 18298 * Set match criteria for bcmFieldQualifyCapwapPayloadSrcMac 18299 * qualifier in the field entry. 18300 */ 18301 extern int bcm_field_qualify_CapwapPayloadSrcMac( 18302 int unit, 18303 bcm_field_entry_t entry, 18304 bcm_mac_t data, 18305 bcm_mac_t mask); 18306 18307 /* 18308 * Get match criteria for bcmFieldQualifyCapwapPayloadSrcMac 18309 * qualifier from the field entry. 18310 */ 18311 extern int bcm_field_qualify_CapwapPayloadSrcMac_get( 18312 int unit, 18313 bcm_field_entry_t entry, 18314 bcm_mac_t *data, 18315 bcm_mac_t *mask); 18316 18317 /* 18318 * Configure match criteria for bcmFieldQualifyCapwapPayloadEtherType 18319 * qualifier from the field entry. 18320 */ 18321 extern int bcm_field_qualify_CapwapPayloadEtherType( 18322 int unit, 18323 bcm_field_entry_t entry, 18324 uint16 data, 18325 uint16 mask); 18326 18327 /* 18328 * Get match criteria for bcmFieldQualifyCapwapPayloadEtherType 18329 * qualifier from the field entry. 18330 */ 18331 extern int bcm_field_qualify_CapwapPayloadEtherType_get( 18332 int unit, 18333 bcm_field_entry_t entry, 18334 uint16 *data, 18335 uint16 *mask); 18336 18337 /* 18338 * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlan 18339 * qualifier in the field entry. 18340 */ 18341 extern int bcm_field_qualify_CapwapPayloadOuterVlan( 18342 int unit, 18343 bcm_field_entry_t entry, 18344 bcm_vlan_t data, 18345 bcm_vlan_t mask); 18346 18347 /* 18348 * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlan 18349 * qualifier from the field entry. 18350 */ 18351 extern int bcm_field_qualify_CapwapPayloadOuterVlan_get( 18352 int unit, 18353 bcm_field_entry_t entry, 18354 bcm_vlan_t *data, 18355 bcm_vlan_t *mask); 18356 18357 /* 18358 * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanId 18359 * qualifier in the field entry. 18360 */ 18361 extern int bcm_field_qualify_CapwapPayloadOuterVlanId( 18362 int unit, 18363 bcm_field_entry_t entry, 18364 bcm_vlan_t data, 18365 bcm_vlan_t mask); 18366 18367 /* 18368 * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanId 18369 * qualifier from the field entry. 18370 */ 18371 extern int bcm_field_qualify_CapwapPayloadOuterVlanId_get( 18372 int unit, 18373 bcm_field_entry_t entry, 18374 bcm_vlan_t *data, 18375 bcm_vlan_t *mask); 18376 18377 /* 18378 * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanPri 18379 * qualifier in the field entry. 18380 */ 18381 extern int bcm_field_qualify_CapwapPayloadOuterVlanPri( 18382 int unit, 18383 bcm_field_entry_t entry, 18384 uint8 data, 18385 uint8 mask); 18386 18387 /* 18388 * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanPri 18389 * qualifier from the field entry. 18390 */ 18391 extern int bcm_field_qualify_CapwapPayloadOuterVlanPri_get( 18392 int unit, 18393 bcm_field_entry_t entry, 18394 uint8 *data, 18395 uint8 *mask); 18396 18397 /* 18398 * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanCfi 18399 * qualifier in the field entry. 18400 */ 18401 extern int bcm_field_qualify_CapwapPayloadOuterVlanCfi( 18402 int unit, 18403 bcm_field_entry_t entry, 18404 uint8 data, 18405 uint8 mask); 18406 18407 /* 18408 * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanCfi_get 18409 * qualifier from the field entry. 18410 */ 18411 extern int bcm_field_qualify_CapwapPayloadOuterVlanCfi_get( 18412 int unit, 18413 bcm_field_entry_t entry, 18414 uint8 *data, 18415 uint8 *mask); 18416 18417 /* 18418 * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlan 18419 * qualifier in the field entry. 18420 */ 18421 extern int bcm_field_qualify_CapwapPayloadInnerVlan( 18422 int unit, 18423 bcm_field_entry_t entry, 18424 bcm_vlan_t data, 18425 bcm_vlan_t mask); 18426 18427 /* 18428 * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlan 18429 * qualifier from the field entry. 18430 */ 18431 extern int bcm_field_qualify_CapwapPayloadInnerVlan_get( 18432 int unit, 18433 bcm_field_entry_t entry, 18434 bcm_vlan_t *data, 18435 bcm_vlan_t *mask); 18436 18437 /* 18438 * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanId 18439 * qualifier in the field entry. 18440 */ 18441 extern int bcm_field_qualify_CapwapPayloadInnerVlanId( 18442 int unit, 18443 bcm_field_entry_t entry, 18444 bcm_vlan_t data, 18445 bcm_vlan_t mask); 18446 18447 /* 18448 * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanId 18449 * qualifier from the field entry. 18450 */ 18451 extern int bcm_field_qualify_CapwapPayloadInnerVlanId_get( 18452 int unit, 18453 bcm_field_entry_t entry, 18454 bcm_vlan_t *data, 18455 bcm_vlan_t *mask); 18456 18457 /* 18458 * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanPri 18459 * qualifier in the field entry. 18460 */ 18461 extern int bcm_field_qualify_CapwapPayloadInnerVlanPri( 18462 int unit, 18463 bcm_field_entry_t entry, 18464 uint8 data, 18465 uint8 mask); 18466 18467 /* 18468 * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanPri 18469 * qualifier from the field entry. 18470 */ 18471 extern int bcm_field_qualify_CapwapPayloadInnerVlanPri_get( 18472 int unit, 18473 bcm_field_entry_t entry, 18474 uint8 *data, 18475 uint8 *mask); 18476 18477 /* 18478 * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanCfi 18479 * qualifier in the field entry. 18480 */ 18481 extern int bcm_field_qualify_CapwapPayloadInnerVlanCfi( 18482 int unit, 18483 bcm_field_entry_t entry, 18484 uint8 data, 18485 uint8 mask); 18486 18487 /* 18488 * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanCfi_get 18489 * qualifier from the field entry. 18490 */ 18491 extern int bcm_field_qualify_CapwapPayloadInnerVlanCfi_get( 18492 int unit, 18493 bcm_field_entry_t entry, 18494 uint8 *data, 18495 uint8 *mask); 18496 18497 /* 18498 * Set match criteria for bcmFieldQualifyCapwapPayloadVlanFormat 18499 * qualifier in the field entry. 18500 */ 18501 extern int bcm_field_qualify_CapwapPayloadVlanFormat( 18502 int unit, 18503 bcm_field_entry_t entry, 18504 uint8 data, 18505 uint8 mask); 18506 18507 /* 18508 * Get match criteria for bcmFieldQualifyCapwapPayloadVlanFormat 18509 * qualifier from the field entry. 18510 */ 18511 extern int bcm_field_qualify_CapwapPayloadVlanFormat_get( 18512 int unit, 18513 bcm_field_entry_t entry, 18514 uint8 *data, 18515 uint8 *mask); 18516 18517 /* bcm_field_qualify_CapwapPayloadSip */ 18518 extern int bcm_field_qualify_CapwapPayloadSip( 18519 int unit, 18520 bcm_field_entry_t entry, 18521 bcm_ip_t data, 18522 bcm_ip_t mask); 18523 18524 /* bcm_field_qualify_CapwapPayloadDip */ 18525 extern int bcm_field_qualify_CapwapPayloadDip( 18526 int unit, 18527 bcm_field_entry_t entry, 18528 bcm_ip_t data, 18529 bcm_ip_t mask); 18530 18531 /* 18532 * Get match criteria for bcmFieldQualifyCapwapPayloadSip 18533 * qualifier from the field entry. 18534 */ 18535 extern int bcm_field_qualify_CapwapPayloadSip_get( 18536 int unit, 18537 bcm_field_entry_t entry, 18538 bcm_ip_t *data, 18539 bcm_ip_t *mask); 18540 18541 /* 18542 * Get match criteria for bcmFieldQualifyCapwapPayloadDip 18543 * qualifier from the field entry. 18544 */ 18545 extern int bcm_field_qualify_CapwapPayloadDip_get( 18546 int unit, 18547 bcm_field_entry_t entry, 18548 bcm_ip_t *data, 18549 bcm_ip_t *mask); 18550 18551 /* bcm_field_qualify_CapwapPayloadSip6 */ 18552 extern int bcm_field_qualify_CapwapPayloadSip6( 18553 int unit, 18554 bcm_field_entry_t entry, 18555 bcm_ip6_t data, 18556 bcm_ip6_t mask); 18557 18558 /* bcm_field_qualify_CapwapPayloadDip6 */ 18559 extern int bcm_field_qualify_CapwapPayloadDip6( 18560 int unit, 18561 bcm_field_entry_t entry, 18562 bcm_ip6_t data, 18563 bcm_ip6_t mask); 18564 18565 /* 18566 * Get match criteria for bcmFieldQualifyCapwapPayloadSip6 18567 * qualifier from the field entry. 18568 */ 18569 extern int bcm_field_qualify_CapwapPayloadSip6_get( 18570 int unit, 18571 bcm_field_entry_t entry, 18572 bcm_ip6_t *data, 18573 bcm_ip6_t *mask); 18574 18575 /* 18576 * Get match criteria for bcmFieldQualifyCapwapPayloadDip6 18577 * qualifier from the field entry. 18578 */ 18579 extern int bcm_field_qualify_CapwapPayloadDip6_get( 18580 int unit, 18581 bcm_field_entry_t entry, 18582 bcm_ip6_t *data, 18583 bcm_ip6_t *mask); 18584 18585 /* 18586 * Set match criteria for bcmFieldQualifyCapwapPayloadIpProtocol 18587 * qualifier in the field entry. 18588 */ 18589 extern int bcm_field_qualify_CapwapPayloadIpProtocol( 18590 int unit, 18591 bcm_field_entry_t entry, 18592 uint8 data, 18593 uint8 mask); 18594 18595 /* 18596 * Get match criteria for bcmFieldQualifyCapwapPayloadIpProtocol_get 18597 * qualifier from the field entry. 18598 */ 18599 extern int bcm_field_qualify_CapwapPayloadIpProtocol_get( 18600 int unit, 18601 bcm_field_entry_t entry, 18602 uint8 *data, 18603 uint8 *mask); 18604 18605 /* 18606 * Set match criteria for bcmFieldQualifyCapwapPayloadTos 18607 * qualifier in the field entry. 18608 */ 18609 extern int bcm_field_qualify_CapwapPayloadTos( 18610 int unit, 18611 bcm_field_entry_t entry, 18612 uint8 data, 18613 uint8 mask); 18614 18615 /* 18616 * Get match criteria for bcmFieldQualifyCapwapPayloadTos_get 18617 * qualifier from the field entry. 18618 */ 18619 extern int bcm_field_qualify_CapwapPayloadTos_get( 18620 int unit, 18621 bcm_field_entry_t entry, 18622 uint8 *data, 18623 uint8 *mask); 18624 18625 /* bcm_field_qualify_CapwapPayloadL4SrcPort */ 18626 extern int bcm_field_qualify_CapwapPayloadL4SrcPort( 18627 int unit, 18628 bcm_field_entry_t entry, 18629 bcm_l4_port_t data, 18630 bcm_l4_port_t mask); 18631 18632 /* bcm_field_qualify_CapwapPayloadL4DstPort */ 18633 extern int bcm_field_qualify_CapwapPayloadL4DstPort( 18634 int unit, 18635 bcm_field_entry_t entry, 18636 bcm_l4_port_t data, 18637 bcm_l4_port_t mask); 18638 18639 /* 18640 * Get match criteria for bcmFieldQualifyCapwapPayloadL4SrcPort 18641 * qualifier from the field entry. 18642 */ 18643 extern int bcm_field_qualify_CapwapPayloadL4SrcPort_get( 18644 int unit, 18645 bcm_field_entry_t entry, 18646 bcm_l4_port_t *data, 18647 bcm_l4_port_t *mask); 18648 18649 /* 18650 * Get match criteria for bcmFieldQualifyCapwapPayloadL4DstPort 18651 * qualifier from the field entry. 18652 */ 18653 extern int bcm_field_qualify_CapwapPayloadL4DstPort_get( 18654 int unit, 18655 bcm_field_entry_t entry, 18656 bcm_l4_port_t *data, 18657 bcm_l4_port_t *mask); 18658 18659 /* 18660 * Set match criteria for bcmFieldQualifyTafEnable 18661 * qualifier in the field entry. 18662 */ 18663 extern int bcm_field_qualify_TafEnable( 18664 int unit, 18665 bcm_field_entry_t entry, 18666 uint8 enable); 18667 18668 /* 18669 * Set match criteria for bcmFieldQualifyTafGateId 18670 * qualifier in the field entry. 18671 */ 18672 extern int bcm_field_qualify_TafGateId( 18673 int unit, 18674 bcm_field_entry_t entry, 18675 uint32 data, 18676 uint32 mask); 18677 18678 /* 18679 * Set match criteria for bcmFieldQualifyTafGateState 18680 * qualifier in the field entry. 18681 */ 18682 extern int bcm_field_qualify_TafGateState( 18683 int unit, 18684 bcm_field_entry_t entry, 18685 uint8 state); 18686 18687 /* 18688 * Set match criteria for bcmFieldQualifyTafCosProfile 18689 * qualifier in the field entry. 18690 */ 18691 extern int bcm_field_qualify_TafCosProfile( 18692 int unit, 18693 bcm_field_entry_t entry, 18694 uint32 data, 18695 uint32 mask); 18696 18697 /* 18698 * Get match criteria for bcmFieldQualifyTafEnable 18699 * qualifier from the field entry. 18700 */ 18701 extern int bcm_field_qualify_TafEnable_get( 18702 int unit, 18703 bcm_field_entry_t entry, 18704 uint8 *enable); 18705 18706 /* 18707 * Get match criteria for bcmFieldQualifyTafGateId 18708 * qualifier from the field entry. 18709 */ 18710 extern int bcm_field_qualify_TafGateId_get( 18711 int unit, 18712 bcm_field_entry_t entry, 18713 uint32 *data, 18714 uint32 *mask); 18715 18716 /* 18717 * Get match criteria for bcmFieldQualifyTafGateState 18718 * qualifier from the field entry. 18719 */ 18720 extern int bcm_field_qualify_TafGateState_get( 18721 int unit, 18722 bcm_field_entry_t entry, 18723 uint8 *state); 18724 18725 /* 18726 * Get match criteria for bcmFieldQualifyTafCosProfile 18727 * qualifier from the field entry. 18728 */ 18729 extern int bcm_field_qualify_TafCosProfile_get( 18730 int unit, 18731 bcm_field_entry_t entry, 18732 uint32 *data, 18733 uint32 *mask); 18734 18735 /* 18736 * Set match criteria for bcmFieldQualifyCapwapPayloadL3HdrParseable 18737 * qualifier in the field entry. 18738 */ 18739 extern int bcm_field_qualify_CapwapPayloadL3HdrParseable( 18740 int unit, 18741 bcm_field_entry_t entry, 18742 uint8 data, 18743 uint8 mask); 18744 18745 /* 18746 * Get match criteria for bcmFieldQualifyCapwapPayloadL3HdrParseable_get 18747 * qualifier from the field entry. 18748 */ 18749 extern int bcm_field_qualify_CapwapPayloadL3HdrParseable_get( 18750 int unit, 18751 bcm_field_entry_t entry, 18752 uint8 *data, 18753 uint8 *mask); 18754 18755 /* 18756 * Set match criteria for bcmFieldQualifyCapwapPayloadL4HdrParseable 18757 * qualifier in the field entry. 18758 */ 18759 extern int bcm_field_qualify_CapwapPayloadL4HdrParseable( 18760 int unit, 18761 bcm_field_entry_t entry, 18762 uint8 data, 18763 uint8 mask); 18764 18765 /* 18766 * Get match criteria for bcmFieldQualifyCapwapPayloadL4HdrParseable_get 18767 * qualifier from the field entry. 18768 */ 18769 extern int bcm_field_qualify_CapwapPayloadL4HdrParseable_get( 18770 int unit, 18771 bcm_field_entry_t entry, 18772 uint8 *data, 18773 uint8 *mask); 18774 18775 /* 18776 * Set match criteria for bcmFieldQualifyL2PayLoad 18777 * qualifier in the field entry. 18778 */ 18779 extern int bcm_field_qualify_L2PayLoad( 18780 int unit, 18781 bcm_field_entry_t entry, 18782 uint32 length, 18783 const uint8 *data, 18784 const uint8 *mask); 18785 18786 /* 18787 * Get match criteria for bcmFieldQualifyL2PayLoad 18788 * qualifier from the field entry. 18789 */ 18790 extern int bcm_field_qualify_L2PayLoad_get( 18791 int unit, 18792 bcm_field_entry_t entry, 18793 uint32 length, 18794 uint8 *data, 18795 uint8 *mask); 18796 18797 /* Set match criteria to qualify Rx Down Mep SAT terminated hit status. */ 18798 extern int bcm_field_qualify_DownMepSatTerminated( 18799 int unit, 18800 bcm_field_entry_t entry, 18801 uint8 data, 18802 uint8 mask); 18803 18804 /* Get match criteria for Rx Down Mep SAT terminated hit status. */ 18805 extern int bcm_field_qualify_DownMepSatTerminated_get( 18806 int unit, 18807 bcm_field_entry_t entry, 18808 uint8 *data, 18809 uint8 *mask); 18810 18811 /* Set match criteria for VLAN STG STP states. */ 18812 extern int bcm_field_qualify_StpState( 18813 int unit, 18814 bcm_field_entry_t entry, 18815 uint8 data); 18816 18817 /* Get match criteria for VLAN STG STP states. */ 18818 extern int bcm_field_qualify_StpState_get( 18819 int unit, 18820 bcm_field_entry_t entry, 18821 uint8 *data); 18822 18823 #endif /* BCM_HIDE_DISPATCHABLE */ 18824 18825 /* VLAN STG STP States (for bcm_field_qualify_StgState) */ 18826 #define BCM_FIELD_STG_STP_DISABLE 0x1 /* Disabled state */ 18827 #define BCM_FIELD_STG_STP_BLOCK 0x2 /* Blocked state */ 18828 #define BCM_FIELD_STG_STP_LEARN 0x4 /* Learn state */ 18829 #define BCM_FIELD_STG_STP_FORWARD 0x8 /* Forward state */ 18830 18831 #ifndef BCM_HIDE_DISPATCHABLE 18832 18833 /* 18834 * Set match criteria for bcmFieldQualifyHiGigMirrorOrSwitchPkt 18835 * qualifier in the field entry. 18836 */ 18837 extern int bcm_field_qualify_HiGigMirrorOrSwitchPkt( 18838 int unit, 18839 bcm_field_entry_t entry, 18840 uint8 data, 18841 uint8 mask); 18842 18843 /* 18844 * Get match criteria for bcmFieldQualifyHiGigMirrorOrSwitchPkt 18845 * qualifier from the field entry. 18846 */ 18847 extern int bcm_field_qualify_HiGigMirrorOrSwitchPkt_get( 18848 int unit, 18849 bcm_field_entry_t entry, 18850 uint8 *data, 18851 uint8 *mask); 18852 18853 /* 18854 * Set match criteria for bcmFieldQualifyHiGigMplsPkt 18855 * qualifier in the field entry. 18856 */ 18857 extern int bcm_field_qualify_HiGigMplsPkt( 18858 int unit, 18859 bcm_field_entry_t entry, 18860 uint8 data, 18861 uint8 mask); 18862 18863 /* 18864 * Get match criteria for bcmFieldQualifyHiGigMplsPkt 18865 * qualifier from the field entry. 18866 */ 18867 extern int bcm_field_qualify_HiGigMplsPkt_get( 18868 int unit, 18869 bcm_field_entry_t entry, 18870 uint8 *data, 18871 uint8 *mask); 18872 18873 /* 18874 * Set match criteria for bcmFieldQualifyHiGigLabelType 18875 * qualifier in the field entry. 18876 */ 18877 extern int bcm_field_qualify_HiGigLabelType( 18878 int unit, 18879 bcm_field_entry_t entry, 18880 uint8 data, 18881 uint8 mask); 18882 18883 /* 18884 * Get match criteria for bcmFieldQualifyHiGigLabelType 18885 * qualifier from the field entry. 18886 */ 18887 extern int bcm_field_qualify_HiGigLabelType_get( 18888 int unit, 18889 bcm_field_entry_t entry, 18890 uint8 *data, 18891 uint8 *mask); 18892 18893 /* 18894 * Set match criteria for bcmFieldQualifyHiGigForwardingType 18895 * qualifier in the field entry. 18896 */ 18897 extern int bcm_field_qualify_HiGigForwardingType( 18898 int unit, 18899 bcm_field_entry_t entry, 18900 bcm_field_HiGigForwardingType_t type); 18901 18902 /* 18903 * Get match criteria for bcmFieldQualifyHiGigForwardingType 18904 * qualifier from the field entry. 18905 */ 18906 extern int bcm_field_qualify_HiGigForwardingType_get( 18907 int unit, 18908 bcm_field_entry_t entry, 18909 bcm_field_HiGigForwardingType_t *type); 18910 18911 /* 18912 * Set match criteria for bcmFieldQualifyHiGigDoNotFlags 18913 * qualifier in the field entry. 18914 */ 18915 extern int bcm_field_qualify_HiGigDoNotFlags( 18916 int unit, 18917 bcm_field_entry_t entry, 18918 uint8 data, 18919 uint8 mask); 18920 18921 /* 18922 * Get match criteria for bcmFieldQualifyHiGigDoNotFlags 18923 * qualifier from the field entry. 18924 */ 18925 extern int bcm_field_qualify_HiGigDoNotFlags_get( 18926 int unit, 18927 bcm_field_entry_t entry, 18928 uint8 *data, 18929 uint8 *mask); 18930 18931 /* 18932 * Set match criteria for bcmFieldQualifyHiGigPreserveFlags 18933 * qualifier in the field entry. 18934 */ 18935 extern int bcm_field_qualify_HiGigPreserveFlags( 18936 int unit, 18937 bcm_field_entry_t entry, 18938 uint8 data, 18939 uint8 mask); 18940 18941 /* 18942 * Get match criteria for bcmFieldQualifyHiGigPreserveFlags 18943 * qualifier from the field entry. 18944 */ 18945 extern int bcm_field_qualify_HiGigPreserveFlags_get( 18946 int unit, 18947 bcm_field_entry_t entry, 18948 uint8 *data, 18949 uint8 *mask); 18950 18951 /* 18952 * Set match criteria for bcmFieldQualifyHiGigVpPreserveFlags 18953 * qualifier in the field entry. 18954 */ 18955 extern int bcm_field_qualify_HiGigVpPreserveFlags( 18956 int unit, 18957 bcm_field_entry_t entry, 18958 uint8 data, 18959 uint8 mask); 18960 18961 /* 18962 * Get match criteria for bcmFieldQualifyHiGigVpPreserveFlags 18963 * qualifier from the field entry. 18964 */ 18965 extern int bcm_field_qualify_HiGigVpPreserveFlags_get( 18966 int unit, 18967 bcm_field_entry_t entry, 18968 uint8 *data, 18969 uint8 *mask); 18970 18971 /* 18972 * Set match criteria for bcmFieldQualifyHiGigOffloadEngineDeferredFlags 18973 * qualifier in the field entry. 18974 */ 18975 extern int bcm_field_qualify_HiGigOffloadEngineDeferredFlags( 18976 int unit, 18977 bcm_field_entry_t entry, 18978 uint8 data, 18979 uint8 mask); 18980 18981 /* 18982 * Get match criteria for bcmFieldQualifyHiGigOffloadEngineDeferredFlags 18983 * qualifier from the field entry. 18984 */ 18985 extern int bcm_field_qualify_HiGigOffloadEngineDeferredFlags_get( 18986 int unit, 18987 bcm_field_entry_t entry, 18988 uint8 *data, 18989 uint8 *mask); 18990 18991 /* 18992 * Set match criteria for bcmFieldQualifyHiGigOffloadEngineVxltStatus 18993 * qualifier in the field entry. 18994 */ 18995 extern int bcm_field_qualify_HiGigOffloadEngineVxltStatus( 18996 int unit, 18997 bcm_field_entry_t entry, 18998 uint8 data, 18999 uint8 mask); 19000 19001 /* 19002 * Get match criteria for bcmFieldQualifyHiGigOffloadEngineVxltStatus 19003 * qualifier from the field entry. 19004 */ 19005 extern int bcm_field_qualify_HiGigOffloadEngineVxltStatus_get( 19006 int unit, 19007 bcm_field_entry_t entry, 19008 uint8 *data, 19009 uint8 *mask); 19010 19011 /* 19012 * Set match criteria for bcmFieldQualifyHiGigOffloadEngineSrcType 19013 * qualifier in the field entry. 19014 */ 19015 extern int bcm_field_qualify_HiGigOffloadEngineSrcType( 19016 int unit, 19017 bcm_field_entry_t entry, 19018 uint8 data, 19019 uint8 mask); 19020 19021 /* 19022 * Get match criteria for bcmFieldQualifyHiGigOffloadEngineSrcType 19023 * qualifier from the field entry. 19024 */ 19025 extern int bcm_field_qualify_HiGigOffloadEngineSrcType_get( 19026 int unit, 19027 bcm_field_entry_t entry, 19028 uint8 *data, 19029 uint8 *mask); 19030 19031 /* 19032 * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDscp 19033 * qualifier in the field entry. 19034 */ 19035 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDscp( 19036 int unit, 19037 bcm_field_entry_t entry, 19038 uint8 data, 19039 uint8 mask); 19040 19041 /* 19042 * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDscp 19043 * qualifier from the field entry. 19044 */ 19045 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDscp_get( 19046 int unit, 19047 bcm_field_entry_t entry, 19048 uint8 *data, 19049 uint8 *mask); 19050 19051 /* 19052 * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDot1p 19053 * qualifier in the field entry. 19054 */ 19055 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDot1p( 19056 int unit, 19057 bcm_field_entry_t entry, 19058 uint8 data, 19059 uint8 mask); 19060 19061 /* 19062 * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDot1p 19063 * qualifier from the field entry. 19064 */ 19065 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDot1p_get( 19066 int unit, 19067 bcm_field_entry_t entry, 19068 uint8 *data, 19069 uint8 *mask); 19070 19071 /* 19072 * Set match criteria for bcmFieldQualifyHiGigExtendedHeaderPresent 19073 * qualifier in the field entry. 19074 */ 19075 extern int bcm_field_qualify_HiGigExtendedHeaderPresent( 19076 int unit, 19077 bcm_field_entry_t entry, 19078 uint8 data, 19079 uint8 mask); 19080 19081 /* 19082 * Get match criteria for bcmFieldQualifyHiGigExtendedHeaderPresent 19083 * qualifier from the field entry. 19084 */ 19085 extern int bcm_field_qualify_HiGigExtendedHeaderPresent_get( 19086 int unit, 19087 bcm_field_entry_t entry, 19088 uint8 *data, 19089 uint8 *mask); 19090 19091 /* 19092 * Set match criteria for bcmFieldQualifyHiGigVpLagFailoverPacket 19093 * qualifier in the field entry. 19094 */ 19095 extern int bcm_field_qualify_HiGigVpLagFailoverPacket( 19096 int unit, 19097 bcm_field_entry_t entry, 19098 uint8 data, 19099 uint8 mask); 19100 19101 /* 19102 * Get match criteria for bcmFieldQualifyHiGigVpLagFailoverPacket 19103 * qualifier from the field entry. 19104 */ 19105 extern int bcm_field_qualify_HiGigVpLagFailoverPacket_get( 19106 int unit, 19107 bcm_field_entry_t entry, 19108 uint8 *data, 19109 uint8 *mask); 19110 19111 #endif /* BCM_HIDE_DISPATCHABLE */ 19112 19113 /* Initiaize Field CopyToCpu Config structure. */ 19114 extern void bcm_field_copytocpu_config_t_init( 19115 bcm_field_CopyToCpu_config_t *CopyToCpu_config); 19116 19117 #ifndef BCM_HIDE_DISPATCHABLE 19118 19119 /* Configure CopyToCpu action for the field entry. */ 19120 extern int bcm_field_action_copytocpu_config_set( 19121 int unit, 19122 bcm_field_entry_t entry, 19123 bcm_field_CopyToCpu_config_t CopyToCpu_config); 19124 19125 /* Get CopyToCpu action from the field entry. */ 19126 extern int bcm_field_action_copytocpu_config_get( 19127 int unit, 19128 bcm_field_entry_t entry, 19129 bcm_field_CopyToCpu_config_t *CopyToCpu_config); 19130 19131 #endif /* BCM_HIDE_DISPATCHABLE */ 19132 19133 /* Initiaize Field Redirect Config structure. */ 19134 extern void bcm_field_redirect_config_t_init( 19135 bcm_field_redirect_config_t *redirect_config); 19136 19137 #ifndef BCM_HIDE_DISPATCHABLE 19138 19139 /* Configure Redirect action for the field entry. */ 19140 extern int bcm_field_action_redirect_config_set( 19141 int unit, 19142 bcm_field_entry_t entry, 19143 bcm_field_redirect_config_t redirect_config); 19144 19145 /* Get Redirect action from the field entry. */ 19146 extern int bcm_field_action_redirect_config_get( 19147 int unit, 19148 bcm_field_entry_t entry, 19149 bcm_field_redirect_config_t *redirect_config); 19150 19151 /* 19152 * Set match criteria for bcmFieldQualifyTosLower4Bits 19153 * qualifier in the field entry. 19154 */ 19155 extern int bcm_field_qualify_TosLower4Bits( 19156 int unit, 19157 bcm_field_entry_t entry, 19158 uint8 data, 19159 uint8 mask); 19160 19161 /* 19162 * Get match criteria for bcmFieldQualifyTosLower4Bits 19163 * qualifier from the field entry. 19164 */ 19165 extern int bcm_field_qualify_TosLower4Bits_get( 19166 int unit, 19167 bcm_field_entry_t entry, 19168 uint8 *data, 19169 uint8 *mask); 19170 19171 /* 19172 * Set match criteria for bcmFieldQualifyOamEgressClass2Vxlt 19173 * qualifier in the field entry. 19174 */ 19175 extern int bcm_field_qualify_OamEgressClass2Vxlt( 19176 int unit, 19177 bcm_field_entry_t entry, 19178 uint32 data, 19179 uint32 mask); 19180 19181 /* 19182 * Get match criteria for bcmFieldQualifyOamEgressClass2Vxlt 19183 * qualifier from the field entry. 19184 */ 19185 extern int bcm_field_qualify_OamEgressClass2Vxlt_get( 19186 int unit, 19187 bcm_field_entry_t entry, 19188 uint32 *data, 19189 uint32 *mask); 19190 19191 /* 19192 * Set match criteria for bcmFieldQualifyOamEgressVxltFirstHit 19193 * qualifier in the field entry. 19194 */ 19195 extern int bcm_field_qualify_OamEgressVxltFirstHit( 19196 int unit, 19197 bcm_field_entry_t entry, 19198 uint8 data, 19199 uint8 mask); 19200 19201 /* 19202 * Get match criteria for bcmFieldQualifyOamEgressVxltFirstHit 19203 * qualifier from the field entry. 19204 */ 19205 extern int bcm_field_qualify_OamEgressVxltFirstHit_get( 19206 int unit, 19207 bcm_field_entry_t entry, 19208 uint8 *data, 19209 uint8 *mask); 19210 19211 /* 19212 * Set match criteria for bcmFieldQualifyOamEgressVxltSecondHit 19213 * qualifier in the field entry. 19214 */ 19215 extern int bcm_field_qualify_OamEgressVxltSecondHit( 19216 int unit, 19217 bcm_field_entry_t entry, 19218 uint8 data, 19219 uint8 mask); 19220 19221 /* 19222 * Get match criteria for bcmFieldQualifyOamEgressVxltSecondHit 19223 * qualifier from the field entry. 19224 */ 19225 extern int bcm_field_qualify_OamEgressVxltSecondHit_get( 19226 int unit, 19227 bcm_field_entry_t entry, 19228 uint8 *data, 19229 uint8 *mask); 19230 19231 /* 19232 * Set match criteria for bcmFieldQualifyOamDownMEPLoopbackPacket 19233 * qualifier in the field entry. 19234 */ 19235 extern int bcm_field_qualify_OamDownMEPLoopbackPacket( 19236 int unit, 19237 bcm_field_entry_t entry, 19238 uint8 data, 19239 uint8 mask); 19240 19241 /* 19242 * Get match criteria for bcmFieldQualifyOamDownMEPLoopbackPacket 19243 * qualifier from the field entry. 19244 */ 19245 extern int bcm_field_qualify_OamDownMEPLoopbackPacket_get( 19246 int unit, 19247 bcm_field_entry_t entry, 19248 uint8 *data, 19249 uint8 *mask); 19250 19251 /* 19252 * Set match criteria for bcmFieldQualifyOamEgressPortUnicastDstMacHit 19253 * qualifier in the field entry. 19254 */ 19255 extern int bcm_field_qualify_OamEgressPortUnicastDstMacHit( 19256 int unit, 19257 bcm_field_entry_t entry, 19258 uint8 data, 19259 uint8 mask); 19260 19261 /* 19262 * Get match criteria for bcmFieldQualifyOamEgressPortUnicastDstMacHit 19263 * qualifier from the field entry. 19264 */ 19265 extern int bcm_field_qualify_OamEgressPortUnicastDstMacHit_get( 19266 int unit, 19267 bcm_field_entry_t entry, 19268 uint8 *data, 19269 uint8 *mask); 19270 19271 /* 19272 * Set match criteria for bcmFieldQualifyIngressDropEthernetOamControl 19273 * qualifier in the field entry. 19274 */ 19275 extern int bcm_field_qualify_IngressDropEthernetOamControl( 19276 int unit, 19277 bcm_field_entry_t entry, 19278 bcm_field_oam_drop_mep_type_t mep_type); 19279 19280 /* 19281 * Get match criteria for bcmFieldQualifyIngressDropEthernetOamControl 19282 * qualifier from the field entry. 19283 */ 19284 extern int bcm_field_qualify_IngressDropEthernetOamControl_get( 19285 int unit, 19286 bcm_field_entry_t entry, 19287 bcm_field_oam_drop_mep_type_t *mep_type); 19288 19289 /* 19290 * Set match criteria for bcmFieldQualifyIngressDropEthernetOamData 19291 * qualifier in the field entry. 19292 */ 19293 extern int bcm_field_qualify_IngressDropEthernetOamData( 19294 int unit, 19295 bcm_field_entry_t entry, 19296 bcm_field_oam_drop_mep_type_t mep_type); 19297 19298 /* 19299 * Get match criteria for bcmFieldQualifyIngressDropEthernetOamData 19300 * qualifier from the field entry. 19301 */ 19302 extern int bcm_field_qualify_IngressDropEthernetOamData_get( 19303 int unit, 19304 bcm_field_entry_t entry, 19305 bcm_field_oam_drop_mep_type_t *mep_type); 19306 19307 /* 19308 * Set match criteria for bcmFieldQualifyIngressDropMplsOamControl 19309 * qualifier in the field entry. 19310 */ 19311 extern int bcm_field_qualify_IngressDropMplsOamControl( 19312 int unit, 19313 bcm_field_entry_t entry, 19314 bcm_field_oam_drop_mep_type_t mep_type); 19315 19316 /* 19317 * Get match criteria for bcmFieldQualifyIngressDropMplsOamControl 19318 * qualifier from the field entry. 19319 */ 19320 extern int bcm_field_qualify_IngressDropMplsOamControl_get( 19321 int unit, 19322 bcm_field_entry_t entry, 19323 bcm_field_oam_drop_mep_type_t *mep_type); 19324 19325 /* 19326 * Set match criteria for bcmFieldQualifyIngressDropMplsOamData 19327 * qualifier in the field entry. 19328 */ 19329 extern int bcm_field_qualify_IngressDropMplsOamData( 19330 int unit, 19331 bcm_field_entry_t entry, 19332 bcm_field_oam_drop_mep_type_t mep_type); 19333 19334 /* 19335 * Get match criteria for bcmFieldQualifyIngressDropMplsOamData 19336 * qualifier from the field entry. 19337 */ 19338 extern int bcm_field_qualify_IngressDropMplsOamData_get( 19339 int unit, 19340 bcm_field_entry_t entry, 19341 bcm_field_oam_drop_mep_type_t *mep_type); 19342 19343 /* 19344 * Set match criteria for EgressClassVxlan 19345 * qualifier. 19346 */ 19347 extern int bcm_field_qualify_EgressClassVxlan( 19348 int unit, 19349 bcm_field_entry_t entry, 19350 uint16 data, 19351 uint16 mask); 19352 19353 /* 19354 * Get match criteria for EgressClassVxlan 19355 * qualifier. 19356 */ 19357 extern int bcm_field_qualify_EgressClassVxlan_get( 19358 int unit, 19359 bcm_field_entry_t entry, 19360 uint16 *data, 19361 uint16 *mask); 19362 19363 /* 19364 * Set match criteria for bcmFieldQualifyOamEgressEtherType 19365 * qualifier in the field entry. 19366 */ 19367 extern int bcm_field_qualify_OamEgressEtherType( 19368 int unit, 19369 bcm_field_entry_t entry, 19370 uint16 data); 19371 19372 /* 19373 * Get match criteria for bcmFieldQualifyOamEgressEtherType 19374 * qualifier from the field entry. 19375 */ 19376 extern int bcm_field_qualify_OamEgressEtherType_get( 19377 int unit, 19378 bcm_field_entry_t entry, 19379 uint16 *data); 19380 19381 /* 19382 * Set match criteria for bcmFieldQualifyOamEgressMulticastMacHit 19383 * qualifier in the field entry. 19384 */ 19385 extern int bcm_field_qualify_OamEgressMulticastMacHit( 19386 int unit, 19387 bcm_field_entry_t entry, 19388 uint8 data); 19389 19390 /* 19391 * Get match criteria for bcmFieldQualifyOamEgressMulticastMacHit 19392 * qualifier from the field entry. 19393 */ 19394 extern int bcm_field_qualify_OamEgressMulticastMacHit_get( 19395 int unit, 19396 bcm_field_entry_t entry, 19397 uint8 *data); 19398 19399 /* 19400 * Set match criteria for bcmFieldQualifyTrunkMemberSourceModuleId 19401 * qualifier in the field entry. 19402 */ 19403 extern int bcm_field_qualify_TrunkMemberSourceModuleId( 19404 int unit, 19405 bcm_field_entry_t entry, 19406 int data, 19407 int mask); 19408 19409 /* 19410 * Get match criteria for bcmFieldQualifyTrunkMemberSourceModuleId 19411 * qualifier from the field entry. 19412 */ 19413 extern int bcm_field_qualify_TrunkMemberSourceModuleId_get( 19414 int unit, 19415 bcm_field_entry_t entry, 19416 int *data, 19417 int *mask); 19418 19419 /* 19420 * Set match criteria for bcmFieldQualifyOamEgressClassSrcMac 19421 * qualifier in the field entry. 19422 */ 19423 extern int bcm_field_qualify_OamEgressClassSrcMac( 19424 int unit, 19425 bcm_field_entry_t entry, 19426 uint32 data, 19427 uint32 mask); 19428 19429 /* 19430 * Get match criteria for bcmFieldQualifyOamEgressClassSrcMac 19431 * qualifier from the field entry. 19432 */ 19433 extern int bcm_field_qualify_OamEgressClassSrcMac_get( 19434 int unit, 19435 bcm_field_entry_t entry, 19436 uint32 *data, 19437 uint32 *mask); 19438 19439 /* 19440 * Set match criteria for bcmFieldQualifyMyStation2Hit 19441 * qualifier in the field entry. 19442 */ 19443 extern int bcm_field_qualify_MyStation2Hit( 19444 int unit, 19445 bcm_field_entry_t entry, 19446 uint8 data, 19447 uint8 mask); 19448 19449 /* 19450 * Get match criteria for bcmFieldQualifyMyStation2Hit 19451 * qualifier from the field entry. 19452 */ 19453 extern int bcm_field_qualify_MyStation2Hit_get( 19454 int unit, 19455 bcm_field_entry_t entry, 19456 uint8 *data, 19457 uint8 *mask); 19458 19459 /* 19460 * Set match criteria for bcmFieldQualifyPreemptablePacket qualifier in 19461 * the field entry. 19462 */ 19463 extern int bcm_field_qualify_PreemptablePacket( 19464 int unit, 19465 bcm_field_entry_t entry, 19466 uint8 data, 19467 uint8 mask); 19468 19469 /* 19470 * Get match criteria for bcmFieldQualifyPreemptablePacket qualifier in 19471 * the field entry. 19472 */ 19473 extern int bcm_field_qualify_PreemptablePacket_get( 19474 int unit, 19475 bcm_field_entry_t entry, 19476 uint8 *data, 19477 uint8 *mask); 19478 19479 /* 19480 * Set match criteria for bcmFieldQualifyVxlanClassValid 19481 * qualifier in the field entry. 19482 */ 19483 extern int bcm_field_qualify_VxlanClassValid( 19484 int unit, 19485 bcm_field_entry_t entry, 19486 uint8 data, 19487 uint8 mask); 19488 19489 /* 19490 * Get match criteria for bcmFieldQualifyVxlanClassValid 19491 * qualifier from the field entry. 19492 */ 19493 extern int bcm_field_qualify_VxlanClassValid_get( 19494 int unit, 19495 bcm_field_entry_t entry, 19496 uint8 *data, 19497 uint8 *mask); 19498 19499 /* 19500 * Set match criteria for bcmFieldQualifyVxlanPacket 19501 * qualifier in the field entry. 19502 */ 19503 extern int bcm_field_qualify_VxlanPacket( 19504 int unit, 19505 bcm_field_entry_t entry, 19506 uint8 data, 19507 uint8 mask); 19508 19509 /* 19510 * Get match criteria for bcmFieldQualifyVxlanPacket 19511 * qualifier from the field entry. 19512 */ 19513 extern int bcm_field_qualify_VxlanPacket_get( 19514 int unit, 19515 bcm_field_entry_t entry, 19516 uint8 *data, 19517 uint8 *mask); 19518 19519 /* 19520 * Set match criteria for bcmFieldQualifyVxlanVnidVlanTranslateHit 19521 * qualifier in the field entry. 19522 */ 19523 extern int bcm_field_qualify_VxlanVnidVlanTranslateHit( 19524 int unit, 19525 bcm_field_entry_t entry, 19526 uint8 data, 19527 uint8 mask); 19528 19529 /* 19530 * Get match criteria for bcmFieldQualifyVxlanVnidVlanTranslateHit 19531 * qualifier from the field entry. 19532 */ 19533 extern int bcm_field_qualify_VxlanVnidVlanTranslateHit_get( 19534 int unit, 19535 bcm_field_entry_t entry, 19536 uint8 *data, 19537 uint8 *mask); 19538 19539 /* 19540 * Set match criteria for bcmFieldQualifyVxlanPayloadVlanFormat 19541 * qualifier in the field entry. 19542 */ 19543 extern int bcm_field_qualify_VxlanPayloadVlanFormat( 19544 int unit, 19545 bcm_field_entry_t entry, 19546 uint8 data, 19547 uint8 mask); 19548 19549 /* 19550 * Get match criteria for bcmFieldQualifyVxlanPayloadVlanFormat 19551 * qualifier from the field entry. 19552 */ 19553 extern int bcm_field_qualify_VxlanPayloadVlanFormat_get( 19554 int unit, 19555 bcm_field_entry_t entry, 19556 uint8 *data, 19557 uint8 *mask); 19558 19559 /* 19560 * Set match criteria for bcmFieldQualifyTunnelPayloadDstMac 19561 * qualifier in the field entry. 19562 */ 19563 extern int bcm_field_qualify_TunnelPayloadDstMac( 19564 int unit, 19565 bcm_field_entry_t entry, 19566 bcm_mac_t data, 19567 bcm_mac_t mask); 19568 19569 /* 19570 * Get match criteria for bcmFieldQualifyTunnelPayloadDstMac 19571 * qualifier from the field entry. 19572 */ 19573 extern int bcm_field_qualify_TunnelPayloadDstMac_get( 19574 int unit, 19575 bcm_field_entry_t entry, 19576 bcm_mac_t *data, 19577 bcm_mac_t *mask); 19578 19579 /* 19580 * Set match criteria for bcmFieldQualifyTunnelPayloadSrcMac 19581 * qualifier in the field entry. 19582 */ 19583 extern int bcm_field_qualify_TunnelPayloadSrcMac( 19584 int unit, 19585 bcm_field_entry_t entry, 19586 bcm_mac_t data, 19587 bcm_mac_t mask); 19588 19589 /* 19590 * Get match criteria for bcmFieldQualifyTunnelPayloadSrcMac 19591 * qualifier from the field entry. 19592 */ 19593 extern int bcm_field_qualify_TunnelPayloadSrcMac_get( 19594 int unit, 19595 bcm_field_entry_t entry, 19596 bcm_mac_t *data, 19597 bcm_mac_t *mask); 19598 19599 /* 19600 * Set match criteria for EgressClassTunnel 19601 * qualifier. 19602 */ 19603 extern int bcm_field_qualify_EgressClassTunnel( 19604 int unit, 19605 bcm_field_entry_t entry, 19606 uint16 data, 19607 uint16 mask); 19608 19609 /* 19610 * Get match criteria for EgressClassTunnel 19611 * qualifier. 19612 */ 19613 extern int bcm_field_qualify_EgressClassTunnel_get( 19614 int unit, 19615 bcm_field_entry_t entry, 19616 uint16 *data, 19617 uint16 *mask); 19618 19619 /* 19620 * Set match criteria for EgressClassL3InterfaceTunnel 19621 * qualifier. 19622 */ 19623 extern int bcm_field_qualify_EgressClassL3InterfaceTunnel( 19624 int unit, 19625 bcm_field_entry_t entry, 19626 uint16 data, 19627 uint16 mask); 19628 19629 /* 19630 * Get match criteria for EgressClassL3InterfaceTunnel 19631 * qualifier. 19632 */ 19633 extern int bcm_field_qualify_EgressClassL3InterfaceTunnel_get( 19634 int unit, 19635 bcm_field_entry_t entry, 19636 uint16 *data, 19637 uint16 *mask); 19638 19639 /* Add VLAN actions to a field entry. */ 19640 extern int bcm_field_action_vlan_actions_add( 19641 int unit, 19642 bcm_field_entry_t entry, 19643 bcm_field_action_t action, 19644 bcm_vlan_action_set_t *vlan_action_set); 19645 19646 /* Retrieve VLAN actions configured to a field entry. */ 19647 extern int bcm_field_action_vlan_actions_get( 19648 int unit, 19649 bcm_field_entry_t entry, 19650 bcm_field_action_t action, 19651 bcm_vlan_action_set_t *vlan_action_set); 19652 19653 /* 19654 * Set match criteria for bcmFieldQualifyTunnelPayloadEtherType 19655 * qualifier in the field entry. 19656 */ 19657 extern int bcm_field_qualify_TunnelPayloadEtherType( 19658 int unit, 19659 bcm_field_entry_t entry, 19660 uint16 data, 19661 uint16 mask); 19662 19663 /* 19664 * Get match criteria for bcmFieldQualifyTunnelPayloadEtherType 19665 * qualifier from the field entry. 19666 */ 19667 extern int bcm_field_qualify_TunnelPayloadEtherType_get( 19668 int unit, 19669 bcm_field_entry_t entry, 19670 uint16 *data, 19671 uint16 *mask); 19672 19673 /* 19674 * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlan 19675 * qualifier in the field entry. 19676 */ 19677 extern int bcm_field_qualify_TunnelPayloadOuterVlan( 19678 int unit, 19679 bcm_field_entry_t entry, 19680 bcm_vlan_t data, 19681 bcm_vlan_t mask); 19682 19683 /* 19684 * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlan 19685 * qualifier from the field entry. 19686 */ 19687 extern int bcm_field_qualify_TunnelPayloadOuterVlan_get( 19688 int unit, 19689 bcm_field_entry_t entry, 19690 bcm_vlan_t *data, 19691 bcm_vlan_t *mask); 19692 19693 /* 19694 * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanId 19695 * qualifier in the field entry. 19696 */ 19697 extern int bcm_field_qualify_TunnelPayloadOuterVlanId( 19698 int unit, 19699 bcm_field_entry_t entry, 19700 bcm_vlan_t data, 19701 bcm_vlan_t mask); 19702 19703 /* 19704 * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanId 19705 * qualifier from the field entry. 19706 */ 19707 extern int bcm_field_qualify_TunnelPayloadOuterVlanId_get( 19708 int unit, 19709 bcm_field_entry_t entry, 19710 bcm_vlan_t *data, 19711 bcm_vlan_t *mask); 19712 19713 /* 19714 * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanPri 19715 * qualifier in the field entry. 19716 */ 19717 extern int bcm_field_qualify_TunnelPayloadOuterVlanPri( 19718 int unit, 19719 bcm_field_entry_t entry, 19720 uint8 data, 19721 uint8 mask); 19722 19723 /* 19724 * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanPri 19725 * qualifier from the field entry. 19726 */ 19727 extern int bcm_field_qualify_TunnelPayloadOuterVlanPri_get( 19728 int unit, 19729 bcm_field_entry_t entry, 19730 uint8 *data, 19731 uint8 *mask); 19732 19733 /* 19734 * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanCfi 19735 * qualifier in the field entry. 19736 */ 19737 extern int bcm_field_qualify_TunnelPayloadOuterVlanCfi( 19738 int unit, 19739 bcm_field_entry_t entry, 19740 uint8 data, 19741 uint8 mask); 19742 19743 /* 19744 * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanCfi 19745 * qualifier from the field entry. 19746 */ 19747 extern int bcm_field_qualify_TunnelPayloadOuterVlanCfi_get( 19748 int unit, 19749 bcm_field_entry_t entry, 19750 uint8 *data, 19751 uint8 *mask); 19752 19753 /* 19754 * Set match criteria for bcmFieldQualifyTunnelPayloadSip 19755 * qualifier in the field entry. 19756 */ 19757 extern int bcm_field_qualify_TunnelPayloadSip( 19758 int unit, 19759 bcm_field_entry_t entry, 19760 bcm_ip_t data, 19761 bcm_ip_t mask); 19762 19763 /* 19764 * Set match criteria for bcmFieldQualifyTunnelPayloadDip 19765 * qualifier in the field entry. 19766 */ 19767 extern int bcm_field_qualify_TunnelPayloadDip( 19768 int unit, 19769 bcm_field_entry_t entry, 19770 bcm_ip_t data, 19771 bcm_ip_t mask); 19772 19773 /* 19774 * Get match criteria for bcmFieldQualifyTunnelPayloadSip 19775 * qualifier from the field entry. 19776 */ 19777 extern int bcm_field_qualify_TunnelPayloadSip_get( 19778 int unit, 19779 bcm_field_entry_t entry, 19780 bcm_ip_t *data, 19781 bcm_ip_t *mask); 19782 19783 /* 19784 * Get match criteria for bcmFieldQualifyTunnelPayloadDip 19785 * qualifier from the field entry. 19786 */ 19787 extern int bcm_field_qualify_TunnelPayloadDip_get( 19788 int unit, 19789 bcm_field_entry_t entry, 19790 bcm_ip_t *data, 19791 bcm_ip_t *mask); 19792 19793 /* 19794 * Set match criteria for bcmFieldQualifyTunnelPayloadSip6 19795 * qualifier in the field entry. 19796 */ 19797 extern int bcm_field_qualify_TunnelPayloadSip6( 19798 int unit, 19799 bcm_field_entry_t entry, 19800 bcm_ip6_t data, 19801 bcm_ip6_t mask); 19802 19803 /* 19804 * Set match criteria for bcmFieldQualifyTunnelPayloadDip6 19805 * qualifier in the field entry. 19806 */ 19807 extern int bcm_field_qualify_TunnelPayloadDip6( 19808 int unit, 19809 bcm_field_entry_t entry, 19810 bcm_ip6_t data, 19811 bcm_ip6_t mask); 19812 19813 /* 19814 * Get match criteria for bcmFieldQualifyTunnelPayloadSip6 19815 * qualifier from the field entry. 19816 */ 19817 extern int bcm_field_qualify_TunnelPayloadSip6_get( 19818 int unit, 19819 bcm_field_entry_t entry, 19820 bcm_ip6_t *data, 19821 bcm_ip6_t *mask); 19822 19823 /* 19824 * Get match criteria for bcmFieldQualifyTunnelPayloadDip6 19825 * qualifier from the field entry. 19826 */ 19827 extern int bcm_field_qualify_TunnelPayloadDip6_get( 19828 int unit, 19829 bcm_field_entry_t entry, 19830 bcm_ip6_t *data, 19831 bcm_ip6_t *mask); 19832 19833 /* 19834 * Set match criteria for bcmFieldQualifyTunnelPayloadIpProtocol 19835 * qualifier in the field entry. 19836 */ 19837 extern int bcm_field_qualify_TunnelPayloadIpProtocol( 19838 int unit, 19839 bcm_field_entry_t entry, 19840 uint8 data, 19841 uint8 mask); 19842 19843 /* 19844 * Get match criteria for bcmFieldQualifyTunnelPayloadIpProtocol 19845 * qualifier from the field entry. 19846 */ 19847 extern int bcm_field_qualify_TunnelPayloadIpProtocol_get( 19848 int unit, 19849 bcm_field_entry_t entry, 19850 uint8 *data, 19851 uint8 *mask); 19852 19853 /* 19854 * Get match criteria for bcmFieldQualifyTunnelPayloadL4SrcPort 19855 * qualifier in the field entry. 19856 */ 19857 extern int bcm_field_qualify_TunnelPayloadL4SrcPort( 19858 int unit, 19859 bcm_field_entry_t entry, 19860 bcm_l4_port_t data, 19861 bcm_l4_port_t mask); 19862 19863 /* 19864 * Get match criteria for bcmFieldQualifyTunnelPayloadL4DstPort 19865 * qualifier in the field entry. 19866 */ 19867 extern int bcm_field_qualify_TunnelPayloadL4DstPort( 19868 int unit, 19869 bcm_field_entry_t entry, 19870 bcm_l4_port_t data, 19871 bcm_l4_port_t mask); 19872 19873 /* 19874 * Get match criteria for bcmFieldQualifyTunnelPayloadL4SrcPort 19875 * qualifier from the field entry. 19876 */ 19877 extern int bcm_field_qualify_TunnelPayloadL4SrcPort_get( 19878 int unit, 19879 bcm_field_entry_t entry, 19880 bcm_l4_port_t *data, 19881 bcm_l4_port_t *mask); 19882 19883 /* 19884 * Get match criteria for bcmFieldQualifyTunnelPayloadL4DstPort 19885 * qualifier from the field entry. 19886 */ 19887 extern int bcm_field_qualify_TunnelPayloadL4DstPort_get( 19888 int unit, 19889 bcm_field_entry_t entry, 19890 bcm_l4_port_t *data, 19891 bcm_l4_port_t *mask); 19892 19893 /* Assign a class_id for given Source MAC Address of SAT packet */ 19894 extern int bcm_field_sat_macsa_add( 19895 int unit, 19896 bcm_mac_t mac, 19897 uint32 class_id); 19898 19899 /* Get the class_id for given Source MAC Address of SAT packet */ 19900 extern int bcm_field_sat_macsa_get( 19901 int unit, 19902 bcm_mac_t mac, 19903 uint32 *class_id); 19904 19905 /* 19906 * Delete the class_id associated with given Source MAC Address 19907 * of SAT packet 19908 */ 19909 extern int bcm_field_sat_macsa_delete( 19910 int unit, 19911 bcm_mac_t mac); 19912 19913 /* 19914 * Delete all Source MAC Address entries and their Class IDs 19915 * of SAT packet 19916 */ 19917 extern int bcm_field_sat_macsa_delete_all( 19918 int unit); 19919 19920 /* Map a presel id to a name. */ 19921 extern int bcm_field_presel_config_set( 19922 int unit, 19923 bcm_field_presel_t presel_id, 19924 bcm_field_presel_config_t *presel_config); 19925 19926 /* Get name from presel id. */ 19927 extern int bcm_field_presel_config_get( 19928 int unit, 19929 bcm_field_presel_t presel_id, 19930 bcm_field_presel_config_t *presel_config); 19931 19932 /* 19933 * Set match criteria for bcmFieldQualifyRoceBthOpcode qualifier in the 19934 * field entry 19935 */ 19936 extern int bcm_field_qualify_RoceBthOpcode( 19937 int unit, 19938 bcm_field_entry_t entry, 19939 uint8 data, 19940 uint8 mask); 19941 19942 /* 19943 * Get match criteria for bcmFieldQualifyRoceBthOpcode qualifier in the 19944 * field entry 19945 */ 19946 extern int bcm_field_qualify_RoceBthOpcode_get( 19947 int unit, 19948 bcm_field_entry_t entry, 19949 uint8 *data, 19950 uint8 *mask); 19951 19952 /* 19953 * Set match criteria for bcmFieldQualifyRoceBthPartitionKey qualifier in 19954 * the field entry 19955 */ 19956 extern int bcm_field_qualify_RoceBthPartitionKey( 19957 int unit, 19958 bcm_field_entry_t entry, 19959 uint16 data, 19960 uint16 mask); 19961 19962 /* 19963 * Get match criteria for bcmFieldQualifyRoceBthPartitionKey qualifier in 19964 * the field entry 19965 */ 19966 extern int bcm_field_qualify_RoceBthPartitionKey_get( 19967 int unit, 19968 bcm_field_entry_t entry, 19969 uint16 *data, 19970 uint16 *mask); 19971 19972 /* 19973 * Set match criteria for bcmFieldQualifyRoceBthDstQueuePair qualifier in 19974 * the field entry 19975 */ 19976 extern int bcm_field_qualify_RoceBthDstQueuePair( 19977 int unit, 19978 bcm_field_entry_t entry, 19979 uint32 data, 19980 uint32 mask); 19981 19982 /* 19983 * Get match criteria for bcmFieldQualifyRoceBthDstQueuePair qualifier in 19984 * the field entry 19985 */ 19986 extern int bcm_field_qualify_RoceBthDstQueuePair_get( 19987 int unit, 19988 bcm_field_entry_t entry, 19989 uint32 *data, 19990 uint32 *mask); 19991 19992 /* 19993 * Set match criteria for bcmFieldQualifyRoceBthFlags qualifier in the 19994 * field entry 19995 */ 19996 extern int bcm_field_qualify_RoceBthFlags( 19997 int unit, 19998 bcm_field_entry_t entry, 19999 uint8 data, 20000 uint8 mask); 20001 20002 /* 20003 * Get match criteria for bcmFieldQualifyRoceBthFlags qualifier in the 20004 * field entry 20005 */ 20006 extern int bcm_field_qualify_RoceBthFlags_get( 20007 int unit, 20008 bcm_field_entry_t entry, 20009 uint8 *data, 20010 uint8 *mask); 20011 20012 /* 20013 * Set match criteria for bcmFieldQualifyRoceVer1Pkt qualifier in the 20014 * field entry 20015 */ 20016 extern int bcm_field_qualify_RoceVer1Pkt( 20017 int unit, 20018 bcm_field_entry_t entry, 20019 uint8 data, 20020 uint8 mask); 20021 20022 /* 20023 * Get match criteria for bcmFieldQualifyRoceVer1Pkt qualifier in the 20024 * field entry 20025 */ 20026 extern int bcm_field_qualify_RoceVer1Pkt_get( 20027 int unit, 20028 bcm_field_entry_t entry, 20029 uint8 *data, 20030 uint8 *mask); 20031 20032 /* 20033 * Set match criteria for bcmFieldQualifyRoceVer2Pkt qualifier in the 20034 * field entry 20035 */ 20036 extern int bcm_field_qualify_RoceVer2Pkt( 20037 int unit, 20038 bcm_field_entry_t entry, 20039 uint8 data, 20040 uint8 mask); 20041 20042 /* 20043 * Get match criteria for bcmFieldQualifyRoceVer2Pkt qualifier in the 20044 * field entry 20045 */ 20046 extern int bcm_field_qualify_RoceVer2Pkt_get( 20047 int unit, 20048 bcm_field_entry_t entry, 20049 uint8 *data, 20050 uint8 *mask); 20051 20052 #endif /* BCM_HIDE_DISPATCHABLE */ 20053 20054 /* Initialize Field Presel Config structure. */ 20055 extern void bcm_field_presel_config_t_init( 20056 bcm_field_presel_config_t *presel_config); 20057 20058 #ifndef BCM_HIDE_DISPATCHABLE 20059 20060 /* 20061 * Set match criteria for bcmFieldQualifyGeneratedTtl qualifier in the 20062 * field entry. 20063 */ 20064 extern int bcm_field_qualify_GeneratedTtl( 20065 int unit, 20066 bcm_field_entry_t entry, 20067 uint32 data, 20068 uint32 mask); 20069 20070 /* 20071 * Get match criteria for bcmFieldQualifyGeneratedTtl qualifier from the 20072 * field entry. 20073 */ 20074 extern int bcm_field_qualify_GeneratedTtl_get( 20075 int unit, 20076 bcm_field_entry_t entry, 20077 uint32 *data, 20078 uint32 *mask); 20079 20080 /* Set match criteria for bcmFieldQualifyIpMulticastCompatible */ 20081 extern int bcm_field_qualify_IpMulticastCompatible( 20082 int unit, 20083 bcm_field_entry_t entry, 20084 uint32 data, 20085 uint32 mask); 20086 20087 /* Get match criteria for bcmFieldQualifyIpMulticastCompatible */ 20088 extern int bcm_field_qualify_IpMulticastCompatible_get( 20089 int unit, 20090 bcm_field_entry_t entry, 20091 uint32 *data, 20092 uint32 *mask); 20093 20094 #endif /* BCM_HIDE_DISPATCHABLE */ 20095 20096 /* SR (Seamless Redundancy) port type */ 20097 typedef enum bcm_field_port_sr_type_e { 20098 bcmFieldPortSRTypeNone = 0, /* SR not supported on this port */ 20099 bcmFieldPortSRTypeEthernet = 1, /* Ethernet */ 20100 bcmFieldPortSRTypePrp = 2, /* PRP */ 20101 bcmFieldPortSRTypeHsr = 3, /* HSR */ 20102 bcmFieldPortSRTypeDot1cb = 4, /* 802.1CB */ 20103 bcmFieldPortSRTypeCount = 5 /* Always last. Not a usable value. */ 20104 } bcm_field_port_sr_type_t; 20105 20106 /* SR (Seamless Redundancy) port mode */ 20107 typedef enum bcm_field_sr_port_mode_e { 20108 bcmFieldSRPortModeDefault = 0, /* Default mode (custom value 0) */ 20109 bcmFieldSRPortModeInterworkingPrp = 1, /* It's a PRP port in an interworking 20110 box */ 20111 bcmFieldSRPortModeCustom1 = 2, /* Custom value 1 */ 20112 bcmFieldSRPortModeCustom2 = 3, /* Custom value 2 */ 20113 bcmFieldSRPortModeCustom3 = 4, /* Custom value 3 */ 20114 bcmFieldSRPortModeCustom4 = 5, /* Custom value 4 */ 20115 bcmFieldSRPortModeCustom5 = 6, /* Custom value 5 */ 20116 bcmFieldSRPortModeCustom6 = 7, /* Custom value 6 */ 20117 bcmFieldSRPortModeCount = 8 /* Always last. Not a usable value. */ 20118 } bcm_field_sr_port_mode_t; 20119 20120 /* SR (Seamless Redundancy) tag type */ 20121 typedef enum bcm_field_sr_tag_type_e { 20122 bcmFieldSRTagTypeNone = 0, /* No SR tag present in the packet */ 20123 bcmFieldSRTagTypeHsr = 1, /* HSR */ 20124 bcmFieldSRTagTypePrp = 2, /* PRP */ 20125 bcmFieldSRTagTypeDot1cb = 3, /* IEEE 802.1CB */ 20126 bcmFieldSRTagTypeCount = 4 /* Always last. Not a usable value. */ 20127 } bcm_field_sr_tag_type_t; 20128 20129 /* SR (Seamless Redundancy) node type */ 20130 typedef enum bcm_field_sr_node_type_e { 20131 bcmFieldSRNodeTypeDan = 0, /* DAN node */ 20132 bcmFieldSRNodeTypeLinkLocal = 1, /* Link local MAC address */ 20133 bcmFieldSRNodeTypeSan = 2, /* SAN node */ 20134 bcmFieldSRNodeTypeSupervision = 3, /* PRP/HSR/802.1CB Supervision MAC 20135 address */ 20136 bcmFieldSRNodeTypeCount = 4 /* Always last. Not a usable value. */ 20137 } bcm_field_sr_node_type_t; 20138 20139 /* SR (Seamless Redundancy) supervision type */ 20140 typedef enum bcm_field_sr_supervision_type_e { 20141 bcmFieldSRSupervisionTypeNone = 0, /* Not an SR Supervision Packet */ 20142 bcmFieldSRSupervisionTypePrp = 1, /* PRP Supervision Packet */ 20143 bcmFieldSRSupervisionTypeHsr = 2, /* HSR Supervision Packet */ 20144 bcmFieldSRSupervisionTypeDot1cb = 3, /* 802.1CB Supervision Packet */ 20145 bcmFieldSRSupervisionTypeCount = 4 /* Always last. Not an usable value. */ 20146 } bcm_field_sr_supervision_type_t; 20147 20148 /* Used for IEEE1588Encapsulation value */ 20149 typedef enum bcm_field_IEEE1588Encap_e { 20150 bcmFieldIEEE1588EncapUdp = 0, /* UDP Encapsulation for IEEE-1588 */ 20151 bcmFieldIEEE1588EncapEth = 1 /* ETH Encapsulation for IEEE-1588 */ 20152 } bcm_field_IEEE1588Encap_t; 20153 20154 /* Parameter for bcmFieldQualifySRError */ 20155 #define BCM_FIELD_SR_ERROR_UNEXPECTED_PKT (1 << 0) /* Unexpected SR tag 20156 present */ 20157 #define BCM_FIELD_SR_ERROR_TAG_ERROR (1 << 1) /* Invalid SR tag format */ 20158 #define BCM_FIELD_SR_ERROR_RX_ERROR (1 << 2) /* Invalid SR flow or 20159 dropped due to errors */ 20160 20161 /* Parameter for bcmFieldActionSRNetIdSource */ 20162 #define BCM_FIELD_SR_NET_ID_SOURCE_FORCE_ZERO 0 /* Force NET ID to be 0 20163 (default) */ 20164 #define BCM_FIELD_SR_NET_ID_SOURCE_SRC_PORT 1 /* From source port NET 20165 ID configuration */ 20166 #define BCM_FIELD_SR_NET_ID_SOURCE_DST_PORT 2 /* From destination port 20167 NET ID configuration */ 20168 #define BCM_FIELD_SR_NET_ID_SOURCE_PACKET 3 /* From SR tag of the 20169 packet */ 20170 20171 /* Parameter for bcmFieldActionSRCopyToCpu */ 20172 #define BCM_FIELD_SR_COPYTOCPU_ANY 0 /* Copy to CPU regardless 20173 of SR status */ 20174 #define BCM_FIELD_SR_COPYTOCPU_NON_DUPLICATE 1 /* Copy to CPU only if 20175 it's a non-duplicate 20176 packet */ 20177 20178 /* Parameters for bcmFieldActionSRTagAdd and bcmFieldActionSRTagDelete */ 20179 #define BCM_FIELD_SR_TAG_TYPE_RESERVED 0 /* Reserved */ 20180 #define BCM_FIELD_SR_TAG_TYPE_HSR 1 /* HSR */ 20181 #define BCM_FIELD_SR_TAG_TYPE_PRP 2 /* PRP */ 20182 #define BCM_FIELD_SR_TAG_TYPE_DOT1CB 3 /* 802.1CB */ 20183 20184 #ifndef BCM_HIDE_DISPATCHABLE 20185 20186 /* Set match criteria for bcmFieldQualifySrcPortSRType */ 20187 extern int bcm_field_qualify_SrcPortSRType( 20188 int unit, 20189 bcm_field_entry_t entry, 20190 bcm_field_port_sr_type_t type); 20191 20192 /* Get match criteria for bcmFieldQualifySrcPortSRType */ 20193 extern int bcm_field_qualify_SrcPortSRType_get( 20194 int unit, 20195 bcm_field_entry_t entry, 20196 bcm_field_port_sr_type_t *type); 20197 20198 /* Set match criteria for bcmFieldQualifyDstPortSRType */ 20199 extern int bcm_field_qualify_DstPortSRType( 20200 int unit, 20201 bcm_field_entry_t entry, 20202 bcm_field_port_sr_type_t type); 20203 20204 /* Get match criteria for bcmFieldQualifyDstPortSRType */ 20205 extern int bcm_field_qualify_DstPortSRType_get( 20206 int unit, 20207 bcm_field_entry_t entry, 20208 bcm_field_port_sr_type_t *type); 20209 20210 /* Set match criteria for bcmFieldQualifySrcPortSRRoleInterlink */ 20211 extern int bcm_field_qualify_SrcPortSRRoleInterlink( 20212 int unit, 20213 bcm_field_entry_t entry, 20214 uint8 data); 20215 20216 /* Get match criteria for bcmFieldQualifySrcPortSRRoleInterlink */ 20217 extern int bcm_field_qualify_SrcPortSRRoleInterlink_get( 20218 int unit, 20219 bcm_field_entry_t entry, 20220 uint8 *data); 20221 20222 /* Set match criteria for bcmFieldQualifyDstPortSRRoleInterlink */ 20223 extern int bcm_field_qualify_DstPortSRRoleInterlink( 20224 int unit, 20225 bcm_field_entry_t entry, 20226 uint8 data); 20227 20228 /* Get match criteria for bcmFieldQualifyDstPortSRRoleInterlink */ 20229 extern int bcm_field_qualify_DstPortSRRoleInterlink_get( 20230 int unit, 20231 bcm_field_entry_t entry, 20232 uint8 *data); 20233 20234 /* Set match criteria for bcmFieldQualifySrcPortSRMode */ 20235 extern int bcm_field_qualify_SrcPortSRMode( 20236 int unit, 20237 bcm_field_entry_t entry, 20238 bcm_field_sr_port_mode_t type, 20239 uint8 mask); 20240 20241 /* Get match criteria for bcmFieldQualifySrcPortSRMode */ 20242 extern int bcm_field_qualify_SrcPortSRMode_get( 20243 int unit, 20244 bcm_field_entry_t entry, 20245 bcm_field_sr_port_mode_t *type, 20246 uint8 *mask); 20247 20248 /* Set match criteria for bcmFieldQualifyDstPortSRMode */ 20249 extern int bcm_field_qualify_DstPortSRMode( 20250 int unit, 20251 bcm_field_entry_t entry, 20252 bcm_field_sr_port_mode_t type, 20253 uint8 mask); 20254 20255 /* Get match criteria for bcmFieldQualifyDstPortSRMode */ 20256 extern int bcm_field_qualify_DstPortSRMode_get( 20257 int unit, 20258 bcm_field_entry_t entry, 20259 bcm_field_sr_port_mode_t *type, 20260 uint8 *mask); 20261 20262 /* Set match criteria for bcmFieldQualifySrcPortSRNetId */ 20263 extern int bcm_field_qualify_SrcPortSRNetId( 20264 int unit, 20265 bcm_field_entry_t entry, 20266 uint8 net_id, 20267 uint8 mask); 20268 20269 /* Get match criteria for bcmFieldQualifySrcPortSRNetId */ 20270 extern int bcm_field_qualify_SrcPortSRNetId_get( 20271 int unit, 20272 bcm_field_entry_t entry, 20273 uint8 *net_id, 20274 uint8 *mask); 20275 20276 /* Set match criteria for bcmFieldQualifyDstPortSRNetId */ 20277 extern int bcm_field_qualify_DstPortSRNetId( 20278 int unit, 20279 bcm_field_entry_t entry, 20280 uint8 net_id, 20281 uint8 mask); 20282 20283 /* Get match criteria for bcmFieldQualifyDstPortSRNetId */ 20284 extern int bcm_field_qualify_DstPortSRNetId_get( 20285 int unit, 20286 bcm_field_entry_t entry, 20287 uint8 *net_id, 20288 uint8 *mask); 20289 20290 /* Set match criteria for bcmFieldQualifySrcPortSRLanId */ 20291 extern int bcm_field_qualify_SrcPortSRLanId( 20292 int unit, 20293 bcm_field_entry_t entry, 20294 uint8 lan_id); 20295 20296 /* Get match criteria for bcmFieldQualifySrcPortSRLanId */ 20297 extern int bcm_field_qualify_SrcPortSRLanId_get( 20298 int unit, 20299 bcm_field_entry_t entry, 20300 uint8 *lan_id); 20301 20302 /* Set match criteria for bcmFieldQualifyDstPortSRLanId */ 20303 extern int bcm_field_qualify_DstPortSRLanId( 20304 int unit, 20305 bcm_field_entry_t entry, 20306 uint8 lan_id); 20307 20308 /* Get match criteria for bcmFieldQualifyDstPortSRLanId */ 20309 extern int bcm_field_qualify_DstPortSRLanId_get( 20310 int unit, 20311 bcm_field_entry_t entry, 20312 uint8 *lan_id); 20313 20314 /* Set match criteria for bcmFieldQualifySRTagType */ 20315 extern int bcm_field_qualify_SRTagType( 20316 int unit, 20317 bcm_field_entry_t entry, 20318 bcm_field_sr_tag_type_t type); 20319 20320 /* Get match criteria for bcmFieldQualifySRTagType */ 20321 extern int bcm_field_qualify_SRTagType_get( 20322 int unit, 20323 bcm_field_entry_t entry, 20324 bcm_field_sr_tag_type_t *type); 20325 20326 /* Set match criteria for bcmFieldQualifySRLanId */ 20327 extern int bcm_field_qualify_SRLanId( 20328 int unit, 20329 bcm_field_entry_t entry, 20330 int lan_id); 20331 20332 /* Get match criteria for bcmFieldQualifySRLanId */ 20333 extern int bcm_field_qualify_SRLanId_get( 20334 int unit, 20335 bcm_field_entry_t entry, 20336 int *lan_id); 20337 20338 /* Set match criteria for bcmFieldQualifySRNetId */ 20339 extern int bcm_field_qualify_SRNetId( 20340 int unit, 20341 bcm_field_entry_t entry, 20342 int net_id); 20343 20344 /* Get match criteria for bcmFieldQualifySRNetId */ 20345 extern int bcm_field_qualify_SRNetId_get( 20346 int unit, 20347 bcm_field_entry_t entry, 20348 int *net_id); 20349 20350 /* Set match criteria for bcmFieldQualifyVlanSREnable */ 20351 extern int bcm_field_qualify_VlanSREnable( 20352 int unit, 20353 bcm_field_entry_t entry, 20354 uint8 data); 20355 20356 /* Get match criteria for bcmFieldQualifyVlanSREnable */ 20357 extern int bcm_field_qualify_VlanSREnable_get( 20358 int unit, 20359 bcm_field_entry_t entry, 20360 uint8 *data); 20361 20362 /* Set match criteria for bcmFieldQualifyVlanSRLanId */ 20363 extern int bcm_field_qualify_VlanSRLanId( 20364 int unit, 20365 bcm_field_entry_t entry, 20366 uint8 lan_id); 20367 20368 /* Get match criteria for bcmFieldQualifyVlanSRLanId */ 20369 extern int bcm_field_qualify_VlanSRLanId_get( 20370 int unit, 20371 bcm_field_entry_t entry, 20372 uint8 *lan_id); 20373 20374 /* Set match criteria for bcmFieldQualifySRFlowId */ 20375 extern int bcm_field_qualify_SRFlowId( 20376 int unit, 20377 bcm_field_entry_t entry, 20378 uint32 data, 20379 uint32 mask); 20380 20381 /* Get match criteria for bcmFieldQualifySRFlowId */ 20382 extern int bcm_field_qualify_SRFlowId_get( 20383 int unit, 20384 bcm_field_entry_t entry, 20385 uint32 *data, 20386 uint32 *mask); 20387 20388 /* Set match criteria for bcmFieldQualifyL2DestSRNodeType */ 20389 extern int bcm_field_qualify_L2DestSRNodeType( 20390 int unit, 20391 bcm_field_entry_t entry, 20392 bcm_field_sr_node_type_t type); 20393 20394 /* Get match criteria for bcmFieldQualifyL2DestSRNodeType */ 20395 extern int bcm_field_qualify_L2DestSRNodeType_get( 20396 int unit, 20397 bcm_field_entry_t entry, 20398 bcm_field_sr_node_type_t *type); 20399 20400 /* Set match criteria for bcmFieldQualifySRNetIdMatched */ 20401 extern int bcm_field_qualify_SRNetIdMatched( 20402 int unit, 20403 bcm_field_entry_t entry, 20404 uint8 data); 20405 20406 /* Get match criteria for bcmFieldQualifySRNetIdMatched */ 20407 extern int bcm_field_qualify_SRNetIdMatched_get( 20408 int unit, 20409 bcm_field_entry_t entry, 20410 uint8 *data); 20411 20412 /* Set match criteria for bcmFieldQualifySRSrcNodeIsSan */ 20413 extern int bcm_field_qualify_SRSrcNodeIsSan( 20414 int unit, 20415 bcm_field_entry_t entry, 20416 uint8 data); 20417 20418 /* Get match criteria for bcmFieldQualifySRSrcNodeIsSan */ 20419 extern int bcm_field_qualify_SRSrcNodeIsSan_get( 20420 int unit, 20421 bcm_field_entry_t entry, 20422 uint8 *data); 20423 20424 /* Set match criteria for bcmFieldQualifySRSupervisionType */ 20425 extern int bcm_field_qualify_SRSupervisionType( 20426 int unit, 20427 bcm_field_entry_t entry, 20428 bcm_field_sr_supervision_type_t type); 20429 20430 /* Get match criteria for bcmFieldQualifySRSupervisionType */ 20431 extern int bcm_field_qualify_SRSupervisionType_get( 20432 int unit, 20433 bcm_field_entry_t entry, 20434 bcm_field_sr_supervision_type_t *type); 20435 20436 /* Set match criteria for bcmFieldQualifySRError */ 20437 extern int bcm_field_qualify_SRError( 20438 int unit, 20439 bcm_field_entry_t entry, 20440 uint32 data, 20441 uint32 mask); 20442 20443 /* Get match criteria for bcmFieldQualifySRError */ 20444 extern int bcm_field_qualify_SRError_get( 20445 int unit, 20446 bcm_field_entry_t entry, 20447 uint32 *data, 20448 uint32 *mask); 20449 20450 /* Set match criteria for bcmFieldQualifyL2SrcMulticastHit */ 20451 extern int bcm_field_qualify_L2SrcMulticastHit( 20452 int unit, 20453 bcm_field_entry_t entry, 20454 uint8 data, 20455 uint8 mask); 20456 20457 /* Get match criteria for bcmFieldQualifyL2SrcMulticastHit */ 20458 extern int bcm_field_qualify_L2SrcMulticastHit_get( 20459 int unit, 20460 bcm_field_entry_t entry, 20461 uint8 *data, 20462 uint8 *mask); 20463 20464 /* Set match criteria for bcmFieldQualifyL2DstMulticastHit */ 20465 extern int bcm_field_qualify_L2DstMulticastHit( 20466 int unit, 20467 bcm_field_entry_t entry, 20468 uint8 data, 20469 uint8 mask); 20470 20471 /* Get match criteria for bcmFieldQualifyL2DstMulticastHit */ 20472 extern int bcm_field_qualify_L2DstMulticastHit_get( 20473 int unit, 20474 bcm_field_entry_t entry, 20475 uint8 *data, 20476 uint8 *mask); 20477 20478 /* Set match criteria for bcmFieldQualifySRDuplicate */ 20479 extern int bcm_field_qualify_SRDuplicate( 20480 int unit, 20481 bcm_field_entry_t entry, 20482 uint8 data); 20483 20484 /* Get match criteria for bcmFieldQualifySRDuplicate */ 20485 extern int bcm_field_qualify_SRDuplicate_get( 20486 int unit, 20487 bcm_field_entry_t entry, 20488 uint8 *data); 20489 20490 /* Set match criteria for bcmFieldQualifyTsnFlowId */ 20491 extern int bcm_field_qualify_TsnFlowId( 20492 int unit, 20493 bcm_field_entry_t entry, 20494 uint32 data, 20495 uint32 mask); 20496 20497 extern int bcm_field_qualify_TsnFlowId_get( 20498 int unit, 20499 bcm_field_entry_t entry, 20500 uint32 *data, 20501 uint32 *mask); 20502 20503 /* Set match criteria for bcmFieldQualifyStaggeredValue0. */ 20504 extern int bcm_field_qualify_StaggeredValue0( 20505 int unit, 20506 bcm_field_entry_t entry, 20507 uint32 data, 20508 uint32 mask); 20509 20510 /* Get match criteria for bcmFieldQualifyStaggeredValue0 */ 20511 extern int bcm_field_qualify_StaggeredValue0_get( 20512 int unit, 20513 bcm_field_entry_t entry, 20514 uint32 *data, 20515 uint32 *mask); 20516 20517 /* Set match criteria for bcmFieldQualifyStaggeredValue1. */ 20518 extern int bcm_field_qualify_StaggeredValue1( 20519 int unit, 20520 bcm_field_entry_t entry, 20521 uint32 data, 20522 uint32 mask); 20523 20524 /* Get match criteria for bcmFieldQualifyStaggeredValue1 */ 20525 extern int bcm_field_qualify_StaggeredValue1_get( 20526 int unit, 20527 bcm_field_entry_t entry, 20528 uint32 *data, 20529 uint32 *mask); 20530 20531 /* Set match criteria for bcmFieldQualifyStaggeredValue2. */ 20532 extern int bcm_field_qualify_StaggeredValue2( 20533 int unit, 20534 bcm_field_entry_t entry, 20535 uint32 data, 20536 uint32 mask); 20537 20538 /* Get match criteria for bcmFieldQualifyStaggeredValue2 */ 20539 extern int bcm_field_qualify_StaggeredValue2_get( 20540 int unit, 20541 bcm_field_entry_t entry, 20542 uint32 *data, 20543 uint32 *mask); 20544 20545 /* Set match criteria for bcmFieldQualifyStaggeredValue3. */ 20546 extern int bcm_field_qualify_StaggeredValue3( 20547 int unit, 20548 bcm_field_entry_t entry, 20549 uint32 data, 20550 uint32 mask); 20551 20552 /* Get match criteria for bcmFieldQualifyStaggeredValue3 */ 20553 extern int bcm_field_qualify_StaggeredValue3_get( 20554 int unit, 20555 bcm_field_entry_t entry, 20556 uint32 *data, 20557 uint32 *mask); 20558 20559 /* Set match criteria for bcmFieldQualifyStaggeredDirectValue. */ 20560 extern int bcm_field_qualify_StaggeredDirectValue( 20561 int unit, 20562 bcm_field_entry_t entry, 20563 uint32 data, 20564 uint32 mask); 20565 20566 /* Get match criteria for bcmFieldQualifyStaggeredDirectValue */ 20567 extern int bcm_field_qualify_StaggeredDirectValue_get( 20568 int unit, 20569 bcm_field_entry_t entry, 20570 uint32 *data, 20571 uint32 *mask); 20572 20573 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile0. */ 20574 extern int bcm_field_qualify_StaggeredPreselProfile0( 20575 int unit, 20576 bcm_field_entry_t entry, 20577 uint32 data, 20578 uint32 mask); 20579 20580 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfile0 */ 20581 extern int bcm_field_qualify_StaggeredPreselProfile0_get( 20582 int unit, 20583 bcm_field_entry_t entry, 20584 uint32 *data, 20585 uint32 *mask); 20586 20587 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile1. */ 20588 extern int bcm_field_qualify_StaggeredPreselProfile1( 20589 int unit, 20590 bcm_field_entry_t entry, 20591 uint32 data, 20592 uint32 mask); 20593 20594 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfile1 */ 20595 extern int bcm_field_qualify_StaggeredPreselProfile1_get( 20596 int unit, 20597 bcm_field_entry_t entry, 20598 uint32 *data, 20599 uint32 *mask); 20600 20601 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile2. */ 20602 extern int bcm_field_qualify_StaggeredPreselProfile2( 20603 int unit, 20604 bcm_field_entry_t entry, 20605 uint32 data, 20606 uint32 mask); 20607 20608 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfile2. */ 20609 extern int bcm_field_qualify_StaggeredPreselProfile2_get( 20610 int unit, 20611 bcm_field_entry_t entry, 20612 uint32 *data, 20613 uint32 *mask); 20614 20615 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile3. */ 20616 extern int bcm_field_qualify_StaggeredPreselProfile3( 20617 int unit, 20618 bcm_field_entry_t entry, 20619 uint32 data, 20620 uint32 mask); 20621 20622 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfile3. */ 20623 extern int bcm_field_qualify_StaggeredPreselProfile3_get( 20624 int unit, 20625 bcm_field_entry_t entry, 20626 uint32 *data, 20627 uint32 *mask); 20628 20629 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfileDirect. */ 20630 extern int bcm_field_qualify_StaggeredPreselProfileDirect( 20631 int unit, 20632 bcm_field_entry_t entry, 20633 uint32 data, 20634 uint32 mask); 20635 20636 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfileDirect. */ 20637 extern int bcm_field_qualify_StaggeredPreselProfileDirect_get( 20638 int unit, 20639 bcm_field_entry_t entry, 20640 uint32 *data, 20641 uint32 *mask); 20642 20643 /* Add ports to the specified group */ 20644 extern int bcm_field_group_ports_add( 20645 int unit, 20646 bcm_field_group_t group, 20647 bcm_pbmp_t pbmp); 20648 20649 /* Remove ports from a specified group. */ 20650 extern int bcm_field_group_ports_remove( 20651 int unit, 20652 bcm_field_group_t group, 20653 bcm_pbmp_t pbmp); 20654 20655 /* Retrieve the bitmap of ports associated with a given field group */ 20656 extern int bcm_field_group_ports_get( 20657 int unit, 20658 bcm_field_group_t group, 20659 bcm_pbmp_t *pbmp); 20660 20661 /* To verify whether a group can be created with a given qset and mode */ 20662 extern int bcm_field_group_config_validate( 20663 int unit, 20664 bcm_field_group_config_t *group_config, 20665 bcm_field_group_mode_t *mode); 20666 20667 /* 20668 * To map a given set of TTL/ToS/TCP values of the packet to another set 20669 * of TTL/ToS/TCP values respectively. 20670 */ 20671 extern int bcm_field_class_map_set( 20672 int unit, 20673 bcm_field_stage_t stage, 20674 bcm_field_qualify_t qual, 20675 uint32 num_entries, 20676 uint32 *orig_values_array, 20677 uint32 *map_values_array); 20678 20679 /* 20680 * To map a given set of TTL/ToS/TCP values of the packet to another set 20681 * of TTL/ToS/TCP values respectively. 20682 */ 20683 extern int bcm_field_class_map_get( 20684 int unit, 20685 bcm_field_stage_t stage, 20686 bcm_field_qualify_t qual, 20687 uint32 num_entries, 20688 uint32 *orig_values_array, 20689 uint32 *map_values_array); 20690 20691 /* Set match criteria for bcmFieldQaulifyPreselId. */ 20692 extern int bcm_field_qualify_PreselId( 20693 int unit, 20694 bcm_field_entry_t entry, 20695 uint32 data, 20696 uint32 mask); 20697 20698 /* Get match criteria for bcmFieldQaulifyPreselId. */ 20699 extern int bcm_field_qualify_PreselId_get( 20700 int unit, 20701 bcm_field_entry_t entry, 20702 uint32 *data, 20703 uint32 *mask); 20704 20705 /* Set match criteria for bcmFieldQualifyMirrorDest. */ 20706 extern int bcm_field_qualify_MirrorDest( 20707 int unit, 20708 bcm_field_entry_t entry, 20709 bcm_gport_t mirror_gport); 20710 20711 /* Get match criteria for bcmFieldQualifyMirrorDest. */ 20712 extern int bcm_field_qualify_MirrorDest_get( 20713 int unit, 20714 bcm_field_entry_t entry, 20715 bcm_gport_t *mirror_gport); 20716 20717 /* Set match criteria for bcm_field_qualify_PacketIsIEEE1588. */ 20718 extern int bcm_field_qualify_PacketIsIEEE1588( 20719 int unit, 20720 bcm_field_entry_t entry, 20721 uint8 data, 20722 uint8 mask); 20723 20724 /* Get match criteria for bcm_field_qualify_PacketIsIEEE1588_get. */ 20725 extern int bcm_field_qualify_PacketIsIEEE1588_get( 20726 int unit, 20727 bcm_field_entry_t entry, 20728 uint8 *data, 20729 uint8 *mask); 20730 20731 /* Set match criteria for field_qualify_IEEE1588Encapsulation. */ 20732 extern int bcm_field_qualify_IEEE1588Encapsulation( 20733 int unit, 20734 bcm_field_entry_t entry, 20735 bcm_field_IEEE1588Encap_t encap); 20736 20737 /* Get match criteria for field_qualify_IEEE1588Encapsulation_get. */ 20738 extern int bcm_field_qualify_IEEE1588Encapsulation_get( 20739 int unit, 20740 bcm_field_entry_t entry, 20741 bcm_field_IEEE1588Encap_t *encap); 20742 20743 /* Set match criteria for field_qualify_IEEE1588CompensateTimeStamp. */ 20744 extern int bcm_field_qualify_IEEE1588CompensateTimeStamp( 20745 int unit, 20746 bcm_field_entry_t entry, 20747 uint8 data, 20748 uint8 mask); 20749 20750 /* Get match criteria for field_qualify_IEEE1588CompensateTimeStamp_get. */ 20751 extern int bcm_field_qualify_IEEE1588CompensateTimeStamp_get( 20752 int unit, 20753 bcm_field_entry_t entry, 20754 uint8 *data, 20755 uint8 *mask); 20756 20757 /* Set match criteria for field_qualify_IEEE1588Command. */ 20758 extern int bcm_field_qualify_IEEE1588Command( 20759 int unit, 20760 bcm_field_entry_t entry, 20761 uint8 data, 20762 uint8 mask); 20763 20764 /* Get match criteria for field_qualify_IEEE1588Command_get. */ 20765 extern int bcm_field_qualify_IEEE1588Command_get( 20766 int unit, 20767 bcm_field_entry_t entry, 20768 uint8 *data, 20769 uint8 *mask); 20770 20771 /* Set match criteria for bcm_field_qualify_IEEE1588HeaderOffset. */ 20772 extern int bcm_field_qualify_IEEE1588HeaderOffset( 20773 int unit, 20774 bcm_field_entry_t entry, 20775 uint32 data, 20776 uint32 mask); 20777 20778 /* Get match criteria for field_qualify_IEEE1588HeaderOffset_get. */ 20779 extern int bcm_field_qualify_IEEE1588HeaderOffset_get( 20780 int unit, 20781 bcm_field_entry_t entry, 20782 uint32 *data, 20783 uint32 *mask); 20784 20785 #endif /* BCM_HIDE_DISPATCHABLE */ 20786 20787 /* 20788 * Field Qualifier System Header types (for 20789 * bcm_field_qualify_SysHdrType). 20790 */ 20791 typedef enum bcm_field_sys_hdr_type_e { 20792 bcmFieldSysHdrNone = 0, /* No System Header in the packet. */ 20793 bcmFieldSysHdrSubPort = 1, /* Subport type System Header. */ 20794 bcmFieldSysHdrLoopbackNot = 2, /* Not a system header of any Loopback 20795 type. */ 20796 bcmFieldSysHdrLoopbackAny = 3, /* Loopback system header 20797 (GenericLoopback or CPU Masquerade). */ 20798 bcmFieldSysHdrLoopbackGeneric = 4, /* System header of Generic Loopback. */ 20799 bcmFieldSysHdrLoopbackCpuMasquerade = 5, /* System header of Loopback CPU 20800 Masquerade. */ 20801 bcmFieldSysHdrHiGigNot = 6, /* Not a System header of any HiGig 20802 type. */ 20803 bcmFieldSysHdrHiGigAny = 7, /* System header of any HiGig type. */ 20804 bcmFieldSysHdrHiGigTypePpd0 = 8, /* HiGig with PPD0. */ 20805 bcmFieldSysHdrHiGigTypePpd2 = 9, /* HiGig with PPD2. */ 20806 bcmFieldSysHdrHiGigTypePpd0EhType0 = 10, /* HiGig with PPD0 Extension Header Type 20807 0. */ 20808 bcmFieldSysHdrHiGigTypePpd0EhType1 = 11, /* HiGig with PPD0 Extension Header Type 20809 1. */ 20810 bcmFieldSysHdrHiGigTypePpd0EhType2 = 12, /* HiGig with PPD0 Extension Header Type 20811 2. */ 20812 bcmFieldSysHdrHiGigTypePpd2EhType0 = 13, /* HiGig with PPD2 Extension Header Type 20813 0. */ 20814 bcmFieldSysHdrHiGigTypePpd2EhType1 = 14, /* HiGig with PPD2 Extension Header Type 20815 1. */ 20816 bcmFieldSysHdrHiGigTypePpd2EhType2 = 15, /* HiGig with PPD2 Extension Header Type 20817 2. */ 20818 bcmFieldSysHdrHiGigTypeUnknownPpd = 16, /* HiGig with unknown PPD. */ 20819 bcmFieldSysHdrHiGigTypeUnknownPpdWithEh = 17, /* HiGig with unknown PPD Extension 20820 header. */ 20821 bcmFieldSysHdrHiGigTypePpd1 = 18, /* HiGig with PPD1. */ 20822 bcmFieldSysHdrHiGigTypePpd1WithEh = 19, /* HiGig with PPD1 Extension Header. */ 20823 bcmFieldSysHdrTxTimestamp = 20, /* SOBMH packet used for Tx Timestamp */ 20824 bcmFieldSysHdrLastCount = 21 /* Always Last. Not a usable value. */ 20825 } bcm_field_sys_hdr_type_t; 20826 20827 #define BCM_FIELD_SYS_HDR_TYPE_STRINGS \ 20828 { \ 20829 "None", \ 20830 "SubPort", \ 20831 "LoopbackNot", \ 20832 "LoopbackAny", \ 20833 "LoopbackGeneric", \ 20834 "LoopbackCpuMasquerade", \ 20835 "HiGigNot", \ 20836 "HiGigAny", \ 20837 "HiGigTypePpd0", \ 20838 "HiGigTypePpd2", \ 20839 "HiGigTypePpd0EhType0", \ 20840 "HiGigTypePpd0EhType1", \ 20841 "HiGigTypePpd0EhType2", \ 20842 "HiGigTypePpd2EhType0", \ 20843 "HiGigTypePpd2EhType1", \ 20844 "HiGigTypePpd2EhType2", \ 20845 "HiGigTypeUnknownPpd", \ 20846 "HiGigTypeUnknownPpdWithEh", \ 20847 "HiGigTypePpd1", \ 20848 "HiGigTypePpd1WithEh", \ 20849 "TxTimestamp" \ 20850 } 20851 20852 #ifndef BCM_HIDE_DISPATCHABLE 20853 20854 /* Add system header type field qualification to a field entry. */ 20855 extern int bcm_field_qualify_SysHdrType( 20856 int unit, 20857 bcm_field_entry_t entry, 20858 bcm_field_sys_hdr_type_t type); 20859 20860 /* Get system header type field qualification from a field entry. */ 20861 extern int bcm_field_qualify_SysHdrType_get( 20862 int unit, 20863 bcm_field_entry_t entry, 20864 bcm_field_sys_hdr_type_t *type); 20865 20866 /* Add Subport Tag present status field qualification to a field entry. */ 20867 extern int bcm_field_qualify_SubportTagPresent( 20868 int unit, 20869 bcm_field_entry_t entry, 20870 uint8 data, 20871 uint8 mask); 20872 20873 #endif /* BCM_HIDE_DISPATCHABLE */ 20874 20875 /* Parameters for bcmFieldActionMplsLookupEnable */ 20876 #define BCM_FIELD_MPLS_ENABLE 1 /* Enabling MPLS support */ 20877 #define BCM_FIELD_MPLS_DISABLE 2 /* Disabling MPLS support */ 20878 20879 /* Parameters for bcmFieldActionTerminationAllowed */ 20880 #define BCM_FIELD_MPLS_TERM_ALLOWED (1 << 0) /* Enabling MPLS tunnel 20881 termination */ 20882 #define BCM_FIELD_IPV4_TERM_ALLOWED (1 << 1) /* Enabling L3 Ipv4 20883 termination */ 20884 #define BCM_FIELD_IPV6_TERM_ALLOWED (1 << 2) /* Enabling L3 Ipv6 20885 termination */ 20886 #define BCM_FIELD_IPV4_MCAST_TERM_ALLOWED (1 << 3) /* Enabling L3 Ipv4 20887 multicast termination */ 20888 #define BCM_FIELD_IPV6_MCAST_TERM_ALLOWED (1 << 4) /* Enabling L3 Ipv6 20889 multicast termination */ 20890 #define BCM_FIELD_ARP_RARP_TERM_ALLOWED (1 << 5) /* Enabling arp/rarp 20891 termination */ 20892 20893 #ifndef BCM_HIDE_DISPATCHABLE 20894 20895 /* 20896 * Configure match criteria for bcmFieldQualifyIpTunnelTtlClassZero 20897 * qualifier from the field entry. 20898 */ 20899 extern int bcm_field_qualify_IpTunnelTtlClassZero( 20900 int unit, 20901 bcm_field_entry_t entry, 20902 bcm_class_t data, 20903 bcm_class_t mask); 20904 20905 /* Get Subport tag present status field qualification from a field entry. */ 20906 extern int bcm_field_qualify_SubportTagPresent_get( 20907 int unit, 20908 bcm_field_entry_t entry, 20909 uint8 *data, 20910 uint8 *mask); 20911 20912 #endif /* BCM_HIDE_DISPATCHABLE */ 20913 20914 /* bcm_field_network_tag_type_e */ 20915 typedef enum bcm_field_network_tag_type_e { 20916 bcmFieldNetworkTagVnTag = 0, /* Network tag type VNTAG. */ 20917 bcmFieldNetworkTagEtag = 1, /* Network tag type ETAG. */ 20918 bcmFieldNetworkTagLastCount = 2 /* Always Last. Not a usable value. */ 20919 } bcm_field_network_tag_type_t; 20920 20921 #define BCM_FIELD_NETWORK_TAG_TYPE \ 20922 { \ 20923 "VnTag", \ 20924 "Etag" \ 20925 } 20926 20927 #ifndef BCM_HIDE_DISPATCHABLE 20928 20929 /* Add network tag type field qualification to a field entry. */ 20930 extern int bcm_field_qualify_NetworkTagType( 20931 int unit, 20932 bcm_field_entry_t entry, 20933 bcm_field_network_tag_type_t type); 20934 20935 /* Get network tag type field qualification from a field entry. */ 20936 extern int bcm_field_qualify_NetworkTagType_get( 20937 int unit, 20938 bcm_field_entry_t entry, 20939 bcm_field_network_tag_type_t *type); 20940 20941 /* 20942 * Add congestion Tag present status field qualification to a field 20943 * entry. 20944 */ 20945 extern int bcm_field_qualify_CnTagPresent( 20946 int unit, 20947 bcm_field_entry_t entry, 20948 uint8 data, 20949 uint8 mask); 20950 20951 /* 20952 * Get congestion tag present status field qualification from a field 20953 * entry. 20954 */ 20955 extern int bcm_field_qualify_CnTagPresent_get( 20956 int unit, 20957 bcm_field_entry_t entry, 20958 uint8 *data, 20959 uint8 *mask); 20960 20961 #endif /* BCM_HIDE_DISPATCHABLE */ 20962 20963 /* bcm_field_l2_pkt_type_e */ 20964 typedef enum bcm_field_l2_pkt_type_e { 20965 bcmFieldL2PktTypeEthernet = 0, /* Ethernet L2 packet type. */ 20966 bcmFieldL2PktTypeSnap = 1, /* SNAP L2 packet type. */ 20967 bcmFieldL2PktTypeLLC = 2, /* LLC L2 packet type. */ 20968 bcmFieldL2PktTypeLastCount = 3 /* Always Last. Not a usable value. */ 20969 } bcm_field_l2_pkt_type_t; 20970 20971 #define BCM_FIELD_L2_PKT_TYPE \ 20972 { \ 20973 "Ethernet", \ 20974 "Snap", \ 20975 "LLC" \ 20976 } 20977 20978 #ifndef BCM_HIDE_DISPATCHABLE 20979 20980 /* Add L2 Packet type field qualification to a field entry. */ 20981 extern int bcm_field_qualify_L2PktType( 20982 int unit, 20983 bcm_field_entry_t entry, 20984 bcm_field_l2_pkt_type_t type); 20985 20986 /* Get L2 Packet type field qualification from a field entry. */ 20987 extern int bcm_field_qualify_L2PktType_get( 20988 int unit, 20989 bcm_field_entry_t entry, 20990 bcm_field_l2_pkt_type_t *type); 20991 20992 #endif /* BCM_HIDE_DISPATCHABLE */ 20993 20994 /* bcm_field_pkt_type_e */ 20995 typedef enum bcm_field_pkt_type_e { 20996 bcmFieldPktTypeMplsNot = 0, /* Non-MPLS Packet type */ 20997 bcmFieldPktTypeMplsAny = 1, /* Any MPLS Packet type */ 20998 bcmFieldPktTypeMplsOneLabel = 2, /* MPLS with one label Packet type */ 20999 bcmFieldPktTypeMplsTwoLabel = 3, /* MPLS with two labels Packet type */ 21000 bcmFieldPktTypeMplsThreeLabel = 4, /* MPLS with three labels Packet type */ 21001 bcmFieldPktTypeMplsFourLabel = 5, /* MPLS with four labels Packet type */ 21002 bcmFieldPktTypeMplsFiveLabel = 6, /* MPLS with five labels Packet type */ 21003 bcmFieldPktTypeMplsSixLabel = 7, /* MPLS with six labels Packet type */ 21004 bcmFieldPktTypeMplsSevenLabel = 8, /* MPLS with seven labels Packet type */ 21005 bcmFieldPktTypeMplsMoreThanSevenLabel = 9, /* MPLS with more than seven labels 21006 Packet type */ 21007 bcmFieldPktTypeFCoENot = 10, /* Non-FCoE Packet type */ 21008 bcmFieldPktTypeFCoEAny = 11, /* Any FCoE Packet type */ 21009 bcmFieldPktTypeFCoEVft = 12, /* FCoE VFT Packet type */ 21010 bcmFieldPktTypeFCoEEncap = 13, /* FCoE ENCAP Packet type */ 21011 bcmFieldPktTypeFCoEIfr = 14, /* FCoE IFR Packet type */ 21012 bcmFieldPktTypeFCoEStd = 15, /* FCoE STD Packet type */ 21013 bcmFieldPktTypeFCoEVftStd = 16, /* FCoE VFT-STD Packet type */ 21014 bcmFieldPktTypeFCoEEncapStd = 17, /* FCoE ENCAP-STD Packet type */ 21015 bcmFieldPktTypeFCoEIfrStd = 18, /* FCoE IFR-STD Packet type */ 21016 bcmFieldPktTypeFCoEFip = 19, /* FCoE FIP Packet type */ 21017 bcmFieldPktType1588 = 20, /* 1588 Packet Type */ 21018 bcmFieldPktTypeArp = 21, /* ARP Packet Type */ 21019 bcmFieldPktTypeRarp = 22, /* RARP Packet Type */ 21020 bcmFieldPktTypeUnknownEtherType = 23, /* Packet with Unknown EtherType */ 21021 bcmFieldPktTypeMim = 24, /* MiM Packet type */ 21022 bcmFieldPktTypeOam = 25, /* OAM Packet Type */ 21023 bcmFieldPktTypeCnm = 26, /* CNM (congestion notification message) 21024 Packet Type */ 21025 bcmFieldPktTypeNshOverL2 = 27, /* NSH Over L2 Packet Type */ 21026 bcmFieldPktTypeNshOverMplsOneLabel = 28, /* NSH Over MPLS with one label Packet 21027 type */ 21028 bcmFieldPktTypeNshOverMplsTwoLabel = 29, /* NSH Over MPLS with two label Packet 21029 type */ 21030 bcmFieldPktTypeIp4Not = 30, /* Non-IPv4 Packet type */ 21031 bcmFieldPktTypeIp4Any = 31, /* Any IPv4 Packet Type */ 21032 bcmFieldPktTypeIp4Nsh = 32, /* NSH Over IPv4 Packet Type */ 21033 bcmFieldPktTypeIp4GpeNsh = 33, /* GPE-NSH Over IPv4 Packet Type */ 21034 bcmFieldPktTypeIp4Gre = 34, /* GRE over IPv4 Packet Type */ 21035 bcmFieldPktTypeIp4Bfd = 35, /* BFD Over IPv4 Packet Type */ 21036 bcmFieldPktTypeIp4Vxlan = 36, /* VXLAN Over IPv4 Packet Type */ 21037 bcmFieldPktTypeIp4Gpe = 37, /* GPE Over IPv4 Packet Type */ 21038 bcmFieldPktTypeIp4GeneveNsh = 38, /* GENEVE-NSH Over IPv4 Packet Type */ 21039 bcmFieldPktTypeIp41588Udp = 39, /* 1588 UDP Packet over IPv4 */ 21040 bcmFieldPktTypeIp4VxlanFlex = 40, /* VXLAN-Flex Over IPv4 Packet */ 21041 bcmFieldPktTypeIp4IPinIP = 41, /* IPv4 IP-in-IP Packet */ 21042 bcmFieldPktTypeIp4IPinGre = 42, /* IP GRE Ipv4 Packet */ 21043 bcmFieldPktTypeIp4Nvgre = 43, /* NVGRE IPv4 Packet */ 21044 bcmFieldPktTypeIp4Geneve = 44, /* IPv4-GENEVE Packet */ 21045 bcmFieldPktTypeIp4Gue = 45, /* IPv4-GUE Packet */ 21046 bcmFieldPktTypeIp4Tcp = 46, /* IPv4-TCP Packet */ 21047 bcmFieldPktTypeIp4Udp = 47, /* IPv4-UDF Packet */ 21048 bcmFieldPktTypeIp4Icmp = 48, /* IPv4-ICMP Packet */ 21049 bcmFieldPktTypeIp4Igmp = 49, /* IPv4-IGMP Packet */ 21050 bcmFieldPktTypeIp4IpWithExtra4Bytes = 50, /* IPv4 with Extra four bytes Packet */ 21051 bcmFieldPktTypeIp4Sctp = 51, /* IPv4 SCTP Packet */ 21052 bcmFieldPktTypeIp4MplsInIpAny = 52, /* Any MPLS in IPv4 Packet */ 21053 bcmFieldPktTypeIp4MplsInIpWithOneLabel = 53, /* MPLS with one label in IPv4 Packet */ 21054 bcmFieldPktTypeIp4MplsInIpWithTwoLabel = 54, /* MPLS with two label in IPv4 Packet */ 21055 bcmFieldPktTypeIp4MplsInIpWithThreeLabel = 55, /* MPLS with three label in IPv4 Packet */ 21056 bcmFieldPktTypeIp4MplsInIpWithFourLabel = 56, /* MPLS with four label in IPv4 Packet */ 21057 bcmFieldPktTypeIp4MplsInIpWithAnyCw = 57, /* Any MPLS with CW label in IPv4 Packet */ 21058 bcmFieldPktTypeIp4MplsInIpWithOneLabelAndCw = 58, /* MPLS with one label CW in IPv4 Packet */ 21059 bcmFieldPktTypeIp4MplsInIpWithTwoLabelAndCw = 59, /* MPLS with two label CW in IPv4 Packet */ 21060 bcmFieldPktTypeIp4MplsInIpWithThreeLabelAndCw = 60, /* MPLS with three label CW in IPv4 21061 Packet */ 21062 bcmFieldPktTypeIp4MplsInIpWithFourLabelAndCw = 61, /* MPLS with four label CW in IPv4 21063 Packet */ 21064 bcmFieldPktTypeIp6Not = 62, /* Non-IPv6 Packet */ 21065 bcmFieldPktTypeIp6Any = 63, /* Any IPv6 Packet */ 21066 bcmFieldPktTypeIp6Nsh = 64, /* NSH Over IPv6 Packet */ 21067 bcmFieldPktTypeIp6GpeNsh = 65, /* GPE-NSH Over IPv6 Packet */ 21068 bcmFieldPktTypeIp6Gre = 66, /* GRE Over IPv6 Packet */ 21069 bcmFieldPktTypeIp6Bfd = 67, /* BFD Over IPv6 Packet */ 21070 bcmFieldPktTypeIp6Vxlan = 68, /* VXLAN Over IPv6 Packet */ 21071 bcmFieldPktTypeIp6Gpe = 69, /* GPE Over IPv6 Packet */ 21072 bcmFieldPktTypeIp6GeneveNsh = 70, /* GENEVE-NSH Over IPv6 Packet */ 21073 bcmFieldPktTypeIp61588Udp = 71, /* 1588 UDF Packet over IPv6 */ 21074 bcmFieldPktTypeIp6VxlanFlex = 72, /* VXLAN-Flex Over IPv6 Packet */ 21075 bcmFieldPktTypeIp6IPinIP = 73, /* IPv6 IP-IN-IP Packet */ 21076 bcmFieldPktTypeIp6IPinGre = 74, /* IPv6 IP in GRE */ 21077 bcmFieldPktTypeIp6Nvgre = 75, /* IPv6 NVGRE Packet */ 21078 bcmFieldPktTypeIp6Geneve = 76, /* IPv6 GENEVE Packet */ 21079 bcmFieldPktTypeIp6Gue = 77, /* IPv6 GUE Packet */ 21080 bcmFieldPktTypeIp6Tcp = 78, /* IPv6 TCP Packet */ 21081 bcmFieldPktTypeIp6Udp = 79, /* IPv6 UDF Packet */ 21082 bcmFieldPktTypeIp6Icmp = 80, /* IPv6 ICMP Packet */ 21083 bcmFieldPktTypeIp6Igmp = 81, /* IPv6 IGMP Packet */ 21084 bcmFieldPktTypeIp6IpWithExtra4Bytes = 82, /* IPv6 with Extra four Bytes Packet */ 21085 bcmFieldPktTypeIp6Sctp = 83, /* IPv6 SCTP Packet */ 21086 bcmFieldPktTypeIp6MplsInIpAny = 84, /* Any MPLS in IPv6 Packet */ 21087 bcmFieldPktTypeIp6MplsInIpWithOneLabel = 85, /* MPLS with one label in IPv6 Packet */ 21088 bcmFieldPktTypeIp6MplsInIpWithTwoLabel = 86, /* MPLS with two labels in IPv6 Packet */ 21089 bcmFieldPktTypeIp6MplsInIpWithThreeLabel = 87, /* MPLS with three labels in IPv6 Packet */ 21090 bcmFieldPktTypeIp6MplsInIpWithFourLabel = 88, /* MPLS with four labels in IPv6 Packet */ 21091 bcmFieldPktTypeIp6MplsInIpWithAnyCw = 89, /* Any MPLS with CW Label in IPv6 Packet */ 21092 bcmFieldPktTypeIp6MplsInIpWithOneLabelAndCw = 90, /* MPLS with one label CW in IPv6 Packet */ 21093 bcmFieldPktTypeIp6MplsInIpWithTwoLabelAndCw = 91, /* MPLS with two label CW in IPv6 Packet */ 21094 bcmFieldPktTypeIp6MplsInIpWithThreeLabelAndCw = 92, /* MPLS with three label CW in IPv6 21095 Packet */ 21096 bcmFieldPktTypeIp6MplsInIpWithFourLabelAndCw = 93, /* MPLS with four labels in IPv6 Packet */ 21097 bcmFieldPktTypeNshOverMplsThreeLabel = 94, /* NSH Over MPLS with three labels 21098 Packet */ 21099 bcmFieldPktTypeIpv4UdpINT = 95, /* INT (Inband-Telemetry) packet type 21100 over IPv4-UDP. */ 21101 bcmFieldPktTypeIpv6UdpINT = 96, /* INT (Inband-Telemetry) packet type 21102 over IPv6-UDP. */ 21103 bcmFieldPktTypeUdpINT = 97, /* INT (Inband-Telemtry) Packet over any 21104 IP-UDP packet */ 21105 bcmFieldPktTypeIpv4IOAM = 98, /* IPv4 IOAM (Inband-OAM) Packet */ 21106 bcmFieldPktTypeIpv6IOAM = 99, /* IPv6 IOAM (Inband-OAM) Packet */ 21107 bcmFieldPktTypeIOAM = 100, /* IOAM (Inband-OAM) Packet over any IP 21108 Packet */ 21109 bcmFieldPktTypeIpv4TcpINT = 101, /* INT (Inband-Telemetry) packet type 21110 over IPv4-TCP. */ 21111 bcmFieldPktTypeIpv6TcpINT = 102, /* INT (Inband-Telemetry) packet type 21112 over IPv6-TCP. */ 21113 bcmFieldPktTypeTcpINT = 103, /* INT (Inband-Telemtry) Packet over 21114 IP-TCP packet */ 21115 bcmFieldPktTypeLastCount = 104 /* Not in use - Last Count */ 21116 } bcm_field_pkt_type_t; 21117 21118 #define BCM_FIELD_PKT_TYPE \ 21119 { \ 21120 "MplsNot", \ 21121 "MplsAny", \ 21122 "MplsOneLabel", \ 21123 "MplsTwoLabel", \ 21124 "MplsThreeLabel", \ 21125 "MplsFourLabel", \ 21126 "MplsFiveLabel", \ 21127 "MplsSixLabel", \ 21128 "MplsSevenLabel", \ 21129 "MplsMoreThanSevenLabel", \ 21130 "FCoENot", \ 21131 "FCoEAny", \ 21132 "FCoEVft", \ 21133 "FCoEEncap", \ 21134 "FCoEIfr", \ 21135 "FCoEStd", \ 21136 "FCoEVftStd", \ 21137 "FCoEEncapStd", \ 21138 "FCoEIfrStd", \ 21139 "FCoEFip", \ 21140 "1588", \ 21141 "Arp", \ 21142 "Rarp", \ 21143 "UnknownEtherType", \ 21144 "Mim", \ 21145 "Oam", \ 21146 "Cnm", \ 21147 "NshOverL2", \ 21148 "NshOverMplsOneLabel", \ 21149 "NshOverMplsTwoLabel", \ 21150 "Ip4Not", \ 21151 "Ip4Any", \ 21152 "Ip4Nsh", \ 21153 "Ip4GpeNsh", \ 21154 "Ip4Gre", \ 21155 "Ip4Bfd", \ 21156 "Ip4Vxlan", \ 21157 "Ip4Gpe", \ 21158 "Ip4GeneveNsh", \ 21159 "Ip41588Udp", \ 21160 "Ip4VxlanFlex", \ 21161 "Ip4IPinIP", \ 21162 "Ip4IPinGre", \ 21163 "Ip4Nvgre", \ 21164 "Ip4Geneve", \ 21165 "Ip4Gue", \ 21166 "Ip4Tcp", \ 21167 "Ip4Udp", \ 21168 "Ip4Icmp", \ 21169 "Ip4Igmp", \ 21170 "Ip4IpWithExtra4Bytes", \ 21171 "Ip4Sctp", \ 21172 "Ip4MplsInIpAny", \ 21173 "Ip4MplsInIpWithOneLabel", \ 21174 "Ip4MplsInIpWithTwoLabel", \ 21175 "Ip4MplsInIpWithThreeLabel", \ 21176 "Ip4MplsInIpWithFourLabel", \ 21177 "Ip4MplsInIpWithAnyCw", \ 21178 "Ip4MplsInIpWithOneLabelAndCw", \ 21179 "Ip4MplsInIpWithTwoLabelAndCw", \ 21180 "Ip4MplsInIpWithThreeLabelAndCw", \ 21181 "Ip4MplsInIpWithFourLabelAndCw", \ 21182 "Ip6Not", \ 21183 "Ip6Any", \ 21184 "Ip6Nsh", \ 21185 "Ip6GpeNsh", \ 21186 "Ip6Gre", \ 21187 "Ip6Bfd", \ 21188 "Ip6Vxlan", \ 21189 "Ip6Gpe", \ 21190 "Ip6GeneveNsh", \ 21191 "Ip61588Udp", \ 21192 "Ip6VxlanFlex", \ 21193 "Ip6IPinIP", \ 21194 "Ip6IPinGre", \ 21195 "Ip6Nvgre", \ 21196 "Ip6Geneve", \ 21197 "Ip6Gue", \ 21198 "Ip6Tcp", \ 21199 "Ip6Udp", \ 21200 "Ip6Icmp", \ 21201 "Ip6Igmp", \ 21202 "Ip6IpWithExtra4Bytes", \ 21203 "Ip6Sctp", \ 21204 "Ip6MplsInIpAny", \ 21205 "Ip6MplsInIpWithOneLabel", \ 21206 "Ip6MplsInIpWithTwoLabel", \ 21207 "Ip6MplsInIpWithThreeLabel", \ 21208 "Ip6MplsInIpWithFourLabel", \ 21209 "Ip6MplsInIpWithAnyCw", \ 21210 "Ip6MplsInIpWithOneLabelAndCw", \ 21211 "Ip6MplsInIpWithTwoLabelAndCw", \ 21212 "Ip6MplsInIpWithThreeLabelAndCw", \ 21213 "Ip6MplsInIpWithFourLabelAndCw", \ 21214 "NshOverMplsThreeLabel", \ 21215 "Ipv4UdpINT", \ 21216 "Ipv6UdpINT", \ 21217 "UdpINT", \ 21218 "Ipv4IOAM", \ 21219 "Ipv6IOAM", \ 21220 "IOAM", \ 21221 "Ipv4TcpINT", \ 21222 "Ipv6TcpINT", \ 21223 "TcpINT" \ 21224 } 21225 21226 #ifndef BCM_HIDE_DISPATCHABLE 21227 21228 /* Add Packet type field qualification to a field entry. */ 21229 extern int bcm_field_qualify_PktType( 21230 int unit, 21231 bcm_field_entry_t entry, 21232 bcm_field_pkt_type_t type); 21233 21234 /* Get Packet type field qualification from a field entry. */ 21235 extern int bcm_field_qualify_PktType_get( 21236 int unit, 21237 bcm_field_entry_t entry, 21238 bcm_field_pkt_type_t *type); 21239 21240 /* 21241 * Add MPLS Control word present status field qualification to a field 21242 * entry. 21243 */ 21244 extern int bcm_field_qualify_MplsCwPresent( 21245 int unit, 21246 bcm_field_entry_t entry, 21247 uint8 data, 21248 uint8 mask); 21249 21250 /* 21251 * Get MPLS Control word present status field qualification from a field 21252 * entry. 21253 */ 21254 extern int bcm_field_qualify_MplsCwPresent_get( 21255 int unit, 21256 bcm_field_entry_t entry, 21257 uint8 *data, 21258 uint8 *mask); 21259 21260 /* 21261 * Add MPLS Multicast ethertype present status field qualification to a 21262 * field entry. 21263 */ 21264 extern int bcm_field_qualify_MplsMcastEthertypePresent( 21265 int unit, 21266 bcm_field_entry_t entry, 21267 uint8 data, 21268 uint8 mask); 21269 21270 /* 21271 * Get MPLS Multicast ethertype present status field qualification from a 21272 * field entry. 21273 */ 21274 extern int bcm_field_qualify_MplsMcastEthertypePresent_get( 21275 int unit, 21276 bcm_field_entry_t entry, 21277 uint8 *data, 21278 uint8 *mask); 21279 21280 #endif /* BCM_HIDE_DISPATCHABLE */ 21281 21282 /* bcm_field_ip_option_hdr_type_e */ 21283 typedef enum bcm_field_ip_option_hdr_type_e { 21284 bcmFieldIpOptionHdrTypeAH = 0, /* Authentication Header type */ 21285 bcmFieldIpOptionHdrTypeESP = 1, /* Encapsulating Security Payload type */ 21286 bcmFieldIpOptionHdrTypeWESP = 2, /* Wrapped ESP for traffic visibility 21287 type */ 21288 bcmFieldIpOptionHdrTypeAHESP = 3, /* Authentication Header and 21289 Encapsulating Security Payload type */ 21290 bcmFieldIpOptionHdrTypeAHWESP = 4, /* Authentication Header and Wrapped ESP 21291 type */ 21292 bcmFieldIpOptionHdrTypeGeneric = 5, /* Generic type */ 21293 bcmFieldIpOptionHdrTypeFrag = 6, /* Fragment type */ 21294 bcmFieldIpOptionHdrTypeGenericGeneric = 7, /* Generic over Generic type */ 21295 bcmFieldIpOptionHdrTypeGenericFrag = 8, /* Generic and Fragment type */ 21296 bcmFieldIpOptionHdrTypeGenericAH = 9, /* Generic and AH type */ 21297 bcmFieldIpOptionHdrTypeGenericESP = 10, /* Generic and ESP type */ 21298 bcmFieldIpOptionHdrTypeGenericWESP = 11, /* Generic and WESP type */ 21299 bcmFieldIpOptionHdrTypeFragAH = 12, /* Fragment and AH type */ 21300 bcmFieldIpOptionHdrTypeFragESP = 13, /* Fragment and ESP type */ 21301 bcmFieldIpOptionHdrTypeFragWESP = 14, /* Fragment and WESP type */ 21302 bcmFieldIpOptionHdrTypeLastCount = 15 /* Last count */ 21303 } bcm_field_ip_option_hdr_type_t; 21304 21305 #define BCM_FIELD_IP_OPTION_HDR_TYPE \ 21306 { \ 21307 "AH", \ 21308 "ESP", \ 21309 "WESP", \ 21310 "AHESP", \ 21311 "AHWESP", \ 21312 "Generic", \ 21313 "Frag", \ 21314 "GenericGeneric", \ 21315 "GenericFrag", \ 21316 "GenericAH", \ 21317 "GenericESP", \ 21318 "GenericWESP", \ 21319 "FragAH", \ 21320 "FragESP", \ 21321 "FragWESP" \ 21322 } 21323 21324 #ifndef BCM_HIDE_DISPATCHABLE 21325 21326 /* Add IPv4 option header type field qualification to a field entry. */ 21327 extern int bcm_field_qualify_Ipv4OptionHdrType( 21328 int unit, 21329 bcm_field_entry_t entry, 21330 bcm_field_ip_option_hdr_type_t type); 21331 21332 /* Get IPv4 option header type field qualification from a field entry. */ 21333 extern int bcm_field_qualify_Ipv4OptionHdrType_get( 21334 int unit, 21335 bcm_field_entry_t entry, 21336 bcm_field_ip_option_hdr_type_t *type); 21337 21338 /* Add IPv6 Extension header type field qualification to a field entry. */ 21339 extern int bcm_field_qualify_Ipv6ExtensionHdrType( 21340 int unit, 21341 bcm_field_entry_t entry, 21342 bcm_field_ip_option_hdr_type_t type); 21343 21344 /* Get IPv6 Extension header type field qualification from a field entry. */ 21345 extern int bcm_field_qualify_Ipv6ExtensionHdrType_get( 21346 int unit, 21347 bcm_field_entry_t entry, 21348 bcm_field_ip_option_hdr_type_t *type); 21349 21350 /* Overlay Vlan Tag Format */ 21351 extern int bcm_field_qualify_OverlayVlanFormat( 21352 int unit, 21353 bcm_field_entry_t entry, 21354 uint8 data, 21355 uint8 mask); 21356 21357 /* 21358 * Get match criteria for bcmFieldQualifyOverlayVlanFormat 21359 * qualifier from the field entry. 21360 */ 21361 extern int bcm_field_qualify_OverlayVlanFormat_get( 21362 int unit, 21363 bcm_field_entry_t entry, 21364 uint8 *data, 21365 uint8 *mask); 21366 21367 /* Add Overlay L2 Packet type field qualification to a field entry. */ 21368 extern int bcm_field_qualify_OverlayL2PktType( 21369 int unit, 21370 bcm_field_entry_t entry, 21371 bcm_field_l2_pkt_type_t type); 21372 21373 /* Get Overlay L2 Packet type field qualification from a field entry. */ 21374 extern int bcm_field_qualify_OverlayL2PktType_get( 21375 int unit, 21376 bcm_field_entry_t entry, 21377 bcm_field_l2_pkt_type_t *type); 21378 21379 /* Add Overlay Packet type field qualification to a field entry. */ 21380 extern int bcm_field_qualify_OverlayPktType( 21381 int unit, 21382 bcm_field_entry_t entry, 21383 bcm_field_pkt_type_t type); 21384 21385 /* Get Overlay Packet type field qualification from a field entry. */ 21386 extern int bcm_field_qualify_OverlayPktType_get( 21387 int unit, 21388 bcm_field_entry_t entry, 21389 bcm_field_pkt_type_t *type); 21390 21391 /* 21392 * Add Overlay IPv4 option header type field qualification to a field 21393 * entry. 21394 */ 21395 extern int bcm_field_qualify_OverlayIpv4OptionHdrType( 21396 int unit, 21397 bcm_field_entry_t entry, 21398 bcm_field_ip_option_hdr_type_t type); 21399 21400 /* 21401 * Get Overlay IPv4 option header type field qualification from a field 21402 * entry. 21403 */ 21404 extern int bcm_field_qualify_OverlayIpv4OptionHdrType_get( 21405 int unit, 21406 bcm_field_entry_t entry, 21407 bcm_field_ip_option_hdr_type_t *type); 21408 21409 /* 21410 * Add Overlay IPv6 Extension header type field qualification to a field 21411 * entry. 21412 */ 21413 extern int bcm_field_qualify_OverlayIpv6ExtensionHdrType( 21414 int unit, 21415 bcm_field_entry_t entry, 21416 bcm_field_ip_option_hdr_type_t type); 21417 21418 /* 21419 * Get Overlay IPv6 Extension header type field qualification from a 21420 * field entry. 21421 */ 21422 extern int bcm_field_qualify_OverlayIpv6ExtensionHdrType_get( 21423 int unit, 21424 bcm_field_entry_t entry, 21425 bcm_field_ip_option_hdr_type_t *type); 21426 21427 /* Add Front panel packet field qualification to a field entry. */ 21428 extern int bcm_field_qualify_FrontPanelPkt( 21429 int unit, 21430 bcm_field_entry_t entry, 21431 uint8 data, 21432 uint8 mask); 21433 21434 /* Get Front Panel packet field qualification from a field entry. */ 21435 extern int bcm_field_qualify_FrontPanelPkt_get( 21436 int unit, 21437 bcm_field_entry_t entry, 21438 uint8 *data, 21439 uint8 *mask); 21440 21441 #endif /* BCM_HIDE_DISPATCHABLE */ 21442 21443 /* bcm_field_higig_proxy_tunnel_type_e */ 21444 typedef enum bcm_field_higig_proxy_tunnel_type_e { 21445 bcmFieldHiGigProxyTunnelTypeAny = 0, /* HiGig Proxy Tunnel Any. */ 21446 bcmFieldHiGigProxyTunnelTypeVxlan = 1, /* HiGig Proxy on VXLAN tunnel. */ 21447 bcmFieldHiGigProxyTunnelTypeL2Gre = 2, /* HiGig Proxy on L2GRE tunnel. */ 21448 bcmFieldHiGigProxyTunnelTypeMim = 3, /* HiGig Proxy on MIM tunnel. */ 21449 bcmFieldHiGigProxyTunnelTypeLastCount = 4 /* Always Last. Not a usable value. */ 21450 } bcm_field_higig_proxy_tunnel_type_t; 21451 21452 #define BCM_FIELD_HIGIG_PROXY_TUNNEL_TYPE \ 21453 { \ 21454 "Any", \ 21455 "Vxlan", \ 21456 "L2Gre", \ 21457 "Mim" \ 21458 } 21459 21460 #ifndef BCM_HIDE_DISPATCHABLE 21461 21462 /* Add HiGig Proxy tunnel type field qualification to a field entry. */ 21463 extern int bcm_field_qualify_HiGigProxyTunnelType( 21464 int unit, 21465 bcm_field_entry_t entry, 21466 bcm_field_higig_proxy_tunnel_type_t type); 21467 21468 /* Get HiGig Proxy tunnel type field qualification from a field entry. */ 21469 extern int bcm_field_qualify_HiGigProxyTunnelType_get( 21470 int unit, 21471 bcm_field_entry_t entry, 21472 bcm_field_higig_proxy_tunnel_type_t *type); 21473 21474 /* Add to match on IPMC Ipv4 packet qualification to a field entry. */ 21475 extern int bcm_field_qualify_IpmcV4Pkt( 21476 int unit, 21477 bcm_field_entry_t entry, 21478 uint8 data, 21479 uint8 mask); 21480 21481 /* Get to match on IPMC Ipv4 packet qualification from a field entry. */ 21482 extern int bcm_field_qualify_IpmcV4Pkt_get( 21483 int unit, 21484 bcm_field_entry_t entry, 21485 uint8 *data, 21486 uint8 *mask); 21487 21488 /* Add to match on IPMC Ipv6 packet qualification to a field entry. */ 21489 extern int bcm_field_qualify_IpmcV6Pkt( 21490 int unit, 21491 bcm_field_entry_t entry, 21492 uint8 data, 21493 uint8 mask); 21494 21495 /* Get to match on IPMC Ipv6 packet qualification from a field entry. */ 21496 extern int bcm_field_qualify_IpmcV6Pkt_get( 21497 int unit, 21498 bcm_field_entry_t entry, 21499 uint8 *data, 21500 uint8 *mask); 21501 21502 /* 21503 * Add to match on Network tag (VnTag or Etag) multicast packet 21504 * qualification to a field entry. 21505 */ 21506 extern int bcm_field_qualify_NetworkTagMulticastPkt( 21507 int unit, 21508 bcm_field_entry_t entry, 21509 uint8 data, 21510 uint8 mask); 21511 21512 /* 21513 * Get to match on Network tag (VnTag or Etag) multicast packet 21514 * qualification from a field entry. 21515 */ 21516 extern int bcm_field_qualify_NetworkTagMulticastPkt_get( 21517 int unit, 21518 bcm_field_entry_t entry, 21519 uint8 *data, 21520 uint8 *mask); 21521 21522 /* 21523 * Add to match on IP packet with zero TTL qualification to a field 21524 * entry. 21525 */ 21526 extern int bcm_field_qualify_IpTtlZeroPkt( 21527 int unit, 21528 bcm_field_entry_t entry, 21529 uint8 data, 21530 uint8 mask); 21531 21532 /* 21533 * Get to match on IP packet with TTL zero qualification from a field 21534 * entry. 21535 */ 21536 extern int bcm_field_qualify_IpTtlZeroPkt_get( 21537 int unit, 21538 bcm_field_entry_t entry, 21539 uint8 *data, 21540 uint8 *mask); 21541 21542 /* Add to match on IP fragment packet qualification to a field entry. */ 21543 extern int bcm_field_qualify_IpFragPkt( 21544 int unit, 21545 bcm_field_entry_t entry, 21546 uint8 data, 21547 uint8 mask); 21548 21549 /* Get to match on IP Fragment packet qualification from a field entry. */ 21550 extern int bcm_field_qualify_IpFragPkt_get( 21551 int unit, 21552 bcm_field_entry_t entry, 21553 uint8 *data, 21554 uint8 *mask); 21555 21556 /* 21557 * Add to match on outer priority tagged packet qualification to a field 21558 * entry. 21559 */ 21560 extern int bcm_field_qualify_OuterPriTaggedPkt( 21561 int unit, 21562 bcm_field_entry_t entry, 21563 uint8 data, 21564 uint8 mask); 21565 21566 /* 21567 * Get to match on outer priority tagged packet qualification from a 21568 * field entry. 21569 */ 21570 extern int bcm_field_qualify_OuterPriTaggedPkt_get( 21571 int unit, 21572 bcm_field_entry_t entry, 21573 uint8 *data, 21574 uint8 *mask); 21575 21576 /* 21577 * Add to match on IP in IP packet with zero TTL qualification to a field 21578 * entry. 21579 */ 21580 extern int bcm_field_qualify_IpInIpPkt( 21581 int unit, 21582 bcm_field_entry_t entry, 21583 uint8 data, 21584 uint8 mask); 21585 21586 /* Get to match on IP in IP packet qualification from a field entry. */ 21587 extern int bcm_field_qualify_IpInIpPkt_get( 21588 int unit, 21589 bcm_field_entry_t entry, 21590 uint8 *data, 21591 uint8 *mask); 21592 21593 /* 21594 * Add to match on IP packet with checksum OK qualification to a field 21595 * entry. 21596 */ 21597 extern int bcm_field_qualify_IpChecksumOkPkt( 21598 int unit, 21599 bcm_field_entry_t entry, 21600 uint8 data, 21601 uint8 mask); 21602 21603 /* 21604 * Get to match on IP packet with checksum OK qualification from a field 21605 * entry. 21606 */ 21607 extern int bcm_field_qualify_IpChecksumOkPkt_get( 21608 int unit, 21609 bcm_field_entry_t entry, 21610 uint8 *data, 21611 uint8 *mask); 21612 21613 /* 21614 * Add to match on PIM Bidirectional designated forwarding bit of the 21615 * incoming packet qualification to a field entry. 21616 */ 21617 extern int bcm_field_qualify_PimBidirDfStatus( 21618 int unit, 21619 bcm_field_entry_t entry, 21620 uint8 data, 21621 uint8 mask); 21622 21623 /* 21624 * Get to match on PIM Bidrectional designated forwarding bit of the 21625 * incoming packet qualification from a field entry. 21626 */ 21627 extern int bcm_field_qualify_PimBidirDfStatus_get( 21628 int unit, 21629 bcm_field_entry_t entry, 21630 uint8 *data, 21631 uint8 *mask); 21632 21633 #endif /* BCM_HIDE_DISPATCHABLE */ 21634 21635 /* bcm_field_interface_class_l2_type_e */ 21636 typedef enum bcm_field_interface_class_l2_type_e { 21637 bcmFieldInterfaceClassL2TypeVlan = 0, /* Class ID is from VLAN. */ 21638 bcmFieldInterfaceClassL2TypeVfi = 1, /* Class ID is from VFI. */ 21639 bcmFieldInterfaceClassL2TypeLastCount = 2 /* Always Last. Not a usable value. */ 21640 } bcm_field_interface_class_l2_type_t; 21641 21642 #define BCM_FIELD_INTERFACE_CLASS_L2_TYPE \ 21643 { \ 21644 "Vlan", \ 21645 "Vfi" \ 21646 } 21647 21648 #ifndef BCM_HIDE_DISPATCHABLE 21649 21650 /* Add Interface Class L2 type field qualification to a field entry. */ 21651 extern int bcm_field_qualify_InterfaceClassL2Type( 21652 int unit, 21653 bcm_field_entry_t entry, 21654 bcm_field_interface_class_l2_type_t type); 21655 21656 /* Get Interface Class L2 type field qualification from a field entry. */ 21657 extern int bcm_field_qualify_InterfaceClassL2Type_get( 21658 int unit, 21659 bcm_field_entry_t entry, 21660 bcm_field_interface_class_l2_type_t *type); 21661 21662 /* 21663 * Add to match on INT (Inband-Telemetry) header version packet 21664 * qualification to a field entry. 21665 */ 21666 extern int bcm_field_qualify_IntPktVersionOne( 21667 int unit, 21668 bcm_field_entry_t entry, 21669 uint8 data, 21670 uint8 mask); 21671 21672 /* 21673 * Get to match on INT (Inband-Telemetry) header version one packet 21674 * qualification from a field entry. 21675 */ 21676 extern int bcm_field_qualify_IntPktVersionOne_get( 21677 int unit, 21678 bcm_field_entry_t entry, 21679 uint8 *data, 21680 uint8 *mask); 21681 21682 /* 21683 * Add to match on INT (Inband-Telemetry) header Overflow Bit packet 21684 * qualification to a field entry. 21685 */ 21686 extern int bcm_field_qualify_IntPktOverflowed( 21687 int unit, 21688 bcm_field_entry_t entry, 21689 uint8 data, 21690 uint8 mask); 21691 21692 /* 21693 * Get to match on INT (Inband-Telemetry) header Overflow Bit packet 21694 * qualification from a field entry. 21695 */ 21696 extern int bcm_field_qualify_IntPktOverflowed_get( 21697 int unit, 21698 bcm_field_entry_t entry, 21699 uint8 *data, 21700 uint8 *mask); 21701 21702 /* 21703 * Add to match on INT (Inband-Telemetry) Valid Length Check packet 21704 * qualification to a field entry. 21705 */ 21706 extern int bcm_field_qualify_IntPktLengthValid( 21707 int unit, 21708 bcm_field_entry_t entry, 21709 uint8 data, 21710 uint8 mask); 21711 21712 /* 21713 * Get to match on INT (Inband-Telemetry) Valid Length Check packet 21714 * qualification from a field entry. 21715 */ 21716 extern int bcm_field_qualify_IntPktLengthValid_get( 21717 int unit, 21718 bcm_field_entry_t entry, 21719 uint8 *data, 21720 uint8 *mask); 21721 21722 #endif /* BCM_HIDE_DISPATCHABLE */ 21723 21724 /* bcm_field_int_pkt_type_e */ 21725 typedef enum bcm_field_int_pkt_type_e { 21726 bcmFieldIntPktTypeProbeReply = 0, /* INT Probe Reply. */ 21727 bcmFieldIntPktTypeProbeRequest = 1, /* INT Probe Request. */ 21728 bcmFieldIntPktTypeLastCount = 2 /* Always Last. Not a usable value. */ 21729 } bcm_field_int_pkt_type_t; 21730 21731 #define BCM_FIELD_INT_PKT_TYPE \ 21732 { \ 21733 "ProbeReply", \ 21734 "ProbeRequest" \ 21735 } 21736 21737 #ifndef BCM_HIDE_DISPATCHABLE 21738 21739 /* 21740 * Add INT (Inband-Telemetry) Packet type field qualification to a field 21741 * entry. 21742 */ 21743 extern int bcm_field_qualify_IntPktType( 21744 int unit, 21745 bcm_field_entry_t entry, 21746 bcm_field_int_pkt_type_t type); 21747 21748 /* 21749 * Get INT (Inband-Telemetry) Packet type field qualification from a 21750 * field entry. 21751 */ 21752 extern int bcm_field_qualify_IntPktType_get( 21753 int unit, 21754 bcm_field_entry_t entry, 21755 bcm_field_int_pkt_type_t *type); 21756 21757 /* 21758 * Add to match on INT (Inband-Telemetry) Maximum Hop Limit Check packet 21759 * qualification to a field entry. 21760 */ 21761 extern int bcm_field_qualify_IntPktFinalHop( 21762 int unit, 21763 bcm_field_entry_t entry, 21764 uint8 data, 21765 uint8 mask); 21766 21767 /* 21768 * Get to match on INT (Inband-Telemetry) Max Hop Limit Check packet 21769 * qualification from a field entry. 21770 */ 21771 extern int bcm_field_qualify_IntPktFinalHop_get( 21772 int unit, 21773 bcm_field_entry_t entry, 21774 uint8 *data, 21775 uint8 *mask); 21776 21777 #endif /* BCM_HIDE_DISPATCHABLE */ 21778 21779 /* Field Qualifier TunnelSubType (for bcm_field_qualify_TunnelSubType). */ 21780 typedef enum bcm_field_TunnelSubType_e { 21781 bcmFieldTunnelSubTypeNshOverGpeWithL3Pyld = 0, /* NSH with L3 Payload Tunnel in GPE. */ 21782 bcmFieldTunnelSubTypeNshOverL2WithL3Pyld = 1, /* NSH with L3 Payload Tunnel in L2 */ 21783 bcmFieldTunnelSubTypeNshOverMplsWithL3Pyld = 2, /* NSH with L3 Payload Tunnel in MPLS */ 21784 bcmFieldTunnelSubTypeCount = 3 /* Always Last. Not a usable value. */ 21785 } bcm_field_TunnelSubType_t; 21786 21787 #define BCM_FIELD_TUNNELSUBTYPE_STRINGS \ 21788 { \ 21789 "NshOverGpeWithL3Pyld", \ 21790 "NshOverL2WithL3Pyld", \ 21791 "NshOverMplsWithL3Pyld" \ 21792 } 21793 21794 #ifndef BCM_HIDE_DISPATCHABLE 21795 21796 /* Add tunnel sub-type field qualification to a field entry. */ 21797 extern int bcm_field_qualify_TunnelSubType( 21798 int unit, 21799 bcm_field_entry_t entry, 21800 bcm_field_TunnelSubType_t type); 21801 21802 /* Get tunnel sub-type field qualification from a field entry. */ 21803 extern int bcm_field_qualify_TunnelSubType_get( 21804 int unit, 21805 bcm_field_entry_t entry, 21806 bcm_field_TunnelSubType_t *type); 21807 21808 #endif /* BCM_HIDE_DISPATCHABLE */ 21809 21810 /* PMF pass. */ 21811 typedef enum bcm_field_pmf_pass_e { 21812 bcmFieldPmfPass0 = 0, /* Pass-0 */ 21813 bcmFieldPmfPass1 = 1, /* Pass-1 */ 21814 bcmFieldPmfPassCount = 2 /* nof pass. */ 21815 } bcm_field_pmf_pass_t; 21816 21817 /* 21818 * Indicates the maximum number of context selection qualfiers which can 21819 * be defined per single preselection entry 21820 */ 21821 #define BCM_FIELD_MAX_NOF_CS_QUALIFIERS (32) 21822 21823 /* Preselector identifier structure. */ 21824 typedef struct bcm_field_presel_entry_id_s { 21825 bcm_field_presel_t presel_id; /* ID of the preselector entry. */ 21826 bcm_field_stage_t stage; /* Preselection stage */ 21827 } bcm_field_presel_entry_id_t; 21828 21829 /* Preselector qualifier data structure. */ 21830 typedef struct bcm_field_presel_qualify_data_s { 21831 bcm_field_qualify_t qual_type; /* Type of the qualifier. */ 21832 int qual_arg; /* Qualifier argument */ 21833 uint32 qual_value; /* Value of the qualifier */ 21834 uint32 qual_mask; /* Mask of the qualifier */ 21835 } bcm_field_presel_qualify_data_t; 21836 21837 /* Preselector qualifier data structure. */ 21838 typedef struct bcm_field_presel_entry_data_s { 21839 uint8 entry_valid; /* If set, the whole preselection entry 21840 is set as valid. */ 21841 bcm_field_context_t context_id; /* ID of the PMF context. */ 21842 uint32 nof_qualifiers; /* Number of used qualifiers for CS. */ 21843 bcm_field_presel_qualify_data_t qual_data[BCM_FIELD_MAX_NOF_CS_QUALIFIERS]; /* Array of data of the used qualifiers. */ 21844 } bcm_field_presel_entry_data_t; 21845 21846 #ifndef BCM_HIDE_DISPATCHABLE 21847 21848 /* Add NSH Service Path ID qualification to a field entry. */ 21849 extern int bcm_field_qualify_NshServicePathId( 21850 int unit, 21851 bcm_field_entry_t entry, 21852 uint32 data, 21853 uint32 mask); 21854 21855 /* Get NSH Service Path ID qualification for a given field entry. */ 21856 extern int bcm_field_qualify_NshServicePathId_get( 21857 int unit, 21858 bcm_field_entry_t entry, 21859 uint32 *data, 21860 uint32 *mask); 21861 21862 /* Add NSH Service Index qualification to a field entry. */ 21863 extern int bcm_field_qualify_NshServiceIndex( 21864 int unit, 21865 bcm_field_entry_t entry, 21866 uint32 data, 21867 uint32 mask); 21868 21869 /* Get NSH Service Index qualification for a given field entry. */ 21870 extern int bcm_field_qualify_NshServiceIndex_get( 21871 int unit, 21872 bcm_field_entry_t entry, 21873 uint32 *data, 21874 uint32 *mask); 21875 21876 /* 21877 * Set match criteria for FieldQualifyRoeFrameType qualifier in the field 21878 * entry. 21879 */ 21880 extern int bcm_field_qualify_RoeFrameType( 21881 int unit, 21882 bcm_field_entry_t entry, 21883 bcm_field_roe_frame_type_t data); 21884 21885 /* 21886 * Get match criteria for FieldQualifyRoeFrameType qualifier from the 21887 * field entry. 21888 */ 21889 extern int bcm_field_qualify_RoeFrameType_get( 21890 int unit, 21891 bcm_field_entry_t entry, 21892 bcm_field_roe_frame_type_t *data); 21893 21894 #endif /* BCM_HIDE_DISPATCHABLE */ 21895 21896 /* Initialize the bcm_field_presel_entry_id_t structure. */ 21897 extern void bcm_field_presel_entry_id_info_init( 21898 bcm_field_presel_entry_id_t *entry_id); 21899 21900 /* Initialize the bcm_field_presel_entry_data_t structure. */ 21901 extern void bcm_field_presel_entry_data_info_init( 21902 bcm_field_presel_entry_data_t *entry_data); 21903 21904 #ifndef BCM_HIDE_DISPATCHABLE 21905 21906 /* Set a preselector entity information. */ 21907 extern int bcm_field_presel_set( 21908 int unit, 21909 uint32 flags, 21910 bcm_field_presel_entry_id_t *entry_id, 21911 bcm_field_presel_entry_data_t *entry_data); 21912 21913 /* Get a preselector entity information. */ 21914 extern int bcm_field_presel_get( 21915 int unit, 21916 uint32 flags, 21917 bcm_field_presel_entry_id_t *entry_id, 21918 bcm_field_presel_entry_data_t *entry_data); 21919 21920 /* 21921 * API to match on BFD Good packet (Good here represents the valid TTL 21922 * range for 1-hop and M-hop). 21923 */ 21924 extern int bcm_field_qualify_BfdGoodPkt( 21925 int unit, 21926 bcm_field_entry_t entry, 21927 uint8 data, 21928 uint8 mask); 21929 21930 /* 21931 * Retrieve the match criteria fields for BfdGoodPkt qualifier associated 21932 * to a given field entry. 21933 */ 21934 extern int bcm_field_qualify_BfdGoodPkt_get( 21935 int unit, 21936 bcm_field_entry_t entry, 21937 uint8 *data, 21938 uint8 *mask); 21939 21940 /* 21941 * API to match whether the incoming BFD packet has destination loopback 21942 * IP Address. 21943 */ 21944 extern int bcm_field_qualify_BfdPktWithDstIpLoopbackAddr( 21945 int unit, 21946 bcm_field_entry_t entry, 21947 uint8 data, 21948 uint8 mask); 21949 21950 /* 21951 * Retrieve the match criteria fields for BfdPktWithDstIpLoopbackAddr 21952 * qualifier associated to a given field entry. 21953 */ 21954 extern int bcm_field_qualify_BfdPktWithDstIpLoopbackAddr_get( 21955 int unit, 21956 bcm_field_entry_t entry, 21957 uint8 *data, 21958 uint8 *mask); 21959 21960 /* 21961 * API to match on MPLS Control Packet (MPLS packet with VCCV_1/2/3/4 and 21962 * [LSP]/GAL/G-ACH). 21963 */ 21964 extern int bcm_field_qualify_MplsControlPkt( 21965 int unit, 21966 bcm_field_entry_t entry, 21967 uint8 data, 21968 uint8 mask); 21969 21970 /* 21971 * Retrieve the match criteria fields for MplsControlPkt qualifier 21972 * associated to a given field entry. 21973 */ 21974 extern int bcm_field_qualify_MplsControlPkt_get( 21975 int unit, 21976 bcm_field_entry_t entry, 21977 uint8 *data, 21978 uint8 *mask); 21979 21980 /* 21981 * Get match criteria for bcmFieldQualifyIpTunnelTtlClassZero 21982 * qualifier from the field entry. 21983 */ 21984 extern int bcm_field_qualify_IpTunnelTtlClassZero_get( 21985 int unit, 21986 bcm_field_entry_t entry, 21987 bcm_class_t *data, 21988 bcm_class_t *mask); 21989 21990 /* 21991 * Configure match criteria for bcmFieldQualifyIpTunnelTtl 21992 * qualifier from the field entry. 21993 */ 21994 extern int bcm_field_qualify_IpTunnelTtl( 21995 int unit, 21996 bcm_field_entry_t entry, 21997 uint8 data, 21998 uint8 mask); 21999 22000 /* 22001 * Get match criteria for bcmFieldQualifyIpTunnelTtl 22002 * qualifier from the field entry. 22003 */ 22004 extern int bcm_field_qualify_IpTunnelTtl_get( 22005 int unit, 22006 bcm_field_entry_t entry, 22007 uint8 *data, 22008 uint8 *mask); 22009 22010 /* To Qualify on Class identifier derived from MPLS label 1. */ 22011 extern int bcm_field_qualify_InterfaceClassMplsLookup1( 22012 int unit, 22013 bcm_field_entry_t entry, 22014 uint16 data, 22015 uint16 mask); 22016 22017 /* 22018 * To get the qualifies inputs on Class identifier derived from MPLS 22019 * label 1. 22020 */ 22021 extern int bcm_field_qualify_InterfaceClassMplsLookup1_get( 22022 int unit, 22023 bcm_field_entry_t entry, 22024 uint16 *data, 22025 uint16 *mask); 22026 22027 /* To Qualify on Class identifier derived from MPLS label 2. */ 22028 extern int bcm_field_qualify_InterfaceClassMplsLookup2( 22029 int unit, 22030 bcm_field_entry_t entry, 22031 uint16 data, 22032 uint16 mask); 22033 22034 /* 22035 * To get the qualifies inputs on Class identifier derived from MPLS 22036 * label 2. 22037 */ 22038 extern int bcm_field_qualify_InterfaceClassMplsLookup2_get( 22039 int unit, 22040 bcm_field_entry_t entry, 22041 uint16 *data, 22042 uint16 *mask); 22043 22044 /* To Qualify on Class identifier derived from MPLS label 3. */ 22045 extern int bcm_field_qualify_InterfaceClassMplsLookup3( 22046 int unit, 22047 bcm_field_entry_t entry, 22048 uint16 data, 22049 uint16 mask); 22050 22051 /* 22052 * To get the qualifies inputs on Class identifier derived from MPLS 22053 * label 3. 22054 */ 22055 extern int bcm_field_qualify_InterfaceClassMplsLookup3_get( 22056 int unit, 22057 bcm_field_entry_t entry, 22058 uint16 *data, 22059 uint16 *mask); 22060 22061 /* To Qualify on Class identifier derived from L3 Tunnel. */ 22062 extern int bcm_field_qualify_InterfaceClassL3Tunnel( 22063 int unit, 22064 bcm_field_entry_t entry, 22065 uint16 data, 22066 uint16 mask); 22067 22068 /* 22069 * To get the qualifies inputs on Class identifier derived from L3 22070 * Tunnel. 22071 */ 22072 extern int bcm_field_qualify_InterfaceClassL3Tunnel_get( 22073 int unit, 22074 bcm_field_entry_t entry, 22075 uint16 *data, 22076 uint16 *mask); 22077 22078 #endif /* BCM_HIDE_DISPATCHABLE */ 22079 22080 #define BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP (16) /* Default constant for 22081 number of qualifiers 22082 per field group. */ 22083 #define BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP (16) /* Default constant for 22084 number of actions per 22085 field group. */ 22086 #define BCM_FIELD_NUMBER_OF_TCAM_BANKS (16) /* Default constant for 22087 number of TCAM banks. */ 22088 22089 /* Field Group Types. */ 22090 typedef enum bcm_field_group_type_e { 22091 bcmFieldGroupTypeTcam = 0, /* TCAM Lookup group (Default). */ 22092 bcmFieldGroupTypeDirectTcam = 1, /* Direct group (no TCAM lookup). */ 22093 bcmFieldGroupTypeDirectMdb = 2, /* Direct group (MDB Interface). */ 22094 bcmFieldGroupTypeDirectExtraction = 3, /* Direct extraction (instead of TCAM) 22095 group. */ 22096 bcmFieldGroupTypeExactMatch = 4, /* Exact match group - partial masking 22097 is not supported. */ 22098 bcmFieldGroupTypeStateTable = 5, /* State Table group. */ 22099 bcmFieldGroupTypeExternalTcam = 6, /* External TCAM lookup group. */ 22100 bcmFieldGroupTypeConst = 7, /* Define Field Group with zero key 22101 size. */ 22102 bcmFieldGroupTypeCount = 8 /* Always last. Not a usable value. */ 22103 } bcm_field_group_type_t; 22104 22105 #define BCM_FIELD_GROUP_TYPE_STRINGS \ 22106 { \ 22107 "Tcam", \ 22108 "DirectTcam", \ 22109 "DirectMdb", \ 22110 "DirectExtraction", \ 22111 "ExactMatch", \ 22112 "StateTable", \ 22113 "ExternalTcam", \ 22114 "Const" \ 22115 } 22116 22117 /* Bank allocation modes. */ 22118 typedef enum bcm_field_tcam_bank_allocation_mode_e { 22119 bcmFieldTcamBankAllocationModeInvalid = -1, /* Invalid. */ 22120 bcmFieldTcamBankAllocationModeAuto = 0, /* Auto TCAM bank allocation mode: 22121 Starts with no banks and allocates 22122 banks on demand. */ 22123 bcmFieldTcamBankAllocationModeSelect = 1, /* Select TCAM bank allocation mode: 22124 For TCAM handlers with this type of 22125 allocation mode, user may supply an 22126 additional array at creation time for 22127 specific bank ids to be allocated for 22128 the handler. */ 22129 bcmFieldTcamBankAllocationModeCount = 2 /* Always last. Not a usable value. */ 22130 } bcm_field_tcam_bank_allocation_mode_t; 22131 22132 #define BCM_FIELD_TCAM_BANK_ALLOCATION_MODE_STRINGS \ 22133 { \ 22134 "Auto", \ 22135 "Select" \ 22136 } 22137 22138 /* 22139 * This structure holds the advanced parameters for TCAM type FG in 22140 * bcm_field_group_add() function. 22141 */ 22142 typedef struct bcm_field_group_tcam_info_s { 22143 int nof_tcam_banks; /* Number of TCAM banks to reserve for 22144 the given field group. */ 22145 int tcam_bank_ids[BCM_FIELD_NUMBER_OF_TCAM_BANKS]; /* The list of TCAM bank IDs to reserve 22146 for the field group to be created. 22147 This list is only valid for TCAM 22148 field groups. */ 22149 bcm_field_tcam_bank_allocation_mode_t bank_allocation_mode; /* Bank allocation mode, see 22150 bcm_field_tcam_bank_allocation_mode_e 22151 in field.h. */ 22152 } bcm_field_group_tcam_info_t; 22153 22154 /* Maximum length for a short name. */ 22155 #define BCM_FIELD_MAX_SHORT_NAME_LEN (20) 22156 22157 /* 22158 * This structure holds the basic parameters for bcm_field_group_add() 22159 * function. 22160 */ 22161 typedef struct bcm_field_group_info_s { 22162 bcm_field_stage_t stage; /* Field stage, for which stage the 22163 Field Group was created. */ 22164 bcm_field_group_type_t fg_type; /* Field Group type: The database may 22165 be: TCAM, Direct Table,Direct 22166 Extraction, Exact Match, Hashing, 22167 StateTable or MDB. */ 22168 int nof_quals; /* Number of valid qualifiers in the 22169 Field Group. */ 22170 bcm_field_qualify_t qual_types[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* BCM level qualifier look at 22171 bcm_field_qualify_t for more info. 22172 Number of meaningful elements on this 22173 array according to nof_quals. */ 22174 uint8 qual_is_ranged[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* If set, indicates that the 22175 corresponding qualifier is expected 22176 to accept a range of values for a 22177 single entry. */ 22178 int nof_actions; /* Number of valid actions in the action 22179 set of field group. */ 22180 bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to 22181 matching entries for this action set. */ 22182 int action_with_valid_bit[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* If set, then additional bit is added 22183 in payload to indicate weather this 22184 action is valid. */ 22185 bcm_field_group_tcam_info_t tcam_info; /* Advanced parameters for TCAM field 22186 group */ 22187 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 22188 int *ext_acl_db; /* Pointer to ext_acl_db. */ 22189 } bcm_field_group_info_t; 22190 22191 #ifndef BCM_HIDE_DISPATCHABLE 22192 22193 /* Add to match on BFD version packet qualification to a field entry. */ 22194 extern int bcm_field_qualify_BfdPktVersionOne( 22195 int unit, 22196 bcm_field_entry_t entry, 22197 uint8 data, 22198 uint8 mask); 22199 22200 /* Get BFD version one packet qualification from a field entry. */ 22201 extern int bcm_field_qualify_BfdPktVersionOne_get( 22202 int unit, 22203 bcm_field_entry_t entry, 22204 uint8 *data, 22205 uint8 *mask); 22206 22207 /* 22208 * Add to match on Inner BFD version packet qualification to a field 22209 * entry. 22210 */ 22211 extern int bcm_field_qualify_InnerBfdPktVersionOne( 22212 int unit, 22213 bcm_field_entry_t entry, 22214 uint8 data, 22215 uint8 mask); 22216 22217 /* Get Inner BFD version one packet qualification from a field entry. */ 22218 extern int bcm_field_qualify_InnerBfdPktVersionOne_get( 22219 int unit, 22220 bcm_field_entry_t entry, 22221 uint8 *data, 22222 uint8 *mask); 22223 22224 /* 22225 * Add to match on Geneve version 0 packet qualification to a field 22226 * entry. 22227 */ 22228 extern int bcm_field_qualify_GenevePktVersionZero( 22229 int unit, 22230 bcm_field_entry_t entry, 22231 uint8 data, 22232 uint8 mask); 22233 22234 /* Retreive Geneve version zero packet qualification from a field entry. */ 22235 extern int bcm_field_qualify_GenevePktVersionZero_get( 22236 int unit, 22237 bcm_field_entry_t entry, 22238 uint8 *data, 22239 uint8 *mask); 22240 22241 /* Add to match on Gpe version 0 packet qualification to a field entry. */ 22242 extern int bcm_field_qualify_GpePktVersionZero( 22243 int unit, 22244 bcm_field_entry_t entry, 22245 uint8 data, 22246 uint8 mask); 22247 22248 /* Retreive Gpe version zero packet qualification from a field entry. */ 22249 extern int bcm_field_qualify_GpePktVersionZero_get( 22250 int unit, 22251 bcm_field_entry_t entry, 22252 uint8 *data, 22253 uint8 *mask); 22254 22255 /* Add to match on OAM over Geneve packet qualification to a field entry. */ 22256 extern int bcm_field_qualify_GenevePktWithOam( 22257 int unit, 22258 bcm_field_entry_t entry, 22259 uint8 data, 22260 uint8 mask); 22261 22262 /* Retreive OAM over Geneve packet qualification from a field entry. */ 22263 extern int bcm_field_qualify_GenevePktWithOam_get( 22264 int unit, 22265 bcm_field_entry_t entry, 22266 uint8 *data, 22267 uint8 *mask); 22268 22269 /* Add to match on OAM over Gpe packet qualification to a field entry. */ 22270 extern int bcm_field_qualify_GpePktWithOam( 22271 int unit, 22272 bcm_field_entry_t entry, 22273 uint8 data, 22274 uint8 mask); 22275 22276 /* Retreive OAM over Gpe packet qualification from a field entry. */ 22277 extern int bcm_field_qualify_GpePktWithOam_get( 22278 int unit, 22279 bcm_field_entry_t entry, 22280 uint8 *data, 22281 uint8 *mask); 22282 22283 #endif /* BCM_HIDE_DISPATCHABLE */ 22284 22285 /* 22286 * Parameter flags form 22287 * bcmQualifyPktDstAddrType/bcmQualifyPktInnerDstAddrType. 22288 */ 22289 #define BCM_FIELD_PKT_DST_ADDR_TYPE_UCAST_MAC (1 << 0) /* Indicates the packet 22290 has unicast 22291 destination mac 22292 address. */ 22293 #define BCM_FIELD_PKT_DST_ADDR_TYPE_MCAST_MAC (1 << 1) /* Indicates the packet 22294 has multicast 22295 destination mac 22296 address. */ 22297 #define BCM_FIELD_PKT_DST_ADDR_TYPE_BCAST_MAC (1 << 2) /* Indicates the packet 22298 has broadcast 22299 destination mac 22300 address. */ 22301 #define BCM_FIELD_PKT_DST_ADDR_TYPE_UCAST_IP (1 << 3) /* Indicates the packet 22302 has unicast 22303 destination ip 22304 address. */ 22305 #define BCM_FIELD_PKT_DST_ADDR_TYPE_MCAST_IP (1 << 4) /* Indicates the packet 22306 has multicast 22307 destination ip 22308 address. */ 22309 #define BCM_FIELD_PKT_DST_ADDR_TYPE_BCAST_IP (1 << 5) /* Indicates the packet 22310 has broadcast 22311 destination ip 22312 address. */ 22313 22314 #ifndef BCM_HIDE_DISPATCHABLE 22315 22316 /* 22317 * Configure match criteria for bcmFieldQualifyPktDstAddrType 22318 * qualifier from the field entry. 22319 */ 22320 extern int bcm_field_qualify_PktDstAddrType( 22321 int unit, 22322 bcm_field_entry_t entry, 22323 uint32 dst_addr_type); 22324 22325 /* 22326 * Get match criteria for bcmFieldQualifyPktDstAddrType 22327 * qualifier from the field entry. 22328 */ 22329 extern int bcm_field_qualify_PktDstAddrType_get( 22330 int unit, 22331 bcm_field_entry_t entry, 22332 uint32 *dst_addr_type); 22333 22334 /* 22335 * Configure match criteria for bcmFieldQualifyPktInnerDstAddrType 22336 * qualifier from the field entry. 22337 */ 22338 extern int bcm_field_qualify_PktInnerDstAddrType( 22339 int unit, 22340 bcm_field_entry_t entry, 22341 uint32 dst_addr_type); 22342 22343 /* 22344 * Get match criteria for bcmFieldQualifyPktInnerDstType 22345 * qualifier from the field entry. 22346 */ 22347 extern int bcm_field_qualify_PktInnerDstAddrType_get( 22348 int unit, 22349 bcm_field_entry_t entry, 22350 uint32 *dst_addr_type); 22351 22352 /* 22353 * Configure match criteria for bcmFieldQualifyInnerL4Ports 22354 * qualifier from the field entry. 22355 */ 22356 extern int bcm_field_qualify_InnerL4Ports( 22357 int unit, 22358 bcm_field_entry_t entry, 22359 uint8 data, 22360 uint8 mask); 22361 22362 /* 22363 * Get match criteria for bcmFieldQualifyInnerL4Ports 22364 * qualifier from the field entry. 22365 */ 22366 extern int bcm_field_qualify_InnerL4Ports_get( 22367 int unit, 22368 bcm_field_entry_t entry, 22369 uint8 *data, 22370 uint8 *mask); 22371 22372 /* 22373 * Configure match criteria for bcmFieldQualifyIp6PktNextHeader 22374 * qualifier for the field entry. 22375 */ 22376 extern int bcm_field_qualify_Ip6PktNextHeader( 22377 int unit, 22378 bcm_field_entry_t entry, 22379 uint8 data, 22380 uint8 mask); 22381 22382 /* 22383 * Get match criteria for bcmFieldQualifyIp6PktNextHeader 22384 * qualifier from the field entry. 22385 */ 22386 extern int bcm_field_qualify_Ip6PktNextHeader_get( 22387 int unit, 22388 bcm_field_entry_t entry, 22389 uint8 *data, 22390 uint8 *mask); 22391 22392 /* 22393 * Configure match criteria for bcmFieldQualifyIp6PktHopLimit 22394 * qualifier for the field entry. 22395 */ 22396 extern int bcm_field_qualify_Ip6PktHopLimit( 22397 int unit, 22398 bcm_field_entry_t entry, 22399 uint8 data, 22400 uint8 mask); 22401 22402 /* 22403 * Get match criteria for bcmFieldQualifyIp6PktHopLimit 22404 * qualifier from the field entry. 22405 */ 22406 extern int bcm_field_qualify_Ip6PktHopLimit_get( 22407 int unit, 22408 bcm_field_entry_t entry, 22409 uint8 *data, 22410 uint8 *mask); 22411 22412 /* 22413 * Configure match criteria for bcmFieldQualifyIp6PktTrafficClass 22414 * qualifier for the field entry. 22415 */ 22416 extern int bcm_field_qualify_Ip6PktTrafficClass( 22417 int unit, 22418 bcm_field_entry_t entry, 22419 uint8 data, 22420 uint8 mask); 22421 22422 /* 22423 * Get match criteria for bcmFieldQualifyIp6PktTrafficClass 22424 * qualifier from the field entry. 22425 */ 22426 extern int bcm_field_qualify_Ip6PktTrafficClass_get( 22427 int unit, 22428 bcm_field_entry_t entry, 22429 uint8 *data, 22430 uint8 *mask); 22431 22432 /* 22433 * Configure match criteria for bcmFieldQualifyInnerIp6PktNextHeader 22434 * qualifier for the field entry. 22435 */ 22436 extern int bcm_field_qualify_InnerIp6PktNextHeader( 22437 int unit, 22438 bcm_field_entry_t entry, 22439 uint8 data, 22440 uint8 mask); 22441 22442 /* 22443 * Get match criteria for bcmFieldQualifyInnerIp6PktNextHeader 22444 * qualifier from the field entry. 22445 */ 22446 extern int bcm_field_qualify_InnerIp6PktNextHeader_get( 22447 int unit, 22448 bcm_field_entry_t entry, 22449 uint8 *data, 22450 uint8 *mask); 22451 22452 /* 22453 * Configure match criteria for bcmFieldQualifyInnerIp6PktHopLimit 22454 * qualifier for the field entry. 22455 */ 22456 extern int bcm_field_qualify_InnerIp6PktHopLimit( 22457 int unit, 22458 bcm_field_entry_t entry, 22459 uint8 data, 22460 uint8 mask); 22461 22462 /* 22463 * Get match criteria for bcmFieldQualifyInnerIp6PktHopLimit 22464 * qualifier from the field entry. 22465 */ 22466 extern int bcm_field_qualify_InnerIp6PktHopLimit_get( 22467 int unit, 22468 bcm_field_entry_t entry, 22469 uint8 *data, 22470 uint8 *mask); 22471 22472 /* 22473 * Configure match criteria for bcmFieldQualifyIp6PktTrafficClass 22474 * qualifier for the field entry. 22475 */ 22476 extern int bcm_field_qualify_InnerIp6PktTrafficClass( 22477 int unit, 22478 bcm_field_entry_t entry, 22479 uint8 data, 22480 uint8 mask); 22481 22482 /* 22483 * Get match criteria for bcmFieldQualifyInnerIp6PktTrafficClass 22484 * qualifier from the field entry. 22485 */ 22486 extern int bcm_field_qualify_InnerIp6PktTrafficClass_get( 22487 int unit, 22488 bcm_field_entry_t entry, 22489 uint8 *data, 22490 uint8 *mask); 22491 22492 #endif /* BCM_HIDE_DISPATCHABLE */ 22493 22494 /* Invalid constant for Context ID, used in initialization. */ 22495 #define BCM_FIELD_CONTEXT_ID_INVALID ((bcm_field_context_t) (-1)) 22496 22497 /* 22498 * Default context is created in case when TCAM Context Selection is miss 22499 * and context 0 is chosen by defualt. 22500 * If user don't want to configure preselectors he can use default 22501 * context for bcm_field_group_context_attach(). 22502 * The default context is created on init for all stages. 22503 */ 22504 #define BCM_FIELD_CONTEXT_ID_DEFAULT (0) 22505 22506 /* Field Context Compare Types. */ 22507 typedef enum bcm_field_context_compare_type_e { 22508 bcmFieldContextCompareTypeNone = 0, /* No special mode, used for 22509 initialization. */ 22510 bcmFieldContextCompareTypeSingle = 1, /* Single-key compare. */ 22511 bcmFieldContextCompareTypeDouble = 2, /* Double-key compare. */ 22512 bcmFieldContextCompareTypeCount = 3 /* Always last. Not a usable value. */ 22513 } bcm_field_context_compare_type_t; 22514 22515 /* 22516 * This structure holds the context compare mode information for 22517 * bcm_field_context_create function. 22518 */ 22519 typedef struct bcm_field_context_compare_modes_s { 22520 bcm_field_context_compare_type_t compare_1_mode; /* Specifies compare type for the first 22521 pair. */ 22522 bcm_field_context_compare_type_t compare_2_mode; /* Specifies compare type for the second 22523 pair. */ 22524 } bcm_field_context_compare_modes_t; 22525 22526 /* 22527 * This structure holds the basic parameters for 22528 * bcm_dnx_field_context_create() function. 22529 */ 22530 typedef struct bcm_field_context_info_s { 22531 bcm_field_context_compare_modes_t context_compare_modes; /* Defines which compare types are set 22532 for this context, for each compare 22533 operation (compare1, compare2). */ 22534 bcm_field_context_t cascaded_from; /* The context-Id which the current 22535 context is cascaded from (relevant in 22536 iPMF2) stage. */ 22537 uint8 hashing_enabled; /* Enable in case a hash key is set on 22538 this context. */ 22539 uint8 state_table_enabled; /* Enabling state table for current 22540 context */ 22541 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 22542 } bcm_field_context_info_t; 22543 22544 /* Initialize the bcm_field_context_info_t structure. */ 22545 extern void bcm_field_context_info_t_init( 22546 bcm_field_context_info_t *context_info); 22547 22548 #ifndef BCM_HIDE_DISPATCHABLE 22549 22550 /* Create a new Field Context on a desired stage. */ 22551 extern int bcm_field_context_create( 22552 int unit, 22553 uint32 flags, 22554 bcm_field_stage_t stage, 22555 bcm_field_context_info_t *context_info, 22556 bcm_field_context_t *context_id); 22557 22558 /* Get all context info of a Field Context. */ 22559 extern int bcm_field_context_info_get( 22560 int unit, 22561 bcm_field_stage_t stage, 22562 bcm_field_context_t context_id, 22563 bcm_field_context_info_t *context_info); 22564 22565 /* Destroy Context ID, deallocate all relevant resources. */ 22566 extern int bcm_field_context_destroy( 22567 int unit, 22568 bcm_field_stage_t stage, 22569 bcm_field_context_t context_id); 22570 22571 #endif /* BCM_HIDE_DISPATCHABLE */ 22572 22573 /* Initialize the bcm_field_group_info_t structure. */ 22574 extern void bcm_field_group_info_t_init( 22575 bcm_field_group_info_t *fg_info); 22576 22577 #ifndef BCM_HIDE_DISPATCHABLE 22578 22579 /* Create a new Field group of any type on a desired stage. */ 22580 extern int bcm_field_group_add( 22581 int unit, 22582 uint32 flags, 22583 bcm_field_group_info_t *fg_info, 22584 bcm_field_group_t *fg_id); 22585 22586 /* Get the information about a specific Field group. */ 22587 extern int bcm_field_group_info_get( 22588 int unit, 22589 bcm_field_group_t fg_id, 22590 bcm_field_group_info_t *fg_info); 22591 22592 /* Delete Field Group, deallocate all relevant resources. */ 22593 extern int bcm_field_group_delete( 22594 int unit, 22595 bcm_field_group_t fg_id); 22596 22597 #endif /* BCM_HIDE_DISPATCHABLE */ 22598 22599 /* 22600 * General Field optional flags. Used if the user wants to specify which 22601 * ID should be allocated. 22602 */ 22603 #define BCM_FIELD_FLAG_WITH_ID (1 << 0) 22604 22605 /* 22606 * Used if we want to replace/update existing entity. For example: update 22607 * an existing entry - change its values. 22608 */ 22609 #define BCM_FIELD_FLAG_UPDATE (1 << 1) 22610 22611 /* Used if returned result is aligned to MSB. */ 22612 #define BCM_FIELD_FLAG_MSB_RESULT_ALIGN (1 << 2) 22613 22614 /* Used if returned result is aligned to LSB. */ 22615 #define BCM_FIELD_FLAG_LSB_RESULT_ALIGN (1 << 3) 22616 22617 /* 22618 * This flag enables external ACL counters for all entries in the 22619 * external ACL DB. 22620 */ 22621 #define BCM_FIELD_FLAG_EXTERNAL_COUNTERS (1 << 4) 22622 22623 /* General invalid constant for Field */ 22624 #define BCM_FIELD_INVALID 0xFFFF 22625 22626 /* 22627 * General invalid constant for specific Field IDs, like presel_id, 22628 * context_id. Used in initialization. 22629 */ 22630 #define BCM_FIELD_ID_INVALID (-1) 22631 22632 /* Field Qualifier Input Types, indicate base layer type for qualifier. */ 22633 typedef enum bcm_field_input_types_e { 22634 bcmFieldInputTypeInvalid = -1, /* Invalid base layer. */ 22635 bcmFieldInputTypeLayerFwd = 0, /* Extracted from Layer info ,FWD layer 22636 index. */ 22637 bcmFieldInputTypeLayerAbsolute = 1, /* Extracted from Layer info ,Absolute 22638 layer index . */ 22639 bcmFieldInputTypeMetaData = 2, /* Extracted from MetaData. */ 22640 bcmFieldInputTypeLayerRecordsFwd = 3, /* Extracted from LR ,FWD layer index . */ 22641 bcmFieldInputTypeLayerRecordsAbsolute = 4, /* Extracted from LR ,Absolute layer 22642 index. */ 22643 bcmFieldInputTypeExternal = 5, /* Extracted from 'Cascaded From' field 22644 group result from the external field 22645 stage. */ 22646 bcmFieldInputTypeCascaded = 6, /* Extracted from 'Cascaded From' field 22647 group result. */ 22648 bcmFieldInputTypeConst = 7, /* Constant value. */ 22649 bcmFieldInputTypeCount = 8 /* Always last. Number of Base Types. */ 22650 } bcm_field_input_types_t; 22651 22652 #define BCM_FIELD_INPUT_TYPES_STRINGS \ 22653 { \ 22654 "LayerFwd", \ 22655 "LayerAbsolute", \ 22656 "MetaData", \ 22657 "LayerRecordsFwd", \ 22658 "LayerRecordsAbsolute", \ 22659 "External", \ 22660 "Cascaded", \ 22661 "Const" \ 22662 } 22663 22664 /* 22665 * Include information on each action that configured in 22666 * bcm_field_group_context_attach API. 22667 */ 22668 typedef struct bcm_field_action_attach_info_s { 22669 bcm_field_action_priority_t priority; /* Indicate the priority per action that 22670 was configured for specific Field 22671 Group the lower the number the higher 22672 the priority of the actions the 22673 higher FES/FEM id will be allocated */ 22674 uint8 valid_bit_polarity; /* Indicate the polarity per action that 22675 was configured for specific Field 22676 Group, the meaning of the 22677 use_valid_bit. Indicates whether 22678 condition bit can be based on 0 or 1. 22679 If there is a valid bit 22680 (use_valid_bit=1), 22681 the action will happen only if the 22682 valid bit is equal to the polarity 22683 bit. */ 22684 } bcm_field_action_attach_info_t; 22685 22686 /* 22687 * This struct will indicate how to extract the qualifier from the PBUS, 22688 * (MetaData/LR/Layer). 22689 */ 22690 typedef struct bcm_field_qualify_attach_info_s { 22691 bcm_field_input_types_t input_type; /* The base of qualifier indicate from 22692 which part of the PBUS the info is 22693 taken, relevant for all type of 22694 qualifiers. 22695 bcmFieldInputTypeLayerFwd - Takes 22696 data from a layer in the header, 22697 using the forwarding layer 22698 information. 22699 bcmFieldInputTypeLayerAbsolute - 22700 Takes data from a layer in the 22701 header, ignoring forwarding layer 22702 information. 22703 bcmFieldInputTypeMetaData - Takes 22704 data from the Metadata. 22705 bcmFieldInputTypeLayerRecordsFwd - 22706 Takes data about a layer in the 22707 header (layer record), using the 22708 forwarding layer information. 22709 bcmFieldInputTypeLayerRecordsAbsolute 22710 - Takes data about a layer in the 22711 header (layer record), ignoring the 22712 forwarding layer information. 22713 bcmFieldInputTypeExternal - Takes 22714 data from the result of an external 22715 TCAM field group from an earlier 22716 stage, using cascading. 22717 bcmFieldInputTypeCascaded - Takes 22718 data from the result of a field group 22719 from an earlier PMF stage, using 22720 cascading. 22721 bcmFieldInputTypeConst - Writes a 22722 constant value. */ 22723 int input_arg; /* input arg has different meaning per 22724 input type as follows: 22725 bcmFieldInputTypeLayerFwd - how many 22726 layer to increment from the 22727 forwarding layer (i.e. FWD+input_arg) 22728 bcmFieldInputTypeLayerAbsolute - how 22729 many layer to increment from the 22730 absolute layer (i.e. 0+input_arg) 22731 bcmFieldInputTypeMetaData - Has no 22732 meaning 22733 bcmFieldInputTypeLayerRecordsFwd - 22734 how many layer to increment from the 22735 forwarding layer (i.e. FWD+input_arg) 22736 bcmFieldInputTypeLayerRecordsAbsolute 22737 - how many layer to increment from 22738 the absolute layer (i.e. 0+input_arg) 22739 bcmFieldInputTypeExternal - Has no 22740 meaning 22741 bcmFieldInputTypeCascaded - Field 22742 group Id of the 'Cascaded from' 22743 result 22744 bcmFieldInputTypeConst - A 32 bit 22745 constant */ 22746 int offset; /* 1) This filed is bit resolution 22747 2) In case the qualifier was created 22748 by bcm_field_qualify_create() this 22749 field is always relevant it is the 22750 offset of the field inside the PBUS 22751 (MD/LR/Layer) 22752 3) For predefined qualifiers based on 22753 input_type: 22754 bcmFieldInputTypeLayerFwd - offset 22755 inside the layer (chosen by 22756 input_type+input_arg) 22757 bcmFieldInputTypeLayerAbsolute - 22758 offset inside the layer (chosen by 22759 input_type+input_arg) 22760 bcmFieldInputTypeMetaData - NA 22761 bcmFieldInputTypeLayerRecordsFwd - 22762 NA 22763 bcmFieldInputTypeLayerRecordsAbsolute 22764 - NA 22765 bcmFieldInputTypeCascaded - offset of 22766 the external TCAM field group 22767 payload, plus the offset within the 22768 payload of the field group 22769 bcmFieldInputTypeCascaded - offset in 22770 the field group of 'Cascaded from' 22771 result buffer 22772 bcmFieldInputTypeConst - NA */ 22773 } bcm_field_qualify_attach_info_t; 22774 22775 /* 22776 * This structure represents a single context_key element. This is an 22777 * abstract structure used only by other structures, like 22778 * bcm_field_context_hash_info_t and bcm_field_context_compare_info_t, as 22779 * a uniformed way to define context_keys. 22780 */ 22781 typedef struct bcm_field_context_key_info_s { 22782 int nof_quals; /* Number of valid qualifiers in the 22783 context key. */ 22784 bcm_field_qualify_t qual_types[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* BCM level qualifier look at 22785 bcm_field_qualify_t for more info. 22786 Number of meaningful elements on this 22787 array according to nof_quals. */ 22788 bcm_field_qualify_attach_info_t qual_info[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Indicate how to read the relevant 22789 qualifier from PBUS. The information 22790 is aligned to the qualifier types 22791 array above. */ 22792 } bcm_field_context_key_info_t; 22793 22794 /* 22795 * This structure represents a single context_payload element. This is an 22796 * abstract structure used only by other structures, like 22797 * bcm_field_group_attach_info_t, as a uniformed way to define 22798 * context_payloads. 22799 */ 22800 typedef struct bcm_field_context_payload_info_s { 22801 int nof_actions; /* Number of valid actions in the action 22802 set of the Field Group. */ 22803 bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to 22804 matching entries for this action set. 22805 BCM level action look at 22806 bcm_field_action_t for more info. */ 22807 bcm_field_action_attach_info_t action_info[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Information (priority) on each action 22808 that configured in 22809 bcm_field_group_context_attach() API */ 22810 uint32 payload_id; /* Payload Id for current field group 22811 inside the payload buffer. Payloads 22812 returned from the external tcam are 22813 acumulated sequentially. Indicates 22814 the valid hit bit for current field 22815 group. */ 22816 uint32 payload_offset; /* Payload location inside the payload 22817 buffer returned from the external 22818 tcam. */ 22819 } bcm_field_context_payload_info_t; 22820 22821 /* 22822 * This structure holds the basic parameters for 22823 * bcm_field_group_context_attach() function. 22824 */ 22825 typedef struct bcm_field_group_attach_info_s { 22826 bcm_field_context_key_info_t key_info; /* Context attach qualifiers 22827 information, like: number of valid 22828 qualifiers, qualifier type and how to 22829 read the relevant qualifier from 22830 PBUS. */ 22831 bcm_field_context_payload_info_t payload_info; /* Context attach actions information, 22832 like: number of valid actions, action 22833 type and priority. */ 22834 uint8 compare_id; /* Compare id to use in case of 22835 comparison. Can be 1 or 2, depends on 22836 which compare pair is used in the 22837 comparison. */ 22838 } bcm_field_group_attach_info_t; 22839 22840 /* Initialize the bcm_field_qualify_attach_info_t structure. */ 22841 extern void bcm_field_qual_attach_info_t_init( 22842 bcm_field_qualify_attach_info_t *qual_info); 22843 22844 /* Initialize the bcm_field_group_attach_info_t structure. */ 22845 extern void bcm_field_group_attach_info_t_init( 22846 bcm_field_group_attach_info_t *attach_info); 22847 22848 #ifndef BCM_HIDE_DISPATCHABLE 22849 22850 /* 22851 * This Function Attach Field Group to specific context ID, and defines 22852 * the key template and action priorities for this lookup for this 22853 * specific context. 22854 */ 22855 extern int bcm_field_group_context_attach( 22856 int unit, 22857 uint32 flags, 22858 bcm_field_group_t fg_id, 22859 bcm_field_context_t context_id, 22860 bcm_field_group_attach_info_t *attach_info); 22861 22862 /* 22863 * This function will get all Group attach info of a specific Field 22864 * context and Field group. 22865 */ 22866 extern int bcm_field_group_context_info_get( 22867 int unit, 22868 bcm_field_group_t fg_id, 22869 bcm_field_context_t context_id, 22870 bcm_field_group_attach_info_t *attach_info); 22871 22872 /* 22873 * Reset/deallocate all resources that were allocated for the context ID 22874 * at input to the FG at input. 22875 */ 22876 extern int bcm_field_group_context_detach( 22877 int unit, 22878 bcm_field_group_t fg_id, 22879 bcm_field_context_t context_id); 22880 22881 #endif /* BCM_HIDE_DISPATCHABLE */ 22882 22883 /* Action width in words. */ 22884 #define BCM_FIELD_ACTION_WIDTH_IN_WORDS (4) 22885 22886 /* Qualifier width in words. */ 22887 #define BCM_FIELD_QUAL_WIDTH_IN_WORDS (5) 22888 22889 /* 22890 * Include information regarding a user defined action used by 22891 * bcm_field_action_create. 22892 */ 22893 typedef struct bcm_field_action_info_s { 22894 bcm_field_stage_t stage; /* Field stage, for which stage the 22895 action is created. */ 22896 bcm_field_action_t action_type; /* used as basis for the user defined 22897 action type, can be also void action */ 22898 int size; /* Size of the action to set in the 22899 payload in bits. */ 22900 int prefix_size; /* Size of the prefix to set in the 22901 payload in bits. */ 22902 int prefix_value; /* Value of the prefix (will be put in 22903 the MSB of the action). */ 22904 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 22905 } bcm_field_action_info_t; 22906 22907 /* 22908 * Include information regarding a qualifier. Used by 22909 * bcm_field_qualifier_create() for creating user defined qualifiers. 22910 */ 22911 typedef struct bcm_field_qualifier_info_create_s { 22912 int size; /* Size of the qualifier to set in the 22913 key in bits. */ 22914 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 22915 } bcm_field_qualifier_info_create_t; 22916 22917 /* 22918 * Includes information regarding a qualifier. Used by 22919 * bcm_field_qualifier_get() for retrieving information regarding 22920 * predefined or user defined qualifiers. 22921 */ 22922 typedef struct bcm_field_qualifier_info_get_s { 22923 bcm_field_qualifier_class_t qual_class; /* Class of the qualifier. Indicates the 22924 intput type of the qualifier for 22925 predefined qualifiers. */ 22926 int size; /* Size of the qualifier in the key in 22927 bits. */ 22928 int offset; /* The offset of the qualifier. */ 22929 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 22930 } bcm_field_qualifier_info_get_t; 22931 22932 /* 22933 * This structure holds the payload values needed for bcm_field_entry_add 22934 * function. 22935 */ 22936 typedef struct bcm_field_entry_action_s { 22937 bcm_field_action_t type; /* BCM action type, an action to perform 22938 in case of match. */ 22939 uint32 value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]; /* Set value for action (lookup result). */ 22940 } bcm_field_entry_action_t; 22941 22942 /* 22943 * This structure holds the key values needed for bcm_field_entry_add 22944 * function. 22945 */ 22946 typedef struct bcm_field_entry_qual_s { 22947 bcm_field_qualify_t type; /* BCM qualifier type, a classifier type 22948 for lookup. */ 22949 uint32 value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Set value for qualify (lookup key). */ 22950 uint32 max_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Sets the maximum value for ranged 22951 qualify (lookup key). */ 22952 uint32 mask[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Mask Value with defined which of the 22953 value bits are relevant for lookup. */ 22954 } bcm_field_entry_qual_t; 22955 22956 /* 22957 * This structure holds the key values needed for bcm_field_entry_add 22958 * function. 22959 */ 22960 typedef struct bcm_field_entry_info_s { 22961 uint32 priority; /* Entry priority, relevant only for 22962 TCAM FG. The lower the number the 22963 higher the entry priority. Higher 22964 priority lookup will hit first. */ 22965 int nof_entry_quals; /* Number of valid qualifiers in the 22966 Field entry. */ 22967 bcm_field_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Entry qualifiers info including type, 22968 value, and mask, not all are relevant 22969 in various field group types. */ 22970 int nof_entry_actions; /* Number of valid actions in the Field 22971 entry. */ 22972 bcm_field_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type, 22973 value. */ 22974 bcm_core_t core; /* Entry's core */ 22975 uint8 valid_bit; /* Entry valid bit */ 22976 } bcm_field_entry_info_t; 22977 22978 /* Initialize the bcm_field_action_info_t structure. */ 22979 extern void bcm_field_action_info_t_init( 22980 bcm_field_action_info_t *action_info); 22981 22982 #ifndef BCM_HIDE_DISPATCHABLE 22983 22984 /* 22985 * This function create a user defined action, when user wants to use a 22986 * non-predefined, it indicated the size and gets an action ID. 22987 */ 22988 extern int bcm_field_action_create( 22989 int unit, 22990 uint32 flags, 22991 bcm_field_action_info_t *action_info, 22992 bcm_field_action_t *action_id); 22993 22994 /* 22995 * Maps the bcm value of a given action in a given stage to the 22996 * correspondig HW value. This functionality is needed when non-trivial 22997 * user defined actions are created and values need to be set for them 22998 */ 22999 extern int bcm_field_action_value_map( 23000 int unit, 23001 bcm_field_stage_t stage, 23002 bcm_field_action_t bcm_action, 23003 uint32 bcm_value[BCM_FIELD_ACTION_WIDTH_IN_WORDS], 23004 uint32 hw_value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]); 23005 23006 /* 23007 * This function gets all information of an action. For predefined 23008 * actions only, it takes stage as input. 23009 */ 23010 extern int bcm_field_action_info_get( 23011 int unit, 23012 bcm_field_action_t action_id, 23013 bcm_field_stage_t stage, 23014 bcm_field_action_info_t *action_info); 23015 23016 /* Destroys an existing user action based. */ 23017 extern int bcm_field_action_destroy( 23018 int unit, 23019 bcm_field_action_t action_id); 23020 23021 #endif /* BCM_HIDE_DISPATCHABLE */ 23022 23023 /* Initialize the bcm_field_qualifier_info_create_t structure. */ 23024 extern void bcm_field_qualifier_info_create_t_init( 23025 bcm_field_qualifier_info_create_t *qual_info); 23026 23027 /* Initialize the bcm_field_qualifier_info_get_t structure. */ 23028 extern void bcm_field_qualifier_info_get_t_init( 23029 bcm_field_qualifier_info_get_t *qual_info); 23030 23031 #ifndef BCM_HIDE_DISPATCHABLE 23032 23033 /* 23034 * This function creates a user defined qualifier, when user wants to use 23035 * a non-predefined qualifier. It indicated the size and gets a qualifier 23036 * ID. 23037 */ 23038 extern int bcm_field_qualifier_create( 23039 int unit, 23040 uint32 flags, 23041 bcm_field_qualifier_info_create_t *qual_info, 23042 bcm_field_qualify_t *qual_id); 23043 23044 /* 23045 * Maps the bcm value of a given qualifier in a given stage to the 23046 * correspondig HW value. This functionality is needed when non-trivial 23047 * user defined qualifiers are created and values need to be set for them 23048 */ 23049 extern int bcm_field_qualifier_value_map( 23050 int unit, 23051 bcm_field_stage_t stage, 23052 bcm_field_qualify_t bcm_qual, 23053 uint32 bcm_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS], 23054 uint32 hw_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]); 23055 23056 /* 23057 * This function gets all information of a qualifier for a specific 23058 * stage. Used for both predefined qualifiers and user defined 23059 * qualifiers. 23060 */ 23061 extern int bcm_field_qualifier_info_get( 23062 int unit, 23063 bcm_field_qualify_t qual_id, 23064 bcm_field_stage_t stage, 23065 bcm_field_qualifier_info_get_t *qual_info); 23066 23067 /* Destroys an existing user qualifier. */ 23068 extern int bcm_field_qualifier_destroy( 23069 int unit, 23070 bcm_field_qualify_t qual_id); 23071 23072 #endif /* BCM_HIDE_DISPATCHABLE */ 23073 23074 /* Initialize the bcm_field_entry_info_t structure. */ 23075 extern void bcm_field_entry_info_t_init( 23076 bcm_field_entry_info_t *entry_info); 23077 23078 /* 23079 * Initialize an array with BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP elements 23080 * of bcm_field_entry_qual_t structures. 23081 */ 23082 extern void bcm_field_entry_qual_t_init( 23083 bcm_field_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]); 23084 23085 #ifndef BCM_HIDE_DISPATCHABLE 23086 23087 /* 23088 * This function creates, sets and installs to HW a single entry (ACL 23089 * rule) for a specific field group. 23090 */ 23091 extern int bcm_field_entry_add( 23092 int unit, 23093 uint32 flags, 23094 bcm_field_group_t fg_id, 23095 bcm_field_entry_info_t *entry_info, 23096 bcm_field_entry_t *entry_handle); 23097 23098 /* Get info for specific a field group by entry id. */ 23099 extern int bcm_field_entry_info_get( 23100 int unit, 23101 bcm_field_group_t fg_id, 23102 bcm_field_entry_t entry_handle, 23103 bcm_field_entry_info_t *entry_info); 23104 23105 /* Delete Entry From HW and free all allocated resources. */ 23106 extern int bcm_field_entry_delete( 23107 int unit, 23108 bcm_field_group_t fg_id, 23109 bcm_field_entry_qual_t entry_qual_info[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP], 23110 bcm_field_entry_t entry_handle); 23111 23112 /* Delete all entries in all field groups. */ 23113 extern int bcm_field_entry_delete_all( 23114 int unit); 23115 23116 #endif /* BCM_HIDE_DISPATCHABLE */ 23117 23118 /* 23119 * This enum contains Packet Layers to remove, used in the 23120 * BCM_FIELD_PACKET_STRIP() macro. 23121 */ 23122 typedef enum bcm_field_packet_remove_layers_e { 23123 bcmFieldPacketRemoveLayerFirst = 0, /* Invalid Param. */ 23124 bcmFieldPacketRemoveLayerOffset0 = bcmFieldPacketRemoveLayerFirst, /* Packet Layer offset 0. */ 23125 bcmFieldPacketRemoveLayerOffset1 = 1, /* Packet Layer offset 1. */ 23126 bcmFieldPacketRemoveLayerForwardingOffset0 = 2, /* Packet Layer Forwarding offset 0. */ 23127 bcmFieldPacketRemoveLayerForwardingOffset1 = 3, /* Packet Layer Forwarding offset 1. */ 23128 bcmFieldPacketRemoveLayerCount = 4 /* Always last. Not a usable value. */ 23129 } bcm_field_packet_remove_layers_t; 23130 23131 #define BCM_FIELD_PACKET_REMOVE_LAYER_STRINGS \ 23132 { \ 23133 "Offset0", \ 23134 "Offset1", \ 23135 "ForwardingOffset0", \ 23136 "ForwardingOffset1" \ 23137 } 23138 23139 /* 23140 * This macro encodes the number of headers to remove and number of bytes 23141 * to a single parameter, given as input to PMF action 23142 * bcmFieldActionStartPacketStrip. 23143 */ 23144 #define BCM_FIELD_PACKET_STRIP(remove_layers, fixed_num_bytes) ((fixed_num_bytes<<4) + (remove_layers)) 23145 23146 /* 23147 * This enum contains all Polynomial hashing Functions values that can be 23148 * passed to the 'hash_function' param in the 23149 * bcm_field_context_hash_info_t struct. 23150 */ 23151 typedef enum bcm_field_context_hash_function_e { 23152 bcmFieldContextHashFunctionFirst = 0, /* Invalid Param. */ 23153 bcmFieldContextHashFunctionFirstReserved = bcmFieldContextHashFunctionFirst, /* HW Reserved Value */ 23154 bcmFieldContextHashFunctionSecondReserved = 1, /* HW Reserved Value. */ 23155 bcmFieldContextHashFunctionThirdReserved = 2, /* Polynomial BISYNC hashing Function. */ 23156 bcmFieldContextHashFunctionCrc16Bisync = 3, /* Polynomial CRC 16 BISYNC hashing 23157 Function. */ 23158 bcmFieldContextHashFunctionCrc16Xor1 = 4, /* Polynomial CRC 16 XOR1 hashing 23159 Function. */ 23160 bcmFieldContextHashFunctionCrc16Xor2 = 5, /* Polynomial CRC 16 XOR2 hashing 23161 Function. */ 23162 bcmFieldContextHashFunctionCrc16Xor4 = 6, /* Polynomial CRC 16 XOR4 hashing 23163 Function. */ 23164 bcmFieldContextHashFunctionCrc16Xor8 = 7, /* Polynomial CRC 16 XOR8 hashing 23165 Function. */ 23166 bcmFieldContextHashFunctionXor16 = 8, /* Polynomial XOR16 hashing Function. */ 23167 bcmFieldContextHashFunctionCrc16Ccitt = 9, /* Polynomial CRC 16 CCITT hashing 23168 Function. */ 23169 bcmFieldContextHashFunctionCrc32ALow = 10, /* Polynomial CRC 32 A LOW hashing 23170 Function. */ 23171 bcmFieldContextHashFunctionCrc32Ahigh = 11, /* Polynomial CRC 32 A HIGH hashing 23172 Function. */ 23173 bcmFieldContextHashFunctionCrc32BLow = 12, /* Polynomial CRC 32 B LOW hashing 23174 Function. */ 23175 bcmFieldContextHashFunctionCrc32BHigh = 13, /* Polynomial CRC 32 B HIGH hashing 23176 Function. */ 23177 bcmFieldContextHashFunctionCount = 14 /* Always last. Not a usable value. */ 23178 } bcm_field_context_hash_function_t; 23179 23180 /* 23181 * This enum contains all Hashing Action Key values that can be passed to 23182 * the 'hash_config->action_key' param in the 23183 * bcm_field_context_hash_info_t struct. 23184 */ 23185 typedef enum bcm_field_context_hash_action_key_e { 23186 bcmFieldContextHashActionKeyFirst = 0, /* Invalid Param. */ 23187 bcmFieldContextHashActionKeyEcmpLbKey0 = bcmFieldContextHashActionKeyFirst, /* Hashing key ECMP_LB0. */ 23188 bcmFieldContextHashActionKeyEcmpLbKey1 = 1, /* Hashing key ECMP_LB1. */ 23189 bcmFieldContextHashActionKeyEcmpLbKey2 = 2, /* Hashing key ECMP_LB2. */ 23190 bcmFieldContextHashActionKeyNetworkLbKey = 3, /* Hashing key NETWORK_LB. */ 23191 bcmFieldContextHashActionKeyLagLbKey = 4, /* Hashing key LAG_LB. */ 23192 bcmFieldContextHashActionKeyAdditionalLbKey = 5, /* Hashing key ADDITIONAL_LB. */ 23193 bcmFieldContextHashActionKeyCount = 6 /* Always last. Not a usable value. */ 23194 } bcm_field_context_hash_action_key_t; 23195 23196 /* 23197 * This enum contains all Hashing Action Values that can be passed to the 23198 * 'hash_config->function_select and hash_config->crc_select' params in 23199 * the bcm_field_context_hash_info_t struct. 23200 */ 23201 typedef enum bcm_field_context_hash_action_value_e { 23202 bcmFieldContextHashActionValueFirst = 0, /* Invalid Param. */ 23203 bcmFieldContextHashActionValueNone = bcmFieldContextHashActionValueFirst, /* Hashing action value DO_NOTHING. */ 23204 bcmFieldContextHashActionValueReplaceCrc = 1, /* Hashing action value 23205 REPLACE_WITH_CRC_16. */ 23206 bcmFieldContextHashActionValueAugmentCrc = 2, /* Hashing action value 23207 AUGMENT_WITH_PMF_CRC_16. */ 23208 bcmFieldContextHashActionValueAugmentKey = 3, /* Hashing action value 23209 AUGMENT_WITH_KEY_J. */ 23210 bcmFieldContextHashActionValueCount = 4 /* Always last. Not a usable value. */ 23211 } bcm_field_context_hash_action_value_t; 23212 23213 /* 23214 * This structure holds detailed info about hash configuration, needed 23215 * for bcm_field_context_hash_info_t struct. 23216 */ 23217 typedef struct bcm_field_context_hash_config_s { 23218 bcm_field_context_hash_action_key_t action_key; /* One of the various lb-keys which are 23219 iPMF1 output. */ 23220 bcm_field_context_hash_action_value_t function_select; /* Hashing Action which selects weather 23221 to keep the input lb-key or to 23222 replace it. */ 23223 bcm_field_context_hash_action_value_t crc_select; /* CRC Action which selects weather to 23224 keep the input lb-key or to replace 23225 it. */ 23226 } bcm_field_context_hash_config_t; 23227 23228 /* 23229 * This structure holds detailed info how hash key should be constructed, 23230 * needed for bcm_field_context_hash_create() function. 23231 */ 23232 typedef struct bcm_field_context_hash_info_s { 23233 bcm_field_context_key_info_t key_info; /* The Hash key information, describing 23234 the qualfiers and template of the 23235 constructed key */ 23236 uint8 compression; /* Disable/enable compress data (128->32 23237 bit). Typical usage: compress ipv6 23238 address into 32 bits. */ 23239 uint8 order; /* Disable/enable order data (smaller 23240 32-bits value will always be in 32LSB 23241 ). Typical usage order between 23242 generate the same key for 23243 bidirectional ip flows. */ 23244 bcm_field_context_hash_function_t hash_function; /* Hashing polynomial for hashing 23245 mechanism. */ 23246 bcm_field_context_hash_config_t hash_config; /* Hashing configuration params, 23247 describing which hash action is 23248 performed and which signals */ 23249 } bcm_field_context_hash_info_t; 23250 23251 /* 23252 * This structure holds detailed info for keys, which should be compared 23253 * needed for bcm_field_context_compare_create() function. 23254 */ 23255 typedef struct bcm_field_context_compare_info_s { 23256 bcm_field_context_key_info_t first_key_info; /* The information for the first key. */ 23257 bcm_field_context_key_info_t second_key_info; /* The information for the second key. */ 23258 } bcm_field_context_compare_info_t; 23259 23260 /* Initialize the bcm_field_context_hash_info_t structure. */ 23261 extern void bcm_field_context_hash_info_t_init( 23262 bcm_field_context_hash_info_t *hash_info); 23263 23264 #ifndef BCM_HIDE_DISPATCHABLE 23265 23266 /* 23267 * This function is used to create, allocate all resources and configure 23268 * HASH key which is used to create CRC. 23269 */ 23270 extern int bcm_field_context_hash_create( 23271 int unit, 23272 uint32 flags, 23273 bcm_field_stage_t stage, 23274 bcm_field_context_t context_id, 23275 bcm_field_context_hash_info_t *hash_info); 23276 23277 /* This function gets HASH info of a specific context. */ 23278 extern int bcm_field_context_hash_info_get( 23279 int unit, 23280 bcm_field_stage_t stage, 23281 bcm_field_context_t context_id, 23282 bcm_field_context_hash_info_t *hash_info); 23283 23284 /* 23285 * Destroy HASH key which is used to create CRC, deallocate all resources 23286 * allocated by bcm_field_context_hash_create. 23287 */ 23288 extern int bcm_field_context_hash_destroy( 23289 int unit, 23290 bcm_field_stage_t stage, 23291 bcm_field_context_t context_id); 23292 23293 #endif /* BCM_HIDE_DISPATCHABLE */ 23294 23295 /* Initialize the bcm_field_context_compare_info_t structure. */ 23296 extern void bcm_field_context_compare_info_t_init( 23297 bcm_field_context_compare_info_t *compare_info); 23298 23299 #ifndef BCM_HIDE_DISPATCHABLE 23300 23301 /* 23302 * This function is used to set up to two pairs of keys for comparison 23303 * for a given context. 23304 */ 23305 extern int bcm_field_context_compare_create( 23306 int unit, 23307 uint32 flags, 23308 bcm_field_stage_t stage, 23309 bcm_field_context_t context_id, 23310 uint32 pair_id, 23311 bcm_field_context_compare_info_t *cmp_info); 23312 23313 /* 23314 * This function returns information for a specific pair of keys which 23315 * used for comparison in a given context. 23316 */ 23317 extern int bcm_field_context_compare_info_get( 23318 int unit, 23319 bcm_field_stage_t stage, 23320 bcm_field_context_t context_id, 23321 uint32 pair_id, 23322 bcm_field_context_compare_info_t *cmp_info); 23323 23324 /* Destroys the compare keys in the given context. */ 23325 extern int bcm_field_context_compare_destroy( 23326 int unit, 23327 bcm_field_stage_t stage, 23328 bcm_field_context_t context_id, 23329 uint32 pair_id); 23330 23331 #endif /* BCM_HIDE_DISPATCHABLE */ 23332 23333 /* 23334 * This struct holds the banks to evacuate information given to 23335 * dnx_field_tcam_bank_evacuate() function 23336 */ 23337 typedef struct bcm_field_tcam_bank_evacuate_info_s { 23338 int nof_banks; /* Number of banks to evacuate */ 23339 int tcam_bank_ids[BCM_FIELD_NUMBER_OF_TCAM_BANKS]; /* Array that holds the TCAM bank IDs to 23340 be evacuated */ 23341 } bcm_field_tcam_bank_evacuate_info_t; 23342 23343 #ifndef BCM_HIDE_DISPATCHABLE 23344 23345 /* 23346 * Evacuates the given fg_id from the bank IDs that are given in 23347 * evac_info struct. The evacuation process involves moving the entries 23348 * of the given fg_id from the targeted banks to other banks allocated by 23349 * the fg_id, if not enough space is available for moving the entries, 23350 * this function fails. 23351 */ 23352 extern int bcm_field_tcam_bank_evacuate( 23353 int unit, 23354 uint32 flags, 23355 bcm_field_group_t fg_id, 23356 bcm_field_tcam_bank_evacuate_info_t *evac_info); 23357 23358 #endif /* BCM_HIDE_DISPATCHABLE */ 23359 23360 /* 23361 * ACE Format ID. Used to indicate the ID of an ACE format and the result 23362 * type of its entries. 23363 */ 23364 typedef uint8 bcm_field_ace_format_t; 23365 23366 /* 23367 * This structure represents a single context_payload element. This is an 23368 * abstract structure used only by other structures, like 23369 * bcm_field_group_attach_info_t, as a uniformed way to define 23370 * context_payloads. 23371 */ 23372 typedef struct bcm_field_ace_format_info_s { 23373 int nof_actions; /* Number of valid actions in the action 23374 set of ACE format. */ 23375 bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to 23376 matching entries for this action set. 23377 BCM level action look at 23378 bcm_field_action_t for more info. */ 23379 int action_with_valid_bit[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* If set, then additional bit is added 23380 in payload to indicate weather this 23381 action is valid. */ 23382 uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */ 23383 } bcm_field_ace_format_info_t; 23384 23385 /* Initialize the bcm_field_ace_format_info_t structure. */ 23386 extern void bcm_field_ace_format_info_t_init( 23387 bcm_field_ace_format_info_t *ace_format_info); 23388 23389 #ifndef BCM_HIDE_DISPATCHABLE 23390 23391 /* 23392 * This function adds new ACE field format to Egress-PMF stage. This 23393 * format uses an ACE table (PPMC table) lookup for MC replication 23394 * entries and ACE pointers.Aligns field group add and field group 23395 * context attach. 23396 */ 23397 extern int bcm_field_ace_format_add( 23398 int unit, 23399 uint32 flags, 23400 bcm_field_ace_format_info_t *ace_format_info, 23401 bcm_field_ace_format_t *ace_format_id ); 23402 23403 /* Get the information about a specific ACE format. */ 23404 extern int bcm_field_ace_format_info_get( 23405 int unit, 23406 bcm_field_ace_format_t ace_format_id, 23407 bcm_field_ace_format_info_t *ace_format_info); 23408 23409 /* 23410 * This function deletes an ACE format, deallocates all relevant 23411 * resources. 23412 */ 23413 extern int bcm_field_ace_format_delete( 23414 int unit, 23415 bcm_field_ace_format_t ace_format_id); 23416 23417 #endif /* BCM_HIDE_DISPATCHABLE */ 23418 23419 /* This structure holds detailed info for ACE field entry. */ 23420 typedef struct bcm_field_ace_entry_info_s { 23421 int nof_entry_actions; /* Number of valid actions in the ACE 23422 field entry. */ 23423 bcm_field_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type, 23424 value.. */ 23425 } bcm_field_ace_entry_info_t; 23426 23427 /* Initialize the bcm_field_ace_entry_info_t structure. */ 23428 extern void bcm_field_ace_entry_info_t_init( 23429 bcm_field_ace_entry_info_t *entry_info); 23430 23431 #ifndef BCM_HIDE_DISPATCHABLE 23432 23433 /* This function adds new entry in hardware to indicated ACE format. */ 23434 extern int bcm_field_ace_entry_add( 23435 int unit, 23436 uint32 flags, 23437 bcm_field_ace_format_t ace_format_id , 23438 bcm_field_ace_entry_info_t *entry_info, 23439 uint32 *entry_handle); 23440 23441 /* 23442 * This function retrieves the entry information of a specific ACE Format 23443 * ID. 23444 */ 23445 extern int bcm_field_ace_entry_info_get( 23446 int unit, 23447 uint32 entry_handle, 23448 bcm_field_ace_entry_info_t *entry_info); 23449 23450 /* This function deletes an ACE entry from hardware. */ 23451 extern int bcm_field_ace_entry_delete( 23452 int unit, 23453 uint32 entry_handle); 23454 23455 #endif /* BCM_HIDE_DISPATCHABLE */ 23456 23457 /* 23458 * Indicates the first user action id to avoid overlapping with static 23459 * ones. 23460 */ 23461 #define BCM_FIELD_FIRST_USER_ACTION_ID (2048) 23462 23463 /* 23464 * Indicates the first user qualifier id to avoid overlapping with static 23465 * ones 23466 */ 23467 #define BCM_FIELD_FIRST_USER_QUALIFIER_ID (2048) 23468 23469 /* Calculates the User Defined action id. */ 23470 #define BCM_FIELD_ACTION_ID_MAP(user_action_id) (BCM_FIELD_FIRST_USER_ACTION_ID + user_action_id) 23471 23472 /* Calculates the User Defined qualifier id. */ 23473 #define BCM_FIELD_QUALIFIER_ID_MAP(user_qualifier_id) (BCM_FIELD_FIRST_USER_QUALIFIER_ID + user_qualifier_id) 23474 23475 /* 23476 * This enum contains all 'param_type' values that can be passed to the 23477 * bcm_field_context_param_set() function. 23478 */ 23479 typedef enum bcm_field_context_param_type_e { 23480 bcmFieldContextParamTypeFirst = 0, /* Invalid Param. */ 23481 bcmFieldContextParamTypeSystemHeaderProfile = bcmFieldContextParamTypeFirst, /* Selects a system header profile to 23482 determine which headers will be 23483 appended to packets matching the 23484 context. */ 23485 bcmFieldContextParamTypeSystemHeaderStrip = 1, /* Packet strip parameters - bytes and 23486 headers to remove. */ 23487 bcmFieldContextParamTypeKeyVal = 2, /* Set a constant value that can be used 23488 as qualifier for lookups performed by 23489 the context. */ 23490 bcmFieldContextParamCount = 3 /* Always last. Not a usable value. */ 23491 } bcm_field_context_param_type_t; 23492 23493 /* 23494 * This structure holds all parameters, which can be set by 23495 * bcm_field_context_param_set() for a specific context. 23496 */ 23497 typedef struct bcm_field_context_param_info_s { 23498 bcm_field_context_param_type_t param_type; /* The type of the parameter to set. */ 23499 uint32 param_arg; /* Extra arg for the parameter to set. */ 23500 uint32 param_val; /* The value to set for the given 23501 parameter. */ 23502 } bcm_field_context_param_info_t; 23503 23504 /* Initialize the bcm_field_context_param_info_t structure. */ 23505 extern void bcm_field_context_param_info_t_init( 23506 bcm_field_context_param_info_t *context_params); 23507 23508 #ifndef BCM_HIDE_DISPATCHABLE 23509 23510 /* This function sets specific attribute value for a context. */ 23511 extern int bcm_field_context_param_set( 23512 int unit, 23513 uint32 flags, 23514 bcm_field_stage_t stage, 23515 bcm_field_context_t context_id, 23516 bcm_field_context_param_info_t *context_params); 23517 23518 #endif /* BCM_HIDE_DISPATCHABLE */ 23519 23520 /* Container of 4-bits identifiers of a FEM. */ 23521 typedef uint8 bcm_field_fem_id_t; 23522 23523 /* 23524 * Indicates the maximum number of conditions per FEM(Field Extraction 23525 * Macro). 23526 */ 23527 #define BCM_FIELD_NUMBER_OF_CONDITIONS_PER_FEM (16) 23528 23529 /* 23530 * Indicates the maximum number of extractions per FEM(Field Extraction 23531 * Macro). 23532 */ 23533 #define BCM_FIELD_NUMBER_OF_EXTRACTIONS_PER_FEM (4) 23534 23535 /* 23536 * Indicates the maximum number of mapping bits per FEM(Field Extraction 23537 * Macro). 23538 */ 23539 #define BCM_FIELD_NUMBER_OF_MAPPING_BITS_PER_FEM (24) 23540 23541 /* 23542 * This Enum used to select the source type for the output bit of action 23543 * extraction. 23544 */ 23545 typedef enum bcm_field_fem_extraction_output_source_type_e { 23546 bcmFieldFemExtractionOutputSourceTypeFirst = 0, /* Invalid Param. */ 23547 bcmFieldFemExtractionOutputSourceTypeForce = bcmFieldFemExtractionOutputSourceTypeFirst, /* Use a constant value for this bit. */ 23548 bcmFieldFemExtractionOutputSourceTypeKey = 1, /* Use a bit from the input key. */ 23549 bcmFieldFemExtractionOutputSourceTypeCount = 2 /* Always last. Not a usable value. */ 23550 } bcm_field_fem_extraction_output_source_type_t; 23551 23552 /* This structure holds detailed info for FEM condition info. */ 23553 typedef struct bcm_field_fem_extraction_output_bit_s { 23554 bcm_field_fem_extraction_output_source_type_t source_type; /* Output source type. */ 23555 uint8 offset; /* Offset from key select. */ 23556 uint8 forced_value; /* Force bit value in case source type 23557 == force. */ 23558 } bcm_field_fem_extraction_output_bit_t; 23559 23560 /* This structure holds detailed info for FEM extraction info. */ 23561 typedef struct bcm_field_fem_extraction_s { 23562 bcm_field_action_t action_type; /* Action type to be performed by this 23563 extraction. */ 23564 bcm_field_fem_extraction_output_bit_t output_bit[BCM_FIELD_NUMBER_OF_MAPPING_BITS_PER_FEM]; /* Array of extraction commands. Each 23565 extract 1 bit of the action value. */ 23566 uint32 increment; /* Add a constant value to the result of 23567 the extraction. */ 23568 } bcm_field_fem_extraction_t; 23569 23570 /* This structure holds detailed info for FEM condition info. */ 23571 typedef struct bcm_field_fem_condition_s { 23572 uint8 extraction_id; /* Choose one of 4 action extraction tables that 23573 will produce an action. */ 23574 uint8 is_action_valid; /* If TRUE, the FEM will produce an action for the 23575 given 4 bits word. */ 23576 } bcm_field_fem_condition_t; 23577 23578 /* This structure holds detailed info for FEM input info. */ 23579 typedef struct bcm_field_fem_input_info_s { 23580 uint8 input_offset; /* Offset inside the FG-ID result 23581 buffer. The FEM input is 32 bits 23582 long. When the FG result buffer is 23583 longer than 32 bits, offset is 23584 required (in resolution of 16 bits). */ 23585 bcm_field_group_t overriding_fg_id; /* If valid FG-ID, override the main 23586 group result buffer with 16 bits 23587 result from this specified TCAM-FG 23588 result. */ 23589 } bcm_field_fem_input_info_t; 23590 23591 /* This structure holds detailed info for FEM action info. */ 23592 typedef struct bcm_field_fem_action_info_s { 23593 bcm_field_fem_input_info_t fem_input; /* Structure holds all FEM input 23594 information. */ 23595 uint8 condition_msb; /* Select the MSB of a 4 bit chunk that 23596 will choose extraction tables ID 23597 taken from the 32 input bits selected 23598 by input offset (range of 3-31). */ 23599 bcm_field_fem_condition_t fem_condition[BCM_FIELD_NUMBER_OF_CONDITIONS_PER_FEM]; /* Array of structures, each describing 23600 the condition information for the 23601 FEM. */ 23602 bcm_field_fem_extraction_t fem_extraction[BCM_FIELD_NUMBER_OF_EXTRACTIONS_PER_FEM]; /* Array of structures, each describes 23603 the extraction information for the 23604 FEM,action combination including 23605 action type, how to construct the 23606 action values out of the 32 input 23607 bits, and option for an increment for 23608 adding constant value for the result 23609 of the extraction. */ 23610 } bcm_field_fem_action_info_t; 23611 23612 /* Initialize the bcm_field_fem_action_info_t structure. */ 23613 extern void bcm_field_fem_action_info_t_init( 23614 bcm_field_fem_action_info_t *fem_action_info); 23615 23616 #ifndef BCM_HIDE_DISPATCHABLE 23617 23618 /* 23619 * This function adds FEM machine as a resource to a specific field 23620 * group. 23621 */ 23622 extern int bcm_field_fem_action_add( 23623 int unit, 23624 uint32 flags, 23625 bcm_field_group_t fg_id, 23626 bcm_field_action_priority_t encoded_position, 23627 bcm_field_fem_action_info_t *fem_action_info); 23628 23629 /* 23630 * This function give the caller all info concerning contents of FEM 23631 * machine's HW and, also, some SW values (SWSTATE). 23632 */ 23633 extern int bcm_field_fem_action_info_get( 23634 int unit, 23635 bcm_field_group_t fg_id, 23636 bcm_field_action_priority_t encoded_position, 23637 bcm_field_fem_action_info_t *fem_action_info); 23638 23639 /* 23640 * This function sets FEM machine's HW and SW values (SWSTATE) to initial 23641 * values. 23642 */ 23643 extern int bcm_field_fem_action_delete( 23644 int unit, 23645 bcm_field_group_t fg_id, 23646 bcm_field_action_priority_t bcm_field_action_priority_t); 23647 23648 #endif /* BCM_HIDE_DISPATCHABLE */ 23649 23650 /* 23651 * The mask of position of the preferred location within the FES-FEM 23652 * array. 23653 */ 23654 #define BCM_FIELD_ACTION_POSITION_MASK (0xFFFF) 23655 23656 /* 23657 * The mask of priority of the preferred location within the FES-FEM 23658 * array. 23659 */ 23660 #define BCM_FIELD_ACTION_PRIORITY_MASK (0xFFFF) 23661 23662 /* The mask of the preferred FES-FEM array. */ 23663 #define BCM_FIELD_ACTION_ARRAY_MASK (0xF) 23664 23665 /* The offset of the preferred FES-FEM array. */ 23666 #define BCM_FIELD_ACTION_ARRAY_OFFSET (16) 23667 23668 /* The offset inside the FES-FEM array, where the valid bid is located. */ 23669 #define BCM_FIELD_ACTION_VALID_OFFSET (31) 23670 23671 /* 23672 * The value of the bit is reserved for BCM_FIELD_ACTION_DONT_CARE 'don't 23673 * care'. 0 means we care about position. 23674 */ 23675 #define BCM_FIELD_ACTION_DONT_CARE_OFFSET (30) 23676 23677 /* 23678 * The action priority used to indicate that we don't care about the 23679 * priority. 23680 */ 23681 #define BCM_FIELD_ACTION_DONT_CARE ((1 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | (1 << BCM_FIELD_ACTION_VALID_OFFSET)) 23682 23683 /* 23684 * Flag to indicate position or priority. 1 means we indicate a specific 23685 * position. 0 means we indicate a numerical priority. 23686 */ 23687 #define BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET (20) 23688 23689 #define BCM_FIELD_ACTION_POSITION(_array_id_, _position_) \ 23690 (((((bcm_field_action_priority_t) (_position_)) & BCM_FIELD_ACTION_POSITION_MASK) | \ 23691 ((((bcm_field_action_priority_t) (_array_id_)) & BCM_FIELD_ACTION_ARRAY_MASK) \ 23692 << BCM_FIELD_ACTION_ARRAY_OFFSET) | \ 23693 (1 << BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET) | \ 23694 ((0 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | \ 23695 (1 << BCM_FIELD_ACTION_VALID_OFFSET)))) 23696 23697 #define BCM_FIELD_ACTION_PRIORITY(_array_id_, _priority_) \ 23698 (((((bcm_field_action_priority_t) (_priority_)) & BCM_FIELD_ACTION_PRIORITY_MASK) | \ 23699 (((bcm_field_action_priority_t) (_array_id_)) << BCM_FIELD_ACTION_ARRAY_OFFSET) | \ 23700 (0 << BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET) | \ 23701 ((0 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | \ 23702 (1 << BCM_FIELD_ACTION_VALID_OFFSET)))) 23703 23704 /* 23705 * The Enum described the system header profile types, which are used in 23706 * order to build the appropriate system headers in the Ingress Transmit 23707 * unit. 23708 */ 23709 typedef enum bcm_field_system_header_profile_e { 23710 bcmFieldSystemHeaderProfileFirst = 0, /* Invalid Param. */ 23711 bcmFieldSystemHeaderProfileNone = bcmFieldSystemHeaderProfileFirst, /* No system Headers. */ 23712 bcmFieldSystemHeaderProfileFtmh = 1, /* FTMH only. */ 23713 bcmFieldSystemHeaderProfileFtmhPph = 2, /* FTMH + PP header. */ 23714 bcmFieldSystemHeaderProfileFtmhTsh = 3, /* FTMH + Timestamp header. */ 23715 bcmFieldSystemHeaderProfileFtmhTshPph = 4, /* FTMH +Timestamp +PP header. */ 23716 bcmFieldSystemHeaderProfileFtmhTshPphUdh = 5, /* FTMH +Timestamp +PP header + User 23717 defined Header. Used for Ethernet 23718 header. */ 23719 bcmFieldSystemHeaderProfileCount = 6 /* Always last. Not a usable value. */ 23720 } bcm_field_system_header_profile_t; 23721 23722 #define BCM_FIELD_SYSTEM_HEADER_PROFILE_STRINGS \ 23723 { \ 23724 "None", \ 23725 "Ftmh", \ 23726 "FtmhPph", \ 23727 "FtmhTsh", \ 23728 "FtmhTshPph", \ 23729 "FtmhTshPphUdh" \ 23730 } 23731 23732 /* Range Qualifier Types */ 23733 typedef enum bcm_field_range_type_e { 23734 bcmFieldRangeTypeFirst = 0, /* Invalid Param. */ 23735 bcmFieldRangeTypeL4SrcPort = bcmFieldRangeTypeFirst, /* L4 Source Port Range Qualifier. */ 23736 bcmFieldRangeTypeL4DstPort = 1, /* L4 Destination Port Range Qualifier. */ 23737 bcmFieldRangeTypeOutVport = 2, /* Egress Virtual Port Range Qualifier. */ 23738 bcmFieldRangeTypePacketHeaderSize = 3, /* Packet Header Size Range Qualifier. */ 23739 bcmFieldRangeTypeCount = 4 /* Always last. Not a usable value. */ 23740 } bcm_field_range_type_t; 23741 23742 /* 23743 * This structure holds the info about range configuration, needed for 23744 * bcm_field_range_set API. 23745 */ 23746 typedef struct bcm_field_range_info_s { 23747 bcm_field_range_type_t range_type; /* Range type */ 23748 uint32 min_val; /* Minimum value of the range. */ 23749 uint32 max_val; /* Maximum value of the range. */ 23750 } bcm_field_range_info_t; 23751 23752 #ifndef BCM_HIDE_DISPATCHABLE 23753 23754 /* Set new Field Range used for range qualfier. */ 23755 extern int bcm_field_range_set( 23756 int unit, 23757 uint32 flags, 23758 bcm_field_stage_t stage, 23759 bcm_field_range_t range_id, 23760 bcm_field_range_info_t *range_info); 23761 23762 /* Get the information about a specific Range used for range qualfier */ 23763 extern int bcm_field_range_info_get( 23764 int unit, 23765 bcm_field_stage_t stage, 23766 bcm_field_range_t *range_id, 23767 bcm_field_range_info_t *range_info); 23768 23769 /* Get the offset of the qualifier in the key. */ 23770 extern int bcm_field_group_qualifier_offset_get( 23771 int unit, 23772 uint32 flags, 23773 bcm_field_group_t fg_id, 23774 bcm_field_qualify_t qualifier, 23775 int *offset); 23776 23777 /* Get the offset of the action in the action payload. */ 23778 extern int bcm_field_group_action_offset_get( 23779 int unit, 23780 uint32 flags, 23781 bcm_field_group_t fg_id, 23782 bcm_field_action_t action, 23783 int *offset); 23784 23785 #endif /* BCM_HIDE_DISPATCHABLE */ 23786 23787 /* Forwarding Layer Types. */ 23788 typedef enum bcm_field_layer_type_e { 23789 bcmFieldLayerTypeFirst = 0, 23790 bcmFieldLayerTypeEth = bcmFieldLayerTypeFirst, 23791 bcmFieldLayerTypeIp4 = 1, 23792 bcmFieldLayerTypeIp6 = 2, 23793 bcmFieldLayerTypeMpls = 3, 23794 bcmFieldLayerTypeMplsUa = 4, 23795 bcmFieldLayerTypeArp = 5, 23796 bcmFieldLayerTypeFcoe = 6, 23797 bcmFieldLayerTypeTcp = 7, 23798 bcmFieldLayerTypeUdp = 8, 23799 bcmFieldLayerTypeBfdSingleHop = 9, 23800 bcmFieldLayerTypeBfdMultiHop = 10, 23801 bcmFieldLayerTypePtpEvent = 11, 23802 bcmFieldLayerTypePtpGeneral = 12, 23803 bcmFieldLayerTypeY1731 = 13, 23804 bcmFieldLayerTypeIcmp = 14, 23805 bcmFieldLayerTypeBierTi = 15, 23806 bcmFieldLayerTypeBierMpls = 16, 23807 bcmFieldLayerTypeRch = 17, 23808 bcmFieldLayerTypePppoe = 18, 23809 bcmFieldLayerTypeSrv6Endpoint = 19, 23810 bcmFieldLayerTypeSrv6Beyond = 20, 23811 bcmFieldLayerTypeIgmp = 21, 23812 bcmFieldLayerTypeIpAny = 22, 23813 bcmFieldLayerTypeGre = 23, 23814 bcmFieldLayerTypeLt2pv3 = 24, 23815 bcmFieldLayerTypeVxlanGpe = 25, 23816 bcmFieldLayerTypeVxlan = 26, 23817 bcmFieldLayerTypeGeneve = 27, 23818 bcmFieldLayerTypeIpt = 28, 23819 bcmFieldLayerTypeTm = 29, 23820 bcmFieldLayerTypeUnknown = 30, 23821 bcmFieldLayerTypeTmLegacy = 31, 23822 bcmFieldLayerTypeCount = 32 /* Always last. Not a usable value. */ 23823 } bcm_field_layer_type_t; 23824 23825 #define BCM_FIELD_LAYER_TYPE_STRINGS \ 23826 { \ 23827 "Eth", \ 23828 "Ip4", \ 23829 "Ip6", \ 23830 "Mpls", \ 23831 "MplsUa", \ 23832 "Arp", \ 23833 "Fcoe", \ 23834 "Tcp", \ 23835 "Udp", \ 23836 "BfdSingleHop", \ 23837 "BfdMultiHop", \ 23838 "PtpEvent", \ 23839 "PtpGeneral", \ 23840 "Y1731", \ 23841 "Icmp", \ 23842 "BierTi", \ 23843 "BierMpls", \ 23844 "Rch", \ 23845 "Pppoe", \ 23846 "Srv6Endpoint", \ 23847 "Srv6Beyond", \ 23848 "Igmp", \ 23849 "IpAny", \ 23850 "Gre", \ 23851 "Lt2pv3", \ 23852 "VxlanGpe", \ 23853 "Vxlan", \ 23854 "Geneve", \ 23855 "Ipt", \ 23856 "Tm", \ 23857 "Unknown", \ 23858 "TmLegacy" \ 23859 } 23860 23861 /* The place of is_meter bit inside the stat profile. */ 23862 #define BCM_FILED_STAT_IS_METER_SHIFT (0) 23863 23864 /* The place of is_lm bit inside the stat profile. */ 23865 #define BCM_FILED_STAT_IS_LM_SHIFT (1) 23866 23867 /* The place of stat type bits inside the stat profile. */ 23868 #define BCM_FILED_STAT_TYPE_SHIFT (2) 23869 23870 /* The place, whre the valid bit is located, inside the stat profile. */ 23871 #define BCM_FILED_STAT_VALID_SHIFT (4) 23872 23873 /* Parameters info for Field Action. */ 23874 typedef struct bcm_field_action_params_s { 23875 uint32 param0; /* First Parameter to Action */ 23876 uint32 param1; /* Second Parameter to Action */ 23877 bcm_pbmp_t pbmp; /* Port bitmap */ 23878 } bcm_field_action_params_t; 23879 23880 /* Match configuration info for Field Action. */ 23881 typedef struct bcm_field_action_match_config_s { 23882 uint8 elephant_pkt_only; /* To match only elephant flows */ 23883 bcm_pbmp_t egr_pbmp; /* Match Pbmp for Egress Port */ 23884 } bcm_field_action_match_config_t; 23885 23886 #ifndef BCM_HIDE_DISPATCHABLE 23887 23888 /* Add an action to a field entry with a specific match criteria. */ 23889 extern int bcm_field_action_config_info_add( 23890 int unit, 23891 bcm_field_entry_t entry, 23892 bcm_field_action_t action, 23893 bcm_field_action_params_t *params, 23894 bcm_field_action_match_config_t *match_config); 23895 23896 /* Delete an action from a field entry with a specific match criteria. */ 23897 extern int bcm_field_action_config_info_get( 23898 int unit, 23899 bcm_field_entry_t entry, 23900 bcm_field_action_t action, 23901 bcm_field_action_params_t *params, 23902 bcm_field_action_match_config_t *match_config); 23903 23904 /* 23905 * Configure match criteria for bcmFieldQualifyRangeCheckGroup 23906 * qualifier from the field entry. 23907 */ 23908 extern int bcm_field_qualify_RangeCheckGroup( 23909 int unit, 23910 bcm_field_entry_t entry, 23911 uint8 data, 23912 uint8 mask); 23913 23914 /* 23915 * Get match criteria for bcmFieldQualifyRangeCheckGroup 23916 * qualifier from the field entry. 23917 */ 23918 extern int bcm_field_qualify_RangeCheckGroup_get( 23919 int unit, 23920 bcm_field_entry_t entry, 23921 uint8 *data, 23922 uint8 *mask); 23923 23924 /* 23925 * Qualifies on Flow group id assigned(bcmFieldActionFlowtrackerGroupId) 23926 * by FlowTracker based Field Processor Stage. 23927 */ 23928 extern int bcm_field_qualify_FlowtrackerGroupId( 23929 int unit, 23930 bcm_field_entry_t entry, 23931 int data, 23932 int mask); 23933 23934 /* 23935 * To get the qualified inputs on Flow group id assigned 23936 * (bcmFieldActionFlowtrackerGroupId) by FlowTracker based Field 23937 * Processor Stage. 23938 */ 23939 extern int bcm_field_qualify_FlowtrackerGroupId_get( 23940 int unit, 23941 bcm_field_entry_t entry, 23942 int *data, 23943 int *mask); 23944 23945 /* Qualifies on Classifier ID from Flowtracker group */ 23946 extern int bcm_field_qualify_FlowtrackerClassId( 23947 int unit, 23948 bcm_field_entry_t entry, 23949 int data, 23950 int mask); 23951 23952 /* To get the qualified inputs on Classifier ID from Flowtracker group. */ 23953 extern int bcm_field_qualify_FlowtrackerClassId_get( 23954 int unit, 23955 bcm_field_entry_t entry, 23956 int *data, 23957 int *mask); 23958 23959 /* Qualifies on event Flowtracker group valid or not. */ 23960 extern int bcm_field_qualify_FlowtrackerGroupValid( 23961 int unit, 23962 bcm_field_entry_t entry, 23963 uint8 data, 23964 uint8 mask); 23965 23966 /* To get the qualified inputs on event Flowtracker group valid or not */ 23967 extern int bcm_field_qualify_FlowtrackerGroupValid_get( 23968 int unit, 23969 bcm_field_entry_t entry, 23970 uint8 *data, 23971 uint8 *mask); 23972 23973 /* Qualifies on event whether Flowtracker flow tracking is disabled. */ 23974 extern int bcm_field_qualify_FlowtrackerDisabled( 23975 int unit, 23976 bcm_field_entry_t entry, 23977 uint8 data, 23978 uint8 mask); 23979 23980 /* 23981 * To get the qualified inputs on event whether Flowtracker flow tracking 23982 * is disabled. 23983 */ 23984 extern int bcm_field_qualify_FlowtrackerDisabled_get( 23985 int unit, 23986 bcm_field_entry_t entry, 23987 uint8 *data, 23988 uint8 *mask); 23989 23990 /* Qualifies on event Flowtracker group valid or not. */ 23991 extern int bcm_field_qualify_FlowtrackerMeteringExceeded( 23992 int unit, 23993 bcm_field_entry_t entry, 23994 uint8 data, 23995 uint8 mask); 23996 23997 /* 23998 * To get the qualified inputs on event whether Flowtracker metering is 23999 * exceeded. 24000 */ 24001 extern int bcm_field_qualify_FlowtrackerMeteringExceeded_get( 24002 int unit, 24003 bcm_field_entry_t entry, 24004 uint8 *data, 24005 uint8 *mask); 24006 24007 /* 24008 * Qualifies on the event whether initial or sample copied to collector 24009 * happened by Flowtracker. 24010 */ 24011 extern int bcm_field_qualify_FlowtrackerCollectorCopy( 24012 int unit, 24013 bcm_field_entry_t entry, 24014 uint8 data, 24015 uint8 mask); 24016 24017 /* 24018 * To get the qualified inputs on event whether initial or sample copied 24019 * to collector happened by Flowtracker. 24020 */ 24021 extern int bcm_field_qualify_FlowtrackerCollectorCopy_get( 24022 int unit, 24023 bcm_field_entry_t entry, 24024 uint8 *data, 24025 uint8 *mask); 24026 24027 /* Qualifies on the Flowtracker event whether the flow table is full. */ 24028 extern int bcm_field_qualify_FlowtrackerFlowTableFull( 24029 int unit, 24030 bcm_field_entry_t entry, 24031 uint8 data, 24032 uint8 mask); 24033 24034 /* 24035 * To get the qualified inputs on Flowtracker event whether the flow 24036 * table is full. 24037 */ 24038 extern int bcm_field_qualify_FlowtrackerFlowTableFull_get( 24039 int unit, 24040 bcm_field_entry_t entry, 24041 uint8 *data, 24042 uint8 *mask); 24043 24044 /* Qualifies on the event whether flow limit for Flowtracker is exceeded. */ 24045 extern int bcm_field_qualify_FlowtrackerGroupFlowExceeded( 24046 int unit, 24047 bcm_field_entry_t entry, 24048 uint8 data, 24049 uint8 mask); 24050 24051 /* 24052 * To get the qualified inputs on the event whether flow limit for 24053 * Flowtracker is exceeded. 24054 */ 24055 extern int bcm_field_qualify_FlowtrackerGroupFlowExceeded_get( 24056 int unit, 24057 bcm_field_entry_t entry, 24058 uint8 *data, 24059 uint8 *mask); 24060 24061 /* Qualifies on the event whether Flowtracker export queue is full. */ 24062 extern int bcm_field_qualify_FlowtrackerExportQueueFull( 24063 int unit, 24064 bcm_field_entry_t entry, 24065 uint8 data, 24066 uint8 mask); 24067 24068 /* 24069 * To get the qualified inputs on the event whether Flowtracker export 24070 * queue is full. 24071 */ 24072 extern int bcm_field_qualify_FlowtrackerExportQueueFull_get( 24073 int unit, 24074 bcm_field_entry_t entry, 24075 uint8 *data, 24076 uint8 *mask); 24077 24078 #endif /* BCM_HIDE_DISPATCHABLE */ 24079 24080 /* Initialize the bcm_field_range_info_t structure. */ 24081 extern void bcm_field_range_info_t_init( 24082 bcm_field_range_info_t *range_info); 24083 24084 #ifndef BCM_HIDE_DISPATCHABLE 24085 24086 /* Qualifies on the tag type configured for opaque tags. */ 24087 extern int bcm_field_qualify_OpaqueTagType( 24088 int unit, 24089 bcm_field_entry_t entry, 24090 uint8 data, 24091 uint8 mask); 24092 24093 /* 24094 * To get the qualified inputs on the tag type configured for opaque 24095 * tags. 24096 */ 24097 extern int bcm_field_qualify_OpaqueTagType_get( 24098 int unit, 24099 bcm_field_entry_t entry, 24100 uint8 *data, 24101 uint8 *mask); 24102 24103 /* Qualifies on the higher 32 bits of opaque tag allowed in the system */ 24104 extern int bcm_field_qualify_OpaqueTagHigh( 24105 int unit, 24106 bcm_field_entry_t entry, 24107 uint32 data, 24108 uint32 mask); 24109 24110 /* 24111 * To get the qualified inputs on the higher 32 bits of opaque tag 24112 * allowed in the system. 24113 */ 24114 extern int bcm_field_qualify_OpaqueTagHigh_get( 24115 int unit, 24116 bcm_field_entry_t entry, 24117 uint32 *data, 24118 uint32 *mask); 24119 24120 /* Qualifies on the lower 32 bits of opaque tag allowed in the system */ 24121 extern int bcm_field_qualify_OpaqueTagLow( 24122 int unit, 24123 bcm_field_entry_t entry, 24124 uint32 data, 24125 uint32 mask); 24126 24127 /* 24128 * To get the qualified inputs on the lower 32 bits of opaque tag allowed 24129 * in the system. 24130 */ 24131 extern int bcm_field_qualify_OpaqueTagLow_get( 24132 int unit, 24133 bcm_field_entry_t entry, 24134 uint32 *data, 24135 uint32 *mask); 24136 24137 #endif /* BCM_HIDE_DISPATCHABLE */ 24138 24139 /* Dos Attack Events. */ 24140 #define BCM_FIELD_DOSATTACK_MACSA_DA_SAME (1 << 0) /* Dos Attack Event when 24141 Source MAC is same as 24142 Destination MAC. */ 24143 #define BCM_FIELD_DOSATTACK_IPFRAG_OFFSET (1 << 1) /* Dos Attack Event when 24144 Protocol field Offset 24145 in IPv4 Header is 24146 equal to 1. */ 24147 #define BCM_FIELD_DOSATTACK_V6_TYPE0_ROUTING_HDR (1 << 2) /* Dos Attack Event when 24148 Type0 Routing 24149 Extension header is 24150 present in IPv6. */ 24151 #define BCM_FIELD_DOSATTACK_V6_NON_LAST_FRAG_LT_1280 (1 << 3) /* Dos Attack Event when 24152 non-last fragment of 24153 IPv6 Packet is less 24154 than 1280 bytes. */ 24155 #define BCM_FIELD_DOSATTACK_FIRST_TCPIP_FRAG_SMALL (1 << 4) /* Dos Attack Event when 24156 First Fragment of IP 24157 payload with TCP is 24158 smaller than 24159 configured value. */ 24160 #define BCM_FIELD_DOSATTACK_TCP_OFFSET (1 << 5) /* Dos Attack Event when 24161 L4 is TCP and IP 24162 protocol offset is 24163 equal to 1. */ 24164 #define BCM_FIELD_DOSATTACK_SYN_FRAG (1 << 6) /* Dos Attack Event when 24165 TCP SYN Packet with 24166 Source Port 0-1023 for 24167 non-first fragments 24168 tcp/udp port values 24169 are always zero. */ 24170 #define BCM_FIELD_DOSATTACK_FLAGZERO_SEQZERO (1 << 7) /* Dos Attack Event when 24171 TCP Packets with 24172 control flags == 0 and 24173 sequence number == 0. */ 24174 #define BCM_FIELD_DOSATTACK_TCPFLAGS_FUP (1 << 8) /* Dos Attack Event when 24175 TCP Packets with 24176 FIN,URG & PSH bits set 24177 & sequence number == 24178 0. */ 24179 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SF (1 << 9) /* Dos Attack Event when 24180 TCP packets with SYN 24181 and FIN set. */ 24182 #define BCM_FIELD_DOSATTACK_TCPPORTS_EQUAL (1 << 10) /* Dos Attack Event when 24183 TCP Source and 24184 Destination ports are 24185 same. */ 24186 #define BCM_FIELD_DOSATTACK_UDPPORTS_EQUAL (1 << 11) /* Dos Attack Event when 24187 UDP Source and 24188 Destination ports are 24189 same. */ 24190 #define BCM_FIELD_DOSATTACK_ICMP (1 << 12) /* Dos Attack Event when 24191 ICMP V4 and V6 ping 24192 packet with payload 24193 bigger than configured 24194 value. */ 24195 #define BCM_FIELD_DOSATTACK_ICMPFRAGMENTS (1 << 13) /* Dos Attack Event when 24196 IPv4/IPv6 fragmented 24197 ICMP packets. */ 24198 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SR (1 << 14) /* Dos Attack Event when 24199 TCP packets with SYN 24200 and RST set. */ 24201 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SYN_FIRSTFRAG (1 << 15) /* Dos Attack Event when 24202 TCP with SYN set and 24203 first fragment of 24204 fragmented IP packet. */ 24205 #define BCM_FIELD_DOSATTACK_TCPFLAGS_FIN_NOACK (1 << 16) /* Dos Attack Event when 24206 TCP packet with FIN 24207 set but ACK not set. */ 24208 #define BCM_FIELD_DOSATTACK_TCPFLAGS_RST_NOACK (1 << 17) /* Dos Attack Event when 24209 TCP packet with RST 24210 set but ACK not set. */ 24211 #define BCM_FIELD_DOSATTACK_TCPFLAGS_NOSFRA (1 << 18) /* Dos Attack Event when 24212 TCP packet with SYN, 24213 FIN, RST and ACK not 24214 set. */ 24215 #define BCM_FIELD_DOSATTACK_TCP_DSTPORT_ZERO (1 << 19) /* Dos Attack Event when 24216 TCP packet with 24217 Destination port 24218 equals to 0. */ 24219 #define BCM_FIELD_DOSATTACK_TCP_SRCPORT_ZERO (1 << 20) /* Dos Attack Event when 24220 TCP packet with Source 24221 port equals to 0. */ 24222 #define BCM_FIELD_DOSATTACK_TCP_DST_IP_BCAST (1 << 21) /* Dos Attack Event when 24223 TCP Packet with 24224 Destination IP 24225 Broadcast. */ 24226 #define BCM_FIELD_DOSATTACK_TCPFLAGS_ZERO (1 << 22) /* Dos Attack Event when 24227 configured TCP flags 24228 is zero. */ 24229 #define BCM_FIELD_DOSATTACK_TCPFLAGS_RESVD_NONZERO (1 << 23) /* Dos Attack Event when 24230 configured Reserved 24231 flags is non-zero. */ 24232 #define BCM_FIELD_DOSATTACK_TCPFLAGS_ACK (1 << 24) /* Dos Attack Event when 24233 TCP flag ACK is set 24234 and Acknowledge number 24235 is zero. */ 24236 #define BCM_FIELD_DOSATTACK_TCPFLAGS_URG_NOURGPTR (1 << 25) /* Dos Attack Event when 24237 TCP Flag URG set and 24238 Urgent pointer is 24239 zero. */ 24240 #define BCM_FIELD_DOSATTACK_TCPFLAGS_NOURG_URGPTR (1 << 26) /* Dos Attack Event when 24241 TCP Flag URG not set 24242 and Urgent pointer is 24243 not zero. */ 24244 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SYNOPTION (1 << 27) /* Dos Attack Event when 24245 TCP Flag SYN set and 24246 Option same as 24247 configured value. */ 24248 24249 #ifndef BCM_HIDE_DISPATCHABLE 24250 24251 /* 24252 * Configure match criteria for bcmFieldQualifyInnerDosAttack 24253 * qualifier for the field entry. 24254 */ 24255 extern int bcm_field_qualify_InnerDosAttack( 24256 int unit, 24257 bcm_field_entry_t entry, 24258 uint8 data, 24259 uint8 mask); 24260 24261 /* 24262 * Get match criteria for bcmFieldQualifyInnerDosAttack 24263 * qualifier from the field entry. 24264 */ 24265 extern int bcm_field_qualify_InnerDosAttack_get( 24266 int unit, 24267 bcm_field_entry_t entry, 24268 uint8 *data, 24269 uint8 *mask); 24270 24271 /* 24272 * Configure match criteria for bcmFieldQualifyDosAttackEvents 24273 * qualifier for the field entry. 24274 */ 24275 extern int bcm_field_qualify_DosAttackEvents( 24276 int unit, 24277 bcm_field_entry_t entry, 24278 uint32 data, 24279 uint32 mask); 24280 24281 /* 24282 * Get match criteria for bcmFieldQualifyDosAttackEvents 24283 * qualifier from the field entry. 24284 */ 24285 extern int bcm_field_qualify_DosAttackEvents_get( 24286 int unit, 24287 bcm_field_entry_t entry, 24288 uint32 *data, 24289 uint32 *mask); 24290 24291 /* 24292 * Configure match criteria for bcmFieldQualifyInnerDosAttackEvents 24293 * qualifier for the field entry. 24294 */ 24295 extern int bcm_field_qualify_InnerDosAttackEvents( 24296 int unit, 24297 bcm_field_entry_t entry, 24298 uint32 data, 24299 uint32 mask); 24300 24301 /* 24302 * Get match criteria for bcmFieldQualifyInnerDosAttackEvents 24303 * qualifier from the field entry. 24304 */ 24305 extern int bcm_field_qualify_InnerDosAttackEvents_get( 24306 int unit, 24307 bcm_field_entry_t entry, 24308 uint32 *data, 24309 uint32 *mask); 24310 24311 #endif /* BCM_HIDE_DISPATCHABLE */ 24312 24313 /* Parameters for bcmFieldActionDlbEcmpMonitorEnable */ 24314 #define BCM_FIELD_DLB_ECMP_MON_DISABLE (1 << 0) /* Enabling Dlb Ecmp Monitor 24315 support */ 24316 #define BCM_FIELD_DLB_ECMP_MON_ENABLE (1 << 1) /* Disabling Dlb Ecmp Monitor 24317 support */ 24318 24319 #ifndef BCM_HIDE_DISPATCHABLE 24320 24321 /* Set match criteria for Container qualifier. */ 24322 extern int bcm_field_qualify_Container( 24323 int unit, 24324 bcm_field_entry_t entry, 24325 uint64 data, 24326 uint64 mask); 24327 24328 /* Get match criteria for Container qualifier. */ 24329 extern int bcm_field_qualify_Container_get( 24330 int unit, 24331 bcm_field_entry_t entry, 24332 uint64 *data, 24333 uint64 *mask); 24334 24335 /* 24336 * To Qualify on Class identifier assigned by Egress adaptation 24337 * forwarding tables. 24338 */ 24339 extern int bcm_field_qualify_EgressForwardingClassId( 24340 int unit, 24341 bcm_field_entry_t entry, 24342 int data, 24343 int mask); 24344 24345 /* 24346 * To get the qualified inputs on Class identifier assigned by Egress 24347 * adaptation forwarding tables. 24348 */ 24349 extern int bcm_field_qualify_EgressForwardingClassId_get( 24350 int unit, 24351 bcm_field_entry_t entry, 24352 int *data, 24353 int *mask); 24354 24355 #endif /* BCM_HIDE_DISPATCHABLE */ 24356 24357 /* bcm_field_pkt_flow_type_e */ 24358 typedef enum bcm_field_pkt_flow_type_e { 24359 bcmFieldPktFlowTypeTunnelNone = 0, /* Type to identify non-tunnel flows 24360 like access or transit flows. */ 24361 bcmFieldPktFlowTypeTunnelL2 = 1, /* Type to identify L2 Tunnel flows. */ 24362 bcmFieldPktFlowTypeTunnelL3 = 2, /* Type to identify L3 Tunnel flows. */ 24363 bcmFieldPktFlowTypeLastCount = 4 /* Always Last. Not a usable value. */ 24364 } bcm_field_pkt_flow_type_t; 24365 24366 #define BCM_FIELD_PKT_FLOW_TYPE \ 24367 { \ 24368 "TunnelNone", \ 24369 "TunnelL2", \ 24370 "TunnelL3" \ 24371 } 24372 24373 #ifndef BCM_HIDE_DISPATCHABLE 24374 24375 /* 24376 * Set qualification to define packet flow for a given entry. This API is 24377 * normally used for preselectors. 24378 */ 24379 extern int bcm_field_qualify_PktFlowType( 24380 int unit, 24381 bcm_field_entry_t entry, 24382 bcm_field_pkt_flow_type_t type); 24383 24384 /* 24385 * Retrieve packet flow type configured for given entry id. This API is 24386 * normally used for preselectors. 24387 */ 24388 extern int bcm_field_qualify_PktFlowType_get( 24389 int unit, 24390 bcm_field_entry_t entry, 24391 bcm_field_pkt_flow_type_t *type); 24392 24393 /* To Qualify on Class identifier assigned by Vlan Translate tables. */ 24394 extern int bcm_field_qualify_VlanTranslateClassId( 24395 int unit, 24396 bcm_field_entry_t entry, 24397 uint16 data, 24398 uint16 mask); 24399 24400 /* 24401 * To get the qualified inputs on Class identifier assigned by Vlan 24402 * Translate tables. 24403 */ 24404 extern int bcm_field_qualify_VlanTranslateClassId_get( 24405 int unit, 24406 bcm_field_entry_t entry, 24407 uint16 *data, 24408 uint16 *mask); 24409 24410 /* To Qualify on identifier field available in IP header. */ 24411 extern int bcm_field_qualify_IpIdentifier( 24412 int unit, 24413 bcm_field_entry_t entry, 24414 uint16 data, 24415 uint16 mask); 24416 24417 /* To get the qualified inputs on IP identifier. */ 24418 extern int bcm_field_qualify_IpIdentifier_get( 24419 int unit, 24420 bcm_field_entry_t entry, 24421 uint16 *data, 24422 uint16 *mask); 24423 24424 /* 24425 * Configure match criteria for bcmFieldQualifyIp4Length 24426 * qualifier for the field entry. 24427 */ 24428 extern int bcm_field_qualify_Ip4Length( 24429 int unit, 24430 bcm_field_entry_t entry, 24431 uint16 data, 24432 uint16 mask); 24433 24434 /* 24435 * Get match criteria for bcmFieldQualifyIp4Length 24436 * qualifier from the field entry. 24437 */ 24438 extern int bcm_field_qualify_Ip4Length_get( 24439 int unit, 24440 bcm_field_entry_t entry, 24441 uint16 *data, 24442 uint16 *mask); 24443 24444 /* 24445 * Configure match criteria for bcmFieldQualifyIp6Length 24446 * qualifier for the field entry. 24447 */ 24448 extern int bcm_field_qualify_Ip6Length( 24449 int unit, 24450 bcm_field_entry_t entry, 24451 uint16 data, 24452 uint16 mask); 24453 24454 /* 24455 * Get match criteria for bcmFieldQualifyIp6Length 24456 * qualifier from the field entry. 24457 */ 24458 extern int bcm_field_qualify_Ip6Length_get( 24459 int unit, 24460 bcm_field_entry_t entry, 24461 uint16 *data, 24462 uint16 *mask); 24463 24464 /* 24465 * Configure match criteria for bcmFieldQualifyTunnelPayloadIp4Length 24466 * qualifier for the field entry. 24467 */ 24468 extern int bcm_field_qualify_TunnelPayloadIp4Length( 24469 int unit, 24470 bcm_field_entry_t entry, 24471 uint16 data, 24472 uint16 mask); 24473 24474 /* 24475 * Get match criteria for bcmFieldQualifyTunnelPayloadIp4Length 24476 * qualifier from the field entry. 24477 */ 24478 extern int bcm_field_qualify_TunnelPayloadIp4Length_get( 24479 int unit, 24480 bcm_field_entry_t entry, 24481 uint16 *data, 24482 uint16 *mask); 24483 24484 /* 24485 * Configure match criteria for bcmFieldQualifyTunnelPayloadIp6Length 24486 * qualifier for the field entry. 24487 */ 24488 extern int bcm_field_qualify_TunnelPayloadIp6Length( 24489 int unit, 24490 bcm_field_entry_t entry, 24491 uint16 data, 24492 uint16 mask); 24493 24494 /* 24495 * Get match criteria for bcmFieldQualifyTunnelPayloadIp6Length 24496 * qualifier from the field entry. 24497 */ 24498 extern int bcm_field_qualify_TunnelPayloadIp6Length_get( 24499 int unit, 24500 bcm_field_entry_t entry, 24501 uint16 *data, 24502 uint16 *mask); 24503 24504 /* To qualify on GBP Presence. */ 24505 extern int bcm_field_qualify_GbpPresent( 24506 int unit, 24507 bcm_field_entry_t entry, 24508 uint8 data, 24509 uint8 mask); 24510 24511 /* To get the qualified inputs on GBP Presence. */ 24512 extern int bcm_field_qualify_GbpPresent_get( 24513 int unit, 24514 bcm_field_entry_t entry, 24515 uint8 *data, 24516 uint8 *mask); 24517 24518 /* To qualify on HiGig GBP Presence. */ 24519 extern int bcm_field_qualify_HiGigGbpPresent( 24520 int unit, 24521 bcm_field_entry_t entry, 24522 uint8 data, 24523 uint8 mask); 24524 24525 /* To get the qualified inputs on HiGig GBP Presence. */ 24526 extern int bcm_field_qualify_HiGigGbpPresent_get( 24527 int unit, 24528 bcm_field_entry_t entry, 24529 uint8 *data, 24530 uint8 *mask); 24531 24532 /* To qualify on GBP Source ID of the packet. */ 24533 extern int bcm_field_qualify_GbpSrcId( 24534 int unit, 24535 bcm_field_entry_t entry, 24536 uint16 data, 24537 uint16 mask); 24538 24539 /* To get the qualified inputs on GBP Source ID. */ 24540 extern int bcm_field_qualify_GbpSrcId_get( 24541 int unit, 24542 bcm_field_entry_t entry, 24543 uint16 *data, 24544 uint16 *mask); 24545 24546 /* To qualify on GBP Destination ID of the packet. */ 24547 extern int bcm_field_qualify_GbpDstId( 24548 int unit, 24549 bcm_field_entry_t entry, 24550 uint16 data, 24551 uint16 mask); 24552 24553 /* To get the qualified inputs on GBP Destination ID. */ 24554 extern int bcm_field_qualify_GbpDstId_get( 24555 int unit, 24556 bcm_field_entry_t entry, 24557 uint16 *data, 24558 uint16 *mask); 24559 24560 /* To qualify on GBP source ID of the HIGIG packet. */ 24561 extern int bcm_field_qualify_HiGigGbpSrcId( 24562 int unit, 24563 bcm_field_entry_t entry, 24564 uint16 data, 24565 uint16 mask); 24566 24567 /* To get the qualified inputs on GBP source ID of the HIGIG packet. */ 24568 extern int bcm_field_qualify_HiGigGbpSrcId_get( 24569 int unit, 24570 bcm_field_entry_t entry, 24571 uint16 *data, 24572 uint16 *mask); 24573 24574 /* To qualify on Vxlan GBP Presence flag. */ 24575 extern int bcm_field_qualify_VxlanGbpPresent( 24576 int unit, 24577 bcm_field_entry_t entry, 24578 uint8 data, 24579 uint8 mask); 24580 24581 /* To get the qualified inputs on Vxlan GBP Presence flag. */ 24582 extern int bcm_field_qualify_VxlanGbpPresent_get( 24583 int unit, 24584 bcm_field_entry_t entry, 24585 uint8 *data, 24586 uint8 *mask); 24587 24588 /* 24589 * To qualify on the results of Flowtracker checker events in Flow 24590 * Tracker Module. 24591 */ 24592 extern int bcm_field_qualify_FlowtrackerCheck( 24593 int unit, 24594 bcm_field_entry_t entry, 24595 bcm_flowtracker_group_t flow_group_id, 24596 uint32 num_checks, 24597 bcm_field_flowtrackercheck_t *list_of_check_ids); 24598 24599 /* 24600 * To get qualified inputs on the results of Flowtracker checker events 24601 * in Flow Tracker Module. 24602 */ 24603 extern int bcm_field_qualify_FlowtrackerCheck_get( 24604 int unit, 24605 bcm_field_entry_t entry, 24606 bcm_flowtracker_group_t flow_group_id, 24607 uint32 num_checks, 24608 bcm_field_flowtrackercheck_t *list_of_check_ids, 24609 uint32 *actual_num_checks); 24610 24611 /* Qualifies whether the packet flow is learnt by Flowtracker module. */ 24612 extern int bcm_field_qualify_FlowtrackerLearn( 24613 int unit, 24614 bcm_field_entry_t entry, 24615 uint8 data, 24616 uint8 mask); 24617 24618 /* 24619 * To get the qualified inputs on whether the packet flow is learnt by 24620 * Flowtracker module. 24621 */ 24622 extern int bcm_field_qualify_FlowtrackerLearn_get( 24623 int unit, 24624 bcm_field_entry_t entry, 24625 uint8 *data, 24626 uint8 *mask); 24627 24628 /* To Qualify on the COS Map type type of bcm_field_cos_map_select_t. */ 24629 extern int bcm_field_qualify_CosMapSelect( 24630 int unit, 24631 bcm_field_entry_t entry, 24632 bcm_field_cos_map_select_t cos_map_select); 24633 24634 /* 24635 * To get qualified inputs on the COS Map type type of 24636 * bcm_field_cos_map_select_t. 24637 */ 24638 extern int bcm_field_qualify_CosMapSelect_get( 24639 int unit, 24640 bcm_field_entry_t entry, 24641 bcm_field_cos_map_select_t *cos_map_select); 24642 24643 /* 24644 * To Qualify on Opaque Object1 which was assigned by Flex modules for 24645 * example NSH, INT..etc and VFP 24646 */ 24647 extern int bcm_field_qualify_OpaqueObject1( 24648 int unit, 24649 bcm_field_entry_t entry, 24650 uint16 data, 24651 uint16 mask); 24652 24653 /* 24654 * To get qualifed inputs on Opaque Object1 which was assigned by Flex 24655 * modules for example NSH, INT..etc and VFP 24656 */ 24657 extern int bcm_field_qualify_OpaqueObject1_get( 24658 int unit, 24659 bcm_field_entry_t entry, 24660 uint16 *data, 24661 uint16 *mask); 24662 24663 /* 24664 * To Qualify on Opaque Object2 which was assigned by Flex modules for 24665 * example NSH, INT..etc and VFP 24666 */ 24667 extern int bcm_field_qualify_OpaqueObject2( 24668 int unit, 24669 bcm_field_entry_t entry, 24670 uint16 data, 24671 uint16 mask); 24672 24673 /* 24674 * To get qualifed inputs on Opaque Object2 which was assigned by Flex 24675 * modules for example NSH, INT..etc and VFP 24676 */ 24677 extern int bcm_field_qualify_OpaqueObject2_get( 24678 int unit, 24679 bcm_field_entry_t entry, 24680 uint16 *data, 24681 uint16 *mask); 24682 24683 /* 24684 * To Qualify on Opaque Object3 which was assigned by Flex modules for 24685 * example NSH, INT..etc and VFP 24686 */ 24687 extern int bcm_field_qualify_OpaqueObject3( 24688 int unit, 24689 bcm_field_entry_t entry, 24690 uint16 data, 24691 uint16 mask); 24692 24693 /* 24694 * To get qualifed inputs on Opaque Object3 which was assigned by Flex 24695 * modules for example NSH, INT..etc and VFP 24696 */ 24697 extern int bcm_field_qualify_OpaqueObject3_get( 24698 int unit, 24699 bcm_field_entry_t entry, 24700 uint16 *data, 24701 uint16 *mask); 24702 24703 /* 24704 * To Qualify on Opaque Object4 which was assigned by Flex modules for 24705 * example NSH, INT..etc and VFP 24706 */ 24707 extern int bcm_field_qualify_OpaqueObject4( 24708 int unit, 24709 bcm_field_entry_t entry, 24710 uint16 data, 24711 uint16 mask); 24712 24713 /* 24714 * To get qualifed inputs on Opaque Object4 which was assigned by Flex 24715 * modules for example NSH, INT..etc and VFP 24716 */ 24717 extern int bcm_field_qualify_OpaqueObject4_get( 24718 int unit, 24719 bcm_field_entry_t entry, 24720 uint16 *data, 24721 uint16 *mask); 24722 24723 /* To qualify on Incoming Outer VLAN ID of the packet */ 24724 extern int bcm_field_qualify_IncomingOuterVlanId( 24725 int unit, 24726 bcm_field_entry_t entry, 24727 bcm_vlan_t data, 24728 bcm_vlan_t mask); 24729 24730 /* To get the qualified inputs on Incoming Outer VLAN ID of the packet */ 24731 extern int bcm_field_qualify_IncomingOuterVlanId_get( 24732 int unit, 24733 bcm_field_entry_t entry, 24734 bcm_vlan_t *data, 24735 bcm_vlan_t *mask); 24736 24737 #endif /* BCM_HIDE_DISPATCHABLE */ 24738 24739 /* Loopback subtypes */ 24740 typedef enum bcm_field_loopback_subtype_e { 24741 bcmFieldLoopbackSubtypeIfa = 0, /* Loopback Subtype Inband Flow Analysis */ 24742 bcmFieldLoopbackSubtypeCount = 1 /* Always last. Not to be used. */ 24743 } bcm_field_loopback_subtype_t; 24744 24745 /* Egress Flow control for bcmFieldActionEgressFlowControlEnable */ 24746 typedef enum bcm_field_egress_flow_control_e { 24747 bcmFieldEgressFlowControlLoopbackRedirect = 0, /* Egress Flow Control for Loopback 24748 Redirect */ 24749 bcmFieldEgressFlowControlAppendIncomingOuterVlan = 1, /* The incoming Outer Vlan tag will be 24750 appended in the outgoing packet */ 24751 bcmFieldEgressFlowControlAppendOuterVlanNew = 2, /* New Outer Vlan tag will be appended 24752 in the outgoing packet */ 24753 bcmFieldEgressFlowControlTranslateSnatSrcIpOnly = 3, /* Source IP address translation for 24754 SNAT */ 24755 bcmFieldEgressFlowControlTranslateDnatSrcIpDstIp = 4, /* Source and Destination IP addresses 24756 translation for DNAT */ 24757 bcmFieldEgressFlowControlTranslateSnaptSrcIpL4SrcPort = 5, /* Source IP address and L4 Source port 24758 translation for SNAPT */ 24759 bcmFieldEgressFlowControlTranslateSnaptSrcIpDstIpL4SrcPortL4DstPort = 6, /* Source and Destination IP addresses 24760 and L4 Source and Destination ports 24761 translation for SNAPT */ 24762 bcmFieldEgressFlowControlTranslateDnatDstIpOnly = 7, /* Destination IP address translation 24763 for DNAT */ 24764 bcmFieldEgressFlowControlTranslateDnaptDstIpL4DstPort = 8, /* Destination IP address and L3 24765 destination port translation for 24766 DNAPT */ 24767 bcmFieldEgressFlowControlTranslateDnaptSrcIpDstIpL4SrcPortL4DstPort = 9, /* Source and Destination IP addresses 24768 and L4 Source and Destination ports 24769 translation for DNAPT */ 24770 bcmFieldEgressFlowControlTranslateIpmc = 10, /* Multicast NAT */ 24771 bcmFieldEgressFlowControlVlanNew = 11, /* Triggers Egress Vlan Translation 24772 Lookup for new VLAN */ 24773 bcmFieldEgressFlowControlSrcMacVlanNew = 12, /* Triggers Egress Vlan Translation 24774 Lookup for new Source MAC and VLAN */ 24775 bcmFieldEgressFlowControlDstMacVlanNew = 13, /* Triggers Egress Vlan Translation 24776 Lookup for new Destination MAC and 24777 VLAN */ 24778 bcmFieldEgressFlowControlSrcMacDstMacVlanNew = 14, /* Triggers Egress Vlan Translation 24779 Lookup for new Source and Destination 24780 MAC and VLAN */ 24781 bcmFieldEgressFlowControlTranslateSnatSrcIpDstIp = 15, /* Source and Destination IP addresses 24782 translation for SNAT */ 24783 bcmFieldEgressFlowControlCount = 16 /* Always last. Not to be used. */ 24784 } bcm_field_egress_flow_control_t; 24785 24786 /* Egress Flow Encap for bcmFieldActionEgressFlowEncapEnable */ 24787 typedef enum bcm_field_egress_flow_encap_e { 24788 bcmFieldEgressFlowEncapAppendIncomingOuterVlan = 0, /* The incoming Outer Vlan tag will be 24789 appended in the outgoing packet */ 24790 bcmFieldEgressFlowEncapMacsecEncryptRxAddSvtagForControlPkt = 1, /* SV Tag will be added for MACSEC Rx 24791 Control packets */ 24792 bcmFieldEgressFlowEncapMacsecEncryptTxDeleteSvtag = 2, /* SV Tag will be deleted from MACSEC Tx 24793 packets */ 24794 bcmFieldEgressFlowEncapTwampOwampTxTimestamp = 3, /* Insert Timestamp for TWAMP/OWAMP 24795 packet. */ 24796 bcmFieldEgressFlowEncapCount = 4 /* Always last. Not to be used. */ 24797 } bcm_field_egress_flow_encap_t; 24798 24799 #ifndef BCM_HIDE_DISPATCHABLE 24800 24801 /* To qualify on Subtype of the Loopback header. */ 24802 extern int bcm_field_qualify_LoopbackSubtype( 24803 int unit, 24804 bcm_field_entry_t entry, 24805 bcm_field_loopback_subtype_t lb_subtype); 24806 24807 /* To get qualified inputs on Subtype of the Loopback header. */ 24808 extern int bcm_field_qualify_LoopbackSubtype_get( 24809 int unit, 24810 bcm_field_entry_t entry, 24811 bcm_field_loopback_subtype_t *lb_subtype); 24812 24813 #endif /* BCM_HIDE_DISPATCHABLE */ 24814 24815 /* Parameters for bcmFieldActionDlbEcmpMonitorEnable */ 24816 #define BCM_FIELD_L3INGRESS_STRENGTH_HIGH (1 << 0) /* This prioritizes 24817 L3_TUNNEL/MPLS over 24818 VFP, Port and Vlan 24819 Mpls */ 24820 #define BCM_FIELD_L3INGRESS_STRENGTH_LOW (1 << 1) /* This prioritizes 24821 L3_TUNNEL/MPLS and 24822 Port over VFP and Vlan 24823 Mpls */ 24824 24825 /* Compare result operands between a pair of values. */ 24826 typedef enum bcm_field_compare_operand_e { 24827 bcmFieldCompareOperandFirst = 0, /* The first value is equal to the 24828 second value. */ 24829 bcmFieldCompareOperandEqual = bcmFieldCompareOperandFirst, /* The first value is equal to the 24830 second value. */ 24831 bcmFieldCompareOperandNotEqual = 1, /* The first value is not equal to the 24832 second value. */ 24833 bcmFieldCompareOperandFirstKeySmaller = 2, /* The first value is smaller then the 24834 second value. */ 24835 bcmFieldCompareOperandFirstKeyNotSmaller = 3, /* The first value is not smaller then 24836 the second value. */ 24837 bcmFieldCompareOperandFirstKeyBigger = 4, /* The first value is bigger then the 24838 second value. */ 24839 bcmFieldCompareOperandFirstKeyNotBigger = 5, /* The first value is not bigger then 24840 the second value. */ 24841 bcmFieldCompareOperandCount = 6 /* Always last. Number of Base Types. */ 24842 } bcm_field_compare_operand_t; 24843 24844 #define BCM_FIELD_COMPARE_OPERAND_STRINGS \ 24845 { \ 24846 "Equal", \ 24847 "NotEqual", \ 24848 "FirstKeySmaller", \ 24849 "FirstKeyNotSmaller", \ 24850 "FirstKeyBigger", \ 24851 "FirstKeyNotBigger" \ 24852 } 24853 24854 #ifndef BCM_HIDE_DISPATCHABLE 24855 24856 /* 24857 * Gives the offset of a specific compare operand inside the 6-bit 24858 * compare result. 24859 */ 24860 extern int bcm_field_compare_operand_offset_get( 24861 int unit, 24862 int pair_id, 24863 bcm_field_compare_operand_t compare_operand, 24864 int *offset); 24865 24866 #endif /* BCM_HIDE_DISPATCHABLE */ 24867 24868 /* 24869 * Field optional flag used for flushing hit indication info for all 24870 * entries. 24871 */ 24872 #define BCM_FIELD_ENTRY_HIT_FLUSH_ALL (1 << 1) 24873 24874 #ifndef BCM_HIDE_DISPATCHABLE 24875 24876 /* Get hit indication info for a specific entry per core. */ 24877 extern int bcm_field_entry_hit_get( 24878 int unit, 24879 uint32 flags, 24880 bcm_field_entry_t entry_handle, 24881 uint8 *entry_hit_core_bmp); 24882 24883 /* 24884 * This function flushes hit information of an entry or all entries, from 24885 * hardware. 24886 */ 24887 extern int bcm_field_entry_hit_flush( 24888 int unit, 24889 uint32 flags, 24890 bcm_field_entry_t entry_handle); 24891 24892 #endif /* BCM_HIDE_DISPATCHABLE */ 24893 24894 /* Ace context. */ 24895 typedef enum bcm_field_ace_context_e { 24896 bcmFieldAceContextFirst = 0, /* First element, not in use. */ 24897 bcmFieldAceContextNull = bcmFieldAceContextFirst, /* Null ACE context. */ 24898 bcmFieldAceContextReflector = 1, /* Ace context which is used for 24899 Reflector application (ERPP Trap). */ 24900 bcmFieldAceContextForwardingCodeOverride = 2, /* Ace context which is used Forwarding 24901 code override. */ 24902 bcmFieldAceContextCount = 3 /* Always last. Not a usable value. */ 24903 } bcm_field_ace_context_t; 24904 24905 #define BCM_FIELD_ACE_CONTEXT_STRINGS \ 24906 { \ 24907 "Null", \ 24908 "Reflector", \ 24909 "ForwardingCodeOverride" \ 24910 } 24911 24912 #ifndef BCM_HIDE_DISPATCHABLE 24913 24914 /* 24915 * Set match criteria for bcmFieldQualifyInVportDataIndex 24916 * qualifier in the field entry. 24917 */ 24918 extern int bcm_field_qualify_InVportDataIndex( 24919 int unit, 24920 bcm_field_entry_t entry, 24921 uint8 data, 24922 uint8 mask); 24923 24924 /* 24925 * Get match criteria for bcmFieldQualifyInVportDataIndex 24926 * qualifier from the field entry. 24927 */ 24928 extern int bcm_field_qualify_InVportDataIndex_get( 24929 int unit, 24930 bcm_field_entry_t entry, 24931 uint8 *data, 24932 uint8 *mask); 24933 24934 /* To Qualify on Underlay destination egress object ID */ 24935 extern int bcm_field_qualify_DstL3EgressUnderlay( 24936 int unit, 24937 bcm_field_entry_t entry, 24938 bcm_if_t if_id); 24939 24940 /* 24941 * Get match criteria for bcmFieldQualifyDstL3EgressUnderlay 24942 * qualifier from the field entry. 24943 */ 24944 extern int bcm_field_qualify_DstL3EgressUnderlay_get( 24945 int unit, 24946 bcm_field_entry_t entry, 24947 bcm_if_t *if_id); 24948 24949 /* 24950 * Set match criteria for bcmFieldQualifyDstL3EgressNextHopsUnderlay 24951 * qualifier in the field entry. 24952 */ 24953 extern int bcm_field_qualify_DstL3EgressNextHopsUnderlay( 24954 int unit, 24955 bcm_field_entry_t entry, 24956 uint32 data, 24957 uint32 mask); 24958 24959 /* 24960 * Get match criteria for bcmFieldQualifyDstL3EgressNextHopsUnderlay 24961 * qualifier from the field entry. 24962 */ 24963 extern int bcm_field_qualify_DstL3EgressNextHopsUnderlay_get( 24964 int unit, 24965 bcm_field_entry_t entry, 24966 uint32 *data, 24967 uint32 *mask); 24968 24969 /* To qualify on Class ID assigned to packet based on Egress Port. */ 24970 extern int bcm_field_qualify_EgressClassPort( 24971 int unit, 24972 bcm_field_entry_t entry, 24973 uint16 data, 24974 uint16 mask); 24975 24976 /* 24977 * To retrieve qualified inputs on Class ID assgined to packet based on 24978 * Egress Port 24979 */ 24980 extern int bcm_field_qualify_EgressClassPort_get( 24981 int unit, 24982 bcm_field_entry_t entry, 24983 uint16 *data, 24984 uint16 *mask); 24985 24986 /* 24987 * Set match criteria for bcmFieldQualifyINTProbeMarker1 qualifier for a 24988 * given field entry. 24989 */ 24990 extern int bcm_field_qualify_INTProbeMarker1( 24991 int unit, 24992 bcm_field_entry_t entry, 24993 uint32 data, 24994 uint32 mask); 24995 24996 /* 24997 * Get match criteria for bcmFieldQualifyINTProbeMarker1 qualifier for a 24998 * given field entry. 24999 */ 25000 extern int bcm_field_qualify_INTProbeMarker1_get( 25001 int unit, 25002 bcm_field_entry_t entry, 25003 uint32 *data, 25004 uint32 *mask); 25005 25006 /* 25007 * Set match criteria for bcmFieldQualifyINTProbeMarker2 qualifier for a 25008 * given field entry. 25009 */ 25010 extern int bcm_field_qualify_INTProbeMarker2( 25011 int unit, 25012 bcm_field_entry_t entry, 25013 uint32 data, 25014 uint32 mask); 25015 25016 /* 25017 * Get match criteria for bcmFieldQualifyINTProbeMarker2 qualifier for a 25018 * given field entry. 25019 */ 25020 extern int bcm_field_qualify_INTProbeMarker2_get( 25021 int unit, 25022 bcm_field_entry_t entry, 25023 uint32 *data, 25024 uint32 *mask); 25025 25026 /* 25027 * Set match criteria for bcmFieldQualifyINTReserved4Bytes qualifier for 25028 * a given field entry. 25029 */ 25030 extern int bcm_field_qualify_INTReserved4Bytes( 25031 int unit, 25032 bcm_field_entry_t entry, 25033 uint32 data, 25034 uint32 mask); 25035 25036 /* 25037 * Get match criteria for bcmFieldQualifyINTReserved4Bytes qualifier for 25038 * a given field entry. 25039 */ 25040 extern int bcm_field_qualify_INTReserved4Bytes_get( 25041 int unit, 25042 bcm_field_entry_t entry, 25043 uint32 *data, 25044 uint32 *mask); 25045 25046 /* To qualify on the type of Flow control packet */ 25047 extern int bcm_field_qualify_FlowControlType( 25048 int unit, 25049 bcm_field_entry_t entry, 25050 bcm_field_flow_control_pkt_type_t fc_type); 25051 25052 /* To get qualified inputs on the type of Flow control packet */ 25053 extern int bcm_field_qualify_FlowControlType_get( 25054 int unit, 25055 bcm_field_entry_t entry, 25056 bcm_field_flow_control_pkt_type_t *fc_type); 25057 25058 /* To qualify on Tx Timestamp packet type. */ 25059 extern int bcm_field_qualify_TimeStampTxPktType( 25060 int unit, 25061 bcm_field_entry_t entry, 25062 bcm_field_timestamp_transmit_pkt_type_t ts_pkt_type); 25063 25064 /* To get qualified inputs on Tx Timestamp packet type. */ 25065 extern int bcm_field_qualify_TimeStampTxPktType_get( 25066 int unit, 25067 bcm_field_entry_t entry, 25068 bcm_field_timestamp_transmit_pkt_type_t *ts_pkt_type); 25069 25070 /* To qualify on System Header Local Destination port */ 25071 extern int bcm_field_qualify_SysHdrLocalDstport( 25072 int unit, 25073 bcm_field_entry_t entry, 25074 bcm_port_t data, 25075 bcm_port_t mask); 25076 25077 /* To get qualified inputs on System Header Local Destination port */ 25078 extern int bcm_field_qualify_SysHdrLocalDstport_get( 25079 int unit, 25080 bcm_field_entry_t entry, 25081 bcm_port_t *data, 25082 bcm_port_t *mask); 25083 25084 #endif /* BCM_HIDE_DISPATCHABLE */ 25085 25086 #endif /* __BCM_FIELD_H__ */