openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

field.h (1186739B)


      1 /*
      2  * 
      3  * 
      4  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      5  * 
      6  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      7  *
      8  */
      9 
     10 #ifndef __BCM_FIELD_H__
     11 #define __BCM_FIELD_H__
     12 
     13 #include <bcm/types.h>
     14 #include <sal/core/libc.h>
     15 #include <shared/field.h>
     16 #include <bcm/policer.h>
     17 #include <bcm/port.h>
     18 #include <bcm/rx.h>
     19 #include <bcm/flowtracker.h>
     20 #include <bcm/subport.h>
     21 
     22 /* Entry priority. */
     23 #define BCM_FIELD_ENTRY_PRIO_HIGHEST    (0x7fffffff) /* Highest possible entry
     24                                                       priority in a group. */
     25 #define BCM_FIELD_ENTRY_PRIO_DONT_CARE  BCM_FIELD_ENTRY_PRIO_LOWEST /* Default entry priority. */
     26 #define BCM_FIELD_ENTRY_PRIO_LOWEST     (0)        /* Lowest possible entry
     27                                                       priority in a group. */
     28 
     29 /* Macros for Replace L2 Field Actions */
     30 #define BCM_FIELD_REPLACE_VLAN_PRIORITY     0          /* Replace vlan priority
     31                                                           with user provided
     32                                                           Priority without CFI
     33                                                           bit being set. User
     34                                                           provides Vlan priority
     35                                                           value (0-7) as an
     36                                                           input through param1
     37                                                           and CFI (bit being
     38                                                           unset) bit is appended
     39                                                           internally by FP
     40                                                           action handler. */
     41 #define BCM_FIELD_REPLACE_VLAN_PRIORITY_USE_INTERNAL_CFI 1          /* Replace vlan priority
     42                                                           with user provided
     43                                                           priority with CFI bit
     44                                                           set. User provides
     45                                                           Vlan priority value
     46                                                           (0-7) as an input
     47                                                           through param1 and CFI
     48                                                           bit ((bit being set) 
     49                                                           is appended internally
     50                                                           by FP action handler. */
     51 #define BCM_FIELD_REPLACE_VLAN_PRIORITY_FROM_INT_PRIO_AND_CNG 2          /* Replace Vlan priority
     52                                                           mapped from internal
     53                                                           priority and CNG
     54                                                           derived for a packet.
     55                                                           Param1 is not
     56                                                           applicable to this
     57                                                           type. */
     58 
     59 #define BCM_FIELD_ENTRY_PRIO_DEFAULT    BCM_FIELD_ENTRY_PRIO_LOWEST /* Default priority assigned
     60                                                       to new entries */
     61 
     62 #define BCM_FIELD_MAX_NAME_LEN  100        /* Maximum length for a name */
     63 
     64 #define BCM_FIELD_NAME_TO_ID_MAX_IDS    10         /* Maximum number of field
     65                                                       IDs returned by
     66                                                       bcm_field_name_to_id */
     67 
     68 #define BCM_FIELD_EXTRACTION_FLAG_CONSTANT  (0x00000001) /* Indicates constant
     69                                                           value will be used
     70                                                           instead of qualifier
     71                                                           extraction */
     72 #define BCM_FIELD_EXTRACTION_FLAG_DATA_FIELD (0x00000002) /* Indicates qualifier
     73                                                           specified is data
     74                                                           field ID instead of
     75                                                           bcmFieldQualify* */
     76 
     77 #define BCM_FIELD_ENTRY_INVALID (-1)       /* Indicates invalid and/or free
     78                                               entry */
     79 
     80 /* Macros for field entry copy */
     81 #define BCM_FIELD_ENTRY_COPY_WITHOUT_STATS  (1 << 0)   /* Avoid copying stats
     82                                                           during entry copy */
     83 
     84 /* Macros for field entry config create */
     85 #define BCM_FIELD_ENTRY_CREATE_WITH_ID  (1 << 0)   /* Create an entry with given
     86                                                       entry Id */
     87 
     88 /* Macros for field entry config create */
     89 #define BCM_FIELD_ENTRY_CREATE_WITH_PRIORITY (1 << 1)   /* Create an entry with
     90                                                           given priority */
     91 
     92 /* Macros for field entry config create */
     93 #define BCM_FIELD_ENTRY_CREATE_AS_DEFAULT   (1 << 2)   /* Create an entry as
     94                                                           default entry of given
     95                                                           group for ExactMatch
     96                                                           or FlowTracker stage */
     97 
     98 /* Macros for field entry config get */
     99 #define BCM_FIELD_ENTRY_STATUS_INSTALLED    (1 << 0)   /* The requested entry is
    100                                                           installed */
    101 
    102 /* Macros for field entry config get */
    103 #define BCM_FIELD_ENTRY_STATUS_ENABLED  (1 << 1)   /* The requested entry is
    104                                                       enabled */
    105 
    106 /* Macros for field entry config get */
    107 #define BCM_FIELD_ENTRY_STATUS_DEFAULT_ENTRY (1 << 2)   /* The requested entry is
    108                                                           an ExactMatch default
    109                                                           entry */
    110 
    111 /* Macros for field entry config get */
    112 #define BCM_FIELD_ENTRY_STATUS_FLEXCTR_ATTACHED (1 << 3)   /* The requested entry
    113                                                           has flex counter
    114                                                           attached */
    115 
    116 /* Macros for field entry config get */
    117 #define BCM_FIELD_ENTRY_STATUS_POLICER_ATTACHED (1 << 4)   /* The requested entry
    118                                                           has policer attached */
    119 
    120 /* Macros for field contol bcmFieldControlGbpSrcMacMcastBitSet */
    121 #define BCM_FIELD_GBP_SRC_ID_NEQ_DST_ID (0x0)      /* Applies this control only
    122                                                       when GBP Source ID not
    123                                                       equals to GBP Destination
    124                                                       ID (GBP_SID!=GBP_DID) */
    125 #define BCM_FIELD_GBP_SRC_ID_EQ_DST_ID  (0x1)      /* Applies this control only
    126                                                       when GBP Source ID equals
    127                                                       to GBP Destination ID
    128                                                       (GBP_SID==GBP_DID) */
    129 
    130 /* Macros for field stage slice info retrieval */
    131 #define BCM_FIELD_SLICE_ALLOCATED           (1 << 0)   /* Specify whether the
    132                                                           slice is allocated to
    133                                                           any group 0 if not
    134                                                           allocated. 1 if
    135                                                           allocated */
    136 #define BCM_FIELD_SLICE_MODE_SINGLE         (1 << 1)   /* Slice mode is single
    137                                                           wide */
    138 #define BCM_FIELD_SLICE_MODE_DOUBLE         (1 << 2)   /* Slice mode is double
    139                                                           wide */
    140 #define BCM_FIELD_SLICE_MODE_TRIPLE         (1 << 3)   /* Slice mode is triple
    141                                                           wide */
    142 #define BCM_FIELD_SLICE_MODE_INTRADOUBLE    (1 << 4)   /* Slice mode is intra
    143                                                           slice double wide */
    144 #define BCM_FIELD_SLICE_PART_PRIMARY        (1 << 5)   /* Slice is the primary
    145                                                           part */
    146 #define BCM_FIELD_SLICE_PART_SECONDARY      (1 << 6)   /* Slice is the secondary
    147                                                           part */
    148 #define BCM_FIELD_SLICE_PART_TERTIARY       (1 << 7)   /* Slice is the tertiary
    149                                                           part */
    150 #define BCM_FIELD_SLICE_PART_PRIMARY_EXPANDED (1 << 8)   /* Slice is auto expanded
    151                                                           primary part */
    152 #define BCM_FIELD_SLICE_PART_SECONDARY_EXPANDED (1 << 9)   /* Slice is auto expanded
    153                                                           secondary part */
    154 #define BCM_FIELD_SLICE_PART_TERTIARY_EXPANDED (1 << 10)  /* Slice is auto expanded
    155                                                           tertiary part */
    156 #define BCM_FIELD_SLICE_PART_INTRADOUBLE_EXPANDED (1 << 11)  /* Slice is auto expanded
    157                                                           intra slice double
    158                                                           wide part */
    159 #define BCM_FIELD_SLICE_MW_SUPPORTED        (1 << 12)  /* Slice supports multi
    160                                                           wide groups */
    161 #define BCM_FIELD_MAX_GROUPS_PER_SLICE      32         /* Maximum number of
    162                                                           groups allowed in a
    163                                                           slice */
    164 #define BCM_FIELD_STAGE_MAX_SLICES          18         /* Maximum number of
    165                                                           slices per stage */
    166 
    167 /* This structure holds details of entries in a slice */
    168 typedef struct bcm_field_stage_slice_info_s {
    169     int total_entries;                  /* Total number of entries available in
    170                                            given slice */
    171     int free_entries;                   /* Total number of free entries
    172                                            available in given slice */
    173     int flags;                          /* Flags to identify the properties of
    174                                            slice */
    175     int slice_gid_ct;                   /* Number of groups sharing the given
    176                                            slice */
    177     bcm_field_group_t slice_gid_list[BCM_FIELD_MAX_GROUPS_PER_SLICE]; /* The groupIds associated with the
    178                                            slice */
    179 } bcm_field_stage_slice_info_t;
    180 
    181 /* bcm_field_stat_action_e */
    182 typedef enum bcm_field_stat_action_e {
    183     bcmFieldStatActionNone = 0,         /* No Operation. */
    184     bcmFieldStatActionIncrement = 1,    /* Increment the stat. */
    185     bcmFieldStatActionIncrementCancel = 2, /* Do not increment the stat. */
    186     bcmFieldStatActionSample = 3,       /* Sample the stat value to the packet. */
    187     bcmFieldStatActionCount = 4         /* Always Last. Not a usable value. */
    188 } bcm_field_stat_action_t;
    189 
    190 #define BCM_FIELD_STAT_ACTION \
    191 { \
    192     "None", \
    193     "Increment", \
    194     "IncrementCancel", \
    195     "Sample"  \
    196 }
    197 
    198 /* Oam Stat Action Structure. */
    199 typedef struct bcm_field_oam_stat_action_s {
    200     bcm_stat_object_t stat_object;  /* Flex Stat Object */
    201     uint32 stat_mode_id;            /* Flex Stat Mode */
    202     bcm_field_stat_action_t action; /* Field Stat Action */
    203 } bcm_field_oam_stat_action_t;
    204 
    205 /* Packet content (data) qualification object flags. */
    206 #define BCM_FIELD_DATA_QUALIFIER_WITH_ID    (1 << 0)   
    207 #define BCM_FIELD_DATA_QUALIFIER_REPLACE    (1 << 1)   
    208 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_IP4_OPTIONS_ADJUST (1 << 2)   
    209 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_IP6_EXTENSIONS_ADJUST (1 << 3)   
    210 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_GRE_OPTIONS_ADJUST (1 << 4)   
    211 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_NEGATIVE (1 << 5)   /* The 'offset' field is
    212                                                           interpretated as
    213                                                           negative */
    214 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_BIT_RES (1 << 6)   /* The 'offset' field is
    215                                                           computed with a bit
    216                                                           resolution */
    217 #define BCM_FIELD_DATA_QUALIFIER_LENGTH_BIT_RES (1 << 7)   /* The 'length' field is
    218                                                           computed with a bit
    219                                                           resolution */
    220 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_PREDEFINED (1 << 8)   /* The 'qualifier' field
    221                                                           is used instead of
    222                                                           'offset_base' */
    223 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_FLEX_HASH (1 << 9)   /* The 'qualifier' field
    224                                                           is used to create flex
    225                                                           hash entry' */
    226 #define BCM_FIELD_DATA_QUALIFIER_STAGE_LOOKUP (1 << 10)  /* The 'qualifier' field
    227                                                           is used to create for
    228                                                           Lookup Stage */
    229 #define BCM_FIELD_DATA_QUALIFIER_TYPE_L2    (1 << 11)  /* The 'qualifier' type
    230                                                           will be L2 */
    231 #define BCM_FIELD_DATA_QUALIFIER_TYPE_IPV4  (1 << 12)  /* The 'qualifier' type
    232                                                           will be ipv4 */
    233 #define BCM_FIELD_DATA_QUALIFIER_TYPE_IPV6  (1 << 13)  /* The 'qualifier' type
    234                                                           will be ipv6 */
    235 #define BCM_FIELD_DATA_QUALIFIER_TYPE_MPLS  (1 << 14)  /* The 'qualifier' type
    236                                                           will be mpls */
    237 #define BCM_FIELD_DATA_QUALIFIER_BIT_OFFSET_DNX_ORDER (1 << 15)  /* Control the qualifier
    238                                                           bit numbering */
    239 
    240 /* Packet content (data) qualification vlan tag format. */
    241 #define BCM_FIELD_DATA_FORMAT_VLAN_TAG_ANY  (0xffff)   
    242 #define BCM_FIELD_DATA_FORMAT_VLAN_NO_TAG   (1 << 0)   
    243 #define BCM_FIELD_DATA_FORMAT_VLAN_SINGLE_TAGGED (1 << 1)   
    244 #define BCM_FIELD_DATA_FORMAT_VLAN_DOUBLE_TAGGED (1 << 2)   
    245 
    246 /* Packet content (data) qualification L2 header format. */
    247 #define BCM_FIELD_DATA_FORMAT_L2_ANY    (0xffff)   
    248 #define BCM_FIELD_DATA_FORMAT_L2_ETH_II (1 << 0)   
    249 #define BCM_FIELD_DATA_FORMAT_L2_SNAP   (1 << 1)   
    250 #define BCM_FIELD_DATA_FORMAT_L2_LLC    (1 << 2)   
    251 
    252 /* Packet content (data) qualification L3 header version. */
    253 #define BCM_FIELD_DATA_FORMAT_IP_ANY        (0xffff)   
    254 #define BCM_FIELD_DATA_FORMAT_IP_NONE       (1 << 0)   
    255 #define BCM_FIELD_DATA_FORMAT_IP4           (1 << 1)   
    256 #define BCM_FIELD_DATA_FORMAT_IP6           (1 << 2)   
    257 #define BCM_FIELD_DATA_FORMAT_IP4_WITH_OPTIONS (1 << 3)   
    258 #define BCM_FIELD_DATA_FORMAT_IP6_WITH_OPTIONS (1 << 4)   
    259 
    260 /* Packet content (data) qualification Mpls encapsulation. */
    261 #define BCM_FIELD_DATA_FORMAT_MPLS_ANY      (0xffff)   
    262 #define BCM_FIELD_DATA_FORMAT_MPLS_ONE_LABEL (1 << 0)   
    263 #define BCM_FIELD_DATA_FORMAT_MPLS_TWO_LABELS (1 << 1)   
    264 #define BCM_FIELD_DATA_FORMAT_MPLS_THREE_LABELS (1 << 2)   
    265 #define BCM_FIELD_DATA_FORMAT_MPLS_FOUR_LABELS (1 << 3)   
    266 #define BCM_FIELD_DATA_FORMAT_MPLS_FIVE_LABELS (1 << 4)   
    267 
    268 /* Packet content (data) qualification FCoE encapsulation. */
    269 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ANY (0xffff)   
    270 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN    (1 << 0)   /* Standard fibre-channel
    271                                                           header */
    272 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ENCAP (1 << 1)   /* Encapsulation header */
    273 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_VIRTUAL (1 << 2)   /* Virtual fabric tag
    274                                                           (VFT) header */
    275 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ROUTED (1 << 3)   /* Interfabric routing
    276                                                           (IFR) header */
    277 
    278 /* Packet content (data) qualification Tunnel. */
    279 #define BCM_FIELD_DATA_FORMAT_TUNNEL_ANY    (0xffff)   
    280 #define BCM_FIELD_DATA_FORMAT_TUNNEL_NONE   (1 << 0)   
    281 #define BCM_FIELD_DATA_FORMAT_TUNNEL_IP_IN_IP (1 << 1)   
    282 #define BCM_FIELD_DATA_FORMAT_TUNNEL_GRE    (1 << 2)   
    283 #define BCM_FIELD_DATA_FORMAT_TUNNEL_MPLS   (1 << 3)   
    284 #define BCM_FIELD_DATA_FORMAT_TUNNEL_FCOE   (1 << 4)   /* Fibre Channel over
    285                                                           Ethernet (FCoE),
    286                                                           EtherType 0x8906 */
    287 #define BCM_FIELD_DATA_FORMAT_TUNNEL_FCOE_INIT (1 << 5)   /* FCoE initialization
    288                                                           protocol (FIP),
    289                                                           EtherType 0x8914 */
    290 
    291 /* Packet content (data) qualification Flags. */
    292 #define BCM_FIELD_DATA_FORMAT_F_MASK        (0x3ff)    
    293 #define BCM_FIELD_DATA_FORMAT_F_ENCAP_STACK (1 << 0)   /* Indicates incoming
    294                                                           packet is a HiGig
    295                                                           Packet */
    296 #define BCM_FIELD_DATA_FORMAT_F_NO_ENCAP_STACK (1 << 1)   /* Indicates incoming
    297                                                           packet is not a HiGig
    298                                                           Packet */
    299 #define BCM_FIELD_DATA_FORMAT_F_VNTAG       (1 << 2)   /* Indicates incoming
    300                                                           packet is a VNTAG
    301                                                           Packet */
    302 #define BCM_FIELD_DATA_FORMAT_F_NO_VNTAG    (1 << 3)   /* Indicates incoming
    303                                                           packet is not a VNTAG
    304                                                           Packet */
    305 #define BCM_FIELD_DATA_FORMAT_F_CNTAG       (1 << 4)   /* Indicates incoming
    306                                                           packet is a CNTAG
    307                                                           Packet */
    308 #define BCM_FIELD_DATA_FORMAT_F_NO_CNTAG    (1 << 5)   /* Indicates incoming
    309                                                           packet is not a CNTAG
    310                                                           Packet */
    311 #define BCM_FIELD_DATA_FORMAT_F_ETAG        (1 << 6)   /* Indicates incoming
    312                                                           packet is a ETAG
    313                                                           Packet */
    314 #define BCM_FIELD_DATA_FORMAT_F_NO_ETAG     (1 << 7)   /* Indicates incoming
    315                                                           packet is not a ETAG
    316                                                           Packet */
    317 #define BCM_FIELD_DATA_FORMAT_F_ICNM        (1 << 8)   /* Indicates incoming
    318                                                           packet is a ICNM
    319                                                           Packet */
    320 #define BCM_FIELD_DATA_FORMAT_F_NO_ICNM     (1 << 9)   /* Indicates incoming
    321                                                           packet is not a ICNM
    322                                                           Packet */
    323 
    324 /* bcm_field_data_offset_base_e */
    325 typedef enum bcm_field_data_offset_base_e {
    326     bcmFieldDataOffsetBasePacketStart = 0, /* Offset provided from the beginning of
    327                                            a packet. */
    328     bcmFieldDataOffsetBaseOuterL3Header = 1, /* Offset provided from the beginning of
    329                                            outer L3 header. */
    330     bcmFieldDataOffsetBaseInnerL3Header = 2, /* Offset provided from the beginning of
    331                                            inner L3 header. */
    332     bcmFieldDataOffsetBaseOuterL4Header = 3, /* Offset provided from the beginning of
    333                                            outer L4 header.. */
    334     bcmFieldDataOffsetBaseInnerL4Header = 4, /* Offset provided from the beginning of
    335                                            inner L4 header. */
    336     bcmFieldDataOffsetBaseHigigHeader = 5, /* Offset provided from the beginning of
    337                                            HiGig header. */
    338     bcmFieldDataOffsetBaseHigig2Header = 6, /* Offset provided from the beginning of
    339                                            HiGig header. */
    340     bcmFieldDataOffsetBaseFcoeHeader = 7, /* Offset provided from the beginning of
    341                                            FCoE header. */
    342     bcmFieldDataOffsetBaseDeprecated8 = 8, /* Deprecated 8. */
    343     bcmFieldDataOffsetBaseL2Header = 9, /* Ethernet header. */
    344     bcmFieldDataOffsetBaseFirstHeader = 10, /* First header after Ethernet. */
    345     bcmFieldDataOffsetBaseSecondHeader = 11, /* Second header after Ethernet. */
    346     bcmFieldDataOffsetBaseThirdHeader = 12, /* Third header after Ethernet. */
    347     bcmFieldDataOffsetBaseMplsLabel1Header = 13, /* Offset provided from the beginning of
    348                                            the Mpls Label 1 header. */
    349     bcmFieldDataOffsetBaseMplsLabel2Header = 14, /* Offset provided from the beginning of
    350                                            the Mpls Label 2 header. */
    351     bcmFieldDataOffsetBaseMplsLabel3Header = 15, /* Offset provided from the beginning of
    352                                            the Mpls Label 3 header. */
    353     bcmFieldDataOffsetBaseInnerL2Header = 16, /* Offset provided from the beginning of
    354                                            inner L2 header. */
    355     bcmFieldDataOffsetBaseTrillHeader = 17, /* Offset provided from the beginning of
    356                                            Trill header. */
    357     bcmFieldDataOffsetBaseFourthHeader = 18, /* Fourth header after Ethernet. */
    358     bcmFieldDataOffsetBaseForwardingHeader = 19, /* Header used for the forwarding. */
    359     bcmFieldDataOffsetBaseNextForwardingHeader = 20, /* First header after the forwarding
    360                                            header. */
    361     bcmFieldDataOffsetBaseTrillPayload = 21, /* Offset provided from the beginning of
    362                                            Trill Payload. */
    363     bcmFieldDataOffsetBaseCount = 22    /* Always Last. Not a usable value. */
    364 } bcm_field_data_offset_base_t;
    365 
    366 #define BCM_FIELD_DATA_OFFSET_BASE \
    367 { \
    368     "bcmFieldDataOffsetBasePacketStart", \
    369     "bcmFieldDataOffsetBaseOuterL3Header", \
    370     "bcmFieldDataOffsetBaseInnerL3Header", \
    371     "bcmFieldDataOffsetBaseOuterL4Header", \
    372     "bcmFieldDataOffsetBaseInnerL4Header", \
    373     "bcmFieldDataOffsetBaseHigigHeader", \
    374     "bcmFieldDataOffsetBaseHigig2Header", \
    375     "bcmFieldDataOffsetBaseFcoeHeader", \
    376     "bcmFieldDataOffsetBaseDeprecated8", \
    377     "bcmFieldDataOffsetBaseL2Header", \
    378     "bcmFieldDataOffsetBaseFirstHeader", \
    379     "bcmFieldDataOffsetBaseSecondHeader", \
    380     "bcmFieldDataOffsetBaseThirdHeader", \
    381     "bcmFieldDataOffsetBaseMplsLabel1Header", \
    382     "bcmFieldDataOffsetBaseMplsLabel2Header", \
    383     "bcmFieldDataOffsetBaseMplsLabel3Header", \
    384     "bcmFieldDataOffsetBaseInnerL2Header", \
    385     "bcmFieldDataOffsetBaseTrillHeader", \
    386     "bcmFieldDataOffsetBaseFourthHeader", \
    387     "bcmFieldDataOffsetBaseForwardingHeader", \
    388     "bcmFieldDataOffsetBaseNextForwardingHeader", \
    389     "bcmFieldDataOffsetBaseTrillPayload"  \
    390 }
    391 
    392 /* EtherType based DATA packet qualifier structure. */
    393 typedef struct bcm_field_data_ethertype_s {
    394     int relative_offset;            /* Packet byte offset relative to qualifier
    395                                        byte offset. */
    396     bcm_port_ethertype_t ethertype; /* Ether type. */
    397     uint16 l2;                      /* Packet l2 format.
    398                                        (FIELD_DATA_FORMAT_L2_XXX) */
    399     uint16 vlan_tag;                /* vlan_tag_format.
    400                                        (FIELD_DATA_FORMAT_VLAN_XXX) */
    401     uint32 flags;                   /* Flags. (FIELD_DATA_FORMAT_F_XXX) */
    402 } bcm_field_data_ethertype_t;
    403 
    404 /* Ip protocol/Next header based DATA packet qualifier structure. */
    405 typedef struct bcm_field_data_ip_protocol_s {
    406     int relative_offset;    /* Packet byte offset relative to qualifier byte
    407                                offset. */
    408     uint16 flags;           /* Packet ip header version.
    409                                (FIELD_DATA_FORMAT_IP_XXX) */
    410     uint8 ip;               /* Ip protocol id. */
    411     uint16 l2;              /* Packet l2 format. (FIELD_DATA_FORMAT_L2_XXX) */
    412     uint16 vlan_tag;        /* vlan_tag_format. (FIELD_DATA_FORMAT_VLAN_XXX) */
    413 } bcm_field_data_ip_protocol_t;
    414 
    415 /* Packet format based DATA qualifier specification structure. */
    416 typedef struct bcm_field_data_packet_format_s {
    417     int relative_offset;        /* Packet byte offset relative to qualifier byte
    418                                    offset. */
    419     uint16 l2;                  /* Packet l2 format. (FIELD_DATA_FORMAT_L2_XXX) */
    420     uint16 vlan_tag;            /* vlan_tag_format. (FIELD_DATA_FORMAT_VLAN_XXX) */
    421     uint16 outer_ip;            /* Outer IP header
    422                                    version.(FIELD_DATA_FORMAT_IP_XXX) */
    423     uint16 inner_ip;            /* Inner IP header
    424                                    version.(FIELD_DATA_FORMAT_IP_XXX) */
    425     uint16 tunnel;              /* Tunnel.(FIELD_DATA_FORMAT_TUNNEL_XXX) */
    426     uint16 mpls;                /* Mpls labels.(FIELD_DATA_FORMAT_MPLS_XXX) */
    427     uint16 fibre_chan_outer;    /* Header
    428                                    type.(FIELD_DATA_FORMAT_FIBRE_CHAN_XXX) */
    429     uint16 fibre_chan_inner;    /* Header
    430                                    type.(FIELD_DATA_FORMAT_FIBRE_CHAN_XXX) */
    431     uint32 flags;               /* Flags. (FIELD_DATA_FORMAT_F_XXX) */
    432 } bcm_field_data_packet_format_t;
    433 
    434 /* Packet colors. */
    435 #define BCM_FIELD_COLOR_PRESERVE    0          
    436 #define BCM_FIELD_COLOR_GREEN       1          
    437 #define BCM_FIELD_COLOR_YELLOW      2          
    438 #define BCM_FIELD_COLOR_RED         3          
    439 #define BCM_FIELD_COLOR_BLACK       4          
    440 
    441 /* Stat OAM LM Index. */
    442 typedef enum bcm_field_stat_oam_lm_index_e {
    443     bcmFieldStatOamLmIndex0 = 0,        /* Stat oam lm index 0 */
    444     bcmFieldStatOamLmIndex1 = 1,        /* Stat oam lm index 1 */
    445     bcmFieldStatOamLmIndex2 = 2,        /* Stat oam lm index 2 */
    446     bcmFieldStatOamLmIndexInvalid = 3,  /* Stat oam lm index invalid */
    447     bcmFieldStatOamLmIndexCount = 4     /* Always Last. Not a usable value. */
    448 } bcm_field_stat_oam_lm_index_t;
    449 
    450 #define BCM_FIELD_STAT_OAM_LM_INDEX_STRINGS \
    451 { \
    452     "0", \
    453     "1", \
    454     "2", \
    455     "Invalid"  \
    456 }
    457 
    458 /* IPv4 Flags from RFC-791 (for bcm_field_qualify_IpFlags). */
    459 #define BCM_FIELD_IPFLAGS_MF    0x1        /* More Fragments. */
    460 #define BCM_FIELD_IPFLAGS_DF    0x2        /* Don't Fragment. */
    461 #define BCM_FIELD_IPFLAGS_RF    0x4        /* Reserved. */
    462 #define BCM_FIELD_IPFLAGS_MASK  0x7        /* All bits. */
    463 
    464 /* TCP Control Flags from RFC-793 (for bcm_field_qualify_TcpControl). */
    465 #define BCM_FIELD_TCPCONTROL_FIN    0x01       /* No more data. */
    466 #define BCM_FIELD_TCPCONTROL_SYN    0x02       /* Sync seq numbers. */
    467 #define BCM_FIELD_TCPCONTROL_RST    0x04       /* Reset connection. */
    468 #define BCM_FIELD_TCPCONTROL_PSH    0x08       /* Push. */
    469 #define BCM_FIELD_TCPCONTROL_ACK    0x10       /* Ack field valid. */
    470 #define BCM_FIELD_TCPCONTROL_URG    0x20       /* Urgent field valid. */
    471 #define BCM_FIELD_TCPCONTROL_R40    0x40       /* Reserved. */
    472 #define BCM_FIELD_TCPCONTROL_R80    0x80       /* Reserved. */
    473 #define BCM_FIELD_TCPCONTROL_MASK   0x3f       /* All non-reserved bits. */
    474 
    475 /* L2Mac Info (for bcm_field_qualify_L2MacInfo). */
    476 #define BCM_FIELD_L2MAC_DMAC_MATCH_DIP  0x0001     /* Lower 32b of dmac matches
    477                                                       lower 32b of Ipv6 DIP or
    478                                                       lower 23b of dmac matches
    479                                                       lower 23b of Ipv4 DIP. */
    480 #define BCM_FIELD_L2MAC_SMAC_LT_DMAC    0x0002     /* Source mac address is less
    481                                                       than destination mac
    482                                                       address. */
    483 #define BCM_FIELD_L2MAC_SMAC_EQ_DMAC    0x0004     /* Source mac address is same
    484                                                       as destination mac
    485                                                       address. */
    486 #define BCM_FIELD_L2MAC_BCAST_DMAC      0x0008     /* Destination mac address is
    487                                                       broadcast. */
    488 #define BCM_FIELD_L2MAC_MCAST_DMAC      0x0010     /* Destination mac address is
    489                                                       multicast. */
    490 #define BCM_FIELD_L2MAC_IPMCAST_DMAC    0x0020     /* Destination mac address is
    491                                                       IP mutlicast, set when
    492                                                       upper 25 bits dmac matches
    493                                                       0x01005e for Ipv4 or upper
    494                                                       16b of dmac matches 0x3333
    495                                                       for Ipv6 */
    496 #define BCM_FIELD_L2MAC_ZERO_SMAC       0x0040     /* Source mac address is
    497                                                       zero. */
    498 #define BCM_FIELD_L2MAC_MCAST_SMAC      0x0080     /* Source mac address is
    499                                                       multicast. */
    500 
    501 /* IP Info (for bcm_field_qualify_IpInfo). */
    502 #define BCM_FIELD_IP_HDR_OFFSET_ZERO        0x0001     /* IP Header offset zero */
    503 #define BCM_FIELD_IP_HDR_FLAGS_MF           0x0002     
    504 #define BCM_FIELD_IP_CHECKSUM_OK            0x0004     
    505 #define BCM_FIELD_IP_VERSION_ERR            0x0008     /* Error in the IP
    506                                                           'version' field value */
    507 #define BCM_FIELD_IP_HDR_SIP_LT_DIP         0x0010     /* Source Ip address is
    508                                                           less than destination
    509                                                           Ip address. */
    510 #define BCM_FIELD_IP_HDR_SIP_EQ_DIP         0x0020     /* Source Ip address is
    511                                                           equal to destination
    512                                                           Ip address. */
    513 #define BCM_FIELD_IP_HDR_BCAST_DIP          0x0040     /* Destination Ip address
    514                                                           is broadcast. */
    515 #define BCM_FIELD_IP_HDR_MCAST_DIP          0x0080     /* Destination Ip address
    516                                                           is multicast. */
    517 #define BCM_FIELD_IP_HDR_RESERVED_MCAST_DIP 0x0100     /* Destination Ip address
    518                                                           is reserved multicast. */
    519 #define BCM_FIELD_IP_HDR_BFD_LOOPBACK_DIP   0x0200     /* Destionation Ip
    520                                                           address is BFD
    521                                                           loopback. */
    522 #define BCM_FIELD_IP_HDR_FRAG_FLAGS_OFFSET_ONE 0x0400     /* IP Fragment flags
    523                                                           offset is one */
    524 #define BCM_FIELD_IP_ERROR_DIP              0x0800     /* Destination IP address
    525                                                           have error. */
    526 #define BCM_FIELD_IP_ERROR_SIP              0x1000     /* Source Ip address have
    527                                                           error. */
    528 #define BCM_FIELD_IP_SPECIAL_DIP            0x2000     /* Destination Ip address
    529                                                           is special */
    530 #define BCM_FIELD_IP_SMALL_PKT              0x4000     /* Ip packet is small. */
    531 #define BCM_FIELD_IP_BIG_PKT                0x8000     /* IP packet is big. */
    532 #define BCM_FIELD_IP_VERSION_V4             0x010000   /* IP packet is v4. */
    533 #define BCM_FIELD_IP_VERSION_V6             0x020000   /* IP packet is v6. */
    534 #define BCM_FIELD_IP_HDR_FRAG_FLAGS_OFFSET_NON_ZERO 0x040000   /* IP Fragment flags
    535                                                           offset is nonzero */
    536 
    537 /* L4 Header Info (for bcm_field_qualify_L4Info). */
    538 #define BCM_FIELD_L4_HDR_SRCPORT_LT_1024    0x0001     /* L4 Source Port is less
    539                                                           than 1024. */
    540 #define BCM_FIELD_L4_HDR_SRCPORT_EQ_DSTPORT 0x0002     /* L4 source port is
    541                                                           equal to destination
    542                                                           port number. */
    543 #define BCM_FIELD_L4_TCP_SEQUENCE_ZERO      0x0004     /* TCP Sequence is zeo. */
    544 
    545 /* L2 learn commands (for bcm_field_qualify_L2LearnCommands). */
    546 #define BCM_FIELD_L2_LEARN_COMMANDS_DO_NOT_LEARN 0x0001     /* Do not learn L2 MACSA */
    547 #define BCM_FIELD_L2_LEARN_COMMANDS_LEARN_MACSA 0x0002     /* L2 MACSA is learnt. */
    548 #define BCM_FIELD_L2_LEARN_COMMANDS_RELEARN_MACSA 0x0004     /* L2 MACSA is relearnt. */
    549 #define BCM_FIELD_L2_LEARN_COMMANDS_UNRESOLVED_MACSA 0x0008     /* L2 MACSA is
    550                                                           unresolved. */
    551 
    552 /* Tunnel termination status (for bcm_field_qualify_TunnelTermStatus). */
    553 #define BCM_FIELD_TUNNEL_TERM               0x0001     /* Tunnel terminated
    554                                                           packet. */
    555 #define BCM_FIELD_TUNNEL_TERM_L3            0x0002     /* L3 Tunnel terminated. */
    556 #define BCM_FIELD_TUNNEL_TERM_L2            0x0004     /* L2 Tunnel terminated. */
    557 #define BCM_FIELD_TUNNEL_TERM_TRIGGER_SECOND_PASS 0x0008     /* Tunnel termination
    558                                                           trigger for second
    559                                                           pass. */
    560 
    561 /* Loopback Header Flags (for bcm_field_qualify_LoopbackHdrFlags). */
    562 #define BCM_FIELD_LOOPBACK_VISIBILITY_PKT   0x0001     /* Loopback packet is a
    563                                                           visibility packet. */
    564 #define BCM_FIELD_LOOPBACK_ROUTED_PKT       0x0002     /* Loopback packet is a
    565                                                           routed packet. */
    566 #define BCM_FIELD_LOOPBACK_RECIRCLE_HDR_PKT 0x0004     /* Loopback packet is a
    567                                                           egress NIH header
    568                                                           packet. */
    569 
    570 /* Packet Status (for bcm_field_qualify_PacketStatus). */
    571 #define BCM_FIELD_PKT_STATUS_MCASTKNOWN     0x0001     /* Known multicast
    572                                                           packet. */
    573 #define BCM_FIELD_PKT_STATUS_MCASTUNKNOWN   0x0002     /* Unknown multicast
    574                                                           packet. */
    575 #define BCM_FIELD_PKT_STATUS_UCASTUNKNOWN   0x0004     /* Unknown unicast
    576                                                           packet. */
    577 #define BCM_FIELD_PKT_STATUS_BCAST          0x0008     /* Broadcast packet. */
    578 
    579 /* Packet Forwarding Status (for bcm_field_qualify_ForwardingStatus). */
    580 #define BCM_FIELD_FORWARDING_STATUS_L2_SWITCHED 0x0001     /* L2 switched packet. */
    581 #define BCM_FIELD_FORWARDING_STATUS_L3_UNICAST_ROUTED 0x0002     /* L3 unicast routed
    582                                                           packet. */
    583 #define BCM_FIELD_FORWARDING_STATUS_IPMC_ROUTED 0x0004     /* IPMC forwarded packet. */
    584 
    585 /* 
    586  * CML flag (for bcmFieldActionCmlFlagsNew and
    587  * bcmFieldActionCmlFlagsMove).
    588  */
    589 #define BCM_FIELD_CML_FLAG_DROP         0x0001     /* Set CML flag as Drop. */
    590 #define BCM_FIELD_CML_FLAG_COPY_TO_CPU  0x0002     /* Set CML flag as Copy to
    591                                                       CPU. */
    592 #define BCM_FIELD_CML_FLAG_LEARN        0x0004     /* Set CML flag as Learn. */
    593 
    594 /* Packet Forwarding Status (for bcm_field_qualify_ForwardingEligible). */
    595 #define BCM_FIELD_FORWARDING_ELIGIBLE_L3_UNICAST_ROUTE 0x0001     /* Packet is eligible for
    596                                                           L3 unitcast flow. */
    597 #define BCM_FIELD_FORWARDING_ELIGIBLE_IPMC_ROUTE 0x0002     /* Packet is eligible for
    598                                                           IPMC flow. */
    599 #define BCM_FIELD_FORWARDING_ELIGIBLE_L2_SWITCH 0x0004     /* Packet is eligible for
    600                                                           L2 switching. */
    601 #define BCM_FIELD_FORWARDING_ELIGIBLE_IPMC_FALLBACK_TO_L2_SWITCH 0x0008     /* Packet eligible for
    602                                                           ipmc flow fallen back
    603                                                           to l2 switching. */
    604 
    605 /* Packet L3 check(for bcm_field_qualify_L3Check). */
    606 #define BCM_FIELD_L3_CHECK_GOOD_L3_UNICAST_ROUTE_PKT 0x0001     /* Packet is eligible for
    607                                                           L3 unicast routing as
    608                                                           there is no IP header
    609                                                           or TTL error. */
    610 #define BCM_FIELD_L3_CHECK_GOOD_IPMC_PKT    0x0002     /* Packet is eligible for
    611                                                           ipmc routing as there
    612                                                           is no IP header error. */
    613 #define BCM_FIELD_L3_CHECK_PIM_FAIL         0x0004     /* PIMSIM packet
    614                                                           interface check failed */
    615 
    616 /* Mirror Packet Type (for bcm_field_qualify_MirrorPktType). */
    617 #define BCM_FIELD_MIRROR_PKT_TYPE_INGRESS   0x0001     /* Ingress mirror packet. */
    618 #define BCM_FIELD_MIRROR_PKT_TYPE_COPY      0x0002     /* Mirror copy. */
    619 #define BCM_FIELD_MIRROR_PKT_TYPE_COPY_TRUNCATE 0x0004     /* Mirror copy truncate
    620                                                           enable. */
    621 
    622 /* PTP packet control (for bcm_field_qualify_PtpPktCtrl). */
    623 #define BCM_FIELD_PTP_MATCH_ETHERTYPE_OR_UDP_DEST_PORT 0x0001     /* 1588 packet matching
    624                                                           either EtherType or
    625                                                           udp dest port. */
    626 #define BCM_FIELD_PTP_MATCH_UDP_DEST_PORT   0x0002     /* 1588 packet matching
    627                                                           UDP dest port. */
    628 
    629 /* 
    630  * Field Qualifier VlanFormat (for bcm_field_qualify_VlanFormat).
    631  * Used to qualify packets based on vlan tag format.
    632  */
    633 #define BCM_FIELD_VLAN_FORMAT_UNTAGGED      0x0        /* Untagged packet
    634                                                           present. */
    635 #define BCM_FIELD_VLAN_FORMAT_OUTER_TAGGED  0x1        /* Outer tag present. */
    636 #define BCM_FIELD_VLAN_FORMAT_INNER_TAGGED  0x2        /* Inner tag present. */
    637 #define BCM_FIELD_VLAN_FORMAT_OUTER_TAGGED_VID_ZERO 0x4        /* Outer tag present and
    638                                                           vlan id is zero. */
    639 #define BCM_FIELD_VLAN_FORMAT_INNER_TAGGED_VID_ZERO 0x8        /* Inner tag present and
    640                                                           vlan id is zero. */
    641 
    642 /* Packet Resolution Values (for bcm_field_qualify_PacketRes). */
    643 #define BCM_FIELD_PKT_RES_UNKNOWN           0x0        /* No resolution. */
    644 #define BCM_FIELD_PKT_RES_CONTROL           0x1        /* Ethernet control
    645                                                           (8808). */
    646 #define BCM_FIELD_PKT_RES_BPDU              0x2        /* L2 cache BPDU bit. */
    647 #define BCM_FIELD_PKT_RES_L2BC              0x3        /* L2 broadcast. */
    648 #define BCM_FIELD_PKT_RES_L2UC              0x4        /* L2 unicast. */
    649 #define BCM_FIELD_PKT_RES_L2UNKNOWN         0x5        /* Unknown L2 dest (DLF). */
    650 #define BCM_FIELD_PKT_RES_L3MCUNKNOWN       0x6        /* Unknown L3 multicast. */
    651 #define BCM_FIELD_PKT_RES_L3MCKNOWN         0x7        /* Known L3 multicast. */
    652 #define BCM_FIELD_PKT_RES_L2MCKNOWN         0x8        /* Known L2 multicast. */
    653 #define BCM_FIELD_PKT_RES_L2MCUNKNOWN       0x9        /* Unknown L2 multicast. */
    654 #define BCM_FIELD_PKT_RES_L3UCKNOWN         0xa        /* Known L3 unicast. */
    655 #define BCM_FIELD_PKT_RES_L3UCUNKNOWN       0xb        /* Unknown L3 unicast. */
    656 #define BCM_FIELD_PKT_RES_MPLSKNOWN         0xc        /* Known MPLS packet   . */
    657 #define BCM_FIELD_PKT_RES_MPLSL3KNOWN       0xd        /* Known MPLS L3 packet. */
    658 #define BCM_FIELD_PKT_RES_MPLSL2KNOWN       0xe        /* Known MPLS L2 packet. */
    659 #define BCM_FIELD_PKT_RES_MPLSUNKNOWN       0xf        /* Unknown MPLS packet . */
    660 #define BCM_FIELD_PKT_RES_MIMKNOWN          0x10       /* Known MIM packet. */
    661 #define BCM_FIELD_PKT_RES_MIMUNKNOWN        0x11       /* Unknown MIM packet . */
    662 #define BCM_FIELD_PKT_RES_TRILLKNOWN        0x12       /* Known TRILL packet */
    663 #define BCM_FIELD_PKT_RES_TRILLUNKNOWN      0x13       /* Unknown TRILL packet */
    664 #define BCM_FIELD_PKT_RES_NIVKNOWN          0x14       /* Known NIV packet */
    665 #define BCM_FIELD_PKT_RES_NIVUNKNOWN        0x15       /* Unknown NIV packet */
    666 #define BCM_FIELD_PKT_RES_OAM               0x16       /* Packet hit OAM CFM
    667                                                           LMEP */
    668 #define BCM_FIELD_PKT_RES_BFD               0x17       /* Packet hit BFD session */
    669 #define BCM_FIELD_PKT_RES_ICNM              0x18       /* Congestion
    670                                                           notification */
    671 #define BCM_FIELD_PKT_RES_IEEE1588          0x19       /* IEEE 1588 packet */
    672 #define BCM_FIELD_PKT_RES_L2GREKNOWN        0x1a       /* Known L2 GRE packet */
    673 #define BCM_FIELD_PKT_RES_VXLANKNOWN        0x1b       /* Known VxLan Packet */
    674 #define BCM_FIELD_PKT_RES_FCOEKNOWN         0x1c       /* Known FCoE Packet */
    675 #define BCM_FIELD_PKT_RES_FCOEUNKNOWN       0x1d       /* Unknown FCoE Packet */
    676 #define BCM_FIELD_PKT_RES_MPLSMCKNOWN       0x1e       /* Known MPLS Multicast
    677                                                           packet */
    678 #define BCM_FIELD_PKT_RES_PIMBIDIRUNKNOWN   0x1f       /* Unknown PIM-BIDIR
    679                                                           packet from DF */
    680 #define BCM_FIELD_PKT_RES_L2_ANY            0x20       /* To match any L2
    681                                                           packet. It combines
    682                                                           the resolution types
    683                                                           BCM_FIELD_PKT_RES_L2BC,
    684                                                           BCM_FIELD_PKT_RES_L2UC,
    685                                                           BCM_FIELD_PKT_RES_L2UNKNOWN,
    686                                                           BCM_FIELD_PKT_RES_L2MCKNOWN
    687                                                           and
    688                                                           BCM_FIELD_PKT_RES_L2MCUNKNOWN */
    689 #define BCM_FIELD_PKT_RES_L2MC_ANY          0x21       /* To match any L2 MC
    690                                                           packet. This options
    691                                                           is to combine the
    692                                                           resolution types
    693                                                           BCM_FIELD_PKT_RES_L2MCKNOW
    694                                                           and
    695                                                           BCM_FIELD_PKT_RES_L2MCUNKNOWN */
    696 #define BCM_FIELD_PKT_RES_TRILL_ANY         0x22       /* To match any Trill
    697                                                           packet. This option is
    698                                                           to combine the
    699                                                           resolution types
    700                                                           BCM_FIELD_PKT_RES_TRILLKNOWN
    701                                                           and
    702                                                           BCM_FIELD_PKT_RES_TRILLUNKNOWN */
    703 #define BCM_FIELD_PKT_RES_NIV_ANY           0x23       /* To match any NIV
    704                                                           packet. This option is
    705                                                           to combine resolution
    706                                                           types
    707                                                           BCM_FIELD_PKT_RES_NIVKNOWN
    708                                                           and
    709                                                           BCM_FIELD_PKT_RES_NIVUNKNOWN */
    710 #define BCM_FIELD_PKT_RES_MPLS_ANY          0x24       /* To match any FCOE
    711                                                           packet. This option is
    712                                                           to combine resolution
    713                                                           types
    714                                                           BCM_FIELD_PKT_RES_MPLSKNOWN,
    715                                                           BCM_FIELD_PKT_RES_MPLSL3KNOWN,
    716                                                           BCM_FIELD_PKT_RES_MPLSL2KNOWN,
    717                                                           BCM_FIELD_PKT_RES_MPLSUNKNOWN
    718                                                           and
    719                                                           BCM_FIELD_PKT_RES_MPLSMCKNOWN */
    720 #define BCM_FIELD_PKT_RES_MIM_ANY           0x25       /* To match any MIM
    721                                                           packet. This option is
    722                                                           to combine resolution
    723                                                           types
    724                                                           BCM_FIELD_PKT_RES_MIMKNOWN
    725                                                           and
    726                                                           BCM_FIELD_PKT_RES_MIMUNKNOWN */
    727 #define BCM_FIELD_PKT_RES_FCOE_ANY          0x26       /* To match any FCOE
    728                                                           packet. This option is
    729                                                           to combine resolution
    730                                                           types
    731                                                           BCM_FIELD_PKT_RES_FCOEKNOWN
    732                                                           and
    733                                                           BCM_FIELD_PKT_RES_FCOEUNKNOWN */
    734 #define BCM_FIELD_PKT_RES_L3_ANY            0x27       /* To match any L3
    735                                                           packet. This option is
    736                                                           to combine resolution
    737                                                           types
    738                                                           BCM_FIELD_PKT_RES_L3MCKNOWN,
    739                                                           BCM_FIELD_PKT_RES_L3MCUNKNOWN,
    740                                                           BCM_FIELD_PKT_RES_L3KNOWN
    741                                                           and
    742                                                           BCM_FIELD_PKT_RES_L3UNKNOWN */
    743 #define BCM_FIELD_PKT_RES_LAST              (BCM_FIELD_PKT_RES_L3_ANY) /* Must be >= highest
    744                                                           valid
    745                                                           BCM_FIELD_PKT_RES_* */
    746 
    747 /* Packet Resolution Values (for bcm_field_qualify_PacketRes). */
    748 #define BCM_FIELD_FWD_PKT_RES_MC    0x0        /* Multicast. */
    749 #define BCM_FIELD_FWD_PKT_RES_L3BC  0x1        /* L3 broadcast. */
    750 #define BCM_FIELD_FWD_PKT_RES_L3UC  0x2        /* L3 unicast. */
    751 #define BCM_FIELD_FWD_PKT_RES_L2BC  0x4        /* L2 broadcast. */
    752 #define BCM_FIELD_FWD_PKT_RES_L2UC  0x8        /* L2 unicast. */
    753 
    754 /* 
    755  * Vlan Translation Lookup status values (for
    756  * bcm_field_qualify_VlanTranslationHit)
    757  */
    758 #define BCM_FIELD_VXLT_LOOKUP_STATUS_NO_HIT 0x0        /* No Hit */
    759 #define BCM_FIELD_VXLT_LOOKUP_STATUS_HIT    0x1        /* Hit(First or Second
    760                                                           Hit) */
    761 #define BCM_FIELD_VXLT_LOOKUP_STATUS_FIRST_HIT 0x2        /* First Hit */
    762 #define BCM_FIELD_VXLT_LOOKUP_STATUS_SECOND_HIT 0x4        /* Second Hit */
    763 
    764 /* 
    765  * Mpls Forwarding Label action values (for
    766  * bcm_field_qualify_MplsForwardingLabelAction)
    767  */
    768 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_INVALID 0x0        /* Invalid */
    769 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_PHP 0x2        /* PHP */
    770 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_SWAP 0x3        /* SWAP the MPLS label */
    771 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP 0x4        /* POP the MPLS label.
    772                                                           This action is valid
    773                                                           for MPLS scenarios
    774                                                           which supports more
    775                                                           than 3 label lookups
    776                                                           through loopback. This
    777                                                           was added in TR3 which
    778                                                           supports upto 6 label
    779                                                           lookup. So 3 labels
    780                                                           can be POPed in first
    781                                                           pass and using this
    782                                                           action encoding in
    783                                                           IFP, we can catch such
    784                                                           packets. But for other
    785                                                           devices which supports
    786                                                           only 2 or 3 label
    787                                                           lookups, this encoding
    788                                                           is not valid. */
    789 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_L2_VPN 0x5        /* POP the MPLS label and
    790                                                           use L2 VPN */
    791 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_L3_VPN 0x6        /* POP the MPLS label and
    792                                                           use L3 VPN */
    793 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_ENTROPY 0x7        /* POP the MPLS label and
    794                                                           use Entropy */
    795 
    796 /* Inband telemetry stat action values */
    797 #define BCM_FIELD_INT_DO_NOT_ADD_STATISTICS 0x0        /* Do not add INT
    798                                                           statistics. */
    799 #define BCM_FIELD_INT_QUEUE_BUFFER          0x1        /* Queue buffer usage
    800                                                           request. */
    801 #define BCM_FIELD_INT_QUEUE_WATERMARK       0x2        /* Queue watermark
    802                                                           request. */
    803 #define BCM_FIELD_INT_POOL_BUFFER_AVAILABLE 0x3        /* Buffer available in
    804                                                           pool request. */
    805 #define BCM_FIELD_INT_MIN_BUFFER_AVAILABLE  0x4        /* Minimum buffer
    806                                                           available in pool
    807                                                           request. */
    808 
    809 /* 
    810  * Override trace event action values for action
    811  * bcmFieldActionOverrideTraceEvent
    812  */
    813 #define BCM_FIELD_TRACE_EVENT_DO_NOT_MIRROR 0x0        /* Override trace do not
    814                                                           mirror event */
    815 #define BCM_FIELD_TRACE_EVENT_DO_NOT_COPY_TO_CPU 0x1        /* Override trace do not
    816                                                           copy to cpu event */
    817 
    818 /* 
    819  * Override trace event action values for action
    820  * bcmFieldActionEgressPostOperation
    821  */
    822 #define BCM_FIELD_EGRESS_OPR_DEFAULT        0x0        /* Default Egress
    823                                                           Operation */
    824 #define BCM_FIELD_EGRESS_OPR_RECIRCLE_HDR_ENABLE 0x1        /* Enable ep nih header
    825                                                           for recirculation */
    826 #define BCM_FIELD_EGRESS_OPR_IFA_DELETE     0x2        /* Delete IFA operation */
    827 
    828 /* Inband telemetry control (for bcm_field_qualify_IntCtrl). */
    829 #define BCM_FIELD_INT_CTRL_INSERT_IFA_RECORD 0x0001     /* Insert IFA recored. */
    830 #define BCM_FIELD_INT_CTRL_DELETE_IFA_TRACE 0x0002     /* Delete IFA trace. */
    831 
    832 /* FibreChanZoneCheck values (for bcm_field_qualify_FibreChanZoneCheck) */
    833 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_NOT_DONE 0x0        /* Zone Check Did Not
    834                                                           Take Place */
    835 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_ALLOW 0x1        /* Allow + Hit */
    836 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_MISS 0x2        /* Miss */
    837 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_DENY 0x3        /* Deny + Hit */
    838 
    839 /* Module header opcodes (for bcm_field_qualify_MHOpcode). */
    840 #define BCM_FIELD_MHOPCODE_CONTROL          0          
    841 #define BCM_FIELD_MHOPCODE_UNICAST          1          
    842 #define BCM_FIELD_MHOPCODE_BROADCAST_DLF    2          
    843 #define BCM_FIELD_MHOPCODE_MULTICAST        3          
    844 #define BCM_FIELD_MHOPCODE_IPMULTICAST      4          
    845 #define BCM_FIELD_MHOPCODE_L2MULTICAST      5          
    846 
    847 /* User-defined field maximums. */
    848 #define BCM_FIELD_USER_MAX_UDF_NUM  1          /* UDF0 or UDF1. */
    849 #define BCM_FIELD_USER_MAX_USER_NUM 3          /* Valid range: 0..3 */
    850 #define BCM_FIELD_USER_NUM_UDFS     277        
    851 #define BCM_FIELD_USER_FIELD_SIZE   4          /* Bytes per user_num. */
    852 #define BCM_FIELD_USER_MAX_LENGTH   (1 << 5)   /* Number of bits. */
    853 
    854 /* Meter select parameters. */
    855 #define BCM_FIELD_METER_PEAK        1          
    856 #define BCM_FIELD_METER_COMMITTED   2          
    857 
    858 /* Metering modes for bcmFieldActionMeterConfig param0. */
    859 #define BCM_FIELD_METER_MODE_DEFAULT        0x0        
    860 #define BCM_FIELD_METER_MODE_FLOW           0x1        
    861 #define BCM_FIELD_METER_MODE_trTCM_COLOR_BLIND 0x2        
    862 #define BCM_FIELD_METER_MODE_trTCM_COLOR_AWARE 0x3        
    863 #define BCM_FIELD_METER_MODE_srTCM_COLOR_BLIND 0x6        
    864 #define BCM_FIELD_METER_MODE_srTCM_COLOR_AWARE 0x7        
    865 
    866 /* Policy options for bcmFieldActionPrioPktNew param1. */
    867 #define BCM_FIELD_SPCP_MARK_MAPPED          0x01       
    868 #define BCM_FIELD_SPCP_MARK_USE_INNER_PCP   0x02       
    869 #define BCM_FIELD_SPCP_MARK_USE_OUTER_PCP   0x04       
    870 #define BCM_FIELD_SPCP_MARK_USE_PORT_DEFAULT 0x08       
    871 #define BCM_FIELD_SPCP_MARK_MASK            0x0f       
    872 #define BCM_FIELD_CPCP_MARK_MAPPED          0x10       
    873 #define BCM_FIELD_CPCP_MARK_USE_INNER_PCP   0x20       
    874 #define BCM_FIELD_CPCP_MARK_USE_OUTER_PCP   0x40       
    875 #define BCM_FIELD_CPCP_MARK_USE_PORT_DEFAULT 0x80       
    876 #define BCM_FIELD_CPCP_MARK_MASK            0xf0       
    877 
    878 /* 
    879  * Policy options for bcmFieldActionInnerVlanNew and
    880  * bcmFieldActionOuterVlanNew param1.
    881  */
    882 #define BCM_FIELD_TAG_AS_RECEIVED   0x01       
    883 #define BCM_FIELD_TAG_AS_NORMALIZED 0x02       
    884 #define BCM_FIELD_TAG_COPY          0x04       
    885 #define BCM_FIELD_TAG_REMOVE        0x08       
    886 #define BCM_FIELD_TAG_REPLACE       0x10       
    887 
    888 /* 
    889  * Counter pair modes for bcmFieldActionUpdateCounter
    890  * 
    891  * Specifies increment mode for upper (counter_num=1) and lower
    892  * (counter_num=0) counter in the pair. For example: GREEN_YELLOW would
    893  * increment the upper counter for green packets and the lower counter
    894  * for yellow packets.
    895  * 
    896  * BCM_FIELD_COUNTER_MODE_BYTES can be ORd with any of the other values
    897  * to make the counter count bytes instead of packets.
    898  */
    899 #define BCM_FIELD_COUNTER_MODE_NO_NO        0x0000     
    900 #define BCM_FIELD_COUNTER_MODE_NO_YES       0x0001     
    901 #define BCM_FIELD_COUNTER_MODE_YES_NO       0x0002     
    902 #define BCM_FIELD_COUNTER_MODE_RED_NOTRED   0x0003     
    903 #define BCM_FIELD_COUNTER_MODE_GREEN_NOTGREEN 0x0004     
    904 #define BCM_FIELD_COUNTER_MODE_GREEN_RED    0x0005     
    905 #define BCM_FIELD_COUNTER_MODE_GREEN_YELLOW 0x0006     
    906 #define BCM_FIELD_COUNTER_MODE_RED_YELLOW   0x0007     
    907 #define BCM_FIELD_COUNTER_MODE_BYTES_PACKETS 0x0008     /* Upper counter is
    908                                                           bytes; lower counter
    909                                                           is packets */
    910 #define BCM_FIELD_COUNTER_MODE_GREEN        0x0010     
    911 #define BCM_FIELD_COUNTER_MODE_YELLOW       0x0020     
    912 #define BCM_FIELD_COUNTER_MODE_RED          0x0040     
    913 #define BCM_FIELD_COUNTER_MODE_ALL          0x0070     
    914 #define BCM_FIELD_COUNTER_MODE_PACKETS      0x0000     
    915 #define BCM_FIELD_COUNTER_MODE_BYTES        0x0100     
    916 #define BCM_FIELD_COUNTER_MODE_DEFAULT      BCM_FIELD_COUNTER_MODE_NO_YES 
    917 
    918 /* Redirect ECMP hash key selection. */
    919 #define BCM_FIELD_MULTIPATH_HASH_DISABLE    0x0        
    920 #define BCM_FIELD_MULTIPATH_HASH_DIP        0x1        
    921 #define BCM_FIELD_MULTIPATH_HASH_SIP        0x2        
    922 #define BCM_FIELD_MULTIPATH_HASH_SIP_DIP    0x3        
    923 #define BCM_FIELD_MULTIPATH_HASH_DST_SRC_L4_DIP_SIP 0x4        
    924 #define BCM_FIELD_MULTIPATH_HASH_SRC_DST_L4_SIP_DIP 0x5        
    925 #define BCM_FIELD_MULTIPATH_HASH_SRC_L4_SIP 0x6        
    926 #define BCM_FIELD_MULTIPATH_HASH_DST_L4_DIP 0x7        
    927 
    928 /* Filter types for bcmFieldActionFilters. */
    929 #define BCM_FIELD_FILTER_LAG            0x1        /* LAG Filter overrides the
    930                                                       rule */
    931 #define BCM_FIELD_FILTER_TAGGED         0x2        /* Tag Framing Filter
    932                                                       overrides the rule */
    933 #define BCM_FIELD_FILTER_PORT_MASK      0x4        /* Port Mask Filter overrides
    934                                                       the rule */
    935 #define BCM_FIELD_FILTER_STP            0x8        /* STP Filter overrides the
    936                                                       rule */
    937 #define BCM_FIELD_FILTER_EAP            0x10       /* EAP Filter overrides the
    938                                                       rule */
    939 #define BCM_FIELD_FILTER_INGRESS_VLAN   0x20       /* Ingress Vlan Filter
    940                                                       overrides the rule */
    941 #define BCM_FIELD_FILTER_EGRESS_VLAN    0x40       /* Egress Vlan Filter
    942                                                       overrides the rule */
    943 #define BCM_FIELD_FILTER_SA             0x80       /* Source address Filter
    944                                                       overrides the rule */
    945 #define BCM_FIELD_FILTER_SA_DISABLED    0x100      /* Disable SA filtering */
    946 #define BCM_FIELD_FILTER_BYPASS_ALL     0x200      /* Bypass all filtering */
    947 #define BCM_FIELD_FILTER_ALL            0x3ff      
    948 
    949 /* Policer use options for bcmFieldActionUsePolicerResult param0. */
    950 #define BCM_FIELD_USE_POLICER_RESULT_INGRESS 0x01       /* Use policer result on
    951                                                           ingress */
    952 #define BCM_FIELD_USE_POLICER_RESULT_EGRESS 0x02       /* Use policer result on
    953                                                           egress */
    954 
    955 /* 
    956  * Global policer selection flag.
    957  * 
    958  * If policer ID passed to (bcm_field_entry_policer_attach) API
    959  * corresponds to global meters, below flag can be used to configure
    960  * highest priority to lookup table policer with respect to the priority
    961  * of the policers in other tables.
    962  */
    963 #define BCM_FIELD_POLICER_GLOBAL_METER_USE_STAGE_LOOKUP_ACTION 0x01       /* Use lookup stage
    964                                                           policer */
    965 
    966 /* Flags for bcm_field_qualify_HiGigDoNotFlags. */
    967 #define BCM_FIELD_HIGIG_DONOT_MODIFY    0x1        /* Packet should be sent to
    968                                                       the destination port
    969                                                       unmodified. This flag can
    970                                                       be used only for Egress
    971                                                       packet modification on
    972                                                       Virtual Ports and is not
    973                                                       applicable to Offload
    974                                                       Engines. */
    975 #define BCM_FIELD_HIGIG_DONOT_LEARN     0x2        /* Do not perform MAC
    976                                                       learning. */
    977 
    978 /* Flags for bcmFieldQualifyHiGigOffloadEngineVxltStatus. */
    979 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_NOT_ATTEMPTED 0x0        /* VLAN Translation was
    980                                                           not attempted on this
    981                                                           packet. */
    982 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_NOT_DONE 0x1        /* VLAN Translation was
    983                                                           allowed by the
    984                                                           redirect rule, but
    985                                                           there was no
    986                                                           translation to be done
    987                                                           i.e. no vxt-related
    988                                                           packet modifications
    989                                                           were done */
    990 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_DONE 0x2        /* VLAN translation was
    991                                                           allowed by the
    992                                                           redirect rule, and
    993                                                           VLAN translation was
    994                                                           done. */
    995 
    996 /* Flags for bcmFieldQualifyHiGigOffloadEngineDeferredFlags. */
    997 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_DROP 0x01       /* Defer Drop Action. */
    998 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_CHANGE_PKT_PRIORITY 0x02       /* Defer Change in Packet
    999                                                           Priority. */
   1000 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_CHANGE_DSCP 0x04       /* Defer Change in DSCP
   1001                                                           value. */
   1002 
   1003 /* Flags for bcmFieldQualifyHiGigLabelType. */
   1004 #define BCM_FIELD_HIGIG_LABEL_TYPE_HIGIGPLUS_OVERLAY 0x00       /* Original HiGig+
   1005                                                           Overlay. */
   1006 #define BCM_FIELD_HIGIG_LABEL_TYPE_INGRESS_MODPORT 0x01       /* The module ID and port
   1007                                                           number through which
   1008                                                           the packet originally
   1009                                                           entered the system. */
   1010 #define BCM_FIELD_HIGIG_LABEL_TYPE_MIRROR_CLASSIFICATION_TAG 0x02       /* An opaque field
   1011                                                           generated by the ACL
   1012                                                           that triggers this
   1013                                                           packet. Can be used to
   1014                                                           assist the MTP in
   1015                                                           packet classification. */
   1016 #define BCM_FIELD_HIGIG_LABEL_TYPE_QTAG     0x03       /* QTAG (Used to pass
   1017                                                           QTAG when usage using
   1018                                                           EH is not desirable) */
   1019 
   1020 /* 
   1021  * Flags for bcmFieldQualifyHiGigPreserveFlags and
   1022  * bcmFieldQualifyHiGigVpPreserveFlags.
   1023  */
   1024 #define BCM_FIELD_HIGIG_PRESERVE_DSCP   0x1        /* Do not change DSCP of the
   1025                                                       outermost IP header. */
   1026 #define BCM_FIELD_HIGIG_PRESERVE_DOT1P  0x2        /* Do not change 802.1p/CFI
   1027                                                       bits of the outermost L2
   1028                                                       header. */
   1029 
   1030 /* Flags for bcmFieldQualifyHiGigMirrorOrSwitchPkt. */
   1031 #define BCM_FIELD_HIGIG_MIRROR  0x01       /* Mirror and Switch. */
   1032 
   1033 /* 
   1034  * Flags for
   1035  * bcmFieldQualifyHiGig3Flags/bcmFieldQualifyLoopbackHiGig3Flags.
   1036  */
   1037 #define BCM_FIELD_HIGIG3_SWITCH_GENERATED   0x0001     /* HiGig3 packet with
   1038                                                           switch generated flag
   1039                                                           set. */
   1040 #define BCM_FIELD_HIGIG3_LAG_FAILOVER       0x0002     /* HiGig3 packet with LAG
   1041                                                           failover flag set. */
   1042 #define BCM_FIELD_HIGIG3_DO_NOT_LEARN       0x0004     /* HiGig3 packet with do
   1043                                                           not learn flag set. */
   1044 
   1045 /* 
   1046  * Various header format extension values for qualification /
   1047  * preselection
   1048  */
   1049 typedef enum bcm_field_header_format_extension_e {
   1050     bcmFieldHeaderFormatExtensionDontCare = 0, /* Select packets with any header format
   1051                                            extension */
   1052     bcmFieldHeaderFormatExtensionFtmh = 1, /* Select only packets which are FTMH */
   1053     bcmFieldHeaderFormatExtensionIpUdpGtp1 = 2, /* Select only packets which UDP/IP and
   1054                                            GPRS Tunneling Protocol (GTP1) */
   1055     bcmFieldHeaderFormatExtensionIpUdpGtp2 = 3, /* Select only packets which UDP/IP and
   1056                                            GPRS Tunneling Protocol (GTP2) */
   1057     bcmFieldHeaderFormatExtensionFcoe = 4, /* Select only packets which are Fiber
   1058                                            Channel Over Ethernet */
   1059     bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3 = 5, /* 'Non_L4' stands for IPV4 which is
   1060                                            neither UDP nor TCP. Hit is marked
   1061                                            when parser speculates that,
   1062                                            following MPLS, the next protocol is
   1063                                            IPV4 (on the third header) but not L4 */
   1064     bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3 = 6, /* 'Non_L4' stands for IPV6 which is
   1065                                            neither UDP nor TCP. Hit is marked
   1066                                            when parser speculates that,
   1067                                            following MPLS, the next protocol is
   1068                                            IPV6 (on the third header) but not L4 */
   1069     bcmFieldHeaderFormatExtensionMplsL4IPV4isH3 = 7, /* 'L4' stands for UDP/TCP. Hit is
   1070                                            marked when parser speculates that,
   1071                                            following MPLS, the next protocol is
   1072                                            L4 of IPV4 (on the third header) */
   1073     bcmFieldHeaderFormatExtensionMplsL4IPV6isH3 = 8, /* 'L4' stands for UDP/TCP. Hit is
   1074                                            marked when parser speculates that,
   1075                                            following MPLS, the next protocol is
   1076                                            L4 of IPV6 (on the third header) */
   1077     bcmFieldHeaderFormatExtensionMplsETHisH3 = 9, /* Hit is marked when parser speculates
   1078                                            that, following MPLS, the next
   1079                                            protocol is Ethernet (on the third
   1080                                            header) */
   1081     bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH4 = 10, /* 'Non_L4' stands for IPV4 which is
   1082                                            neither UDP nor TCP. Hit is marked
   1083                                            when parser speculates that,
   1084                                            following MPLS, the next protocol is
   1085                                            Ethernet followed by IPV4 (on the
   1086                                            fourth header) but not L4 */
   1087     bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH4 = 11, /* 'Non_L4' stands for IPV4 which is
   1088                                            neither UDP nor TCP. Hit is marked
   1089                                            when parser speculates that,
   1090                                            following MPLS, the next protocol is
   1091                                            Ethernet followed by IPV6 (on the
   1092                                            fourth header) but not L4 */
   1093     bcmFieldHeaderFormatExtensionMplsL4IPV4isH4 = 12, /* 'L4' stands for UDP/TCP. Hit is
   1094                                            marked when parser speculates that,
   1095                                            following MPLS, the next protocol is
   1096                                            Ethernet followed by L4 of IPV4 (on
   1097                                            the fourth header) */
   1098     bcmFieldHeaderFormatExtensionMplsL4IPV6isH4 = 13, /* 'L4' stands for UDP/TCP. Hit is
   1099                                            marked when parser speculates that,
   1100                                            following MPLS, the next protocol is
   1101                                            Ethernet followed by L4 of IPV6 (on
   1102                                            the fourth header) */
   1103     bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsAny = 14, /* Group combining
   1104                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3
   1105                                            &
   1106                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH4 */
   1107     bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsAny = 15, /* Group combining
   1108                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3
   1109                                            &
   1110                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH4 */
   1111     bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH3 = 16, /* Group combining
   1112                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3
   1113                                            &
   1114                                            bcmFieldHeaderFormatExtensionMplsL4IPV4isH3 */
   1115     bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH3 = 17, /* Group combining
   1116                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3
   1117                                            &
   1118                                            bcmFieldHeaderFormatExtensionMplsL4IPV6isH3 */
   1119     bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH5 = 18, /* 'Non_L4' stands for IPV4 which is
   1120                                            neither UDP nor TCP. Hit is marked
   1121                                            when parser speculates that,
   1122                                            following MPLS, the next protocol is
   1123                                            Ethernet followed by IPV4 (on the
   1124                                            fifth header) but not L4 */
   1125     bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH5 = 19, /* 'Non_L4' stands for IPV4 which is
   1126                                            neither UDP nor TCP. Hit is marked
   1127                                            when parser speculates that,
   1128                                            following MPLS, the next protocol is
   1129                                            Ethernet followed by IPV6 (on the
   1130                                            fifth header) but not L4 */
   1131     bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH5 = 20, /* Group combining
   1132                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH5
   1133                                            &
   1134                                            bcmFieldHeaderFormatExtensionMplsL4IPV4isH5 */
   1135     bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH5 = 21, /* Group combining
   1136                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH5
   1137                                            &
   1138                                            bcmFieldHeaderFormatExtensionMplsL4IPV6isH5 */
   1139     bcmFieldHeaderFormatExtensionMplsETHisH4 = 22, /* Hit is marked when parser speculates
   1140                                            that, following MPLS, the next
   1141                                            protocol is Ethernet (on the fourth
   1142                                            header) */
   1143     bcmFieldHeaderFormatExtensionMplsAnyEthIsH3H4 = 23, /* Group combining
   1144                                            bcmFieldHeaderFormatExtensionMplsETHisH3
   1145                                            &
   1146                                            bcmFieldHeaderFormatExtensionMplsETHisH4 */
   1147     bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH4 = 24, /* Group combining
   1148                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH4
   1149                                            &
   1150                                            bcmFieldHeaderFormatExtensionMplsL4IPV4isH4 */
   1151     bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH4 = 25, /* Group combining
   1152                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH4
   1153                                            &
   1154                                            bcmFieldHeaderFormatExtensionMplsL4IPV6isH4 */
   1155     bcmFieldHeaderFormatExtensionMplsL4IPV4isH5 = 26, /* 'L4' stands for UDP/TCP. Hit is
   1156                                            marked when parser speculates that,
   1157                                            following MPLS, the next protocol is
   1158                                            Ethernet followed by L4 of IPV4 (on
   1159                                            the fifth header). */
   1160     bcmFieldHeaderFormatExtensionMplsL4IPV6isH5 = 27, /* 'L4' stands for UDP/TCP. Hit is
   1161                                            marked when parser speculates that,
   1162                                            following MPLS, the next protocol is
   1163                                            Ethernet followed by L4 of IPV6 (on
   1164                                            the fifth header). */
   1165     bcmFieldHeaderFormatExtensionCount = 28 /* Always Last. Not a usable value. */
   1166 } bcm_field_header_format_extension_t;
   1167 
   1168 #define BCM_FIELD_HEADER_FORMAT_EXTENSION \
   1169 { \
   1170     "DontCare", \
   1171     "Ftmh", \
   1172     "IpUdpGtp1", \
   1173     "IpUdpGtp2", \
   1174     "Fcoe", \
   1175     "MplsNonL4IPV4IsH3", \
   1176     "MplsNonL4IPV6IsH3", \
   1177     "MplsL4IPV4isH3", \
   1178     "MplsL4IPV6isH3", \
   1179     "MplsETHisH3", \
   1180     "MplsNonL4IPV4isH4", \
   1181     "MplsNonL4IPV6isH4", \
   1182     "MplsL4IPV4isH4", \
   1183     "MplsL4IPV6isH4", \
   1184     "MplsNonL4IPV4IsAny", \
   1185     "MplsNonL4IPV6IsAny", \
   1186     "MplsAnyL4IPV4IsH3", \
   1187     "MplsAnyL4IPV6IsH3", \
   1188     "MplsNonL4IPV4isH5", \
   1189     "MplsNonL4IPV6isH5", \
   1190     "MplsAnyL4IPV4IsH5", \
   1191     "MplsAnyL4IPV6IsH5", \
   1192     "MplsETHisH4", \
   1193     "MplsAnyEthIsH3H4", \
   1194     "MplsAnyL4IPV4IsH4", \
   1195     "MplsAnyL4IPV6IsH4", \
   1196     "MplsL4IPV4isH5", \
   1197     "MplsL4IPV6isH5"  \
   1198 }
   1199 
   1200 /* Various packet header formats for qualification / preselection */
   1201 typedef enum bcm_field_header_format_e {
   1202     bcmFieldHeaderFormatL2 = 0,         /* L2 packet (headers = L2) */
   1203     bcmFieldHeaderFormatIp4 = 1,        /* IPv4 packet (headers = L2, IPv4, L4) */
   1204     bcmFieldHeaderFormatIp4AnyL2L3 = 2, /* Any IPv4 packet (headers = L2, IPv4,
   1205                                            Any) */
   1206     bcmFieldHeaderFormatIp6 = 3,        /* IPv6 packet (headers = L2, IPv6, L4) */
   1207     bcmFieldHeaderFormatIp6AnyL2L3 = 4, /* Any IPv6 packet (headers = L2, IPv6,
   1208                                            Any) */
   1209     bcmFieldHeaderFormatMplsLabel1 = 5, /* MPLS packet with one label (headers =
   1210                                            L2, MPLS (1 label), L4) */
   1211     bcmFieldHeaderFormatMplsLabel1AnyL2L3 = 6, /* Any MPLS packet with one label
   1212                                            (headers = L2, MPLS (1 label), Any) */
   1213     bcmFieldHeaderFormatMplsLabel2 = 7, /* MPLS packet with two labels (headers
   1214                                            = L2, MPLS (2 labels), L4) */
   1215     bcmFieldHeaderFormatMplsLabel2AnyL2L3 = 8, /* Any MPLS packet with two labels
   1216                                            (headers = L2, MPLS (2 labels), Any) */
   1217     bcmFieldHeaderFormatMplsLabel3 = 9, /* MPLS packet with three labels
   1218                                            (headers = L2, MPLS (3 labels), L4) */
   1219     bcmFieldHeaderFormatMplsLabel3AnyL2L3 = 10, /* Any MPLS packet with three labels
   1220                                            (headers = L2, MPLS (3 labels), Any) */
   1221     bcmFieldHeaderFormatTrill = 11,     /* Trill packet (headers = L2, Trill) */
   1222     bcmFieldHeaderFormatEthEth = 12,    /* L2 over L2 packet (headers = L2, L2) */
   1223     bcmFieldHeaderFormatEthTrillEth = 13, /* L2 over Trill packet (headers = L2,
   1224                                            Trill, L2) */
   1225     bcmFieldHeaderFormatIp4Ip4 = 14,    /* IPv4 over IPv4 packet (headers = L2,
   1226                                            IPv4, IPv4) */
   1227     bcmFieldHeaderFormatIp6Ip4 = 15,    /* IPv6 over IPv4 packet (headers = L2,
   1228                                            IPv4, IPv6) */
   1229     bcmFieldHeaderFormatIp4MplsLabel1 = 16, /* IPv4 over MPLS with one label
   1230                                            (headers = L2, MPLS (one label),
   1231                                            IPv4) */
   1232     bcmFieldHeaderFormatIp4MplsLabel2 = 17, /* IPv4 over MPLS with two labels
   1233                                            (headers = L2, MPLS (two labels),
   1234                                            IPv4) */
   1235     bcmFieldHeaderFormatIp4MplsLabel3 = 18, /* IPv4 over MPLS with three labels
   1236                                            (headers = L2, MPLS (three labels),
   1237                                            IPv4) */
   1238     bcmFieldHeaderFormatIp6MplsLabel1 = 19, /* IPv6 over MPLS with one label
   1239                                            (headers = L2, MPLS (one label),
   1240                                            IPv6) */
   1241     bcmFieldHeaderFormatIp6MplsLabel2 = 20, /* IPv6 over MPLS with two labels
   1242                                            (headers = L2, MPLS (two labels),
   1243                                            IPv6) */
   1244     bcmFieldHeaderFormatIp6MplsLabel3 = 21, /* IPv6 over MPLS with three labels
   1245                                            (headers = L2, MPLS (three labels),
   1246                                            IPv6) */
   1247     bcmFieldHeaderFormatEthMplsLabel1 = 22, /* L2 over MPLS with one label (headers
   1248                                            = L2, MPLS (one label), L2) */
   1249     bcmFieldHeaderFormatEthMplsLabel2 = 23, /* L2 over MPLS with two labels (headers
   1250                                            = L2, MPLS (two labels), L2) */
   1251     bcmFieldHeaderFormatEthMplsLabel3 = 24, /* L2 over MPLS with three labels
   1252                                            (headers = L2, MPLS (three labels),
   1253                                            L2) */
   1254     bcmFieldHeaderFormatIp4EthMplsLabel1 = 25, /* IPv4 over L2 over MPLS with one label
   1255                                            (headers = L2, MPLS (one label), L2,
   1256                                            IPv4) */
   1257     bcmFieldHeaderFormatIp4EthMplsLabel2 = 26, /* IPv4 over L2 over MPLS with two
   1258                                            labels (headers = L2, MPLS (two
   1259                                            labels), L2, IPv4) */
   1260     bcmFieldHeaderFormatIp4EthMplsLabel3 = 27, /* IPv4 over L2 over MPLS with three
   1261                                            labels (headers = L2, MPLS (three
   1262                                            labels), L2, IPv4) */
   1263     bcmFieldHeaderFormatTrafficManagement = 28, /* Traffic Management packet injected by
   1264                                            an external Packet Processor */
   1265     bcmFieldHeaderFormatEthIp4Eth = 29, /* L2 over IPv4 over L2 packet (headers
   1266                                            = L2, IPv4, L2) */
   1267     bcmFieldHeaderFormatFCoE = 30,      /* FCoE packet */
   1268     bcmFieldHeaderFormatMplsAnyLabelAnyL2L3 = 31, /* Any Number of MPLS labels 1/2/3 and
   1269                                            any L2/L3 */
   1270     bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV4IsH3 = 32, /* 'Non_L4' stands for IPV4 which is
   1271                                            neither UDP nor TCP. Hit is marked
   1272                                            when parser detected that, after MPLS
   1273                                            termination, the next protocol is
   1274                                            IPV4 (on the third header) but not
   1275                                            L4. */
   1276     bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV6IsH3 = 33, /* 'Non_L4' stands for IPV6 which is
   1277                                            neither UDP nor TCP. Hit is marked
   1278                                            when parser detected that, after MPLS
   1279                                            termination, the next protocol is
   1280                                            IPV6 (on the third header) but not
   1281                                            L4. */
   1282     bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV4IsH3 = 34, /* 'L4' stands for UDP/TCP. Hit is
   1283                                            marked when parser detected that,
   1284                                            after MPLS termination, the next
   1285                                            protocol is L4 of IPV4 (on the third
   1286                                            header). */
   1287     bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV6IsH3 = 35, /* 'L4' stands for UDP/TCP. Hit is
   1288                                            marked when parser detected that,
   1289                                            after MPLS termination, the next
   1290                                            protocol is L4 of IPV6 (on the third
   1291                                            header). */
   1292     bcmFieldHeaderFormatAfterTunnelTerminatedEthIsH3 = 36, /* Hit is marked when parser detected
   1293                                            that, after MPLS termination, the
   1294                                            next protocol Ethernet (on the third
   1295                                            header). */
   1296     bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV4IsH4ETHisH3 = 37, /* 'Non_L4' stands for IPV4 which is
   1297                                            neither UDP nor TCP. Hit is marked
   1298                                            when parser detected that, after MPLS
   1299                                            termination, the next protocol is
   1300                                            Ethernet followed by IPV4 (on the
   1301                                            fourth header) but not L4. */
   1302     bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV6IsH4ETHisH3 = 38, /* 'Non_L4' stands for IPV4 which is
   1303                                            neither UDP nor TCP. Hit is marked
   1304                                            when parser detected that, after MPLS
   1305                                            termination, the next protocol is
   1306                                            Ethernet followed by IPV6 (on the
   1307                                            fourth header) but not L4. */
   1308     bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV4IsH4ETHisH3 = 39, /* 'L4' stands for UDP/TCP. Hit is
   1309                                            marked when parser detected that,
   1310                                            after MPLS termination, the next
   1311                                            protocol is Ethernet followed by L4
   1312                                            of IPV4 (on the fourth header). */
   1313     bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV6IsH4ETHisH3 = 40, /* 'L4' stands for UDP/TCP. Hit is
   1314                                            marked when parser detected that,
   1315                                            after MPLS termination, the next
   1316                                            protocol is Ethernet followed by L4
   1317                                            of IPV6 (on the fourth header). */
   1318     bcmFieldHeaderFormatMpls = 41,      /* MPLS packet (Packet containing MPLS) */
   1319     bcmFieldHeaderFormatIp4Ip6 = 42,    /* IPv4 over IPv6 packet (headers = L2,
   1320                                            IPv4, IPv6) */
   1321     bcmFieldHeaderFormatIp6Ip6 = 43,    /* IPv6 over IPv6 packet (headers = L2,
   1322                                            IPv6, IPv6) */
   1323     bcmFieldHeaderFormatFCoENoEncap = 44, /* FCoE packet with standard header only
   1324                                            (no extended header) */
   1325     bcmFieldHeaderFormatCount = 45      /* Always Last. Not a usable value. */
   1326 } bcm_field_header_format_t;
   1327 
   1328 #define BCM_FIELD_HEADER_FORMAT \
   1329 { \
   1330     "L2", \
   1331     "Ip4", \
   1332     "Ip4AnyL2L3", \
   1333     "Ip6", \
   1334     "Ip6AnyL2L3", \
   1335     "MplsLabel1", \
   1336     "MplsLabel1AnyL2L3", \
   1337     "MplsLabel2", \
   1338     "MplsLabel2AnyL2L3", \
   1339     "MplsLabel3", \
   1340     "MplsLabel3AnyL2L3", \
   1341     "Trill", \
   1342     "EthEth", \
   1343     "EthTrillEth", \
   1344     "Ip4Ip4", \
   1345     "Ip6Ip4", \
   1346     "Ip4MplsLabel1", \
   1347     "Ip4MplsLabel2", \
   1348     "Ip4MplsLabel3", \
   1349     "Ip6MplsLabel1", \
   1350     "Ip6MplsLabel2", \
   1351     "Ip6MplsLabel3", \
   1352     "EthMplsLabel1", \
   1353     "EthMplsLabel2", \
   1354     "EthMplsLabel3", \
   1355     "Ip4EthMplsLabel1", \
   1356     "Ip4EthMplsLabel2", \
   1357     "Ip4EthMplsLabel3", \
   1358     "TrafficManagement", \
   1359     "EthIp4Eth", \
   1360     "FCoE", \
   1361     "MplsAnyLabelAnyL2L3", \
   1362     "AfterTunnelTerminatedNonL4IPV4IsH3", \
   1363     "AfterTunnelTerminatedNonL4IPV6IsH3", \
   1364     "AfterTunnelTerminatedL4IPV4IsH3", \
   1365     "AfterTunnelTerminatedL4IPV6IsH3", \
   1366     "AfterTunnelTerminatedEthIsH3", \
   1367     "AfterTunnelTerminatedNonL4IPV4IsH4ETHisH3", \
   1368     "AfterTunnelTerminatedNonL4IPV6IsH4ETHisH3", \
   1369     "AfterTunnelTerminatedL4IPV4IsH4ETHisH3", \
   1370     "AfterTunnelTerminatedL4IPV6IsH4ETHisH3", \
   1371     "Mpls", \
   1372     "Ip4Ip6", \
   1373     "Ip6Ip6", \
   1374     "FCoENoEncap"  \
   1375 }
   1376 
   1377 /* 
   1378  * Specifies a set of possible header formats for matching, for use with
   1379  * bcmFieldQualifyHeaderFormatSet.
   1380  */
   1381 typedef struct bcm_field_header_format_set_s {
   1382     SHR_BITDCL w[_SHR_BITDCLSIZE(bcmFieldHeaderFormatCount)]; 
   1383 } bcm_field_header_format_set_t;
   1384 
   1385 #define BCM_FIELD_HEADER_FORMAT_SET_INIT(hfset)  \
   1386     sal_memset(&(hfset), 0, sizeof(bcm_field_header_format_set_t)) 
   1387 
   1388 #define BCM_FIELD_HEADER_FORMAT_SET_ADD(hfset, hf)  SHR_BITSET(((hfset).w), (hf)) 
   1389 
   1390 #define BCM_FIELD_HEADER_FORMAT_SET_REMOVE(hfset, hf)  SHR_BITCLR(((hfset).w), (hf)) 
   1391 
   1392 #define BCM_FIELD_HEADER_FORMAT_SET_TEST(hfset, hf)  SHR_BITGET(((hfset).w), (hf)) 
   1393 
   1394 /* Opaque handle to a field action priority. */
   1395 typedef uint32 bcm_field_action_priority_t;
   1396 
   1397 /* 
   1398  * Structure to indicate selected FEM id, identifying it by array to
   1399  * clarify priority between FEMs abd FESes.
   1400  */
   1401 typedef struct bcm_field_array_n_position_s {
   1402     uint8 array_id;                 /* Index of the FES/FEM array in the stage. */
   1403     uint16 fem_position_in_array;   /* Position of FES/FEM (by FES/FEM ID)
   1404                                        within the FES/FEM array. */
   1405 } bcm_field_array_n_position_t;
   1406 
   1407 /* 
   1408  * Field Qualifiers
   1409  * 
   1410  * Field qualifiers are collected into qualifier sets (qsets), which are
   1411  * used to allocate field groups.
   1412  * 
   1413  * Note: These are in order of their bit width. Do not change the order
   1414  * or the field select code algorithm for wide-mode will get slower.
   1415  */
   1416 typedef enum bcm_field_qualify_e {
   1417     bcmFieldQualifySrcIp6 = 0,          /*  Source IPv6 Address. */
   1418     bcmFieldQualifyDstIp6 = 1,          /*  Destination IPv6 Address. */
   1419     bcmFieldQualifySrcIp6High = 2,      /*  Src. IPv6 Address (High/Upper 64
   1420                                            bits). */
   1421     bcmFieldQualifyDstIp6High = 3,      /*  Dest IPv6 Address (High/Upper 64
   1422                                            bits). */
   1423     bcmFieldQualifySrcIp6Low = 4,       /*  Src. IPv6 Address (Low/Lower 64
   1424                                            bits). */
   1425     bcmFieldQualifyDstIp6Low = 5,       /*  Dest IPv6 Address (Low/Lower 64
   1426                                            bits). */
   1427     bcmFieldQualifySrcMac = 6,          /*  Source L2 MAC Address. */
   1428     bcmFieldQualifyDstMac = 7,          /*  Destination L2 MAC Address. */
   1429     bcmFieldQualifySnap = 8,            /*  40: SNAP Header. */
   1430     bcmFieldQualifySrcIp = 9,           /*  Source IPv4 Address. */
   1431     bcmFieldQualifyDstIp = 10,          /*  Destination IPv4 Address. */
   1432     bcmFieldQualifyLlc = 11,            /*  24: LLC Header. */
   1433     bcmFieldQualifyInPort = 12,         /*  Single Input Port. */
   1434     bcmFieldQualifyInPorts = 13,        /*  Input Port Bitmap. */
   1435     bcmFieldQualifyOutPorts = 14,       /*  Output Port Bitmap. */
   1436     bcmFieldQualifyDrop = 15,           /*  Packet is flagged to be dropped . */
   1437     bcmFieldQualifyIp6FlowLabel = 16,   /*  IPv6 Flow Label. */
   1438     bcmFieldQualifyOuterVlan = 17,      /*  Outer VLAN. */
   1439     bcmFieldQualifyOuterVlanId = 18,    /*  Outer VLAN Id. */
   1440     bcmFieldQualifyOuterVlanPri = 19,   /*  Outer VLAN priority. */
   1441     bcmFieldQualifyOuterVlanCfi = 20,   /*  Outer VLAN Cfi. */
   1442     bcmFieldQualifyInnerVlan = 21,      /*  Inner VLAN (double-tagged pkts
   1443                                            only). */
   1444     bcmFieldQualifyInnerVlanId = 22,    /*  Inner VLAN Id. */
   1445     bcmFieldQualifyInnerVlanPri = 23,   /*  Inner VLAN priority. */
   1446     bcmFieldQualifyInnerVlanCfi = 24,   /*  Inner VLAN Cfi. */
   1447     bcmFieldQualifyLookupStatus = 25,   /*  DEPRECATED Lookup status
   1448                                            (BCM_FIELD_LOOKUP_xxx). */
   1449     bcmFieldQualifyRangeCheck = 26,     /*  TCP/UDP Port Range Check Results. */
   1450     bcmFieldQualifyL4PortRangeCheck = bcmFieldQualifyRangeCheck, /* TCP/UDP Port Range Check Results */
   1451     bcmFieldQualifyL4SrcPort = 27,      /*  TCP/UDP Source Port. */
   1452     bcmFieldQualifyL4DstPort = 28,      /*  TCP/UDP Destination Port. */
   1453     bcmFieldQualifyEtherType = 29,      /*  Ethernet Type. */
   1454     bcmFieldQualifyIpProtocol = 30,     /*  IP Protocol Field. */
   1455     bcmFieldQualifyIp6NextHeader = bcmFieldQualifyIpProtocol, /*  Match on Ipv6 last extension
   1456                                            header(or protocol type). */
   1457     bcmFieldQualifyDSCP = 31,           /*  Diffserv Code Point. */
   1458     bcmFieldQualifyTos = bcmFieldQualifyDSCP, /*  Tos - same as DSCP. */
   1459     bcmFieldQualifyIp6TrafficClass = bcmFieldQualifyDSCP, /*  IPv6 Traffic Class. */
   1460     bcmFieldQualifyTtl = 32,            /*  Time To Live/Hop Limit. */
   1461     bcmFieldQualifyIp6HopLimit = bcmFieldQualifyTtl, /*  IPv6 Hop Limit. */
   1462     bcmFieldQualifySrcModid = 33,       /*  Source Module ID (deprecated). */
   1463     bcmFieldQualifySrcPortTgid = 34,    /*  Source Port/Trunk Group ID
   1464                                            (deprecated). */
   1465     bcmFieldQualifySrcPort = 35,        /*  Source Module ID and Port . */
   1466     bcmFieldQualifySrcTrunk = 36,       /*  Source Trunk Group ID . */
   1467     bcmFieldQualifySrcTrunkMemberGport = 37, /*  Source Trunk Member Port . */
   1468     bcmFieldQualifyDstModid = 38,       /*  Destination Module ID (deprecated). */
   1469     bcmFieldQualifyDstPortTgid = 39,    /*  Dest Port/Trunk Group ID
   1470                                            (deprecated. */
   1471     bcmFieldQualifyDstPort = 40,        /*  Destination Module ID and Port . */
   1472     bcmFieldQualifyDstTrunk = 41,       /*  Destination Trunk Group ID . */
   1473     bcmFieldQualifyTcpControl = 42,     /*  TCP Control Flags. */
   1474     bcmFieldQualifyPacketRes = 43,      /*  Pkt resolution
   1475                                            (BCM_FIELD_PKT_RES_xxx). */
   1476     bcmFieldQualifyPacketFormat = 44,   /*  DEPRECATED Packet Format
   1477                                            (BCM_FIELD_PKT_FMT_xxx). */
   1478     bcmFieldQualifySrcClassL2 = 45,     /*  Source Class based on L2 lookup
   1479                                            result. */
   1480     bcmFieldQualifySrcClassL3 = 46,     /*  Source Class based on L3 lookup
   1481                                            result. */
   1482     bcmFieldQualifySrcClassField = 47,  /*  Source Class based on
   1483                                            bcmFieldStageLookup result. */
   1484     bcmFieldQualifyDstClassL2 = 48,     /*  Destination Class based on L2 lookup
   1485                                            result. */
   1486     bcmFieldQualifyDstClassL3 = 49,     /*  Destination Class based on L3 lookup
   1487                                            result. */
   1488     bcmFieldQualifyDstClassField = 50,  /*  Destination Class based on
   1489                                            bcmFieldStageLookup result. */
   1490     bcmFieldQualifyIpInfo = 51,         /*  IP Information (BCM_FIELD_IP_xxx). */
   1491     bcmFieldQualifyIpProtocolCommon = 52, /*  3: Common IP protocols. */
   1492     bcmFieldQualifyMHOpcode = 53,       /*  Module Header Opcode. */
   1493     bcmFieldQualifyIpFlags = 54,        /*  IPv4 Flags. */
   1494     bcmFieldQualifyInnerTpid = 55,      /*  2: Inner VLAN TPID. */
   1495     bcmFieldQualifyOuterTpid = 56,      /*  2: Outer VLAN TPID. */
   1496     bcmFieldQualifyInnerIpType = 57,    /*  Inner ip header IP Type
   1497                                            (bcmFieldIpTypeXXX). */
   1498     bcmFieldQualifyTunnelType = 58,     /*  TunnelType (bcmFieldTunnelXXX). */
   1499     bcmFieldQualifyLoopbackType = 59,   /*  LoopbackType
   1500                                            (bcmFieldLoopbackTypeXXX). */
   1501     bcmFieldQualifyLoopback = 60,       /*  Packets forwarded through loopback
   1502                                            interface. */
   1503     bcmFieldQualifyIpType = 61,         /*  IP Type (bcmFieldIpTypeXXX). */
   1504     bcmFieldQualifyForwardingType = 62, /*  Packet forwarding type
   1505                                            (bcmFieldForwardingTypeXXX). */
   1506     bcmFieldQualifyDecap = 63,          /*  Decapsulation occurred. */
   1507     bcmFieldQualifyHiGig = 64,          /*  HiGig packet. */
   1508     bcmFieldQualifyHiGigProxy = 65,     /*  HiGig proxy processing is enabled. */
   1509     bcmFieldQualifyDstHiGig = 66,       /*  Packet being forwarded to higig
   1510                                            port. */
   1511     bcmFieldQualifyStage = 67,          /*  Field Processor pipeline stage. */
   1512     bcmFieldQualifyStageIngress = 68,   /*  Field Processor pipeline ingress
   1513                                            stage. */
   1514     bcmFieldQualifyStageIngressSecurity = 69, /*  Field Processor ingress security
   1515                                            stage. */
   1516     bcmFieldQualifyStageIngressQoS = 70, /*  Field Processor ingress QOS stage. */
   1517     bcmFieldQualifyStageLookup = 71,    /*  Field Processor pipeline lookup
   1518                                            stage. */
   1519     bcmFieldQualifyStageEgress = 72,    /*  Field Processor pipeline egress
   1520                                            stage. */
   1521     bcmFieldQualifyStageEgressSecurity = 73, /*  Field Processor egress security
   1522                                            stage. */
   1523     bcmFieldQualifyStageExternal = 74,  /*  Field Processor Rules in External
   1524                                            slice. */
   1525     bcmFieldQualifyDeprecated75 = 75,   /* Deprecated 75 */
   1526     bcmFieldQualifyDeprecated76 = 76,   /* Deprecated 76 */
   1527     bcmFieldQualifyTcpSequenceZero = 77, /*  Sequence number = 0. */
   1528     bcmFieldQualifyTcpHeaderSize = 78,  /*  TCP Header Size. */
   1529     bcmFieldQualifyInterfaceClassL2 = 79, /*  Vlan Class Id. */
   1530     bcmFieldQualifyInterfaceClassL3 = 80, /*  L3 Interface Class Id. */
   1531     bcmFieldQualifyInterfaceClassPort = 81, /*  Port Class Id. */
   1532     bcmFieldQualifyL3Routable = 82,     /*  L3 routable bit for FB2. */
   1533     bcmFieldQualifyIpFrag = 83,         /*  IP Fragment info. */
   1534     bcmFieldQualifyVrf = 84,            /*  VRF Id for FB 2. */
   1535     bcmFieldQualifyL3Ingress = 85,      /*  L3 ingress interface. */
   1536     bcmFieldQualifyOutPort = 86,        /*  Single Output Port. */
   1537     bcmFieldQualifyIp4 = 87,            /*  Qualify IpType == IPv4Any. */
   1538     bcmFieldQualifyIp6 = 88,            /*  Qualify IpType == Ipv6Any. */
   1539     bcmFieldQualifyL2Format = 89,       /*  Qualify on L2 header format. */
   1540     bcmFieldQualifyVlanFormat = 90,     /*  Qualify on vlan tag format. */
   1541     bcmFieldQualifyTranslatedVlanFormat = 91, /*  Qualify on translated vlan tag
   1542                                            format. */
   1543     bcmFieldQualifyExtensionHeaderType = 92, /*  Qualify on  Next Header Field in
   1544                                            First Extension Header. */
   1545     bcmFieldQualifyExtensionHeaderSubCode = 93, /*  Qualify on First byte after
   1546                                            extension header length field. */
   1547     bcmFieldQualifyExtensionHeader2Type = 94, /*  Qualify on  Next Header Field in
   1548                                            Second Extension Header. */
   1549     bcmFieldQualifyL4Ports = 95,        /*  Four bytes after L3 header are
   1550                                            available. */
   1551     bcmFieldQualifyMirrorCopy = 96,     /*  Qualify mirrored traffic. */
   1552     bcmFieldQualifyTunnelTerminated = 97, /*  Qualify tunnel terminated traffic. */
   1553     bcmFieldQualifyMplsTerminated = 98, /*  Qualify mpls terminated traffic. */
   1554     bcmFieldQualifyInnerSrcIp = 99,     /*  Inner ip header source IPv4 Address. */
   1555     bcmFieldQualifyInnerDstIp = 100,    /*  Inner ip header destination IPv4
   1556                                            Address. */
   1557     bcmFieldQualifyInnerSrcIp6 = 101,   /*  Inner ip header source IPv6 Address. */
   1558     bcmFieldQualifyInnerDstIp6 = 102,   /*  Inner ip header destination IPv6
   1559                                            Address. */
   1560     bcmFieldQualifyInnerSrcIp6High = 103, /*  Inner ip header Src. IPv6 Address
   1561                                            (High/Upper 64 bits). */
   1562     bcmFieldQualifyInnerDstIp6High = 104, /*  Inner ip header Dest IPv6 Address
   1563                                            (High/Upper 64 bits). */
   1564     bcmFieldQualifyInnerTtl = 105,      /*  Inner ip header time To Live/Hop
   1565                                            Limit. */
   1566     bcmFieldQualifyInnerIp6HopLimit = bcmFieldQualifyInnerTtl, /*  Inner IPv6 header Hop Limit. */
   1567     bcmFieldQualifyInnerTos = 106,      /*  Inner ip header diffserv Code Point. */
   1568     bcmFieldQualifyInnerDSCP = bcmFieldQualifyInnerTos, /*  Inner DSCP */
   1569     bcmFieldQualifyInnerIp6TrafficClass = bcmFieldQualifyInnerTos, /*  Inner IPv6 header Traffic Class. */
   1570     bcmFieldQualifyInnerIpProtocol = 107, /*  Inner ip header IP Protocol Field. */
   1571     bcmFieldQualifyInnerIp6NextHeader = bcmFieldQualifyInnerIpProtocol, /*  Inner Ip6 header  Next Header/IP
   1572                                            Protocol. */
   1573     bcmFieldQualifyInnerIpFrag = 108,   /*  Inner ip header IP Fragment info. */
   1574     bcmFieldQualifyVlanTranslationHit = 109, /*  Vlan Translation table hit. */
   1575     bcmFieldQualifyForwardingVlanValid = 110, /*  Forwarding vlan is valid. */
   1576     bcmFieldQualifyIngressStpState = 111, /*  Ingress Vlan STG STP state. */
   1577     bcmFieldQualifyL2SrcHit = 112,      /*  L2 Source lookup success. */
   1578     bcmFieldQualifyL2SrcStatic = 113,   /*  L2 Source is static entry. */
   1579     bcmFieldQualifyL2DestHit = 114,     /*  L2 Destination lookup success. */
   1580     bcmFieldQualifyL2StationMove = 115, /*  L2 Source port mismatch. */
   1581     bcmFieldQualifyL2CacheHit = 116,    /*  L2 Destination cache lookup success. */
   1582     bcmFieldQualifyL3SrcHostHit = 117,  /*  L3 Source lookup host table hit. */
   1583     bcmFieldQualifyL3DestHostHit = 118, /*  L3 Destination lookup host table
   1584                                            hit. */
   1585     bcmFieldQualifyL3DestRouteHit = 119, /*  L3 Destination lookup route table
   1586                                            hit. */
   1587     bcmFieldQualifyIpmcStarGroupHit = 120, /*  L3 Multicast lookup (Star,Group)
   1588                                            hit. */
   1589     bcmFieldQualifyDosAttack = 121,     /*  Denial of Service attack frame. */
   1590     bcmFieldQualifyDeprecated122 = 122, /* Deprecated 122 */
   1591     bcmFieldQualifyClassId = 123,       /*  internal use only. */
   1592     bcmFieldQualifyDeprecated124 = 124, /* Deprecated 124 */
   1593     bcmFieldQualifyIcmpTypeCode = 125,  /*  internal use only. */
   1594     bcmFieldQualifyDeprecated126 = 126, /* Deprecated 126 */
   1595     bcmFieldQualifyInnerIpProtocolCommon = 127, /*  Inner ip header IP Protocol Common
   1596                                            Field. */
   1597     bcmFieldQualifyInnerL4SrcPort = 128, /*  TCP/UDP Source Port. */
   1598     bcmFieldQualifyInnerL4DstPort = 129, /*  TCP/UDP Destination Port. */
   1599     bcmFieldQualifyInnerIp6FlowLabel = 130, /*  Inner IPv6 header Flow Label. */
   1600     bcmFieldQualifyDstL3Egress = 131,   /*  Egress Object id. */
   1601     bcmFieldQualifyDstMulticastGroup = 132, /*  Multicast Group id. */
   1602     bcmFieldQualifySrcMplsGport = 133,  /*  Source Mpls gport. */
   1603     bcmFieldQualifyDstMplsGport = 134,  /*  Destination Mpls gport. */
   1604     bcmFieldQualifySrcMimGport = 135,   /*  Source Mim gport. */
   1605     bcmFieldQualifyDstMimGport = 136,   /*  Destination Mim gport. */
   1606     bcmFieldQualifySrcWlanGport = 137,  /*  Source Wlan gport. */
   1607     bcmFieldQualifyDstWlanGport = 138,  /*  Destination Wlan gport. */
   1608     bcmFieldQualifySrcModPortGport = 139, /*  Source module/port pair. */
   1609     bcmFieldQualifySrcModuleGport = 140, /*  Source module. */
   1610     bcmFieldQualifyColor = 141,         /*  Packet color. */
   1611     bcmFieldQualifyIntPriority = 142,   /*  Internal priority. */
   1612     bcmFieldQualifyForwardingVlanId = 143, /*  Forwarding vlan id. */
   1613     bcmFieldQualifyVpn = 144,           /*  Vpn id. */
   1614     bcmFieldQualifyFlowId = 145,        /*  Flow id. */
   1615     bcmFieldQualifyInVPort = 146,       /*  Ingress virtual port id. */
   1616     bcmFieldQualifyOutVPort = 147,      /*  Egress virtual port id. */
   1617     bcmFieldQualifyFibreChanOuter = 148, /*  Outer Fibre Channel header type. */
   1618     bcmFieldQualifyFibreChanInner = 149, /*  Inner Fibre Channel header type. */
   1619     bcmFieldQualifyVnTag = 150,         /*  NIV VN tag. */
   1620     bcmFieldQualifyCnTag = 151,         /*  QCN CN tag. */
   1621     bcmFieldQualifyFabricQueueTag = 152, /*  Fabric queue tag. */
   1622     bcmFieldQualifyMyStationHit = 153,  /*  When RIOT is not enabled or not
   1623                                            supported, qualifies on L2 tunnel
   1624                                            termination lookup or Routing hit
   1625                                            status (default). When RIOT is
   1626                                            supported and enabled, qualifies on
   1627                                            L2 underlay tunnel termination lookup
   1628                                            hit status. */
   1629     bcmFieldQualifyDstMultipath = 154,  /*  Destination Multipath ID. */
   1630     bcmFieldQualifyL2PayloadFirstEightBytes = 155, /*  First eight bytes of L2 Payload. */
   1631     bcmFieldQualifySrcVirtualPortValid = 156, /*  Source Virtual Port is valid. */
   1632     bcmFieldQualifyDstL3EgressNextHops = 157, /*  Consecutive L3 Egress Next hops. */
   1633     bcmFieldQualifyRecoverableDrop = 158, /*  Recoverable drop indication. */
   1634     bcmFieldQualifyRepCopy = 159,       /*  Externally-replicated copy. */
   1635     bcmFieldQualifyIpTunnelHit = 160,   /*  IP tunnel lookup hit. */
   1636     bcmFieldQualifyMplsLabel1Hit = 161, /*  MPLS label 1 lookup hit. */
   1637     bcmFieldQualifyTrillEgressRbridgeHit = 162, /*  TRILL egress Rbridge lookup hit. */
   1638     bcmFieldQualifyL2GreSrcIpHit = 163, /*  Layer 2 GRE source IP address lookup
   1639                                            hit. */
   1640     bcmFieldQualifyMimSrcGportHit = 164, /*  MiM source port lookup hit. */
   1641     bcmFieldQualifyMplsLabel2Hit = 165, /*  MPLS label 2 lookup hit. */
   1642     bcmFieldQualifyTrillIngressRbridgeHit = 166, /*  TRILL ingress Rbridge lookup hit. */
   1643     bcmFieldQualifyL2GreVfiHit = 167,   /*  Layer 2 GRE VFI lookup hit. */
   1644     bcmFieldQualifyMimVfiHit = 168,     /*  MiM VFI lookup hit. */
   1645     bcmFieldQualifyGenericAssociatedChannelLabelValid = 169, /*  MPLS GAL valid. */
   1646     bcmFieldQualifyRouterAlertLabelValid = 170, /*  MPLS RAL valid. */
   1647     bcmFieldQualifyDstIpLocal = 171,    /*  Dest IP is local. */
   1648     bcmFieldQualifyNormalizeIpAddrs = 172, /*  Normalize IP addresses. */
   1649     bcmFieldQualifyNormalizeMacAddrs = 173, /*  Normalize MAC addresses. */
   1650     bcmFieldQualifyIpAddrsNormalized = 174, /*  IP addresses were normalized. */
   1651     bcmFieldQualifyMacAddrsNormalized = 175, /*  MAC addresses were normalized. */
   1652     bcmFieldQualifyMplsForwardingLabel = 176, /*  MPLS forwarding label. */
   1653     bcmFieldQualifyMplsForwardingLabelTtl = 177, /*  TTL field of MPLS forwarding label. */
   1654     bcmFieldQualifyMplsForwardingLabelBos = 178, /*  BOS field of MPLS forwarding label. */
   1655     bcmFieldQualifyMplsForwardingLabelExp = 179, /*  EXP field of MPLS forwarding label. */
   1656     bcmFieldQualifyMplsForwardingLabelId = 180, /*  ID field of MPLS forwarding label. */
   1657     bcmFieldQualifyMplsControlWord = 181, /*  MPLS control word. */
   1658     bcmFieldQualifyRtag7AHashUpper = 182, /*  Upper half of RTAG7 hash A result. */
   1659     bcmFieldQualifyRtag7AHashLower = 183, /*  Lower half of RTAG7 hash A result. */
   1660     bcmFieldQualifyRtag7BHashUpper = 184, /*  Upper half of RTAG7 hash B result. */
   1661     bcmFieldQualifyRtag7BHashLower = 185, /*  Lower half of RTAG7 hash B result. */
   1662     bcmFieldQualifyMplsForwardingLabelAction = 186, /*  MPLS forwarding label action. */
   1663     bcmFieldQualifyMplsControlWordValid = 187, /*  MPLS control word valid. */
   1664     bcmFieldQualifyEgressClass = 188,   /* Class assigned by next hop */
   1665     bcmFieldQualifyEgressClassL3Interface = 189, /* Class assigned by egress interface */
   1666     bcmFieldQualifyEgressClassTrill = 190, /* Class assigned by egress TRILL */
   1667     bcmFieldQualifyEgressClassWlan = 191, /* Class assigned by egress WLAN */
   1668     bcmFieldQualifyEgressClassL2Gre = 192, /* Class assigned by egress L2 GRE */
   1669     bcmFieldQualifyLlidValue = 193,     /*  LLID value (2 bytes) in preamble. */
   1670     bcmFieldQualifyCpuQueue = 194,      /*  CPU COS Queue value. */
   1671     bcmFieldQualifyMpls = 195,          /* Qualify on MPLS packets */
   1672     bcmFieldQualifySrcGport = 196,      /*  Source module/port pair or
   1673                                            MPLS/MiM/WLAN/Niv/Vlan port. */
   1674     bcmFieldQualifyHeaderFormat = 197,  /* Qualify on header format */
   1675     bcmFieldQualifyHeaderFormatSet = 198, /* Qualify on header format set */
   1676     bcmFieldQualifyL2Learn = 199,       /* Set if L2 learning is enabled */
   1677     bcmFieldQualifyPortOrientation = 200, /* Orientation in a Hub-Spoke topology
   1678                                            (Hub or Spoke) */
   1679     bcmFieldQualifyEcnValue = 201,      /* ECN Value */
   1680     bcmFieldQualifyRxTrapCode = 202,    /* Rx Trap Id */
   1681     bcmFieldQualifyPtch = 203,          /* Opaque attribute field of the
   1682                                            Injected packets. Part of the PTCH
   1683                                            header in 88650 */
   1684     bcmFieldQualifyMplsBos = 204,       /* Qualify on packets whose header
   1685                                            parsing reached the MPLS BoS label */
   1686     bcmFieldQualifyRxTrapData = 205,    /* Rx Trap Data */
   1687     bcmFieldQualifyPolicerIntPrio = 206, /* Internal priority for the policer */
   1688     bcmFieldQualifyPacketTerminatedBytes = 207, /* Number of bytes terminated */
   1689     bcmFieldQualifyBypassFilter = 208,  /* Qualify packets bypassing any
   1690                                            filtering */
   1691     bcmFieldQualifyReplicantAny = 209,  /* Qualify any Multicast packets */
   1692     bcmFieldQualifyReplicantFirst = 210, /* First-replication copy of the packet */
   1693     bcmFieldQualifyTrillEgressRbridge = 211, /* Egress RBridge Nickname */
   1694     bcmFieldQualifyISid = 212,          /* I-SID (MAC-in-MAC lookup-id) */
   1695     bcmFieldQualifyInterfaceClassProcessingPort = 213, /* Packet-processing Port Class ID */
   1696     bcmFieldQualifyDstRpfGport = 214,   /* RPF destination (gport) for the RPF
   1697                                            Check */
   1698     bcmFieldQualifyTrunkHashResult = 215, /* Trunk Hash Result (i.e., the
   1699                                            Load-balancing Key) */
   1700     bcmFieldQualifyDhcp = 216,          /* Qualify DHCP packets */
   1701     bcmFieldQualifySnoopCopy = 217,     /* Snooped traffic */
   1702     bcmFieldQualifyForwardCopy = 218,   /* Forwarded traffic */
   1703     bcmFieldQualifyInterfaceClassVPort = 219, /* Virtual Port Interface Class ID */
   1704     bcmFieldQualifyVPortRangeCheck = 220, /* Virtual Port Range Check Results */
   1705     bcmFieldQualifyPacketLengthRangeCheck = 221, /* Packet length Range Check Results */
   1706     bcmFieldQualifyStageIngressVlanTranslation = 222, /* VLAN Translation stage */
   1707     bcmFieldQualifyStageIngressTunnelTerminated = 223, /* Tunnel termination stage */
   1708     bcmFieldQualifyStageIngressMplsTerminated = 224, /* MPLS Termination stage */
   1709     bcmFieldQualifyStageIngressIpTunnel = 225, /* IP tunnel termination stage */
   1710     bcmFieldQualifyStageIngressL2Src = 226, /* L2 Source lookup stage */
   1711     bcmFieldQualifyStageIngressL2Dest = 227, /* L2 Destination lookup stage */
   1712     bcmFieldQualifyStageIngressL3SrcRoute = 228, /* L3 Source Route lookup stage */
   1713     bcmFieldQualifyStageIngressL3DestRoute = 229, /* L3 Destination Route lookup stage */
   1714     bcmFieldQualifyStageIngressIpmc = 230, /* IP Multicast lookup stage */
   1715     bcmFieldQualifyTunnelTerminatedHit = 231, /* Tunnel termination hit */
   1716     bcmFieldQualifyMplsTerminatedHit = 232, /* MPLS Termination hit */
   1717     bcmFieldQualifyL3SrcRouteHit = 233, /* L3 Source Route lookup hit */
   1718     bcmFieldQualifyIpmcHit = 234,       /* IP Multicast lookup hit */
   1719     bcmFieldQualifyVlanTranslationValue = 235, /* VLAN Translation lookup value */
   1720     bcmFieldQualifyTunnelTerminatedValue = 236, /* Tunnel Termination lookup value */
   1721     bcmFieldQualifyMplsTerminatedValue = 237, /* MPLS Termination lookup value */
   1722     bcmFieldQualifyIpTunnelValue = 238, /* IP Tunnel Termination lookup value */
   1723     bcmFieldQualifyL2SrcValue = 239,    /* L2 Source lookup value */
   1724     bcmFieldQualifyL2DestValue = 240,   /* L2 Destination lookup value */
   1725     bcmFieldQualifyL3SrcRouteValue = 241, /* L3 Source lookup value */
   1726     bcmFieldQualifyL3DestRouteValue = 242, /* L3 Destination lookup value */
   1727     bcmFieldQualifyIpmcValue = 243,     /* IP Multicast lookup value */
   1728     bcmFieldQualifyLearnSrcMac = 244,   /* MAC Source Address learnt */
   1729     bcmFieldQualifyLearnVlan = 245,     /* Vlan learnt */
   1730     bcmFieldQualifyLearnSrcPort = 246,  /* Source Port learnt */
   1731     bcmFieldQualifyPacketSize = 247,    /* Packet size in Bytes. */
   1732     bcmFieldQualifyInnerSrcMac = 248,   /* Inner Source L2 MAC Address. */
   1733     bcmFieldQualifyInnerDstMac = 249,   /* Inner Destination L2 MAC Address. */
   1734     bcmFieldQualifyInnerEtherType = 250, /* Inner Ethernet Type */
   1735     bcmFieldQualifyMplsLabel1 = 251,    /* MPLS Label 1 */
   1736     bcmFieldQualifyMplsLabel1Ttl = 252, /* TTL field of the first MPLS Label */
   1737     bcmFieldQualifyMplsLabel1Bos = 253, /* BoS field of the first MPLS Label */
   1738     bcmFieldQualifyMplsLabel1Exp = 254, /* Exp field of the first MPLS Label */
   1739     bcmFieldQualifyMplsLabel1Id = 255,  /* ID field of the first MPLS Label */
   1740     bcmFieldQualifyMplsLabel2 = 256,    /* MPLS Label 2 */
   1741     bcmFieldQualifyMplsLabel2Ttl = 257, /* TTL field of the second MPLS Label */
   1742     bcmFieldQualifyMplsLabel2Bos = 258, /* BoS field of the second MPLS Label */
   1743     bcmFieldQualifyMplsLabel2Exp = 259, /* Exp field of the second MPLS Label */
   1744     bcmFieldQualifyMplsLabel2Id = 260,  /* ID field of the second MPLS Label */
   1745     bcmFieldQualifyMplsLabel3 = 261,    /* MPLS Label 3 */
   1746     bcmFieldQualifyMplsLabel3Ttl = 262, /* TTL field of the third MPLS Label */
   1747     bcmFieldQualifyMplsLabel3Bos = 263, /* BoS field of the third MPLS Label */
   1748     bcmFieldQualifyMplsLabel3Exp = 264, /* Exp field of the third MPLS Label */
   1749     bcmFieldQualifyMplsLabel3Id = 265,  /* ID field of the third MPLS Label */
   1750     bcmFieldQualifyCascadedKeyValue = 266, /* Value of key cascaded from prior
   1751                                            group in cascade */
   1752     bcmFieldQualifyMplsOuterLabelPop = 267, /* Qualifies MPLS Outer Label Popped
   1753                                            Packets */
   1754     bcmFieldQualifyMplsStationHitTunnelUnterminated = 268, /* Qualifies Mpls Station Hit Tunnel
   1755                                            Unterminated Packets */
   1756     bcmFieldQualifyIngressClassField = 269, /* Class Id assigned for packet by
   1757                                            Ingress Stage */
   1758     bcmFieldQualifyIngressInterfaceClassPort = 270, /* Class Id assigned for packet based on
   1759                                            Ingress Port */
   1760     bcmFieldQualifyExternalValue0 = 271, /* External lookup 0 value */
   1761     bcmFieldQualifyExternalValue1 = 272, /* External lookup 1 value */
   1762     bcmFieldQualifyExternalValue2 = 273, /* External lookup 2 value */
   1763     bcmFieldQualifyExternalValue3 = 274, /* External lookup 3 value */
   1764     bcmFieldQualifyExternalHit0 = 275,  /* External lookup 0 hit */
   1765     bcmFieldQualifyExternalHit1 = 276,  /* External lookup 1 hit */
   1766     bcmFieldQualifyExternalHit2 = 277,  /* External lookup 2 hit */
   1767     bcmFieldQualifyExternalHit3 = 278,  /* External lookup 3 hit */
   1768     bcmFieldQualifyVpnUnknownDstMacDstPort = 279, /* Destination for unknown-DA packets.
   1769                                            Set per Vpn. */
   1770     bcmFieldQualifyVxlanNetworkId = 280, /* Vxlan Network/Segment Id */
   1771     bcmFieldQualifyVxlanFlags = 281,    /* VxLan header Flags */
   1772     bcmFieldQualifyNatNeeded = 282,     /* Qualify packets where NAT is needed */
   1773     bcmFieldQualifyNatDstRealmId = 283, /* Qualify packets on Dst Realm Id */
   1774     bcmFieldQualifyNatSrcRealmId = 284, /* Qualify packets on Src Realm Id */
   1775     bcmFieldQualifyIcmpError = 285,     /* Qualifies any packet with ICMP Error */
   1776     bcmFieldQualifyTunnelId = 286,      /* Tunnel Id */
   1777     bcmFieldQualifyArpSenderIp4 = 287,  /* Sender IPv4 field of ARP header */
   1778     bcmFieldQualifyArpTargetIp4 = 288,  /* Target IPv4 field of ARP header */
   1779     bcmFieldQualifyArpOpcode = 289,     /* Opcode field of ARP header.Values set
   1780                                            according to bcmFieldArpOpcode */
   1781     bcmFieldQualifyTranslatedOuterVlan = 290, /* Translated Outer VLAN ID, Cfi,
   1782                                            Priority */
   1783     bcmFieldQualifyTranslatedOuterVlanId = 291, /* Translated Outer VLAN ID */
   1784     bcmFieldQualifyTranslatedOuterVlanPri = 292, /* Translated Outer VLAN Priority */
   1785     bcmFieldQualifyTranslatedOuterVlanCfi = 293, /* Translated Outer VLAN Cfi */
   1786     bcmFieldQualifyTranslatedInnerVlan = 294, /* Translated Inner VLAN ID, Cfi,
   1787                                            Priority */
   1788     bcmFieldQualifyTranslatedInnerVlanId = 295, /* Translated Inner VLAN ID */
   1789     bcmFieldQualifyTranslatedInnerVlanPri = 296, /* Translated Inner VLAN Priority */
   1790     bcmFieldQualifyTranslatedInnerVlanCfi = 297, /* Translated Inner VLAN Cfi */
   1791     bcmFieldQualifyConstantZero = 298,  /* Constant zero-value. Useful for
   1792                                            Direct group mode. */
   1793     bcmFieldQualifyConstantOne = 299,   /* Constant one-value. Useful for Direct
   1794                                            group mode. */
   1795     bcmFieldQualifyFibreChanRCtl = 300, /* Fibre Channel's R_Ctl (Routing
   1796                                            Control) flags. */
   1797     bcmFieldQualifyFibreChanFCtl = 301, /* Fibre Channel's F_Ctl (Frame Control)
   1798                                            flags. */
   1799     bcmFieldQualifyFibreChanCSCtl = 302, /* Fibre Channel's CS_Ctl (Class
   1800                                            Specified Control) flags. */
   1801     bcmFieldQualifyFibreChanDFCtl = 303, /* Fibre Channel's DF_Ctl (Data Field
   1802                                            Control) flags. */
   1803     bcmFieldQualifyFibreChanType = 304, /* Match an FP entry based on Fibre
   1804                                            Channel's Type. */
   1805     bcmFieldQualifyFibreChanSrcId = 305, /* Fibre Channel's Src Id */
   1806     bcmFieldQualifyFibreChanDstId = 306, /* Fibre Channel's Dst Id. */
   1807     bcmFieldQualifyFibreChanZoneCheck = 307, /* Fibre Channel's Zone Check Status
   1808                                            (BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_xxx). */
   1809     bcmFieldQualifyFibreChanSrcFpmaCheck = 308, /* Fibre Channel's Src FPMA Prefix Check
   1810                                            Status. */
   1811     bcmFieldQualifyFibreChanSrcBindCheck = 309, /* Fibre Channel's Src Bind Check
   1812                                            Status. */
   1813     bcmFieldQualifyFibreChanVFTVersion = 310, /* Fibre Channel's VFT version. */
   1814     bcmFieldQualifyFibreChanVFTPri = 311, /* Fibre Channel's VFT Priority. */
   1815     bcmFieldQualifyFibreChanVFTFabricId = 312, /* Fibre Channel's VFT Fabric Id. */
   1816     bcmFieldQualifyFibreChanVFTHopCount = 313, /* Fibre Channel's VFT Hop Count. */
   1817     bcmFieldQualifyFibreChanVFTVsanId = 314, /* Fibre Channel's VFT Internal VSAN ID. */
   1818     bcmFieldQualifyFibreChanVFTVsanPri = 315, /* Fibre Channel's VFT VSAN Priority. */
   1819     bcmFieldQualifyFibreChanVFTValid = 316, /* Fibre Channel's VFT header
   1820                                            presence/validity. */
   1821     bcmFieldQualifyFcoeSOF = 317,       /* Match an FP entry based on Fcoe SOF. */
   1822     bcmFieldQualifyFcoeVersionIsZero = 318, /* FCoE Version Is Zero. */
   1823     bcmFieldQualifyForwardingHeaderOffset = 319, /* Distance of the forwarding header
   1824                                            from the start-of-packet. Unit:
   1825                                            bytes. */
   1826     bcmFieldQualifyL3SrcBind = 320,     /*  L3 source bind lookup success. */
   1827     bcmFieldQualifyECid = 321,          /* E-CID base. Same as ExtenderPortVid. */
   1828     bcmFieldQualifyIngressECid = 322,   /* Ingress E-CID base. */
   1829     bcmFieldQualifyETag = 323,          /* E-Tag value. */
   1830     bcmFieldQualifyIngressVPortBridgeDisable = 324, /* Ingress VPort Bridge same-interface
   1831                                            disabled */
   1832     bcmFieldQualifyHashValue = 325,     /* Hash value */
   1833     bcmFieldQualifyIsEqualValue = 326,  /* Result value of the is-equal
   1834                                            operation */
   1835     bcmFieldQualifyStageHash = 327,     /* Hashing stage */
   1836     bcmFieldQualifyUrpfMode = 328,      /* URPF mode according to
   1837                                            bcm_field_urpf_mode_t */
   1838     bcmFieldQualifyAppType = 329,       /*  Packet Application type
   1839                                            (bcmFieldAppTypeXXX). */
   1840     bcmFieldQualifySubportPktTag = 330, /* Ingress LLTAG. */
   1841     bcmFieldQualifySrcVxlanGport = 331, /* Qualify vxlan source gport. */
   1842     bcmFieldQualifyDstVxlanGport = 332, /*  Qualify vxlan destination gport. */
   1843     bcmFieldQualifyOamMdl = 333,        /*  Qualify OAM Maintenance Domain
   1844                                            Levels. */
   1845     bcmFieldQualifyIntCongestionNotification = 334, /*  Qualify internal congestion
   1846                                            notification value. */
   1847     bcmFieldQualifySrcNivGport = 335,   /*  Source Niv gport. */
   1848     bcmFieldQualifyDstNivGport = 336,   /*  Destination Niv gport. */
   1849     bcmFieldQualifyDstGport = 337,      /*  Destination Niv port. */
   1850     bcmFieldQualifyMirrorEgressDisabled = 338, /*  Egress Mirroring disabled. */
   1851     bcmFieldQualifyBypassSrcMacFilter = 339, /*  Qualify packets bypassing Source MAC
   1852                                            Address filtering. */
   1853     bcmFieldQualifyRxTrapCodeForSnoop = 340, /*  Rx Trap code ID used for snoop. */
   1854     bcmFieldQualifyIpmcStarGroupValue = 341, /*  L3 Multicast lookup (Star,Group)
   1855                                            Value. */
   1856     bcmFieldQualifyNativeVSwitch = 342, /*  Native-VSwitch (for
   1857                                            Routing-over-overlay packets). */
   1858     bcmFieldQualifyNativeVSwitchValid = 343, /*  Valid native-VSwitch (for
   1859                                            Routing-over-overlay packets). */
   1860     bcmFieldQualifyTrillIVersion = 344, /*  TRILL version field. */
   1861     bcmFieldQualifyTrillIngressRbridge = 345, /*  Ingress Rbridge Nickname. */
   1862     bcmFieldQualifyTrillMultiDestination = 346, /*  RILL Multi-destination field. */
   1863     bcmFieldQualifyTrillOpLength = 347, /*  TRILL Options length field. */
   1864     bcmFieldQualifyTrillHopCount = 348, /*  TRILL Hop count field . */
   1865     bcmFieldQualifyTrillPayload = 349,  /*  Payload of TRILL header. */
   1866     bcmFieldQualifyMplsForwardingLabelPayload = 350, /*  Payload of MPLS forwarding label. */
   1867     bcmFieldQualifyIncomingIpIfClass = 351, /*  Incoming IP interface Class ID. */
   1868     bcmFieldQualifyL2GreProtocolType = 352, /*  L2GRE Protocol type field . */
   1869     bcmFieldQualifyL2GreVsid = 353,     /*  L2GRE Virtual Subnet ID field. */
   1870     bcmFieldQualifyL2GreFlowId = 354,   /*  L2GRE Flow ID field. */
   1871     bcmFieldQualifyMimVlanPri = 355,    /*  MAC-in-MAC VLAN Priority field. */
   1872     bcmFieldQualifyMimVlanCfi = 356,    /*  MAC-in-MAC VLAN Cfi field. */
   1873     bcmFieldQualifyFhei = 357,          /*  DNX FHEI header field. */
   1874     bcmFieldQualifyFheiSize = 358,      /*  DNX FHEI header size in bytes. */
   1875     bcmFieldQualifyEthernetOamHeaderBits0_31 = 359, /*  Ethernet OAM Header First 4 Bytes. */
   1876     bcmFieldQualifyEthernetOamHeaderBits32_63 = 360, /*  Ethernet OAM Header Second 4 Bytes. */
   1877     bcmFieldQualifyEthernetOamDstClassL2 = 361, /*  Ethernet OAM Destination Class based
   1878                                            on L2 lookup result. */
   1879     bcmFieldQualifyEthernetOamTxPktUPMEP = 362, /*  Ethernet OAM UP-MEP Tx Packet. */
   1880     bcmFieldQualifyEthernetOamInterfaceClassNiv = 363, /*  Ethernet OAM ClassId from Source VP
   1881                                            Table. */
   1882     bcmFieldQualifyEthernetOamInterfaceClassMim = 364, /*  Ethernet OAM ClassId from Source VP
   1883                                            Table. */
   1884     bcmFieldQualifyEthernetOamInterfaceClassVxlan = 365, /*  Ethernet OAM ClassId from Source VP
   1885                                            Table. */
   1886     bcmFieldQualifyEthernetOamInterfaceClassVlan = 366, /*  Ethernet OAM ClassId from Source VP
   1887                                            Table. */
   1888     bcmFieldQualifyEthernetOamInterfaceClassPort = 367, /*  Ethernet OAM Class Id assigned for
   1889                                            packet based on Ingress Port. */
   1890     bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst = 368, /*  Ethernet OAM Class Id assigned for
   1891                                            packet based on 1st Lookup in
   1892                                            Vlan_Xlate table. */
   1893     bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond = 369, /*  Ethernet OAM Class Id assigned for
   1894                                            packet based on 2nd Lookup in
   1895                                            Vlan_Xlate table. */
   1896     bcmFieldQualifyEthernetOamInterfaceClassMpls = 370, /*  Ethernet OAM Class Id assigned for
   1897                                            packet based on Source VP table. */
   1898     bcmFieldQualifyEthernetOamClassVpn = 371, /*  Ethernet OAM Class Id assigned for
   1899                                            packet based on VFI table. */
   1900     bcmFieldQualifyMplsOamHeaderBits0_31 = 372, /*  Mpls OAM Header First 4 Bytes. */
   1901     bcmFieldQualifyMplsOamHeaderBits32_63 = 373, /*  Mpls OAM Header Second 4 Bytes. */
   1902     bcmFieldQualifyMplsOamGALLabelOnly = 374, /*  MPLS OAM packets having GAL Label
   1903                                            Only. */
   1904     bcmFieldQualifyMplsOamUpperLabelDataDrop = 375, /* MPLS OAM Labels above the forwarding
   1905                                            label. */
   1906     bcmFieldQualifyMplsOamGALExposed = 376, /*  MPLS OAM packets having GAL exposed. */
   1907     bcmFieldQualifyMplsOamACH = 377,    /*  MPLS OAM ACH Header. */
   1908     bcmFieldQualifyMplsOamControlPktType = 378, /*  MPLS OAM control packets based on
   1909                                            Packet Type. */
   1910     bcmFieldQualifyMplsOamClassMplsSwitchLabel = 379, /*  MPLS OAM Class Id assigned for
   1911                                            packet based on MPLS table. */
   1912     bcmFieldQualifyOamHeaderBits0_31 = 380, /*  OAM Header First 4 Bytes. */
   1913     bcmFieldQualifyOamHeaderBits32_63 = 381, /*  OAM Header Second 4 Bytes. */
   1914     bcmFieldQualifyOamEgressClassVxlt = 382, /*  OAM Class Id assigned for packet
   1915                                            based on EGR_VXLT table. */
   1916     bcmFieldQualifyOamEgressClassPort = 383, /*  OAM Class Id assigned for packet
   1917                                            based on Port table. */
   1918     bcmFieldQualifyUdf = 384,           /* Qualify UDF selected data */
   1919     bcmFieldQualifyOuterVlanActionRange = 385, /* compressed outer vlan tag */
   1920     bcmFieldQualifyInnerVlanActionRange = 386, /* compressed inner vlan tag */
   1921     bcmFieldQualifyIngressInterfaceClassVPort = 387, /* Class Id assigned for packet based on
   1922                                            Ingress GPort */
   1923     bcmFieldQualifySrcVlanGport = 388,  /* Qualify Source Vlan Gport */
   1924     bcmFieldQualifyDstVlanGport = 389,  /* Qualify Destination Vlan Gport */
   1925     bcmFieldQualifyOamType = 390,       /*  Qualify Ethernet/MPLS OAM. */
   1926     bcmFieldQualifySrcVlanGports = 391, /* Qualify Source Vlan Gports */
   1927     bcmFieldQualifyDstVlanGports = 392, /* Qualify Destination Vlan Gports */
   1928     bcmFieldQualifySrcVxlanGports = 393, /* Qualify Source Vxlan Gports */
   1929     bcmFieldQualifyDstVxlanGports = 394, /* Qualify Destination Vxlan Gports */
   1930     bcmFieldQualifySrcWlanGports = 395, /* Qualify Source Wlan Gports */
   1931     bcmFieldQualifyDstWlanGports = 396, /* Qualify Destination Wlan Gports */
   1932     bcmFieldQualifySrcMplsGports = 397, /* Qualify Source Mpls Gports */
   1933     bcmFieldQualifyDstMplsGports = 398, /* Qualify Destination Mpls Gports */
   1934     bcmFieldQualifySrcGports = 399,     /* Qualify Source module/port pair or
   1935                                            MPLS/MiM/WLAN/Niv/Vlan ports */
   1936     bcmFieldQualifyDstGports = 400,     /* Qualify Destination Niv Gports */
   1937     bcmFieldQualifySrcMimGports = 401,  /* Qualify Source Mim Gports */
   1938     bcmFieldQualifyDstMimGports = 402,  /* Qualify Destination Mim Gports */
   1939     bcmFieldQualifySrcNivGports = 403,  /* Qualify Source Niv Gports */
   1940     bcmFieldQualifyDstNivGports = 404,  /* Qualify Destination Niv Gports */
   1941     bcmFieldQualifySrcModPortGports = 405, /* Qualify Source ModPort Gports */
   1942     bcmFieldQualifyLearnInVPort = 406,  /* Qualify Learnt Incoming VPort */
   1943     bcmFieldQualifyStackingRoute = 407, /* Qualify Stacking Route */
   1944     bcmFieldQualifyRxTrapStrength = 408, /* Qualify Rx Trap Strength */
   1945     bcmFieldQualifyVxlanHeaderBits8_31 = 409, /* Qualify Reserved_1 field in Vxlan
   1946                                            Header */
   1947     bcmFieldQualifyVxlanHeaderBits56_63 = 410, /* Qualify Reserved_2 field in Vxlan
   1948                                            Header */
   1949     bcmFieldQualifyOamInLifIdValid = 411, /* Indicates if the LIF that has been
   1950                                            found is an OAM LIF. */
   1951     bcmFieldQualifyOamInLifId = 412,    /* Indicates the last OAM LIF that has
   1952                                            been found. This value is valid only
   1953                                            if SOC_PPC_FP_QUAL_VTT_OAM_LIF_VALID
   1954                                            is set. */
   1955     bcmFieldQualifyOamUpMep = 413,      /* It indicates if the OAM packet is
   1956                                            UP-MEP (sent to a destination in the
   1957                                            network, as opposed to a specific
   1958                                            port). This term belongs to the OAM
   1959                                            jargon. */
   1960     bcmFieldQualifyOamSubtype = 414,    /* In OAM the packet type is specified
   1961                                            in the OAM header and mapped to a
   1962                                            subtype in the hardware. This value
   1963                                            indicates the hardware type that it
   1964                                            is mapped to. */
   1965     bcmFieldQualifyOamHeaderOffset = 415, /* This field indicates the offset of
   1966                                            the OAM header relative to the start
   1967                                            of packet (as opposed to start of
   1968                                            header-offset) */
   1969     bcmFieldQualifyOamStampOffset = 416, /* This qualifier indicates the offset
   1970                                            to the position, in the OAM header,
   1971                                            where the ToD or counter value should
   1972                                            be stamped
   1973                                                                  relative to the
   1974                                            start of packet (as opposed to start
   1975                                            of header-offset[0]). */
   1976     bcmFieldQualifyOamMepId = 417,      /* This qualifier indicates is according
   1977                                            to the following encoding: OAM-ID
   1978                                            (17) = OAM-2-Match ?
   1979                                                                   {4'b0,
   1980                                            OAM-2-ID (13)} : {1'b1, OAM-LIF (16)}
   1981                                            If MEP is handled in OAMP, then the
   1982                                            OAM-ID is the MEP-ID
   1983                                                                       
   1984                                            (equivalent to the index used to
   1985                                            access the MEP DB). */
   1986     bcmFieldQualifyOamMeterDisable = 418, /* This qualifier is an attribute that
   1987                                            is passed to the PMF and can also be
   1988                                            configured by the user per MEP.
   1989                                                               It has no meaning
   1990                                            other than being a qualifier in the
   1991                                            PMF. */
   1992     bcmFieldQualifyOamTsSystemHeader = 419, /* The entire OAM-TS is passed to the
   1993                                            egress PMF (48 bit) */
   1994     bcmFieldQualifyDstMulticastGroups = 420, /* Qualify Multicast Group ids */
   1995     bcmFieldQualifyInterfaceInPorts = 421, /* Qualify Interface In Ports */
   1996     bcmFieldQualifyDestVirtualPortValid = 422, /* Destination Virtual Port is valid. */
   1997     bcmFieldQualifyInVPortWide = 423,   /* Wide attribute of Ingress VPort . */
   1998     bcmFieldQualifyStageClass = 424,    /* Pseudo Compression Class Stage. */
   1999     bcmFieldQualifyStageClassExactMatch = 425, /* Pseudo Compression Exact Match Class
   2000                                            Stage. */
   2001     bcmFieldQualifyFcoeOxID = 426,      /* FCoE Originator Exchange ID. */
   2002     bcmFieldQualifyFcoeRxID = 427,      /* FCoE Responder Exchange ID. */
   2003     bcmFieldQualifyIpProtocolClass = 428, /* IP Protocol ID Class. */
   2004     bcmFieldQualifyEtherTypeClass = 429, /* EtherType Class. */
   2005     bcmFieldQualifyL4SrcPortClass = 430, /* L4 Source Port Class. */
   2006     bcmFieldQualifyL4DstPortClass = 431, /* L4 Destination Port Class. */
   2007     bcmFieldQualifySrcIpClass = 432,    /* IPv4 SIP Class. */
   2008     bcmFieldQualifySrcIpClassMsbNibble = 433, /* IPv4 SIP Class 4-bits. */
   2009     bcmFieldQualifySrcIpClassLower = 434, /* IPv4 SIP Class Lower 16-bits. */
   2010     bcmFieldQualifySrcIpClassUpper = 435, /* IPv4 SIP Class Upper 16-bits. */
   2011     bcmFieldQualifySrcIp6Class = 436,   /* IPv6 SIP Class. */
   2012     bcmFieldQualifySrcIp6ClassMsbNibble = 437, /* IPv6 SIP Class 4-bits. */
   2013     bcmFieldQualifySrcIp6ClassLower = 438, /* Ipv6 SIP Class Lower 16-bits. */
   2014     bcmFieldQualifySrcIp6ClassUpper = 439, /* IPv6 SIP Class Upper 16-bits. */
   2015     bcmFieldQualifyFcoeOxIDClass = 440, /* FCoE Originator Exchange ID Class. */
   2016     bcmFieldQualifyDstIpClass = 441,    /* IPv4 DIP Class. */
   2017     bcmFieldQualifyDstIpClassMsbNibble = 442, /* IPv4 DIP Class 4-bits. */
   2018     bcmFieldQualifyDstIpClassLower = 443, /* IPv4 DIP Class Lower 16-bits. */
   2019     bcmFieldQualifyDstIpClassUpper = 444, /* IPv4 DIP Class Upper 16-bits. */
   2020     bcmFieldQualifyDstIp6Class = 445,   /* IPv6 DIP Class. */
   2021     bcmFieldQualifyDstIp6ClassMsbNibble = 446, /* Ipv6 DIP Class 4-bits. */
   2022     bcmFieldQualifyDstIp6ClassLower = 447, /* IPv6 DIP Class Lower 16-bits. */
   2023     bcmFieldQualifyDstIp6ClassUpper = 448, /* IPv6 DIP Class Upper 16-bits. */
   2024     bcmFieldQualifyFcoeRxIDClass = 449, /* FCoE Responder Exchange ID Class. */
   2025     bcmFieldQualifyFibreChanSrcIdClass = 450, /* Fibre Channel Src Id Class. */
   2026     bcmFieldQualifyFibreChanSrcIdClassMsbNibble = 451, /* Fibre Channel Src Id Class 4-bits. */
   2027     bcmFieldQualifyFibreChanSrcIdClassLower = 452, /* Fibre Channel Src Id Class Lower
   2028                                            16-bits. */
   2029     bcmFieldQualifyFibreChanSrcIdClassUpper = 453, /* Fibre Channel Src Id Class Upper
   2030                                            16-bits. */
   2031     bcmFieldQualifyFibreChanDstIdClass = 454, /* Fibre Channel Dst Id Class. */
   2032     bcmFieldQualifyFibreChanDstIdClassMsbNibble = 455, /* Fibre Channel Dst Id Class 4-bits. */
   2033     bcmFieldQualifyFibreChanDstIdClassLower = 456, /* Fibre Channel Dst Id Class Lower
   2034                                            16-bits. */
   2035     bcmFieldQualifyFibreChanDstIdClassUpper = 457, /* Fibre Channel Dst Id Class Upper
   2036                                            16-bits. */
   2037     bcmFieldQualifyTcpClassZero = 458,  /* TCP Class from TCP_FN0. */
   2038     bcmFieldQualifyTosClassZero = 459,  /* TOS Class from TOS_FN0. */
   2039     bcmFieldQualifyTtlClassZero = 460,  /* TTL Class from TTL_FN0. */
   2040     bcmFieldQualifyTcpClassOne = 461,   /* TCP Class from TCP_FN1. */
   2041     bcmFieldQualifyTosClassOne = 462,   /* TOS Class from TOS_FN1. */
   2042     bcmFieldQualifyTtlClassOne = 463,   /* TTL Class from TTL_FN1. */
   2043     bcmFieldQualifyOuterVlanPriCfi = 464, /*  Outer VLAN Pri + Cfi (4 bits). */
   2044     bcmFieldQualifyForwardHdrSrcMac = 465, /*  FWD Header SA MAC (48 bits). */
   2045     bcmFieldQualifyForwardHdrDstMac = 466, /*  FWD Header DA MAC (48 bits). */
   2046     bcmFieldQualifyForwardHdrVlanId = 467, /*  FWD Header Vlan Id (12 bits). */
   2047     bcmFieldQualifyDstSysPortExt = 468, /*  FTMH Destination System Port (DSP)
   2048                                            Extension. */
   2049     bcmFieldQualifyStageIngressExactMatch = 469, /*  Field Processor pipeline ingress
   2050                                            exact match stage. */
   2051     bcmFieldQualifyLearnExtension = 470, /* Learn Extension Data. */
   2052     bcmFieldQualifyIpFragNonOrFirst = 471, /*  Non Fragmented IP Packet or First
   2053                                            Fragment of IP Packet. */
   2054     bcmFieldQualifyPacketLength = 472,  /*  Packet Length Excluding L2 Header(+
   2055                                            Vlan Tag for Tagged packets). */
   2056     bcmFieldQualifyGroupClass = 473,    /*  Field Group Class Id (Logical Table
   2057                                            Class Id) assigned by pre-selection
   2058                                            entry. */
   2059     bcmFieldQualifyUdfClass = 474,      /*  Class ID associated to packet on UDF
   2060                                            match. */
   2061     bcmFieldQualifyInterfaceLookupClassPort = 475, /*  VFP Port Class Id that can be
   2062                                            matched in Ingress Filter Processor. */
   2063     bcmFieldQualifyHiGigDstMulticast = 476, /* Indicates if the HiGig Destination is
   2064                                            a Multicast or Unicast. */
   2065     bcmFieldQualifyHiGigDstMulticastGroupId = 477, /* Destination Multicast Group Id. */
   2066     bcmFieldQualifyHiGigTrafficClass = 478, /* QOS provided by Fabric when
   2067                                            forwarding the packet through Fabric. */
   2068     bcmFieldQualifyHiGigDstModuleGport = 479, /* Destination Module ID. */
   2069     bcmFieldQualifyHiGigDstPortGport = 480, /* Destination Port. */
   2070     bcmFieldQualifyHiGigDstModPortGport = 481, /* Destination Module ID and Port. */
   2071     bcmFieldQualifyHiGigSrcModuleGport = 482, /* Source Module ID. */
   2072     bcmFieldQualifyHiGigSrcPortGport = 483, /* Source Port. */
   2073     bcmFieldQualifyHiGigSrcModPortGport = 484, /* Source Module ID and Port. */
   2074     bcmFieldQualifyHiGigLoadBalanceID = 485, /* A packet flow hashing index for
   2075                                            distribution of packet flows through
   2076                                            a multipath fabric. */
   2077     bcmFieldQualifyHiGigColor = 486,    /* Indicates Traffic rate violation
   2078                                            status of the packet measured by
   2079                                            Ingress Module.This can be
   2080                                            Green/Yellow/Red */
   2081     bcmFieldQualifyHiGigIntCongestionNotification = 487, /* Indicates ECN and Transport Protocol
   2082                                            Class Information generated by
   2083                                            Ingress Module. */
   2084     bcmFieldQualifyHiGigIngressTagged = 488, /* Tagged packet was ingressed at the
   2085                                            HiGig Port. */
   2086     bcmFieldQualifyHiGigDstTrunk = 489, /* Is the Destination port is Trunk
   2087                                            Port? */
   2088     bcmFieldQualifyHiGigDstTrunkId = 490, /* Destination HiGig Trunk Group Id. */
   2089     bcmFieldQualifyHiGigIngressL3SwitchPkt = 491, /* Packet is L3 switched at the Source
   2090                                            Port */
   2091     bcmFieldQualifyHiGigLabel = 492,    /* 20 Bit Label Present in HiGig Header.
   2092                                            Label Type can be QTag/Mirror
   2093                                            Classification Tag/System Ingress
   2094                                            Port. */
   2095     bcmFieldQualifyHiGigReplicationId = 493, /* Replication ID used to identify
   2096                                            Packet modifications to be applied
   2097                                            for this replicated copy. */
   2098     bcmFieldQualifyHiGigVlan = 494,     /* Vlan tag information in HiGig Header */
   2099     bcmFieldQualifyHiGigPortFilteringMode = 495, /* Port Filtering mode used for
   2100                                            Multicast packets. */
   2101     bcmFieldQualifyHiGigSrcTrunk = 496, /* Indicates the packet is originally
   2102                                            ingressed on Trunk Port. */
   2103     bcmFieldQualifyHiGigIngressClassificationTag = 497, /* Classification Tag assigned to packet
   2104                                            in Ingress Filter Processor(IFP). */
   2105     bcmFieldQualifyHiGigEgressMcast = 498, /* Indicates whether the packet is sent
   2106                                            to a single point or a multi-point
   2107                                            tree within the egress chip. */
   2108     bcmFieldQualifyHiGigVni = 499,      /* Virtual Network Identifier (ISID)
   2109                                            which identifies the service instance
   2110                                            for this packet. */
   2111     bcmFieldQualifyHiGigDstGport = 500, /* The destination VP index for egress
   2112                                            chip packet modification and
   2113                                            encapsulation. */
   2114     bcmFieldQualifyHiGigMulticastIndex = 501, /* The destination multicast index for
   2115                                            egress chip packet modification and
   2116                                            encapsulation. */
   2117     bcmFieldQualifyHiGigVpReplicationId = 502, /* The destination Replication ID for
   2118                                            egress chip packet modification and
   2119                                            encapsulation. */
   2120     bcmFieldQualifyHiGigSrcGport = 503, /* The Source VP index from which the
   2121                                            packet ingressed the system. */
   2122     bcmFieldQualifyHiGigProtectionSwitchingStatus = 504, /* This indicates the egress packet
   2123                                            processor to use working / protection
   2124                                            path based on the decision made in
   2125                                            the ingress packet processor. */
   2126     bcmFieldQualifyHiGigMirrorToVp = 505, /* Indicates whether the packet is a
   2127                                            mirrored copy or Switched Copy */
   2128     bcmFieldQualifyHiGigDstType = 506,  /* Indicates whether the destination is
   2129                                            Virtual or Physical. */
   2130     bcmFieldQualifyHiGigSrcType = 507,  /* Indicates whether the source is
   2131                                            Virtual or Physical. */
   2132     bcmFieldQualifyHiGigOffloadEngineClassificationTag = 508, /* Opaque field generated by the ACL
   2133                                            rule that triggered the redirect to
   2134                                            the offload engine. */
   2135     bcmFieldQualifyHiGigOffloadEnginePktPriNew = 509, /* New 802.1p bits */
   2136     bcmFieldQualifyHiGigOffloadEngineDscpNew = 510, /* New DSCP value. */
   2137     bcmFieldQualifyLoopBackQueue = 511, /* Loopback Port Queue Number. It is
   2138                                            used in the MMU for buffer account
   2139                                            and flow control of traffic received
   2140                                            on the internal loopback port. */
   2141     bcmFieldQualifyLoopBackSrcGport = 512, /* Source field for the packet. It can
   2142                                            be a Virtual/Physical port. */
   2143     bcmFieldQualifyPktIsVisible = 513,  /* Triggers capture of intermediate
   2144                                            packet processing results for this
   2145                                            packet. */
   2146     bcmFieldQualifyLoopBackCpuMasqueradePktProfile = 514, /* Pointer to indicate disposition of
   2147                                            these packets in the Ingress
   2148                                            Pipeline. */
   2149     bcmFieldQualifyLoopBackColor = 515, /* Indicates Traffic rate violation
   2150                                            status of the packet measured by
   2151                                            Ingress Module.This can be
   2152                                            Green/Yellow/Red. */
   2153     bcmFieldQualifyLoopBackTrafficClass = 516, /* QOS provided by Fabric when
   2154                                            forwarding the packet through Fabric. */
   2155     bcmFieldQualifyLoopBackPacketProcessingPort = 517, /* Device Port Number which is to be
   2156                                            used for processing the packet in the
   2157                                            Ingress Pipeline. This must be a port
   2158                                            that is programmed in the device to
   2159                                            be a front panel (Ethernet) port. */
   2160     bcmFieldQualifyMixedSrcClassId = 518, /* Mixed Source ID value used in
   2161                                            Pre-selection. */
   2162     bcmFieldQualifyITag = 519,          /* Service Instance Tag in MAC-in-MAC. */
   2163     bcmFieldQualifyInterfaceIngressKeySelectClassPort = 520, /* Ingress port class id assigned to
   2164                                            port by port table. */
   2165     bcmFieldQualifyBfdYourDiscriminator = 521, /* BFD Your Discriminator. */
   2166     bcmFieldQualifyCpuVisibilityPacket = 522, /* CPU visibility packet. */
   2167     bcmFieldQualifyDstL2MulticastGroup = 523, /* Destination L2 Multicast Group Id. */
   2168     bcmFieldQualifyDstL3MulticastGroup = 524, /* Destination L3 Multicast Group Id. */
   2169     bcmFieldQualifyExactMatchHitStatus = 525, /* Exact Match Hit Status. */
   2170     bcmFieldQualifyExactMatchActionClassId = 526, /* Exact Match Action Class Identifier. */
   2171     bcmFieldQualifyExactMatchGroupClassId = 527, /* Exact Match Group Class Identifier. */
   2172     bcmFieldQualifyL2PayLoad = 528,     /* Qualify Bytes after L2 Header */
   2173     bcmFieldQualifyCustomHeaderPkt = 529, /* Qualify Custom Header packets. */
   2174     bcmFieldQualifyCustomHeaderData = 530, /* Qualify the content of Custom Header
   2175                                            32-bits. */
   2176     bcmFieldQualifyMimlPkt = 531,       /* Qualify for MiML or non-MiML packet. */
   2177     bcmFieldQualifyMimlSrcMac = 532,    /* Mac-in-Mac Lite(MiML) Source MAC
   2178                                            Address. */
   2179     bcmFieldQualifyMimlDstMac = 533,    /* Mac-in-Mac Lite(MiML) Destination MAC
   2180                                            Address. */
   2181     bcmFieldQualifyMimlVlan = 534,      /* Mac-in-Mac Lite(MiML) VLAN ID, Cfi,
   2182                                            Priority. */
   2183     bcmFieldQualifyMimlVlanId = 535,    /* Mac-in-Mac Lite(MiML) VLAN ID. */
   2184     bcmFieldQualifyMimlVlanPri = 536,   /* Mac-in-Mac Lite(MiML) VLAN Priority. */
   2185     bcmFieldQualifyMimlVlanCfi = 537,   /* Mac-in-Mac Lite(MiML) VLAN Cfi. */
   2186     bcmFieldQualifyMimlInnerTag = 538,  /* Mac-in-Mac Lite(MiML) inner tag
   2187                                            fields {MIML_PKT_TYPE, MIML_IID,
   2188                                            MIML_RSVD, MIML_LENGTH}. */
   2189     bcmFieldQualifyCapwapHdrType = 539, /* The TYPE field in CAPWAP header. */
   2190     bcmFieldQualifyCapwapHdrRid = 540,  /* The RID field in CAPWAP header. */
   2191     bcmFieldQualifyCapwapPayloadSOF = 541, /* It indicates the CAPWAP payload is
   2192                                            non-fragmented or first fragment. */
   2193     bcmFieldQualifyCapwapPayloadDstMac = 542, /* destination MAC address in CAPWAP
   2194                                            payload. */
   2195     bcmFieldQualifyCapwapPayloadSrcMac = 543, /* source MAC address in CAPWAP payload. */
   2196     bcmFieldQualifyCapwapPayloadEtherType = 544, /* Ethernet type in CAPWAP payload. */
   2197     bcmFieldQualifyCapwapPayloadOuterVlan = 545, /* Outer VLAN tag in CAPWAP payload. */
   2198     bcmFieldQualifyCapwapPayloadOuterVlanId = 546, /* Outer VLAN id in CAPWAP payload. */
   2199     bcmFieldQualifyCapwapPayloadOuterVlanPri = 547, /* Outer VLAN priority in CAPWAP
   2200                                            payload. */
   2201     bcmFieldQualifyCapwapPayloadOuterVlanCfi = 548, /* Outer VLAN CFI in CAPWAP payload. */
   2202     bcmFieldQualifyCapwapPayloadInnerVlan = 549, /* Inner VLAN tag in CAPWAP payload. */
   2203     bcmFieldQualifyCapwapPayloadInnerVlanId = 550, /* Inner VLAN id in CAPWAP payload. */
   2204     bcmFieldQualifyCapwapPayloadInnerVlanPri = 551, /* Inner VLAN priority in CAPWAP
   2205                                            payload. */
   2206     bcmFieldQualifyCapwapPayloadInnerVlanCfi = 552, /* Inner VLAN CFI in CAPWAP payload. */
   2207     bcmFieldQualifyCapwapPayloadVlanFormat = 553, /* VLAN tag format in CAPWAP payload. */
   2208     bcmFieldQualifyCapwapPayloadSip = 554, /* IPv4 source address in CAPWAP
   2209                                            payload. */
   2210     bcmFieldQualifyCapwapPayloadDip = 555, /* IPv4 destination address in CAPWAP
   2211                                            payload. */
   2212     bcmFieldQualifyCapwapPayloadSip6 = 556, /* IPv6 source address in CAPWAP
   2213                                            payload. */
   2214     bcmFieldQualifyCapwapPayloadDip6 = 557, /* IPv6 destination address in CAPWAP
   2215                                            payload. */
   2216     bcmFieldQualifyCapwapPayloadIpProtocol = 558, /* IP Protocol value in CAPWAP payload. */
   2217     bcmFieldQualifyCapwapPayloadTos = 559, /* Type-of-Service value in CAPWAP
   2218                                            payload. */
   2219     bcmFieldQualifyCapwapPayloadL4DstPort = 560, /* UDP/TCP destination port number in
   2220                                            CAPWAP payload. */
   2221     bcmFieldQualifyCapwapPayloadL4SrcPort = 561, /* UDP/TCP source port number in CAPWAP
   2222                                            payload. */
   2223     bcmFieldQualifyCapwapPayloadL3HdrParseable = 562, /* It indicates the parser can parse
   2224                                            ipv4/ipv6 header in the wireless
   2225                                            payload. */
   2226     bcmFieldQualifyCapwapPayloadL4HdrParseable = 563, /* It indicates the parser can parse
   2227                                            UDP/TCP header in the wireless
   2228                                            payload. */
   2229     bcmFieldQualifyVlanAction = 564,    /* Vlan Action Set ID. */
   2230     bcmFieldQualifyDownMepSatTerminated = 565, /* Qualify Rx Down Mep SAT terminated
   2231                                            hit status. */
   2232     bcmFieldQualifyDstMultipathOverlay = 566, /* Qualify on ECMP groups with overlay
   2233                                            flag */
   2234     bcmFieldQualifyDstMultipathUnderlay = 567, /* Qualify on ECMP groups with Underlay
   2235                                            flag */
   2236     bcmFieldQualifyStpState = 568,      /* Qualify on VLAN STG STP states. */
   2237     bcmFieldQualifyHiGigMirrorOrSwitchPkt = 569, /* Indicates whether the packet has to
   2238                                            be mirrored and switched. */
   2239     bcmFieldQualifyHiGigPreserveFlags = 570, /* Indicates the DSCP/DOT1P flags should
   2240                                            not be modified. */
   2241     bcmFieldQualifyHiGigMplsPkt = 571,  /* When set, indicates packet contains a
   2242                                            20 bit label. Otherwise packet
   2243                                            contains MPLS information. */
   2244     bcmFieldQualifyHiGigDoNotFlags = 572, /* Don't Learn(do not perform MAC
   2245                                            learning) and Don't Modify(Send the
   2246                                            packet to destination unmodified)
   2247                                            Flags. */
   2248     bcmFieldQualifyHiGigVpPreserveFlags = 573, /* Indicates the VP not to modify the
   2249                                            DSCP/DOT1P flags. */
   2250     bcmFieldQualifyHiGigOffloadEngineVxltStatus = 574, /* Indicates whether the Packet has been
   2251                                            through Vlan Translation. */
   2252     bcmFieldQualifyHiGigForwardingType = 575, /* Indicates the forwarding type whether
   2253                                            it is a control/L2/L3/broadcast
   2254                                            packet. */
   2255     bcmFieldQualifyHiGigLabelType = 576, /* Indicates contents of Label. It can
   2256                                            be a QTag/ Mirror Classification Tag/
   2257                                            Original System Ingress Port through
   2258                                            which the packet ingressed/ Original
   2259                                            HiGig+ Overlay. */
   2260     bcmFieldQualifyHiGigExtendedHeaderPresent = 577, /* Indicates whether extended header is
   2261                                            present in the HiGig header or not. */
   2262     bcmFieldQualifyHiGigVpLagFailoverPacket = 578, /* When set, it indicates that the
   2263                                            packet is redirected by a LAG
   2264                                            failover and the packet must not be
   2265                                            redirected again by LAG failover. */
   2266     bcmFieldQualifyHiGigOffloadEnginePreserveDscp = 579, /* Indicates offload engine not to
   2267                                            change the DSCP in the packet. */
   2268     bcmFieldQualifyHiGigOffloadEnginePreserveDot1p = 580, /* Indicates offload engine not to
   2269                                            change the DOT1P in the packet. */
   2270     bcmFieldQualifyHiGigOffloadEngineDeferredFlags = 581, /* Indicates whether a drop action/DSCP
   2271                                            change/802.1 change was deferred. */
   2272     bcmFieldQualifyHiGigOffloadEngineSrcType = 582, /* This applies to packets destined to
   2273                                            Offload Engine and this indicates
   2274                                            whether the packet is ingressed on a
   2275                                            Physical port / Virtual Port. */
   2276     bcmFieldQualifySystemPortBitmap = 583, /* To qualify on a port bitmap generated
   2277                                            from SGLP. */
   2278     bcmFieldQualifySourceGportBitmap = 584, /* To qualify on a port bitmap generated
   2279                                            from SVP. */
   2280     bcmFieldQualifyDevicePortBitmap = 585, /* To qualify on a port bitmap generated
   2281                                            from device ingress port. */
   2282     bcmFieldQualifyTosLower4Bits = 586, /* To qualify on Lower 4bits of TOS. */
   2283     bcmFieldQualifyOamEgressClass2Vxlt = 587, /* To qualify on OAM Class Id assigned
   2284                                            for packet based on Second Lookup in
   2285                                            EGR_VLAN_XLATE table. */
   2286     bcmFieldQualifyOamEgressVxltFirstHit = 588, /* To qualify on First EGR_VXLT lookup
   2287                                            hit status. */
   2288     bcmFieldQualifyOamEgressVxltSecondHit = 589, /* To qualify on Second EGR_VXLT lookup
   2289                                            hit status. */
   2290     bcmFieldQualifyOamDownMEPLoopbackPacket = 590, /* Indicates Down-MEP Loopback or
   2291                                            Down-SAT Latching Loopback packet. */
   2292     bcmFieldQualifyOamEgressPortUnicastDstMacHit = 591, /* To qualify on EGR_PORT MAC DA hit
   2293                                            status. */
   2294     bcmFieldQualifyOamSat = 592,        /* Pseudo qualifier for OAM/SAT. */
   2295     bcmFieldQualifyIngressDropEthernetOamControl = 593, /* To qualify on Drop reasons for
   2296                                            Ethernet Oam Control Packets based on
   2297                                            MEP type. */
   2298     bcmFieldQualifyIngressDropEthernetOamData = 594, /* To qualify on Drop reasons for
   2299                                            Ethernet Oam Data Packets based on
   2300                                            MEP type. */
   2301     bcmFieldQualifyIngressDropMplsOamControl = 595, /* To qualify on Drop reasons for Mpls
   2302                                            Oam Control Packets based on MEP
   2303                                            type. */
   2304     bcmFieldQualifyIngressDropMplsOamData = 596, /* To qualify on Drop reasons for Mpls
   2305                                            Oam Data Packets based on MEP type. */
   2306     bcmFieldQualifyEgressClassVxlan = 597, /* Class assigned by Egress Vxlan */
   2307     bcmFieldQualifyOamEgressEtherType = 598, /* To qualify on OAM/SAT Ethernet Type.
   2308                                            Allowed values are 0x8902 and 0x88b7 */
   2309     bcmFieldQualifyOamEgressMulticastMacHit = 599, /* To qualify on Multicast OAM Dest Mac
   2310                                            Address Range Hit. Allowed values
   2311                                            BCM_FIELD_OAM_MULTICAST_MAC_XXX */
   2312     bcmFieldQualifyTrunkMemberSourceModuleId = 600, /* To qualify on Module ID on a trunk
   2313                                            member port. */
   2314     bcmFieldQualifyOamEgressClassSrcMac = 601, /* To qualify on SourceMac Class ID
   2315                                            assigned for packet based on Hit in
   2316                                            EGR_OAM_SAT_MISC_MAC_SA_0.15
   2317                                            registers. */
   2318     bcmFieldQualifyMyStation2Hit = 602, /* Applicable when RIOT is enabled or l2
   2319                                            entry is used as my station (by
   2320                                            enabling config
   2321                                            l2_entry_used_as_my_station) is set.
   2322                                            To qualify on Overlay L2 termination
   2323                                            lookup hit status for tunnel packets
   2324                                            or Routing hit status for non-tunnel
   2325                                            packets or when l2 entry added as my
   2326                                            station is hit. */
   2327     bcmFieldQualifyExternalValue4 = 603, /* External lookup 4 value */
   2328     bcmFieldQualifyExternalValue5 = 604, /* External lookup 5 value */
   2329     bcmFieldQualifyExternalHit4 = 605,  /* External lookup 4 hit */
   2330     bcmFieldQualifyExternalHit5 = 606,  /* External lookup 5 hit */
   2331     bcmFieldQualifyGeneratedTtl = 607,  /* Get match criteria for
   2332                                            bcmFieldQualifyGeneratedTtl qualifier
   2333                                            from the field entry. */
   2334     bcmFieldQualifyIpMulticastCompatible = 608, /* Packet is compatible for multicast. */
   2335     bcmFieldQualifyEgressClassTunnel = 609, /* Class assigned by next hop tunnel */
   2336     bcmFieldQualifyEgressClassL3InterfaceTunnel = 610, /* Class assigned by egress interface
   2337                                            tunnel */
   2338     bcmFieldQualifyStaggeredValue0 = 611, /* Value taken from action result 0 in
   2339                                            staggered mode. */
   2340     bcmFieldQualifyStaggeredValue1 = 612, /* Value taken from action result 1 in
   2341                                            staggered mode. */
   2342     bcmFieldQualifyStaggeredValue2 = 613, /* Value taken from action result 2 in
   2343                                            staggered mode. */
   2344     bcmFieldQualifyStaggeredValue3 = 614, /* Value taken from action result 3 in
   2345                                            staggered mode. */
   2346     bcmFieldQualifyStaggeredDirectValue = 615, /* Value taken from KAPS payload in
   2347                                            staggered mode. */
   2348     bcmFieldQualifyStaggeredPreselProfile0 = 616, /* Program selection profile value taken
   2349                                            from action result 0 in staggered
   2350                                            mode. */
   2351     bcmFieldQualifyStaggeredPreselProfile1 = 617, /* Program selection profile value taken
   2352                                            from action result 1 in staggered
   2353                                            mode. */
   2354     bcmFieldQualifyStaggeredPreselProfile2 = 618, /* Program selection profile value taken
   2355                                            from action result 2 in staggered
   2356                                            mode. */
   2357     bcmFieldQualifyStaggeredPreselProfile3 = 619, /* Program selection profile value taken
   2358                                            from action result 3 in staggered
   2359                                            mode. */
   2360     bcmFieldQualifyStaggeredPreselProfileDirect = 620, /* Program selection profile value taken
   2361                                            from KAPS payload 0 in staggered
   2362                                            mode. */
   2363     bcmFieldQaulifyPreselId = 621,      /* Program selection value in 2nd Pass
   2364                                            according to the 1st Pass
   2365                                            preselector-id. */
   2366     bcmFieldQualifyEthernetData = 622,  /* Egress data qualifier base only.
   2367                                            NWK_RCRDS Ethernet data field,
   2368                                            containing Ethernet tags (if any) and
   2369                                            EtherType. */
   2370     bcmFieldQualifyPreemptablePacket = 623, /* Preemptable Packet */
   2371     bcmFieldQualifyVxlanClassValid = 624, /* VXLAN Class is valid or not */
   2372     bcmFieldQualifyVxlanPacket = 625,   /* Indicates whether it is a VXLAN
   2373                                            packet */
   2374     bcmFieldQualifyVxlanVnidVlanTranslateHit = 626, /* VXLAN Network Identifier (VN_ID)
   2375                                            lookup hit through vlan translation */
   2376     bcmFieldQualifyVxlanPayloadVlanFormat = 627, /* VLAN tag format in VXLAN payload */
   2377     bcmFieldQualifyTunnelPayloadDstMac = 628, /* Destination MAC address in Tunnel
   2378                                            payload */
   2379     bcmFieldQualifyTunnelPayloadSrcMac = 629, /* Source MAC address in Tunnel payload */
   2380     bcmFieldQualifyTunnelPayloadEtherType = 630, /* Ethernet type in Tunnel payload */
   2381     bcmFieldQualifyTunnelPayloadOuterVlan = 631, /* Outer VLAN tag in Tunnel payload */
   2382     bcmFieldQualifyTunnelPayloadOuterVlanId = 632, /* Outer VLAN id in Tunnel payload */
   2383     bcmFieldQualifyTunnelPayloadOuterVlanPri = 633, /* Outer VLAN priority in Tunnel payload */
   2384     bcmFieldQualifyTunnelPayloadOuterVlanCfi = 634, /* Outer VLAN CFI in Tunnel payload */
   2385     bcmFieldQualifyTunnelPayloadSip = 635, /* IPv4 source address in Tunnel payload */
   2386     bcmFieldQualifyTunnelPayloadDip = 636, /* IPv4 destination address in Tunnel
   2387                                            payload */
   2388     bcmFieldQualifyTunnelPayloadSip6 = 637, /* IPv6 source address in Tunnel payload */
   2389     bcmFieldQualifyTunnelPayloadDip6 = 638, /* IPv6 destination address in Tunnel
   2390                                            payload */
   2391     bcmFieldQualifyTunnelPayloadIpProtocol = 639, /* IP Protocol value in Tunnel payload */
   2392     bcmFieldQualifyTunnelPayloadL4DstPort = 640, /* UDP/TCP destination port number in
   2393                                            Tunnel payload */
   2394     bcmFieldQualifyTunnelPayloadL4SrcPort = 641, /* UDP/TCP source port number in Tunnel
   2395                                            payload */
   2396     bcmFieldQualifyRoceBthOpcode = 642, /* To qualify on OP code on RoCEv1 /
   2397                                            RoCEv2 Base Transport Header(BTH) */
   2398     bcmFieldQualifyRoceBthPartitionKey = 643, /* To qualify on partition key on RoCEv1
   2399                                            / RoCEv2  Base Transport Header (BTH) */
   2400     bcmFieldQualifyRoceBthDstQueuePair = 644, /* To qualify on destination queue pair
   2401                                            on RoCEv1 / RoCEv2 Base Transport
   2402                                            Header(BTH) */
   2403     bcmFieldQualifyRoceBthFlags = 645,  /* To qualify on flags on RoCEv1 /
   2404                                            RoCEv2 Base Transport Header(BTH) */
   2405     bcmFieldQualifyRoceVer1Pkt = 646,   /* Indicate whether it is a RoCEv1
   2406                                            packet */
   2407     bcmFieldQualifyRoceVer2Pkt = 647,   /* Indicate whether it is a RoCEv2
   2408                                            packet */
   2409     bcmFieldQualifySrcPortSRType = 648, /* SR (Seamless Redundancy) port type
   2410                                            (bcmFieldPortSRTypeXXX) assigned to
   2411                                            the source port */
   2412     bcmFieldQualifyDstPortSRType = 649, /* SR (Seamless Redundancy) port type
   2413                                            (bcmFieldPortSRTypeXXX) assigned to
   2414                                            the destination port */
   2415     bcmFieldQualifySrcPortSRRoleInterlink = 650, /* Indicates whether the SR role for the
   2416                                            source is an interlink */
   2417     bcmFieldQualifyDstPortSRRoleInterlink = 651, /* Indicates whether the SR role for the
   2418                                            destination is an interlink */
   2419     bcmFieldQualifySrcPortSRMode = 652, /* The SR port mode
   2420                                            (bcmFieldSRPortModeXXX) assigned to
   2421                                            the source port */
   2422     bcmFieldQualifyDstPortSRMode = 653, /* The SR port mode
   2423                                            (bcmFieldSRPortModeXXX) assigned to
   2424                                            the destination port */
   2425     bcmFieldQualifySrcPortSRNetId = 654, /* The SR NET ID (0~7) assigned to the
   2426                                            source port */
   2427     bcmFieldQualifyDstPortSRNetId = 655, /* The SR NET ID (0~7) assigned to the
   2428                                            destination port */
   2429     bcmFieldQualifySrcPortSRLanId = 656, /* The SR LAN ID (0 for LAN A and 1 for
   2430                                            LAN B) assigned to the source port */
   2431     bcmFieldQualifyDstPortSRLanId = 657, /* The SR LAN ID (0 for LAN A and 1 for
   2432                                            LAN B) assigned to the destination
   2433                                            port */
   2434     bcmFieldQualifySRTagType = 658,     /* The SR (Seamless Redundancy) tag type
   2435                                            (bcmFieldSRTagTypeXXX) identified in
   2436                                            this packet */
   2437     bcmFieldQualifySRLanId = 659,       /* The SR LAN ID (0 for LAN A and 1 for
   2438                                            LAN B) in the SR tag. Valid only if
   2439                                            the packet contains an SR tag. */
   2440     bcmFieldQualifySRNetId = 660,       /* The SR NET ID (0~7) in the SR tag.
   2441                                            Valid only if the packet contains an
   2442                                            SR tag. */
   2443     bcmFieldQualifyVlanSREnable = 661,  /* Indicates whether SR (Seamless
   2444                                            Redundancy) is enabled in this VLAN */
   2445     bcmFieldQualifyVlanSRLanId = 662,   /* Indicates the SR LAN ID (0 for LAN A
   2446                                            and 1 for LAN B) for this VLAN. Valid
   2447                                            only if SR is enabled for this VLAN. */
   2448     bcmFieldQualifySRFlowId = 663,      /* SR flow ID for the SR flow that the
   2449                                            packet belongs to */
   2450     bcmFieldQualifyL2DestSRNodeType = 664, /* SR node type (bcmFieldSRNodeTypeXXX)
   2451                                            for the destination address */
   2452     bcmFieldQualifySRNetIdMatched = 665, /* Indicates whether the SR packet's NET
   2453                                            ID matches the configured NET ID on
   2454                                            the destination port */
   2455     bcmFieldQualifySRSrcNodeIsSan = 666, /* Indicates whether the source address
   2456                                            belongs to an SR SAN node */
   2457     bcmFieldQualifySRSupervisionType = 667, /* The SR supervision type
   2458                                            (bcmFieldSRSupervisionTypeXXX) if
   2459                                            it's an SR supervision packet */
   2460     bcmFieldQualifySRError = 668,       /* Indicates SR errors for the packet */
   2461     bcmFieldQualifyL2SrcMulticastHit = 669, /* Indicates L2 source address found on
   2462                                            the correct multicast group. */
   2463     bcmFieldQualifyL2DstMulticastHit = 670, /* Indicates L2 destination address
   2464                                            found and result is a multicast
   2465                                            group. */
   2466     bcmFieldQualifySRDuplicate = 671,   /* SR (Seamless Redundancy): Indicates
   2467                                            whether this packet is a duplicate SR
   2468                                            packet */
   2469     bcmFieldQualifyTsnFlowId = 672,     /* TSN (Time-Sensitive Networking) flow
   2470                                            ID for the TSN flow that the packet
   2471                                            belongs to */
   2472     bcmFieldQualifyExternalValue6 = 673, /* External lookup 6 value */
   2473     bcmFieldQualifyExternalValue7 = 674, /* External lookup 7 value */
   2474     bcmFieldQualifyExternalHit6 = 675,  /* External lookup 6 hit */
   2475     bcmFieldQualifyExternalHit7 = 676,  /* External lookup 7 hit */
   2476     bcmFieldQualifyMirrorDest = 677,    /* Link Layer mirror command value */
   2477     bcmFieldQualifyPacketIsIEEE1588 = 678, /* Indicating whether the packet is 1588 */
   2478     bcmFieldQualifyIEEE1588Encapsulation = 679, /* IEEE-1588 Encapsulation according to
   2479                                            bcm_field_IEEE1588Encap_t */
   2480     bcmFieldQualifyIEEE1588CompensateTimeStamp = 680, /* IEEE-1588 update time stamp */
   2481     bcmFieldQualifyIEEE1588Command = 681, /* Command used by egress pipeline,
   2482                                            indicating if CF(correction field)
   2483                                            needs to be update */
   2484     bcmFieldQualifyIEEE1588HeaderOffset = 682, /* This field indicates the offset of
   2485                                            the IEEE-1588 header. Offset in bytes */
   2486     bcmFieldQualifyHeaderFormatExtension = 683, /* Qualify on header format extension
   2487                                            from profile of header format */
   2488     bcmFieldQualifyMacSecTagPresent = 684, /* Qualifies the MACSEC tagged packets */
   2489     bcmFieldQualifyMacSecTag = 685,     /* Qualifies on the SecTag field in
   2490                                            MACSEC tagged packets */
   2491     bcmFieldQualifyMacSecDstMacRangeHit = 686, /* Qualifies hit on Destination MAC
   2492                                            addresses range; which is configured
   2493                                            by API
   2494                                            bcm_field_macsec_DstMacRange_set */
   2495     bcmFieldQualifyFromMacSecPort = 687, /* Packet forwarded through the internal
   2496                                            MACSEC port */
   2497     bcmFieldQualifyMacSecFlow = 688,    /* Qualifies on the MACSEC packet flow */
   2498     bcmFieldQualifyEgressBridgedForwardingDataHigh = 689, /* Used for ACL-while-bridging. Contains
   2499                                            the 64 bits of packet data starting
   2500                                            80 bits after SA */
   2501     bcmFieldQualifyEgressBridgedForwardingDataLow = 690, /* Used for ACL-while-bridging. Contains
   2502                                            the 56 bits of packet data starting
   2503                                            144 bits after SA */
   2504     bcmFieldQualifyEgressBridgedAclDataHigh = 691, /* Used for ACL-while-bridging. Contains
   2505                                            the 40 bits of packet data starting
   2506                                            200 bits after SA */
   2507     bcmFieldQualifyEgressBridgedAclDataLow = 692, /*  Used for ACL-while-bridging.
   2508                                            Contains the 32 bits of packet data
   2509                                            starting 240 bits after SA */
   2510     bcmFieldQualifySysHdrType = 693,    /* Qualifier is to match on incoming
   2511                                            packet system header type */
   2512     bcmFieldQualifySubportTagPresent = 694, /* Match on packet's subport tag */
   2513     bcmFieldQualifyNetworkTagType = 695, /* Match on Network (VnTag/Etag) */
   2514     bcmFieldQualifyCnTagPresent = 696,  /* Match on congestion tag */
   2515     bcmFieldQualifyL2PktType = 697,     /* Match on L2 Packet Type
   2516                                            (Ethernet/Snap/Llc/None) */
   2517     bcmFieldQualifyPktType = 698,       /* Match on Packet type after L2 header */
   2518     bcmFieldQualifyMplsCwPresent = 699, /* Match on MPLS Control word */
   2519     bcmFieldQualifyMplsMcastEthertypePresent = 700, /* Match on Multicast MPLS EtherType */
   2520     bcmFieldQualifyIpv4OptionHdrType = 701, /* Match on IPv4 Option header types. */
   2521     bcmFieldQualifyIpv6ExtensionHdrType = 702, /* Match on IPv6 Extension header types. */
   2522     bcmFieldQualifyOverlayVlanFormat = 703, /* Match on Overlay vlan tag format. */
   2523     bcmFieldQualifyOverlayL2PktType = 704, /* Match on Overlay L2 Packet type */
   2524     bcmFieldQualifyOverlayPktType = 705, /* Match on Overlay Packet type */
   2525     bcmFieldQualifyOverlayIpv4OptionHdrType = 706, /* Match on Overlay IPv4 option header
   2526                                            types */
   2527     bcmFieldQualifyOverlayIpv6ExtensionHdrType = 707, /* Match on Overlay IPv6 option header
   2528                                            types */
   2529     bcmFieldQualifyFrontPanelPkt = 708, /* Match on packets incoming from Front
   2530                                            panel ports */
   2531     bcmFieldQualifyHiGigProxyTunnelType = 709, /* Match on incoming HiGig Proxy tunnel
   2532                                            types */
   2533     bcmFieldQualifyIpFragPkt = 710,     /* Match on IP Fragment packet */
   2534     bcmFieldQualifyOuterPriTaggedPkt = 711, /* Match on Outer priority tagged packet */
   2535     bcmFieldQualifyIpInIpPkt = 712,     /* Match on IP in IP packet */
   2536     bcmFieldQualifyIpmcV4Pkt = 713,     /* Match on packets with IPMC IPv4
   2537                                            packet */
   2538     bcmFieldQualifyIpmcV6Pkt = 714,     /* Match on packets with IPMC IPv6
   2539                                            packet */
   2540     bcmFieldQualifyIpChecksumOkPkt = 715, /* Match on IP packet with Checksum OK */
   2541     bcmFieldQualifyNetworkTagMulticastPkt = 716, /* Match on multicast packets with VNTAG
   2542                                            or ETAG */
   2543     bcmFieldQualifyIpTtlZeroPkt = 717,  /* Match on IP packet with Zero TTL
   2544                                            value */
   2545     bcmFieldQualifyPimBidirDfStatus = 718, /* Match on PIM Bi-directional
   2546                                            Designated Forwarder status */
   2547     bcmFieldQualifyInterfaceClassL2Type = 719, /* Qualifier is to to indicate whether
   2548                                            the Interface L2 Class ID is from VFI
   2549                                            or VLAN */
   2550     bcmFieldQualifyIntPktVersionOne = 720, /* Match on the INT (Inband-Telemetry)
   2551                                            Version One. The data '1' indicates
   2552                                            the INT version is set to 1, 0
   2553                                            indicates version other than 1. */
   2554     bcmFieldQualifyIntPktOverflowed = 721, /* Match on the INT (Inband-Telemetry)
   2555                                            Header Overflow Bit. The data '1'
   2556                                            indicates the frame is full of
   2557                                            telemetry information. The INT header
   2558                                            current length exceeds max length and
   2559                                            can't add any more metadata to it. */
   2560     bcmFieldQualifyIntPktLengthValid = 722, /* Match on the INT (Inband-Telemetry)
   2561                                            valid length, the data '1' indicates
   2562                                            the difference between INT Header max
   2563                                            length and current length is greater
   2564                                            than INT Metadata length, that is the
   2565                                            frame is capable of accommodating INT
   2566                                            metadata. */
   2567     bcmFieldQualifyIntPktType = 723,    /* Match on the INT (Inband-Telemetry)
   2568                                            Message Type (bcmFieldIntPktTypeXX). */
   2569     bcmFieldQualifyIntPktFinalHop = 724, /* Match on the INT (Inband-Telemetry)
   2570                                            Maximum Hop Limit Check, the data '1'
   2571                                            indicates INT exceeds Max Hop Count
   2572                                            (Hop Limit >= Hop Count). */
   2573     bcmFieldQualifyTunnelSubType = 725, /*  TunnelType (bcmFieldTunnelSubTypeXXX
   2574                                            in bcm_field_tunnel_subtype_t). */
   2575     bcmFieldQualifyNshServicePathId = 726, /*  Match on NSH Service Path ID. */
   2576     bcmFieldQualifyNshServiceIndex = 727, /*  Match on NSH Service Index. */
   2577     bcmFieldQualifyKeyGenVar = 728,     /*  Match on Key Gen Var */
   2578     bcmFieldQualifyRoeFrameType = 729,  /*  Match on Roe frame type set in MPLS
   2579                                            entry for a MPLS packet or based on
   2580                                            UDP port number for an IP tunnel
   2581                                            packet. Roe frame types are defined
   2582                                            by bcm_field_roe_frame_type_t. */
   2583     bcmFieldQualifyBfdGoodPkt = 730,    /* Match on BFD Good packet (Good here
   2584                                            represents the valid TTL range for
   2585                                            1-hop and M-hop). */
   2586     bcmFieldQualifyBfdPktWithDstIpLoopbackAddr = 731, /* Match whether the incoming BFD packet
   2587                                            has destination loopback IP Address. */
   2588     bcmFieldQualifyMplsControlPkt = 732, /* Match on MPLS Control Packet (packet
   2589                                            with VCCV_1/2/3/4 and
   2590                                            [LSP]/GAL/G-ACH). */
   2591     bcmFieldQualifyStageIngressFlowtracker = 733, /*  Field Processor pipeline ingress
   2592                                            flowtracker stage. */
   2593     bcmFieldQualifyInterfaceClassMplsLookup1 = 734, /* Qualifies on Class identifier derived
   2594                                            from MPLS label 1 entry Lookup. */
   2595     bcmFieldQualifyInterfaceClassMplsLookup2 = 735, /* Qualifies on Class identifier derived
   2596                                            from MPLS label 2 entry Lookup. */
   2597     bcmFieldQualifyInterfaceClassMplsLookup3 = 736, /* Qualifies on Class identifier derived
   2598                                            from MPLS label 3 entry Lookup. */
   2599     bcmFieldQualifyInterfaceClassL3Tunnel = 737, /* Qualifies on Class identifier derived
   2600                                            from L3 Tunnel. */
   2601     bcmFieldQualifyBfdPktVersionOne = 738, /* Match on BFD Version One. The data
   2602                                            '1' indicates the version as 1, 0
   2603                                            indicates version other than 1. */
   2604     bcmFieldQualifyGenevePktVersionZero = 739, /* Match on Geneve Version Zero. The
   2605                                            data '1' indicates the version as 0,
   2606                                            '0' indicates version other than 0. */
   2607     bcmFieldQualifyGpePktVersionZero = 740, /* Match on Gpe Version Zero. The data
   2608                                            '1' indicates the version as 0, '0'
   2609                                            indicates version other than 0. */
   2610     bcmFieldQualifyGenevePktWithOam = 741, /* Match on BFD over Geneve Packet. */
   2611     bcmFieldQualifyGpePktWithOam = 742, /* Match on BFD over Gpe Packet. */
   2612     bcmFieldQualifyInnerBfdPktVersionOne = 743, /* Match on Inner BFD Version One. The
   2613                                            data '1' indicates the version as 1,
   2614                                            0 indicates version other than 1. */
   2615     bcmFieldQualifyPktDstAddrType = 744, /*  Match on Packet destination address
   2616                                            type. */
   2617     bcmFieldQualifyPktInnerDstAddrType = 745, /*  Match on Packet inner destination
   2618                                            address type. */
   2619     bcmFieldQualifyInnerL4Ports = 746,  /*  Four bytes after Inner L3 header are
   2620                                            available. */
   2621     bcmFieldQualifyTafEnable = 747,     /* Qualifies on TAF (Time Aware
   2622                                            Filtering) enable */
   2623     bcmFieldQualifyTafGateId = 748,     /* Qualifies on TAF(Time Aware
   2624                                            Filtering) gate id */
   2625     bcmFieldQualifyTafGateState = 749,  /* Qualifies on TAF(Time Aware
   2626                                            Filtering) gate state */
   2627     bcmFieldQualifyTafCosProfile = 750, /* Qualifies on TAF(Time Aware
   2628                                            Filtering) CoS profile */
   2629     bcmFieldQualifyElkRangeL4DstPort = 751, /* Qualifies for L4 Dst port of ELK
   2630                                            range */
   2631     bcmFieldQualifyElkRangeL4SrcPort = 752, /* Qualifies for L4 Src port of ELK
   2632                                            range */
   2633     bcmFieldQualifyIp6PktNextHeader = 753, /* Qualifies for Next Header protocol
   2634                                            field in IPv6 header. */
   2635     bcmFieldQualifyIp6PktHopLimit = 754, /* Qualifies for Hop limit protocol
   2636                                            field in IPv6 header. */
   2637     bcmFieldQualifyIp6PktTrafficClass = 755, /* Qualifies for Traffic Class protocol
   2638                                            field in IPv6 header. */
   2639     bcmFieldQualifyInnerIp6PktNextHeader = 756, /* Qualifies for Next Header protocol
   2640                                            field in Inner IPv6 header. */
   2641     bcmFieldQualifyInnerIp6PktHopLimit = 757, /* Qualifies for Hop limit protocol
   2642                                            field in Inner IPv6 header. */
   2643     bcmFieldQualifyInnerIp6PktTrafficClass = 758, /* Qualifies for Traffic Class protocol
   2644                                            field in Inner IPv6 header. */
   2645     bcmFieldQualifyIpTunnelTtl = 759,   /* Qualifies on outer TTL for IP Tunnels
   2646                                            and Vxlan */
   2647     bcmFieldQualifyIpTunnelTtlClassZero = 760, /* Qualifies on outer TTL class for IP
   2648                                            Tunnels and Vxlan */
   2649     bcmFieldQualifyRangeCheckGroup = 761, /*  Range Group Identifier for a set of
   2650                                            Range IDs. */
   2651     bcmFieldQualifyFlowtrackerGroupId = 762, /* Qualifies on Flow group id
   2652                                            assigned(bcmFieldActionFlowtrackerGroupId)
   2653                                            by FlowTracker based Field Processor
   2654                                            Stage. */
   2655     bcmFieldQualifyFlowtrackerClassId = 763, /* Qualifies on Classifier ID from
   2656                                            Flowtracker group */
   2657     bcmFieldQualifyFlowtrackerGroupValid = 764, /* Qualifies on event Flowtracker group
   2658                                            valid status */
   2659     bcmFieldQualifyFlowtrackerDisabled = 765, /* Qualifies on event whether
   2660                                            Flowtracker flow tracking is
   2661                                            disabled. */
   2662     bcmFieldQualifyFlowtrackerMeteringExceeded = 766, /* Qualifies on the event whether
   2663                                            Flowtracker metering is exceeded. */
   2664     bcmFieldQualifyFlowtrackerCollectorCopy = 767, /* Qualifies on the event whether
   2665                                            initial or sample copied to collector
   2666                                            happened by Flowtracker. */
   2667     bcmFieldQualifyFlowtrackerFlowTableFull = 768, /* Qualifies on the Flowtracker event
   2668                                            whether the flow table is full. */
   2669     bcmFieldQualifyFlowtrackerGroupFlowExceeded = 769, /* Qualifies on the event whether flow
   2670                                            limit for Flowtracker is exceeded. */
   2671     bcmFieldQualifyFlowtrackerExportQueueFull = 770, /* Qualifies on the event whether
   2672                                            Flowtracker export queue is full. */
   2673     bcmFieldQualifyOpaqueTagType = 771, /* Qualifies on the tag type configured
   2674                                            for opaque tags. */
   2675     bcmFieldQualifyOpaqueTagHigh = 772, /* Qualifies on the higher 32 bits of
   2676                                            opaque tag. */
   2677     bcmFieldQualifyOpaqueTagLow = 773,  /* Qualifies on the lower 32 bits of
   2678                                            opaque tag. */
   2679     bcmFieldQualifyInnerDosAttack = 774, /* Denial of Service attack in inner
   2680                                            headers of frame. */
   2681     bcmFieldQualifyDosAttackEvents = 775, /* Qualifies on the dos attack events in
   2682                                            outer header of frame. */
   2683     bcmFieldQualifyInnerDosAttackEvents = 776, /* Qualifies on the dos attack events in
   2684                                            inner header of frame. */
   2685     bcmFieldQualifySrcTMPort = 777,     /* Qualifies on source TM port. */
   2686     bcmFieldQualifyContainer = 778,     /* This qualifier will be used as
   2687                                            container in IPMF3, to receive the
   2688                                            action buffer, when performing
   2689                                            cascading between IPMF2 and IPMF3. */
   2690     bcmFieldQualifyEgressForwardingClassId = 779, /* Qualifies on the Class Identifier
   2691                                            assigned by Egress Adaptation
   2692                                            forwarding tables. */
   2693     bcmFieldQualifyPktFlowType = 780,   /* Pseudo Qualifier to define the flow
   2694                                            for the rules configured to match on
   2695                                            qualifiers related to zone match Ids. */
   2696     bcmFieldQualifyVlanTranslateClassId = 781, /* Qualifies on the Class Identifier
   2697                                            assigned by Vlan Translate tables. */
   2698     bcmFieldQualifyIpIdentifier = 782,  /* Qualifies on 16-bits Identifier field
   2699                                            available in IP Header. */
   2700     bcmFieldQualifyTcpWindowSize = 783, /* Qualifies on the Tcp Window protocol
   2701                                            field in TCP header of the packet. */
   2702     bcmFieldQualifyIp4Length = 784,     /* Qualifies on the total length
   2703                                            protocol field of IPv4 header of the
   2704                                            packet. */
   2705     bcmFieldQualifyIp6Length = 785,     /* Qualifies on the payload Length
   2706                                            protocol field of IPv6 header of the
   2707                                            packet. */
   2708     bcmFieldQualifyTunnelPayloadIp4Length = 786, /* Qualifies on the total length
   2709                                            protocol field of inner IPv4 header
   2710                                            of the packet. */
   2711     bcmFieldQualifyTunnelPayloadIp6Length = 787, /* Qualifies on the payload Length
   2712                                            protocol field of inner IPv6 header
   2713                                            of the packet. */
   2714     bcmFieldQualifyGbpPresent = 788,    /* When set matches on GBP Presence. */
   2715     bcmFieldQualifyHiGigGbpPresent = 789, /* When set matches on presence of GBP
   2716                                            Source ID, present after L2 Tag,
   2717                                            carried to the remote device, via
   2718                                            HiGig.. */
   2719     bcmFieldQualifyGbpSrcId = 790,      /* Qualifies on the GBP Source ID of the
   2720                                            packet. */
   2721     bcmFieldQualifyVxlanGbpPresent = 791, /* When set matches on Vxlan GBP
   2722                                            presence flag. */
   2723     bcmFieldQualifyFlowtrackerCheck = 792, /* Qualifies on the results of
   2724                                            Flowtracker checker events in Flow
   2725                                            Tracker Module. */
   2726     bcmFieldQualifyFlowtrackerLearn = 793, /* Match on packet which was learnt by
   2727                                            Flowtracker module */
   2728     bcmFieldQualifyCosMapSelect = 794,  /* Match on the COS map type */
   2729     bcmFieldQualifyOpaqueObject1 = 795, /* Matches on Opaque Object1 */
   2730     bcmFieldQualifyOpaqueObject2 = 796, /* Matches on Opaque Object2 */
   2731     bcmFieldQualifyOpaqueObject3 = 797, /* Matches on Opaque Object3 */
   2732     bcmFieldQualifyOpaqueObject4 = 798, /* Matches on Opaque Object4 */
   2733     bcmFieldQualifyIncomingOuterVlanId = 799, /* Qualifies on the packet?s Incoming
   2734                                            Outer VLAN ID */
   2735     bcmFieldQualifyGbpDstId = 800,      /* Qualifies on the GBP Destination ID
   2736                                            of the packet */
   2737     bcmFieldQualifyHiGigGbpSrcId = 801, /* Qualifies on GBP Source ID, present
   2738                                            after L2 Tag, carried to the remote
   2739                                            device, via HiGig. */
   2740     bcmFieldQualifyLoopbackSubtype = 802, /* Qualifies on subtype of the Loopback
   2741                                            header */
   2742     bcmFieldQualifyPphPresent = 803,    /* Qualifies on PPH present field in
   2743                                            ITMH. */
   2744     bcmFieldQualifyPacketProcessingInVportClass = 804, /* Qualifies on PPH In-LIF profile. */
   2745     bcmFieldQualifyUDHBase0 = 805,      /* Qualifies UDH0 base value */
   2746     bcmFieldQualifyUDHBase1 = 806,      /* Qualifies UDH1 base value */
   2747     bcmFieldQualifyUDHBase2 = 807,      /* Qualifies UDH2 base value */
   2748     bcmFieldQualifyUDHBase3 = 808,      /* Qualifies UDH3 base value */
   2749     bcmFieldQualifyNetworkQos = 809,    /* Qualify Upon Network Qos. */
   2750     bcmFieldQualifyAceEntryId = 810,    /* Qualify Upon ACE entry ID. */
   2751     bcmFieldQualifyIp4Protocol = 811,   /* Qualify Upon IPv4 Protocol. */
   2752     bcmFieldQualifyIp4Tos = 812,        /* Qualify Upon IPv4 TOS. */
   2753     bcmFieldQualifyIp4Ttl = 813,        /* Qualify Upon IPv4 TTL. */
   2754     bcmFieldQualifyInVportDataIndex = 814, /* Qualifies upon the ingress logical
   2755                                            port data index. */
   2756     bcmFieldQualifyEtherTypeUntagged = 815, /*  Ethernet Type, only for untagged
   2757                                            frames. */
   2758     bcmFieldQualifyNetworkLoadBalanceKeyInitial = 816, /* Qualifies on the initial Network Load
   2759                                            Balancing key. */
   2760     bcmFieldQualifyNetworkLoadBalanceKey = 817, /* Qualifies on the Network Load
   2761                                            Balancing key, after ingress PMF1
   2762                                            stage */
   2763     bcmFieldQualifyEcmpLoadBalanceKey0Initial = 818, /* Qualifies on the initial ECMP Load
   2764                                            Balancing key 0. */
   2765     bcmFieldQualifyEcmpLoadBalanceKey0 = 819, /* Qualifies on the ECMP Load Balancing
   2766                                            key 0, after ingress PMF1 stage */
   2767     bcmFieldQualifyEcmpLoadBalanceKey1Initial = 820, /* Qualifies on the initial ECMP Load
   2768                                            Balancing key 1. */
   2769     bcmFieldQualifyEcmpLoadBalanceKey1 = 821, /* Qualifies on the ECMP Load Balancing
   2770                                            key 1, after ingress PMF1 stage */
   2771     bcmFieldQualifyEcmpLoadBalanceKey2Initial = 822, /* Qualifies on the initial ECMP Load
   2772                                            Balancing key 2. */
   2773     bcmFieldQualifyEcmpLoadBalanceKey2 = 823, /* Qualifies on the ECMP Load Balancing
   2774                                            key 2, after ingress PMF1 stage */
   2775     bcmFieldQualifyTrunkLoadBalanceKeyInitial = 824, /* Qualifies on the initial LAG Load
   2776                                            Balancing Key */
   2777     bcmFieldQualifyStateTableKey = 825, /* Qualifies on the memory index which
   2778                                            the state data is set */
   2779     bcmFieldQualifyStateTableData = 826, /* Qualifies on the state table payload. */
   2780     bcmFieldQualifyCompareKeysResult0 = 827, /* Qualifies on the Result of comparing
   2781                                            the first pair of initial keys */
   2782     bcmFieldQualifyCompareKeysResult1 = 828, /* Qualifies on the Result of comparing
   2783                                            the second pair of initial keys */
   2784     bcmFieldQualifyCompareKeysTcam0 = 829, /* Qualifies on the Result of comparing
   2785                                            initial key and TCAM result 0 */
   2786     bcmFieldQualifyCompareKeysTcam1 = 830, /* Qualifies on the Result of comparing
   2787                                            initial key and TCAM result 1. */
   2788     bcmFieldQualifyLayerRecordType = 831, /* Qualifies on the Layer Record Type. */
   2789     bcmFieldQualifyLayerRecordOffset = 832, /* Qualifies on the Layer Record Offset. */
   2790     bcmFieldQualifyLayerRecordQualifier = 833, /* Qualifies on the Layer Record
   2791                                            Qualifier (info). */
   2792     bcmFieldQualifyUDHBase = 834,       /* User define header base, used in
   2793                                            IPMF3. */
   2794     bcmFieldQualifyForwardingLayerIndex = 835, /* Qualifies on the Forwarding Layer
   2795                                            Index. */
   2796     bcmFieldQualifyIPTProfile = 836,    /* Qualifies upon IPT Profile. */
   2797     bcmFieldQualifyAcInLifWideData = 837, /* Qualifies on the Ac in-lif
   2798                                            wide(generic) data */
   2799     bcmFieldQualifyNativeAcInLifWideData = 838, /* Qualifies on the native Ac in-lif
   2800                                            wide(generic) data */
   2801     bcmFieldQualifyForwardingProfile = 839, /* Qualifies on the Forwarding Profile. */
   2802     bcmFieldQualifyContextId = 840,     /* Qualifies on the Context Id. */
   2803     bcmFieldQualifyForwardingLayerQualifier = 841, /* Qualifies on the Forwarding Layer
   2804                                            Qualifier. */
   2805     bcmFieldQualifyTracePacket = 842,   /* Qualifies on the Trace Packet. */
   2806     bcmFieldQualifyTrunkLoadBalanceKey = 843, /* Qualifies on the LAG Load Balancing
   2807                                            Key. */
   2808     bcmFieldQualifyForward = 844,       /* Raw data for destination. */
   2809     bcmFieldQualifyParsingStartType = 845, /* Qualifies on the layer type that
   2810                                            egress parser should consider. */
   2811     bcmFieldQualifyParsingStartOffset = 846, /* Qualifies on which offset egress
   2812                                            parser should start parsing. */
   2813     bcmFieldQualifyUDHData0 = 847,      /* Qualifies on user defined header 0
   2814                                            data. */
   2815     bcmFieldQualifyUDHData1 = 848,      /* Qualifies on user defined header 1
   2816                                            data. */
   2817     bcmFieldQualifyUDHData2 = 849,      /* Qualifies on user defined header 2
   2818                                            data. */
   2819     bcmFieldQualifyUDHData3 = 850,      /* Qualifies on user defined header 3
   2820                                            data. */
   2821     bcmFieldQualifyRxSnoopStrength = 851, /* Qualifies on Snoop strength. */
   2822     bcmFieldQualifyRxSnoopCode = 852,   /* Qualifies on Snoop code. */
   2823     bcmFieldQualifyVisibility = 853,    /* Qualifies on whether visibility is
   2824                                            set. */
   2825     bcmFieldQualifyVisibilityClear = 854, /* Qualifies on whether visibility is
   2826                                            clear. */
   2827     bcmFieldQualifyEthernetMulticast = 855, /* Qualify on Ethernet packets which
   2828                                            destination MAC address is multicast
   2829                                            (MAC-DA[40] is set). */
   2830     bcmFieldQualifyEthernetBroadcast = 856, /* Qualify on Ethernet packets which
   2831                                            destination MAC address is broadcast
   2832                                            (MAC-DA[47:0] is all 1). */
   2833     bcmFieldQualifyEthernetFirstTpidExist = 857, /* Qualify on Ethernet packets which
   2834                                            their first Vlan TPID exists. */
   2835     bcmFieldQualifyEthernetFirstTpidIndex = 858, /* Qualify on Ethernet packets  first
   2836                                            Vlan TPID Index. */
   2837     bcmFieldQualifyEthernetSecondTpidExist = 859, /* Qualify on Ethernet packets which
   2838                                            their second Vlan TPID exists. */
   2839     bcmFieldQualifyEthernetSecondTpidIndex = 860, /* Qualify on Ethernet packets second
   2840                                            Vlan TPID Index. */
   2841     bcmFieldQualifyEthernetThirdTpidExist = 861, /* Qualify on Ethernet packets which
   2842                                            their third Vlan TPID exists. */
   2843     bcmFieldQualifyEthernetThirdTpidIndex = 862, /* Qualify on Ethernet packets  third
   2844                                            Vlan TPID Index. */
   2845     bcmFieldQualifyIpHasOptions = 863,  /* Qualify on IPv4 packets where the IP
   2846                                            Header include options. */
   2847     bcmFieldQualifyIpFirstFrag = 864,   /* Qualify on IPv4 packets where the IP
   2848                                            Header is fragmented and this is the
   2849                                            first fragment. */
   2850     bcmFieldQualifyIpTunnelType = 865,  /* Qualify on IPv4 TunnelType
   2851                                            (bcmFieldTunnelXXX). */
   2852     bcmFieldQualifyIp6MulticastCompatible = 866, /* Qualify on IPv6 packets which their
   2853                                            DIP is Multicast (8msb are 0xFF). */
   2854     bcmFieldQualifyIp6FirstAdditionalHeaderExist = 867, /* Qualify on IPv6 packets first
   2855                                            additional header exists. */
   2856     bcmFieldQualifyItmhExtensionExist = 868, /* Qualify if Ingress TM Header
   2857                                            extension exists. */
   2858     bcmFieldQualifyItmhDestinationFec = 869, /* Qualify if Ingress TM Header
   2859                                            destination is FEC. */
   2860     bcmFieldQualifyItmhPphType = 870,   /* Qualify on Ingress TM Header PPH
   2861                                            type. */
   2862     bcmFieldQualifyStatSamplingCode = 871, /* Qualify on Statistic Sampling code
   2863                                            value. */
   2864     bcmFieldQualifyStatSamplingQualifier = 872, /* Qualify on Statistic Sampling
   2865                                            qualifier value. */
   2866     bcmFieldQualifyRpfEcmpMode = 873,   /* Qualify on RPF ECMP MODE value. */
   2867     bcmFieldQualifyStatOamLM = 874,     /* Qualify on OAM LM counter value. */
   2868     bcmFieldQualifyInInterface = 875,   /* Qualify on the in LIF encoded as
   2869                                            interface. */
   2870     bcmFieldQualifyOutInterface = 876,  /* Qualify on the out LIF encoded as
   2871                                            interface */
   2872     bcmFieldQualifyInVportClass = 877,  /* Qualify on the profile of an in LIF
   2873                                            encoded as Gport. */
   2874     bcmFieldQualifyOutVportClass = 878, /* Qualify on the profile of an out LIF
   2875                                            encoded as Gport. */
   2876     bcmFieldQualifyInterfaceClass = 879, /* Qualify on the profile of a LIF
   2877                                            encoded as interface. */
   2878     bcmFieldQualifyPortClassPacketProcessing = 880, /* Qualify on the profile of a packet
   2879                                            processing port. */
   2880     bcmFieldQualifyPortClassTrafficManagement = 881, /* Qualify on the profile of a traffic
   2881                                            management port. */
   2882     bcmFieldQualifyOutPortTrafficManagement = 882, /* Qualify upon out-TM port. */
   2883     bcmFieldQualifyMulticastRpfMode = 883, /* Qualify upon Multicast RPF Mode. */
   2884     bcmFieldQualifyTpid = 884,          /* Qualify upon VLAN TPID. */
   2885     bcmFieldQualifyVlanId = 885,        /* Qualify upon VLAN  tag Id. */
   2886     bcmFieldQualifyVlanPri = 886,       /* Qualify upon VLAN priority. */
   2887     bcmFieldQualifyVlanCfi = 887,       /* Qualify upon VLAN Cfi. */
   2888     bcmFieldQualifyVlanPriCfi = 888,    /* Qualify upon VLAN Cfi+Pri (4 bits). */
   2889     bcmFieldQualifyVlan = 889,          /* Qualify upon VLAN Tag. */
   2890     bcmFieldQualifyMplsLabel = 890,     /* Qualify upon MPLS Label. */
   2891     bcmFieldQualifyMplsLabelId = 891,   /* Qualify upon ID field of the MPLS
   2892                                            Label. */
   2893     bcmFieldQualifyMplsLabelTtl = 892,  /* Qualify upon TTL field of the MPLS
   2894                                            Label. */
   2895     bcmFieldQualifyMplsLabelBos = 893,  /* Qualify upon BOS field of the MPLS
   2896                                            Label. */
   2897     bcmFieldQualifyMplsLabelExp = 894,  /* Qualify upon EXP field of the MPLS
   2898                                            Label. */
   2899     bcmFieldQualifyInVPort0 = 895,      /*  Ingress virtual port 0. */
   2900     bcmFieldQualifyInVPort1 = 896,      /*  Ingress virtual port 1. */
   2901     bcmFieldQualifyOutVPort0 = 897,     /*  Egress virtual port 0. */
   2902     bcmFieldQualifyOutVPort1 = 898,     /*  Egress virtual port 1. */
   2903     bcmFieldQualifyOutVPort2 = 899,     /*  Egress virtual port 2. */
   2904     bcmFieldQualifyOutVPort3 = 900,     /*  Egress virtual port 3. */
   2905     bcmFieldQualifyBierStringOffset = 901, /* Qualifies upon Bier string offset. */
   2906     bcmFieldQualifyBierStringSize = 902, /* Qualifies upon Bier string size. */
   2907     bcmFieldQualifyPacketIsBier = 903,  /* Qualifies upon Bier packets. */
   2908     bcmFieldQualifyPortClassPacketProcessingGeneralData = 904, /* Qualify on the general data profile
   2909                                            of a packet processing port. */
   2910     bcmFieldQualifyForwardingAdditionalInfo = 905, /* Qualifies on the Forwarding
   2911                                            additional info. */
   2912     bcmFieldQualifyInVportClass0 = 906, /* Qualify on the profile of an in LIF
   2913                                            encoded as Gport. */
   2914     bcmFieldQualifyInVportClass1 = 907, /* Qualify on the profile of an in LIF
   2915                                            encoded as Gport. */
   2916     bcmFieldQualifyStatId0 = 908,       /* Qualifies on statistics ID 0. */
   2917     bcmFieldQualifyStatId1 = 909,       /* Qualifies on statistics ID 1. */
   2918     bcmFieldQualifyStatId2 = 910,       /* Qualifies on statistics ID 2. */
   2919     bcmFieldQualifyStatId3 = 911,       /* Qualifies on statistics ID 3. */
   2920     bcmFieldQualifyStatId4 = 912,       /* Qualifies on statistics ID 4. */
   2921     bcmFieldQualifyStatId5 = 913,       /* Qualifies on statistics ID 5. */
   2922     bcmFieldQualifyStatId6 = 914,       /* Qualifies on statistics ID 6. */
   2923     bcmFieldQualifyStatId7 = 915,       /* Qualifies on statistics ID 7. */
   2924     bcmFieldQualifyStatId8 = 916,       /* Qualifies on statistics ID 8. */
   2925     bcmFieldQualifyStatId9 = 917,       /* Qualifies on statistics ID 9. */
   2926     bcmFieldQualifyStatProfile0 = 918,  /* Qualifies on statistics profile 0. */
   2927     bcmFieldQualifyStatProfile1 = 919,  /* Qualifies on statistics profile 1. */
   2928     bcmFieldQualifyStatProfile2 = 920,  /* Qualifies on statistics profile 2. */
   2929     bcmFieldQualifyStatProfile3 = 921,  /* Qualifies on statistics profile 3. */
   2930     bcmFieldQualifyStatProfile4 = 922,  /* Qualifies on statistics profile 4. */
   2931     bcmFieldQualifyStatProfile5 = 923,  /* Qualifies on statistics profile 5. */
   2932     bcmFieldQualifyStatProfile6 = 924,  /* Qualifies on statistics profile 6. */
   2933     bcmFieldQualifyStatProfile7 = 925,  /* Qualifies on statistics profile 7. */
   2934     bcmFieldQualifyStatProfile8 = 926,  /* Qualifies on statistics profile 8. */
   2935     bcmFieldQualifyStatProfile9 = 927,  /* Qualifies on statistics profile 9. */
   2936     bcmFieldQualifyExtStat0 = 928,      /* Qualifies on External Statistics ID
   2937                                            0. */
   2938     bcmFieldQualifyExtStat1 = 929,      /* Qualifies on External Statistics ID
   2939                                            1. */
   2940     bcmFieldQualifyExtStat2 = 930,      /* Qualifies on External Statistics ID
   2941                                            2. */
   2942     bcmFieldQualifyExtStat3 = 931,      /* Qualifies on External Statistics ID
   2943                                            3. */
   2944     bcmFieldQualifyExtStatProfile0 = 932, /* Qualifies on External Statistics
   2945                                            profile 0. */
   2946     bcmFieldQualifyExtStatProfile1 = 933, /* Qualifies on External Statistics
   2947                                            profile 1. */
   2948     bcmFieldQualifyExtStatProfile2 = 934, /* Qualifies on External Statistics
   2949                                            profile 2. */
   2950     bcmFieldQualifyExtStatProfile3 = 935, /* Qualifies on External Statistics
   2951                                            profile 3. */
   2952     bcmFieldQualifyStatMetaData = 936,  /* Qualifies on Statistics meta data. */
   2953     bcmFieldQualifyDstL3EgressUnderlay = 937, /*  Qualifies on Underlay destination
   2954                                            egress object id. */
   2955     bcmFieldQualifyDstL3EgressNextHopsUnderlay = 938, /*  Consecutive Underlay L3 Egress Next
   2956                                            hops. */
   2957     bcmFieldQualifyEgressClassPort = 939, /* Qualifies on Class ID assigned to
   2958                                            packet based on Egress Port. The
   2959                                            class ID is assigned to egress port
   2960                                            using bcm_port_class_set(unit, port,
   2961                                            bcmPortClassEgress, class_id); */
   2962     bcmFieldQualifyINTProbeMarker1 = 940, /* Qualifies on INT Prober Marker1
   2963                                            field. */
   2964     bcmFieldQualifyINTProbeMarker2 = 941, /* Qualifies on INT Prober Marker2
   2965                                            field. */
   2966     bcmFieldQualifyINTReserved4Bytes = 942, /* Qualifies on INT Reserved 4 bytes
   2967                                            after Prober Marker2 field in the INT
   2968                                            header. */
   2969     bcmFieldQualifyInVPort0Raw = 943,   /* Qualifies on In LIF 0 raw value. */
   2970     bcmFieldQualifyInVPort1Raw = 944,   /* Qualifies on In LIF 1 raw value. */
   2971     bcmFieldQualifyOutVPort0Raw = 945,  /* Qualifies on Out LIF 0 raw value. */
   2972     bcmFieldQualifyOutVPort1Raw = 946,  /* Qualifies on Out LIF 1 raw value. */
   2973     bcmFieldQualifyOutVPort2Raw = 947,  /* Qualifies on Out LIF 2 raw value. */
   2974     bcmFieldQualifyOutVPort3Raw = 948,  /* Qualifies on Out LIF 3 raw value. */
   2975     bcmFieldQualifyAppTypePredefined = 949, /* Qualifies on predefined AppType. */
   2976     bcmFieldQualifyFlowControlType = 950, /* Indicates the type of Flow control
   2977                                            packet. */
   2978     bcmFieldQualifyTimeStampTxPktType = 951, /* Requires BROADCOM_PREMIUM license */
   2979     bcmFieldQualifySysHdrLocalDstport = 952, /* Requires BROADCOM_PREMIUM license */
   2980     bcmFieldQualifyMirrorCode = 953,    /* Matches on Mirror Code. */
   2981     bcmFieldQualifyMirrorData = 954,    /* Matches on Mirror Data (qualifier). */
   2982     bcmFieldQualifyLearnVsi = 955,      /* VSI learnt */
   2983     bcmFieldQualifyLearnData = 956,     /* Learn data */
   2984     bcmFieldQualifyLearnStationMove = 957, /* Learn Station move */
   2985     bcmFieldQualifyLearnMatch = 958,    /* Learn Match */
   2986     bcmFieldQualifyLearnFound = 959,    /* Learn Found */
   2987     bcmFieldQualifyLearnExpectedWon = 960, /* Learn Expected won */
   2988     bcmFieldQualifyVrfValue = 961,      /* VRF value part of the forwarding
   2989                                            domain, not including the forwarding
   2990                                            domain type. */
   2991     bcmFieldQualifyInPortWithoutCore = 962, /* The In PP port, not including core ID
   2992                                            (so to be used with care, if not
   2993                                            adding entry by core). */
   2994     bcmFieldQualifyDstSysPortExtPresent = 963, /*  FTMH Destination System Port (DSP)
   2995                                            Extension is present. */
   2996     bcmFieldQualifyIpFwdPlusOneNextProtocol = 964, /* IP forward plus one next protocol */
   2997     bcmFieldQualifyMacSecControlPkt = 965, /* Qualifies (based on the action
   2998                                            bcmFieldActionMacSecPktTypeSet
   2999                                            values) MACSEC control packet */
   3000     bcmFieldQualifyMacSecSecTagCbit = 966, /* Qualifies on the C-Bit of MACSEC
   3001                                            SECTAG */
   3002     bcmFieldQualifyMacSecSecTagEbit = 967, /* Qualifies on the E-bit of MACSEC
   3003                                            SECTAG */
   3004     bcmFieldQualifyIOAMNameSpaceIdMatch = 968, /* Requires BROADCOM_PREMIUM license */
   3005     bcmFieldQualifyIOAMPktOverflowed = 969, /* Requires BROADCOM_PREMIUM license */
   3006     bcmFieldQualifyIOAMRemainingLenValid = 970, /* Requires BROADCOM_PREMIUM license */
   3007     bcmFieldQualifySaLookupAcceptedStrength = 971, /* Qualifies on Accepted strength
   3008                                            returned from SA Lookup result */
   3009     bcmFieldQualifyLayerRecordTypeRaw = 972, /* Qualifies on the Layer Record Type.
   3010                                            For possible values look at
   3011                                            bcm_field_layer_type_t, input expects
   3012                                            raw value. */
   3013     bcmFieldQualifySrcPortRaw = 973,    /* Qualifies on source port, input
   3014                                            expects raw value. */
   3015     bcmFieldQualifySrcModPortGportRaw = 974, /* Qualifies on Source module/port pair,
   3016                                            input expects raw value. */
   3017     bcmFieldQualifyDstMulticastGroupRaw = 975, /* Qualifies on Multicast Group id,
   3018                                            input expects raw value. */
   3019     bcmFieldQualifyInInterfaceRaw = 976, /* Qualifies on Ingress Logical
   3020                                            Interface (LIF/RIF), input expects
   3021                                            raw value. */
   3022     bcmFieldQualifyOutInterfaceRaw = 977, /* Qualifies on Egress Logical Interface
   3023                                            (LIF/RIF), input expects raw value. */
   3024     bcmFieldQualifyInPortWithoutCoreRaw = 978, /* Qualifies on Ingress Port. Does not
   3025                                            include the core ID, caution should
   3026                                            be taken when not adding entry by
   3027                                            core, input expects raw value. */
   3028     bcmFieldQualifyVlanFormatRaw = 979, /* Qualifies on Incoming vlan structure
   3029                                            format
   3030                                            (untagged/single/double/priority-tagged),
   3031                                            input expects raw value. */
   3032     bcmFieldQualifyInPortRaw = 980,     /* Qualifies on Ingress Port. Includes
   3033                                            core ID, and can be used by entries
   3034                                            for all cores, input expects raw
   3035                                            value. */
   3036     bcmFieldQualifyColorRaw = 981,      /* Qualifies on packet color, input
   3037                                            expects raw value. */
   3038     bcmFieldQualifyDstGportRaw = 982,   /* Qualifies according to destination,
   3039                                            input expects raw value. */
   3040     bcmFieldQualifyDstPortRaw = 983,    /* Qualifies on destination port, input
   3041                                            expects raw value. */
   3042     bcmFieldQualifyOutPortRaw = 984,    /* Qualifies on Egress port. Does not
   3043                                            include the core ID, caution should
   3044                                            be taken when not adding entry by
   3045                                            core, input expects raw value. */
   3046     bcmFieldQualifyDstRpfValid = 985,   /* Checks if the RPF Destination is
   3047                                            valid. */
   3048     bcmFieldQualifyRpfOutVPort = 986,   /* Qualifies on the RPF OUT LIF. */
   3049     bcmFieldQualifyRpfOutInterface = 987, /* Qualifies on the RPF OUT LIF. */
   3050     bcmFieldQualifyRpfOutVPortRaw = 988, /* Qualifies on the RPF OUT LIF. Input
   3051                                            expects raw value. */
   3052     bcmFieldQualifyRpfRouteValid = 989, /* Qualifies on the RPF Route valid. */
   3053     bcmFieldQualifyEcmpGroup = 990,     /* Qualifies on the ECMP group. */
   3054     bcmFieldQualifyIp4DstMulticast = 991, /* Qualifies on the ECMP group. */
   3055     bcmFieldQualifyIgmpType = 992,      /* Internet Group Management Protocol
   3056                                            type. */
   3057     bcmFieldQualifyL2IngressInterface = 993, /* Layer2 ingress interface (L2_IIF). */
   3058     bcmFieldQualifyL3SrcHit = 994,      /* Layer3 source hit. */
   3059     bcmFieldQualifyL3DestHit = 995,     /* Layer3 destination hit. */
   3060     bcmFieldQualifyL2MacInfo = 996,     /* Packet Mac information. */
   3061     bcmFieldQualifyL4Info = 997,        /* Packet L4 header Info. */
   3062     bcmFieldQualifyInnerPriTaggedPkt = 998, /* Match on inner priority tagged
   3063                                            packet. */
   3064     bcmFieldQualifyHiGig3Class = 999,   /* Match on HiGig3 packet class id. */
   3065     bcmFieldQualifyHiGig3Flags = 1000,  /* Match on HiGig3 packet flags. */
   3066     bcmFieldQualifyLoopbackHiGig3Flags = 1001, /* Match on HiGig3 loopback packet
   3067                                            flags. */
   3068     bcmFieldQualifyIpExtensionHdrNum = 1002, /* Number of IP extension headers
   3069                                            present in forwarding header. */
   3070     bcmFieldQualifyIngressL2InterfaceOpaqueCtrlId = 1003, /* Opaque control id from L2_IIF table. */
   3071     bcmFieldQualifyDevicePortOpaqueCommand = 1004, /* Opaque control from device port
   3072                                            table. */
   3073     bcmFieldQualifyIngressInterfaceClass = 1005, /* Interface Class id can come from
   3074                                            either L2_IIF/SVP/L3_IIF ingress
   3075                                            tables. */
   3076     bcmFieldQualifyIngressL3InterfaceOpaqueCtrlId = 1006, /* Opaque control id from L3_IIF table. */
   3077     bcmFieldQualifySvpOpaqueCtrlId = 1007, /* Opaque control id from SVP table. */
   3078     bcmFieldQualifyVpnOpaqueCtrlId = 1008, /* Opaque control id from VFI table. */
   3079     bcmFieldQualifyL2SrcDiscard = 1009, /*  L2 Source is discarded. */
   3080     bcmFieldQualifyL2LearnCommands = 1010, /* L2 Learning command bits. */
   3081     bcmFieldQualifyTunnelTermStatus = 1011, /* Tunnel termination status. */
   3082     bcmFieldQualifyLoopbackHdrFlags = 1012, /* Loopback packet header flags. */
   3083     bcmFieldQualifyPacketStatus = 1013, /* Packet status. */
   3084     bcmFieldQualifyForwardingStatus = 1014, /* Packet Forwarding Status. */
   3085     bcmFieldQualifyTunnelAltEtherType = 1015, /* Alternate tunnel EtherType, for
   3086                                            termination flows this is outer L2
   3087                                            header EtherType and for non
   3088                                            termination flows it carries inner L2
   3089                                            header EtherType. */
   3090     bcmFieldQualifyTunnelAltSrcIp = 1016, /* Alternate tunnel source Ipv4, for
   3091                                            termination flows this is outer L3
   3092                                            header SrcIp4 and for non termination
   3093                                            flows it carries inner L3 header
   3094                                            SrcIp4. */
   3095     bcmFieldQualifyTunnelAltSrcIp6 = 1017, /* Alternate tunnel source Ipv6, for
   3096                                            termination flows this is outer L3
   3097                                            header SrcIp6 and for non termination
   3098                                            flows it carries inner L3 header
   3099                                            SrcIp6. */
   3100     bcmFieldQualifyTunnelAltDstIp = 1018, /* Alternate tunnel destination Ipv4,
   3101                                            for termination flows this is outer
   3102                                            L3 header DstIp4 and for non
   3103                                            termination flows it carries inner L3
   3104                                            header DstIp4. */
   3105     bcmFieldQualifyTunnelAltDstIp6 = 1019, /* Alternate tunnel destination Ipv6,
   3106                                            for termination flows this is outer
   3107                                            L3 header DstIp6 and for non
   3108                                            termination flows it carries inner L3
   3109                                            header DstIp6. */
   3110     bcmFieldQualifyTunnelAltIpProtocol = 1020, /* Alternate tunnel Ip protocol, for
   3111                                            termination flows this is outer L3
   3112                                            header protocol and for non
   3113                                            termination flows it carries inner L3
   3114                                            header protocol. */
   3115     bcmFieldQualifyTunnelAltL4SrcPort = 1021, /* Alternate tunnel source L4 port, for
   3116                                            termination flows this is outer L4
   3117                                            header src port and for non
   3118                                            termination flows it carries inner L4
   3119                                            header src port. */
   3120     bcmFieldQualifyTunnelAltL4DstPort = 1022, /* Alternate tunnel destination L4 port,
   3121                                            for termination flows this is outer
   3122                                            L4 header dest port and for non
   3123                                            termination flows it carries inner L4
   3124                                            header dest port. */
   3125     bcmFieldQualifyOuterL2MacInfo = 1023, /* Packet outer Mac information. */
   3126     bcmFieldQualifyOuterIpInfo = 1024,  /* Packet outer Ip information. */
   3127     bcmFieldQualifyOuterL4Info = 1025,  /* Packet outer L4 header Info. */
   3128     bcmFieldQualifyInnerL2MacInfo = 1026, /* Packet inner Mac information. */
   3129     bcmFieldQualifyInnerIpInfo = 1027,  /* Packet inner Ip information. */
   3130     bcmFieldQualifyInnerL4Info = 1028,  /* Packet inner L4 header Info. */
   3131     bcmFieldQualifyEffectiveTtl = 1029, /* Effective Ttl of packet computed
   3132                                            based on uniform/pipe mode setting of
   3133                                            tunnel. */
   3134     bcmFieldQualifyFlexStateResultA0 = 1030, /* Flex State Result A0 counter value. */
   3135     bcmFieldQualifyFlexStateResultA1 = 1031, /* Flex State Result A1 counter value. */
   3136     bcmFieldQualifyLastIpProtocol = 1032, /* Ip protocol value from forwarding
   3137                                            header last protocol value. */
   3138     bcmFieldQualifyMplsLabel4 = 1033,   /* MPLS Label 4 */
   3139     bcmFieldQualifyMplsLabel4Ttl = 1034, /* TTL field of the fourth MPLS Label */
   3140     bcmFieldQualifyMplsLabel4Bos = 1035, /* BoS field of the fourth MPLS Label */
   3141     bcmFieldQualifyMplsLabel4Exp = 1036, /* Exp field of the fourth MPLS Label */
   3142     bcmFieldQualifyMplsLabel4Id = 1037, /* ID field of the fourth MPLS Label */
   3143     bcmFieldQualifyMplsLabel5 = 1038,   /* MPLS Label 5 */
   3144     bcmFieldQualifyMplsLabel5Ttl = 1039, /* TTL field of the fifth MPLS Label */
   3145     bcmFieldQualifyMplsLabel5Bos = 1040, /* BoS field of the fifth MPLS Label */
   3146     bcmFieldQualifyMplsLabel5Exp = 1041, /* Exp field of the fifth MPLS Label */
   3147     bcmFieldQualifyMplsLabel5Id = 1042, /* ID field of the fifth MPLS Label */
   3148     bcmFieldQualifyMplsLabel6 = 1043,   /* MPLS Label 6 */
   3149     bcmFieldQualifyMplsLabel6Ttl = 1044, /* TTL field of the sixth MPLS Label */
   3150     bcmFieldQualifyMplsLabel6Bos = 1045, /* BoS field of the sixth MPLS Label */
   3151     bcmFieldQualifyMplsLabel6Exp = 1046, /* Exp field of the sixth MPLS Label */
   3152     bcmFieldQualifyMplsLabel6Id = 1047, /* ID field of the sixth MPLS Label */
   3153     bcmFieldQualifyMplsLabel7 = 1048,   /* MPLS Label 7 */
   3154     bcmFieldQualifyMplsLabel7Ttl = 1049, /* TTL field of the seventh MPLS Label */
   3155     bcmFieldQualifyMplsLabel7Bos = 1050, /* BoS field of the seventh MPLS Label */
   3156     bcmFieldQualifyMplsLabel7Exp = 1051, /* Exp field of the seventh MPLS Label */
   3157     bcmFieldQualifyMplsLabel7Id = 1052, /* ID field of the seventh MPLS Label */
   3158     bcmFieldQualifyL5PayloadByte1 = 1053, /* L5 byte1 of forwarding header. For
   3159                                            non-terminating packet it is outer
   3160                                            header, in case of termination it is
   3161                                            inner header. */
   3162     bcmFieldQualifyL5PayloadByte2 = 1054, /* L5 byte2 of forwarding header. For
   3163                                            non-terminating packet it is outer
   3164                                            header, in case of termination it is
   3165                                            inner header. */
   3166     bcmFieldQualifyL5PayloadByte3 = 1055, /* L5 byte3 of forwarding header. For
   3167                                            non-terminating packet it is outer
   3168                                            header, in case of termination it is
   3169                                            inner header. */
   3170     bcmFieldQualifyL5PayloadByte4 = 1056, /* L5 byte4 of forwarding header. For
   3171                                            non-terminating packet it is outer
   3172                                            header, in case of termination it is
   3173                                            inner header. */
   3174     bcmFieldQualifyL5PayloadByte5 = 1057, /* L5 byte5 of forwarding header. For
   3175                                            non-terminating packet it is outer
   3176                                            header, in case of termination it is
   3177                                            inner header. */
   3178     bcmFieldQualifyL5PayloadByte6 = 1058, /* L5 byte6 of forwarding header. For
   3179                                            non-terminating packet it is outer
   3180                                            header, in case of termination it is
   3181                                            inner header. */
   3182     bcmFieldQualifyL5PayloadByte7 = 1059, /* L5 byte7 of forwarding header. For
   3183                                            non-terminating packet it is outer
   3184                                            header, in case of termination it is
   3185                                            inner header. */
   3186     bcmFieldQualifyL5PayloadByte8 = 1060, /* L5 byte8 of forwarding header. For
   3187                                            non-terminating packet it is outer
   3188                                            header, in case of termination it is
   3189                                            inner header. */
   3190     bcmFieldQualifyOuterL5PayloadByte1 = 1061, /* L5 byte1 of packet outer header. For
   3191                                            non-terminating packet it is same as
   3192                                            forwarding header, in case of
   3193                                            termination it is different from
   3194                                            forwarding header info. */
   3195     bcmFieldQualifyOuterL5PayloadByte2 = 1062, /* L5 byte2 of packet outer header. For
   3196                                            non-terminating packet it is same as
   3197                                            forwarding header, in case of
   3198                                            termination it is different from
   3199                                            forwarding header info. */
   3200     bcmFieldQualifyOuterL5PayloadByte3 = 1063, /* L5 byte3 of packet outer header. For
   3201                                            non-terminating packet it is same as
   3202                                            forwarding header, in case of
   3203                                            termination it is different from
   3204                                            forwarding header info. */
   3205     bcmFieldQualifyOuterL5PayloadByte4 = 1064, /* L5 byte4 of packet outer header. For
   3206                                            non-terminating packet it is same as
   3207                                            forwarding header, in case of
   3208                                            termination it is different from
   3209                                            forwarding header info. */
   3210     bcmFieldQualifyOuterL5PayloadByte5 = 1065, /* L5 byte5 of packet outer header. For
   3211                                            non-terminating packet it is same as
   3212                                            forwarding header, in case of
   3213                                            termination it is different from
   3214                                            forwarding header info. */
   3215     bcmFieldQualifyOuterL5PayloadByte6 = 1066, /* L5 byte6 of packet outer header. For
   3216                                            non-terminating packet it is same as
   3217                                            forwarding header, in case of
   3218                                            termination it is different from
   3219                                            forwarding header info. */
   3220     bcmFieldQualifyOuterL5PayloadByte7 = 1067, /* L5 byte7 of packet outer header. For
   3221                                            non-terminating packet it is same as
   3222                                            forwarding header, in case of
   3223                                            termination it is different from
   3224                                            forwarding header info. */
   3225     bcmFieldQualifyOuterL5PayloadByte8 = 1068, /* L5 byte8 of packet outer header. For
   3226                                            non-terminating packet it is same as
   3227                                            forwarding header, in case of
   3228                                            termination it is different from
   3229                                            forwarding header info. */
   3230     bcmFieldQualifyArpSrcMac = 1069,    /* Source mac in Arp/Rarp packet. */
   3231     bcmFieldQualifyArpDstMac = 1070,    /* Destination mac in Arp/Rarp packet. */
   3232     bcmFieldQualifyL2EgressInterface = 1071, /* Layer2 egress interface (L2_OIF). */
   3233     bcmFieldQualifyStg = 1072,          /* Spanning tree profile table index
   3234                                            value. */
   3235     bcmFieldQualifyCosQueueNum = 1073,  /* cosq queue number. */
   3236     bcmFieldQualifyCopyToCpu = 1074,    /* Packet marked for copy to CPU. */
   3237     bcmFieldQualifyCopyToCpuTruncate = 1075, /* Truncate copy to CPU marked packet. */
   3238     bcmFieldQualifyMcastPkt = 1076,     /* Packet is a multicast packet. */
   3239     bcmFieldQualifyUntagPkt = 1077,     /* Packet is untagged. */
   3240     bcmFieldQualifyDoNotModify = 1078,  /* Forwarding header marked as do not
   3241                                            modify. */
   3242     bcmFieldQualifyTxPortType = 1079,   /* Transmit port type. */
   3243     bcmFieldQualifyRxPortType = 1080,   /* Receive port type. */
   3244     bcmFieldQualifyMirrorPktType = 1081, /* Mirror packet type. */
   3245     bcmFieldQualifyPtpMsgType = 1082,   /* PTP message type. */
   3246     bcmFieldQualifyPtpVersion = 1083,   /* PTP version. */
   3247     bcmFieldQualifyPtpPktCtrl = 1084,   /* PTP packet control. */
   3248     bcmFieldQualifyVlanMembershipCheck = 1085, /* Vlan membership check. */
   3249     bcmFieldQualifyInnerVlanTagPreserve = 1086, /* Packet marked for inner vlan tag
   3250                                            preserve. */
   3251     bcmFieldQualifyOuterVlanTagPreserve = 1087, /* Packet marked for outer vlan tag
   3252                                            preserve. */
   3253     bcmFieldQualifyForwardingEligible = 1088, /* Packet forwarding eligibility. */
   3254     bcmFieldQualifyInterfaceClassMpls = 1089, /* Qualifies on Class identifier derived
   3255                                            from forwarding MPLS label lookup. */
   3256     bcmFieldQualifyL3Check = 1090,      /* Packet L3 check. */
   3257     bcmFieldQualifyL2InterfaceMatch = 1091, /* Packet L2 interface match. */
   3258     bcmFieldQualifyProtocolPktOpaqueCtrlId = 1092, /* Opaque control id from protocol
   3259                                            packet forward table. */
   3260     bcmFieldQualifyLookupClassField = 1093, /* Class Id assigned for packet by
   3261                                            Lookup Stage. */
   3262     bcmFieldQualifyExactMatchOpaqueObject0 = 1094, /* Matches on opaque object0 set by
   3263                                            Exact Match/Flowtracker stage. */
   3264     bcmFieldQualifyIcmpType = 1095,     /* Matches on ICMP type value. */
   3265     bcmFieldQualifyOuterVlanRangeMatch = 1096, /* Outer vlan matched with one of
   3266                                            configured min/max values in range
   3267                                            map. */
   3268     bcmFieldQualifyInnerVlanRangeMatch = 1097, /* Inner vlan matched with one of
   3269                                            configured min/max values in range
   3270                                            map. */
   3271     bcmFieldQualifyTunnelHeaderDstMac = 1098, /* Destination MAC address in tunnel
   3272                                            initiation header */
   3273     bcmFieldQualifyTunnelHeaderSrcMac = 1099, /* Source MAC address in tunnel
   3274                                            initiation header */
   3275     bcmFieldQualifyTunnelHeaderSip = 1100, /* IPv4 source address in tunnel
   3276                                            initiation header */
   3277     bcmFieldQualifyTunnelHeaderDip = 1101, /* IPv4 destination address in tunnel
   3278                                            initiation header */
   3279     bcmFieldQualifyTunnelHeaderSip6 = 1102, /* IPv6 source address in tunnel
   3280                                            initiation header */
   3281     bcmFieldQualifyTunnelHeaderDip6 = 1103, /* IPv6 destination address in tunnel
   3282                                            initiation header */
   3283     bcmFieldQualifyTunnelHeaderIpProtocol = 1104, /* IP Protocol value in tunnel
   3284                                            initiation header */
   3285     bcmFieldQualifyMHPriority = 1105,   /* Module Header Priority */
   3286     bcmFieldQualifyEgressPortCtrlType = 1106, /* Egress port control type */
   3287     bcmFieldQualifySubportGroupIds = 1107, /* Subport group IDs */
   3288     bcmFieldQualifyStageAggregateMmuFlowtracker = 1108, /* Qualifies on Stage Aggregate MMU
   3289                                            Flowtracker */
   3290     bcmFieldQualifyStageAggregateEgressFlowtracker = 1109, /* Qualifies on Stage Aggregate Egress
   3291                                            Flowtracker */
   3292     bcmFieldQualifyFlowtrackerAggregateClass = 1110, /* Qualifies on Aggregate Flowtracker
   3293                                            Class */
   3294     bcmFieldQualifyFlowtrackerClassIdSource1 = 1111, /* Qualifies on Flowtracker Class from
   3295                                            Source 1 */
   3296     bcmFieldQualifyFlowtrackerClassIdSource2 = 1112, /* Qualifies on Flowtracker Class from
   3297                                            Source 2 */
   3298     bcmFieldQualifyApplSignatureId = 1113, /* Qualifies on Application signature */
   3299     bcmFieldQualifyInnerApplSignatureId = 1114, /* Qualifies on Application signature */
   3300     bcmFieldQualifyCosQueueId = 1115,   /* Qualifies on Cos Queue */
   3301     bcmFieldQualifyCongestionExperienced = 1116, /* Qualifies on Congestion experienced
   3302                                            status */
   3303     bcmFieldQualifyCongestionMarked = 1117, /* Qualifies on Congestion Marked status */
   3304     bcmFieldQualifyIsUcastCosQueue = 1118, /* Qualifies on Status if packet is in
   3305                                            unicast Cos queue */
   3306     bcmFieldQualifyEgressPortQueue = 1119, /* Qualifies on Egress Port Cos queue
   3307                                            Value */
   3308     bcmFieldQualifyLearnExtensionPresent = 1120, /* Whether or not we have PPH learn
   3309                                            extension */
   3310     bcmFieldQualifyL3EgressIntf = 1121, /* L3 Egress Interface */
   3311     bcmFieldQualifyForwardCode = 1122,  /* Matches on Forwarding code */
   3312     bcmFieldQualifyPktFwdType = 1123,   /* Matches on Packet Forwarding type */
   3313     bcmFieldQualifyStatOamLMRaw = 1124, /* Qualify on OAM LM counter raw value. */
   3314     bcmFieldQualifyRangeFirstHit0 = 1125, /* Qualifies on L4 OPS Extended Encoder
   3315                                            0 first hit */
   3316     bcmFieldQualifyRangeFirstHit1 = 1126, /* Qualifies on L4 OPS Extended Encoder
   3317                                            1 first hit */
   3318     bcmFieldQualifyRangeFirstHit2 = 1127, /* Qualifies on L4 OPS Extended Encoder
   3319                                            2 first hit */
   3320     bcmFieldQualifyRangeFirstHit3 = 1128, /* Qualifies on L4 OPS Extended Encoder
   3321                                            3 first hit */
   3322     bcmFieldQualifyIfaCurrentLengthEqualToZero = 1129, /* If set, matches if IFA metadata
   3323                                            header current length equals to 0. */
   3324     bcmFieldQualifyIfaHopLimitEqualToZero = 1130, /* If set, matches if IFA metadata
   3325                                            header hop limit equals to 0. */
   3326     bcmFieldQualifyIfaVersion2 = 1131,  /* If set, matches if IFA version is 2. */
   3327     bcmFieldQualifyIfaGlobalNameSpace = 1132, /* Qualifies on IFA Global Name Space */
   3328     bcmFieldQualifyIfaLocalNameSpace = 1133, /* Qualifies on IFA Local Name Space. */
   3329     bcmFieldQualifyIfaCurrentLength = 1134, /* Qualifies on IFA metadata header
   3330                                            current length. */
   3331     bcmFieldQualifyIfaRequestVector = 1135, /* Qualifies on IFA metadata header
   3332                                            request vector. */
   3333     bcmFieldQualifyDstType = 1136,      /* Qualifies on packet destination type
   3334                                            in pipeline. */
   3335     bcmFieldQualifyLoopbackHdrDstType = 1137, /* Qualifies on destination type in
   3336                                            loopback pkt header. */
   3337     bcmFieldQualifyOverlayNetworkTagType = 1138, /* Qualifies on Overlay Network tag
   3338                                            type. */
   3339     bcmFieldQualifyOverlayIpOptionHdrType = 1139, /* Qualifies on overlay IP optional
   3340                                            header type. */
   3341     bcmFieldQualifyIpOptionHdrType = 1140, /* Qualifies on IP optional header type. */
   3342     bcmFieldQualifyFirstDropReason = 1141, /* Qualifies on first drop reason. */
   3343     bcmFieldQualifyDropReason = 1142,   /* Qualifies on drop reason. */
   3344     bcmFieldQualifyCopyToCpuReasonLow = 1143, /* Qualifies on Copy to cpu reasons 0 to
   3345                                            31. */
   3346     bcmFieldQualifyRtag7CHashLower = 1144, /* Qualifies on Lower half of RTAG7 hash
   3347                                            C result. */
   3348     bcmFieldQualifyRtag7CHashUpper = 1145, /* Qualifies on Upper half of RTAG7 hash
   3349                                            C result. */
   3350     bcmFieldQualifyAppTypeRaw = 1146,   /* Qualifies on packet Application type
   3351                                            used by the ACL lookup. Can be either
   3352                                            predefined or user defined. Input
   3353                                            expects raw value. */
   3354     bcmFieldQualifyAppTypePredefinedRaw = 1147, /* Qualifies on the predefined AppType
   3355                                            used by the forwarding lookup. Input
   3356                                            expects raw value. */
   3357     bcmFieldQualifyForwardingTypeRaw = 1148, /* Qualifies on packet forwarding type.
   3358                                            Input expects raw value. */
   3359     bcmFieldQualifyContextIdRaw = 1149, /* Qualifies on the Forwarding Context
   3360                                            value. Input expects raw value.
   3361                                            Relevant for egress stage only. */
   3362     bcmFieldQualifyOverlayEgressClass = 1150, /* Qualifies on Overlay Egress ClassId. */
   3363     bcmFieldQualifyEgressL3TunnelGport = 1151, /* Qualifies on Egress L3 Tunnel Gport. */
   3364     bcmFieldQualifyEgressMcastPktReason = 1152, /* Qualifies on Egress Mcast Pkt Reason. */
   3365     bcmFieldQualifyEgressPktQueueNotification = 1153, /* Qualifies on Egress Pkt Queue
   3366                                            Notification. */
   3367     bcmFieldQualifyEgressDOPTrigger = 1154, /* Qualifies on Egress DOP Trigger */
   3368     bcmFieldQualifyEgressTunnelIpHeaderFlowLabel = 1155, /* Qualifies on Egress Tunnel IP
   3369                                            HeaderFlowLabel. */
   3370     bcmFieldQualifyEgressTunnelIpHeaderEcn = 1156, /* Qualifies on Egress Tunnel IP Header
   3371                                            Ecn. */
   3372     bcmFieldQualifyEgressTunnelIpHeaderDscp = 1157, /* Qualifies on Egress Tunnel IP Header
   3373                                            Dscp. */
   3374     bcmFieldQualifyIpExtHdr2Protocol = 1158, /* Qualifies on next header field in Ip
   3375                                            Ext Hdr2 */
   3376     bcmFieldQualifyL2EgrIntfEfpCtrlId = 1159, /* Qualifies on L2 OIF EFP CTRL ID */
   3377     bcmFieldQualifyIfaFlags = 1160,     /* Qualifies on IFA Flags */
   3378     bcmFieldQualifyIfaMaxLength = 1161, /* Qualifies on IFA Max length */
   3379     bcmFieldQualifyIfaActionVector = 1162, /* Qualifies on IFA Action vector */
   3380     bcmFieldQualifyStateTableDataWrite = 1163, /* Qualifies on value written to state
   3381                                            table. */
   3382     bcmFieldQualifyCopyToCpuReasonHigh = 1164, /* Qualifies on Copy to cpu reasons 32
   3383                                            to 47. */
   3384     bcmFieldQualifyInnerTcpControl = 1165, /* Qualifies on TCP control field in
   3385                                            inner header of the incoming packet. */
   3386     bcmFieldQualifyTunnelTerminationProcessingProfile = 1166, /*  Qualify tunnel termination
   3387                                            processing profile. */
   3388     bcmFieldQualifyIntFlags = 1167,     /*  Qualifies on INT flags field in
   3389                                            INT-DP/IOAM/IFA header. */
   3390     bcmFieldQualifyIntHdrType = 1168,   /*  Qualifies on INT packet type, can be
   3391                                            None/INT-DP/IFA/IOAM. */
   3392     bcmFieldQualifyIntUdpChecksumEqualsZero = 1169, /*  Qualifies on UDP header checksum
   3393                                            equals to zero. */
   3394     bcmFieldQualifyIntMetadataHdrType = 1170, /*  Qualifies on INT metadata header
   3395                                            type. */
   3396     bcmFieldQualifyIntHdrPresent = 1171, /*  Qualifies on location of INT header
   3397                                            in the packet */
   3398     bcmFieldQualifyCompressionSrcHit = 1172, /*  Qualifies on ALPM source compression
   3399                                            table hit. */
   3400     bcmFieldQualifyCompressionDstHit = 1173, /*  Qualifies on ALPM destination
   3401                                            compression table hit.. */
   3402     bcmFieldQualifyIpTunnelTypeRaw = 1174, /* Raw value for
   3403                                            FieldQualifyIpTunnelType. */
   3404     bcmFieldQualifySampledPkt = 1175,   /*  Qualify sFlow sampled packets. */
   3405     bcmFieldQualifySrcIp6SrhValid = 1176, /*  Qualify packet with IPv6 segment
   3406                                            routing header. */
   3407     bcmFieldQualifyFtmhAsePresent = 1177, /* Qualify packet on FTMH ASE present
   3408                                            field. */
   3409     bcmFieldQualifyFtmhAseType = 1178,  /* Qualify packet on FTMH ASE type
   3410                                            value. */
   3411     bcmFieldQualifyHiGig3Pkt = 1179,    /* Qualify on incoming packet from
   3412                                            HiGig3 Device Port. */
   3413     bcmFieldQualifyLoopbackLagFailoverPkt = 1180, /* Qualify on Loopback Lag failover
   3414                                            packet. */
   3415     bcmFieldQualifyPktMiscCtrl = 1181,  /* Qualify on Packet Misc controls
   3416                                            defined under
   3417                                            bcm_field_pkt_misc_ctrl_t. */
   3418     bcmFieldQualifyForwardingOuterVlanPri = 1182, /* Qualify on forwarding outer vlan
   3419                                            priority. */
   3420     bcmFieldQualifyForwardingOuterTpid = 1183, /* Qualify on forwarding outer TPID. */
   3421     bcmFieldQualifyIncomingVlanFormat = 1184, /* Qualify on incoming VLAN format. */
   3422     bcmFieldQualifyBfdMultiplierLen = 1185, /* Qualify on BFD Multiplier Length. */
   3423     bcmFieldQualifyBfdVerFlags = 1186,  /* Qualify on BFD Version and Flags. */
   3424     bcmFieldQualifyGpeFlags = 1187,     /* Qualify on GPE Flags. */
   3425     bcmFieldQualifyGpeNetworkId = 1188, /* Qualify on GPE Network Id. */
   3426     bcmFieldQualifyGpeProtocol = 1189,  /* Qualify on GPE Protocol. */
   3427     bcmFieldQualifyGpeReserved0 = 1190, /* Qualify on GPE Reserved 0. */
   3428     bcmFieldQualifyGpeReserved1 = 1191, /* Qualify on GPE Reserved 1. */
   3429     bcmFieldQualifyIfaAttrOpaqData = 1192, /* Qualify on IFA Attribute Opaqaue
   3430                                            Data. */
   3431     bcmFieldQualifyIgmpMaxRespTime = 1193, /* Qualify on IGMP Max response time. */
   3432     bcmFieldQualifyMplsTopHeader = 1194, /* Qualify on MPLS Top Header. */
   3433     bcmFieldQualifyMplsVcLabelHeader = 1195, /* Qualify on MPLS VC Label Header. */
   3434     bcmFieldQualifyTcpAckNum = 1196,    /* Qualify on TCP Acknowledgement
   3435                                            Number. */
   3436     bcmFieldQualifyTcpSequenceNum = 1197, /* Qualify on TCP Sequence Number. */
   3437     bcmFieldQualifyUdpLength = 1198,    /* Qualify on UDP Length. */
   3438     bcmFieldQualifyPtpReserved1 = 1199, /* Qualify on PTP Reserved1. */
   3439     bcmFieldQualifyPtpTransportSpec = 1200, /* Qualify on PTP Transport Spec. */
   3440     bcmFieldQualifyLoopbackIfaSwitchCopyDrop = 1201, /* Qualify on Loopback header drop
   3441                                            indicator for IFA switch probe copy */
   3442     bcmFieldQualifyVipValid = 1202,     /* Checks if SLLB VIP_ID is valid. */
   3443     bcmFieldQualifyVipId = 1203,        /* Qualifies on SLLB VIP_ID. */
   3444     bcmFieldQualifyVIPMemberReference = 1204, /* Qualifies on SLLB ECMP
   3445                                            MEMBER_REFERENCE. */
   3446     bcmFieldQualifyPccHit = 1205,       /* Qualifies on SLLB PCC table hit
   3447                                            status. */
   3448     bcmFieldQualifyPdelayReq = 1206,    /* Qualify on the PDELAY_REQ packet. */
   3449     bcmFieldQualifyPphType = 1207,      /* Qualifies on PPH type. */
   3450     bcmFieldQualifyRxTrapProfile = 1208, /* Qualifies on Trap profile. The Trap
   3451                                            profile is set by bcm_rx_trap_set
   3452                                            using
   3453                                            BCM_RX_TRAP_FLAGS2_UPDATE_ACL_PROFILE */
   3454     bcmFieldQualifyDstMultipathLevel1 = 1209, /* Qualify on Level 1 ECMP groups */
   3455     bcmFieldQualifyDstMultipathLevel2 = 1210, /* Qualify on Level 2 ECMP groups */
   3456     bcmFieldQualifySvtag = 1211,        /* Qualifies on svtag */
   3457     bcmFieldQualifyRecircleHdrFirstDropReason = 1212, /* Qualifies on redirect header first
   3458                                            drop reason. */
   3459     bcmFieldQualifyRecircleHdrDropReason = 1213, /* Qualifies on redirect header highest
   3460                                            drop reason. */
   3461     bcmFieldQualifyRecircleHdrCode = 1214, /* Qualifies on redirect header
   3462                                            recirculation code. */
   3463     bcmFieldQualifyMacSecOpaque = 1215, /* Qualifies on opaque object available
   3464                                            to egress assigned by IP */
   3465     bcmFieldQualifyMirrorOnDrop = 1216, /* Qualifies on mirrored copy of MMU
   3466                                            dropped packet */
   3467     bcmFieldQualifyMirrorOnDropReason = 1217, /* Qualifies on drop reason of mirrored
   3468                                            copy of MMU dropped packet */
   3469     bcmFieldQualifyIntCtrl = 1218,      /* Inband telemetry control */
   3470     bcmFieldQualifyIfaHopCount = 1219,  /* Qualifies on IFA Hop Count */
   3471     bcmFieldQualifyIfaHopLimit = 1220,  /* Qualifies on IFA Hop Limit */
   3472     bcmFieldQualifyL2SrcMiscClassId = 1221, /* Qualify on Level 2 source
   3473                                            miscellaneous class ID */
   3474     bcmFieldQualifyL2DstMiscClassId = 1222, /* Qualify on Level 2 destination
   3475                                            miscellaneous class ID */
   3476     bcmFieldQualifyL3SrcMiscClassId = 1223, /* Qualify on Level 3 source
   3477                                            miscellaneous class ID */
   3478     bcmFieldQualifyL3DstMiscClassId = 1224, /* Qualify on Level 3 destination
   3479                                            miscellaneous class ID */
   3480     bcmFieldQualifyRawResidenceTime = 1225, /* Qualify on raw residence time */
   3481     bcmFieldQualifyIpFragInfo = 1226,   /* Qualify on IPv4/v6 fragmentation info
   3482                                            including flags and offset */
   3483     bcmFieldQualifyInDscpExp = 1227,    /* Qualify on In-DSCP-EXP */
   3484     bcmFieldQualifyAcInLifWideDataExtended = 1228, /* Qualify on the Ac in-lif
   3485                                            wide(generic) extended data. */
   3486     bcmFieldQualifyIfaNextHdr = 1229,   /*  Qualify on IFA next header */
   3487     bcmFieldQualifyIfaVersion = 1230,   /*  Qualify on IFA version */
   3488     bcmFieldQualifyIngressL2InterfaceOpaqueCtrlId1 = 1231, /* Opaque control id 1 from L2_IIF
   3489                                            table. */
   3490     bcmFieldQualifyIngressL2InterfaceFlexDigestCtrlIdA = 1232, /* Flex digest control id A from L2_IIF
   3491                                            table. */
   3492     bcmFieldQualifyIngressL2InterfaceFlexDigestCtrlIdB = 1233, /* Flex digest control id B from L2_IIF
   3493                                            table. */
   3494     bcmFieldQualifyAcInLifWideDataExtendedRaw = 1234, /* Qualify on the Ac in-lif
   3495                                            wide(generic) extended data. Input
   3496                                            expects raw value. */
   3497     bcmFieldQualifyForwardingPacketRes = 1235, /* Qualifies on Forwarding packet
   3498                                            resolution */
   3499     bcmFieldQualifySrcCompressionClassId = 1236, /* L3_SRC Class ID from ALPM */
   3500     bcmFieldQualifyDstCompressionClassId = 1237, /* L3_DST Class ID from ALPM */
   3501     bcmFieldQualifyIPv6FragmentedNonFirst = 1238, /* Qualify on IPv6 packets where the IP
   3502                                            Header is both fragmented and also
   3503                                            not the first fragment. */
   3504     bcmFieldQualifyRecircleHdrOpaqueCtrlIdC = 1239, /* Qualify on EP NIH header opaque
   3505                                            control id C */
   3506     bcmFieldQualifyIp6SecondAdditionalHeaderExist = 1240, /* Qualify on IPv6 packets second
   3507                                            additional header exists. */
   3508     bcmFieldQualifyMplsForwardingControlWord = 1241, /*  MPLS Forwarding control word. */
   3509     bcmFieldQualifyMplsCtrlPktType = 1242, /*  MPLS control word packet type. */
   3510     bcmFieldQualifyCount = 1243         /* Always Last. Not a usable value. */
   3511 } bcm_field_qualify_t;
   3512 
   3513 #define BCM_FIELD_QUALIFY_STRINGS \
   3514 { \
   3515     "SrcIp6", \
   3516     "DstIp6", \
   3517     "SrcIp6High", \
   3518     "DstIp6High", \
   3519     "SrcIp6Low", \
   3520     "DstIp6Low", \
   3521     "SrcMac", \
   3522     "DstMac", \
   3523     "Snap", \
   3524     "SrcIp", \
   3525     "DstIp", \
   3526     "Llc", \
   3527     "InPort", \
   3528     "InPorts", \
   3529     "OutPorts", \
   3530     "Drop", \
   3531     "Ip6FlowLabel", \
   3532     "OuterVlan", \
   3533     "OuterVlanId", \
   3534     "OuterVlanPri", \
   3535     "OuterVlanCfi", \
   3536     "InnerVlan", \
   3537     "InnerVlanId", \
   3538     "InnerVlanPri", \
   3539     "InnerVlanCfi", \
   3540     "LookupStatus", \
   3541     "RangeCheck", \
   3542     "L4SrcPort", \
   3543     "L4DstPort", \
   3544     "EtherType", \
   3545     "IpProtocol", \
   3546     "DSCP", \
   3547     "Ttl", \
   3548     "SrcModid", \
   3549     "SrcPortTgid", \
   3550     "SrcPort", \
   3551     "SrcTrunk", \
   3552     "SrcTrunkMemberGport", \
   3553     "DstModid", \
   3554     "DstPortTgid", \
   3555     "DstPort", \
   3556     "DstTrunk", \
   3557     "TcpControl", \
   3558     "PacketRes", \
   3559     "PacketFormat", \
   3560     "SrcClassL2", \
   3561     "SrcClassL3", \
   3562     "SrcClassField", \
   3563     "DstClassL2", \
   3564     "DstClassL3", \
   3565     "DstClassField", \
   3566     "IpInfo", \
   3567     "IpProtocolCommon", \
   3568     "MHOpcode", \
   3569     "IpFlags", \
   3570     "InnerTpid", \
   3571     "OuterTpid", \
   3572     "InnerIpType", \
   3573     "TunnelType", \
   3574     "LoopbackType", \
   3575     "Loopback", \
   3576     "IpType", \
   3577     "ForwardingType", \
   3578     "Decap", \
   3579     "HiGig", \
   3580     "HiGigProxy", \
   3581     "DstHiGig", \
   3582     "Stage", \
   3583     "StageIngress", \
   3584     "StageIngressSecurity", \
   3585     "StageIngressQoS", \
   3586     "StageLookup", \
   3587     "StageEgress", \
   3588     "StageEgressSecurity", \
   3589     "StageExternal", \
   3590     "Deprecated75", \
   3591     "Deprecated76", \
   3592     "TcpSequenceZero", \
   3593     "TcpHeaderSize", \
   3594     "InterfaceClassL2", \
   3595     "InterfaceClassL3", \
   3596     "InterfaceClassPort", \
   3597     "L3Routable", \
   3598     "IpFrag", \
   3599     "Vrf", \
   3600     "L3Ingress", \
   3601     "OutPort", \
   3602     "Ip4", \
   3603     "Ip6", \
   3604     "L2Format", \
   3605     "VlanFormat", \
   3606     "TranslatedVlanFormat", \
   3607     "ExtensionHeaderType", \
   3608     "ExtensionHeaderSubCode", \
   3609     "ExtensionHeader2Type", \
   3610     "L4Ports", \
   3611     "MirrorCopy", \
   3612     "TunnelTerminated", \
   3613     "MplsTerminated", \
   3614     "InnerSrcIp", \
   3615     "InnerDstIp", \
   3616     "InnerSrcIp6", \
   3617     "InnerDstIp6", \
   3618     "InnerSrcIp6High", \
   3619     "InnerDstIp6High", \
   3620     "InnerTtl", \
   3621     "InnerTos", \
   3622     "InnerIpProtocol", \
   3623     "InnerIpFrag", \
   3624     "VlanTranslationHit", \
   3625     "ForwardingVlanValid", \
   3626     "IngressStpState", \
   3627     "L2SrcHit", \
   3628     "L2SrcStatic", \
   3629     "L2DestHit", \
   3630     "L2StationMove", \
   3631     "L2CacheHit", \
   3632     "L3SrcHostHit", \
   3633     "L3DestHostHit", \
   3634     "L3DestRouteHit", \
   3635     "IpmcStarGroupHit", \
   3636     "DosAttack", \
   3637     "Deprecated122", \
   3638     "ClassId", \
   3639     "Deprecated124", \
   3640     "IcmpTypeCode", \
   3641     "Deprecated126", \
   3642     "InnerIpProtocolCommon", \
   3643     "InnerL4SrcPort", \
   3644     "InnerL4DstPort", \
   3645     "InnerIp6FlowLabel", \
   3646     "DstL3Egress", \
   3647     "DstMulticastGroup", \
   3648     "SrcMplsGport", \
   3649     "DstMplsGport", \
   3650     "SrcMimGport", \
   3651     "DstMimGport", \
   3652     "SrcWlanGport", \
   3653     "DstWlanGport", \
   3654     "SrcModPortGport", \
   3655     "SrcModuleGport", \
   3656     "Color", \
   3657     "IntPriority", \
   3658     "ForwardingVlanId", \
   3659     "Vpn", \
   3660     "FlowId", \
   3661     "InVPort", \
   3662     "OutVPort", \
   3663     "FibreChanOuter", \
   3664     "FibreChanInner", \
   3665     "VnTag", \
   3666     "CnTag", \
   3667     "FabricQueueTag", \
   3668     "MyStationHit", \
   3669     "DstMultipath", \
   3670     "L2PayloadFirstEightBytes", \
   3671     "SrcVirtualPortValid", \
   3672     "DstL3EgressNextHops", \
   3673     "RecoverableDrop", \
   3674     "RepCopy", \
   3675     "IpTunnelHit", \
   3676     "MplsLabel1Hit", \
   3677     "TrillEgressRbridgeHit", \
   3678     "L2GreSrcIpHit", \
   3679     "MimSrcGportHit", \
   3680     "MplsLabel2Hit", \
   3681     "TrillIngressRbridgeHit", \
   3682     "L2GreVfiHit", \
   3683     "MimVfiHit", \
   3684     "GenericAssociatedChannelLabelValid", \
   3685     "RouterAlertLabelValid", \
   3686     "DstIpLocal", \
   3687     "NormalizeIpAddrs", \
   3688     "NormalizeMacAddrs", \
   3689     "IpAddrsNormalized", \
   3690     "MacAddrsNormalized", \
   3691     "MplsForwardingLabel", \
   3692     "MplsForwardingLabelTtl", \
   3693     "MplsForwardingLabelBos", \
   3694     "MplsForwardingLabelExp", \
   3695     "MplsForwardingLabelId", \
   3696     "MplsControlWord", \
   3697     "Rtag7AHashUpper", \
   3698     "Rtag7AHashLower", \
   3699     "Rtag7BHashUpper", \
   3700     "Rtag7BHashLower", \
   3701     "MplsForwardingLabelAction", \
   3702     "MplsControlWordValid", \
   3703     "EgressClass", \
   3704     "EgressClassL3Interface", \
   3705     "EgressClassTrill", \
   3706     "EgressClassWlan", \
   3707     "EgressClassL2Gre", \
   3708     "LlidValue", \
   3709     "CpuQueue", \
   3710     "Mpls", \
   3711     "SrcGport", \
   3712     "HeaderFormat", \
   3713     "HeaderFormatSet", \
   3714     "L2Learn", \
   3715     "PortOrientation", \
   3716     "EcnValue", \
   3717     "RxTrapCode", \
   3718     "Ptch", \
   3719     "MplsBos", \
   3720     "RxTrapData", \
   3721     "PolicerIntPrio", \
   3722     "PacketTerminatedBytes", \
   3723     "BypassFilter", \
   3724     "ReplicantAny", \
   3725     "ReplicantFirst", \
   3726     "TrillEgressRbridge", \
   3727     "ISid", \
   3728     "InterfaceClassProcessingPort", \
   3729     "DstRpfGport", \
   3730     "TrunkHashResult", \
   3731     "Dhcp", \
   3732     "SnoopCopy", \
   3733     "ForwardCopy", \
   3734     "InterfaceClassVPort", \
   3735     "VPortRangeCheck", \
   3736     "PacketLengthRangeCheck", \
   3737     "StageIngressVlanTranslation", \
   3738     "StageIngressTunnelTerminated", \
   3739     "StageIngressMplsTerminated", \
   3740     "StageIngressIpTunnel", \
   3741     "StageIngressL2Src", \
   3742     "StageIngressL2Dest", \
   3743     "StageIngressL3SrcRoute", \
   3744     "StageIngressL3DestRoute", \
   3745     "StageIngressIpmc", \
   3746     "TunnelTerminatedHit", \
   3747     "MplsTerminatedHit", \
   3748     "L3SrcRouteHit", \
   3749     "IpmcHit", \
   3750     "VlanTranslationValue", \
   3751     "TunnelTerminatedValue", \
   3752     "MplsTerminatedValue", \
   3753     "IpTunnelValue", \
   3754     "L2SrcValue", \
   3755     "L2DestValue", \
   3756     "L3SrcRouteValue", \
   3757     "L3DestRouteValue", \
   3758     "IpmcValue", \
   3759     "LearnSrcMac", \
   3760     "LearnVlan", \
   3761     "LearnSrcPort", \
   3762     "PacketSize", \
   3763     "InnerSrcMac", \
   3764     "InnerDstMac", \
   3765     "InnerEtherType", \
   3766     "MplsLabel1", \
   3767     "MplsLabel1Ttl", \
   3768     "MplsLabel1Bos", \
   3769     "MplsLabel1Exp", \
   3770     "MplsLabel1Id", \
   3771     "MplsLabel2", \
   3772     "MplsLabel2Ttl", \
   3773     "MplsLabel2Bos", \
   3774     "MplsLabel2Exp", \
   3775     "MplsLabel2Id", \
   3776     "MplsLabel3", \
   3777     "MplsLabel3Ttl", \
   3778     "MplsLabel3Bos", \
   3779     "MplsLabel3Exp", \
   3780     "MplsLabel3Id", \
   3781     "CascadedKeyValue", \
   3782     "MplsOuterLabelPop", \
   3783     "MplsStationHitTunnelUnterminated", \
   3784     "IngressClassField", \
   3785     "IngressInterfaceClassPort", \
   3786     "ExternalValue0", \
   3787     "ExternalValue1", \
   3788     "ExternalValue2", \
   3789     "ExternalValue3", \
   3790     "ExternalHit0", \
   3791     "ExternalHit1", \
   3792     "ExternalHit2", \
   3793     "ExternalHit3", \
   3794     "VpnUnknownDstMacDstPort", \
   3795     "VxlanNetworkId", \
   3796     "VxlanFlags", \
   3797     "NatNeeded", \
   3798     "NatDstRealmId", \
   3799     "NatSrcRealmId", \
   3800     "IcmpError", \
   3801     "TunnelId", \
   3802     "ArpSenderIp4", \
   3803     "ArpTargetIp4", \
   3804     "ArpOpcode", \
   3805     "TranslatedOuterVlan", \
   3806     "TranslatedOuterVlanId", \
   3807     "TranslatedOuterVlanPri", \
   3808     "TranslatedOuterVlanCfi", \
   3809     "TranslatedInnerVlan", \
   3810     "TranslatedInnerVlanId", \
   3811     "TranslatedInnerVlanPri", \
   3812     "TranslatedInnerVlanCfi", \
   3813     "ConstantZero", \
   3814     "ConstantOne", \
   3815     "FibreChanRCtl", \
   3816     "FibreChanFCtl", \
   3817     "FibreChanCSCtl", \
   3818     "FibreChanDFCtl", \
   3819     "FibreChanType", \
   3820     "FibreChanSrcId", \
   3821     "FibreChanDstId", \
   3822     "FibreChanZoneCheck", \
   3823     "FibreChanSrcFpmaCheck", \
   3824     "FibreChanSrcBindCheck", \
   3825     "FibreChanVFTVersion", \
   3826     "FibreChanVFTPri", \
   3827     "FibreChanVFTFabricId", \
   3828     "FibreChanVFTHopCount", \
   3829     "FibreChanVFTVsanId", \
   3830     "FibreChanVFTVsanPri", \
   3831     "FibreChanVFTValid", \
   3832     "FcoeSOF", \
   3833     "FcoeVersionIsZero", \
   3834     "ForwardingHeaderOffset", \
   3835     "L3SrcBind", \
   3836     "ECid", \
   3837     "IngressECid", \
   3838     "ETag", \
   3839     "IngressVPortBridgeDisable", \
   3840     "HashValue", \
   3841     "IsEqualValue", \
   3842     "StageHash", \
   3843     "UrpfMode", \
   3844     "AppType", \
   3845     "SubportPktTag", \
   3846     "SrcVxlanGport", \
   3847     "DstVxlanGport", \
   3848     "OamMdl", \
   3849     "IntCongestionNotification", \
   3850     "SrcNivGport", \
   3851     "DstNivGport", \
   3852     "DstGport", \
   3853     "MirrorEgressDisabled", \
   3854     "BypassSrcMacFilter", \
   3855     "RxTrapCodeForSnoop", \
   3856     "IpmcStarGroupValue", \
   3857     "NativeVSwitch", \
   3858     "NativeVSwitchValid", \
   3859     "TrillIVersion", \
   3860     "TrillIngressRbridge", \
   3861     "TrillMultiDestination", \
   3862     "TrillOpLength", \
   3863     "TrillHopCount", \
   3864     "TrillPayload", \
   3865     "MplsForwardingLabelPayload", \
   3866     "IncomingIpIfClass", \
   3867     "L2GreProtocolType", \
   3868     "L2GreVsid", \
   3869     "L2GreFlowId", \
   3870     "MimVlanPri", \
   3871     "MimVlanCfi", \
   3872     "Fhei", \
   3873     "FheiSize", \
   3874     "EthernetOamHeaderBits0_31", \
   3875     "EthernetOamHeaderBits32_63", \
   3876     "EthernetOamDstClassL2", \
   3877     "EthernetOamTxPktUPMEP", \
   3878     "EthernetOamInterfaceClassNiv", \
   3879     "EthernetOamInterfaceClassMim", \
   3880     "EthernetOamInterfaceClassVxlan", \
   3881     "EthernetOamInterfaceClassVlan", \
   3882     "EthernetOamInterfaceClassPort", \
   3883     "EthernetOamClassVlanTranslateKeyFirst", \
   3884     "EthernetOamClassVlanTranslateKeySecond", \
   3885     "EthernetOamInterfaceClassMpls", \
   3886     "EthernetOamClassVpn", \
   3887     "MplsOamHeaderBits0_31", \
   3888     "MplsOamHeaderBits32_63", \
   3889     "MplsOamGALLabelOnly", \
   3890     "MplsOamUpperLabelDataDrop", \
   3891     "MplsOamGALExposed", \
   3892     "MplsOamACH", \
   3893     "MplsOamControlPktType", \
   3894     "MplsOamClassMplsSwitchLabel", \
   3895     "OamHeaderBits0_31", \
   3896     "OamHeaderBits32_63", \
   3897     "OamEgressClassVxlt", \
   3898     "OamEgressClassPort", \
   3899     "Udf", \
   3900     "OuterVlanActionRange", \
   3901     "InnerVlanActionRange", \
   3902     "IngressInterfaceClassVPort", \
   3903     "SrcVlanGport", \
   3904     "DstVlanGport", \
   3905     "OamType", \
   3906     "SrcVlanGports", \
   3907     "DstVlanGports", \
   3908     "SrcVxlanGports", \
   3909     "DstVxlanGports", \
   3910     "SrcWlanGports", \
   3911     "DstWlanGports", \
   3912     "SrcMplsGports", \
   3913     "DstMplsGports", \
   3914     "SrcGports", \
   3915     "DstGports", \
   3916     "SrcMimGports", \
   3917     "DstMimGports", \
   3918     "SrcNivGports", \
   3919     "DstNivGports", \
   3920     "SrcModPortGports", \
   3921     "LearnInVPort", \
   3922     "StackingRoute", \
   3923     "RxTrapStrength", \
   3924     "VxlanHeaderBits8_31", \
   3925     "VxlanHeaderBits56_63", \
   3926     "OamInLifIdValid", \
   3927     "OamInLifId", \
   3928     "OamUpMep", \
   3929     "OamSubtype", \
   3930     "OamHeaderOffset", \
   3931     "OamStampOffset", \
   3932     "OamMepId", \
   3933     "OamMeterDisable", \
   3934     "OamTsSystemHeader", \
   3935     "DstMulticastGroups", \
   3936     "InterfaceInPorts", \
   3937     "DestVirtualPortValid", \
   3938     "InVPortWide", \
   3939     "StageClass", \
   3940     "StageClassExactMatch", \
   3941     "FcoeOxID", \
   3942     "FcoeRxID", \
   3943     "IpProtocolClass", \
   3944     "EtherTypeClass", \
   3945     "L4SrcPortClass", \
   3946     "L4DstPortClass", \
   3947     "SrcIpClass", \
   3948     "SrcIpClassMsbNibble", \
   3949     "SrcIpClassLower", \
   3950     "SrcIpClassUpper", \
   3951     "SrcIp6Class", \
   3952     "SrcIp6ClassMsbNibble", \
   3953     "SrcIp6ClassLower", \
   3954     "SrcIp6ClassUpper", \
   3955     "FcoeOxIDClass", \
   3956     "DstIpClass", \
   3957     "DstIpClassMsbNibble", \
   3958     "DstIpClassLower", \
   3959     "DstIpClassUpper", \
   3960     "DstIp6Class", \
   3961     "DstIp6ClassMsbNibble", \
   3962     "DstIp6ClassLower", \
   3963     "DstIp6ClassUpper", \
   3964     "FcoeRxIDClass", \
   3965     "FibreChanSrcIdClass", \
   3966     "FibreChanSrcIdClassMsbNibble", \
   3967     "FibreChanSrcIdClassLower", \
   3968     "FibreChanSrcIdClassUpper", \
   3969     "FibreChanDstIdClass", \
   3970     "FibreChanDstIdClassMsbNibble", \
   3971     "FibreChanDstIdClassLower", \
   3972     "FibreChanDstIdClassUpper", \
   3973     "TcpClassZero", \
   3974     "TosClassZero", \
   3975     "TtlClassZero", \
   3976     "TcpClassOne", \
   3977     "TosClassOne", \
   3978     "TtlClassOne", \
   3979     "OuterVlanPriCfi", \
   3980     "ForwardHdrSrcMac", \
   3981     "ForwardHdrDstMac", \
   3982     "ForwardHdrVlanId", \
   3983     "DstSysPortExt", \
   3984     "StageIngressExactMatch", \
   3985     "LearnExtension", \
   3986     "IpFragNonOrFirst", \
   3987     "PacketLength", \
   3988     "GroupClass", \
   3989     "UdfClass", \
   3990     "InterfaceLookupClassPort", \
   3991     "HiGigDstMulticast", \
   3992     "HiGigDstMulticastGroupId", \
   3993     "HiGigTrafficClass", \
   3994     "HiGigDstModuleGport", \
   3995     "HiGigDstPortGport", \
   3996     "HiGigDstModPortGport", \
   3997     "HiGigSrcModuleGport", \
   3998     "HiGigSrcPortGport", \
   3999     "HiGigSrcModPortGport", \
   4000     "HiGigLoadBalanceID", \
   4001     "HiGigColor", \
   4002     "HiGigIntCongestionNotification", \
   4003     "HiGigIngressTagged", \
   4004     "HiGigDstTrunk", \
   4005     "HiGigDstTrunkId", \
   4006     "HiGigIngressL3SwitchPkt", \
   4007     "HiGigLabel", \
   4008     "HiGigReplicationId", \
   4009     "HiGigVlan", \
   4010     "HiGigPortFilteringMode", \
   4011     "HiGigSrcTrunk", \
   4012     "HiGigIngressClassificationTag", \
   4013     "HiGigEgressMcast", \
   4014     "HiGigVni", \
   4015     "HiGigDstGport", \
   4016     "HiGigMulticastIndex", \
   4017     "HiGigVpReplicationId", \
   4018     "HiGigSrcGport", \
   4019     "HiGigProtectionSwitchingStatus", \
   4020     "HiGigMirrorToVp", \
   4021     "HiGigDstType", \
   4022     "HiGigSrcType", \
   4023     "HiGigOffloadEngineClassificationTag", \
   4024     "HiGigOffloadEnginePktPriNew", \
   4025     "HiGigOffloadEngineDscpNew", \
   4026     "LoopBackQueue", \
   4027     "LoopBackSrcGport", \
   4028     "PktIsVisible", \
   4029     "LoopBackCpuMasqueradePktProfile", \
   4030     "LoopBackColor", \
   4031     "LoopBackTrafficClass", \
   4032     "LoopBackPacketProcessingPort", \
   4033     "MixedSrcClassId", \
   4034     "ITag", \
   4035     "InterfaceIngressKeySelectClassPort", \
   4036     "BfdYourDiscriminator", \
   4037     "CpuVisibilityPacket", \
   4038     "DstL2MulticastGroup", \
   4039     "DstL3MulticastGroup", \
   4040     "ExactMatchHitStatus", \
   4041     "ExactMatchActionClassId", \
   4042     "ExactMatchGroupClassId", \
   4043     "L2PayLoad", \
   4044     "CustomHeaderPkt", \
   4045     "CustomHeaderData", \
   4046     "MimlPkt", \
   4047     "MimlSrcMac", \
   4048     "MimlDstMac", \
   4049     "MimlVlan", \
   4050     "MimlVlanId", \
   4051     "MimlVlanPri", \
   4052     "MimlVlanCfi", \
   4053     "MimlInnerTag", \
   4054     "CapwapHdrType", \
   4055     "CapwapHdrRid", \
   4056     "CapwapPayloadSOF", \
   4057     "CapwapPayloadDstMac", \
   4058     "CapwapPayloadSrcMac", \
   4059     "CapwapPayloadEtherType", \
   4060     "CapwapPayloadOuterVlan", \
   4061     "CapwapPayloadOuterVlanId", \
   4062     "CapwapPayloadOuterVlanPri", \
   4063     "CapwapPayloadOuterVlanCfi", \
   4064     "CapwapPayloadInnerVlan", \
   4065     "CapwapPayloadInnerVlanId", \
   4066     "CapwapPayloadInnerVlanPri", \
   4067     "CapwapPayloadInnerVlanCfi", \
   4068     "CapwapPayloadVlanFormat", \
   4069     "CapwapPayloadSip", \
   4070     "CapwapPayloadDip", \
   4071     "CapwapPayloadSip6", \
   4072     "CapwapPayloadDip6", \
   4073     "CapwapPayloadIpProtocol", \
   4074     "CapwapPayloadTos", \
   4075     "CapwapPayloadL4DstPort", \
   4076     "CapwapPayloadL4SrcPort", \
   4077     "CapwapPayloadL3HdrParseable", \
   4078     "CapwapPayloadL4HdrParseable", \
   4079     "VlanAction", \
   4080     "DownMepSatTerminated", \
   4081     "DstMultipathOverlay", \
   4082     "DstMultipathUnderlay", \
   4083     "StpState", \
   4084     "HiGigMirrorOrSwitchPkt", \
   4085     "HiGigPreserveFlags", \
   4086     "HiGigMplsPkt", \
   4087     "HiGigDoNotFlags", \
   4088     "HiGigVpPreserveFlags", \
   4089     "HiGigOffloadEngineVxltStatus", \
   4090     "HiGigForwardingType", \
   4091     "HiGigLabelType", \
   4092     "HiGigExtendedHeaderPresent", \
   4093     "HiGigVpLagFailoverPacket", \
   4094     "HiGigOffloadEnginePreserveDscp", \
   4095     "HiGigOffloadEnginePreserveDot1p", \
   4096     "HiGigOffloadEngineDeferredFlags", \
   4097     "HiGigOffloadEngineSrcType", \
   4098     "SystemPortBitmap", \
   4099     "SourceGportBitmap", \
   4100     "DevicePortBitmap", \
   4101     "TosLower4Bits", \
   4102     "OamEgressClass2Vxlt", \
   4103     "OamEgressVxltFirstHit", \
   4104     "OamEgressVxltSecondHit", \
   4105     "OamDownMEPLoopbackPacket", \
   4106     "OamEgressPortUnicastDstMacHit", \
   4107     "OamSat", \
   4108     "IngressDropEthernetOamControl", \
   4109     "IngressDropEthernetOamData", \
   4110     "IngressDropMplsOamControl", \
   4111     "IngressDropMplsOamData", \
   4112     "EgressClassVxlan", \
   4113     "OamEgressEtherType", \
   4114     "OamEgressMulticastMacHit", \
   4115     "TrunkMemberSourceModuleId", \
   4116     "OamEgressClassSrcMac", \
   4117     "MyStation2Hit", \
   4118     "ExternalValue4", \
   4119     "ExternalValue5", \
   4120     "ExternalHit4", \
   4121     "ExternalHit5", \
   4122     "GeneratedTtl", \
   4123     "IpMulticastCompatible", \
   4124     "EgressClassTunnel", \
   4125     "EgressClassL3InterfaceTunnel", \
   4126     "StaggeredValue0", \
   4127     "StaggeredValue1", \
   4128     "StaggeredValue2", \
   4129     "StaggeredValue3", \
   4130     "StaggeredDirectValue", \
   4131     "StaggeredPreselProfile0", \
   4132     "StaggeredPreselProfile1", \
   4133     "StaggeredPreselProfile2", \
   4134     "StaggeredPreselProfile3", \
   4135     "StaggeredPreselProfileDirect", \
   4136     "bcmFieldQaulifyPreselId", \
   4137     "EthernetData", \
   4138     "PreemptablePacket", \
   4139     "VxlanClassValid", \
   4140     "VxlanPacket", \
   4141     "VxlanVnidVlanTranslateHit", \
   4142     "VxlanPayloadVlanFormat", \
   4143     "TunnelPayloadDstMac", \
   4144     "TunnelPayloadSrcMac", \
   4145     "TunnelPayloadEtherType", \
   4146     "TunnelPayloadOuterVlan", \
   4147     "TunnelPayloadOuterVlanId", \
   4148     "TunnelPayloadOuterVlanPri", \
   4149     "TunnelPayloadOuterVlanCfi", \
   4150     "TunnelPayloadSip", \
   4151     "TunnelPayloadDip", \
   4152     "TunnelPayloadSip6", \
   4153     "TunnelPayloadDip6", \
   4154     "TunnelPayloadIpProtocol", \
   4155     "TunnelPayloadL4DstPort", \
   4156     "TunnelPayloadL4SrcPort", \
   4157     "RoceBthOpcode", \
   4158     "RoceBthPartitionKey", \
   4159     "RoceBthDstQueuePair", \
   4160     "RoceBthFlags", \
   4161     "RoceVer1Pkt", \
   4162     "RoceVer2Pkt", \
   4163     "SrcPortSRType", \
   4164     "DstPortSRType", \
   4165     "SrcPortSRRoleInterlink", \
   4166     "DstPortSRRoleInterlink", \
   4167     "SrcPortSRMode", \
   4168     "DstPortSRMode", \
   4169     "SrcPortSRNetId", \
   4170     "DstPortSRNetId", \
   4171     "SrcPortSRLanId", \
   4172     "DstPortSRLanId", \
   4173     "SRTagType", \
   4174     "SRLanId", \
   4175     "SRNetId", \
   4176     "VlanSREnable", \
   4177     "VlanSRLanId", \
   4178     "SRFlowId", \
   4179     "L2DestSRNodeType", \
   4180     "SRNetIdMatched", \
   4181     "SRSrcNodeIsSan", \
   4182     "SRSupervisionType", \
   4183     "SRError", \
   4184     "L2SrcMulticastHit", \
   4185     "L2DstMulticastHit", \
   4186     "SRDuplicate", \
   4187     "TsnFlowId", \
   4188     "ExternalValue6", \
   4189     "ExternalValue7", \
   4190     "ExternalHit6", \
   4191     "ExternalHit7", \
   4192     "MirrorDest", \
   4193     "PacketIsIEEE1588", \
   4194     "IEEE1588Encapsulation", \
   4195     "IEEE1588CompensateTimeStamp", \
   4196     "IEEE1588Command", \
   4197     "IEEE1588HeaderOffset", \
   4198     "HeaderFormatExtension", \
   4199     "MacSecTagPresent", \
   4200     "MacSecTag", \
   4201     "MacSecDstMacRangeHit", \
   4202     "FromMacSecPort", \
   4203     "MacSecFlow", \
   4204     "EgressBridgedForwardingDataHigh", \
   4205     "EgressBridgedForwardingDataLow", \
   4206     "EgressBridgedAclDataHigh", \
   4207     "EgressBridgedAclDataLow", \
   4208     "SysHdrType", \
   4209     "SubportTagPresent", \
   4210     "NetworkTagType", \
   4211     "CnTagPresent", \
   4212     "L2PktType", \
   4213     "PktType", \
   4214     "MplsCwPresent", \
   4215     "MplsMcastEthertypePresent", \
   4216     "Ipv4OptionHdrType", \
   4217     "Ipv6ExtensionHdrType", \
   4218     "OverlayVlanFormat", \
   4219     "OverlayL2PktType", \
   4220     "OverlayPktType", \
   4221     "OverlayIpv4OptionHdrType", \
   4222     "OverlayIpv6ExtensionHdrType", \
   4223     "FrontPanelPkt", \
   4224     "HiGigProxyTunnelType", \
   4225     "IpFragPkt", \
   4226     "OuterPriTaggedPkt", \
   4227     "IpInIpPkt", \
   4228     "IpmcV4Pkt", \
   4229     "IpmcV6Pkt", \
   4230     "IpChecksumOkPkt", \
   4231     "NetworkTagMulticastPkt", \
   4232     "IpTtlZeroPkt", \
   4233     "PimBidirDfStatus", \
   4234     "InterfaceClassL2Type", \
   4235     "IntPktVersionOne", \
   4236     "IntPktOverflowed", \
   4237     "IntPktLengthValid", \
   4238     "IntPktType", \
   4239     "IntPktFinalHop", \
   4240     "TunnelSubType", \
   4241     "NshServicePathId", \
   4242     "NshServiceIndex", \
   4243     "KeyGenVar", \
   4244     "RoeFrameType", \
   4245     "BfdGoodPkt", \
   4246     "BfdPktWithDstIpLoopbackAddr", \
   4247     "MplsControlPkt", \
   4248     "StageIngressFlowtracker", \
   4249     "InterfaceClassMplsLookup1", \
   4250     "InterfaceClassMplsLookup2", \
   4251     "InterfaceClassMplsLookup3", \
   4252     "InterfaceClassL3Tunnel", \
   4253     "BfdPktVersionOne", \
   4254     "GenevePktVersionZero", \
   4255     "GpePktVersionZero", \
   4256     "GenevePktWithOam", \
   4257     "GpePktWithOam", \
   4258     "InnerBfdPktVersionOne", \
   4259     "PktDstAddrType", \
   4260     "PktInnerDstAddrType", \
   4261     "InnerL4Ports", \
   4262     "TafEnable", \
   4263     "TafGateId", \
   4264     "TafGateState", \
   4265     "TafCosProfile", \
   4266     "ElkRangeL4DstPort", \
   4267     "ElkRangeL4SrcPort", \
   4268     "Ip6PktNextHeader", \
   4269     "Ip6PktHopLimit", \
   4270     "Ip6PktTrafficClass", \
   4271     "InnerIp6PktNextHeader", \
   4272     "InnerIp6PktHopLimit", \
   4273     "InnerIp6PktTrafficClass", \
   4274     "IpTunnelTtl", \
   4275     "IpTunnelTtlClassZero", \
   4276     "RangeCheckGroup", \
   4277     "FlowtrackerGroupId", \
   4278     "FlowtrackerClassId", \
   4279     "FlowtrackerGroupValid", \
   4280     "FlowtrackerDisabled", \
   4281     "FlowtrackerMeteringExceeded", \
   4282     "FlowtrackerCollectorCopy", \
   4283     "FlowtrackerFlowTableFull", \
   4284     "FlowtrackerGroupFlowExceeded", \
   4285     "FlowtrackerExportQueueFull", \
   4286     "OpaqueTagType", \
   4287     "OpaqueTagHigh", \
   4288     "OpaqueTagLow", \
   4289     "InnerDosAttack", \
   4290     "DosAttackEvents", \
   4291     "InnerDosAttackEvents", \
   4292     "SrcTMPort", \
   4293     "Container", \
   4294     "EgressForwardingClassId", \
   4295     "PktFlowType", \
   4296     "VlanTranslateClassId", \
   4297     "IpIdentifier", \
   4298     "TcpWindowSize", \
   4299     "Ip4Length", \
   4300     "Ip6Length", \
   4301     "TunnelPayloadIp4Length", \
   4302     "TunnelPayloadIp6Length", \
   4303     "GbpPresent", \
   4304     "HiGigGbpPresent", \
   4305     "GbpSrcId", \
   4306     "VxlanGbpPresent", \
   4307     "FlowtrackerCheck", \
   4308     "FlowtrackerLearn", \
   4309     "CosMapSelect", \
   4310     "OpaqueObject1", \
   4311     "OpaqueObject2", \
   4312     "OpaqueObject3", \
   4313     "OpaqueObject4", \
   4314     "IncomingOuterVlanId", \
   4315     "GbpDstId", \
   4316     "HiGigGbpSrcId", \
   4317     "LoopbackSubtype", \
   4318     "PphPresent", \
   4319     "PacketProcessingInVportClass", \
   4320     "UDHBase0", \
   4321     "UDHBase1", \
   4322     "UDHBase2", \
   4323     "UDHBase3", \
   4324     "NetworkQos", \
   4325     "AceEntryId", \
   4326     "Ip4Protocol", \
   4327     "Ip4Tos", \
   4328     "Ip4Ttl", \
   4329     "InVportDataIndex", \
   4330     "EtherTypeUntagged", \
   4331     "NetworkLoadBalanceKeyInitial", \
   4332     "NetworkLoadBalanceKey", \
   4333     "EcmpLoadBalanceKey0Initial", \
   4334     "EcmpLoadBalanceKey0", \
   4335     "EcmpLoadBalanceKey1Initial", \
   4336     "EcmpLoadBalanceKey1", \
   4337     "EcmpLoadBalanceKey2Initial", \
   4338     "EcmpLoadBalanceKey2", \
   4339     "TrunkLoadBalanceKeyInitial", \
   4340     "StateTableKey", \
   4341     "StateTableData", \
   4342     "CompareKeysResult0", \
   4343     "CompareKeysResult1", \
   4344     "CompareKeysTcam0", \
   4345     "CompareKeysTcam1", \
   4346     "LayerRecordType", \
   4347     "LayerRecordOffset", \
   4348     "LayerRecordQualifier", \
   4349     "UDHBase", \
   4350     "ForwardingLayerIndex", \
   4351     "IPTProfile", \
   4352     "AcInLifWideData", \
   4353     "NativeAcInLifWideData", \
   4354     "ForwardingProfile", \
   4355     "ContextId", \
   4356     "ForwardingLayerQualifier", \
   4357     "TracePacket", \
   4358     "TrunkLoadBalanceKey", \
   4359     "Forward", \
   4360     "ParsingStartType", \
   4361     "ParsingStartOffset", \
   4362     "UDHData0", \
   4363     "UDHData1", \
   4364     "UDHData2", \
   4365     "UDHData3", \
   4366     "RxSnoopStrength", \
   4367     "RxSnoopCode", \
   4368     "Visibility", \
   4369     "VisibilityClear", \
   4370     "EthernetMulticast", \
   4371     "EthernetBroadcast", \
   4372     "EthernetFirstTpidExist", \
   4373     "EthernetFirstTpidIndex", \
   4374     "EthernetSecondTpidExist", \
   4375     "EthernetSecondTpidIndex", \
   4376     "EthernetThirdTpidExist", \
   4377     "EthernetThirdTpidIndex", \
   4378     "IpHasOptions", \
   4379     "IpFirstFrag", \
   4380     "IpTunnelType", \
   4381     "Ip6MulticastCompatible", \
   4382     "Ip6FirstAdditionalHeaderExist", \
   4383     "ItmhExtensionExist", \
   4384     "ItmhDestinationFec", \
   4385     "ItmhPphType", \
   4386     "StatSamplingCode", \
   4387     "StatSamplingQualifier", \
   4388     "RpfEcmpMode", \
   4389     "StatOamLM", \
   4390     "InInterface", \
   4391     "OutInterface", \
   4392     "InVportClass", \
   4393     "OutVportClass", \
   4394     "InterfaceClass", \
   4395     "PortClassPacketProcessing", \
   4396     "PortClassTrafficManagement", \
   4397     "OutPortTrafficManagement", \
   4398     "MulticastRpfMode", \
   4399     "Tpid", \
   4400     "VlanId", \
   4401     "VlanPri", \
   4402     "VlanCfi", \
   4403     "VlanPriCfi", \
   4404     "Vlan", \
   4405     "MplsLabel", \
   4406     "MplsLabelId", \
   4407     "MplsLabelTtl", \
   4408     "MplsLabelBos", \
   4409     "MplsLabelExp", \
   4410     "InVPort0", \
   4411     "InVPort1", \
   4412     "OutVPort0", \
   4413     "OutVPort1", \
   4414     "OutVPort2", \
   4415     "OutVPort3", \
   4416     "BierStringOffset", \
   4417     "BierStringSize", \
   4418     "PacketIsBier", \
   4419     "PortClassPacketProcessingGeneralData", \
   4420     "ForwardingAdditionalInfo", \
   4421     "InVportClass0", \
   4422     "InVportClass1", \
   4423     "StatId0", \
   4424     "StatId1", \
   4425     "StatId2", \
   4426     "StatId3", \
   4427     "StatId4", \
   4428     "StatId5", \
   4429     "StatId6", \
   4430     "StatId7", \
   4431     "StatId8", \
   4432     "StatId9", \
   4433     "StatProfile0", \
   4434     "StatProfile1", \
   4435     "StatProfile2", \
   4436     "StatProfile3", \
   4437     "StatProfile4", \
   4438     "StatProfile5", \
   4439     "StatProfile6", \
   4440     "StatProfile7", \
   4441     "StatProfile8", \
   4442     "StatProfile9", \
   4443     "ExtStat0", \
   4444     "ExtStat1", \
   4445     "ExtStat2", \
   4446     "ExtStat3", \
   4447     "ExtStatProfile0", \
   4448     "ExtStatProfile1", \
   4449     "ExtStatProfile2", \
   4450     "ExtStatProfile3", \
   4451     "StatMetaData", \
   4452     "DstL3EgressUnderlay", \
   4453     "DstL3EgressNextHopsUnderlay", \
   4454     "EgressClassPort", \
   4455     "INTProbeMarker1", \
   4456     "INTProbeMarker2", \
   4457     "INTReserved4Bytes", \
   4458     "InVPort0Raw", \
   4459     "InVPort1Raw", \
   4460     "OutVPort0Raw", \
   4461     "OutVPort1Raw", \
   4462     "OutVPort2Raw", \
   4463     "OutVPort3Raw", \
   4464     "AppTypePredefined", \
   4465     "FlowControlType", \
   4466     "TimeStampTxPktType", \
   4467     "SysHdrLocalDstport", \
   4468     "MirrorCode", \
   4469     "MirrorData", \
   4470     "LearnVsi", \
   4471     "LearnData", \
   4472     "LearnStationMove", \
   4473     "LearnMatch", \
   4474     "LearnFound", \
   4475     "LearnExpectedWon", \
   4476     "VrfValue", \
   4477     "InPortWithoutCore", \
   4478     "DstSysPortExtPresent", \
   4479     "IpFwdPlusOneNextProtocol", \
   4480     "MacSecControlPkt", \
   4481     "MacSecSecTagCbit", \
   4482     "MacSecSecTagEbit", \
   4483     "IOAMNameSpaceIdMatch", \
   4484     "IOAMPktOverflowed", \
   4485     "IOAMRemainingLenValid", \
   4486     "SaLookupAcceptedStrength", \
   4487     "LayerRecordTypeRaw", \
   4488     "SrcPortRaw", \
   4489     "SrcModPortGportRaw", \
   4490     "DstMulticastGroupRaw", \
   4491     "InInterfaceRaw", \
   4492     "OutInterfaceRaw", \
   4493     "InPortWithoutCoreRaw", \
   4494     "VlanFormatRaw", \
   4495     "InPortRaw", \
   4496     "ColorRaw", \
   4497     "DstGportRaw", \
   4498     "DstPortRaw", \
   4499     "OutPortRaw", \
   4500     "DstRpfValid", \
   4501     "RpfOutVPort", \
   4502     "RpfOutInterface", \
   4503     "RpfOutVPortRaw", \
   4504     "RpfRouteValid", \
   4505     "EcmpGroup", \
   4506     "Ip4DstMulticast", \
   4507     "IgmpType", \
   4508     "L2IngressInterface", \
   4509     "L3SrcHit", \
   4510     "L3DestHit", \
   4511     "L2MacInfo", \
   4512     "L4Info", \
   4513     "InnerPriTaggedPkt", \
   4514     "HiGig3Class", \
   4515     "HiGig3Flags", \
   4516     "LoopbackHiGig3Flags", \
   4517     "IpExtensionHdrNum", \
   4518     "IngressL2InterfaceOpaqueCtrlId", \
   4519     "DevicePortOpaqueCommand", \
   4520     "IngressInterfaceClass", \
   4521     "IngressL3InterfaceOpaqueCtrlId", \
   4522     "SvpOpaqueCtrlId", \
   4523     "VpnOpaqueCtrlId", \
   4524     "L2SrcDiscard", \
   4525     "L2LearnCommands", \
   4526     "TunnelTermStatus", \
   4527     "LoopbackHdrFlags", \
   4528     "PacketStatus", \
   4529     "ForwardingStatus", \
   4530     "TunnelAltEtherType", \
   4531     "TunnelAltSrcIp", \
   4532     "TunnelAltSrcIp6", \
   4533     "TunnelAltDstIp", \
   4534     "TunnelAltDstIp6", \
   4535     "TunnelAltIpProtocol", \
   4536     "TunnelAltL4SrcPort", \
   4537     "TunnelAltL4DstPort", \
   4538     "OuterL2MacInfo", \
   4539     "OuterIpInfo", \
   4540     "OuterL4Info", \
   4541     "InnerL2MacInfo", \
   4542     "InnerIpInfo", \
   4543     "InnerL4Info", \
   4544     "EffectiveTtl", \
   4545     "FlexStateResultA0", \
   4546     "FlexStateResultA1", \
   4547     "LastIpProtocol", \
   4548     "MplsLabel4", \
   4549     "MplsLabel4Ttl", \
   4550     "MplsLabel4Bos", \
   4551     "MplsLabel4Exp", \
   4552     "MplsLabel4Id", \
   4553     "MplsLabel5", \
   4554     "MplsLabel5Ttl", \
   4555     "MplsLabel5Bos", \
   4556     "MplsLabel5Exp", \
   4557     "MplsLabel5Id", \
   4558     "MplsLabel6", \
   4559     "MplsLabel6Ttl", \
   4560     "MplsLabel6Bos", \
   4561     "MplsLabel6Exp", \
   4562     "MplsLabel6Id", \
   4563     "MplsLabel7", \
   4564     "MplsLabel7Ttl", \
   4565     "MplsLabel7Bos", \
   4566     "MplsLabel7Exp", \
   4567     "MplsLabel7Id", \
   4568     "L5PayloadByte1", \
   4569     "L5PayloadByte2", \
   4570     "L5PayloadByte3", \
   4571     "L5PayloadByte4", \
   4572     "L5PayloadByte5", \
   4573     "L5PayloadByte6", \
   4574     "L5PayloadByte7", \
   4575     "L5PayloadByte8", \
   4576     "OuterL5PayloadByte1", \
   4577     "OuterL5PayloadByte2", \
   4578     "OuterL5PayloadByte3", \
   4579     "OuterL5PayloadByte4", \
   4580     "OuterL5PayloadByte5", \
   4581     "OuterL5PayloadByte6", \
   4582     "OuterL5PayloadByte7", \
   4583     "OuterL5PayloadByte8", \
   4584     "ArpSrcMac", \
   4585     "ArpDstMac", \
   4586     "L2EgressInterface", \
   4587     "Stg", \
   4588     "CosQueueNum", \
   4589     "CopyToCpu", \
   4590     "CopyToCpuTruncate", \
   4591     "McastPkt", \
   4592     "UntagPkt", \
   4593     "DoNotModify", \
   4594     "TxPortType", \
   4595     "RxPortType", \
   4596     "MirrorPktType", \
   4597     "PtpMsgType", \
   4598     "PtpVersion", \
   4599     "PtpPktCtrl", \
   4600     "VlanMembershipCheck", \
   4601     "InnerVlanTagPreserve", \
   4602     "OuterVlanTagPreserve", \
   4603     "ForwardingEligible", \
   4604     "InterfaceClassMpls", \
   4605     "L3Check", \
   4606     "L2InterfaceMatch", \
   4607     "ProtocolPktOpaqueCtrlId", \
   4608     "LookupClassField", \
   4609     "ExactMatchOpaqueObject0", \
   4610     "IcmpType", \
   4611     "OuterVlanRangeMatch", \
   4612     "InnerVlanRangeMatch", \
   4613     "TunnelHeaderDstMac", \
   4614     "TunnelHeaderSrcMac", \
   4615     "TunnelHeaderSip", \
   4616     "TunnelHeaderDip", \
   4617     "TunnelHeaderSip6", \
   4618     "TunnelHeaderDip6", \
   4619     "TunnelHeaderIpProtocol", \
   4620     "MHPriority", \
   4621     "EgressPortCtrlType", \
   4622     "SubportGroupIds", \
   4623     "StageAggregateMmuFlowtracker", \
   4624     "StageAggregateEgressFlowtracker", \
   4625     "FlowtrackerAggregateClass", \
   4626     "FlowtrackerClassIdSource1", \
   4627     "FlowtrackerClassIdSource2", \
   4628     "ApplSignatureId", \
   4629     "InnerApplSignatureId", \
   4630     "CosQueueId", \
   4631     "CongestionExperienced", \
   4632     "CongestionMarked", \
   4633     "IsUcastCosQueue", \
   4634     "EgressPortQueue", \
   4635     "LearnExtensionPresent", \
   4636     "L3EgressIntf", \
   4637     "ForwardCode", \
   4638     "PktFwdType", \
   4639     "StatOamLMRaw", \
   4640     "RangeFirstHit0", \
   4641     "RangeFirstHit1", \
   4642     "RangeFirstHit2", \
   4643     "RangeFirstHit3", \
   4644     "IfaCurrentLengthEqualToZero", \
   4645     "IfaHopLimitEqualToZero", \
   4646     "IfaVersion2", \
   4647     "IfaGlobalNameSpace", \
   4648     "IfaLocalNameSpace", \
   4649     "IfaCurrentLength", \
   4650     "IfaRequestVector", \
   4651     "DstType", \
   4652     "LoopbackHdrDstType", \
   4653     "OverlayNetworkTagType", \
   4654     "OverlayIpOptionHdrType", \
   4655     "IpOptionHdrType", \
   4656     "FirstDropReason", \
   4657     "DropReason", \
   4658     "CopyToCpuReasonLow", \
   4659     "Rtag7CHashLower", \
   4660     "Rtag7CHashUpper", \
   4661     "AppTypeRaw", \
   4662     "AppTypePredefinedRaw", \
   4663     "ForwardingTypeRaw", \
   4664     "ContextIdRaw", \
   4665     "OverlayEgressClass", \
   4666     "EgressL3TunnelGport", \
   4667     "EgressMcastPktReason", \
   4668     "EgressPktQueueNotification", \
   4669     "EgressDOPTrigger", \
   4670     "EgressTunnelIpHeaderFlowLabel", \
   4671     "EgressTunnelIpHeaderEcn", \
   4672     "EgressTunnelIpHeaderDscp", \
   4673     "IpExtHdr2Protocol", \
   4674     "L2EgrIntfEfpCtrlId", \
   4675     "IfaFlags", \
   4676     "IfaMaxLength", \
   4677     "IfaActionVector", \
   4678     "StateTableDataWrite", \
   4679     "CopyToCpuReasonHigh", \
   4680     "InnerTcpControl", \
   4681     "TunnelTerminationProcessingProfile", \
   4682     "IntFlags", \
   4683     "IntHdrType", \
   4684     "IntUdpChecksumEqualsZero", \
   4685     "IntMetadataHdrType", \
   4686     "IntHdrPresent", \
   4687     "CompressionSrcHit", \
   4688     "CompressionDstHit", \
   4689     "IpTunnelTypeRaw", \
   4690     "SampledPkt", \
   4691     "SrcIp6SrhValid", \
   4692     "FtmhAsePresent", \
   4693     "FtmhAseType", \
   4694     "HiGig3Pkt", \
   4695     "LoopbackLagFailoverPkt", \
   4696     "PktMiscCtrl", \
   4697     "ForwardingOuterVlanPri", \
   4698     "ForwardingOuterTpid", \
   4699     "IncomingVlanFormat", \
   4700     "BfdMultiplierLen", \
   4701     "BfdVerFlags", \
   4702     "GpeFlags", \
   4703     "GpeNetworkId", \
   4704     "GpeProtocol", \
   4705     "GpeReserved0", \
   4706     "GpeReserved1", \
   4707     "IfaAttrOpaqData", \
   4708     "IgmpMaxRespTime", \
   4709     "MplsTopHeader", \
   4710     "MplsVcLabelHeader", \
   4711     "TcpAckNum", \
   4712     "TcpSequenceNum", \
   4713     "UdpLength", \
   4714     "PtpReserved1", \
   4715     "PtpTransportSpec", \
   4716     "LoopbackIfaSwitchCopyDrop", \
   4717     "VipValid", \
   4718     "VipId", \
   4719     "VIPMemberReference", \
   4720     "PccHit", \
   4721     "PdelayReq", \
   4722     "PphType", \
   4723     "RxTrapProfile", \
   4724     "DstMultipathLevel1", \
   4725     "DstMultipathLevel2", \
   4726     "Svtag", \
   4727     "RecircleHdrFirstDropReason", \
   4728     "RecircleHdrDropReason", \
   4729     "RecircleHdrCode", \
   4730     "MacSecOpaque", \
   4731     "MirrorOnDrop", \
   4732     "MirrorOnDropReason", \
   4733     "IntCtrl", \
   4734     "IfaHopCount", \
   4735     "IfaHopLimit", \
   4736     "L2SrcMiscClassId", \
   4737     "L2DstMiscClassId", \
   4738     "L3SrcMiscClassId", \
   4739     "L3DstMiscClassId", \
   4740     "RawResidenceTime", \
   4741     "IpFragInfo", \
   4742     "InDscpExp", \
   4743     "AcInLifWideDataExtended", \
   4744     "IfaNextHdr", \
   4745     "IfaVersion", \
   4746     "IngressL2InterfaceOpaqueCtrlId1", \
   4747     "IngressL2InterfaceFlexDigestCtrlIdA", \
   4748     "IngressL2InterfaceFlexDigestCtrlIdB", \
   4749     "AcInLifWideDataExtendedRaw", \
   4750     "ForwardingPacketRes", \
   4751     "SrcCompressionClassId", \
   4752     "DstCompressionClassId", \
   4753     "IPv6FragmentedNonFirst", \
   4754     "RecircleHdrOpaqueCtrlIdC", \
   4755     "Ip6SecondAdditionalHeaderExist", \
   4756     "MplsForwardingControlWord", \
   4757     "MplsCtrlPktType"  \
   4758 }
   4759 
   4760 /* Field Qualifier Class (for bcm_field_qualifier_info_get()). */
   4761 typedef enum bcm_field_qualifier_class_e {
   4762     bcmFieldQualifierClassMetaData = 0, /* Info taken from the packet's
   4763                                            MetaData. Can use
   4764                                            FieldInputTypeMetaData. */
   4765     bcmFieldQualifierClassHeader = 1,   /* Info taken from the packet's header.
   4766                                            Can use FieldInputTypeLayerFwd or
   4767                                            FieldInputTypeLayerAbsolute. */
   4768     bcmFieldQualifierClassLayerRecord = 2, /* Info taken from the packet's layer
   4769                                            records. Can use
   4770                                            FieldInputTypeLayerRecordsFwd or
   4771                                            FieldInputTypeLayerRecordsAbsolute. */
   4772     bcmFieldQualifierClassUserCreated = 3, /* User defined qualifier. Can use any
   4773                                            input type. */
   4774     bcmFieldQualifierClassCount = 4     /* Always Last. Not a usable value. */
   4775 } bcm_field_qualifier_class_t;
   4776 
   4777 #define BCM_FIELD_QUALIFIERCLASS_STRINGS \
   4778 { \
   4779     "bcmFieldQualifierClassMetaData", \
   4780     "bcmFieldQualifierClassHeader", \
   4781     "bcmFieldQualifierClassLayerRecord", \
   4782     "bcmFieldQualifierClassUserCreated"  \
   4783 }
   4784 
   4785 /* 
   4786  * Field Stage Type
   4787  * 
   4788  * Selects which pipeline stage an entry applies to.
   4789  */
   4790 typedef enum bcm_field_stage_e {
   4791     bcmFieldStageFirst = 0,             /* Earliest Field stage in device. */
   4792     bcmFieldStageIngressEarly = 1,      /* Early Ingress Field stage. */
   4793     bcmFieldStageIngressLate = 2,       /* Late Ingress Field stage. */
   4794     bcmFieldStageDefault = 3,           /* Default stage for device. */
   4795     bcmFieldStageLast = 4,              /* Latest Field stage in device. */
   4796     bcmFieldStageIngress = 5,           /* Ingress stage, when there is only one
   4797                                            such. */
   4798     bcmFieldStageEgress = 6,            /* Egress field stage */
   4799     bcmFieldStageExternal = 7,          /* External field stage */
   4800     bcmFieldStageHash = 8,              /* Hashing stage */
   4801     bcmFieldStageIngressExactMatch = 9, /* Ingress exact match stage */
   4802     bcmFieldStageIngressFlowtracker = 10, /* Ingress flowtracker stage */
   4803     bcmFieldStageIngressPMF1 = 11,      /* Stage Ingress PMF-1 */
   4804     bcmFieldStageIngressPMF2 = 12,      /* Stage Ingress PMF-2 */
   4805     bcmFieldStageIngressPMF3 = 13,      /* Stage Ingress PMF-3 */
   4806     bcmFieldStageLookup = 14,           /* Stage Lookup */
   4807     bcmFieldStageClass = 15,            /* Stage Class */
   4808     bcmFieldStageAggregateMmuFlowtracker = 16, /* Aggregate Mmu Flowtracker Stage. */
   4809     bcmFieldStageAggregateEgressFlowtracker = 17, /* Aggregate Egress Flowtracker Stage. */
   4810     bcmFieldStageEgressExtension = 18,  /* Extension of the egress field stage,
   4811                                            performing actions later. */
   4812     bcmFieldStageCount = 19             /* Always Last. Not a usable value. */
   4813 } bcm_field_stage_t;
   4814 
   4815 #define BCM_FIELD_STAGE_STRINGS \
   4816 { \
   4817     "First", \
   4818     "IngressEarly", \
   4819     "IngressLate", \
   4820     "Default", \
   4821     "Last", \
   4822     "Ingress", \
   4823     "Egress", \
   4824     "External", \
   4825     "Hash", \
   4826     "IngressExactMatch", \
   4827     "IngressFlowtracker", \
   4828     "IngressPMF1", \
   4829     "IngressPMF2", \
   4830     "IngressPMF3", \
   4831     "Lookup", \
   4832     "Class", \
   4833     "AggregateMmuFlowtracker", \
   4834     "AggregateEgressFlowtracker", \
   4835     "EgressExtension"  \
   4836 }
   4837 
   4838 /* 
   4839  * information related to the preselectors management advance mode per
   4840  * stage.
   4841  */
   4842 typedef struct bcm_field_stage_info_s {
   4843     int field_presel_advanced_mode;     /* is presel advanced mode enabled. */
   4844     int field_presel_max_id;            /* The maximum presel id that can be
   4845                                            defined for a new created program
   4846                                            selector in advanced mode. */
   4847     int field_presel_staggered_max_id;  /* The maximum presel id that can be
   4848                                            defined for a new created program
   4849                                            selector in staggered mode. */
   4850 } bcm_field_stage_info_t;
   4851 
   4852 /* DATA qualifier object, used for creation of custom data qualifiers. */
   4853 typedef struct bcm_field_data_qualifier_s {
   4854     int qual_id;                        /* Data qualifier id. */
   4855     uint32 flags;                       /* Data qualifier flags
   4856                                            BCM_FIELD_DATA_QUALIFIER_XXX. */
   4857     bcm_field_data_offset_base_t offset_base; /* Offset base adjustment. */
   4858     uint16 offset;                      /* Packet byte offset. */
   4859     int length;                         /* Matched data byte length. */
   4860     bcm_field_qualify_t qualifier;      /* Data qualifier based on a predefined
   4861                                            qualifier. Used when
   4862                                            BCM_FIELD_DATA_QUALIFIER_OFFSET_PREDEFINED
   4863                                            is set. */
   4864     bcm_field_stage_t stage;            /* Data qualifier stage (e.g. when based
   4865                                            on predefined qualifiers). */
   4866     uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Data Qualifier. */
   4867 } bcm_field_data_qualifier_t;
   4868 
   4869 #define BCM_FIELD_QUALIFY_MAX   (bcmFieldQualifyCount + BCM_FIELD_USER_NUM_UDFS) /* Must be >= bcmFieldQualifyCount. */
   4870 
   4871 #define BCM_FIELD_QUALIFY_WIDTH_MAX 50         
   4872 
   4873 #define BCM_FIELD_QSET_WIDTH_MAX    \
   4874     ((BCM_FIELD_QUALIFY_WIDTH_MAX+1) * \
   4875     bcmFieldQualifyCount + 1) 
   4876 
   4877 #define BCM_FIELD_EXACT_MATCH_MASK  (~0)       /* Mask parameter value. */
   4878 
   4879 /* 
   4880  * Field Qualifier Decap.
   4881  * 
   4882  * Possible data values for bcm_field_qualify_decap().
   4883  */
   4884 typedef enum bcm_field_decap_e {
   4885     bcmFieldDecapNone = 0,          /* No Decap. */
   4886     bcmFieldDecapL2Mpls = 1,        /* L2 MPLS Decap. */
   4887     bcmFieldDecapL3Mpls = 2,        /* L3 MPLS Decap. */
   4888     bcmFieldDecapOtherMPLS = 3,     /* non-L2 or L3 MPLS Decap. */
   4889     bcmFieldDecapIpTunnel = 4,      /* IP Tunnel Decap. */
   4890     bcmFieldDecapIpGreTunnel = 5,   /* IP GRE Tunnel Decap. */
   4891     bcmFieldDecapIpUdpTunnel = 6,   /* IP UDP Tunnel Decap. */
   4892     bcmFieldDecapIpPimTunnel = 7,   /* IP PIM Tunnel Decap. */
   4893     bcmFieldDecapVxlan = 8,         /* VXLAN Decap. */
   4894     bcmFieldDecapCount = 9          /* Always Last. Not a usable value. */
   4895 } bcm_field_decap_t;
   4896 
   4897 #define BCM_FIELD_DECAP_STRINGS \
   4898 { \
   4899     "None", \
   4900     "L2Mpls", \
   4901     "L3Mpls", \
   4902     "OtherMPLS", \
   4903     "IpTunnel", \
   4904     "IpGreTunnel", \
   4905     "IpUdpTunnel", \
   4906     "IpPimTunnel", \
   4907     "Vxlan"  \
   4908 }
   4909 
   4910 /* 
   4911  * Field Qualifier Forwarding Type (for
   4912  * bcm_field_qualify_ForwardingType).
   4913  */
   4914 typedef enum bcm_field_ForwardingType_e {
   4915     bcmFieldForwardingTypeAny = 0,      /* Don't care. */
   4916     bcmFieldForwardingTypeL2 = 1,       /* L2 switching forwarding. */
   4917     bcmFieldForwardingTypeL3 = 2,       /* L3 routing forwarding. */
   4918     bcmFieldForwardingTypeL2Shared = 3, /* Shared vlan L2 forwarding. */
   4919     bcmFieldForwardingTypeL2Independent = 4, /* Vlan based L2 forwarding. */
   4920     bcmFieldForwardingTypeL2Vpn = 5,    /* VFI based L2 forwarding. */
   4921     bcmFieldForwardingTypeL2VpnDirect = 6, /* L2 point to point vpn forwarding. */
   4922     bcmFieldForwardingTypeL3Direct = 7, /* L3 predefined next hop forwarding. */
   4923     bcmFieldForwardingTypeIp4Ucast = 8, /* IPv4 Unicast Routing forwarding. */
   4924     bcmFieldForwardingTypeIp4Mcast = 9, /* IPv4 Multicast Routing forwarding. */
   4925     bcmFieldForwardingTypeIp6Ucast = 10, /* IPv6 Unicast Routing forwarding. */
   4926     bcmFieldForwardingTypeIp6Mcast = 11, /* IPv6 Multicast Routing forwarding. */
   4927     bcmFieldForwardingTypeMpls = 12,    /* MPLS Switching forwarding. */
   4928     bcmFieldForwardingTypeTrill = 13,   /* Trill forwarding. */
   4929     bcmFieldForwardingTypeRxReason = 14, /* Forwarding according to a RxReason. */
   4930     bcmFieldForwardingTypeTrafficManagement = 15, /* Traffic Management forwarding, when
   4931                                            an external Packet Processor sets the
   4932                                            forwarding decision. */
   4933     bcmFieldForwardingTypeSnoop = 16,   /* Snooped packet. */
   4934     bcmFieldForwardingTypeMplsLabel1 = 17, /* MPLS Switching forwarding according
   4935                                            to the 1st label */
   4936     bcmFieldForwardingTypeMplsLabel2 = 18, /* MPLS Switching forwarding according
   4937                                            to the 2nd label */
   4938     bcmFieldForwardingTypeMplsLabel3 = 19, /* MPLS Switching forwarding according
   4939                                            to the 3rd label */
   4940     bcmFieldForwardingTypeFCoE = 20,    /* Fiber Channel over Ethernet
   4941                                            forwarding. */
   4942     bcmFieldForwardingTypePortExtender = 21, /* VNTAG/ETAG based forwarding. */
   4943     bcmFieldForwardingTypeCustom1 = 22, /* Custom_1 forwarding. */
   4944     bcmFieldForwardingTypeCustom2 = 23, /* Custom_2 forwarding. */
   4945     bcmFieldForwardingTypeL2SharedVpn = 24, /* Shared VFI based L2 Forwarding. */
   4946     bcmFieldForwardingTypePortDirect = 25, /* Port based Point to Point Forwarding. */
   4947     bcmFieldForwardingTypeSvpDirect = 26, /* SVP based Point to Point Forwarding. */
   4948     bcmFieldForwardingTypeVlanDirect = 27, /* VLAN based Point to Point Forwarding. */
   4949     bcmFieldForwardingTypeCount = 28    /* Always Last. Not a usable value. */
   4950 } bcm_field_ForwardingType_t;
   4951 
   4952 #define BCM_FIELD_FORWARDINGTYPE_STRINGS \
   4953 { \
   4954     "Any", \
   4955     "L2", \
   4956     "L3", \
   4957     "L2Shared", \
   4958     "L2Independent", \
   4959     "L2Vpn", \
   4960     "L2VpnDirect", \
   4961     "L3Direct", \
   4962     "Ip4Ucast", \
   4963     "Ip4Mcast", \
   4964     "Ip6Ucast", \
   4965     "Ip6Mcast", \
   4966     "Mpls", \
   4967     "Trill", \
   4968     "RxReason", \
   4969     "TrafficManagement", \
   4970     "Snoop", \
   4971     "MplsLabel1", \
   4972     "MplsLabel2", \
   4973     "MplsLabel3", \
   4974     "FCoE", \
   4975     "PortExtender", \
   4976     "Custom1", \
   4977     "Custom2", \
   4978     "L2SharedVpn", \
   4979     "PortDirect", \
   4980     "SvpDirect", \
   4981     "VlanDirect"  \
   4982 }
   4983 
   4984 /* 
   4985  * Field Qualifier HiGig Forwarding Type (for
   4986  * bcm_field_qualify_HiGigForwardingType).
   4987  */
   4988 typedef enum bcm_field_HiGigForwardingType_e {
   4989     bcmFieldHiGigForwardingTypeControlPacket = 0, /* Control Packet. */
   4990     bcmFieldHiGigForwardingTypeKnownL2 = 1, /* L2 Unicast/ Known L2 Multicast. */
   4991     bcmFieldHiGigForwardingTypeKnownL3 = 2, /* L3 Unicast/ Known L3 Multicast. */
   4992     bcmFieldHiGigForwardingTypeUnknownL2Multicast = 3, /* Unknown L2 Multicast. */
   4993     bcmFieldHiGigForwardingTypeUnknownL3Multicast = 4, /* Unknown L3 Multicast. */
   4994     bcmFieldHiGigForwardingTypeBroadcastOnUnknownL2Unicast = 5, /* Broadcast due to Unknown L2 Unicast. */
   4995     bcmFieldHiGigForwardingTypeBroadcast = 6, /* Broadcast. */
   4996     bcmFieldHiGigForwardingTypeCount = 7 /* Always Last. Not a usable value. */
   4997 } bcm_field_HiGigForwardingType_t;
   4998 
   4999 #define BCM_FIELD_HIGIGFORWARDINGTYPE_STRINGS \
   5000 { \
   5001     "ControlPacket", \
   5002     "KnownL2", \
   5003     "KnownL3", \
   5004     "UnknownL2Multicast", \
   5005     "UnknownL3Multicast", \
   5006     "BroadcastOnUnknownL2Unicast", \
   5007     "Broadcast"  \
   5008 }
   5009 
   5010 /* Field Qualifier Application Type (for bcm_field_qualify_AppType). */
   5011 typedef enum bcm_field_AppType_e {
   5012     bcmFieldAppTypeAny = 0,             /* Don't care. */
   5013     bcmFieldAppTypeL2 = 1,              /* L2 bridging. */
   5014     bcmFieldAppTypeL2VpnDirect = 2,     /* Cross connect service. */
   5015     bcmFieldAppTypeIp4Ucast = 3,        /* IPv4 Unicast Routing. */
   5016     bcmFieldAppTypeIp4McastBidir = 4,   /* IPv4 Multicast BIDIR Routing. */
   5017     bcmFieldAppTypeIp6Ucast = 5,        /* IPv6 Unicast Routing. */
   5018     bcmFieldAppTypeIp6Mcast = 6,        /* IPv6 Multicast Routing forwarding. */
   5019     bcmFieldAppTypeMpls = 7,            /* MPLS Switching forwarding. */
   5020     bcmFieldAppTypeArp = 8,             /* ARP forwarding. */
   5021     bcmFieldAppTypeTrillUcast = 9,      /* Trill Unicast forwarding. */
   5022     bcmFieldAppTypeTrillMcast = 10,     /* Trill Multicast forwarding. */
   5023     bcmFieldAppTypeL2TrillMcast = 11,   /* L2 Multicast after Trill termination. */
   5024     bcmFieldAppTypeTrafficManagement = 12, /* Traffic Management forwarding, when
   5025                                            an external Packet Processor sets the
   5026                                            forwarding decision. */
   5027     bcmFieldAppTypeMiM = 13,            /* MAC-in-MAC forwarding. */
   5028     bcmFieldAppTypeL2MiM = 14,          /* L2 forwarding after MAC-in-MAC
   5029                                            termination. */
   5030     bcmFieldAppTypeIp4UcastRpf = 15,    /* IPv4 Unicast Routing (coupled to the
   5031                                            RPF lookup). */
   5032     bcmFieldAppTypeIp6UcastRpf = 16,    /* IPv6 Unicast Routing (coupled to the
   5033                                            RPF lookup). */
   5034     bcmFieldAppTypeIp4McastRpf = 17,    /* IPv4 Multicast Routing (coupled to
   5035                                            the RPF lookup). */
   5036     bcmFieldAppTypeCompIp4McastRpf = 18, /* Compatible IPv4 Multicast Routing
   5037                                            (coupled to the RPF lookup). */
   5038     bcmFieldAppTypeIp6McastRpf = 19,    /* IPv6 Multicast Routing (coupled to
   5039                                            the RPF lookup). */
   5040     bcmFieldAppTypeMplsCoupling = 20,   /* Coupling MPLS Switching. */
   5041     bcmFieldAppTypeFCoE = 21,           /* FCoE without VFT and local D_ID. */
   5042     bcmFieldAppTypeFCoETransit = 22,    /* Transit FCoE (bridging). */
   5043     bcmFieldAppTypeFCoEVft = 23,        /* FCoE with VFT Routing. */
   5044     bcmFieldAppTypeFCoERemote = 24,     /* FCoE without VFT and remote D_ID
   5045                                            Routing. */
   5046     bcmFieldAppTypeFCoEVftRemote = 25,  /* FCoE wth VFT and remote D_ID v. */
   5047     bcmFieldAppTypeL2VpnExtended = 26,  /* Extended P2P forwarding. */
   5048     bcmFieldAppTypeIp4MacSrcBind = 27,  /* IPV4-MAC Source bind. */
   5049     bcmFieldAppTypeIp6MacSrcBind = 28,  /* IPV6-MAC Source bind. */
   5050     bcmFieldAppTypeIp4SrcBind = 29,     /* IPV4 Source bind. */
   5051     bcmFieldAppTypeIp6SrcBind = 30,     /* IPV6 Source bind. */
   5052     bcmFieldAppTypeVplsGreIp = 31,      /* VPLS tunnel over GREoIP tunnel. */
   5053     bcmFieldAppTypeFglTrillMcast = 32,  /* Fine-grained labeling Trill Multicast
   5054                                            forwarding. */
   5055     bcmFieldAppTypeBfdIp4SingleHop = 33, /* BFD ipv4 single hop. */
   5056     bcmFieldAppTypeBfdEcho = 34,        /* BFD Echo. */
   5057     bcmFieldAppTypeIp4DoubleCapacity = 35, /* IPv4 Unicast Routing with double
   5058                                            capacity in external tcam. */
   5059     bcmFieldAppTypeIp6UcastPublic = 36, /* IPv6 Unicast Public Routing. */
   5060     bcmFieldAppTypeIp6UcastRpfPublic = 37, /* IPv6 Unicast Public Routing (coupled
   5061                                            to the RPF lookup). */
   5062     bcmFieldAppTypeIp4UcastPublic = 38, /* IPv4 Unicast Public Routing. */
   5063     bcmFieldAppTypeIp4UcastRpfPublic = 39, /* IPv4 Unicast Public Routing (coupled
   5064                                            to the RPF lookup). */
   5065     bcmFieldAppTypeIp4McastL2Ssm = 40,  /* IPv4 L2 Source Specific Multicast
   5066                                            forwarding. */
   5067     bcmFieldAppTypeIp6McastL2Ssm = 41,  /* IPv6 L2 Source Specific Multicast
   5068                                            forwarding. */
   5069     bcmFieldAppTypeBfdIp6SingleHop = 42, /* BFD ipv6 single hop. */
   5070     bcmFieldAppTypeIp6McastL3Ssm = 43,  /* IPv6 L3 Source Specific Multicast
   5071                                            forwarding. */
   5072     bcmFieldAppTypeIp6McastL3SsmCompressSip = 44, /* IPv6 L3 Source Specific Multicast
   5073                                            compress SIP. */
   5074     bcmFieldAppTypeVip4 = 45,           /* SLLB Virtual IPv4 forwarding. */
   5075     bcmFieldAppTypeVip6 = 46,           /* SLLB Virtual IPv6 forwarding. */
   5076     bcmFieldAppTypeVip4Direct = 47,     /* SLLB non-VIP IPv4 forwarding on VIP
   5077                                            enabled interfaces. */
   5078     bcmFieldAppTypeVip6Direct = 48,     /* SLLB non-VIP IPv6 forwarding on VIP
   5079                                            enabled interfaces. */
   5080     bcmFieldAppTypeCount = 49           /* Always Last. Not a usable value. */
   5081 } bcm_field_AppType_t;
   5082 
   5083 #define BCM_FIELD_APPTYPE_STRINGS \
   5084 { \
   5085     "Any", \
   5086     "L2", \
   5087     "L2VpnDirect", \
   5088     "Ip4Ucast", \
   5089     "Ip4McastBidir", \
   5090     "Ip6Ucast", \
   5091     "Ip6Mcast", \
   5092     "Mpls", \
   5093     "Arp", \
   5094     "TrillUcast", \
   5095     "TrillMcast", \
   5096     "L2TrillMcast", \
   5097     "TrafficManagement", \
   5098     "MiM", \
   5099     "L2MiM", \
   5100     "Ip4UcastRpf", \
   5101     "Ip6UcastRpf", \
   5102     "Ip4McastRpf", \
   5103     "CompIp4McastRpf", \
   5104     "Ip6McastRpf", \
   5105     "MplsCoupling", \
   5106     "FCoE", \
   5107     "FCoETransit", \
   5108     "FCoEVft", \
   5109     "FCoERemote", \
   5110     "FCoEVftRemote", \
   5111     "L2VpnExtended", \
   5112     "Ip4MacSrcBind", \
   5113     "Ip6MacSrcBind", \
   5114     "Ip4SrcBind", \
   5115     "Ip6SrcBind", \
   5116     "VplsGreIp", \
   5117     "FglTrillMcast", \
   5118     "BfdIp4SingleHop", \
   5119     "BfdEcho", \
   5120     "Ip4DoubleCapacity", \
   5121     "Ip6UcastPublic", \
   5122     "Ip6UcastRpfPublic", \
   5123     "Ip4UcastPublic", \
   5124     "Ip4UcastRpfPublic", \
   5125     "Ip4McastL2Ssm", \
   5126     "Ip6McastL2Ssm", \
   5127     "BfdIp6SingleHop", \
   5128     "Ip6McastL3Ssm", \
   5129     "Ip6McastL3SsmCompressSip", \
   5130     "Vip4", \
   5131     "Vip6", \
   5132     "Vip4Direct", \
   5133     "Vip6Direct"  \
   5134 }
   5135 
   5136 /* Field Qualifier LoopbackType (for bcm_field_qualify_LoopbackType). */
   5137 typedef enum bcm_field_LoopbackType_e {
   5138     bcmFieldLoopbackTypeAny = 0,        /* Don't care. */
   5139     bcmFieldLoopbackTypeMirror = 1,     /* Mirrored frames. */
   5140     bcmFieldLoopbackTypeWlan = 2,       /* WLAN frames. */
   5141     bcmFieldLoopbackTypeMim = 3,        /* Mac in Mac frames. */
   5142     bcmFieldLoopbackTypeRedirect = 4,   /* Redirected frames. */
   5143     bcmFieldLoopbackTypeTrillNetwork = 5, /* Trill network port loopback. */
   5144     bcmFieldLoopbackTypeTrillAccess = 6, /* Trill access port loopback. */
   5145     bcmFieldLoopbackTypeRegexMatch = 7, /* Regex NLF loopback packet. */
   5146     bcmFieldLoopbackTypeMplsP2mp = 8,   /* MPLS P2MP second pass loopback
   5147                                            packet. */
   5148     bcmFieldLoopbackTypeQcn = 9,        /* QCN loopback packet. */
   5149     bcmFieldLoopbackTypeWlanEncap = 10, /* WLAN ENCAP NLF loopback packet. */
   5150     bcmFieldLoopbackTypeWlanEncapEncrypt = 11, /* WLAN ENCAP needs encryption loopback
   5151                                            packet. */
   5152     bcmFieldLoopbackTypeWlanDecap = 12, /* WLAN DECAP NLF loopback packet. */
   5153     bcmFieldLoopbackTypePassThru = 13,  /* PassThru NLF loopback packet. */
   5154     bcmFieldLoopbackTypeMplsExtendedLookup = 14, /* MPLS extended lookup packet. */
   5155     bcmFieldLoopbackTypeL2Gre = 15,     /* L2 GRE loopback packet. */
   5156     bcmFieldLoopbackTypeVxlan = 16,     /* Vxlan loopback packet. */
   5157     bcmFieldLoopbackTypeTunnelAny = 17, /* MinM, L2GRE and VXLAN tunnel loopback
   5158                                            packet. */
   5159     bcmFieldLoopbackTypeMasquerade = 18, /* Process as if it was received on
   5160                                            front panel port. */
   5161     bcmFieldLoopbackTypeL2Tunnel2ndPassFlow = 19, /* L2 Tunnel second pass flow. */
   5162     bcmFieldLoopbackTypeMasqueradeWithSwitchDropIndication = 20, /* Loopback header with switch probe
   5163                                            Drop Indicator */
   5164     bcmFieldLoopbackTypeCount = 21      /* Always Last. Not a usable value. */
   5165 } bcm_field_LoopbackType_t;
   5166 
   5167 #define BCM_FIELD_LOOPBACKTYPE_STRINGS \
   5168 { \
   5169     "Any", \
   5170     "Mirror", \
   5171     "Wlan", \
   5172     "Mim", \
   5173     "Redirect", \
   5174     "TrillNetwork", \
   5175     "TrillAccess", \
   5176     "RegexMatch", \
   5177     "MplsP2mp", \
   5178     "Qcn", \
   5179     "WlanEncap", \
   5180     "WlanEncapEncrypt", \
   5181     "WlanDecap", \
   5182     "PassThru", \
   5183     "MplsExtendedLookup", \
   5184     "L2Gre", \
   5185     "Vxlan", \
   5186     "TunnelAny", \
   5187     "Masquerade", \
   5188     "L2Tunnel2ndPassFlow", \
   5189     "MasqueradeWithSwitchDropIndication"  \
   5190 }
   5191 
   5192 /* 
   5193  * Field Qualifier Port Type (for
   5194  * bcm_field_qualify_TxPortType/bcm_field_qualify_RxPortType).
   5195  */
   5196 typedef enum bcm_field_PortType_e {
   5197     bcmFieldPortTypeEthernet = 0,   /* Ethernet Port. */
   5198     bcmFieldPortTypeCpu = 1,        /* CPU port. */
   5199     bcmFieldPortTypeLoopback = 2,   /* Loopback Port. */
   5200     bcmFieldPortTypeHiGig3 = 3,     /* HiGig3 Port. */
   5201     bcmFieldPortTypeCount = 4       /* Always Last. Not a usable value. */
   5202 } bcm_field_PortType_t;
   5203 
   5204 #define BCM_FIELD_PORTTYPE_STRINGS \
   5205 { \
   5206     "Ethernet", \
   5207     "Cpu", \
   5208     "Loopback", \
   5209     "HiGig3"  \
   5210 }
   5211 
   5212 /* 
   5213  * Field Qualifier Destination Type (for
   5214  * bcm_field_qualify_DstType/bcm_field_qualify_LoopbackHdrDstType).
   5215  */
   5216 typedef enum bcm_field_DstType_e {
   5217     bcmFieldDstTypeL2EgrIntf = 0,   /* L2 Outgoing Interface. */
   5218     bcmFieldDstTypeVp = 1,          /* Virtual Port. */
   5219     bcmFieldDstTypeEcmp = 2,        /* ECMP. */
   5220     bcmFieldDstTypeL3Egr = 3,       /* Next Hop Index. */
   5221     bcmFieldDstTypeL2Mcast = 4,     /* Layer2 Multicast. */
   5222     bcmFieldDstTypeL3Mcast = 5,     /* Layer3 Multicast. */
   5223     bcmFieldDstTypeCount = 6        /* Always Last. Not a usable value. */
   5224 } bcm_field_DstType_t;
   5225 
   5226 #define BCM_FIELD_DSTTYPE_STRINGS \
   5227 { \
   5228     "L2EgrIntf", \
   5229     "Vp", \
   5230     "Ecmp", \
   5231     "L3Egr", \
   5232     "L2Mcast", \
   5233     "L3Mcast"  \
   5234 }
   5235 
   5236 /* Field Qualifier TunnelTerminationProcessingProfile. */
   5237 typedef enum bcm_field_TunnelTerminationProcessingProfile_e {
   5238     bcmFieldTunnelTerminationProcessingProfilePppoe = 5, /* Don't care. */
   5239     bcmFieldTunnelTerminationProcessingProfileL2tp = 3 /* Standard Fibre Channel header. */
   5240 } bcm_field_TunnelTerminationProcessingProfile_t;
   5241 
   5242 #define BCM_FIELD_TUNNELTERMINATIONPROCESSINGPROFILE_STRINGS \
   5243 { \
   5244     "Pppoe", \
   5245     "L2tp"  \
   5246 }
   5247 
   5248 /* 
   5249  * Field Qualifier FibreChan (for bcm_field_qualify_FibreChanOuter and
   5250  * bcm_field_qualify_FibreChanInner).
   5251  */
   5252 typedef enum bcm_field_FibreChan_e {
   5253     bcmFieldFibreChanAny = 0,       /* Don't care. */
   5254     bcmFieldFibreChan = 1,          /* Standard Fibre Channel header. */
   5255     bcmFieldFibreChanEncap = 2,     /* Encapsulation (ENC) header. */
   5256     bcmFieldFibreChanVirtual = 3,   /* Virtual fabric tag (VFT) header. */
   5257     bcmFieldFibreChanRouted = 4,    /* Interfabric routing (IFR) header. */
   5258     bcmFieldFibreChanCount = 5      /* Always Last. Not a usable value. */
   5259 } bcm_field_FibreChan_t;
   5260 
   5261 #define BCM_FIELD_FIBRECHAN_STRINGS \
   5262 { \
   5263     "Any", \
   5264     "bcmFieldFibreChan", \
   5265     "Encap", \
   5266     "Virtual", \
   5267     "Routed"  \
   5268 }
   5269 
   5270 /* Field Qualifier TunnelType (for bcm_field_qualify_TunnelType). */
   5271 typedef enum bcm_field_TunnelType_e {
   5272     bcmFieldTunnelTypeAny = 0,          /* Don't care. */
   5273     bcmFieldTunnelTypeIp = 1,           /* IP in IP, Istap, GRE. */
   5274     bcmFieldTunnelTypeMpls = 2,         /* MPLS. */
   5275     bcmFieldTunnelTypeMim = 3,          /* Mac in Mac. */
   5276     bcmFieldTunnelTypeWlanWtpToAc = 4,  /* WLAN access point to access control. */
   5277     bcmFieldTunnelTypeWlanAcToAc = 5,   /* WLAN access control to access
   5278                                            control. */
   5279     bcmFieldTunnelTypeAutoMulticast = 6, /* IPV4 Automatic multicast. */
   5280     bcmFieldTunnelTypeTrill = 7,        /* Trill. */
   5281     bcmFieldTunnelTypeL2Gre = 8,        /* L2 GRE. */
   5282     bcmFieldTunnelTypeIp6 = 9,          /* IPv6 termination. */
   5283     bcmFieldTunnelTypeMplsControlWord = 10, /* MPLS with Control Word terminated. */
   5284     bcmFieldTunnelTypeMplsLabel2 = 11,  /* 2 MPLS labels terminated. */
   5285     bcmFieldTunnelTypeMplsLabel2ControlWord = 12, /* 2 MPLS labels with Control Word
   5286                                            terminated. */
   5287     bcmFieldTunnelTypeMplsLabel3 = 13,  /* 3 MPLS labels terminated. */
   5288     bcmFieldTunnelTypeMplsLabel3ControlWord = 14, /* 3 MPLS labels with Control Word
   5289                                            terminated. */
   5290     bcmFieldTunnelTypeVxlan = 15,       /* Vxlan Tunnel Packet. */
   5291     bcmFieldTunnelTypeNone = 16,        /* L2 termination. */
   5292     bcmFieldTunnelTypeVxlanFlex = 17,   /* Vxlan Flex Tunnel Packet. */
   5293     bcmFieldTunnelTypeGpe = 18,         /* GPE (Generic Protocol Extension for
   5294                                            VXLAN) Tunnel Packet. */
   5295     bcmFieldTunnelTypeGeneve = 19,      /* Geneve Tunnel Packet. */
   5296     bcmFieldTunnelTypeMplsOverGre = 20, /* MPLS Over GRE Tunnel Packet. */
   5297     bcmFieldTunnelTypeNsh = 21,         /* Network Service Header (NSH) Tunnel
   5298                                            Packet. */
   5299     bcmFieldTunnelTypeSRv6 = 22,        /* Ipv6 Segment Routing Tunnel Packet. */
   5300     bcmFieldTunnelTypeGre4 = 23,        /* Gre4 */
   5301     bcmFieldTunnelTypeGre8WithKey = 24, /* Gre with key */
   5302     bcmFieldTunnelTypeGre12 = 25,       /* Gre12 */
   5303     bcmFieldTunnelTypeUdp = 26,         /* Udp */
   5304     bcmFieldTunnelTypeL2TPv3OverUdp = 27, /* L2TPv3 over UDP. */
   5305     bcmFieldTunnelTypeEsp = 28,         /* ESP */
   5306     bcmFieldTunnelTypeEspOverUdp = 29,  /* ESP UDP. */
   5307     bcmFieldTunnelTypeCount = 30        /* Always Last. Not a usable value. */
   5308 } bcm_field_TunnelType_t;
   5309 
   5310 #define BCM_FIELD_TUNNELTYPE_STRINGS \
   5311 { \
   5312     "Any", \
   5313     "Ip", \
   5314     "Mpls", \
   5315     "Mim", \
   5316     "WlanWtpToAc", \
   5317     "WlanAcToAc", \
   5318     "AutoMulticast", \
   5319     "Trill", \
   5320     "L2Gre", \
   5321     "Ip6", \
   5322     "MplsControlWord", \
   5323     "MplsLabel2", \
   5324     "MplsLabel2ControlWord", \
   5325     "MplsLabel3", \
   5326     "MplsLabel3ControlWord", \
   5327     "Vxlan", \
   5328     "None", \
   5329     "VxlanFlex", \
   5330     "Gpe", \
   5331     "Geneve", \
   5332     "MplsOverGre", \
   5333     "Nsh", \
   5334     "SRv6", \
   5335     "Gre4", \
   5336     "Gre8WithKey", \
   5337     "Gre12", \
   5338     "Udp", \
   5339     "L2TPv3OverUdp", \
   5340     "Esp", \
   5341     "EspOverUdp"  \
   5342 }
   5343 
   5344 /* Field Qualifier IpType (for bcm_field_qualify_IpType). */
   5345 typedef enum bcm_field_IpType_e {
   5346     bcmFieldIpTypeAny = 0,              /* Don't care. */
   5347     bcmFieldIpTypeNonIp = 1,            /* Non-Ip packet. */
   5348     bcmFieldIpTypeIpv4Not = 2,          /* Anything but IPv4 packets. */
   5349     bcmFieldIpTypeIpv4NoOpts = 3,       /* IPv4 without options. */
   5350     bcmFieldIpTypeIpv4WithOpts = 4,     /* IPv4 with options. */
   5351     bcmFieldIpTypeIpv4Any = 5,          /* Any IPv4 packet. */
   5352     bcmFieldIpTypeIpv6Not = 6,          /* Anything but IPv6 packets. */
   5353     bcmFieldIpTypeIpv6NoExtHdr = 7,     /* IPv6 packet without any extension
   5354                                            header. */
   5355     bcmFieldIpTypeIpv6OneExtHdr = 8,    /* IPv6 packet with one extension
   5356                                            header. */
   5357     bcmFieldIpTypeIpv6TwoExtHdr = 9,    /* IPv6 packet with two or more
   5358                                            extension headers. */
   5359     bcmFieldIpTypeIpv6 = 10,            /* IPv6 packet. */
   5360     bcmFieldIpTypeIp = 11,              /* IPv4 and IPv6 packets. */
   5361     bcmFieldIpTypeArp = 12,             /* ARP/RARP. */
   5362     bcmFieldIpTypeArpRequest = 13,      /* ARP Request. */
   5363     bcmFieldIpTypeArpReply = 14,        /* ARP Reply. */
   5364     bcmFieldIpTypeMplsUnicast = 15,     /* Mpls unicast frame (EtherType =
   5365                                            0x8847). */
   5366     bcmFieldIpTypeMplsMulticast = 16,   /* Mpls mcast frame   (EtherType =
   5367                                            0x8848). */
   5368     bcmFieldIpTypeTrill = 17,           /* Trill packet. */
   5369     bcmFieldIpTypeMim = 18,             /* Mac-in-Mac frame. */
   5370     bcmFieldIpTypeMpls = 19,            /* MPLS Packets. */
   5371     bcmFieldIpTypeCfm = 20,             /* CFM Packets (0x8902). */
   5372     bcmFieldIpTypeFCoE = 21,            /* Fiber Channel Packets (0x8906). */
   5373     bcmFieldIpTypeCount = 22            /* Always Last. Not a usable value. */
   5374 } bcm_field_IpType_t;
   5375 
   5376 #define BCM_FIELD_IPTYPE_STRINGS \
   5377 { \
   5378     "Any", \
   5379     "NonIp", \
   5380     "Ipv4Not", \
   5381     "Ipv4NoOpts", \
   5382     "Ipv4WithOpts", \
   5383     "Ipv4Any", \
   5384     "Ipv6Not", \
   5385     "Ipv6NoExtHdr", \
   5386     "Ipv6OneExtHdr", \
   5387     "Ipv6TwoExtHdr", \
   5388     "Ipv6", \
   5389     "Ip", \
   5390     "Arp", \
   5391     "ArpRequest", \
   5392     "ArpReply", \
   5393     "MplsUnicast", \
   5394     "MplsMulticast", \
   5395     "Trill", \
   5396     "Mim", \
   5397     "Mpls", \
   5398     "Cfm", \
   5399     "FCoE"  \
   5400 }
   5401 
   5402 /* 
   5403  * Field Qualifier IpProtocolCommon (for
   5404  * bcm_field_qualify_IpProtocolCommon).
   5405  */
   5406 typedef enum bcm_field_IpProtocolCommon_e {
   5407     bcmFieldIpProtocolCommonTcp = 0,    /* TCP Packets (6) */
   5408     bcmFieldIpProtocolCommonUdp = 1,    /* UDP Packets (17) */
   5409     bcmFieldIpProtocolCommonIgmp = 2,   /* IGMP Packets (2) */
   5410     bcmFieldIpProtocolCommonIcmp = 3,   /* ICMP Packets (1) */
   5411     bcmFieldIpProtocolCommonIp6Icmp = 4, /* IPv6 ICMP Packets (58) */
   5412     bcmFieldIpProtocolCommonIp6HopByHop = 5, /* IPv6 Hop-by-Hop Packets (0) */
   5413     bcmFieldIpProtocolCommonIpInIp = 6, /* IPv4 Payload Packets (4) */
   5414     bcmFieldIpProtocolCommonTcpUdp = 7, /* TCP and UDP Packets (6 & 17) */
   5415     bcmFieldIpProtocolCommonUnknown = 8, /* Not-standard IP Protocol. */
   5416     bcmFieldIpProtocolCommonIp6InIp = 9, /* IPv6 (0x29) */
   5417     bcmFieldIpProtocolCommonMplsInIp = 10, /* MPLS (0x89) */
   5418     bcmFieldIpProtocolCommonCount = 11  /* Always Last. Not a usable value. */
   5419 } bcm_field_IpProtocolCommon_t;
   5420 
   5421 #define BCM_FIELD_IPPROTOCOLCOMMON_STRINGS \
   5422 { \
   5423     "Tcp", \
   5424     "Udp", \
   5425     "Igmp", \
   5426     "Icmp", \
   5427     "Ip6Icmp", \
   5428     "Ip6HopByHop", \
   5429     "IpInIp", \
   5430     "TcpUdp", \
   5431     "Unknown", \
   5432     "Ip6InIp", \
   5433     "MplsInIp"  \
   5434 }
   5435 
   5436 /* Field Qualifier IpFrag (for bcm_field_qualify_IpFrag). */
   5437 typedef enum bcm_field_IpFrag_e {
   5438     bcmFieldIpFragNon = 0,          /* Non-fragmented packet. */
   5439     bcmFieldIpFragFirst = 1,        /* First fragment of fragmented packet. */
   5440     bcmFieldIpFragNonOrFirst = 2,   /* Non-fragmented or first fragment. */
   5441     bcmFieldIpFragNotFirst = 3,     /* Not the first fragment. */
   5442     bcmFieldIpFragAny = 4,          /* Any fragment of fragmented packet. */
   5443     bcmFieldIpFragCount = 5         /* Always last. Not a usable value. */
   5444 } bcm_field_IpFrag_t;
   5445 
   5446 /* Urpf mode */
   5447 typedef enum bcm_field_urpf_mode_e {
   5448     bcmFieldUrpfLoose = 0,  /* Loose mode Unicast RPF. */
   5449     bcmFieldUrpfStrict = 1, /* Strict mode Unicast RPF */
   5450     bcmFieldUrpfCount = 2   /* Always Last. Not a usable value. */
   5451 } bcm_field_urpf_mode_t;
   5452 
   5453 /* 
   5454  * Field Qualifier L2Format (for bcm_field_qualify_L2Format).
   5455  * Used to qualify packets based on L2 header format.
   5456  */
   5457 typedef enum bcm_field_L2Format_e {
   5458     bcmFieldL2FormatAny = 0,            /* Do not qualify on L2 format. */
   5459     bcmFieldL2FormatEthII = 1,          /* Ethernet 2 (802.2). */
   5460     bcmFieldL2FormatSnap = 2,           /* Sub-Network Access Protocol (SNAP). */
   5461     bcmFieldL2FormatLlc = 3,            /* Logical Link Control. */
   5462     bcmFieldL2Format802dot3 = 4,        /* 802.3 frame format. */
   5463     bcmFieldL2FormatDeprecated5 = 5,    /* Deprecated. Do not use. */
   5464     bcmFieldL2FormatMiM = 6,            /* MAC-In-MAC. */
   5465     bcmFieldL2FormatCount = 7           /* Always Last. Not a usable value. */
   5466 } bcm_field_L2Format_t;
   5467 
   5468 #define BCM_FIELD_L2FORMAT_STRINGS \
   5469 { \
   5470     "Any", \
   5471     "EthII", \
   5472     "Snap", \
   5473     "Llc", \
   5474     "802dot3", \
   5475     "Deprecated5", \
   5476     "MiM"  \
   5477 }
   5478 
   5479 /* 
   5480  * Field action olp_header_type (for bcmFieldActionOamOlpHeaderAdd).
   5481  * Used to specify the type of the OLP header to be added.
   5482  */
   5483 typedef enum bcm_field_olp_header_type_e {
   5484     bcmFieldOlpHeaderTypeEthCC = 0,     /* Ethernet Oam Down MEP Ccm packet. */
   5485     bcmFieldOlpHeaderTypeEthOamCcm = bcmFieldOlpHeaderTypeEthCC, /* Ethernet Oam Down MEP Ccm packet. */
   5486     bcmFieldOlpHeaderTypeEthLmDm = 1,   /* Ethernet Oam Down MEP LM/DM packet. */
   5487     bcmFieldOlpHeaderTypeEthOamLmDm = bcmFieldOlpHeaderTypeEthLmDm, /* Ethernet Oam Down MEP LM/DM packet. */
   5488     bcmFieldOlpHeaderTypeEthOthers = 2, /* Ethernet Oam Down MEP Other opcode
   5489                                            packet. */
   5490     bcmFieldOlpHeaderTypeEthOamOthers = bcmFieldOlpHeaderTypeEthOthers, /* Ethernet Oam Down MEP Other opcode
   5491                                            packet. */
   5492     bcmFieldOlpHeaderTypeBfdOam = 3,    /* BFD Oam packet */
   5493     bcmFieldOlpHeaderTypeEthOamLm = 4,  /* Ethernet Oam Down Mep LM packet */
   5494     bcmFieldOlpHeaderTypeEthOamDm = 5,  /* Ethernet Oam Down Mep DM packet */
   5495     bcmFieldOlpHeaderTypeBhhOamCcm = 6, /* BHH OAM CCM packet */
   5496     bcmFieldOlpHeaderTypeBhhOamLm = 7,  /* BHH Oam LM packet */
   5497     bcmFieldOlpHeaderTypeBhhOamDm = 8,  /* BHH Oam DM packet */
   5498     bcmFieldOlpHeaderTypeBhhOamOthers = 9, /* BHH OAM other opcode type packet */
   5499     bcmFieldOlpHeaderTypeRfc6374Dlm = 10, /* MPLS LM/DM DLM packet */
   5500     bcmFieldOlpHeaderTypeRfc6374Dm = 11, /* MPLS LM/DM DM packet */
   5501     bcmFieldOlpHeaderTypeRfc6374DlmPlusDm = 12, /* MPLS LM/DM DLM + DM packet */
   5502     bcmFieldOlpHeaderTypeRfc6374Ilm = 13, /* MPLS LM/DM ILM packet */
   5503     bcmFieldOlpHeaderTypeRfc6374IlmPlusDm = 14, /* MPLS LM/DM ILM + DM packet */
   5504     bcmFieldOlpHeaderTypeSat = 15,      /* Down Service Activation Test packet */
   5505     bcmFieldOlpHeaderTypeOtherAch = 16, /* OAM packets with other ACH types */
   5506     bcmFieldOlpHeaderTypeEthOamUpMepCcm = 17, /* Ethernet Oam Up MEP Ccm packet. */
   5507     bcmFieldOlpHeaderTypeEthOamUpMepLm = 18, /* Ethernet Oam Up MEP Lm packet. */
   5508     bcmFieldOlpHeaderTypeEthOamUpMepDm = 19, /* Ethernet Oam Up MEP Dm packet. */
   5509     bcmFieldOlpHeaderTypeEthOamUpMepOthers = 20, /* Ethernet Oam Up MEP Other opcode
   5510                                            packet. */
   5511     bcmFieldOlpHeaderTypeUpSat = 21,    /* Up Service Activation Test packet. */
   5512     bcmFieldOlpHeaderTypeMacSecEncrypt = 22, /* OLP header type for MACSEC Encrypt
   5513                                            flow. */
   5514     bcmFieldOlpHeaderTypeMacSecDecrypt = 23, /* OLP header type for MACSEC Decrypt
   5515                                            flow. */
   5516     bcmFieldOlpHeaderTypeCount = 24     /* Always Last. Not a usable value. */
   5517 } bcm_field_olp_header_type_t;
   5518 
   5519 #define BCM_FIELD_OLP_HEADER_TYPE_STRINGS \
   5520 { \
   5521     "EthCC", \
   5522     "EthLmDm", \
   5523     "EthOthers", \
   5524     "BfdOam", \
   5525     "EthOamLm", \
   5526     "EthOamDm", \
   5527     "BhhOamCcm", \
   5528     "BhhOamLm", \
   5529     "BhhOamDm", \
   5530     "BhhOamOthers", \
   5531     "Rfc6374Dlm", \
   5532     "Rfc6374Dm", \
   5533     "Rfc6374DlmPlusDm", \
   5534     "Rfc6374Ilm", \
   5535     "Rfc6374IlmPlusDm", \
   5536     "Sat", \
   5537     "OtherAch", \
   5538     "EthOamUpMepCcm", \
   5539     "EthOamUpMepLm", \
   5540     "EthOamUpMepDm", \
   5541     "EthOamUpMepOthers", \
   5542     "UpSat", \
   5543     "MacSecEncrypt", \
   5544     "MacSecDecrypt"  \
   5545 }
   5546 
   5547 /* 
   5548  * Field action oam_domain (for bcmFieldActionOamDomain).
   5549  * Used to specify the OAM domain on which endpoints lookup has to be
   5550  * done.
   5551  */
   5552 typedef enum bcm_field_oam_domain_e {
   5553     bcmFieldOamDomainCVlan = 0,         /* Endpoints configured on C-VLAN. */
   5554     bcmFieldOamDomainSVlan = 1,         /* Endpoints configured on S-VLAN. */
   5555     bcmFieldOamDomainDoubleVlan = 2,    /* Endpoints configured on S+C-VLAN. */
   5556     bcmFieldOamDomainPbbTe = 3,         /* Endpoints configured on PBB-TE. */
   5557     bcmFieldOamDomainMplsLmDmSectionPort = 4, /* RFC 6374 Section - Port based
   5558                                            loss/delay measurement. */
   5559     bcmFieldOamDomainMplsLmDmSectionInnerVlan = 5, /* RFC 6374 Section - Port + Inner vlan
   5560                                            based loss/delay measurement. */
   5561     bcmFieldOamDomainMplsLmDmSectionOuterVlan = 6, /* RFC 6374 Section - Port + Outer vlan
   5562                                            based loss/delay measurement. */
   5563     bcmFieldOamDomainMplsLmDmSectionOuterPlusInnerVlan = 7, /* RFC 6374 Section - Port + Outer vlan
   5564                                            + Inner Vlan based loss/delay
   5565                                            measurement. */
   5566     bcmFieldOamDomainMplsLmDmPw = 8,    /* RFC 6374 Pseudowire based loss/delay
   5567                                            measurement. */
   5568     bcmFieldOamDomainMplsLmDmLspLabel = 9, /* RFC 6374 LSP based loss/delay
   5569                                            measurement. */
   5570     bcmFieldOamDomainCount = 10         /* Always Last. Not a usable value. */
   5571 } bcm_field_oam_domain_t;
   5572 
   5573 #define BCM_FIELD_OAM_DOMAIN_STRINGS \
   5574 { \
   5575     "CVlan", \
   5576     "SVlan", \
   5577     "DoubleVlan", \
   5578     "PbbTe", \
   5579     "MplsLmDmSectionPort", \
   5580     "MplsLmDmSectionInnerVlan", \
   5581     "MplsLmDmSectionOuterVlan", \
   5582     "MplsLmDmSectionOuterPlusInnerVlan", \
   5583     "MplsLmDmPw", \
   5584     "MplsLmDmLspLabel"  \
   5585 }
   5586 
   5587 /* 
   5588  * Field Qualify oam_drop_mep_type (for bcmFieldQualifyIngressDropXXX).
   5589  * Used to Qualify on Drop reasons related to OAM Data or Control packets
   5590  * based on MEP type.
   5591  */
   5592 typedef enum bcm_field_oam_drop_mep_type_e {
   5593     bcmFieldOamDropInvalid = 0,         /* Invalid. */
   5594     bcmFieldOamDropPortDownMepControl = 1, /* Drop Reasons for Port Down MEP
   5595                                            control packets. */
   5596     bcmFieldOamDropPortDownMepData = 2, /* Drop Reasons for Port Down MEP data
   5597                                            packets. */
   5598     bcmFieldOamDropInnerVlanDownMepControl = 3, /* Drop Reasons for Inner Vlan Down MEP
   5599                                            control packets. */
   5600     bcmFieldOamDropInnerVlanDownMepData = 4, /* Drop Reasons for Inner Vlan Down MEP
   5601                                            data packets. */
   5602     bcmFieldOamDropOuterVlanDownMepControl = 5, /* Drop Reasons for Outer Vlan Down MEP
   5603                                            control packets. */
   5604     bcmFieldOamDropOuterVlanDownMepData = 6, /* Drop Reasons for Outer Vlan Down MEP
   5605                                            data packets. */
   5606     bcmFieldOamDropInnerPlusOuterVlanDownMepControl = 7, /* Drop Reasons for Inner + Outer Vlan
   5607                                            Down MEP control packets. */
   5608     bcmFieldOamDropInnerPlusOuterVlanDownMepData = 8, /* Drop Reasons for Inner + Outer Vlan
   5609                                            Down MEP data packets. */
   5610     bcmFieldOamDropInnerVlanUpMepData = 9, /* Drop Reasons for Inner Vlan Up MEP
   5611                                            data packets. */
   5612     bcmFieldOamDropOuterVlanUpMepData = 10, /* Drop Reasons for Outer Vlan Up MEP
   5613                                            data packets. */
   5614     bcmFieldOamDropInnerPlusOuterVlanUpMepData = 11, /* Drop Reasons for Inner + Outer Vlan
   5615                                            Up MEP data packets. */
   5616     bcmFieldOamDropSectionPortMepControl = 12, /* Drop Reasons for Port Section MEP
   5617                                            control packets. */
   5618     bcmFieldOamDropSectionPortMepData = 13, /* Drop Reasons for Port Section MEP
   5619                                            data packets. */
   5620     bcmFieldOamDropSectionInnerVlanMepControl = 14, /* Drop Reasons for Inner  Vlan Section
   5621                                            MEP control packets. */
   5622     bcmFieldOamDropSectionInnerVlanMepData = 15, /* Drop Reasons for Inner Vlan Section
   5623                                            MEP data packets. */
   5624     bcmFieldOamDropSectionOuterVlanMepControl = 16, /* Drop Reasons for Outer Vlan Section
   5625                                            MEP control packets. */
   5626     bcmFieldOamDropSectionOuterVlanMepData = 17, /* Drop Reasons for Outer Vlan Section
   5627                                            MEP data packets. */
   5628     bcmFieldOamDropSectionInnerPlusOuterVlanMepControl = 18, /* Drop Reasons for Inner + Outer Vlan
   5629                                            Section MEP control packets. */
   5630     bcmFieldOamDropSectionInnerPlusOuterVlanMepData = 19, /* Drop Reasons for Inner + Outer Vlan
   5631                                            Section MEP data packets. */
   5632     bcmFieldOamDropLSPMepControl = 20,  /* Drop Reasons for LSP MEP control
   5633                                            packets. */
   5634     bcmFieldOamDropLSPMepData = 21,     /* Drop Reasons for LSP MEP data
   5635                                            packets. */
   5636     bcmFieldOamDropPwMepControl = 22,   /* Drop Reasons for PseudoWire MEP
   5637                                            control packets. */
   5638     bcmFieldOamDropPwMepData = 23,      /* Drop Reasons for PseudoWire MEP data
   5639                                            packets. */
   5640     bcmFieldOamDropCount = 24           /* Always Last. Not a usable value. */
   5641 } bcm_field_oam_drop_mep_type_t;
   5642 
   5643 #define BCM_FIELD_OAM_DROP_MEP_TYPE_STRINGS \
   5644 { \
   5645     "Invalid", \
   5646     "PortDownMepControl", \
   5647     "PortDownMepData", \
   5648     "InnerVlanDownMepControl", \
   5649     "InnerVlanDownMepData", \
   5650     "OuterVlanDownMepControl", \
   5651     "OuterVlanDownMepData", \
   5652     "InnerPlusOuterVlanDownMepControl", \
   5653     "InnerPlusOuterVlanDownMepData", \
   5654     "InnerVlanUpMepData", \
   5655     "OuterVlanUpMepData", \
   5656     "InnerPlusOuterVlanUpMepData", \
   5657     "SectionPortMepControl", \
   5658     "SectionPortMepData", \
   5659     "SectionInnerVlanMepControl", \
   5660     "SectionInnerVlanMepData", \
   5661     "SectionOuterVlanMepControl", \
   5662     "SectionOuterVlanMepData", \
   5663     "SectionInnerPlusOuterVlanMepControl", \
   5664     "SectionInnerPlusOuterVlanMepData", \
   5665     "LSPMepControl", \
   5666     "LSPMepData", \
   5667     "PwMepControl", \
   5668     "PwMepData"  \
   5669 }
   5670 
   5671 /* 
   5672  * Field Qualifier Packet Forward Type (for
   5673  * bcm_field_qualify_PktFwdType).
   5674  */
   5675 typedef enum bcm_field_PktFwdType_e {
   5676     bcmFieldPktFwdTypeL2 = 0,           /* Packet forward type is L2. */
   5677     bcmFieldPktFwdTypeL3Ucast = 1,      /* Packet forward type is L3 unicast. */
   5678     bcmFieldPktFwdTypeL3Mcast = 2,      /* Packet forward type is IP multicast. */
   5679     bcmFieldPktFwdTypeCopyToCpu = 3,    /* Packet forward type is copy to cpu. */
   5680     bcmFieldPktFwdTypeL2Ucast = 4,      /* Packet forward type is L2 unicast. */
   5681     bcmFieldPktFwdTypeL2Mcast = 5,      /* Packet forward type is L2 multicast. */
   5682     bcmFieldPktFwdTypeL3Any = 6,        /* Packet forward type is L3 Any. */
   5683     bcmFieldPktFwdTypeCount = 7         /* Always Last. Not a usable value. */
   5684 } bcm_field_PktFwdType_t;
   5685 
   5686 #define BCM_FIELD_PKTFWDTYPE_STRINGS \
   5687 { \
   5688     "L2", \
   5689     "L3Ucast", \
   5690     "L3Mcast", \
   5691     "CopyToCpu", \
   5692     "L2Ucast", \
   5693     "L2Mcast", \
   5694     "L3Any"  \
   5695 }
   5696 
   5697 /* LLC Header Format. */
   5698 typedef struct bcm_field_llc_header_s {
   5699     uint8 dsap; 
   5700     uint8 ssap; 
   5701     uint8 control; 
   5702 } bcm_field_llc_header_t;
   5703 
   5704 /* SNAP Header Format. */
   5705 typedef struct bcm_field_snap_header_s {
   5706     uint32 org_code; 
   5707     uint16 type; 
   5708 } bcm_field_snap_header_t;
   5709 
   5710 /* 
   5711  * Range Check.
   5712  * 
   5713  * bcm_field_range_create requires exactly one of SRCPORT or DSTPORT or
   5714  * FIELD_RANGE_OUTER_VLAN or FIELD_RANGE_PACKET_LENGTH.
   5715  */
   5716 #define BCM_FIELD_RANGE_SRCPORT         0x00000001 /* Check source port range */
   5717 #define BCM_FIELD_RANGE_DSTPORT         0x00000002 /* Check dest port range */
   5718 #define BCM_FIELD_RANGE_TCP             0x00000004 /* Check TCP port range */
   5719 #define BCM_FIELD_RANGE_UDP             0x00000008 /* Check UDP port range */
   5720 #define BCM_FIELD_RANGE_INVERT          0x00000010 /* Check for match outside
   5721                                                       specified port range */
   5722 #define BCM_FIELD_RANGE_EXTERNAL        0x00000020 /* Create range checker on
   5723                                                       External table (5661x
   5724                                                       only) */
   5725 #define BCM_FIELD_RANGE_OUTER_VLAN      0x00000040 /* Check outer VLAN ID range */
   5726 #define BCM_FIELD_RANGE_INNER_VLAN      0x00000080 /* Check inner VLAN ID range */
   5727 #define BCM_FIELD_RANGE_PACKET_LENGTH   0x00000100 /* Check packet length range */
   5728 #define BCM_FIELD_RANGE_LOOKUP          0x00000200 /* Create range checker on
   5729                                                       Lookup table */
   5730 #define BCM_FIELD_RANGE_OUT_VPORT       0x00000400 /* Check OutVPort range */
   5731 #define BCM_FIELD_RANGE_REPLACE         0x00000800 /* Modify configurations of
   5732                                                       an existing range checker.
   5733                                                       Using this flag, the Range
   5734                                                       checker's range limits
   5735                                                       (min/max) and Type can be
   5736                                                       modified dynamically. */
   5737 
   5738 /* Opaque handle to a field range. */
   5739 typedef uint32 bcm_field_range_t;
   5740 
   5741 /* Field udf_spec defines the locations of user-defined byte fields. */
   5742 typedef struct bcm_field_udf_spec_s {
   5743     uint32 offset[384]; 
   5744 } bcm_field_udf_spec_t;
   5745 
   5746 /* Field qset defines the set of fields used for lookup. */
   5747 typedef struct bcm_field_qset_s {
   5748     SHR_BITDCL w[_SHR_BITDCLSIZE(BCM_FIELD_QUALIFY_MAX)]; 
   5749     SHR_BITDCL udf_map[_SHR_BITDCLSIZE(BCM_FIELD_USER_NUM_UDFS)]; 
   5750 } bcm_field_qset_t;
   5751 
   5752 #define BCM_FIELD_QSET_INIT(qset)  \
   5753     sal_memset(&(qset), 0, sizeof(bcm_field_qset_t)) 
   5754 
   5755 #define BCM_FIELD_QSET_ADD(qset, q)  SHR_BITSET(((qset).w), (q)) 
   5756 
   5757 #define BCM_FIELD_QSET_REMOVE(qset, q)  SHR_BITCLR(((qset).w), (q)) 
   5758 
   5759 #define BCM_FIELD_QSET_TEST(qset, q)  SHR_BITGET(((qset).w), (q)) 
   5760 
   5761 /* 
   5762  * Group Priority.
   5763  * 
   5764  * Numerically higher values are higher priority. Each priority value may
   5765  * be used only once. BCM_FIELD_GROUP_PRIO_ANY can be used to have a
   5766  * priority assigned automatically.
   5767  */
   5768 #define BCM_FIELD_GROUP_PRIO_ANY    -0x7fffffff 
   5769 
   5770 /* 
   5771  * Copy To CPU Flags.
   5772  * 
   5773  * bcm_field_action_copytocpu_config_set requires atleast of these flags
   5774  * to be configured for CopyToCpu action.
   5775  */
   5776 #define BCM_FIELD_COPYTOCPU_GREEN_PACKET    0x00000001 /* Copy to CPU only Green
   5777                                                           Packets regardless of
   5778                                                           its drop */
   5779 #define BCM_FIELD_COPYTOCPU_YELLOW_PACKET   0x00000002 /* Copy to CPU only
   5780                                                           Yellow Packets
   5781                                                           regardless of its drop */
   5782 #define BCM_FIELD_COPYTOCPU_RED_PACKET      0x00000004 /* Copy to CPU only Red
   5783                                                           Packets regardless of
   5784                                                           its drop */
   5785 #define BCM_FIELD_COPYTOCPU_ALL_PACKET      0x00000007 /* Copy to CPU All
   5786                                                           Packets regardless of
   5787                                                           its drop */
   5788 #define BCM_FIELD_COPYTOCPU_TRUNCATE        0x00000008 /* Copy to CPU only the
   5789                                                           first cell of Packets */
   5790 #define BCM_FIELD_COPYTOCPU_GREEN_DROPPED_PACKET 0x00000010 /* Copy to CPU only
   5791                                                           Dropped Green Packets */
   5792 #define BCM_FIELD_COPYTOCPU_YELLOW_DROPPED_PACKET 0x00000020 /* Copy to CPU only
   5793                                                           Dropped Yellow Packets */
   5794 #define BCM_FIELD_COPYTOCPU_RED_DROPPED_PACKET 0x00000040 /* Copy to CPU only
   5795                                                           Dropped Red Packets */
   5796 #define BCM_FIELD_COPYTOCPU_DROPPED_PACKET  0x00000070 /* Copy to CPU All
   5797                                                           Dropped Packets */
   5798 #define BCM_FIELD_COPYTOCPU_GREEN_NOT_DROPPED_PACKET 0x00000080 /* Copy to CPU only
   5799                                                           Non-dropped Green
   5800                                                           Packets */
   5801 #define BCM_FIELD_COPYTOCPU_YELLOW_NOT_DROPPED_PACKET 0x00000100 /* Copy to CPU only
   5802                                                           Non-dropped Yellow
   5803                                                           Packets */
   5804 #define BCM_FIELD_COPYTOCPU_RED_NOT_DROPPED_PACKET 0x00000200 /* Copy to CPU only
   5805                                                           Non-dropped Red
   5806                                                           Packets */
   5807 #define BCM_FIELD_COPYTOCPU_NOT_DROPPED_PACKET 0x00000380 /* Copy to CPU All
   5808                                                           Non-dropped Packets */
   5809 
   5810 /* Field CopyToCpu Config Format. */
   5811 typedef struct bcm_field_CopyToCpu_config_s {
   5812     uint32 flags;       /* CopyToCpu flags (BCM_FIELD_COPYTOCPU_XXX). */
   5813     uint32 match_rule;  /* CopyToCpu matched rule ID. */
   5814 } bcm_field_CopyToCpu_config_t;
   5815 
   5816 /* 
   5817  * Redirect Flags.
   5818  * 
   5819  * bcm_field_action_redirect_config_set requires atleast of these flags
   5820  * to be configured for Redirect action.
   5821  */
   5822 #define BCM_FIELD_REDIRECT_GREEN_PACKET     0x00000001 /* Redirect only Green
   5823                                                           Packets regardless of
   5824                                                           its drop */
   5825 #define BCM_FIELD_REDIRECT_YELLOW_PACKET    0x00000002 /* Redirect only Yellow
   5826                                                           Packets regardless of
   5827                                                           its drop */
   5828 #define BCM_FIELD_REDIRECT_RED_PACKET       0x00000004 /* Redirect only Red
   5829                                                           Packets regardless of
   5830                                                           its drop */
   5831 #define BCM_FIELD_REDIRECT_ALL_PACKET       0x00000007 /* Redirect All Packets
   5832                                                           regardless of its drop */
   5833 #define BCM_FIELD_REDIRECT_TRUNCATE         0x00000008 /* Redirect only the
   5834                                                           first cell of Packets */
   5835 #define BCM_FIELD_REDIRECT_SOURCE_USE_ORIGINAL_SOURCE 0x00000010 /* Use original packet
   5836                                                           source as Redirected
   5837                                                           packet source */
   5838 #define BCM_FIELD_REDIRECT_SOURCE_USE_ORIGINAL_DESTINATION 0x00000020 /* Use original packet
   5839                                                           destination as
   5840                                                           Redirected packet
   5841                                                           source */
   5842 #define BCM_FIELD_REDIRECT_SOURCE_USE_CONFIGURED 0x00000040 /* Use configured source
   5843                                                           as Redirected packet
   5844                                                           source */
   5845 #define BCM_FIELD_REDIRECT_GREEN_DROPPED_PACKET 0x00000080 /* Redirect only Dropped
   5846                                                           Green Packets */
   5847 #define BCM_FIELD_REDIRECT_YELLOW_DROPPED_PACKET 0x00000100 /* Redirect only Dropped
   5848                                                           Yellow Packets */
   5849 #define BCM_FIELD_REDIRECT_RED_DROPPED_PACKET 0x00000200 /* Redirect only Dropped
   5850                                                           Red Packets */
   5851 #define BCM_FIELD_REDIRECT_DROPPED_PACKET   0x00000380 /* Redirect All Dropped
   5852                                                           Packets */
   5853 #define BCM_FIELD_REDIRECT_GREEN_NOT_DROPPED_PACKET 0x00000400 /* Redirect only
   5854                                                           Non-dropped Green
   5855                                                           Packets */
   5856 #define BCM_FIELD_REDIRECT_YELLOW_NOT_DROPPED_PACKET 0x00000800 /* Redirect only
   5857                                                           Non-dropped Yellow
   5858                                                           Packets */
   5859 #define BCM_FIELD_REDIRECT_RED_NOT_DROPPED_PACKET 0x00001000 /* Redirect only
   5860                                                           Non-dropped Red
   5861                                                           Packets */
   5862 #define BCM_FIELD_REDIRECT_NOT_DROPPED_PACKET 0x00001C00 /* Redirect All
   5863                                                           Non-dropped Packets */
   5864 
   5865 /* 
   5866  * Field action Redirection.
   5867  * Used to specify the Redirection type in
   5868  * bcm_field_action_redirect_config_set or destination_type in
   5869  * bcm_field_destination_action_t.
   5870  */
   5871 typedef enum bcm_field_redirect_destination_type_e {
   5872     bcmFieldRedirectDestinationInvalid = 0, /* Invalid. */
   5873     bcmFieldRedirectDestinationPort = 1, /* Destination Port. */
   5874     bcmFieldRedirectDestinationTrunk = 2, /* Destination Trunk. */
   5875     bcmFieldRedirectDestinationMCast = 3, /* Destination L2 Multicast. */
   5876     bcmFieldRedirectDestinationL3Multicast = 4, /* Destination L3 Multicast. */
   5877     bcmFieldRedirectDestinationCount = 5 /* Always Last. Not a usable value. */
   5878 } bcm_field_redirect_destination_type_t;
   5879 
   5880 #define BCM_FIELD_REDIRECTION_STRINGS \
   5881 { \
   5882     "Invalid", \
   5883     "Port", \
   5884     "Trunk", \
   5885     "MCast", \
   5886     "L3Multicast"  \
   5887 }
   5888 
   5889 /* Field Redirect Config Format. */
   5890 typedef struct bcm_field_redirect_config_s {
   5891     uint32 flags;                       /* Redirect flags
   5892                                            (BCM_FIELD_REDIRECT_XXX). */
   5893     bcm_field_redirect_destination_type_t destination_type; /* Destination type. */
   5894     int destination;                    /* Destination of the re-directed
   5895                                            packets. */
   5896     int source_port;                    /* Source port to use for re-directed
   5897                                            packets. */
   5898 } bcm_field_redirect_config_t;
   5899 
   5900 /* Different Flow tracker timestamp mode. */
   5901 typedef enum bcm_field_flowtracker_timestamp_delay_mode_e {
   5902     bcmFieldFlowtrackerTimestampDelayModeGeneric = 0, /* 48-Bit Generic Mode */
   5903     bcmFieldFlowtrackerTimestampDelayModeNTP = 1, /* 64-Bit NTP Mode */
   5904     bcmFieldFlowtrackerTimestampDelayModePTP = 2, /* 64-Bit PTP Mode */
   5905     bcmFieldFlowtrackerTimestampDelayModeCount = 3 /* Always Last. Not a usable value. */
   5906 } bcm_field_flowtracker_timestamp_delay_mode_t;
   5907 
   5908 #define BCM_FIELD_FLOWTRACKER_TIMESTAMP_DELAY_MODE_STRINGS \
   5909 { \
   5910     "bcmFieldFlowtrackerTimestampDelayModeGeneric", \
   5911     "bcmFieldFlowtrackerTimestampDelayModeNTP", \
   5912     "bcmFieldFlowtrackerTimestampDelayModePTP"  \
   5913 }
   5914 
   5915 /* Different Flex Flow timestamp type. */
   5916 typedef enum bcm_field_flow_timestamp_type_e {
   5917     bcmFieldFlowTimestampIngress = 0,   /* Ingress Timestamp selected. */
   5918     bcmFieldFlowTimestampEgress = 1,    /* Egress Timestamp selected. */
   5919     bcmFieldFlowTimestampCount = 2      /* Always Last. Not a usable value. */
   5920 } bcm_field_flow_timestamp_type_t;
   5921 
   5922 #define BCM_FIELD_FLOW_TIMESTAMP_TYPE_STRINGS \
   5923 { \
   5924     "Ingress", \
   5925     "Egress"  \
   5926 }
   5927 
   5928 /* Different Flex Flow timestamp source. */
   5929 typedef enum bcm_field_flow_timestamp_source_e {
   5930     bcmFieldFlowTimestampSourceLegacy = 0, /* Legacy source */
   5931     bcmFieldFlowTimestampSourceNTP = 1, /* Network Time Protocol source */
   5932     bcmFieldFlowTimestampSourcePTP = 2, /* Precision Time Protocol source */
   5933     bcmFieldFlowTimestampSourceCount = 3 /* Always Last. Not a usable value. */
   5934 } bcm_field_flow_timestamp_source_t;
   5935 
   5936 #define BCM_FIELD_FLOW_TIMESTAMP_SOURCE_STRINGS \
   5937 { \
   5938     "Legacy", \
   5939     "NTP", \
   5940     "PTP"  \
   5941 }
   5942 
   5943 /* bcm_field_action_e */
   5944 typedef enum bcm_field_action_e {
   5945     bcmFieldActionCosQNew = 0,          /* Change CoS Queue; param0: New CoS
   5946                                            Queue. */
   5947     bcmFieldActionCosQCpuNew = 1,       /* Change CoS Queue when CopyToCpu;
   5948                                            param0: New CoS Queue. */
   5949     bcmFieldActionVlanCosQNew = 2,      /* Change VLAN CoS Queue; param0: New
   5950                                            CoS Queue. */
   5951     bcmFieldActionUcastCosQNew = 3,     /* Change CoS Queue for unicast packets;
   5952                                            param0: New CoS Queue. */
   5953     bcmFieldActionMcastCosQNew = 4,     /* Change CoS Queue for multicast
   5954                                            packets; param0: New CoS Queue. */
   5955     bcmFieldActionPrioPktAndIntCopy = 5, /* Pkt & internal priority from inner
   5956                                            tag. */
   5957     bcmFieldActionPrioPktAndIntNew = 6, /* Pkt & internal priority from arg;
   5958                                            param0: New priority. */
   5959     bcmFieldActionPrioPktAndIntTos = 7, /* Pkt & internal priority from TOS
   5960                                            field. */
   5961     bcmFieldActionPrioPktAndIntCancel = 8, /* Override another rule. */
   5962     bcmFieldActionPrioPktCopy = 9,      /* Pkt priority from inner tag. */
   5963     bcmFieldActionPrioPktNew = 10,      /* Pkt priority from arg; param0: New
   5964                                            priority. */
   5965     bcmFieldActionPrioPktTos = 11,      /* Pkt priority from TOS field. */
   5966     bcmFieldActionPrioPktCancel = 12,   /* Override another rule. */
   5967     bcmFieldActionPrioIntCopy = 13,     /* Internal priority from inner tag. */
   5968     bcmFieldActionPrioIntNew = 14,      /* Internal priority from arg; param0:
   5969                                            New priority. */
   5970     bcmFieldActionPrioIntTos = 15,      /* Internal priority from TOS field. */
   5971     bcmFieldActionPrioIntCancel = 16,   /* Override another rule. */
   5972     bcmFieldActionTosNew = 17,          /* Change TOS value in IP header;
   5973                                            param0: New TOS value. */
   5974     bcmFieldActionTosCopy = 18,         /* Copy priority from outer tag to IP
   5975                                            hdr. */
   5976     bcmFieldActionTosCancel = 19,       /* Override another rule. */
   5977     bcmFieldActionDscpNew = 20,         /* Change DSCP value; param0: New DSCP
   5978                                            value. */
   5979     bcmFieldActionDscpCancel = 21,      /* Override another rule. */
   5980     bcmFieldActionEcnNew = 22,          /* Change ECN value in IP header TOS;
   5981                                            param0: New ECN value. */
   5982     bcmFieldActionCopyToCpu = 23,       /* Copy to CPU. */
   5983     bcmFieldActionCopyToCpuCancel = 24, /* Override another rule. */
   5984     bcmFieldActionSwitchToCpuCancel = 25, /* Override switch logic copy-to-CPU. */
   5985     bcmFieldActionSwitchToCpuReinstate = 26, /* Reinstate copy-to-CPU switch logic. */
   5986     bcmFieldActionTimeStampToCpu = 27,  /* Send a copy to CPU with timestamp and
   5987                                            drop the packet */
   5988     bcmFieldActionTimeStampToCpuCancel = 28, /* Override another action (don't
   5989                                            copy,don't drop) */
   5990     bcmFieldActionRedirectPort = 29,    /* Redirect Packet to single port;
   5991                                            param0: Destination modid; param1:
   5992                                            Destination port. */
   5993     bcmFieldActionRedirect = bcmFieldActionRedirectPort, /* Same as bcmFieldActionRedirectPort. */
   5994     bcmFieldActionRedirectTrunk = 30,   /* Redirect Packet to a trunk; param0:
   5995                                            Destination trunk ID. */
   5996     bcmFieldActionRedirectCancel = 31,  /* Override another rule. */
   5997     bcmFieldActionRedirectPbmp = 32,    /* Replace port bitmap; param0:
   5998                                            Destination port bitmap. */
   5999     bcmFieldActionRedirectIpmc = 33,    /* Replace L3 multicast L3 & L2 bitmap;
   6000                                            param0: IP Multicast Index. */
   6001     bcmFieldActionRedirectMcast = 34,   /* Replace L2 multicast dest bitmap;
   6002                                            param0: L2 Multicast Index. */
   6003     bcmFieldActionRedirectVlan = 35,    /* Redirect to VLAN port bitmap. */
   6004     bcmFieldActionRedirectBcastPbmp = 36, /* Replace L2 broadcast dest bitmap;
   6005                                            param0: Destination port bitmap. */
   6006     bcmFieldActionEgressMask = 37,      /* Apply egress mask; param0:
   6007                                            Destination port bitmap mask. */
   6008     bcmFieldActionEgressPortsAdd = 38,  /* Add additional egress ports; param0:
   6009                                            Destination port bitmap. */
   6010     bcmFieldActionDrop = 39,            /* Drop. */
   6011     bcmFieldActionDropCancel = 40,      /* Override another rule. */
   6012     bcmFieldActionMirrorOverride = 41,  /* Override any mirroring for packet. */
   6013     bcmFieldActionMirrorIngress = 42,   /* Ingress mirror; param0: Dest modid;
   6014                                            param1: Dest port/tgid. */
   6015     bcmFieldActionMirrorEgress = 43,    /* Egress mirror; param0: Dest modid;
   6016                                            param1: Dest port/tgid. */
   6017     bcmFieldActionL3ChangeVlan = 44,    /* Change VLAN on L3-switched packets;
   6018                                            param0: ECMP or next hop info. */
   6019     bcmFieldActionL3ChangeVlanCancel = 45, /* Override another rule. */
   6020     bcmFieldActionL3ChangeMacDa = 46,   /* Change MAC DA on L3-switched packets;
   6021                                            param0: ECMP or next hop info. */
   6022     bcmFieldActionL3ChangeMacDaCancel = 47, /* Override another rule; param0: Next
   6023                                            hop table index. */
   6024     bcmFieldActionL3Switch = 48,        /* L3-switch packet; param0: ECMP or
   6025                                            next hop info. */
   6026     bcmFieldActionL3SwitchCancel = 49,  /* Override another rule. */
   6027     bcmFieldActionAddClassTag = 50,     /* Add Classification Tag. */
   6028     bcmFieldActionDropPrecedence = 51,  /* Set Drop Precedence; param0:
   6029                                            BCM_FIELD_COLOR_xxx. */
   6030     bcmFieldActionRpDrop = 52,          /* Red Priority Drop. */
   6031     bcmFieldActionRpDropCancel = 53,    /* Override another rule. */
   6032     bcmFieldActionRpDropPrecedence = 54, /* Set Red Priority Drop Precedence;
   6033                                            param0: BCM_FIELD_COLOR_xxx. */
   6034     bcmFieldActionRpCopyToCpu = 55,     /* Red Priority Copy to CPU. */
   6035     bcmFieldActionRpCopyToCpuCancel = 56, /* Override another rule. */
   6036     bcmFieldActionRpSwitchToCpuCancel = 57, /* Override switch logic copy-to-CPU. */
   6037     bcmFieldActionRpSwitchToCpuReinstate = 58, /* Reinstate copy-to-CPU switch logic. */
   6038     bcmFieldActionRpTimeStampToCpu = 59, /* Send a copy to CPU with timestamp and
   6039                                            drop the packet */
   6040     bcmFieldActionRpTimeStampToCpuCancel = 60, /* Override another action (don't
   6041                                            copy,don't drop) */
   6042     bcmFieldActionRpDscpNew = 61,       /* Red packet change DSCP value; param0:
   6043                                            New DSCP value. */
   6044     bcmFieldActionRpDscpCancel = 62,    /* Override any changes to DSCP field. */
   6045     bcmFieldActionRpEcnNew = 63,        /* Red packet change ECN value; param0:
   6046                                            New ECN value. */
   6047     bcmFieldActionRpOuterVlanPrioNew = 64, /* Red packet 802.1p priority from arg;
   6048                                            param0: New priority. */
   6049     bcmFieldActionRpInnerVlanPrioNew = 65, /* Red packet 802.1p priority from arg;
   6050                                            param0: New priority. */
   6051     bcmFieldActionRpOuterVlanCfiNew = 66, /* Red packet 802.1p CFI from arg;
   6052                                            param0: New CFI bit value. */
   6053     bcmFieldActionRpInnerVlanCfiNew = 67, /* Red packet 802.1p CFI from arg;
   6054                                            param0: New CFI bit value. */
   6055     bcmFieldActionRpPrioPktCopy = 68,   /* Red packet priority from inner tag. */
   6056     bcmFieldActionRpPrioPktNew = 69,    /* Red packet priority from argument0;
   6057                                            param0: New priority. */
   6058     bcmFieldActionRpPrioPktTos = 70,    /* Red Packet priority from TOS field in
   6059                                            IP header. */
   6060     bcmFieldActionRpPrioPktCancel = 71, /* Override another rule. */
   6061     bcmFieldActionRpCosQNew = 72,       /* Red packet change CoS Queue; param0:
   6062                                            New CoS Queue. */
   6063     bcmFieldActionRpVlanCosQNew = 73,   /* Red packet change VLAN CoSQ; param0:
   6064                                            New CoS Queue. */
   6065     bcmFieldActionRpUcastCosQNew = 74,  /* Red unicast packet change CoS Queue;
   6066                                            param0: New CoS Queue. */
   6067     bcmFieldActionRpMcastCosQNew = 75,  /* Red multicast packet change CoS
   6068                                            Queue; param0: New CoS Queue. */
   6069     bcmFieldActionRpPrioPktAndIntCopy = 76, /* Red packet Packet & Internal priority
   6070                                            from inner tag. */
   6071     bcmFieldActionRpPrioPktAndIntNew = 77, /* Red packet Packet & Internal priority
   6072                                            from param0; param0: New priority. */
   6073     bcmFieldActionRpPrioPktAndIntTos = 78, /* Red packet Packet & Internal priority
   6074                                            from TOS field. */
   6075     bcmFieldActionRpPrioPktAndIntCancel = 79, /* Override any internal priority
   6076                                            changes. */
   6077     bcmFieldActionRpPrioIntCopy = 80,   /* Red packet internal priority from
   6078                                            inner VLAN tag. */
   6079     bcmFieldActionRpPrioIntNew = 81,    /* Red packet internal priority from an
   6080                                            argument; param0: New priority. */
   6081     bcmFieldActionRpPrioIntTos = 82,    /* Red packet internal priority from IP
   6082                                            header  TOS field. */
   6083     bcmFieldActionRpPrioIntCancel = 83, /* Red packet override any internal
   6084                                            priority changes. */
   6085     bcmFieldActionYpDrop = 84,          /* Yellow Priority Drop. */
   6086     bcmFieldActionYpDropCancel = 85,    /* Override another rule. */
   6087     bcmFieldActionYpDropPrecedence = 86, /* Set Yellow Priority Drop Precedence;
   6088                                            param0: BCM_FIELD_COLOR_xxx. */
   6089     bcmFieldActionYpCopyToCpu = 87,     /* Yellow Priority Copy to CPU. */
   6090     bcmFieldActionYpCopyToCpuCancel = 88, /* Override another rule. */
   6091     bcmFieldActionYpSwitchToCpuCancel = 89, /* Override switch logic copy-to-CPU. */
   6092     bcmFieldActionYpSwitchToCpuReinstate = 90, /* Reinstate copy-to-CPU switch logic. */
   6093     bcmFieldActionYpTimeStampToCpu = 91, /* Send a copy to CPU with timestamp and
   6094                                            drop the packet */
   6095     bcmFieldActionYpTimeStampToCpuCancel = 92, /* Override another action (don't
   6096                                            copy,don't drop) */
   6097     bcmFieldActionYpDscpNew = 93,       /* Yellow packet change DSCP value;
   6098                                            param0: New DSCP value. */
   6099     bcmFieldActionYpDscpCancel = 94,    /* Override any changes to DSCP field. */
   6100     bcmFieldActionYpEcnNew = 95,        /* Yellow packet change ECN value;
   6101                                            param0: New ECN value. */
   6102     bcmFieldActionYpOuterVlanPrioNew = 96, /* Yellow packet 802.1p priority from
   6103                                            arg. */
   6104     bcmFieldActionYpInnerVlanPrioNew = 97, /* Yellow packet 802.1p priority from
   6105                                            arg; param0: New priority. */
   6106     bcmFieldActionYpOuterVlanCfiNew = 98, /* Yellow packet 802.1p CFI from arg;
   6107                                            param0: New CFI bit value. */
   6108     bcmFieldActionYpInnerVlanCfiNew = 99, /* Yellow packet 802.1p CFI from arg;
   6109                                            param0: New CFI bit value. */
   6110     bcmFieldActionYpPrioPktCopy = 100,  /* Yellow packet priority from inner
   6111                                            tag. */
   6112     bcmFieldActionYpPrioPktNew = 101,   /* Yellow packet priority from param0;
   6113                                            param0: New priority. */
   6114     bcmFieldActionYpPrioPktTos = 102,   /* Yellow packet priority from TOS field
   6115                                            in IP header. */
   6116     bcmFieldActionYpPrioPktCancel = 103, /* Override another rule. */
   6117     bcmFieldActionYpCosQNew = 104,      /* Yellow packet change CoS Queue;
   6118                                            param0: New CoS Queue. */
   6119     bcmFieldActionYpVlanCosQNew = 105,  /* Yellow packet change VLAN CoSQ;
   6120                                            param0: New CoS Queue. */
   6121     bcmFieldActionYpUcastCosQNew = 106, /* Yellow unicast packet change CoS
   6122                                            Queue; param0: New CoS Queue. */
   6123     bcmFieldActionYpMcastCosQNew = 107, /* Yellow multicast packet change CoS
   6124                                            Queue; param0: New CoS Queue. */
   6125     bcmFieldActionYpPrioPktAndIntCopy = 108, /* Yellow packet Packet & Internal
   6126                                            priority from inner tag. */
   6127     bcmFieldActionYpPrioPktAndIntNew = 109, /* Yellow packet Packet & Internal
   6128                                            priority from param0; param0: New
   6129                                            priority. */
   6130     bcmFieldActionYpPrioPktAndIntTos = 110, /* Yellow packet Packet & Internal
   6131                                            priority from TOS field. */
   6132     bcmFieldActionYpPrioPktAndIntCancel = 111, /* Override any int priority changes. */
   6133     bcmFieldActionYpPrioIntCopy = 112,  /* Yellow packet internal priority from
   6134                                            inner VLAN tag. */
   6135     bcmFieldActionYpPrioIntNew = 113,   /* Yellow packet internal priority from
   6136                                            an argument; param0: New priority. */
   6137     bcmFieldActionYpPrioIntTos = 114,   /* Yellow packet internal priority from
   6138                                            IP header TOS field. */
   6139     bcmFieldActionYpPrioIntCancel = 115, /* Yellow packet override any internal
   6140                                            priority changes. */
   6141     bcmFieldActionUpdateCounter = 116,  /* Update Counter; param0:
   6142                                            BCM_FIELD_COUNTER_MODE_xxx. */
   6143     bcmFieldActionMeterConfig = 117,    /* Meter configuration; param0:
   6144                                            BCM_FIELD_METER_MODE_xxx; param1: if
   6145                                            param0 == BCM_FIELD_METER_MODE_FLOW,
   6146                                            this denotes BCM_FIELD_METER_PEAK(1)
   6147                                            or BCM_FIELD_METER_COMMITTED(2). */
   6148     bcmFieldActionColorIndependent = 118, /* Make L3SW_CHANGE_MACDA_OR_VLAN
   6149                                            actions color independent. */
   6150     bcmFieldActionClassDestSet = 119,   /* Set destination address lookup class
   6151                                            ID. */
   6152     bcmFieldActionClassSet = bcmFieldActionClassDestSet, /* Same as bcmFieldActionClassDestSet. */
   6153     bcmFieldActionClassSourceSet = 120, /* Set source address lookup class ID. */
   6154     bcmFieldActionVrfSet = 121,         /* Set VRF ID. */
   6155     bcmFieldActionInnerVlanNew = 122,   /* Replace inner VLAN ID; param0: New
   6156                                            inner VLAN ID. */
   6157     bcmFieldActionInnerVlanPrioNew = 123, /* Replace inner VLAN tag priority;
   6158                                            param0: New inner VLAN tag priority. */
   6159     bcmFieldActionInnerVlanDelete = 124, /* Delete inner VLAN tag. */
   6160     bcmFieldActionOuterVlanDelete = 125, /* Delete outer VLAN tag. */
   6161     bcmFieldActionOuterVlanDeleteCancel = 126, /* Override previous outer VLAN tag
   6162                                            delete. */
   6163     bcmFieldActionInnerVlanAdd = 127,   /* Add a new Inner VLAN tag. */
   6164     bcmFieldActionInnerVlanCfiNew = 128, /* Replace packet 802.1p CFI from arg. */
   6165     bcmFieldActionOuterVlanNew = 129,   /* Replace outer VLAN ID; param0: New
   6166                                            outer VLAN ID. */
   6167     bcmFieldActionVlanNew = bcmFieldActionOuterVlanNew, /* Same as bcmFieldActionOuterVlanNew. */
   6168     bcmFieldActionOuterVlanAdd = 130,   /* Add a new Outer VLAN tag. */
   6169     bcmFieldActionVlanAdd = bcmFieldActionOuterVlanAdd, /* Same as bcmFieldActionOuterVlanAdd. */
   6170     bcmFieldActionOuterVlanAddCancel = 131, /* Override previous outer VLAN tag add. */
   6171     bcmFieldActionOuterVlanLookup = 132, /* Lookup outer VLAN tag. */
   6172     bcmFieldActionVlanLookup = bcmFieldActionOuterVlanLookup, /* Same as
   6173                                            bcmFieldActionOuterVlanLookup. */
   6174     bcmFieldActionOuterVlanPrioNew = 133, /* Replace outer VLAN tag priority;
   6175                                            param0: New outer VLAN tag priority. */
   6176     bcmFieldActionOuterVlanCfiNew = 134, /* Replace packet 802.1p CFI from arg;
   6177                                            param0: New CFI bit value; param0:
   6178                                            New CFI bit value. */
   6179     bcmFieldActionOuterTpidNew = 135,   /* Replace TPID in outer VLAN tag;
   6180                                            param0: New tpid. */
   6181     bcmFieldActionGpDrop = 136,         /* Green Priority Drop. */
   6182     bcmFieldActionGpDropCancel = 137,   /* Override another rule. */
   6183     bcmFieldActionGpDropPrecedence = 138, /* Set Green Priority Drop Precedence;
   6184                                            param0: BCM_FIELD_COLOR_xxx. */
   6185     bcmFieldActionGpCopyToCpu = 139,    /* Green Priority Copy to CPU. */
   6186     bcmFieldActionGpCopyToCpuCancel = 140, /* Override another rule. */
   6187     bcmFieldActionGpSwitchToCpuCancel = 141, /* Override switch logic copy-to-CPU. */
   6188     bcmFieldActionGpSwitchToCpuReinstate = 142, /* Reinstate copy-to-CPU switch logic. */
   6189     bcmFieldActionGpTimeStampToCpu = 143, /* Send a copy to CPU with timestamp and
   6190                                            drop the packet */
   6191     bcmFieldActionGpTimeStampToCpuCancel = 144, /* Override another action (don't
   6192                                            copy,don't drop) */
   6193     bcmFieldActionGpDscpNew = 145,      /* Green packet change DSCP value;
   6194                                            param0: New DSCP value. */
   6195     bcmFieldActionGpDscpCancel = 146,   /* Override any changes to DSCP field. */
   6196     bcmFieldActionGpEcnNew = 147,       /* Green packet change ECN value;
   6197                                            param0: New ECN value. */
   6198     bcmFieldActionGpTosPrecedenceNew = 148, /* Green packet change Tos byte
   6199                                            precedence value; param0: New
   6200                                            precedence value. */
   6201     bcmFieldActionGpTosPrecedenceCopy = 149, /* Green packet copy Tos byte precedence
   6202                                            from 802.1p priority. */
   6203     bcmFieldActionGpOuterVlanPrioNew = 150, /* Green packet 802.1p priority from
   6204                                            arg. */
   6205     bcmFieldActionGpInnerVlanPrioNew = 151, /* Green packet 802.1p priority from
   6206                                            arg; param0: New priority. */
   6207     bcmFieldActionGpOuterVlanCfiNew = 152, /* Green packet 802.1p CFI from arg;
   6208                                            param0: New CFI bit value. */
   6209     bcmFieldActionGpInnerVlanCfiNew = 153, /* Green packet 802.1p CFI from arg;
   6210                                            param0: New CFI bit value. */
   6211     bcmFieldActionGpPrioPktCopy = 154,  /* Green packet priority from inner tag. */
   6212     bcmFieldActionGpPrioPktNew = 155,   /* Green packet priority from param0;
   6213                                            param0: New priority. */
   6214     bcmFieldActionGpPrioPktTos = 156,   /* Green packet priority from TOS field
   6215                                            in IP header. */
   6216     bcmFieldActionGpPrioPktCancel = 157, /* Override another rule. */
   6217     bcmFieldActionGpCosQNew = 158,      /* Green packet change CoS Queue;
   6218                                            param0: New CoS Queue. */
   6219     bcmFieldActionGpVlanCosQNew = 159,  /* Green packet change VLAN CoSQ;
   6220                                            param0: New CoS Queue. */
   6221     bcmFieldActionGpUcastCosQNew = 160, /* Green unicast packet change CoS
   6222                                            Queue; param0: New CoS Queue. */
   6223     bcmFieldActionGpMcastCosQNew = 161, /* Green multicast packet change CoS
   6224                                            Queue; param0: New CoS Queue. */
   6225     bcmFieldActionGpPrioPktAndIntCopy = 162, /* Green packet Packet & Internal
   6226                                            priority from inner tag. */
   6227     bcmFieldActionGpPrioPktAndIntNew = 163, /* Green packet Packet & Internal
   6228                                            priority from param0; param0: New
   6229                                            priority. */
   6230     bcmFieldActionGpPrioPktAndIntTos = 164, /* Green packet Packet & Internal
   6231                                            priority from TOS field. */
   6232     bcmFieldActionGpPrioPktAndIntCancel = 165, /* Override any int priority changes. */
   6233     bcmFieldActionGpPrioIntCopy = 166,  /* Green packet internal priority from
   6234                                            inner VLAN tag. */
   6235     bcmFieldActionGpPrioIntNew = 167,   /* Green packet internal priority from
   6236                                            an argument; param0: New priority. */
   6237     bcmFieldActionGpPrioIntTos = 168,   /* Green packet internal priority from
   6238                                            IP header TOS field. */
   6239     bcmFieldActionGpPrioIntCancel = 169, /* Green packet override any internal
   6240                                            priority changes. */
   6241     bcmFieldActionDoNotChangeTtl = 170, /* Do not decrement TTL. */
   6242     bcmFieldActionDoNotCheckUrpf = 171, /* Do not check reverse path for unicast
   6243                                            traffic. */
   6244     bcmFieldActionDoNotCheckVlan = 172, /* Do not check VLAN membership and STG
   6245                                            STP state. */
   6246     bcmFieldActionDoNotLearn = 173,     /* Disable L2 learning. */
   6247     bcmFieldActionIpFix = 174,          /* Record the packet regardless of port
   6248                                            ipfix enable. */
   6249     bcmFieldActionIpFixCancel = 175,    /* Record the packet action override. */
   6250     bcmFieldActionIncomingMplsPortSet = 176, /* Assign incoming MPLS port. */
   6251     bcmFieldActionDeprecated177 = 177,  /* Deprecated. Do not use. */
   6252     bcmFieldActionNewClassId = 178,     /* Assign new classification ID. */
   6253     bcmFieldActionDeprecated179 = 179,  /* Deprecated. Do not use. */
   6254     bcmFieldActionDeprecated180 = 180,  /* Deprecated. Do not use. */
   6255     bcmFieldActionDeprecated181 = 181,  /* Deprecated. Do not use. */
   6256     bcmFieldActionDeprecated182 = 182,  /* Deprecated. Do not use. */
   6257     bcmFieldActionDeprecated183 = 183,  /* Deprecated. Do not use. */
   6258     bcmFieldActionDeprecated184 = 184,  /* Deprecated. Do not use. */
   6259     bcmFieldActionDeprecated185 = 185,  /* Deprecated. Do not use. */
   6260     bcmFieldActionMultipathHash = 186,  /* ECMP Hash selection for
   6261                                            bcmFieldActionL3Switch action. */
   6262     bcmFieldActionIpfixRate = 187,      /* Set IPFIX flow rate meter; param0:
   6263                                            rate id */
   6264     bcmFieldActionOffloadRedirect = 188, /* Redirect packet to offload engine. */
   6265     bcmFieldActionOffloadClassSet = 189, /* Set Class Id in offload engine
   6266                                            redirected traffic. */
   6267     bcmFieldActionOffloadDropIndication = 190, /* Set drop indicator in offload engine
   6268                                            redirected traffic. */
   6269     bcmFieldActionOamUpMep = 191,       /* Indicate UP MEP. */
   6270     bcmFieldActionOamTx = 192,          /* Indicate TX direction OAM PDU or data
   6271                                            packet. Used as MSB of
   6272                                            FieldActionOamLmBasePtr'. */
   6273     bcmFieldActionOamLmepMdl = 193,     /* MDL value for the LMEP. */
   6274     bcmFieldActionOamServicePriMappingPtr = 194, /* Concatenated with the internal
   6275                                            priority as index to LM packet
   6276                                            counter. */
   6277     bcmFieldActionOamLmBasePtr = 195,   /* Set base pointer to LM packet
   6278                                            counter. */
   6279     bcmFieldActionOamDmEnable = 196,    /* Enable OAM Delay Measurement. */
   6280     bcmFieldActionOamLmEnable = 197,    /* Enable OAM Loss Measurement. */
   6281     bcmFieldActionOamLmepEnable = 198,  /* Enable OAM loss/delay measurement. */
   6282     bcmFieldActionOamPbbteLookupEnable = 199, /* Indicate SVP should be used as the
   6283                                            key for LMEP lookup. */
   6284     bcmFieldActionSrcMacNew = 200,      /* Replace source mac of the packet. */
   6285     bcmFieldActionDstMacNew = 201,      /* Replace destination mac of the
   6286                                            packet. */
   6287     bcmFieldActionVnTagNew = 202,       /* Replace NIV VN tag if present, add if
   6288                                            not present; param0: VN tag. */
   6289     bcmFieldActionVnTagDelete = 203,    /* Delete NIV VN tag. */
   6290     bcmFieldActionDeprecated204 = 204,  /* Deprecated. Do not use. */
   6291     bcmFieldActionDeprecated205 = 205,  /* Deprecated. Do not use. */
   6292     bcmFieldActionVportNew = 206,       /* Replace/assign virtual port id. */
   6293     bcmFieldActionVportSpcpNew = 207,   /* Replace/assign virtual port's spcp. */
   6294     bcmFieldActionVportCpcpNew = 208,   /* Replace/assign virtual port's cpcp. */
   6295     bcmFieldActionVportTcNew = 209,     /* Replace/assign virtual port's traffic
   6296                                            class. */
   6297     bcmFieldActionVportDpNew = 210,     /* Replace/assign virtual port's drop
   6298                                            precedence. */
   6299     bcmFieldActionRedirectVportPort = 211, /* Redirect Packet to single VportPort;
   6300                                            param0: Destination vport; param1:
   6301                                            Destination port. */
   6302     bcmFieldActionMacDaKnown = 212,     /* Packet is not treated as a DLF type */
   6303     bcmFieldActionFilters = 213,        /* Enable Filters to override the rule;
   6304                                            param0: filter
   6305                                            types(BCM_FIELD_FILTER_XXX) */
   6306     bcmFieldActionFabricQueue = 214,    /* Enable ext header on hg ports. */
   6307     bcmFieldActionCnmCancel = 215,      /* Do not generate QCN congestion
   6308                                            notification message. */
   6309     bcmFieldActionQcnUndo = bcmFieldActionCnmCancel, /* Do not perform a Congestion test on
   6310                                            this packet (no QCN message can be
   6311                                            generated) */
   6312     bcmFieldActionDynamicHgTrunkCancel = 216, /* Disable dynamic HiGig trunking. */
   6313     bcmFieldActionEgressMirrorDisable = 217, /* Disable Egress Mirror for matching
   6314                                            packet. */
   6315     bcmFieldActionMultipathHashAdditionalInfo = 218, /* Add additional information to
   6316                                            matching packet's LAG/ECMP
   6317                                            load-balancing hash calculation */
   6318     bcmFieldActionDeprecated219 = 219,  /* Deprecated. Do not use. */
   6319     bcmFieldActionMirrorEgressDisable = 220, /* Disable egress mirror; param0 = TRUE
   6320                                            to disable, FALSE otherwise */
   6321     bcmFieldActionOuterVlanCopyInner = 221, /* Copy the VLAN id from the inner tag
   6322                                            to the outer. */
   6323     bcmFieldActionOuterVlanPrioCopyInner = 222, /* Copy the 802.1p priority from the
   6324                                            inner tag to the outer. */
   6325     bcmFieldActionOuterVlanCfiCopyInner = 223, /* Copy the CFI bit from the inner tag
   6326                                            to the outer. */
   6327     bcmFieldActionInnerVlanCopyOuter = 224, /* Copy the VLAN id from the outer tag
   6328                                            to the inner. */
   6329     bcmFieldActionInnerVlanPrioCopyOuter = 225, /* Copy the 802.1p priority from the
   6330                                            outer tag to the inner. */
   6331     bcmFieldActionInnerVlanCfiCopyOuter = 226, /* Copy the CFI bit from the outer tag
   6332                                            to the inner. */
   6333     bcmFieldActionCompressSrcIp6 = 227, /* Map incoming IPv6 packet Source IP to
   6334                                            ingress field processor IPv4 Source
   6335                                            IP field. */
   6336     bcmFieldActionCompressDstIp6 = 228, /* Map incoming IPv6 packet Destination
   6337                                            IP to ingress field processor IPv4
   6338                                            Destination IP field. */
   6339     bcmFieldActionServicePoolIdNew = 229, /* Change Service Pool ID; param0: New
   6340                                            Service Pool ID. */
   6341     bcmFieldActionUseGlobalMeterColor = 230, /* Use service meters output color
   6342                                            instead of CNG based color as input
   6343                                            packet color */
   6344     bcmFieldActionRedirectEgrNextHop = 231, /* Redirect packet to next hop; param0:
   6345                                            ECMP or next hop info. */
   6346     bcmFieldActionTrunkLoadBalanceCancel = 232, /* Disable trunk load balancing */
   6347     bcmFieldActionEcmpLoadBalanceCancel = 233, /* Disable ECMP group load balancing */
   6348     bcmFieldActionDoNotOverride = 234,  /* Do not override actions */
   6349     bcmFieldActionEgressClassSelect = 235, /* Select class to pass to EFP */
   6350     bcmFieldActionHiGigClassSelect = 236, /* Select class for HiGig */
   6351     bcmFieldActionOamDmTimeFormat = 237, /* Select time format for OAM delay
   6352                                            measurement */
   6353     bcmFieldActionOamLmDmSampleEnable = 238, /* Indicates if packet should be
   6354                                            processed as an OAMPDU belonging to
   6355                                            this MEP */
   6356     bcmFieldActionOamTagStatusCheck = 239, 
   6357     bcmFieldActionOamTunnelControl = 240, /* Select whether OAMPDU can either be
   6358                                            in a tunnel that is terminated or not
   6359                                            tunneled */
   6360     bcmFieldActionRegex = 241,          /* Perform DPI */
   6361     bcmFieldActionNoRegex = 242,        /* Do not perform DPI */
   6362     bcmFieldActionStat0 = 243,          /* Update statistics (statId in param0)
   6363                                            on entry hit.  See
   6364                                            bcm_field_entry_stat_attach and
   6365                                            related APIs. */
   6366     bcmFieldActionStat = bcmFieldActionStat0, /* Alias for bcmFieldActionStat0 */
   6367     bcmFieldActionPolicerLevel0 = 244,  /* Apply policer (policerId in param0)
   6368                                            to traffic hitting this entry.  See
   6369                                            bcm_field_entry_policer_attach and
   6370                                            related APIs. */
   6371     bcmFieldActionPolicerLevel1 = 245,  /* Apply policer (policerId in param0)
   6372                                            to traffic hitting this entry.  See
   6373                                            bcm_field_entry_policer_attach and
   6374                                            related APIs. */
   6375     bcmFieldActionPolicerGroup = 246,   /* Flag in ASETs to indicate group
   6376                                            policer usage with the group */
   6377     bcmFieldActionStatGroup = 247,      /* Flag in ASETs to indicate stat group
   6378                                            usage with the group */
   6379     bcmFieldActionVSQ = 248,            /* Assign matching packets to specified
   6380                                            VSQ (param0). */
   6381     bcmFieldActionIntPriorityAndDropPrecedence = 249, /* Change internal priority and drop
   6382                                            precedence.  param0 = new internal
   6383                                            priority.  param1 = new drop
   6384                                            precedence */
   6385     bcmFieldActionISQ = 250,            /* Assign matching packets to specified
   6386                                            ISQ (param0). */
   6387     bcmFieldActionTrap = 251,           /* Trap matched packets (treat them
   6388                                            according to the specified trap
   6389                                            profile) */
   6390     bcmFieldActionUsePolicerResult = 252, /* Specify/override where policer result
   6391                                            will be used for matched packets. 
   6392                                            See BCM_FIELD_USE_POLICER_RESULT_*
   6393                                            for flags that go in param0. */
   6394     bcmFieldActionStat1 = 253,          /* Secondary statistics update for
   6395                                            matched packets (statId in param0) */
   6396     bcmFieldActionStatTag = 254,        /* Assign statistics tag (such as for
   6397                                            external statistics engine) to
   6398                                            matched packets */
   6399     bcmFieldActionSnoop = 255,          /* Snoop matched packets (treat them
   6400                                            according to the specified snoop
   6401                                            profile) */
   6402     bcmFieldActionTtlSet = 256,         /* New TTL */
   6403     bcmFieldActionIncomingIpIfSet = 257, /* Assign incoming IP interface */
   6404     bcmFieldActionOrientationSet = 258, /* Set the new Orientation */
   6405     bcmFieldActionTrunkHashKeySet = 259, /* Set the Trunk Hash Key */
   6406     bcmFieldActionDstRpfGportNew = 260, /* Set the RPF Destination */
   6407     bcmFieldActionDhcpPkt = 261,        /* Indicate whether the Packet is DHCP */
   6408     bcmFieldActionSrcGportNew = 262,    /* Set the Source-Port */
   6409     bcmFieldActionForwardingTypeNew = 263, /* Set the new Forwarding type */
   6410     bcmFieldActionStartPacketStrip = 264, /* Strip the start-of-packet */
   6411     bcmFieldActionSystemHeaderSet = 265, /* Modify a System Header */
   6412     bcmFieldActionVSwitchNew = 266,     /* Replace Virtual Switch */
   6413     bcmFieldActionLearnSrcMacNew = 267, /* Replace the learnt packet source MAC
   6414                                            address */
   6415     bcmFieldActionLearnSrcPortNew = 268, /* Replace the learnt packet source Port */
   6416     bcmFieldActionLearnForwardingVlanIdNew = 269, /* Replace the learnt packet Forwarding
   6417                                            Vlan ID */
   6418     bcmFieldActionQosMapIdNew = 270,    /* Set the QoS map Id */
   6419     bcmFieldActionVlanActionSetNew = 271, /* Modify the VLAN Action Set Id */
   6420     bcmFieldActionVlanTranslationValueSet = 272, /* Set VLAN Translation lookup result */
   6421     bcmFieldActionTunnelTerminatedValueSet = 273, /* Set Tunnel termination lookup result */
   6422     bcmFieldActionMplsTerminatedValueSet = 274, /* Set MPLS termination lookup result */
   6423     bcmFieldActionIpTunnelValueSet = 275, /* Set IP Tunnel termination lookup
   6424                                            result */
   6425     bcmFieldActionL2SrcValueSet = 276,  /* Set L2 Source lookup result */
   6426     bcmFieldActionL2DestValueSet = 277, /* Set L2 Destination lookup result */
   6427     bcmFieldActionL3SrcRouteValueSet = 278, /* Set L3 Source lookup result */
   6428     bcmFieldActionL3DestRouteValueSet = 279, /* Set L3 Destination lookup result */
   6429     bcmFieldActionIpmcValueSet = 280,   /* Set IP Multicast lookup result */
   6430     bcmFieldActionCascadedKeyValueSet = 281, /* Set key value to cascade to later
   6431                                            group for a packet */
   6432     bcmFieldActionIngressGportSet = 282, /* Set a new ingress Gport
   6433                                            (MPLS/Mim/WLAN) value. */
   6434     bcmFieldActionExternalValue0Set = 283, /* Set External lookup 0 result */
   6435     bcmFieldActionExternalValue1Set = 284, /* Set External lookup 1 result */
   6436     bcmFieldActionExternalValue2Set = 285, /* Set External lookup 2 result */
   6437     bcmFieldActionExternalValue3Set = 286, /* Set External lookup 3 result */
   6438     bcmFieldActionNatCancel = 287,      /* Do Not perform NAT on this matching
   6439                                            packet */
   6440     bcmFieldActionNat = 288,            /* Perform NAT operation on the matching
   6441                                            packet */
   6442     bcmFieldActionNatEgressOverride = 289, /* Override NAT Egress information with
   6443                                            the given Egress information for
   6444                                            Translation */
   6445     bcmFieldActionRegexActionCancel = 290, /* Suppress action taken by the Regex
   6446                                            module for matching pkt. */
   6447     bcmFieldActionPortPrioIntCosQNew = 291, /* Change CoS Queue; param0: Classifier
   6448                                            ID param1: Queue offset or l2 UC
   6449                                            Gport. */
   6450     bcmFieldActionRpPortPrioIntCosQNew = 292, /* Red packet change CoS Queue; param0:
   6451                                            Classifier ID param1: Queue offset or
   6452                                            l2 UC Gport. */
   6453     bcmFieldActionYpPortPrioIntCosQNew = 293, /*  Yellow packet change CoS Queue;
   6454                                            param0: Classifier ID param1: Queue
   6455                                            offset or l2 UC Gport. */
   6456     bcmFieldActionGpPortPrioIntCosQNew = 294, /* Green packet change CoS Queue;
   6457                                            param0: Classifier ID param1: Queue
   6458                                            offset or l2 UC Gport. */
   6459     bcmFieldActionYpMirrorIngress = 295, /* Yellow packet ingress mirror; param0:
   6460                                            Dest modid; param1: Dest port/tgid. */
   6461     bcmFieldActionYpRedirectPort = 296, /* Redirect yellow packet to single
   6462                                            port; param0: Destination modid;
   6463                                            param1: Destination port. */
   6464     bcmFieldActionDeprecated297 = 297,  /* Deprecated. Do not use. */
   6465     bcmFieldActionFibreChanSrcBindEnable = 298, /* Enable or Disable Source Bind Check
   6466                                            for Fibre Chan packets */
   6467     bcmFieldActionFibreChanFpmaPrefixCheckEnable = 299, /* Enable or Disable FPMA prefix check
   6468                                            for Fibre Chan packets */
   6469     bcmFieldActionFibreChanZoneCheckEnable = 300, /* Enable or Disable Zone Check for
   6470                                            Fibre Chan packets */
   6471     bcmFieldActionFibreChanVsanId = 301, /* VSAN Id generated via VFP. */
   6472     bcmFieldActionFibreChanZoneCheckActionCancel = 302, /* To Accept or Ignore previously made
   6473                                            Zone check result */
   6474     bcmFieldActionFibreChanIntVsanPri = 303, /* New VSAN Priority. */
   6475     bcmFieldActionLearnInVPortNew = 304, /* Replace the learnt packet InVPort. */
   6476     bcmFieldActionOamDomain = 305,      /* Set the OAM domains on which the MEP
   6477                                            lookups are done. param0 can be used
   6478                                            to set first domain and param1 for
   6479                                            second domain. */
   6480     bcmFieldActionOamOlpHeaderAdd = 306, /* Add OLP  header for this packet -
   6481                                            param0 to be used for passing the
   6482                                            header type. */
   6483     bcmFieldActionOamSessionId = 307,   /* OAM session Id to be used in OLP Rx
   6484                                            header - param0 to be used for
   6485                                            passing the session id. */
   6486     bcmFieldActionOuterVlanCfiCancel = 308, /* Disable the CFI remarking of the
   6487                                            outer vlan tag CFI bit. */
   6488     bcmFieldActionInnerVlanPriCancel = 309, /* Disable the PCP remarking of the
   6489                                            inner vlan tag priority bits. */
   6490     bcmFieldActionPrioIntRemark = 310,  /* Assign a new packet internal priority
   6491                                            for PCP or CFI remarking. */
   6492     bcmFieldActionUseDefaultWred = 311, /* Use the discard settings from default
   6493                                            WRED configuration */
   6494     bcmFieldActionHashValueSet = 312,   /* Set Hash result */
   6495     bcmFieldActionL3IngressSet = 313,   /* Assign L3 Ingress Interface value to
   6496                                            packet. */
   6497     bcmFieldActionInterfaceClassVPort = 314, /* Set the Virtual Port Interface Class
   6498                                            ID . */
   6499     bcmFieldActionIngSampleEnable = 315, /* Set the SFLOW Ingress Sampling. */
   6500     bcmFieldActionEgrSampleEnable = 316, /* Set the SFLOW Egress Sampling. */
   6501     bcmFieldActionHashSelect0 = 317,    /* Set the hash buckets bitmap for Hash
   6502                                            key A. */
   6503     bcmFieldActionHashSelect1 = 318,    /* Set the hash buckets bitmap for Hash
   6504                                            key B. */
   6505     bcmFieldActionTrunkResilientHashCancel = 319, /* Cancels the resilient hash on Trunk. */
   6506     bcmFieldActionHgTrunkResilientHashCancel = 320, /* Cancels the resilient hash on HiGig
   6507                                            Trunk. */
   6508     bcmFieldActionEcmpResilientHashCancel = 321, /* Cancels the resilient hash on ECMP. */
   6509     bcmFieldActionUnmodifiedPacketRedirectPort = 322, /* Redirect Unmodified Packet to single
   6510                                            port; param0: Destination Gport. */
   6511     bcmFieldActionEtagNew = 323,        /* Replace Port Extender ETAG if
   6512                                            present, add if not present; param0:
   6513                                            ETAG. */
   6514     bcmFieldActionEtagDelete = 324,     /* Delete Port Extender ETAG. */
   6515     bcmFieldActionPfcClassNew = 325,    /* Change the PFC class of the packet;
   6516                                            param0 : new PFC class value. */
   6517     bcmFieldActionRpIntCongestionNotificationNew = 326, /* Replace the internal congestion
   6518                                            notification value of red packet;
   6519                                            param0: Internal congestion
   6520                                            notification value. */
   6521     bcmFieldActionYpIntCongestionNotificationNew = 327, /* Replace the internal congestion
   6522                                            notification value of yellow packet;
   6523                                            param0: Internal congestion
   6524                                            notification value. */
   6525     bcmFieldActionGpIntCongestionNotificationNew = 328, /* Replace the internal congestion
   6526                                            notification value of green packet;
   6527                                            param0: Internal congestion
   6528                                            notification value. */
   6529     bcmFieldActionRpHGCongestionClassNew = 329, /* Replace the value of CongestionClass
   6530                                            field in HiGig header for red packet;
   6531                                            param0: CongestionClass value. */
   6532     bcmFieldActionYpHGCongestionClassNew = 330, /* Replace the value of CongestionClass
   6533                                            field in HiGig header for yellow
   6534                                            packet; param0: CongestionClass
   6535                                            value. */
   6536     bcmFieldActionGpHGCongestionClassNew = 331, /* Replace the value of CongestionClass
   6537                                            field in HiGig header for green
   6538                                            packet; param0: CongestionClass
   6539                                            value. */
   6540     bcmFieldActionRedirDropPrecedence = 332, /* Set the redirect drop precedence of
   6541                                            packets. param0:BCM_FIELD_COLOR_xxx
   6542                                            param1:n/a. */
   6543     bcmFieldActionRpRedirDropPrecedence = 333, /* Set the redirect drop precedence of
   6544                                            Red packets.
   6545                                            param0:BCM_FIELD_COLOR_xxx
   6546                                            param1:n/a. */
   6547     bcmFieldActionYpRedirDropPrecedence = 334, /* Set the redirect drop precedence of
   6548                                            Yellow packets.
   6549                                            param0:BCM_FIELD_COLOR_xxx
   6550                                            param1:n/a. */
   6551     bcmFieldActionGpRedirDropPrecedence = 335, /* Set the redirect drop precedence of
   6552                                            Green packets.
   6553                                            param0:BCM_FIELD_COLOR_xxx
   6554                                            param1:n/a. */
   6555     bcmFieldActionHiGigDstModuleGportNew = 336, /* Replace the value of DST_MODID field
   6556                                            in HiGig header ; param0: New
   6557                                            Destination Module Id. */
   6558     bcmFieldActionHiGigDstPortGportNew = 337, /* Replace the value of DST_PORT field
   6559                                            in HiGig header ; param0: New
   6560                                            Destination Port Id. */
   6561     bcmFieldActionHiGigDstGportNew = 338, /* Replace the value of DST_MODID and
   6562                                            DST_PORT fields in HiGig header ;
   6563                                            param0: New Destination Gport. */
   6564     bcmFieldActionGpHiGigDropPrecedenceNew = 339, /* Replace the value of Drop Precedence
   6565                                            field in HiGig header for Green
   6566                                            Packets; param0: BCM_FIELD_COLOR_xxx. */
   6567     bcmFieldActionYpHiGigDropPrecedenceNew = 340, /* Replace the value of Drop Precedence
   6568                                            field in HiGig header for Yellow
   6569                                            packets; param0: BCM_FIELD_COLOR_xxx. */
   6570     bcmFieldActionRpHiGigDropPrecedenceNew = 341, /* Replace the value of Drop Precedence
   6571                                            field in HiGig header for Red
   6572                                            packets; param0: BCM_FIELD_COLOR_xxx. */
   6573     bcmFieldActionHiGigDropPrecedenceNew = 342, /* Replace the value of Drop Precedence
   6574                                            field in HiGig header for
   6575                                            any(Green/Yellow/Red) packets;
   6576                                            param0: BCM_FIELD_COLOR_xxx. */
   6577     bcmFieldActionGpHiGigIntPriNew = 343, /* Replace the value of Traffic Class
   6578                                            field in HiGig header for Green
   6579                                            packets; param0: New Internal
   6580                                            Priority. */
   6581     bcmFieldActionYpHiGigIntPriNew = 344, /* Replace the value of Traffic Class
   6582                                            field in HiGig header for Yellow
   6583                                            packets; param0: New Internal
   6584                                            Priority. */
   6585     bcmFieldActionRpHiGigIntPriNew = 345, /* Replace the value of Traffic Class
   6586                                            field in HiGig header for Red
   6587                                            packets; param0: New Internal
   6588                                            Priority. */
   6589     bcmFieldActionHiGigIntPriNew = 346, /* Replace the value of Traffic Class
   6590                                            field in HiGig header for
   6591                                            any(green/Yellow/Red) packet; param0:
   6592                                            New Internal Priority. */
   6593     bcmFieldActionLoopbackSrcModuleGportNew = 347, /* Replace the value of Source ModId
   6594                                            field in Loopback header ; param0:
   6595                                            New Source Module Id. */
   6596     bcmFieldActionLoopbackSrcPortGportNew = 348, /* Replace the value of Source PortId
   6597                                            field in Loopback header ; param0:
   6598                                            New Source Port Id. */
   6599     bcmFieldActionLoopbackSrcGportNew = 349, /* Replace the value of Source ModId and
   6600                                            Source PortId fields in Loopback
   6601                                            header ; param0: New Source Gport. */
   6602     bcmFieldActionLoopbackCpuMasqueradePktProfileNew = 350, /* Replace the value of Packet Profile
   6603                                            field in Loopback header ; param0:
   6604                                            New Packet Profile. */
   6605     bcmFieldActionLoopbackPacketProcessingPortNew = 351, /* Replace the value of Packet
   6606                                            Processing port field in Loopback
   6607                                            header ; param0: New Packet
   6608                                            Processing Port. */
   6609     bcmFieldActionLoopBackTypeNew = 352, /* Replace the value of Loopback Type
   6610                                            field in Loopback header ; param0:
   6611                                            Loopback Type
   6612                                            (bcmFieldLoopbackTypeXXX). */
   6613     bcmFieldActionRecoverableDropCancel = 353, /* Override drop decision taken by
   6614                                            Protection switching logic */
   6615     bcmFieldActionStackingRouteNew = 354, /* Replace the value of the stacking
   6616                                            route */
   6617     bcmFieldActionPphPresentSet = 355,  /* If set, a Packet Processing header is
   6618                                            present. */
   6619     bcmFieldActionVxlanHeaderBits8_31_Set = 356, /* Set Vxlan Header Reserved_1 Field */
   6620     bcmFieldActionVxlanHeaderBits56_63_Set = 357, /* Set Vxlan Header Reserved_2 Field */
   6621     bcmFieldActionFabricHeaderSet = 358, /* If set, a Packet Processing header is
   6622                                            present. */
   6623     bcmFieldActionOam = 359,            /* It comprises several fields that are
   6624                                            changed at the same time: OAM-Up-Mep,
   6625                                            OAM-Sub-Type, OAM-offset,
   6626                                            OAM-Stamp-Offset */
   6627     bcmFieldActionVpnSet = 360,         /* Set a new VPN value; param0: VPN Id. */
   6628     bcmFieldActionL3DestRoutePublicValueSet = 361, /* Set L3 Destination public lookup
   6629                                            result. */
   6630     bcmFieldActionL3SrcRoutePublicValueSet = 362, /* Set L3 Source public lookup result. */
   6631     bcmFieldActionClassZero = 363,      /* Class Action Zero. */
   6632     bcmFieldActionClassOne = 364,       /* Class Action One. */
   6633     bcmFieldActionTrapReduced = 365,    /* Trap action without qualifier. */
   6634     bcmFieldActionGroupClassSet = 366,  /* Assign Class Id value to a Ingress
   6635                                            Field Group. */
   6636     bcmFieldActionEgressPbmpNullCopyToCpu = 367, /* Dropped Packets Copy to CPU */
   6637     bcmFieldActionPimBidirFwd = 368,    /* If set, enable PIM-BIDIR forwarding
   6638                                            of IP Multicast packets. */
   6639     bcmFieldActionDscpMapNew = 369,     /* Qos Mapping for Incoming packet DSCP */
   6640     bcmFieldActionReserved370 = 370,    /* Reserved action. */
   6641     bcmFieldActionReserved371 = 371,    /* Reserved action. */
   6642     bcmFieldActionReserved372 = 372,    /* Reserved action. */
   6643     bcmFieldActionReserved373 = 373,    /* Reserved action. */
   6644     bcmFieldActionFabricEHAddOrUpdate = 374, /* To add or update the HiGig extended
   6645                                            header(4 bytes) to HiGig Packets. */
   6646     bcmFieldActionDot1pPreserve = 375,  /* To prohibit changing/rewriting of
   6647                                            packets 802.1p priority. */
   6648     bcmFieldActionGpDot1pPreserve = 376, /* To prohibit changing/rewriting of
   6649                                            Green packets 802.1p priority. */
   6650     bcmFieldActionYpDot1pPreserve = 377, /* To prohibit changing/rewriting of
   6651                                            yellow packets 802.1p priority. */
   6652     bcmFieldActionRpDot1pPreserve = 378, /* To prohibit changing/rewriting of red
   6653                                            packets 802.1p priority. */
   6654     bcmFieldActionDscpPreserve = 379,   /* To prohibit changing/rewriting of
   6655                                            packets DSCP. */
   6656     bcmFieldActionGpDscpPreserve = 380, /* To prohibit changing/rewriting of
   6657                                            green packets DSCP. */
   6658     bcmFieldActionYpDscpPreserve = 381, /* To prohibit changing/rewriting of
   6659                                            yellow packets DSCP. */
   6660     bcmFieldActionRpDscpPreserve = 382, /* To prohibit changing/rewriting of red
   6661                                            packets DSCP. */
   6662     bcmFieldActionChangeL2FieldsCancel = 383, /* Cancel Changing OuterVlan, SrcMac,
   6663                                            DstMac, VnTag, Etag from lower
   6664                                            priority groups. */
   6665     bcmFieldActionBFDSessionIdNew = 384, /* Assign new Session Id to BFD
   6666                                            EndPoint. */
   6667     bcmFieldActionCosMapNew = 385,      /* Override the default internal
   6668                                            priority to cosq mapping derived in
   6669                                            ingress pipeline using new IFP Cos
   6670                                            Map. */
   6671     bcmFieldActionGpCosMapNew = 386,    /* Override the default internal
   6672                                            priority to cosq mapping derived in
   6673                                            ingress pipeline using new IFP Cos
   6674                                            Map for Green Packets only. */
   6675     bcmFieldActionYpCosMapNew = 387,    /* Override the default internal
   6676                                            priority to cosq mapping derived in
   6677                                            ingress pipeline using new IFP Cos
   6678                                            Map for Yellow Packets only. */
   6679     bcmFieldActionRpCosMapNew = 388,    /* Override the default internal
   6680                                            priority to cosq mapping derived in
   6681                                            ingress pipeline using new IFP Cos
   6682                                            Map for Red Packets only. */
   6683     bcmFieldActionVxlanHeaderFlags = 389, /* Set Vxlan Header Flags Field. */
   6684     bcmFieldActionChangeL2Fields = 390, /* Modify L2 fields for the given L3
   6685                                            egress object. */
   6686     bcmFieldActionExactMatchClassId = 391, /* Exact Match Action Class Id. */
   6687     bcmFieldActionPfcTx = 392,          /* Send out a PFC frame. parma0: local
   6688                                            port number. param1: the enable
   6689                                            vector of the PFC frame */
   6690     bcmFieldActionSwitchEncap = 393,    /* To encapsulate MiML or Custom Header
   6691                                            in the customer Ethernet packet for
   6692                                            selected packets */
   6693     bcmFieldActionStatVportNew = 394,   /* Replace/assign virtual port id
   6694                                            attached to specific statistic */
   6695     bcmFieldActionUcastQueueNew = 395,  /* Assign new Unicast Queue Number
   6696                                            param0: l2 UC queue gport. */
   6697     bcmFieldActionRpUcastQueueNew = 396, /* Red packet Assign new Unicast Queue
   6698                                            Number param0: l2 UC queue gport. */
   6699     bcmFieldActionYpUcastQueueNew = 397, /* Yellow Packet Assign new Unicast
   6700                                            Queue Number param0: l2 UC queue
   6701                                            gport. */
   6702     bcmFieldActionGpUcastQueueNew = 398, /* Green Packet Assign new Unicast Queue
   6703                                            Number param0: l2 UC queue gport. */
   6704     bcmFieldActionIntCosUcastQueueNew = 399, /* Assign new Unicast Queue Number
   6705                                            param0: l2 UC queue gport. param1:
   6706                                            classifier id */
   6707     bcmFieldActionRpIntCosUcastQueueNew = 400, /* Red Packet Assign new Unicast Queue
   6708                                            Number param0: l2 UC queue gport.
   6709                                            param1: classifier id */
   6710     bcmFieldActionYpIntCosUcastQueueNew = 401, /* Yellow Packet Assign new Unicast
   6711                                            Queue Number param0: l2 UC queue
   6712                                            gport. param1: classifier id */
   6713     bcmFieldActionGpIntCosUcastQueueNew = 402, /* Green Packet Assign new Unicast Queue
   6714                                            Number param0: l2 UC queue gport.
   6715                                            param1: classifier id */
   6716     bcmFieldActionHgTrunkRandomRoundRobinHashCancel = 403, /* Cancel Random or Roundrobin hash
   6717                                            configured for HiGig Trunks */
   6718     bcmFieldActionTrunkRandomRoundRobinHashCancel = 404, /* Cancel Random or Roundrobin hash
   6719                                            configured for Trunks */
   6720     bcmFieldActionEcmpRandomRoundRobinHashCancel = 405, /* Cancel Random or Roundrobin hash
   6721                                            configured for Ecmp */
   6722     bcmFieldActionPacketTraceEnable = 406, /* trigger storing all instrumentation
   6723                                            triggers for this packet to a buffer.
   6724                                            Other than IFP, same can be done
   6725                                            using packet visibility API */
   6726     bcmFieldActionStrength = 407,       /* Strength for CopyToCpu or Redirection
   6727                                            packets */
   6728     bcmFieldActionRedirectBufferPriority = 408, /* Buffer priority for CopyToCpu or
   6729                                            Redirection packets */
   6730     bcmFieldActionRedirectPrioIntNew = 409, /* Internal priority for Redirected
   6731                                            packets */
   6732     bcmFieldActionRpRedirectPrioIntNew = 410, /* Internal priority for Redirected Red
   6733                                            packets */
   6734     bcmFieldActionYpRedirectPrioIntNew = 411, /* Internal priority for Redirected
   6735                                            Yellow packets */
   6736     bcmFieldActionGpRedirectPrioIntNew = 412, /* Internal priority for Redirected
   6737                                            Green packets */
   6738     bcmFieldActionUntaggedPacketPriorityNew = 413, /* set input priority for untagged
   6739                                            packets. (not internal priority,
   6740                                            refer doc) */
   6741     bcmFieldActionDoNotCutThrough = 414, /* On configuring this action, the
   6742                                            packet is not eligible for
   6743                                            cut-through mode in MMU. It will take
   6744                                            the default store and forward method. */
   6745     bcmFieldActionLoopbackOamResponse = 415, /* Generate OAM Loopback response. */
   6746     bcmFieldActionLoopbackSatResponse = 416, /* Generate SAT latching Loopback
   6747                                            response. */
   6748     bcmFieldActionOamStatObjectSessionId = 417, /* Adds LM counter index to OLP header
   6749                                            to uniquely identify OAM session. */
   6750     bcmFieldActionServicePrioIntCosQNew = 418, /* Change CoS Queue; param0: Classifier
   6751                                            ID param1: Queue offset. */
   6752     bcmFieldActionRpServicePrioIntCosQNew = 419, /* Red packet change CoS Queue; param0:
   6753                                            Classifier ID param1: Queue offset. */
   6754     bcmFieldActionYpServicePrioIntCosQNew = 420, /*  Yellow packet change CoS Queue;
   6755                                            param0: Classifier ID param1: Queue
   6756                                            offset. */
   6757     bcmFieldActionGpServicePrioIntCosQNew = 421, /* Green packet change CoS Queue;
   6758                                            param0: Classifier ID param1: Queue
   6759                                            offset. */
   6760     bcmFieldActionProtectionSwitchingDrop = 422, /* Drop the data packets on working or
   6761                                            protected path of PBB in VFP. */
   6762     bcmFieldActionServicePoolIdPrecedenceNew = 423, /* Change SPID and SPAP; param0: New
   6763                                            Service Pool ID param1: Service Pool
   6764                                            Precedence (color) */
   6765     bcmFieldActionSwapMacDaSa = 424,    /* Swap Destination and Source Mac
   6766                                            addresses */
   6767     bcmFieldActionSwapSourceIPDestIP = 425, /* Swap Destination and Source IP
   6768                                            addresses */
   6769     bcmFieldActionReplaceTtl = 426,     /* TTL is replaced with the value
   6770                                            programmed by
   6771                                            bcmFieldControlReplacementTtl instead
   6772                                            of decrementing */
   6773     bcmFieldActionPacketIsL3SAT = 427,  /* Indicates matched packet is L3SAT
   6774                                            packet and calculates offset to the
   6775                                            start of the L3SAT PDU */
   6776     bcmFieldActionReplaceSrcMac = 428,  /* Replace Source Mac */
   6777     bcmFieldActionReplaceDstMac = 429,  /* Replace Destination Mac */
   6778     bcmFieldActionReplaceInnerVlan = 430, /* Replace Inner Vlan */
   6779     bcmFieldActionReplaceOuterVlan = 431, /* Replace Outer Vlan */
   6780     bcmFieldActionReplaceInnerVlanPriority = 432, /* Replace Inner Vlan Priority */
   6781     bcmFieldActionReplaceOuterVlanPriority = 433, /* ReplaceOuter Vlan Priority */
   6782     bcmFieldActionStatAndPolicer = 434, /* Stat and Policer Action */
   6783     bcmFieldActionSnoopAndTrap = 435,   /* Snoop and Trap Action */
   6784     bcmFieldActionIEEE1588 = 436,       /* Setting varoius parameters for 1588
   6785                                            frames */
   6786     bcmFieldActionExternalValue4Set = 437, /* Set External lookup 4 result */
   6787     bcmFieldActionExternalValue5Set = 438, /* Set External lookup 5 result */
   6788     bcmFieldActionForward = 439,        /* Set Forwarding destination raw value */
   6789     bcmFieldActionTrapCodeQualifier = 440, /* Set Trap destination value (trap code
   6790                                            + forward strength+ snoop strength )
   6791                                            in addition to configurable value
   6792                                            that further resolves the cause of
   6793                                            the trap in the context of the
   6794                                            CPU-Trap-Code */
   6795     bcmFieldActionPphSnoopCode = 441,   /* Set the PPH Snoop code value */
   6796     bcmFieldActionEgressTimeStampInsert = 442, /* Insert EPIPE timestamp. */
   6797     bcmFieldActionIngressTimeStampInsert = 443, /* Insert IPIPE timestamp. */
   6798     bcmFieldActionIngressTimeStampInsertCancel = 444, /* Do not insert ingress timestamp.
   6799                                            Overrules port config. */
   6800     bcmFieldActionEgressTimeStampInsertCancel = 445, /* Do not insert egress timestamp.
   6801                                            Overrules port config. */
   6802     bcmFieldActionMplsLabel1ExpNew = 446, /* Change the EXP field in forwarding
   6803                                            label of MPLS packets. */
   6804     bcmFieldActionDynamicEcmpEnable = 447, /* Force packets to use DLB when matched
   6805                                            by IFP rules, even though the Group
   6806                                            Table indicates hash-based load
   6807                                            balancing is to be used. */
   6808     bcmFieldActionDynamicTrunkEnable = 448, /* Force packets to use DLB when matched
   6809                                            by IFP rules, even though the Group
   6810                                            Table indicates hash-based load
   6811                                            balancing is to be used. */
   6812     bcmFieldActionDynamicEcmpCancel = bcmFieldActionEcmpLoadBalanceCancel, /* Same as
   6813                                            bcmFieldActionEcmpLoadBalanceCancel. */
   6814     bcmFieldActionDynamicTrunkCancel = 449, /* Force packets to use hash-based load
   6815                                            balancing, even though the group is
   6816                                            configured to support DLB. */
   6817     bcmFieldActionDgm = 450,            /* Indicate IFP action is valid. It is
   6818                                            mandatory to add this action to for
   6819                                            the following three actions to get
   6820                                            applied. */
   6821     bcmFieldActionDgmThreshold = 451,   /* Indicates the IFP action is only
   6822                                            valid when the primary optimal band
   6823                                            is equal to or below this threshold.
   6824                                            If threshold is set to 7, this action
   6825                                            will always be valid. */
   6826     bcmFieldActionDgmBias = 452,        /* Indicates the bias in favor of the
   6827                                            alternate path in DGM. */
   6828     bcmFieldActionDgmCost = 453,        /* Indicates the cost of switching over
   6829                                            to the alternate path in DGM. */
   6830     bcmFieldActionStaggeredValue0Set = 454, /* Value taken from action result 0 in
   6831                                            staggered mode. */
   6832     bcmFieldActionStaggeredValue1Set = 455, /* Value taken from action result 1 in
   6833                                            staggered mode. */
   6834     bcmFieldActionStaggeredValue2Set = 456, /* Value taken from action result 2 in
   6835                                            staggered mode. */
   6836     bcmFieldActionStaggeredValue3Set = 457, /* Value taken from action result 3 in
   6837                                            staggered mode. */
   6838     bcmFieldActionStaggeredDirectValueSet = 458, /* Value taken from KAPS payload in
   6839                                            staggered mode. */
   6840     bcmFieldActionStaggeredPreselProfile0Set = 459, /* Program selection profile value taken
   6841                                            from action result 0 in staggered
   6842                                            mode. */
   6843     bcmFieldActionStaggeredPreselProfile1Set = 460, /* Program selection profile value taken
   6844                                            from action result 1 in staggered
   6845                                            mode. */
   6846     bcmFieldActionStaggeredPreselProfile2Set = 461, /* Program selection profile value taken
   6847                                            from action result 2 in staggered
   6848                                            mode. */
   6849     bcmFieldActionStaggeredPreselProfile3Set = 462, /* Program selection profile value taken
   6850                                            from action result 3 in staggered
   6851                                            mode. */
   6852     bcmFieldActionStaggeredPreselProfileDirectSet = 463, /* Program selection profile value taken
   6853                                            from KAPS payload 0 in staggered
   6854                                            mode. */
   6855     bcmFieldActionEnableVlanCheck = 464, /* Check VLAN membership and STG STP
   6856                                            state */
   6857     bcmFieldActionAdmitProfile = 465,   /* Return admit profile by
   6858                                            bcmFieldAdmitProfile_t */
   6859     bcmFieldActionDynamicHgTrunkEnable = 466, /* Force packets to use DLB when matched
   6860                                            by IFP rules, even though the Group
   6861                                            Table indicates hash-based load
   6862                                            balancing is to be used. */
   6863     bcmFieldActionVxlanTerminate = 467, /* De-capsulate VXLAN tunnel header */
   6864     bcmFieldActionUseTunnelPayload = 468, /* To use Tunnel payload header fields
   6865                                            for hashing */
   6866     bcmFieldActionVlanActions = 469,    /* Set actions to modify VLAN tag
   6867                                            fields. */
   6868     bcmFieldActionSRDuplicateDrop = 470, /* SR (Seamless Redundancy): drop the
   6869                                            packet if it's an SR duplicate */
   6870     bcmFieldActionSRDuplicateDropCancel = 471, /* SR (Seamless Redundancy): Do not drop
   6871                                            the duplicate packet (override
   6872                                            another rule) */
   6873     bcmFieldActionSRNetIdFilter = 472,  /* SR (Seamless Redundancy): NET ID
   6874                                            filtering drop the packet if its NET
   6875                                            ID is the same as destination ports */
   6876     bcmFieldActionSRNetIdSource = 473,  /* SR: Indicates the source which NET ID
   6877                                            comes from; param0:
   6878                                            BCM_FIELD_SR_NET_ID_SOURCE_xxx */
   6879     bcmFieldActionFilterSrcMacPorts = 474, /* SR: Apply source port filtering based
   6880                                            on source address */
   6881     bcmFieldActionSRCopyToCpu = 475,    /* SR: Copy all packets or only
   6882                                            non-duplicate packets to CPU with
   6883                                            specified custom reason code; param0:
   6884                                            BCM_FIELD_SR_COPYTOCPU_xxx; param1:
   6885                                            custom CPU RX reason code (1~63) */
   6886     bcmFieldActionSRTagAdd = 476,       /* Insert SR (Seamless Redundancy) tag
   6887                                            in the packet; param0: SR packet type
   6888                                            (BCM_FIELD_SR_TAG_TYPE_xxx) */
   6889     bcmFieldActionSRTagDelete = 477,    /* Delete SR (Seamless Redundancy) tag
   6890                                            (if present) in the packet; param0:
   6891                                            SR packet type
   6892                                            (BCM_FIELD_SR_TAG_TYPE_xxx) */
   6893     bcmFieldActionSRLanIdNew = 478,     /* Specify SR(Seamless Redundancy) LAN
   6894                                            ID; param0: 0 for LAN A, 1 for LAN B */
   6895     bcmFieldActionSRNetIdNew = 479,     /* Specify SR(Seamless Redundancy) NET
   6896                                            ID; param0: NET ID 0~7 */
   6897     bcmFieldActionSRFlowIdNew = 480,    /* Specify SR(Seamless Redundancy) flow
   6898                                            ID; param0: SR flow ID */
   6899     bcmFieldActionSRFlowPriMapIdNew = 481, /* Specify TSN priority map for
   6900                                            SR(Seamless Redundancy) flow; param0:
   6901                                            TSN priority map ID */
   6902     bcmFieldActionMtuSize = 482,        /* Specify MTU size that the packet
   6903                                            should be checked against. It
   6904                                            overrides the MTU size specified from
   6905                                            MTU profile. */
   6906     bcmFieldActionStuSize = 483,        /* Specify STU (Shortest Transmission
   6907                                            Unit) size that the packet should be
   6908                                            checked against. It overrides the STU
   6909                                            size specified from MTU profile. */
   6910     bcmFieldActionTsnFlowIdNew = 484,   /* Specify TSN (Time-Sensitive
   6911                                            Networking) flow ID; param0: TSN flow
   6912                                            ID. */
   6913     bcmFieldActionTsnFlowPriMapIdNew = 485, /* Specify TSN priority map for TSN
   6914                                            flow; param0: TSN priority map ID */
   6915     bcmFieldActionMtuProfileIdNew = 486, /* Specify the TSN MTU profile ID;
   6916                                            param0: new MTU profile ID */
   6917     bcmFieldActionStuProfileIdNew = 487, /* Specify the TSN STU (Shortest
   6918                                            Transmission Unit) profile ID;
   6919                                            param0: new STU profile ID */
   6920     bcmFieldActionExternalValue6Set = 488, /* Set External lookup 6 result */
   6921     bcmFieldActionExternalValue7Set = 489, /* Set External lookup 7 result */
   6922     bcmFieldActionEsmSearchKeySrcMac = 490, /* This action sets ESM search key to
   6923                                            perform only L2 Source Mac Address
   6924                                            Lookup */
   6925     bcmFieldActionTrunkResilientHashEnable = 491, /* Forcefully Enable Resilient hashing
   6926                                            for Trunk groups. */
   6927     bcmFieldActionTrunkResilientHashDisable = 492, /* Forcefully Disable Resilient hashing
   6928                                            for Trunk groups. */
   6929     bcmFieldActionEcmpResilientHashEnable = 493, /* Forcefully Enable Resilient hashing
   6930                                            for ECMP groups. */
   6931     bcmFieldActionEcmpResilientHashDisable = 494, /* Forcefully Disable Resilient hashing
   6932                                            for ECMP groups. */
   6933     bcmFieldActionHiGigTrunkResilientHashEnable = 495, /* Forcefully Enable Resilient hashing
   6934                                            for HiGig Trunk groups. */
   6935     bcmFieldActionHiGigTrunkResilientHashDisable = 496, /* Forcefully Disable Resilient hashing
   6936                                            for HiGig Trunk groups. */
   6937     bcmFieldActionMacSecDecrypt = 497,  /* This action adds MACSEC Decrypt OLP
   6938                                            header in Egress  Pipe. This action
   6939                                            does not modify packet in Egress
   6940                                            Pipe. */
   6941     bcmFieldActionMacSecEncrypt = 498,  /* This action only adds MACSEC Encrypt
   6942                                            OLP header in Egress Pipe. */
   6943     bcmFieldActionMacSecSubPortNumAdd = 499, /* This action assigns MACSEC Subport
   6944                                            number to be used by MACSEC engine
   6945                                            for Security Association lookup */
   6946     bcmFieldActionMacSecPktTypeSet = 500, /* This action assigns a MACSEC packet
   6947                                            type to be used in MACSEC block.
   6948                                            MACSEC packet type is defined by
   6949                                            bcm_field_macsec_pkt_type_t. */
   6950     bcmFieldActionLatencyFlowId = 501,  /* Update Latency-Flow-Id in OAM-TS
   6951                                            HEADER; param0: New Latency-Flow-Id
   6952                                            value. */
   6953     bcmFieldActionIntEncapEnable = 502, /* This action triggers to insert INT
   6954                                            metadata header to the incoming valid
   6955                                            INT packet. */
   6956     bcmFieldActionIntTurnAround = 503,  /* This action triggers to turn-around
   6957                                            the packet if it fails to detect the
   6958                                            INT packet (one of the case if the
   6959                                            packet reaches hop limit). */
   6960     bcmFieldActionMacSecRedirectIpmc = 504, /* This action redirects multicast
   6961                                            MACSEC packets to MACSEC engine and
   6962                                            also adds OLP header in Egress
   6963                                            Pipeline. */
   6964     bcmFieldActionAddIngOuterVlanToEgrOuterVlan = 505, /* This action is to add the incoming
   6965                                            outer VLAN tag to the outgoing packet
   6966                                            in Egress Pipeline. */
   6967     bcmFieldActionErspan3HdrVlanCosPktCopy = 506, /* This action is to copy the incoming
   6968                                            outer VLAN and COS in the outgoing
   6969                                            ERSPAN3 header. */
   6970     bcmFieldActionErspan3HdrGbpSrcIdAdd = 507, /* This action is to add the GBP source
   6971                                            ID in ERSPAN3 header. */
   6972     bcmFieldActionErspan3HdrUdf2Add = 508, /* This action is to add the User
   6973                                            Defined Field 2 in ERSPAN3 header. */
   6974     bcmFieldActionRoeFrameTypeSet = 509, /* This action is to set or overwrite
   6975                                            Roe frame type. Roe frame types are
   6976                                            defined by
   6977                                            bcm_field_roe_frame_type_t. */
   6978     bcmFieldActionFlowtrackerGroupId = 510, /* This action is to associate
   6979                                            flowtracker group. */
   6980     bcmFieldActionStatisticPtr0 = 511,  /* Statistic pointer 0 for statistic
   6981                                            interface (stat I/F). */
   6982     bcmFieldActionStatisticPtr1 = 512,  /* Statistic pointer 1 for statistic
   6983                                            interface (stat I/F). */
   6984     bcmFieldActionTafGatePriMap = 513,  /* This action specify the priority
   6985                                            mapping of TAF (Time Aware Filtering)
   6986                                            gate. */
   6987     bcmFieldActionIntEncapUpdate = 514, /* This action triggers to update
   6988                                            existing INT metadata header of a
   6989                                            incoming valid INT packet. */
   6990     bcmFieldActionMplsLookupEnable = 515, /* Enable MPLS lookup similar to the
   6991                                            functionality managed by VLAN
   6992                                            controls; param0:BCM_FIELD_MPLS_XXX */
   6993     bcmFieldActionTerminationAllowed = 516, /* Overrides MY_STATION_TCAM actions;
   6994                                            param0:BCM_FIELD_XXX_TERM_ALLOWED */
   6995     bcmFieldActionMatchPbmpDrop = 517,  /* Drop packets on a port or a group of
   6996                                            ports after IFP resolution */
   6997     bcmFieldActionMatchPbmpRedirect = 518, /* Redirect packets on a port or a group
   6998                                            of ports after IFP resolution */
   6999     bcmFieldActionIntEncapDisable = 519, /* This action triggers to disable the
   7000                                            insertion of INT metadata header to
   7001                                            the incoming valid INT packet. */
   7002     bcmFieldActionElephantLookupEnable = 520, /* Enable Elephant flow lookup. */
   7003     bcmFieldActionElephantLookupDisable = 521, /* Disable Elephant flow lookup. */
   7004     bcmFieldActionElephantColorEnable = 522, /* Enable color assignment for a packet
   7005                                            identified as Elephant. */
   7006     bcmFieldActionElephantColorDisable = 523, /* Disable color assignment for a packet
   7007                                            identified as Elephant. */
   7008     bcmFieldActionElephantQueueEnable = 524, /* Enable Queue assignment for a packet
   7009                                            identified as Elephant. */
   7010     bcmFieldActionElephantQueueDisable = 525, /* Disable Queue assignment for a packet
   7011                                            identified as Elephant. */
   7012     bcmFieldActionLatencyMonitorEnable = 526, /* Enable Latency Monitor for a given
   7013                                            monitor IDs. */
   7014     bcmFieldActionLatencyMonitorDisable = 527, /* Disable Latency Monitor for a given
   7015                                            monitor IDs. */
   7016     bcmFieldActionOamLmCounterPoolId = 528, /* This action assigns OAM LM Counter
   7017                                            Pool ID. */
   7018     bcmFieldActionLoopbackType = 529,   /* Loopback Type of type
   7019                                            bcm_field_LoopbackType_t. */
   7020     bcmFieldActionVisibilityEnable = 530, /* This action marks a packet as
   7021                                            Visibility Packet */
   7022     bcmFieldActionDlbEcmpMonitorEnable = 531, /* This action is to enable/disable ecmp
   7023                                            monitor during DLB. */
   7024     bcmFieldActionMirrorZeroingEnable = 532, /* This action is to enable zeroing
   7025                                            [payload wiping] on any mirrored
   7026                                            packet */
   7027     bcmFieldActionNshEncapEnable = 533, /* This action triggers to NSH
   7028                                            encapuslation in the outgoing packet. */
   7029     bcmFieldActionNshServicePathId = 534, /* Add Service Path ID to the NSH for
   7030                                            the lookups at egress stage. */
   7031     bcmFieldActionNshServiceIndex = 535, /* Add Service Index to the NSH for the
   7032                                            lookups at egress stage. */
   7033     bcmFieldActionL3IngressStrengthSet = 536, /* Set the strength levels for L3_IIF
   7034                                            assignment from various sources w.r.t
   7035                                            VFP.. */
   7036     bcmFieldActionGbpClassifierAdd = 537, /* Indicates that GBP is present for
   7037                                            EPIPE for Multicast flows. */
   7038     bcmFieldActionGbpSrcIdNew = 538,    /* Assign a new GBP source ID for
   7039                                            matched packet. */
   7040     bcmFieldActionAssignOpaqueObject1 = 539, /* Assign a flex Opaque 1 object. */
   7041     bcmFieldActionAssignOpaqueObject2 = 540, /* Assign a flex Opaque 2 object. */
   7042     bcmFieldActionAssignOpaqueObject3 = 541, /* Assign a flex Opaque 3 object. */
   7043     bcmFieldActionAssignOpaqueObject4 = 542, /* Assign a flex Opaque 4 object. */
   7044     bcmFieldActionAssignExtractionCtrlId = 543, /* Assign a flex Extraction Control ID. */
   7045     bcmFieldActionAssignEditCtrlId = 544, /* Assign a flex Extraction Control ID. */
   7046     bcmFieldActionFlowtrackerEnable = 545, /* Enable/Disable Flowtracking for flows
   7047                                            hitting this entry. */
   7048     bcmFieldActionFlowtrackerNewLearnEnable = 546, /* Enable/Disable new learning in
   7049                                            flowtracker for flows hitting this
   7050                                            entry. */
   7051     bcmFieldActionCosMapSelect = 547,   /* This action applies the given COS map
   7052                                            type (as defined in
   7053                                            bcm_field_cos_map_select_t) */
   7054     bcmFieldActionGbpSrcMacMcastBitSet = 548, /* This action converts matched packet?s
   7055                                            Source Mac to Multicast based on
   7056                                            Field Control
   7057                                            bcmFieldControlGbpSrcMacMcastBitSet */
   7058     bcmFieldActionGbpDstIdNew = 549,    /* Assign a new  GBP Destination ID for
   7059                                            matched packet. */
   7060     bcmFieldActionLoopbackSubtype = 550, /* This action adds Subtype in the
   7061                                            Loopback header. */
   7062     bcmFieldActionEgressFlowControlEnable = 551, /* This action enables Egress Flow
   7063                                            controls */
   7064     bcmFieldActionEgressFlowEncapEnable = 552, /* This action enables Egress Flow encap
   7065                                            of type bcm_field_egress_flow_encap_t */
   7066     bcmFieldActionSystemHeaderSizeAdjust = 553, /* Updates the System Header Size Adjust
   7067                                            value. */
   7068     bcmFieldActionInVportClass0 = 554,  /* Updates the profile of an in LIF 0
   7069                                            encoded as Gport. */
   7070     bcmFieldActionInVportClass1 = 555,  /* Updates the profile of an in LIF 1
   7071                                            encoded as Gport. */
   7072     bcmFieldActionNetworkQos = 556,     /* Set the Network QoS. */
   7073     bcmFieldActionVoid = 557,           /* This action will be used when no Hw
   7074                                            resource should be taken (SW only). */
   7075     bcmFieldActionContainer = 558,      /* This action will be used as container
   7076                                            in IPMF2, to parse the action buffer,
   7077                                            when performing cascading between
   7078                                            IPMF2 and IPMF3. */
   7079     bcmFieldActionParsingStartType = 559, /*  Indicate the layer type that egress
   7080                                            parser should consider. */
   7081     bcmFieldActionParsingStartOffset = 560, /*  Indicate from which offset egress
   7082                                            parser should start parsing (all info
   7083                                            before that will not be parsed). */
   7084     bcmFieldActionEgressForwardingIndex = 561, /* Indicate for egress parser which
   7085                                            layer is the Forwarding layer. */
   7086     bcmFieldActionUDHData0 = 562,       /* User Define Header 0 data. */
   7087     bcmFieldActionUDHData1 = 563,       /* User Define Header 1 data. */
   7088     bcmFieldActionUDHData2 = 564,       /* User Define Header 2 data. */
   7089     bcmFieldActionUDHData3 = 565,       /* User Define Header 3 data. */
   7090     bcmFieldActionUDHBase0 = 566,       /* User Define Header 0 base. */
   7091     bcmFieldActionUDHBase1 = 567,       /* User Define Header 1 base. */
   7092     bcmFieldActionUDHBase2 = 568,       /* User Define Header 2 base. */
   7093     bcmFieldActionUDHBase3 = 569,       /* User Define Header 3 base. */
   7094     bcmFieldActionUDHBase = 570,        /* User define header base, used in
   7095                                            IPMF3. */
   7096     bcmFieldActionIPTProfile = 571,     /* IPT Profile action. */
   7097     bcmFieldActionIPTCommand = 572,     /* IPT Profile command. */
   7098     bcmFieldActionStatId0 = 573,        /* Updates statistics ID on entry hit. */
   7099     bcmFieldActionStatId1 = 574,        /* Updates statistics ID on entry hit. */
   7100     bcmFieldActionStatId2 = 575,        /* Updates statistics ID on entry hit. */
   7101     bcmFieldActionStatId3 = 576,        /* Updates statistics ID on entry hit. */
   7102     bcmFieldActionStatId4 = 577,        /* Updates statistics ID on entry hit. */
   7103     bcmFieldActionStatId5 = 578,        /* Updates statistics ID on entry hit. */
   7104     bcmFieldActionStatId6 = 579,        /* Updates statistics ID on entry hit. */
   7105     bcmFieldActionStatId7 = 580,        /* Updates statistics ID on entry hit. */
   7106     bcmFieldActionStatId8 = 581,        /* Updates statistics ID on entry hit. */
   7107     bcmFieldActionStatId9 = 582,        /* Updates statistics ID on entry hit. */
   7108     bcmFieldActionStatProfile0 = 583,   /* Updates statistics profile on entry
   7109                                            hit. */
   7110     bcmFieldActionStatProfile1 = 584,   /* Updates statistics profile on entry
   7111                                            hit. */
   7112     bcmFieldActionStatProfile2 = 585,   /* Updates statistics profile on entry
   7113                                            hit. */
   7114     bcmFieldActionStatProfile3 = 586,   /* Updates statistics profile on entry
   7115                                            hit. */
   7116     bcmFieldActionStatProfile4 = 587,   /* Updates statistics profile on entry
   7117                                            hit. */
   7118     bcmFieldActionStatProfile5 = 588,   /* Updates statistics profile on entry
   7119                                            hit. */
   7120     bcmFieldActionStatProfile6 = 589,   /* Updates statistics profile on entry
   7121                                            hit. */
   7122     bcmFieldActionStatProfile7 = 590,   /* Updates statistics profile on entry
   7123                                            hit. */
   7124     bcmFieldActionStatProfile8 = 591,   /* Updates statistics profile on entry
   7125                                            hit. */
   7126     bcmFieldActionStatProfile9 = 592,   /* Updates statistics profile on entry
   7127                                            hit. */
   7128     bcmFieldActionInvalidNext = 593,    /* Indicates to not execute the next
   7129                                            action. */
   7130     bcmFieldActionIngressDoNotLearn = 594, /* Disables L2 learning in ingress. */
   7131     bcmFieldActionEgressDoNotLearn = 595, /* Disables L2 learning in egress. */
   7132     bcmFieldActionDstRpf = 596,         /* Set the RPF destination. */
   7133     bcmFieldActionDstRpfValid = 597,    /* Validate the RPF destination. */
   7134     bcmFieldActionVisibilityClear = 598, /* Clear visibility. */
   7135     bcmFieldActionStatMetaData = 599,   /* Set statistics metaData. */
   7136     bcmFieldActionAceEntryId = 600,     /* Set ace ID pointer. */
   7137     bcmFieldActionInVport0 = 601,       /* Set INLIF0, value given as Gport. */
   7138     bcmFieldActionInVport1 = 602,       /* Set INLIF1, value given as Gport. */
   7139     bcmFieldActionOutVport0 = 603,      /* Set OUTLIF0, value given as Gport. */
   7140     bcmFieldActionOutVport1 = 604,      /* Set OUTLIF1, value given as Gport. */
   7141     bcmFieldActionOutVport2 = 605,      /* Set OUTLIF2, value given as Gport. */
   7142     bcmFieldActionOutVport3 = 606,      /* Set OUTLIF3, value given as Gport. */
   7143     bcmFieldActionExtStat0 = 607,       /* Update External Statistics ID 0. */
   7144     bcmFieldActionExtStat1 = 608,       /* Update External Statistics ID 1. */
   7145     bcmFieldActionExtStat2 = 609,       /* Update External Statistics ID 2. */
   7146     bcmFieldActionExtStat3 = 610,       /* Update External Statistics ID 3. */
   7147     bcmFieldActionForwardingTypeMeterMap = 611, /* Maps L2 forwarding type to one of the
   7148                                            general meters. */
   7149     bcmFieldActionStatSampling = 612,   /* Updates statistical sampling value. */
   7150     bcmFieldActionStatOamLM = 613,      /* Updates OAM LM counter value. */
   7151     bcmFieldActionForwardingLayerIndex = 614, /* Changes the forwarding Layer index at
   7152                                            Egress. */
   7153     bcmFieldActionInInterface0 = 615,   /* Changes the in LIF (INLIF0) encoded
   7154                                            as interface. */
   7155     bcmFieldActionInInterface1 = 616,   /* Changes the in LIF (INLIF1) encoded
   7156                                            as interface. */
   7157     bcmFieldActionOutInterface0 = 617,  /* Changes the out LIF (OUTLIF0) encoded
   7158                                            as interface. */
   7159     bcmFieldActionOutInterface1 = 618,  /* Changes the out LIF (OUTLIF1) encoded
   7160                                            as interface. */
   7161     bcmFieldActionOutInterface2 = 619,  /* Changes the out LIF (OUTLIF2) encoded
   7162                                            as interface. */
   7163     bcmFieldActionOutInterface3 = 620,  /* Changes the out LIF (OUTLIF3) encoded
   7164                                            as interface. */
   7165     bcmFieldActionTrapStrength = 621,   /* Updates the Trap Strength. */
   7166     bcmFieldActionSnoopStrength = 622,  /* Updates the Snoop strength. */
   7167     bcmFieldActionOutPortTrafficManagement = 623, /* Updates the Out-TM port. */
   7168     bcmFieldActionAceContextValue = 624, /* Updates ACE context. */
   7169     bcmFieldActionBierStringOffset = 625, /* Updates Bier string offset. */
   7170     bcmFieldActionBierStringSize = 626, /* Updates Bier string size. */
   7171     bcmFieldActionPacketIsBier = 627,   /* Updates is Bier packet. */
   7172     bcmFieldActionEventor = 628,        /* Enable push data to eventor. */
   7173     bcmFieldActionForwardingAdditionalInfo = 629, /* Updates forwarding additional
   7174                                            information. */
   7175     bcmFieldActionSmallExemLearn = 630, /* Updates the Small Exact Match learn
   7176                                            info (IPMF2 only). */
   7177     bcmFieldActionLargeExemLearn = 631, /* Updates the Large Exact Match learn
   7178                                            info (IPMF1 only). */
   7179     bcmFieldActionGroupLookupDisable = 632, /* Disables FP lookup for a given group
   7180                                            or groups sharing same slice
   7181                                            (Applicable to Presel only). */
   7182     bcmFieldActionOamCopyToCpu = 633,   /* Copies packet to CPU along with OAM
   7183                                            reason code be carried to CPU */
   7184     bcmFieldActionGpOamCopyToCpu = 634, /* Copies Green packet to CPU along with
   7185                                            OAM reason code be carried to CPU */
   7186     bcmFieldActionYpOamCopyToCpu = 635, /* Copies Yellow packet to CPU along
   7187                                            with OAM reason code be carried to
   7188                                            CPU */
   7189     bcmFieldActionRpOamCopyToCpu = 636, /* Copies Red packet to CPU along with
   7190                                            OAM reason code be carried to CPU */
   7191     bcmFieldActionInVport0Raw = 637,    /* Change the In Lif0, with raw value. */
   7192     bcmFieldActionInVport1Raw = 638,    /* Change the In Lif1, with raw value. */
   7193     bcmFieldActionOutVport0Raw = 639,   /* Change the Out Lif 0, with raw value. */
   7194     bcmFieldActionOutVport1Raw = 640,   /* Change the Out Lif 1, with raw value. */
   7195     bcmFieldActionOutVport2Raw = 641,   /* Change the Out Lif 2, with raw value. */
   7196     bcmFieldActionOutVport3Raw = 642,   /* Change the Out Lif 3, with raw value. */
   7197     bcmFieldActionAppendPointerCompensation = 643, /* Configures pointer to header append
   7198                                            compensation value. */
   7199     bcmFieldActionAssignNatClassId = 644, /* Assigns NAT class ID to have lookup
   7200                                            in Egress Vlan translation for NAT. */
   7201     bcmFieldActionAssignChangeL2FieldsClassId = 645, /* Assigns class ID to have a lookup in
   7202                                            Egress Vlan translation for Change L2
   7203                                            Fields. */
   7204     bcmFieldActionIngressTimeStampInsertValid = 646, /* Insert ingress timestamp. Overrides
   7205                                            the time stamp in TSH header. */
   7206     bcmFieldActionMacSecDecryptPktType = 647, /* This action updates MACSEC Decrypt
   7207                                            packet type. */
   7208     bcmFieldActionMacSecEncryptPktType = 648, /* This action updates MACSEC Encrypt
   7209                                            packet type in Egress Pipe. */
   7210     bcmFieldActionMacSecUseSubportNumberFromEvxlt = 649, /* This action updates subport number
   7211                                            from EVXLT in Egress Pipe for Encrypt
   7212                                            case. */
   7213     bcmFieldActionMacSecModidBase = 650, /* This action enables the new modid
   7214                                            base for MACSEC. */
   7215     bcmFieldActionFlowtrackerTimestampDelayMode = 651, /* This action sets timestamp delay mode
   7216                                            for flowtracker. Delay mode is
   7217                                            defined by
   7218                                            bcm_field_flowtracker_timestamp_delay_mode_t. */
   7219     bcmFieldActionSnoopRaw = 652,       /* Snoop matched packets, input should
   7220                                            be raw value. At egress stage refers
   7221                                            only to the snoop ID (strength is not
   7222                                            relevant, and can be changed using
   7223                                            bcmFieldActionSnoopStrength action) */
   7224     bcmFieldActionDropPrecedenceRaw = 653, /* Set Packet's Drop Precedence, input
   7225                                            expects raw value. */
   7226     bcmFieldActionFabricHeaderSetRaw = 654, /* Change System Header Profile, input
   7227                                            expects raw value. */
   7228     bcmFieldActionSrcGportNewRaw = 655, /* Set the Source-Port, input expects
   7229                                            raw value. */
   7230     bcmFieldActionLatencyFlowIdRaw = 656, /* Change the latency flow-Id, input
   7231                                            expects raw value. */
   7232     bcmFieldActionMirrorIngressRaw = 657, /* Set mirror in ingress, input expects
   7233                                            raw value. */
   7234     bcmFieldActionOamRaw = 658,         /* Changes 4 OAM signals
   7235                                            (OAM-Stamp-Offset, OAM-offset,
   7236                                            OAM-Sub-Type, OAM-Up-Mep), input
   7237                                            expects raw value. */
   7238     bcmFieldActionTrapRaw = 659,        /* Set Trap code, input should be raw
   7239                                            value. At egress stage refers only to
   7240                                            the TRAP ID (strength is not
   7241                                            relevant, and can be changed using
   7242                                            bcmFieldActionTrapStrength action). */
   7243     bcmFieldActionVrfSetRaw = 660,      /* Set VRF. Input expects raw value. */
   7244     bcmFieldActionStatProfile0Raw = 661, /* Updates statistics profile 0. Input
   7245                                            expects raw value. */
   7246     bcmFieldActionStatProfile1Raw = 662, /* Updates statistics profile 1. Input
   7247                                            expects raw value. */
   7248     bcmFieldActionStatProfile2Raw = 663, /* Updates statistics profile 2. Input
   7249                                            expects raw value. */
   7250     bcmFieldActionStatProfile3Raw = 664, /* Updates statistics profile 3. Input
   7251                                            expects raw value. */
   7252     bcmFieldActionStatProfile4Raw = 665, /* Updates statistics profile 4. Input
   7253                                            expects raw value. */
   7254     bcmFieldActionStatProfile5Raw = 666, /* Updates statistics profile 5. Input
   7255                                            expects raw value. */
   7256     bcmFieldActionStatProfile6Raw = 667, /* Updates statistics profile 6. Input
   7257                                            expects raw value. */
   7258     bcmFieldActionStatProfile7Raw = 668, /* Updates statistics profile 7. Input
   7259                                            expects raw value. */
   7260     bcmFieldActionStatProfile8Raw = 669, /* Updates statistics profile 8. Input
   7261                                            expects raw value. */
   7262     bcmFieldActionStatProfile9Raw = 670, /* Updates statistics profile 9. Input
   7263                                            expects raw value. */
   7264     bcmFieldActionExtStat0Raw = 671,    /* Update External Statistics ID 0.
   7265                                            Input expects raw value. */
   7266     bcmFieldActionExtStat1Raw = 672,    /* Update External Statistics ID 1.
   7267                                            Input expects raw value. */
   7268     bcmFieldActionExtStat2Raw = 673,    /* Update External Statistics ID 2.
   7269                                            Input expects raw value. */
   7270     bcmFieldActionExtStat3Raw = 674,    /* Update External Statistics ID 3.
   7271                                            Input expects raw value. */
   7272     bcmFieldActionStatSamplingRaw = 675, /* Update statistical sampling value,
   7273                                            input expects raw value. */
   7274     bcmFieldActionStartPacketStripRaw = 676, /* Strip the start of packet. Refers to
   7275                                            bcm_field_start_packet_strip_t. Input
   7276                                            expects raw value. */
   7277     bcmFieldActionParsingStartTypeRaw = 677, /* Indicate the layer type that egress
   7278                                            parser should consider, input expects
   7279                                            raw value. */
   7280     bcmFieldActionParsingStartOffsetRaw = 678, /* Indicate from which offset egress
   7281                                            parser should start parsing (all info
   7282                                            before that will not be parsed).
   7283                                            Input expects raw value. */
   7284     bcmFieldActionIPTCommandRaw = 679,  /* IPT Profile command. Input expects
   7285                                            raw value. */
   7286     bcmFieldActionMirrorEgressRaw = 680, /* Update the egress mirror profile,
   7287                                            input expects raw value. */
   7288     bcmFieldActionTrapStrengthRaw = 681, /* Updates the Trap Strength, input
   7289                                            expects raw value. */
   7290     bcmFieldActionSnoopStrengthRaw = 682, /* Updates the Snoop Strength, input
   7291                                            expects raw value. */
   7292     bcmFieldActionAceContextValueRaw = 683, /* Updates programmable value per ACE
   7293                                            context, input expects raw value. */
   7294     bcmFieldActionStat0Raw = 684,       /* Stat meter object. Input expects raw
   7295                                            value. */
   7296     bcmFieldActionStat1Raw = 685,       /* Stat counter object. Input expects
   7297                                            raw value. */
   7298     bcmFieldActionIpMulticastCompatible = 686, /* Designates when a Compatible MC
   7299                                            procedure found a match. */
   7300     bcmFieldActionRpfOutVport = 687,    /* Updates the RPF OUT LIF. */
   7301     bcmFieldActionRpfOutInterface = 688, /* Updates the RPF OUT LIF. */
   7302     bcmFieldActionRpfOutVportRaw = 689, /* Updates the RPF OUT LIF. Input
   7303                                            expects raw value. */
   7304     bcmFieldActionMirrorOnDropEnable = 690, /* This action enables Mirror On Drop
   7305                                            which in turn mirrors MMU dropped
   7306                                            packets to CosQ profile set by action
   7307                                            bcmFieldActionMirrorOnDropProfileSet */
   7308     bcmFieldActionMirrorOnDropProfileSet = 691, /* Mirrors the MMU dropped packets to
   7309                                            the given CosQ profile. Action
   7310                                            bcmFieldActionMirrorOnDropProfileSet 
   7311                                            need to be added to the entry to
   7312                                            enable this feature. */
   7313     bcmFieldActionLearnRaw0 = 692,      /* Updates learn info 0. */
   7314     bcmFieldActionLearnRaw1 = 693,      /* Updates learn info 1. */
   7315     bcmFieldActionLearnRaw2 = 694,      /* Updates learn info 2. */
   7316     bcmFieldActionLearnRaw3 = 695,      /* Updates learn info 3. */
   7317     bcmFieldActionLearnRaw4 = 696,      /* Updates learn info 4. */
   7318     bcmFieldActionIngressDstTypeSelect = 697, /* To set, packet destination type. */
   7319     bcmFieldActionIngressDstVal = 698,  /* To set, packet destination value. */
   7320     bcmFieldActionDlbEcmpAlternatePathEnable = 699, /* To enable Dynamic Load balancing ECMP
   7321                                            alternate path. */
   7322     bcmFieldActionDlbEcmpMonitorDisable = 700, /* To disable Dynamic Load Balancing
   7323                                            ECMP monitoring */
   7324     bcmFieldActionDlbTrunkAlternatePathEnable = 701, /* To enable Dynamic Load balancing LAG
   7325                                            alternate path. */
   7326     bcmFieldActionDlbTrunkMonitorDisable = 702, /* To disable Dynamic Load Balancing LAG
   7327                                             monitoring. */
   7328     bcmFieldActionDlbTrunkMonitorEnable = 703, /* To enable Dynamic Load Balancing LAG 
   7329                                            monitoring. */
   7330     bcmFieldActionSrcNetworkGroup = 704, /* To set Source Network group. */
   7331     bcmFieldActionDoNotModify = 705,    /* To not apply Field processor changes
   7332                                            on the packet. */
   7333     bcmFieldActionSvpNew = 706,         /* To set new Source Virtual port. */
   7334     bcmFieldActionIntCongestionNotification = 707, /* To set Internal Congestion
   7335                                            Notification value. */
   7336     bcmFieldActionColor = 708,          /* To set color */
   7337     bcmFieldActionMyStationHit = 709,   /* To mark the packet as My Station
   7338                                            lookup done. */
   7339     bcmFieldActionTunnelOuterVlanNew = 710, /* Replace Tunnel Outer Vlan Id */
   7340     bcmFieldActionPktTraceIdx = 711,    /* To Set Packet Trace Index */
   7341     bcmFieldActionAssignOpaqueObject0 = 712, /* Assign a flex Opaque 0 object. */
   7342     bcmFieldActionIntSampleThreshold = 713, /* IOAM threshold to compare it with
   7343                                            generated random number to trigger
   7344                                            metadata insert. */
   7345     bcmFieldActionDstRpfGportNewValid = 714, /* Set the RPF Destination Valid. */
   7346     bcmFieldActionDstRpfGportNewRaw = 715, /* Set the RPF Destination. Input
   7347                                            expects raw value. */
   7348     bcmFieldActionIntResidenceTimeEnable = 716, /* Use residence time in inband
   7349                                            telemetry. */
   7350     bcmFieldActionDgmTrunkPriPathThreshold = 717, /* DGM trunk primary path threshold
   7351                                            value. */
   7352     bcmFieldActionDgmTrunkAltPathCost = 718, /* DGM trunk alternate path cost. */
   7353     bcmFieldActionDgmTrunkAltPathBias = 719, /* DGM trunk alternate path bias. */
   7354     bcmFieldActionDgmEcmpPriPathThreshold = 720, /* DGM ecmp primary path threshold
   7355                                            value. */
   7356     bcmFieldActionDgmEcmpAltPathCost = 721, /* DGM ecmp alternate path cost. */
   7357     bcmFieldActionDgmEcmpAltPathBias = 722, /* DGM ecmp alternate path bias. */
   7358     bcmFieldActionInsertHiGig3Ext0 = 723, /* enforce insertion of HG3 ext0. */
   7359     bcmFieldActionPacketStatus = 724,   /* Packet status. */
   7360     bcmFieldActionForwardingStatus = 725, /* Packet forwarding status. */
   7361     bcmFieldActionIntStatReq0 = 726,    /* Inband telemetry stat request 0
   7362                                            actions. */
   7363     bcmFieldActionIntStatReq1 = 727,    /* Inband telemetry stat request 1
   7364                                            actions. */
   7365     bcmFieldActionSvtagSignature = 728, /* This action adds SVTAG signature in
   7366                                            the SVTAG header. */
   7367     bcmFieldActionSvtagOffset = 729,    /* This action adds payload offset in
   7368                                            the SVTAG header. */
   7369     bcmFieldActionSvtagPrio = 730,      /* This action adds priority in the
   7370                                            SVTAG header. */
   7371     bcmFieldActionSvtagDeviceId = 731,  /* This action adds device id in the
   7372                                            SVTAG header. */
   7373     bcmFieldActionSvtagPktType = 732,   /* This action adds packet type in the
   7374                                            SVTAG header. It can be MACSEC packet
   7375                                            type also */
   7376     bcmFieldActionSvtagSubportNum = 733, /* This action adds channel or subport
   7377                                            number in the SVTAG header. */
   7378     bcmFieldActionSvtagEnable = 734,    /* This action enables SVTAG addition to
   7379                                            the packet. */
   7380     bcmFieldActionFlowtrackerAggregateIngressGroupId = 735, /* This action associates Aggregate
   7381                                            Ingress Flowtracker Group. */
   7382     bcmFieldActionFlowtrackerAggregateMmuGroupId = 736, /* This action associates Aggregate MMU
   7383                                            Flowtracker Group. */
   7384     bcmFieldActionFlowtrackerAggregateEgressGroupId = 737, /* This action associates Aggregate
   7385                                            Egress Flowtracker Group. */
   7386     bcmFieldActionFlowtrackerAggregateClass = 738, /* This action associates Flowtracker
   7387                                            Aggregate Class. */
   7388     bcmFieldActionFlowtrackerAggregateIngressFlowIndex = 739, /* This action associates Aggregate
   7389                                            Ingress Flowtracker Flow Index. */
   7390     bcmFieldActionFlowtrackerAggregateMmuFlowIndex = 740, /* This action associates Aggregate Mmu
   7391                                            Flowtracker Flow Index. */
   7392     bcmFieldActionFlowtrackerAggregateEgressFlowIndex = 741, /* This action associates Aggregate
   7393                                            Egress Flowtracker Flow Index. */
   7394     bcmFieldActionFlexSampleProfile = 742, /* Flex Sample Profile index. */
   7395     bcmFieldActionStatOamLMRaw = 743,   /* Updates OAM LM counter with raw
   7396                                            value. */
   7397     bcmFieldActionLearnKey0 = 744,      /* Update learn info, first part of the
   7398                                            key. */
   7399     bcmFieldActionLearnKey1 = 745,      /* Update learn info, second part of the
   7400                                            key. */
   7401     bcmFieldActionLearnKey2 = 746,      /* Update learn info, third part of the
   7402                                            key, plus ap_db_index. */
   7403     bcmFieldActionLearnKey2Raw = 747,   /* Update learn info, third part of the
   7404                                            key, plus ap_db_index. */
   7405     bcmFieldActionLearnPayload0 = 748,  /* Update learn info, first part of the
   7406                                            payload. */
   7407     bcmFieldActionLearnPayload1 = 749,  /* Update learn info, second part of the
   7408                                            payload. */
   7409     bcmFieldActionLearnEntryFormatIndex = 750, /* Update learn info, entry format
   7410                                            index. */
   7411     bcmFieldActionLearnOrTransplant = 751, /* Update learn info, learn or
   7412                                            transplant bit. */
   7413     bcmFieldActionEncapIfaMetadataHdr = 752, /* Encapsulation of IFA header along
   7414                                            with Metadata header. */
   7415     bcmFieldActionStatGroupWithoutCounterIndex = 753, /* Flag in ASETs to indicate stat group
   7416                                            usage with the group, without
   7417                                            specifying a counter index */
   7418     bcmFieldActionPrioInputNew = 754,   /* The input_priority to be used for PG
   7419                                            mapping in MMU for accounting. User
   7420                                            should create a profile using
   7421                                            bcm_cosq_priority_group_mapping_profile_set
   7422                                            API and configure the input priority
   7423                                            for a specific type of packets. */
   7424     bcmFieldActionOuterVlanTagActions = 755, /* controls the forwarding L2 header
   7425                                            otag. */
   7426     bcmFieldActionInnerVlanTagActions = 756, /* controls the forwarding L2 header
   7427                                            itag. */
   7428     bcmFieldActionTunnelOuterVlanTagActions = 757, /* Controls the tunnel L2 header otag. */
   7429     bcmFieldActionEgressIFAMetadataProfileIndex = 758, /* Profile index for egr_metadata SF
   7430                                            (used in INT or IFA delete operation) */
   7431     bcmFieldActionFlowTimestampType = 759, /* Flex Flow Timestamp select type.
   7432                                            Timestamp select type is defined by
   7433                                            bcm_field_flow_timestamp_type_t. */
   7434     bcmFieldActionFlowTimestampSource0 = 760, /* Flex Flow Timestamp source zero.
   7435                                            Timestamp source is defined by
   7436                                            bcm_field_flow_timestamp_source_t. */
   7437     bcmFieldActionFlowTimestampSource1 = 761, /* Flex Flow Timestamp source one.
   7438                                            Timestamp source is defined by
   7439                                            bcm_field_flow_timestamp_source_t. */
   7440     bcmFieldActionCmlFlagsNew = 762,    /* CML flags for a newly learned MAC
   7441                                            address */
   7442     bcmFieldActionCmlFlagsMove = 763,   /* CML flags for a moved MAC address */
   7443     bcmFieldActionOpaqueCtrlId = 764,   /* Opaque control ID */
   7444     bcmFieldActionMirrorOnDropDisable = 765, /* Disable Mirror on Drop control */
   7445     bcmFieldActionMirrorFlowClass = 766, /* Enable and set the mirror flow class
   7446                                            value */
   7447     bcmFieldActionIntActionProfileSet = 767, /* Set the INT action profile Id */
   7448     bcmFieldActionIntTermActionProfileSet = 768, /* Set the INT tunnel termination action
   7449                                            profile Id */
   7450     bcmFieldActionIntFlowClassSet = 769, /* Set to derive flow specific opaque
   7451                                            metadata */
   7452     bcmFieldActionIntApplyOnSampledPkt = 770, /* Set to apply INT actions only to
   7453                                            sampled packets */
   7454     bcmFieldActionIntLoopbackProfileSet = 771, /* Set an index to loop back profile for
   7455                                            INT. */
   7456     bcmFieldActionL3TunnelTypeSet = 772, /* Set L3 tunnel type */
   7457     bcmFieldActionL3TunnelAuto = 773,   /* Set L3 tunnel auto configure */
   7458     bcmFieldActionUseOuterHeaderDscp = 774, /* Use outer header's DSCP */
   7459     bcmFieldActionUseOuterHeaderTtl = 775, /* Use outer header's TTL */
   7460     bcmFieldActionDisableInnerHeaderDscpChange = 776, /* Disable changing inner header's DSCP */
   7461     bcmFieldActionPhbRemapTableEntryId = 777, /* Derive internal QoS parameters from
   7462                                            the DSCP values
   7463                                                               of the incoming L3
   7464                                            packet, using the PHB DSCP to
   7465                                            internal
   7466                                                               proirity remap
   7467                                            table entry */
   7468     bcmFieldActionBfdEnable = 778,      /* Enable BFD */
   7469     bcmFieldActionDscpMask = 779,       /* Mask some bits from the packets DSCP
   7470                                            value */
   7471     bcmFieldActionEcnMask = 780,        /* Mask some bits from the packets ECN
   7472                                            value. */
   7473     bcmFieldActionVxlanGbpEnable = 781, /* Action to enable VXLAN GBP. */
   7474     bcmFieldActionAssignVxlanGbpId = 782, /* Assign VXLAN Group Based Policy ID. */
   7475     bcmFieldActionDstL3ClassIdNew = 783, /* Assign Destination L3 Class ID. */
   7476     bcmFieldActionVlanTagPreserve = 784, /* Preserve VLAN Tag. Use
   7477                                            BCM_FIELD_xx_VLAN_TAG_PRESERVE macros
   7478                                            as param0 */
   7479     bcmFieldActionGpStatGroup = 785,    /* Count green colored packets */
   7480     bcmFieldActionYpStatGroup = 786,    /* Count yellow colored packets */
   7481     bcmFieldActionRpStatGroup = 787,    /* Count red colored packets */
   7482     bcmFieldActionGpOpaqueCtrlId = 788, /* Assign Opaque control ID for green
   7483                                            colored packets */
   7484     bcmFieldActionYpOpaqueCtrlId = 789, /* Assign Opaque control ID for yellow
   7485                                            colored packets */
   7486     bcmFieldActionRpOpaqueCtrlId = 790, /* Assign Opaque control ID for red
   7487                                            colored packets */
   7488     bcmFieldActionMatchedRule = 791,    /* Assign Matched rule for copy to cpu
   7489                                            packets */
   7490     bcmFieldActionRedirectEgrNextHopUnderlay = 792, /* Redirect packet to next hop underlay;
   7491                                            param0: ECMP or next hop info. */
   7492     bcmFieldActionAssignIfaHeaderFields = 793, /* Assign IFP header field values. */
   7493     bcmFieldActionRespondPdelayReq = 794, /* Respond to Pdelay_Req with
   7494                                            Pdelay_Resp message */
   7495     bcmFieldActionSendPacketBack = 795, /* Send packet back to the original
   7496                                            receiving port */
   7497     bcmFieldActionAssignRecircleHdrOpaqueObject = 796, /* EP Recirculation Opaque Object A */
   7498     bcmFieldActionRecircleHdrCode = 797, /* EP Recirculation Code */
   7499     bcmFieldActionRecircleHdrOpaqueCtrlId = 798, /* EP Recirculation Opaque Ctrl A */
   7500     bcmFieldActionOverrideTraceEvent = 799, /* Override trace event action */
   7501     bcmFieldActionPktLengthAdjustProfileIndex = 800, /* Index to packet length adjust profile */
   7502     bcmFieldActionIpTunnelProtocolNew = 801, /* Tunnel IPv4 Protocol or v6 Next
   7503                                            Header Field. Used for IpinIp Tunnel
   7504                                            Encap Flow */
   7505     bcmFieldActionEgressPostOperation = 802, /* Egress post profile operation. */
   7506     bcmFieldActionAssignMacSecOpaque = 803, /* Assign macsec opaque object. */
   7507     bcmFieldActionEgressMembershipCheck = 804, /* Enable egress membership check */
   7508     bcmFieldActionEgrTimestampProfileIndex = 805, /* Egress timestamp profile index. */
   7509     bcmFieldActionPolicerCancel = 806,  /* Cancel policer actions. Use
   7510                                            BCM_POLICER_CANCEL_xxx macros as
   7511                                            param0 */
   7512     bcmFieldActionCount = 807           /* Always Last. Not a usable value. */
   7513 } bcm_field_action_t;
   7514 
   7515 #define BCM_FIELD_ACTION_STRINGS \
   7516 { \
   7517     "CosQNew", \
   7518     "CosQCpuNew", \
   7519     "VlanCosQNew", \
   7520     "UcastCosQNew", \
   7521     "McastCosQNew", \
   7522     "PrioPktAndIntCopy", \
   7523     "PrioPktAndIntNew", \
   7524     "PrioPktAndIntTos", \
   7525     "PrioPktAndIntCancel", \
   7526     "PrioPktCopy", \
   7527     "PrioPktNew", \
   7528     "PrioPktTos", \
   7529     "PrioPktCancel", \
   7530     "PrioIntCopy", \
   7531     "PrioIntNew", \
   7532     "PrioIntTos", \
   7533     "PrioIntCancel", \
   7534     "TosNew", \
   7535     "TosCopy", \
   7536     "TosCancel", \
   7537     "DscpNew", \
   7538     "DscpCancel", \
   7539     "EcnNew", \
   7540     "CopyToCpu", \
   7541     "CopyToCpuCancel", \
   7542     "SwitchToCpuCancel", \
   7543     "SwitchToCpuReinstate", \
   7544     "TimeStampToCpu", \
   7545     "TimeStampToCpuCancel", \
   7546     "RedirectPort", \
   7547     "RedirectTrunk", \
   7548     "RedirectCancel", \
   7549     "RedirectPbmp", \
   7550     "RedirectIpmc", \
   7551     "RedirectMcast", \
   7552     "RedirectVlan", \
   7553     "RedirectBcastPbmp", \
   7554     "EgressMask", \
   7555     "EgressPortsAdd", \
   7556     "Drop", \
   7557     "DropCancel", \
   7558     "MirrorOverride", \
   7559     "MirrorIngress", \
   7560     "MirrorEgress", \
   7561     "L3ChangeVlan", \
   7562     "L3ChangeVlanCancel", \
   7563     "L3ChangeMacDa", \
   7564     "L3ChangeMacDaCancel", \
   7565     "L3Switch", \
   7566     "L3SwitchCancel", \
   7567     "AddClassTag", \
   7568     "DropPrecedence", \
   7569     "RpDrop", \
   7570     "RpDropCancel", \
   7571     "RpDropPrecedence", \
   7572     "RpCopyToCpu", \
   7573     "RpCopyToCpuCancel", \
   7574     "RpSwitchToCpuCancel", \
   7575     "RpSwitchToCpuReinstate", \
   7576     "RpTimeStampToCpu", \
   7577     "RpTimeStampToCpuCancel", \
   7578     "RpDscpNew", \
   7579     "RpDscpCancel", \
   7580     "RpEcnNew", \
   7581     "RpOuterVlanPrioNew", \
   7582     "RpInnerVlanPrioNew", \
   7583     "RpOuterVlanCfiNew", \
   7584     "RpInnerVlanCfiNew", \
   7585     "RpPrioPktCopy", \
   7586     "RpPrioPktNew", \
   7587     "RpPrioPktTos", \
   7588     "RpPrioPktCancel", \
   7589     "RpCosQNew", \
   7590     "RpVlanCosQNew", \
   7591     "RpUcastCosQNew", \
   7592     "RpMcastCosQNew", \
   7593     "RpPrioPktAndIntCopy", \
   7594     "RpPrioPktAndIntNew", \
   7595     "RpPrioPktAndIntTos", \
   7596     "RpPrioPktAndIntCancel", \
   7597     "RpPrioIntCopy", \
   7598     "RpPrioIntNew", \
   7599     "RpPrioIntTos", \
   7600     "RpPrioIntCancel", \
   7601     "YpDrop", \
   7602     "YpDropCancel", \
   7603     "YpDropPrecedence", \
   7604     "YpCopyToCpu", \
   7605     "YpCopyToCpuCancel", \
   7606     "YpSwitchToCpuCancel", \
   7607     "YpSwitchToCpuReinstate", \
   7608     "YpTimeStampToCpu", \
   7609     "YpTimeStampToCpuCancel", \
   7610     "YpDscpNew", \
   7611     "YpDscpCancel", \
   7612     "YpEcnNew", \
   7613     "YpOuterVlanPrioNew", \
   7614     "YpInnerVlanPrioNew", \
   7615     "YpOuterVlanCfiNew", \
   7616     "YpInnerVlanCfiNew", \
   7617     "YpPrioPktCopy", \
   7618     "YpPrioPktNew", \
   7619     "YpPrioPktTos", \
   7620     "YpPrioPktCancel", \
   7621     "YpCosQNew", \
   7622     "YpVlanCosQNew", \
   7623     "YpUcastCosQNew", \
   7624     "YpMcastCosQNew", \
   7625     "YpPrioPktAndIntCopy", \
   7626     "YpPrioPktAndIntNew", \
   7627     "YpPrioPktAndIntTos", \
   7628     "YpPrioPktAndIntCancel", \
   7629     "YpPrioIntCopy", \
   7630     "YpPrioIntNew", \
   7631     "YpPrioIntTos", \
   7632     "YpPrioIntCancel", \
   7633     "UpdateCounter", \
   7634     "MeterConfig", \
   7635     "ColorIndependent", \
   7636     "ClassDestSet", \
   7637     "ClassSourceSet", \
   7638     "VrfSet", \
   7639     "InnerVlanNew", \
   7640     "InnerVlanPrioNew", \
   7641     "InnerVlanDelete", \
   7642     "OuterVlanDelete", \
   7643     "OuterVlanDeleteCancel", \
   7644     "InnerVlanAdd", \
   7645     "InnerVlanCfiNew", \
   7646     "OuterVlanNew", \
   7647     "OuterVlanAdd", \
   7648     "OuterVlanAddCancel", \
   7649     "OuterVlanLookup", \
   7650     "OuterVlanPrioNew", \
   7651     "OuterVlanCfiNew", \
   7652     "OuterTpidNew", \
   7653     "GpDrop", \
   7654     "GpDropCancel", \
   7655     "GpDropPrecedence", \
   7656     "GpCopyToCpu", \
   7657     "GpCopyToCpuCancel", \
   7658     "GpSwitchToCpuCancel", \
   7659     "GpSwitchToCpuReinstate", \
   7660     "GpTimeStampToCpu", \
   7661     "GpTimeStampToCpuCancel", \
   7662     "GpDscpNew", \
   7663     "GpDscpCancel", \
   7664     "GpEcnNew", \
   7665     "GpTosPrecedenceNew", \
   7666     "GpTosPrecedenceCopy", \
   7667     "GpOuterVlanPrioNew", \
   7668     "GpInnerVlanPrioNew", \
   7669     "GpOuterVlanCfiNew", \
   7670     "GpInnerVlanCfiNew", \
   7671     "GpPrioPktCopy", \
   7672     "GpPrioPktNew", \
   7673     "GpPrioPktTos", \
   7674     "GpPrioPktCancel", \
   7675     "GpCosQNew", \
   7676     "GpVlanCosQNew", \
   7677     "GpUcastCosQNew", \
   7678     "GpMcastCosQNew", \
   7679     "GpPrioPktAndIntCopy", \
   7680     "GpPrioPktAndIntNew", \
   7681     "GpPrioPktAndIntTos", \
   7682     "GpPrioPktAndIntCancel", \
   7683     "GpPrioIntCopy", \
   7684     "GpPrioIntNew", \
   7685     "GpPrioIntTos", \
   7686     "GpPrioIntCancel", \
   7687     "DoNotChangeTtl", \
   7688     "DoNotCheckUrpf", \
   7689     "DoNotCheckVlan", \
   7690     "DoNotLearn", \
   7691     "IpFix", \
   7692     "IpFixCancel", \
   7693     "IncomingMplsPortSet", \
   7694     "Deprecated177", \
   7695     "NewClassId", \
   7696     "Deprecated179", \
   7697     "Deprecated180", \
   7698     "Deprecated181", \
   7699     "Deprecated182", \
   7700     "Deprecated183", \
   7701     "Deprecated184", \
   7702     "Deprecated185", \
   7703     "MultipathHash", \
   7704     "IpfixRate", \
   7705     "OffloadRedirect", \
   7706     "OffloadClassSet", \
   7707     "OffloadDropIndication", \
   7708     "OamUpMep", \
   7709     "OamTx", \
   7710     "OamLmepMdl", \
   7711     "OamServicePriMappingPtr", \
   7712     "OamLmBasePtr", \
   7713     "OamDmEnable", \
   7714     "OamLmEnable", \
   7715     "OamLmepEnable", \
   7716     "OamPbbteLookupEnable", \
   7717     "SrcMacNew", \
   7718     "DstMacNew", \
   7719     "VnTagNew", \
   7720     "VnTagDelete", \
   7721     "Deprecated204", \
   7722     "Deprecated205", \
   7723     "VportNew", \
   7724     "VportSpcpNew", \
   7725     "VportCpcpNew", \
   7726     "VportTcNew", \
   7727     "VportDpNew", \
   7728     "RedirectVportPort", \
   7729     "MacDaKnown", \
   7730     "Filters", \
   7731     "FabricQueue", \
   7732     "CnmCancel", \
   7733     "DynamicHgTrunkCancel", \
   7734     "EgressMirrorDisable", \
   7735     "MultipathHashAdditionalInfo", \
   7736     "Deprecated219", \
   7737     "MirrorEgressDisable", \
   7738     "OuterVlanCopyInner", \
   7739     "OuterVlanPrioCopyInner", \
   7740     "OuterVlanCfiCopyInner", \
   7741     "InnerVlanCopyOuter", \
   7742     "InnerVlanPrioCopyOuter", \
   7743     "InnerVlanCfiCopyOuter", \
   7744     "CompressSrcIp6", \
   7745     "CompressDstIp6", \
   7746     "ServicePoolIdNew", \
   7747     "UseGlobalMeterColor", \
   7748     "RedirectEgrNextHop", \
   7749     "TrunkLoadBalanceCancel", \
   7750     "EcmpLoadBalanceCancel", \
   7751     "DoNotOverride", \
   7752     "EgressClassSelect", \
   7753     "HiGigClassSelect", \
   7754     "OamDmTimeFormat", \
   7755     "OamLmDmSampleEnable", \
   7756     "OamTagStatusCheck", \
   7757     "OamTunnelControl", \
   7758     "Regex", \
   7759     "NoRegex", \
   7760     "Stat0", \
   7761     "PolicerLevel0", \
   7762     "PolicerLevel1", \
   7763     "PolicerGroup", \
   7764     "StatGroup", \
   7765     "VSQ", \
   7766     "IntPriorityAndDropPrecedence", \
   7767     "ISQ", \
   7768     "Trap", \
   7769     "UsePolicerResult", \
   7770     "Stat1", \
   7771     "StatTag", \
   7772     "Snoop", \
   7773     "TtlSet", \
   7774     "IncomingIpIfSet", \
   7775     "OrientationSet", \
   7776     "TrunkHashKeySet", \
   7777     "DstRpfGportNew", \
   7778     "DhcpPkt", \
   7779     "SrcGportNew", \
   7780     "ForwardingTypeNew", \
   7781     "StartPacketStrip", \
   7782     "SystemHeaderSet", \
   7783     "VSwitchNew", \
   7784     "LearnSrcMacNew", \
   7785     "LearnSrcPortNew", \
   7786     "LearnForwardingVlanIdNew", \
   7787     "QosMapIdNew", \
   7788     "VlanActionSetNew", \
   7789     "VlanTranslationValueSet", \
   7790     "TunnelTerminatedValueSet", \
   7791     "MplsTerminatedValueSet", \
   7792     "IpTunnelValueSet", \
   7793     "L2SrcValueSet", \
   7794     "L2DestValueSet", \
   7795     "L3SrcRouteValueSet", \
   7796     "L3DestRouteValueSet", \
   7797     "IpmcValueSet", \
   7798     "CascadedKeyValueSet", \
   7799     "IngressGportSet", \
   7800     "ExternalValue0Set", \
   7801     "ExternalValue1Set", \
   7802     "ExternalValue2Set", \
   7803     "ExternalValue3Set", \
   7804     "NatCancel", \
   7805     "Nat", \
   7806     "NatEgressOverride", \
   7807     "RegexActionCancel", \
   7808     "PortPrioIntCosQNew", \
   7809     "RpPortPrioIntCosQNew", \
   7810     "YpPortPrioIntCosQNew", \
   7811     "GpPortPrioIntCosQNew", \
   7812     "YpMirrorIngress", \
   7813     "YpRedirectPort", \
   7814     "Deprecated297", \
   7815     "FibreChanSrcBindEnable", \
   7816     "FibreChanFpmaPrefixCheckEnable", \
   7817     "FibreChanZoneCheckEnable", \
   7818     "FibreChanVsanId", \
   7819     "FibreChanZoneCheckActionCancel", \
   7820     "FibreChanIntVsanPri", \
   7821     "LearnInVPortNew", \
   7822     "OamDomain", \
   7823     "OamOlpHeaderAdd", \
   7824     "OamSessionId", \
   7825     "OuterVlanCfiCancel", \
   7826     "InnerVlanPriCancel", \
   7827     "PrioIntRemark", \
   7828     "UseDefaultWred", \
   7829     "HashValueSet", \
   7830     "L3IngressSet", \
   7831     "InterfaceClassVPort", \
   7832     "IngSampleEnable", \
   7833     "EgrSampleEnable", \
   7834     "HashSelect0", \
   7835     "HashSelect1", \
   7836     "TrunkResilientHashCancel", \
   7837     "HgTrunkResilientHashCancel", \
   7838     "EcmpResilientHashCancel", \
   7839     "UnmodifiedPacketRedirectPort", \
   7840     "EtagNew", \
   7841     "EtagDelete", \
   7842     "PfcClassNew", \
   7843     "RpIntCongestionNotificationNew", \
   7844     "YpIntCongestionNotificationNew", \
   7845     "GpIntCongestionNotificationNew", \
   7846     "RpHGCongestionClassNew", \
   7847     "YpHGCongestionClassNew", \
   7848     "GpHGCongestionClassNew", \
   7849     "RedirDropPrecedence", \
   7850     "RpRedirDropPrecedence", \
   7851     "YpRedirDropPrecedence", \
   7852     "GpRedirDropPrecedence", \
   7853     "HiGigDstModuleGportNew", \
   7854     "HiGigDstPortGportNew", \
   7855     "HiGigDstGportNew", \
   7856     "GpHiGigDropPrecedenceNew", \
   7857     "YpHiGigDropPrecedenceNew", \
   7858     "RpHiGigDropPrecedenceNew", \
   7859     "HiGigDropPrecedenceNew", \
   7860     "GpHiGigIntPriNew", \
   7861     "YpHiGigIntPriNew", \
   7862     "RpHiGigIntPriNew", \
   7863     "HiGigIntPriNew", \
   7864     "LoopbackSrcModuleGportNew", \
   7865     "LoopbackSrcPortGportNew", \
   7866     "LoopbackSrcGportNew", \
   7867     "LoopbackCpuMasqueradePktProfileNew", \
   7868     "LoopbackPacketProcessingPortNew", \
   7869     "LoopBackTypeNew", \
   7870     "RecoverableDropCancel", \
   7871     "StackingRouteNew", \
   7872     "PphPresentSet", \
   7873     "VxlanHeaderBits8_31_Set", \
   7874     "VxlanHeaderBits56_63_Set", \
   7875     "FabricHeaderSet", \
   7876     "Oam", \
   7877     "VpnSet", \
   7878     "L3DestRoutePublicValueSet", \
   7879     "L3SrcRoutePublicValueSet", \
   7880     "ClassZero", \
   7881     "ClassOne", \
   7882     "TrapReduced", \
   7883     "GroupClassSet", \
   7884     "EgressPbmpNullCopyToCpu", \
   7885     "PimBidirFwd", \
   7886     "DscpMapNew", \
   7887     "Reserved370", \
   7888     "Reserved371", \
   7889     "Reserved372", \
   7890     "Reserved373", \
   7891     "FabricEHAddOrUpdate", \
   7892     "Dot1pPreserve", \
   7893     "GpDot1pPreserve", \
   7894     "YpDot1pPreserve", \
   7895     "RpDot1pPreserve", \
   7896     "DscpPreserve", \
   7897     "GpDscpPreserve", \
   7898     "YpDscpPreserve", \
   7899     "RpDscpPreserve", \
   7900     "ChangeL2FieldsCancel", \
   7901     "BFDSessionIdNew", \
   7902     "CosMapNew", \
   7903     "GpCosMapNew", \
   7904     "YpCosMapNew", \
   7905     "RpCosMapNew", \
   7906     "VxlanHeaderFlags", \
   7907     "ChangeL2Fields", \
   7908     "ExactMatchClassId", \
   7909     "PfcTx", \
   7910     "SwitchEncap", \
   7911     "StatVportNew", \
   7912     "UcastQueueNew", \
   7913     "RpUcastQueueNew", \
   7914     "YpUcastQueueNew", \
   7915     "GpUcastQueueNew", \
   7916     "IntCosUcastQueueNew", \
   7917     "RpIntCosUcastQueueNew", \
   7918     "YpIntCosUcastQueueNew", \
   7919     "GpIntCosUcastQueueNew", \
   7920     "HgTrunkRandomRoundRobinHashCancel", \
   7921     "TrunkRandomRoundRobinHashCancel", \
   7922     "EcmpRandomRoundRobinHashCancel", \
   7923     "PacketTraceEnable", \
   7924     "Strength", \
   7925     "RedirectBufferPriority", \
   7926     "RedirectPrioIntNew", \
   7927     "RpRedirectPrioIntNew", \
   7928     "YpRedirectPrioIntNew", \
   7929     "GpRedirectPrioIntNew", \
   7930     "UntaggedPacketPriorityNew", \
   7931     "DoNotCutThrough", \
   7932     "LoopbackOamResponse", \
   7933     "LoopbackSatResponse", \
   7934     "OamStatObjectSessionId", \
   7935     "ServicePrioIntCosQNew", \
   7936     "RpServicePrioIntCosQNew", \
   7937     "YpServicePrioIntCosQNew", \
   7938     "GpServicePrioIntCosQNew", \
   7939     "ProtectionSwitchingDrop", \
   7940     "ServicePoolIdPrecedenceNew", \
   7941     "SwapMacDaSa", \
   7942     "SwapSourceIPDestIP", \
   7943     "ReplaceTtl", \
   7944     "PacketIsL3SAT", \
   7945     "ReplaceSrcMac", \
   7946     "ReplaceDstMac", \
   7947     "ReplaceInnerVlan", \
   7948     "ReplaceOuterVlan", \
   7949     "ReplaceInnerVlanPriority", \
   7950     "ReplaceOuterVlanPriority", \
   7951     "StatAndPolicer", \
   7952     "SnoopAndTrap", \
   7953     "IEEE1588", \
   7954     "ExternalValue4Set", \
   7955     "ExternalValue5Set", \
   7956     "Forward", \
   7957     "TrapCodeQualifier", \
   7958     "PphSnoopCode", \
   7959     "EgressTimeStampInsert", \
   7960     "IngressTimeStampInsert", \
   7961     "IngressTimeStampInsertCancel", \
   7962     "EgressTimeStampInsertCancel", \
   7963     "MplsLabel1ExpNew", \
   7964     "DynamicEcmpEnable", \
   7965     "DynamicTrunkEnable", \
   7966     "DynamicTrunkCancel", \
   7967     "Dgm", \
   7968     "DgmThreshold", \
   7969     "DgmBias", \
   7970     "DgmCost", \
   7971     "StaggeredValue0Set", \
   7972     "StaggeredValue1Set", \
   7973     "StaggeredValue2Set", \
   7974     "StaggeredValue3Set", \
   7975     "StaggeredDirectValueSet", \
   7976     "StaggeredPreselProfile0Set", \
   7977     "StaggeredPreselProfile1Set", \
   7978     "StaggeredPreselProfile2Set", \
   7979     "StaggeredPreselProfile3Set", \
   7980     "StaggeredPreselProfileDirectSet", \
   7981     "EnableVlanCheck", \
   7982     "AdmitProfile", \
   7983     "DynamicHgTrunkEnable", \
   7984     "VxlanTerminate", \
   7985     "UseTunnelPayload", \
   7986     "VlanActions", \
   7987     "SRDuplicateDrop", \
   7988     "SRDuplicateDropCancel", \
   7989     "SRNetIdFilter", \
   7990     "SRNetIdSource", \
   7991     "FilterSrcMacPorts", \
   7992     "SRCopyToCpu", \
   7993     "SRTagAdd", \
   7994     "SRTagDelete", \
   7995     "SRLanIdNew", \
   7996     "SRNetIdNew", \
   7997     "SRFlowIdNew", \
   7998     "SRFlowPriMapIdNew", \
   7999     "MtuSize", \
   8000     "StuSize", \
   8001     "TsnFlowIdNew", \
   8002     "TsnFlowPriMapIdNew", \
   8003     "MtuProfileIdNew", \
   8004     "StuProfileIdNew", \
   8005     "ExternalValue6Set", \
   8006     "ExternalValue7Set", \
   8007     "EsmSearchKeySrcMac", \
   8008     "TrunkResilientHashEnable", \
   8009     "TrunkResilientHashDisable", \
   8010     "EcmpResilientHashEnable", \
   8011     "EcmpResilientHashDisable", \
   8012     "HiGigTrunkResilientHashEnable", \
   8013     "HiGigTrunkResilientHashDisable", \
   8014     "MacSecDecrypt", \
   8015     "MacSecEncrypt", \
   8016     "MacSecSubPortNumAdd", \
   8017     "MacSecPktTypeSet", \
   8018     "LatencyFlowId", \
   8019     "IntEncapEnable", \
   8020     "IntTurnAround", \
   8021     "MacSecRedirectIpmc", \
   8022     "AddIngOuterVlanToEgrOuterVlan", \
   8023     "Erspan3HdrVlanCosPktCopy", \
   8024     "Erspan3HdrGbpSrcIdAdd", \
   8025     "Erspan3HdrUdf2Add", \
   8026     "RoeFrameTypeSet", \
   8027     "FlowtrackerGroupId", \
   8028     "StatisticPtr0", \
   8029     "StatisticPtr1", \
   8030     "TafGatePriMap", \
   8031     "IntEncapUpdate", \
   8032     "MplsLookupEnable", \
   8033     "TerminationAllowed", \
   8034     "MatchPbmpDrop", \
   8035     "MatchPbmpRedirect", \
   8036     "IntEncapDisable", \
   8037     "ElephantLookupEnable", \
   8038     "ElephantLookupDisable", \
   8039     "ElephantColorEnable", \
   8040     "ElephantColorDisable", \
   8041     "ElephantQueueEnable", \
   8042     "ElephantQueueDisable", \
   8043     "LatencyMonitorEnable", \
   8044     "LatencyMonitorDisable", \
   8045     "OamLmCounterPoolId", \
   8046     "LoopbackType", \
   8047     "VisibilityEnable", \
   8048     "DlbEcmpMonitorEnable", \
   8049     "MirrorZeroingEnable", \
   8050     "NshEncapEnable", \
   8051     "NshServicePathId", \
   8052     "NshServiceIndex", \
   8053     "L3IngressStrengthSet", \
   8054     "GbpClassifierAdd", \
   8055     "GbpSrcIdNew", \
   8056     "AssignOpaqueObject1", \
   8057     "AssignOpaqueObject2", \
   8058     "AssignOpaqueObject3", \
   8059     "AssignOpaqueObject4", \
   8060     "AssignExtractionCtrlId", \
   8061     "AssignEditCtrlId", \
   8062     "FlowtrackerEnable", \
   8063     "FlowtrackerNewLearnEnable", \
   8064     "CosMapSelect", \
   8065     "GbpSrcMacMcastBitSet", \
   8066     "GbpDstIdNew", \
   8067     "LoopbackSubtype", \
   8068     "EgressFlowControlEnable", \
   8069     "EgressFlowEncapEnable", \
   8070     "SystemHeaderSizeAdjust", \
   8071     "InVportClass0", \
   8072     "InVportClass1", \
   8073     "NetworkQos", \
   8074     "Void", \
   8075     "Container", \
   8076     "ParsingStartType", \
   8077     "ParsingStartOffset", \
   8078     "EgressForwardingIndex", \
   8079     "UDHData0", \
   8080     "UDHData1", \
   8081     "UDHData2", \
   8082     "UDHData3", \
   8083     "UDHBase0", \
   8084     "UDHBase1", \
   8085     "UDHBase2", \
   8086     "UDHBase3", \
   8087     "UDHBase", \
   8088     "IPTProfile", \
   8089     "IPTCommand", \
   8090     "StatId0", \
   8091     "StatId1", \
   8092     "StatId2", \
   8093     "StatId3", \
   8094     "StatId4", \
   8095     "StatId5", \
   8096     "StatId6", \
   8097     "StatId7", \
   8098     "StatId8", \
   8099     "StatId9", \
   8100     "StatProfile0", \
   8101     "StatProfile1", \
   8102     "StatProfile2", \
   8103     "StatProfile3", \
   8104     "StatProfile4", \
   8105     "StatProfile5", \
   8106     "StatProfile6", \
   8107     "StatProfile7", \
   8108     "StatProfile8", \
   8109     "StatProfile9", \
   8110     "InvalidNext", \
   8111     "IngressDoNotLearn", \
   8112     "EgressDoNotLearn", \
   8113     "DstRpf", \
   8114     "DstRpfValid", \
   8115     "VisibilityClear", \
   8116     "StatMetaData", \
   8117     "AceEntryId", \
   8118     "InVport0", \
   8119     "InVport1", \
   8120     "OutVport0", \
   8121     "OutVport1", \
   8122     "OutVport2", \
   8123     "OutVport3", \
   8124     "ExtStat0", \
   8125     "ExtStat1", \
   8126     "ExtStat2", \
   8127     "ExtStat3", \
   8128     "ForwardingTypeMeterMap", \
   8129     "StatSampling", \
   8130     "StatOamLM", \
   8131     "ForwardingLayerIndex", \
   8132     "InInterface0", \
   8133     "InInterface1", \
   8134     "OutInterface0", \
   8135     "OutInterface1", \
   8136     "OutInterface2", \
   8137     "OutInterface3", \
   8138     "TrapStrength", \
   8139     "SnoopStrength", \
   8140     "OutPortTrafficManagement", \
   8141     "AceContextValue", \
   8142     "BierStringOffset", \
   8143     "BierStringSize", \
   8144     "PacketIsBier", \
   8145     "Eventor", \
   8146     "ForwardingAdditionalInfo", \
   8147     "SmallExemLearn", \
   8148     "LargeExemLearn", \
   8149     "GroupLookupDisable", \
   8150     "OamCopyToCpu", \
   8151     "GpOamCopyToCpu", \
   8152     "YpOamCopyToCpu", \
   8153     "RpOamCopyToCpu", \
   8154     "InVport0Raw", \
   8155     "InVport1Raw", \
   8156     "OutVport0Raw", \
   8157     "OutVport1Raw", \
   8158     "OutVport2Raw", \
   8159     "OutVport3Raw", \
   8160     "AppendPointerCompensation", \
   8161     "AssignNatClassId", \
   8162     "AssignChangeL2FieldsClassId", \
   8163     "IngressTimeStampInsertValid", \
   8164     "MacSecDecryptPktType", \
   8165     "MacSecEncryptPktType", \
   8166     "MacSecUseSubportNumberFromEvxlt", \
   8167     "MacSecModidBase", \
   8168     "FlowtrackerTimestampDelayMode", \
   8169     "SnoopRaw", \
   8170     "DropPrecedenceRaw", \
   8171     "FabricHeaderSetRaw", \
   8172     "SrcGportNewRaw", \
   8173     "LatencyFlowIdRaw", \
   8174     "MirrorIngressRaw", \
   8175     "OamRaw", \
   8176     "TrapRaw", \
   8177     "VrfSetRaw", \
   8178     "StatProfile0Raw", \
   8179     "StatProfile1Raw", \
   8180     "StatProfile2Raw", \
   8181     "StatProfile3Raw", \
   8182     "StatProfile4Raw", \
   8183     "StatProfile5Raw", \
   8184     "StatProfile6Raw", \
   8185     "StatProfile7Raw", \
   8186     "StatProfile8Raw", \
   8187     "StatProfile9Raw", \
   8188     "ExtStat0Raw", \
   8189     "ExtStat1Raw", \
   8190     "ExtStat2Raw", \
   8191     "ExtStat3Raw", \
   8192     "StatSamplingRaw", \
   8193     "StartPacketStripRaw", \
   8194     "ParsingStartTypeRaw", \
   8195     "ParsingStartOffsetRaw", \
   8196     "IPTCommandRaw", \
   8197     "MirrorEgressRaw", \
   8198     "TrapStrengthRaw", \
   8199     "SnoopStrengthRaw", \
   8200     "AceContextValueRaw", \
   8201     "Stat0Raw", \
   8202     "Stat1Raw", \
   8203     "IpMulticastCompatible", \
   8204     "RpfOutVport", \
   8205     "RpfOutInterface", \
   8206     "RpfOutVportRaw", \
   8207     "MirrorOnDropEnable", \
   8208     "MirrorOnDropProfileSet", \
   8209     "LearnRaw0", \
   8210     "LearnRaw1", \
   8211     "LearnRaw2", \
   8212     "LearnRaw3", \
   8213     "LearnRaw4", \
   8214     "IngressDstTypeSelect", \
   8215     "IngressDstVal", \
   8216     "DlbEcmpAlternatePathEnable", \
   8217     "DlbEcmpMonitorDisable", \
   8218     "DlbTrunkAlternatePathEnable", \
   8219     "DlbTrunkMonitorDisable", \
   8220     "DlbTrunkMonitorEnable", \
   8221     "SrcNetworkGroup", \
   8222     "DoNotModify", \
   8223     "SvpNew", \
   8224     "IntCongestionNotification", \
   8225     "Color", \
   8226     "MyStationHit", \
   8227     "TunnelOuterVlanNew", \
   8228     "PktTraceIdx", \
   8229     "AssignOpaqueObject0", \
   8230     "IntSampleThreshold", \
   8231     "DstRpfGportNewValid", \
   8232     "DstRpfGportNewRaw", \
   8233     "IntResidenceTimeEnable", \
   8234     "DgmTrunkPriPathThreshold", \
   8235     "DgmTrunkAltPathCost", \
   8236     "DgmTrunkAltPathBias", \
   8237     "DgmEcmpPriPathThreshold", \
   8238     "DgmEcmpAltPathCost", \
   8239     "DgmEcmpAltPathBias", \
   8240     "InsertHiGig3Ext0", \
   8241     "PacketStatus", \
   8242     "ForwardingStatus", \
   8243     "IntStatReq0", \
   8244     "IntStatReq1", \
   8245     "SvtagSignature", \
   8246     "SvtagOffset", \
   8247     "SvtagPrio", \
   8248     "SvtagDeviceId", \
   8249     "SvtagPktType", \
   8250     "SvtagSubportNum", \
   8251     "SvtagEnable", \
   8252     "FlowtrackerAggregateIngressGroupId", \
   8253     "FlowtrackerAggregateMmuGroupId", \
   8254     "FlowtrackerAggregateEgressGroupId", \
   8255     "FlowtrackerAggregateClass", \
   8256     "FlowtrackerAggregateIngressFlowIndex", \
   8257     "FlowtrackerAggregateMmuFlowIndex", \
   8258     "FlowtrackerAggregateEgressFlowIndex", \
   8259     "FlexSampleProfile", \
   8260     "StatOamLMRaw", \
   8261     "LearnKey0", \
   8262     "LearnKey1", \
   8263     "LearnKey2", \
   8264     "LearnKey2Raw", \
   8265     "LearnPayload0", \
   8266     "LearnPayload1", \
   8267     "LearnEntryFormatIndex", \
   8268     "LearnOrTransplant", \
   8269     "EncapIfaMetadataHdr", \
   8270     "StatGroupWithoutCounterIndex", \
   8271     "PrioInputNew", \
   8272     "OuterVlanTagActions", \
   8273     "InnerVlanTagActions", \
   8274     "TunnelOuterVlanTagActions", \
   8275     "EgressIFAMetadataProfileIndex", \
   8276     "FlowTimestampType", \
   8277     "FlowTimestampSource0", \
   8278     "FlowTimestampSource1", \
   8279     "CmlFlagsNew", \
   8280     "CmlFlagsMove", \
   8281     "OpaqueCtrlId", \
   8282     "MirrorOnDropDisable", \
   8283     "MirrorFlowClass", \
   8284     "IntActionProfileSet", \
   8285     "IntTermActionProfileSet", \
   8286     "IntFlowClassSet", \
   8287     "IntApplyOnSampledPkt", \
   8288     "IntLoopbackProfileSet", \
   8289     "L3TunnelTypeSet", \
   8290     "L3TunnelAuto", \
   8291     "UseOuterHeaderDscp", \
   8292     "UseOuterHeaderTtl", \
   8293     "DisableInnerHeaderDscpChange", \
   8294     "PhbRemapTableEntryId", \
   8295     "BfdEnable", \
   8296     "DscpMask", \
   8297     "EcnMask", \
   8298     "VxlanGbpEnable", \
   8299     "AssignVxlanGbpId", \
   8300     "DstL3ClassIdNew", \
   8301     "VlanTagPreserve", \
   8302     "GpStatGroup", \
   8303     "YpStatGroup", \
   8304     "RpStatGroup", \
   8305     "GpOpaqueCtrlId", \
   8306     "YpOpaqueCtrlId", \
   8307     "RpOpaqueCtrlId", \
   8308     "MatchedRule", \
   8309     "RedirectEgrNextHopUnderlay", \
   8310     "AssignIfaHeaderFields", \
   8311     "RespondPdelayReq", \
   8312     "SendPacketBack", \
   8313     "AssignRecircleHdrOpaqueObject", \
   8314     "RecircleHdrCode", \
   8315     "RecircleHdrOpaqueCtrlId", \
   8316     "OverrideTraceEvent", \
   8317     "PktLengthAdjustProfileIndex", \
   8318     "IpTunnelProtocolNew", \
   8319     "EgressPostOperation", \
   8320     "AssignMacSecOpaque", \
   8321     "EgressMembershipCheck", \
   8322     "EgrTimestampProfileIndex", \
   8323     "PolicerCancel"  \
   8324 }
   8325 
   8326 /* Used as data value for qualifier bcm_field_qualify_MacSecFlow */
   8327 typedef enum bcm_field_macsec_flow_e {
   8328     bcmFieldMacSecFlowNotMacSec = 0,    /* Regular non MACSEC packets */
   8329     bcmFieldMacSecFlowForEncrypt = 1,   /* MACSEC packets for Encryption to
   8330                                            MACSEC port */
   8331     bcmFieldMacSecFlowForDecrypt = 2,   /* MACSEC packets for Decryption to
   8332                                            MACSEC port */
   8333     bcmFieldMacSecFlowAfterDecrypt = 3, /* MACSEC packets after Decryption from
   8334                                            MACSEC port */
   8335     bcmFieldMacSecFlowAfterEncrypt = 4, /* MACSEC packets after Encryption from
   8336                                            MACSEC port */
   8337     bcmFieldMacSecFlowCount = 5         /* Always last. Not to be used. */
   8338 } bcm_field_macsec_flow_t;
   8339 
   8340 /* Used as param0 for action bcmFieldActionMacSecPktTypeSet */
   8341 typedef enum bcm_field_macsec_pkt_type_e {
   8342     bcmFieldMacSecPktTypeNonMacSec = 0, /* Regular non MACSEC packets */
   8343     bcmFieldMacSecPktTypeMacSec = 1,    /* MACSEC Data packet */
   8344     bcmFieldMacSecPktTypeMacSecMgmt = 2, /* Both BPDU, KaY tagged and Control
   8345                                            packets */
   8346     bcmFieldMacSecPktTypeKaYFrames = 3, /* MACSEC packets with SecTAG.TCI.E=1
   8347                                            and SecTAG.TCI.C=0 */
   8348     bcmFieldMacSecPktTypeCount = 4      /* Always last. Not to be used. */
   8349 } bcm_field_macsec_pkt_type_t;
   8350 
   8351 /* Requires BROADCOM_PREMIUM license */
   8352 typedef enum bcm_field_timestamp_transmit_pkt_type_e {
   8353     bcmFieldTimestampTwampOwamp = 0, 
   8354     bcmFieldTimestampCount = 1 
   8355 } bcm_field_timestamp_transmit_pkt_type_t;
   8356 
   8357 /* Flow control packet type */
   8358 typedef enum bcm_field_egress_port_ctrl_e {
   8359     bcmFieldEgressPortCtrlTypeSubportSvtagEncrypt = 0, /* Subport SVTAG encrypt port control
   8360                                            type */
   8361     bcmFieldEgressPortCtrlTypeCount = 1 /* Always last. Not to be used. */
   8362 } bcm_field_egress_port_ctrl_t;
   8363 
   8364 /* Flow control packet type */
   8365 typedef enum bcm_field_flow_control_pkt_type_e {
   8366     bcmFieldFlowControlPktTypeDataPkt = 0, /* Data packet */
   8367     bcmFieldFlowControlPktTypePause = 1, /* Pause flow control */
   8368     bcmFieldFlowControlPktTypePfc = 2,  /* PFC flow control */
   8369     bcmFieldFlowControlPktTypeE2ecc = 3, /* E2ECC flow control */
   8370     bcmFieldFlowControlPktTypeCount = 4 /* Always last. Not to be used. */
   8371 } bcm_field_flow_control_pkt_type_t;
   8372 
   8373 /* 
   8374  * Roe Frame Types used for qualifier bcmFieldQualifyRoeFrameType and
   8375  * action bcmFieldActionRoeFrameTypeSet.
   8376  */
   8377 typedef enum bcm_field_roe_frame_type_e {
   8378     bcmFieldRoeFrameTypeNone = 0,   /* Frame type is neither Radio over Ethernet
   8379                                        nor Custom Protocol. */
   8380     bcmFieldRoeFrameTypeRoe = 1,    /* Frame type is Radio over Ethernet. */
   8381     bcmFieldRoeFrameTypeCustom = 2, /* Frame type is Custom Protocol. */
   8382     bcmFieldRoeFrameTypeCount = 3   /* Always last. Not to be used. */
   8383 } bcm_field_roe_frame_type_t;
   8384 
   8385 #define BCM_FIELD_ROE_FRAME_TYPE_STRINGS \
   8386 { \
   8387     "None", \
   8388     "Roe", \
   8389     "Custom"  \
   8390 }
   8391 
   8392 /* 
   8393  * Used as parameter for COS MAP select APIs like
   8394  * bcm_field_qualify_CosMapSelect and bcmFieldActionCosMapSelect
   8395  */
   8396 typedef enum bcm_field_cos_map_select_e {
   8397     bcmFieldCosMapSelectWired = 0,      /* Wired */
   8398     bcmFieldCosMapSelectWireless = 1,   /* Wireless */
   8399     bcmFieldCosMapSelectCount = 2       /* Always last. Not to be used. */
   8400 } bcm_field_cos_map_select_t;
   8401 
   8402 /* 
   8403  * Used for action bcmFieldActionAdmitProfile to return profile number by
   8404  * enum.
   8405  */
   8406 typedef enum bcm_field_admit_profile_e {
   8407     bcmFieldAdmitProfileEcnNonCapable = 0, /* Packet is not ECN capable. Use
   8408                                            profile 0. */
   8409     bcmFieldAdmitProfileEcnCapable = 1  /* Packet is ECN capable. Use profile 1. */
   8410 } bcm_field_admit_profile_t;
   8411 
   8412 /* Double Actions param1 values enum */
   8413 typedef enum bcm_field_double_action_vals_e {
   8414     bcmFieldDoubleActionNone = 0,   /* Run No Action */
   8415     bcmFieldDoubleActionFirst = 1,  /* Run First Action */
   8416     bcmFieldDoubleActionSecond = 2, /* Run Second Action */
   8417     bcmFieldDoubleActionBoth = 3    /* Run Both Actions */
   8418 } bcm_field_double_action_vals_t;
   8419 
   8420 #define BCM_FIELD_DOUBLE_ACTION_VALS \
   8421 { \
   8422     "None", \
   8423     "First", \
   8424     "Second", \
   8425     "Both"  \
   8426 }
   8427 
   8428 /* 
   8429  * BCM action and the stage on which it applies specified internal
   8430  * action. See bcm_field_internal_to_bcm_action_map()
   8431  */
   8432 typedef struct bcm_field_internal_to_bcm_map_s {
   8433     bcm_field_action_t bcm_action;  /* BCM action containing specified internal
   8434                                        action. See
   8435                                        bcm_field_internal_to_bcm_action_map() */
   8436     bcm_field_stage_t bcm_stage;    /* BCM stage related to specified internal
   8437                                        action. See
   8438                                        bcm_field_internal_to_bcm_action_map() */
   8439 } bcm_field_internal_to_bcm_map_t;
   8440 
   8441 /* Holds which action to set width for, and the size of width to set */
   8442 typedef struct bcm_field_action_width_s {
   8443     uint32 action; 
   8444     uint32 width; 
   8445     uint8 valid; 
   8446 } bcm_field_action_width_t;
   8447 
   8448 /* 
   8449  * Used to specify the actions that can be taken by the entries in a
   8450  * group
   8451  */
   8452 typedef struct bcm_field_aset_s {
   8453     SHR_BITDCL w[_SHR_BITDCLSIZE(bcmFieldActionCount)]; 
   8454     bcm_field_action_width_t actions_width[16]; /* Actions width struct, used by
   8455                                            bcm_petra_field_action_width_set to
   8456                                            set width for certain action, 16 is
   8457                                            max_actions_per_db */
   8458 } bcm_field_aset_t;
   8459 
   8460 #define BCM_FIELD_ASET_INIT(aset)  \
   8461     sal_memset(&(aset), 0, sizeof(bcm_field_aset_t)) 
   8462 
   8463 #define BCM_FIELD_ASET_ADD(aset, q)  SHR_BITSET(((aset).w), (q)) 
   8464 
   8465 #define BCM_FIELD_ASET_ADD_WIDTH(aset, q, width_)  \
   8466     do {                                          \
   8467         int __i__ = 0;                            \
   8468         uint8 __new_valid__ = 1;                  \
   8469         SHR_BITSET(((aset).w), (q));                   \
   8470         for (;(aset).actions_width[__i__].valid != 0;__i__++);  \
   8471         if (__i__ < 16) { \
   8472             sal_memcpy(&((aset).actions_width[__i__].action), &(q), sizeof((q))); \
   8473             sal_memcpy(&((aset).actions_width[__i__].width), &(width_), sizeof((width_))); \
   8474             sal_memcpy(&((aset).actions_width[__i__].valid), &(__new_valid__), 1); \
   8475         } \
   8476     } while(0) 
   8477 
   8478 #define BCM_FIELD_ASET_REMOVE(aset, q)  SHR_BITCLR(((aset).w), (q)) 
   8479 
   8480 #define BCM_FIELD_ASET_TEST(aset, q)  SHR_BITGET(((aset).w), (q)) 
   8481 
   8482 /* 
   8483  * Match rule value used by OAM CCM Embedded App to indicate MEP type
   8484  * through bcmFieldActionCopyToCpu Action
   8485  */
   8486 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_PORT 0x1        /* Match rule values used
   8487                                                           by OAM CCM Embedded
   8488                                                           App to indicate Port
   8489                                                           MEP type */
   8490 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_INNER_VLAN 0x2        /* Match rule values used
   8491                                                           by OAM CCM Embedded
   8492                                                           App to indicate Inner
   8493                                                           vlan MEP type */
   8494 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_OUTER_VLAN 0x3        /* Match rule values used
   8495                                                           by OAM CCM Embedded
   8496                                                           App to indicate Outer
   8497                                                           vlan MEP type */
   8498 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_INNER_PLUS_OUTER_VLAN 0x4        /* Match rule values used
   8499                                                           by OAM CCM Embedded
   8500                                                           App to indicate Inner
   8501                                                           + Outer vlan MEP type */
   8502 
   8503 /* 
   8504  * Match rule value used by BFD Embedded App to indicate endpoint type
   8505  * through bcmFieldActionCopyToCpu Action
   8506  */
   8507 #define BCM_FIELD_BFD_MATCHED_RULE_MPLS_TUNNEL_PHP 0x1        /* Match rule value used
   8508                                                           by BFD Embedded App to
   8509                                                           indicate MPLS PHP
   8510                                                           tunnel type */
   8511 
   8512 #define BCM_FIELD_PRESEL_INIT(presel_set)  \
   8513     sal_memset(&(presel_set), 0, sizeof(bcm_field_presel_set_t)) 
   8514 
   8515 #define BCM_FIELD_PRESEL_ADD(presel_set, presel_id)  SHR_BITSET(((presel_set).w), (presel_id)) 
   8516 
   8517 #define BCM_FIELD_PRESEL_REMOVE(presel_set, presel_id)  SHR_BITCLR(((presel_set).w), (presel_id)) 
   8518 
   8519 #define BCM_FIELD_PRESEL_TEST(presel_set, presel_id)  SHR_BITGET(((presel_set).w), (presel_id)) 
   8520 
   8521 #define BCM_FIELD_ACTION_WIDTH_MAX  48         
   8522 
   8523 #define BCM_FIELD_ASET_WIDTH_MAX    \
   8524     ((BCM_FIELD_ACTION_WIDTH_MAX+1) * \
   8525     bcmFieldActionCount + 1) 
   8526 
   8527 /* Parameter flags for bcmFieldActionFabricQueue action. */
   8528 #define BCM_FABRIC_QUEUE_CUSTOMER       (1U << 29) /* Indicates the intended
   8529                                                       application for the
   8530                                                       SBX_QUEUE_TAG.0x0-Fabric
   8531                                                       Interface Chip.0x1 Traffic
   8532                                                       Manager. */
   8533 #define BCM_FABRIC_QUEUE_QOS_BASE       (1U << 30) /* Offset to base queue
   8534                                                       number from the QUEUE_MAP
   8535                                                       Table. Index into
   8536                                                       QUEUE_MAP Table is
   8537                                                       DST_MODID, DST_PID. */
   8538 #define BCM_FABRIC_QUEUE_DEST_OFFSET    (1U << 31) /*  Index into QUEUE_MAP
   8539                                                       Table used for lookup. . */
   8540 
   8541 /* Unit capabilities flags. */
   8542 #define BCM_FIELD_STAT_WIDE_MODE    (1 << 0)   /* Unit has wide-mode slices. */
   8543 #define BCM_FIELD_STAT_SLICE_EN     (1 << 1)   /* Enable/disable slice lookup. */
   8544 #define BCM_FIELD_STAT_COS_QUEUE    (1 << 2)   /* Unit has CoS Queue change
   8545                                                   actions. */
   8546 
   8547 /* information related to the field class. */
   8548 typedef struct bcm_field_class_info_s {
   8549     bcm_field_action_t action;  /* field class action. */
   8550     bcm_class_t class_id;       /* field class value. */
   8551 } bcm_field_class_info_t;
   8552 
   8553 /* This API is deprecated and no longer supported. */
   8554 typedef struct bcm_field_status_s {
   8555     int group_total;    /* Total possible number of groups in unit. */
   8556     int group_free;     /* Unused groups in unit. */
   8557     uint32 flags;       /* Unit capabilities flags. */
   8558 } bcm_field_status_t;
   8559 
   8560 /* Opaque handle to a field presel. */
   8561 typedef int bcm_field_presel_t;
   8562 
   8563 /* Field name. */
   8564 typedef struct bcm_field_presel_config_s {
   8565     uint8 name[BCM_FIELD_MAX_NAME_LEN]; 
   8566     uint32 flags;                       /* Presel create flags
   8567                                            BCM_FIELD_PRESEL_CREATE_XXX. */
   8568     bcm_field_stage_t stage;            /* Stage for which presel to be created. */
   8569     bcm_field_presel_t presel_id;       /* Preselection ID created based on
   8570                                            flags set. */
   8571 } bcm_field_presel_config_t;
   8572 
   8573 /* 
   8574  * Value for bcmFieldControlSharedVlanFieldSet.
   8575  * 
   8576  * When using shared VLAN feature, the shared VLAN ID can be used in
   8577  * place of the packet's inner or outer vlan ID during packet
   8578  * classification.
   8579  */
   8580 #define BCM_FIELD_SHARED_VLAN_NONE  0          /* Do not use shared VLAN ID. */
   8581 #define BCM_FIELD_SHARED_VLAN_INNER 1          /* Use shared VLAN ID as inner
   8582                                                   VLAN ID. */
   8583 #define BCM_FIELD_SHARED_VLAN_OUTER 2          /* Use shared VLAN ID as outer
   8584                                                   VLAN ID. */
   8585 
   8586 /* Field control elements. */
   8587 typedef enum bcm_field_control_e {
   8588     bcmFieldControlStage = 0,           /* Select default Field Processor stage. */
   8589     bcmFieldControlColorIndependent = 1, /* Default for color in/dependent. */
   8590     bcmFieldControlUdfHigig0 = 2,       /* UDF_ID=7, has 1st word of HiGig
   8591                                            Packet (deprecated). */
   8592     bcmFieldControlUdfHigig1 = 3,       /* UDF_ID=6, has 2nd word of HiGig
   8593                                            Packet (deprecated). */
   8594     bcmFieldControlUdfHigig2 = 4,       /* UDF_ID=5, has 3rd word of HiGig
   8595                                            Packet (deprecated). */
   8596     bcmFieldControlSharedVlanFieldSet = 5, /* Shared VLAN ID as inner/outer VLAN.
   8597                                            See BCM_FIELD_SHARED_VLAN_xxx. */
   8598     bcmFieldControlRedirectIngressVlanCheck = 6, /* Enable ingress vlan membership check
   8599                                            for FP redirected traffic. */
   8600     bcmFieldControlRedirectNonUcastTrunkResolve = 7, /* Enable uniform distribution of
   8601                                            non-unicast FP redirected traffic. */
   8602     bcmFieldControlRedirectExcludeSrcPort = 8, /* Exclude source port/trunk from FP
   8603                                            redirection  destination. */
   8604     bcmFieldControlRedirectPortFloodBlock = 9, /* Enable port flood blocking policy for
   8605                                            FP redirected traffic. */
   8606     bcmFieldControlRedirectVlanFloodBlock = 10, /* Enable vlan flood blocking policy for
   8607                                            FP redirected traffic. */
   8608     bcmFieldControlArpAsIp = 11,        /* Treat ARP packets as Ip. */
   8609     bcmFieldControlRarpAsIp = 12,       /* Treat RARP packets as Ip. */
   8610     bcmFieldControlIntraDoubleEnable = 13, /* Enable/Disable INTRA slice groups. */
   8611     bcmFieldControlExternalUdfEnable = 14, /* Enable/Disable External UDF support. */
   8612     bcmFieldControlRedirectNonUcastEtherTrunkResolve = 15, /* Enable uniform distribution of
   8613                                            non-unicast FP redirected traffic
   8614                                            over Ethernet Ports. */
   8615     bcmFieldControlRedirectNonUcastFabricTrunkResolve = 16, /* Enable uniform distribution of
   8616                                            non-unicast FP redirected traffic
   8617                                            over HiGig Ports. */
   8618     bcmFieldControlStatSyncEnable = 17, /* Field stat get api will sync up with
   8619                                            hardware before returning the stat
   8620                                            value. */
   8621     bcmFieldControlCascadedKeyWidth = 18, /* Default width of key cascaded between
   8622                                            groups */
   8623     bcmFieldControlPolicerGroupSharingEnable = 19, /* Enable/Disable sharing of policer by
   8624                                            field groups. */
   8625     bcmFieldControlRedirectNextHopExcludeSrcPort = 20, /* Enable removal of system ingress port
   8626                                            from port-bitmap for packets that
   8627                                            have been Redirected to a Next-hop
   8628                                            index by the IFP. */
   8629     bcmFieldControlIngressLogicalPolicerPoolsMode = 21, /* Configure Logical Policer pool mode.
   8630                                            It can be set only if the policers
   8631                                            are not existing. */
   8632     bcmFieldControlEcmpHashOffset = 22, /* Configure offset for every ECMP hash
   8633                                            key. */
   8634     bcmFieldControlEcmpHashUseCrc = 23, /* If set, then use CRC32 hash, else use
   8635                                            XOR function. */
   8636     bcmFieldControlEcmpHashUseUpper5Bits = 24, /* If set, uses upper-most 5 bits of
   8637                                            hash result, else uses least
   8638                                            significant 5-bits of hash result. */
   8639     bcmFieldControlEcmpHashEnable = 25, /* If set, then enable the use of the
   8640                                            ECMP_HASH_SEL field from the Field
   8641                                            Processor. */
   8642     bcmFieldControlOverrideStageLookupPhb = 26, /* If set, internal priority assigned by
   8643                                            L2/L3/DSCP lookups overrides internal
   8644                                            priority assigned by VFP */
   8645     bcmFieldControlRedirectExcludeEtherSrcPort = 27, /* Exclude the ingress front panel port
   8646                                            from FP redirection destination. */
   8647     bcmFieldControlRedirectExcludeHiGigSrcPort = 28, /* Exclude the ingress higig port from
   8648                                            FP redirection destination. */
   8649     bcmFieldControlReplacementTtl = 29, /* To program the TTL value to be used
   8650                                            by bcmFieldActionReplaceTtl */
   8651     bcmFieldControlLargeDirectLuKeyLength = 30, /* Field processor large direct lookup
   8652                                            key length. valid values are 14,15,16
   8653                                            or 17. */
   8654     bcmFieldControlKeyGenVar = 31,      /* Value for KeyGenVar */
   8655     bcmFieldControlEgressAutoExpandWithPolicer = 32, /* Enable or disable auto expansion with
   8656                                            policers in case of non-shared meter
   8657                                            pool of Egress stage. */
   8658     bcmFieldControlDlbMonitorIngressRandomSeed = 33, /* Set RNG seed for DLB flow monitoring
   8659                                            for IFP. This RNG seed overwrites the
   8660                                            RNG seed set by the switch control
   8661                                            bcmSwitchDlbMonitorIngressRandomSeed.
   8662                                            This seed is used by the device for
   8663                                            the flow which matches IFP entries
   8664                                            with action
   8665                                            bcmFieldActionDlbEcmpMonitorEnable. */
   8666     bcmFieldControlGbpSrcMacMcastBitSet = 34, /* This Field control converts packet?s
   8667                                            Source mac to Multicast when IFP
   8668                                            action
   8669                                            bcmFieldActionGbpSrcMacMcastBitSet is
   8670                                            applied on the matched packet. */
   8671     bcmFieldControlTrunkDlbMonitorIngressRandomSeed = 35, /* Set RNG seed for DLB flow monitoring
   8672                                            for IFP. This RNG seed overwrites the
   8673                                            RNG seed set by the switch
   8674                                            bcmSwitchDlbMonitorIngressRandomSeed.
   8675                                            This seed is used by the device for
   8676                                            the flow which matches IFP entries
   8677                                            with action
   8678                                            bcmFieldActionDlbTrunkMonitorEnable. */
   8679     bcmFieldControlRedirectPortFloodEnable = 36, /* This Field control enables flooding
   8680                                            on egress ports by disabling block
   8681                                            mask check for ingress ports when IFP
   8682                                            action
   8683                                            bcmFieldActionEgressMembershipCheck
   8684                                            is applied on the matched packet. */
   8685     bcmFieldControlRedirectVlanFloodEnable = 37, /* This Field control enables flooding
   8686                                            on egress ports by disabling block
   8687                                            mask check for vlan when IFP action
   8688                                            bcmFieldActionEgressMembershipCheck
   8689                                            is applied on the matched packet. */
   8690     bcmFieldControlRedirectSystemPortFloodEnable = 38, /* This Field control enables flooding
   8691                                            on egress ports by disabling block
   8692                                            mask check for system ports when IFP
   8693                                            action
   8694                                            bcmFieldActionEgressMembershipCheck
   8695                                            is applied on the matched packet. */
   8696     bcmFieldControlRedirectIfpFloodEnable = 39, /* This Field control enables flooding
   8697                                            on egress ports by disabling block
   8698                                            mask check for IFP when IFP action
   8699                                            bcmFieldActionEgressMembershipCheck
   8700                                            is applied on the matched packet. */
   8701     bcmFieldControlCount = 40           /* Always last. Not a usable value. */
   8702 } bcm_field_control_t;
   8703 
   8704 #define BCM_FIELD_CONTROL_STRINGS \
   8705 { \
   8706     "Stage", \
   8707     "ColorIndependent", \
   8708     "UdfHigig0", \
   8709     "UdfHigig1", \
   8710     "UdfHigig2", \
   8711     "SharedVlanFieldSet", \
   8712     "RedirectIngressVlanCheck", \
   8713     "RedirectNonUcastTrunkResolve", \
   8714     "RedirectExcludeSrcPort", \
   8715     "RedirectPortFloodBlock", \
   8716     "RedirectVlanFloodBlock", \
   8717     "ArpAsIp", \
   8718     "RarpAsIp", \
   8719     "IntraDoubleEnable", \
   8720     "ExternalUdfEnable", \
   8721     "RedirectNonUcastEtherTrunkResolve", \
   8722     "RedirectNonUcastFabricTrunkResolve", \
   8723     "StatSyncEnable", \
   8724     "CascadedKeyWidth", \
   8725     "PolicerGroupSharingEnable", \
   8726     "RedirectNextHopExcludeSrcPort", \
   8727     "IngressLogicalPolicerPoolsMode", \
   8728     "EcmpHashOffset", \
   8729     "EcmpHashUseCrc", \
   8730     "EcmpHashUseUpper5Bits", \
   8731     "EcmpHashEnable", \
   8732     "OverrideStageLookupPhb", \
   8733     "RedirectExcludeEtherSrcPort", \
   8734     "RedirectExcludeHiGigSrcPort", \
   8735     "ReplacementTtl", \
   8736     "LargeDirectLuKeyLength", \
   8737     "KeyGenVar", \
   8738     "EgressAutoExpandWithPolicer", \
   8739     "DlbMonitorIngressRandomSeed", \
   8740     "GbpSrcMacMcastBitSet", \
   8741     "TrunkDlbMonitorIngressRandomSeed", \
   8742     "RedirectPortFloodEnable", \
   8743     "RedirectVlanFloodEnable", \
   8744     "RedirectSystemPortFloodEnable", \
   8745     "RedirectIfpFloodEnable"  \
   8746 }
   8747 
   8748 /* Field Group Status structure. */
   8749 typedef struct bcm_field_group_status_s {
   8750     int prio_min;       /* Minimum priority within group. */
   8751     int prio_max;       /* Maximum priority within group. */
   8752     int entries_total;  /* Total possible entries in group. */
   8753     int entries_free;   /* Unused entries in slice. */
   8754     int counters_total; /* Total possible counters in slice. */
   8755     int counters_free;  /* Unused counters in slice. */
   8756     int meters_total;   /* Total meters in slice. */
   8757     int meters_free;    /* Unused meters in slice. */
   8758     int entry_count;    /* Number of entries in the group. */
   8759     int counter_count;  /* Number of counters attached to group entries. */
   8760     int meter_count;    /* Number of meters attached to group entries. */
   8761 } bcm_field_group_status_t;
   8762 
   8763 /* Group Modes (single, double or triple wide). */
   8764 typedef enum bcm_field_group_mode_e {
   8765     bcmFieldGroupModeSingle = 0,        /* Single-wide group. */
   8766     bcmFieldGroupModeDouble = 1,        /* Double-wide group. */
   8767     bcmFieldGroupModeTriple = 2,        /* Triple-wide group. */
   8768     bcmFieldGroupModeQuad = 3,          /* Quad-wide group. */
   8769     bcmFieldGroupModeAuto = 4,          /* Auto-expand group based on Qset
   8770                                            (default). */
   8771     bcmFieldGroupModeDirect = 5,        /* Direct group (no TCAM lookup). */
   8772     bcmFieldGroupModeDirectExtraction = 6, /* Direct extraction (instead of TCAM)
   8773                                            group. */
   8774     bcmFieldGroupModeHashing = 7,       /* Hash function group - no entries are
   8775                                            expected. */
   8776     bcmFieldGroupModeExactMatch = 8,    /* Exact match group - partial masking
   8777                                            is not supported. */
   8778     bcmFieldGroupModeIntraSliceDouble = 9, /* Intraslice double wide group. */
   8779     bcmFieldGroupModeCount = 10         /* Always last. Not a usable value. */
   8780 } bcm_field_group_mode_t;
   8781 
   8782 #define BCM_FIELD_GROUP_MODE_STRINGS \
   8783 { \
   8784     "Single", \
   8785     "Double", \
   8786     "Triple", \
   8787     "Quad", \
   8788     "Auto", \
   8789     "Direct", \
   8790     "DirectExtraction", \
   8791     "Hashing", \
   8792     "ExactMatch", \
   8793     "IntraSliceDouble"  \
   8794 }
   8795 
   8796 /* 
   8797  * Ingress Policer Pool Modes (8x1024default, 16x512Contiguous,
   8798  * 16x512Split).
   8799  */
   8800 typedef enum bcm_field_ingress_policer_pools_e {
   8801     bcmFieldIngressLogicalPolicerPools8x1024, /* 8 Meter pools with 1024 entries in
   8802                                            each pool (Default Configuration). */
   8803     bcmFieldIngressLogicalPolicerPools16x512Contiguous, /* 16 Meter pools with 512 entries in
   8804                                            each pool in Contiguous mode. */
   8805     bcmFieldIngressLogicalPolicerPools16x512Split, /* 16 Meter pools with 512 entries in
   8806                                            each pool in Split mode. */
   8807     bcmFieldIngressPolicerPoolsCount    /* Always last. Not a usable value. */
   8808 } bcm_field_ingress_policer_pools_t;
   8809 
   8810 #define BCM_FIELD_INGRESS_POLICER_POOL_MODE_STRINGS \
   8811 { \
   8812     "bcmFieldIngressLogicalPolicerPools8x1024", \
   8813     "bcmFieldIngressLogicalPolicerPools16x512Contiguous", \
   8814     "bcmFieldIngressLogicalPolicerPools16x512Split"  \
   8815 }
   8816 
   8817 #define bcmFieldGroupModeDefault    bcmFieldGroupModeAuto 
   8818 
   8819 #define BCM_FIELD_GROUP_MODE_WIDTH_MAX  24         
   8820 
   8821 /* Parameter for bcmFieldActionEgressClassSelect */
   8822 #define BCM_FIELD_EGRESS_CLASS_SELECT_PORT  0          
   8823 #define BCM_FIELD_EGRESS_CLASS_SELECT_SVP   1          
   8824 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_IIF 2          
   8825 #define BCM_FIELD_EGRESS_CLASS_SELECT_FIELD_SRC 3          
   8826 #define BCM_FIELD_EGRESS_CLASS_SELECT_FIELD_DST 4          
   8827 #define BCM_FIELD_EGRESS_CLASS_SELECT_L2_SRC 5          
   8828 #define BCM_FIELD_EGRESS_CLASS_SELECT_L2_DST 6          
   8829 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_SRC 7          
   8830 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_DST 8          
   8831 #define BCM_FIELD_EGRESS_CLASS_SELECT_VLAN  9          
   8832 #define BCM_FIELD_EGRESS_CLASS_SELECT_VRF   10         
   8833 #define BCM_FIELD_EGRESS_CLASS_SELECT_NEW   11         
   8834 #define BCM_FIELD_EGRESS_CLASS_SELECT_EM_CLASS_ID 12         
   8835 #define BCM_FIELD_EGRESS_CLASS_SELECT_COMPRESSION_ID_A 13         
   8836 #define BCM_FIELD_EGRESS_CLASS_SELECT_COMPRESSION_ID_B 14         
   8837 
   8838 /* Parameter for bcmFieldActionL3TunnelTypeSet */
   8839 #define BCM_FIELD_L3_TUNNEL_TYPE_IP6TOIP4   0          /* IP6TOIP4 tunnel */
   8840 #define BCM_FIELD_L3_TUNNEL_TYPE_ISATAP     1          /* ISATAP tunnel */
   8841 #define BCM_FIELD_L3_TUNNEL_TYPE_IP6TOIP4SECURE 2          /* IP6TOIP4SECURE tunnel */
   8842 
   8843 /* Parameter for bcmFieldActionHiGigClassSelect */
   8844 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGRESS 0          
   8845 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_DVP 1          
   8846 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_L3_INTERFACE 2          
   8847 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_NEXT_HOP 3          
   8848 #define BCM_FIELD_HIGIG_CLASS_SELECT_PORT   4          
   8849 
   8850 /* parameter for bcmFieldActionOamDmTimeFormat */
   8851 #define BCM_FIELD_OAM_DM_TIME_FORMAT_IEEE1588 0          
   8852 #define BCM_FIELD_OAM_DM_TIME_FORMAT_NTP    1          
   8853 
   8854 /* Parameter for bcmFieldActionOamTagStatusCheck */
   8855 #define BCM_FIELD_OAM_TAG_STATUS_OUTER_MASK (1 << 0)   
   8856 #define BCM_FIELD_OAM_TAG_STATUS_INNER_MASK (1 << 1)   
   8857 #define BCM_FIELD_OAM_TAG_STATUS_INNER_L2_OUTER_MASK (1 << 2)   
   8858 #define BCM_FIELD_OAM_TAG_STATUS_INNER_L2_INNER_MASK (1 << 3)   
   8859 
   8860 /* Parameter for bcmFieldActionOamTunnelControl */
   8861 #define BCM_FIELD_OAM_TUNNEL_CONTROL_ANY    0          
   8862 #define BCM_FIELD_OAM_TUNNEL_CONTROL_NOT_TUNNELDED 1          
   8863 
   8864 /* Parameter for qualifier bcmFieldQualifyOamEgressMulticastMacHit */
   8865 #define BCM_FIELD_OAM_MUTLICAST_MAC_NO_HIT  0x1        /* Destination MAC
   8866                                                           address not in OAM
   8867                                                           Multicast MAC CLASS1
   8868                                                           or CLASS 2 Address
   8869                                                           Range */
   8870 #define BCM_FIELD_OAM_MUTLICAST_MAC_CLASS1_HIT 0x2        /* Destination MAC
   8871                                                           address in OAM
   8872                                                           Multicast MAC CLASS1
   8873                                                           Address Range
   8874                                                           01-80-C2-00-00-30 to
   8875                                                           01-80-C2-00-00-37 */
   8876 #define BCM_FIELD_OAM_MUTLICAST_MAC_CLASS2_HIT 0x3        /* Destination MAC
   8877                                                           address in OAM
   8878                                                           Multicast MAC CLASS2
   8879                                                           Address Range
   8880                                                           01-80-C2-00-00-38 to
   8881                                                           01-80-C2-00-00-3f */
   8882 
   8883 /* Group config create API optional flags. */
   8884 #define BCM_FIELD_GROUP_CREATE_WITH_ID      (1 << 0)   
   8885 #define BCM_FIELD_GROUP_CREATE_WITH_PORT    (1 << 1)   
   8886 #define BCM_FIELD_GROUP_CREATE_WITH_MODE    (1 << 2)   
   8887 #define BCM_FIELD_GROUP_CREATE_SMALL        (1 << 3)   
   8888 #define BCM_FIELD_GROUP_CREATE_LARGE        (1 << 4)   
   8889 #define BCM_FIELD_GROUP_CREATE_WITH_ASET    (1 << 5)   
   8890 #define BCM_FIELD_GROUP_CREATE_WITH_PRESELSET (1 << 6)   
   8891 #define BCM_FIELD_GROUP_CREATE_INSERTION_ORDER_LOOSE (1 << 7)   /* If set, do not apply
   8892                                                           the rule where TCAM
   8893                                                           entries with identical
   8894                                                           priorities are ordered
   8895                                                           in the TCAM according
   8896                                                           to their insertion
   8897                                                           order */
   8898 #define BCM_FIELD_GROUP_CREATE_IS_EQUAL     (1 << 8)   /* If set, the is-equal
   8899                                                           result of this Field
   8900                                                           group key and the
   8901                                                           Field group
   8902                                                           'group_ref' is set in
   8903                                                           the
   8904                                                           bcmFieldQualifyIsEqualValue
   8905                                                           qualifier */
   8906 #define BCM_FIELD_GROUP_CREATE_SPARSE_ENTRY_PRIORITIES (1 << 9)   /* If set, the TCAM
   8907                                                           shuffle algorithm
   8908                                                           assumes only sparse
   8909                                                           priorities assigned to
   8910                                                           the Field group
   8911                                                           entries */
   8912 #define BCM_FIELD_GROUP_CREATE_SINGLE       (1 << 10)  /* If set, use single
   8913                                                           resource for field
   8914                                                           group */
   8915 #define BCM_FIELD_GROUP_CREATE_IS_CASCADED  (1 << 11)  /* If set, the cascaded
   8916                                                           action value of this
   8917                                                           Field group is set in
   8918                                                           the
   8919                                                           bcmFieldQualifyCascadedKeyValue
   8920                                                           qualifier of the Field
   8921                                                           group 'group_ref'. */
   8922 #define BCM_FIELD_GROUP_CREATE_HANDLE_ENTRIES_BY_KEY (1 << 12)  /* If set,  entries in
   8923                                                           this group is handled
   8924                                                           by key and not by ID.
   8925                                                           entries with identical
   8926                                                           key cannot be added.
   8927                                                           getting and deleting
   8928                                                           entries should be
   8929                                                           according to the key'. */
   8930 #define BCM_FIELD_GROUP_CREATE_WITH_CYCLE   (1 << 13)  /* If set, use created
   8931                                                           cycle value for field
   8932                                                           group */
   8933 #define BCM_FIELD_GROUP_CREATE_WITH_PROGRAMS (1 << 14)  /* Create field group
   8934                                                           attached with specific
   8935                                                           program(s). */
   8936 #define BCM_FIELD_GROUP_CREATE_WITH_CE_ID   (1 << 15)  /* Create field group
   8937                                                           with user provided ce
   8938                                                           id(s). */
   8939 #define BCM_FIELD_GROUP_CREATE_WITH_MW_SUPPORT (1 << 16)  /* Create field group
   8940                                                           with multiwide
   8941                                                           support. The allocated
   8942                                                           slice for this group
   8943                                                           can spam multiwide
   8944                                                           modes. */
   8945 #define BCM_FIELD_GROUP_CREATE_WITH_PRESEL_GROUP (1 << 17)  /* Create field group
   8946                                                           with preselector
   8947                                                           group. */
   8948 #define BCM_FIELD_GROUP_CREATE_WITH_COMPRESSION (1 << 18)  /* Create field group
   8949                                                           with compression
   8950                                                           support. This triggers
   8951                                                           to compress the
   8952                                                           srcIp(6) and dstIp(6)
   8953                                                           qualifiers available
   8954                                                           in the group's QSET */
   8955 #define BCM_FIELD_GROUP_ENT_LVL_ACTION_RESOLVE (1 << 19)  /* Flag to enable action
   8956                                                           resolution on per
   8957                                                           entry level. */
   8958 #define BCM_FIELD_GROUP_CREATE_WITH_SRC_IP_COMPRESSION (1 << 20)  /* Enable compression
   8959                                                           support. This triggers
   8960                                                           to compress the source
   8961                                                           IP4 related qualifiers */
   8962 #define BCM_FIELD_GROUP_CREATE_WITH_SRC_IP6_COMPRESSION (1 << 21)  /* Enable compression
   8963                                                           support. This triggers
   8964                                                           to compress the source
   8965                                                           IP6 related qualifiers */
   8966 #define BCM_FIELD_GROUP_CREATE_WITH_DST_IP_COMPRESSION (1 << 22)  /* Enable compression
   8967                                                           support. This triggers
   8968                                                           to compress the
   8969                                                           destination IP4
   8970                                                           related qualifiers */
   8971 #define BCM_FIELD_GROUP_CREATE_WITH_DST_IP6_COMPRESSION (1 << 23)  /* Enable compression
   8972                                                           support. This triggers
   8973                                                           to compress the
   8974                                                           destination IP6
   8975                                                           related qualifiers */
   8976 
   8977 #define BCM_FIELD_PRESEL_SEL_MAX    1024       /* Maximum Preselection entries
   8978                                                   supported. */
   8979 
   8980 /* Presel config create API optional flags. */
   8981 #define BCM_FIELD_PRESEL_CREATE_WITH_ID (1 << 0)   /* If set, preselection ID
   8982                                                       passed by the user will be
   8983                                                       used. */
   8984 
   8985 /* Bitmap of all possible preselection specification IDs. */
   8986 typedef struct bcm_field_presel_set_s {
   8987     SHR_BITDCL w[_SHR_BITDCLSIZE(BCM_FIELD_PRESEL_SEL_MAX)]; 
   8988 } bcm_field_presel_set_t;
   8989 
   8990 #define BCM_FIELD_PRESEL_ENTRY_SET(_eid_, _presel_id_)  (_eid_ = _presel_id_ | BCM_FIELD_QUALIFY_PRESEL) /* Build Preselector Entry ID for
   8991                                                   the given preselector ID. */
   8992 
   8993 /* Identifier for bcm_field_hint_t structure */
   8994 typedef uint32 bcm_field_hintid_t;
   8995 
   8996 /*  Default Action resolution ID for groups. */
   8997 #define BCM_FIELD_GROUP_ACTION_RES_ID_DEFAULT -1         /* Group default action
   8998                                                           resolution id value */
   8999 
   9000 /* Group Cycle value. */
   9001 typedef enum bcm_field_group_cycle_e {
   9002     bcmFieldGroupCycle0 = 0,    /* Create Field Group in Cycle 0. */
   9003     bcmFieldGroupCycle1 = 1,    /* Create Field Group in Cycle 1. */
   9004     bcmFieldGroupCycleCount = 2 /* Always last. Not a usable value. */
   9005 } bcm_field_group_cycle_t;
   9006 
   9007 #define BCM_FIELD_GROUP_CYCLE_STRINGS \
   9008 { \
   9009     "Cycle0", \
   9010     "Cycle1"  \
   9011 }
   9012 
   9013 /* PMF Program ID. */
   9014 typedef uint32 bcm_field_context_t;
   9015 
   9016 /* Maximum number of presels per FG. */
   9017 #define BCM_FIELD_NOF_PRESEL_PER_FG 32         /* Maximum number of presels per
   9018                                                   fg */
   9019 
   9020 /* Maximum number of qualifiers per FG . */
   9021 #define BCM_FIELD_NOF_QUALS_PER_FG  32         /* Maximum number of quals per fg */
   9022 
   9023 /* Maximum number of ce id per qualifier . */
   9024 #define BCM_FIELD_NOF_CE_ID_PER_QUAL    8          /* Maximum number of ce ids
   9025                                                       per qualifier */
   9026 
   9027 /* Description of a qualifier ce information. */
   9028 typedef struct bcm_field_qual_ce_info_s {
   9029     bcm_field_qualify_t qual;           /* Qualifier for which the ce info is
   9030                                            provided */
   9031     int nof_ce_ids;                     /* Number of ce ids for the given
   9032                                            qualifeir */
   9033     int ce_id[BCM_FIELD_NOF_CE_ID_PER_QUAL]; /* ce ids for the given qualifier */
   9034     int key_index[BCM_FIELD_NOF_CE_ID_PER_QUAL]; /* key_index for the given ce ids. In
   9035                                            case the key is double key and the
   9036                                            ce_id is located in the second key -
   9037                                            this index should be set to 1 */
   9038 } bcm_field_qual_ce_info_t;
   9039 
   9040 /* Field destination action flags. */
   9041 #define BCM_FIELD_DESTINATION_ACTION_REDIRECT 1          /* Indicate a new
   9042                                                           destination. */
   9043 #define BCM_FIELD_DESTINATION_ACTION_COLOR  2          /* Indicate a new color. */
   9044 #define BCM_FIELD_DESTINATION_ACTION_MIRROR 4          /* Indicate a mirror
   9045                                                           destination. */
   9046 #define BCM_FIELD_DESTINATION_ACTION_COS    8          /* Indicate new COSs. */
   9047 
   9048 /* Field destination entry options. */
   9049 #define BCM_FIELD_DESTINATION_OPTIONS_REPLACE 1          /*  Field destination
   9050                                                           entry replace. */
   9051 
   9052 /* Field destination match. */
   9053 typedef struct bcm_field_destination_match_s {
   9054     int priority;                   /* Match priority. */
   9055     bcm_gport_t gport;              /* Outgoing mod port or trunk. */
   9056     uint32 gport_mask;              /* Outgoing mod port or trunk mask. */
   9057     bcm_multicast_t mc_group;       /* Multicast group. */
   9058     uint32 mc_group_mask;           /* Multicast group mask. */
   9059     bcm_port_encap_t port_encap;    /* Incoming port encapsulation. */
   9060     uint8 port_encap_mask;          /* Incoming port encapsulation mask. */
   9061     bcm_color_t color;              /* Color. */
   9062     uint8 color_mask;               /* Color mask. */
   9063     bcm_color_t elephant_color;     /* Elephant color. */
   9064     uint8 elephant_color_mask;      /* Elephant color mask. */
   9065     uint8 elephant;                 /* Flowtracker elephant flow indicator. */
   9066     uint8 elephant_mask;            /* Elephant mask. */
   9067     uint8 elephant_notify;          /* Indicator that flow exceeds the elephant
   9068                                        threshold byte count and becomes an
   9069                                        elephant flow. */
   9070     uint8 elephant_notify_mask;     /* elephant_notify mask. */
   9071     int int_pri;                    /* Internal priority. */
   9072     uint32 int_pri_mask;            /* Internal priority mask. */
   9073     int opaque_object_2;            /* Opaque object 2 assigned in ingress
   9074                                        field. */
   9075     uint32 opaque_object_2_mask;    /* Opaque object 2 mask. */
   9076     uint32 ifp_opaque_ctrl_id;      /* IFP opaque control ID. */
   9077     uint32 ifp_opaque_ctrl_id_mask; /* IFP opaque control ID mask. */
   9078 } bcm_field_destination_match_t;
   9079 
   9080 /* Field destination action. */
   9081 typedef struct bcm_field_destination_action_s {
   9082     uint32 flags;                       /* BCM_FIELD_DESTINATION_ACTION_xxx
   9083                                            flags. */
   9084     uint8 drop;                         /* Drop the packet. */
   9085     uint8 copy_to_cpu;                  /* Copy the packet to the CPU. */
   9086     bcm_color_t color;                  /* Internal color. */
   9087     bcm_field_redirect_destination_type_t destination_type; /*  Destination type. */
   9088     bcm_gport_t gport;                  /* Redirection logical port. */
   9089     bcm_multicast_t mc_group;           /* Multicast group. */
   9090     bcm_gport_t mirror_dest_id;         /* Mirror destination ID. */
   9091     bcm_cos_queue_t uc_cos;             /* Unicast cos queue. */
   9092     bcm_cos_queue_t mc_cos;             /* Multicast cos queue. */
   9093     bcm_cos_queue_t rqe_cos;            /* RQE cos queue. */
   9094     bcm_cos_queue_t cpu_cos;            /* CPU cos queue. */
   9095 } bcm_field_destination_action_t;
   9096 
   9097 #ifndef BCM_HIDE_DISPATCHABLE
   9098 
   9099 /* Create a preselection specification */
   9100 extern int bcm_field_presel_create(
   9101     int unit, 
   9102     bcm_field_presel_t *presel_id);
   9103 
   9104 /* Create a preselection specification using a specific ID */
   9105 extern int bcm_field_presel_create_id(
   9106     int unit, 
   9107     bcm_field_presel_t presel_id);
   9108 
   9109 #endif /* BCM_HIDE_DISPATCHABLE */
   9110 
   9111 /* Description of a group hw information. */
   9112 typedef struct bcm_field_group_presel_info_s {
   9113     bcm_field_presel_t presel_id;       /* Presel Id for the given group hw info */
   9114     int nof_qual_info;                  /* Number of qualifiers in the hw info */
   9115     bcm_field_qual_ce_info_t qual_info[BCM_FIELD_NOF_QUALS_PER_FG]; /* Hw info for the given qualifier */
   9116 } bcm_field_group_presel_info_t;
   9117 
   9118 /* Initialize Field Group Hw Info structure. */
   9119 extern void bcm_field_group_presel_info_init(
   9120     int nof_presel_info, 
   9121     bcm_field_group_presel_info_t *presel_info);
   9122 
   9123 /* Opaque handle to a field presel group ID. */
   9124 typedef int bcm_field_presel_group_t;
   9125 
   9126 /* 
   9127  * Field group mode types.
   9128  * 
   9129  * Possible values for mode_type in bcm_field_group_config_t
   9130  */
   9131 typedef enum bcm_field_group_mode_type_e {
   9132     bcmFieldGroupModeTypeAuto = 0,      /* Default. */
   9133     bcmFieldGroupModeTypeL2Single = 1,  /* L2 Single. */
   9134     bcmFieldGroupModeTypeL3Single = 2,  /* L3 Single. */
   9135     bcmFieldGroupModeTypeL3SingleAny = 3, /* L3 Single Any. */
   9136     bcmFieldGroupModeTypeL3Double = 4,  /* L3 Double. */
   9137     bcmFieldGroupModeTypeL3DoubleAny = 5, /* L3 Double Any. */
   9138     bcmFieldGroupModeTypeL3DoubleAlternate = 6, /* L3 Double Alternate. */
   9139     bcmFieldGroupModeTypeCount = 7      /* Always Last. Not a usable value. */
   9140 } bcm_field_group_mode_type_t;
   9141 
   9142 #define BCM_FIELD_GROUP_MODE_TYPE_STRINGS \
   9143 { \
   9144     "Auto", \
   9145     "L2Single", \
   9146     "L3Single", \
   9147     "L3SingleAny", \
   9148     "L3Double", \
   9149     "L3DoubleAny", \
   9150     "L3DoubleAlternate"  \
   9151 }
   9152 
   9153 /* 
   9154  * Field group packet types.
   9155  * 
   9156  * Possible values for packet_type in bcm_field_group_config_t
   9157  */
   9158 typedef enum bcm_field_group_packet_type_e {
   9159     bcmFieldGroupPacketTypeDefault = 0, /* Default. */
   9160     bcmFieldGroupPacketTypeIp = 1,      /* PORT_ANY_PACKET_IP. */
   9161     bcmFieldGroupPacketTypeNonIp = 2,   /* PORT_ANY_PACKET_NONIP. */
   9162     bcmFieldGroupPacketTypeIp4 = 3,     /* PORT_ANY_PACKET_IPV4. */
   9163     bcmFieldGroupPacketTypeIp6 = 4,     /* PORT_ANY_PACKET_IPV46. */
   9164     bcmFieldGroupPacketTypeHigig = 5,   /* PORT_HIGIG_PACKET_ANY. */
   9165     bcmFieldGroupPacketTypeFrontPanel = 6, /* PORT_FRONT_PACKET_ANY. */
   9166     bcmFieldGroupPacketTypeCount = 7    /* Always Last. Not a usable value. */
   9167 } bcm_field_group_packet_type_t;
   9168 
   9169 #define BCM_FIELD_GROUP_PACKET_TYPE_STRINGS \
   9170 { \
   9171     "Default", \
   9172     "Ip", \
   9173     "NonIp", \
   9174     "Ip4", \
   9175     "Ip6", \
   9176     "Higig", \
   9177     "FrontPanel"  \
   9178 }
   9179 
   9180 /* 
   9181  * Group configuration structure. Used to create a field group with
   9182  * specific attributes.
   9183  */
   9184 typedef struct bcm_field_group_config_s {
   9185     uint32 flags;                       /* Group create flags
   9186                                            BCM_FIELD_GROUP_CREATE_XXX. */
   9187     bcm_field_qset_t qset;              /* Group qualifier set. */
   9188     int priority;                       /* Group priority. */
   9189     bcm_field_group_mode_t mode;        /* Group mode. */
   9190     bcm_pbmp_t ports;                   /* Group member ports. */
   9191     bcm_field_group_t group;            /* Group. */
   9192     bcm_field_aset_t aset;              /* Group action set */
   9193     bcm_field_presel_set_t preselset;   /* Group preselector set */
   9194     bcm_field_presel_set_t group_ref;   /* Reference Field group for operation
   9195                                            set by the Flag. */
   9196     int max_entry_priorities;           /* Number of entries priorities in the
   9197                                            group. 0 means unlimited. */
   9198     bcm_field_hintid_t hintid;          /* Hints for Group Creation. */
   9199     int action_res_id;                  /* Action resolution id for Group. */
   9200     uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Group. */
   9201     bcm_field_group_cycle_t cycle;      /* Create Field Group Cycle. */
   9202     uint32 pgm_bmp;                     /* Bitmap of program-ids which the
   9203                                            current field group will be pointing
   9204                                            to. */
   9205     uint32 share_id;                    /* Group share ID. Groups created with
   9206                                            same share ID may share TCAM banks. */
   9207     bcm_field_presel_group_t presel_group; /* Presel Group ID. */
   9208     bcm_field_group_mode_type_t mode_type; /* Field group mode type. */
   9209     bcm_field_group_packet_type_t packet_type; /* Field group packet type. */
   9210 } bcm_field_group_config_t;
   9211 
   9212 /* 
   9213  * Field entry configuration structure. Used to create a field entry with
   9214  * specific attributes.
   9215  */
   9216 typedef struct bcm_field_entry_config_s {
   9217     uint32 flags;                   /* Field entry create flags
   9218                                        BCM_FIELD_ENTRY_CREATE_XXX. */
   9219     bcm_field_entry_t entry_id;     /* Field entry. */
   9220     bcm_field_group_t group_id;     /* Group Id. */
   9221     bcm_field_aset_t aset;          /* Default entry Action Set (currently
   9222                                        applicable only for default entries). */
   9223     int priority;                   /* Entry priority. */
   9224     uint32 status_flags;            /* read only flag to retrieve field entry
   9225                                        status flags like
   9226                                        BCM_FIELD_ENTRY_STATUS_xxx. */
   9227     uint32 flex_counter_action_id;  /*  Read only field for flex counter action
   9228                                        identifier. */
   9229     uint32 counter_id;              /* Read only field for flex counter index
   9230                                        for non colored counters. */
   9231     uint32 gp_counter_id;           /* Read only field for flex counter index
   9232                                        for green colored counters. */
   9233     uint32 yp_counter_id;           /* Read only field for flex counter index
   9234                                        for yellow colored counters. */
   9235     uint32 rp_counter_id;           /* Read only field for flex counter index
   9236                                        for red colored counters. */
   9237 } bcm_field_entry_config_t;
   9238 
   9239 /* Used to create a field group with specific attributes. */
   9240 typedef struct bcm_field_group_config_extension_s {
   9241     uint32 flags;                       /* Group create flags
   9242                                            BCM_FIELD_GROUP_CREATE_XXX. */
   9243     bcm_field_qset_t qset;              /* Group qualifier set. */
   9244     int priority;                       /* Group priority. */
   9245     bcm_field_group_mode_t mode;        /* Group mode. */
   9246     bcm_pbmp_t ports;                   /* Group member ports. */
   9247     bcm_field_group_t group;            /* Group. */
   9248     bcm_field_aset_t aset;              /* Group action set */
   9249     bcm_field_presel_set_t preselset;   /* Group preselector set */
   9250     bcm_field_presel_set_t group_ref;   /* Reference Field group for operation
   9251                                            set by the Flag. */
   9252     int max_entry_priorities;           /* Number of entries priorities in the
   9253                                            group. 0 means unlimited. */
   9254     bcm_field_hintid_t hintid;          /* Hints for Group Creation. */
   9255     int action_res_id;                  /* Action resolution id for Group. */
   9256     uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Group. */
   9257     bcm_field_group_cycle_t cycle;      /* Create Field Group Cycle. */
   9258     uint32 pgm_bmp;                     /* Bitmap of program-ids which the
   9259                                            current field group will be pointing
   9260                                            to. */
   9261     uint32 share_id;                    /* Group share ID. Groups created with
   9262                                            same share ID may share TCAM banks. */
   9263     uint32 nof_presel_info;             /* Number of presel_info elements. */
   9264     bcm_field_group_presel_info_t *presel_info; /* Per preselector data. */
   9265 } bcm_field_group_config_extension_t;
   9266 
   9267 /* Description of a single extraction point. */
   9268 typedef struct bcm_field_extraction_field_s {
   9269     uint32 flags;                   /* Flags for this extraction point */
   9270     bcm_field_qualify_t qualifier;  /* BCM field qualifier ID (or
   9271                                        bcmFieldQualifyCount is using constant
   9272                                        value) */
   9273     int lsb;                        /* Least significant bit to be extracted
   9274                                        from qualifier */
   9275     int bits;                       /* Number of bits to use, valid for both
   9276                                        qualifier extraction and constant */
   9277     int value;                      /* Constant value (if qualifier is
   9278                                        bcmFieldQualifyCount) */
   9279 } bcm_field_extraction_field_t;
   9280 
   9281 /* 
   9282  * A single action, composed of possibly several extraction fields, for
   9283  * an entry in a direct extraction group.
   9284  */
   9285 typedef struct bcm_field_extraction_action_s {
   9286     bcm_field_action_t action;  /* BCM field action ID of the action to be built
   9287                                    by extraction */
   9288     int bias;                   /* Bias value added to the final extracted value
   9289                                    before using it as an argument to the action */
   9290 } bcm_field_extraction_action_t;
   9291 
   9292 /* core specific paramters for a field group entry */
   9293 typedef struct bcm_field_action_core_config_s {
   9294     uint32 flags;   /* flags for core specific action */
   9295     int param0;     /* action core-specific paramter No.0 */
   9296     int param1;     /* action core-specific paramter No.1 */
   9297     int param2;     /* action core-specific paramter No.2 */
   9298     int param3;     /* action core-specific paramter No.3 */
   9299 } bcm_field_action_core_config_t;
   9300 
   9301 /* core specific paramters for a field group entry */
   9302 typedef struct bcm_field_flowtrackercheck_s {
   9303     bcm_flowtracker_check_t flow_check_id; /* Flowtracker check ID */
   9304     uint32 value;                       /* Value for flowtracker check ID */
   9305 } bcm_field_flowtrackercheck_t;
   9306 
   9307 #define BCM_ILLEGAL_ACTION_PARAMETER    (-1)       /* Indicates meaningless
   9308                                                       paramX on
   9309                                                       bcm_field_action_core_config_t */
   9310 
   9311 /* Field Qualifier Arp Opcode (for bcm_field_qualify_ArpOpcode). */
   9312 typedef enum bcm_field_ArpOpcode_e {
   9313     bcmFieldArpOpcodeRequest = 0,   /* Request opcode. */
   9314     bcmFieldArpOpcodeReply = 1,     /* Reply opcode. */
   9315     bcmFieldArpOpcodeCount = 2      /* Always last; not a usable value. */
   9316 } bcm_field_ArpOpcode_t;
   9317 
   9318 #define BCM_FIELD_FARPOPCODE_STRINGS \
   9319 { \
   9320     "Request", \
   9321     "Reply"  \
   9322 }
   9323 
   9324 /* 
   9325  * Bitmap for the various options on 'flags' on
   9326  * bcm_field_action_width_set() or bcm_field_action_width_get()
   9327  */
   9328 typedef enum bcm_field_action_width_flags_e {
   9329     bcm_default_action_width = 0    /* When this bit is set then ignore 'width'
   9330                                        and set action runtime width to its
   9331                                        default value. */
   9332 } bcm_field_action_width_flags_t;
   9333 
   9334 #ifndef BCM_HIDE_DISPATCHABLE
   9335 
   9336 /* Initialize field software subsystem */
   9337 extern int bcm_field_init(
   9338     int unit);
   9339 
   9340 /* De-initialize field software subsystem */
   9341 extern int bcm_field_detach(
   9342     int unit);
   9343 
   9344 /* Set or get a field control value. */
   9345 extern int bcm_field_control_get(
   9346     int unit, 
   9347     bcm_field_control_t control, 
   9348     uint32 *state);
   9349 
   9350 /* Set or get a field control value. */
   9351 extern int bcm_field_control_set(
   9352     int unit, 
   9353     bcm_field_control_t control, 
   9354     uint32 state);
   9355 
   9356 /* The API returns the number of slices in the given stage. */
   9357 extern int bcm_field_stage_slice_count_get(
   9358     int unit, 
   9359     bcm_field_stage_t stage_id, 
   9360     int *slice_count);
   9361 
   9362 /* 
   9363  * The API returns the details of the stage and entries count of the
   9364  * given slice for the given port bitmap. If the field stage is operating
   9365  * in global mode, the 'pbmp' input variable to the function will be
   9366  * ignored and returns the slice information for the global instance and
   9367  * if the stage is operating in pipe local mode, the function expects the
   9368  * valid PBMP input for the respective pipe instance and it returns slice
   9369  * information for the pipe instance.
   9370  */
   9371 extern int bcm_field_stage_slice_info_get(
   9372     int unit, 
   9373     bcm_field_stage_t stage_id, 
   9374     bcm_pbmp_t pbmp, 
   9375     int slice_no, 
   9376     bcm_field_stage_slice_info_t *slice_info);
   9377 
   9378 /* List the qualifiers supported for a given stage */
   9379 extern int bcm_field_stage_qset_get(
   9380     int unit, 
   9381     bcm_field_stage_t stage, 
   9382     uint8 presel, 
   9383     bcm_field_qset_t *qset);
   9384 
   9385 /* Get per-stage field information */
   9386 extern int bcm_field_stage_info_get(
   9387     int unit, 
   9388     bcm_field_stage_t stage, 
   9389     bcm_field_stage_info_t *info);
   9390 
   9391 #endif /* BCM_HIDE_DISPATCHABLE */
   9392 
   9393 /* Initialize UDF specification structure. */
   9394 extern void bcm_field_udf_spec_t_init(
   9395     bcm_field_udf_spec_t *udf_spec);
   9396 
   9397 #ifndef BCM_HIDE_DISPATCHABLE
   9398 
   9399 /* Create a field group */
   9400 extern int bcm_field_group_create(
   9401     int unit, 
   9402     bcm_field_qset_t qset, 
   9403     int pri, 
   9404     bcm_field_group_t *group);
   9405 
   9406 /* Create a field group */
   9407 extern int bcm_field_group_create_id(
   9408     int unit, 
   9409     bcm_field_qset_t qset, 
   9410     int pri, 
   9411     bcm_field_group_t group);
   9412 
   9413 /* Enable or Disable auto expansion of entries for a group. */
   9414 extern int bcm_field_group_expansion_enable_set(
   9415     int unit, 
   9416     bcm_field_group_t group, 
   9417     int enable);
   9418 
   9419 /* Get auto expansion status of a group */
   9420 extern int bcm_field_group_expansion_enable_get(
   9421     int unit, 
   9422     bcm_field_group_t group, 
   9423     int *enable);
   9424 
   9425 /* Create a field group */
   9426 extern int bcm_field_group_create_mode(
   9427     int unit, 
   9428     bcm_field_qset_t qset, 
   9429     int pri, 
   9430     bcm_field_group_mode_t mode, 
   9431     bcm_field_group_t *group);
   9432 
   9433 /* Create a field group */
   9434 extern int bcm_field_group_create_mode_id(
   9435     int unit, 
   9436     bcm_field_qset_t qset, 
   9437     int pri, 
   9438     bcm_field_group_mode_t mode, 
   9439     bcm_field_group_t group);
   9440 
   9441 /* Create a field group */
   9442 extern int bcm_field_group_port_create_mode(
   9443     int unit, 
   9444     bcm_port_t port, 
   9445     bcm_field_qset_t qset, 
   9446     int pri, 
   9447     bcm_field_group_mode_t mode, 
   9448     bcm_field_group_t *group);
   9449 
   9450 /* Create a field group */
   9451 extern int bcm_field_group_port_create_mode_id(
   9452     int unit, 
   9453     bcm_port_t port, 
   9454     bcm_field_qset_t qset, 
   9455     int pri, 
   9456     bcm_field_group_mode_t mode, 
   9457     bcm_field_group_t group);
   9458 
   9459 /* Create a field group */
   9460 extern int bcm_field_group_ports_create_mode(
   9461     int unit, 
   9462     bcm_pbmp_t pbmp, 
   9463     bcm_field_qset_t qset, 
   9464     int pri, 
   9465     bcm_field_group_mode_t mode, 
   9466     bcm_field_group_t *group);
   9467 
   9468 /* Create a field group */
   9469 extern int bcm_field_group_ports_create_mode_id(
   9470     int unit, 
   9471     bcm_pbmp_t pbmp, 
   9472     bcm_field_qset_t qset, 
   9473     int pri, 
   9474     bcm_field_group_mode_t mode, 
   9475     bcm_field_group_t group);
   9476 
   9477 /* Create a field group */
   9478 extern int bcm_field_group_wlan_create_mode(
   9479     int unit, 
   9480     bcm_field_qset_t qset, 
   9481     int pri, 
   9482     bcm_field_group_mode_t mode, 
   9483     bcm_field_group_t *group);
   9484 
   9485 /* Create a field group */
   9486 extern int bcm_field_group_wlan_create_mode_id(
   9487     int unit, 
   9488     bcm_field_qset_t qset, 
   9489     int pri, 
   9490     bcm_field_group_mode_t mode, 
   9491     bcm_field_group_t group);
   9492 
   9493 /* Get the mode of a group. */
   9494 extern int bcm_field_group_mode_get(
   9495     int unit, 
   9496     bcm_field_group_t group, 
   9497     bcm_field_group_mode_t *mode);
   9498 
   9499 /* Create a field group with specific attributes. */
   9500 extern int bcm_field_group_config_create(
   9501     int unit, 
   9502     bcm_field_group_config_t *group_config);
   9503 
   9504 /* Create a field group with extension specific attributes. */
   9505 extern int bcm_field_group_config_extension_create(
   9506     int unit, 
   9507     bcm_field_group_config_extension_t *group_config);
   9508 
   9509 #endif /* BCM_HIDE_DISPATCHABLE */
   9510 
   9511 /* Initialize the Field Group Config structure. */
   9512 extern void bcm_field_group_config_t_init(
   9513     bcm_field_group_config_t *group_config);
   9514 
   9515 /* Initialize Field Group Config Extension structure. */
   9516 extern void bcm_field_group_config_extension_t_init(
   9517     bcm_field_group_config_extension_t *group_config);
   9518 
   9519 /* FP group traverse callback function */
   9520 typedef int (*bcm_field_group_traverse_cb)(
   9521     int unit, 
   9522     bcm_field_group_t group, 
   9523     void *user_data);
   9524 
   9525 #ifndef BCM_HIDE_DISPATCHABLE
   9526 
   9527 /* 
   9528  * Traverse all the fp groups on the device, calling a specified callback
   9529  * for each valid group.
   9530  */
   9531 extern int bcm_field_group_traverse(
   9532     int unit, 
   9533     bcm_field_group_traverse_cb callback, 
   9534     void *user_data);
   9535 
   9536 /* 
   9537  * Destroys field entries in the given group (both software object and
   9538  * the actual hardware entry) before destroying the field group. Field
   9539  * group sw object is also destroyed as well.
   9540  */
   9541 extern int bcm_field_group_flush(
   9542     int unit, 
   9543     bcm_field_group_t group);
   9544 
   9545 /* Change or retrieve the qualifiers for a field group. */
   9546 extern int bcm_field_group_set(
   9547     int unit, 
   9548     bcm_field_group_t group, 
   9549     bcm_field_qset_t qset);
   9550 
   9551 /* Change or retrieve the qualifiers for a field group. */
   9552 extern int bcm_field_group_get(
   9553     int unit, 
   9554     bcm_field_group_t group, 
   9555     bcm_field_qset_t *qset);
   9556 
   9557 /* Change or retrieve the actions for a field group. */
   9558 extern int bcm_field_group_action_set(
   9559     int unit, 
   9560     bcm_field_group_t group, 
   9561     bcm_field_aset_t aset);
   9562 
   9563 /* Change or retrieve the actions for a field group. */
   9564 extern int bcm_field_group_action_get(
   9565     int unit, 
   9566     bcm_field_group_t group, 
   9567     bcm_field_aset_t *aset);
   9568 
   9569 /* Deallocates a field group. */
   9570 extern int bcm_field_group_destroy(
   9571     int unit, 
   9572     bcm_field_group_t group);
   9573 
   9574 /* Compress field group entries. */
   9575 extern int bcm_field_group_compress(
   9576     int unit, 
   9577     bcm_field_group_t group);
   9578 
   9579 /* Set or Clear provided entry as default for group. */
   9580 extern int bcm_field_group_default_entry_set(
   9581     int unit, 
   9582     bcm_field_group_t group, 
   9583     bcm_field_entry_t entry, 
   9584     int enable);
   9585 
   9586 /* Get default entry id associated to a group. */
   9587 extern int bcm_field_group_default_entry_get(
   9588     int unit, 
   9589     bcm_field_group_t group, 
   9590     bcm_field_entry_t *entry);
   9591 
   9592 /* Assign relative priority to a group. */
   9593 extern int bcm_field_group_priority_set(
   9594     int unit, 
   9595     bcm_field_group_t group, 
   9596     int priority);
   9597 
   9598 /* Extract priority for a group. */
   9599 extern int bcm_field_group_priority_get(
   9600     int unit, 
   9601     bcm_field_group_t group, 
   9602     int *priority);
   9603 
   9604 /* Retrieve status of a specified field group */
   9605 extern int bcm_field_group_status_get(
   9606     int unit, 
   9607     bcm_field_group_t group, 
   9608     bcm_field_group_status_t *status);
   9609 
   9610 /* Get or set the group enable state. */
   9611 extern int bcm_field_group_enable_set(
   9612     int unit, 
   9613     bcm_field_group_t group, 
   9614     int enable);
   9615 
   9616 /* Get or set the group enable state. */
   9617 extern int bcm_field_group_enable_get(
   9618     int unit, 
   9619     bcm_field_group_t group, 
   9620     int *enable);
   9621 
   9622 /* Allocate a range checker with specified configuration */
   9623 extern int bcm_field_range_create(
   9624     int unit, 
   9625     bcm_field_range_t *range, 
   9626     uint32 flags, 
   9627     bcm_l4_port_t min, 
   9628     bcm_l4_port_t max);
   9629 
   9630 /* Install all entries of a field group into the hardware tables. */
   9631 extern int bcm_field_group_install(
   9632     int unit, 
   9633     bcm_field_group_t group);
   9634 
   9635 /* Remove all entries of a field group from the hardware table. */
   9636 extern int bcm_field_group_remove(
   9637     int unit, 
   9638     bcm_field_group_t group);
   9639 
   9640 /* Allocate a range checker with specified configuration */
   9641 extern int bcm_field_range_create_id(
   9642     int unit, 
   9643     bcm_field_range_t range, 
   9644     uint32 flags, 
   9645     bcm_l4_port_t min, 
   9646     bcm_l4_port_t max);
   9647 
   9648 /* 
   9649  * Allocate a range checker with specified configuration associated
   9650  * with an interface group
   9651  */
   9652 extern int bcm_field_range_group_create(
   9653     int unit, 
   9654     bcm_field_range_t *range, 
   9655     uint32 flags, 
   9656     bcm_l4_port_t min, 
   9657     bcm_l4_port_t max, 
   9658     bcm_if_group_t group);
   9659 
   9660 /* 
   9661  * Allocate a range checker with specified configuration associated
   9662  * with an interface group
   9663  */
   9664 extern int bcm_field_range_group_create_id(
   9665     int unit, 
   9666     bcm_field_range_t range, 
   9667     uint32 flags, 
   9668     bcm_l4_port_t min, 
   9669     bcm_l4_port_t max, 
   9670     bcm_if_group_t group);
   9671 
   9672 /* Retrieve parameters associated with an existing range checker */
   9673 extern int bcm_field_range_get(
   9674     int unit, 
   9675     bcm_field_range_t range, 
   9676     uint32 *flags, 
   9677     bcm_l4_port_t *min, 
   9678     bcm_l4_port_t *max);
   9679 
   9680 /* Destroy a virtual range checker */
   9681 extern int bcm_field_range_destroy(
   9682     int unit, 
   9683     bcm_field_range_t range);
   9684 
   9685 #endif /* BCM_HIDE_DISPATCHABLE */
   9686 
   9687 /* Initialize the bcm_field_data_qualifier_s structure. */
   9688 extern void bcm_field_data_qualifier_t_init(
   9689     bcm_field_data_qualifier_t *data_qual);
   9690 
   9691 /* Initialize the bcm_field_data_ethertype_s structure. */
   9692 extern void bcm_field_data_ethertype_t_init(
   9693     bcm_field_data_ethertype_t *etype);
   9694 
   9695 /* Initialize the bcm_field_data_ip_protocol_s structure. */
   9696 extern void bcm_field_data_ip_protocol_t_init(
   9697     bcm_field_data_ip_protocol_t *ip_protocol);
   9698 
   9699 /* Initialize the bcm_field_data_packet_format_s structure. */
   9700 extern void bcm_field_data_packet_format_t_init(
   9701     bcm_field_data_packet_format_t *packet_format);
   9702 
   9703 /* Initialize a bcm_field_class_info_t. */
   9704 extern void bcm_field_class_info_t_init(
   9705     bcm_field_class_info_t *class_info);
   9706 
   9707 #ifndef BCM_HIDE_DISPATCHABLE
   9708 
   9709 /* Create a data/offset-based qualifier. */
   9710 extern int bcm_field_data_qualifier_create(
   9711     int unit, 
   9712     bcm_field_data_qualifier_t *data_qualifier);
   9713 
   9714 /* Return an array of IDs of defined data qualifiers. */
   9715 extern int bcm_field_data_qualifier_multi_get(
   9716     int unit, 
   9717     int qual_size, 
   9718     int *qual_array, 
   9719     int *qual_count);
   9720 
   9721 /* Return the configuration of the given data qualifier. */
   9722 extern int bcm_field_data_qualifier_get(
   9723     int unit, 
   9724     int qual_id, 
   9725     bcm_field_data_qualifier_t *qual);
   9726 
   9727 /* Destroy a data/offset-based qualifier. */
   9728 extern int bcm_field_data_qualifier_destroy(
   9729     int unit, 
   9730     int qual_id);
   9731 
   9732 /* Destroy all data/offset-based qualifiers. */
   9733 extern int bcm_field_data_qualifier_destroy_all(
   9734     int unit);
   9735 
   9736 /* Add EtherType-based offset to data qualifier object. */
   9737 extern int bcm_field_data_qualifier_ethertype_add(
   9738     int unit, 
   9739     int qual_id, 
   9740     bcm_field_data_ethertype_t *etype);
   9741 
   9742 /* Remove EtherType-based offset from  data qualifier object. */
   9743 extern int bcm_field_data_qualifier_ethertype_delete(
   9744     int unit, 
   9745     int qual_id, 
   9746     bcm_field_data_ethertype_t *etype);
   9747 
   9748 /* Add IP protocol-based offset to data qualifier object. */
   9749 extern int bcm_field_data_qualifier_ip_protocol_add(
   9750     int unit, 
   9751     int qual_id, 
   9752     bcm_field_data_ip_protocol_t *ip_protocol);
   9753 
   9754 /* Remove IP protocol based offset from data qualifier object. */
   9755 extern int bcm_field_data_qualifier_ip_protocol_delete(
   9756     int unit, 
   9757     int qual_id, 
   9758     bcm_field_data_ip_protocol_t *ip_protocol);
   9759 
   9760 /* Add packet format-based offset to data qualifier object. */
   9761 extern int bcm_field_data_qualifier_packet_format_add(
   9762     int unit, 
   9763     int qual_id, 
   9764     bcm_field_data_packet_format_t *packet_format);
   9765 
   9766 /* Delete packet format-based offset from data qualifier object. */
   9767 extern int bcm_field_data_qualifier_packet_format_delete(
   9768     int unit, 
   9769     int qual_id, 
   9770     bcm_field_data_packet_format_t *packet_format);
   9771 
   9772 /* 
   9773  * Add data/offset qualifier to a group qualifiers set.
   9774  * Use \ref bcm_field_qset_data_qualifier_add API to add data
   9775  * qualifiers to the qset.
   9776  */
   9777 extern int bcm_field_qset_data_qualifier_add(
   9778     int unit, 
   9779     bcm_field_qset_t *qset, 
   9780     int qual_id);
   9781 
   9782 /* 
   9783  * Delete a data/offset qualifier from a group qualifiers set.
   9784  * Use \ref bcm_field_qset_data_qualifier_delete API to delete data
   9785  * qualifiers from the qset.
   9786  */
   9787 extern int bcm_field_qset_data_qualifier_delete(
   9788     int unit, 
   9789     bcm_field_qset_t *qset, 
   9790     int qual_id);
   9791 
   9792 /* Get field data qualifiers included in a group qset. */
   9793 extern int bcm_field_qset_data_qualifier_get(
   9794     int unit, 
   9795     bcm_field_qset_t qset, 
   9796     int qual_max, 
   9797     int *qual_arr, 
   9798     int *qual_count);
   9799 
   9800 /* Create a blank field entry */
   9801 extern int bcm_field_entry_create(
   9802     int unit, 
   9803     bcm_field_group_t group, 
   9804     bcm_field_entry_t *entry);
   9805 
   9806 #endif /* BCM_HIDE_DISPATCHABLE */
   9807 
   9808 #define BCM_FIELD_DATA_QUALIFIER_SHIFT  14         
   9809 
   9810 #define BCM_FIELD_DATA_QUALIFIER_SET(data_qual_id, qual_id)  (qual_id = (1 << BCM_FIELD_DATA_QUALIFIER_SHIFT) | data_qual_id) 
   9811 
   9812 #ifndef BCM_HIDE_DISPATCHABLE
   9813 
   9814 /* Create a blank field entry */
   9815 extern int bcm_field_entry_create_id(
   9816     int unit, 
   9817     bcm_field_group_t group, 
   9818     bcm_field_entry_t entry);
   9819 
   9820 #endif /* BCM_HIDE_DISPATCHABLE */
   9821 
   9822 /* Initialize the Field Entry Config structure. */
   9823 extern void bcm_field_entry_config_t_init(
   9824     bcm_field_entry_config_t *entry_config);
   9825 
   9826 #ifndef BCM_HIDE_DISPATCHABLE
   9827 
   9828 /* Create a field entry based on specified configuration */
   9829 extern int bcm_field_entry_config_create(
   9830     int unit, 
   9831     bcm_field_entry_config_t *entry_config);
   9832 
   9833 /* Retrieve the information of an entry. */
   9834 extern int bcm_field_entry_config_get(
   9835     int unit, 
   9836     bcm_field_entry_config_t *entry_config);
   9837 
   9838 /* Get an array of entry IDs in use in a group */
   9839 extern int bcm_field_entry_multi_get(
   9840     int unit, 
   9841     bcm_field_group_t group, 
   9842     int entry_size, 
   9843     bcm_field_entry_t *entry_array, 
   9844     int *entry_count);
   9845 
   9846 /* Destroy a field entry */
   9847 extern int bcm_field_entry_destroy(
   9848     int unit, 
   9849     bcm_field_entry_t entry);
   9850 
   9851 /* Destroy all field entries */
   9852 extern int bcm_field_entry_destroy_all(
   9853     int unit);
   9854 
   9855 /* 
   9856  * Create a copy of an existing field entry and
   9857  * control the entry copy using flags.
   9858  */
   9859 extern int bcm_field_entry_config_copy(
   9860     int unit, 
   9861     bcm_field_entry_t src_entry, 
   9862     bcm_field_entry_t *dst_entry, 
   9863     uint32 flags);
   9864 
   9865 /* Create a copy of an existing field entry */
   9866 extern int bcm_field_entry_copy(
   9867     int unit, 
   9868     bcm_field_entry_t src_entry, 
   9869     bcm_field_entry_t *dst_entry);
   9870 
   9871 /* Create a copy of an existing field entry */
   9872 extern int bcm_field_entry_copy_id(
   9873     int unit, 
   9874     bcm_field_entry_t src_entry, 
   9875     bcm_field_entry_t dst_entry);
   9876 
   9877 /* Install a field entry into the hardware tables */
   9878 extern int bcm_field_entry_install(
   9879     int unit, 
   9880     bcm_field_entry_t entry);
   9881 
   9882 #endif /* BCM_HIDE_DISPATCHABLE */
   9883 
   9884 #define BCM_FIELD_LARGE_DIRECT_ENTRY_ID_PACK(_entry_id, _group_id, _index)  \
   9885         _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_PACK(_entry_id, _group_id, _index)
   9886  
   9887 
   9888 #define BCM_FIELD_LARGE_DIRECT_ENTRY_ID_UNPACK(_entry_id, _group_id, _index)  \
   9889         _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_UNPACK(_entry_id, _group_id, _index)
   9890  
   9891 
   9892 #ifndef BCM_HIDE_DISPATCHABLE
   9893 
   9894 /* Install a field entry into large direct lookup hardware tables */
   9895 extern int bcm_field_entry_install_and_handler_update(
   9896     int unit, 
   9897     bcm_field_entry_t entry, 
   9898     bcm_field_entry_t *large_dt_entry);
   9899 
   9900 /* Re-install a field entry into the hardware tables */
   9901 extern int bcm_field_entry_reinstall(
   9902     int unit, 
   9903     bcm_field_entry_t entry);
   9904 
   9905 /* Remove a field entry from the hardware tables */
   9906 extern int bcm_field_entry_remove(
   9907     int unit, 
   9908     bcm_field_entry_t entry);
   9909 
   9910 /* Enable/Disable an entry from the hardware table. */
   9911 extern int bcm_field_entry_enable_set(
   9912     int unit, 
   9913     bcm_field_entry_t entry, 
   9914     int enable_flag);
   9915 
   9916 /* Get the Enable or Disable status of a field Entry. */
   9917 extern int bcm_field_entry_enable_get(
   9918     int unit, 
   9919     bcm_field_entry_t entry, 
   9920     int *enable_flag);
   9921 
   9922 /* Attach a policer to a field entry. */
   9923 extern int bcm_field_entry_policer_attach(
   9924     int unit, 
   9925     bcm_field_entry_t entry_id, 
   9926     int level, 
   9927     bcm_policer_t policer_id);
   9928 
   9929 /* 
   9930  * Detach a policer from a field entry. When the API is called, the
   9931  * policer is
   9932  * marked as detached but it is not completely detached from the entry.
   9933  * This is
   9934  * because, the policer and meter entries are updated in the hardware
   9935  * during
   9936  * entry re-install. So, this API should always be followed by entry
   9937  * remove or
   9938  * entry re-install to completely detach the policer from the entry.
   9939  */
   9940 extern int bcm_field_entry_policer_detach(
   9941     int unit, 
   9942     bcm_field_entry_t entry_id, 
   9943     int level);
   9944 
   9945 /* Detach all policers from a field entry. */
   9946 extern int bcm_field_entry_policer_detach_all(
   9947     int unit, 
   9948     bcm_field_entry_t entry_id);
   9949 
   9950 /* Get the policer(s) attached to a field entry. */
   9951 extern int bcm_field_entry_policer_get(
   9952     int unit, 
   9953     bcm_field_entry_t entry_id, 
   9954     int level, 
   9955     bcm_policer_t *policer_id);
   9956 
   9957 /* Get/Set the priority for an entry within a group. */
   9958 extern int bcm_field_entry_prio_get(
   9959     int unit, 
   9960     bcm_field_entry_t entry, 
   9961     int *prio);
   9962 
   9963 /* Get/Set the priority for an entry within a group. */
   9964 extern int bcm_field_entry_prio_set(
   9965     int unit, 
   9966     bcm_field_entry_t entry, 
   9967     int prio);
   9968 
   9969 /* Invalidate HW FP entries that have not been replayed after warm boot. */
   9970 extern int bcm_field_resync(
   9971     int unit);
   9972 
   9973 /* Add qualifier objects to field group qset. */
   9974 extern int bcm_field_qset_id_multi_set(
   9975     int unit, 
   9976     bcm_field_qualify_t qualifier, 
   9977     int num_objects, 
   9978     int *object_list, 
   9979     bcm_field_qset_t *qset);
   9980 
   9981 /* Delete qualifier objects to field group qset. */
   9982 extern int bcm_field_qset_id_multi_delete(
   9983     int unit, 
   9984     bcm_field_qualify_t qualifier, 
   9985     int num_objects, 
   9986     int *object_list, 
   9987     bcm_field_qset_t *qset);
   9988 
   9989 /* Get qualifier objects added to the field group qset. */
   9990 extern int bcm_field_qset_id_multi_get(
   9991     int unit, 
   9992     bcm_field_qset_t qset, 
   9993     bcm_field_qualify_t qualifier, 
   9994     int max_objects, 
   9995     int *object_list, 
   9996     int *count_objects);
   9997 
   9998 #endif /* BCM_HIDE_DISPATCHABLE */
   9999 
  10000 #define BCM_FIELD_ENTRY_LARGE_DIRECT_LOOKUP 0x10000000 /* OR with ID when
  10001                                                           calling
  10002                                                           bcm_field_entry_*
  10003                                                           functions to indicate
  10004                                                           large direct lookup
  10005                                                           advanced application */
  10006 
  10007 #define BCM_FIELD_ENTRY_KEEP_LOCATION   0x20000000 /* OR with ID when calling
  10008                                                       bcm_field_entry_remove
  10009                                                       functions to indicate TCAM
  10010                                                       location of entry is kept
  10011                                                       for
  10012                                                       bcm_field_entry_install
  10013                                                       function */
  10014 
  10015 #define BCM_FIELD_SEL_NOT_IN_TABLE  0xfff0     
  10016 
  10017 #define BCM_FIELD_QUALIFY_PRESEL    0x40000000 /* OR with ID when calling
  10018                                                   bcm_field_qualify_* functions
  10019                                                   to indicate ID is a
  10020                                                   preselector instead of an
  10021                                                   entry */
  10022 
  10023 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_INGRESS 0x80001000 /* OR with ID when
  10024                                                           calling
  10025                                                           bcm_field_qualify_*
  10026                                                           functions to indicate
  10027                                                           ID is a preselector in
  10028                                                           ingress stage instead
  10029                                                           of an entry */
  10030 
  10031 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_EGRESS 0x80002000 /* OR with ID when
  10032                                                           calling
  10033                                                           bcm_field_qualify_*
  10034                                                           functions to indicate
  10035                                                           ID is a preselector in
  10036                                                           egress stage instead
  10037                                                           of an entry */
  10038 
  10039 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_HASH 0x80004000 /* OR with ID when
  10040                                                           calling
  10041                                                           bcm_field_qualify_*
  10042                                                           functions to indicate
  10043                                                           ID is a preselector in
  10044                                                           hashing stage instead
  10045                                                           of an entry */
  10046 
  10047 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_EXTERNAL 0x80008000 /* OR with ID when
  10048                                                           calling
  10049                                                           bcm_field_qualify_*
  10050                                                           functions to indicate
  10051                                                           ID is a preselector in
  10052                                                           external stage */
  10053 
  10054 #define BCM_FIELD_QUALIFY_PRESEL_STAGGERED  0x41000000 /* OR with ID when
  10055                                                           calling
  10056                                                           bcm_field_qualify_*
  10057                                                           functions to indicate
  10058                                                           ID is a preselector in
  10059                                                           staggered mode */
  10060 
  10061 #define BCM_FIELD_PRESEL_STAGGERED  512        /* flag to indicate the prsele-id
  10062                                                   is staggered and should be
  10063                                                   configured in the second pass
  10064                                                   program selection table */
  10065 
  10066 #ifndef BCM_HIDE_DISPATCHABLE
  10067 
  10068 /* Remove all qualifications from a field entry */
  10069 extern int bcm_field_qualify_clear(
  10070     int unit, 
  10071     bcm_field_entry_t entry);
  10072 
  10073 /* Add data field that the packet must match to trigger qualifier */
  10074 extern int bcm_field_qualify_data(
  10075     int unit, 
  10076     bcm_field_entry_t eid, 
  10077     int qual_id, 
  10078     uint8 *data, 
  10079     uint8 *mask, 
  10080     uint16 length);
  10081 
  10082 /* Add UDF data that the packet must match to trigger qualifier. */
  10083 extern int bcm_field_qualify_udf(
  10084     int unit, 
  10085     bcm_field_entry_t eid, 
  10086     bcm_udf_id_t udf_id, 
  10087     int length, 
  10088     uint8 *data, 
  10089     uint8 *mask);
  10090 
  10091 /* Get UDF data that the packet configured to match on. */
  10092 extern int bcm_field_qualify_udf_get(
  10093     int unit, 
  10094     bcm_field_entry_t eid, 
  10095     bcm_udf_id_t udf_id, 
  10096     int max_length, 
  10097     uint8 *data, 
  10098     uint8 *mask, 
  10099     int *actual_length);
  10100 
  10101 /* Remove match criteria from field entry. */
  10102 extern int bcm_field_qualifier_delete(
  10103     int unit, 
  10104     bcm_field_entry_t entry, 
  10105     bcm_field_qualify_t qual_id);
  10106 
  10107 /* bcm_field_qualify_InPort */
  10108 extern int bcm_field_qualify_InPort(
  10109     int unit, 
  10110     bcm_field_entry_t entry, 
  10111     bcm_port_t data, 
  10112     bcm_port_t mask);
  10113 
  10114 /* bcm_field_qualify_OutPort */
  10115 extern int bcm_field_qualify_OutPort(
  10116     int unit, 
  10117     bcm_field_entry_t entry, 
  10118     bcm_port_t data, 
  10119     bcm_port_t mask);
  10120 
  10121 /* bcm_field_qualify_InPorts */
  10122 extern int bcm_field_qualify_InPorts(
  10123     int unit, 
  10124     bcm_field_entry_t entry, 
  10125     bcm_pbmp_t data, 
  10126     bcm_pbmp_t mask);
  10127 
  10128 /* bcm_field_qualify_OutPorts */
  10129 extern int bcm_field_qualify_OutPorts(
  10130     int unit, 
  10131     bcm_field_entry_t entry, 
  10132     bcm_pbmp_t data, 
  10133     bcm_pbmp_t mask);
  10134 
  10135 /* bcm_field_qualify_Drop */
  10136 extern int bcm_field_qualify_Drop(
  10137     int unit, 
  10138     bcm_field_entry_t entry, 
  10139     uint8 data, 
  10140     uint8 mask);
  10141 
  10142 /* bcm_field_qualify_SrcPort */
  10143 extern int bcm_field_qualify_SrcPort(
  10144     int unit, 
  10145     bcm_field_entry_t entry, 
  10146     bcm_module_t data_modid, 
  10147     bcm_module_t mask_modid, 
  10148     bcm_port_t data_port, 
  10149     bcm_port_t mask_port);
  10150 
  10151 /* bcm_field_qualify_SrcTrunk */
  10152 extern int bcm_field_qualify_SrcTrunk(
  10153     int unit, 
  10154     bcm_field_entry_t entry, 
  10155     bcm_trunk_t data, 
  10156     bcm_trunk_t mask);
  10157 
  10158 /* 
  10159  * Set match criteria for bcmFieldQualifySrcTrunkMemberGport
  10160  *                qualifier in the field entry.
  10161  */
  10162 extern int bcm_field_qualify_SrcTrunkMemberGport(
  10163     int unit, 
  10164     bcm_field_entry_t entry, 
  10165     bcm_gport_t data);
  10166 
  10167 /* bcm_field_qualify_SrcTMPort */
  10168 extern int bcm_field_qualify_SrcTMPort(
  10169     int unit, 
  10170     bcm_field_entry_t entry, 
  10171     bcm_port_t data_port, 
  10172     bcm_port_t mask_port);
  10173 
  10174 /* bcm_field_qualify_DstPort */
  10175 extern int bcm_field_qualify_DstPort(
  10176     int unit, 
  10177     bcm_field_entry_t entry, 
  10178     bcm_module_t data_modid, 
  10179     bcm_module_t mask_modid, 
  10180     bcm_port_t data_port, 
  10181     bcm_port_t mask_port);
  10182 
  10183 /* bcm_field_qualify_DstTrunk */
  10184 extern int bcm_field_qualify_DstTrunk(
  10185     int unit, 
  10186     bcm_field_entry_t entry, 
  10187     bcm_trunk_t data, 
  10188     bcm_trunk_t mask);
  10189 
  10190 /* bcm_field_qualify_InnerL4SrcPort */
  10191 extern int bcm_field_qualify_InnerL4SrcPort(
  10192     int unit, 
  10193     bcm_field_entry_t entry, 
  10194     bcm_l4_port_t data, 
  10195     bcm_l4_port_t mask);
  10196 
  10197 /* bcm_field_qualify_InnerL4DstPort */
  10198 extern int bcm_field_qualify_InnerL4DstPort(
  10199     int unit, 
  10200     bcm_field_entry_t entry, 
  10201     bcm_l4_port_t data, 
  10202     bcm_l4_port_t mask);
  10203 
  10204 /* bcm_field_qualify_L4SrcPort */
  10205 extern int bcm_field_qualify_L4SrcPort(
  10206     int unit, 
  10207     bcm_field_entry_t entry, 
  10208     bcm_l4_port_t data, 
  10209     bcm_l4_port_t mask);
  10210 
  10211 /* bcm_field_qualify_L4DstPort */
  10212 extern int bcm_field_qualify_L4DstPort(
  10213     int unit, 
  10214     bcm_field_entry_t entry, 
  10215     bcm_l4_port_t data, 
  10216     bcm_l4_port_t mask);
  10217 
  10218 /* bcm_field_qualify_OuterVlan */
  10219 extern int bcm_field_qualify_OuterVlan(
  10220     int unit, 
  10221     bcm_field_entry_t entry, 
  10222     bcm_vlan_t data, 
  10223     bcm_vlan_t mask);
  10224 
  10225 /* 
  10226  *  Set match criteria for bcmFieldQualifyOuterVlanId
  10227  *                  qualifier in the field entry.
  10228  */
  10229 extern int bcm_field_qualify_OuterVlanId(
  10230     int unit, 
  10231     bcm_field_entry_t entry, 
  10232     bcm_vlan_t data, 
  10233     bcm_vlan_t mask);
  10234 
  10235 /* 
  10236  *  Set match criteria for bcmFieldQualifyOuterVlanPri
  10237  *                  qualifier in the field entry.
  10238  */
  10239 extern int bcm_field_qualify_OuterVlanPri(
  10240     int unit, 
  10241     bcm_field_entry_t entry, 
  10242     uint8 data, 
  10243     uint8 mask);
  10244 
  10245 /* 
  10246  *  Set match criteria for bcmFieldQualifyOuterVlanCfi
  10247  *                  qualifier in the field entry.
  10248  */
  10249 extern int bcm_field_qualify_OuterVlanCfi(
  10250     int unit, 
  10251     bcm_field_entry_t entry, 
  10252     uint8 data, 
  10253     uint8 mask);
  10254 
  10255 /* 
  10256  *  Set match criteria for bcmFieldQualifyOuterVlanPriCfi
  10257  *                  qualifier in the field entry.
  10258  */
  10259 extern int bcm_field_qualify_OuterVlanPriCfi(
  10260     int unit, 
  10261     bcm_field_entry_t entry, 
  10262     uint8 data, 
  10263     uint8 mask);
  10264 
  10265 /* bcm_field_qualify_InnerVlan */
  10266 extern int bcm_field_qualify_InnerVlan(
  10267     int unit, 
  10268     bcm_field_entry_t entry, 
  10269     bcm_vlan_t data, 
  10270     bcm_vlan_t mask);
  10271 
  10272 /* 
  10273  *  Set match criteria for bcmFieldQualifyInnerVlanId
  10274  *                  qualifier in the field entry.
  10275  */
  10276 extern int bcm_field_qualify_InnerVlanId(
  10277     int unit, 
  10278     bcm_field_entry_t entry, 
  10279     bcm_vlan_t data, 
  10280     bcm_vlan_t mask);
  10281 
  10282 /* 
  10283  *  Set match criteria for bcmFieldQualifyInnerVlanPri
  10284  *                  qualifier in the field entry.
  10285  */
  10286 extern int bcm_field_qualify_InnerVlanPri(
  10287     int unit, 
  10288     bcm_field_entry_t entry, 
  10289     uint8 data, 
  10290     uint8 mask);
  10291 
  10292 /* 
  10293  *  Set match criteria for bcmFieldQualifyInnerVlanCfi
  10294  *                  qualifier in the field entry.
  10295  */
  10296 extern int bcm_field_qualify_InnerVlanCfi(
  10297     int unit, 
  10298     bcm_field_entry_t entry, 
  10299     uint8 data, 
  10300     uint8 mask);
  10301 
  10302 /* bcm_field_qualify_EtherType */
  10303 extern int bcm_field_qualify_EtherType(
  10304     int unit, 
  10305     bcm_field_entry_t entry, 
  10306     uint16 data, 
  10307     uint16 mask);
  10308 
  10309 /* Add loopback field qualification to a field entry. */
  10310 extern int bcm_field_qualify_Loopback(
  10311     int unit, 
  10312     bcm_field_entry_t entry, 
  10313     uint8 data, 
  10314     uint8 mask);
  10315 
  10316 /* Add loopback type field qualification to a field entry. */
  10317 extern int bcm_field_qualify_LoopbackType(
  10318     int unit, 
  10319     bcm_field_entry_t entry, 
  10320     bcm_field_LoopbackType_t loopback_type);
  10321 
  10322 /* Add tunnel type field qualification to a field entry. */
  10323 extern int bcm_field_qualify_TunnelType(
  10324     int unit, 
  10325     bcm_field_entry_t entry, 
  10326     bcm_field_TunnelType_t tunnel_type);
  10327 
  10328 /* bcm_field_qualify_DstL3Egress */
  10329 extern int bcm_field_qualify_DstL3Egress(
  10330     int unit, 
  10331     bcm_field_entry_t entry, 
  10332     bcm_if_t if_id);
  10333 
  10334 /* bcm_field_qualify_DstMulticastGroup */
  10335 extern int bcm_field_qualify_DstMulticastGroup(
  10336     int unit, 
  10337     bcm_field_entry_t entry, 
  10338     bcm_multicast_t group);
  10339 
  10340 /* bcm_field_qualify_SrcMplsGport */
  10341 extern int bcm_field_qualify_SrcMplsGport(
  10342     int unit, 
  10343     bcm_field_entry_t entry, 
  10344     bcm_gport_t mpls_port_id);
  10345 
  10346 /* bcm_field_qualify_DstMplsGport */
  10347 extern int bcm_field_qualify_DstMplsGport(
  10348     int unit, 
  10349     bcm_field_entry_t entry, 
  10350     bcm_gport_t mpls_port_id);
  10351 
  10352 /* bcm_field_qualify_SrcMimGport */
  10353 extern int bcm_field_qualify_SrcMimGport(
  10354     int unit, 
  10355     bcm_field_entry_t entry, 
  10356     bcm_gport_t mim_port_id);
  10357 
  10358 /* bcm_field_qualify_DstMimGport */
  10359 extern int bcm_field_qualify_DstMimGport(
  10360     int unit, 
  10361     bcm_field_entry_t entry, 
  10362     bcm_gport_t mim_port_id);
  10363 
  10364 /* bcm_field_qualify_SrcWlanGport */
  10365 extern int bcm_field_qualify_SrcWlanGport(
  10366     int unit, 
  10367     bcm_field_entry_t entry, 
  10368     bcm_gport_t wlan_port_id);
  10369 
  10370 /* bcm_field_qualify_DstWlanGport */
  10371 extern int bcm_field_qualify_DstWlanGport(
  10372     int unit, 
  10373     bcm_field_entry_t entry, 
  10374     bcm_gport_t wlan_port_id);
  10375 
  10376 /* bcm_field_qualify_SrcVxlanGport */
  10377 extern int bcm_field_qualify_SrcVxlanGport(
  10378     int unit, 
  10379     bcm_field_entry_t entry, 
  10380     bcm_gport_t vxlan_port_id);
  10381 
  10382 /* bcm_field_qualify_DstVxlanGport */
  10383 extern int bcm_field_qualify_DstVxlanGport(
  10384     int unit, 
  10385     bcm_field_entry_t entry, 
  10386     bcm_gport_t vxlan_port_id);
  10387 
  10388 /* 
  10389  * Set match criteria for bcmFieldQualifyIntPriority
  10390  *                qualifier in the field entry.
  10391  */
  10392 extern int bcm_field_qualify_IntPriority(
  10393     int unit, 
  10394     bcm_field_entry_t entry, 
  10395     uint8 data, 
  10396     uint8 mask);
  10397 
  10398 /* 
  10399  * Set match criteria for bcmFieldQualifyForwardingVlanId
  10400  *                qualifier in the field entry.
  10401  */
  10402 extern int bcm_field_qualify_ForwardingVlanId(
  10403     int unit, 
  10404     bcm_field_entry_t entry, 
  10405     bcm_vlan_t data, 
  10406     bcm_vlan_t mask);
  10407 
  10408 /* 
  10409  * Get match criteria for bcmFieldQualifyForwardingVlanId
  10410  *                qualifier from the field entry.
  10411  */
  10412 extern int bcm_field_qualify_ForwardingVlanId_get(
  10413     int unit, 
  10414     bcm_field_entry_t entry, 
  10415     bcm_vlan_t *data, 
  10416     bcm_vlan_t *mask);
  10417 
  10418 /* Match on VPN. */
  10419 extern int bcm_field_qualify_Vpn(
  10420     int unit, 
  10421     bcm_field_entry_t entry, 
  10422     bcm_vpn_t data, 
  10423     bcm_vpn_t mask);
  10424 
  10425 /* To get qualified inputs on VPN. */
  10426 extern int bcm_field_qualify_Vpn_get(
  10427     int unit, 
  10428     bcm_field_entry_t entry, 
  10429     bcm_vpn_t *data, 
  10430     bcm_vpn_t *mask);
  10431 
  10432 /* 
  10433  * Set match criteria for bcmFieldQualifyColor
  10434  *                qualifier in the field entry.
  10435  */
  10436 extern int bcm_field_qualify_Color(
  10437     int unit, 
  10438     bcm_field_entry_t entry, 
  10439     uint8 color);
  10440 
  10441 /* 
  10442  * Set match criteria for bcmFieldQualifySrcModPortGport
  10443  *                qualifier in the field entry.
  10444  */
  10445 extern int bcm_field_qualify_SrcModPortGport(
  10446     int unit, 
  10447     bcm_field_entry_t entry, 
  10448     bcm_gport_t data);
  10449 
  10450 /* 
  10451  * Set match criteria for bcmFieldQualifySrcModuleGport
  10452  *                qualifier in the field entry.
  10453  */
  10454 extern int bcm_field_qualify_SrcModuleGport(
  10455     int unit, 
  10456     bcm_field_entry_t entry, 
  10457     bcm_gport_t data);
  10458 
  10459 /* bcm_field_qualify_IpProtocol */
  10460 extern int bcm_field_qualify_IpProtocol(
  10461     int unit, 
  10462     bcm_field_entry_t entry, 
  10463     uint8 data, 
  10464     uint8 mask);
  10465 
  10466 /* bcm_field_qualify_IpInfo */
  10467 extern int bcm_field_qualify_IpInfo(
  10468     int unit, 
  10469     bcm_field_entry_t entry, 
  10470     uint32 data, 
  10471     uint32 mask);
  10472 
  10473 /* bcm_field_qualify_PacketRes */
  10474 extern int bcm_field_qualify_PacketRes(
  10475     int unit, 
  10476     bcm_field_entry_t entry, 
  10477     uint32 data, 
  10478     uint32 mask);
  10479 
  10480 /* bcm_field_qualify_SrcIp */
  10481 extern int bcm_field_qualify_SrcIp(
  10482     int unit, 
  10483     bcm_field_entry_t entry, 
  10484     bcm_ip_t data, 
  10485     bcm_ip_t mask);
  10486 
  10487 /* bcm_field_qualify_DstIp */
  10488 extern int bcm_field_qualify_DstIp(
  10489     int unit, 
  10490     bcm_field_entry_t entry, 
  10491     bcm_ip_t data, 
  10492     bcm_ip_t mask);
  10493 
  10494 /* Set match criteria for bcmFieldQualifyKeyGenVar */
  10495 extern int bcm_field_qualify_KeyGenVar(
  10496     int unit, 
  10497     bcm_field_entry_t entry, 
  10498     uint32 data, 
  10499     uint32 mask);
  10500 
  10501 /* bcm_field_qualify_DSCP */
  10502 extern int bcm_field_qualify_DSCP(
  10503     int unit, 
  10504     bcm_field_entry_t entry, 
  10505     uint8 data, 
  10506     uint8 mask);
  10507 
  10508 /* bcm_field_qualify_Tos */
  10509 extern int bcm_field_qualify_Tos(
  10510     int unit, 
  10511     bcm_field_entry_t entry, 
  10512     uint8 data, 
  10513     uint8 mask);
  10514 
  10515 /* bcm_field_qualify_IpFlags */
  10516 extern int bcm_field_qualify_IpFlags(
  10517     int unit, 
  10518     bcm_field_entry_t entry, 
  10519     uint8 data, 
  10520     uint8 mask);
  10521 
  10522 /* bcm_field_qualify_TcpControl */
  10523 extern int bcm_field_qualify_TcpControl(
  10524     int unit, 
  10525     bcm_field_entry_t entry, 
  10526     uint8 data, 
  10527     uint8 mask);
  10528 
  10529 /* bcm_field_qualify_TcpSequenceZero */
  10530 extern int bcm_field_qualify_TcpSequenceZero(
  10531     int unit, 
  10532     bcm_field_entry_t entry, 
  10533     uint32 flag);
  10534 
  10535 /* bcm_field_qualify_TcpHeaderSize */
  10536 extern int bcm_field_qualify_TcpHeaderSize(
  10537     int unit, 
  10538     bcm_field_entry_t entry, 
  10539     uint8 data, 
  10540     uint8 mask);
  10541 
  10542 /* bcm_field_qualify_Ttl */
  10543 extern int bcm_field_qualify_Ttl(
  10544     int unit, 
  10545     bcm_field_entry_t entry, 
  10546     uint8 data, 
  10547     uint8 mask);
  10548 
  10549 /* bcm_field_qualify_RangeCheck */
  10550 extern int bcm_field_qualify_RangeCheck(
  10551     int unit, 
  10552     bcm_field_entry_t entry, 
  10553     bcm_field_range_t range, 
  10554     int invert);
  10555 
  10556 /* bcm_field_qualify_SrcIp6 */
  10557 extern int bcm_field_qualify_SrcIp6(
  10558     int unit, 
  10559     bcm_field_entry_t entry, 
  10560     bcm_ip6_t data, 
  10561     bcm_ip6_t mask);
  10562 
  10563 /* bcm_field_qualify_DstIp6 */
  10564 extern int bcm_field_qualify_DstIp6(
  10565     int unit, 
  10566     bcm_field_entry_t entry, 
  10567     bcm_ip6_t data, 
  10568     bcm_ip6_t mask);
  10569 
  10570 /* bcm_field_qualify_SrcIp6High */
  10571 extern int bcm_field_qualify_SrcIp6High(
  10572     int unit, 
  10573     bcm_field_entry_t entry, 
  10574     bcm_ip6_t data, 
  10575     bcm_ip6_t mask);
  10576 
  10577 /* bcm_field_qualify_DstIp6High */
  10578 extern int bcm_field_qualify_DstIp6High(
  10579     int unit, 
  10580     bcm_field_entry_t entry, 
  10581     bcm_ip6_t data, 
  10582     bcm_ip6_t mask);
  10583 
  10584 /* bcm_field_qualify_DstIp6Low */
  10585 extern int bcm_field_qualify_DstIp6Low(
  10586     int unit, 
  10587     bcm_field_entry_t entry, 
  10588     bcm_ip6_t data, 
  10589     bcm_ip6_t mask);
  10590 
  10591 /* bcm_field_qualify_SrcIp6Low */
  10592 extern int bcm_field_qualify_SrcIp6Low(
  10593     int unit, 
  10594     bcm_field_entry_t entry, 
  10595     bcm_ip6_t data, 
  10596     bcm_ip6_t mask);
  10597 
  10598 /* bcm_field_qualify_Ip6NextHeader */
  10599 extern int bcm_field_qualify_Ip6NextHeader(
  10600     int unit, 
  10601     bcm_field_entry_t entry, 
  10602     uint8 data, 
  10603     uint8 mask);
  10604 
  10605 /* bcm_field_qualify_Ip6TrafficClass */
  10606 extern int bcm_field_qualify_Ip6TrafficClass(
  10607     int unit, 
  10608     bcm_field_entry_t entry, 
  10609     uint8 data, 
  10610     uint8 mask);
  10611 
  10612 /* bcm_field_qualify_InnerIp6FlowLabel */
  10613 extern int bcm_field_qualify_InnerIp6FlowLabel(
  10614     int unit, 
  10615     bcm_field_entry_t entry, 
  10616     uint32 data, 
  10617     uint32 mask);
  10618 
  10619 /* bcm_field_qualify_Ip6FlowLabel */
  10620 extern int bcm_field_qualify_Ip6FlowLabel(
  10621     int unit, 
  10622     bcm_field_entry_t entry, 
  10623     uint32 data, 
  10624     uint32 mask);
  10625 
  10626 /* bcm_field_qualify_Ip6HopLimit */
  10627 extern int bcm_field_qualify_Ip6HopLimit(
  10628     int unit, 
  10629     bcm_field_entry_t entry, 
  10630     uint8 data, 
  10631     uint8 mask);
  10632 
  10633 /* bcm_field_qualify_SrcMac */
  10634 extern int bcm_field_qualify_SrcMac(
  10635     int unit, 
  10636     bcm_field_entry_t entry, 
  10637     bcm_mac_t data, 
  10638     bcm_mac_t mask);
  10639 
  10640 /* bcm_field_qualify_DstMac */
  10641 extern int bcm_field_qualify_DstMac(
  10642     int unit, 
  10643     bcm_field_entry_t entry, 
  10644     bcm_mac_t data, 
  10645     bcm_mac_t mask);
  10646 
  10647 /* bcm_field_qualify_InnerIpType */
  10648 extern int bcm_field_qualify_InnerIpType(
  10649     int unit, 
  10650     bcm_field_entry_t entry, 
  10651     bcm_field_IpType_t type);
  10652 
  10653 /* bcm_field_qualify_ForwardingType */
  10654 extern int bcm_field_qualify_ForwardingType(
  10655     int unit, 
  10656     bcm_field_entry_t entry, 
  10657     bcm_field_ForwardingType_t type);
  10658 
  10659 /* bcm_field_qualify_AppType */
  10660 extern int bcm_field_qualify_AppType(
  10661     int unit, 
  10662     bcm_field_entry_t entry, 
  10663     bcm_field_AppType_t type);
  10664 
  10665 /* bcm_field_qualify_IpType */
  10666 extern int bcm_field_qualify_IpType(
  10667     int unit, 
  10668     bcm_field_entry_t entry, 
  10669     bcm_field_IpType_t type);
  10670 
  10671 /* bcm_field_qualify_L2Format */
  10672 extern int bcm_field_qualify_L2Format(
  10673     int unit, 
  10674     bcm_field_entry_t entry, 
  10675     bcm_field_L2Format_t type);
  10676 
  10677 /* bcm_field_qualify_VlanFormat */
  10678 extern int bcm_field_qualify_VlanFormat(
  10679     int unit, 
  10680     bcm_field_entry_t entry, 
  10681     uint8 data, 
  10682     uint8 mask);
  10683 
  10684 /* bcm_field_qualify_MHOpcode */
  10685 extern int bcm_field_qualify_MHOpcode(
  10686     int unit, 
  10687     bcm_field_entry_t entry, 
  10688     uint8 data, 
  10689     uint8 mask);
  10690 
  10691 /* bcm_field_qualify_Decap */
  10692 extern int bcm_field_qualify_Decap(
  10693     int unit, 
  10694     bcm_field_entry_t entry, 
  10695     bcm_field_decap_t decap);
  10696 
  10697 /* Qualify on HiGig packets. */
  10698 extern int bcm_field_qualify_HiGig(
  10699     int unit, 
  10700     bcm_field_entry_t entry, 
  10701     uint8 data, 
  10702     uint8 mask);
  10703 
  10704 /* Qualify on HiGig destination packets. */
  10705 extern int bcm_field_qualify_DstHiGig(
  10706     int unit, 
  10707     bcm_field_entry_t entry, 
  10708     uint8 data, 
  10709     uint8 mask);
  10710 
  10711 /* Qualify on HiGig lookup packets. */
  10712 extern int bcm_field_qualify_HiGigProxy(
  10713     int unit, 
  10714     bcm_field_entry_t entry, 
  10715     uint8 data, 
  10716     uint8 mask);
  10717 
  10718 /* bcm_field_qualify_InterfaceClassPort */
  10719 extern int bcm_field_qualify_InterfaceClassPort(
  10720     int unit, 
  10721     bcm_field_entry_t entry, 
  10722     uint32 data, 
  10723     uint32 mask);
  10724 
  10725 /* bcm_field_qualify_InterfaceClassL2 */
  10726 extern int bcm_field_qualify_InterfaceClassL2(
  10727     int unit, 
  10728     bcm_field_entry_t entry, 
  10729     uint32 data, 
  10730     uint32 mask);
  10731 
  10732 /* bcm_field_qualify_InterfaceClassL3 */
  10733 extern int bcm_field_qualify_InterfaceClassL3(
  10734     int unit, 
  10735     bcm_field_entry_t entry, 
  10736     uint32 data, 
  10737     uint32 mask);
  10738 
  10739 /* bcm_field_qualify_SrcClassL2 */
  10740 extern int bcm_field_qualify_SrcClassL2(
  10741     int unit, 
  10742     bcm_field_entry_t entry, 
  10743     uint32 data, 
  10744     uint32 mask);
  10745 
  10746 /* bcm_field_qualify_SrcClassL3 */
  10747 extern int bcm_field_qualify_SrcClassL3(
  10748     int unit, 
  10749     bcm_field_entry_t entry, 
  10750     uint32 data, 
  10751     uint32 mask);
  10752 
  10753 /* bcm_field_qualify_SrcClassField */
  10754 extern int bcm_field_qualify_SrcClassField(
  10755     int unit, 
  10756     bcm_field_entry_t entry, 
  10757     uint32 data, 
  10758     uint32 mask);
  10759 
  10760 /* bcm_field_qualify_DstClassL2 */
  10761 extern int bcm_field_qualify_DstClassL2(
  10762     int unit, 
  10763     bcm_field_entry_t entry, 
  10764     uint32 data, 
  10765     uint32 mask);
  10766 
  10767 /* bcm_field_qualify_DstClassL3 */
  10768 extern int bcm_field_qualify_DstClassL3(
  10769     int unit, 
  10770     bcm_field_entry_t entry, 
  10771     uint32 data, 
  10772     uint32 mask);
  10773 
  10774 /* bcm_field_qualify_SrcCompressionClassId */
  10775 extern int bcm_field_qualify_SrcCompressionClassId(
  10776     int unit, 
  10777     bcm_field_entry_t entry, 
  10778     uint32 data, 
  10779     uint32 mask);
  10780 
  10781 /* 
  10782  * Get match criteria for bcmFieldQualifySrcCompressionClassId
  10783  * qualifier from the field entry.
  10784  */
  10785 extern int bcm_field_qualify_SrcCompressionClassId_get(
  10786     int unit, 
  10787     bcm_field_entry_t entry, 
  10788     uint32 *data, 
  10789     uint32 *mask);
  10790 
  10791 /* bcm_field_qualify_DstCompressionClassId */
  10792 extern int bcm_field_qualify_DstCompressionClassId(
  10793     int unit, 
  10794     bcm_field_entry_t entry, 
  10795     uint32 data, 
  10796     uint32 mask);
  10797 
  10798 /* 
  10799  * Get match criteria for bcmFieldQualifyDstCompressionClassId
  10800  * qualifier from the field entry.
  10801  */
  10802 extern int bcm_field_qualify_DstCompressionClassId_get(
  10803     int unit, 
  10804     bcm_field_entry_t entry, 
  10805     uint32 *data, 
  10806     uint32 *mask);
  10807 
  10808 /* bcm_field_qualify_DstClassField */
  10809 extern int bcm_field_qualify_DstClassField(
  10810     int unit, 
  10811     bcm_field_entry_t entry, 
  10812     uint32 data, 
  10813     uint32 mask);
  10814 
  10815 /* bcm_field_qualify_DstMultipath */
  10816 extern int bcm_field_qualify_DstMultipath(
  10817     int unit, 
  10818     bcm_field_entry_t entry, 
  10819     bcm_if_t mpintf);
  10820 
  10821 /* bcm_field_qualify_DstMultipath_get */
  10822 extern int bcm_field_qualify_DstMultipath_get(
  10823     int unit, 
  10824     bcm_field_entry_t entry, 
  10825     bcm_if_t *mpintf);
  10826 
  10827 /* bcm_field_qualify_IpProtocolCommon */
  10828 extern int bcm_field_qualify_IpProtocolCommon(
  10829     int unit, 
  10830     bcm_field_entry_t entry, 
  10831     bcm_field_IpProtocolCommon_t protocol);
  10832 
  10833 /* bcm_field_qualify_InnerIpProtocolCommon */
  10834 extern int bcm_field_qualify_InnerIpProtocolCommon(
  10835     int unit, 
  10836     bcm_field_entry_t entry, 
  10837     bcm_field_IpProtocolCommon_t protocol);
  10838 
  10839 /* bcm_field_qualify_Snap */
  10840 extern int bcm_field_qualify_Snap(
  10841     int unit, 
  10842     bcm_field_entry_t entry, 
  10843     bcm_field_snap_header_t data, 
  10844     bcm_field_snap_header_t mask);
  10845 
  10846 /* bcm_field_qualify_Llc */
  10847 extern int bcm_field_qualify_Llc(
  10848     int unit, 
  10849     bcm_field_entry_t entry, 
  10850     bcm_field_llc_header_t data, 
  10851     bcm_field_llc_header_t mask);
  10852 
  10853 /* bcm_field_qualify_InnerTpid */
  10854 extern int bcm_field_qualify_InnerTpid(
  10855     int unit, 
  10856     bcm_field_entry_t entry, 
  10857     uint16 tpid);
  10858 
  10859 /* bcm_field_qualify_OuterTpid */
  10860 extern int bcm_field_qualify_OuterTpid(
  10861     int unit, 
  10862     bcm_field_entry_t entry, 
  10863     uint16 tpid);
  10864 
  10865 /* bcm_field_qualify_L3Routable */
  10866 extern int bcm_field_qualify_L3Routable(
  10867     int unit, 
  10868     bcm_field_entry_t entry, 
  10869     uint8 data, 
  10870     uint8 mask);
  10871 
  10872 /* bcm_field_qualify_IpFrag */
  10873 extern int bcm_field_qualify_IpFrag(
  10874     int unit, 
  10875     bcm_field_entry_t entry, 
  10876     bcm_field_IpFrag_t frag_info);
  10877 
  10878 /* bcm_field_qualify_Vrf */
  10879 extern int bcm_field_qualify_Vrf(
  10880     int unit, 
  10881     bcm_field_entry_t entry, 
  10882     uint32 data, 
  10883     uint32 mask);
  10884 
  10885 /* bcm_field_qualify_L3Ingress */
  10886 extern int bcm_field_qualify_L3Ingress(
  10887     int unit, 
  10888     bcm_field_entry_t entry, 
  10889     uint32 intf_id, 
  10890     uint32 mask);
  10891 
  10892 /* bcm_field_qualify_ExtensionHeaderType */
  10893 extern int bcm_field_qualify_ExtensionHeaderType(
  10894     int unit, 
  10895     bcm_field_entry_t entry, 
  10896     uint8 data, 
  10897     uint8 mask);
  10898 
  10899 /* bcm_field_qualify_ExtensionHeaderSubCode */
  10900 extern int bcm_field_qualify_ExtensionHeaderSubCode(
  10901     int unit, 
  10902     bcm_field_entry_t entry, 
  10903     uint8 data, 
  10904     uint8 mask);
  10905 
  10906 /* bcm_field_qualify_ExtensionHeader2Type */
  10907 extern int bcm_field_qualify_ExtensionHeader2Type(
  10908     int unit, 
  10909     bcm_field_entry_t entry, 
  10910     uint8 data, 
  10911     uint8 mask);
  10912 
  10913 /* bcm_field_qualify_L4Ports */
  10914 extern int bcm_field_qualify_L4Ports(
  10915     int unit, 
  10916     bcm_field_entry_t entry, 
  10917     uint8 data, 
  10918     uint8 mask);
  10919 
  10920 /* bcm_field_qualify_SampledPkt */
  10921 extern int bcm_field_qualify_SampledPkt(
  10922     int unit, 
  10923     bcm_field_entry_t entry, 
  10924     uint8 data, 
  10925     uint8 mask);
  10926 
  10927 /* bcm_field_qualify_SrcIp6SrhValid */
  10928 extern int bcm_field_qualify_SrcIp6SrhValid(
  10929     int unit, 
  10930     bcm_field_entry_t entry, 
  10931     uint8 data, 
  10932     uint8 mask);
  10933 
  10934 /* bcm_field_qualify_MirrorCopy */
  10935 extern int bcm_field_qualify_MirrorCopy(
  10936     int unit, 
  10937     bcm_field_entry_t entry, 
  10938     uint8 data, 
  10939     uint8 mask);
  10940 
  10941 /* bcm_field_qualify_PphType */
  10942 extern int bcm_field_qualify_PphType(
  10943     int unit, 
  10944     bcm_field_entry_t entry, 
  10945     uint8 data, 
  10946     uint8 mask);
  10947 
  10948 /* bcm_field_qualify_TunnelTerminationProcessingProfile */
  10949 extern int bcm_field_qualify_TunnelTerminationProcessingProfile(
  10950     int unit, 
  10951     bcm_field_entry_t entry, 
  10952     uint8 data, 
  10953     uint8 mask);
  10954 
  10955 /* bcm_field_qualify_TunnelTerminated */
  10956 extern int bcm_field_qualify_TunnelTerminated(
  10957     int unit, 
  10958     bcm_field_entry_t entry, 
  10959     uint8 data, 
  10960     uint8 mask);
  10961 
  10962 /* bcm_field_qualify_MplsTerminated */
  10963 extern int bcm_field_qualify_MplsTerminated(
  10964     int unit, 
  10965     bcm_field_entry_t entry, 
  10966     uint8 data, 
  10967     uint8 mask);
  10968 
  10969 /* bcm_field_qualify_InnerSrcIp */
  10970 extern int bcm_field_qualify_InnerSrcIp(
  10971     int unit, 
  10972     bcm_field_entry_t entry, 
  10973     bcm_ip_t data, 
  10974     bcm_ip_t mask);
  10975 
  10976 /* bcm_field_qualify_InnerDstIp */
  10977 extern int bcm_field_qualify_InnerDstIp(
  10978     int unit, 
  10979     bcm_field_entry_t entry, 
  10980     bcm_ip_t data, 
  10981     bcm_ip_t mask);
  10982 
  10983 /* bcm_field_qualify_InnerSrcIp6 */
  10984 extern int bcm_field_qualify_InnerSrcIp6(
  10985     int unit, 
  10986     bcm_field_entry_t entry, 
  10987     bcm_ip6_t data, 
  10988     bcm_ip6_t mask);
  10989 
  10990 /* bcm_field_qualify_InnerDstIp6 */
  10991 extern int bcm_field_qualify_InnerDstIp6(
  10992     int unit, 
  10993     bcm_field_entry_t entry, 
  10994     bcm_ip6_t data, 
  10995     bcm_ip6_t mask);
  10996 
  10997 /* bcm_field_qualify_InnerSrcIp6High */
  10998 extern int bcm_field_qualify_InnerSrcIp6High(
  10999     int unit, 
  11000     bcm_field_entry_t entry, 
  11001     bcm_ip6_t data, 
  11002     bcm_ip6_t mask);
  11003 
  11004 /* bcm_field_qualify_InnerDstIp6High */
  11005 extern int bcm_field_qualify_InnerDstIp6High(
  11006     int unit, 
  11007     bcm_field_entry_t entry, 
  11008     bcm_ip6_t data, 
  11009     bcm_ip6_t mask);
  11010 
  11011 /* bcm_field_qualify_InnerIp6HopLimit */
  11012 extern int bcm_field_qualify_InnerIp6HopLimit(
  11013     int unit, 
  11014     bcm_field_entry_t entry, 
  11015     uint8 data, 
  11016     uint8 mask);
  11017 
  11018 /* bcm_field_qualify_InnerTtl */
  11019 extern int bcm_field_qualify_InnerTtl(
  11020     int unit, 
  11021     bcm_field_entry_t entry, 
  11022     uint8 data, 
  11023     uint8 mask);
  11024 
  11025 /* bcm_field_qualify_InnerTos */
  11026 extern int bcm_field_qualify_InnerTos(
  11027     int unit, 
  11028     bcm_field_entry_t entry, 
  11029     uint8 data, 
  11030     uint8 mask);
  11031 
  11032 /* bcm_field_qualify_InnerDSCP */
  11033 extern int bcm_field_qualify_InnerDSCP(
  11034     int unit, 
  11035     bcm_field_entry_t entry, 
  11036     uint8 data, 
  11037     uint8 mask);
  11038 
  11039 /* bcm_field_qualify_InnerIpProtocol */
  11040 extern int bcm_field_qualify_InnerIpProtocol(
  11041     int unit, 
  11042     bcm_field_entry_t entry, 
  11043     uint8 data, 
  11044     uint8 mask);
  11045 
  11046 /* bcm_field_qualify_InnerIp6NextHeader */
  11047 extern int bcm_field_qualify_InnerIp6NextHeader(
  11048     int unit, 
  11049     bcm_field_entry_t entry, 
  11050     uint8 data, 
  11051     uint8 mask);
  11052 
  11053 /* bcm_field_qualify_InnerIpFrag */
  11054 extern int bcm_field_qualify_InnerIpFrag(
  11055     int unit, 
  11056     bcm_field_entry_t entry, 
  11057     bcm_field_IpFrag_t frag_info);
  11058 
  11059 /* bcm_field_qualify_DosAttack */
  11060 extern int bcm_field_qualify_DosAttack(
  11061     int unit, 
  11062     bcm_field_entry_t entry, 
  11063     uint8 data, 
  11064     uint8 mask);
  11065 
  11066 /* bcm_field_qualify_IpmcStarGroupHit */
  11067 extern int bcm_field_qualify_IpmcStarGroupHit(
  11068     int unit, 
  11069     bcm_field_entry_t entry, 
  11070     uint8 data, 
  11071     uint8 mask);
  11072 
  11073 /* bcm_field_qualify_MyStationHit */
  11074 extern int bcm_field_qualify_MyStationHit(
  11075     int unit, 
  11076     bcm_field_entry_t entry, 
  11077     uint8 data, 
  11078     uint8 mask);
  11079 
  11080 /* Match on first eight bytes of L2 payload */
  11081 extern int bcm_field_qualify_L2PayloadFirstEightBytes(
  11082     int unit, 
  11083     bcm_field_entry_t entry, 
  11084     uint32 data1, 
  11085     uint32 data2, 
  11086     uint32 mask1, 
  11087     uint32 mask2);
  11088 
  11089 /* bcm_field_qualify_L3DestRouteHit */
  11090 extern int bcm_field_qualify_L3DestRouteHit(
  11091     int unit, 
  11092     bcm_field_entry_t entry, 
  11093     uint8 data, 
  11094     uint8 mask);
  11095 
  11096 /* bcm_field_qualify_L3DestHostHit */
  11097 extern int bcm_field_qualify_L3DestHostHit(
  11098     int unit, 
  11099     bcm_field_entry_t entry, 
  11100     uint8 data, 
  11101     uint8 mask);
  11102 
  11103 /* bcm_field_qualify_L3SrcHostHit */
  11104 extern int bcm_field_qualify_L3SrcHostHit(
  11105     int unit, 
  11106     bcm_field_entry_t entry, 
  11107     uint8 data, 
  11108     uint8 mask);
  11109 
  11110 /* bcm_field_qualify_L2CacheHit */
  11111 extern int bcm_field_qualify_L2CacheHit(
  11112     int unit, 
  11113     bcm_field_entry_t entry, 
  11114     uint8 data, 
  11115     uint8 mask);
  11116 
  11117 /* bcm_field_qualify_L2StationMove */
  11118 extern int bcm_field_qualify_L2StationMove(
  11119     int unit, 
  11120     bcm_field_entry_t entry, 
  11121     uint8 data, 
  11122     uint8 mask);
  11123 
  11124 /* bcm_field_qualify_L2DestHit */
  11125 extern int bcm_field_qualify_L2DestHit(
  11126     int unit, 
  11127     bcm_field_entry_t entry, 
  11128     uint8 data, 
  11129     uint8 mask);
  11130 
  11131 /* bcm_field_qualify_L2SrcStatic */
  11132 extern int bcm_field_qualify_L2SrcStatic(
  11133     int unit, 
  11134     bcm_field_entry_t entry, 
  11135     uint8 data, 
  11136     uint8 mask);
  11137 
  11138 /* bcm_field_qualify_L2SrcHit */
  11139 extern int bcm_field_qualify_L2SrcHit(
  11140     int unit, 
  11141     bcm_field_entry_t entry, 
  11142     uint8 data, 
  11143     uint8 mask);
  11144 
  11145 /* bcm_field_qualify_IngressStpState */
  11146 extern int bcm_field_qualify_IngressStpState(
  11147     int unit, 
  11148     bcm_field_entry_t entry, 
  11149     uint8 data, 
  11150     uint8 mask);
  11151 
  11152 /* bcm_field_qualify_IngressVPortBridgeDisable */
  11153 extern int bcm_field_qualify_IngressVPortBridgeDisable(
  11154     int unit, 
  11155     bcm_field_entry_t entry, 
  11156     uint8 data, 
  11157     uint8 mask);
  11158 
  11159 /* 
  11160  *  Get match criteria for bcmFieldQualifyIngressVPortBridgeDisable
  11161  * qualifier from the field entry.
  11162  */
  11163 extern int bcm_field_qualify_IngressVPortBridgeDisable_get(
  11164     int unit, 
  11165     bcm_field_entry_t entry, 
  11166     uint8 *data, 
  11167     uint8 *mask);
  11168 
  11169 /* bcm_field_qualify_ForwardingVlanValid */
  11170 extern int bcm_field_qualify_ForwardingVlanValid(
  11171     int unit, 
  11172     bcm_field_entry_t entry, 
  11173     uint8 data, 
  11174     uint8 mask);
  11175 
  11176 /* bcm_field_qualify_SrcVirtualPortValid */
  11177 extern int bcm_field_qualify_SrcVirtualPortValid(
  11178     int unit, 
  11179     bcm_field_entry_t entry, 
  11180     uint8 data, 
  11181     uint8 mask);
  11182 
  11183 /* 
  11184  * Set match criteria for bcmFieldQualifyDstL3EgressNextHops
  11185  *                 qualifier in the field entry.
  11186  */
  11187 extern int bcm_field_qualify_DstL3EgressNextHops(
  11188     int unit, 
  11189     bcm_field_entry_t entry, 
  11190     uint32 data, 
  11191     uint32 mask);
  11192 
  11193 /* bcm_field_qualify_VlanTranslationHit */
  11194 extern int bcm_field_qualify_VlanTranslationHit(
  11195     int unit, 
  11196     bcm_field_entry_t entry, 
  11197     uint8 data, 
  11198     uint8 mask);
  11199 
  11200 /* bcm_field_qualify_IcmpTypeCode */
  11201 extern int bcm_field_qualify_IcmpTypeCode(
  11202     int unit, 
  11203     bcm_field_entry_t entry, 
  11204     uint16 data, 
  11205     uint16 mask);
  11206 
  11207 /* 
  11208  * Set match criteria for bcmFieldQualifyTranslatedVlanFormat
  11209  *                qualifier in the field entry.
  11210  */
  11211 extern int bcm_field_qualify_TranslatedVlanFormat(
  11212     int unit, 
  11213     bcm_field_entry_t entry, 
  11214     uint8 data, 
  11215     uint8 mask);
  11216 
  11217 /* 
  11218  * Add Fibre Channel outer header type field qualification to a field
  11219  * entry.
  11220  */
  11221 extern int bcm_field_qualify_FibreChanOuter(
  11222     int unit, 
  11223     bcm_field_entry_t entry, 
  11224     bcm_field_FibreChan_t fibre_chan_type);
  11225 
  11226 /* 
  11227  * Add Fibre Channel inner header type field qualification to a field
  11228  * entry.
  11229  */
  11230 extern int bcm_field_qualify_FibreChanInner(
  11231     int unit, 
  11232     bcm_field_entry_t entry, 
  11233     bcm_field_FibreChan_t fibre_chan_type);
  11234 
  11235 /* bcm_field_qualify_VnTag */
  11236 extern int bcm_field_qualify_VnTag(
  11237     int unit, 
  11238     bcm_field_entry_t entry, 
  11239     uint32 data, 
  11240     uint32 mask);
  11241 
  11242 /* bcm_field_qualify_SubportPktTag */
  11243 extern int bcm_field_qualify_SubportPktTag(
  11244     int unit, 
  11245     bcm_field_entry_t entry, 
  11246     uint16 data, 
  11247     uint16 mask);
  11248 
  11249 /* bcm_field_qualify_CnTag */
  11250 extern int bcm_field_qualify_CnTag(
  11251     int unit, 
  11252     bcm_field_entry_t entry, 
  11253     uint32 data, 
  11254     uint32 mask);
  11255 
  11256 /* bcm_field_qualify_FabricQueueTag */
  11257 extern int bcm_field_qualify_FabricQueueTag(
  11258     int unit, 
  11259     bcm_field_entry_t entry, 
  11260     uint32 data, 
  11261     uint32 mask);
  11262 
  11263 /* 
  11264  * Get match criteria for bcmFieldQualifyIntPriority
  11265  *                qualifier from the field entry.
  11266  */
  11267 extern int bcm_field_qualify_IntPriority_get(
  11268     int unit, 
  11269     bcm_field_entry_t entry, 
  11270     uint8 *data, 
  11271     uint8 *mask);
  11272 
  11273 /* 
  11274  * Get match criteria for bcmFieldQualifyColor
  11275  *                qualifier from the field entry.
  11276  */
  11277 extern int bcm_field_qualify_Color_get(
  11278     int unit, 
  11279     bcm_field_entry_t entry, 
  11280     uint8 *color);
  11281 
  11282 /* 
  11283  * Get match criteria for bcmFieldQualifySrcModPortGport
  11284  *                qualifier from the field entry.
  11285  */
  11286 extern int bcm_field_qualify_SrcModPortGport_get(
  11287     int unit, 
  11288     bcm_field_entry_t entry, 
  11289     bcm_gport_t *data);
  11290 
  11291 /* 
  11292  * Get match criteria for bcmFieldQualifySrcModuleGport
  11293  *                qualifier from the field entry.
  11294  */
  11295 extern int bcm_field_qualify_SrcModuleGport_get(
  11296     int unit, 
  11297     bcm_field_entry_t entry, 
  11298     bcm_gport_t *data);
  11299 
  11300 /* Get loopback type field qualification from a field entry. */
  11301 extern int bcm_field_qualify_LoopbackType_get(
  11302     int unit, 
  11303     bcm_field_entry_t entry, 
  11304     bcm_field_LoopbackType_t *loopback_type);
  11305 
  11306 /* Get tunnel type field qualification from a field entry. */
  11307 extern int bcm_field_qualify_TunnelType_get(
  11308     int unit, 
  11309     bcm_field_entry_t entry, 
  11310     bcm_field_TunnelType_t *tunnel_type);
  11311 
  11312 /* 
  11313  * Get match criteria for bcmFieldQualifyDstL3Egress
  11314  *                qualifier from the field entry.
  11315  */
  11316 extern int bcm_field_qualify_DstL3Egress_get(
  11317     int unit, 
  11318     bcm_field_entry_t entry, 
  11319     bcm_if_t *if_id);
  11320 
  11321 /* 
  11322  * Get match criteria for bcmFieldQualifyDstMulticastGroup
  11323  *                qualifier from the field entry.
  11324  */
  11325 extern int bcm_field_qualify_DstMulticastGroup_get(
  11326     int unit, 
  11327     bcm_field_entry_t entry, 
  11328     bcm_multicast_t *group);
  11329 
  11330 /* 
  11331  * Get match criteria for bcmFieldQualifySrcMplsGport
  11332  *                qualifier from the field entry.
  11333  */
  11334 extern int bcm_field_qualify_SrcMplsGport_get(
  11335     int unit, 
  11336     bcm_field_entry_t entry, 
  11337     bcm_gport_t *mpls_port_id);
  11338 
  11339 /* 
  11340  * Get match criteria for bcmFieldQualifyDstMplsGport
  11341  *                qualifier from the field entry.
  11342  */
  11343 extern int bcm_field_qualify_DstMplsGport_get(
  11344     int unit, 
  11345     bcm_field_entry_t entry, 
  11346     bcm_gport_t *mpls_port_id);
  11347 
  11348 /* 
  11349  * Get match criteria for bcmFieldQualifySrcMimGport
  11350  *                qualifier from the field entry.
  11351  */
  11352 extern int bcm_field_qualify_SrcMimGport_get(
  11353     int unit, 
  11354     bcm_field_entry_t entry, 
  11355     bcm_gport_t *mim_port_id);
  11356 
  11357 /* 
  11358  * Get match criteria for bcmFieldQualifyDstMimGport
  11359  *                qualifier from the field entry.
  11360  */
  11361 extern int bcm_field_qualify_DstMimGport_get(
  11362     int unit, 
  11363     bcm_field_entry_t entry, 
  11364     bcm_gport_t *mim_port_id);
  11365 
  11366 /* 
  11367  * Get match criteria for bcmFieldQualifySrcWlanGport
  11368  *                qualifier from the field entry.
  11369  */
  11370 extern int bcm_field_qualify_SrcWlanGport_get(
  11371     int unit, 
  11372     bcm_field_entry_t entry, 
  11373     bcm_gport_t *wlan_port_id);
  11374 
  11375 /* 
  11376  * Get match criteria for bcmFieldQualifyDstWlanGport
  11377  *                qualifier from the field entry.
  11378  */
  11379 extern int bcm_field_qualify_DstWlanGport_get(
  11380     int unit, 
  11381     bcm_field_entry_t entry, 
  11382     bcm_gport_t *wlan_port_id);
  11383 
  11384 /* 
  11385  * Get match criteria for bcmFieldQualifySrcVxlanGport
  11386  *                qualifier from the field entry.
  11387  */
  11388 extern int bcm_field_qualify_SrcVxlanGport_get(
  11389     int unit, 
  11390     bcm_field_entry_t entry, 
  11391     bcm_gport_t *vxlan_port_id);
  11392 
  11393 /* 
  11394  * Get match criteria for bcmFieldQualifyDstVxlanGport
  11395  *                qualifier from the field entry.
  11396  */
  11397 extern int bcm_field_qualify_DstVxlanGport_get(
  11398     int unit, 
  11399     bcm_field_entry_t entry, 
  11400     bcm_gport_t *vxlan_port_id);
  11401 
  11402 /* Get loopback field qualification from  a field entry. */
  11403 extern int bcm_field_qualify_Loopback_get(
  11404     int unit, 
  11405     bcm_field_entry_t entry, 
  11406     uint8 *data, 
  11407     uint8 *mask);
  11408 
  11409 /* 
  11410  * Get match criteria for bcmFieldQualifyInPort
  11411  *                qualifier from the field entry.
  11412  */
  11413 extern int bcm_field_qualify_InPort_get(
  11414     int unit, 
  11415     bcm_field_entry_t entry, 
  11416     bcm_port_t *data, 
  11417     bcm_port_t *mask);
  11418 
  11419 /* 
  11420  * Get match criteria for bcmFieldQualifyOutPort
  11421  *                qualifier from the field entry.
  11422  */
  11423 extern int bcm_field_qualify_OutPort_get(
  11424     int unit, 
  11425     bcm_field_entry_t entry, 
  11426     bcm_port_t *data, 
  11427     bcm_port_t *mask);
  11428 
  11429 /* Get InPorts qualification match criteria from a field entry */
  11430 extern int bcm_field_qualify_InPorts_get(
  11431     int unit, 
  11432     bcm_field_entry_t entry, 
  11433     bcm_pbmp_t *data, 
  11434     bcm_pbmp_t *mask);
  11435 
  11436 /* 
  11437  * Get match criteria for bcmFieldQualifyOutPorts
  11438  *                qualifier from the field entry.
  11439  */
  11440 extern int bcm_field_qualify_OutPorts_get(
  11441     int unit, 
  11442     bcm_field_entry_t entry, 
  11443     bcm_pbmp_t *data, 
  11444     bcm_pbmp_t *mask);
  11445 
  11446 /* 
  11447  * Get match criteria for bcmFieldQualifyDrop
  11448  *                qualifier from the field entry.
  11449  */
  11450 extern int bcm_field_qualify_Drop_get(
  11451     int unit, 
  11452     bcm_field_entry_t entry, 
  11453     uint8 *data, 
  11454     uint8 *mask);
  11455 
  11456 /* 
  11457  * Get match criteria for bcmFieldQualifySrcPort
  11458  *                qualifier from the field entry.
  11459  */
  11460 extern int bcm_field_qualify_SrcPort_get(
  11461     int unit, 
  11462     bcm_field_entry_t entry, 
  11463     bcm_module_t *data_modid, 
  11464     bcm_module_t *mask_modid, 
  11465     bcm_port_t *data_port, 
  11466     bcm_port_t *mask_port);
  11467 
  11468 /* 
  11469  * Get match criteria for bcmFieldQualifySrcTrunk
  11470  *                qualifier from the field entry.
  11471  */
  11472 extern int bcm_field_qualify_SrcTrunk_get(
  11473     int unit, 
  11474     bcm_field_entry_t entry, 
  11475     bcm_trunk_t *data, 
  11476     bcm_trunk_t *mask);
  11477 
  11478 /* 
  11479  * Get match criteria for bcmFieldQualifySrcTrunkMemberGport
  11480  *                qualifier from the field entry.
  11481  */
  11482 extern int bcm_field_qualify_SrcTrunkMemberGport_get(
  11483     int unit, 
  11484     bcm_field_entry_t entry, 
  11485     bcm_gport_t *data);
  11486 
  11487 /* 
  11488  * Get match criteria for bcmFieldQualifySrcTMPort
  11489  *                qualifier from the field entry.
  11490  */
  11491 extern int bcm_field_qualify_SrcTMPort_get(
  11492     int unit, 
  11493     bcm_field_entry_t entry, 
  11494     bcm_port_t *data_port, 
  11495     bcm_port_t *mask_port);
  11496 
  11497 /* 
  11498  * Get match criteria for bcmFieldQualifyDstPort
  11499  *                qualifier from the field entry.
  11500  */
  11501 extern int bcm_field_qualify_DstPort_get(
  11502     int unit, 
  11503     bcm_field_entry_t entry, 
  11504     bcm_module_t *data_modid, 
  11505     bcm_module_t *mask_modid, 
  11506     bcm_port_t *data_port, 
  11507     bcm_port_t *mask_port);
  11508 
  11509 /* 
  11510  * Get match criteria for bcmFieldQualifyDstTrunk
  11511  *                qualifier from the field entry.
  11512  */
  11513 extern int bcm_field_qualify_DstTrunk_get(
  11514     int unit, 
  11515     bcm_field_entry_t entry, 
  11516     bcm_trunk_t *data, 
  11517     bcm_trunk_t *mask);
  11518 
  11519 /* 
  11520  * Get match criteria for bcmFieldQualifyInnerL4SrcPort
  11521  *                qualifier from the field entry.
  11522  */
  11523 extern int bcm_field_qualify_InnerL4SrcPort_get(
  11524     int unit, 
  11525     bcm_field_entry_t entry, 
  11526     bcm_l4_port_t *data, 
  11527     bcm_l4_port_t *mask);
  11528 
  11529 /* 
  11530  * Get match criteria for bcmFieldQualifyInnerL4DstPort
  11531  *                qualifier from the field entry.
  11532  */
  11533 extern int bcm_field_qualify_InnerL4DstPort_get(
  11534     int unit, 
  11535     bcm_field_entry_t entry, 
  11536     bcm_l4_port_t *data, 
  11537     bcm_l4_port_t *mask);
  11538 
  11539 /* 
  11540  * Get match criteria for bcmFieldQualifyL4SrcPort
  11541  *                qualifier from the field entry.
  11542  */
  11543 extern int bcm_field_qualify_L4SrcPort_get(
  11544     int unit, 
  11545     bcm_field_entry_t entry, 
  11546     bcm_l4_port_t *data, 
  11547     bcm_l4_port_t *mask);
  11548 
  11549 /* 
  11550  * Get match criteria for bcmFieldQualifyL4DstPort
  11551  *                qualifier from the field entry.
  11552  */
  11553 extern int bcm_field_qualify_L4DstPort_get(
  11554     int unit, 
  11555     bcm_field_entry_t entry, 
  11556     bcm_l4_port_t *data, 
  11557     bcm_l4_port_t *mask);
  11558 
  11559 /* 
  11560  * Get match criteria for bcmFieldQualifyOuterVlan
  11561  *                qualifier from the field entry.
  11562  */
  11563 extern int bcm_field_qualify_OuterVlan_get(
  11564     int unit, 
  11565     bcm_field_entry_t entry, 
  11566     bcm_vlan_t *data, 
  11567     bcm_vlan_t *mask);
  11568 
  11569 /* 
  11570  *  Get match criteria for bcmFieldQualifyOuterVlanId
  11571  *                  qualifier from the field entry.
  11572  */
  11573 extern int bcm_field_qualify_OuterVlanId_get(
  11574     int unit, 
  11575     bcm_field_entry_t entry, 
  11576     bcm_vlan_t *data, 
  11577     bcm_vlan_t *mask);
  11578 
  11579 /* 
  11580  *  Get match criteria for bcmFieldQualifyOuterVlanPri
  11581  *                  qualifier from the field entry.
  11582  */
  11583 extern int bcm_field_qualify_OuterVlanPri_get(
  11584     int unit, 
  11585     bcm_field_entry_t entry, 
  11586     uint8 *data, 
  11587     uint8 *mask);
  11588 
  11589 /* 
  11590  *  Get match criteria for bcmFieldQualifyOuterVlanCfi
  11591  *                  qualifier from the field entry.
  11592  */
  11593 extern int bcm_field_qualify_OuterVlanCfi_get(
  11594     int unit, 
  11595     bcm_field_entry_t entry, 
  11596     uint8 *data, 
  11597     uint8 *mask);
  11598 
  11599 /* 
  11600  *  Get match criteria for bcmFieldQualifyOuterVlanPriCfi
  11601  *                  qualifier from the field entry.
  11602  */
  11603 extern int bcm_field_qualify_OuterVlanPriCfi_get(
  11604     int unit, 
  11605     bcm_field_entry_t entry, 
  11606     uint8 *data, 
  11607     uint8 *mask);
  11608 
  11609 /* 
  11610  * Get match criteria for bcmFieldQualifyInnerVlan
  11611  *                qualifier from the field entry.
  11612  */
  11613 extern int bcm_field_qualify_InnerVlan_get(
  11614     int unit, 
  11615     bcm_field_entry_t entry, 
  11616     bcm_vlan_t *data, 
  11617     bcm_vlan_t *mask);
  11618 
  11619 /* 
  11620  *  Get match criteria for bcmFieldQualifyInnerVlanId
  11621  *                  qualifier from the field entry.
  11622  */
  11623 extern int bcm_field_qualify_InnerVlanId_get(
  11624     int unit, 
  11625     bcm_field_entry_t entry, 
  11626     bcm_vlan_t *data, 
  11627     bcm_vlan_t *mask);
  11628 
  11629 /* 
  11630  *  Get match criteria for bcmFieldQualifyInnerVlanPri
  11631  *                  qualifier from the field entry.
  11632  */
  11633 extern int bcm_field_qualify_InnerVlanPri_get(
  11634     int unit, 
  11635     bcm_field_entry_t entry, 
  11636     uint8 *data, 
  11637     uint8 *mask);
  11638 
  11639 /* 
  11640  *  Get match criteria for bcmFieldQualifyInnerVlanCfi_get
  11641  *                  qualifier from the field entry.
  11642  */
  11643 extern int bcm_field_qualify_InnerVlanCfi_get(
  11644     int unit, 
  11645     bcm_field_entry_t entry, 
  11646     uint8 *data, 
  11647     uint8 *mask);
  11648 
  11649 /* 
  11650  * Get match criteria for bcmFieldQualifyEtherType
  11651  *                qualifier from the field entry.
  11652  */
  11653 extern int bcm_field_qualify_EtherType_get(
  11654     int unit, 
  11655     bcm_field_entry_t entry, 
  11656     uint16 *data, 
  11657     uint16 *mask);
  11658 
  11659 /* 
  11660  * Get match criteria for bcmFieldQualifyIpProtocol
  11661  *                qualifier from the field entry.
  11662  */
  11663 extern int bcm_field_qualify_IpProtocol_get(
  11664     int unit, 
  11665     bcm_field_entry_t entry, 
  11666     uint8 *data, 
  11667     uint8 *mask);
  11668 
  11669 /* 
  11670  * Get match criteria for bcmFieldQualifyIpInfo
  11671  *                qualifier from the field entry.
  11672  */
  11673 extern int bcm_field_qualify_IpInfo_get(
  11674     int unit, 
  11675     bcm_field_entry_t entry, 
  11676     uint32 *data, 
  11677     uint32 *mask);
  11678 
  11679 /* 
  11680  * Get match criteria for bcmFieldQualifyPacketRes
  11681  *                qualifier from the field entry.
  11682  */
  11683 extern int bcm_field_qualify_PacketRes_get(
  11684     int unit, 
  11685     bcm_field_entry_t entry, 
  11686     uint32 *data, 
  11687     uint32 *mask);
  11688 
  11689 /* 
  11690  * Get match criteria for bcmFieldQualifySrcIp
  11691  *                qualifier from the field entry.
  11692  */
  11693 extern int bcm_field_qualify_SrcIp_get(
  11694     int unit, 
  11695     bcm_field_entry_t entry, 
  11696     bcm_ip_t *data, 
  11697     bcm_ip_t *mask);
  11698 
  11699 /* 
  11700  * Get match criteria for bcmFieldQualifyDstIp
  11701  *                qualifier from the field entry.
  11702  */
  11703 extern int bcm_field_qualify_DstIp_get(
  11704     int unit, 
  11705     bcm_field_entry_t entry, 
  11706     bcm_ip_t *data, 
  11707     bcm_ip_t *mask);
  11708 
  11709 /* 
  11710  * Get match criteria for bcmFieldQualifyTos
  11711  *                qualifier from the field entry.
  11712  */
  11713 extern int bcm_field_qualify_Tos_get(
  11714     int unit, 
  11715     bcm_field_entry_t entry, 
  11716     uint8 *data, 
  11717     uint8 *mask);
  11718 
  11719 /* 
  11720  * Get match criteria for bcmFieldQualifyDSCP
  11721  *                qualifier from the field entry.
  11722  */
  11723 extern int bcm_field_qualify_DSCP_get(
  11724     int unit, 
  11725     bcm_field_entry_t entry, 
  11726     uint8 *data, 
  11727     uint8 *mask);
  11728 
  11729 /* 
  11730  * Get match criteria for bcmFieldQualifyIpFlags
  11731  *                qualifier from the field entry.
  11732  */
  11733 extern int bcm_field_qualify_IpFlags_get(
  11734     int unit, 
  11735     bcm_field_entry_t entry, 
  11736     uint8 *data, 
  11737     uint8 *mask);
  11738 
  11739 /* 
  11740  * Get match criteria for bcmFieldQualifyTcpControl
  11741  *                qualifier from the field entry.
  11742  */
  11743 extern int bcm_field_qualify_TcpControl_get(
  11744     int unit, 
  11745     bcm_field_entry_t entry, 
  11746     uint8 *data, 
  11747     uint8 *mask);
  11748 
  11749 /* 
  11750  * Get match criteria for bcmFieldQualifyTcpSequenceZero
  11751  *                qualifier from the field entry.
  11752  */
  11753 extern int bcm_field_qualify_TcpSequenceZero_get(
  11754     int unit, 
  11755     bcm_field_entry_t entry, 
  11756     uint32 *flag);
  11757 
  11758 /* 
  11759  * Get match criteria for bcmFieldQualifyTcpHeaderSize
  11760  *                qualifier from the field entry.
  11761  */
  11762 extern int bcm_field_qualify_TcpHeaderSize_get(
  11763     int unit, 
  11764     bcm_field_entry_t entry, 
  11765     uint8 *data, 
  11766     uint8 *mask);
  11767 
  11768 /* 
  11769  * Get match criteria for bcmFieldQualifyTtl
  11770  *                qualifier from the field entry.
  11771  */
  11772 extern int bcm_field_qualify_Ttl_get(
  11773     int unit, 
  11774     bcm_field_entry_t entry, 
  11775     uint8 *data, 
  11776     uint8 *mask);
  11777 
  11778 /* 
  11779  * Get match criteria for bcmFieldQualifyRangeCheck
  11780  *                qualifier from the field entry.
  11781  */
  11782 extern int bcm_field_qualify_RangeCheck_get(
  11783     int unit, 
  11784     bcm_field_entry_t entry, 
  11785     int max_count, 
  11786     bcm_field_range_t *range, 
  11787     int *invert, 
  11788     int *count);
  11789 
  11790 /* 
  11791  * Get match criteria for bcmFieldQualifySrcIp6
  11792  *                qualifier from the field entry.
  11793  */
  11794 extern int bcm_field_qualify_SrcIp6_get(
  11795     int unit, 
  11796     bcm_field_entry_t entry, 
  11797     bcm_ip6_t *data, 
  11798     bcm_ip6_t *mask);
  11799 
  11800 /* 
  11801  * Get match criteria for bcmFieldQualifyDstIp6
  11802  *                qualifier from the field entry.
  11803  */
  11804 extern int bcm_field_qualify_DstIp6_get(
  11805     int unit, 
  11806     bcm_field_entry_t entry, 
  11807     bcm_ip6_t *data, 
  11808     bcm_ip6_t *mask);
  11809 
  11810 /* 
  11811  * Get match criteria for bcmFieldQualifySrcIp6High
  11812  *                qualifier from the field entry.
  11813  */
  11814 extern int bcm_field_qualify_SrcIp6High_get(
  11815     int unit, 
  11816     bcm_field_entry_t entry, 
  11817     bcm_ip6_t *data, 
  11818     bcm_ip6_t *mask);
  11819 
  11820 /* 
  11821  * Get match criteria for bcmFieldQualifyDstIp6High
  11822  *                qualifier from the field entry.
  11823  */
  11824 extern int bcm_field_qualify_DstIp6High_get(
  11825     int unit, 
  11826     bcm_field_entry_t entry, 
  11827     bcm_ip6_t *data, 
  11828     bcm_ip6_t *mask);
  11829 
  11830 /* 
  11831  * Get match criteria for bcmFieldQualifyDstIp6Low
  11832  *                qualifier from the field entry.
  11833  */
  11834 extern int bcm_field_qualify_DstIp6Low_get(
  11835     int unit, 
  11836     bcm_field_entry_t entry, 
  11837     bcm_ip6_t *data, 
  11838     bcm_ip6_t *mask);
  11839 
  11840 /* 
  11841  * Get match criteria for bcmFieldQualifySrcIp6Low
  11842  *                qualifier from the field entry.
  11843  */
  11844 extern int bcm_field_qualify_SrcIp6Low_get(
  11845     int unit, 
  11846     bcm_field_entry_t entry, 
  11847     bcm_ip6_t *data, 
  11848     bcm_ip6_t *mask);
  11849 
  11850 /* 
  11851  * Get match criteria for bcmFieldQualifyIp6NextHeader
  11852  *                qualifier from the field entry.
  11853  */
  11854 extern int bcm_field_qualify_Ip6NextHeader_get(
  11855     int unit, 
  11856     bcm_field_entry_t entry, 
  11857     uint8 *data, 
  11858     uint8 *mask);
  11859 
  11860 /* 
  11861  * Get match criteria for bcmFieldQualifyIp6TrafficClass
  11862  *                qualifier from the field entry.
  11863  */
  11864 extern int bcm_field_qualify_Ip6TrafficClass_get(
  11865     int unit, 
  11866     bcm_field_entry_t entry, 
  11867     uint8 *data, 
  11868     uint8 *mask);
  11869 
  11870 /* 
  11871  * Get match criteria for bcmFieldQualifyInnerIp6FlowLabel
  11872  *                qualifier from the field entry.
  11873  */
  11874 extern int bcm_field_qualify_InnerIp6FlowLabel_get(
  11875     int unit, 
  11876     bcm_field_entry_t entry, 
  11877     uint32 *data, 
  11878     uint32 *mask);
  11879 
  11880 /* 
  11881  * Get match criteria for bcmFieldQualifyIp6FlowLabel
  11882  *                qualifier from the field entry.
  11883  */
  11884 extern int bcm_field_qualify_Ip6FlowLabel_get(
  11885     int unit, 
  11886     bcm_field_entry_t entry, 
  11887     uint32 *data, 
  11888     uint32 *mask);
  11889 
  11890 /* 
  11891  * Get match criteria for bcmFieldQualifyIp6HopLimit
  11892  *                qualifier from the field entry.
  11893  */
  11894 extern int bcm_field_qualify_Ip6HopLimit_get(
  11895     int unit, 
  11896     bcm_field_entry_t entry, 
  11897     uint8 *data, 
  11898     uint8 *mask);
  11899 
  11900 /* 
  11901  * Get match criteria for bcmFieldQualifySrcMac
  11902  *                qualifier from the field entry.
  11903  */
  11904 extern int bcm_field_qualify_SrcMac_get(
  11905     int unit, 
  11906     bcm_field_entry_t entry, 
  11907     bcm_mac_t *data, 
  11908     bcm_mac_t *mask);
  11909 
  11910 /* 
  11911  * Get match criteria for bcmFieldQualifyDstMac
  11912  *                qualifier from the field entry.
  11913  */
  11914 extern int bcm_field_qualify_DstMac_get(
  11915     int unit, 
  11916     bcm_field_entry_t entry, 
  11917     bcm_mac_t *data, 
  11918     bcm_mac_t *mask);
  11919 
  11920 /* 
  11921  * Set match criteria for bcmFieldQualifyForwardHdrSrcMac
  11922  *                qualifier from the field entry.
  11923  */
  11924 extern int bcm_field_qualify_ForwardHdrSrcMac(
  11925     int unit, 
  11926     bcm_field_entry_t entry, 
  11927     bcm_mac_t data, 
  11928     bcm_mac_t mask);
  11929 
  11930 /* 
  11931  * Get match criteria for bcmFieldQualifyForwardHdrSrcMac
  11932  *                qualifier from the field entry.
  11933  */
  11934 extern int bcm_field_qualify_ForwardHdrSrcMac_get(
  11935     int unit, 
  11936     bcm_field_entry_t entry, 
  11937     bcm_mac_t *data, 
  11938     bcm_mac_t *mask);
  11939 
  11940 /* 
  11941  * Set match criteria for bcmFieldQualifyForwardHdrDstMac
  11942  *                qualifier from the field entry.
  11943  */
  11944 extern int bcm_field_qualify_ForwardHdrDstMac(
  11945     int unit, 
  11946     bcm_field_entry_t entry, 
  11947     bcm_mac_t data, 
  11948     bcm_mac_t mask);
  11949 
  11950 /* 
  11951  * Get match criteria for bcmFieldQualifyForwardHdrDstMac
  11952  *                qualifier from the field entry.
  11953  */
  11954 extern int bcm_field_qualify_ForwardHdrDstMac_get(
  11955     int unit, 
  11956     bcm_field_entry_t entry, 
  11957     bcm_mac_t *data, 
  11958     bcm_mac_t *mask);
  11959 
  11960 /* 
  11961  *  Set match criteria for bcmFieldQualifyForwardHdrVlanId
  11962  *                  qualifier in the field entry.
  11963  */
  11964 extern int bcm_field_qualify_ForwardHdrVlanId(
  11965     int unit, 
  11966     bcm_field_entry_t entry, 
  11967     bcm_vlan_t data, 
  11968     bcm_vlan_t mask);
  11969 
  11970 /* 
  11971  * Get match criteria for bcmFieldQualifyForwardHdrVlanId
  11972  *                qualifier from the field entry.
  11973  */
  11974 extern int bcm_field_qualify_ForwardHdrVlanId_get(
  11975     int unit, 
  11976     bcm_field_entry_t entry, 
  11977     bcm_vlan_t *data, 
  11978     bcm_vlan_t *mask);
  11979 
  11980 /* 
  11981  * Get match criteria for bcmFieldQualifyInnerIpType
  11982  *                qualifier from the field entry.
  11983  */
  11984 extern int bcm_field_qualify_InnerIpType_get(
  11985     int unit, 
  11986     bcm_field_entry_t entry, 
  11987     bcm_field_IpType_t *type);
  11988 
  11989 /* 
  11990  * Get match criteria for bcmFieldQualifyForwardingType
  11991  *                qualifier from the field entry.
  11992  */
  11993 extern int bcm_field_qualify_ForwardingType_get(
  11994     int unit, 
  11995     bcm_field_entry_t entry, 
  11996     bcm_field_ForwardingType_t *type);
  11997 
  11998 /* 
  11999  * Get match criteria for bcmFieldQualifyAppType
  12000  *                qualifier from the field entry.
  12001  */
  12002 extern int bcm_field_qualify_AppType_get(
  12003     int unit, 
  12004     bcm_field_entry_t entry, 
  12005     bcm_field_AppType_t *type);
  12006 
  12007 /* 
  12008  * Get match criteria for bcmFieldQualifyIpType
  12009  *                qualifier from the field entry.
  12010  */
  12011 extern int bcm_field_qualify_IpType_get(
  12012     int unit, 
  12013     bcm_field_entry_t entry, 
  12014     bcm_field_IpType_t *type);
  12015 
  12016 /* 
  12017  * Get match criteria for bcmFieldQualifyL2Format
  12018  *                qualifier from the field entry.
  12019  */
  12020 extern int bcm_field_qualify_L2Format_get(
  12021     int unit, 
  12022     bcm_field_entry_t entry, 
  12023     bcm_field_L2Format_t *type);
  12024 
  12025 /* 
  12026  * Get match criteria for bcmFieldQualifyTranslatedVlanFormat
  12027  *                qualifier from the field entry.
  12028  */
  12029 extern int bcm_field_qualify_TranslatedVlanFormat_get(
  12030     int unit, 
  12031     bcm_field_entry_t entry, 
  12032     uint8 *data, 
  12033     uint8 *mask);
  12034 
  12035 /* 
  12036  * Get match criteria for bcmFieldQualifyVlanFormat
  12037  *                qualifier from the field entry.
  12038  */
  12039 extern int bcm_field_qualify_VlanFormat_get(
  12040     int unit, 
  12041     bcm_field_entry_t entry, 
  12042     uint8 *data, 
  12043     uint8 *mask);
  12044 
  12045 /* 
  12046  * Get match criteria for bcmFieldQualifyMHOpcode
  12047  *                qualifier from the field entry.
  12048  */
  12049 extern int bcm_field_qualify_MHOpcode_get(
  12050     int unit, 
  12051     bcm_field_entry_t entry, 
  12052     uint8 *data, 
  12053     uint8 *mask);
  12054 
  12055 /* bcm_field_qualify_Decap_get */
  12056 extern int bcm_field_qualify_Decap_get(
  12057     int unit, 
  12058     bcm_field_entry_t entry, 
  12059     bcm_field_decap_t *decap);
  12060 
  12061 /* 
  12062  * Get match criteria for bcmFieldQualifyDstHiGig
  12063  *                qualifier from the field entry.
  12064  */
  12065 extern int bcm_field_qualify_DstHiGig_get(
  12066     int unit, 
  12067     bcm_field_entry_t entry, 
  12068     uint8 *data, 
  12069     uint8 *mask);
  12070 
  12071 /* 
  12072  * Get match criteria for bcmFieldQualifyHiGig
  12073  *                qualifier from the field entry.
  12074  */
  12075 extern int bcm_field_qualify_HiGig_get(
  12076     int unit, 
  12077     bcm_field_entry_t entry, 
  12078     uint8 *data, 
  12079     uint8 *mask);
  12080 
  12081 /* 
  12082  * Get match criteria for bcmFieldQualifyHiGigProxy
  12083  *                qualifier from the field entry.
  12084  */
  12085 extern int bcm_field_qualify_HiGigProxy_get(
  12086     int unit, 
  12087     bcm_field_entry_t entry, 
  12088     uint8 *data, 
  12089     uint8 *mask);
  12090 
  12091 /* 
  12092  * Get match criteria for bcmFieldQualifyInterfaceClassPort
  12093  *                qualifier from the field entry.
  12094  */
  12095 extern int bcm_field_qualify_InterfaceClassPort_get(
  12096     int unit, 
  12097     bcm_field_entry_t entry, 
  12098     uint32 *data, 
  12099     uint32 *mask);
  12100 
  12101 /* 
  12102  * Get match criteria for bcmFieldQualifyInterfaceClassL2
  12103  *                qualifier from the field entry.
  12104  */
  12105 extern int bcm_field_qualify_InterfaceClassL2_get(
  12106     int unit, 
  12107     bcm_field_entry_t entry, 
  12108     uint32 *data, 
  12109     uint32 *mask);
  12110 
  12111 /* 
  12112  * Get match criteria for bcmFieldQualifyInterfaceClassL3
  12113  *                qualifier from the field entry.
  12114  */
  12115 extern int bcm_field_qualify_InterfaceClassL3_get(
  12116     int unit, 
  12117     bcm_field_entry_t entry, 
  12118     uint32 *data, 
  12119     uint32 *mask);
  12120 
  12121 /* 
  12122  * Get match criteria for bcmFieldQualifySrcClassL2
  12123  *                qualifier from the field entry.
  12124  */
  12125 extern int bcm_field_qualify_SrcClassL2_get(
  12126     int unit, 
  12127     bcm_field_entry_t entry, 
  12128     uint32 *data, 
  12129     uint32 *mask);
  12130 
  12131 /* 
  12132  * Get match criteria for bcmFieldQualifySrcClassL3
  12133  *                qualifier from the field entry.
  12134  */
  12135 extern int bcm_field_qualify_SrcClassL3_get(
  12136     int unit, 
  12137     bcm_field_entry_t entry, 
  12138     uint32 *data, 
  12139     uint32 *mask);
  12140 
  12141 /* 
  12142  * Get match criteria for bcmFieldQualifySrcClassField
  12143  *                qualifier from the field entry.
  12144  */
  12145 extern int bcm_field_qualify_SrcClassField_get(
  12146     int unit, 
  12147     bcm_field_entry_t entry, 
  12148     uint32 *data, 
  12149     uint32 *mask);
  12150 
  12151 /* 
  12152  * Get match criteria for bcmFieldQualifyDstClassL2
  12153  *                qualifier from the field entry.
  12154  */
  12155 extern int bcm_field_qualify_DstClassL2_get(
  12156     int unit, 
  12157     bcm_field_entry_t entry, 
  12158     uint32 *data, 
  12159     uint32 *mask);
  12160 
  12161 /* 
  12162  * Get match criteria for bcmFieldQualifyDstClassL3
  12163  *                qualifier from the field entry.
  12164  */
  12165 extern int bcm_field_qualify_DstClassL3_get(
  12166     int unit, 
  12167     bcm_field_entry_t entry, 
  12168     uint32 *data, 
  12169     uint32 *mask);
  12170 
  12171 /* 
  12172  * Get match criteria for bcmFieldQualifyDstClassField
  12173  *                qualifier from the field entry.
  12174  */
  12175 extern int bcm_field_qualify_DstClassField_get(
  12176     int unit, 
  12177     bcm_field_entry_t entry, 
  12178     uint32 *data, 
  12179     uint32 *mask);
  12180 
  12181 /* 
  12182  * Get match criteria for bcmFieldQualifyIpProtocolCommon
  12183  *                qualifier from the field entry.
  12184  */
  12185 extern int bcm_field_qualify_IpProtocolCommon_get(
  12186     int unit, 
  12187     bcm_field_entry_t entry, 
  12188     bcm_field_IpProtocolCommon_t *protocol);
  12189 
  12190 /* 
  12191  * Get match criteria for bcmFieldQualifyInnerIpProtocolCommon
  12192  *                qualifier from the field entry.
  12193  */
  12194 extern int bcm_field_qualify_InnerIpProtocolCommon_get(
  12195     int unit, 
  12196     bcm_field_entry_t entry, 
  12197     bcm_field_IpProtocolCommon_t *protocol);
  12198 
  12199 /* 
  12200  * Get match criteria for bcmFieldQualifySnap
  12201  *                qualifier from the field entry.
  12202  */
  12203 extern int bcm_field_qualify_Snap_get(
  12204     int unit, 
  12205     bcm_field_entry_t entry, 
  12206     bcm_field_snap_header_t *data, 
  12207     bcm_field_snap_header_t *mask);
  12208 
  12209 /* 
  12210  * Get match criteria for bcmFieldQualifyLlc
  12211  *                qualifier from the field entry.
  12212  */
  12213 extern int bcm_field_qualify_Llc_get(
  12214     int unit, 
  12215     bcm_field_entry_t entry, 
  12216     bcm_field_llc_header_t *data, 
  12217     bcm_field_llc_header_t *mask);
  12218 
  12219 /* 
  12220  * Get match criteria for bcmFieldQualifyInnerTpid
  12221  *                qualifier from the field entry.
  12222  */
  12223 extern int bcm_field_qualify_InnerTpid_get(
  12224     int unit, 
  12225     bcm_field_entry_t entry, 
  12226     uint16 *tpid);
  12227 
  12228 /* 
  12229  * Get match criteria for bcmFieldQualifyOuterTpid
  12230  *                qualifier from the field entry.
  12231  */
  12232 extern int bcm_field_qualify_OuterTpid_get(
  12233     int unit, 
  12234     bcm_field_entry_t entry, 
  12235     uint16 *tpid);
  12236 
  12237 /* 
  12238  * Get match criteria for bcmFieldQualifyL3Routable
  12239  *                qualifier from the field entry.
  12240  */
  12241 extern int bcm_field_qualify_L3Routable_get(
  12242     int unit, 
  12243     bcm_field_entry_t entry, 
  12244     uint8 *data, 
  12245     uint8 *mask);
  12246 
  12247 /* 
  12248  * Get match criteria for bcmFieldQualifyIpFrag
  12249  *                qualifier from the field entry.
  12250  */
  12251 extern int bcm_field_qualify_IpFrag_get(
  12252     int unit, 
  12253     bcm_field_entry_t entry, 
  12254     bcm_field_IpFrag_t *frag_info);
  12255 
  12256 /* 
  12257  * Get match criteria for bcmFieldQualifyVrf
  12258  *                qualifier from the field entry.
  12259  */
  12260 extern int bcm_field_qualify_Vrf_get(
  12261     int unit, 
  12262     bcm_field_entry_t entry, 
  12263     uint32 *data, 
  12264     uint32 *mask);
  12265 
  12266 /* 
  12267  * Get match criteria for bcmFieldQualifyL3Ingress
  12268  *                qualifier from the field entry.
  12269  */
  12270 extern int bcm_field_qualify_L3Ingress_get(
  12271     int unit, 
  12272     bcm_field_entry_t entry, 
  12273     uint32 *data, 
  12274     uint32 *mask);
  12275 
  12276 /* 
  12277  * Get match criteria for bcmFieldQualifyExtensionHeaderType
  12278  *                qualifier from the field entry.
  12279  */
  12280 extern int bcm_field_qualify_ExtensionHeaderType_get(
  12281     int unit, 
  12282     bcm_field_entry_t entry, 
  12283     uint8 *data, 
  12284     uint8 *mask);
  12285 
  12286 /* 
  12287  * Get match criteria for bcmFieldQualifyExtensionHeaderSubCode
  12288  *                qualifier from the field entry.
  12289  */
  12290 extern int bcm_field_qualify_ExtensionHeaderSubCode_get(
  12291     int unit, 
  12292     bcm_field_entry_t entry, 
  12293     uint8 *data, 
  12294     uint8 *mask);
  12295 
  12296 /* 
  12297  * Get match criteria for bcmFieldQualifyExtensionHeader2Type
  12298  *                qualifier from the field entry.
  12299  */
  12300 extern int bcm_field_qualify_ExtensionHeader2Type_get(
  12301     int unit, 
  12302     bcm_field_entry_t entry, 
  12303     uint8 *data, 
  12304     uint8 *mask);
  12305 
  12306 /* 
  12307  * Get match criteria for bcmFieldQualifySampledPkt
  12308  *                qualifier from the field entry.
  12309  */
  12310 extern int bcm_field_qualify_SampledPkt_get(
  12311     int unit, 
  12312     bcm_field_entry_t entry, 
  12313     uint8 *data, 
  12314     uint8 *mask);
  12315 
  12316 /* 
  12317  * Get match criteria for bcmFieldQualifySrcIp6SrhValid
  12318  *                qualifier from the field entry.
  12319  */
  12320 extern int bcm_field_qualify_SrcIp6SrhValid_get(
  12321     int unit, 
  12322     bcm_field_entry_t entry, 
  12323     uint8 *data, 
  12324     uint8 *mask);
  12325 
  12326 /* 
  12327  * Get match criteria for bcmFieldQualifyL4Ports
  12328  *                qualifier from the field entry.
  12329  */
  12330 extern int bcm_field_qualify_L4Ports_get(
  12331     int unit, 
  12332     bcm_field_entry_t entry, 
  12333     uint8 *data, 
  12334     uint8 *mask);
  12335 
  12336 /* 
  12337  * Get match criteria for bcmFieldQualifyMirrorCopy
  12338  *                qualifier from the field entry.
  12339  */
  12340 extern int bcm_field_qualify_MirrorCopy_get(
  12341     int unit, 
  12342     bcm_field_entry_t entry, 
  12343     uint8 *data, 
  12344     uint8 *mask);
  12345 
  12346 /* 
  12347  * Get match criteria for bcmFieldQualifyPphType
  12348  *                qualifier from the field entry.
  12349  */
  12350 extern int bcm_field_qualify_PphType_get(
  12351     int unit, 
  12352     bcm_field_entry_t entry, 
  12353     uint8 *data, 
  12354     uint8 *mask);
  12355 
  12356 /* 
  12357  * Get match criteria for
  12358  * bcmFieldQualifyTunnelTerminationProcessingProfile
  12359  *                qualifier from the field entry.
  12360  */
  12361 extern int bcm_field_qualify_TunnelTerminationProcessingProfile_get(
  12362     int unit, 
  12363     bcm_field_entry_t entry, 
  12364     uint8 *data, 
  12365     uint8 *mask);
  12366 
  12367 /* 
  12368  * Get match criteria for bcmFieldQualifyTunnelTerminated
  12369  *                qualifier from the field entry.
  12370  */
  12371 extern int bcm_field_qualify_TunnelTerminated_get(
  12372     int unit, 
  12373     bcm_field_entry_t entry, 
  12374     uint8 *data, 
  12375     uint8 *mask);
  12376 
  12377 /* 
  12378  * Get match criteria for bcmFieldQualifyMplsTerminated
  12379  *                qualifier from the field entry.
  12380  */
  12381 extern int bcm_field_qualify_MplsTerminated_get(
  12382     int unit, 
  12383     bcm_field_entry_t entry, 
  12384     uint8 *data, 
  12385     uint8 *mask);
  12386 
  12387 /* 
  12388  * Get match criteria for bcmFieldQualifyInnerSrcIp
  12389  *                qualifier from the field entry.
  12390  */
  12391 extern int bcm_field_qualify_InnerSrcIp_get(
  12392     int unit, 
  12393     bcm_field_entry_t entry, 
  12394     bcm_ip_t *data, 
  12395     bcm_ip_t *mask);
  12396 
  12397 /* 
  12398  * Get match criteria for bcmFieldQualifyInnerDstIp
  12399  *                qualifier from the field entry.
  12400  */
  12401 extern int bcm_field_qualify_InnerDstIp_get(
  12402     int unit, 
  12403     bcm_field_entry_t entry, 
  12404     bcm_ip_t *data, 
  12405     bcm_ip_t *mask);
  12406 
  12407 /* 
  12408  * Get match criteria for bcmFieldQualifyInnerSrcIp6
  12409  *                qualifier from the field entry.
  12410  */
  12411 extern int bcm_field_qualify_InnerSrcIp6_get(
  12412     int unit, 
  12413     bcm_field_entry_t entry, 
  12414     bcm_ip6_t *data, 
  12415     bcm_ip6_t *mask);
  12416 
  12417 /* 
  12418  * Get match criteria for bcmFieldQualifyInnerDstIp6
  12419  *                qualifier from the field entry.
  12420  */
  12421 extern int bcm_field_qualify_InnerDstIp6_get(
  12422     int unit, 
  12423     bcm_field_entry_t entry, 
  12424     bcm_ip6_t *data, 
  12425     bcm_ip6_t *mask);
  12426 
  12427 /* 
  12428  * Get match criteria for bcmFieldQualifyInnerSrcIp6High
  12429  *                qualifier from the field entry.
  12430  */
  12431 extern int bcm_field_qualify_InnerSrcIp6High_get(
  12432     int unit, 
  12433     bcm_field_entry_t entry, 
  12434     bcm_ip6_t *data, 
  12435     bcm_ip6_t *mask);
  12436 
  12437 /* 
  12438  * Get match criteria for bcmFieldQualifyInnerDstIp6High
  12439  *                qualifier from the field entry.
  12440  */
  12441 extern int bcm_field_qualify_InnerDstIp6High_get(
  12442     int unit, 
  12443     bcm_field_entry_t entry, 
  12444     bcm_ip6_t *data, 
  12445     bcm_ip6_t *mask);
  12446 
  12447 /* 
  12448  * Get match criteria for bcmFieldQualifyInnerTtl
  12449  *                qualifier from the field entry.
  12450  */
  12451 extern int bcm_field_qualify_InnerTtl_get(
  12452     int unit, 
  12453     bcm_field_entry_t entry, 
  12454     uint8 *data, 
  12455     uint8 *mask);
  12456 
  12457 /* 
  12458  * Get match criteria for bcmFieldQualifyInnerIp6HopLimit
  12459  *                qualifier from the field entry.
  12460  */
  12461 extern int bcm_field_qualify_InnerIp6HopLimit_get(
  12462     int unit, 
  12463     bcm_field_entry_t entry, 
  12464     uint8 *data, 
  12465     uint8 *mask);
  12466 
  12467 /* 
  12468  * Get match criteria for bcmFieldQualifyInnerTos
  12469  *                qualifier from the field entry.
  12470  */
  12471 extern int bcm_field_qualify_InnerTos_get(
  12472     int unit, 
  12473     bcm_field_entry_t entry, 
  12474     uint8 *data, 
  12475     uint8 *mask);
  12476 
  12477 /* 
  12478  * Get match criteria for bcmFieldQualifyInnerDSCP
  12479  *                qualifier from the field entry.
  12480  */
  12481 extern int bcm_field_qualify_InnerDSCP_get(
  12482     int unit, 
  12483     bcm_field_entry_t entry, 
  12484     uint8 *data, 
  12485     uint8 *mask);
  12486 
  12487 /* 
  12488  * Get match criteria for bcmFieldQualifyInnerIpProtocol
  12489  *                qualifier from the field entry.
  12490  */
  12491 extern int bcm_field_qualify_InnerIpProtocol_get(
  12492     int unit, 
  12493     bcm_field_entry_t entry, 
  12494     uint8 *data, 
  12495     uint8 *mask);
  12496 
  12497 /* 
  12498  * Get match criteria for bcmFieldQualifyInnerIp6NextHeader
  12499  *                qualifier from the field entry.
  12500  */
  12501 extern int bcm_field_qualify_InnerIp6NextHeader_get(
  12502     int unit, 
  12503     bcm_field_entry_t entry, 
  12504     uint8 *data, 
  12505     uint8 *mask);
  12506 
  12507 /* 
  12508  * Get match criteria for bcmFieldQualifyInnerIpFrag
  12509  *                qualifier from the field entry.
  12510  */
  12511 extern int bcm_field_qualify_InnerIpFrag_get(
  12512     int unit, 
  12513     bcm_field_entry_t entry, 
  12514     bcm_field_IpFrag_t *frag_info);
  12515 
  12516 /* 
  12517  * Get match criteria for bcmFieldQualifyDosAttack
  12518  *                qualifier from the field entry.
  12519  */
  12520 extern int bcm_field_qualify_DosAttack_get(
  12521     int unit, 
  12522     bcm_field_entry_t entry, 
  12523     uint8 *data, 
  12524     uint8 *mask);
  12525 
  12526 /* 
  12527  * Get match criteria for bcmFieldQualifyIpmcStarGroupHit
  12528  *                qualifier from the field entry.
  12529  */
  12530 extern int bcm_field_qualify_IpmcStarGroupHit_get(
  12531     int unit, 
  12532     bcm_field_entry_t entry, 
  12533     uint8 *data, 
  12534     uint8 *mask);
  12535 
  12536 /* 
  12537  * Get match criteria for bcmFieldQualifyMyStationHit
  12538  *                qualifier from the field entry.
  12539  */
  12540 extern int bcm_field_qualify_MyStationHit_get(
  12541     int unit, 
  12542     bcm_field_entry_t entry, 
  12543     uint8 *data, 
  12544     uint8 *mask);
  12545 
  12546 /* 
  12547  * Get match criteria for bcmFieldQualifyL2PayloadFirstEightBytes
  12548  *                qualifier from the field entry.
  12549  */
  12550 extern int bcm_field_qualify_L2PayloadFirstEightBytes_get(
  12551     int unit, 
  12552     bcm_field_entry_t entry, 
  12553     uint32 *data1, 
  12554     uint32 *data2, 
  12555     uint32 *mask1, 
  12556     uint32 *mask2);
  12557 
  12558 /* 
  12559  * Get match criteria for bcmFieldQualifyL3DestRouteHit
  12560  *                qualifier from the field entry.
  12561  */
  12562 extern int bcm_field_qualify_L3DestRouteHit_get(
  12563     int unit, 
  12564     bcm_field_entry_t entry, 
  12565     uint8 *data, 
  12566     uint8 *mask);
  12567 
  12568 /* 
  12569  * Get match criteria for bcmFieldQualifyL3DestHostHit
  12570  *                qualifier from the field entry.
  12571  */
  12572 extern int bcm_field_qualify_L3DestHostHit_get(
  12573     int unit, 
  12574     bcm_field_entry_t entry, 
  12575     uint8 *data, 
  12576     uint8 *mask);
  12577 
  12578 /* 
  12579  * Get match criteria for bcmFieldQualifyL3SrcHostHit
  12580  *                qualifier from the field entry.
  12581  */
  12582 extern int bcm_field_qualify_L3SrcHostHit_get(
  12583     int unit, 
  12584     bcm_field_entry_t entry, 
  12585     uint8 *data, 
  12586     uint8 *mask);
  12587 
  12588 /* 
  12589  * Get match criteria for bcmFieldQualifyL2CacheHit
  12590  *                qualifier from the field entry.
  12591  */
  12592 extern int bcm_field_qualify_L2CacheHit_get(
  12593     int unit, 
  12594     bcm_field_entry_t entry, 
  12595     uint8 *data, 
  12596     uint8 *mask);
  12597 
  12598 /* 
  12599  * Get match criteria for bcmFieldQualifyL2StationMove
  12600  *                qualifier from the field entry.
  12601  */
  12602 extern int bcm_field_qualify_L2StationMove_get(
  12603     int unit, 
  12604     bcm_field_entry_t entry, 
  12605     uint8 *data, 
  12606     uint8 *mask);
  12607 
  12608 /* 
  12609  * Get match criteria for bcmFieldQualifyL2DestHit
  12610  *                qualifier from the field entry.
  12611  */
  12612 extern int bcm_field_qualify_L2DestHit_get(
  12613     int unit, 
  12614     bcm_field_entry_t entry, 
  12615     uint8 *data, 
  12616     uint8 *mask);
  12617 
  12618 /* 
  12619  * Get match criteria for bcmFieldQualifyL2SrcStatic
  12620  *                qualifier from the field entry.
  12621  */
  12622 extern int bcm_field_qualify_L2SrcStatic_get(
  12623     int unit, 
  12624     bcm_field_entry_t entry, 
  12625     uint8 *data, 
  12626     uint8 *mask);
  12627 
  12628 /* 
  12629  * Get match criteria for bcmFieldQualifyL2SrcHit
  12630  *                qualifier from the field entry.
  12631  */
  12632 extern int bcm_field_qualify_L2SrcHit_get(
  12633     int unit, 
  12634     bcm_field_entry_t entry, 
  12635     uint8 *data, 
  12636     uint8 *mask);
  12637 
  12638 /* 
  12639  * Get match criteria for bcmFieldQualifyIngressStpState
  12640  *                qualifier from the field entry.
  12641  */
  12642 extern int bcm_field_qualify_IngressStpState_get(
  12643     int unit, 
  12644     bcm_field_entry_t entry, 
  12645     uint8 *data, 
  12646     uint8 *mask);
  12647 
  12648 /* 
  12649  * Get match criteria for bcmFieldQualifyForwardingVlanValid
  12650  *                qualifier from the field entry.
  12651  */
  12652 extern int bcm_field_qualify_ForwardingVlanValid_get(
  12653     int unit, 
  12654     bcm_field_entry_t entry, 
  12655     uint8 *data, 
  12656     uint8 *mask);
  12657 
  12658 /* 
  12659  * Get match criteria for bcmFieldQualifySrcVirtualPortValid
  12660  *                qualifier from the field entry.
  12661  */
  12662 extern int bcm_field_qualify_SrcVirtualPortValid_get(
  12663     int unit, 
  12664     bcm_field_entry_t entry, 
  12665     uint8 *data, 
  12666     uint8 *mask);
  12667 
  12668 /* 
  12669  * Get match criteria for bcmFieldQualifyDstL3EgressNextHops
  12670  *                 qualifier from the field entry.
  12671  */
  12672 extern int bcm_field_qualify_DstL3EgressNextHops_get(
  12673     int unit, 
  12674     bcm_field_entry_t entry, 
  12675     uint32 *data, 
  12676     uint32 *mask);
  12677 
  12678 /* 
  12679  * Get match criteria for bcmFieldQualifyVlanTranslationHit
  12680  *                qualifier from the field entry.
  12681  */
  12682 extern int bcm_field_qualify_VlanTranslationHit_get(
  12683     int unit, 
  12684     bcm_field_entry_t entry, 
  12685     uint8 *data, 
  12686     uint8 *mask);
  12687 
  12688 /* 
  12689  * Get match criteria for bcmFieldQualifyIcmpTypeCode
  12690  *                qualifier from the field entry.
  12691  */
  12692 extern int bcm_field_qualify_IcmpTypeCode_get(
  12693     int unit, 
  12694     bcm_field_entry_t entry, 
  12695     uint16 *data, 
  12696     uint16 *mask);
  12697 
  12698 /* 
  12699  * Get Fibre Channel outer header type field qualification from a field
  12700  * entry.
  12701  */
  12702 extern int bcm_field_qualify_FibreChanOuter_get(
  12703     int unit, 
  12704     bcm_field_entry_t entry, 
  12705     bcm_field_FibreChan_t *fibre_chan_type);
  12706 
  12707 /* 
  12708  * Get Fibre Channel inner header type field qualification from a field
  12709  * entry.
  12710  */
  12711 extern int bcm_field_qualify_FibreChanInner_get(
  12712     int unit, 
  12713     bcm_field_entry_t entry, 
  12714     bcm_field_FibreChan_t *fibre_chan_type);
  12715 
  12716 /* 
  12717  * Get match criteria for bcmFieldQualifyVnTag
  12718  *                qualifier from the field entry.
  12719  */
  12720 extern int bcm_field_qualify_VnTag_get(
  12721     int unit, 
  12722     bcm_field_entry_t entry, 
  12723     uint32 *data, 
  12724     uint32 *mask);
  12725 
  12726 /* 
  12727  * Get match criteria for bcmFieldQualifySubportPktTag
  12728  *                qualifier from the field entry.
  12729  */
  12730 extern int bcm_field_qualify_SubportPktTag_get(
  12731     int unit, 
  12732     bcm_field_entry_t entry, 
  12733     uint16 *data, 
  12734     uint16 *mask);
  12735 
  12736 /* 
  12737  * Get match criteria for bcmFieldQualifyCnTag
  12738  *                qualifier from the field entry.
  12739  */
  12740 extern int bcm_field_qualify_CnTag_get(
  12741     int unit, 
  12742     bcm_field_entry_t entry, 
  12743     uint32 *data, 
  12744     uint32 *mask);
  12745 
  12746 /* 
  12747  * Get match criteria for bcmFieldQualifyFabricQueueTag
  12748  *                qualifier from the field entry.
  12749  */
  12750 extern int bcm_field_qualify_FabricQueueTag_get(
  12751     int unit, 
  12752     bcm_field_entry_t entry, 
  12753     uint32 *data, 
  12754     uint32 *mask);
  12755 
  12756 /* bcm_field_qualify_FlowId */
  12757 extern int bcm_field_qualify_FlowId(
  12758     int unit, 
  12759     bcm_field_entry_t entry, 
  12760     uint16 data, 
  12761     uint16 mask);
  12762 
  12763 /* bcm_field_qualify_InVPort */
  12764 extern int bcm_field_qualify_InVPort(
  12765     int unit, 
  12766     bcm_field_entry_t entry, 
  12767     uint8 data, 
  12768     uint8 mask);
  12769 
  12770 /* bcm_field_qualify_OutVPort */
  12771 extern int bcm_field_qualify_OutVPort(
  12772     int unit, 
  12773     bcm_field_entry_t entry, 
  12774     uint8 data, 
  12775     uint8 mask);
  12776 
  12777 /* bcm_field_qualify_InVPort32 */
  12778 extern int bcm_field_qualify_InVPort32(
  12779     int unit, 
  12780     bcm_field_entry_t entry, 
  12781     uint32 data, 
  12782     uint32 mask);
  12783 
  12784 /* bcm_field_qualify_OutVPort32 */
  12785 extern int bcm_field_qualify_OutVPort32(
  12786     int unit, 
  12787     bcm_field_entry_t entry, 
  12788     uint32 data, 
  12789     uint32 mask);
  12790 
  12791 /* 
  12792  * Get match criteria for bcmFieldQualifyFlowId
  12793  *                qualifier from the field entry.
  12794  */
  12795 extern int bcm_field_qualify_FlowId_get(
  12796     int unit, 
  12797     bcm_field_entry_t entry, 
  12798     uint16 *data, 
  12799     uint16 *mask);
  12800 
  12801 /* 
  12802  * Get match criteria for bcmFieldQualifyInVPort
  12803  *                qualifier from the field entry (8-bits).
  12804  */
  12805 extern int bcm_field_qualify_InVPort_get(
  12806     int unit, 
  12807     bcm_field_entry_t entry, 
  12808     uint8 *data, 
  12809     uint8 *mask);
  12810 
  12811 /* 
  12812  * Get match criteria for bcmFieldQualifyOutVPort
  12813  *                qualifier from the field entry (8-bits).
  12814  */
  12815 extern int bcm_field_qualify_OutVPort_get(
  12816     int unit, 
  12817     bcm_field_entry_t entry, 
  12818     uint8 *data, 
  12819     uint8 *mask);
  12820 
  12821 /* 
  12822  * Get match criteria for bcmFieldQualifyInVPort
  12823  *                qualifier from the field entry (32-bits).
  12824  */
  12825 extern int bcm_field_qualify_InVPort32_get(
  12826     int unit, 
  12827     bcm_field_entry_t entry, 
  12828     uint32 *data, 
  12829     uint32 *mask);
  12830 
  12831 /* 
  12832  * Get match criteria for bcmFieldQualifyOutVPort
  12833  *                qualifier from the field entry (32-bits).
  12834  */
  12835 extern int bcm_field_qualify_OutVPort32_get(
  12836     int unit, 
  12837     bcm_field_entry_t entry, 
  12838     uint32 *data, 
  12839     uint32 *mask);
  12840 
  12841 /* bcm_field_qualify_LlidValue */
  12842 extern int bcm_field_qualify_LlidValue(
  12843     int unit, 
  12844     bcm_field_entry_t entry, 
  12845     uint16 data, 
  12846     uint16 mask);
  12847 
  12848 /* 
  12849  * Get LLID value for bcmFieldQualifyLlidValue
  12850  *                qualifier from the field entry.
  12851  */
  12852 extern int bcm_field_qualify_LlidValue_get(
  12853     int unit, 
  12854     bcm_field_entry_t entry, 
  12855     uint16 *data, 
  12856     uint16 *mask);
  12857 
  12858 /* 
  12859  * Set match criteria for RecoverableDrop
  12860  *                qualifier.
  12861  */
  12862 extern int bcm_field_qualify_RecoverableDrop(
  12863     int unit, 
  12864     bcm_field_entry_t entry, 
  12865     uint8 data, 
  12866     uint8 mask);
  12867 
  12868 /* 
  12869  * Get match criteria for RecoverableDrop
  12870  *                qualifier.
  12871  */
  12872 extern int bcm_field_qualify_RecoverableDrop_get(
  12873     int unit, 
  12874     bcm_field_entry_t entry, 
  12875     uint8 *data, 
  12876     uint8 *mask);
  12877 
  12878 /* 
  12879  * Set match criteria for RepCopy
  12880  *                qualifier.
  12881  */
  12882 extern int bcm_field_qualify_RepCopy(
  12883     int unit, 
  12884     bcm_field_entry_t entry, 
  12885     uint8 data, 
  12886     uint8 mask);
  12887 
  12888 /* 
  12889  * Get match criteria for RepCopy
  12890  *                qualifier.
  12891  */
  12892 extern int bcm_field_qualify_RepCopy_get(
  12893     int unit, 
  12894     bcm_field_entry_t entry, 
  12895     uint8 *data, 
  12896     uint8 *mask);
  12897 
  12898 /* 
  12899  * Set match criteria for IpTunnelHit
  12900  *                qualifier.
  12901  */
  12902 extern int bcm_field_qualify_IpTunnelHit(
  12903     int unit, 
  12904     bcm_field_entry_t entry, 
  12905     uint8 data, 
  12906     uint8 mask);
  12907 
  12908 /* 
  12909  * Get match criteria for IpTunnelHit
  12910  *                qualifier.
  12911  */
  12912 extern int bcm_field_qualify_IpTunnelHit_get(
  12913     int unit, 
  12914     bcm_field_entry_t entry, 
  12915     uint8 *data, 
  12916     uint8 *mask);
  12917 
  12918 /* 
  12919  * Set match criteria for MplsLabel1Hit
  12920  *                qualifier.
  12921  */
  12922 extern int bcm_field_qualify_MplsLabel1Hit(
  12923     int unit, 
  12924     bcm_field_entry_t entry, 
  12925     uint8 data, 
  12926     uint8 mask);
  12927 
  12928 /* 
  12929  * Get match criteria for MplsLabel1Hit
  12930  *                qualifier.
  12931  */
  12932 extern int bcm_field_qualify_MplsLabel1Hit_get(
  12933     int unit, 
  12934     bcm_field_entry_t entry, 
  12935     uint8 *data, 
  12936     uint8 *mask);
  12937 
  12938 /* 
  12939  * Set match criteria for TrillEgressRbridgeHit
  12940  *                qualifier.
  12941  */
  12942 extern int bcm_field_qualify_TrillEgressRbridgeHit(
  12943     int unit, 
  12944     bcm_field_entry_t entry, 
  12945     uint8 data, 
  12946     uint8 mask);
  12947 
  12948 /* 
  12949  * Get match criteria for TrillEgressRbridgeHit
  12950  *                qualifier.
  12951  */
  12952 extern int bcm_field_qualify_TrillEgressRbridgeHit_get(
  12953     int unit, 
  12954     bcm_field_entry_t entry, 
  12955     uint8 *data, 
  12956     uint8 *mask);
  12957 
  12958 /* 
  12959  * Set match criteria for L2GreSrcIpHit
  12960  *                qualifier.
  12961  */
  12962 extern int bcm_field_qualify_L2GreSrcIpHit(
  12963     int unit, 
  12964     bcm_field_entry_t entry, 
  12965     uint8 data, 
  12966     uint8 mask);
  12967 
  12968 /* 
  12969  * Get match criteria for L2GreSrcIpHit
  12970  *                qualifier.
  12971  */
  12972 extern int bcm_field_qualify_L2GreSrcIpHit_get(
  12973     int unit, 
  12974     bcm_field_entry_t entry, 
  12975     uint8 *data, 
  12976     uint8 *mask);
  12977 
  12978 /* 
  12979  * Set match criteria for MimSrcGportHit
  12980  *                qualifier.
  12981  */
  12982 extern int bcm_field_qualify_MimSrcGportHit(
  12983     int unit, 
  12984     bcm_field_entry_t entry, 
  12985     uint8 data, 
  12986     uint8 mask);
  12987 
  12988 /* 
  12989  * Get match criteria for MimSrcGportHit
  12990  *                qualifier.
  12991  */
  12992 extern int bcm_field_qualify_MimSrcGportHit_get(
  12993     int unit, 
  12994     bcm_field_entry_t entry, 
  12995     uint8 *data, 
  12996     uint8 *mask);
  12997 
  12998 /* 
  12999  * Set match criteria for MplsLabel2Hit
  13000  *                qualifier.
  13001  */
  13002 extern int bcm_field_qualify_MplsLabel2Hit(
  13003     int unit, 
  13004     bcm_field_entry_t entry, 
  13005     uint8 data, 
  13006     uint8 mask);
  13007 
  13008 /* 
  13009  * Get match criteria for MplsLabel2Hit
  13010  *                qualifier.
  13011  */
  13012 extern int bcm_field_qualify_MplsLabel2Hit_get(
  13013     int unit, 
  13014     bcm_field_entry_t entry, 
  13015     uint8 *data, 
  13016     uint8 *mask);
  13017 
  13018 /* 
  13019  * Set match criteria for TrillIngressRbridgeHit
  13020  *                qualifier.
  13021  */
  13022 extern int bcm_field_qualify_TrillIngressRbridgeHit(
  13023     int unit, 
  13024     bcm_field_entry_t entry, 
  13025     uint8 data, 
  13026     uint8 mask);
  13027 
  13028 /* 
  13029  * Get match criteria for TrillIngressRbridgeHit
  13030  *                qualifier.
  13031  */
  13032 extern int bcm_field_qualify_TrillIngressRbridgeHit_get(
  13033     int unit, 
  13034     bcm_field_entry_t entry, 
  13035     uint8 *data, 
  13036     uint8 *mask);
  13037 
  13038 /* 
  13039  * Set match criteria for L2GreVfiHit
  13040  *                qualifier.
  13041  */
  13042 extern int bcm_field_qualify_L2GreVfiHit(
  13043     int unit, 
  13044     bcm_field_entry_t entry, 
  13045     uint8 data, 
  13046     uint8 mask);
  13047 
  13048 /* 
  13049  * Get match criteria for L2GreVfiHit
  13050  *                qualifier.
  13051  */
  13052 extern int bcm_field_qualify_L2GreVfiHit_get(
  13053     int unit, 
  13054     bcm_field_entry_t entry, 
  13055     uint8 *data, 
  13056     uint8 *mask);
  13057 
  13058 /* 
  13059  * Set match criteria for MimVfiHit
  13060  *                qualifier.
  13061  */
  13062 extern int bcm_field_qualify_MimVfiHit(
  13063     int unit, 
  13064     bcm_field_entry_t entry, 
  13065     uint8 data, 
  13066     uint8 mask);
  13067 
  13068 /* 
  13069  * Get match criteria for MimVfiHit
  13070  *                qualifier.
  13071  */
  13072 extern int bcm_field_qualify_MimVfiHit_get(
  13073     int unit, 
  13074     bcm_field_entry_t entry, 
  13075     uint8 *data, 
  13076     uint8 *mask);
  13077 
  13078 /* 
  13079  * Set match criteria for GenericAssociatedChannelLabelValid
  13080  *                qualifier.
  13081  */
  13082 extern int bcm_field_qualify_GenericAssociatedChannelLabelValid(
  13083     int unit, 
  13084     bcm_field_entry_t entry, 
  13085     uint8 data, 
  13086     uint8 mask);
  13087 
  13088 /* 
  13089  * Get match criteria for GenericAssociatedChannelLabelValid
  13090  *                qualifier.
  13091  */
  13092 extern int bcm_field_qualify_GenericAssociatedChannelLabelValid_get(
  13093     int unit, 
  13094     bcm_field_entry_t entry, 
  13095     uint8 *data, 
  13096     uint8 *mask);
  13097 
  13098 /* 
  13099  * Set match criteria for RouterAlertLabelValid
  13100  *                qualifier.
  13101  */
  13102 extern int bcm_field_qualify_RouterAlertLabelValid(
  13103     int unit, 
  13104     bcm_field_entry_t entry, 
  13105     uint8 data, 
  13106     uint8 mask);
  13107 
  13108 /* 
  13109  * Get match criteria for RouterAlertLabelValid
  13110  *                qualifier.
  13111  */
  13112 extern int bcm_field_qualify_RouterAlertLabelValid_get(
  13113     int unit, 
  13114     bcm_field_entry_t entry, 
  13115     uint8 *data, 
  13116     uint8 *mask);
  13117 
  13118 /* 
  13119  * Set match criteria for DspIpLocal
  13120  *                qualifier.
  13121  */
  13122 extern int bcm_field_qualify_DstIpLocal(
  13123     int unit, 
  13124     bcm_field_entry_t entry, 
  13125     uint8 data, 
  13126     uint8 mask);
  13127 
  13128 /* 
  13129  * Get match criteria for DspIpLocal
  13130  *                qualifier.
  13131  */
  13132 extern int bcm_field_qualify_DstIpLocal_get(
  13133     int unit, 
  13134     bcm_field_entry_t entry, 
  13135     uint8 *data, 
  13136     uint8 *mask);
  13137 
  13138 /* 
  13139  * Set match criteria for IpAddrsNormalized
  13140  *                qualifier.
  13141  */
  13142 extern int bcm_field_qualify_IpAddrsNormalized(
  13143     int unit, 
  13144     bcm_field_entry_t entry, 
  13145     uint8 data, 
  13146     uint8 mask);
  13147 
  13148 /* 
  13149  * Get match criteria for IpAddrsNormalized
  13150  *                qualifier.
  13151  */
  13152 extern int bcm_field_qualify_IpAddrsNormalized_get(
  13153     int unit, 
  13154     bcm_field_entry_t entry, 
  13155     uint8 *data, 
  13156     uint8 *mask);
  13157 
  13158 /* 
  13159  * Set match criteria for MacAddrsNormalized
  13160  *                qualifier.
  13161  */
  13162 extern int bcm_field_qualify_MacAddrsNormalized(
  13163     int unit, 
  13164     bcm_field_entry_t entry, 
  13165     uint8 data, 
  13166     uint8 mask);
  13167 
  13168 /* 
  13169  * Get match criteria for MacAddrsNormalized
  13170  *                qualifier.
  13171  */
  13172 extern int bcm_field_qualify_MacAddrsNormalized_get(
  13173     int unit, 
  13174     bcm_field_entry_t entry, 
  13175     uint8 *data, 
  13176     uint8 *mask);
  13177 
  13178 /* 
  13179  * Set match criteria for MplsForwardingLabel
  13180  *                qualifier.
  13181  */
  13182 extern int bcm_field_qualify_MplsForwardingLabel(
  13183     int unit, 
  13184     bcm_field_entry_t entry, 
  13185     uint32 data, 
  13186     uint32 mask);
  13187 
  13188 /* 
  13189  * Get match criteria for MplsForwardingLabel
  13190  *                qualifier.
  13191  */
  13192 extern int bcm_field_qualify_MplsForwardingLabel_get(
  13193     int unit, 
  13194     bcm_field_entry_t entry, 
  13195     uint32 *data, 
  13196     uint32 *mask);
  13197 
  13198 /* 
  13199  * Set match criteria for MplsForwardingLabelTtl
  13200  *                qualifier.
  13201  */
  13202 extern int bcm_field_qualify_MplsForwardingLabelTtl(
  13203     int unit, 
  13204     bcm_field_entry_t entry, 
  13205     uint8 data, 
  13206     uint8 mask);
  13207 
  13208 /* 
  13209  * Get match criteria for MplsForwardingLabelTtl
  13210  *                qualifier.
  13211  */
  13212 extern int bcm_field_qualify_MplsForwardingLabelTtl_get(
  13213     int unit, 
  13214     bcm_field_entry_t entry, 
  13215     uint8 *data, 
  13216     uint8 *mask);
  13217 
  13218 /* 
  13219  * Set match criteria for MplsForwardingLabelBos
  13220  *                qualifier.
  13221  */
  13222 extern int bcm_field_qualify_MplsForwardingLabelBos(
  13223     int unit, 
  13224     bcm_field_entry_t entry, 
  13225     uint8 data, 
  13226     uint8 mask);
  13227 
  13228 /* 
  13229  * Get match criteria for MplsForwardingLabelBos
  13230  *                qualifier.
  13231  */
  13232 extern int bcm_field_qualify_MplsForwardingLabelBos_get(
  13233     int unit, 
  13234     bcm_field_entry_t entry, 
  13235     uint8 *data, 
  13236     uint8 *mask);
  13237 
  13238 /* 
  13239  * Set match criteria for MplsForwardingLabelExp
  13240  *                qualifier.
  13241  */
  13242 extern int bcm_field_qualify_MplsForwardingLabelExp(
  13243     int unit, 
  13244     bcm_field_entry_t entry, 
  13245     uint8 data, 
  13246     uint8 mask);
  13247 
  13248 /* 
  13249  * Get match criteria for MplsForwardingLabelExp
  13250  *                qualifier.
  13251  */
  13252 extern int bcm_field_qualify_MplsForwardingLabelExp_get(
  13253     int unit, 
  13254     bcm_field_entry_t entry, 
  13255     uint8 *data, 
  13256     uint8 *mask);
  13257 
  13258 /* 
  13259  * Set match criteria for MplsForwardingLabelId
  13260  *                qualifier.
  13261  */
  13262 extern int bcm_field_qualify_MplsForwardingLabelId(
  13263     int unit, 
  13264     bcm_field_entry_t entry, 
  13265     uint32 data, 
  13266     uint32 mask);
  13267 
  13268 /* 
  13269  * Get match criteria for MplsForwardingLabelId
  13270  *                qualifier.
  13271  */
  13272 extern int bcm_field_qualify_MplsForwardingLabelId_get(
  13273     int unit, 
  13274     bcm_field_entry_t entry, 
  13275     uint32 *data, 
  13276     uint32 *mask);
  13277 
  13278 /* 
  13279  * Set match criteria for MplsControlWord
  13280  *                qualifier.
  13281  */
  13282 extern int bcm_field_qualify_MplsControlWord(
  13283     int unit, 
  13284     bcm_field_entry_t entry, 
  13285     uint32 data, 
  13286     uint32 mask);
  13287 
  13288 /* 
  13289  * Get match criteria for MplsControlWord
  13290  *                qualifier.
  13291  */
  13292 extern int bcm_field_qualify_MplsControlWord_get(
  13293     int unit, 
  13294     bcm_field_entry_t entry, 
  13295     uint32 *data, 
  13296     uint32 *mask);
  13297 
  13298 /* 
  13299  * Set match criteria for Rtag7AHashUpper
  13300  *                qualifier.
  13301  */
  13302 extern int bcm_field_qualify_Rtag7AHashUpper(
  13303     int unit, 
  13304     bcm_field_entry_t entry, 
  13305     uint16 data, 
  13306     uint16 mask);
  13307 
  13308 /* 
  13309  * Get match criteria for Rtag7AHashUpper
  13310  *                qualifier.
  13311  */
  13312 extern int bcm_field_qualify_Rtag7AHashUpper_get(
  13313     int unit, 
  13314     bcm_field_entry_t entry, 
  13315     uint16 *data, 
  13316     uint16 *mask);
  13317 
  13318 /* 
  13319  * Set match criteria for Rtag7AHashLower
  13320  *                qualifier.
  13321  */
  13322 extern int bcm_field_qualify_Rtag7AHashLower(
  13323     int unit, 
  13324     bcm_field_entry_t entry, 
  13325     uint16 data, 
  13326     uint16 mask);
  13327 
  13328 /* 
  13329  * Get match criteria for Rtag7AHashLower
  13330  *                qualifier.
  13331  */
  13332 extern int bcm_field_qualify_Rtag7AHashLower_get(
  13333     int unit, 
  13334     bcm_field_entry_t entry, 
  13335     uint16 *data, 
  13336     uint16 *mask);
  13337 
  13338 /* 
  13339  * Set match criteria for Rtag7BHashUpper
  13340  *                qualifier.
  13341  */
  13342 extern int bcm_field_qualify_Rtag7BHashUpper(
  13343     int unit, 
  13344     bcm_field_entry_t entry, 
  13345     uint16 data, 
  13346     uint16 mask);
  13347 
  13348 /* 
  13349  * Get match criteria for Rtag7BHashUpper
  13350  *                qualifier.
  13351  */
  13352 extern int bcm_field_qualify_Rtag7BHashUpper_get(
  13353     int unit, 
  13354     bcm_field_entry_t entry, 
  13355     uint16 *data, 
  13356     uint16 *mask);
  13357 
  13358 /* 
  13359  * Set match criteria for Rtag7BHashLower
  13360  *                qualifier.
  13361  */
  13362 extern int bcm_field_qualify_Rtag7BHashLower(
  13363     int unit, 
  13364     bcm_field_entry_t entry, 
  13365     uint16 data, 
  13366     uint16 mask);
  13367 
  13368 /* 
  13369  * Get match criteria for Rtag7BHashLower
  13370  *                qualifier.
  13371  */
  13372 extern int bcm_field_qualify_Rtag7BHashLower_get(
  13373     int unit, 
  13374     bcm_field_entry_t entry, 
  13375     uint16 *data, 
  13376     uint16 *mask);
  13377 
  13378 /* 
  13379  * Set match criteria for MplsForwardingLabelAction
  13380  *                qualifier(8 bits).
  13381  */
  13382 extern int bcm_field_qualify_MplsForwardingLabelAction(
  13383     int unit, 
  13384     bcm_field_entry_t entry, 
  13385     uint8 data, 
  13386     uint8 mask);
  13387 
  13388 /* 
  13389  * Get match criteria for MplsForwardingLabelAction
  13390  *                qualifier(8 bits).
  13391  */
  13392 extern int bcm_field_qualify_MplsForwardingLabelAction_get(
  13393     int unit, 
  13394     bcm_field_entry_t entry, 
  13395     uint8 *data, 
  13396     uint8 *mask);
  13397 
  13398 /* 
  13399  * Set match criteria for MplsForwardingLabelAction
  13400  *                qualifier (32 bits).
  13401  */
  13402 extern int bcm_field_qualify_MplsForwardingLabelAction32(
  13403     int unit, 
  13404     bcm_field_entry_t entry, 
  13405     uint32 data, 
  13406     uint32 mask);
  13407 
  13408 /* 
  13409  * Get match criteria for MplsForwardingLabelAction
  13410  *                qualifier (32 bits).
  13411  */
  13412 extern int bcm_field_qualify_MplsForwardingLabelAction32_get(
  13413     int unit, 
  13414     bcm_field_entry_t entry, 
  13415     uint32 *data, 
  13416     uint32 *mask);
  13417 
  13418 /* 
  13419  * Set match criteria for MplsControlWordValid
  13420  *                qualifier.
  13421  */
  13422 extern int bcm_field_qualify_MplsControlWordValid(
  13423     int unit, 
  13424     bcm_field_entry_t entry, 
  13425     uint8 data, 
  13426     uint8 mask);
  13427 
  13428 /* 
  13429  * Get match criteria for MplsControlWordValid
  13430  *                qualifier.
  13431  */
  13432 extern int bcm_field_qualify_MplsControlWordValid_get(
  13433     int unit, 
  13434     bcm_field_entry_t entry, 
  13435     uint8 *data, 
  13436     uint8 *mask);
  13437 
  13438 /* 
  13439  * Set match criteria for EgressClass
  13440  *                qualifier.
  13441  */
  13442 extern int bcm_field_qualify_EgressClass(
  13443     int unit, 
  13444     bcm_field_entry_t entry, 
  13445     uint16 data, 
  13446     uint16 mask);
  13447 
  13448 /* 
  13449  * Get match criteria for EgressClass
  13450  *                qualifier.
  13451  */
  13452 extern int bcm_field_qualify_EgressClass_get(
  13453     int unit, 
  13454     bcm_field_entry_t entry, 
  13455     uint16 *data, 
  13456     uint16 *mask);
  13457 
  13458 /* 
  13459  * Set match criteria for EgressClassL3Interface
  13460  *                qualifier.
  13461  */
  13462 extern int bcm_field_qualify_EgressClassL3Interface(
  13463     int unit, 
  13464     bcm_field_entry_t entry, 
  13465     uint16 data, 
  13466     uint16 mask);
  13467 
  13468 /* 
  13469  * Get match criteria for EgressClassL3Interface
  13470  *                qualifier.
  13471  */
  13472 extern int bcm_field_qualify_EgressClassL3Interface_get(
  13473     int unit, 
  13474     bcm_field_entry_t entry, 
  13475     uint16 *data, 
  13476     uint16 *mask);
  13477 
  13478 /* 
  13479  * Set match criteria for EgressClassTrill
  13480  *                qualifier.
  13481  */
  13482 extern int bcm_field_qualify_EgressClassTrill(
  13483     int unit, 
  13484     bcm_field_entry_t entry, 
  13485     uint16 data, 
  13486     uint16 mask);
  13487 
  13488 /* 
  13489  * Get match criteria for EgressClassTrill
  13490  *                qualifier.
  13491  */
  13492 extern int bcm_field_qualify_EgressClassTrill_get(
  13493     int unit, 
  13494     bcm_field_entry_t entry, 
  13495     uint16 *data, 
  13496     uint16 *mask);
  13497 
  13498 /* 
  13499  * Set match criteria for EgressClassWlan
  13500  *                qualifier.
  13501  */
  13502 extern int bcm_field_qualify_EgressClassWlan(
  13503     int unit, 
  13504     bcm_field_entry_t entry, 
  13505     uint16 data, 
  13506     uint16 mask);
  13507 
  13508 /* 
  13509  * Get match criteria for EgressClassWlan
  13510  *                qualifier.
  13511  */
  13512 extern int bcm_field_qualify_EgressClassWlan_get(
  13513     int unit, 
  13514     bcm_field_entry_t entry, 
  13515     uint16 *data, 
  13516     uint16 *mask);
  13517 
  13518 /* 
  13519  * Set match criteria for EgressClassL2Gre
  13520  *                qualifier.
  13521  */
  13522 extern int bcm_field_qualify_EgressClassL2Gre(
  13523     int unit, 
  13524     bcm_field_entry_t entry, 
  13525     uint16 data, 
  13526     uint16 mask);
  13527 
  13528 /* 
  13529  * Get match criteria for EgressClassL2Gre
  13530  *                qualifier.
  13531  */
  13532 extern int bcm_field_qualify_EgressClassL2Gre_get(
  13533     int unit, 
  13534     bcm_field_entry_t entry, 
  13535     uint16 *data, 
  13536     uint16 *mask);
  13537 
  13538 /* Set match criteria for CpuQueue qualifier. */
  13539 extern int bcm_field_qualify_CpuQueue(
  13540     int unit, 
  13541     bcm_field_entry_t entry, 
  13542     uint8 data, 
  13543     uint8 mask);
  13544 
  13545 /* Get match criteria for CpuQueue qualifier. */
  13546 extern int bcm_field_qualify_CpuQueue_get(
  13547     int unit, 
  13548     bcm_field_entry_t entry, 
  13549     uint8 *data, 
  13550     uint8 *mask);
  13551 
  13552 /* Set match criteria for SrcGport qualifier. */
  13553 extern int bcm_field_qualify_SrcGport(
  13554     int unit, 
  13555     bcm_field_entry_t entry, 
  13556     bcm_gport_t port_id);
  13557 
  13558 /* Get match criteria for SrcGport qualifier. */
  13559 extern int bcm_field_qualify_SrcGport_get(
  13560     int unit, 
  13561     bcm_field_entry_t entry, 
  13562     bcm_gport_t *port_id);
  13563 
  13564 /* 
  13565  * Set match for the header format indicated.  This qualifier is similar
  13566  * to HeaderFormatSet, but this one allows only one matching header
  13567  * format to be specified.
  13568  */
  13569 extern int bcm_field_qualify_HeaderFormat(
  13570     int unit, 
  13571     bcm_field_entry_t entry, 
  13572     bcm_field_header_format_t header_format);
  13573 
  13574 /* Get matching header format. */
  13575 extern int bcm_field_qualify_HeaderFormat_get(
  13576     int unit, 
  13577     bcm_field_entry_t entry, 
  13578     bcm_field_header_format_t *header_format);
  13579 
  13580 /* 
  13581  * Set match for the header format extension indicated.  The profile, out
  13582  * of which header_format_extension must be selected, is set by the
  13583  * previously selected header format.
  13584  */
  13585 extern int bcm_field_qualify_HeaderFormatExtension(
  13586     int unit, 
  13587     bcm_field_entry_t entry, 
  13588     bcm_field_header_format_extension_t header_format_extension);
  13589 
  13590 /* 
  13591  * Get header format extension that is currently set for the indicated
  13592  * entry.
  13593  */
  13594 extern int bcm_field_qualify_HeaderFormatExtension_get(
  13595     int unit, 
  13596     bcm_field_entry_t entry, 
  13597     bcm_field_header_format_extension_t *header_format_extension);
  13598 
  13599 /* 
  13600  * Set match for the header formats included in the format_header_set. 
  13601  * This qualifier is similar to HeaderFormat, but this qualifier allows
  13602  * the caller to specify more than one header format to match.
  13603  */
  13604 extern int bcm_field_qualify_HeaderFormatSet(
  13605     int unit, 
  13606     bcm_field_entry_t entry, 
  13607     bcm_field_header_format_set_t header_format_set);
  13608 
  13609 /* Get matching header format set. */
  13610 extern int bcm_field_qualify_HeaderFormatSet_get(
  13611     int unit, 
  13612     bcm_field_entry_t entry, 
  13613     bcm_field_header_format_set_t *header_format_set);
  13614 
  13615 /* Set match criteria for L2Learn qualifier. */
  13616 extern int bcm_field_qualify_L2Learn(
  13617     int unit, 
  13618     bcm_field_entry_t entry, 
  13619     uint8 data, 
  13620     uint8 mask);
  13621 
  13622 /* Get match criteria for L2Learn qualifier. */
  13623 extern int bcm_field_qualify_L2Learn_get(
  13624     int unit, 
  13625     bcm_field_entry_t entry, 
  13626     uint8 *data, 
  13627     uint8 *mask);
  13628 
  13629 /* Set match criteria for PortOrientation qualifier. */
  13630 extern int bcm_field_qualify_PortOrientation(
  13631     int unit, 
  13632     bcm_field_entry_t entry, 
  13633     uint8 data, 
  13634     uint8 mask);
  13635 
  13636 /* Get match criteria for PortOrientation qualifier. */
  13637 extern int bcm_field_qualify_PortOrientation_get(
  13638     int unit, 
  13639     bcm_field_entry_t entry, 
  13640     uint8 *data, 
  13641     uint8 *mask);
  13642 
  13643 /* To qualify the MACSEC tagged packets */
  13644 extern int bcm_field_qualify_MacSecTagPresent(
  13645     int unit, 
  13646     bcm_field_entry_t entry, 
  13647     uint8 data, 
  13648     uint8 mask);
  13649 
  13650 /* To get the qualified inputs on the MACSEC tagged packets */
  13651 extern int bcm_field_qualify_MacSecTagPresent_get(
  13652     int unit, 
  13653     bcm_field_entry_t entry, 
  13654     uint8 *data, 
  13655     uint8 *mask);
  13656 
  13657 /* To qualify on the SecTag field in MACSEC tagged packets */
  13658 extern int bcm_field_qualify_MacSecTag(
  13659     int unit, 
  13660     bcm_field_entry_t entry, 
  13661     uint8 data, 
  13662     uint8 mask);
  13663 
  13664 /* To get the qualified inputs on SecTag field in MACSEC tagged packets */
  13665 extern int bcm_field_qualify_MacSecTag_get(
  13666     int unit, 
  13667     bcm_field_entry_t entry, 
  13668     uint8 *data, 
  13669     uint8 *mask);
  13670 
  13671 /* To qualify the hit on Destination MAC addresses range */
  13672 extern int bcm_field_qualify_MacSecDstMacRangeHit(
  13673     int unit, 
  13674     bcm_field_entry_t entry, 
  13675     uint8 data, 
  13676     uint8 mask);
  13677 
  13678 /* To get the qualified inputs on the Destination MAC addresses range hit */
  13679 extern int bcm_field_qualify_MacSecDstMacRangeHit_get(
  13680     int unit, 
  13681     bcm_field_entry_t entry, 
  13682     uint8 *data, 
  13683     uint8 *mask);
  13684 
  13685 /* 
  13686  * Configures lower and upper limits to be used by qualifier
  13687  * bcmFieldQualifyMacSecDstMacRangeHit
  13688  */
  13689 extern int bcm_field_macsec_DstMacRange_set(
  13690     int unit, 
  13691     bcm_mac_t lower_limit, 
  13692     bcm_mac_t upper_limit);
  13693 
  13694 /* 
  13695  * To get the configured lower and upper limits to be used by qualifier
  13696  * bcmFieldQualifyMacSecDstMacRangeHit
  13697  */
  13698 extern int bcm_field_macsec_DstMacRange_get(
  13699     int unit, 
  13700     bcm_mac_t *lower_limit, 
  13701     bcm_mac_t *upper_limit);
  13702 
  13703 /* To qualify on packet forwarded through the internal MACSEC port */
  13704 extern int bcm_field_qualify_FromMacSecPort(
  13705     int unit, 
  13706     bcm_field_entry_t entry, 
  13707     uint8 data, 
  13708     uint8 mask);
  13709 
  13710 /* 
  13711  * To get the qualified inputs on packet forwarded through the internal
  13712  * MACSEC port
  13713  */
  13714 extern int bcm_field_qualify_FromMacSecPort_get(
  13715     int unit, 
  13716     bcm_field_entry_t entry, 
  13717     uint8 *data, 
  13718     uint8 *mask);
  13719 
  13720 /* Qualifies on the MACSEC packet flow */
  13721 extern int bcm_field_qualify_MacSecFlow(
  13722     int unit, 
  13723     bcm_field_entry_t entry, 
  13724     bcm_field_macsec_flow_t data);
  13725 
  13726 /* To get the qualified inputs on the MACSEC packet flow */
  13727 extern int bcm_field_qualify_MacSecFlow_get(
  13728     int unit, 
  13729     bcm_field_entry_t entry, 
  13730     bcm_field_macsec_flow_t *data);
  13731 
  13732 /* Set match criteria for PortOrientation qualifier. */
  13733 extern int bcm_field_qualify_EcnValue(
  13734     int unit, 
  13735     bcm_field_entry_t entry, 
  13736     uint8 data, 
  13737     uint8 mask);
  13738 
  13739 /* Get match criteria for EcnValue qualifier. */
  13740 extern int bcm_field_qualify_EcnValue_get(
  13741     int unit, 
  13742     bcm_field_entry_t entry, 
  13743     uint8 *data, 
  13744     uint8 *mask);
  13745 
  13746 /* Set match criteria for RxTrapCode qualifier. */
  13747 extern int bcm_field_qualify_RxTrapCode(
  13748     int unit, 
  13749     bcm_field_entry_t entry, 
  13750     bcm_rx_trap_t data);
  13751 
  13752 /* Get match criteria for RxTrapCode qualifier. */
  13753 extern int bcm_field_qualify_RxTrapCode_get(
  13754     int unit, 
  13755     bcm_field_entry_t entry, 
  13756     bcm_rx_trap_t *data);
  13757 
  13758 /* Set match criteria for RxTrapCode qualifier. */
  13759 extern int bcm_field_qualify_RxTrapCode32(
  13760     int unit, 
  13761     bcm_field_entry_t entry, 
  13762     uint32 data, 
  13763     uint32 mask);
  13764 
  13765 /* Get match criteria for RxTrapCode qualifier. */
  13766 extern int bcm_field_qualify_RxTrapCode32_get(
  13767     int unit, 
  13768     bcm_field_entry_t entry, 
  13769     uint32 *data, 
  13770     uint32 *mask);
  13771 
  13772 /* Set match criteria for RxTrapStrength qualifier. */
  13773 extern int bcm_field_qualify_RxTrapStrength(
  13774     int unit, 
  13775     bcm_field_entry_t entry, 
  13776     uint32 data, 
  13777     uint32 mask);
  13778 
  13779 /* Get match criteria for RxTrapStrength qualifier. */
  13780 extern int bcm_field_qualify_RxTrapStrength_get(
  13781     int unit, 
  13782     bcm_field_entry_t entry, 
  13783     uint32 *data, 
  13784     uint32 *mask);
  13785 
  13786 /* Set match criteria for Ptch qualifier. */
  13787 extern int bcm_field_qualify_Ptch(
  13788     int unit, 
  13789     bcm_field_entry_t entry, 
  13790     uint8 data, 
  13791     uint8 mask);
  13792 
  13793 /* Get match criteria for Ptch qualifier. */
  13794 extern int bcm_field_qualify_Ptch_get(
  13795     int unit, 
  13796     bcm_field_entry_t entry, 
  13797     uint8 *data, 
  13798     uint8 *mask);
  13799 
  13800 /* Set match criteria for MplsBos qualifier. */
  13801 extern int bcm_field_qualify_MplsBos(
  13802     int unit, 
  13803     bcm_field_entry_t entry, 
  13804     uint8 data, 
  13805     uint8 mask);
  13806 
  13807 /* Get match criteria for MplsBos qualifier. */
  13808 extern int bcm_field_qualify_MplsBos_get(
  13809     int unit, 
  13810     bcm_field_entry_t entry, 
  13811     uint8 *data, 
  13812     uint8 *mask);
  13813 
  13814 /* Set match criteria for RxTrapData qualifier. */
  13815 extern int bcm_field_qualify_RxTrapData(
  13816     int unit, 
  13817     bcm_field_entry_t entry, 
  13818     uint32 data, 
  13819     uint32 mask);
  13820 
  13821 /* Get match criteria for RxTrapData qualifier. */
  13822 extern int bcm_field_qualify_RxTrapData_get(
  13823     int unit, 
  13824     bcm_field_entry_t entry, 
  13825     uint32 *data, 
  13826     uint32 *mask);
  13827 
  13828 /* Set match criteria for PolicerIntPrio qualifier. */
  13829 extern int bcm_field_qualify_PolicerIntPrio(
  13830     int unit, 
  13831     bcm_field_entry_t entry, 
  13832     uint8 data, 
  13833     uint8 mask);
  13834 
  13835 /* Get match criteria for PolicerIntPrio qualifier. */
  13836 extern int bcm_field_qualify_PolicerIntPrio_get(
  13837     int unit, 
  13838     bcm_field_entry_t entry, 
  13839     uint8 *data, 
  13840     uint8 *mask);
  13841 
  13842 /* Set match criteria for PacketTerminatedBytes qualifier. */
  13843 extern int bcm_field_qualify_PacketTerminatedBytes(
  13844     int unit, 
  13845     bcm_field_entry_t entry, 
  13846     uint32 data, 
  13847     uint32 mask);
  13848 
  13849 /* Get match criteria for PacketTerminatedBytes qualifier. */
  13850 extern int bcm_field_qualify_PacketTerminatedBytes_get(
  13851     int unit, 
  13852     bcm_field_entry_t entry, 
  13853     uint32 *data, 
  13854     uint32 *mask);
  13855 
  13856 /* Set match criteria for BypassFilter qualifier (8-bits). */
  13857 extern int bcm_field_qualify_BypassFilter(
  13858     int unit, 
  13859     bcm_field_entry_t entry, 
  13860     uint8 data, 
  13861     uint8 mask);
  13862 
  13863 /* Get match criteria for BypassFilter qualifier (8-bits). */
  13864 extern int bcm_field_qualify_BypassFilter_get(
  13865     int unit, 
  13866     bcm_field_entry_t entry, 
  13867     uint8 *data, 
  13868     uint8 *mask);
  13869 
  13870 /* Set match criteria for BypassFilter qualifier (32-bits). */
  13871 extern int bcm_field_qualify_BypassFilter32(
  13872     int unit, 
  13873     bcm_field_entry_t entry, 
  13874     uint32 data, 
  13875     uint32 mask);
  13876 
  13877 /* Get match criteria for BypassFilter qualifier (32-bits). */
  13878 extern int bcm_field_qualify_BypassFilter32_get(
  13879     int unit, 
  13880     bcm_field_entry_t entry, 
  13881     uint32 *data, 
  13882     uint32 *mask);
  13883 
  13884 /* Set match criteria for ReplicantAny qualifier. */
  13885 extern int bcm_field_qualify_ReplicantAny(
  13886     int unit, 
  13887     bcm_field_entry_t entry, 
  13888     uint8 data, 
  13889     uint8 mask);
  13890 
  13891 /* Get match criteria for ReplicantAny qualifier. */
  13892 extern int bcm_field_qualify_ReplicantAny_get(
  13893     int unit, 
  13894     bcm_field_entry_t entry, 
  13895     uint8 *data, 
  13896     uint8 *mask);
  13897 
  13898 /* Set match criteria for ReplicantFirst qualifier. */
  13899 extern int bcm_field_qualify_ReplicantFirst(
  13900     int unit, 
  13901     bcm_field_entry_t entry, 
  13902     uint8 data, 
  13903     uint8 mask);
  13904 
  13905 /* Get match criteria for ReplicantFirst qualifier. */
  13906 extern int bcm_field_qualify_ReplicantFirst_get(
  13907     int unit, 
  13908     bcm_field_entry_t entry, 
  13909     uint8 *data, 
  13910     uint8 *mask);
  13911 
  13912 /* Set match criteria for TrillEgressRbridge qualifier. */
  13913 extern int bcm_field_qualify_TrillEgressRbridge(
  13914     int unit, 
  13915     bcm_field_entry_t entry, 
  13916     uint32 data, 
  13917     uint32 mask);
  13918 
  13919 /* Get match criteria for TrillEgressRbridge qualifier. */
  13920 extern int bcm_field_qualify_TrillEgressRbridge_get(
  13921     int unit, 
  13922     bcm_field_entry_t entry, 
  13923     uint32 *data, 
  13924     uint32 *mask);
  13925 
  13926 /* Set match criteria for ISid qualifier. */
  13927 extern int bcm_field_qualify_ISid(
  13928     int unit, 
  13929     bcm_field_entry_t entry, 
  13930     uint32 data, 
  13931     uint32 mask);
  13932 
  13933 /* Get match criteria for ISid qualifier. */
  13934 extern int bcm_field_qualify_ISid_get(
  13935     int unit, 
  13936     bcm_field_entry_t entry, 
  13937     uint32 *data, 
  13938     uint32 *mask);
  13939 
  13940 /* Set match criteria for InterfaceClassProcessingPort qualifier. */
  13941 extern int bcm_field_qualify_InterfaceClassProcessingPort(
  13942     int unit, 
  13943     bcm_field_entry_t entry, 
  13944     uint64 data, 
  13945     uint64 mask);
  13946 
  13947 /* Get match criteria for InterfaceClassProcessingPort qualifier. */
  13948 extern int bcm_field_qualify_InterfaceClassProcessingPort_get(
  13949     int unit, 
  13950     bcm_field_entry_t entry, 
  13951     uint64 *data, 
  13952     uint64 *mask);
  13953 
  13954 /* Set match criteria for DstRpfGport qualifier. */
  13955 extern int bcm_field_qualify_DstRpfGport(
  13956     int unit, 
  13957     bcm_field_entry_t entry, 
  13958     bcm_gport_t data);
  13959 
  13960 /* Get match criteria for DstRpfGport qualifier. */
  13961 extern int bcm_field_qualify_DstRpfGport_get(
  13962     int unit, 
  13963     bcm_field_entry_t entry, 
  13964     bcm_gport_t *data);
  13965 
  13966 /* Set match criteria for TrunkHashResult qualifier. */
  13967 extern int bcm_field_qualify_TrunkHashResult(
  13968     int unit, 
  13969     bcm_field_entry_t entry, 
  13970     uint32 data, 
  13971     uint32 mask);
  13972 
  13973 /* Get match criteria for TrunkHashResult qualifier. */
  13974 extern int bcm_field_qualify_TrunkHashResult_get(
  13975     int unit, 
  13976     bcm_field_entry_t entry, 
  13977     uint32 *data, 
  13978     uint32 *mask);
  13979 
  13980 /* Set match criteria for Dhcp qualifier. */
  13981 extern int bcm_field_qualify_Dhcp(
  13982     int unit, 
  13983     bcm_field_entry_t entry, 
  13984     uint8 data, 
  13985     uint8 mask);
  13986 
  13987 /* Get match criteria for Dhcp qualifier. */
  13988 extern int bcm_field_qualify_Dhcp_get(
  13989     int unit, 
  13990     bcm_field_entry_t entry, 
  13991     uint8 *data, 
  13992     uint8 *mask);
  13993 
  13994 /* Set match criteria for SnoopCopy qualifier. */
  13995 extern int bcm_field_qualify_SnoopCopy(
  13996     int unit, 
  13997     bcm_field_entry_t entry, 
  13998     uint8 data, 
  13999     uint8 mask);
  14000 
  14001 /* Get match criteria for SnoopCopy qualifier. */
  14002 extern int bcm_field_qualify_SnoopCopy_get(
  14003     int unit, 
  14004     bcm_field_entry_t entry, 
  14005     uint8 *data, 
  14006     uint8 *mask);
  14007 
  14008 /* Set match criteria for ForwardCopy qualifier. */
  14009 extern int bcm_field_qualify_ForwardCopy(
  14010     int unit, 
  14011     bcm_field_entry_t entry, 
  14012     uint8 data, 
  14013     uint8 mask);
  14014 
  14015 /* Get match criteria for ForwardCopy qualifier. */
  14016 extern int bcm_field_qualify_ForwardCopy_get(
  14017     int unit, 
  14018     bcm_field_entry_t entry, 
  14019     uint8 *data, 
  14020     uint8 *mask);
  14021 
  14022 /* Set match criteria for InterfaceClassVPort qualifier. */
  14023 extern int bcm_field_qualify_InterfaceClassVPort(
  14024     int unit, 
  14025     bcm_field_entry_t entry, 
  14026     uint32 data, 
  14027     uint32 mask);
  14028 
  14029 /* Get match criteria for InterfaceClassVPort qualifier. */
  14030 extern int bcm_field_qualify_InterfaceClassVPort_get(
  14031     int unit, 
  14032     bcm_field_entry_t entry, 
  14033     uint32 *data, 
  14034     uint32 *mask);
  14035 
  14036 /* Set match criteria for L4PortRangeCheck qualifier. */
  14037 extern int bcm_field_qualify_L4PortRangeCheck(
  14038     int unit, 
  14039     bcm_field_entry_t entry, 
  14040     bcm_field_range_t range, 
  14041     int invert);
  14042 
  14043 /* Get match criteria for L4PortRangeCheck qualifier. */
  14044 extern int bcm_field_qualify_L4PortRangeCheck_get(
  14045     int unit, 
  14046     bcm_field_entry_t entry, 
  14047     int max_count, 
  14048     bcm_field_range_t *range, 
  14049     int *invert, 
  14050     int *count);
  14051 
  14052 /* Set match criteria for VPortRangeCheck qualifier. */
  14053 extern int bcm_field_qualify_VPortRangeCheck(
  14054     int unit, 
  14055     bcm_field_entry_t entry, 
  14056     bcm_field_range_t range, 
  14057     int invert);
  14058 
  14059 /* 
  14060  * Get match criteria for VPortRangeCheck
  14061  *                qualifier from the field entry.
  14062  */
  14063 extern int bcm_field_qualify_VPortRangeCheck_get(
  14064     int unit, 
  14065     bcm_field_entry_t entry, 
  14066     int max_count, 
  14067     bcm_field_range_t *range, 
  14068     int *invert, 
  14069     int *count);
  14070 
  14071 /* Set match criteria for PacketLengthRangeCheck qualifier. */
  14072 extern int bcm_field_qualify_PacketLengthRangeCheck(
  14073     int unit, 
  14074     bcm_field_entry_t entry, 
  14075     bcm_field_range_t range, 
  14076     int invert);
  14077 
  14078 /* 
  14079  * Get match criteria for PacketLengthRangeCheck
  14080  *                qualifier from the field entry.
  14081  */
  14082 extern int bcm_field_qualify_PacketLengthRangeCheck_get(
  14083     int unit, 
  14084     bcm_field_entry_t entry, 
  14085     int max_count, 
  14086     bcm_field_range_t *range, 
  14087     int *invert, 
  14088     int *count);
  14089 
  14090 /* Set match criteria for TunnelTerminatedHit qualifier. */
  14091 extern int bcm_field_qualify_TunnelTerminatedHit(
  14092     int unit, 
  14093     bcm_field_entry_t entry, 
  14094     uint8 data, 
  14095     uint8 mask);
  14096 
  14097 /* Get match criteria for TunnelTerminatedHit qualifier. */
  14098 extern int bcm_field_qualify_TunnelTerminatedHit_get(
  14099     int unit, 
  14100     bcm_field_entry_t entry, 
  14101     uint8 *data, 
  14102     uint8 *mask);
  14103 
  14104 /* Set match criteria for MplsTerminatedHit qualifier. */
  14105 extern int bcm_field_qualify_MplsTerminatedHit(
  14106     int unit, 
  14107     bcm_field_entry_t entry, 
  14108     uint8 data, 
  14109     uint8 mask);
  14110 
  14111 /* Get match criteria for MplsTerminatedHit qualifier. */
  14112 extern int bcm_field_qualify_MplsTerminatedHit_get(
  14113     int unit, 
  14114     bcm_field_entry_t entry, 
  14115     uint8 *data, 
  14116     uint8 *mask);
  14117 
  14118 /* Set match criteria for L3SrcRouteHit qualifier. */
  14119 extern int bcm_field_qualify_L3SrcRouteHit(
  14120     int unit, 
  14121     bcm_field_entry_t entry, 
  14122     uint8 data, 
  14123     uint8 mask);
  14124 
  14125 /* Get match criteria for L3SrcRouteHit qualifier. */
  14126 extern int bcm_field_qualify_L3SrcRouteHit_get(
  14127     int unit, 
  14128     bcm_field_entry_t entry, 
  14129     uint8 *data, 
  14130     uint8 *mask);
  14131 
  14132 /* Set match criteria for IpmcHit qualifier. */
  14133 extern int bcm_field_qualify_IpmcHit(
  14134     int unit, 
  14135     bcm_field_entry_t entry, 
  14136     uint8 data, 
  14137     uint8 mask);
  14138 
  14139 /* Get match criteria for IpmcHit qualifier. */
  14140 extern int bcm_field_qualify_IpmcHit_get(
  14141     int unit, 
  14142     bcm_field_entry_t entry, 
  14143     uint8 *data, 
  14144     uint8 *mask);
  14145 
  14146 /* Set match criteria for VlanTranslationValue qualifier. */
  14147 extern int bcm_field_qualify_VlanTranslationValue(
  14148     int unit, 
  14149     bcm_field_entry_t entry, 
  14150     uint64 data, 
  14151     uint64 mask);
  14152 
  14153 /* Get match criteria for VlanTranslationValue qualifier. */
  14154 extern int bcm_field_qualify_VlanTranslationValue_get(
  14155     int unit, 
  14156     bcm_field_entry_t entry, 
  14157     uint64 *data, 
  14158     uint64 *mask);
  14159 
  14160 /* Set match criteria for TunnelTerminatedValue qualifier. */
  14161 extern int bcm_field_qualify_TunnelTerminatedValue(
  14162     int unit, 
  14163     bcm_field_entry_t entry, 
  14164     uint64 data, 
  14165     uint64 mask);
  14166 
  14167 /* Get match criteria for TunnelTerminatedValue qualifier. */
  14168 extern int bcm_field_qualify_TunnelTerminatedValue_get(
  14169     int unit, 
  14170     bcm_field_entry_t entry, 
  14171     uint64 *data, 
  14172     uint64 *mask);
  14173 
  14174 /* Set match criteria for MplsTerminatedValue qualifier. */
  14175 extern int bcm_field_qualify_MplsTerminatedValue(
  14176     int unit, 
  14177     bcm_field_entry_t entry, 
  14178     uint64 data, 
  14179     uint64 mask);
  14180 
  14181 /* Get match criteria for MplsTerminatedValue qualifier. */
  14182 extern int bcm_field_qualify_MplsTerminatedValue_get(
  14183     int unit, 
  14184     bcm_field_entry_t entry, 
  14185     uint64 *data, 
  14186     uint64 *mask);
  14187 
  14188 /* Set match criteria for IpTunnelValue qualifier. */
  14189 extern int bcm_field_qualify_IpTunnelValue(
  14190     int unit, 
  14191     bcm_field_entry_t entry, 
  14192     uint64 data, 
  14193     uint64 mask);
  14194 
  14195 /* Get match criteria for IpTunnelValue qualifier. */
  14196 extern int bcm_field_qualify_IpTunnelValue_get(
  14197     int unit, 
  14198     bcm_field_entry_t entry, 
  14199     uint64 *data, 
  14200     uint64 *mask);
  14201 
  14202 /* Set match criteria for L2SrcValue qualifier. */
  14203 extern int bcm_field_qualify_L2SrcValue(
  14204     int unit, 
  14205     bcm_field_entry_t entry, 
  14206     uint64 data, 
  14207     uint64 mask);
  14208 
  14209 /* Get match criteria for L2SrcValue qualifier. */
  14210 extern int bcm_field_qualify_L2SrcValue_get(
  14211     int unit, 
  14212     bcm_field_entry_t entry, 
  14213     uint64 *data, 
  14214     uint64 *mask);
  14215 
  14216 /* Set match criteria for L2DestValue qualifier. */
  14217 extern int bcm_field_qualify_L2DestValue(
  14218     int unit, 
  14219     bcm_field_entry_t entry, 
  14220     uint64 data, 
  14221     uint64 mask);
  14222 
  14223 /* Get match criteria for L2DestValue qualifier. */
  14224 extern int bcm_field_qualify_L2DestValue_get(
  14225     int unit, 
  14226     bcm_field_entry_t entry, 
  14227     uint64 *data, 
  14228     uint64 *mask);
  14229 
  14230 /* Set match criteria for L3SrcRouteValue qualifier. */
  14231 extern int bcm_field_qualify_L3SrcRouteValue(
  14232     int unit, 
  14233     bcm_field_entry_t entry, 
  14234     uint64 data, 
  14235     uint64 mask);
  14236 
  14237 /* Get match criteria for L3SrcRouteValue qualifier. */
  14238 extern int bcm_field_qualify_L3SrcRouteValue_get(
  14239     int unit, 
  14240     bcm_field_entry_t entry, 
  14241     uint64 *data, 
  14242     uint64 *mask);
  14243 
  14244 /* Set match criteria for L3DestRouteValue qualifier. */
  14245 extern int bcm_field_qualify_L3DestRouteValue(
  14246     int unit, 
  14247     bcm_field_entry_t entry, 
  14248     uint64 data, 
  14249     uint64 mask);
  14250 
  14251 /* Get match criteria for L3DestRouteValue qualifier. */
  14252 extern int bcm_field_qualify_L3DestRouteValue_get(
  14253     int unit, 
  14254     bcm_field_entry_t entry, 
  14255     uint64 *data, 
  14256     uint64 *mask);
  14257 
  14258 /* Set match criteria for IpmcValue qualifier. */
  14259 extern int bcm_field_qualify_IpmcValue(
  14260     int unit, 
  14261     bcm_field_entry_t entry, 
  14262     uint64 data, 
  14263     uint64 mask);
  14264 
  14265 /* Get match criteria for IpmcValue qualifier. */
  14266 extern int bcm_field_qualify_IpmcValue_get(
  14267     int unit, 
  14268     bcm_field_entry_t entry, 
  14269     uint64 *data, 
  14270     uint64 *mask);
  14271 
  14272 /* Set match criteria for CascadedKeyValue qualifier. */
  14273 extern int bcm_field_qualify_CascadedKeyValue(
  14274     int unit, 
  14275     bcm_field_entry_t entry, 
  14276     uint32 data, 
  14277     uint32 mask);
  14278 
  14279 /* Get match criteria for CascadedKeyValue qualifier. */
  14280 extern int bcm_field_qualify_CascadedKeyValue_get(
  14281     int unit, 
  14282     bcm_field_entry_t entry, 
  14283     uint32 *data, 
  14284     uint32 *mask);
  14285 
  14286 /* Set match criteria for IsEqualValue qualifier. */
  14287 extern int bcm_field_qualify_IsEqualValue(
  14288     int unit, 
  14289     bcm_field_entry_t entry, 
  14290     uint8 data, 
  14291     uint8 mask);
  14292 
  14293 /* Get match criteria for IsEqualValue qualifier. */
  14294 extern int bcm_field_qualify_IsEqualValue_get(
  14295     int unit, 
  14296     bcm_field_entry_t entry, 
  14297     uint8 *data, 
  14298     uint8 *mask);
  14299 
  14300 /* Set match criteria for LearnSrcMac qualifier. */
  14301 extern int bcm_field_qualify_LearnSrcMac(
  14302     int unit, 
  14303     bcm_field_entry_t entry, 
  14304     bcm_mac_t data, 
  14305     bcm_mac_t mask);
  14306 
  14307 /* Get match criteria for LearnSrcMac qualifier. */
  14308 extern int bcm_field_qualify_LearnSrcMac_get(
  14309     int unit, 
  14310     bcm_field_entry_t entry, 
  14311     bcm_mac_t *data, 
  14312     bcm_mac_t *mask);
  14313 
  14314 /* Set match criteria for LearnVlan qualifier. */
  14315 extern int bcm_field_qualify_LearnVlan(
  14316     int unit, 
  14317     bcm_field_entry_t entry, 
  14318     bcm_vlan_t data, 
  14319     bcm_vlan_t mask);
  14320 
  14321 /* Get match criteria for LearnVlan qualifier. */
  14322 extern int bcm_field_qualify_LearnVlan_get(
  14323     int unit, 
  14324     bcm_field_entry_t entry, 
  14325     bcm_vlan_t *data, 
  14326     bcm_vlan_t *mask);
  14327 
  14328 /* Set match criteria for LearnSrcPort qualifier. */
  14329 extern int bcm_field_qualify_LearnSrcPort(
  14330     int unit, 
  14331     bcm_field_entry_t entry, 
  14332     bcm_gport_t data);
  14333 
  14334 /* Get match criteria for LearnSrcPort qualifier. */
  14335 extern int bcm_field_qualify_LearnSrcPort_get(
  14336     int unit, 
  14337     bcm_field_entry_t entry, 
  14338     bcm_gport_t *data);
  14339 
  14340 /* Set match criteria for LearnInVPort qualifier. */
  14341 extern int bcm_field_qualify_LearnInVPort(
  14342     int unit, 
  14343     bcm_field_entry_t entry, 
  14344     uint32 data, 
  14345     uint32 mask);
  14346 
  14347 /* Get match criteria for LearnInVPort qualifier. */
  14348 extern int bcm_field_qualify_LearnInVPort_get(
  14349     int unit, 
  14350     bcm_field_entry_t entry, 
  14351     uint32 *data, 
  14352     uint32 *mask);
  14353 
  14354 /* Set enable criteria for LearnExtension qualifier. */
  14355 extern int bcm_field_qualify_LearnExtension(
  14356     int unit, 
  14357     bcm_field_entry_t entry, 
  14358     uint8 data);
  14359 
  14360 /* Get enable status of LearnExtension qualifier. */
  14361 extern int bcm_field_qualify_LearnExtension_get(
  14362     int unit, 
  14363     bcm_field_entry_t entry, 
  14364     uint8 *data);
  14365 
  14366 /* Set match criteria for Stacking Route qualifier. */
  14367 extern int bcm_field_qualify_StackingRoute(
  14368     int unit, 
  14369     bcm_field_entry_t entry, 
  14370     uint32 data, 
  14371     uint32 mask);
  14372 
  14373 /* Get match criteria for Stacking Route qualifier. */
  14374 extern int bcm_field_qualify_StackingRoute_get(
  14375     int unit, 
  14376     bcm_field_entry_t entry, 
  14377     uint32 *data, 
  14378     uint32 *mask);
  14379 
  14380 /* Set match criteria for DSP Extension qualifier. */
  14381 extern int bcm_field_qualify_DstSysPortExt(
  14382     int unit, 
  14383     bcm_field_entry_t entry, 
  14384     uint16 data, 
  14385     uint16 mask);
  14386 
  14387 /* Get match criteria for DSP Extension qualifier. */
  14388 extern int bcm_field_qualify_DstSysPortExt_get(
  14389     int unit, 
  14390     bcm_field_entry_t entry, 
  14391     uint16 *data, 
  14392     uint16 *mask);
  14393 
  14394 /* Set match criteria for PacketSize qualifier. */
  14395 extern int bcm_field_qualify_PacketSize(
  14396     int unit, 
  14397     bcm_field_entry_t entry, 
  14398     uint32 data, 
  14399     uint32 mask);
  14400 
  14401 /* Get match criteria for PacketSize qualifier. */
  14402 extern int bcm_field_qualify_PacketSize_get(
  14403     int unit, 
  14404     bcm_field_entry_t entry, 
  14405     uint32 *data, 
  14406     uint32 *mask);
  14407 
  14408 /* Set match criteria for InnerSrcMac qualifier. */
  14409 extern int bcm_field_qualify_InnerSrcMac(
  14410     int unit, 
  14411     bcm_field_entry_t entry, 
  14412     bcm_mac_t data, 
  14413     bcm_mac_t mask);
  14414 
  14415 /* Get match criteria for InnerSrcMac qualifier. */
  14416 extern int bcm_field_qualify_InnerSrcMac_get(
  14417     int unit, 
  14418     bcm_field_entry_t entry, 
  14419     bcm_mac_t *data, 
  14420     bcm_mac_t *mask);
  14421 
  14422 /* Set match criteria for InnerDstMac qualifier. */
  14423 extern int bcm_field_qualify_InnerDstMac(
  14424     int unit, 
  14425     bcm_field_entry_t entry, 
  14426     bcm_mac_t data, 
  14427     bcm_mac_t mask);
  14428 
  14429 /* Get match criteria for InnerDstMac qualifier. */
  14430 extern int bcm_field_qualify_InnerDstMac_get(
  14431     int unit, 
  14432     bcm_field_entry_t entry, 
  14433     bcm_mac_t *data, 
  14434     bcm_mac_t *mask);
  14435 
  14436 /* Set match criteria for InnerEtherType qualifier. */
  14437 extern int bcm_field_qualify_InnerEtherType(
  14438     int unit, 
  14439     bcm_field_entry_t entry, 
  14440     uint16 data, 
  14441     uint16 mask);
  14442 
  14443 /* Get match criteria for InnerEtherType qualifier. */
  14444 extern int bcm_field_qualify_InnerEtherType_get(
  14445     int unit, 
  14446     bcm_field_entry_t entry, 
  14447     uint16 *data, 
  14448     uint16 *mask);
  14449 
  14450 /* Set match criteria for MplsLabel1 qualifier. */
  14451 extern int bcm_field_qualify_MplsLabel1(
  14452     int unit, 
  14453     bcm_field_entry_t entry, 
  14454     uint32 data, 
  14455     uint32 mask);
  14456 
  14457 /* Get match criteria for MplsLabel1 qualifier. */
  14458 extern int bcm_field_qualify_MplsLabel1_get(
  14459     int unit, 
  14460     bcm_field_entry_t entry, 
  14461     uint32 *data, 
  14462     uint32 *mask);
  14463 
  14464 /* Set match criteria for MplsLabel1Ttl qualifier. */
  14465 extern int bcm_field_qualify_MplsLabel1Ttl(
  14466     int unit, 
  14467     bcm_field_entry_t entry, 
  14468     uint8 data, 
  14469     uint8 mask);
  14470 
  14471 /* Get match criteria for MplsLabel1Ttl qualifier. */
  14472 extern int bcm_field_qualify_MplsLabel1Ttl_get(
  14473     int unit, 
  14474     bcm_field_entry_t entry, 
  14475     uint8 *data, 
  14476     uint8 *mask);
  14477 
  14478 /* Set match criteria for MplsLabel1Bos qualifier. */
  14479 extern int bcm_field_qualify_MplsLabel1Bos(
  14480     int unit, 
  14481     bcm_field_entry_t entry, 
  14482     uint8 data, 
  14483     uint8 mask);
  14484 
  14485 /* Get match criteria for MplsLabel1Bos qualifier. */
  14486 extern int bcm_field_qualify_MplsLabel1Bos_get(
  14487     int unit, 
  14488     bcm_field_entry_t entry, 
  14489     uint8 *data, 
  14490     uint8 *mask);
  14491 
  14492 /* Set match criteria for MplsLabel1Exp qualifier. */
  14493 extern int bcm_field_qualify_MplsLabel1Exp(
  14494     int unit, 
  14495     bcm_field_entry_t entry, 
  14496     uint8 data, 
  14497     uint8 mask);
  14498 
  14499 /* Get match criteria for MplsLabel1Exp qualifier. */
  14500 extern int bcm_field_qualify_MplsLabel1Exp_get(
  14501     int unit, 
  14502     bcm_field_entry_t entry, 
  14503     uint8 *data, 
  14504     uint8 *mask);
  14505 
  14506 /* Set match criteria for MplsLabel1Id qualifier. */
  14507 extern int bcm_field_qualify_MplsLabel1Id(
  14508     int unit, 
  14509     bcm_field_entry_t entry, 
  14510     uint32 data, 
  14511     uint32 mask);
  14512 
  14513 /* Get match criteria for MplsLabel1Id qualifier. */
  14514 extern int bcm_field_qualify_MplsLabel1Id_get(
  14515     int unit, 
  14516     bcm_field_entry_t entry, 
  14517     uint32 *data, 
  14518     uint32 *mask);
  14519 
  14520 /* Set match criteria for MplsLabel2 qualifier. */
  14521 extern int bcm_field_qualify_MplsLabel2(
  14522     int unit, 
  14523     bcm_field_entry_t entry, 
  14524     uint32 data, 
  14525     uint32 mask);
  14526 
  14527 /* Get match criteria for MplsLabel2 qualifier. */
  14528 extern int bcm_field_qualify_MplsLabel2_get(
  14529     int unit, 
  14530     bcm_field_entry_t entry, 
  14531     uint32 *data, 
  14532     uint32 *mask);
  14533 
  14534 /* Set match criteria for MplsLabel2Ttl qualifier. */
  14535 extern int bcm_field_qualify_MplsLabel2Ttl(
  14536     int unit, 
  14537     bcm_field_entry_t entry, 
  14538     uint8 data, 
  14539     uint8 mask);
  14540 
  14541 /* Get match criteria for MplsLabel2Ttl qualifier. */
  14542 extern int bcm_field_qualify_MplsLabel2Ttl_get(
  14543     int unit, 
  14544     bcm_field_entry_t entry, 
  14545     uint8 *data, 
  14546     uint8 *mask);
  14547 
  14548 /* Set match criteria for MplsLabel2Bos qualifier. */
  14549 extern int bcm_field_qualify_MplsLabel2Bos(
  14550     int unit, 
  14551     bcm_field_entry_t entry, 
  14552     uint8 data, 
  14553     uint8 mask);
  14554 
  14555 /* Get match criteria for MplsLabel2Bos qualifier. */
  14556 extern int bcm_field_qualify_MplsLabel2Bos_get(
  14557     int unit, 
  14558     bcm_field_entry_t entry, 
  14559     uint8 *data, 
  14560     uint8 *mask);
  14561 
  14562 /* Set match criteria for MplsLabel2Exp qualifier. */
  14563 extern int bcm_field_qualify_MplsLabel2Exp(
  14564     int unit, 
  14565     bcm_field_entry_t entry, 
  14566     uint8 data, 
  14567     uint8 mask);
  14568 
  14569 /* Get match criteria for MplsLabel2Exp qualifier. */
  14570 extern int bcm_field_qualify_MplsLabel2Exp_get(
  14571     int unit, 
  14572     bcm_field_entry_t entry, 
  14573     uint8 *data, 
  14574     uint8 *mask);
  14575 
  14576 /* Set match criteria for MplsLabel2Id qualifier. */
  14577 extern int bcm_field_qualify_MplsLabel2Id(
  14578     int unit, 
  14579     bcm_field_entry_t entry, 
  14580     uint32 data, 
  14581     uint32 mask);
  14582 
  14583 /* Get match criteria for MplsLabel2Id qualifier. */
  14584 extern int bcm_field_qualify_MplsLabel2Id_get(
  14585     int unit, 
  14586     bcm_field_entry_t entry, 
  14587     uint32 *data, 
  14588     uint32 *mask);
  14589 
  14590 /* Set match criteria for MplsLabel3 qualifier. */
  14591 extern int bcm_field_qualify_MplsLabel3(
  14592     int unit, 
  14593     bcm_field_entry_t entry, 
  14594     uint32 data, 
  14595     uint32 mask);
  14596 
  14597 /* Get match criteria for MplsLabel3 qualifier. */
  14598 extern int bcm_field_qualify_MplsLabel3_get(
  14599     int unit, 
  14600     bcm_field_entry_t entry, 
  14601     uint32 *data, 
  14602     uint32 *mask);
  14603 
  14604 /* Set match criteria for MplsLabel3Ttl qualifier. */
  14605 extern int bcm_field_qualify_MplsLabel3Ttl(
  14606     int unit, 
  14607     bcm_field_entry_t entry, 
  14608     uint8 data, 
  14609     uint8 mask);
  14610 
  14611 /* Get match criteria for MplsLabel3Ttl qualifier. */
  14612 extern int bcm_field_qualify_MplsLabel3Ttl_get(
  14613     int unit, 
  14614     bcm_field_entry_t entry, 
  14615     uint8 *data, 
  14616     uint8 *mask);
  14617 
  14618 /* Set match criteria for MplsLabel3Bos qualifier. */
  14619 extern int bcm_field_qualify_MplsLabel3Bos(
  14620     int unit, 
  14621     bcm_field_entry_t entry, 
  14622     uint8 data, 
  14623     uint8 mask);
  14624 
  14625 /* Get match criteria for MplsLabel3Bos qualifier. */
  14626 extern int bcm_field_qualify_MplsLabel3Bos_get(
  14627     int unit, 
  14628     bcm_field_entry_t entry, 
  14629     uint8 *data, 
  14630     uint8 *mask);
  14631 
  14632 /* Set match criteria for MplsLabel3Exp qualifier. */
  14633 extern int bcm_field_qualify_MplsLabel3Exp(
  14634     int unit, 
  14635     bcm_field_entry_t entry, 
  14636     uint8 data, 
  14637     uint8 mask);
  14638 
  14639 /* Get match criteria for MplsLabel3Exp qualifier. */
  14640 extern int bcm_field_qualify_MplsLabel3Exp_get(
  14641     int unit, 
  14642     bcm_field_entry_t entry, 
  14643     uint8 *data, 
  14644     uint8 *mask);
  14645 
  14646 /* Set match criteria for MplsLabel3Id qualifier. */
  14647 extern int bcm_field_qualify_MplsLabel3Id(
  14648     int unit, 
  14649     bcm_field_entry_t entry, 
  14650     uint32 data, 
  14651     uint32 mask);
  14652 
  14653 /* Get match criteria for MplsLabel3Id qualifier. */
  14654 extern int bcm_field_qualify_MplsLabel3Id_get(
  14655     int unit, 
  14656     bcm_field_entry_t entry, 
  14657     uint32 *data, 
  14658     uint32 *mask);
  14659 
  14660 /* To qualify on svtag. */
  14661 extern int bcm_field_qualify_Svtag(
  14662     int unit, 
  14663     bcm_field_entry_t entry, 
  14664     uint32 data, 
  14665     uint32 mask);
  14666 
  14667 /* 
  14668  * Get value for bcmFieldQualifySvtag
  14669  *             qualifier from the field entry.
  14670  */
  14671 extern int bcm_field_qualify_Svtag_get(
  14672     int unit, 
  14673     bcm_field_entry_t entry, 
  14674     uint32 *data, 
  14675     uint32 *mask);
  14676 
  14677 /* Qualify on Exact Match Hit Status. */
  14678 extern int bcm_field_qualify_ExactMatchHitStatus(
  14679     int unit, 
  14680     bcm_field_entry_t entry, 
  14681     int group_pri, 
  14682     uint8 data, 
  14683     uint8 mask);
  14684 
  14685 /* Get match criteria for ExactMatchHitStatus qualifier. */
  14686 extern int bcm_field_qualify_ExactMatchHitStatus_get(
  14687     int unit, 
  14688     bcm_field_entry_t entry, 
  14689     int group_pri, 
  14690     uint8 *data, 
  14691     uint8 *mask);
  14692 
  14693 /* Qualify on Exact Match Action Class Id. */
  14694 extern int bcm_field_qualify_ExactMatchActionClassId(
  14695     int unit, 
  14696     bcm_field_entry_t entry, 
  14697     int group_pri, 
  14698     uint32 data, 
  14699     uint32 mask);
  14700 
  14701 /* Get match criteria for ExactMatchActionClassId qualifier. */
  14702 extern int bcm_field_qualify_ExactMatchActionClassId_get(
  14703     int unit, 
  14704     bcm_field_entry_t entry, 
  14705     int group_pri, 
  14706     uint32 *data, 
  14707     uint32 *mask);
  14708 
  14709 /* Qualify on Exact Match Group Class Id. */
  14710 extern int bcm_field_qualify_ExactMatchGroupClassId(
  14711     int unit, 
  14712     bcm_field_entry_t entry, 
  14713     int group_pri, 
  14714     bcm_field_group_t group);
  14715 
  14716 /* Add an action to a field entry */
  14717 extern int bcm_field_action_config_add(
  14718     int unit, 
  14719     bcm_field_entry_t entry, 
  14720     bcm_field_action_t action, 
  14721     int core_config_arr_len, 
  14722     bcm_field_action_core_config_t *core_config_arr);
  14723 
  14724 /* Get action core specific parameters from a specified entry. */
  14725 extern int bcm_field_action_config_get(
  14726     int unit, 
  14727     bcm_field_entry_t entry, 
  14728     bcm_field_action_t action, 
  14729     int core_config_arr_len, 
  14730     bcm_field_action_core_config_t *core_config_arr);
  14731 
  14732 /* Given low level action, get the BCM actions and stages which use it. */
  14733 extern int bcm_field_internal_to_bcm_action_map(
  14734     int unit, 
  14735     uint32 flags, 
  14736     int internal_action, 
  14737     uint32 bcm_action_size, 
  14738     bcm_field_internal_to_bcm_map_t *bcm_action_stage, 
  14739     uint32 *bcm_action_size_actual);
  14740 
  14741 /* 
  14742  * Set new width (in bits) to a specific action. Width may be required to
  14743  * be the default value.
  14744  */
  14745 extern int bcm_field_action_width_set(
  14746     int unit, 
  14747     uint32 flags, 
  14748     int internal_action, 
  14749     uint32 width);
  14750 
  14751 /* 
  14752  * Get current width (in bits) set to a specific action or get default
  14753  * width (in bits) of a specific action
  14754  */
  14755 extern int bcm_field_action_width_get(
  14756     int unit, 
  14757     uint32 flags, 
  14758     int internal_action, 
  14759     uint32 *width_p);
  14760 
  14761 /* Get match criteria for ExactMatchGroupClassId qualifier. */
  14762 extern int bcm_field_qualify_ExactMatchGroupClassId_get(
  14763     int unit, 
  14764     bcm_field_entry_t entry, 
  14765     int group_pri, 
  14766     bcm_field_group_t *group);
  14767 
  14768 /* Set match criteria for Vlan Action ID. */
  14769 extern int bcm_field_qualify_VlanAction(
  14770     int unit, 
  14771     bcm_field_entry_t entry, 
  14772     uint32 data, 
  14773     uint32 mask);
  14774 
  14775 /* Get match criteria for Vlan Action ID qualifier. */
  14776 extern int bcm_field_qualify_VlanAction_get(
  14777     int unit, 
  14778     bcm_field_entry_t entry, 
  14779     uint32 *data, 
  14780     uint32 *mask);
  14781 
  14782 /* Add match criteria for bcmFieldQualifyDstMultipathOverlay. */
  14783 extern int bcm_field_qualify_DstMultipathOverlay(
  14784     int unit, 
  14785     bcm_field_entry_t entry, 
  14786     bcm_if_t data, 
  14787     bcm_if_t mask);
  14788 
  14789 /* Get match criteria for ECMP groups with Overlay flag. */
  14790 extern int bcm_field_qualify_DstMultipathOverlay_get(
  14791     int unit, 
  14792     bcm_field_entry_t entry, 
  14793     bcm_if_t *data, 
  14794     bcm_if_t *mask);
  14795 
  14796 /* Add match criteria for bcmFieldQualifyDstMultipathUnderlay. */
  14797 extern int bcm_field_qualify_DstMultipathUnderlay(
  14798     int unit, 
  14799     bcm_field_entry_t entry, 
  14800     bcm_if_t data, 
  14801     bcm_if_t mask);
  14802 
  14803 /* Get match criteria for ECMP groups with Underlay flag. */
  14804 extern int bcm_field_qualify_DstMultipathUnderlay_get(
  14805     int unit, 
  14806     bcm_field_entry_t entry, 
  14807     bcm_if_t *data, 
  14808     bcm_if_t *mask);
  14809 
  14810 /* Add an action to a field entry */
  14811 extern int bcm_field_action_add(
  14812     int unit, 
  14813     bcm_field_entry_t entry, 
  14814     bcm_field_action_t action, 
  14815     uint32 param0, 
  14816     uint32 param1);
  14817 
  14818 /* Delete an action from a field entry */
  14819 extern int bcm_field_action_delete(
  14820     int unit, 
  14821     bcm_field_entry_t entry, 
  14822     bcm_field_action_t action, 
  14823     uint32 param0, 
  14824     uint32 param1);
  14825 
  14826 /* Get Class size for provided qualifier. */
  14827 extern int bcm_field_class_size_get(
  14828     int unit, 
  14829     bcm_field_qualify_t qual, 
  14830     uint16 *class_size);
  14831 
  14832 /* 
  14833  * Add an action to a field class entry (an entry that is a member of a
  14834  * compression stage).
  14835  */
  14836 extern int bcm_field_action_class_add(
  14837     int unit, 
  14838     bcm_field_entry_t entry, 
  14839     bcm_field_class_info_t *class_info);
  14840 
  14841 /* 
  14842  * Get an action from a field class entry (an entry that is a member of a
  14843  * direct extraction group).
  14844  */
  14845 extern int bcm_field_action_class_get(
  14846     int unit, 
  14847     bcm_field_entry_t entry, 
  14848     bcm_field_class_info_t *class_info);
  14849 
  14850 /* Add an action to a field entry */
  14851 extern int bcm_field_action_mac_add(
  14852     int unit, 
  14853     bcm_field_entry_t entry, 
  14854     bcm_field_action_t action, 
  14855     bcm_mac_t mac);
  14856 
  14857 /* Add an action to a field entry */
  14858 extern int bcm_field_action_ports_add(
  14859     int unit, 
  14860     bcm_field_entry_t entry, 
  14861     bcm_field_action_t action, 
  14862     bcm_pbmp_t pbmp);
  14863 
  14864 /* 
  14865  * Retrieve the parameters for an action previously added to a field
  14866  * entry
  14867  */
  14868 extern int bcm_field_action_get(
  14869     int unit, 
  14870     bcm_field_entry_t entry, 
  14871     bcm_field_action_t action, 
  14872     uint32 *param0, 
  14873     uint32 *param1);
  14874 
  14875 /* 
  14876  * Retrieve the parameters for an action previously added to a field
  14877  * entry
  14878  */
  14879 extern int bcm_field_action_mac_get(
  14880     int unit, 
  14881     bcm_field_entry_t entry, 
  14882     bcm_field_action_t action, 
  14883     bcm_mac_t *mac);
  14884 
  14885 /* 
  14886  * Retrieve the parameters for an action previously added to a field
  14887  * entry
  14888  */
  14889 extern int bcm_field_action_ports_get(
  14890     int unit, 
  14891     bcm_field_entry_t entry, 
  14892     bcm_field_action_t action, 
  14893     bcm_pbmp_t *pbmp);
  14894 
  14895 /* Remove an action from a field entry */
  14896 extern int bcm_field_action_remove(
  14897     int unit, 
  14898     bcm_field_entry_t entry, 
  14899     bcm_field_action_t action);
  14900 
  14901 /* Remove all actions from a field entry */
  14902 extern int bcm_field_action_remove_all(
  14903     int unit, 
  14904     bcm_field_entry_t entry);
  14905 
  14906 #endif /* BCM_HIDE_DISPATCHABLE */
  14907 
  14908 /* Initialize a bcm_field_extraction_field_t. */
  14909 extern void bcm_field_extraction_field_t_init(
  14910     bcm_field_extraction_field_t *action);
  14911 
  14912 /* Initialize a bcm_field_extraction_action_t. */
  14913 extern void bcm_field_extraction_action_t_init(
  14914     bcm_field_extraction_action_t *action);
  14915 
  14916 #ifndef BCM_HIDE_DISPATCHABLE
  14917 
  14918 /* 
  14919  * Add an action to a direct extraction field entry (an entry that is a
  14920  * member of a direct extraction group).
  14921  */
  14922 extern int bcm_field_direct_extraction_action_add(
  14923     int unit, 
  14924     bcm_field_entry_t entry, 
  14925     bcm_field_extraction_action_t action, 
  14926     int count, 
  14927     bcm_field_extraction_field_t *extractions);
  14928 
  14929 /* 
  14930  * Get an action from a direct extraction field entry (an entry that is a
  14931  * member of a direct extraction group).
  14932  */
  14933 extern int bcm_field_direct_extraction_action_get(
  14934     int unit, 
  14935     bcm_field_entry_t entry, 
  14936     bcm_field_extraction_action_t *action, 
  14937     int max_count, 
  14938     bcm_field_extraction_field_t *extractions, 
  14939     int *actual_count);
  14940 
  14941 /* Create stat collection entity. */
  14942 extern int bcm_field_stat_create(
  14943     int unit, 
  14944     bcm_field_group_t group, 
  14945     int nstat, 
  14946     bcm_field_stat_t *stat_arr, 
  14947     int *stat_id);
  14948 
  14949 /* 
  14950  * Create stat collection entity with specified Statistics entity ID
  14951  * value.
  14952  */
  14953 extern int bcm_field_stat_create_id(
  14954     int unit, 
  14955     bcm_field_group_t group, 
  14956     int nstat, 
  14957     bcm_field_stat_t *stat_arr, 
  14958     int stat_id);
  14959 
  14960 /* 
  14961  * Get flex stat counter ID associated with given field group and its
  14962  * associated stats ID.
  14963  */
  14964 extern int bcm_field_stat_id_get(
  14965     int unit, 
  14966     bcm_field_group_t group, 
  14967     uint32 stat_id, 
  14968     uint32 *stat_counter_id);
  14969 
  14970 /* Destroy stat collection entity. */
  14971 extern int bcm_field_stat_destroy(
  14972     int unit, 
  14973     int stat_id);
  14974 
  14975 /* Get number of counters associated with statistics entity. */
  14976 extern int bcm_field_stat_size(
  14977     int unit, 
  14978     int stat_id, 
  14979     int *stat_size);
  14980 
  14981 /* Get enabled statistics for specific collection entity. */
  14982 extern int bcm_field_stat_config_get(
  14983     int unit, 
  14984     int stat_id, 
  14985     int nstat, 
  14986     bcm_field_stat_t *stat_arr);
  14987 
  14988 /* Set 64-bit counter value for specific statistic type. */
  14989 extern int bcm_field_stat_set(
  14990     int unit, 
  14991     int stat_id, 
  14992     bcm_field_stat_t stat, 
  14993     uint64 value);
  14994 
  14995 /* Set 32-bit counter value for specific statistic type. */
  14996 extern int bcm_field_stat_set32(
  14997     int unit, 
  14998     int stat_id, 
  14999     bcm_field_stat_t stat, 
  15000     uint32 value);
  15001 
  15002 /* Set 64-bit counter value to all counters. */
  15003 extern int bcm_field_stat_all_set(
  15004     int unit, 
  15005     int stat_id, 
  15006     uint64 value);
  15007 
  15008 /* Set 32-bit counter value to all counters. */
  15009 extern int bcm_field_stat_all_set32(
  15010     int unit, 
  15011     int stat_id, 
  15012     uint32 value);
  15013 
  15014 /* Get 64-bit counter value for specific statistic type. */
  15015 extern int bcm_field_stat_get(
  15016     int unit, 
  15017     int stat_id, 
  15018     bcm_field_stat_t stat, 
  15019     uint64 *value);
  15020 
  15021 /* 
  15022  * Force an immediate counter update and retrieve specific statistic
  15023  * type.
  15024  */
  15025 extern int bcm_field_stat_sync_get(
  15026     int unit, 
  15027     int stat_id, 
  15028     bcm_field_stat_t stat, 
  15029     uint64 *value);
  15030 
  15031 /* Get 32-bit counter value for specific statistic type. */
  15032 extern int bcm_field_stat_get32(
  15033     int unit, 
  15034     int stat_id, 
  15035     bcm_field_stat_t stat, 
  15036     uint32 *value);
  15037 
  15038 /* 
  15039  * Force an immediate counter update and retrieve specific statistic
  15040  * type.
  15041  * Get 32-bit counter value for specific statistic type.
  15042  */
  15043 extern int bcm_field_stat_sync_get32(
  15044     int unit, 
  15045     int stat_id, 
  15046     bcm_field_stat_t stat, 
  15047     uint32 *value);
  15048 
  15049 /* Get 64-bit counter values for multiple statistic types. */
  15050 extern int bcm_field_stat_multi_get(
  15051     int unit, 
  15052     int stat_id, 
  15053     int nstat, 
  15054     bcm_field_stat_t *stat_arr, 
  15055     uint64 *value_arr);
  15056 
  15057 /* Get 32-bit counter values for multiple statistic types. */
  15058 extern int bcm_field_stat_multi_get32(
  15059     int unit, 
  15060     int stat_id, 
  15061     int nstat, 
  15062     bcm_field_stat_t *stat_arr, 
  15063     uint32 *value_arr);
  15064 
  15065 /* Attach statistics entity to Field Processor entry. */
  15066 extern int bcm_field_entry_stat_attach(
  15067     int unit, 
  15068     bcm_field_entry_t entry, 
  15069     int stat_id);
  15070 
  15071 /* Attach statistics with stat action entity to Field Processor entry. */
  15072 extern int bcm_field_entry_stat_extended_attach(
  15073     int unit, 
  15074     bcm_field_entry_t entry, 
  15075     int stat_id, 
  15076     bcm_field_stat_action_t stat_action);
  15077 
  15078 /* Detach statistics entity from Field Processor entry. */
  15079 extern int bcm_field_entry_stat_detach(
  15080     int unit, 
  15081     bcm_field_entry_t entry, 
  15082     int stat_id);
  15083 
  15084 /* Get statistics entity attached to Field Processor entry. */
  15085 extern int bcm_field_entry_stat_get(
  15086     int unit, 
  15087     bcm_field_entry_t entry, 
  15088     int *stat_id);
  15089 
  15090 /* 
  15091  * Get statistics entity with stat action attached to Field Processor
  15092  * entry.
  15093  */
  15094 extern int bcm_field_entry_stat_extended_get(
  15095     int unit, 
  15096     bcm_field_entry_t entry, 
  15097     int *stat_id, 
  15098     bcm_field_stat_action_t *stat_action);
  15099 
  15100 #endif /* BCM_HIDE_DISPATCHABLE */
  15101 
  15102 /* Initialize Field Oam Stat Action Structure. */
  15103 extern void bcm_field_oam_stat_action_t_init(
  15104     bcm_field_oam_stat_action_t *oam_action);
  15105 
  15106 #ifndef BCM_HIDE_DISPATCHABLE
  15107 
  15108 /* Add Oam Stat Action to the entry. */
  15109 extern int bcm_field_oam_stat_action_add(
  15110     int unit, 
  15111     bcm_field_entry_t entry, 
  15112     bcm_field_oam_stat_action_t *oam_stat_action);
  15113 
  15114 /* Delete Oam Stat Action from entry. */
  15115 extern int bcm_field_oam_stat_action_delete(
  15116     int unit, 
  15117     bcm_field_entry_t entry, 
  15118     bcm_field_oam_stat_action_t *oam_stat_action);
  15119 
  15120 /* Delete all the Oam Stat Actions from entry. */
  15121 extern int bcm_field_oam_stat_action_delete_all(
  15122     int unit, 
  15123     bcm_field_entry_t entry);
  15124 
  15125 /* 
  15126  * Get the Oam Stat action for a given Stat Object installed in the
  15127  * entry.
  15128  */
  15129 extern int bcm_field_oam_stat_action_get(
  15130     int unit, 
  15131     bcm_field_entry_t entry, 
  15132     bcm_field_oam_stat_action_t *oam_stat_action);
  15133 
  15134 /* Get all the Oam Stat actions added to the entry. */
  15135 extern int bcm_field_oam_stat_action_get_all(
  15136     int unit, 
  15137     bcm_field_entry_t entry, 
  15138     int oam_stat_max, 
  15139     bcm_field_oam_stat_action_t *oam_stat_action, 
  15140     int *oam_stat_count);
  15141 
  15142 #endif /* BCM_HIDE_DISPATCHABLE */
  15143 
  15144 /* Initialize Field Qualifier LLC header structure. */
  15145 extern void bcm_field_llc_header_t_init(
  15146     bcm_field_llc_header_t *llc_header);
  15147 
  15148 /* Initialize Field Qualifier SNAP header structure. */
  15149 extern void bcm_field_snap_header_t_init(
  15150     bcm_field_snap_header_t *snap_header);
  15151 
  15152 /* Initialize the Field Qualifier Set structure. */
  15153 extern void bcm_field_qset_t_init(
  15154     bcm_field_qset_t *qset);
  15155 
  15156 /* Initialize the Field Action Set structure. */
  15157 extern void bcm_field_aset_t_init(
  15158     bcm_field_aset_t *aset);
  15159 
  15160 /* Initialize the bcm_field_presel_set_t structure. */
  15161 extern void bcm_field_presel_set_t_init(
  15162     bcm_field_presel_set_t *presel_set);
  15163 
  15164 /* Initialize the Field Group Status structure. */
  15165 extern void bcm_field_group_status_t_init(
  15166     bcm_field_group_status_t *fgroup);
  15167 
  15168 #ifndef BCM_HIDE_DISPATCHABLE
  15169 
  15170 #if defined(BROADCOM_DEBUG)
  15171 /* Show current software state of the field module */
  15172 extern int bcm_field_show(
  15173     int unit, 
  15174     const char *pfx);
  15175 #endif
  15176 
  15177 #if defined(BROADCOM_DEBUG)
  15178 /* Show contents of a field entry */
  15179 extern int bcm_field_entry_dump(
  15180     int unit, 
  15181     bcm_field_entry_t entry);
  15182 #endif
  15183 
  15184 #if defined(BROADCOM_DEBUG)
  15185 /* Show contents of a field group */
  15186 extern int bcm_field_group_dump(
  15187     int unit, 
  15188     bcm_field_group_t group);
  15189 #endif
  15190 
  15191 #endif /* BCM_HIDE_DISPATCHABLE */
  15192 
  15193 /* SDK 5.2.0 backward compatibility. */
  15194 #define bcmFieldQualifyOutVlan  bcmFieldQualifyOuterVlan 
  15195 #define bcmFieldQualifyInVlan   bcmFieldQualifyInnerVlan 
  15196 
  15197 /* SDK 5.2.0 backward compatibility. */
  15198 #define bcm_field_qualify_OutVlan   bcm_field_qualify_OuterVlan 
  15199 #define bcm_field_qualify_InVlan    bcm_field_qualify_InnerVlan 
  15200 
  15201 #ifndef BCM_HIDE_DISPATCHABLE
  15202 
  15203 /* Attach counters entries to a field group */
  15204 extern int bcm_field_stat_attach(
  15205     int unit, 
  15206     bcm_field_group_t group, 
  15207     uint32 stat_counter_id, 
  15208     uint32 *stat_id);
  15209 
  15210 /* Detach counters entries to a field group. */
  15211 extern int bcm_field_stat_detach(
  15212     int unit, 
  15213     uint32 stat_id);
  15214 
  15215 /* Get counter statistic values for a field entity */
  15216 extern int bcm_field_stat_counter_get(
  15217     int unit, 
  15218     uint32 stat_id, 
  15219     bcm_field_stat_t stat, 
  15220     uint32 num_entries, 
  15221     uint32 *counter_indexes, 
  15222     bcm_stat_value_t *counter_values);
  15223 
  15224 /* 
  15225  * Force an immediate counter update and retrieve statistics value for a
  15226  * field entity
  15227  */
  15228 extern int bcm_field_stat_counter_sync_get(
  15229     int unit, 
  15230     uint32 stat_id, 
  15231     bcm_field_stat_t stat, 
  15232     uint32 num_entries, 
  15233     uint32 *counter_indexes, 
  15234     bcm_stat_value_t *counter_values);
  15235 
  15236 /* Set counter statistic values for a field entity */
  15237 extern int bcm_field_stat_counter_set(
  15238     int unit, 
  15239     uint32 stat_id, 
  15240     bcm_field_stat_t stat, 
  15241     uint32 num_entries, 
  15242     uint32 *counter_indexes, 
  15243     bcm_stat_value_t *counter_values);
  15244 
  15245 /* 
  15246  * Create a preselection specification using a specific ID for a specific
  15247  * stage
  15248  */
  15249 extern int bcm_field_presel_create_stage_id(
  15250     int unit, 
  15251     bcm_field_stage_t stage, 
  15252     bcm_field_presel_t presel_id);
  15253 
  15254 /* Destroy a preselection specification. */
  15255 extern int bcm_field_presel_destroy(
  15256     int unit, 
  15257     bcm_field_presel_t presel_id);
  15258 
  15259 /* Associate a set of preselectors with a Field group. */
  15260 extern int bcm_field_group_presel_set(
  15261     int unit, 
  15262     bcm_field_group_t group, 
  15263     bcm_field_presel_set_t *presel);
  15264 
  15265 /* Get the set of preselectors associated with a Field group. */
  15266 extern int bcm_field_group_presel_get(
  15267     int unit, 
  15268     bcm_field_group_t group, 
  15269     bcm_field_presel_set_t *presel);
  15270 
  15271 #endif /* BCM_HIDE_DISPATCHABLE */
  15272 
  15273 /* Field entry operation structure. */
  15274 typedef struct bcm_field_entry_oper_s {
  15275     uint32 flags;               /* Entry operation BCM_FIELD_ENTRY_OPER_XXX. */
  15276     bcm_field_entry_t entry_id; /* Entry identifier. */
  15277 } bcm_field_entry_oper_t;
  15278 
  15279 /* Parameter for bcm_field_entry_oper_t. */
  15280 #define BCM_FIELD_ENTRY_OPER_BACKUP     (1 << 0)   /* Backup up an entry
  15281                                                       configuration. */
  15282 #define BCM_FIELD_ENTRY_OPER_RESTORE    (1 << 1)   /* Restore backed up entry
  15283                                                       configuration. */
  15284 #define BCM_FIELD_ENTRY_OPER_CLEANUP    (1 << 2)   /* Free resources used by
  15285                                                       back entry. */
  15286 #define BCM_FIELD_ENTRY_OPER_MASK       (0x7)      /* Mask of valid entry
  15287                                                       operations supported. */
  15288 
  15289 /* Initialize field entry operation structure */
  15290 extern void bcm_field_entry_oper_t_init(
  15291     bcm_field_entry_oper_t *entry_oper);
  15292 
  15293 #ifndef BCM_HIDE_DISPATCHABLE
  15294 
  15295 /* Perform backup, restore and cleanup operations on a field entry. */
  15296 extern int bcm_field_entry_operation(
  15297     int unit, 
  15298     bcm_field_entry_oper_t *entry_oper);
  15299 
  15300 /* Get data field that the packet must match to trigger qualifier */
  15301 extern int bcm_field_qualify_data_get(
  15302     int unit, 
  15303     bcm_field_entry_t eid, 
  15304     int qual_id, 
  15305     uint16 length_max, 
  15306     uint8 *data, 
  15307     uint8 *mask, 
  15308     uint16 *length);
  15309 
  15310 /* Allocate a range checker according to multiple range types */
  15311 extern int bcm_field_range_multi_create(
  15312     int unit, 
  15313     bcm_field_range_t *range_id, 
  15314     uint32 create_flags, 
  15315     int count, 
  15316     uint32 *range_flags, 
  15317     uint32 *min_value, 
  15318     uint32 *max_value);
  15319 
  15320 /* Retrieve parameters associated with an existing multi-range checker */
  15321 extern int bcm_field_range_multi_get(
  15322     int unit, 
  15323     bcm_field_range_t range_id, 
  15324     int max_count, 
  15325     uint32 *range_flags, 
  15326     uint32 *minimum_value, 
  15327     uint32 *maxamum_value, 
  15328     int *actual_count);
  15329 
  15330 /* 
  15331  * Set match criteria for bcmFieldQualifyMplsOuterLabelPop
  15332  *                qualifier in the field entry.
  15333  */
  15334 extern int bcm_field_qualify_MplsOuterLabelPop(
  15335     int unit, 
  15336     bcm_field_entry_t entry, 
  15337     uint8 data, 
  15338     uint8 mask);
  15339 
  15340 /* 
  15341  * Get match criteria for bcmFieldQualifyMplsOuterLabelPop
  15342  *                qualifier in the field entry.
  15343  */
  15344 extern int bcm_field_qualify_MplsOuterLabelPop_get(
  15345     int unit, 
  15346     bcm_field_entry_t entry, 
  15347     uint8 *data, 
  15348     uint8 *mask);
  15349 
  15350 /* 
  15351  * Set match criteria for
  15352  *                bcmFieldQualifyMplsStationHitTunnelUnterminated
  15353  *                qualifier in the field entry.
  15354  */
  15355 extern int bcm_field_qualify_MplsStationHitTunnelUnterminated(
  15356     int unit, 
  15357     bcm_field_entry_t entry, 
  15358     uint8 data, 
  15359     uint8 mask);
  15360 
  15361 /* 
  15362  * Get match criteria for
  15363  *                bcmFieldQualifyMplsStationHitTunnelUnterminated
  15364  *                qualifier in the field entry.
  15365  */
  15366 extern int bcm_field_qualify_MplsStationHitTunnelUnterminated_get(
  15367     int unit, 
  15368     bcm_field_entry_t entry, 
  15369     uint8 *data, 
  15370     uint8 *mask);
  15371 
  15372 /* 
  15373  * Set match criteria for bcmFieldQualifyIngressClassField
  15374  *                qualifier in the field entry.
  15375  */
  15376 extern int bcm_field_qualify_IngressClassField(
  15377     int unit, 
  15378     bcm_field_entry_t entry, 
  15379     uint32 data, 
  15380     uint32 mask);
  15381 
  15382 /* 
  15383  * Get match criteria for bcmFieldQualifyIngressClassField
  15384  *                qualifier in the field entry.
  15385  */
  15386 extern int bcm_field_qualify_IngressClassField_get(
  15387     int unit, 
  15388     bcm_field_entry_t entry, 
  15389     uint32 *data, 
  15390     uint32 *mask);
  15391 
  15392 /* 
  15393  * Set match criteria for bcmFieldQualifyIngressInterfaceClassPort
  15394  *                qualifier in the field entry.
  15395  */
  15396 extern int bcm_field_qualify_IngressInterfaceClassPort(
  15397     int unit, 
  15398     bcm_field_entry_t entry, 
  15399     uint32 data, 
  15400     uint32 mask);
  15401 
  15402 /* 
  15403  * Get match criteria for bcmFieldQualifyIngressInterfaceClassPort
  15404  *                qualifier in the field entry.
  15405  */
  15406 extern int bcm_field_qualify_IngressInterfaceClassPort_get(
  15407     int unit, 
  15408     bcm_field_entry_t entry, 
  15409     uint32 *data, 
  15410     uint32 *mask);
  15411 
  15412 /* 
  15413  * Set match criteria for bcmFieldQualifyExternalValue0
  15414  *                qualifier in the field entry.
  15415  */
  15416 extern int bcm_field_qualify_ExternalValue0(
  15417     int unit, 
  15418     bcm_field_entry_t entry, 
  15419     uint64 data, 
  15420     uint64 mask);
  15421 
  15422 /* 
  15423  * Get match criteria for bcmFieldQualifyExternalValue0
  15424  *                qualifier in the field entry.
  15425  */
  15426 extern int bcm_field_qualify_ExternalValue0_get(
  15427     int unit, 
  15428     bcm_field_entry_t entry, 
  15429     uint64 *data, 
  15430     uint64 *mask);
  15431 
  15432 /* 
  15433  * Set match criteria for bcmFieldQualifyExternalValue1
  15434  *                qualifier in the field entry.
  15435  */
  15436 extern int bcm_field_qualify_ExternalValue1(
  15437     int unit, 
  15438     bcm_field_entry_t entry, 
  15439     uint64 data, 
  15440     uint64 mask);
  15441 
  15442 /* 
  15443  * Get match criteria for bcmFieldQualifyExternalValue1
  15444  *                qualifier in the field entry.
  15445  */
  15446 extern int bcm_field_qualify_ExternalValue1_get(
  15447     int unit, 
  15448     bcm_field_entry_t entry, 
  15449     uint64 *data, 
  15450     uint64 *mask);
  15451 
  15452 /* 
  15453  * Set match criteria for bcmFieldQualifyExternalValue2
  15454  *                qualifier in the field entry.
  15455  */
  15456 extern int bcm_field_qualify_ExternalValue2(
  15457     int unit, 
  15458     bcm_field_entry_t entry, 
  15459     uint64 data, 
  15460     uint64 mask);
  15461 
  15462 /* 
  15463  * Get match criteria for bcmFieldQualifyExternalValue2
  15464  *                qualifier in the field entry.
  15465  */
  15466 extern int bcm_field_qualify_ExternalValue2_get(
  15467     int unit, 
  15468     bcm_field_entry_t entry, 
  15469     uint64 *data, 
  15470     uint64 *mask);
  15471 
  15472 /* 
  15473  * Set match criteria for bcmFieldQualifyExternalValue3
  15474  *                qualifier in the field entry.
  15475  */
  15476 extern int bcm_field_qualify_ExternalValue3(
  15477     int unit, 
  15478     bcm_field_entry_t entry, 
  15479     uint64 data, 
  15480     uint64 mask);
  15481 
  15482 /* 
  15483  * Get match criteria for bcmFieldQualifyExternalValue3
  15484  *                qualifier in the field entry.
  15485  */
  15486 extern int bcm_field_qualify_ExternalValue3_get(
  15487     int unit, 
  15488     bcm_field_entry_t entry, 
  15489     uint64 *data, 
  15490     uint64 *mask);
  15491 
  15492 /* 
  15493  * Set match criteria for bcmFieldQualifyExternalValue4
  15494  *                qualifier in the field entry.
  15495  */
  15496 extern int bcm_field_qualify_ExternalValue4(
  15497     int unit, 
  15498     bcm_field_entry_t entry, 
  15499     uint64 data, 
  15500     uint64 mask);
  15501 
  15502 /* 
  15503  * Get match criteria for bcmFieldQualifyExternalValue4
  15504  *                qualifier in the field entry.
  15505  */
  15506 extern int bcm_field_qualify_ExternalValue4_get(
  15507     int unit, 
  15508     bcm_field_entry_t entry, 
  15509     uint64 *data, 
  15510     uint64 *mask);
  15511 
  15512 /* 
  15513  * Set match criteria for bcmFieldQualifyExternalValue5
  15514  *                qualifier in the field entry.
  15515  */
  15516 extern int bcm_field_qualify_ExternalValue5(
  15517     int unit, 
  15518     bcm_field_entry_t entry, 
  15519     uint64 data, 
  15520     uint64 mask);
  15521 
  15522 /* 
  15523  * Get match criteria for bcmFieldQualifyExternalValue5
  15524  *                qualifier in the field entry.
  15525  */
  15526 extern int bcm_field_qualify_ExternalValue5_get(
  15527     int unit, 
  15528     bcm_field_entry_t entry, 
  15529     uint64 *data, 
  15530     uint64 *mask);
  15531 
  15532 /* 
  15533  * Set match criteria for bcmFieldQualifyExternalValue6
  15534  *                qualifier in the field entry.
  15535  */
  15536 extern int bcm_field_qualify_ExternalValue6(
  15537     int unit, 
  15538     bcm_field_entry_t entry, 
  15539     uint64 data, 
  15540     uint64 mask);
  15541 
  15542 /* 
  15543  * Get match criteria for bcmFieldQualifyExternalValue6
  15544  *                qualifier in the field entry.
  15545  */
  15546 extern int bcm_field_qualify_ExternalValue6_get(
  15547     int unit, 
  15548     bcm_field_entry_t entry, 
  15549     uint64 *data, 
  15550     uint64 *mask);
  15551 
  15552 /* 
  15553  * Set match criteria for bcmFieldQualifyExternalValue7
  15554  *                qualifier in the field entry.
  15555  */
  15556 extern int bcm_field_qualify_ExternalValue7(
  15557     int unit, 
  15558     bcm_field_entry_t entry, 
  15559     uint64 data, 
  15560     uint64 mask);
  15561 
  15562 /* 
  15563  * Get match criteria for bcmFieldQualifyExternalValue7
  15564  *                qualifier in the field entry.
  15565  */
  15566 extern int bcm_field_qualify_ExternalValue7_get(
  15567     int unit, 
  15568     bcm_field_entry_t entry, 
  15569     uint64 *data, 
  15570     uint64 *mask);
  15571 
  15572 /* 
  15573  * Set match criteria for bcmFieldQualifyExternalHit0
  15574  *                qualifier in the field entry.
  15575  */
  15576 extern int bcm_field_qualify_ExternalHit0(
  15577     int unit, 
  15578     bcm_field_entry_t entry, 
  15579     uint8 data, 
  15580     uint8 mask);
  15581 
  15582 /* 
  15583  * Get match criteria for bcmFieldQualifyExternalHit0
  15584  *                qualifier in the field entry.
  15585  */
  15586 extern int bcm_field_qualify_ExternalHit0_get(
  15587     int unit, 
  15588     bcm_field_entry_t entry, 
  15589     uint8 *data, 
  15590     uint8 *mask);
  15591 
  15592 /* 
  15593  * Set match criteria for bcmFieldQualifyExternalHit1
  15594  *                qualifier in the field entry.
  15595  */
  15596 extern int bcm_field_qualify_ExternalHit1(
  15597     int unit, 
  15598     bcm_field_entry_t entry, 
  15599     uint8 data, 
  15600     uint8 mask);
  15601 
  15602 /* 
  15603  * Get match criteria for bcmFieldQualifyExternalHit1
  15604  *                qualifier in the field entry.
  15605  */
  15606 extern int bcm_field_qualify_ExternalHit1_get(
  15607     int unit, 
  15608     bcm_field_entry_t entry, 
  15609     uint8 *data, 
  15610     uint8 *mask);
  15611 
  15612 /* 
  15613  * Set match criteria for bcmFieldQualifyExternalHit2
  15614  *                qualifier in the field entry.
  15615  */
  15616 extern int bcm_field_qualify_ExternalHit2(
  15617     int unit, 
  15618     bcm_field_entry_t entry, 
  15619     uint8 data, 
  15620     uint8 mask);
  15621 
  15622 /* 
  15623  * Get match criteria for bcmFieldQualifyExternalHit2
  15624  *                qualifier in the field entry.
  15625  */
  15626 extern int bcm_field_qualify_ExternalHit2_get(
  15627     int unit, 
  15628     bcm_field_entry_t entry, 
  15629     uint8 *data, 
  15630     uint8 *mask);
  15631 
  15632 /* 
  15633  * Set match criteria for bcmFieldQualifyExternalHit3
  15634  *                qualifier in the field entry.
  15635  */
  15636 extern int bcm_field_qualify_ExternalHit3(
  15637     int unit, 
  15638     bcm_field_entry_t entry, 
  15639     uint8 data, 
  15640     uint8 mask);
  15641 
  15642 /* 
  15643  * Get match criteria for bcmFieldQualifyExternalHit3
  15644  *                qualifier in the field entry.
  15645  */
  15646 extern int bcm_field_qualify_ExternalHit3_get(
  15647     int unit, 
  15648     bcm_field_entry_t entry, 
  15649     uint8 *data, 
  15650     uint8 *mask);
  15651 
  15652 /* 
  15653  * Set match criteria for bcmFieldQualifyExternalHit4
  15654  *                qualifier in the field entry.
  15655  */
  15656 extern int bcm_field_qualify_ExternalHit4(
  15657     int unit, 
  15658     bcm_field_entry_t entry, 
  15659     uint8 data, 
  15660     uint8 mask);
  15661 
  15662 /* 
  15663  * Get match criteria for bcmFieldQualifyExternalHit4
  15664  *                qualifier in the field entry.
  15665  */
  15666 extern int bcm_field_qualify_ExternalHit4_get(
  15667     int unit, 
  15668     bcm_field_entry_t entry, 
  15669     uint8 *data, 
  15670     uint8 *mask);
  15671 
  15672 /* 
  15673  * Set match criteria for bcmFieldQualifyExternalHit5
  15674  *                qualifier in the field entry.
  15675  */
  15676 extern int bcm_field_qualify_ExternalHit5(
  15677     int unit, 
  15678     bcm_field_entry_t entry, 
  15679     uint8 data, 
  15680     uint8 mask);
  15681 
  15682 /* 
  15683  * Get match criteria for bcmFieldQualifyExternalHit5
  15684  *                qualifier in the field entry.
  15685  */
  15686 extern int bcm_field_qualify_ExternalHit5_get(
  15687     int unit, 
  15688     bcm_field_entry_t entry, 
  15689     uint8 *data, 
  15690     uint8 *mask);
  15691 
  15692 /* 
  15693  * Set match criteria for bcmFieldQualifyExternalHit6
  15694  *                qualifier in the field entry.
  15695  */
  15696 extern int bcm_field_qualify_ExternalHit6(
  15697     int unit, 
  15698     bcm_field_entry_t entry, 
  15699     uint8 data, 
  15700     uint8 mask);
  15701 
  15702 /* 
  15703  * Get match criteria for bcmFieldQualifyExternalHit6
  15704  *                qualifier in the field entry.
  15705  */
  15706 extern int bcm_field_qualify_ExternalHit6_get(
  15707     int unit, 
  15708     bcm_field_entry_t entry, 
  15709     uint8 *data, 
  15710     uint8 *mask);
  15711 
  15712 /* 
  15713  * Set match criteria for bcmFieldQualifyExternalHit7
  15714  *                qualifier in the field entry.
  15715  */
  15716 extern int bcm_field_qualify_ExternalHit7(
  15717     int unit, 
  15718     bcm_field_entry_t entry, 
  15719     uint8 data, 
  15720     uint8 mask);
  15721 
  15722 /* 
  15723  * Get match criteria for bcmFieldQualifyExternalHit7
  15724  *                qualifier in the field entry.
  15725  */
  15726 extern int bcm_field_qualify_ExternalHit7_get(
  15727     int unit, 
  15728     bcm_field_entry_t entry, 
  15729     uint8 *data, 
  15730     uint8 *mask);
  15731 
  15732 /* 
  15733  * Set match criteria for bcmFieldQualifyVpnUnknownDstMacDstPort
  15734  *                qualifier in the field entry.
  15735  */
  15736 extern int bcm_field_qualify_VpnUnknownDstMacDstPort(
  15737     int unit, 
  15738     bcm_field_entry_t entry, 
  15739     bcm_gport_t port_id);
  15740 
  15741 /* 
  15742  * Get match criteria for bcmFieldQualifyVpnUnknownDstMacDstPort
  15743  *                qualifier in the field entry.
  15744  */
  15745 extern int bcm_field_qualify_VpnUnknownDstMacDstPort_get(
  15746     int unit, 
  15747     bcm_field_entry_t entry, 
  15748     bcm_gport_t *port_id);
  15749 
  15750 /* 
  15751  *  Set match criteria for bcmFieldQualifyVxlanNetworkId
  15752  *                  qualifier in the field entry.
  15753  */
  15754 extern int bcm_field_qualify_VxlanNetworkId(
  15755     int unit, 
  15756     bcm_field_entry_t entry, 
  15757     uint32 data, 
  15758     uint32 mask);
  15759 
  15760 /* 
  15761  *  Get match criteria for bcmFieldQualifyVxlanNetworkId
  15762  *                  qualifier in the field entry.
  15763  */
  15764 extern int bcm_field_qualify_VxlanNetworkId_get(
  15765     int unit, 
  15766     bcm_field_entry_t entry, 
  15767     uint32 *data, 
  15768     uint32 *mask);
  15769 
  15770 /* 
  15771  *  Set match criteria for bcmFieldQualifyVxlanFlags
  15772  *                  qualifier in the field entry.
  15773  */
  15774 extern int bcm_field_qualify_VxlanFlags(
  15775     int unit, 
  15776     bcm_field_entry_t entry, 
  15777     uint8 data, 
  15778     uint8 mask);
  15779 
  15780 /* 
  15781  *  Get match criteria for bcmFieldQualifyVxlanFlags
  15782  *                  qualifier in the field entry.
  15783  */
  15784 extern int bcm_field_qualify_VxlanFlags_get(
  15785     int unit, 
  15786     bcm_field_entry_t entry, 
  15787     uint8 *data, 
  15788     uint8 *mask);
  15789 
  15790 /* 
  15791  *  Set match criteria for bcmFieldQualifyNatNeeded
  15792  *                  qualifier in the field entry.
  15793  */
  15794 extern int bcm_field_qualify_NatNeeded(
  15795     int unit, 
  15796     bcm_field_entry_t entry, 
  15797     uint8 data, 
  15798     uint8 mask);
  15799 
  15800 /* 
  15801  *  Get match criteria for bcmFieldQualifyNatNeeded
  15802  *                  qualifier in the field entry.
  15803  */
  15804 extern int bcm_field_qualify_NatNeeded_get(
  15805     int unit, 
  15806     bcm_field_entry_t entry, 
  15807     uint8 *data, 
  15808     uint8 *mask);
  15809 
  15810 /* 
  15811  *  Set match criteria for bcmFieldQualifyNatDstRealmId
  15812  *                  qualifier in the field entry.
  15813  */
  15814 extern int bcm_field_qualify_NatDstRealmId(
  15815     int unit, 
  15816     bcm_field_entry_t entry, 
  15817     uint8 data, 
  15818     uint8 mask);
  15819 
  15820 /* 
  15821  *  Get match criteria for bcmFieldQualifyNatDstRealmId
  15822  *                  qualifier in the field entry.
  15823  */
  15824 extern int bcm_field_qualify_NatDstRealmId_get(
  15825     int unit, 
  15826     bcm_field_entry_t entry, 
  15827     uint8 *data, 
  15828     uint8 *mask);
  15829 
  15830 /* 
  15831  *  Set match criteria for bcmFieldQualifyNatSrcRealmId
  15832  *                  qualifier in the field entry.
  15833  */
  15834 extern int bcm_field_qualify_NatSrcRealmId(
  15835     int unit, 
  15836     bcm_field_entry_t entry, 
  15837     uint8 data, 
  15838     uint8 mask);
  15839 
  15840 /* 
  15841  *  Get match criteria for bcmFieldQualifyNatSrcRealmId
  15842  *                  qualifier in the field entry.
  15843  */
  15844 extern int bcm_field_qualify_NatSrcRealmId_get(
  15845     int unit, 
  15846     bcm_field_entry_t entry, 
  15847     uint8 *data, 
  15848     uint8 *mask);
  15849 
  15850 /* 
  15851  *  Set match criteria for bcmFieldQualifyIcmpError
  15852  *                  qualifier in the field entry.
  15853  */
  15854 extern int bcm_field_qualify_IcmpError(
  15855     int unit, 
  15856     bcm_field_entry_t entry, 
  15857     uint8 data, 
  15858     uint8 mask);
  15859 
  15860 /* 
  15861  *  Get match criteria for bcmFieldQualifyIcmpError
  15862  *                  qualifier in the field entry.
  15863  */
  15864 extern int bcm_field_qualify_IcmpError_get(
  15865     int unit, 
  15866     bcm_field_entry_t entry, 
  15867     uint8 *data, 
  15868     uint8 *mask);
  15869 
  15870 /* 
  15871  *  Set match criteria for bcmFieldQualifyTunnelId
  15872  *                  qualifier in the field entry.
  15873  */
  15874 extern int bcm_field_qualify_TunnelId(
  15875     int unit, 
  15876     bcm_field_entry_t entry, 
  15877     uint32 data, 
  15878     uint32 mask);
  15879 
  15880 /* 
  15881  *  Get match criteria for bcmFieldQualifyTunnelId
  15882  *                  qualifier in the field entry.
  15883  */
  15884 extern int bcm_field_qualify_TunnelId_get(
  15885     int unit, 
  15886     bcm_field_entry_t entry, 
  15887     uint32 *data, 
  15888     uint32 *mask);
  15889 
  15890 /* 
  15891  *  Set match criteria for bcmFieldQualifyArpSenderIp4
  15892  *                  qualifier in the field entry.
  15893  */
  15894 extern int bcm_field_qualify_ArpSenderIp4(
  15895     int unit, 
  15896     bcm_field_entry_t entry, 
  15897     uint32 data, 
  15898     uint32 mask);
  15899 
  15900 /* 
  15901  *  Get match criteria for bcmFieldQualifyArpSenderIp4
  15902  *                  qualifier in the field entry.
  15903  */
  15904 extern int bcm_field_qualify_ArpSenderIp4_get(
  15905     int unit, 
  15906     bcm_field_entry_t entry, 
  15907     uint32 *data, 
  15908     uint32 *mask);
  15909 
  15910 /* 
  15911  *  Set match criteria for bcmFieldQualifyArpTargetIp4
  15912  *                  qualifier in the field entry.
  15913  */
  15914 extern int bcm_field_qualify_ArpTargetIp4(
  15915     int unit, 
  15916     bcm_field_entry_t entry, 
  15917     uint32 data, 
  15918     uint32 mask);
  15919 
  15920 /* 
  15921  *  Get match criteria for bcmFieldQualifyArpTargetIp4
  15922  *                  qualifier in the field entry.
  15923  */
  15924 extern int bcm_field_qualify_ArpTargetIp4_get(
  15925     int unit, 
  15926     bcm_field_entry_t entry, 
  15927     uint32 *data, 
  15928     uint32 *mask);
  15929 
  15930 /* 
  15931  *  Set match criteria for bcmFieldQualifyArpOpcode
  15932  *                  qualifier in the field entry.
  15933  */
  15934 extern int bcm_field_qualify_ArpOpcode(
  15935     int unit, 
  15936     bcm_field_entry_t entry, 
  15937     bcm_field_ArpOpcode_t data);
  15938 
  15939 /* 
  15940  *  Get match criteria for bcmFieldQualifyArpOpcode
  15941  *                  qualifier in the field entry.
  15942  */
  15943 extern int bcm_field_qualify_ArpOpcode_get(
  15944     int unit, 
  15945     bcm_field_entry_t entry, 
  15946     bcm_field_ArpOpcode_t *data);
  15947 
  15948 /* 
  15949  *  Set match criteria for bcmFieldQualifyTranslatedOuterVlan
  15950  *                  qualifier in the field entry.
  15951  */
  15952 extern int bcm_field_qualify_TranslatedOuterVlan(
  15953     int unit, 
  15954     bcm_field_entry_t entry, 
  15955     bcm_vlan_t data, 
  15956     bcm_vlan_t mask);
  15957 
  15958 /* 
  15959  * Get match criteria for bcmFieldQualifyTranslatedOuterVlan
  15960  *                qualifier from the field entry.
  15961  */
  15962 extern int bcm_field_qualify_TranslatedOuterVlan_get(
  15963     int unit, 
  15964     bcm_field_entry_t entry, 
  15965     bcm_vlan_t *data, 
  15966     bcm_vlan_t *mask);
  15967 
  15968 /* 
  15969  *  Set match criteria for bcmFieldQualifyTranslatedOuterVlanId
  15970  *                  qualifier in the field entry.
  15971  */
  15972 extern int bcm_field_qualify_TranslatedOuterVlanId(
  15973     int unit, 
  15974     bcm_field_entry_t entry, 
  15975     bcm_vlan_t data, 
  15976     bcm_vlan_t mask);
  15977 
  15978 /* 
  15979  *  Get match criteria for bcmFieldQualifyTranslatedOuterVlanId
  15980  *                  qualifier from the field entry.
  15981  */
  15982 extern int bcm_field_qualify_TranslatedOuterVlanId_get(
  15983     int unit, 
  15984     bcm_field_entry_t entry, 
  15985     bcm_vlan_t *data, 
  15986     bcm_vlan_t *mask);
  15987 
  15988 /* 
  15989  *  Set match criteria for bcmFieldQualifyTranslatedOuterVlanPri
  15990  *                  qualifier in the field entry.
  15991  */
  15992 extern int bcm_field_qualify_TranslatedOuterVlanPri(
  15993     int unit, 
  15994     bcm_field_entry_t entry, 
  15995     uint8 data, 
  15996     uint8 mask);
  15997 
  15998 /* 
  15999  *  Get match criteria for bcmFieldQualifyTranslatedOuterVlanPri
  16000  *                  qualifier from the field entry.
  16001  */
  16002 extern int bcm_field_qualify_TranslatedOuterVlanPri_get(
  16003     int unit, 
  16004     bcm_field_entry_t entry, 
  16005     uint8 *data, 
  16006     uint8 *mask);
  16007 
  16008 /* 
  16009  *  Set match criteria for bcmFieldQualifyTranslatedOuterVlanCfi
  16010  *                  qualifier in the field entry.
  16011  */
  16012 extern int bcm_field_qualify_TranslatedOuterVlanCfi(
  16013     int unit, 
  16014     bcm_field_entry_t entry, 
  16015     uint8 data, 
  16016     uint8 mask);
  16017 
  16018 /* 
  16019  *  Get match criteria for bcmFieldQualifyTranslatedOuterVlanCfi_get
  16020  *                  qualifier from the field entry.
  16021  */
  16022 extern int bcm_field_qualify_TranslatedOuterVlanCfi_get(
  16023     int unit, 
  16024     bcm_field_entry_t entry, 
  16025     uint8 *data, 
  16026     uint8 *mask);
  16027 
  16028 /* 
  16029  *  Set match criteria for bcmFieldQualifyTranslatedInnerVlan
  16030  *                  qualifier in the field entry.
  16031  */
  16032 extern int bcm_field_qualify_TranslatedInnerVlan(
  16033     int unit, 
  16034     bcm_field_entry_t entry, 
  16035     bcm_vlan_t data, 
  16036     bcm_vlan_t mask);
  16037 
  16038 /* 
  16039  * Get match criteria for bcmFieldQualifyTranslatedInnerVlan
  16040  *                qualifier from the field entry.
  16041  */
  16042 extern int bcm_field_qualify_TranslatedInnerVlan_get(
  16043     int unit, 
  16044     bcm_field_entry_t entry, 
  16045     bcm_vlan_t *data, 
  16046     bcm_vlan_t *mask);
  16047 
  16048 /* 
  16049  *  Set match criteria for bcmFieldQualifyTranslatedInnerVlanId
  16050  *                  qualifier in the field entry.
  16051  */
  16052 extern int bcm_field_qualify_TranslatedInnerVlanId(
  16053     int unit, 
  16054     bcm_field_entry_t entry, 
  16055     bcm_vlan_t data, 
  16056     bcm_vlan_t mask);
  16057 
  16058 /* 
  16059  *  Get match criteria for bcmFieldQualifyTranslatedInnerVlanId
  16060  *                  qualifier from the field entry.
  16061  */
  16062 extern int bcm_field_qualify_TranslatedInnerVlanId_get(
  16063     int unit, 
  16064     bcm_field_entry_t entry, 
  16065     bcm_vlan_t *data, 
  16066     bcm_vlan_t *mask);
  16067 
  16068 /* 
  16069  *  Set match criteria for bcmFieldQualifyTranslatedInnerVlanPri
  16070  *                  qualifier in the field entry.
  16071  */
  16072 extern int bcm_field_qualify_TranslatedInnerVlanPri(
  16073     int unit, 
  16074     bcm_field_entry_t entry, 
  16075     uint8 data, 
  16076     uint8 mask);
  16077 
  16078 /* 
  16079  *  Get match criteria for bcmFieldQualifyTranslatedInnerVlanPri
  16080  *                  qualifier from the field entry.
  16081  */
  16082 extern int bcm_field_qualify_TranslatedInnerVlanPri_get(
  16083     int unit, 
  16084     bcm_field_entry_t entry, 
  16085     uint8 *data, 
  16086     uint8 *mask);
  16087 
  16088 /* 
  16089  *  Set match criteria for bcmFieldQualifyTranslatedInnerVlanCfi
  16090  *                  qualifier in the field entry.
  16091  */
  16092 extern int bcm_field_qualify_TranslatedInnerVlanCfi(
  16093     int unit, 
  16094     bcm_field_entry_t entry, 
  16095     uint8 data, 
  16096     uint8 mask);
  16097 
  16098 /* 
  16099  *  Get match criteria for bcmFieldQualifyTranslatedInnerVlanCfi_get
  16100  *                  qualifier from the field entry.
  16101  */
  16102 extern int bcm_field_qualify_TranslatedInnerVlanCfi_get(
  16103     int unit, 
  16104     bcm_field_entry_t entry, 
  16105     uint8 *data, 
  16106     uint8 *mask);
  16107 
  16108 /* 
  16109  *  Set match criteria for bcmFieldQualifyFibreChanRCtl
  16110  *                  qualifier in the field entry.
  16111  */
  16112 extern int bcm_field_qualify_FibreChanRCtl(
  16113     int unit, 
  16114     bcm_field_entry_t entry, 
  16115     uint8 data, 
  16116     uint8 mask);
  16117 
  16118 /* 
  16119  *  Get match criteria for bcmFieldQualifyFibreChanRCtl
  16120  *                  qualifier from the field entry.
  16121  */
  16122 extern int bcm_field_qualify_FibreChanRCtl_get(
  16123     int unit, 
  16124     bcm_field_entry_t entry, 
  16125     uint8 *data, 
  16126     uint8 *mask);
  16127 
  16128 /* 
  16129  *  Set match criteria for bcmFieldQualifyFibreChanFCtl
  16130  *                  qualifier in the field entry.
  16131  */
  16132 extern int bcm_field_qualify_FibreChanFCtl(
  16133     int unit, 
  16134     bcm_field_entry_t entry, 
  16135     uint32 data, 
  16136     uint32 mask);
  16137 
  16138 /* 
  16139  *  Get match criteria for bcmFieldQualifyFibreChanFCtl
  16140  *                  qualifier from the field entry.
  16141  */
  16142 extern int bcm_field_qualify_FibreChanFCtl_get(
  16143     int unit, 
  16144     bcm_field_entry_t entry, 
  16145     uint32 *data, 
  16146     uint32 *mask);
  16147 
  16148 /* 
  16149  *  Set match criteria for bcmFieldQualifyFibreChanCSCtl
  16150  *                  qualifier in the field entry.
  16151  */
  16152 extern int bcm_field_qualify_FibreChanCSCtl(
  16153     int unit, 
  16154     bcm_field_entry_t entry, 
  16155     uint8 data, 
  16156     uint8 mask);
  16157 
  16158 /* 
  16159  *  Get match criteria for bcmFieldQualifyFibreChanCSCtl
  16160  *                  qualifier from the field entry.
  16161  */
  16162 extern int bcm_field_qualify_FibreChanCSCtl_get(
  16163     int unit, 
  16164     bcm_field_entry_t entry, 
  16165     uint8 *data, 
  16166     uint8 *mask);
  16167 
  16168 /* 
  16169  *  Set match criteria for bcmFieldQualifyFibreChanDFCtl
  16170  *                  qualifier in the field entry.
  16171  */
  16172 extern int bcm_field_qualify_FibreChanDFCtl(
  16173     int unit, 
  16174     bcm_field_entry_t entry, 
  16175     uint8 data, 
  16176     uint8 mask);
  16177 
  16178 /* 
  16179  *  Get match criteria for bcmFieldQualifyFibreChanDFCtl
  16180  *                  qualifier from the field entry.
  16181  */
  16182 extern int bcm_field_qualify_FibreChanDFCtl_get(
  16183     int unit, 
  16184     bcm_field_entry_t entry, 
  16185     uint8 *data, 
  16186     uint8 *mask);
  16187 
  16188 /* 
  16189  *  Set match criteria for bcmFieldQualifyFibreChanType
  16190  *                  qualifier in the field entry.
  16191  */
  16192 extern int bcm_field_qualify_FibreChanType(
  16193     int unit, 
  16194     bcm_field_entry_t entry, 
  16195     uint8 data, 
  16196     uint8 mask);
  16197 
  16198 /* 
  16199  *  Get match criteria for bcmFieldQualifyFibreChanType
  16200  *                  qualifier from the field entry.
  16201  */
  16202 extern int bcm_field_qualify_FibreChanType_get(
  16203     int unit, 
  16204     bcm_field_entry_t entry, 
  16205     uint8 *data, 
  16206     uint8 *mask);
  16207 
  16208 /* 
  16209  *  Set match criteria for bcmFieldQualifyFibreChanSrcId
  16210  *                  qualifier in the field entry.
  16211  */
  16212 extern int bcm_field_qualify_FibreChanSrcId(
  16213     int unit, 
  16214     bcm_field_entry_t entry, 
  16215     uint32 data, 
  16216     uint32 mask);
  16217 
  16218 /* 
  16219  *  Get match criteria for bcmFieldQualifyFibreChanSrcId
  16220  *                  qualifier from the field entry.
  16221  */
  16222 extern int bcm_field_qualify_FibreChanSrcId_get(
  16223     int unit, 
  16224     bcm_field_entry_t entry, 
  16225     uint32 *data, 
  16226     uint32 *mask);
  16227 
  16228 /* 
  16229  *  Set match criteria for bcmFieldQualifyFibreChanDstId
  16230  *                  qualifier in the field entry.
  16231  */
  16232 extern int bcm_field_qualify_FibreChanDstId(
  16233     int unit, 
  16234     bcm_field_entry_t entry, 
  16235     uint32 data, 
  16236     uint32 mask);
  16237 
  16238 /* 
  16239  *  Get match criteria for bcmFieldQualifyFibreChanDstId
  16240  *                  qualifier from the field entry.
  16241  */
  16242 extern int bcm_field_qualify_FibreChanDstId_get(
  16243     int unit, 
  16244     bcm_field_entry_t entry, 
  16245     uint32 *data, 
  16246     uint32 *mask);
  16247 
  16248 /* 
  16249  *  Set match criteria for bcmFieldQualifyFibreChanVFTVersion
  16250  *                  qualifier in the field entry.
  16251  */
  16252 extern int bcm_field_qualify_FibreChanVFTVersion(
  16253     int unit, 
  16254     bcm_field_entry_t entry, 
  16255     uint8 data, 
  16256     uint8 mask);
  16257 
  16258 /* 
  16259  *  Get match criteria for bcmFieldQualifyFibreChanVFTVersion
  16260  *                  qualifier from the field entry.
  16261  */
  16262 extern int bcm_field_qualify_FibreChanVFTVersion_get(
  16263     int unit, 
  16264     bcm_field_entry_t entry, 
  16265     uint8 *data, 
  16266     uint8 *mask);
  16267 
  16268 /* 
  16269  *  Set match criteria for bcmFieldQualifyFibreChanVFTPri
  16270  *                  qualifier in the field entry.
  16271  */
  16272 extern int bcm_field_qualify_FibreChanVFTPri(
  16273     int unit, 
  16274     bcm_field_entry_t entry, 
  16275     uint8 data, 
  16276     uint8 mask);
  16277 
  16278 /* 
  16279  *  Get match criteria for bcmFieldQualifyFibreChanVFTPri
  16280  *                  qualifier from the field entry.
  16281  */
  16282 extern int bcm_field_qualify_FibreChanVFTPri_get(
  16283     int unit, 
  16284     bcm_field_entry_t entry, 
  16285     uint8 *data, 
  16286     uint8 *mask);
  16287 
  16288 /* 
  16289  *  Set match criteria for bcmFieldQualifyFibreChanVFTFabricId
  16290  *                  qualifier in the field entry.
  16291  */
  16292 extern int bcm_field_qualify_FibreChanVFTFabricId(
  16293     int unit, 
  16294     bcm_field_entry_t entry, 
  16295     uint16 data, 
  16296     uint16 mask);
  16297 
  16298 /* 
  16299  *  Get match criteria for bcmFieldQualifyFibreChanVFTFabricId
  16300  *                  qualifier from the field entry.
  16301  */
  16302 extern int bcm_field_qualify_FibreChanVFTFabricId_get(
  16303     int unit, 
  16304     bcm_field_entry_t entry, 
  16305     uint16 *data, 
  16306     uint16 *mask);
  16307 
  16308 /* 
  16309  *  Set match criteria for bcmFieldQualifyFibreChanVFTHopCount
  16310  *                  qualifier in the field entry.
  16311  */
  16312 extern int bcm_field_qualify_FibreChanVFTHopCount(
  16313     int unit, 
  16314     bcm_field_entry_t entry, 
  16315     uint8 data, 
  16316     uint8 mask);
  16317 
  16318 /* 
  16319  *  Get match criteria for bcmFieldQualifyFibreChanVFTHopCount
  16320  *                  qualifier from the field entry.
  16321  */
  16322 extern int bcm_field_qualify_FibreChanVFTHopCount_get(
  16323     int unit, 
  16324     bcm_field_entry_t entry, 
  16325     uint8 *data, 
  16326     uint8 *mask);
  16327 
  16328 /* 
  16329  *  Set match criteria for bcmFieldQualifyFibreChanVFTVsanId
  16330  *                  qualifier in the field entry.
  16331  */
  16332 extern int bcm_field_qualify_FibreChanVFTVsanId(
  16333     int unit, 
  16334     bcm_field_entry_t entry, 
  16335     uint16 data, 
  16336     uint16 mask);
  16337 
  16338 /* 
  16339  *  Get match criteria for bcmFieldQualifyFibreChanVFTVsanId
  16340  *                  qualifier from the field entry.
  16341  */
  16342 extern int bcm_field_qualify_FibreChanVFTVsanId_get(
  16343     int unit, 
  16344     bcm_field_entry_t entry, 
  16345     uint16 *data, 
  16346     uint16 *mask);
  16347 
  16348 /* 
  16349  *  Set match criteria for bcmFieldQualifyFibreChanVFTVsanPri
  16350  *                  qualifier in the field entry.
  16351  */
  16352 extern int bcm_field_qualify_FibreChanVFTVsanPri(
  16353     int unit, 
  16354     bcm_field_entry_t entry, 
  16355     uint8 data, 
  16356     uint8 mask);
  16357 
  16358 /* 
  16359  *  Get match criteria for bcmFieldQualifyFibreChanVFTVsanPri
  16360  *                  qualifier from the field entry.
  16361  */
  16362 extern int bcm_field_qualify_FibreChanVFTVsanPri_get(
  16363     int unit, 
  16364     bcm_field_entry_t entry, 
  16365     uint8 *data, 
  16366     uint8 *mask);
  16367 
  16368 /* 
  16369  *  Set match criteria for bcmFieldQualifyFcoeSOF
  16370  *                  qualifier in the field entry.
  16371  */
  16372 extern int bcm_field_qualify_FcoeSOF(
  16373     int unit, 
  16374     bcm_field_entry_t entry, 
  16375     uint8 data, 
  16376     uint8 mask);
  16377 
  16378 /* 
  16379  *  Get match criteria for bcmFieldQualifyFcoeSOF
  16380  *                  qualifier from the field entry.
  16381  */
  16382 extern int bcm_field_qualify_FcoeSOF_get(
  16383     int unit, 
  16384     bcm_field_entry_t entry, 
  16385     uint8 *data, 
  16386     uint8 *mask);
  16387 
  16388 /* 
  16389  *  Set match criteria for bcmFieldQualifyFibreChanZoneCheck
  16390  *                  qualifier in the field entry.
  16391  */
  16392 extern int bcm_field_qualify_FibreChanZoneCheck(
  16393     int unit, 
  16394     bcm_field_entry_t entry, 
  16395     uint8 data, 
  16396     uint8 mask);
  16397 
  16398 /* 
  16399  *  Get match criteria for bcmFieldQualifyFibreChanZoneCheck
  16400  *                  qualifier from the field entry.
  16401  */
  16402 extern int bcm_field_qualify_FibreChanZoneCheck_get(
  16403     int unit, 
  16404     bcm_field_entry_t entry, 
  16405     uint8 *data, 
  16406     uint8 *mask);
  16407 
  16408 /* 
  16409  *  Set match criteria for bcmFieldQualifyFibreChanSrcFpmaCheck
  16410  *                  qualifier in the field entry.
  16411  */
  16412 extern int bcm_field_qualify_FibreChanSrcFpmaCheck(
  16413     int unit, 
  16414     bcm_field_entry_t entry, 
  16415     uint8 data, 
  16416     uint8 mask);
  16417 
  16418 /* 
  16419  *  Get match criteria for bcmFieldQualifyFibreChanSrcFpmaCheck
  16420  *                  qualifier from the field entry.
  16421  */
  16422 extern int bcm_field_qualify_FibreChanSrcFpmaCheck_get(
  16423     int unit, 
  16424     bcm_field_entry_t entry, 
  16425     uint8 *data, 
  16426     uint8 *mask);
  16427 
  16428 /* 
  16429  *  Set match criteria for bcmFieldQualifyFibreChanSrcBindCheck
  16430  *                  qualifier in the field entry.
  16431  */
  16432 extern int bcm_field_qualify_FibreChanSrcBindCheck(
  16433     int unit, 
  16434     bcm_field_entry_t entry, 
  16435     uint8 data, 
  16436     uint8 mask);
  16437 
  16438 /* 
  16439  *  Get match criteria for bcmFieldQualifyFibreChanSrcBindCheck
  16440  *                  qualifier from the field entry.
  16441  */
  16442 extern int bcm_field_qualify_FibreChanSrcBindCheck_get(
  16443     int unit, 
  16444     bcm_field_entry_t entry, 
  16445     uint8 *data, 
  16446     uint8 *mask);
  16447 
  16448 /* 
  16449  *  Set match criteria for bcmFieldQualifyFcoeVersionIsZero
  16450  *                  qualifier in the field entry.
  16451  */
  16452 extern int bcm_field_qualify_FcoeVersionIsZero(
  16453     int unit, 
  16454     bcm_field_entry_t entry, 
  16455     uint8 data, 
  16456     uint8 mask);
  16457 
  16458 /* 
  16459  *  Get match criteria for bcmFieldQualifyFcoeVersionIsZero
  16460  *                  qualifier from the field entry.
  16461  */
  16462 extern int bcm_field_qualify_FcoeVersionIsZero_get(
  16463     int unit, 
  16464     bcm_field_entry_t entry, 
  16465     uint8 *data, 
  16466     uint8 *mask);
  16467 
  16468 /* 
  16469  *  Set match criteria for bcmFieldQualifyFibreChanVFTValid
  16470  *                  qualifier in the field entry.
  16471  */
  16472 extern int bcm_field_qualify_FibreChanVFTValid(
  16473     int unit, 
  16474     bcm_field_entry_t entry, 
  16475     uint8 data, 
  16476     uint8 mask);
  16477 
  16478 /* 
  16479  *  Get match criteria for bcmFieldQualifyFibreChanVFTValid
  16480  *                  qualifier from the field entry.
  16481  */
  16482 extern int bcm_field_qualify_FibreChanVFTValid_get(
  16483     int unit, 
  16484     bcm_field_entry_t entry, 
  16485     uint8 *data, 
  16486     uint8 *mask);
  16487 
  16488 /* 
  16489  *  Set match criteria for bcmFieldQualifyForwardingHeaderOffset
  16490  *                  qualifier in the field entry.
  16491  */
  16492 extern int bcm_field_qualify_ForwardingHeaderOffset(
  16493     int unit, 
  16494     bcm_field_entry_t entry, 
  16495     bcm_field_data_offset_base_t base_header, 
  16496     uint32 data, 
  16497     uint32 mask);
  16498 
  16499 /* 
  16500  *  Get match criteria for bcmFieldQualifyForwardingHeaderOffset
  16501  *                  qualifier from the field entry.
  16502  */
  16503 extern int bcm_field_qualify_ForwardingHeaderOffset_get(
  16504     int unit, 
  16505     bcm_field_entry_t entry, 
  16506     bcm_field_data_offset_base_t *base_header, 
  16507     uint32 *data, 
  16508     uint32 *mask);
  16509 
  16510 #endif /* BCM_HIDE_DISPATCHABLE */
  16511 
  16512 typedef enum bcm_field_orientation_e {
  16513     bcmFieldOrientationNetwork = 0, /* Network orientation (hub) */
  16514     bcmFieldOrientationAccess = 1,  /* Access orientation (spoke) */
  16515     bcmFieldOrientationCount = 2    /* Always Last. Not a usable value. */
  16516 } bcm_field_orientation_t;
  16517 
  16518 typedef enum bcm_field_start_packet_strip_e {
  16519     bcmFieldStartToConfigurableStrip = 0, /* Configurable size of number of bytes
  16520                                            to strip, according to param1. */
  16521     bcmFieldStartToL2Strip = 1,         /* Remove the start-of-packet up to the
  16522                                            L2 header. */
  16523     bcmFieldStartToFwdStrip = 2,        /* Remove the start-of-packet up to the
  16524                                            Forwarding header. */
  16525     bcmFieldStartToFwdNextStrip = 3,    /* Remove the start-of-packet up to the
  16526                                            header following the Forwarding
  16527                                            header. */
  16528     bcmFieldStartStripCount = 4         /* Always Last. Not a usable value. */
  16529 } bcm_field_start_packet_strip_t;
  16530 
  16531 #ifndef BCM_HIDE_DISPATCHABLE
  16532 
  16533 /* 
  16534  * Set qualification on a particular stage. This feature is normally
  16535  * used for preselectors.
  16536  */
  16537 extern int bcm_field_qualify_Stage(
  16538     int unit, 
  16539     bcm_field_entry_t entry, 
  16540     bcm_field_stage_t data);
  16541 
  16542 /* Get stage qualifier information. */
  16543 extern int bcm_field_qualify_Stage_get(
  16544     int unit, 
  16545     bcm_field_entry_t entry, 
  16546     bcm_field_stage_t *data);
  16547 
  16548 /* 
  16549  * Configure match criteria for bcmFieldQualifyIpFragNonOrFirst
  16550  *         qualifier from the field entry.
  16551  */
  16552 extern int bcm_field_qualify_IpFragNonOrFirst(
  16553     int unit, 
  16554     bcm_field_entry_t entry, 
  16555     uint8 data, 
  16556     uint8 mask);
  16557 
  16558 /* 
  16559  * Get match criteria for bcmFieldQualifyIpFragNonOrFirst
  16560  *                qualifier from the field entry.
  16561  */
  16562 extern int bcm_field_qualify_IpFragNonOrFirst_get(
  16563     int unit, 
  16564     bcm_field_entry_t entry, 
  16565     uint8 *data, 
  16566     uint8 *mask);
  16567 
  16568 /* 
  16569  * Configure match criteria for bcmFieldQualifyPacketLength
  16570  *             qualifier from the field entry.
  16571  */
  16572 extern int bcm_field_qualify_PacketLength(
  16573     int unit, 
  16574     bcm_field_entry_t entry, 
  16575     uint16 data, 
  16576     uint16 mask);
  16577 
  16578 /* 
  16579  * Get match criteria for bcmFieldQualifyPacketLength
  16580  *                qualifier from the field entry.
  16581  */
  16582 extern int bcm_field_qualify_PacketLength_get(
  16583     int unit, 
  16584     bcm_field_entry_t entry, 
  16585     uint16 *data, 
  16586     uint16 *mask);
  16587 
  16588 /* 
  16589  * Set match criteria for bcmFieldQualifyGroupClass
  16590  *                qualifier in the field entry.
  16591  */
  16592 extern int bcm_field_qualify_GroupClass(
  16593     int unit, 
  16594     bcm_field_entry_t entry, 
  16595     uint32 data, 
  16596     uint32 mask);
  16597 
  16598 /* 
  16599  * Get match criteria for bcmFieldQualifyGroupClass
  16600  *                qualifier in the field entry.
  16601  */
  16602 extern int bcm_field_qualify_GroupClass_get(
  16603     int unit, 
  16604     bcm_field_entry_t entry, 
  16605     uint32 *data, 
  16606     uint32 *mask);
  16607 
  16608 /* 
  16609  * Set match criteria for bcmFieldQualifyUdfClass
  16610  *                qualifier in the field entry.
  16611  */
  16612 extern int bcm_field_qualify_UdfClass(
  16613     int unit, 
  16614     bcm_field_entry_t entry, 
  16615     uint32 data, 
  16616     uint32 mask);
  16617 
  16618 /* 
  16619  * Get match criteria for bcmFieldQualifyUdfClass
  16620  *                qualifier in the field entry.
  16621  */
  16622 extern int bcm_field_qualify_UdfClass_get(
  16623     int unit, 
  16624     bcm_field_entry_t entry, 
  16625     uint32 *data, 
  16626     uint32 *mask);
  16627 
  16628 /* 
  16629  * Set match criteria for bcmFieldQualifyInterfaceLookupClassPort
  16630  *                qualifier in the field entry.
  16631  */
  16632 extern int bcm_field_qualify_InterfaceLookupClassPort(
  16633     int unit, 
  16634     bcm_field_entry_t entry, 
  16635     uint32 data, 
  16636     uint32 mask);
  16637 
  16638 /* 
  16639  * Get match criteria for bcmFieldQualifyInterfaceLookupClassPort
  16640  *                qualifier in the field entry.
  16641  */
  16642 extern int bcm_field_qualify_InterfaceLookupClassPort_get(
  16643     int unit, 
  16644     bcm_field_entry_t entry, 
  16645     uint32 *data, 
  16646     uint32 *mask);
  16647 
  16648 /* 
  16649  * Set match criteria for
  16650  * bcmFieldQualifyInterfaceIngressKeySelectClassPort
  16651  *                qualifier in the field entry.
  16652  */
  16653 extern int bcm_field_qualify_InterfaceIngressKeySelectClassPort(
  16654     int unit, 
  16655     bcm_field_entry_t entry, 
  16656     uint32 data, 
  16657     uint32 mask);
  16658 
  16659 /* 
  16660  * Get match criteria for
  16661  * bcmFieldQualifyInterfaceIngressKeySelectClassPort
  16662  *                qualifier in the field entry.
  16663  */
  16664 extern int bcm_field_qualify_InterfaceIngressKeySelectClassPort_get(
  16665     int unit, 
  16666     bcm_field_entry_t entry, 
  16667     uint32 *data, 
  16668     uint32 *mask);
  16669 
  16670 /* 
  16671  * Set match criteria for bcmFieldQualifyITag
  16672  *                qualifier in the field entry.
  16673  */
  16674 extern int bcm_field_qualify_ITag(
  16675     int unit, 
  16676     bcm_field_entry_t entry, 
  16677     uint32 data, 
  16678     uint32 mask);
  16679 
  16680 /* 
  16681  * Get match criteria for bcmFieldQualifyITag
  16682  *                qualifier from the field entry.
  16683  */
  16684 extern int bcm_field_qualify_ITag_get(
  16685     int unit, 
  16686     bcm_field_entry_t entry, 
  16687     uint32 *data, 
  16688     uint32 *mask);
  16689 
  16690 /* 
  16691  * Set match criteria for bcmFieldQualifyBfdYourDiscriminator
  16692  *                qualifier in the field entry.
  16693  */
  16694 extern int bcm_field_qualify_BfdYourDiscriminator(
  16695     int unit, 
  16696     bcm_field_entry_t entry, 
  16697     uint32 data, 
  16698     uint32 mask);
  16699 
  16700 /* 
  16701  * Get match criteria for bcmFieldQualifyBfdYourDiscriminator
  16702  *                qualifier from the field entry.
  16703  */
  16704 extern int bcm_field_qualify_BfdYourDiscriminator_get(
  16705     int unit, 
  16706     bcm_field_entry_t entry, 
  16707     uint32 *data, 
  16708     uint32 *mask);
  16709 
  16710 /* 
  16711  * Set match criteria for bcmFieldQualifyCpuVisibilityPacket
  16712  *                qualifier in the field entry.
  16713  */
  16714 extern int bcm_field_qualify_CpuVisibilityPacket(
  16715     int unit, 
  16716     bcm_field_entry_t entry, 
  16717     uint8 data, 
  16718     uint8 mask);
  16719 
  16720 /* 
  16721  * Get match criteria for bcmFieldQualifyCpuVisibilityPacket
  16722  *                qualifier from the field entry.
  16723  */
  16724 extern int bcm_field_qualify_CpuVisibilityPacket_get(
  16725     int unit, 
  16726     bcm_field_entry_t entry, 
  16727     uint8 *data, 
  16728     uint8 *mask);
  16729 
  16730 /* 
  16731  * Set match criteria for bcmFieldQualifyDstL2MulticastGroup
  16732  *                qualifier in the field entry.
  16733  */
  16734 extern int bcm_field_qualify_DstL2MulticastGroup(
  16735     int unit, 
  16736     bcm_field_entry_t entry, 
  16737     bcm_multicast_t group, 
  16738     bcm_multicast_t mask);
  16739 
  16740 /* 
  16741  * Get match criteria for bcmFieldQualifyDstL2MulticastGroup
  16742  *                qualifier from the field entry.
  16743  */
  16744 extern int bcm_field_qualify_DstL2MulticastGroup_get(
  16745     int unit, 
  16746     bcm_field_entry_t entry, 
  16747     bcm_multicast_t *group, 
  16748     bcm_multicast_t *mask);
  16749 
  16750 /* 
  16751  * Set match criteria for bcmFieldQualifyDstL3MulticastGroup
  16752  *                qualifier in the field entry.
  16753  */
  16754 extern int bcm_field_qualify_DstL3MulticastGroup(
  16755     int unit, 
  16756     bcm_field_entry_t entry, 
  16757     bcm_multicast_t group, 
  16758     bcm_multicast_t mask);
  16759 
  16760 /* 
  16761  * Get match criteria for bcmFieldQualifyDstL3MulticastGroup
  16762  *                qualifier from the field entry.
  16763  */
  16764 extern int bcm_field_qualify_DstL3MulticastGroup_get(
  16765     int unit, 
  16766     bcm_field_entry_t entry, 
  16767     bcm_multicast_t *group, 
  16768     bcm_multicast_t *mask);
  16769 
  16770 #endif /* BCM_HIDE_DISPATCHABLE */
  16771 
  16772 /* Oam Type (ETHERNET, MPLS). */
  16773 typedef enum bcm_field_oam_type_e {
  16774     bcmFieldOamTypeEthernet,    /* Oam Type Ethernet. */
  16775     bcmFieldOamTypeMpls,        /* Oam Type MPLS. */
  16776     bcmFieldOamTypeCount        /* Always last. Not a usable value. */
  16777 } bcm_field_oam_type_t;
  16778 
  16779 #define BCM_FIELD_OAM_TYPE \
  16780 { \
  16781     "Ethernet", \
  16782     "Mpls"  \
  16783 }
  16784 
  16785 /* 
  16786  * Mpls Oam Control Packet Type (UNKNOWN, VCCV1, VCCV2, VCCV3,
  16787  * VCCV4/GAL_ACH).
  16788  */
  16789 typedef enum bcm_field_MplsOam_Control_pktType_e {
  16790     bcmFieldMplsOamControlPktTypeUnknown, /* Mpls Oam Control Packet Type UNKNOWN. */
  16791     bcmFieldMplsOamControlPktTypeVCCV1, /* Mpls Oam Control Packet Type VCCV1. */
  16792     bcmFieldMplsOamControlPktTypeVCCV2, /* Mpls Oam Control Packet Type VCCV2. */
  16793     bcmFieldMplsOamControlPktTypeVCCV3, /* Mpls Oam Control Packet Type VCCV3. */
  16794     bcmFieldMplsOamControlPktTypeVCCV4_GAL_ACH, /* Mpls Oam Control Packet Type
  16795                                            VCCV4/GAL_ACH. */
  16796     bcmFieldMplsOamControlPktTypeCount  /* Always last. Not a usable value. */
  16797 } bcm_field_MplsOam_Control_pktType_t;
  16798 
  16799 #define BCM_FIELD_MPLS_OAM_CONTROL_PKT_TYPE \
  16800 { \
  16801     "Unknown", \
  16802     "VCCV1", \
  16803     "VCCV2", \
  16804     "VCCV3", \
  16805     "VCCV4_GAL_ACH"  \
  16806 }
  16807 
  16808 #ifndef BCM_HIDE_DISPATCHABLE
  16809 
  16810 /* bcm_field_qualify_L3SrcBind */
  16811 extern int bcm_field_qualify_L3SrcBind(
  16812     int unit, 
  16813     bcm_field_entry_t entry, 
  16814     uint8 data, 
  16815     uint8 mask);
  16816 
  16817 /* 
  16818  * Get match criteria for bcmFieldQualifyL3SrcBind
  16819  *                qualifier from the field entry.
  16820  */
  16821 extern int bcm_field_qualify_L3SrcBind_get(
  16822     int unit, 
  16823     bcm_field_entry_t entry, 
  16824     uint8 *data, 
  16825     uint8 *mask);
  16826 
  16827 /* bcm_field_qualify_ECid */
  16828 extern int bcm_field_qualify_ECid(
  16829     int unit, 
  16830     bcm_field_entry_t entry, 
  16831     uint32 data, 
  16832     uint32 mask);
  16833 
  16834 /* 
  16835  * Get match criteria for bcmFieldQualifyECid
  16836  *                qualifier from the field entry.
  16837  */
  16838 extern int bcm_field_qualify_ECid_get(
  16839     int unit, 
  16840     bcm_field_entry_t entry, 
  16841     uint32 *data, 
  16842     uint32 *mask);
  16843 
  16844 /* bcm_field_qualify_IngressECid */
  16845 extern int bcm_field_qualify_IngressECid(
  16846     int unit, 
  16847     bcm_field_entry_t entry, 
  16848     uint32 data, 
  16849     uint32 mask);
  16850 
  16851 /* 
  16852  * Get match criteria for bcmFieldQualifyIngressECid
  16853  *                qualifier from the field entry.
  16854  */
  16855 extern int bcm_field_qualify_IngressECid_get(
  16856     int unit, 
  16857     bcm_field_entry_t entry, 
  16858     uint32 *data, 
  16859     uint32 *mask);
  16860 
  16861 /* bcm_field_qualify_ETag */
  16862 extern int bcm_field_qualify_ETag(
  16863     int unit, 
  16864     bcm_field_entry_t entry, 
  16865     uint64 data, 
  16866     uint64 mask);
  16867 
  16868 /* 
  16869  * Get match criteria for bcmFieldQualifyETag
  16870  *                qualifier from the field entry.
  16871  */
  16872 extern int bcm_field_qualify_ETag_get(
  16873     int unit, 
  16874     bcm_field_entry_t entry, 
  16875     uint64 *data, 
  16876     uint64 *mask);
  16877 
  16878 #endif /* BCM_HIDE_DISPATCHABLE */
  16879 
  16880 typedef enum bcm_field_system_header_e {
  16881     bcmFieldSystemHeaderPphEei = 0, /* EEI extension of the PPH (Packet
  16882                                        Processing Header) */
  16883     bcmFieldSystemHeaderCount = 1   /* Always Last. Not a usable value. */
  16884 } bcm_field_system_header_t;
  16885 
  16886 typedef enum bcm_field_fabric_header_e {
  16887     bcmFieldFabricHeaderEthernet = 0,   /* Ethernet fabric header */
  16888     bcmFieldFabricHeaderTrafficManagementUcast = 1, /* Unicast Traffic Management fabric
  16889                                            header */
  16890     bcmFieldFabricHeaderTrafficManagementMcast = 2, /* Multicast Traffic Management fabric
  16891                                            header */
  16892     bcmFieldFabricHeaderTrafficManagementVPort = 3, /*  VPort Traffic Management fabric
  16893                                            header */
  16894     bcmFieldFabricHeaderStacking = 4,   /* Stacking fabric header */
  16895     bcmFieldFabricHeaderEthernetDSP = 5, /* regular Ethernet, stacking FTMH with
  16896                                            DSP Extension and PPH fabric header */
  16897     bcmFieldFabricHeaderEthernetLearn = 6, /* regular Ethernet, stacking FTMH with
  16898                                            DSP Extension and PPH fabric header */
  16899     bcmFieldFabricHeaderEthernetlatency = 7, /* regular Ethernet, stacking FTMH with
  16900                                            OAM-TS-LATENCY header */
  16901     bcmFieldFabricHeaderEthernetLearnDisable = 8, /* Regular Ethernet, with disabled PPH
  16902                                            header learn extension. */
  16903     bcmFieldFabricHeaderCount = 9       /* Always Last. Not a usable value. */
  16904 } bcm_field_fabric_header_t;
  16905 
  16906 /* Multi-range flags */
  16907 #define BCM_FIELD_RANGE_MULTI_WITH_ID   0x00000001 /* Range Id is provided */
  16908 #define BCM_FIELD_RANGE_MULTI_REPLACE   0x00000002 /* Replace existing range */
  16909 
  16910 /* VXLAN Flags from IETF Draft(for bcm_field_qualify_VxlanFlags). */
  16911 #define BCM_FIELD_VXLAN_VNI_VALID   0x8        /* VXLAN Network ID (VNI)- Valid */
  16912 
  16913 /* FCOE zone check action types. */
  16914 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_NOP 0          
  16915 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_DISABLE 1          
  16916 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_ENABLE 2          
  16917 
  16918 #ifndef BCM_HIDE_DISPATCHABLE
  16919 
  16920 /* 
  16921  * Set match criteria for bcmFieldQualifyOamMdl
  16922  *                 qualifier from the field entry
  16923  */
  16924 extern int bcm_field_qualify_OamMdl(
  16925     int unit, 
  16926     bcm_field_entry_t entry, 
  16927     uint8 data, 
  16928     uint8 mask);
  16929 
  16930 /* 
  16931  * Get match criteria for bcmFieldQualifyOamMdl
  16932  *                qualifier from the field entry.
  16933  */
  16934 extern int bcm_field_qualify_OamMdl_get(
  16935     int unit, 
  16936     bcm_field_entry_t entry, 
  16937     uint8 *data, 
  16938     uint8 *mask);
  16939 
  16940 /* Set match criteria for IntCongestionNotification qualifier. */
  16941 extern int bcm_field_qualify_IntCongestionNotification(
  16942     int unit, 
  16943     bcm_field_entry_t entry, 
  16944     uint8 data, 
  16945     uint8 mask);
  16946 
  16947 /* Get match criteria for IntCongestionNotification qualifier. */
  16948 extern int bcm_field_qualify_IntCongestionNotification_get(
  16949     int unit, 
  16950     bcm_field_entry_t entry, 
  16951     uint8 *data, 
  16952     uint8 *mask);
  16953 
  16954 /* bcm_field_qualify_SrcNivGport */
  16955 extern int bcm_field_qualify_SrcNivGport(
  16956     int unit, 
  16957     bcm_field_entry_t entry, 
  16958     bcm_gport_t niv_port_id);
  16959 
  16960 /* bcm_field_qualify_DstNivGport */
  16961 extern int bcm_field_qualify_DstNivGport(
  16962     int unit, 
  16963     bcm_field_entry_t entry, 
  16964     bcm_gport_t niv_port_id);
  16965 
  16966 /* 
  16967  * Get match criteria for bcmFieldQualifySrcNivGport
  16968  *                qualifier from the field entry.
  16969  */
  16970 extern int bcm_field_qualify_SrcNivGport_get(
  16971     int unit, 
  16972     bcm_field_entry_t entry, 
  16973     bcm_gport_t *niv_port_id);
  16974 
  16975 /* 
  16976  * Get match criteria for bcmFieldQualifyDstNivGport
  16977  *                qualifier from the field entry.
  16978  */
  16979 extern int bcm_field_qualify_DstNivGport_get(
  16980     int unit, 
  16981     bcm_field_entry_t entry, 
  16982     bcm_gport_t *niv_port_id);
  16983 
  16984 /* Set match criteria for DstGport qualifier. */
  16985 extern int bcm_field_qualify_DstGport(
  16986     int unit, 
  16987     bcm_field_entry_t entry, 
  16988     bcm_gport_t port_id);
  16989 
  16990 /* Get match criteria for DstGport qualifier. */
  16991 extern int bcm_field_qualify_DstGport_get(
  16992     int unit, 
  16993     bcm_field_entry_t entry, 
  16994     bcm_gport_t *port_id);
  16995 
  16996 /* Set match criteria for MirrorEgressDisabled qualifier. */
  16997 extern int bcm_field_qualify_MirrorEgressDisabled(
  16998     int unit, 
  16999     bcm_field_entry_t entry, 
  17000     uint8 data, 
  17001     uint8 mask);
  17002 
  17003 /* Get match criteria for MirrorEgressDisabled qualifier. */
  17004 extern int bcm_field_qualify_MirrorEgressDisabled_get(
  17005     int unit, 
  17006     bcm_field_entry_t entry, 
  17007     uint8 *data, 
  17008     uint8 *mask);
  17009 
  17010 /* Set match criteria for BypassSrcMacFilter qualifier. */
  17011 extern int bcm_field_qualify_BypassSrcMacFilter(
  17012     int unit, 
  17013     bcm_field_entry_t entry, 
  17014     uint8 data, 
  17015     uint8 mask);
  17016 
  17017 /* Get match criteria for BypassSrcMacFilter qualifier. */
  17018 extern int bcm_field_qualify_BypassSrcMacFilter_get(
  17019     int unit, 
  17020     bcm_field_entry_t entry, 
  17021     uint8 *data, 
  17022     uint8 *mask);
  17023 
  17024 /* Set match criteria for RxTrapCodeForSnoop qualifier. */
  17025 extern int bcm_field_qualify_RxTrapCodeForSnoop(
  17026     int unit, 
  17027     bcm_field_entry_t entry, 
  17028     uint32 data, 
  17029     uint32 mask);
  17030 
  17031 /* Get match criteria for RxTrapCodeForSnoop qualifier. */
  17032 extern int bcm_field_qualify_RxTrapCodeForSnoop_get(
  17033     int unit, 
  17034     bcm_field_entry_t entry, 
  17035     uint32 *data, 
  17036     uint32 *mask);
  17037 
  17038 /* Set match criteria for IpmcStarGroupValue qualifier. */
  17039 extern int bcm_field_qualify_IpmcStarGroupValue(
  17040     int unit, 
  17041     bcm_field_entry_t entry, 
  17042     uint64 data, 
  17043     uint64 mask);
  17044 
  17045 /* Get match criteria for IpmcStarGroupValue qualifier. */
  17046 extern int bcm_field_qualify_IpmcStarGroupValue_get(
  17047     int unit, 
  17048     bcm_field_entry_t entry, 
  17049     uint64 *data, 
  17050     uint64 *mask);
  17051 
  17052 /* Set match criteria for NativeVSwitch qualifier. */
  17053 extern int bcm_field_qualify_NativeVSwitch(
  17054     int unit, 
  17055     bcm_field_entry_t entry, 
  17056     bcm_vlan_t data, 
  17057     bcm_vlan_t mask);
  17058 
  17059 /* Get match criteria for NativeVSwitch qualifier. */
  17060 extern int bcm_field_qualify_NativeVSwitch_get(
  17061     int unit, 
  17062     bcm_field_entry_t entry, 
  17063     bcm_vlan_t *data, 
  17064     bcm_vlan_t *mask);
  17065 
  17066 /* Set match criteria for NativeVSwitchValid qualifier. */
  17067 extern int bcm_field_qualify_NativeVSwitchValid(
  17068     int unit, 
  17069     bcm_field_entry_t entry, 
  17070     uint8 data, 
  17071     uint8 mask);
  17072 
  17073 /* Get match criteria for NativeVSwitchValid qualifier. */
  17074 extern int bcm_field_qualify_NativeVSwitchValid_get(
  17075     int unit, 
  17076     bcm_field_entry_t entry, 
  17077     uint8 *data, 
  17078     uint8 *mask);
  17079 
  17080 /* Set match criteria for TrillIVersion qualifier. */
  17081 extern int bcm_field_qualify_TrillIVersion(
  17082     int unit, 
  17083     bcm_field_entry_t entry, 
  17084     uint8 data, 
  17085     uint8 mask);
  17086 
  17087 /* Get match criteria for TrillIVersion qualifier. */
  17088 extern int bcm_field_qualify_TrillIVersion_get(
  17089     int unit, 
  17090     bcm_field_entry_t entry, 
  17091     uint8 *data, 
  17092     uint8 *mask);
  17093 
  17094 /* Set match criteria for TrillIngressRbridge qualifier. */
  17095 extern int bcm_field_qualify_TrillIngressRbridge(
  17096     int unit, 
  17097     bcm_field_entry_t entry, 
  17098     uint16 data, 
  17099     uint16 mask);
  17100 
  17101 /* Get match criteria for TrillIngressRbridge qualifier. */
  17102 extern int bcm_field_qualify_TrillIngressRbridge_get(
  17103     int unit, 
  17104     bcm_field_entry_t entry, 
  17105     uint16 *data, 
  17106     uint16 *mask);
  17107 
  17108 /* Set match criteria for TrillMultiDestination qualifier. */
  17109 extern int bcm_field_qualify_TrillMultiDestination(
  17110     int unit, 
  17111     bcm_field_entry_t entry, 
  17112     uint8 data, 
  17113     uint8 mask);
  17114 
  17115 /* Get match criteria for TrillMultiDestination qualifier. */
  17116 extern int bcm_field_qualify_TrillMultiDestination_get(
  17117     int unit, 
  17118     bcm_field_entry_t entry, 
  17119     uint8 *data, 
  17120     uint8 *mask);
  17121 
  17122 /* Set match criteria for TrillOpLength qualifier. */
  17123 extern int bcm_field_qualify_TrillOpLength(
  17124     int unit, 
  17125     bcm_field_entry_t entry, 
  17126     uint8 data, 
  17127     uint8 mask);
  17128 
  17129 /* Get match criteria for TrillOpLength qualifier. */
  17130 extern int bcm_field_qualify_TrillOpLength_get(
  17131     int unit, 
  17132     bcm_field_entry_t entry, 
  17133     uint8 *data, 
  17134     uint8 *mask);
  17135 
  17136 /* Set match criteria for TrillHopCount qualifier. */
  17137 extern int bcm_field_qualify_TrillHopCount(
  17138     int unit, 
  17139     bcm_field_entry_t entry, 
  17140     uint8 data, 
  17141     uint8 mask);
  17142 
  17143 /* Get match criteria for TrillHopCount qualifier. */
  17144 extern int bcm_field_qualify_TrillHopCount_get(
  17145     int unit, 
  17146     bcm_field_entry_t entry, 
  17147     uint8 *data, 
  17148     uint8 *mask);
  17149 
  17150 /* Set match criteria for TrillPayload qualifier. */
  17151 extern int bcm_field_qualify_TrillPayload(
  17152     int unit, 
  17153     bcm_field_entry_t entry, 
  17154     uint64 data, 
  17155     uint64 mask);
  17156 
  17157 /* Get match criteria for TrillPayload qualifier. */
  17158 extern int bcm_field_qualify_TrillPayload_get(
  17159     int unit, 
  17160     bcm_field_entry_t entry, 
  17161     uint64 *data, 
  17162     uint64 *mask);
  17163 
  17164 /* Set match criteria for MplsForwardingLabelPayload qualifier. */
  17165 extern int bcm_field_qualify_MplsForwardingLabelPayload(
  17166     int unit, 
  17167     bcm_field_entry_t entry, 
  17168     uint64 data, 
  17169     uint64 mask);
  17170 
  17171 /* Get match criteria for MplsForwardingLabelPayload qualifier. */
  17172 extern int bcm_field_qualify_MplsForwardingLabelPayload_get(
  17173     int unit, 
  17174     bcm_field_entry_t entry, 
  17175     uint64 *data, 
  17176     uint64 *mask);
  17177 
  17178 /* Set match criteria for IncomingIpIfClass qualifier. */
  17179 extern int bcm_field_qualify_IncomingIpIfClass(
  17180     int unit, 
  17181     bcm_field_entry_t entry, 
  17182     uint32 data, 
  17183     uint32 mask);
  17184 
  17185 /* Get match criteria for IncomingIpIfClass qualifier. */
  17186 extern int bcm_field_qualify_IncomingIpIfClass_get(
  17187     int unit, 
  17188     bcm_field_entry_t entry, 
  17189     uint32 *data, 
  17190     uint32 *mask);
  17191 
  17192 /* Set match criteria for L2GreProtocolType qualifier. */
  17193 extern int bcm_field_qualify_L2GreProtocolType(
  17194     int unit, 
  17195     bcm_field_entry_t entry, 
  17196     uint16 data, 
  17197     uint16 mask);
  17198 
  17199 /* Get match criteria for L2GreProtocolType qualifier. */
  17200 extern int bcm_field_qualify_L2GreProtocolType_get(
  17201     int unit, 
  17202     bcm_field_entry_t entry, 
  17203     uint16 *data, 
  17204     uint16 *mask);
  17205 
  17206 /* Set match criteria for L2GreVsid qualifier. */
  17207 extern int bcm_field_qualify_L2GreVsid(
  17208     int unit, 
  17209     bcm_field_entry_t entry, 
  17210     uint32 data, 
  17211     uint32 mask);
  17212 
  17213 /* Get match criteria for L2GreVsid qualifier. */
  17214 extern int bcm_field_qualify_L2GreVsid_get(
  17215     int unit, 
  17216     bcm_field_entry_t entry, 
  17217     uint32 *data, 
  17218     uint32 *mask);
  17219 
  17220 /* Set match criteria for L2GreFlowId qualifier. */
  17221 extern int bcm_field_qualify_L2GreFlowId(
  17222     int unit, 
  17223     bcm_field_entry_t entry, 
  17224     uint8 data, 
  17225     uint8 mask);
  17226 
  17227 /* Get match criteria for L2GreFlowId qualifier. */
  17228 extern int bcm_field_qualify_L2GreFlowId_get(
  17229     int unit, 
  17230     bcm_field_entry_t entry, 
  17231     uint8 *data, 
  17232     uint8 *mask);
  17233 
  17234 /* Set match criteria for MimVlanPri qualifier. */
  17235 extern int bcm_field_qualify_MimVlanPri(
  17236     int unit, 
  17237     bcm_field_entry_t entry, 
  17238     uint8 data, 
  17239     uint8 mask);
  17240 
  17241 /* Get match criteria for MimVlanPri qualifier. */
  17242 extern int bcm_field_qualify_MimVlanPri_get(
  17243     int unit, 
  17244     bcm_field_entry_t entry, 
  17245     uint8 *data, 
  17246     uint8 *mask);
  17247 
  17248 /* Set match criteria for MimVlanCfi qualifier. */
  17249 extern int bcm_field_qualify_MimVlanCfi(
  17250     int unit, 
  17251     bcm_field_entry_t entry, 
  17252     uint8 data, 
  17253     uint8 mask);
  17254 
  17255 /* Get match criteria for MimVlanCfi qualifier. */
  17256 extern int bcm_field_qualify_MimVlanCfi_get(
  17257     int unit, 
  17258     bcm_field_entry_t entry, 
  17259     uint8 *data, 
  17260     uint8 *mask);
  17261 
  17262 /* Set match criteria for Fhei qualifier. */
  17263 extern int bcm_field_qualify_Fhei(
  17264     int unit, 
  17265     bcm_field_entry_t entry, 
  17266     uint64 data, 
  17267     uint64 mask);
  17268 
  17269 /* Get match criteria for Fhei qualifier. */
  17270 extern int bcm_field_qualify_Fhei_get(
  17271     int unit, 
  17272     bcm_field_entry_t entry, 
  17273     uint64 *data, 
  17274     uint64 *mask);
  17275 
  17276 /* Set match criteria for FheiSize qualifier. */
  17277 extern int bcm_field_qualify_FheiSize(
  17278     int unit, 
  17279     bcm_field_entry_t entry, 
  17280     uint32 data, 
  17281     uint32 mask);
  17282 
  17283 /* Get match criteria for FheiSize qualifier. */
  17284 extern int bcm_field_qualify_FheiSize_get(
  17285     int unit, 
  17286     bcm_field_entry_t entry, 
  17287     uint32 *data, 
  17288     uint32 *mask);
  17289 
  17290 /* 
  17291  * Set match criteria for bcmFieldQualifyOamType
  17292  *                 qualifier from the field entry
  17293  */
  17294 extern int bcm_field_qualify_OamType(
  17295     int unit, 
  17296     bcm_field_entry_t entry, 
  17297     bcm_field_oam_type_t oam_type);
  17298 
  17299 /* 
  17300  * Get match criteria for bcmFieldQualifyOamType
  17301  *                qualifier from the field entry.
  17302  */
  17303 extern int bcm_field_qualify_OamType_get(
  17304     int unit, 
  17305     bcm_field_entry_t entry, 
  17306     bcm_field_oam_type_t *oam_type);
  17307 
  17308 /* Set match criteria for bcmFieldQualifyDstClassL2. */
  17309 extern int bcm_field_qualify_EthernetOamDstClassL2(
  17310     int unit, 
  17311     bcm_field_entry_t entry, 
  17312     uint8 data, 
  17313     uint8 mask);
  17314 
  17315 /* Get match criteria for bcmFieldQualifyDstClassL2. */
  17316 extern int bcm_field_qualify_EthernetOamDstClassL2_get(
  17317     int unit, 
  17318     bcm_field_entry_t entry, 
  17319     uint8 *data, 
  17320     uint8 *mask);
  17321 
  17322 /* Set match criteria for bcmFieldQualifyEthernetOamTxPktUPMEP. */
  17323 extern int bcm_field_qualify_EthernetOamTxPktUPMEP(
  17324     int unit, 
  17325     bcm_field_entry_t entry, 
  17326     uint8 data, 
  17327     uint8 mask);
  17328 
  17329 /* Get match criteria for bcmFieldQualifyEthernetOamTxPktUPMEP. */
  17330 extern int bcm_field_qualify_EthernetOamTxPktUPMEP_get(
  17331     int unit, 
  17332     bcm_field_entry_t entry, 
  17333     uint8 *data, 
  17334     uint8 *mask);
  17335 
  17336 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassNiv. */
  17337 extern int bcm_field_qualify_EthernetOamInterfaceClassNiv(
  17338     int unit, 
  17339     bcm_field_entry_t entry, 
  17340     uint8 data, 
  17341     uint8 mask);
  17342 
  17343 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassNiv. */
  17344 extern int bcm_field_qualify_EthernetOamInterfaceClassNiv_get(
  17345     int unit, 
  17346     bcm_field_entry_t entry, 
  17347     uint8 *data, 
  17348     uint8 *mask);
  17349 
  17350 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassMim. */
  17351 extern int bcm_field_qualify_EthernetOamInterfaceClassMim(
  17352     int unit, 
  17353     bcm_field_entry_t entry, 
  17354     uint8 data, 
  17355     uint8 mask);
  17356 
  17357 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassMim. */
  17358 extern int bcm_field_qualify_EthernetOamInterfaceClassMim_get(
  17359     int unit, 
  17360     bcm_field_entry_t entry, 
  17361     uint8 *data, 
  17362     uint8 *mask);
  17363 
  17364 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassVxlan. */
  17365 extern int bcm_field_qualify_EthernetOamInterfaceClassVxlan(
  17366     int unit, 
  17367     bcm_field_entry_t entry, 
  17368     uint8 data, 
  17369     uint8 mask);
  17370 
  17371 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVxlan. */
  17372 extern int bcm_field_qualify_EthernetOamInterfaceClassVxlan_get(
  17373     int unit, 
  17374     bcm_field_entry_t entry, 
  17375     uint8 *data, 
  17376     uint8 *mask);
  17377 
  17378 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassVlan. */
  17379 extern int bcm_field_qualify_EthernetOamInterfaceClassVlan(
  17380     int unit, 
  17381     bcm_field_entry_t entry, 
  17382     uint8 data, 
  17383     uint8 mask);
  17384 
  17385 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVlan. */
  17386 extern int bcm_field_qualify_EthernetOamInterfaceClassVlan_get(
  17387     int unit, 
  17388     bcm_field_entry_t entry, 
  17389     uint8 *data, 
  17390     uint8 *mask);
  17391 
  17392 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassPort. */
  17393 extern int bcm_field_qualify_EthernetOamInterfaceClassPort(
  17394     int unit, 
  17395     bcm_field_entry_t entry, 
  17396     uint8 data, 
  17397     uint8 mask);
  17398 
  17399 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassPort. */
  17400 extern int bcm_field_qualify_EthernetOamInterfaceClassPort_get(
  17401     int unit, 
  17402     bcm_field_entry_t entry, 
  17403     uint8 *data, 
  17404     uint8 *mask);
  17405 
  17406 /* 
  17407  * Set match criteria for
  17408  * bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst.
  17409  */
  17410 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeyFirst(
  17411     int unit, 
  17412     bcm_field_entry_t entry, 
  17413     uint8 data, 
  17414     uint8 mask);
  17415 
  17416 /* 
  17417  * Get match criteria for
  17418  * bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst.
  17419  */
  17420 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeyFirst_get(
  17421     int unit, 
  17422     bcm_field_entry_t entry, 
  17423     uint8 *data, 
  17424     uint8 *mask);
  17425 
  17426 /* 
  17427  * Set match criteria for
  17428  * bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond.
  17429  */
  17430 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeySecond(
  17431     int unit, 
  17432     bcm_field_entry_t entry, 
  17433     uint8 data, 
  17434     uint8 mask);
  17435 
  17436 /* 
  17437  * Get match criteria for
  17438  * bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond.
  17439  */
  17440 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeySecond_get(
  17441     int unit, 
  17442     bcm_field_entry_t entry, 
  17443     uint8 *data, 
  17444     uint8 *mask);
  17445 
  17446 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassMpls. */
  17447 extern int bcm_field_qualify_EthernetOamInterfaceClassMpls(
  17448     int unit, 
  17449     bcm_field_entry_t entry, 
  17450     uint8 data, 
  17451     uint8 mask);
  17452 
  17453 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassMpls. */
  17454 extern int bcm_field_qualify_EthernetOamInterfaceClassMpls_get(
  17455     int unit, 
  17456     bcm_field_entry_t entry, 
  17457     uint8 *data, 
  17458     uint8 *mask);
  17459 
  17460 /* Set match criteria for bcmFieldQualifyEthernetOamClassVpn. */
  17461 extern int bcm_field_qualify_EthernetOamClassVpn(
  17462     int unit, 
  17463     bcm_field_entry_t entry, 
  17464     uint8 data, 
  17465     uint8 mask);
  17466 
  17467 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVpn. */
  17468 extern int bcm_field_qualify_EthernetOamClassVpn_get(
  17469     int unit, 
  17470     bcm_field_entry_t entry, 
  17471     uint8 *data, 
  17472     uint8 *mask);
  17473 
  17474 /* Set match criteria for bcmFieldQualifyMplsOamGALLabelOnly. */
  17475 extern int bcm_field_qualify_MplsOamGALLabelOnly(
  17476     int unit, 
  17477     bcm_field_entry_t entry, 
  17478     uint8 data, 
  17479     uint8 mask);
  17480 
  17481 /* Get match criteria for bcmFieldQualifyMplsOamGALLabelOnly. */
  17482 extern int bcm_field_qualify_MplsOamGALLabelOnly_get(
  17483     int unit, 
  17484     bcm_field_entry_t entry, 
  17485     uint8 *data, 
  17486     uint8 *mask);
  17487 
  17488 /* Set match criteria for bcmFieldQualifyMplsOamUpperLabelDataDrop. */
  17489 extern int bcm_field_qualify_MplsOamUpperLabelDataDrop(
  17490     int unit, 
  17491     bcm_field_entry_t entry, 
  17492     uint8 data, 
  17493     uint8 mask);
  17494 
  17495 /* Get match criteria for bcmFieldQualifyMplsOamUpperLabelDataDrop. */
  17496 extern int bcm_field_qualify_MplsOamUpperLabelDataDrop_get(
  17497     int unit, 
  17498     bcm_field_entry_t entry, 
  17499     uint8 *data, 
  17500     uint8 *mask);
  17501 
  17502 /* Set match criteria for bcmFieldQualifyMplsOamGALExposed. */
  17503 extern int bcm_field_qualify_MplsOamGALExposed(
  17504     int unit, 
  17505     bcm_field_entry_t entry, 
  17506     uint8 data, 
  17507     uint8 mask);
  17508 
  17509 /* Get match criteria for bcmFieldQualifyMplsOamGALExposed. */
  17510 extern int bcm_field_qualify_MplsOamGALExposed_get(
  17511     int unit, 
  17512     bcm_field_entry_t entry, 
  17513     uint8 *data, 
  17514     uint8 *mask);
  17515 
  17516 /* Set match criteria for bcmFieldQualifyMplsOamControlPktType. */
  17517 extern int bcm_field_qualify_MplsOamControlPktType(
  17518     int unit, 
  17519     bcm_field_entry_t entry, 
  17520     bcm_field_MplsOam_Control_pktType_t data);
  17521 
  17522 /* Get match criteria for bcmFieldQualifyMplsOamControlPktType. */
  17523 extern int bcm_field_qualify_MplsOamControlPktType_get(
  17524     int unit, 
  17525     bcm_field_entry_t entry, 
  17526     bcm_field_MplsOam_Control_pktType_t *data);
  17527 
  17528 /* Set match criteria for bcmFieldQualifyMplsOamClassMplsSwitchLabel. */
  17529 extern int bcm_field_qualify_MplsOamClassMplsSwitchLabel(
  17530     int unit, 
  17531     bcm_field_entry_t entry, 
  17532     uint16 data, 
  17533     uint16 mask);
  17534 
  17535 /* Get match criteria for bcmFieldQualifyMplsOamClassMplsSwitchLabel. */
  17536 extern int bcm_field_qualify_MplsOamClassMplsSwitchLabel_get(
  17537     int unit, 
  17538     bcm_field_entry_t entry, 
  17539     uint16 *data, 
  17540     uint16 *mask);
  17541 
  17542 /* Set match criteria for bcmFieldQualifyOamEgressClassVxlt. */
  17543 extern int bcm_field_qualify_OamEgressClassVxlt(
  17544     int unit, 
  17545     bcm_field_entry_t entry, 
  17546     uint16 data, 
  17547     uint16 mask);
  17548 
  17549 /* Get match criteria for bcmFieldQualifyOamEgressClassVxlt. */
  17550 extern int bcm_field_qualify_OamEgressClassVxlt_get(
  17551     int unit, 
  17552     bcm_field_entry_t entry, 
  17553     uint16 *data, 
  17554     uint16 *mask);
  17555 
  17556 /* Set match criteria for bcmFieldQualifyOamEgressClassPort. */
  17557 extern int bcm_field_qualify_OamEgressClassPort(
  17558     int unit, 
  17559     bcm_field_entry_t entry, 
  17560     uint16 data, 
  17561     uint16 mask);
  17562 
  17563 /* Get match criteria for bcmFieldQualifyOamEgressClassPort. */
  17564 extern int bcm_field_qualify_OamEgressClassPort_get(
  17565     int unit, 
  17566     bcm_field_entry_t entry, 
  17567     uint16 *data, 
  17568     uint16 *mask);
  17569 
  17570 /* Set match criteria for OuterVlanActionRange qualifier. */
  17571 extern int bcm_field_qualify_OuterVlanActionRange(
  17572     int unit, 
  17573     bcm_field_entry_t entry, 
  17574     bcm_vlan_t data, 
  17575     bcm_vlan_t mask);
  17576 
  17577 /* Get match criteria for OuterVlanActionRange qualifier. */
  17578 extern int bcm_field_qualify_OuterVlanActionRange_get(
  17579     int unit, 
  17580     bcm_field_entry_t entry, 
  17581     bcm_vlan_t *data, 
  17582     bcm_vlan_t *mask);
  17583 
  17584 /* Set match criteria for InnerVlanActionRange qualifier. */
  17585 extern int bcm_field_qualify_InnerVlanActionRange(
  17586     int unit, 
  17587     bcm_field_entry_t entry, 
  17588     bcm_vlan_t data, 
  17589     bcm_vlan_t mask);
  17590 
  17591 /* Get match criteria for InnerVlanActionRange qualifier. */
  17592 extern int bcm_field_qualify_InnerVlanActionRange_get(
  17593     int unit, 
  17594     bcm_field_entry_t entry, 
  17595     bcm_vlan_t *data, 
  17596     bcm_vlan_t *mask);
  17597 
  17598 /* bcm_field_qualify_SrcVlanGport */
  17599 extern int bcm_field_qualify_SrcVlanGport(
  17600     int unit, 
  17601     bcm_field_entry_t entry, 
  17602     bcm_gport_t vlan_port_id);
  17603 
  17604 /* bcm_field_qualify_DstVlanGport */
  17605 extern int bcm_field_qualify_DstVlanGport(
  17606     int unit, 
  17607     bcm_field_entry_t entry, 
  17608     bcm_gport_t vlan_port_id);
  17609 
  17610 /* 
  17611  * Get match criteria for bcmFieldQualifySrcVlanGport
  17612  *                qualifier from the field entry.
  17613  */
  17614 extern int bcm_field_qualify_SrcVlanGport_get(
  17615     int unit, 
  17616     bcm_field_entry_t entry, 
  17617     bcm_gport_t *vlan_port_id);
  17618 
  17619 /* 
  17620  * Get match criteria for bcmFieldQualifyDstVlanGport
  17621  *                qualifier from the field entry.
  17622  */
  17623 extern int bcm_field_qualify_DstVlanGport_get(
  17624     int unit, 
  17625     bcm_field_entry_t entry, 
  17626     bcm_gport_t *vlan_port_id);
  17627 
  17628 /* Set match criteria for ClassId qualifier. */
  17629 extern int bcm_field_qualify_ClassId(
  17630     int unit, 
  17631     bcm_field_entry_t entry, 
  17632     uint32 data, 
  17633     uint32 mask);
  17634 
  17635 /* Get match criteria for ClassId qualifier. */
  17636 extern int bcm_field_qualify_ClassId_get(
  17637     int unit, 
  17638     bcm_field_entry_t entry, 
  17639     uint32 *data, 
  17640     uint32 *mask);
  17641 
  17642 /* 
  17643  * Set match criteria for bcmFieldQualifyIngressInterfaceClassVPort
  17644  *                qualifier in the field entry.
  17645  */
  17646 extern int bcm_field_qualify_IngressInterfaceClassVPort(
  17647     int unit, 
  17648     bcm_field_entry_t entry, 
  17649     uint32 data, 
  17650     uint32 mask);
  17651 
  17652 /* 
  17653  * Get match criteria for bcmFieldQualifyIngressInterfaceClassVPort
  17654  *                qualifier in the field entry.
  17655  */
  17656 extern int bcm_field_qualify_IngressInterfaceClassVPort_get(
  17657     int unit, 
  17658     bcm_field_entry_t entry, 
  17659     uint32 *data, 
  17660     uint32 *mask);
  17661 
  17662 /* bcm_field_qualify_SrcVlanGports */
  17663 extern int bcm_field_qualify_SrcVlanGports(
  17664     int unit, 
  17665     bcm_field_entry_t entry, 
  17666     bcm_gport_t vlan_port_id, 
  17667     bcm_gport_t vlan_port_mask);
  17668 
  17669 /* bcm_field_qualify_DstVlanGports */
  17670 extern int bcm_field_qualify_DstVlanGports(
  17671     int unit, 
  17672     bcm_field_entry_t entry, 
  17673     bcm_gport_t vlan_port_id, 
  17674     bcm_gport_t vlan_port_mask);
  17675 
  17676 /* 
  17677  * Get match criteria for bcmFieldQualifySrcVlanGports
  17678  *                qualifier from the field entry.
  17679  */
  17680 extern int bcm_field_qualify_SrcVlanGports_get(
  17681     int unit, 
  17682     bcm_field_entry_t entry, 
  17683     bcm_gport_t *vlan_port_id, 
  17684     bcm_gport_t *vlan_port_mask);
  17685 
  17686 /* 
  17687  * Get match criteria for bcmFieldQualifyDstVlanGports
  17688  *                qualifier from the field entry.
  17689  */
  17690 extern int bcm_field_qualify_DstVlanGports_get(
  17691     int unit, 
  17692     bcm_field_entry_t entry, 
  17693     bcm_gport_t *vlan_port_id, 
  17694     bcm_gport_t *vlan_port_mask);
  17695 
  17696 /* bcm_field_qualify_SrcVxlanGports */
  17697 extern int bcm_field_qualify_SrcVxlanGports(
  17698     int unit, 
  17699     bcm_field_entry_t entry, 
  17700     bcm_gport_t vxlan_port_id, 
  17701     bcm_gport_t vxlan_port_mask);
  17702 
  17703 /* bcm_field_qualify_DstVxlanGports */
  17704 extern int bcm_field_qualify_DstVxlanGports(
  17705     int unit, 
  17706     bcm_field_entry_t entry, 
  17707     bcm_gport_t vxlan_port_id, 
  17708     bcm_gport_t vxlan_port_mask);
  17709 
  17710 /* 
  17711  * Get match criteria for bcmFieldQualifySrcVxlanGports
  17712  *                qualifier from the field entry.
  17713  */
  17714 extern int bcm_field_qualify_SrcVxlanGports_get(
  17715     int unit, 
  17716     bcm_field_entry_t entry, 
  17717     bcm_gport_t *vxlan_port_id, 
  17718     bcm_gport_t *vxlan_port_mask);
  17719 
  17720 /* 
  17721  * Get match criteria for bcmFieldQualifyDstVxlanGports
  17722  *                qualifier from the field entry.
  17723  */
  17724 extern int bcm_field_qualify_DstVxlanGports_get(
  17725     int unit, 
  17726     bcm_field_entry_t entry, 
  17727     bcm_gport_t *vxlan_port_id, 
  17728     bcm_gport_t *vxlan_port_mask);
  17729 
  17730 /* bcm_field_qualify_SrcWlanGports */
  17731 extern int bcm_field_qualify_SrcWlanGports(
  17732     int unit, 
  17733     bcm_field_entry_t entry, 
  17734     bcm_gport_t wlan_port_id, 
  17735     bcm_gport_t wlan_port_mask);
  17736 
  17737 /* bcm_field_qualify_DstWlanGports */
  17738 extern int bcm_field_qualify_DstWlanGports(
  17739     int unit, 
  17740     bcm_field_entry_t entry, 
  17741     bcm_gport_t wlan_port_id, 
  17742     bcm_gport_t wlan_port_mask);
  17743 
  17744 /* 
  17745  * Get match criteria for bcmFieldQualifySrcWlanGports
  17746  *                qualifier from the field entry.
  17747  */
  17748 extern int bcm_field_qualify_SrcWlanGports_get(
  17749     int unit, 
  17750     bcm_field_entry_t entry, 
  17751     bcm_gport_t *wlan_port_id, 
  17752     bcm_gport_t *wlan_port_mask);
  17753 
  17754 /* 
  17755  * Get match criteria for bcmFieldQualifyDstWlanGports
  17756  *                qualifier from the field entry.
  17757  */
  17758 extern int bcm_field_qualify_DstWlanGports_get(
  17759     int unit, 
  17760     bcm_field_entry_t entry, 
  17761     bcm_gport_t *wlan_port_id, 
  17762     bcm_gport_t *wlan_port_mask);
  17763 
  17764 /* bcm_field_qualify_SrcMplsGports */
  17765 extern int bcm_field_qualify_SrcMplsGports(
  17766     int unit, 
  17767     bcm_field_entry_t entry, 
  17768     bcm_gport_t mpls_port_id, 
  17769     bcm_gport_t mpls_port_mask);
  17770 
  17771 /* bcm_field_qualify_DstMplsGports */
  17772 extern int bcm_field_qualify_DstMplsGports(
  17773     int unit, 
  17774     bcm_field_entry_t entry, 
  17775     bcm_gport_t mpls_port_id, 
  17776     bcm_gport_t mpls_port_mask);
  17777 
  17778 /* 
  17779  * Get match criteria for bcmFieldQualifySrcMplsGports
  17780  *                qualifier from the field entry.
  17781  */
  17782 extern int bcm_field_qualify_SrcMplsGports_get(
  17783     int unit, 
  17784     bcm_field_entry_t entry, 
  17785     bcm_gport_t *mpls_port_id, 
  17786     bcm_gport_t *mpls_port_mask);
  17787 
  17788 /* 
  17789  * Get match criteria for bcmFieldQualifyDstMplsGports
  17790  *                qualifier from the field entry.
  17791  */
  17792 extern int bcm_field_qualify_DstMplsGports_get(
  17793     int unit, 
  17794     bcm_field_entry_t entry, 
  17795     bcm_gport_t *mpls_port_id, 
  17796     bcm_gport_t *mpls_port_mask);
  17797 
  17798 /* bcm_field_qualify_SrcGports */
  17799 extern int bcm_field_qualify_SrcGports(
  17800     int unit, 
  17801     bcm_field_entry_t entry, 
  17802     bcm_gport_t port_id, 
  17803     bcm_gport_t port_mask);
  17804 
  17805 /* bcm_field_qualify_DstGports */
  17806 extern int bcm_field_qualify_DstGports(
  17807     int unit, 
  17808     bcm_field_entry_t entry, 
  17809     bcm_gport_t port_id, 
  17810     bcm_gport_t port_mask);
  17811 
  17812 /* 
  17813  * Get match criteria for bcmFieldQualifySrcGports
  17814  *                qualifier from the field entry.
  17815  */
  17816 extern int bcm_field_qualify_SrcGports_get(
  17817     int unit, 
  17818     bcm_field_entry_t entry, 
  17819     bcm_gport_t *port_id, 
  17820     bcm_gport_t *port_mask);
  17821 
  17822 /* 
  17823  * Get match criteria for bcmFieldQualifyDstGports
  17824  *                qualifier from the field entry.
  17825  */
  17826 extern int bcm_field_qualify_DstGports_get(
  17827     int unit, 
  17828     bcm_field_entry_t entry, 
  17829     bcm_gport_t *port_id, 
  17830     bcm_gport_t *port_mask);
  17831 
  17832 /* bcm_field_qualify_SrcMimGports */
  17833 extern int bcm_field_qualify_SrcMimGports(
  17834     int unit, 
  17835     bcm_field_entry_t entry, 
  17836     bcm_gport_t mim_port_id, 
  17837     bcm_gport_t mim_port_mask);
  17838 
  17839 /* bcm_field_qualify_DstMimGports */
  17840 extern int bcm_field_qualify_DstMimGports(
  17841     int unit, 
  17842     bcm_field_entry_t entry, 
  17843     bcm_gport_t mim_port_id, 
  17844     bcm_gport_t mim_port_mask);
  17845 
  17846 /* 
  17847  * Get match criteria for bcmFieldQualifySrcMimGports
  17848  *                qualifier from the field entry.
  17849  */
  17850 extern int bcm_field_qualify_SrcMimGports_get(
  17851     int unit, 
  17852     bcm_field_entry_t entry, 
  17853     bcm_gport_t *mim_port_id, 
  17854     bcm_gport_t *mim_port_mask);
  17855 
  17856 /* 
  17857  * Get match criteria for bcmFieldQualifyDstMimGports
  17858  *                qualifier from the field entry.
  17859  */
  17860 extern int bcm_field_qualify_DstMimGports_get(
  17861     int unit, 
  17862     bcm_field_entry_t entry, 
  17863     bcm_gport_t *mim_port_id, 
  17864     bcm_gport_t *mim_port_mask);
  17865 
  17866 /* bcm_field_qualify_SrcNivGports */
  17867 extern int bcm_field_qualify_SrcNivGports(
  17868     int unit, 
  17869     bcm_field_entry_t entry, 
  17870     bcm_gport_t niv_port_id, 
  17871     bcm_gport_t niv_port_mask);
  17872 
  17873 /* bcm_field_qualify_DstNivGports */
  17874 extern int bcm_field_qualify_DstNivGports(
  17875     int unit, 
  17876     bcm_field_entry_t entry, 
  17877     bcm_gport_t niv_port_id, 
  17878     bcm_gport_t niv_port_mask);
  17879 
  17880 /* 
  17881  * Get match criteria for bcmFieldQualifySrcNivGports
  17882  *                qualifier from the field entry.
  17883  */
  17884 extern int bcm_field_qualify_SrcNivGports_get(
  17885     int unit, 
  17886     bcm_field_entry_t entry, 
  17887     bcm_gport_t *niv_port_id, 
  17888     bcm_gport_t *niv_port_mask);
  17889 
  17890 /* 
  17891  * Get match criteria for bcmFieldQualifyDstNivGports
  17892  *                qualifier from the field entry.
  17893  */
  17894 extern int bcm_field_qualify_DstNivGports_get(
  17895     int unit, 
  17896     bcm_field_entry_t entry, 
  17897     bcm_gport_t *niv_port_id, 
  17898     bcm_gport_t *niv_port_mask);
  17899 
  17900 /* bcm_field_qualify_SrcModPortGports */
  17901 extern int bcm_field_qualify_SrcModPortGports(
  17902     int unit, 
  17903     bcm_field_entry_t entry, 
  17904     bcm_gport_t port_id, 
  17905     bcm_gport_t port_mask);
  17906 
  17907 /* 
  17908  * Get match criteria for bcmFieldQualifySrcModPortGports
  17909  *                qualifier from the field entry.
  17910  */
  17911 extern int bcm_field_qualify_SrcModPortGports_get(
  17912     int unit, 
  17913     bcm_field_entry_t entry, 
  17914     bcm_gport_t *port_id, 
  17915     bcm_gport_t *port_mask);
  17916 
  17917 /* Qualify Reserved_1 field in Vxlan Header */
  17918 extern int bcm_field_qualify_VxlanHeaderBits8_31(
  17919     int unit, 
  17920     bcm_field_entry_t entry, 
  17921     uint32 data, 
  17922     uint32 mask);
  17923 
  17924 /* Get match criteria for Reserved_1 field in Vxlan Header */
  17925 extern int bcm_field_qualify_VxlanHeaderBits8_31_get(
  17926     int unit, 
  17927     bcm_field_entry_t entry, 
  17928     uint32 *data, 
  17929     uint32 *mask);
  17930 
  17931 /* Qualify Reserved_2 field in Vxlan Header */
  17932 extern int bcm_field_qualify_VxlanHeaderBits56_63(
  17933     int unit, 
  17934     bcm_field_entry_t entry, 
  17935     uint8 data, 
  17936     uint8 mask);
  17937 
  17938 /* Get match criteria for Reserved_2 field in Vxlan Header */
  17939 extern int bcm_field_qualify_VxlanHeaderBits56_63_get(
  17940     int unit, 
  17941     bcm_field_entry_t entry, 
  17942     uint8 *data, 
  17943     uint8 *mask);
  17944 
  17945 #endif /* BCM_HIDE_DISPATCHABLE */
  17946 
  17947 /* 
  17948  * Field Hint Type
  17949  * 
  17950  * Specify the hint type for a group.
  17951  */
  17952 typedef enum bcm_field_hint_type_e {
  17953     bcmFieldHintTypeCompression = 0,    /* Hint Type for Auto Compression */
  17954     bcmFieldHintTypeExtraction = 1,     /* Hint Type for Qualifier Extraction */
  17955     bcmFieldHintTypeGroupAutoExpansion = 2, /* Hint Type for Group Auto Expansion */
  17956     bcmFieldHintTypeExactMatch = 3,     /* Hint Type for Exact Match. */
  17957     bcmFieldHintTypeGroupIdenticalLookupId = 4, /* Hint Type for Group will have
  17958                                            identical lookup Id as provided by
  17959                                            the bcm_field_hint_t.group_id. */
  17960     bcmFieldHintTypeIngressFlowtracker = 5, /* Hint Type for Ingress Flowtracker. */
  17961     bcmFieldHintTypeFlexCtrOpaqueObjectSel = 6, /* Hint type for specifying the opaque
  17962                                            object to be used by
  17963                                            bcmFieldActionStatGroup. */
  17964     bcmFieldHintTypePolicerPoolSel = 7, /* Hint type for specifying the policer
  17965                                            pool. Supported modes are
  17966                                            bcmPolicerPoolxxx */
  17967     bcmFieldHintTypeCount = 8           /* Always Last. Not a usable value. */
  17968 } bcm_field_hint_type_t;
  17969 
  17970 #define BCM_FIELD_HINT_TYPE_STRINGS \
  17971 { \
  17972     "Compression", \
  17973     "Extraction", \
  17974     "GroupAutoExpansion", \
  17975     "ExactMatch", \
  17976     "GroupIdenticalLookupId", \
  17977     "IngressFlowtracker", \
  17978     "FlexCtrOpaqueObjectSel", \
  17979     "PolicerPoolSel"  \
  17980 }
  17981 
  17982 /* 
  17983  * Field Hints.
  17984  * 
  17985  * Flags values to update the bcm_field_hints_t structure.
  17986  */
  17987 #define BCM_FIELD_HINT_EXACT_MATCH_ONLY     (1 << 0)   /* Exact Match Only. */
  17988 #define BCM_FIELD_GROUP_AUTO_EXPANSION_SMALL (1 << 1)   /* Prefer expanding using
  17989                                                           smaller slices */
  17990 #define BCM_FIELD_GROUP_AUTO_EXPANSION_LARGE (1 << 2)   /* Prefer expanding using
  17991                                                           larger slices */
  17992 #define BCM_FIELD_GROUP_MAX_SIZE_HARD_LIMIT (1 << 3)   /* Set Hard limit for
  17993                                                           max_group_size. */
  17994 #define BCM_FIELD_HINT_EXACT_MATCH_GROUP_PRIORITY (1 << 4)   /* Set Hint for Exact
  17995                                                           Match Group. */
  17996 #define BCM_FIELD_HINT_INGRESS_FLOWTRACKER_GROUP_SECONDARY_SLICE (1 << 5)   /* Set Hint to use
  17997                                                           secondary slice for
  17998                                                           group in ingress
  17999                                                           flowtracker stage. */
  18000 
  18001 /* Specify hints to be used during group creation. */
  18002 typedef struct bcm_field_hint_s {
  18003     bcm_field_hint_type_t hint_type;    /* Field hints of type
  18004                                            bcm_field_hint_type_t. */
  18005     bcm_field_qualify_t qual;           /* Field qualifier bcmFieldQualifyXXX. */
  18006     uint32 max_values;                  /* To figure out the width of the
  18007                                            compression output. */
  18008     uint32 start_bit;                   /* Builds the range in conjunction with
  18009                                            end_bit which will indicate that in
  18010                                            the
  18011                                                                    full mask any
  18012                                            bits outside of that range are
  18013                                            guaranteed to be 0. */
  18014     uint32 end_bit;                     /* End bit of a mask for the qualifier
  18015                                            in hint structure. */
  18016     uint32 flags;                       /* Flags. */
  18017     uint32 dosattack_event_flags;       /* Dos Attack Events Flags. */
  18018     uint32 max_group_size;              /* Max size of the group. */
  18019     int priority;                       /* Group priority. */
  18020     bcm_udf_id_t udf_id;                /* UDF ID. */
  18021     bcm_field_group_t group_id;         /* Original Group ID. */
  18022     int value;                          /* Value to be set for specific hint
  18023                                            types. */
  18024 } bcm_field_hint_t;
  18025 
  18026 /* Initialize Field Group Hint structure. */
  18027 extern void bcm_field_hint_t_init(
  18028     bcm_field_hint_t *hint);
  18029 
  18030 #ifndef BCM_HIDE_DISPATCHABLE
  18031 
  18032 /* Generate a hint id. */
  18033 extern int bcm_field_hints_create(
  18034     int unit, 
  18035     bcm_field_hintid_t *hint_id);
  18036 
  18037 /* Associate a hint structure to the hint id. */
  18038 extern int bcm_field_hints_add(
  18039     int unit, 
  18040     bcm_field_hintid_t hint_id, 
  18041     bcm_field_hint_t *hint);
  18042 
  18043 /* Get the complete hint structure from the hint id. */
  18044 extern int bcm_field_hints_get(
  18045     int unit, 
  18046     bcm_field_hintid_t hint_id, 
  18047     bcm_field_hint_t *hint);
  18048 
  18049 /* Remove a hint structure from the hint id. */
  18050 extern int bcm_field_hints_delete(
  18051     int unit, 
  18052     bcm_field_hintid_t hint_id, 
  18053     bcm_field_hint_t *hint);
  18054 
  18055 /* Remove all hints from the hint id. */
  18056 extern int bcm_field_hints_delete_all(
  18057     int unit, 
  18058     bcm_field_hintid_t hint_id);
  18059 
  18060 /* Remove all hints from the hint id. */
  18061 extern int bcm_field_hints_destroy(
  18062     int unit, 
  18063     bcm_field_hintid_t hint_id);
  18064 
  18065 /* Set match criteria for OamInLifIdValid qualifier. */
  18066 extern int bcm_field_qualify_OamInLifIdValid(
  18067     int unit, 
  18068     bcm_field_entry_t entry, 
  18069     uint8 data, 
  18070     uint8 mask);
  18071 
  18072 /* Get match criteria for OamInLifIdValid qualifier. */
  18073 extern int bcm_field_qualify_OamInLifIdValid_get(
  18074     int unit, 
  18075     bcm_field_entry_t entry, 
  18076     uint8 *data, 
  18077     uint8 *mask);
  18078 
  18079 /* Set match criteria for OamInLifId qualifier. */
  18080 extern int bcm_field_qualify_OamInLifId(
  18081     int unit, 
  18082     bcm_field_entry_t entry, 
  18083     uint32 data, 
  18084     uint32 mask);
  18085 
  18086 /* Get match criteria for OamInLifId qualifier. */
  18087 extern int bcm_field_qualify_OamInLifId_get(
  18088     int unit, 
  18089     bcm_field_entry_t entry, 
  18090     uint32 *data, 
  18091     uint32 *mask);
  18092 
  18093 /* Set match criteria for OamUpMep qualifier. */
  18094 extern int bcm_field_qualify_OamUpMep(
  18095     int unit, 
  18096     bcm_field_entry_t entry, 
  18097     uint8 data, 
  18098     uint8 mask);
  18099 
  18100 /* Get match criteria for OamUpMep qualifier. */
  18101 extern int bcm_field_qualify_OamUpMep_get(
  18102     int unit, 
  18103     bcm_field_entry_t entry, 
  18104     uint8 *data, 
  18105     uint8 *mask);
  18106 
  18107 /* Set match criteria for OamSubtype qualifier. */
  18108 extern int bcm_field_qualify_OamSubtype(
  18109     int unit, 
  18110     bcm_field_entry_t entry, 
  18111     uint8 data, 
  18112     uint8 mask);
  18113 
  18114 /* Get match criteria for OamSubtype qualifier. */
  18115 extern int bcm_field_qualify_OamSubtype_get(
  18116     int unit, 
  18117     bcm_field_entry_t entry, 
  18118     uint8 *data, 
  18119     uint8 *mask);
  18120 
  18121 /* Set match criteria for OamHeaderOffset qualifier. */
  18122 extern int bcm_field_qualify_OamHeaderOffset(
  18123     int unit, 
  18124     bcm_field_entry_t entry, 
  18125     uint32 data, 
  18126     uint32 mask);
  18127 
  18128 /* Get match criteria for OamHeaderOffset qualifier. */
  18129 extern int bcm_field_qualify_OamHeaderOffset_get(
  18130     int unit, 
  18131     bcm_field_entry_t entry, 
  18132     uint32 *data, 
  18133     uint32 *mask);
  18134 
  18135 /* Set match criteria for OamStampOffset qualifier. */
  18136 extern int bcm_field_qualify_OamStampOffset(
  18137     int unit, 
  18138     bcm_field_entry_t entry, 
  18139     uint32 data, 
  18140     uint32 mask);
  18141 
  18142 /* Get match criteria for OamStampOffset qualifier. */
  18143 extern int bcm_field_qualify_OamStampOffset_get(
  18144     int unit, 
  18145     bcm_field_entry_t entry, 
  18146     uint32 *data, 
  18147     uint32 *mask);
  18148 
  18149 /* Set match criteria for OamMepId qualifier. */
  18150 extern int bcm_field_qualify_OamMepId(
  18151     int unit, 
  18152     bcm_field_entry_t entry, 
  18153     uint32 data, 
  18154     uint32 mask);
  18155 
  18156 /* Get match criteria for OamMepId qualifier. */
  18157 extern int bcm_field_qualify_OamMepId_get(
  18158     int unit, 
  18159     bcm_field_entry_t entry, 
  18160     uint32 *data, 
  18161     uint32 *mask);
  18162 
  18163 /* Set match criteria for OamMeterDisable qualifier. */
  18164 extern int bcm_field_qualify_OamMeterDisable(
  18165     int unit, 
  18166     bcm_field_entry_t entry, 
  18167     uint8 data, 
  18168     uint8 mask);
  18169 
  18170 /* Get match criteria for OamMeterDisable qualifier. */
  18171 extern int bcm_field_qualify_OamMeterDisable_get(
  18172     int unit, 
  18173     bcm_field_entry_t entry, 
  18174     uint8 *data, 
  18175     uint8 *mask);
  18176 
  18177 /* Set match criteria for OamTsSystemHeader qualifier. */
  18178 extern int bcm_field_qualify_OamTsSystemHeader(
  18179     int unit, 
  18180     bcm_field_entry_t entry, 
  18181     uint64 data, 
  18182     uint64 mask);
  18183 
  18184 /* Get match criteria for OamTsSystemHeader qualifier. */
  18185 extern int bcm_field_qualify_OamTsSystemHeader_get(
  18186     int unit, 
  18187     bcm_field_entry_t entry, 
  18188     uint64 *data, 
  18189     uint64 *mask);
  18190 
  18191 /* Set match criteria for EthernetOamHeaderBits0_31 qualifier. */
  18192 extern int bcm_field_qualify_EthernetOamHeaderBits0_31(
  18193     int unit, 
  18194     bcm_field_entry_t entry, 
  18195     uint32 data, 
  18196     uint32 mask);
  18197 
  18198 /* Get match criteria for EthernetOamHeaderBits0_31 qualifier. */
  18199 extern int bcm_field_qualify_EthernetOamHeaderBits0_31_get(
  18200     int unit, 
  18201     bcm_field_entry_t entry, 
  18202     uint32 *data, 
  18203     uint32 *mask);
  18204 
  18205 /* Set match criteria for EthernetOamHeaderBits32_63. */
  18206 extern int bcm_field_qualify_EthernetOamHeaderBits32_63(
  18207     int unit, 
  18208     bcm_field_entry_t entry, 
  18209     uint32 data, 
  18210     uint32 mask);
  18211 
  18212 /* Get match criteria for EthernetOamHeaderBits32_63. */
  18213 extern int bcm_field_qualify_EthernetOamHeaderBits32_63_get(
  18214     int unit, 
  18215     bcm_field_entry_t entry, 
  18216     uint32 *data, 
  18217     uint32 *mask);
  18218 
  18219 /* Set match criteria for MplsOamHeaderBits0_31. */
  18220 extern int bcm_field_qualify_MplsOamHeaderBits0_31(
  18221     int unit, 
  18222     bcm_field_entry_t entry, 
  18223     uint32 data, 
  18224     uint32 mask);
  18225 
  18226 /* Get match criteria for MplsOamHeaderBits0_31 qualifier. */
  18227 extern int bcm_field_qualify_MplsOamHeaderBits0_31_get(
  18228     int unit, 
  18229     bcm_field_entry_t entry, 
  18230     uint32 *data, 
  18231     uint32 *mask);
  18232 
  18233 /* Set match criteria for MplsOamHeaderBits32_63 qualifier. */
  18234 extern int bcm_field_qualify_MplsOamHeaderBits32_63(
  18235     int unit, 
  18236     bcm_field_entry_t entry, 
  18237     uint32 data, 
  18238     uint32 mask);
  18239 
  18240 /* Get match criteria for MplsOamHeaderBits32_63 qualifier. */
  18241 extern int bcm_field_qualify_MplsOamHeaderBits32_63_get(
  18242     int unit, 
  18243     bcm_field_entry_t entry, 
  18244     uint32 *data, 
  18245     uint32 *mask);
  18246 
  18247 /* Set match criteria for MplsOamACH qualifier. */
  18248 extern int bcm_field_qualify_MplsOamACH(
  18249     int unit, 
  18250     bcm_field_entry_t entry, 
  18251     uint32 data, 
  18252     uint32 mask);
  18253 
  18254 /* Get match criteria for MplsOamACH qualifier. */
  18255 extern int bcm_field_qualify_MplsOamACH_get(
  18256     int unit, 
  18257     bcm_field_entry_t entry, 
  18258     uint32 *data, 
  18259     uint32 *mask);
  18260 
  18261 /* Set match criteria for OamHeaderBits0_31 qualifier. */
  18262 extern int bcm_field_qualify_OamHeaderBits0_31(
  18263     int unit, 
  18264     bcm_field_entry_t entry, 
  18265     uint32 data, 
  18266     uint32 mask);
  18267 
  18268 /* Get match criteria for OamHeaderBits0_31 qualifier. */
  18269 extern int bcm_field_qualify_OamHeaderBits0_31_get(
  18270     int unit, 
  18271     bcm_field_entry_t entry, 
  18272     uint32 *data, 
  18273     uint32 *mask);
  18274 
  18275 /* Set match criteria for OamHeaderBits32_63 qualifier. */
  18276 extern int bcm_field_qualify_OamHeaderBits32_63(
  18277     int unit, 
  18278     bcm_field_entry_t entry, 
  18279     uint32 data, 
  18280     uint32 mask);
  18281 
  18282 /* Get match criteria for OamHeaderBits32_63 qualifier. */
  18283 extern int bcm_field_qualify_OamHeaderBits32_63_get(
  18284     int unit, 
  18285     bcm_field_entry_t entry, 
  18286     uint32 *data, 
  18287     uint32 *mask);
  18288 
  18289 /* 
  18290  * Set match criteria for bcmFieldQualifyDstMulticastGroups
  18291  *                qualifier in the field entry.
  18292  */
  18293 extern int bcm_field_qualify_DstMulticastGroups(
  18294     int unit, 
  18295     bcm_field_entry_t entry, 
  18296     bcm_multicast_t group, 
  18297     bcm_multicast_t mask);
  18298 
  18299 /* 
  18300  * Get match criteria for bcmFieldQualifyDstMulticastGroups
  18301  *                qualifier from the field entry.
  18302  */
  18303 extern int bcm_field_qualify_DstMulticastGroups_get(
  18304     int unit, 
  18305     bcm_field_entry_t entry, 
  18306     bcm_multicast_t *group, 
  18307     bcm_multicast_t *mask);
  18308 
  18309 #endif /* BCM_HIDE_DISPATCHABLE */
  18310 
  18311 /* 
  18312  * List of Field Processor group operational modes supported per-CAP
  18313  * stage.
  18314  */
  18315 typedef enum bcm_field_group_oper_mode_e {
  18316     bcmFieldGroupOperModeGlobal = 0,    /* Group Operational Global Mode Value. */
  18317     bcmFieldGroupOperModePipeLocal = 1, /* Group Operational Pipe Local Mode
  18318                                            Value. */
  18319     bcmFieldGroupOperModeCount = 2      /* Always last. Not a usable value. */
  18320 } bcm_field_group_oper_mode_t;
  18321 
  18322 #define BCM_FIELD_OPER_MODE_STRINGS \
  18323 { \
  18324     "Global", \
  18325     "PipeLocal"  \
  18326 }
  18327 
  18328 #ifndef BCM_HIDE_DISPATCHABLE
  18329 
  18330 /* 
  18331  * Set operational mode of field group's in a particulat Filter Processor
  18332  * Stage.
  18333  */
  18334 extern int bcm_field_group_oper_mode_set(
  18335     int unit, 
  18336     bcm_field_qualify_t stage, 
  18337     bcm_field_group_oper_mode_t mode);
  18338 
  18339 /* 
  18340  * Get operational mode of field group's in a particulat Filter Processor
  18341  * Stage.
  18342  */
  18343 extern int bcm_field_group_oper_mode_get(
  18344     int unit, 
  18345     bcm_field_qualify_t stage, 
  18346     bcm_field_group_oper_mode_t *mode);
  18347 
  18348 /* bcm_field_qualify_InterfaceInPorts */
  18349 extern int bcm_field_qualify_InterfaceInPorts(
  18350     int unit, 
  18351     bcm_field_entry_t entry, 
  18352     bcm_pbmp_t data, 
  18353     bcm_pbmp_t mask);
  18354 
  18355 /* 
  18356  * Get match criteria for bcmFieldQualifyInPorts
  18357  *                qualifier from the field entry.
  18358  */
  18359 extern int bcm_field_qualify_InterfaceInPorts_get(
  18360     int unit, 
  18361     bcm_field_entry_t entry, 
  18362     bcm_pbmp_t *data, 
  18363     bcm_pbmp_t *mask);
  18364 
  18365 /* 
  18366  * Configure match criteria for bcmFieldQualifyDestVirtualPortValid
  18367  *                qualifier from the field entry.
  18368  */
  18369 extern int bcm_field_qualify_DestVirtualPortValid(
  18370     int unit, 
  18371     bcm_field_entry_t entry, 
  18372     uint8 data, 
  18373     uint8 mask);
  18374 
  18375 /* 
  18376  * Get match criteria for bcmFieldQualifyDestVirtualPortValid
  18377  *                 qualifier from the field entry.
  18378  */
  18379 extern int bcm_field_qualify_DestVirtualPortValid_get(
  18380     int unit, 
  18381     bcm_field_entry_t entry, 
  18382     uint8 *data, 
  18383     uint8 *mask);
  18384 
  18385 /* 
  18386  * Configure match criteria for bcmFieldQualifyInVPortWide
  18387  *                qualifier from the field entry.
  18388  */
  18389 extern int bcm_field_qualify_InVPortWide(
  18390     int unit, 
  18391     bcm_field_entry_t entry, 
  18392     uint64 data, 
  18393     uint64 mask);
  18394 
  18395 /* 
  18396  * Get match criteria for bcmFieldQualifyInVPortWide
  18397  *                 qualifier from the field entry.
  18398  */
  18399 extern int bcm_field_qualify_InVPortWide_get(
  18400     int unit, 
  18401     bcm_field_entry_t entry, 
  18402     uint64 *data, 
  18403     uint64 *mask);
  18404 
  18405 /* 
  18406  * Configure match criteria for bcmFieldQualifyFcoeOxID
  18407  *             qualifier from the field entry.
  18408  */
  18409 extern int bcm_field_qualify_FcoeOxID(
  18410     int unit, 
  18411     bcm_field_entry_t entry, 
  18412     uint16 data, 
  18413     uint16 mask);
  18414 
  18415 /* 
  18416  * Get match criteria for bcmFieldQualifyFcoeOxID
  18417  *             qualifier from the field entry.
  18418  */
  18419 extern int bcm_field_qualify_FcoeOxID_get(
  18420     int unit, 
  18421     bcm_field_entry_t entry, 
  18422     uint16 *data, 
  18423     uint16 *mask);
  18424 
  18425 /* 
  18426  * Configure match criteria for bcmFieldQualifyFcoeRxID
  18427  *             qualifier from the field entry.
  18428  */
  18429 extern int bcm_field_qualify_FcoeRxID(
  18430     int unit, 
  18431     bcm_field_entry_t entry, 
  18432     uint16 data, 
  18433     uint16 mask);
  18434 
  18435 /* 
  18436  * Get match criteria for bcmFieldQualifyFcoeRxID
  18437  *             qualifier from the field entry.
  18438  */
  18439 extern int bcm_field_qualify_FcoeRxID_get(
  18440     int unit, 
  18441     bcm_field_entry_t entry, 
  18442     uint16 *data, 
  18443     uint16 *mask);
  18444 
  18445 /* 
  18446  * Configure match criteria for bcmFieldQualifyIpProtocolClass
  18447  *             qualifier from the field entry.
  18448  */
  18449 extern int bcm_field_qualify_IpProtocolClass(
  18450     int unit, 
  18451     bcm_field_entry_t entry, 
  18452     bcm_class_t data, 
  18453     bcm_class_t mask);
  18454 
  18455 /* 
  18456  * Get match criteria for bcmFieldQualifyIpProtocolClass
  18457  *             qualifier from the field entry.
  18458  */
  18459 extern int bcm_field_qualify_IpProtocolClass_get(
  18460     int unit, 
  18461     bcm_field_entry_t entry, 
  18462     bcm_class_t *data, 
  18463     bcm_class_t *mask);
  18464 
  18465 /* 
  18466  * Configure match criteria for bcmFieldQualifyEtherTypeClass
  18467  *             qualifier from the field entry.
  18468  */
  18469 extern int bcm_field_qualify_EtherTypeClass(
  18470     int unit, 
  18471     bcm_field_entry_t entry, 
  18472     bcm_class_t data, 
  18473     bcm_class_t mask);
  18474 
  18475 /* 
  18476  * Get match criteria for bcmFieldQualifyEtherTypeClass
  18477  *             qualifier from the field entry.
  18478  */
  18479 extern int bcm_field_qualify_EtherTypeClass_get(
  18480     int unit, 
  18481     bcm_field_entry_t entry, 
  18482     bcm_class_t *data, 
  18483     bcm_class_t *mask);
  18484 
  18485 /* 
  18486  * Configure match criteria for bcmFieldQualifyL4SrcPortClass
  18487  *             qualifier from the field entry.
  18488  */
  18489 extern int bcm_field_qualify_L4SrcPortClass(
  18490     int unit, 
  18491     bcm_field_entry_t entry, 
  18492     bcm_class_t data, 
  18493     bcm_class_t mask);
  18494 
  18495 /* 
  18496  * Get match criteria for bcmFieldQualifyL4SrcPortClass
  18497  *             qualifier from the field entry.
  18498  */
  18499 extern int bcm_field_qualify_L4SrcPortClass_get(
  18500     int unit, 
  18501     bcm_field_entry_t entry, 
  18502     bcm_class_t *data, 
  18503     bcm_class_t *mask);
  18504 
  18505 /* 
  18506  * Configure match criteria for bcmFieldQualifyL4DstPortClass
  18507  *             qualifier from the field entry.
  18508  */
  18509 extern int bcm_field_qualify_L4DstPortClass(
  18510     int unit, 
  18511     bcm_field_entry_t entry, 
  18512     bcm_class_t data, 
  18513     bcm_class_t mask);
  18514 
  18515 /* 
  18516  * Get match criteria for bcmFieldQualifyL4DstPortClass
  18517  *             qualifier from the field entry.
  18518  */
  18519 extern int bcm_field_qualify_L4DstPortClass_get(
  18520     int unit, 
  18521     bcm_field_entry_t entry, 
  18522     bcm_class_t *data, 
  18523     bcm_class_t *mask);
  18524 
  18525 /* 
  18526  * Configure match criteria for bcmFieldQualifySrcIpClass
  18527  *             qualifier from the field entry.
  18528  */
  18529 extern int bcm_field_qualify_SrcIpClass(
  18530     int unit, 
  18531     bcm_field_entry_t entry, 
  18532     bcm_class_t data, 
  18533     bcm_class_t mask);
  18534 
  18535 /* 
  18536  * Get match criteria for bcmFieldQualifySrcIpClass
  18537  *             qualifier from the field entry.
  18538  */
  18539 extern int bcm_field_qualify_SrcIpClass_get(
  18540     int unit, 
  18541     bcm_field_entry_t entry, 
  18542     bcm_class_t *data, 
  18543     bcm_class_t *mask);
  18544 
  18545 /* 
  18546  * Configure match criteria for bcmFieldQualifySrcIpClassMsbNibble
  18547  *             qualifier from the field entry.
  18548  */
  18549 extern int bcm_field_qualify_SrcIpClassMsbNibble(
  18550     int unit, 
  18551     bcm_field_entry_t entry, 
  18552     bcm_class_t data, 
  18553     bcm_class_t mask);
  18554 
  18555 /* 
  18556  * Get match criteria for bcmFieldQualifySrcIpClassMsbNibble
  18557  *             qualifier from the field entry.
  18558  */
  18559 extern int bcm_field_qualify_SrcIpClassMsbNibble_get(
  18560     int unit, 
  18561     bcm_field_entry_t entry, 
  18562     bcm_class_t *data, 
  18563     bcm_class_t *mask);
  18564 
  18565 /* 
  18566  * Configure match criteria for bcmFieldQualifySrcIpClassLower
  18567  *             qualifier from the field entry.
  18568  */
  18569 extern int bcm_field_qualify_SrcIpClassLower(
  18570     int unit, 
  18571     bcm_field_entry_t entry, 
  18572     bcm_class_t data, 
  18573     bcm_class_t mask);
  18574 
  18575 /* 
  18576  * Get match criteria for bcmFieldQualifySrcIpClassLower
  18577  *             qualifier from the field entry.
  18578  */
  18579 extern int bcm_field_qualify_SrcIpClassLower_get(
  18580     int unit, 
  18581     bcm_field_entry_t entry, 
  18582     bcm_class_t *data, 
  18583     bcm_class_t *mask);
  18584 
  18585 /* 
  18586  * Configure match criteria for bcmFieldQualifySrcIpClassUpper
  18587  *             qualifier from the field entry.
  18588  */
  18589 extern int bcm_field_qualify_SrcIpClassUpper(
  18590     int unit, 
  18591     bcm_field_entry_t entry, 
  18592     bcm_class_t data, 
  18593     bcm_class_t mask);
  18594 
  18595 /* 
  18596  * Get match criteria for bcmFieldQualifySrcIpClassUpper
  18597  *             qualifier from the field entry.
  18598  */
  18599 extern int bcm_field_qualify_SrcIpClassUpper_get(
  18600     int unit, 
  18601     bcm_field_entry_t entry, 
  18602     bcm_class_t *data, 
  18603     bcm_class_t *mask);
  18604 
  18605 /* 
  18606  * Configure match criteria for bcmFieldQualifySrcIp6Class
  18607  *             qualifier from the field entry.
  18608  */
  18609 extern int bcm_field_qualify_SrcIp6Class(
  18610     int unit, 
  18611     bcm_field_entry_t entry, 
  18612     bcm_class_t data, 
  18613     bcm_class_t mask);
  18614 
  18615 /* 
  18616  * Get match criteria for bcmFieldQualifySrcIp6Class
  18617  *             qualifier from the field entry.
  18618  */
  18619 extern int bcm_field_qualify_SrcIp6Class_get(
  18620     int unit, 
  18621     bcm_field_entry_t entry, 
  18622     bcm_class_t *data, 
  18623     bcm_class_t *mask);
  18624 
  18625 /* 
  18626  * Configure match criteria for bcmFieldQualifySrcIp6ClassMsbNibble
  18627  *             qualifier from the field entry.
  18628  */
  18629 extern int bcm_field_qualify_SrcIp6ClassMsbNibble(
  18630     int unit, 
  18631     bcm_field_entry_t entry, 
  18632     bcm_class_t data, 
  18633     bcm_class_t mask);
  18634 
  18635 /* 
  18636  * Get match criteria for bcmFieldQualifySrcIp6ClassMsbNibble
  18637  *             qualifier from the field entry.
  18638  */
  18639 extern int bcm_field_qualify_SrcIp6ClassMsbNibble_get(
  18640     int unit, 
  18641     bcm_field_entry_t entry, 
  18642     bcm_class_t *data, 
  18643     bcm_class_t *mask);
  18644 
  18645 /* 
  18646  * Configure match criteria for bcmFieldQualifySrcIp6ClassLower
  18647  *             qualifier from the field entry.
  18648  */
  18649 extern int bcm_field_qualify_SrcIp6ClassLower(
  18650     int unit, 
  18651     bcm_field_entry_t entry, 
  18652     bcm_class_t data, 
  18653     bcm_class_t mask);
  18654 
  18655 /* 
  18656  * Get match criteria for bcmFieldQualifySrcIp6ClassLower
  18657  *             qualifier from the field entry.
  18658  */
  18659 extern int bcm_field_qualify_SrcIp6ClassLower_get(
  18660     int unit, 
  18661     bcm_field_entry_t entry, 
  18662     bcm_class_t *data, 
  18663     bcm_class_t *mask);
  18664 
  18665 /* 
  18666  * Configure match criteria for bcmFieldQualifySrcIp6ClassUpper
  18667  *             qualifier from the field entry.
  18668  */
  18669 extern int bcm_field_qualify_SrcIp6ClassUpper(
  18670     int unit, 
  18671     bcm_field_entry_t entry, 
  18672     bcm_class_t data, 
  18673     bcm_class_t mask);
  18674 
  18675 /* 
  18676  * Get match criteria for bcmFieldQualifySrcIp6ClassUpper
  18677  *             qualifier from the field entry.
  18678  */
  18679 extern int bcm_field_qualify_SrcIp6ClassUpper_get(
  18680     int unit, 
  18681     bcm_field_entry_t entry, 
  18682     bcm_class_t *data, 
  18683     bcm_class_t *mask);
  18684 
  18685 /* 
  18686  * Configure match criteria for bcmFieldQualifyFcoeOxIDClass
  18687  *             qualifier from the field entry.
  18688  */
  18689 extern int bcm_field_qualify_FcoeOxIDClass(
  18690     int unit, 
  18691     bcm_field_entry_t entry, 
  18692     bcm_class_t data, 
  18693     bcm_class_t mask);
  18694 
  18695 /* 
  18696  * Get match criteria for bcmFieldQualifyFcoeOxIDClass
  18697  *             qualifier from the field entry.
  18698  */
  18699 extern int bcm_field_qualify_FcoeOxIDClass_get(
  18700     int unit, 
  18701     bcm_field_entry_t entry, 
  18702     bcm_class_t *data, 
  18703     bcm_class_t *mask);
  18704 
  18705 /* 
  18706  * Configure match criteria for bcmFieldQualifyDstIpClass
  18707  *             qualifier from the field entry.
  18708  */
  18709 extern int bcm_field_qualify_DstIpClass(
  18710     int unit, 
  18711     bcm_field_entry_t entry, 
  18712     bcm_class_t data, 
  18713     bcm_class_t mask);
  18714 
  18715 /* 
  18716  * Get match criteria for bcmFieldQualifyDstIpClass
  18717  *             qualifier from the field entry.
  18718  */
  18719 extern int bcm_field_qualify_DstIpClass_get(
  18720     int unit, 
  18721     bcm_field_entry_t entry, 
  18722     bcm_class_t *data, 
  18723     bcm_class_t *mask);
  18724 
  18725 /* 
  18726  * Configure match criteria for bcmFieldQualifyDstIpClassMsbNibble
  18727  *             qualifier from the field entry.
  18728  */
  18729 extern int bcm_field_qualify_DstIpClassMsbNibble(
  18730     int unit, 
  18731     bcm_field_entry_t entry, 
  18732     bcm_class_t data, 
  18733     bcm_class_t mask);
  18734 
  18735 /* 
  18736  * Get match criteria for bcmFieldQualifyDstIpClassMsbNibble
  18737  *             qualifier from the field entry.
  18738  */
  18739 extern int bcm_field_qualify_DstIpClassMsbNibble_get(
  18740     int unit, 
  18741     bcm_field_entry_t entry, 
  18742     bcm_class_t *data, 
  18743     bcm_class_t *mask);
  18744 
  18745 /* 
  18746  * Configure match criteria for bcmFieldQualifyDstIpClassLower
  18747  *             qualifier from the field entry.
  18748  */
  18749 extern int bcm_field_qualify_DstIpClassLower(
  18750     int unit, 
  18751     bcm_field_entry_t entry, 
  18752     bcm_class_t data, 
  18753     bcm_class_t mask);
  18754 
  18755 /* 
  18756  * Get match criteria for bcmFieldQualifyDstIpClassLower
  18757  *             qualifier from the field entry.
  18758  */
  18759 extern int bcm_field_qualify_DstIpClassLower_get(
  18760     int unit, 
  18761     bcm_field_entry_t entry, 
  18762     bcm_class_t *data, 
  18763     bcm_class_t *mask);
  18764 
  18765 /* 
  18766  * Configure match criteria for bcmFieldQualifyDstIpClassUpper
  18767  *             qualifier from the field entry.
  18768  */
  18769 extern int bcm_field_qualify_DstIpClassUpper(
  18770     int unit, 
  18771     bcm_field_entry_t entry, 
  18772     bcm_class_t data, 
  18773     bcm_class_t mask);
  18774 
  18775 /* 
  18776  * Get match criteria for bcmFieldQualifyDstIpClassUpper
  18777  *             qualifier from the field entry.
  18778  */
  18779 extern int bcm_field_qualify_DstIpClassUpper_get(
  18780     int unit, 
  18781     bcm_field_entry_t entry, 
  18782     bcm_class_t *data, 
  18783     bcm_class_t *mask);
  18784 
  18785 /* 
  18786  * Configure match criteria for bcmFieldQualifyDstIp6Class
  18787  *             qualifier from the field entry.
  18788  */
  18789 extern int bcm_field_qualify_DstIp6Class(
  18790     int unit, 
  18791     bcm_field_entry_t entry, 
  18792     bcm_class_t data, 
  18793     bcm_class_t mask);
  18794 
  18795 /* 
  18796  * Get match criteria for bcmFieldQualifyDstIp6Class
  18797  *             qualifier from the field entry.
  18798  */
  18799 extern int bcm_field_qualify_DstIp6Class_get(
  18800     int unit, 
  18801     bcm_field_entry_t entry, 
  18802     bcm_class_t *data, 
  18803     bcm_class_t *mask);
  18804 
  18805 /* 
  18806  * Configure match criteria for bcmFieldQualifyDstIp6ClassMsbNibble
  18807  *             qualifier from the field entry.
  18808  */
  18809 extern int bcm_field_qualify_DstIp6ClassMsbNibble(
  18810     int unit, 
  18811     bcm_field_entry_t entry, 
  18812     bcm_class_t data, 
  18813     bcm_class_t mask);
  18814 
  18815 /* 
  18816  * Get match criteria for bcmFieldQualifyDstIp6ClassMsbNibble
  18817  *             qualifier from the field entry.
  18818  */
  18819 extern int bcm_field_qualify_DstIp6ClassMsbNibble_get(
  18820     int unit, 
  18821     bcm_field_entry_t entry, 
  18822     bcm_class_t *data, 
  18823     bcm_class_t *mask);
  18824 
  18825 /* 
  18826  * Configure match criteria for bcmFieldQualifyDstIp6ClassLower
  18827  *             qualifier from the field entry.
  18828  */
  18829 extern int bcm_field_qualify_DstIp6ClassLower(
  18830     int unit, 
  18831     bcm_field_entry_t entry, 
  18832     bcm_class_t data, 
  18833     bcm_class_t mask);
  18834 
  18835 /* 
  18836  * Get match criteria for bcmFieldQualifyDstIp6ClassLower
  18837  *             qualifier from the field entry.
  18838  */
  18839 extern int bcm_field_qualify_DstIp6ClassLower_get(
  18840     int unit, 
  18841     bcm_field_entry_t entry, 
  18842     bcm_class_t *data, 
  18843     bcm_class_t *mask);
  18844 
  18845 /* 
  18846  * Configure match criteria for bcmFieldQualifyDstIp6ClassUpper
  18847  *             qualifier from the field entry.
  18848  */
  18849 extern int bcm_field_qualify_DstIp6ClassUpper(
  18850     int unit, 
  18851     bcm_field_entry_t entry, 
  18852     bcm_class_t data, 
  18853     bcm_class_t mask);
  18854 
  18855 /* 
  18856  * Get match criteria for bcmFieldQualifyDstIp6ClassUpper
  18857  *             qualifier from the field entry.
  18858  */
  18859 extern int bcm_field_qualify_DstIp6ClassUpper_get(
  18860     int unit, 
  18861     bcm_field_entry_t entry, 
  18862     bcm_class_t *data, 
  18863     bcm_class_t *mask);
  18864 
  18865 /* 
  18866  * Configure match criteria for bcmFieldQualifyFcoeRxIDClass
  18867  *             qualifier from the field entry.
  18868  */
  18869 extern int bcm_field_qualify_FcoeRxIDClass(
  18870     int unit, 
  18871     bcm_field_entry_t entry, 
  18872     bcm_class_t data, 
  18873     bcm_class_t mask);
  18874 
  18875 /* 
  18876  * Get match criteria for bcmFieldQualifyFcoeRxIDClass
  18877  *             qualifier from the field entry.
  18878  */
  18879 extern int bcm_field_qualify_FcoeRxIDClass_get(
  18880     int unit, 
  18881     bcm_field_entry_t entry, 
  18882     bcm_class_t *data, 
  18883     bcm_class_t *mask);
  18884 
  18885 /* 
  18886  * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClass
  18887  *             qualifier from the field entry.
  18888  */
  18889 extern int bcm_field_qualify_FibreChanSrcIdClass(
  18890     int unit, 
  18891     bcm_field_entry_t entry, 
  18892     bcm_class_t data, 
  18893     bcm_class_t mask);
  18894 
  18895 /* 
  18896  * Get match criteria for bcmFieldQualifyFibreChanSrcIdClass
  18897  *             qualifier from the field entry.
  18898  */
  18899 extern int bcm_field_qualify_FibreChanSrcIdClass_get(
  18900     int unit, 
  18901     bcm_field_entry_t entry, 
  18902     bcm_class_t *data, 
  18903     bcm_class_t *mask);
  18904 
  18905 /* 
  18906  * Configure match criteria for
  18907  * bcmFieldQualifyFibreChanSrcIdClassMsbNibble
  18908  *             qualifier from the field entry.
  18909  */
  18910 extern int bcm_field_qualify_FibreChanSrcIdClassMsbNibble(
  18911     int unit, 
  18912     bcm_field_entry_t entry, 
  18913     bcm_class_t data, 
  18914     bcm_class_t mask);
  18915 
  18916 /* 
  18917  * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassMsbNibble
  18918  *             qualifier from the field entry.
  18919  */
  18920 extern int bcm_field_qualify_FibreChanSrcIdClassMsbNibble_get(
  18921     int unit, 
  18922     bcm_field_entry_t entry, 
  18923     bcm_class_t *data, 
  18924     bcm_class_t *mask);
  18925 
  18926 /* 
  18927  * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClassLower
  18928  *             qualifier from the field entry.
  18929  */
  18930 extern int bcm_field_qualify_FibreChanSrcIdClassLower(
  18931     int unit, 
  18932     bcm_field_entry_t entry, 
  18933     bcm_class_t data, 
  18934     bcm_class_t mask);
  18935 
  18936 /* 
  18937  * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassLower
  18938  *             qualifier from the field entry.
  18939  */
  18940 extern int bcm_field_qualify_FibreChanSrcIdClassLower_get(
  18941     int unit, 
  18942     bcm_field_entry_t entry, 
  18943     bcm_class_t *data, 
  18944     bcm_class_t *mask);
  18945 
  18946 /* 
  18947  * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClassUpper
  18948  *             qualifier from the field entry.
  18949  */
  18950 extern int bcm_field_qualify_FibreChanSrcIdClassUpper(
  18951     int unit, 
  18952     bcm_field_entry_t entry, 
  18953     bcm_class_t data, 
  18954     bcm_class_t mask);
  18955 
  18956 /* 
  18957  * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassUpper
  18958  *             qualifier from the field entry.
  18959  */
  18960 extern int bcm_field_qualify_FibreChanSrcIdClassUpper_get(
  18961     int unit, 
  18962     bcm_field_entry_t entry, 
  18963     bcm_class_t *data, 
  18964     bcm_class_t *mask);
  18965 
  18966 /* 
  18967  * Configure match criteria for bcmFieldQualifyFibreChanDstIdClass
  18968  *             qualifier from the field entry.
  18969  */
  18970 extern int bcm_field_qualify_FibreChanDstIdClass(
  18971     int unit, 
  18972     bcm_field_entry_t entry, 
  18973     bcm_class_t data, 
  18974     bcm_class_t mask);
  18975 
  18976 /* 
  18977  * Get match criteria for bcmFieldQualifyFibreChanDstIdClass
  18978  *             qualifier from the field entry.
  18979  */
  18980 extern int bcm_field_qualify_FibreChanDstIdClass_get(
  18981     int unit, 
  18982     bcm_field_entry_t entry, 
  18983     bcm_class_t *data, 
  18984     bcm_class_t *mask);
  18985 
  18986 /* 
  18987  * Configure match criteria for
  18988  * bcmFieldQualifyFibreChanDstIdClassMsbNibble
  18989  *             qualifier from the field entry.
  18990  */
  18991 extern int bcm_field_qualify_FibreChanDstIdClassMsbNibble(
  18992     int unit, 
  18993     bcm_field_entry_t entry, 
  18994     bcm_class_t data, 
  18995     bcm_class_t mask);
  18996 
  18997 /* 
  18998  * Get match criteria for bcmFieldQualifyFibreChanDstIdClassMsbNibble
  18999  *             qualifier from the field entry.
  19000  */
  19001 extern int bcm_field_qualify_FibreChanDstIdClassMsbNibble_get(
  19002     int unit, 
  19003     bcm_field_entry_t entry, 
  19004     bcm_class_t *data, 
  19005     bcm_class_t *mask);
  19006 
  19007 /* 
  19008  * Configure match criteria for bcmFieldQualifyFibreChanDstIdClassLower
  19009  *             qualifier from the field entry.
  19010  */
  19011 extern int bcm_field_qualify_FibreChanDstIdClassLower(
  19012     int unit, 
  19013     bcm_field_entry_t entry, 
  19014     bcm_class_t data, 
  19015     bcm_class_t mask);
  19016 
  19017 /* 
  19018  * Get match criteria for bcmFieldQualifyFibreChanDstIdClassLower
  19019  *             qualifier from the field entry.
  19020  */
  19021 extern int bcm_field_qualify_FibreChanDstIdClassLower_get(
  19022     int unit, 
  19023     bcm_field_entry_t entry, 
  19024     bcm_class_t *data, 
  19025     bcm_class_t *mask);
  19026 
  19027 /* 
  19028  * Configure match criteria for bcmFieldQualifyFibreChanDstIdClassUpper
  19029  *             qualifier from the field entry.
  19030  */
  19031 extern int bcm_field_qualify_FibreChanDstIdClassUpper(
  19032     int unit, 
  19033     bcm_field_entry_t entry, 
  19034     bcm_class_t data, 
  19035     bcm_class_t mask);
  19036 
  19037 /* 
  19038  * Get match criteria for bcmFieldQualifyFibreChanDstIdClassUpper
  19039  *             qualifier from the field entry.
  19040  */
  19041 extern int bcm_field_qualify_FibreChanDstIdClassUpper_get(
  19042     int unit, 
  19043     bcm_field_entry_t entry, 
  19044     bcm_class_t *data, 
  19045     bcm_class_t *mask);
  19046 
  19047 /* 
  19048  * Configure match criteria for bcmFieldQualifyTcpClassZero
  19049  *             qualifier from the field entry.
  19050  */
  19051 extern int bcm_field_qualify_TcpClassZero(
  19052     int unit, 
  19053     bcm_field_entry_t entry, 
  19054     bcm_class_t data, 
  19055     bcm_class_t mask);
  19056 
  19057 /* 
  19058  * Get match criteria for bcmFieldQualifyTcpClassZero
  19059  *             qualifier from the field entry.
  19060  */
  19061 extern int bcm_field_qualify_TcpClassZero_get(
  19062     int unit, 
  19063     bcm_field_entry_t entry, 
  19064     bcm_class_t *data, 
  19065     bcm_class_t *mask);
  19066 
  19067 /* 
  19068  * Configure match criteria for bcmFieldQualifyTosClassZero
  19069  *             qualifier from the field entry.
  19070  */
  19071 extern int bcm_field_qualify_TosClassZero(
  19072     int unit, 
  19073     bcm_field_entry_t entry, 
  19074     bcm_class_t data, 
  19075     bcm_class_t mask);
  19076 
  19077 /* 
  19078  * Get match criteria for bcmFieldQualifyTosClassZero
  19079  *             qualifier from the field entry.
  19080  */
  19081 extern int bcm_field_qualify_TosClassZero_get(
  19082     int unit, 
  19083     bcm_field_entry_t entry, 
  19084     bcm_class_t *data, 
  19085     bcm_class_t *mask);
  19086 
  19087 /* 
  19088  * Configure match criteria for bcmFieldQualifyTtlClassZero
  19089  *             qualifier from the field entry.
  19090  */
  19091 extern int bcm_field_qualify_TtlClassZero(
  19092     int unit, 
  19093     bcm_field_entry_t entry, 
  19094     bcm_class_t data, 
  19095     bcm_class_t mask);
  19096 
  19097 /* 
  19098  * Get match criteria for bcmFieldQualifyTtlClassZero
  19099  *             qualifier from the field entry.
  19100  */
  19101 extern int bcm_field_qualify_TtlClassZero_get(
  19102     int unit, 
  19103     bcm_field_entry_t entry, 
  19104     bcm_class_t *data, 
  19105     bcm_class_t *mask);
  19106 
  19107 /* 
  19108  * Configure match criteria for bcmFieldQualifyTcpClassOne
  19109  *             qualifier from the field entry.
  19110  */
  19111 extern int bcm_field_qualify_TcpClassOne(
  19112     int unit, 
  19113     bcm_field_entry_t entry, 
  19114     bcm_class_t data, 
  19115     bcm_class_t mask);
  19116 
  19117 /* 
  19118  * Get match criteria for bcmFieldQualifyTcpClassOne
  19119  *             qualifier from the field entry.
  19120  */
  19121 extern int bcm_field_qualify_TcpClassOne_get(
  19122     int unit, 
  19123     bcm_field_entry_t entry, 
  19124     bcm_class_t *data, 
  19125     bcm_class_t *mask);
  19126 
  19127 /* 
  19128  * Configure match criteria for bcmFieldQualifyTosClassOne
  19129  *             qualifier from the field entry.
  19130  */
  19131 extern int bcm_field_qualify_TosClassOne(
  19132     int unit, 
  19133     bcm_field_entry_t entry, 
  19134     bcm_class_t data, 
  19135     bcm_class_t mask);
  19136 
  19137 /* 
  19138  * Get match criteria for bcmFieldQualifyTosClassOne
  19139  *             qualifier from the field entry.
  19140  */
  19141 extern int bcm_field_qualify_TosClassOne_get(
  19142     int unit, 
  19143     bcm_field_entry_t entry, 
  19144     bcm_class_t *data, 
  19145     bcm_class_t *mask);
  19146 
  19147 /* 
  19148  * Configure match criteria for bcmFieldQualifyTtlClassOne
  19149  *             qualifier from the field entry.
  19150  */
  19151 extern int bcm_field_qualify_TtlClassOne(
  19152     int unit, 
  19153     bcm_field_entry_t entry, 
  19154     bcm_class_t data, 
  19155     bcm_class_t mask);
  19156 
  19157 /* 
  19158  * Get match criteria for bcmFieldQualifyTtlClassOne
  19159  *             qualifier from the field entry.
  19160  */
  19161 extern int bcm_field_qualify_TtlClassOne_get(
  19162     int unit, 
  19163     bcm_field_entry_t entry, 
  19164     bcm_class_t *data, 
  19165     bcm_class_t *mask);
  19166 
  19167 #endif /* BCM_HIDE_DISPATCHABLE */
  19168 
  19169 /* bcm_field_redirect_type_e */
  19170 typedef enum bcm_field_redirect_type_e {
  19171     bcmFieldRedirectTypeL3 = 0,     /* Redirect based on L3 route flow. */
  19172     bcmFieldRedirectTypeAll = 1,    /* Redirect all IP and non-IP flows. */
  19173     bcmFieldRedirectTypeCount = 3   /* Always Last. Not a usable value. */
  19174 } bcm_field_redirect_type_t;
  19175 
  19176 #define BCM_FIELD_REDIRECT_TYPE \
  19177 { \
  19178     "bcmFieldRedirectTypeL3", \
  19179     "bcmFieldRedirectTypeAll"  \
  19180 }
  19181 
  19182 #ifndef BCM_HIDE_DISPATCHABLE
  19183 
  19184 /* 
  19185  * Set match criteria for bcmFieldQualifyHiGigDstMulticast
  19186  *             qualifier in the field entry.
  19187  */
  19188 extern int bcm_field_qualify_HiGigDstMulticast(
  19189     int unit, 
  19190     bcm_field_entry_t entry, 
  19191     uint8 data, 
  19192     uint8 mask);
  19193 
  19194 /* 
  19195  * Get match criteria for bcmFieldQualifyHiGigDstMulticast
  19196  *             qualifier from the field entry.
  19197  */
  19198 extern int bcm_field_qualify_HiGigDstMulticast_get(
  19199     int unit, 
  19200     bcm_field_entry_t entry, 
  19201     uint8 *data, 
  19202     uint8 *mask);
  19203 
  19204 /* 
  19205  * Set match criteria for bcmFieldQualifyHiGigDstMulticastGroupId
  19206  *             qualifier in the field entry.
  19207  */
  19208 extern int bcm_field_qualify_HiGigDstMulticastGroupId(
  19209     int unit, 
  19210     bcm_field_entry_t entry, 
  19211     bcm_multicast_t group, 
  19212     bcm_multicast_t mask);
  19213 
  19214 /* 
  19215  * Get match criteria for bcmFieldQualifyHiGigDstMulticastGroupId
  19216  *             qualifier from the field entry.
  19217  */
  19218 extern int bcm_field_qualify_HiGigDstMulticastGroupId_get(
  19219     int unit, 
  19220     bcm_field_entry_t entry, 
  19221     bcm_multicast_t *group, 
  19222     bcm_multicast_t *mask);
  19223 
  19224 /* 
  19225  * Set match criteria for bcmFieldQualifyHigigTrafficClass
  19226  *             qualifier in the field entry.
  19227  */
  19228 extern int bcm_field_qualify_HiGigTrafficClass(
  19229     int unit, 
  19230     bcm_field_entry_t entry, 
  19231     uint8 data, 
  19232     uint8 mask);
  19233 
  19234 /* 
  19235  * Get match criteria for bcmFieldQualifyHiGigTrafficClass
  19236  *             qualifier from the field entry.
  19237  */
  19238 extern int bcm_field_qualify_HiGigTrafficClass_get(
  19239     int unit, 
  19240     bcm_field_entry_t entry, 
  19241     uint8 *data, 
  19242     uint8 *mask);
  19243 
  19244 /* 
  19245  * Set match criteria for bcmFieldQualifyHiGigDstModuleGport
  19246  *             qualifier in the field entry.
  19247  */
  19248 extern int bcm_field_qualify_HiGigDstModuleGport(
  19249     int unit, 
  19250     bcm_field_entry_t entry, 
  19251     bcm_gport_t port_id, 
  19252     bcm_gport_t port_mask);
  19253 
  19254 /* 
  19255  * Get match criteria for bcmFieldQualifyHiGigDstModuleGport
  19256  *             qualifier from the field entry.
  19257  */
  19258 extern int bcm_field_qualify_HiGigDstModuleGport_get(
  19259     int unit, 
  19260     bcm_field_entry_t entry, 
  19261     bcm_gport_t *port_id, 
  19262     bcm_gport_t *port_mask);
  19263 
  19264 /* 
  19265  * Set match criteria for bcmFieldQualifyHiGigDstPortGport
  19266  *             qualifier in the field entry.
  19267  */
  19268 extern int bcm_field_qualify_HiGigDstPortGport(
  19269     int unit, 
  19270     bcm_field_entry_t entry, 
  19271     bcm_gport_t port_id, 
  19272     bcm_gport_t mask);
  19273 
  19274 /* 
  19275  * Get match criteria for bcmFieldQualifyHiGigDstPortGport
  19276  *             qualifier from the field entry.
  19277  */
  19278 extern int bcm_field_qualify_HiGigDstPortGport_get(
  19279     int unit, 
  19280     bcm_field_entry_t entry, 
  19281     bcm_gport_t *port_id, 
  19282     bcm_gport_t *port_mask);
  19283 
  19284 /* 
  19285  * Set match criteria for bcmFieldQualifyHiGigDstModPortGport
  19286  *             qualifier in the field entry.
  19287  */
  19288 extern int bcm_field_qualify_HiGigDstModPortGport(
  19289     int unit, 
  19290     bcm_field_entry_t entry, 
  19291     bcm_gport_t port_id, 
  19292     bcm_gport_t port_mask);
  19293 
  19294 /* 
  19295  * Get match criteria for bcmFieldQualifyHiGigDstModPortGport
  19296  *             qualifier from the field entry.
  19297  */
  19298 extern int bcm_field_qualify_HiGigDstModPortGport_get(
  19299     int unit, 
  19300     bcm_field_entry_t entry, 
  19301     bcm_gport_t *port_id, 
  19302     bcm_gport_t *port_mask);
  19303 
  19304 /* 
  19305  * Set match criteria for bcmFieldQualifyHiGigSrcModuleGport
  19306  *             qualifier in the field entry.
  19307  */
  19308 extern int bcm_field_qualify_HiGigSrcModuleGport(
  19309     int unit, 
  19310     bcm_field_entry_t entry, 
  19311     bcm_gport_t port_id, 
  19312     bcm_gport_t port_mask);
  19313 
  19314 /* 
  19315  * Get match criteria for bcmFieldQualifyHiGigSrcModuleGport
  19316  *             qualifier from the field entry.
  19317  */
  19318 extern int bcm_field_qualify_HiGigSrcModuleGport_get(
  19319     int unit, 
  19320     bcm_field_entry_t entry, 
  19321     bcm_gport_t *port_id, 
  19322     bcm_gport_t *port_mask);
  19323 
  19324 /* 
  19325  * Set match criteria for bcmFieldQualifyHiGigSrcPortGport
  19326  *             qualifier in the field entry.
  19327  */
  19328 extern int bcm_field_qualify_HiGigSrcPortGport(
  19329     int unit, 
  19330     bcm_field_entry_t entry, 
  19331     bcm_gport_t port_id, 
  19332     bcm_gport_t port_mask);
  19333 
  19334 /* 
  19335  * Get match criteria for bcmFieldQualifyHiGigSrcPortGport
  19336  *             qualifier from the field entry.
  19337  */
  19338 extern int bcm_field_qualify_HiGigSrcPortGport_get(
  19339     int unit, 
  19340     bcm_field_entry_t entry, 
  19341     bcm_gport_t *port_id, 
  19342     bcm_gport_t *port_mask);
  19343 
  19344 /* 
  19345  * Set match criteria for bcmFieldQualifyHiGigSrcModPortGport
  19346  *             qualifier in the field entry.
  19347  */
  19348 extern int bcm_field_qualify_HiGigSrcModPortGport(
  19349     int unit, 
  19350     bcm_field_entry_t entry, 
  19351     bcm_gport_t port_id, 
  19352     bcm_gport_t port_mask);
  19353 
  19354 /* 
  19355  * Get match criteria for bcmFieldQualifyHiGigSrcModPortGport
  19356  *             qualifier from the field entry.
  19357  */
  19358 extern int bcm_field_qualify_HiGigSrcModPortGport_get(
  19359     int unit, 
  19360     bcm_field_entry_t entry, 
  19361     bcm_gport_t *port_id, 
  19362     bcm_gport_t *port_mask);
  19363 
  19364 /* 
  19365  * Set match criteria for bcmFieldQualifyHiGigLoadBalanceID
  19366  *             qualifier in the field entry.
  19367  */
  19368 extern int bcm_field_qualify_HiGigLoadBalanceID(
  19369     int unit, 
  19370     bcm_field_entry_t entry, 
  19371     uint8 data, 
  19372     uint8 mask);
  19373 
  19374 /* 
  19375  * Get match criteria for bcmFieldQualifyHiGigLoadBalanceID
  19376  *             qualifier from the field entry.
  19377  */
  19378 extern int bcm_field_qualify_HiGigLoadBalanceID_get(
  19379     int unit, 
  19380     bcm_field_entry_t entry, 
  19381     uint8 *data, 
  19382     uint8 *mask);
  19383 
  19384 /* 
  19385  * Set match criteria for bcmFieldQualifyHiGigColor
  19386  *             qualifier in the field entry.
  19387  */
  19388 extern int bcm_field_qualify_HiGigColor(
  19389     int unit, 
  19390     bcm_field_entry_t entry, 
  19391     uint8 color);
  19392 
  19393 /* 
  19394  * Get match criteria for bcmFieldQualifyHiGigColor
  19395  *             qualifier in the field entry.
  19396  */
  19397 extern int bcm_field_qualify_HiGigColor_get(
  19398     int unit, 
  19399     bcm_field_entry_t entry, 
  19400     uint8 *color);
  19401 
  19402 /* 
  19403  * Set match criteria for bcmFieldQualifyHiGigIntCongestionNotification
  19404  *             qualifier in the field entry.
  19405  */
  19406 extern int bcm_field_qualify_HiGigIntCongestionNotification(
  19407     int unit, 
  19408     bcm_field_entry_t entry, 
  19409     uint8 data, 
  19410     uint8 mask);
  19411 
  19412 /* 
  19413  * Get match criteria for bcmFieldQualifyHiGigIntCongestionNotification
  19414  *             qualifier from the field entry.
  19415  */
  19416 extern int bcm_field_qualify_HiGigIntCongestionNotification_get(
  19417     int unit, 
  19418     bcm_field_entry_t entry, 
  19419     uint8 *data, 
  19420     uint8 *mask);
  19421 
  19422 /* 
  19423  * Set match criteria for bcmFieldQualifyHiGigIngressTagged
  19424  *             qualifier in the field entry.
  19425  */
  19426 extern int bcm_field_qualify_HiGigIngressTagged(
  19427     int unit, 
  19428     bcm_field_entry_t entry, 
  19429     uint8 data, 
  19430     uint8 mask);
  19431 
  19432 /* 
  19433  * Get match criteria for bcmFieldQualifyHiGigIngressTagged
  19434  *             qualifier from the field entry.
  19435  */
  19436 extern int bcm_field_qualify_HiGigIngressTagged_get(
  19437     int unit, 
  19438     bcm_field_entry_t entry, 
  19439     uint8 *data, 
  19440     uint8 *mask);
  19441 
  19442 /* 
  19443  * Set match criteria for bcmFieldQualifyHiGigDstTrunk
  19444  *             qualifier in the field entry.
  19445  */
  19446 extern int bcm_field_qualify_HiGigDstTrunk(
  19447     int unit, 
  19448     bcm_field_entry_t entry, 
  19449     uint8 data, 
  19450     uint8 mask);
  19451 
  19452 /* 
  19453  * Get match criteria for bcmFieldQualifyHiGigDstTrunk
  19454  *             qualifier from the field entry.
  19455  */
  19456 extern int bcm_field_qualify_HiGigDstTrunk_get(
  19457     int unit, 
  19458     bcm_field_entry_t entry, 
  19459     uint8 *data, 
  19460     uint8 *mask);
  19461 
  19462 /* 
  19463  * Set match criteria for bcmFieldQualifyHiGigDstTrunkId
  19464  *             qualifier in the field entry.
  19465  */
  19466 extern int bcm_field_qualify_HiGigDstTrunkId(
  19467     int unit, 
  19468     bcm_field_entry_t entry, 
  19469     bcm_trunk_t data, 
  19470     bcm_trunk_t mask);
  19471 
  19472 /* 
  19473  * Get match criteria for bcmFieldQualifyHiGigDstTrunkId
  19474  *             qualifier from the field entry.
  19475  */
  19476 extern int bcm_field_qualify_HiGigDstTrunkId_get(
  19477     int unit, 
  19478     bcm_field_entry_t entry, 
  19479     bcm_trunk_t *data, 
  19480     bcm_trunk_t *mask);
  19481 
  19482 /* 
  19483  * Set match criteria for bcmFieldQualifyHiGigIngressL3SwitchPkt
  19484  *             qualifier in the field entry.
  19485  */
  19486 extern int bcm_field_qualify_HiGigIngressL3SwitchPkt(
  19487     int unit, 
  19488     bcm_field_entry_t entry, 
  19489     uint8 data, 
  19490     uint8 mask);
  19491 
  19492 /* 
  19493  * Get match criteria for bcmFieldQualifyHiGigIngressL3SwitchPkt
  19494  *             qualifier from the field entry.
  19495  */
  19496 extern int bcm_field_qualify_HiGigIngressL3SwitchPkt_get(
  19497     int unit, 
  19498     bcm_field_entry_t entry, 
  19499     uint8 *data, 
  19500     uint8 *mask);
  19501 
  19502 /* 
  19503  * Set match criteria for bcmFieldQualifyHiGigLabel
  19504  *             qualifier in the field entry.
  19505  */
  19506 extern int bcm_field_qualify_HiGigLabel(
  19507     int unit, 
  19508     bcm_field_entry_t entry, 
  19509     uint32 data, 
  19510     uint32 mask);
  19511 
  19512 /* 
  19513  * Get match criteria for bcmFieldQualifyHiGigLabel
  19514  *             qualifier from the field entry.
  19515  */
  19516 extern int bcm_field_qualify_HiGigLabel_get(
  19517     int unit, 
  19518     bcm_field_entry_t entry, 
  19519     uint32 *data, 
  19520     uint32 *mask);
  19521 
  19522 /* 
  19523  * Set match criteria for bcmFieldQualifyHiGigReplicationId
  19524  *             qualifier in the field entry.
  19525  */
  19526 extern int bcm_field_qualify_HiGigReplicationId(
  19527     int unit, 
  19528     bcm_field_entry_t entry, 
  19529     uint32 data, 
  19530     uint32 mask);
  19531 
  19532 /* 
  19533  * Get match criteria for bcmFieldQualifyHiGigReplicationId
  19534  *             qualifier from the field entry.
  19535  */
  19536 extern int bcm_field_qualify_HiGigReplicationId_get(
  19537     int unit, 
  19538     bcm_field_entry_t entry, 
  19539     uint32 *data, 
  19540     uint32 *mask);
  19541 
  19542 /* 
  19543  * Set match criteria for bcmFieldQualifyHiGigVlan
  19544  *             qualifier in the field entry.
  19545  */
  19546 extern int bcm_field_qualify_HiGigVlan(
  19547     int unit, 
  19548     bcm_field_entry_t entry, 
  19549     uint16 data, 
  19550     uint16 mask);
  19551 
  19552 /* 
  19553  * Get match criteria for bcmFieldQualifyHiGigVlan
  19554  *             qualifier from the field entry.
  19555  */
  19556 extern int bcm_field_qualify_HiGigVlan_get(
  19557     int unit, 
  19558     bcm_field_entry_t entry, 
  19559     uint16 *data, 
  19560     uint16 *mask);
  19561 
  19562 /* 
  19563  * Set match criteria for bcmFieldQualifyHiGigPortFilteringMode
  19564  *             qualifier in the field entry.
  19565  */
  19566 extern int bcm_field_qualify_HiGigPortFilteringMode(
  19567     int unit, 
  19568     bcm_field_entry_t entry, 
  19569     uint8 data, 
  19570     uint8 mask);
  19571 
  19572 /* 
  19573  * Get match criteria for bcmFieldQualifyHiGigPortFilteringMode
  19574  *             qualifier from the field entry.
  19575  */
  19576 extern int bcm_field_qualify_HiGigPortFilteringMode_get(
  19577     int unit, 
  19578     bcm_field_entry_t entry, 
  19579     uint8 *data, 
  19580     uint8 *mask);
  19581 
  19582 /* 
  19583  * Set match criteria for bcmFieldQualifyHiGigSrcTrunk
  19584  *             qualifier in the field entry.
  19585  */
  19586 extern int bcm_field_qualify_HiGigSrcTrunk(
  19587     int unit, 
  19588     bcm_field_entry_t entry, 
  19589     uint8 data, 
  19590     uint8 mask);
  19591 
  19592 /* 
  19593  * Get match criteria for bcmFieldQualifyHiGigSrcTrunk
  19594  *             qualifier from the field entry.
  19595  */
  19596 extern int bcm_field_qualify_HiGigSrcTrunk_get(
  19597     int unit, 
  19598     bcm_field_entry_t entry, 
  19599     uint8 *data, 
  19600     uint8 *mask);
  19601 
  19602 /* 
  19603  * Set match criteria for bcmFieldQualifyHiGigIngressClassificationTag
  19604  *             qualifier in the field entry.
  19605  */
  19606 extern int bcm_field_qualify_HiGigIngressClassificationTag(
  19607     int unit, 
  19608     bcm_field_entry_t entry, 
  19609     uint16 data, 
  19610     uint16 mask);
  19611 
  19612 /* 
  19613  * Get match criteria for bcmFieldQualifyHiGigIngressClassificationTag
  19614  *             qualifier from the field entry.
  19615  */
  19616 extern int bcm_field_qualify_HiGigIngressClassificationTag_get(
  19617     int unit, 
  19618     bcm_field_entry_t entry, 
  19619     uint16 *data, 
  19620     uint16 *mask);
  19621 
  19622 /* 
  19623  * Set match criteria for bcmFieldQualifyHiGigEgressMcast
  19624  *             qualifier in the field entry.
  19625  */
  19626 extern int bcm_field_qualify_HiGigEgressMcast(
  19627     int unit, 
  19628     bcm_field_entry_t entry, 
  19629     uint8 data, 
  19630     uint8 mask);
  19631 
  19632 /* 
  19633  * Get match criteria for bcmFieldQualifyHiGigEgressMcast
  19634  *             qualifier from the field entry.
  19635  */
  19636 extern int bcm_field_qualify_HiGigEgressMcast_get(
  19637     int unit, 
  19638     bcm_field_entry_t entry, 
  19639     uint8 *data, 
  19640     uint8 *mask);
  19641 
  19642 /* 
  19643  * Set match criteria for bcmFieldQualifyHiGigVni
  19644  *             qualifier in the field entry.
  19645  */
  19646 extern int bcm_field_qualify_HiGigVni(
  19647     int unit, 
  19648     bcm_field_entry_t entry, 
  19649     uint16 data, 
  19650     uint16 mask);
  19651 
  19652 /* 
  19653  * Get match criteria for bcmFieldQualifyHiGigVni
  19654  *             qualifier from the field entry.
  19655  */
  19656 extern int bcm_field_qualify_HiGigVni_get(
  19657     int unit, 
  19658     bcm_field_entry_t entry, 
  19659     uint16 *data, 
  19660     uint16 *mask);
  19661 
  19662 /* 
  19663  * Set match criteria for bcmFieldQualifyHiGigDstGport
  19664  *             qualifier in the field entry.
  19665  */
  19666 extern int bcm_field_qualify_HiGigDstGport(
  19667     int unit, 
  19668     bcm_field_entry_t entry, 
  19669     bcm_gport_t port_id, 
  19670     bcm_gport_t port_mask);
  19671 
  19672 /* 
  19673  * Get match criteria for bcmFieldQualifyHiGigDstGport
  19674  *             qualifier from the field entry.
  19675  */
  19676 extern int bcm_field_qualify_HiGigDstGport_get(
  19677     int unit, 
  19678     bcm_field_entry_t entry, 
  19679     bcm_gport_t *port_id, 
  19680     bcm_gport_t *port_mask);
  19681 
  19682 /* 
  19683  * Set match criteria for bcmFieldQualifyHiGigMulticastIndex
  19684  *             qualifier in the field entry.
  19685  */
  19686 extern int bcm_field_qualify_HiGigMulticastIndex(
  19687     int unit, 
  19688     bcm_field_entry_t entry, 
  19689     uint16 data, 
  19690     uint16 mask);
  19691 
  19692 /* 
  19693  * Get match criteria for bcmFieldQualifyHiGigMulticastIndex
  19694  *             qualifier from the field entry.
  19695  */
  19696 extern int bcm_field_qualify_HiGigMulticastIndex_get(
  19697     int unit, 
  19698     bcm_field_entry_t entry, 
  19699     uint16 *data, 
  19700     uint16 *mask);
  19701 
  19702 /* 
  19703  * Set match criteria for bcmFieldQualifyHiGigVpReplicationId
  19704  *             qualifier in the field entry.
  19705  */
  19706 extern int bcm_field_qualify_HiGigVpReplicationId(
  19707     int unit, 
  19708     bcm_field_entry_t entry, 
  19709     uint32 data, 
  19710     uint32 mask);
  19711 
  19712 /* 
  19713  * Get match criteria for bcmFieldQualifyHiGigVpReplicationId
  19714  *             qualifier from the field entry.
  19715  */
  19716 extern int bcm_field_qualify_HiGigVpReplicationId_get(
  19717     int unit, 
  19718     bcm_field_entry_t entry, 
  19719     uint32 *data, 
  19720     uint32 *mask);
  19721 
  19722 /* 
  19723  * Set match criteria for bcmFieldQualifyHiGigSrcGport
  19724  *             qualifier in the field entry.
  19725  */
  19726 extern int bcm_field_qualify_HiGigSrcGport(
  19727     int unit, 
  19728     bcm_field_entry_t entry, 
  19729     bcm_gport_t port_id, 
  19730     bcm_gport_t port_mask);
  19731 
  19732 /* 
  19733  * Get match criteria for bcmFieldQualifyHiGigSrcGport
  19734  *             qualifier from the field entry.
  19735  */
  19736 extern int bcm_field_qualify_HiGigSrcGport_get(
  19737     int unit, 
  19738     bcm_field_entry_t entry, 
  19739     bcm_gport_t *port_id, 
  19740     bcm_gport_t *port_mask);
  19741 
  19742 /* 
  19743  * Set match criteria for bcmFieldQualifyHiGigProtectionSwitchingStatus
  19744  *             qualifier in the field entry.
  19745  */
  19746 extern int bcm_field_qualify_HiGigProtectionSwitchingStatus(
  19747     int unit, 
  19748     bcm_field_entry_t entry, 
  19749     uint8 data, 
  19750     uint8 mask);
  19751 
  19752 /* 
  19753  * Get match criteria for bcmFieldQualifyHiGigProtectionSwitchingStatus
  19754  *             qualifier from the field entry.
  19755  */
  19756 extern int bcm_field_qualify_HiGigProtectionSwitchingStatus_get(
  19757     int unit, 
  19758     bcm_field_entry_t entry, 
  19759     uint8 *data, 
  19760     uint8 *mask);
  19761 
  19762 /* 
  19763  * Set match criteria for bcmFieldQualifyHiGigMirrorToVp
  19764  *             qualifier in the field entry.
  19765  */
  19766 extern int bcm_field_qualify_HiGigMirrorToVp(
  19767     int unit, 
  19768     bcm_field_entry_t entry, 
  19769     uint8 data, 
  19770     uint8 mask);
  19771 
  19772 /* 
  19773  * Get match criteria for bcmFieldQualifyHiGigMirrorToVp
  19774  *             qualifier from the field entry.
  19775  */
  19776 extern int bcm_field_qualify_HiGigMirrorToVp_get(
  19777     int unit, 
  19778     bcm_field_entry_t entry, 
  19779     uint8 *data, 
  19780     uint8 *mask);
  19781 
  19782 /* 
  19783  * Set match criteria for bcmFieldQualifyHiGigDstType
  19784  *             qualifier in the field entry.
  19785  */
  19786 extern int bcm_field_qualify_HiGigDstType(
  19787     int unit, 
  19788     bcm_field_entry_t entry, 
  19789     uint8 data, 
  19790     uint8 mask);
  19791 
  19792 /* 
  19793  * Get match criteria for bcmFieldQualifyHiGigDstType
  19794  *             qualifier from the field entry.
  19795  */
  19796 extern int bcm_field_qualify_HiGigDstType_get(
  19797     int unit, 
  19798     bcm_field_entry_t entry, 
  19799     uint8 *data, 
  19800     uint8 *mask);
  19801 
  19802 /* 
  19803  * Set match criteria for bcmFieldQualifyHiGigSrcType
  19804  *             qualifier in the field entry.
  19805  */
  19806 extern int bcm_field_qualify_HiGigSrcType(
  19807     int unit, 
  19808     bcm_field_entry_t entry, 
  19809     uint8 data, 
  19810     uint8 mask);
  19811 
  19812 /* 
  19813  * Get match criteria for bcmFieldQualifyHiGigSrcType
  19814  *             qualifier from the field entry.
  19815  */
  19816 extern int bcm_field_qualify_HiGigSrcType_get(
  19817     int unit, 
  19818     bcm_field_entry_t entry, 
  19819     uint8 *data, 
  19820     uint8 *mask);
  19821 
  19822 /* 
  19823  * Set match criteria for
  19824  * bcmFieldQualifyHiGigOffloadEngineClassificationTag
  19825  *             qualifier in the field entry.
  19826  */
  19827 extern int bcm_field_qualify_HiGigOffloadEngineClassificationTag(
  19828     int unit, 
  19829     bcm_field_entry_t entry, 
  19830     uint16 data, 
  19831     uint16 mask);
  19832 
  19833 /* 
  19834  * Get match criteria for
  19835  * bcmFieldQualifyHiGigOffloadEngineClassificationTag
  19836  *             qualifier from the field entry.
  19837  */
  19838 extern int bcm_field_qualify_HiGigOffloadEngineClassificationTag_get(
  19839     int unit, 
  19840     bcm_field_entry_t entry, 
  19841     uint16 *data, 
  19842     uint16 *mask);
  19843 
  19844 /* 
  19845  * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePktPriNew
  19846  *             qualifier in the field entry.
  19847  */
  19848 extern int bcm_field_qualify_HiGigOffloadEnginePktPriNew(
  19849     int unit, 
  19850     bcm_field_entry_t entry, 
  19851     uint8 data, 
  19852     uint8 mask);
  19853 
  19854 /* 
  19855  * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePktPriNew
  19856  *             qualifier from the field entry.
  19857  */
  19858 extern int bcm_field_qualify_HiGigOffloadEnginePktPriNew_get(
  19859     int unit, 
  19860     bcm_field_entry_t entry, 
  19861     uint8 *data, 
  19862     uint8 *mask);
  19863 
  19864 /* 
  19865  * Set match criteria for bcmFieldQualifyHiGigOffloadEngineDscpNew
  19866  *             qualifier in the field entry.
  19867  */
  19868 extern int bcm_field_qualify_HiGigOffloadEngineDscpNew(
  19869     int unit, 
  19870     bcm_field_entry_t entry, 
  19871     uint8 data, 
  19872     uint8 mask);
  19873 
  19874 /* 
  19875  * Get match criteria for bcmFieldQualifyHiGigOffloadEngineDscpNew
  19876  *             qualifier from the field entry.
  19877  */
  19878 extern int bcm_field_qualify_HiGigOffloadEngineDscpNew_get(
  19879     int unit, 
  19880     bcm_field_entry_t entry, 
  19881     uint8 *data, 
  19882     uint8 *mask);
  19883 
  19884 /* 
  19885  * Set match criteria for bcmFieldQualifyLoopBackQueue
  19886  *             qualifier in the field entry.
  19887  */
  19888 extern int bcm_field_qualify_LoopBackQueue(
  19889     int unit, 
  19890     bcm_field_entry_t entry, 
  19891     uint8 data, 
  19892     uint8 mask);
  19893 
  19894 /* 
  19895  * Get match criteria for bcmFieldQualifyLoopBackQueue
  19896  *             qualifier from the field entry.
  19897  */
  19898 extern int bcm_field_qualify_LoopBackQueue_get(
  19899     int unit, 
  19900     bcm_field_entry_t entry, 
  19901     uint8 *data, 
  19902     uint8 *mask);
  19903 
  19904 /* 
  19905  * Set match criteria for bcmFieldQualifyLoopBackSrcGport
  19906  *             qualifier in the field entry.
  19907  */
  19908 extern int bcm_field_qualify_LoopBackSrcGport(
  19909     int unit, 
  19910     bcm_field_entry_t entry, 
  19911     bcm_gport_t port_id, 
  19912     bcm_gport_t port_mask);
  19913 
  19914 /* 
  19915  * Get match criteria for bcmFieldQualifyLoopBackSrcGport
  19916  *             qualifier from the field entry.
  19917  */
  19918 extern int bcm_field_qualify_LoopBackSrcGport_get(
  19919     int unit, 
  19920     bcm_field_entry_t entry, 
  19921     bcm_gport_t *port_id, 
  19922     bcm_gport_t *port_mask);
  19923 
  19924 /* 
  19925  * Set match criteria for bcmFieldQualifyPktIsVisible
  19926  *             qualifier in the field entry.
  19927  */
  19928 extern int bcm_field_qualify_PktIsVisible(
  19929     int unit, 
  19930     bcm_field_entry_t entry, 
  19931     uint8 data, 
  19932     uint8 mask);
  19933 
  19934 /* 
  19935  * Get match criteria for bcmFieldQualifyPktIsVisible
  19936  *             qualifier from the field entry.
  19937  */
  19938 extern int bcm_field_qualify_PktIsVisible_get(
  19939     int unit, 
  19940     bcm_field_entry_t entry, 
  19941     uint8 *data, 
  19942     uint8 *mask);
  19943 
  19944 /* 
  19945  * Set match criteria for bcmFieldQualifyLoopBackCpuMasqueradePktProfile
  19946  *             qualifier in the field entry.
  19947  */
  19948 extern int bcm_field_qualify_LoopBackCpuMasqueradePktProfile(
  19949     int unit, 
  19950     bcm_field_entry_t entry, 
  19951     uint8 data, 
  19952     uint8 mask);
  19953 
  19954 /* 
  19955  * Get match criteria for bcmFieldQualifyLoopBackCpuMasqueradePktProfile
  19956  *             qualifier from the field entry.
  19957  */
  19958 extern int bcm_field_qualify_LoopBackCpuMasqueradePktProfile_get(
  19959     int unit, 
  19960     bcm_field_entry_t entry, 
  19961     uint8 *data, 
  19962     uint8 *mask);
  19963 
  19964 /* 
  19965  * Set match criteria for bcmFieldQualifyLoopBackColor
  19966  *             qualifier in the field entry.
  19967  */
  19968 extern int bcm_field_qualify_LoopBackColor(
  19969     int unit, 
  19970     bcm_field_entry_t entry, 
  19971     uint8 color);
  19972 
  19973 /* 
  19974  * Get match criteria for bcmFieldQualifyLoopBackColor
  19975  *             qualifier from the field entry.
  19976  */
  19977 extern int bcm_field_qualify_LoopBackColor_get(
  19978     int unit, 
  19979     bcm_field_entry_t entry, 
  19980     uint8 *color);
  19981 
  19982 /* 
  19983  * Set match criteria for bcmFieldQualifyLoopBackTrafficClass
  19984  *             qualifier in the field entry.
  19985  */
  19986 extern int bcm_field_qualify_LoopBackTrafficClass(
  19987     int unit, 
  19988     bcm_field_entry_t entry, 
  19989     uint8 data, 
  19990     uint8 mask);
  19991 
  19992 /* 
  19993  * Get match criteria for bcmFieldQualifyLoopBackTrafficClass
  19994  *             qualifier from the field entry.
  19995  */
  19996 extern int bcm_field_qualify_LoopBackTrafficClass_get(
  19997     int unit, 
  19998     bcm_field_entry_t entry, 
  19999     uint8 *data, 
  20000     uint8 *mask);
  20001 
  20002 /* 
  20003  * Set match criteria for bcmFieldQualifyLoopBackPacketProcessingPort
  20004  *             qualifier in the field entry.
  20005  */
  20006 extern int bcm_field_qualify_LoopBackPacketProcessingPort(
  20007     int unit, 
  20008     bcm_field_entry_t entry, 
  20009     bcm_gport_t port_id, 
  20010     bcm_gport_t port_mask);
  20011 
  20012 /* 
  20013  * Get match criteria for bcmFieldQualifyLoopBackPacketProcessingPort
  20014  *             qualifier from the field entry.
  20015  */
  20016 extern int bcm_field_qualify_LoopBackPacketProcessingPort_get(
  20017     int unit, 
  20018     bcm_field_entry_t entry, 
  20019     bcm_gport_t *port_id, 
  20020     bcm_gport_t *port_mask);
  20021 
  20022 #endif /* BCM_HIDE_DISPATCHABLE */
  20023 
  20024 /* bcm_field_src_class_mode_e */
  20025 typedef enum bcm_field_src_class_mode_e {
  20026     bcmFieldSrcClassModeDefault = 0,    /* XGS Default. */
  20027     bcmFieldSrcClassModeSDN = 1,        /* Suitable for  SDN. */
  20028     bcmFieldSrcClassModeBalanced = 2,   /* Balanced mode. */
  20029     bcmFieldSrcClassModeOverlayNetworks = 3, /* Suitable for Overlay Networks. */
  20030     bcmFieldSrcClassModeCount = 4       /* Always Last. Not a usable value. */
  20031 } bcm_field_src_class_mode_t;
  20032 
  20033 #define BCM_FIELD_SRC_CLASS_MODE_TYPE \
  20034 { \
  20035     "bcmFieldSrcClassModeDefault", \
  20036     "bcmFieldSrcClassModeSDN", \
  20037     "bcmFieldSrcClassModeBalanced", \
  20038     "bcmFieldSrcClassModeOverlayNetworks"  \
  20039 }
  20040 
  20041 /* Source Class Mode Structure. */
  20042 typedef struct bcm_field_src_class_s {
  20043     uint16 src_class_field;     /* Field Lookup stage Class ID value assigned by
  20044                                    bcmFieldActionClassSourceSet action */
  20045     uint16 dst_class_field;     /* Field Stage Lookup Class ID value assigned by
  20046                                    bcmFieldActionClassDestSet action. */
  20047     uint32 udf_class;           /* Class ID value from UDF lookup. */
  20048     uint32 intf_class_port;     /* Class ID value from Port Table. */
  20049     uint32 intf_class_l2;       /* Class ID value from Vlan or Vfi lookup. */
  20050     uint32 intf_class_l3;       /* L3 ingress interface Class ID. */
  20051     uint32 intf_class_vport;    /* Class ID value from Mim / L2Gre / VxLan /
  20052                                    Mpls / Trill / Vlan Translation / Field
  20053                                    Lookup stage source virtual port lookup. */
  20054 } bcm_field_src_class_t;
  20055 
  20056 /* Initiaize Field Source Class Mode structure */
  20057 extern void bcm_field_src_class_t_init(
  20058     bcm_field_src_class_t *src_class);
  20059 
  20060 #ifndef BCM_HIDE_DISPATCHABLE
  20061 
  20062 /* 
  20063  * Configures the mixed Source Class ID generation mode for Ingress
  20064  * and Exact Match Search stages
  20065  */
  20066 extern int bcm_field_source_class_mode_set(
  20067     int unit, 
  20068     bcm_field_stage_t stage, 
  20069     bcm_pbmp_t pbmp, 
  20070     bcm_field_src_class_mode_t mode);
  20071 
  20072 /* 
  20073  * Gets the mixed source class ID generation mode configured in hardware
  20074  * for Field Ingress
  20075  * and Exact Match Search stages
  20076  */
  20077 extern int bcm_field_source_class_mode_get(
  20078     int unit, 
  20079     bcm_field_stage_t stage, 
  20080     bcm_pbmp_t pbmp, 
  20081     bcm_field_src_class_mode_t *mode);
  20082 
  20083 /* 
  20084  * Configure match criteria for bcmFieldQualifyMixedSrcClassId qualifier
  20085  * for the preselection field entry
  20086  */
  20087 extern int bcm_field_qualify_MixedSrcClassId(
  20088     int unit, 
  20089     bcm_field_entry_t entry, 
  20090     bcm_pbmp_t pbmp, 
  20091     bcm_field_src_class_t data, 
  20092     bcm_field_src_class_t mask);
  20093 
  20094 /* 
  20095  * Get match criteria for bcmFieldQualifyMixedSrcClassId qualifier
  20096  * from the preselection field entry
  20097  */
  20098 extern int bcm_field_qualify_MixedSrcClassId_get(
  20099     int unit, 
  20100     bcm_field_entry_t entry, 
  20101     bcm_pbmp_t pbmp, 
  20102     bcm_field_src_class_t *data, 
  20103     bcm_field_src_class_t *mask);
  20104 
  20105 /* 
  20106  * Configure match criteria for bcmFieldQualifyCustomHeaderPkt
  20107  *             qualifier from the field entry.
  20108  */
  20109 extern int bcm_field_qualify_CustomHeaderPkt(
  20110     int unit, 
  20111     bcm_field_entry_t entry, 
  20112     uint8 data, 
  20113     uint8 mask);
  20114 
  20115 /* 
  20116  * Get match criteria for bcmFieldQualifyCustomHeaderPkt
  20117  *             qualifier from the field entry.
  20118  */
  20119 extern int bcm_field_qualify_CustomHeaderPkt_get(
  20120     int unit, 
  20121     bcm_field_entry_t entry, 
  20122     uint8 *data, 
  20123     uint8 *mask);
  20124 
  20125 /* 
  20126  * Configure match criteria for bcmFieldQualifyCustomHeaderData
  20127  *             qualifier from the field entry.
  20128  */
  20129 extern int bcm_field_qualify_CustomHeaderData(
  20130     int unit, 
  20131     bcm_field_entry_t entry, 
  20132     uint32 data, 
  20133     uint32 mask);
  20134 
  20135 /* 
  20136  * Get match criteria for bcmFieldQualifyCustomHeaderData
  20137  *             qualifier from the field entry.
  20138  */
  20139 extern int bcm_field_qualify_CustomHeaderData_get(
  20140     int unit, 
  20141     bcm_field_entry_t entry, 
  20142     uint32 *data, 
  20143     uint32 *mask);
  20144 
  20145 /* 
  20146  * Set match criteria for bcmFieldQualifyMimlPkt
  20147  *                qualifier in the field entry.
  20148  */
  20149 extern int bcm_field_qualify_MimlPkt(
  20150     int unit, 
  20151     bcm_field_entry_t entry, 
  20152     uint8 data, 
  20153     uint8 mask);
  20154 
  20155 /* 
  20156  * Get match criteria for bcmFieldQualifyMimlPkt
  20157  *                qualifier from the field entry.
  20158  */
  20159 extern int bcm_field_qualify_MimlPkt_get(
  20160     int unit, 
  20161     bcm_field_entry_t entry, 
  20162     uint8 *data, 
  20163     uint8 *mask);
  20164 
  20165 /* 
  20166  * Set match criteria for bcmFieldQualifyMimlSrcMac
  20167  *                qualifier in the field entry.
  20168  */
  20169 extern int bcm_field_qualify_MimlSrcMac(
  20170     int unit, 
  20171     bcm_field_entry_t entry, 
  20172     bcm_mac_t data, 
  20173     bcm_mac_t mask);
  20174 
  20175 /* 
  20176  * Set match criteria for bcmFieldQualifyMimlDstMac
  20177  *                qualifier in the field entry.
  20178  */
  20179 extern int bcm_field_qualify_MimlDstMac(
  20180     int unit, 
  20181     bcm_field_entry_t entry, 
  20182     bcm_mac_t data, 
  20183     bcm_mac_t mask);
  20184 
  20185 /* To qualify on a port bitmap generated from SGLP. */
  20186 extern int bcm_field_qualify_SystemPortBitmap(
  20187     int unit, 
  20188     bcm_field_entry_t entry, 
  20189     bcm_pbmp_t data, 
  20190     bcm_pbmp_t mask);
  20191 
  20192 /* 
  20193  * Get match criteria for SystemPortBitmap qualifier from the field
  20194  * entry.
  20195  */
  20196 extern int bcm_field_qualify_SystemPortBitmap_get(
  20197     int unit, 
  20198     bcm_field_entry_t entry, 
  20199     bcm_pbmp_t *data, 
  20200     bcm_pbmp_t *mask);
  20201 
  20202 /* To qualify on a port bitmap generated from SVP. */
  20203 extern int bcm_field_qualify_SourceGportBitmap(
  20204     int unit, 
  20205     bcm_field_entry_t entry, 
  20206     bcm_pbmp_t data, 
  20207     bcm_pbmp_t mask);
  20208 
  20209 /* 
  20210  * Get match criteria for SourceGportBitmap qualifier from the field.
  20211  * entry.
  20212  */
  20213 extern int bcm_field_qualify_SourceGportBitmap_get(
  20214     int unit, 
  20215     bcm_field_entry_t entry, 
  20216     bcm_pbmp_t *data, 
  20217     bcm_pbmp_t *mask);
  20218 
  20219 /* To qualify on a port bitmap generated from device ingress port. */
  20220 extern int bcm_field_qualify_DevicePortBitmap(
  20221     int unit, 
  20222     bcm_field_entry_t entry, 
  20223     bcm_pbmp_t data, 
  20224     bcm_pbmp_t mask);
  20225 
  20226 /* 
  20227  * Get match criteria for DevicePortBitmap qualifier from the field
  20228  * entry.
  20229  */
  20230 extern int bcm_field_qualify_DevicePortBitmap_get(
  20231     int unit, 
  20232     bcm_field_entry_t entry, 
  20233     bcm_pbmp_t *data, 
  20234     bcm_pbmp_t *mask);
  20235 
  20236 /* 
  20237  * Get match criteria for bcmFieldQualifyMimlSrcMac
  20238  *                qualifier from the field entry.
  20239  */
  20240 extern int bcm_field_qualify_MimlSrcMac_get(
  20241     int unit, 
  20242     bcm_field_entry_t entry, 
  20243     bcm_mac_t *data, 
  20244     bcm_mac_t *mask);
  20245 
  20246 /* 
  20247  * Get match criteria for bcmFieldQualifyMimlDstMac
  20248  *                qualifier from the field entry.
  20249  */
  20250 extern int bcm_field_qualify_MimlDstMac_get(
  20251     int unit, 
  20252     bcm_field_entry_t entry, 
  20253     bcm_mac_t *data, 
  20254     bcm_mac_t *mask);
  20255 
  20256 /* 
  20257  * Set match criteria for bcmFieldQualifyMimlVlan
  20258  *                  qualifier in the field entry.
  20259  */
  20260 extern int bcm_field_qualify_MimlVlan(
  20261     int unit, 
  20262     bcm_field_entry_t entry, 
  20263     bcm_vlan_t data, 
  20264     bcm_vlan_t mask);
  20265 
  20266 /* 
  20267  * Get match criteria for bcmFieldQualifyMimlVlan
  20268  *                qualifier from the field entry.
  20269  */
  20270 extern int bcm_field_qualify_MimlVlan_get(
  20271     int unit, 
  20272     bcm_field_entry_t entry, 
  20273     bcm_vlan_t *data, 
  20274     bcm_vlan_t *mask);
  20275 
  20276 /* 
  20277  * Set match criteria for bcmFieldQualifyMimlVlanId
  20278  *                  qualifier in the field entry.
  20279  */
  20280 extern int bcm_field_qualify_MimlVlanId(
  20281     int unit, 
  20282     bcm_field_entry_t entry, 
  20283     bcm_vlan_t data, 
  20284     bcm_vlan_t mask);
  20285 
  20286 /* 
  20287  * Get match criteria for bcmFieldQualifyMimlVlanId
  20288  *                  qualifier from the field entry.
  20289  */
  20290 extern int bcm_field_qualify_MimlVlanId_get(
  20291     int unit, 
  20292     bcm_field_entry_t entry, 
  20293     bcm_vlan_t *data, 
  20294     bcm_vlan_t *mask);
  20295 
  20296 /* 
  20297  * Set match criteria for bcmFieldQualifyMimlVlanPri
  20298  *                  qualifier in the field entry.
  20299  */
  20300 extern int bcm_field_qualify_MimlVlanPri(
  20301     int unit, 
  20302     bcm_field_entry_t entry, 
  20303     uint8 data, 
  20304     uint8 mask);
  20305 
  20306 /* 
  20307  * Get match criteria for bcmFieldQualifyMimlVlanPri
  20308  *                  qualifier from the field entry.
  20309  */
  20310 extern int bcm_field_qualify_MimlVlanPri_get(
  20311     int unit, 
  20312     bcm_field_entry_t entry, 
  20313     uint8 *data, 
  20314     uint8 *mask);
  20315 
  20316 /* 
  20317  * Set match criteria for bcmFieldQualifyMimlVlanCfi
  20318  *                  qualifier in the field entry.
  20319  */
  20320 extern int bcm_field_qualify_MimlVlanCfi(
  20321     int unit, 
  20322     bcm_field_entry_t entry, 
  20323     uint8 data, 
  20324     uint8 mask);
  20325 
  20326 /* 
  20327  * Get match criteria for bcmFieldQualifyMimlVlanCfi_get
  20328  *                  qualifier from the field entry.
  20329  */
  20330 extern int bcm_field_qualify_MimlVlanCfi_get(
  20331     int unit, 
  20332     bcm_field_entry_t entry, 
  20333     uint8 *data, 
  20334     uint8 *mask);
  20335 
  20336 /* 
  20337  * Set match criteria for bcmFieldQualifyMimlInnerTag
  20338  *                  qualifier in the field entry.
  20339  */
  20340 extern int bcm_field_qualify_MimlInnerTag(
  20341     int unit, 
  20342     bcm_field_entry_t entry, 
  20343     uint32 data, 
  20344     uint32 mask);
  20345 
  20346 /* 
  20347  * Get match criteria for bcmFieldQualifyMimlInnerTag_get
  20348  *                  qualifier from the field entry.
  20349  */
  20350 extern int bcm_field_qualify_MimlInnerTag_get(
  20351     int unit, 
  20352     bcm_field_entry_t entry, 
  20353     uint32 *data, 
  20354     uint32 *mask);
  20355 
  20356 /* 
  20357  * Set match criteria for bcmFieldQualifyCapwapHdrType
  20358  *                qualifier in the field entry.
  20359  */
  20360 extern int bcm_field_qualify_CapwapHdrType(
  20361     int unit, 
  20362     bcm_field_entry_t entry, 
  20363     uint8 data, 
  20364     uint8 mask);
  20365 
  20366 /* 
  20367  * Get match criteria for bcmFieldQualifyCapwapHdrType
  20368  *                qualifier from the field entry.
  20369  */
  20370 extern int bcm_field_qualify_CapwapHdrType_get(
  20371     int unit, 
  20372     bcm_field_entry_t entry, 
  20373     uint8 *data, 
  20374     uint8 *mask);
  20375 
  20376 /* 
  20377  * Set match criteria for bcmFieldQualifyCapwapHdrRid
  20378  *                qualifier in the field entry.
  20379  */
  20380 extern int bcm_field_qualify_CapwapHdrRid(
  20381     int unit, 
  20382     bcm_field_entry_t entry, 
  20383     uint8 data, 
  20384     uint8 mask);
  20385 
  20386 /* 
  20387  * Get match criteria for bcmFieldQualifyCapwapHdrRid
  20388  *                qualifier from the field entry.
  20389  */
  20390 extern int bcm_field_qualify_CapwapHdrRid_get(
  20391     int unit, 
  20392     bcm_field_entry_t entry, 
  20393     uint8 *data, 
  20394     uint8 *mask);
  20395 
  20396 /* 
  20397  * Set match criteria for bcmFieldQualifyCapwapPayloadSOF
  20398  *                qualifier in the field entry.
  20399  */
  20400 extern int bcm_field_qualify_CapwapPayloadSOF(
  20401     int unit, 
  20402     bcm_field_entry_t entry, 
  20403     uint8 data, 
  20404     uint8 mask);
  20405 
  20406 /* 
  20407  * Get match criteria for bcmFieldQualifyCapwapPayloadSOF
  20408  *                qualifier from the field entry.
  20409  */
  20410 extern int bcm_field_qualify_CapwapPayloadSOF_get(
  20411     int unit, 
  20412     bcm_field_entry_t entry, 
  20413     uint8 *data, 
  20414     uint8 *mask);
  20415 
  20416 /* 
  20417  * Set match criteria for bcmFieldQualifyCapwapPayloadDstMac
  20418  *                qualifier in the field entry.
  20419  */
  20420 extern int bcm_field_qualify_CapwapPayloadDstMac(
  20421     int unit, 
  20422     bcm_field_entry_t entry, 
  20423     bcm_mac_t data, 
  20424     bcm_mac_t mask);
  20425 
  20426 /* 
  20427  * Get match criteria for CapwapPayloadDstMac
  20428  *                qualifier from the field entry.
  20429  */
  20430 extern int bcm_field_qualify_CapwapPayloadDstMac_get(
  20431     int unit, 
  20432     bcm_field_entry_t entry, 
  20433     bcm_mac_t *data, 
  20434     bcm_mac_t *mask);
  20435 
  20436 /* 
  20437  * Set match criteria for bcmFieldQualifyCapwapPayloadSrcMac
  20438  *                qualifier in the field entry.
  20439  */
  20440 extern int bcm_field_qualify_CapwapPayloadSrcMac(
  20441     int unit, 
  20442     bcm_field_entry_t entry, 
  20443     bcm_mac_t data, 
  20444     bcm_mac_t mask);
  20445 
  20446 /* 
  20447  * Get match criteria for bcmFieldQualifyCapwapPayloadSrcMac
  20448  *                qualifier from the field entry.
  20449  */
  20450 extern int bcm_field_qualify_CapwapPayloadSrcMac_get(
  20451     int unit, 
  20452     bcm_field_entry_t entry, 
  20453     bcm_mac_t *data, 
  20454     bcm_mac_t *mask);
  20455 
  20456 /* 
  20457  * Configure match criteria for bcmFieldQualifyCapwapPayloadEtherType
  20458  *             qualifier from the field entry.
  20459  */
  20460 extern int bcm_field_qualify_CapwapPayloadEtherType(
  20461     int unit, 
  20462     bcm_field_entry_t entry, 
  20463     uint16 data, 
  20464     uint16 mask);
  20465 
  20466 /* 
  20467  * Get match criteria for bcmFieldQualifyCapwapPayloadEtherType
  20468  *             qualifier from the field entry.
  20469  */
  20470 extern int bcm_field_qualify_CapwapPayloadEtherType_get(
  20471     int unit, 
  20472     bcm_field_entry_t entry, 
  20473     uint16 *data, 
  20474     uint16 *mask);
  20475 
  20476 /* 
  20477  * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlan
  20478  *                  qualifier in the field entry.
  20479  */
  20480 extern int bcm_field_qualify_CapwapPayloadOuterVlan(
  20481     int unit, 
  20482     bcm_field_entry_t entry, 
  20483     bcm_vlan_t data, 
  20484     bcm_vlan_t mask);
  20485 
  20486 /* 
  20487  * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlan
  20488  *                qualifier from the field entry.
  20489  */
  20490 extern int bcm_field_qualify_CapwapPayloadOuterVlan_get(
  20491     int unit, 
  20492     bcm_field_entry_t entry, 
  20493     bcm_vlan_t *data, 
  20494     bcm_vlan_t *mask);
  20495 
  20496 /* 
  20497  * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanId
  20498  *                  qualifier in the field entry.
  20499  */
  20500 extern int bcm_field_qualify_CapwapPayloadOuterVlanId(
  20501     int unit, 
  20502     bcm_field_entry_t entry, 
  20503     bcm_vlan_t data, 
  20504     bcm_vlan_t mask);
  20505 
  20506 /* 
  20507  * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanId
  20508  *                  qualifier from the field entry.
  20509  */
  20510 extern int bcm_field_qualify_CapwapPayloadOuterVlanId_get(
  20511     int unit, 
  20512     bcm_field_entry_t entry, 
  20513     bcm_vlan_t *data, 
  20514     bcm_vlan_t *mask);
  20515 
  20516 /* 
  20517  * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanPri
  20518  *                  qualifier in the field entry.
  20519  */
  20520 extern int bcm_field_qualify_CapwapPayloadOuterVlanPri(
  20521     int unit, 
  20522     bcm_field_entry_t entry, 
  20523     uint8 data, 
  20524     uint8 mask);
  20525 
  20526 /* 
  20527  * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanPri
  20528  *                  qualifier from the field entry.
  20529  */
  20530 extern int bcm_field_qualify_CapwapPayloadOuterVlanPri_get(
  20531     int unit, 
  20532     bcm_field_entry_t entry, 
  20533     uint8 *data, 
  20534     uint8 *mask);
  20535 
  20536 /* 
  20537  * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanCfi
  20538  *                  qualifier in the field entry.
  20539  */
  20540 extern int bcm_field_qualify_CapwapPayloadOuterVlanCfi(
  20541     int unit, 
  20542     bcm_field_entry_t entry, 
  20543     uint8 data, 
  20544     uint8 mask);
  20545 
  20546 /* 
  20547  * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanCfi_get
  20548  *                  qualifier from the field entry.
  20549  */
  20550 extern int bcm_field_qualify_CapwapPayloadOuterVlanCfi_get(
  20551     int unit, 
  20552     bcm_field_entry_t entry, 
  20553     uint8 *data, 
  20554     uint8 *mask);
  20555 
  20556 /* 
  20557  * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlan
  20558  *                  qualifier in the field entry.
  20559  */
  20560 extern int bcm_field_qualify_CapwapPayloadInnerVlan(
  20561     int unit, 
  20562     bcm_field_entry_t entry, 
  20563     bcm_vlan_t data, 
  20564     bcm_vlan_t mask);
  20565 
  20566 /* 
  20567  * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlan
  20568  *                qualifier from the field entry.
  20569  */
  20570 extern int bcm_field_qualify_CapwapPayloadInnerVlan_get(
  20571     int unit, 
  20572     bcm_field_entry_t entry, 
  20573     bcm_vlan_t *data, 
  20574     bcm_vlan_t *mask);
  20575 
  20576 /* 
  20577  * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanId
  20578  *                  qualifier in the field entry.
  20579  */
  20580 extern int bcm_field_qualify_CapwapPayloadInnerVlanId(
  20581     int unit, 
  20582     bcm_field_entry_t entry, 
  20583     bcm_vlan_t data, 
  20584     bcm_vlan_t mask);
  20585 
  20586 /* 
  20587  * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanId
  20588  *                  qualifier from the field entry.
  20589  */
  20590 extern int bcm_field_qualify_CapwapPayloadInnerVlanId_get(
  20591     int unit, 
  20592     bcm_field_entry_t entry, 
  20593     bcm_vlan_t *data, 
  20594     bcm_vlan_t *mask);
  20595 
  20596 /* 
  20597  * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanPri
  20598  *                  qualifier in the field entry.
  20599  */
  20600 extern int bcm_field_qualify_CapwapPayloadInnerVlanPri(
  20601     int unit, 
  20602     bcm_field_entry_t entry, 
  20603     uint8 data, 
  20604     uint8 mask);
  20605 
  20606 /* 
  20607  * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanPri
  20608  *                  qualifier from the field entry.
  20609  */
  20610 extern int bcm_field_qualify_CapwapPayloadInnerVlanPri_get(
  20611     int unit, 
  20612     bcm_field_entry_t entry, 
  20613     uint8 *data, 
  20614     uint8 *mask);
  20615 
  20616 /* 
  20617  * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanCfi
  20618  *                  qualifier in the field entry.
  20619  */
  20620 extern int bcm_field_qualify_CapwapPayloadInnerVlanCfi(
  20621     int unit, 
  20622     bcm_field_entry_t entry, 
  20623     uint8 data, 
  20624     uint8 mask);
  20625 
  20626 /* 
  20627  * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanCfi_get
  20628  *                  qualifier from the field entry.
  20629  */
  20630 extern int bcm_field_qualify_CapwapPayloadInnerVlanCfi_get(
  20631     int unit, 
  20632     bcm_field_entry_t entry, 
  20633     uint8 *data, 
  20634     uint8 *mask);
  20635 
  20636 /* 
  20637  * Set match criteria for bcmFieldQualifyCapwapPayloadVlanFormat
  20638  *                  qualifier in the field entry.
  20639  */
  20640 extern int bcm_field_qualify_CapwapPayloadVlanFormat(
  20641     int unit, 
  20642     bcm_field_entry_t entry, 
  20643     uint8 data, 
  20644     uint8 mask);
  20645 
  20646 /* 
  20647  * Get match criteria for bcmFieldQualifyCapwapPayloadVlanFormat
  20648  *                  qualifier from the field entry.
  20649  */
  20650 extern int bcm_field_qualify_CapwapPayloadVlanFormat_get(
  20651     int unit, 
  20652     bcm_field_entry_t entry, 
  20653     uint8 *data, 
  20654     uint8 *mask);
  20655 
  20656 /* bcm_field_qualify_CapwapPayloadSip */
  20657 extern int bcm_field_qualify_CapwapPayloadSip(
  20658     int unit, 
  20659     bcm_field_entry_t entry, 
  20660     bcm_ip_t data, 
  20661     bcm_ip_t mask);
  20662 
  20663 /* bcm_field_qualify_CapwapPayloadDip */
  20664 extern int bcm_field_qualify_CapwapPayloadDip(
  20665     int unit, 
  20666     bcm_field_entry_t entry, 
  20667     bcm_ip_t data, 
  20668     bcm_ip_t mask);
  20669 
  20670 /* 
  20671  * Get match criteria for bcmFieldQualifyCapwapPayloadSip
  20672  *                qualifier from the field entry.
  20673  */
  20674 extern int bcm_field_qualify_CapwapPayloadSip_get(
  20675     int unit, 
  20676     bcm_field_entry_t entry, 
  20677     bcm_ip_t *data, 
  20678     bcm_ip_t *mask);
  20679 
  20680 /* 
  20681  * Get match criteria for bcmFieldQualifyCapwapPayloadDip
  20682  *                qualifier from the field entry.
  20683  */
  20684 extern int bcm_field_qualify_CapwapPayloadDip_get(
  20685     int unit, 
  20686     bcm_field_entry_t entry, 
  20687     bcm_ip_t *data, 
  20688     bcm_ip_t *mask);
  20689 
  20690 /* bcm_field_qualify_CapwapPayloadSip6 */
  20691 extern int bcm_field_qualify_CapwapPayloadSip6(
  20692     int unit, 
  20693     bcm_field_entry_t entry, 
  20694     bcm_ip6_t data, 
  20695     bcm_ip6_t mask);
  20696 
  20697 /* bcm_field_qualify_CapwapPayloadDip6 */
  20698 extern int bcm_field_qualify_CapwapPayloadDip6(
  20699     int unit, 
  20700     bcm_field_entry_t entry, 
  20701     bcm_ip6_t data, 
  20702     bcm_ip6_t mask);
  20703 
  20704 /* 
  20705  * Get match criteria for bcmFieldQualifyCapwapPayloadSip6
  20706  *                qualifier from the field entry.
  20707  */
  20708 extern int bcm_field_qualify_CapwapPayloadSip6_get(
  20709     int unit, 
  20710     bcm_field_entry_t entry, 
  20711     bcm_ip6_t *data, 
  20712     bcm_ip6_t *mask);
  20713 
  20714 /* 
  20715  * Get match criteria for bcmFieldQualifyCapwapPayloadDip6
  20716  *                qualifier from the field entry.
  20717  */
  20718 extern int bcm_field_qualify_CapwapPayloadDip6_get(
  20719     int unit, 
  20720     bcm_field_entry_t entry, 
  20721     bcm_ip6_t *data, 
  20722     bcm_ip6_t *mask);
  20723 
  20724 /* 
  20725  * Set match criteria for bcmFieldQualifyCapwapPayloadIpProtocol
  20726  *                  qualifier in the field entry.
  20727  */
  20728 extern int bcm_field_qualify_CapwapPayloadIpProtocol(
  20729     int unit, 
  20730     bcm_field_entry_t entry, 
  20731     uint8 data, 
  20732     uint8 mask);
  20733 
  20734 /* 
  20735  * Get match criteria for bcmFieldQualifyCapwapPayloadIpProtocol_get
  20736  *                  qualifier from the field entry.
  20737  */
  20738 extern int bcm_field_qualify_CapwapPayloadIpProtocol_get(
  20739     int unit, 
  20740     bcm_field_entry_t entry, 
  20741     uint8 *data, 
  20742     uint8 *mask);
  20743 
  20744 /* 
  20745  * Set match criteria for bcmFieldQualifyCapwapPayloadTos
  20746  *                  qualifier in the field entry.
  20747  */
  20748 extern int bcm_field_qualify_CapwapPayloadTos(
  20749     int unit, 
  20750     bcm_field_entry_t entry, 
  20751     uint8 data, 
  20752     uint8 mask);
  20753 
  20754 /* 
  20755  * Get match criteria for bcmFieldQualifyCapwapPayloadTos_get
  20756  *                  qualifier from the field entry.
  20757  */
  20758 extern int bcm_field_qualify_CapwapPayloadTos_get(
  20759     int unit, 
  20760     bcm_field_entry_t entry, 
  20761     uint8 *data, 
  20762     uint8 *mask);
  20763 
  20764 /* bcm_field_qualify_CapwapPayloadL4SrcPort */
  20765 extern int bcm_field_qualify_CapwapPayloadL4SrcPort(
  20766     int unit, 
  20767     bcm_field_entry_t entry, 
  20768     bcm_l4_port_t data, 
  20769     bcm_l4_port_t mask);
  20770 
  20771 /* bcm_field_qualify_CapwapPayloadL4DstPort */
  20772 extern int bcm_field_qualify_CapwapPayloadL4DstPort(
  20773     int unit, 
  20774     bcm_field_entry_t entry, 
  20775     bcm_l4_port_t data, 
  20776     bcm_l4_port_t mask);
  20777 
  20778 /* 
  20779  * Get match criteria for bcmFieldQualifyCapwapPayloadL4SrcPort
  20780  *                qualifier from the field entry.
  20781  */
  20782 extern int bcm_field_qualify_CapwapPayloadL4SrcPort_get(
  20783     int unit, 
  20784     bcm_field_entry_t entry, 
  20785     bcm_l4_port_t *data, 
  20786     bcm_l4_port_t *mask);
  20787 
  20788 /* 
  20789  * Get match criteria for bcmFieldQualifyCapwapPayloadL4DstPort
  20790  *                qualifier from the field entry.
  20791  */
  20792 extern int bcm_field_qualify_CapwapPayloadL4DstPort_get(
  20793     int unit, 
  20794     bcm_field_entry_t entry, 
  20795     bcm_l4_port_t *data, 
  20796     bcm_l4_port_t *mask);
  20797 
  20798 /* 
  20799  * Set match criteria for bcmFieldQualifyTafEnable
  20800  *                qualifier in the field entry.
  20801  */
  20802 extern int bcm_field_qualify_TafEnable(
  20803     int unit, 
  20804     bcm_field_entry_t entry, 
  20805     uint8 enable);
  20806 
  20807 /* 
  20808  * Set match criteria for bcmFieldQualifyTafGateId
  20809  *                qualifier in the field entry.
  20810  */
  20811 extern int bcm_field_qualify_TafGateId(
  20812     int unit, 
  20813     bcm_field_entry_t entry, 
  20814     uint32 data, 
  20815     uint32 mask);
  20816 
  20817 /* 
  20818  * Set match criteria for bcmFieldQualifyTafGateState
  20819  *                qualifier in the field entry.
  20820  */
  20821 extern int bcm_field_qualify_TafGateState(
  20822     int unit, 
  20823     bcm_field_entry_t entry, 
  20824     uint8 state);
  20825 
  20826 /* 
  20827  * Set match criteria for bcmFieldQualifyTafCosProfile
  20828  *                qualifier in the field entry.
  20829  */
  20830 extern int bcm_field_qualify_TafCosProfile(
  20831     int unit, 
  20832     bcm_field_entry_t entry, 
  20833     uint32 data, 
  20834     uint32 mask);
  20835 
  20836 /* 
  20837  * Get match criteria for bcmFieldQualifyTafEnable
  20838  *                qualifier from the field entry.
  20839  */
  20840 extern int bcm_field_qualify_TafEnable_get(
  20841     int unit, 
  20842     bcm_field_entry_t entry, 
  20843     uint8 *enable);
  20844 
  20845 /* 
  20846  * Get match criteria for bcmFieldQualifyTafGateId
  20847  *                qualifier from the field entry.
  20848  */
  20849 extern int bcm_field_qualify_TafGateId_get(
  20850     int unit, 
  20851     bcm_field_entry_t entry, 
  20852     uint32 *data, 
  20853     uint32 *mask);
  20854 
  20855 /* 
  20856  * Get match criteria for bcmFieldQualifyTafGateState
  20857  *                qualifier from the field entry.
  20858  */
  20859 extern int bcm_field_qualify_TafGateState_get(
  20860     int unit, 
  20861     bcm_field_entry_t entry, 
  20862     uint8 *state);
  20863 
  20864 /* 
  20865  * Get match criteria for bcmFieldQualifyTafCosProfile
  20866  *                qualifier from the field entry.
  20867  */
  20868 extern int bcm_field_qualify_TafCosProfile_get(
  20869     int unit, 
  20870     bcm_field_entry_t entry, 
  20871     uint32 *data, 
  20872     uint32 *mask);
  20873 
  20874 /* 
  20875  * Set match criteria for bcmFieldQualifyCapwapPayloadL3HdrParseable
  20876  *                  qualifier in the field entry.
  20877  */
  20878 extern int bcm_field_qualify_CapwapPayloadL3HdrParseable(
  20879     int unit, 
  20880     bcm_field_entry_t entry, 
  20881     uint8 data, 
  20882     uint8 mask);
  20883 
  20884 /* 
  20885  * Get match criteria for bcmFieldQualifyCapwapPayloadL3HdrParseable_get
  20886  *                  qualifier from the field entry.
  20887  */
  20888 extern int bcm_field_qualify_CapwapPayloadL3HdrParseable_get(
  20889     int unit, 
  20890     bcm_field_entry_t entry, 
  20891     uint8 *data, 
  20892     uint8 *mask);
  20893 
  20894 /* 
  20895  * Set match criteria for bcmFieldQualifyCapwapPayloadL4HdrParseable
  20896  *                  qualifier in the field entry.
  20897  */
  20898 extern int bcm_field_qualify_CapwapPayloadL4HdrParseable(
  20899     int unit, 
  20900     bcm_field_entry_t entry, 
  20901     uint8 data, 
  20902     uint8 mask);
  20903 
  20904 /* 
  20905  * Get match criteria for bcmFieldQualifyCapwapPayloadL4HdrParseable_get
  20906  *                  qualifier from the field entry.
  20907  */
  20908 extern int bcm_field_qualify_CapwapPayloadL4HdrParseable_get(
  20909     int unit, 
  20910     bcm_field_entry_t entry, 
  20911     uint8 *data, 
  20912     uint8 *mask);
  20913 
  20914 /* 
  20915  * Set match criteria for bcmFieldQualifyL2PayLoad
  20916  *            qualifier in the field entry.
  20917  */
  20918 extern int bcm_field_qualify_L2PayLoad(
  20919     int unit, 
  20920     bcm_field_entry_t entry, 
  20921     uint32 length, 
  20922     const uint8 *data, 
  20923     const uint8 *mask);
  20924 
  20925 /* 
  20926  * Get match criteria for bcmFieldQualifyL2PayLoad
  20927  *            qualifier from the field entry.
  20928  */
  20929 extern int bcm_field_qualify_L2PayLoad_get(
  20930     int unit, 
  20931     bcm_field_entry_t entry, 
  20932     uint32 length, 
  20933     uint8 *data, 
  20934     uint8 *mask);
  20935 
  20936 /* Set match criteria to qualify Rx Down Mep SAT terminated hit status. */
  20937 extern int bcm_field_qualify_DownMepSatTerminated(
  20938     int unit, 
  20939     bcm_field_entry_t entry, 
  20940     uint8 data, 
  20941     uint8 mask);
  20942 
  20943 /* Get match criteria for Rx Down Mep SAT terminated hit status. */
  20944 extern int bcm_field_qualify_DownMepSatTerminated_get(
  20945     int unit, 
  20946     bcm_field_entry_t entry, 
  20947     uint8 *data, 
  20948     uint8 *mask);
  20949 
  20950 /* Set match criteria for VLAN STG STP states. */
  20951 extern int bcm_field_qualify_StpState(
  20952     int unit, 
  20953     bcm_field_entry_t entry, 
  20954     uint8 data);
  20955 
  20956 /* Get match criteria for VLAN STG STP states. */
  20957 extern int bcm_field_qualify_StpState_get(
  20958     int unit, 
  20959     bcm_field_entry_t entry, 
  20960     uint8 *data);
  20961 
  20962 #endif /* BCM_HIDE_DISPATCHABLE */
  20963 
  20964 /* VLAN STG STP States (for bcm_field_qualify_StgState) */
  20965 #define BCM_FIELD_STG_STP_DISABLE   0x1        /* Disabled state */
  20966 #define BCM_FIELD_STG_STP_BLOCK     0x2        /* Blocked state */
  20967 #define BCM_FIELD_STG_STP_LEARN     0x4        /* Learn state */
  20968 #define BCM_FIELD_STG_STP_FORWARD   0x8        /* Forward state */
  20969 
  20970 #ifndef BCM_HIDE_DISPATCHABLE
  20971 
  20972 /* 
  20973  * Set match criteria for bcmFieldQualifyHiGigMirrorOrSwitchPkt
  20974  *             qualifier in the field entry.
  20975  */
  20976 extern int bcm_field_qualify_HiGigMirrorOrSwitchPkt(
  20977     int unit, 
  20978     bcm_field_entry_t entry, 
  20979     uint8 data, 
  20980     uint8 mask);
  20981 
  20982 /* 
  20983  * Get match criteria for bcmFieldQualifyHiGigMirrorOrSwitchPkt
  20984  *             qualifier from the field entry.
  20985  */
  20986 extern int bcm_field_qualify_HiGigMirrorOrSwitchPkt_get(
  20987     int unit, 
  20988     bcm_field_entry_t entry, 
  20989     uint8 *data, 
  20990     uint8 *mask);
  20991 
  20992 /* 
  20993  * Set match criteria for bcmFieldQualifyHiGigMplsPkt
  20994  *             qualifier in the field entry.
  20995  */
  20996 extern int bcm_field_qualify_HiGigMplsPkt(
  20997     int unit, 
  20998     bcm_field_entry_t entry, 
  20999     uint8 data, 
  21000     uint8 mask);
  21001 
  21002 /* 
  21003  * Get match criteria for bcmFieldQualifyHiGigMplsPkt
  21004  *             qualifier from the field entry.
  21005  */
  21006 extern int bcm_field_qualify_HiGigMplsPkt_get(
  21007     int unit, 
  21008     bcm_field_entry_t entry, 
  21009     uint8 *data, 
  21010     uint8 *mask);
  21011 
  21012 /* 
  21013  * Set match criteria for bcmFieldQualifyHiGigLabelType
  21014  *             qualifier in the field entry.
  21015  */
  21016 extern int bcm_field_qualify_HiGigLabelType(
  21017     int unit, 
  21018     bcm_field_entry_t entry, 
  21019     uint8 data, 
  21020     uint8 mask);
  21021 
  21022 /* 
  21023  * Get match criteria for bcmFieldQualifyHiGigLabelType
  21024  *             qualifier from the field entry.
  21025  */
  21026 extern int bcm_field_qualify_HiGigLabelType_get(
  21027     int unit, 
  21028     bcm_field_entry_t entry, 
  21029     uint8 *data, 
  21030     uint8 *mask);
  21031 
  21032 /* 
  21033  * Set match criteria for bcmFieldQualifyHiGigForwardingType
  21034  *             qualifier in the field entry.
  21035  */
  21036 extern int bcm_field_qualify_HiGigForwardingType(
  21037     int unit, 
  21038     bcm_field_entry_t entry, 
  21039     bcm_field_HiGigForwardingType_t type);
  21040 
  21041 /* 
  21042  * Get match criteria for bcmFieldQualifyHiGigForwardingType
  21043  *             qualifier from the field entry.
  21044  */
  21045 extern int bcm_field_qualify_HiGigForwardingType_get(
  21046     int unit, 
  21047     bcm_field_entry_t entry, 
  21048     bcm_field_HiGigForwardingType_t *type);
  21049 
  21050 /* 
  21051  * Set match criteria for bcmFieldQualifyHiGigDoNotFlags
  21052  *             qualifier in the field entry.
  21053  */
  21054 extern int bcm_field_qualify_HiGigDoNotFlags(
  21055     int unit, 
  21056     bcm_field_entry_t entry, 
  21057     uint8 data, 
  21058     uint8 mask);
  21059 
  21060 /* 
  21061  * Get match criteria for bcmFieldQualifyHiGigDoNotFlags
  21062  *             qualifier from the field entry.
  21063  */
  21064 extern int bcm_field_qualify_HiGigDoNotFlags_get(
  21065     int unit, 
  21066     bcm_field_entry_t entry, 
  21067     uint8 *data, 
  21068     uint8 *mask);
  21069 
  21070 /* 
  21071  * Set match criteria for bcmFieldQualifyHiGigPreserveFlags
  21072  *             qualifier in the field entry.
  21073  */
  21074 extern int bcm_field_qualify_HiGigPreserveFlags(
  21075     int unit, 
  21076     bcm_field_entry_t entry, 
  21077     uint8 data, 
  21078     uint8 mask);
  21079 
  21080 /* 
  21081  * Get match criteria for bcmFieldQualifyHiGigPreserveFlags
  21082  *             qualifier from the field entry.
  21083  */
  21084 extern int bcm_field_qualify_HiGigPreserveFlags_get(
  21085     int unit, 
  21086     bcm_field_entry_t entry, 
  21087     uint8 *data, 
  21088     uint8 *mask);
  21089 
  21090 /* 
  21091  * Set match criteria for bcmFieldQualifyHiGigVpPreserveFlags
  21092  *             qualifier in the field entry.
  21093  */
  21094 extern int bcm_field_qualify_HiGigVpPreserveFlags(
  21095     int unit, 
  21096     bcm_field_entry_t entry, 
  21097     uint8 data, 
  21098     uint8 mask);
  21099 
  21100 /* 
  21101  * Get match criteria for bcmFieldQualifyHiGigVpPreserveFlags
  21102  *             qualifier from the field entry.
  21103  */
  21104 extern int bcm_field_qualify_HiGigVpPreserveFlags_get(
  21105     int unit, 
  21106     bcm_field_entry_t entry, 
  21107     uint8 *data, 
  21108     uint8 *mask);
  21109 
  21110 /* 
  21111  * Set match criteria for bcmFieldQualifyHiGigOffloadEngineDeferredFlags
  21112  *             qualifier in the field entry.
  21113  */
  21114 extern int bcm_field_qualify_HiGigOffloadEngineDeferredFlags(
  21115     int unit, 
  21116     bcm_field_entry_t entry, 
  21117     uint8 data, 
  21118     uint8 mask);
  21119 
  21120 /* 
  21121  * Get match criteria for bcmFieldQualifyHiGigOffloadEngineDeferredFlags
  21122  *             qualifier from the field entry.
  21123  */
  21124 extern int bcm_field_qualify_HiGigOffloadEngineDeferredFlags_get(
  21125     int unit, 
  21126     bcm_field_entry_t entry, 
  21127     uint8 *data, 
  21128     uint8 *mask);
  21129 
  21130 /* 
  21131  * Set match criteria for bcmFieldQualifyHiGigOffloadEngineVxltStatus
  21132  *             qualifier in the field entry.
  21133  */
  21134 extern int bcm_field_qualify_HiGigOffloadEngineVxltStatus(
  21135     int unit, 
  21136     bcm_field_entry_t entry, 
  21137     uint8 data, 
  21138     uint8 mask);
  21139 
  21140 /* 
  21141  * Get match criteria for bcmFieldQualifyHiGigOffloadEngineVxltStatus
  21142  *             qualifier from the field entry.
  21143  */
  21144 extern int bcm_field_qualify_HiGigOffloadEngineVxltStatus_get(
  21145     int unit, 
  21146     bcm_field_entry_t entry, 
  21147     uint8 *data, 
  21148     uint8 *mask);
  21149 
  21150 /* 
  21151  * Set match criteria for bcmFieldQualifyHiGigOffloadEngineSrcType
  21152  *             qualifier in the field entry.
  21153  */
  21154 extern int bcm_field_qualify_HiGigOffloadEngineSrcType(
  21155     int unit, 
  21156     bcm_field_entry_t entry, 
  21157     uint8 data, 
  21158     uint8 mask);
  21159 
  21160 /* 
  21161  * Get match criteria for bcmFieldQualifyHiGigOffloadEngineSrcType
  21162  *             qualifier from the field entry.
  21163  */
  21164 extern int bcm_field_qualify_HiGigOffloadEngineSrcType_get(
  21165     int unit, 
  21166     bcm_field_entry_t entry, 
  21167     uint8 *data, 
  21168     uint8 *mask);
  21169 
  21170 /* 
  21171  * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDscp
  21172  *             qualifier in the field entry.
  21173  */
  21174 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDscp(
  21175     int unit, 
  21176     bcm_field_entry_t entry, 
  21177     uint8 data, 
  21178     uint8 mask);
  21179 
  21180 /* 
  21181  * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDscp
  21182  *             qualifier from the field entry.
  21183  */
  21184 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDscp_get(
  21185     int unit, 
  21186     bcm_field_entry_t entry, 
  21187     uint8 *data, 
  21188     uint8 *mask);
  21189 
  21190 /* 
  21191  * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDot1p
  21192  *             qualifier in the field entry.
  21193  */
  21194 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDot1p(
  21195     int unit, 
  21196     bcm_field_entry_t entry, 
  21197     uint8 data, 
  21198     uint8 mask);
  21199 
  21200 /* 
  21201  * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDot1p
  21202  *             qualifier from the field entry.
  21203  */
  21204 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDot1p_get(
  21205     int unit, 
  21206     bcm_field_entry_t entry, 
  21207     uint8 *data, 
  21208     uint8 *mask);
  21209 
  21210 /* 
  21211  * Set match criteria for bcmFieldQualifyHiGigExtendedHeaderPresent
  21212  *             qualifier in the field entry.
  21213  */
  21214 extern int bcm_field_qualify_HiGigExtendedHeaderPresent(
  21215     int unit, 
  21216     bcm_field_entry_t entry, 
  21217     uint8 data, 
  21218     uint8 mask);
  21219 
  21220 /* 
  21221  * Get match criteria for bcmFieldQualifyHiGigExtendedHeaderPresent
  21222  *             qualifier from the field entry.
  21223  */
  21224 extern int bcm_field_qualify_HiGigExtendedHeaderPresent_get(
  21225     int unit, 
  21226     bcm_field_entry_t entry, 
  21227     uint8 *data, 
  21228     uint8 *mask);
  21229 
  21230 /* 
  21231  * Set match criteria for bcmFieldQualifyHiGigVpLagFailoverPacket
  21232  *             qualifier in the field entry.
  21233  */
  21234 extern int bcm_field_qualify_HiGigVpLagFailoverPacket(
  21235     int unit, 
  21236     bcm_field_entry_t entry, 
  21237     uint8 data, 
  21238     uint8 mask);
  21239 
  21240 /* 
  21241  * Get match criteria for bcmFieldQualifyHiGigVpLagFailoverPacket
  21242  *             qualifier from the field entry.
  21243  */
  21244 extern int bcm_field_qualify_HiGigVpLagFailoverPacket_get(
  21245     int unit, 
  21246     bcm_field_entry_t entry, 
  21247     uint8 *data, 
  21248     uint8 *mask);
  21249 
  21250 #endif /* BCM_HIDE_DISPATCHABLE */
  21251 
  21252 /* Initialize the Copy To CPU Field Config structure. */
  21253 extern void bcm_field_copytocpu_config_t_init(
  21254     bcm_field_CopyToCpu_config_t *CopyToCpu_config);
  21255 
  21256 #ifndef BCM_HIDE_DISPATCHABLE
  21257 
  21258 /* 
  21259  * Configures the copy to CPU action based on the parameters in
  21260  * Copy To CPU Field Config structure.
  21261  */
  21262 extern int bcm_field_action_copytocpu_config_set(
  21263     int unit, 
  21264     bcm_field_entry_t entry, 
  21265     bcm_field_CopyToCpu_config_t CopyToCpu_config);
  21266 
  21267 /* 
  21268  * Gets the configured copy to CPU action parameters to
  21269  * Copy To CPU Field Config structure.
  21270  */
  21271 extern int bcm_field_action_copytocpu_config_get(
  21272     int unit, 
  21273     bcm_field_entry_t entry, 
  21274     bcm_field_CopyToCpu_config_t *CopyToCpu_config);
  21275 
  21276 #endif /* BCM_HIDE_DISPATCHABLE */
  21277 
  21278 /* Initialize the Redirect Field Config structure. */
  21279 extern void bcm_field_redirect_config_t_init(
  21280     bcm_field_redirect_config_t *redirect_config);
  21281 
  21282 #ifndef BCM_HIDE_DISPATCHABLE
  21283 
  21284 /* 
  21285  * Configures the Redirect action based on the parameters in
  21286  * Redirect Field Config structure.
  21287  */
  21288 extern int bcm_field_action_redirect_config_set(
  21289     int unit, 
  21290     bcm_field_entry_t entry, 
  21291     bcm_field_redirect_config_t redirect_config);
  21292 
  21293 /* 
  21294  * Gets the configured Redirect action parameters to
  21295  * Redirect Field Config structure.
  21296  */
  21297 extern int bcm_field_action_redirect_config_get(
  21298     int unit, 
  21299     bcm_field_entry_t entry, 
  21300     bcm_field_redirect_config_t *redirect_config);
  21301 
  21302 /* 
  21303  * Set match criteria for bcmFieldQualifyTosLower4Bits
  21304  *             qualifier in the field entry.
  21305  */
  21306 extern int bcm_field_qualify_TosLower4Bits(
  21307     int unit, 
  21308     bcm_field_entry_t entry, 
  21309     uint8 data, 
  21310     uint8 mask);
  21311 
  21312 /* 
  21313  * Get match criteria for bcmFieldQualifyTosLower4Bits
  21314  *             qualifier from the field entry.
  21315  */
  21316 extern int bcm_field_qualify_TosLower4Bits_get(
  21317     int unit, 
  21318     bcm_field_entry_t entry, 
  21319     uint8 *data, 
  21320     uint8 *mask);
  21321 
  21322 /* 
  21323  * Set match criteria for bcmFieldQualifyOamEgressClass2Vxlt
  21324  *             qualifier in the field entry.
  21325  */
  21326 extern int bcm_field_qualify_OamEgressClass2Vxlt(
  21327     int unit, 
  21328     bcm_field_entry_t entry, 
  21329     uint32 data, 
  21330     uint32 mask);
  21331 
  21332 /* 
  21333  * Get match criteria for bcmFieldQualifyOamEgressClass2Vxlt
  21334  *             qualifier from the field entry.
  21335  */
  21336 extern int bcm_field_qualify_OamEgressClass2Vxlt_get(
  21337     int unit, 
  21338     bcm_field_entry_t entry, 
  21339     uint32 *data, 
  21340     uint32 *mask);
  21341 
  21342 /* 
  21343  * Set match criteria for bcmFieldQualifyOamEgressVxltFirstHit
  21344  *             qualifier in the field entry.
  21345  */
  21346 extern int bcm_field_qualify_OamEgressVxltFirstHit(
  21347     int unit, 
  21348     bcm_field_entry_t entry, 
  21349     uint8 data, 
  21350     uint8 mask);
  21351 
  21352 /* 
  21353  * Get match criteria for bcmFieldQualifyOamEgressVxltFirstHit
  21354  *             qualifier from the field entry.
  21355  */
  21356 extern int bcm_field_qualify_OamEgressVxltFirstHit_get(
  21357     int unit, 
  21358     bcm_field_entry_t entry, 
  21359     uint8 *data, 
  21360     uint8 *mask);
  21361 
  21362 /* 
  21363  * Set match criteria for bcmFieldQualifyOamEgressVxltSecondHit
  21364  *             qualifier in the field entry.
  21365  */
  21366 extern int bcm_field_qualify_OamEgressVxltSecondHit(
  21367     int unit, 
  21368     bcm_field_entry_t entry, 
  21369     uint8 data, 
  21370     uint8 mask);
  21371 
  21372 /* 
  21373  * Get match criteria for bcmFieldQualifyOamEgressVxltSecondHit
  21374  *             qualifier from the field entry.
  21375  */
  21376 extern int bcm_field_qualify_OamEgressVxltSecondHit_get(
  21377     int unit, 
  21378     bcm_field_entry_t entry, 
  21379     uint8 *data, 
  21380     uint8 *mask);
  21381 
  21382 /* 
  21383  * Set match criteria for bcmFieldQualifyOamDownMEPLoopbackPacket
  21384  *             qualifier in the field entry.
  21385  */
  21386 extern int bcm_field_qualify_OamDownMEPLoopbackPacket(
  21387     int unit, 
  21388     bcm_field_entry_t entry, 
  21389     uint8 data, 
  21390     uint8 mask);
  21391 
  21392 /* 
  21393  * Get match criteria for bcmFieldQualifyOamDownMEPLoopbackPacket
  21394  *             qualifier from the field entry.
  21395  */
  21396 extern int bcm_field_qualify_OamDownMEPLoopbackPacket_get(
  21397     int unit, 
  21398     bcm_field_entry_t entry, 
  21399     uint8 *data, 
  21400     uint8 *mask);
  21401 
  21402 /* 
  21403  * Set match criteria for bcmFieldQualifyOamEgressPortUnicastDstMacHit
  21404  *             qualifier in the field entry.
  21405  */
  21406 extern int bcm_field_qualify_OamEgressPortUnicastDstMacHit(
  21407     int unit, 
  21408     bcm_field_entry_t entry, 
  21409     uint8 data, 
  21410     uint8 mask);
  21411 
  21412 /* 
  21413  * Get match criteria for bcmFieldQualifyOamEgressPortUnicastDstMacHit
  21414  *             qualifier from the field entry.
  21415  */
  21416 extern int bcm_field_qualify_OamEgressPortUnicastDstMacHit_get(
  21417     int unit, 
  21418     bcm_field_entry_t entry, 
  21419     uint8 *data, 
  21420     uint8 *mask);
  21421 
  21422 /* 
  21423  * Set match criteria for bcmFieldQualifyIngressDropEthernetOamControl
  21424  *             qualifier in the field entry.
  21425  */
  21426 extern int bcm_field_qualify_IngressDropEthernetOamControl(
  21427     int unit, 
  21428     bcm_field_entry_t entry, 
  21429     bcm_field_oam_drop_mep_type_t mep_type);
  21430 
  21431 /* 
  21432  * Get match criteria for bcmFieldQualifyIngressDropEthernetOamControl
  21433  *             qualifier from the field entry.
  21434  */
  21435 extern int bcm_field_qualify_IngressDropEthernetOamControl_get(
  21436     int unit, 
  21437     bcm_field_entry_t entry, 
  21438     bcm_field_oam_drop_mep_type_t *mep_type);
  21439 
  21440 /* 
  21441  * Set match criteria for bcmFieldQualifyIngressDropEthernetOamData
  21442  *             qualifier in the field entry.
  21443  */
  21444 extern int bcm_field_qualify_IngressDropEthernetOamData(
  21445     int unit, 
  21446     bcm_field_entry_t entry, 
  21447     bcm_field_oam_drop_mep_type_t mep_type);
  21448 
  21449 /* 
  21450  * Get match criteria for bcmFieldQualifyIngressDropEthernetOamData
  21451  *             qualifier from the field entry.
  21452  */
  21453 extern int bcm_field_qualify_IngressDropEthernetOamData_get(
  21454     int unit, 
  21455     bcm_field_entry_t entry, 
  21456     bcm_field_oam_drop_mep_type_t *mep_type);
  21457 
  21458 /* 
  21459  * Set match criteria for bcmFieldQualifyIngressDropMplsOamControl
  21460  *             qualifier in the field entry.
  21461  */
  21462 extern int bcm_field_qualify_IngressDropMplsOamControl(
  21463     int unit, 
  21464     bcm_field_entry_t entry, 
  21465     bcm_field_oam_drop_mep_type_t mep_type);
  21466 
  21467 /* 
  21468  * Get match criteria for bcmFieldQualifyIngressDropMplsOamControl
  21469  *             qualifier from the field entry.
  21470  */
  21471 extern int bcm_field_qualify_IngressDropMplsOamControl_get(
  21472     int unit, 
  21473     bcm_field_entry_t entry, 
  21474     bcm_field_oam_drop_mep_type_t *mep_type);
  21475 
  21476 /* 
  21477  * Set match criteria for bcmFieldQualifyIngressDropMplsOamData
  21478  *             qualifier in the field entry.
  21479  */
  21480 extern int bcm_field_qualify_IngressDropMplsOamData(
  21481     int unit, 
  21482     bcm_field_entry_t entry, 
  21483     bcm_field_oam_drop_mep_type_t mep_type);
  21484 
  21485 /* 
  21486  * Get match criteria for bcmFieldQualifyIngressDropMplsOamData
  21487  *             qualifier from the field entry.
  21488  */
  21489 extern int bcm_field_qualify_IngressDropMplsOamData_get(
  21490     int unit, 
  21491     bcm_field_entry_t entry, 
  21492     bcm_field_oam_drop_mep_type_t *mep_type);
  21493 
  21494 /* 
  21495  * Set match criteria for EgressClassVxlan
  21496  *                qualifier.
  21497  */
  21498 extern int bcm_field_qualify_EgressClassVxlan(
  21499     int unit, 
  21500     bcm_field_entry_t entry, 
  21501     uint16 data, 
  21502     uint16 mask);
  21503 
  21504 /* 
  21505  * Get match criteria for EgressClassVxlan
  21506  *                qualifier.
  21507  */
  21508 extern int bcm_field_qualify_EgressClassVxlan_get(
  21509     int unit, 
  21510     bcm_field_entry_t entry, 
  21511     uint16 *data, 
  21512     uint16 *mask);
  21513 
  21514 /* 
  21515  * Set match criteria for bcmFieldQualifyOamEgressEtherType
  21516  *             qualifier in the field entry.
  21517  */
  21518 extern int bcm_field_qualify_OamEgressEtherType(
  21519     int unit, 
  21520     bcm_field_entry_t entry, 
  21521     uint16 data);
  21522 
  21523 /* 
  21524  * Get match criteria for bcmFieldQualifyOamEgressEtherType
  21525  *             qualifier from the field entry.
  21526  */
  21527 extern int bcm_field_qualify_OamEgressEtherType_get(
  21528     int unit, 
  21529     bcm_field_entry_t entry, 
  21530     uint16 *data);
  21531 
  21532 /* 
  21533  * Set match criteria for bcmFieldQualifyOamEgressMulticastMacHit
  21534  *             qualifier in the field entry.
  21535  */
  21536 extern int bcm_field_qualify_OamEgressMulticastMacHit(
  21537     int unit, 
  21538     bcm_field_entry_t entry, 
  21539     uint8 data);
  21540 
  21541 /* 
  21542  * Get match criteria for bcmFieldQualifyOamEgressMulticastMacHit
  21543  *             qualifier from the field entry.
  21544  */
  21545 extern int bcm_field_qualify_OamEgressMulticastMacHit_get(
  21546     int unit, 
  21547     bcm_field_entry_t entry, 
  21548     uint8 *data);
  21549 
  21550 /* 
  21551  * Set match criteria for bcmFieldQualifyTrunkMemberSourceModuleId
  21552  *                qualifier in the field entry.
  21553  */
  21554 extern int bcm_field_qualify_TrunkMemberSourceModuleId(
  21555     int unit, 
  21556     bcm_field_entry_t entry, 
  21557     int data, 
  21558     int mask);
  21559 
  21560 /* 
  21561  * Get match criteria for bcmFieldQualifyTrunkMemberSourceModuleId
  21562  *                qualifier from the field entry.
  21563  */
  21564 extern int bcm_field_qualify_TrunkMemberSourceModuleId_get(
  21565     int unit, 
  21566     bcm_field_entry_t entry, 
  21567     int *data, 
  21568     int *mask);
  21569 
  21570 /* 
  21571  * Set match criteria for bcmFieldQualifyOamEgressClassSrcMac
  21572  *             qualifier in the field entry.
  21573  */
  21574 extern int bcm_field_qualify_OamEgressClassSrcMac(
  21575     int unit, 
  21576     bcm_field_entry_t entry, 
  21577     uint32 data, 
  21578     uint32 mask);
  21579 
  21580 /* 
  21581  * Get match criteria for bcmFieldQualifyOamEgressClassSrcMac
  21582  *             qualifier from the field entry.
  21583  */
  21584 extern int bcm_field_qualify_OamEgressClassSrcMac_get(
  21585     int unit, 
  21586     bcm_field_entry_t entry, 
  21587     uint32 *data, 
  21588     uint32 *mask);
  21589 
  21590 /* 
  21591  * Set match criteria for bcmFieldQualifyMyStation2Hit
  21592  *             qualifier in the field entry.
  21593  */
  21594 extern int bcm_field_qualify_MyStation2Hit(
  21595     int unit, 
  21596     bcm_field_entry_t entry, 
  21597     uint8 data, 
  21598     uint8 mask);
  21599 
  21600 /* 
  21601  * Get match criteria for bcmFieldQualifyMyStation2Hit
  21602  *                qualifier from the field entry.
  21603  */
  21604 extern int bcm_field_qualify_MyStation2Hit_get(
  21605     int unit, 
  21606     bcm_field_entry_t entry, 
  21607     uint8 *data, 
  21608     uint8 *mask);
  21609 
  21610 /* 
  21611  * Set match criteria for bcmFieldQualifyPreemptablePacket qualifier in
  21612  * the field entry.
  21613  */
  21614 extern int bcm_field_qualify_PreemptablePacket(
  21615     int unit, 
  21616     bcm_field_entry_t entry, 
  21617     uint8 data, 
  21618     uint8 mask);
  21619 
  21620 /* 
  21621  * Get match criteria for bcmFieldQualifyPreemptablePacket qualifier in
  21622  * the field entry.
  21623  */
  21624 extern int bcm_field_qualify_PreemptablePacket_get(
  21625     int unit, 
  21626     bcm_field_entry_t entry, 
  21627     uint8 *data, 
  21628     uint8 *mask);
  21629 
  21630 /* 
  21631  * Set match criteria for bcmFieldQualifyVxlanClassValid
  21632  *             qualifier in the field entry.
  21633  */
  21634 extern int bcm_field_qualify_VxlanClassValid(
  21635     int unit, 
  21636     bcm_field_entry_t entry, 
  21637     uint8 data, 
  21638     uint8 mask);
  21639 
  21640 /* 
  21641  * Get match criteria for bcmFieldQualifyVxlanClassValid
  21642  *             qualifier from the field entry.
  21643  */
  21644 extern int bcm_field_qualify_VxlanClassValid_get(
  21645     int unit, 
  21646     bcm_field_entry_t entry, 
  21647     uint8 *data, 
  21648     uint8 *mask);
  21649 
  21650 /* 
  21651  * Set match criteria for bcmFieldQualifyVxlanPacket
  21652  *             qualifier in the field entry.
  21653  */
  21654 extern int bcm_field_qualify_VxlanPacket(
  21655     int unit, 
  21656     bcm_field_entry_t entry, 
  21657     uint8 data, 
  21658     uint8 mask);
  21659 
  21660 /* 
  21661  * Get match criteria for bcmFieldQualifyVxlanPacket
  21662  *             qualifier from the field entry.
  21663  */
  21664 extern int bcm_field_qualify_VxlanPacket_get(
  21665     int unit, 
  21666     bcm_field_entry_t entry, 
  21667     uint8 *data, 
  21668     uint8 *mask);
  21669 
  21670 /* 
  21671  * Set match criteria for bcmFieldQualifyVxlanVnidVlanTranslateHit
  21672  *             qualifier in the field entry.
  21673  */
  21674 extern int bcm_field_qualify_VxlanVnidVlanTranslateHit(
  21675     int unit, 
  21676     bcm_field_entry_t entry, 
  21677     uint8 data, 
  21678     uint8 mask);
  21679 
  21680 /* 
  21681  * Get match criteria for bcmFieldQualifyVxlanVnidVlanTranslateHit
  21682  *             qualifier from the field entry.
  21683  */
  21684 extern int bcm_field_qualify_VxlanVnidVlanTranslateHit_get(
  21685     int unit, 
  21686     bcm_field_entry_t entry, 
  21687     uint8 *data, 
  21688     uint8 *mask);
  21689 
  21690 /* 
  21691  * Set match criteria for bcmFieldQualifyVxlanPayloadVlanFormat
  21692  *             qualifier in the field entry.
  21693  */
  21694 extern int bcm_field_qualify_VxlanPayloadVlanFormat(
  21695     int unit, 
  21696     bcm_field_entry_t entry, 
  21697     uint8 data, 
  21698     uint8 mask);
  21699 
  21700 /* 
  21701  * Get match criteria for bcmFieldQualifyVxlanPayloadVlanFormat
  21702  *             qualifier from the field entry.
  21703  */
  21704 extern int bcm_field_qualify_VxlanPayloadVlanFormat_get(
  21705     int unit, 
  21706     bcm_field_entry_t entry, 
  21707     uint8 *data, 
  21708     uint8 *mask);
  21709 
  21710 /* 
  21711  * Set match criteria for bcmFieldQualifyTunnelPayloadDstMac
  21712  *                qualifier in the field entry.
  21713  */
  21714 extern int bcm_field_qualify_TunnelPayloadDstMac(
  21715     int unit, 
  21716     bcm_field_entry_t entry, 
  21717     bcm_mac_t data, 
  21718     bcm_mac_t mask);
  21719 
  21720 /* 
  21721  * Get match criteria for bcmFieldQualifyTunnelPayloadDstMac
  21722  *                qualifier from the field entry.
  21723  */
  21724 extern int bcm_field_qualify_TunnelPayloadDstMac_get(
  21725     int unit, 
  21726     bcm_field_entry_t entry, 
  21727     bcm_mac_t *data, 
  21728     bcm_mac_t *mask);
  21729 
  21730 /* 
  21731  * Set match criteria for bcmFieldQualifyTunnelPayloadSrcMac
  21732  *                qualifier in the field entry.
  21733  */
  21734 extern int bcm_field_qualify_TunnelPayloadSrcMac(
  21735     int unit, 
  21736     bcm_field_entry_t entry, 
  21737     bcm_mac_t data, 
  21738     bcm_mac_t mask);
  21739 
  21740 /* 
  21741  * Get match criteria for bcmFieldQualifyTunnelPayloadSrcMac
  21742  *                qualifier from the field entry.
  21743  */
  21744 extern int bcm_field_qualify_TunnelPayloadSrcMac_get(
  21745     int unit, 
  21746     bcm_field_entry_t entry, 
  21747     bcm_mac_t *data, 
  21748     bcm_mac_t *mask);
  21749 
  21750 /* 
  21751  * Set match criteria for EgressClassTunnel
  21752  *                qualifier.
  21753  */
  21754 extern int bcm_field_qualify_EgressClassTunnel(
  21755     int unit, 
  21756     bcm_field_entry_t entry, 
  21757     uint16 data, 
  21758     uint16 mask);
  21759 
  21760 /* 
  21761  * Get match criteria for EgressClassTunnel
  21762  *                qualifier.
  21763  */
  21764 extern int bcm_field_qualify_EgressClassTunnel_get(
  21765     int unit, 
  21766     bcm_field_entry_t entry, 
  21767     uint16 *data, 
  21768     uint16 *mask);
  21769 
  21770 /* 
  21771  * Set match criteria for EgressClassL3InterfaceTunnel
  21772  *                qualifier.
  21773  */
  21774 extern int bcm_field_qualify_EgressClassL3InterfaceTunnel(
  21775     int unit, 
  21776     bcm_field_entry_t entry, 
  21777     uint16 data, 
  21778     uint16 mask);
  21779 
  21780 /* 
  21781  * Get match criteria for EgressClassL3InterfaceTunnel
  21782  *                qualifier.
  21783  */
  21784 extern int bcm_field_qualify_EgressClassL3InterfaceTunnel_get(
  21785     int unit, 
  21786     bcm_field_entry_t entry, 
  21787     uint16 *data, 
  21788     uint16 *mask);
  21789 
  21790 /* Add VLAN actions to a field entry. */
  21791 extern int bcm_field_action_vlan_actions_add(
  21792     int unit, 
  21793     bcm_field_entry_t entry, 
  21794     bcm_field_action_t action, 
  21795     bcm_vlan_action_set_t *vlan_action_set);
  21796 
  21797 /* Retrieve VLAN actions configured to a field entry. */
  21798 extern int bcm_field_action_vlan_actions_get(
  21799     int unit, 
  21800     bcm_field_entry_t entry, 
  21801     bcm_field_action_t action, 
  21802     bcm_vlan_action_set_t *vlan_action_set);
  21803 
  21804 /* 
  21805  * Set match criteria for bcmFieldQualifyTunnelPayloadEtherType
  21806  *             qualifier in the field entry.
  21807  */
  21808 extern int bcm_field_qualify_TunnelPayloadEtherType(
  21809     int unit, 
  21810     bcm_field_entry_t entry, 
  21811     uint16 data, 
  21812     uint16 mask);
  21813 
  21814 /* 
  21815  * Get match criteria for bcmFieldQualifyTunnelPayloadEtherType
  21816  *             qualifier from the field entry.
  21817  */
  21818 extern int bcm_field_qualify_TunnelPayloadEtherType_get(
  21819     int unit, 
  21820     bcm_field_entry_t entry, 
  21821     uint16 *data, 
  21822     uint16 *mask);
  21823 
  21824 /* 
  21825  * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlan
  21826  *                  qualifier in the field entry.
  21827  */
  21828 extern int bcm_field_qualify_TunnelPayloadOuterVlan(
  21829     int unit, 
  21830     bcm_field_entry_t entry, 
  21831     bcm_vlan_t data, 
  21832     bcm_vlan_t mask);
  21833 
  21834 /* 
  21835  * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlan
  21836  *                qualifier from the field entry.
  21837  */
  21838 extern int bcm_field_qualify_TunnelPayloadOuterVlan_get(
  21839     int unit, 
  21840     bcm_field_entry_t entry, 
  21841     bcm_vlan_t *data, 
  21842     bcm_vlan_t *mask);
  21843 
  21844 /* 
  21845  * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanId
  21846  *                  qualifier in the field entry.
  21847  */
  21848 extern int bcm_field_qualify_TunnelPayloadOuterVlanId(
  21849     int unit, 
  21850     bcm_field_entry_t entry, 
  21851     bcm_vlan_t data, 
  21852     bcm_vlan_t mask);
  21853 
  21854 /* 
  21855  * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanId
  21856  *                  qualifier from the field entry.
  21857  */
  21858 extern int bcm_field_qualify_TunnelPayloadOuterVlanId_get(
  21859     int unit, 
  21860     bcm_field_entry_t entry, 
  21861     bcm_vlan_t *data, 
  21862     bcm_vlan_t *mask);
  21863 
  21864 /* 
  21865  * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanPri
  21866  *                  qualifier in the field entry.
  21867  */
  21868 extern int bcm_field_qualify_TunnelPayloadOuterVlanPri(
  21869     int unit, 
  21870     bcm_field_entry_t entry, 
  21871     uint8 data, 
  21872     uint8 mask);
  21873 
  21874 /* 
  21875  * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanPri
  21876  *                  qualifier from the field entry.
  21877  */
  21878 extern int bcm_field_qualify_TunnelPayloadOuterVlanPri_get(
  21879     int unit, 
  21880     bcm_field_entry_t entry, 
  21881     uint8 *data, 
  21882     uint8 *mask);
  21883 
  21884 /* 
  21885  * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanCfi
  21886  *                  qualifier in the field entry.
  21887  */
  21888 extern int bcm_field_qualify_TunnelPayloadOuterVlanCfi(
  21889     int unit, 
  21890     bcm_field_entry_t entry, 
  21891     uint8 data, 
  21892     uint8 mask);
  21893 
  21894 /* 
  21895  * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanCfi
  21896  *                  qualifier from the field entry.
  21897  */
  21898 extern int bcm_field_qualify_TunnelPayloadOuterVlanCfi_get(
  21899     int unit, 
  21900     bcm_field_entry_t entry, 
  21901     uint8 *data, 
  21902     uint8 *mask);
  21903 
  21904 /* 
  21905  * Set match criteria for bcmFieldQualifyTunnelPayloadSip
  21906  *                  qualifier in the field entry.
  21907  */
  21908 extern int bcm_field_qualify_TunnelPayloadSip(
  21909     int unit, 
  21910     bcm_field_entry_t entry, 
  21911     bcm_ip_t data, 
  21912     bcm_ip_t mask);
  21913 
  21914 /* 
  21915  * Set match criteria for bcmFieldQualifyTunnelPayloadDip
  21916  *                  qualifier in the field entry.
  21917  */
  21918 extern int bcm_field_qualify_TunnelPayloadDip(
  21919     int unit, 
  21920     bcm_field_entry_t entry, 
  21921     bcm_ip_t data, 
  21922     bcm_ip_t mask);
  21923 
  21924 /* 
  21925  * Get match criteria for bcmFieldQualifyTunnelPayloadSip
  21926  *                qualifier from the field entry.
  21927  */
  21928 extern int bcm_field_qualify_TunnelPayloadSip_get(
  21929     int unit, 
  21930     bcm_field_entry_t entry, 
  21931     bcm_ip_t *data, 
  21932     bcm_ip_t *mask);
  21933 
  21934 /* 
  21935  * Get match criteria for bcmFieldQualifyTunnelPayloadDip
  21936  *                qualifier from the field entry.
  21937  */
  21938 extern int bcm_field_qualify_TunnelPayloadDip_get(
  21939     int unit, 
  21940     bcm_field_entry_t entry, 
  21941     bcm_ip_t *data, 
  21942     bcm_ip_t *mask);
  21943 
  21944 /* 
  21945  * Set match criteria for bcmFieldQualifyTunnelPayloadSip6
  21946  *                  qualifier in the field entry.
  21947  */
  21948 extern int bcm_field_qualify_TunnelPayloadSip6(
  21949     int unit, 
  21950     bcm_field_entry_t entry, 
  21951     bcm_ip6_t data, 
  21952     bcm_ip6_t mask);
  21953 
  21954 /* 
  21955  * Set match criteria for bcmFieldQualifyTunnelPayloadDip6
  21956  *                  qualifier in the field entry.
  21957  */
  21958 extern int bcm_field_qualify_TunnelPayloadDip6(
  21959     int unit, 
  21960     bcm_field_entry_t entry, 
  21961     bcm_ip6_t data, 
  21962     bcm_ip6_t mask);
  21963 
  21964 /* 
  21965  * Get match criteria for bcmFieldQualifyTunnelPayloadSip6
  21966  *                qualifier from the field entry.
  21967  */
  21968 extern int bcm_field_qualify_TunnelPayloadSip6_get(
  21969     int unit, 
  21970     bcm_field_entry_t entry, 
  21971     bcm_ip6_t *data, 
  21972     bcm_ip6_t *mask);
  21973 
  21974 /* 
  21975  * Get match criteria for bcmFieldQualifyTunnelPayloadDip6
  21976  *                qualifier from the field entry.
  21977  */
  21978 extern int bcm_field_qualify_TunnelPayloadDip6_get(
  21979     int unit, 
  21980     bcm_field_entry_t entry, 
  21981     bcm_ip6_t *data, 
  21982     bcm_ip6_t *mask);
  21983 
  21984 /* 
  21985  * Set match criteria for bcmFieldQualifyTunnelPayloadIpProtocol
  21986  *                  qualifier in the field entry.
  21987  */
  21988 extern int bcm_field_qualify_TunnelPayloadIpProtocol(
  21989     int unit, 
  21990     bcm_field_entry_t entry, 
  21991     uint8 data, 
  21992     uint8 mask);
  21993 
  21994 /* 
  21995  * Get match criteria for bcmFieldQualifyTunnelPayloadIpProtocol
  21996  *                  qualifier from the field entry.
  21997  */
  21998 extern int bcm_field_qualify_TunnelPayloadIpProtocol_get(
  21999     int unit, 
  22000     bcm_field_entry_t entry, 
  22001     uint8 *data, 
  22002     uint8 *mask);
  22003 
  22004 /* 
  22005  * Get match criteria for bcmFieldQualifyTunnelPayloadL4SrcPort
  22006  *                qualifier in the field entry.
  22007  */
  22008 extern int bcm_field_qualify_TunnelPayloadL4SrcPort(
  22009     int unit, 
  22010     bcm_field_entry_t entry, 
  22011     bcm_l4_port_t data, 
  22012     bcm_l4_port_t mask);
  22013 
  22014 /* 
  22015  * Get match criteria for bcmFieldQualifyTunnelPayloadL4DstPort
  22016  *                qualifier in the field entry.
  22017  */
  22018 extern int bcm_field_qualify_TunnelPayloadL4DstPort(
  22019     int unit, 
  22020     bcm_field_entry_t entry, 
  22021     bcm_l4_port_t data, 
  22022     bcm_l4_port_t mask);
  22023 
  22024 /* 
  22025  * Get match criteria for bcmFieldQualifyTunnelPayloadL4SrcPort
  22026  *                qualifier from the field entry.
  22027  */
  22028 extern int bcm_field_qualify_TunnelPayloadL4SrcPort_get(
  22029     int unit, 
  22030     bcm_field_entry_t entry, 
  22031     bcm_l4_port_t *data, 
  22032     bcm_l4_port_t *mask);
  22033 
  22034 /* 
  22035  * Get match criteria for bcmFieldQualifyTunnelPayloadL4DstPort
  22036  *                qualifier from the field entry.
  22037  */
  22038 extern int bcm_field_qualify_TunnelPayloadL4DstPort_get(
  22039     int unit, 
  22040     bcm_field_entry_t entry, 
  22041     bcm_l4_port_t *data, 
  22042     bcm_l4_port_t *mask);
  22043 
  22044 /* Assign a class_id for given Source MAC Address of SAT packet */
  22045 extern int bcm_field_sat_macsa_add(
  22046     int unit, 
  22047     bcm_mac_t mac, 
  22048     uint32 class_id);
  22049 
  22050 /* Get class_id for given Source MAC Address of SAT packet */
  22051 extern int bcm_field_sat_macsa_get(
  22052     int unit, 
  22053     bcm_mac_t mac, 
  22054     uint32 *class_id);
  22055 
  22056 /* 
  22057  * Delete the class_id associated with given Source MAC Address of SAT
  22058  * packet.
  22059  */
  22060 extern int bcm_field_sat_macsa_delete(
  22061     int unit, 
  22062     bcm_mac_t mac);
  22063 
  22064 /* Delete all Source MAC Address entries of SAT packets. */
  22065 extern int bcm_field_sat_macsa_delete_all(
  22066     int unit);
  22067 
  22068 /* Map a presel id to a name */
  22069 extern int bcm_field_presel_config_set(
  22070     int unit, 
  22071     bcm_field_presel_t presel_id, 
  22072     bcm_field_presel_config_t *presel_config);
  22073 
  22074 /* Get name from presel id */
  22075 extern int bcm_field_presel_config_get(
  22076     int unit, 
  22077     bcm_field_presel_t presel_id, 
  22078     bcm_field_presel_config_t *presel_config);
  22079 
  22080 /* 
  22081  * Set match criteria for bcmFieldQualifyRoceBthOpcode qualifier in the
  22082  * field entry
  22083  */
  22084 extern int bcm_field_qualify_RoceBthOpcode(
  22085     int unit, 
  22086     bcm_field_entry_t entry, 
  22087     uint8 data, 
  22088     uint8 mask);
  22089 
  22090 /* 
  22091  * Get match criteria for bcmFieldQualifyRoceBthOpcode qualifier in the
  22092  * field entry
  22093  */
  22094 extern int bcm_field_qualify_RoceBthOpcode_get(
  22095     int unit, 
  22096     bcm_field_entry_t entry, 
  22097     uint8 *data, 
  22098     uint8 *mask);
  22099 
  22100 /* 
  22101  * Set match criteria for bcmFieldQualifyRoceBthPartitionKey qualifier in
  22102  * the field entry
  22103  */
  22104 extern int bcm_field_qualify_RoceBthPartitionKey(
  22105     int unit, 
  22106     bcm_field_entry_t entry, 
  22107     uint16 data, 
  22108     uint16 mask);
  22109 
  22110 /* 
  22111  * Get match criteria for bcmFieldQualifyRoceBthPartitionKey qualifier in
  22112  * the field entry
  22113  */
  22114 extern int bcm_field_qualify_RoceBthPartitionKey_get(
  22115     int unit, 
  22116     bcm_field_entry_t entry, 
  22117     uint16 *data, 
  22118     uint16 *mask);
  22119 
  22120 /* 
  22121  * Set match criteria for bcmFieldQualifyRoceBthDstQueuePair qualifier in
  22122  * the field entry
  22123  */
  22124 extern int bcm_field_qualify_RoceBthDstQueuePair(
  22125     int unit, 
  22126     bcm_field_entry_t entry, 
  22127     uint32 data, 
  22128     uint32 mask);
  22129 
  22130 /* 
  22131  * Get match criteria for bcmFieldQualifyRoceBthDstQueuePair qualifier in
  22132  * the field entry
  22133  */
  22134 extern int bcm_field_qualify_RoceBthDstQueuePair_get(
  22135     int unit, 
  22136     bcm_field_entry_t entry, 
  22137     uint32 *data, 
  22138     uint32 *mask);
  22139 
  22140 /* 
  22141  * Set match criteria for bcmFieldQualifyRoceBthFlags qualifier in the
  22142  * field entry
  22143  */
  22144 extern int bcm_field_qualify_RoceBthFlags(
  22145     int unit, 
  22146     bcm_field_entry_t entry, 
  22147     uint8 data, 
  22148     uint8 mask);
  22149 
  22150 /* 
  22151  * Get match criteria for bcmFieldQualifyRoceBthFlags qualifier in the
  22152  * field entry
  22153  */
  22154 extern int bcm_field_qualify_RoceBthFlags_get(
  22155     int unit, 
  22156     bcm_field_entry_t entry, 
  22157     uint8 *data, 
  22158     uint8 *mask);
  22159 
  22160 /* 
  22161  * Set match criteria for bcmFieldQualifyRoceVer1Pkt qualifier in the
  22162  * field entry
  22163  */
  22164 extern int bcm_field_qualify_RoceVer1Pkt(
  22165     int unit, 
  22166     bcm_field_entry_t entry, 
  22167     uint8 data, 
  22168     uint8 mask);
  22169 
  22170 /* 
  22171  * Get match criteria for bcmFieldQualifyRoceVer1Pkt qualifier in the
  22172  * field entry
  22173  */
  22174 extern int bcm_field_qualify_RoceVer1Pkt_get(
  22175     int unit, 
  22176     bcm_field_entry_t entry, 
  22177     uint8 *data, 
  22178     uint8 *mask);
  22179 
  22180 /* 
  22181  * Set match criteria for bcmFieldQualifyRoceVer2Pkt qualifier in the
  22182  * field entry
  22183  */
  22184 extern int bcm_field_qualify_RoceVer2Pkt(
  22185     int unit, 
  22186     bcm_field_entry_t entry, 
  22187     uint8 data, 
  22188     uint8 mask);
  22189 
  22190 /* 
  22191  * Get match criteria for bcmFieldQualifyRoceVer2Pkt qualifier in the
  22192  * field entry
  22193  */
  22194 extern int bcm_field_qualify_RoceVer2Pkt_get(
  22195     int unit, 
  22196     bcm_field_entry_t entry, 
  22197     uint8 *data, 
  22198     uint8 *mask);
  22199 
  22200 #endif /* BCM_HIDE_DISPATCHABLE */
  22201 
  22202 /* Initialize Field Presel Config structure */
  22203 extern void bcm_field_presel_config_t_init(
  22204     bcm_field_presel_config_t *presel_config);
  22205 
  22206 #ifndef BCM_HIDE_DISPATCHABLE
  22207 
  22208 /* 
  22209  * This API Qualify on forwarding TTL. may be selected on tunnel basis to
  22210  * be taken from the tunnel layer or forwarding layer.
  22211  */
  22212 extern int bcm_field_qualify_GeneratedTtl(
  22213     int unit, 
  22214     bcm_field_entry_t entry, 
  22215     uint32 data, 
  22216     uint32 mask);
  22217 
  22218 /* 
  22219  * This API Qualify on forwarding TTL. may be selected on tunnel basis to
  22220  * be taken from the tunnel layer or forwarding layer.
  22221  */
  22222 extern int bcm_field_qualify_GeneratedTtl_get(
  22223     int unit, 
  22224     bcm_field_entry_t entry, 
  22225     uint32 *data, 
  22226     uint32 *mask);
  22227 
  22228 /* Set match criteria for bcmFieldQualifyIpMulticastCompatible */
  22229 extern int bcm_field_qualify_IpMulticastCompatible(
  22230     int unit, 
  22231     bcm_field_entry_t entry, 
  22232     uint32 data, 
  22233     uint32 mask);
  22234 
  22235 /* Set match criteria for bcmFieldQualifyIpMulticastCompatible_get */
  22236 extern int bcm_field_qualify_IpMulticastCompatible_get(
  22237     int unit, 
  22238     bcm_field_entry_t entry, 
  22239     uint32 *data, 
  22240     uint32 *mask);
  22241 
  22242 #endif /* BCM_HIDE_DISPATCHABLE */
  22243 
  22244 /* SR (Seamless Redundancy) port type */
  22245 typedef enum bcm_field_port_sr_type_e {
  22246     bcmFieldPortSRTypeNone = 0,     /* SR not supported on this port */
  22247     bcmFieldPortSRTypeEthernet = 1, /* Ethernet */
  22248     bcmFieldPortSRTypePrp = 2,      /* PRP */
  22249     bcmFieldPortSRTypeHsr = 3,      /* HSR */
  22250     bcmFieldPortSRTypeDot1cb = 4,   /* 802.1CB */
  22251     bcmFieldPortSRTypeCount = 5     /* Always last. Not a usable value. */
  22252 } bcm_field_port_sr_type_t;
  22253 
  22254 /* SR (Seamless Redundancy) port mode */
  22255 typedef enum bcm_field_sr_port_mode_e {
  22256     bcmFieldSRPortModeDefault = 0,      /* Default mode (custom value 0) */
  22257     bcmFieldSRPortModeInterworkingPrp = 1, /* It's a PRP port in an interworking
  22258                                            box */
  22259     bcmFieldSRPortModeCustom1 = 2,      /* Custom value 1 */
  22260     bcmFieldSRPortModeCustom2 = 3,      /* Custom value 2 */
  22261     bcmFieldSRPortModeCustom3 = 4,      /* Custom value 3 */
  22262     bcmFieldSRPortModeCustom4 = 5,      /* Custom value 4 */
  22263     bcmFieldSRPortModeCustom5 = 6,      /* Custom value 5 */
  22264     bcmFieldSRPortModeCustom6 = 7,      /* Custom value 6 */
  22265     bcmFieldSRPortModeCount = 8         /* Always last. Not a usable value. */
  22266 } bcm_field_sr_port_mode_t;
  22267 
  22268 /* SR (Seamless Redundancy) tag type */
  22269 typedef enum bcm_field_sr_tag_type_e {
  22270     bcmFieldSRTagTypeNone = 0,      /* No SR tag present in the packet */
  22271     bcmFieldSRTagTypeHsr = 1,       /* HSR */
  22272     bcmFieldSRTagTypePrp = 2,       /* PRP */
  22273     bcmFieldSRTagTypeDot1cb = 3,    /* IEEE 802.1CB */
  22274     bcmFieldSRTagTypeCount = 4      /* Always last. Not a usable value. */
  22275 } bcm_field_sr_tag_type_t;
  22276 
  22277 /* SR (Seamless Redundancy) node type */
  22278 typedef enum bcm_field_sr_node_type_e {
  22279     bcmFieldSRNodeTypeDan = 0,          /* DAN node */
  22280     bcmFieldSRNodeTypeLinkLocal = 1,    /* Link local MAC address */
  22281     bcmFieldSRNodeTypeSan = 2,          /* SAN node */
  22282     bcmFieldSRNodeTypeSupervision = 3,  /* PRP/HSR/802.1CB Supervision MAC
  22283                                            address */
  22284     bcmFieldSRNodeTypeCount = 4         /* Always last. Not a usable value. */
  22285 } bcm_field_sr_node_type_t;
  22286 
  22287 /* SR (Seamless Redundancy) supervision type */
  22288 typedef enum bcm_field_sr_supervision_type_e {
  22289     bcmFieldSRSupervisionTypeNone = 0,  /* Not an SR Supervision Packet */
  22290     bcmFieldSRSupervisionTypePrp = 1,   /* PRP Supervision Packet */
  22291     bcmFieldSRSupervisionTypeHsr = 2,   /* HSR Supervision Packet */
  22292     bcmFieldSRSupervisionTypeDot1cb = 3, /* 802.1CB Supervision Packet */
  22293     bcmFieldSRSupervisionTypeCount = 4  /* Always last. Not an usable value. */
  22294 } bcm_field_sr_supervision_type_t;
  22295 
  22296 /* Used for IEEE1588Encapsulation value */
  22297 typedef enum bcm_field_IEEE1588Encap_e {
  22298     bcmFieldIEEE1588EncapUdp = 0,   /* UDP Encapsulation for IEEE-1588 */
  22299     bcmFieldIEEE1588EncapEth = 1    /* ETH Encapsulation for IEEE-1588 */
  22300 } bcm_field_IEEE1588Encap_t;
  22301 
  22302 /* Parameter for bcmFieldQualifySRError */
  22303 #define BCM_FIELD_SR_ERROR_UNEXPECTED_PKT   (1 << 0)   /* Unexpected SR tag
  22304                                                           present */
  22305 #define BCM_FIELD_SR_ERROR_TAG_ERROR        (1 << 1)   /* Invalid SR tag format */
  22306 #define BCM_FIELD_SR_ERROR_RX_ERROR         (1 << 2)   /* Invalid SR flow or
  22307                                                           dropped due to errors */
  22308 
  22309 /* Parameter for bcmFieldActionSRNetIdSource */
  22310 #define BCM_FIELD_SR_NET_ID_SOURCE_FORCE_ZERO 0          /* Force NET ID to be 0
  22311                                                           (default) */
  22312 #define BCM_FIELD_SR_NET_ID_SOURCE_SRC_PORT 1          /* From source port NET
  22313                                                           ID configuration */
  22314 #define BCM_FIELD_SR_NET_ID_SOURCE_DST_PORT 2          /* From destination port
  22315                                                           NET ID configuration */
  22316 #define BCM_FIELD_SR_NET_ID_SOURCE_PACKET   3          /* From SR tag of the
  22317                                                           packet */
  22318 
  22319 /* Parameter for bcmFieldActionSRCopyToCpu */
  22320 #define BCM_FIELD_SR_COPYTOCPU_ANY          0          /* Copy to CPU regardless
  22321                                                           of SR status */
  22322 #define BCM_FIELD_SR_COPYTOCPU_NON_DUPLICATE 1          /* Copy to CPU only if
  22323                                                           it's a non-duplicate
  22324                                                           packet */
  22325 
  22326 /* Parameters for bcmFieldActionSRTagAdd and bcmFieldActionSRTagDelete */
  22327 #define BCM_FIELD_SR_TAG_TYPE_RESERVED  0          /* Reserved */
  22328 #define BCM_FIELD_SR_TAG_TYPE_HSR       1          /* HSR */
  22329 #define BCM_FIELD_SR_TAG_TYPE_PRP       2          /* PRP */
  22330 #define BCM_FIELD_SR_TAG_TYPE_DOT1CB    3          /* 802.1CB */
  22331 
  22332 #ifndef BCM_HIDE_DISPATCHABLE
  22333 
  22334 /* Set match criteria for bcmFieldQualifySrcPortSRType */
  22335 extern int bcm_field_qualify_SrcPortSRType(
  22336     int unit, 
  22337     bcm_field_entry_t entry, 
  22338     bcm_field_port_sr_type_t type);
  22339 
  22340 /* Get match criteria for bcmFieldQualifySrcPortSRType */
  22341 extern int bcm_field_qualify_SrcPortSRType_get(
  22342     int unit, 
  22343     bcm_field_entry_t entry, 
  22344     bcm_field_port_sr_type_t *type);
  22345 
  22346 /* Set match criteria for bcmFieldQualifyDstPortSRType */
  22347 extern int bcm_field_qualify_DstPortSRType(
  22348     int unit, 
  22349     bcm_field_entry_t entry, 
  22350     bcm_field_port_sr_type_t type);
  22351 
  22352 /* Get match criteria for bcmFieldQualifyDstPortSRType */
  22353 extern int bcm_field_qualify_DstPortSRType_get(
  22354     int unit, 
  22355     bcm_field_entry_t entry, 
  22356     bcm_field_port_sr_type_t *type);
  22357 
  22358 /* Set match criteria for bcmFieldQualifySrcPortSRRoleInterlink */
  22359 extern int bcm_field_qualify_SrcPortSRRoleInterlink(
  22360     int unit, 
  22361     bcm_field_entry_t entry, 
  22362     uint8 data);
  22363 
  22364 /* Get match criteria for bcmFieldQualifySrcPortSRRoleInterlink */
  22365 extern int bcm_field_qualify_SrcPortSRRoleInterlink_get(
  22366     int unit, 
  22367     bcm_field_entry_t entry, 
  22368     uint8 *data);
  22369 
  22370 /* Set match criteria for bcmFieldQualifyDstPortSRRoleInterlink */
  22371 extern int bcm_field_qualify_DstPortSRRoleInterlink(
  22372     int unit, 
  22373     bcm_field_entry_t entry, 
  22374     uint8 data);
  22375 
  22376 /* Get match criteria for bcmFieldQualifyDstPortSRRoleInterlink */
  22377 extern int bcm_field_qualify_DstPortSRRoleInterlink_get(
  22378     int unit, 
  22379     bcm_field_entry_t entry, 
  22380     uint8 *data);
  22381 
  22382 /* Set match criteria for bcmFieldQualifySrcPortSRMode */
  22383 extern int bcm_field_qualify_SrcPortSRMode(
  22384     int unit, 
  22385     bcm_field_entry_t entry, 
  22386     bcm_field_sr_port_mode_t type, 
  22387     uint8 mask);
  22388 
  22389 /* Get match criteria for bcmFieldQualifySrcPortSRMode */
  22390 extern int bcm_field_qualify_SrcPortSRMode_get(
  22391     int unit, 
  22392     bcm_field_entry_t entry, 
  22393     bcm_field_sr_port_mode_t *type, 
  22394     uint8 *mask);
  22395 
  22396 /* Set match criteria for bcmFieldQualifyDstPortSRMode */
  22397 extern int bcm_field_qualify_DstPortSRMode(
  22398     int unit, 
  22399     bcm_field_entry_t entry, 
  22400     bcm_field_sr_port_mode_t type, 
  22401     uint8 mask);
  22402 
  22403 /* Get match criteria for bcmFieldQualifyDstPortSRMode */
  22404 extern int bcm_field_qualify_DstPortSRMode_get(
  22405     int unit, 
  22406     bcm_field_entry_t entry, 
  22407     bcm_field_sr_port_mode_t *type, 
  22408     uint8 *mask);
  22409 
  22410 /* Set match criteria for bcmFieldQualifySrcPortSRNetId */
  22411 extern int bcm_field_qualify_SrcPortSRNetId(
  22412     int unit, 
  22413     bcm_field_entry_t entry, 
  22414     uint8 net_id, 
  22415     uint8 mask);
  22416 
  22417 /* Get match criteria for bcmFieldQualifySrcPortSRNetId */
  22418 extern int bcm_field_qualify_SrcPortSRNetId_get(
  22419     int unit, 
  22420     bcm_field_entry_t entry, 
  22421     uint8 *net_id, 
  22422     uint8 *mask);
  22423 
  22424 /* Set match criteria for bcmFieldQualifyDstPortSRNetId */
  22425 extern int bcm_field_qualify_DstPortSRNetId(
  22426     int unit, 
  22427     bcm_field_entry_t entry, 
  22428     uint8 net_id, 
  22429     uint8 mask);
  22430 
  22431 /* Get match criteria for bcmFieldQualifyDstPortSRNetId */
  22432 extern int bcm_field_qualify_DstPortSRNetId_get(
  22433     int unit, 
  22434     bcm_field_entry_t entry, 
  22435     uint8 *net_id, 
  22436     uint8 *mask);
  22437 
  22438 /* Set match criteria for bcmFieldQualifySrcPortSRLanId */
  22439 extern int bcm_field_qualify_SrcPortSRLanId(
  22440     int unit, 
  22441     bcm_field_entry_t entry, 
  22442     uint8 lan_id);
  22443 
  22444 /* Get match criteria for bcmFieldQualifySrcPortSRLanId */
  22445 extern int bcm_field_qualify_SrcPortSRLanId_get(
  22446     int unit, 
  22447     bcm_field_entry_t entry, 
  22448     uint8 *lan_id);
  22449 
  22450 /* Set match criteria for bcmFieldQualifyDstPortSRLanId */
  22451 extern int bcm_field_qualify_DstPortSRLanId(
  22452     int unit, 
  22453     bcm_field_entry_t entry, 
  22454     uint8 lan_id);
  22455 
  22456 /* Get match criteria for bcmFieldQualifyDstPortSRLanId */
  22457 extern int bcm_field_qualify_DstPortSRLanId_get(
  22458     int unit, 
  22459     bcm_field_entry_t entry, 
  22460     uint8 *lan_id);
  22461 
  22462 /* Set match criteria for bcmFieldQualifySRTagType */
  22463 extern int bcm_field_qualify_SRTagType(
  22464     int unit, 
  22465     bcm_field_entry_t entry, 
  22466     bcm_field_sr_tag_type_t type);
  22467 
  22468 /* Get match criteria for bcmFieldQualifySRTagType */
  22469 extern int bcm_field_qualify_SRTagType_get(
  22470     int unit, 
  22471     bcm_field_entry_t entry, 
  22472     bcm_field_sr_tag_type_t *type);
  22473 
  22474 /* Set match criteria for bcmFieldQualifySRLanId */
  22475 extern int bcm_field_qualify_SRLanId(
  22476     int unit, 
  22477     bcm_field_entry_t entry, 
  22478     int lan_id);
  22479 
  22480 /* Get match criteria for bcmFieldQualifySRLanId */
  22481 extern int bcm_field_qualify_SRLanId_get(
  22482     int unit, 
  22483     bcm_field_entry_t entry, 
  22484     int *lan_id);
  22485 
  22486 /* Set match criteria for bcmFieldQualifySRNetId */
  22487 extern int bcm_field_qualify_SRNetId(
  22488     int unit, 
  22489     bcm_field_entry_t entry, 
  22490     int net_id);
  22491 
  22492 /* Get match criteria for bcmFieldQualifySRNetId */
  22493 extern int bcm_field_qualify_SRNetId_get(
  22494     int unit, 
  22495     bcm_field_entry_t entry, 
  22496     int *net_id);
  22497 
  22498 /* Set match criteria for bcmFieldQualifyVlanSREnable */
  22499 extern int bcm_field_qualify_VlanSREnable(
  22500     int unit, 
  22501     bcm_field_entry_t entry, 
  22502     uint8 data);
  22503 
  22504 /* Get match criteria for bcmFieldQualifyVlanSREnable */
  22505 extern int bcm_field_qualify_VlanSREnable_get(
  22506     int unit, 
  22507     bcm_field_entry_t entry, 
  22508     uint8 *data);
  22509 
  22510 /* Set match criteria for bcmFieldQualifyVlanSRLanId */
  22511 extern int bcm_field_qualify_VlanSRLanId(
  22512     int unit, 
  22513     bcm_field_entry_t entry, 
  22514     uint8 lan_id);
  22515 
  22516 /* Get match criteria for bcmFieldQualifyVlanSRLanId */
  22517 extern int bcm_field_qualify_VlanSRLanId_get(
  22518     int unit, 
  22519     bcm_field_entry_t entry, 
  22520     uint8 *lan_id);
  22521 
  22522 /* Set match criteria for bcmFieldQualifySRFlowId */
  22523 extern int bcm_field_qualify_SRFlowId(
  22524     int unit, 
  22525     bcm_field_entry_t entry, 
  22526     uint32 data, 
  22527     uint32 mask);
  22528 
  22529 /* Get match criteria for bcmFieldQualifySRFlowId */
  22530 extern int bcm_field_qualify_SRFlowId_get(
  22531     int unit, 
  22532     bcm_field_entry_t entry, 
  22533     uint32 *data, 
  22534     uint32 *mask);
  22535 
  22536 /* Set match criteria for bcmFieldQualifyL2DestSRNodeType */
  22537 extern int bcm_field_qualify_L2DestSRNodeType(
  22538     int unit, 
  22539     bcm_field_entry_t entry, 
  22540     bcm_field_sr_node_type_t type);
  22541 
  22542 /* Get match criteria for bcmFieldQualifyL2DestSRNodeType */
  22543 extern int bcm_field_qualify_L2DestSRNodeType_get(
  22544     int unit, 
  22545     bcm_field_entry_t entry, 
  22546     bcm_field_sr_node_type_t *type);
  22547 
  22548 /* Set match criteria for bcmFieldQualifySRNetIdMatched */
  22549 extern int bcm_field_qualify_SRNetIdMatched(
  22550     int unit, 
  22551     bcm_field_entry_t entry, 
  22552     uint8 data);
  22553 
  22554 /* Get match criteria for bcmFieldQualifySRNetIdMatched */
  22555 extern int bcm_field_qualify_SRNetIdMatched_get(
  22556     int unit, 
  22557     bcm_field_entry_t entry, 
  22558     uint8 *data);
  22559 
  22560 /* Set match criteria for bcmFieldQualifySRSrcNodeIsSan */
  22561 extern int bcm_field_qualify_SRSrcNodeIsSan(
  22562     int unit, 
  22563     bcm_field_entry_t entry, 
  22564     uint8 data);
  22565 
  22566 /* Get match criteria for bcmFieldQualifySRSrcNodeIsSan */
  22567 extern int bcm_field_qualify_SRSrcNodeIsSan_get(
  22568     int unit, 
  22569     bcm_field_entry_t entry, 
  22570     uint8 *data);
  22571 
  22572 /* Set match criteria for bcmFieldQualifySRSupervisionType */
  22573 extern int bcm_field_qualify_SRSupervisionType(
  22574     int unit, 
  22575     bcm_field_entry_t entry, 
  22576     bcm_field_sr_supervision_type_t type);
  22577 
  22578 /* Get match criteria for bcmFieldQualifySRSupervisionType */
  22579 extern int bcm_field_qualify_SRSupervisionType_get(
  22580     int unit, 
  22581     bcm_field_entry_t entry, 
  22582     bcm_field_sr_supervision_type_t *type);
  22583 
  22584 /* Set match criteria for bcmFieldQualifySRError */
  22585 extern int bcm_field_qualify_SRError(
  22586     int unit, 
  22587     bcm_field_entry_t entry, 
  22588     uint32 data, 
  22589     uint32 mask);
  22590 
  22591 /* Get match criteria for bcmFieldQualifySRError */
  22592 extern int bcm_field_qualify_SRError_get(
  22593     int unit, 
  22594     bcm_field_entry_t entry, 
  22595     uint32 *data, 
  22596     uint32 *mask);
  22597 
  22598 /* Set match criteria for bcmFieldQualifyL2SrcMulticastHit */
  22599 extern int bcm_field_qualify_L2SrcMulticastHit(
  22600     int unit, 
  22601     bcm_field_entry_t entry, 
  22602     uint8 data, 
  22603     uint8 mask);
  22604 
  22605 /* Get match criteria for bcmFieldQualifyL2SrcMulticastHit */
  22606 extern int bcm_field_qualify_L2SrcMulticastHit_get(
  22607     int unit, 
  22608     bcm_field_entry_t entry, 
  22609     uint8 *data, 
  22610     uint8 *mask);
  22611 
  22612 /* Set match criteria for bcmFieldQualifyL2DstMulticastHit */
  22613 extern int bcm_field_qualify_L2DstMulticastHit(
  22614     int unit, 
  22615     bcm_field_entry_t entry, 
  22616     uint8 data, 
  22617     uint8 mask);
  22618 
  22619 /* Get match criteria for bcmFieldQualifyL2DstMulticastHit */
  22620 extern int bcm_field_qualify_L2DstMulticastHit_get(
  22621     int unit, 
  22622     bcm_field_entry_t entry, 
  22623     uint8 *data, 
  22624     uint8 *mask);
  22625 
  22626 /* Set match criteria for bcmFieldQualifySRDuplicate */
  22627 extern int bcm_field_qualify_SRDuplicate(
  22628     int unit, 
  22629     bcm_field_entry_t entry, 
  22630     uint8 data);
  22631 
  22632 /* Get match criteria for bcmFieldQualifySRDuplicate */
  22633 extern int bcm_field_qualify_SRDuplicate_get(
  22634     int unit, 
  22635     bcm_field_entry_t entry, 
  22636     uint8 *data);
  22637 
  22638 /* Set match criteria for bcmFieldQualifyTsnFlowId */
  22639 extern int bcm_field_qualify_TsnFlowId(
  22640     int unit, 
  22641     bcm_field_entry_t entry, 
  22642     uint32 data, 
  22643     uint32 mask);
  22644 
  22645 extern int bcm_field_qualify_TsnFlowId_get(
  22646     int unit, 
  22647     bcm_field_entry_t entry, 
  22648     uint32 *data, 
  22649     uint32 *mask);
  22650 
  22651 /* Set match criteria for bcmFieldQualifyStaggeredValue0 */
  22652 extern int bcm_field_qualify_StaggeredValue0(
  22653     int unit, 
  22654     bcm_field_entry_t entry, 
  22655     uint32 data, 
  22656     uint32 mask);
  22657 
  22658 /* Set match criteria for bcmFieldQualifyStaggeredValue0_get */
  22659 extern int bcm_field_qualify_StaggeredValue0_get(
  22660     int unit, 
  22661     bcm_field_entry_t entry, 
  22662     uint32 *data, 
  22663     uint32 *mask);
  22664 
  22665 /* Set match criteria for bcmFieldQualifyStaggeredValue1 */
  22666 extern int bcm_field_qualify_StaggeredValue1(
  22667     int unit, 
  22668     bcm_field_entry_t entry, 
  22669     uint32 data, 
  22670     uint32 mask);
  22671 
  22672 /* Set match criteria for bcmFieldQualifyStaggeredValue1_get */
  22673 extern int bcm_field_qualify_StaggeredValue1_get(
  22674     int unit, 
  22675     bcm_field_entry_t entry, 
  22676     uint32 *data, 
  22677     uint32 *mask);
  22678 
  22679 /* Set match criteria for bcmFieldQualifyStaggeredValue2 */
  22680 extern int bcm_field_qualify_StaggeredValue2(
  22681     int unit, 
  22682     bcm_field_entry_t entry, 
  22683     uint32 data, 
  22684     uint32 mask);
  22685 
  22686 /* Set match criteria for bcmFieldQualifyStaggeredValue2_get */
  22687 extern int bcm_field_qualify_StaggeredValue2_get(
  22688     int unit, 
  22689     bcm_field_entry_t entry, 
  22690     uint32 *data, 
  22691     uint32 *mask);
  22692 
  22693 /* Set match criteria for bcmFieldQualifyStaggeredValue3 */
  22694 extern int bcm_field_qualify_StaggeredValue3(
  22695     int unit, 
  22696     bcm_field_entry_t entry, 
  22697     uint32 data, 
  22698     uint32 mask);
  22699 
  22700 /* Set match criteria for bcmFieldQualifyStaggeredValue3_get */
  22701 extern int bcm_field_qualify_StaggeredValue3_get(
  22702     int unit, 
  22703     bcm_field_entry_t entry, 
  22704     uint32 *data, 
  22705     uint32 *mask);
  22706 
  22707 /* Set match criteria for bcmFieldQualifyStaggeredDirectValue */
  22708 extern int bcm_field_qualify_StaggeredDirectValue(
  22709     int unit, 
  22710     bcm_field_entry_t entry, 
  22711     uint32 data, 
  22712     uint32 mask);
  22713 
  22714 /* Set match criteria for bcmFieldQualifyStaggeredDirectValue_get */
  22715 extern int bcm_field_qualify_StaggeredDirectValue_get(
  22716     int unit, 
  22717     bcm_field_entry_t entry, 
  22718     uint32 *data, 
  22719     uint32 *mask);
  22720 
  22721 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile0 */
  22722 extern int bcm_field_qualify_StaggeredPreselProfile0(
  22723     int unit, 
  22724     bcm_field_entry_t entry, 
  22725     uint32 data, 
  22726     uint32 mask);
  22727 
  22728 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile0_get */
  22729 extern int bcm_field_qualify_StaggeredPreselProfile0_get(
  22730     int unit, 
  22731     bcm_field_entry_t entry, 
  22732     uint32 *data, 
  22733     uint32 *mask);
  22734 
  22735 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile1 */
  22736 extern int bcm_field_qualify_StaggeredPreselProfile1(
  22737     int unit, 
  22738     bcm_field_entry_t entry, 
  22739     uint32 data, 
  22740     uint32 mask);
  22741 
  22742 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile1_get */
  22743 extern int bcm_field_qualify_StaggeredPreselProfile1_get(
  22744     int unit, 
  22745     bcm_field_entry_t entry, 
  22746     uint32 *data, 
  22747     uint32 *mask);
  22748 
  22749 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile2 */
  22750 extern int bcm_field_qualify_StaggeredPreselProfile2(
  22751     int unit, 
  22752     bcm_field_entry_t entry, 
  22753     uint32 data, 
  22754     uint32 mask);
  22755 
  22756 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile2_get */
  22757 extern int bcm_field_qualify_StaggeredPreselProfile2_get(
  22758     int unit, 
  22759     bcm_field_entry_t entry, 
  22760     uint32 *data, 
  22761     uint32 *mask);
  22762 
  22763 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile3 */
  22764 extern int bcm_field_qualify_StaggeredPreselProfile3(
  22765     int unit, 
  22766     bcm_field_entry_t entry, 
  22767     uint32 data, 
  22768     uint32 mask);
  22769 
  22770 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile3_get */
  22771 extern int bcm_field_qualify_StaggeredPreselProfile3_get(
  22772     int unit, 
  22773     bcm_field_entry_t entry, 
  22774     uint32 *data, 
  22775     uint32 *mask);
  22776 
  22777 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfileDirect */
  22778 extern int bcm_field_qualify_StaggeredPreselProfileDirect(
  22779     int unit, 
  22780     bcm_field_entry_t entry, 
  22781     uint32 data, 
  22782     uint32 mask);
  22783 
  22784 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfileDirect_get */
  22785 extern int bcm_field_qualify_StaggeredPreselProfileDirect_get(
  22786     int unit, 
  22787     bcm_field_entry_t entry, 
  22788     uint32 *data, 
  22789     uint32 *mask);
  22790 
  22791 /* Add ports to the specified group */
  22792 extern int bcm_field_group_ports_add(
  22793     int unit, 
  22794     bcm_field_group_t group, 
  22795     bcm_pbmp_t pbmp);
  22796 
  22797 /* Remove ports from the specified group */
  22798 extern int bcm_field_group_ports_remove(
  22799     int unit, 
  22800     bcm_field_group_t group, 
  22801     bcm_pbmp_t pbmp);
  22802 
  22803 /* Retrieve the bitmap of ports associated with a given field group. */
  22804 extern int bcm_field_group_ports_get(
  22805     int unit, 
  22806     bcm_field_group_t group, 
  22807     bcm_pbmp_t *pbmp);
  22808 
  22809 /* To verify whether a group can be created with a given qset and mode. */
  22810 extern int bcm_field_group_config_validate(
  22811     int unit, 
  22812     bcm_field_group_config_t *group_config, 
  22813     bcm_field_group_mode_t *mode);
  22814 
  22815 /* 
  22816  * To map a given set of TTL/ToS/TCP values of the packet to another set
  22817  * of TTL/ToS/TCP values respectively.
  22818  */
  22819 extern int bcm_field_class_map_set(
  22820     int unit, 
  22821     bcm_field_stage_t stage, 
  22822     bcm_field_qualify_t qual, 
  22823     uint32 num_entries, 
  22824     uint32 *orig_values_array, 
  22825     uint32 *map_values_array);
  22826 
  22827 /* 
  22828  * To get the set of mapped TTL/ToS/TCP values of the packet for a given
  22829  * set of TTL/ToS/TCP values respectively.
  22830  */
  22831 extern int bcm_field_class_map_get(
  22832     int unit, 
  22833     bcm_field_stage_t stage, 
  22834     bcm_field_qualify_t qual, 
  22835     uint32 num_entries, 
  22836     uint32 *orig_values_array, 
  22837     uint32 *map_values_array);
  22838 
  22839 /* Set match criteria for bcmFieldQualifyPreselId */
  22840 extern int bcm_field_qualify_PreselId(
  22841     int unit, 
  22842     bcm_field_entry_t entry, 
  22843     uint32 data, 
  22844     uint32 mask);
  22845 
  22846 /* Set match criteria for bcmFieldQualifyPreselId_get */
  22847 extern int bcm_field_qualify_PreselId_get(
  22848     int unit, 
  22849     bcm_field_entry_t entry, 
  22850     uint32 *data, 
  22851     uint32 *mask);
  22852 
  22853 /* Set match criteria for bcmFieldQualifyMirrorDest. */
  22854 extern int bcm_field_qualify_MirrorDest(
  22855     int unit, 
  22856     bcm_field_entry_t entry, 
  22857     bcm_gport_t mirror_gport);
  22858 
  22859 /* Get match criteria for bcmFieldQualifyMirrorDest. */
  22860 extern int bcm_field_qualify_MirrorDest_get(
  22861     int unit, 
  22862     bcm_field_entry_t entry, 
  22863     bcm_gport_t *mirror_gport);
  22864 
  22865 /* Set match criteria for bcm_field_qualify_PacketIsIEEE1588. */
  22866 extern int bcm_field_qualify_PacketIsIEEE1588(
  22867     int unit, 
  22868     bcm_field_entry_t entry, 
  22869     uint8 data, 
  22870     uint8 mask);
  22871 
  22872 /* Get match criteria for bcm_field_qualify_PacketIsIEEE1588_get. */
  22873 extern int bcm_field_qualify_PacketIsIEEE1588_get(
  22874     int unit, 
  22875     bcm_field_entry_t entry, 
  22876     uint8 *data, 
  22877     uint8 *mask);
  22878 
  22879 /* Set match criteria for field_qualify_IEEE1588Encapsulation. */
  22880 extern int bcm_field_qualify_IEEE1588Encapsulation(
  22881     int unit, 
  22882     bcm_field_entry_t entry, 
  22883     bcm_field_IEEE1588Encap_t encap);
  22884 
  22885 /* Get match criteria for field_qualify_IEEE1588Encapsulation_get. */
  22886 extern int bcm_field_qualify_IEEE1588Encapsulation_get(
  22887     int unit, 
  22888     bcm_field_entry_t entry, 
  22889     bcm_field_IEEE1588Encap_t *encap);
  22890 
  22891 /* Set match criteria for field_qualify_IEEE1588CompensateTimeStamp. */
  22892 extern int bcm_field_qualify_IEEE1588CompensateTimeStamp(
  22893     int unit, 
  22894     bcm_field_entry_t entry, 
  22895     uint8 data, 
  22896     uint8 mask);
  22897 
  22898 /* Get match criteria for field_qualify_IEEE1588CompensateTimeStamp_get. */
  22899 extern int bcm_field_qualify_IEEE1588CompensateTimeStamp_get(
  22900     int unit, 
  22901     bcm_field_entry_t entry, 
  22902     uint8 *data, 
  22903     uint8 *mask);
  22904 
  22905 /* Set match criteria for field_qualify_IEEE1588Command. */
  22906 extern int bcm_field_qualify_IEEE1588Command(
  22907     int unit, 
  22908     bcm_field_entry_t entry, 
  22909     uint8 data, 
  22910     uint8 mask);
  22911 
  22912 /* Get match criteria for field_qualify_IEEE1588Command_get. */
  22913 extern int bcm_field_qualify_IEEE1588Command_get(
  22914     int unit, 
  22915     bcm_field_entry_t entry, 
  22916     uint8 *data, 
  22917     uint8 *mask);
  22918 
  22919 /* Set match criteria for bcm_field_qualify_IEEE1588HeaderOffset. */
  22920 extern int bcm_field_qualify_IEEE1588HeaderOffset(
  22921     int unit, 
  22922     bcm_field_entry_t entry, 
  22923     uint32 data, 
  22924     uint32 mask);
  22925 
  22926 /* Get match criteria for field_qualify_IEEE1588HeaderOffset_get. */
  22927 extern int bcm_field_qualify_IEEE1588HeaderOffset_get(
  22928     int unit, 
  22929     bcm_field_entry_t entry, 
  22930     uint32 *data, 
  22931     uint32 *mask);
  22932 
  22933 #endif /* BCM_HIDE_DISPATCHABLE */
  22934 
  22935 /* 
  22936  * Field Qualifier System Header types (for
  22937  * bcm_field_qualify_SysHdrType).
  22938  */
  22939 typedef enum bcm_field_sys_hdr_type_e {
  22940     bcmFieldSysHdrNone = 0,             /* No System Header in the packet. */
  22941     bcmFieldSysHdrSubPort = 1,          /* Subport type System Header. */
  22942     bcmFieldSysHdrLoopbackNot = 2,      /* Not a system header of any Loopback
  22943                                            type. */
  22944     bcmFieldSysHdrLoopbackAny = 3,      /* Loopback system header
  22945                                            (GenericLoopback or CPU Masquerade). */
  22946     bcmFieldSysHdrLoopbackGeneric = 4,  /* System header of Generic Loopback. */
  22947     bcmFieldSysHdrLoopbackCpuMasquerade = 5, /* System header of Loopback CPU
  22948                                            Masquerade. */
  22949     bcmFieldSysHdrHiGigNot = 6,         /* Not a System header of any HiGig
  22950                                            type. */
  22951     bcmFieldSysHdrHiGigAny = 7,         /* System header of any HiGig type. */
  22952     bcmFieldSysHdrHiGigTypePpd0 = 8,    /* HiGig with PPD0. */
  22953     bcmFieldSysHdrHiGigTypePpd2 = 9,    /* HiGig with PPD2. */
  22954     bcmFieldSysHdrHiGigTypePpd0EhType0 = 10, /* HiGig with PPD0 Extension Header Type
  22955                                            0. */
  22956     bcmFieldSysHdrHiGigTypePpd0EhType1 = 11, /* HiGig with PPD0 Extension Header Type
  22957                                            1. */
  22958     bcmFieldSysHdrHiGigTypePpd0EhType2 = 12, /* HiGig with PPD0 Extension Header Type
  22959                                            2. */
  22960     bcmFieldSysHdrHiGigTypePpd2EhType0 = 13, /* HiGig with PPD2 Extension Header Type
  22961                                            0. */
  22962     bcmFieldSysHdrHiGigTypePpd2EhType1 = 14, /* HiGig with PPD2 Extension Header Type
  22963                                            1. */
  22964     bcmFieldSysHdrHiGigTypePpd2EhType2 = 15, /* HiGig with PPD2 Extension Header Type
  22965                                            2. */
  22966     bcmFieldSysHdrHiGigTypeUnknownPpd = 16, /* HiGig with unknown PPD. */
  22967     bcmFieldSysHdrHiGigTypeUnknownPpdWithEh = 17, /* HiGig with unknown PPD Extension
  22968                                            header. */
  22969     bcmFieldSysHdrHiGigTypePpd1 = 18,   /* HiGig with PPD1. */
  22970     bcmFieldSysHdrHiGigTypePpd1WithEh = 19, /* HiGig with PPD1 Extension Header. */
  22971     bcmFieldSysHdrTxTimestamp = 20,     /* Requires BROADCOM_PREMIUM license */
  22972     bcmFieldSysHdrLoopbackRedirected = 21, /* Loopback redirected system header */
  22973     bcmFieldSysHdrRecircle = 22,        /* Egress Pipeline NPL internal header */
  22974     bcmFieldSysHdrLastCount = 23        /* Always Last. Not a usable value. */
  22975 } bcm_field_sys_hdr_type_t;
  22976 
  22977 #define BCM_FIELD_SYS_HDR_TYPE_STRINGS \
  22978 { \
  22979     "None", \
  22980     "SubPort", \
  22981     "LoopbackNot", \
  22982     "LoopbackAny", \
  22983     "LoopbackGeneric", \
  22984     "LoopbackCpuMasquerade", \
  22985     "HiGigNot", \
  22986     "HiGigAny", \
  22987     "HiGigTypePpd0", \
  22988     "HiGigTypePpd2", \
  22989     "HiGigTypePpd0EhType0", \
  22990     "HiGigTypePpd0EhType1", \
  22991     "HiGigTypePpd0EhType2", \
  22992     "HiGigTypePpd2EhType0", \
  22993     "HiGigTypePpd2EhType1", \
  22994     "HiGigTypePpd2EhType2", \
  22995     "HiGigTypeUnknownPpd", \
  22996     "HiGigTypeUnknownPpdWithEh", \
  22997     "HiGigTypePpd1", \
  22998     "HiGigTypePpd1WithEh", \
  22999     "TxTimestamp", \
  23000     "LoopbackRedirected", \
  23001     "Recircle"  \
  23002 }
  23003 
  23004 #ifndef BCM_HIDE_DISPATCHABLE
  23005 
  23006 /* 
  23007  * API to add system header type to a field entry for field
  23008  * qualification.
  23009  */
  23010 extern int bcm_field_qualify_SysHdrType(
  23011     int unit, 
  23012     bcm_field_entry_t entry, 
  23013     bcm_field_sys_hdr_type_t type);
  23014 
  23015 /* API to retrieve system header type associated to a given field entry. */
  23016 extern int bcm_field_qualify_SysHdrType_get(
  23017     int unit, 
  23018     bcm_field_entry_t entry, 
  23019     bcm_field_sys_hdr_type_t *type);
  23020 
  23021 /* 
  23022  * API to add Subport Tag present status to a given field entry for
  23023  * qualification.
  23024  */
  23025 extern int bcm_field_qualify_SubportTagPresent(
  23026     int unit, 
  23027     bcm_field_entry_t entry, 
  23028     uint8 data, 
  23029     uint8 mask);
  23030 
  23031 #endif /* BCM_HIDE_DISPATCHABLE */
  23032 
  23033 /* Parameters for bcmFieldActionMplsLookupEnable */
  23034 #define BCM_FIELD_MPLS_ENABLE   1          /* Enabling MPLS support */
  23035 #define BCM_FIELD_MPLS_DISABLE  2          /* Disabling MPLS support */
  23036 
  23037 /* Parameters for bcmFieldActionTerminationAllowed */
  23038 #define BCM_FIELD_MPLS_TERM_ALLOWED         (1 << 0)   /* Enabling MPLS tunnel
  23039                                                           termination */
  23040 #define BCM_FIELD_IPV4_TERM_ALLOWED         (1 << 1)   /* Enabling L3 Ipv4
  23041                                                           termination */
  23042 #define BCM_FIELD_IPV6_TERM_ALLOWED         (1 << 2)   /* Enabling L3 Ipv6
  23043                                                           termination */
  23044 #define BCM_FIELD_IPV4_MCAST_TERM_ALLOWED   (1 << 3)   /* Enabling L3 Ipv4
  23045                                                           multicast termination */
  23046 #define BCM_FIELD_IPV6_MCAST_TERM_ALLOWED   (1 << 4)   /* Enabling L3 Ipv6
  23047                                                           multicast termination */
  23048 #define BCM_FIELD_ARP_RARP_TERM_ALLOWED     (1 << 5)   /* Enabling arp/rarp
  23049                                                           termination */
  23050 #define BCM_FIELD_L3_TNL_TERM_ALLOWED       (1 << 6)   /* Enabling L3 tunnel
  23051                                                           termination */
  23052 
  23053 #ifndef BCM_HIDE_DISPATCHABLE
  23054 
  23055 /* 
  23056  * Configure match criteria for bcmFieldQualifyIpTunnelTtlClassZero
  23057  *             qualifier from the field entry.
  23058  */
  23059 extern int bcm_field_qualify_IpTunnelTtlClassZero(
  23060     int unit, 
  23061     bcm_field_entry_t entry, 
  23062     bcm_class_t data, 
  23063     bcm_class_t mask);
  23064 
  23065 /* 
  23066  * API to retrieve Subport tag present status associated to a given field
  23067  * entry.
  23068  */
  23069 extern int bcm_field_qualify_SubportTagPresent_get(
  23070     int unit, 
  23071     bcm_field_entry_t entry, 
  23072     uint8 *data, 
  23073     uint8 *mask);
  23074 
  23075 #endif /* BCM_HIDE_DISPATCHABLE */
  23076 
  23077 /* bcm_field_network_tag_type_e */
  23078 typedef enum bcm_field_network_tag_type_e {
  23079     bcmFieldNetworkTagVnTag = 0,    /* Network tag type VNTAG. */
  23080     bcmFieldNetworkTagEtag = 1,     /* Network tag type ETAG. */
  23081     bcmFieldNetworkTagLastCount = 2 /* Always Last. Not a usable value. */
  23082 } bcm_field_network_tag_type_t;
  23083 
  23084 #define BCM_FIELD_NETWORK_TAG_TYPE \
  23085 { \
  23086     "VnTag", \
  23087     "Etag"  \
  23088 }
  23089 
  23090 #ifndef BCM_HIDE_DISPATCHABLE
  23091 
  23092 /* 
  23093  * API to add network tag type to a field entry for the field
  23094  * qualification.
  23095  */
  23096 extern int bcm_field_qualify_NetworkTagType(
  23097     int unit, 
  23098     bcm_field_entry_t entry, 
  23099     bcm_field_network_tag_type_t type);
  23100 
  23101 /* API to retrieve network tag type associated to a given field entry. */
  23102 extern int bcm_field_qualify_NetworkTagType_get(
  23103     int unit, 
  23104     bcm_field_entry_t entry, 
  23105     bcm_field_network_tag_type_t *type);
  23106 
  23107 /* 
  23108  * API to add congestion Tag present status to a field entry for
  23109  * qualification.
  23110  */
  23111 extern int bcm_field_qualify_CnTagPresent(
  23112     int unit, 
  23113     bcm_field_entry_t entry, 
  23114     uint8 data, 
  23115     uint8 mask);
  23116 
  23117 /* 
  23118  * API to retrieve congestion tag present status associated to a given
  23119  * field entry.
  23120  */
  23121 extern int bcm_field_qualify_CnTagPresent_get(
  23122     int unit, 
  23123     bcm_field_entry_t entry, 
  23124     uint8 *data, 
  23125     uint8 *mask);
  23126 
  23127 #endif /* BCM_HIDE_DISPATCHABLE */
  23128 
  23129 /* bcm_field_l2_pkt_type_e */
  23130 typedef enum bcm_field_l2_pkt_type_e {
  23131     bcmFieldL2PktTypeEthernet = 0,  /* Ethernet L2 packet type. */
  23132     bcmFieldL2PktTypeSnap = 1,      /* SNAP L2 packet type. */
  23133     bcmFieldL2PktTypeLLC = 2,       /* LLC L2 packet type. */
  23134     bcmFieldL2PktTypeSnapOrLLC = 3, /* SNAP or LLC L2 packet type. */
  23135     bcmFieldL2PktTypeAny = 4,       /* Any L2 packet type. */
  23136     bcmFieldL2PktTypeHG3Base = 5,   /* HG3 Base L2 packet type */
  23137     bcmFieldL2PktTypeHG3Ext0 = 6,   /* HG3 Ext0 L2 packet type */
  23138     bcmFieldL2PktTypeSvtag = 7,     /* SVTAG L2 packet type */
  23139     bcmFieldL2PktTypeLastCount = 8  /* Always Last. Not a usable value. */
  23140 } bcm_field_l2_pkt_type_t;
  23141 
  23142 #define BCM_FIELD_L2_PKT_TYPE \
  23143 { \
  23144     "Ethernet", \
  23145     "Snap", \
  23146     "LLC", \
  23147     "SnapOrLLC", \
  23148     "Any", \
  23149     "HG3Base", \
  23150     "HG3Ext0", \
  23151     "Svtag"  \
  23152 }
  23153 
  23154 #ifndef BCM_HIDE_DISPATCHABLE
  23155 
  23156 /* API to add L2 Packet type to a field entry for qualification. */
  23157 extern int bcm_field_qualify_L2PktType(
  23158     int unit, 
  23159     bcm_field_entry_t entry, 
  23160     bcm_field_l2_pkt_type_t type);
  23161 
  23162 /* API to retrieve L2 Packet type associated to a field entry. */
  23163 extern int bcm_field_qualify_L2PktType_get(
  23164     int unit, 
  23165     bcm_field_entry_t entry, 
  23166     bcm_field_l2_pkt_type_t *type);
  23167 
  23168 #endif /* BCM_HIDE_DISPATCHABLE */
  23169 
  23170 /* bcm_field_pkt_type_e */
  23171 typedef enum bcm_field_pkt_type_e {
  23172     bcmFieldPktTypeMplsNot = 0,         /* Non-MPLS Packet type */
  23173     bcmFieldPktTypeMplsAny = 1,         /* Any MPLS Packet type */
  23174     bcmFieldPktTypeMplsOneLabel = 2,    /* MPLS with one label Packet type */
  23175     bcmFieldPktTypeMplsTwoLabel = 3,    /* MPLS with two labels Packet type */
  23176     bcmFieldPktTypeMplsThreeLabel = 4,  /* MPLS with three labels Packet type */
  23177     bcmFieldPktTypeMplsFourLabel = 5,   /* MPLS with four labels Packet type */
  23178     bcmFieldPktTypeMplsFiveLabel = 6,   /* MPLS with five labels Packet type */
  23179     bcmFieldPktTypeMplsSixLabel = 7,    /* MPLS with six labels Packet type */
  23180     bcmFieldPktTypeMplsSevenLabel = 8,  /* MPLS with seven labels Packet type */
  23181     bcmFieldPktTypeMplsMoreThanSevenLabel = 9, /* MPLS with more than seven labels
  23182                                            Packet type */
  23183     bcmFieldPktTypeFCoENot = 10,        /* Non-FCoE Packet type */
  23184     bcmFieldPktTypeFCoEAny = 11,        /* Any FCoE Packet type */
  23185     bcmFieldPktTypeFCoEVft = 12,        /* FCoE VFT Packet type */
  23186     bcmFieldPktTypeFCoEEncap = 13,      /* FCoE ENCAP Packet type */
  23187     bcmFieldPktTypeFCoEIfr = 14,        /* FCoE IFR Packet type */
  23188     bcmFieldPktTypeFCoEStd = 15,        /* FCoE STD Packet type */
  23189     bcmFieldPktTypeFCoEVftStd = 16,     /* FCoE VFT-STD Packet type */
  23190     bcmFieldPktTypeFCoEEncapStd = 17,   /* FCoE ENCAP-STD Packet type */
  23191     bcmFieldPktTypeFCoEIfrStd = 18,     /* FCoE IFR-STD Packet type */
  23192     bcmFieldPktTypeFCoEFip = 19,        /* FCoE FIP Packet type */
  23193     bcmFieldPktType1588 = 20,           /* 1588 Packet Type */
  23194     bcmFieldPktTypeArp = 21,            /* ARP Packet Type */
  23195     bcmFieldPktTypeRarp = 22,           /* RARP Packet Type */
  23196     bcmFieldPktTypeUnknownEtherType = 23, /* Packet with Unknown EtherType */
  23197     bcmFieldPktTypeMim = 24,            /* MiM Packet type */
  23198     bcmFieldPktTypeOam = 25,            /* OAM Packet Type */
  23199     bcmFieldPktTypeCnm = 26,            /* CNM (congestion notification message)
  23200                                            Packet Type */
  23201     bcmFieldPktTypeNshOverL2 = 27,      /* NSH Over L2 Packet Type */
  23202     bcmFieldPktTypeNshOverMplsOneLabel = 28, /* NSH Over MPLS with one label Packet
  23203                                            type */
  23204     bcmFieldPktTypeNshOverMplsTwoLabel = 29, /* NSH Over MPLS with two label Packet
  23205                                            type */
  23206     bcmFieldPktTypeIp4Not = 30,         /* Non-IPv4 Packet type */
  23207     bcmFieldPktTypeIp4Any = 31,         /* Any IPv4 Packet Type */
  23208     bcmFieldPktTypeIp4Nsh = 32,         /* NSH Over IPv4 Packet Type */
  23209     bcmFieldPktTypeIp4GpeNsh = 33,      /* GPE-NSH Over IPv4 Packet Type */
  23210     bcmFieldPktTypeIp4Gre = 34,         /* GRE over IPv4 Packet Type */
  23211     bcmFieldPktTypeIp4Bfd = 35,         /* BFD Over IPv4 Packet Type */
  23212     bcmFieldPktTypeIp4Vxlan = 36,       /* VXLAN Over IPv4 Packet Type */
  23213     bcmFieldPktTypeIp4Gpe = 37,         /* GPE Over IPv4 Packet Type */
  23214     bcmFieldPktTypeIp4GeneveNsh = 38,   /* GENEVE-NSH Over IPv4 Packet Type */
  23215     bcmFieldPktTypeIp41588Udp = 39,     /* 1588 UDP Packet over IPv4 */
  23216     bcmFieldPktTypeIp4VxlanFlex = 40,   /* VXLAN-Flex Over IPv4 Packet */
  23217     bcmFieldPktTypeIp4IPinIP = 41,      /* IPv4 IP-in-IP Packet */
  23218     bcmFieldPktTypeIp4IPinGre = 42,     /* IP GRE Ipv4 Packet */
  23219     bcmFieldPktTypeIp4Nvgre = 43,       /* NVGRE IPv4 Packet */
  23220     bcmFieldPktTypeIp4Geneve = 44,      /* IPv4-GENEVE Packet */
  23221     bcmFieldPktTypeIp4Gue = 45,         /* IPv4-GUE Packet */
  23222     bcmFieldPktTypeIp4Tcp = 46,         /* IPv4-TCP Packet */
  23223     bcmFieldPktTypeIp4Udp = 47,         /* IPv4-UDF Packet */
  23224     bcmFieldPktTypeIp4Icmp = 48,        /* IPv4-ICMP Packet */
  23225     bcmFieldPktTypeIp4Igmp = 49,        /* IPv4-IGMP Packet */
  23226     bcmFieldPktTypeIp4IpWithExtra4Bytes = 50, /* IPv4 with Extra four bytes Packet */
  23227     bcmFieldPktTypeIp4Sctp = 51,        /* IPv4 SCTP Packet */
  23228     bcmFieldPktTypeIp4MplsInIpAny = 52, /* Any MPLS in IPv4 Packet */
  23229     bcmFieldPktTypeIp4MplsInIpWithOneLabel = 53, /* MPLS with one label in IPv4 Packet */
  23230     bcmFieldPktTypeIp4MplsInIpWithTwoLabel = 54, /* MPLS with two label in IPv4 Packet */
  23231     bcmFieldPktTypeIp4MplsInIpWithThreeLabel = 55, /* MPLS with three label in IPv4 Packet */
  23232     bcmFieldPktTypeIp4MplsInIpWithFourLabel = 56, /* MPLS with four label in IPv4 Packet */
  23233     bcmFieldPktTypeIp4MplsInIpWithAnyCw = 57, /* Any MPLS with CW label in IPv4 Packet */
  23234     bcmFieldPktTypeIp4MplsInIpWithOneLabelAndCw = 58, /* MPLS with one label CW in IPv4 Packet */
  23235     bcmFieldPktTypeIp4MplsInIpWithTwoLabelAndCw = 59, /* MPLS with two label CW in IPv4 Packet */
  23236     bcmFieldPktTypeIp4MplsInIpWithThreeLabelAndCw = 60, /* MPLS with three label CW in IPv4
  23237                                            Packet */
  23238     bcmFieldPktTypeIp4MplsInIpWithFourLabelAndCw = 61, /* MPLS with four label CW in IPv4
  23239                                            Packet */
  23240     bcmFieldPktTypeIp6Not = 62,         /* Non-IPv6 Packet */
  23241     bcmFieldPktTypeIp6Any = 63,         /* Any IPv6 Packet */
  23242     bcmFieldPktTypeIp6Nsh = 64,         /* NSH Over IPv6 Packet */
  23243     bcmFieldPktTypeIp6GpeNsh = 65,      /* GPE-NSH Over IPv6 Packet */
  23244     bcmFieldPktTypeIp6Gre = 66,         /* GRE Over IPv6 Packet */
  23245     bcmFieldPktTypeIp6Bfd = 67,         /* BFD Over IPv6 Packet */
  23246     bcmFieldPktTypeIp6Vxlan = 68,       /* VXLAN Over IPv6 Packet */
  23247     bcmFieldPktTypeIp6Gpe = 69,         /* GPE Over IPv6 Packet */
  23248     bcmFieldPktTypeIp6GeneveNsh = 70,   /* GENEVE-NSH Over IPv6 Packet */
  23249     bcmFieldPktTypeIp61588Udp = 71,     /* 1588 UDF Packet over IPv6 */
  23250     bcmFieldPktTypeIp6VxlanFlex = 72,   /* VXLAN-Flex Over IPv6 Packet */
  23251     bcmFieldPktTypeIp6IPinIP = 73,      /* IPv6 IP-IN-IP Packet */
  23252     bcmFieldPktTypeIp6IPinGre = 74,     /* IPv6 IP in GRE */
  23253     bcmFieldPktTypeIp6Nvgre = 75,       /* IPv6 NVGRE Packet */
  23254     bcmFieldPktTypeIp6Geneve = 76,      /* IPv6 GENEVE Packet */
  23255     bcmFieldPktTypeIp6Gue = 77,         /* IPv6 GUE Packet */
  23256     bcmFieldPktTypeIp6Tcp = 78,         /* IPv6 TCP Packet */
  23257     bcmFieldPktTypeIp6Udp = 79,         /* IPv6 UDF Packet */
  23258     bcmFieldPktTypeIp6Icmp = 80,        /* IPv6 ICMP Packet */
  23259     bcmFieldPktTypeIp6Igmp = 81,        /* IPv6 IGMP Packet */
  23260     bcmFieldPktTypeIp6IpWithExtra4Bytes = 82, /* IPv6 with Extra four Bytes Packet */
  23261     bcmFieldPktTypeIp6Sctp = 83,        /* IPv6 SCTP Packet */
  23262     bcmFieldPktTypeIp6MplsInIpAny = 84, /* Any MPLS in IPv6 Packet */
  23263     bcmFieldPktTypeIp6MplsInIpWithOneLabel = 85, /* MPLS with one label in IPv6 Packet */
  23264     bcmFieldPktTypeIp6MplsInIpWithTwoLabel = 86, /* MPLS with two labels in IPv6 Packet */
  23265     bcmFieldPktTypeIp6MplsInIpWithThreeLabel = 87, /* MPLS with three labels in IPv6 Packet */
  23266     bcmFieldPktTypeIp6MplsInIpWithFourLabel = 88, /* MPLS with four labels in IPv6 Packet */
  23267     bcmFieldPktTypeIp6MplsInIpWithAnyCw = 89, /* Any MPLS with CW Label in IPv6 Packet */
  23268     bcmFieldPktTypeIp6MplsInIpWithOneLabelAndCw = 90, /* MPLS with one label CW in IPv6 Packet */
  23269     bcmFieldPktTypeIp6MplsInIpWithTwoLabelAndCw = 91, /* MPLS with two label CW in IPv6 Packet */
  23270     bcmFieldPktTypeIp6MplsInIpWithThreeLabelAndCw = 92, /* MPLS with three label CW in IPv6
  23271                                            Packet */
  23272     bcmFieldPktTypeIp6MplsInIpWithFourLabelAndCw = 93, /* MPLS with four labels in IPv6 Packet */
  23273     bcmFieldPktTypeNshOverMplsThreeLabel = 94, /* NSH Over MPLS with three labels
  23274                                            Packet */
  23275     bcmFieldPktTypeIpv4UdpINT = 95,     /* INT (Inband-Telemetry) packet type
  23276                                            over IPv4-UDP. */
  23277     bcmFieldPktTypeIpv6UdpINT = 96,     /* INT (Inband-Telemetry) packet type
  23278                                            over IPv6-UDP. */
  23279     bcmFieldPktTypeUdpINT = 97,         /* INT (Inband-Telemtry) Packet over any
  23280                                            IP-UDP packet */
  23281     bcmFieldPktTypeIpv4IOAM = 98,       /* IPv4 IOAM (Inband-OAM) Packet */
  23282     bcmFieldPktTypeIpv6IOAM = 99,       /* IPv6 IOAM (Inband-OAM) Packet */
  23283     bcmFieldPktTypeIOAM = 100,          /* IOAM (Inband-OAM) Packet over any IP
  23284                                            Packet */
  23285     bcmFieldPktTypeIpv4TcpINT = 101,    /* INT (Inband-Telemetry) packet type
  23286                                            over IPv4-TCP. */
  23287     bcmFieldPktTypeIpv6TcpINT = 102,    /* INT (Inband-Telemetry) packet type
  23288                                            over IPv6-TCP. */
  23289     bcmFieldPktTypeTcpINT = 103,        /* INT (Inband-Telemtry) Packet over
  23290                                            IP-TCP packet */
  23291     bcmFieldPktTypeTcpIfa = 104,        /* IFA (Inband-Flow Analyzer) Packet
  23292                                            over IP-TCP packet */
  23293     bcmFieldPktTypeUdpIfa = 105,        /* IFA (Inband-Flow Analyzer) Packet
  23294                                            over IP-UDP packet */
  23295     bcmFieldPktTypeIpBfd = 106,         /* BFD Over IP Packet Type */
  23296     bcmFieldPktTypeEthertype = 107,     /* Packet with EtherType */
  23297     bcmFieldPktTypeIpIcmp = 108,        /* IP-ICMP Packet */
  23298     bcmFieldPktTypeIpIgmp = 109,        /* IP-IGMP Packet */
  23299     bcmFieldPktTypeIpTcp = 110,         /* IP-TCP Packet */
  23300     bcmFieldPktTypeIpUdp = 111,         /* IP-UDF Packet */
  23301     bcmFieldPktTypeUnknownL3 = 112,     /* Packet with Unknown L3 */
  23302     bcmFieldPktTypeUnknownL4 = 113,     /* Packet with Unknown L4 */
  23303     bcmFieldPktTypeUnknownL5 = 114,     /* Packet with Unknown L5 */
  23304     bcmFieldPktTypeIpGpe = 115,         /* GPE Over IP Packet Type */
  23305     bcmFieldPktTypeIpGre = 116,         /* GRE over IP Packet Type */
  23306     bcmFieldPktTypeIpGreChksum = 117,   /* GRE checksum over IP Packet Type */
  23307     bcmFieldPktTypeIpGreKey = 118,      /* GRE key over IP Packet Type */
  23308     bcmFieldPktTypeIpGreRout = 119,     /* GRE Rout over IP Packet Type */
  23309     bcmFieldPktTypeIpGreSeq = 120,      /* GRE seq over IP Packet Type */
  23310     bcmFieldPktTypeIpIfa = 121,         /* IFA (Inband-Flow Analyzer) Packet
  23311                                            over IP packet */
  23312     bcmFieldPktTypeMplsAch = 122,       /* Mpls Ach packet type */
  23313     bcmFieldPktTypeIpVxlan = 123,       /* VXLAN Over IP Packet Type */
  23314     bcmFieldPktTypeIpv4IOAME2E = 124,   /* IPv4 IOAM (Inband-OAM) E2E Packet */
  23315     bcmFieldPktTypeIpv6IOAME2E = 125,   /* IPv6 IOAM (Inband-OAM) E2E Packet */
  23316     bcmFieldPktTypeIOAME2E = 126,       /* IOAM (Inband-OAM) E2E Packet over any
  23317                                            IP Packet */
  23318     bcmFieldPktTypeUdpManyInOne = 127,  /* UDP Flows like UDP-IFA, VxLan,
  23319                                            1588-UDP and IP-UDP., */
  23320     bcmFieldPktTypeTcpManyInOne = 128,  /* TCP Flows like TCP-IFA and IP-TCP., */
  23321     bcmFieldPktTypeLastCount = 129      /* Not in use - Last Count */
  23322 } bcm_field_pkt_type_t;
  23323 
  23324 #define BCM_FIELD_PKT_TYPE \
  23325 { \
  23326     "MplsNot", \
  23327     "MplsAny", \
  23328     "MplsOneLabel", \
  23329     "MplsTwoLabel", \
  23330     "MplsThreeLabel", \
  23331     "MplsFourLabel", \
  23332     "MplsFiveLabel", \
  23333     "MplsSixLabel", \
  23334     "MplsSevenLabel", \
  23335     "MplsMoreThanSevenLabel", \
  23336     "FCoENot", \
  23337     "FCoEAny", \
  23338     "FCoEVft", \
  23339     "FCoEEncap", \
  23340     "FCoEIfr", \
  23341     "FCoEStd", \
  23342     "FCoEVftStd", \
  23343     "FCoEEncapStd", \
  23344     "FCoEIfrStd", \
  23345     "FCoEFip", \
  23346     "1588", \
  23347     "Arp", \
  23348     "Rarp", \
  23349     "UnknownEtherType", \
  23350     "Mim", \
  23351     "Oam", \
  23352     "Cnm", \
  23353     "NshOverL2", \
  23354     "NshOverMplsOneLabel", \
  23355     "NshOverMplsTwoLabel", \
  23356     "Ip4Not", \
  23357     "Ip4Any", \
  23358     "Ip4Nsh", \
  23359     "Ip4GpeNsh", \
  23360     "Ip4Gre", \
  23361     "Ip4Bfd", \
  23362     "Ip4Vxlan", \
  23363     "Ip4Gpe", \
  23364     "Ip4GeneveNsh", \
  23365     "Ip41588Udp", \
  23366     "Ip4VxlanFlex", \
  23367     "Ip4IPinIP", \
  23368     "Ip4IPinGre", \
  23369     "Ip4Nvgre", \
  23370     "Ip4Geneve", \
  23371     "Ip4Gue", \
  23372     "Ip4Tcp", \
  23373     "Ip4Udp", \
  23374     "Ip4Icmp", \
  23375     "Ip4Igmp", \
  23376     "Ip4IpWithExtra4Bytes", \
  23377     "Ip4Sctp", \
  23378     "Ip4MplsInIpAny", \
  23379     "Ip4MplsInIpWithOneLabel", \
  23380     "Ip4MplsInIpWithTwoLabel", \
  23381     "Ip4MplsInIpWithThreeLabel", \
  23382     "Ip4MplsInIpWithFourLabel", \
  23383     "Ip4MplsInIpWithAnyCw", \
  23384     "Ip4MplsInIpWithOneLabelAndCw", \
  23385     "Ip4MplsInIpWithTwoLabelAndCw", \
  23386     "Ip4MplsInIpWithThreeLabelAndCw", \
  23387     "Ip4MplsInIpWithFourLabelAndCw", \
  23388     "Ip6Not", \
  23389     "Ip6Any", \
  23390     "Ip6Nsh", \
  23391     "Ip6GpeNsh", \
  23392     "Ip6Gre", \
  23393     "Ip6Bfd", \
  23394     "Ip6Vxlan", \
  23395     "Ip6Gpe", \
  23396     "Ip6GeneveNsh", \
  23397     "Ip61588Udp", \
  23398     "Ip6VxlanFlex", \
  23399     "Ip6IPinIP", \
  23400     "Ip6IPinGre", \
  23401     "Ip6Nvgre", \
  23402     "Ip6Geneve", \
  23403     "Ip6Gue", \
  23404     "Ip6Tcp", \
  23405     "Ip6Udp", \
  23406     "Ip6Icmp", \
  23407     "Ip6Igmp", \
  23408     "Ip6IpWithExtra4Bytes", \
  23409     "Ip6Sctp", \
  23410     "Ip6MplsInIpAny", \
  23411     "Ip6MplsInIpWithOneLabel", \
  23412     "Ip6MplsInIpWithTwoLabel", \
  23413     "Ip6MplsInIpWithThreeLabel", \
  23414     "Ip6MplsInIpWithFourLabel", \
  23415     "Ip6MplsInIpWithAnyCw", \
  23416     "Ip6MplsInIpWithOneLabelAndCw", \
  23417     "Ip6MplsInIpWithTwoLabelAndCw", \
  23418     "Ip6MplsInIpWithThreeLabelAndCw", \
  23419     "Ip6MplsInIpWithFourLabelAndCw", \
  23420     "NshOverMplsThreeLabel", \
  23421     "Ipv4UdpINT", \
  23422     "Ipv6UdpINT", \
  23423     "UdpINT", \
  23424     "Ipv4IOAM", \
  23425     "Ipv6IOAM", \
  23426     "IOAM", \
  23427     "Ipv4TcpINT", \
  23428     "Ipv6TcpINT", \
  23429     "TcpINT", \
  23430     "TcpIfa", \
  23431     "UdpIfa", \
  23432     "IpBfd", \
  23433     "Ethertype", \
  23434     "IpIcmp", \
  23435     "IpIgmp", \
  23436     "IpTcp", \
  23437     "IpUdp", \
  23438     "UnknownL3", \
  23439     "UnknownL4", \
  23440     "UnknownL5", \
  23441     "IpGpe", \
  23442     "IpGre", \
  23443     "IpGreChksum", \
  23444     "IpGreKey", \
  23445     "IpGreRout", \
  23446     "IpGreSeq", \
  23447     "IpIfa", \
  23448     "MplsAch", \
  23449     "IpVxlan", \
  23450     "Ipv4IOAME2E", \
  23451     "Ipv6IOAME2E", \
  23452     "IOAME2E", \
  23453     "UdpManyInOne", \
  23454     "TcpManyInOne"  \
  23455 }
  23456 
  23457 #ifndef BCM_HIDE_DISPATCHABLE
  23458 
  23459 /* API to add Packet type to a field entry for qualification. */
  23460 extern int bcm_field_qualify_PktType(
  23461     int unit, 
  23462     bcm_field_entry_t entry, 
  23463     bcm_field_pkt_type_t type);
  23464 
  23465 /* API to retrieve field packet type associated to a field entry. */
  23466 extern int bcm_field_qualify_PktType_get(
  23467     int unit, 
  23468     bcm_field_entry_t entry, 
  23469     bcm_field_pkt_type_t *type);
  23470 
  23471 /* 
  23472  * API to add MPLS Control word present status to a field entry for field
  23473  * qualification.
  23474  */
  23475 extern int bcm_field_qualify_MplsCwPresent(
  23476     int unit, 
  23477     bcm_field_entry_t entry, 
  23478     uint8 data, 
  23479     uint8 mask);
  23480 
  23481 /* 
  23482  * API to retrieve MPLS Control word present status associated to a field
  23483  * entry.
  23484  */
  23485 extern int bcm_field_qualify_MplsCwPresent_get(
  23486     int unit, 
  23487     bcm_field_entry_t entry, 
  23488     uint8 *data, 
  23489     uint8 *mask);
  23490 
  23491 /* 
  23492  * API to add MPLS Multicast EtherType present status to a field entry
  23493  * for qualification.
  23494  */
  23495 extern int bcm_field_qualify_MplsMcastEthertypePresent(
  23496     int unit, 
  23497     bcm_field_entry_t entry, 
  23498     uint8 data, 
  23499     uint8 mask);
  23500 
  23501 /* 
  23502  * API to retrieve MPLS Multicast EtherType present status associated to
  23503  * a field entry.
  23504  */
  23505 extern int bcm_field_qualify_MplsMcastEthertypePresent_get(
  23506     int unit, 
  23507     bcm_field_entry_t entry, 
  23508     uint8 *data, 
  23509     uint8 *mask);
  23510 
  23511 #endif /* BCM_HIDE_DISPATCHABLE */
  23512 
  23513 /* bcm_field_ip_option_hdr_type_e */
  23514 typedef enum bcm_field_ip_option_hdr_type_e {
  23515     bcmFieldIpOptionHdrTypeAH = 0,      /* Authentication Header type */
  23516     bcmFieldIpOptionHdrTypeESP = 1,     /* Encapsulating Security Payload type */
  23517     bcmFieldIpOptionHdrTypeWESP = 2,    /* Wrapped ESP for traffic visibility
  23518                                            type */
  23519     bcmFieldIpOptionHdrTypeAHESP = 3,   /* Authentication Header and
  23520                                            Encapsulating Security Payload type */
  23521     bcmFieldIpOptionHdrTypeAHWESP = 4,  /* Authentication Header and Wrapped ESP
  23522                                            type */
  23523     bcmFieldIpOptionHdrTypeGeneric = 5, /* Generic type */
  23524     bcmFieldIpOptionHdrTypeFrag = 6,    /* Fragment type */
  23525     bcmFieldIpOptionHdrTypeGenericGeneric = 7, /* Generic over Generic type */
  23526     bcmFieldIpOptionHdrTypeGenericFrag = 8, /* Generic and Fragment type */
  23527     bcmFieldIpOptionHdrTypeGenericAH = 9, /* Generic and AH type */
  23528     bcmFieldIpOptionHdrTypeGenericESP = 10, /* Generic and ESP type */
  23529     bcmFieldIpOptionHdrTypeGenericWESP = 11, /* Generic and WESP type */
  23530     bcmFieldIpOptionHdrTypeFragAH = 12, /* Fragment and AH type */
  23531     bcmFieldIpOptionHdrTypeFragESP = 13, /* Fragment and ESP type */
  23532     bcmFieldIpOptionHdrTypeFragWESP = 14, /* Fragment and WESP type */
  23533     bcmFieldIpOptionHdrTypeAHExt2 = 15, /* Authentication Header type Ext hdr 2 */
  23534     bcmFieldIpOptionHdrTypeFragExt2 = 16, /* Fragment type Ext header 2 */
  23535     bcmFieldIpOptionHdrTypeLastCount = 17 /* Last count */
  23536 } bcm_field_ip_option_hdr_type_t;
  23537 
  23538 #define BCM_FIELD_IP_OPTION_HDR_TYPE \
  23539 { \
  23540     "AH", \
  23541     "ESP", \
  23542     "WESP", \
  23543     "AHESP", \
  23544     "AHWESP", \
  23545     "Generic", \
  23546     "Frag", \
  23547     "GenericGeneric", \
  23548     "GenericFrag", \
  23549     "GenericAH", \
  23550     "GenericESP", \
  23551     "GenericWESP", \
  23552     "FragAH", \
  23553     "FragESP", \
  23554     "FragWESP", \
  23555     "AHExt2", \
  23556     "FragExt2"  \
  23557 }
  23558 
  23559 #ifndef BCM_HIDE_DISPATCHABLE
  23560 
  23561 /* API to add IPv4 option header type to a field entry for qualification. */
  23562 extern int bcm_field_qualify_Ipv4OptionHdrType(
  23563     int unit, 
  23564     bcm_field_entry_t entry, 
  23565     bcm_field_ip_option_hdr_type_t type);
  23566 
  23567 /* 
  23568  * API to retrieve IPv4 option header type associated to a given field
  23569  * entry.
  23570  */
  23571 extern int bcm_field_qualify_Ipv4OptionHdrType_get(
  23572     int unit, 
  23573     bcm_field_entry_t entry, 
  23574     bcm_field_ip_option_hdr_type_t *type);
  23575 
  23576 /* 
  23577  * API to add IPv6 Extension header type to a field entry for
  23578  * qualification.
  23579  */
  23580 extern int bcm_field_qualify_Ipv6ExtensionHdrType(
  23581     int unit, 
  23582     bcm_field_entry_t entry, 
  23583     bcm_field_ip_option_hdr_type_t type);
  23584 
  23585 /* 
  23586  * API to retrieve IPv6 Extension header type associated to a field
  23587  * entry.
  23588  */
  23589 extern int bcm_field_qualify_Ipv6ExtensionHdrType_get(
  23590     int unit, 
  23591     bcm_field_entry_t entry, 
  23592     bcm_field_ip_option_hdr_type_t *type);
  23593 
  23594 /* API to add Overlay Vlan Tag Format to a field entry for qualification. */
  23595 extern int bcm_field_qualify_OverlayVlanFormat(
  23596     int unit, 
  23597     bcm_field_entry_t entry, 
  23598     uint8 data, 
  23599     uint8 mask);
  23600 
  23601 /* API to retrieve Overlay VLAN Tag format associated to a field entry. */
  23602 extern int bcm_field_qualify_OverlayVlanFormat_get(
  23603     int unit, 
  23604     bcm_field_entry_t entry, 
  23605     uint8 *data, 
  23606     uint8 *mask);
  23607 
  23608 /* 
  23609  * API to add Overlay L2 Packet type of a tunnel terminated packet to a
  23610  * field entry for qualification.
  23611  */
  23612 extern int bcm_field_qualify_OverlayL2PktType(
  23613     int unit, 
  23614     bcm_field_entry_t entry, 
  23615     bcm_field_l2_pkt_type_t type);
  23616 
  23617 /* API to retrieve Overlay L2 Packet type associated to a field entry. */
  23618 extern int bcm_field_qualify_OverlayL2PktType_get(
  23619     int unit, 
  23620     bcm_field_entry_t entry, 
  23621     bcm_field_l2_pkt_type_t *type);
  23622 
  23623 /* 
  23624  * API to add Overlay Packet type of a tunnel terminated packet to a
  23625  * field entry for qualification.
  23626  */
  23627 extern int bcm_field_qualify_OverlayPktType(
  23628     int unit, 
  23629     bcm_field_entry_t entry, 
  23630     bcm_field_pkt_type_t type);
  23631 
  23632 /* API to retrieve field packet type associated to a field entry. */
  23633 extern int bcm_field_qualify_OverlayPktType_get(
  23634     int unit, 
  23635     bcm_field_entry_t entry, 
  23636     bcm_field_pkt_type_t *type);
  23637 
  23638 /* 
  23639  * API to add IPv4 option header type of a tunnel terminated packet to a
  23640  * field entry for qualification.
  23641  */
  23642 extern int bcm_field_qualify_OverlayIpv4OptionHdrType(
  23643     int unit, 
  23644     bcm_field_entry_t entry, 
  23645     bcm_field_ip_option_hdr_type_t type);
  23646 
  23647 /* 
  23648  * API to retrieve IPv4 option header type associated to a given field
  23649  * entry.
  23650  */
  23651 extern int bcm_field_qualify_OverlayIpv4OptionHdrType_get(
  23652     int unit, 
  23653     bcm_field_entry_t entry, 
  23654     bcm_field_ip_option_hdr_type_t *type);
  23655 
  23656 /* 
  23657  * API to add Overlay IPv6 Extension header type of a tunnel terminated
  23658  * packet to a field entry for qualification.
  23659  */
  23660 extern int bcm_field_qualify_OverlayIpv6ExtensionHdrType(
  23661     int unit, 
  23662     bcm_field_entry_t entry, 
  23663     bcm_field_ip_option_hdr_type_t type);
  23664 
  23665 /* 
  23666  * API to retrieve IPv6 Extension header type associated to a field
  23667  * entry.
  23668  */
  23669 extern int bcm_field_qualify_OverlayIpv6ExtensionHdrType_get(
  23670     int unit, 
  23671     bcm_field_entry_t entry, 
  23672     bcm_field_ip_option_hdr_type_t *type);
  23673 
  23674 /* API to add qualification for Front panel packet to a field entry. */
  23675 extern int bcm_field_qualify_FrontPanelPkt(
  23676     int unit, 
  23677     bcm_field_entry_t entry, 
  23678     uint8 data, 
  23679     uint8 mask);
  23680 
  23681 /* 
  23682  * API to retrieve Front panel packet status of a incoming packet
  23683  * associated to a given field entry.
  23684  */
  23685 extern int bcm_field_qualify_FrontPanelPkt_get(
  23686     int unit, 
  23687     bcm_field_entry_t entry, 
  23688     uint8 *data, 
  23689     uint8 *mask);
  23690 
  23691 #endif /* BCM_HIDE_DISPATCHABLE */
  23692 
  23693 /* bcm_field_higig_proxy_tunnel_type_e */
  23694 typedef enum bcm_field_higig_proxy_tunnel_type_e {
  23695     bcmFieldHiGigProxyTunnelTypeAny = 0, /* HiGig Proxy Tunnel Any. */
  23696     bcmFieldHiGigProxyTunnelTypeVxlan = 1, /* HiGig Proxy on VXLAN tunnel. */
  23697     bcmFieldHiGigProxyTunnelTypeL2Gre = 2, /* HiGig Proxy on L2GRE tunnel. */
  23698     bcmFieldHiGigProxyTunnelTypeMim = 3, /* HiGig Proxy on MIM tunnel. */
  23699     bcmFieldHiGigProxyTunnelTypeLastCount = 4 /* Always Last. Not a usable value. */
  23700 } bcm_field_higig_proxy_tunnel_type_t;
  23701 
  23702 #define BCM_FIELD_HIGIG_PROXY_TUNNEL_TYPE \
  23703 { \
  23704     "Any", \
  23705     "Vxlan", \
  23706     "L2Gre", \
  23707     "Mim"  \
  23708 }
  23709 
  23710 #ifndef BCM_HIDE_DISPATCHABLE
  23711 
  23712 /* API to add HiGig Proxy tunnel type to a field entry for qualification. */
  23713 extern int bcm_field_qualify_HiGigProxyTunnelType(
  23714     int unit, 
  23715     bcm_field_entry_t entry, 
  23716     bcm_field_higig_proxy_tunnel_type_t type);
  23717 
  23718 /* Retrieve HiGig Proxy tunnel type associated to a field entry. */
  23719 extern int bcm_field_qualify_HiGigProxyTunnelType_get(
  23720     int unit, 
  23721     bcm_field_entry_t entry, 
  23722     bcm_field_higig_proxy_tunnel_type_t *type);
  23723 
  23724 /* 
  23725  * API to add to match on IPMC Ipv4 packet qualification to a field
  23726  * entry.
  23727  */
  23728 extern int bcm_field_qualify_IpmcV4Pkt(
  23729     int unit, 
  23730     bcm_field_entry_t entry, 
  23731     uint8 data, 
  23732     uint8 mask);
  23733 
  23734 /* API to retrieve IPMC Ipv4 packet qualification from a field entry. */
  23735 extern int bcm_field_qualify_IpmcV4Pkt_get(
  23736     int unit, 
  23737     bcm_field_entry_t entry, 
  23738     uint8 *data, 
  23739     uint8 *mask);
  23740 
  23741 /* 
  23742  * API to add to match on IPMC Ipv6 packet qualification to a field
  23743  * entry.
  23744  */
  23745 extern int bcm_field_qualify_IpmcV6Pkt(
  23746     int unit, 
  23747     bcm_field_entry_t entry, 
  23748     uint8 data, 
  23749     uint8 mask);
  23750 
  23751 /* API to retrieve IPMC Ipv6 packet qualification from a field entry. */
  23752 extern int bcm_field_qualify_IpmcV6Pkt_get(
  23753     int unit, 
  23754     bcm_field_entry_t entry, 
  23755     uint8 *data, 
  23756     uint8 *mask);
  23757 
  23758 /* 
  23759  * Add to match on Network tag (VnTag or Etag) multicast packet
  23760  * qualification to a field entry.
  23761  */
  23762 extern int bcm_field_qualify_NetworkTagMulticastPkt(
  23763     int unit, 
  23764     bcm_field_entry_t entry, 
  23765     uint8 data, 
  23766     uint8 mask);
  23767 
  23768 /* 
  23769  * Get to match on Network tag (VnTag or Etag) multicast packet
  23770  * qualification from a field entry.
  23771  */
  23772 extern int bcm_field_qualify_NetworkTagMulticastPkt_get(
  23773     int unit, 
  23774     bcm_field_entry_t entry, 
  23775     uint8 *data, 
  23776     uint8 *mask);
  23777 
  23778 /* 
  23779  * Add to match on IP packet with zero TTL qualification to a field
  23780  * entry.
  23781  */
  23782 extern int bcm_field_qualify_IpTtlZeroPkt(
  23783     int unit, 
  23784     bcm_field_entry_t entry, 
  23785     uint8 data, 
  23786     uint8 mask);
  23787 
  23788 /* 
  23789  * Get to match on IP packet with TTL zero qualification from a field
  23790  * entry.
  23791  */
  23792 extern int bcm_field_qualify_IpTtlZeroPkt_get(
  23793     int unit, 
  23794     bcm_field_entry_t entry, 
  23795     uint8 *data, 
  23796     uint8 *mask);
  23797 
  23798 /* Add to match on IP fragment packet qualification to a field entry. */
  23799 extern int bcm_field_qualify_IpFragPkt(
  23800     int unit, 
  23801     bcm_field_entry_t entry, 
  23802     uint8 data, 
  23803     uint8 mask);
  23804 
  23805 /* Get to match on IP Fragment packet qualification from a field entry. */
  23806 extern int bcm_field_qualify_IpFragPkt_get(
  23807     int unit, 
  23808     bcm_field_entry_t entry, 
  23809     uint8 *data, 
  23810     uint8 *mask);
  23811 
  23812 /* 
  23813  * Add to match on outer priority tagged packet qualification to a field
  23814  * entry.
  23815  */
  23816 extern int bcm_field_qualify_OuterPriTaggedPkt(
  23817     int unit, 
  23818     bcm_field_entry_t entry, 
  23819     uint8 data, 
  23820     uint8 mask);
  23821 
  23822 /* 
  23823  * Get to match on outer priority tagged packet qualification from a
  23824  * field entry.
  23825  */
  23826 extern int bcm_field_qualify_OuterPriTaggedPkt_get(
  23827     int unit, 
  23828     bcm_field_entry_t entry, 
  23829     uint8 *data, 
  23830     uint8 *mask);
  23831 
  23832 /* 
  23833  * Add to match on IP in IP packet with zero TTL qualification to a field
  23834  * entry.
  23835  */
  23836 extern int bcm_field_qualify_IpInIpPkt(
  23837     int unit, 
  23838     bcm_field_entry_t entry, 
  23839     uint8 data, 
  23840     uint8 mask);
  23841 
  23842 /* Get to match on IP in IP packet qualification from a field entry. */
  23843 extern int bcm_field_qualify_IpInIpPkt_get(
  23844     int unit, 
  23845     bcm_field_entry_t entry, 
  23846     uint8 *data, 
  23847     uint8 *mask);
  23848 
  23849 /* 
  23850  * Add to match on IP packet with checksum OK qualification to a field
  23851  * entry.
  23852  */
  23853 extern int bcm_field_qualify_IpChecksumOkPkt(
  23854     int unit, 
  23855     bcm_field_entry_t entry, 
  23856     uint8 data, 
  23857     uint8 mask);
  23858 
  23859 /* 
  23860  * Get to match on IP packet with checksum OK qualification from a field
  23861  * entry.
  23862  */
  23863 extern int bcm_field_qualify_IpChecksumOkPkt_get(
  23864     int unit, 
  23865     bcm_field_entry_t entry, 
  23866     uint8 *data, 
  23867     uint8 *mask);
  23868 
  23869 /* 
  23870  * Add to match on PIM Bidirectional designated forwarding bit of the
  23871  * incoming packet qualification to a field entry.
  23872  */
  23873 extern int bcm_field_qualify_PimBidirDfStatus(
  23874     int unit, 
  23875     bcm_field_entry_t entry, 
  23876     uint8 data, 
  23877     uint8 mask);
  23878 
  23879 /* 
  23880  * Get to match on PIM Bidrectional designated forwarding bit of the
  23881  * incoming packet qualification from a field entry.
  23882  */
  23883 extern int bcm_field_qualify_PimBidirDfStatus_get(
  23884     int unit, 
  23885     bcm_field_entry_t entry, 
  23886     uint8 *data, 
  23887     uint8 *mask);
  23888 
  23889 #endif /* BCM_HIDE_DISPATCHABLE */
  23890 
  23891 /* bcm_field_interface_class_l2_type_e */
  23892 typedef enum bcm_field_interface_class_l2_type_e {
  23893     bcmFieldInterfaceClassL2TypeVlan = 0, /* Class ID is from VLAN. */
  23894     bcmFieldInterfaceClassL2TypeVfi = 1, /* Class ID is from VFI. */
  23895     bcmFieldInterfaceClassL2TypeLastCount = 2 /* Always Last. Not a usable value. */
  23896 } bcm_field_interface_class_l2_type_t;
  23897 
  23898 #define BCM_FIELD_INTERFACE_CLASS_L2_TYPE \
  23899 { \
  23900     "Vlan", \
  23901     "Vfi"  \
  23902 }
  23903 
  23904 #ifndef BCM_HIDE_DISPATCHABLE
  23905 
  23906 /* Add Interface Class L2 type field qualification to a field entry. */
  23907 extern int bcm_field_qualify_InterfaceClassL2Type(
  23908     int unit, 
  23909     bcm_field_entry_t entry, 
  23910     bcm_field_interface_class_l2_type_t type);
  23911 
  23912 /* Get Interface Class L2 type field qualification from a field entry. */
  23913 extern int bcm_field_qualify_InterfaceClassL2Type_get(
  23914     int unit, 
  23915     bcm_field_entry_t entry, 
  23916     bcm_field_interface_class_l2_type_t *type);
  23917 
  23918 /* 
  23919  * Add to match on INT (Inband-Telemetry) header version packet
  23920  * qualification to a field entry.
  23921  */
  23922 extern int bcm_field_qualify_IntPktVersionOne(
  23923     int unit, 
  23924     bcm_field_entry_t entry, 
  23925     uint8 data, 
  23926     uint8 mask);
  23927 
  23928 /* 
  23929  * Get to match on INT (Inband-Telemetry) header version one packet
  23930  * qualification from a field entry.
  23931  */
  23932 extern int bcm_field_qualify_IntPktVersionOne_get(
  23933     int unit, 
  23934     bcm_field_entry_t entry, 
  23935     uint8 *data, 
  23936     uint8 *mask);
  23937 
  23938 /* 
  23939  * Add to match on INT (Inband-Telemetry) header Overflow Bit packet
  23940  * qualification to a field entry.
  23941  */
  23942 extern int bcm_field_qualify_IntPktOverflowed(
  23943     int unit, 
  23944     bcm_field_entry_t entry, 
  23945     uint8 data, 
  23946     uint8 mask);
  23947 
  23948 /* 
  23949  * Get to match on INT (Inband-Telemetry) header Overflow Bit packet
  23950  * qualification from a field entry.
  23951  */
  23952 extern int bcm_field_qualify_IntPktOverflowed_get(
  23953     int unit, 
  23954     bcm_field_entry_t entry, 
  23955     uint8 *data, 
  23956     uint8 *mask);
  23957 
  23958 /* 
  23959  * Add to match on INT (Inband-Telemetry) Valid Length Check packet
  23960  * qualification to a field entry.
  23961  */
  23962 extern int bcm_field_qualify_IntPktLengthValid(
  23963     int unit, 
  23964     bcm_field_entry_t entry, 
  23965     uint8 data, 
  23966     uint8 mask);
  23967 
  23968 /* 
  23969  * Get to match on INT (Inband-Telemetry) Valid Length Check packet
  23970  * qualification from a field entry.
  23971  */
  23972 extern int bcm_field_qualify_IntPktLengthValid_get(
  23973     int unit, 
  23974     bcm_field_entry_t entry, 
  23975     uint8 *data, 
  23976     uint8 *mask);
  23977 
  23978 #endif /* BCM_HIDE_DISPATCHABLE */
  23979 
  23980 /* bcm_field_int_pkt_type_e */
  23981 typedef enum bcm_field_int_pkt_type_e {
  23982     bcmFieldIntPktTypeProbeReply = 0,   /* INT Probe Reply. */
  23983     bcmFieldIntPktTypeProbeRequest = 1, /* INT Probe Request. */
  23984     bcmFieldIntPktTypeLastCount = 2     /* Always Last. Not a usable value. */
  23985 } bcm_field_int_pkt_type_t;
  23986 
  23987 #define BCM_FIELD_INT_PKT_TYPE \
  23988 { \
  23989     "ProbeReply", \
  23990     "ProbeRequest"  \
  23991 }
  23992 
  23993 #ifndef BCM_HIDE_DISPATCHABLE
  23994 
  23995 /* 
  23996  * Add INT (Inband-Telemetry) Packet type field qualification to a field
  23997  * entry.
  23998  */
  23999 extern int bcm_field_qualify_IntPktType(
  24000     int unit, 
  24001     bcm_field_entry_t entry, 
  24002     bcm_field_int_pkt_type_t type);
  24003 
  24004 /* 
  24005  * Get INT (Inband-Telemetry) Packet type field qualification from a
  24006  * field entry.
  24007  */
  24008 extern int bcm_field_qualify_IntPktType_get(
  24009     int unit, 
  24010     bcm_field_entry_t entry, 
  24011     bcm_field_int_pkt_type_t *type);
  24012 
  24013 /* 
  24014  * Add to match on INT (Inband-Telemetry) Maximum Hop Limit Check packet
  24015  * qualification to a field entry.
  24016  */
  24017 extern int bcm_field_qualify_IntPktFinalHop(
  24018     int unit, 
  24019     bcm_field_entry_t entry, 
  24020     uint8 data, 
  24021     uint8 mask);
  24022 
  24023 /* 
  24024  * Get to match on INT (Inband-Telemetry) Max Hop Limit Check packet
  24025  * qualification from a field entry.
  24026  */
  24027 extern int bcm_field_qualify_IntPktFinalHop_get(
  24028     int unit, 
  24029     bcm_field_entry_t entry, 
  24030     uint8 *data, 
  24031     uint8 *mask);
  24032 
  24033 #endif /* BCM_HIDE_DISPATCHABLE */
  24034 
  24035 /* Field Qualifier TunnelSubType (for bcm_field_qualify_TunnelSubType). */
  24036 typedef enum bcm_field_TunnelSubType_e {
  24037     bcmFieldTunnelSubTypeNshOverGpeWithL3Pyld = 0, /* NSH with L3 Payload Tunnel in GPE. */
  24038     bcmFieldTunnelSubTypeNshOverL2WithL3Pyld = 1, /* NSH with L3 Payload Tunnel in L2 */
  24039     bcmFieldTunnelSubTypeNshOverMplsWithL3Pyld = 2, /* NSH with L3 Payload Tunnel in MPLS */
  24040     bcmFieldTunnelSubTypeUnknown = 3,   /* Subtype Unknown or None. */
  24041     bcmFieldTunnelSubTypeCount = 4      /* Always Last. Not a usable value. */
  24042 } bcm_field_TunnelSubType_t;
  24043 
  24044 #define BCM_FIELD_TUNNELSUBTYPE_STRINGS \
  24045 { \
  24046     "NshOverGpeWithL3Pyld", \
  24047     "NshOverL2WithL3Pyld", \
  24048     "NshOverMplsWithL3Pyld", \
  24049     "Unknown"  \
  24050 }
  24051 
  24052 #ifndef BCM_HIDE_DISPATCHABLE
  24053 
  24054 /* Add tunnel sub-type field qualification to a field entry. */
  24055 extern int bcm_field_qualify_TunnelSubType(
  24056     int unit, 
  24057     bcm_field_entry_t entry, 
  24058     bcm_field_TunnelSubType_t type);
  24059 
  24060 /* Get tunnel sub-type field qualification from a field entry. */
  24061 extern int bcm_field_qualify_TunnelSubType_get(
  24062     int unit, 
  24063     bcm_field_entry_t entry, 
  24064     bcm_field_TunnelSubType_t *type);
  24065 
  24066 #endif /* BCM_HIDE_DISPATCHABLE */
  24067 
  24068 /* PMF pass. */
  24069 typedef enum bcm_field_pmf_pass_e {
  24070     bcmFieldPmfPass0 = 0,       /* Pass-0 */
  24071     bcmFieldPmfPass1 = 1,       /* Pass-1 */
  24072     bcmFieldPmfPassCount = 2    /* nof pass. */
  24073 } bcm_field_pmf_pass_t;
  24074 
  24075 /* 
  24076  * Indicates the maximum number of context selection qualifiers which can
  24077  * be defined per single preselection entry
  24078  */
  24079 #define BCM_FIELD_MAX_NOF_CS_QUALIFIERS (32)       
  24080 
  24081 /* Preselector identifier structure. */
  24082 typedef struct bcm_field_presel_entry_id_s {
  24083     bcm_field_presel_t presel_id;   /* ID of the preselector entry. */
  24084     bcm_field_stage_t stage;        /* Preselection stage */
  24085 } bcm_field_presel_entry_id_t;
  24086 
  24087 /* Preselector qualifier data structure. */
  24088 typedef struct bcm_field_presel_qualify_data_s {
  24089     bcm_field_qualify_t qual_type;  /* Type of the qualifier. */
  24090     int qual_arg;                   /* Qualifier argument */
  24091     uint32 qual_value;              /* Value of the qualifier */
  24092     uint32 qual_mask;               /* Mask of the qualifier */
  24093 } bcm_field_presel_qualify_data_t;
  24094 
  24095 /* Preselector qualifier data structure. */
  24096 typedef struct bcm_field_presel_entry_data_s {
  24097     uint8 entry_valid;                  /* If set, the whole preselection entry
  24098                                            is set as valid. */
  24099     bcm_field_context_t context_id;     /* ID of the PMF context. */
  24100     uint32 nof_qualifiers;              /* Number of used qualifiers for CS. */
  24101     bcm_field_presel_qualify_data_t qual_data[BCM_FIELD_MAX_NOF_CS_QUALIFIERS]; /* Array of data of the used qualifiers. */
  24102 } bcm_field_presel_entry_data_t;
  24103 
  24104 #ifndef BCM_HIDE_DISPATCHABLE
  24105 
  24106 /* API to match on NSH Service Path ID. */
  24107 extern int bcm_field_qualify_NshServicePathId(
  24108     int unit, 
  24109     bcm_field_entry_t entry, 
  24110     uint32 data, 
  24111     uint32 mask);
  24112 
  24113 /* 
  24114  * Retrieve the match criteria fields for NshServicePathId qualifier
  24115  * associated to a given field entry.
  24116  */
  24117 extern int bcm_field_qualify_NshServicePathId_get(
  24118     int unit, 
  24119     bcm_field_entry_t entry, 
  24120     uint32 *data, 
  24121     uint32 *mask);
  24122 
  24123 /* API to match on NSH Service Index. */
  24124 extern int bcm_field_qualify_NshServiceIndex(
  24125     int unit, 
  24126     bcm_field_entry_t entry, 
  24127     uint32 data, 
  24128     uint32 mask);
  24129 
  24130 /* 
  24131  * Retrieve the match criteria fields for NshServiceIndex qualifier
  24132  * associated to a given field entry.
  24133  */
  24134 extern int bcm_field_qualify_NshServiceIndex_get(
  24135     int unit, 
  24136     bcm_field_entry_t entry, 
  24137     uint32 *data, 
  24138     uint32 *mask);
  24139 
  24140 /* 
  24141  * Qualifies on Roe frame type set in MPLS entry for a MPLS packet or
  24142  * based on UDP port number for an IP tunnel packet.
  24143  */
  24144 extern int bcm_field_qualify_RoeFrameType(
  24145     int unit, 
  24146     bcm_field_entry_t entry, 
  24147     bcm_field_roe_frame_type_t data);
  24148 
  24149 /* 
  24150  * To get the qualified inputs on the Roe frame type (see \ref
  24151  * fp_bcm_field_roe_frame_type_t).
  24152  */
  24153 extern int bcm_field_qualify_RoeFrameType_get(
  24154     int unit, 
  24155     bcm_field_entry_t entry, 
  24156     bcm_field_roe_frame_type_t *data);
  24157 
  24158 #endif /* BCM_HIDE_DISPATCHABLE */
  24159 
  24160 /* Initialize the bcm_field_presel_entry_id_t structure. */
  24161 extern void bcm_field_presel_entry_id_info_init(
  24162     bcm_field_presel_entry_id_t *entry_id);
  24163 
  24164 /* Initialize the bcm_field_presel_entry_data_t structure. */
  24165 extern void bcm_field_presel_entry_data_info_init(
  24166     bcm_field_presel_entry_data_t *entry_data);
  24167 
  24168 #ifndef BCM_HIDE_DISPATCHABLE
  24169 
  24170 /* Set a preselector entity information. */
  24171 extern int bcm_field_presel_set(
  24172     int unit, 
  24173     uint32 flags, 
  24174     bcm_field_presel_entry_id_t *entry_id, 
  24175     bcm_field_presel_entry_data_t *entry_data);
  24176 
  24177 /* Set a preselector entity information. */
  24178 extern int bcm_field_presel_get(
  24179     int unit, 
  24180     uint32 flags, 
  24181     bcm_field_presel_entry_id_t *entry_id, 
  24182     bcm_field_presel_entry_data_t *entry_data);
  24183 
  24184 /* 
  24185  * API to match on BFD Good packet (Good here represents the valid TTL
  24186  * range for 1-hop and M-hop).
  24187  */
  24188 extern int bcm_field_qualify_BfdGoodPkt(
  24189     int unit, 
  24190     bcm_field_entry_t entry, 
  24191     uint8 data, 
  24192     uint8 mask);
  24193 
  24194 /* 
  24195  * Retrieve the match criteria fields for BfdGoodPkt qualifier associated
  24196  * to a given field entry.
  24197  */
  24198 extern int bcm_field_qualify_BfdGoodPkt_get(
  24199     int unit, 
  24200     bcm_field_entry_t entry, 
  24201     uint8 *data, 
  24202     uint8 *mask);
  24203 
  24204 /* 
  24205  * API to match whether the incoming BFD packet has destination loopback
  24206  * IP Address.
  24207  */
  24208 extern int bcm_field_qualify_BfdPktWithDstIpLoopbackAddr(
  24209     int unit, 
  24210     bcm_field_entry_t entry, 
  24211     uint8 data, 
  24212     uint8 mask);
  24213 
  24214 /* 
  24215  * Retrieve the match criteria fields for BfdPktWithDstIpLoopbackAddr
  24216  * qualifier associated to a given field entry.
  24217  */
  24218 extern int bcm_field_qualify_BfdPktWithDstIpLoopbackAddr_get(
  24219     int unit, 
  24220     bcm_field_entry_t entry, 
  24221     uint8 *data, 
  24222     uint8 *mask);
  24223 
  24224 /* 
  24225  * API to match on MPLS Control Packet (MPLS packet with VCCV_1/2/3/4 and
  24226  * [LSP]/GAL/G-ACH).
  24227  */
  24228 extern int bcm_field_qualify_MplsControlPkt(
  24229     int unit, 
  24230     bcm_field_entry_t entry, 
  24231     uint8 data, 
  24232     uint8 mask);
  24233 
  24234 /* 
  24235  * Retrieve the match criteria fields for MplsControlPkt qualifier
  24236  * associated to a given field entry.
  24237  */
  24238 extern int bcm_field_qualify_MplsControlPkt_get(
  24239     int unit, 
  24240     bcm_field_entry_t entry, 
  24241     uint8 *data, 
  24242     uint8 *mask);
  24243 
  24244 /* 
  24245  * Get match criteria for bcmFieldQualifyIpTunnelTtlClassZero
  24246  *             qualifier from the field entry.
  24247  */
  24248 extern int bcm_field_qualify_IpTunnelTtlClassZero_get(
  24249     int unit, 
  24250     bcm_field_entry_t entry, 
  24251     bcm_class_t *data, 
  24252     bcm_class_t *mask);
  24253 
  24254 /* 
  24255  * Configure match criteria for bcmFieldQualifyIpTunnelTtl
  24256  *                 qualifier from the field entry.
  24257  */
  24258 extern int bcm_field_qualify_IpTunnelTtl(
  24259     int unit, 
  24260     bcm_field_entry_t entry, 
  24261     uint8 data, 
  24262     uint8 mask);
  24263 
  24264 /* 
  24265  * Get match criteria for bcmFieldQualifyIpTunnelTtl
  24266  *                 qualifier from the field entry.
  24267  */
  24268 extern int bcm_field_qualify_IpTunnelTtl_get(
  24269     int unit, 
  24270     bcm_field_entry_t entry, 
  24271     uint8 *data, 
  24272     uint8 *mask);
  24273 
  24274 /* To qualify on Class identifier derived from MPLS label 1 entry Lookup */
  24275 extern int bcm_field_qualify_InterfaceClassMplsLookup1(
  24276     int unit, 
  24277     bcm_field_entry_t entry, 
  24278     uint16 data, 
  24279     uint16 mask);
  24280 
  24281 /* 
  24282  * To get the qualified inputs on Class identifier derived from MPLS
  24283  * label 1 entry Lookup
  24284  */
  24285 extern int bcm_field_qualify_InterfaceClassMplsLookup1_get(
  24286     int unit, 
  24287     bcm_field_entry_t entry, 
  24288     uint16 *data, 
  24289     uint16 *mask);
  24290 
  24291 /* To qualify on Class identifier derived from MPLS label 2 entry Lookup */
  24292 extern int bcm_field_qualify_InterfaceClassMplsLookup2(
  24293     int unit, 
  24294     bcm_field_entry_t entry, 
  24295     uint16 data, 
  24296     uint16 mask);
  24297 
  24298 /* 
  24299  * To get the qualified inputs on Class identifier derived from MPLS
  24300  * label 2 entry Lookup
  24301  */
  24302 extern int bcm_field_qualify_InterfaceClassMplsLookup2_get(
  24303     int unit, 
  24304     bcm_field_entry_t entry, 
  24305     uint16 *data, 
  24306     uint16 *mask);
  24307 
  24308 /* To qualify on Class identifier derived from MPLS label 3 entry Lookup */
  24309 extern int bcm_field_qualify_InterfaceClassMplsLookup3(
  24310     int unit, 
  24311     bcm_field_entry_t entry, 
  24312     uint16 data, 
  24313     uint16 mask);
  24314 
  24315 /* 
  24316  * To get the qualified inputs on Class identifier derived from MPLS
  24317  * label 3 entry Lookup
  24318  */
  24319 extern int bcm_field_qualify_InterfaceClassMplsLookup3_get(
  24320     int unit, 
  24321     bcm_field_entry_t entry, 
  24322     uint16 *data, 
  24323     uint16 *mask);
  24324 
  24325 /* To qualify on Class identifier derived from L3 Tunnel */
  24326 extern int bcm_field_qualify_InterfaceClassL3Tunnel(
  24327     int unit, 
  24328     bcm_field_entry_t entry, 
  24329     uint16 data, 
  24330     uint16 mask);
  24331 
  24332 /* To get the qualified inputs on Class identifier derived from L3 Tunnel */
  24333 extern int bcm_field_qualify_InterfaceClassL3Tunnel_get(
  24334     int unit, 
  24335     bcm_field_entry_t entry, 
  24336     uint16 *data, 
  24337     uint16 *mask);
  24338 
  24339 #endif /* BCM_HIDE_DISPATCHABLE */
  24340 
  24341 #define BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP (32)       /* Default constant for
  24342                                                           number of qualifiers
  24343                                                           per field group. */
  24344 #define BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP (32)       /* Default constant for
  24345                                                           number of actions per
  24346                                                           field group. */
  24347 #define BCM_FIELD_NUMBER_OF_TCAM_BANKS      (16)       /* Default constant for
  24348                                                           number of TCAM banks. */
  24349 #define BCM_FIELD_NUMBER_OF_HASH_KEYS       (8)        /* Default constant for
  24350                                                           number of hash keys
  24351                                                           per hash context. */
  24352 
  24353 /* Field Group Types. */
  24354 typedef enum bcm_field_group_type_e {
  24355     bcmFieldGroupTypeTcam = 0,          /* TCAM Lookup group (Default). */
  24356     bcmFieldGroupTypeDirectTcam = 1,    /* Direct group (no TCAM lookup). */
  24357     bcmFieldGroupTypeDirectMdb = 2,     /* Direct group (MDB Interface). */
  24358     bcmFieldGroupTypeDirectExtraction = 3, /* Direct extraction (instead of TCAM)
  24359                                            group. */
  24360     bcmFieldGroupTypeExactMatch = 4,    /* Exact match group - partial masking
  24361                                            is not supported. */
  24362     bcmFieldGroupTypeStateTable = 5,    /* State Table group. */
  24363     bcmFieldGroupTypeExternalTcam = 6,  /* External TCAM lookup group. */
  24364     bcmFieldGroupTypeConst = 7,         /* Define Field Group with zero key
  24365                                            size. */
  24366     bcmFieldGroupTypeCount = 8          /* Always last. Not a usable value. */
  24367 } bcm_field_group_type_t;
  24368 
  24369 #define BCM_FIELD_GROUP_TYPE_STRINGS \
  24370 { \
  24371     "Tcam", \
  24372     "DirectTcam", \
  24373     "DirectMdb", \
  24374     "DirectExtraction", \
  24375     "ExactMatch", \
  24376     "StateTable", \
  24377     "ExternalTcam", \
  24378     "Const"  \
  24379 }
  24380 
  24381 /* Bank allocation modes. */
  24382 typedef enum bcm_field_tcam_bank_allocation_mode_e {
  24383     bcmFieldTcamBankAllocationModeInvalid = -1, /* Invalid. */
  24384     bcmFieldTcamBankAllocationModeAuto = 0, /*  Auto TCAM bank allocation mode:
  24385                                            Starts with no banks and allocates
  24386                                            banks on demand. */
  24387     bcmFieldTcamBankAllocationModeSelect = 1, /*  Select TCAM bank allocation mode:
  24388                                            For field groups with this type of
  24389                                            allocation mode, user may supply an
  24390                                            additional array when adding the
  24391                                            field group to allocate certain bank
  24392                                            ids. User can also later use the
  24393                                            function 'bcm_field_tcam_bank_add()'
  24394                                            to add banks to the field group
  24395                                            allocated banks list */
  24396     bcmFieldTcamBankAllocationModeSelectWithLocation = 2, /*  Select with location TCAM bank
  24397                                            allocation mode: For field groups
  24398                                            with this type of allocation mode, in
  24399                                            addition to supplying banks to
  24400                                            allocate array when adding the field
  24401                                            group, per entry adding, priority
  24402                                            acts as the location to insert the
  24403                                            entry to. */
  24404     bcmFieldTcamBankAllocationModeCount = 3 /* Always last. Not a usable value. */
  24405 } bcm_field_tcam_bank_allocation_mode_t;
  24406 
  24407 #define BCM_FIELD_TCAM_BANK_ALLOCATION_MODE_STRINGS \
  24408 { \
  24409     "Auto", \
  24410     "Select", \
  24411     "SelectWithLocation"  \
  24412 }
  24413 
  24414 /* 
  24415  * This structure holds the advanced parameters for TCAM type FG in
  24416  * bcm_field_group_add() function.
  24417  */
  24418 typedef struct bcm_field_group_tcam_info_s {
  24419     int nof_tcam_banks;                 /* Number of TCAM banks to reserve for
  24420                                            the given field group. */
  24421     int tcam_bank_ids[BCM_FIELD_NUMBER_OF_TCAM_BANKS]; /* The list of TCAM bank IDs to reserve
  24422                                            for the field group to be created.
  24423                                            This list is only valid for TCAM
  24424                                            field groups. */
  24425     bcm_field_tcam_bank_allocation_mode_t bank_allocation_mode; /* Bank allocation mode, see
  24426                                            bcm_field_tcam_bank_allocation_mode_e
  24427                                            in field.h. */
  24428 } bcm_field_group_tcam_info_t;
  24429 
  24430 /* 
  24431  * This structure holds the advanced parameters for TCAM type FG in
  24432  * bcm_field_group_add() function.
  24433  */
  24434 typedef struct bcm_field_group_external_info_s {
  24435     uint8 capacity_valid;           /* True when capacity has a meaningful info,
  24436                                        otherwise default values are set. */
  24437     uint32 capacity;                /* Set the minimum capacity reserved in
  24438                                        EXTERNAL TCAM. Used if capacity_valid is
  24439                                        true. */
  24440     uint8 algorithmic_mode_valid;   /* Whether to set the property ALGORITHMIC
  24441                                        for algorithmic mode */
  24442     uint32 algorithmic_mode;        /* Set the algorithmic mode (algorithmic
  24443                                        property) to this value. Used if
  24444                                        algorithmic_mode_valid is true. */
  24445 } bcm_field_group_external_info_t;
  24446 
  24447 /* Maximum length for a short name. */
  24448 #define BCM_FIELD_MAX_SHORT_NAME_LEN    (72)       
  24449 
  24450 /* 
  24451  * This structure holds the basic parameters for bcm_field_group_add()
  24452  * function.
  24453  */
  24454 typedef struct bcm_field_group_info_s {
  24455     bcm_field_stage_t stage;            /* Field stage, for which stage the
  24456                                            Field Group was created. */
  24457     bcm_field_group_type_t fg_type;     /* Field Group type: The database may
  24458                                            be: TCAM, Direct Table,Direct
  24459                                            Extraction, Exact Match, Hashing,
  24460                                            StateTable or MDB. */
  24461     int nof_quals;                      /* Number of valid qualifiers in the
  24462                                            Field Group. */
  24463     bcm_field_qualify_t qual_types[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* BCM level qualifier look at
  24464                                            bcm_field_qualify_t for more info.
  24465                                            Number of meaningful elements on this
  24466                                            array according to nof_quals. */
  24467     uint8 qual_is_ranged[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* If set, indicates that the
  24468                                            corresponding qualifier is expected
  24469                                            to accept a range of values for a
  24470                                            single entry. */
  24471     int nof_actions;                    /* Number of valid actions in the action
  24472                                            set of field group. */
  24473     bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to
  24474                                            matching entries for this action set. */
  24475     int action_with_valid_bit[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* If set, then additional bit is added
  24476                                            in payload to indicate weather this
  24477                                            action is valid. */
  24478     bcm_field_group_tcam_info_t tcam_info; /* Advanced parameters for TCAM field
  24479                                            group */
  24480     bcm_field_group_external_info_t external_info; /* Advanced parameters for external TCAM
  24481                                            field group */
  24482     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  24483     int *ext_acl_db;                    /* Pointer to ext_acl_db. */
  24484 } bcm_field_group_info_t;
  24485 
  24486 #ifndef BCM_HIDE_DISPATCHABLE
  24487 
  24488 /* Add to match on BFD version packet qualification to a field entry. */
  24489 extern int bcm_field_qualify_BfdPktVersionOne(
  24490     int unit, 
  24491     bcm_field_entry_t entry, 
  24492     uint8 data, 
  24493     uint8 mask);
  24494 
  24495 /* Get BFD version one packet qualification from a field entry. */
  24496 extern int bcm_field_qualify_BfdPktVersionOne_get(
  24497     int unit, 
  24498     bcm_field_entry_t entry, 
  24499     uint8 *data, 
  24500     uint8 *mask);
  24501 
  24502 /* 
  24503  * Add to match on Inner BFD version packet qualification to a field
  24504  * entry.
  24505  */
  24506 extern int bcm_field_qualify_InnerBfdPktVersionOne(
  24507     int unit, 
  24508     bcm_field_entry_t entry, 
  24509     uint8 data, 
  24510     uint8 mask);
  24511 
  24512 /* Get Inner BFD version one packet qualification from a field entry. */
  24513 extern int bcm_field_qualify_InnerBfdPktVersionOne_get(
  24514     int unit, 
  24515     bcm_field_entry_t entry, 
  24516     uint8 *data, 
  24517     uint8 *mask);
  24518 
  24519 /* 
  24520  * Add to match on Geneve version 0 packet qualification to a field
  24521  * entry.
  24522  */
  24523 extern int bcm_field_qualify_GenevePktVersionZero(
  24524     int unit, 
  24525     bcm_field_entry_t entry, 
  24526     uint8 data, 
  24527     uint8 mask);
  24528 
  24529 /* Retreive Geneve version zero packet qualification from a field entry. */
  24530 extern int bcm_field_qualify_GenevePktVersionZero_get(
  24531     int unit, 
  24532     bcm_field_entry_t entry, 
  24533     uint8 *data, 
  24534     uint8 *mask);
  24535 
  24536 /* Add to match on Gpe version 0 packet qualification to a field entry. */
  24537 extern int bcm_field_qualify_GpePktVersionZero(
  24538     int unit, 
  24539     bcm_field_entry_t entry, 
  24540     uint8 data, 
  24541     uint8 mask);
  24542 
  24543 /* Retreive Gpe version zero packet qualification from a field entry. */
  24544 extern int bcm_field_qualify_GpePktVersionZero_get(
  24545     int unit, 
  24546     bcm_field_entry_t entry, 
  24547     uint8 *data, 
  24548     uint8 *mask);
  24549 
  24550 /* Add to match on OAM over Geneve packet qualification to a field entry. */
  24551 extern int bcm_field_qualify_GenevePktWithOam(
  24552     int unit, 
  24553     bcm_field_entry_t entry, 
  24554     uint8 data, 
  24555     uint8 mask);
  24556 
  24557 /* Retreive OAM over Geneve packet qualification from a field entry. */
  24558 extern int bcm_field_qualify_GenevePktWithOam_get(
  24559     int unit, 
  24560     bcm_field_entry_t entry, 
  24561     uint8 *data, 
  24562     uint8 *mask);
  24563 
  24564 /* Add to match on OAM over Gpe packet qualification to a field entry. */
  24565 extern int bcm_field_qualify_GpePktWithOam(
  24566     int unit, 
  24567     bcm_field_entry_t entry, 
  24568     uint8 data, 
  24569     uint8 mask);
  24570 
  24571 /* Retreive OAM over Gpe packet qualification from a field entry. */
  24572 extern int bcm_field_qualify_GpePktWithOam_get(
  24573     int unit, 
  24574     bcm_field_entry_t entry, 
  24575     uint8 *data, 
  24576     uint8 *mask);
  24577 
  24578 #endif /* BCM_HIDE_DISPATCHABLE */
  24579 
  24580 /* 
  24581  * Parameter flags form
  24582  * bcmQualifyPktDstAddrType/bcmQualifyPktInnerDstAddrType.
  24583  */
  24584 #define BCM_FIELD_PKT_DST_ADDR_TYPE_UCAST_MAC (1 << 0)   /* Indicates the packet
  24585                                                           has unicast
  24586                                                           destination mac
  24587                                                           address. */
  24588 #define BCM_FIELD_PKT_DST_ADDR_TYPE_MCAST_MAC (1 << 1)   /* Indicates the packet
  24589                                                           has multicast
  24590                                                           destination mac
  24591                                                           address. */
  24592 #define BCM_FIELD_PKT_DST_ADDR_TYPE_BCAST_MAC (1 << 2)   /* Indicates the packet
  24593                                                           has broadcast
  24594                                                           destination mac
  24595                                                           address. */
  24596 #define BCM_FIELD_PKT_DST_ADDR_TYPE_UCAST_IP (1 << 3)   /* Indicates the packet
  24597                                                           has unicast
  24598                                                           destination ip
  24599                                                           address. */
  24600 #define BCM_FIELD_PKT_DST_ADDR_TYPE_MCAST_IP (1 << 4)   /* Indicates the packet
  24601                                                           has multicast
  24602                                                           destination ip
  24603                                                           address. */
  24604 #define BCM_FIELD_PKT_DST_ADDR_TYPE_BCAST_IP (1 << 5)   /* Indicates the packet
  24605                                                           has broadcast
  24606                                                           destination ip
  24607                                                           address. */
  24608 
  24609 #ifndef BCM_HIDE_DISPATCHABLE
  24610 
  24611 /* 
  24612  * Configure Match criteria for bcmFieldQualifyPktDstAddrType qualifier
  24613  * for the field entry.
  24614  */
  24615 extern int bcm_field_qualify_PktDstAddrType(
  24616     int unit, 
  24617     bcm_field_entry_t entry, 
  24618     uint32 dst_addr_type);
  24619 
  24620 /* 
  24621  * Get match criteria for bcmFieldQualifyPktDstAddrType qualifier from
  24622  * the field entry.
  24623  */
  24624 extern int bcm_field_qualify_PktDstAddrType_get(
  24625     int unit, 
  24626     bcm_field_entry_t entry, 
  24627     uint32 *dst_addr_type);
  24628 
  24629 /* 
  24630  * Configure Match criteria for bcmFieldQualifyPktInnerDstAddrType
  24631  * qualifier for the field entry.
  24632  */
  24633 extern int bcm_field_qualify_PktInnerDstAddrType(
  24634     int unit, 
  24635     bcm_field_entry_t entry, 
  24636     uint32 dst_addr_type);
  24637 
  24638 /* 
  24639  * Get match criteria for bcmFieldQualifyPktInnerDstAddrType qualifier
  24640  * from the field entry.
  24641  */
  24642 extern int bcm_field_qualify_PktInnerDstAddrType_get(
  24643     int unit, 
  24644     bcm_field_entry_t entry, 
  24645     uint32 *dst_addr_type);
  24646 
  24647 /* 
  24648  * Configure match criteria for bcmFieldQualifyInnerL4Ports
  24649  *         qualifier from the field entry.
  24650  */
  24651 extern int bcm_field_qualify_InnerL4Ports(
  24652     int unit, 
  24653     bcm_field_entry_t entry, 
  24654     uint8 data, 
  24655     uint8 mask);
  24656 
  24657 /* 
  24658  * Get match criteria for bcmFieldQualifyInnerL4Ports
  24659  *                qualifier from the field entry.
  24660  */
  24661 extern int bcm_field_qualify_InnerL4Ports_get(
  24662     int unit, 
  24663     bcm_field_entry_t entry, 
  24664     uint8 *data, 
  24665     uint8 *mask);
  24666 
  24667 /* 
  24668  * Configure match criteria for bcmFieldQualifyIp6PktNextHeader
  24669  *         qualifier for the field entry.
  24670  */
  24671 extern int bcm_field_qualify_Ip6PktNextHeader(
  24672     int unit, 
  24673     bcm_field_entry_t entry, 
  24674     uint8 data, 
  24675     uint8 mask);
  24676 
  24677 /* 
  24678  * Get match criteria for bcmFieldQualifyIp6PktNextHeader
  24679  *                qualifier from the field entry.
  24680  */
  24681 extern int bcm_field_qualify_Ip6PktNextHeader_get(
  24682     int unit, 
  24683     bcm_field_entry_t entry, 
  24684     uint8 *data, 
  24685     uint8 *mask);
  24686 
  24687 /* 
  24688  * Configure match criteria for bcmFieldQualifyIp6PktHopLimit
  24689  *         qualifier for the field entry.
  24690  */
  24691 extern int bcm_field_qualify_Ip6PktHopLimit(
  24692     int unit, 
  24693     bcm_field_entry_t entry, 
  24694     uint8 data, 
  24695     uint8 mask);
  24696 
  24697 /* 
  24698  * Get match criteria for bcmFieldQualifyIp6PktHopLimit
  24699  *                qualifier from the field entry.
  24700  */
  24701 extern int bcm_field_qualify_Ip6PktHopLimit_get(
  24702     int unit, 
  24703     bcm_field_entry_t entry, 
  24704     uint8 *data, 
  24705     uint8 *mask);
  24706 
  24707 /* 
  24708  * Configure match criteria for bcmFieldQualifyIp6PktTrafficClass
  24709  *         qualifier for the field entry.
  24710  */
  24711 extern int bcm_field_qualify_Ip6PktTrafficClass(
  24712     int unit, 
  24713     bcm_field_entry_t entry, 
  24714     uint8 data, 
  24715     uint8 mask);
  24716 
  24717 /* 
  24718  * Get match criteria for bcmFieldQualifyIp6PktTrafficClass
  24719  *                qualifier from the field entry.
  24720  */
  24721 extern int bcm_field_qualify_Ip6PktTrafficClass_get(
  24722     int unit, 
  24723     bcm_field_entry_t entry, 
  24724     uint8 *data, 
  24725     uint8 *mask);
  24726 
  24727 /* bcm_field_qualify_Ip4Tos */
  24728 extern int bcm_field_qualify_Ip4Tos(
  24729     int unit, 
  24730     bcm_field_entry_t entry, 
  24731     uint8 data, 
  24732     uint8 mask);
  24733 
  24734 /* 
  24735  * Get match criteria for bcmFieldQualifyIp4Tos
  24736  *  qualifier from the field entry.
  24737  */
  24738 extern int bcm_field_qualify_Ip4Tos_get(
  24739     int unit, 
  24740     bcm_field_entry_t entry, 
  24741     uint8 *data, 
  24742     uint8 *mask);
  24743 
  24744 /* 
  24745  * Configure match criteria for bcmFieldQualifyInnerIp6PktNextHeader
  24746  *         qualifier for the field entry.
  24747  */
  24748 extern int bcm_field_qualify_InnerIp6PktNextHeader(
  24749     int unit, 
  24750     bcm_field_entry_t entry, 
  24751     uint8 data, 
  24752     uint8 mask);
  24753 
  24754 /* 
  24755  * Get match criteria for bcmFieldQualifyInnerIp6PktNextHeader
  24756  *                qualifier from the field entry.
  24757  */
  24758 extern int bcm_field_qualify_InnerIp6PktNextHeader_get(
  24759     int unit, 
  24760     bcm_field_entry_t entry, 
  24761     uint8 *data, 
  24762     uint8 *mask);
  24763 
  24764 /* 
  24765  * Configure match criteria for bcmFieldQualifyInnerIp6PktHopLimit
  24766  *         qualifier for the field entry.
  24767  */
  24768 extern int bcm_field_qualify_InnerIp6PktHopLimit(
  24769     int unit, 
  24770     bcm_field_entry_t entry, 
  24771     uint8 data, 
  24772     uint8 mask);
  24773 
  24774 /* 
  24775  * Get match criteria for bcmFieldQualifyInnerIp6PktHopLimit
  24776  *                qualifier from the field entry.
  24777  */
  24778 extern int bcm_field_qualify_InnerIp6PktHopLimit_get(
  24779     int unit, 
  24780     bcm_field_entry_t entry, 
  24781     uint8 *data, 
  24782     uint8 *mask);
  24783 
  24784 /* 
  24785  * Configure match criteria for bcmFieldQualifyIp6PktTrafficClass
  24786  *         qualifier for the field entry.
  24787  */
  24788 extern int bcm_field_qualify_InnerIp6PktTrafficClass(
  24789     int unit, 
  24790     bcm_field_entry_t entry, 
  24791     uint8 data, 
  24792     uint8 mask);
  24793 
  24794 /* 
  24795  * Get match criteria for bcmFieldQualifyInnerIp6PktTrafficClass
  24796  *                qualifier from the field entry.
  24797  */
  24798 extern int bcm_field_qualify_InnerIp6PktTrafficClass_get(
  24799     int unit, 
  24800     bcm_field_entry_t entry, 
  24801     uint8 *data, 
  24802     uint8 *mask);
  24803 
  24804 /* 
  24805  *  Set match criteria for bcmFieldQualifyForwardCode
  24806  *                  qualifier in the field entry.
  24807  */
  24808 extern int bcm_field_qualify_ForwardCode(
  24809     int unit, 
  24810     bcm_field_entry_t entry, 
  24811     uint8 data, 
  24812     uint8 mask);
  24813 
  24814 /* 
  24815  *  Get match criteria for bcmFieldQualifyForwardCode
  24816  *                  qualifier in the field entry.
  24817  */
  24818 extern int bcm_field_qualify_ForwardCode_get(
  24819     int unit, 
  24820     bcm_field_entry_t entry, 
  24821     uint8 *data, 
  24822     uint8 *mask);
  24823 
  24824 #endif /* BCM_HIDE_DISPATCHABLE */
  24825 
  24826 /* Invalid constant for Context ID, used in initialization. */
  24827 #define BCM_FIELD_CONTEXT_ID_INVALID    ((bcm_field_context_t) (-1)) 
  24828 
  24829 /* 
  24830  * Default context is created in case when TCAM Context Selection is miss
  24831  * and context 0 is chosen by defualt.
  24832  * If user don't want to configure preselectors he can use default
  24833  * context for bcm_field_group_context_attach().
  24834  * The default context is created on init for all stages.
  24835  */
  24836 #define BCM_FIELD_CONTEXT_ID_DEFAULT    (0)        
  24837 
  24838 /* Field Context Compare Types. */
  24839 typedef enum bcm_field_context_compare_type_e {
  24840     bcmFieldContextCompareTypeNone = 0, /* No special mode, used for
  24841                                            initialization. */
  24842     bcmFieldContextCompareTypeSingle = 1, /* Single-key compare. */
  24843     bcmFieldContextCompareTypeDouble = 2, /* Double-key compare. */
  24844     bcmFieldContextCompareTypeCount = 3 /* Always last. Not a usable value. */
  24845 } bcm_field_context_compare_type_t;
  24846 
  24847 /* 
  24848  * This structure holds the context compare mode information for
  24849  * bcm_field_context_create function.
  24850  */
  24851 typedef struct bcm_field_context_compare_modes_s {
  24852     bcm_field_context_compare_type_t compare_1_mode; /* Specifies compare type for the first
  24853                                            pair. */
  24854     bcm_field_context_compare_type_t compare_2_mode; /* Specifies compare type for the second
  24855                                            pair. */
  24856 } bcm_field_context_compare_modes_t;
  24857 
  24858 /* 
  24859  * This structure holds the basic parameters for
  24860  * bcm_dnx_field_context_create() function.
  24861  */
  24862 typedef struct bcm_field_context_info_s {
  24863     bcm_field_context_compare_modes_t context_compare_modes; /* Defines which compare types are set
  24864                                            for this context, for each compare
  24865                                            operation (compare1, compare2). */
  24866     bcm_field_context_t cascaded_from;  /* The context-Id which the current
  24867                                            context is cascaded from (relevant in
  24868                                            iPMF2) stage. */
  24869     uint8 hashing_enabled;              /* Enable in case a hash key is set on
  24870                                            this context. */
  24871     uint8 state_table_enabled;          /* Enabling state table for current
  24872                                            context */
  24873     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  24874 } bcm_field_context_info_t;
  24875 
  24876 /* Initialize the bcm_field_context_info_t structure. */
  24877 extern void bcm_field_context_info_t_init(
  24878     bcm_field_context_info_t *context_info);
  24879 
  24880 #ifndef BCM_HIDE_DISPATCHABLE
  24881 
  24882 /* Create a new Field Context on a desired stage. */
  24883 extern int bcm_field_context_create(
  24884     int unit, 
  24885     uint32 flags, 
  24886     bcm_field_stage_t stage, 
  24887     bcm_field_context_info_t *context_info, 
  24888     bcm_field_context_t *context_id);
  24889 
  24890 /* Get all context info of a Field Context. */
  24891 extern int bcm_field_context_info_get(
  24892     int unit, 
  24893     bcm_field_stage_t stage, 
  24894     bcm_field_context_t context_id, 
  24895     bcm_field_context_info_t *context_info);
  24896 
  24897 /* Destroy Context ID, deallocate all relevant resources. */
  24898 extern int bcm_field_context_destroy(
  24899     int unit, 
  24900     bcm_field_stage_t stage, 
  24901     bcm_field_context_t context_id);
  24902 
  24903 #endif /* BCM_HIDE_DISPATCHABLE */
  24904 
  24905 /* Initialize the bcm_field_group_info_t structure. */
  24906 extern void bcm_field_group_info_t_init(
  24907     bcm_field_group_info_t *fg_info);
  24908 
  24909 #ifndef BCM_HIDE_DISPATCHABLE
  24910 
  24911 /* This function creates a new Field group of any type on a desired stage */
  24912 extern int bcm_field_group_add(
  24913     int unit, 
  24914     uint32 flags, 
  24915     bcm_field_group_info_t *fg_info, 
  24916     bcm_field_group_t *fg_id);
  24917 
  24918 /* This function will get all info of a specific Field Group. */
  24919 extern int bcm_field_group_info_get(
  24920     int unit, 
  24921     bcm_field_group_t fg_id, 
  24922     bcm_field_group_info_t *fg_info);
  24923 
  24924 /* Delete Field Group, deallocate all relevant resources. */
  24925 extern int bcm_field_group_delete(
  24926     int unit, 
  24927     bcm_field_group_t fg_id);
  24928 
  24929 #endif /* BCM_HIDE_DISPATCHABLE */
  24930 
  24931 /* 
  24932  * General Field optional flags. Used if the user wants to specify which
  24933  * ID should be allocated.
  24934  */
  24935 #define BCM_FIELD_FLAG_WITH_ID  (1 << 0)   
  24936 
  24937 /* 
  24938  * Used if we want to replace/update existing entity. For example: update
  24939  * an existing entry - change its values.
  24940  */
  24941 #define BCM_FIELD_FLAG_UPDATE   (1 << 1)   
  24942 
  24943 /* Used if returned result is aligned to MSB. */
  24944 #define BCM_FIELD_FLAG_MSB_RESULT_ALIGN (1 << 2)   
  24945 
  24946 /* Used if returned result is aligned to LSB. */
  24947 #define BCM_FIELD_FLAG_LSB_RESULT_ALIGN (1 << 3)   
  24948 
  24949 /* 
  24950  * This flag enables external ACL counters for all entries in the
  24951  * external ACL DB.
  24952  */
  24953 #define BCM_FIELD_FLAG_EXTERNAL_COUNTERS    (1 << 4)   
  24954 
  24955 /* 
  24956  * This flag aligns the MSB of the field group to a 32 bit grnularity
  24957  * (i.e. the MSB of the field group will be placed at 31, 63, 127, etc.
  24958  */
  24959 #define BCM_FIELD_FLAG_32_RESULT_MSB_ALIGN  (1 << 5)   
  24960 
  24961 /* 
  24962  * This flag is used for external TCAM field groups, to indicate that
  24963  * consecutive qualifers whose size in bits is not a multiplier of 8,
  24964  * should be attemped to be combined to a single segment.
  24965  */
  24966 #define BCM_FIELD_FLAG_QUAL_PACKING (1 << 6)   
  24967 
  24968 /* General invalid constant for Field */
  24969 #define BCM_FIELD_INVALID       0xFFFF     
  24970 
  24971 /* 
  24972  * General invalid constant for specific Field IDs, like presel_id,
  24973  * context_id. Used in initialization.
  24974  */
  24975 #define BCM_FIELD_ID_INVALID    (-1)       
  24976 
  24977 /* Field Qualifier Input Types, indicate base layer type for qualifier. */
  24978 typedef enum bcm_field_input_types_e {
  24979     bcmFieldInputTypeInvalid = -1,      /* Invalid base layer. */
  24980     bcmFieldInputTypeLayerFwd = 0,      /* Extracted from Layer info ,FWD layer
  24981                                            index. */
  24982     bcmFieldInputTypeLayerAbsolute = 1, /* Extracted from Layer info ,Absolute
  24983                                            layer index . */
  24984     bcmFieldInputTypeMetaData = 2,      /* Extracted from MetaData. */
  24985     bcmFieldInputTypeLayerRecordsFwd = 3, /* Extracted from LR ,FWD layer index . */
  24986     bcmFieldInputTypeLayerRecordsAbsolute = 4, /* Extracted from LR ,Absolute layer
  24987                                            index. */
  24988     bcmFieldInputTypeExternal = 5,      /* Extracted from 'Cascaded From' field
  24989                                            group result from the external field
  24990                                            stage. */
  24991     bcmFieldInputTypeCascaded = 6,      /* Extracted from 'Cascaded From' field
  24992                                            group result. */
  24993     bcmFieldInputTypeConst = 7,         /* Constant value. */
  24994     bcmFieldInputTypeCount = 8          /* Always last. Number of Base Types. */
  24995 } bcm_field_input_types_t;
  24996 
  24997 #define BCM_FIELD_INPUT_TYPES_STRINGS \
  24998 { \
  24999     "LayerFwd", \
  25000     "LayerAbsolute", \
  25001     "MetaData", \
  25002     "LayerRecordsFwd", \
  25003     "LayerRecordsAbsolute", \
  25004     "External", \
  25005     "Cascaded", \
  25006     "Const"  \
  25007 }
  25008 
  25009 /* 
  25010  * Include information on each action that configured in
  25011  * bcm_field_group_context_attach API.
  25012  */
  25013 typedef struct bcm_field_action_attach_info_s {
  25014     bcm_field_action_priority_t priority; /* Indicate the priority per action that
  25015                                            was configured for specific Field
  25016                                            Group the lower the number the higher
  25017                                            the priority of the actions the
  25018                                            higher FES/FEM id will be allocated */
  25019     uint8 valid_bit_polarity;           /* Indicate the polarity per action that
  25020                                            was configured for specific Field
  25021                                            Group, the meaning of the
  25022                                            use_valid_bit. Indicates whether
  25023                                            condition bit can be based on 0 or 1.
  25024                                            If there is a valid bit
  25025                                            (use_valid_bit=1),
  25026                                            the action will happen only if the
  25027                                            valid bit is equal to the polarity
  25028                                            bit. */
  25029 } bcm_field_action_attach_info_t;
  25030 
  25031 /* 
  25032  * This struct will indicate how to extract the qualifier from the PBUS,
  25033  * (MetaData/LR/Layer).
  25034  */
  25035 typedef struct bcm_field_qualify_attach_info_s {
  25036     bcm_field_input_types_t input_type; /* The base of qualifier, indicates from
  25037                                            where the info is taken, relevant for
  25038                                            all type of qualifiers. */
  25039     int input_arg;                      /* Dedicated argument for specified
  25040                                            input_type. */
  25041     int offset;                         /* Additional offset for header
  25042                                            qualifiers / offset for user defined
  25043                                            qualifiers. */
  25044 } bcm_field_qualify_attach_info_t;
  25045 
  25046 /* 
  25047  * This structure represents a single context_key element. This is an
  25048  * abstract structure used only by other structures, like
  25049  * bcm_field_context_hash_info_t and bcm_field_context_compare_info_t, as
  25050  * a uniformed way to define context_keys.
  25051  */
  25052 typedef struct bcm_field_context_key_info_s {
  25053     int nof_quals;                      /* Number of valid qualifiers in the
  25054                                            context key. */
  25055     bcm_field_qualify_t qual_types[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* BCM level qualifier look at
  25056                                            bcm_field_qualify_t for more info.
  25057                                            Number of meaningful elements on this
  25058                                            array according to nof_quals. */
  25059     bcm_field_qualify_attach_info_t qual_info[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Indicate how to read the relevant
  25060                                            qualifier from PBUS. The information
  25061                                            is aligned to the qualifier types
  25062                                            array above. */
  25063 } bcm_field_context_key_info_t;
  25064 
  25065 /* 
  25066  * This structure represents a single context_payload element. This is an
  25067  * abstract structure used only by other structures, like
  25068  * bcm_field_group_attach_info_t, as a uniformed way to define
  25069  * context_payloads.
  25070  */
  25071 typedef struct bcm_field_context_payload_info_s {
  25072     int nof_actions;                    /* Number of valid actions in the action
  25073                                            set of the Field Group. */
  25074     bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to
  25075                                            matching entries for this action set.
  25076                                            BCM level action look at
  25077                                            bcm_field_action_t for more info. */
  25078     bcm_field_action_attach_info_t action_info[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Information (priority) on each action
  25079                                            that configured in
  25080                                            bcm_field_group_context_attach() API */
  25081     int nof_invalidate_fems;            /* Number of elements in
  25082                                            invalidate_fems, Indicates the number
  25083                                            of FEMs added to the field group that
  25084                                            we want to disable for the context. */
  25085     bcm_field_action_priority_t *invalidate_fems; /* A pointer to an array of positions of
  25086                                            FEMs, each indicating a FEM position
  25087                                            of a FEM added to the field group,
  25088                                            that should not be enabled for the
  25089                                            context. */
  25090     uint32 payload_id;                  /* Payload Id for current field group
  25091                                            inside the payload buffer. Payloads
  25092                                            returned from the external tcam are
  25093                                            acumulated sequentially. Indicates
  25094                                            the valid hit bit for current field
  25095                                            group. */
  25096     uint32 payload_offset;              /* Payload location inside the payload
  25097                                            buffer returned from the external
  25098                                            tcam. */
  25099 } bcm_field_context_payload_info_t;
  25100 
  25101 /* 
  25102  * This structure holds the basic parameters for
  25103  * bcm_field_group_context_attach() function.
  25104  */
  25105 typedef struct bcm_field_group_attach_info_s {
  25106     bcm_field_context_key_info_t key_info; /* Context attach qualifiers
  25107                                            information, like: number of valid
  25108                                            qualifiers, qualifier type and how to
  25109                                            read the relevant qualifier from
  25110                                            PBUS. */
  25111     bcm_field_context_payload_info_t payload_info; /* Context attach actions information,
  25112                                            like: number of valid actions, action
  25113                                            type and priority. */
  25114     int compare_id;                     /* Compare id to use in case of
  25115                                            comparison. Can be 0 or 1, depends on
  25116                                            which compare pair is used in the
  25117                                            comparison. */
  25118 } bcm_field_group_attach_info_t;
  25119 
  25120 /* Initialize the bcm_field_qualify_attach_info_t structure. */
  25121 extern void bcm_field_qual_attach_info_t_init(
  25122     bcm_field_qualify_attach_info_t *qual_info);
  25123 
  25124 /* Initialize the bcm_field_group_attach_info_t structure. */
  25125 extern void bcm_field_group_attach_info_t_init(
  25126     bcm_field_group_attach_info_t *attach_info);
  25127 
  25128 #ifndef BCM_HIDE_DISPATCHABLE
  25129 
  25130 /* 
  25131  * This Function Attach Field Group to specific context ID, and defines
  25132  * the key template and action priorities for this lookup for this
  25133  * specific context.
  25134  */
  25135 extern int bcm_field_group_context_attach(
  25136     int unit, 
  25137     uint32 flags, 
  25138     bcm_field_group_t fg_id, 
  25139     bcm_field_context_t context_id, 
  25140     bcm_field_group_attach_info_t *attach_info);
  25141 
  25142 /* 
  25143  * This function will get all Group attach info of a specific Field
  25144  * context and Field group.
  25145  */
  25146 extern int bcm_field_group_context_info_get(
  25147     int unit, 
  25148     bcm_field_group_t fg_id, 
  25149     bcm_field_context_t context_id, 
  25150     bcm_field_group_attach_info_t *attach_info);
  25151 
  25152 /* 
  25153  * Reset/deallocate all resources that were allocated for the context ID
  25154  * at input to the FG at input.
  25155  */
  25156 extern int bcm_field_group_context_detach(
  25157     int unit, 
  25158     bcm_field_group_t fg_id, 
  25159     bcm_field_context_t context_id);
  25160 
  25161 #endif /* BCM_HIDE_DISPATCHABLE */
  25162 
  25163 /* Action width in words. */
  25164 #define BCM_FIELD_ACTION_WIDTH_IN_WORDS (4)        
  25165 
  25166 /* Qualifier width in words. */
  25167 #define BCM_FIELD_QUAL_WIDTH_IN_WORDS   (5)        
  25168 
  25169 /* 
  25170  * Include information regarding a user defined action used by
  25171  * bcm_field_action_create.
  25172  */
  25173 typedef struct bcm_field_action_info_s {
  25174     bcm_field_stage_t stage;            /* Field stage, for which stage the
  25175                                            action is created. */
  25176     bcm_field_action_t action_type;     /* used as basis for the user defined
  25177                                            action type, can be also void action */
  25178     int size;                           /* Size of the action to set in the
  25179                                            payload in bits. */
  25180     int prefix_size;                    /* Size of the prefix to set in the
  25181                                            payload in bits. */
  25182     int prefix_value;                   /* Value of the prefix (will be put in
  25183                                            the MSB of the action). */
  25184     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  25185 } bcm_field_action_info_t;
  25186 
  25187 /* 
  25188  * Include information regarding a qualifier. Used by
  25189  * bcm_field_qualifier_create() for creating user defined qualifiers.
  25190  */
  25191 typedef struct bcm_field_qualifier_info_create_s {
  25192     int size;                           /* Size of the qualifier to set in the
  25193                                            key in bits. */
  25194     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  25195 } bcm_field_qualifier_info_create_t;
  25196 
  25197 /* 
  25198  * Includes information regarding a qualifier. Used by
  25199  * bcm_field_qualifier_get() for retrieving information regarding
  25200  * predefined or user defined qualifiers.
  25201  */
  25202 typedef struct bcm_field_qualifier_info_get_s {
  25203     bcm_field_qualifier_class_t qual_class; /* Class of the qualifier. Indicates the
  25204                                            intput type of the qualifier for
  25205                                            predefined qualifiers. */
  25206     int size;                           /* Size of the qualifier in the key in
  25207                                            bits. */
  25208     int offset;                         /* The offset of the qualifier. */
  25209     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  25210 } bcm_field_qualifier_info_get_t;
  25211 
  25212 /* 
  25213  * This structure holds the payload values needed for bcm_field_entry_add
  25214  * function.
  25215  */
  25216 typedef struct bcm_field_entry_action_s {
  25217     bcm_field_action_t type;            /* BCM action type, an action to perform
  25218                                            in case of match. */
  25219     uint32 value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]; /* Set value for action (lookup result). */
  25220 } bcm_field_entry_action_t;
  25221 
  25222 /* 
  25223  * This structure holds the key values needed for bcm_field_entry_add
  25224  * function.
  25225  */
  25226 typedef struct bcm_field_entry_qual_s {
  25227     bcm_field_qualify_t type;           /* BCM qualifier type, a classifier type
  25228                                            for lookup. */
  25229     uint32 value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Set value for qualify (lookup key). */
  25230     uint32 max_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Sets the maximum value for ranged
  25231                                            qualify (lookup key). */
  25232     uint32 mask[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Mask that dictates which of the value
  25233                                            bits are relevant for lookup. */
  25234 } bcm_field_entry_qual_t;
  25235 
  25236 /* 
  25237  * This structure holds the key values needed for bcm_field_entry_add
  25238  * function.
  25239  */
  25240 typedef struct bcm_field_entry_info_s {
  25241     uint32 priority;                    /* Entry priority, relevant only for
  25242                                            TCAM FG. The lower the number the
  25243                                            higher the entry priority. Higher
  25244                                            priority lookup will hit first. */
  25245     int nof_entry_quals;                /* Number of valid qualifiers in the
  25246                                            Field entry. */
  25247     bcm_field_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Entry qualifiers info including type,
  25248                                            value, and mask, not all are relevant
  25249                                            in various field group types. */
  25250     int nof_entry_actions;              /* Number of valid actions in the Field
  25251                                            entry. */
  25252     bcm_field_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type,
  25253                                            value. */
  25254     bcm_core_t core;                    /* Entry's core */
  25255     uint8 valid_bit;                    /* Entry valid bit */
  25256 } bcm_field_entry_info_t;
  25257 
  25258 /* Initialize the bcm_field_action_info_t structure. */
  25259 extern void bcm_field_action_info_t_init(
  25260     bcm_field_action_info_t *action_info);
  25261 
  25262 #ifndef BCM_HIDE_DISPATCHABLE
  25263 
  25264 /* 
  25265  * This function create a user defined action, when user wants to use a
  25266  * non-predefined, it indicated the size and gets an action ID.
  25267  */
  25268 extern int bcm_field_action_create(
  25269     int unit, 
  25270     uint32 flags, 
  25271     bcm_field_action_info_t *action_info, 
  25272     bcm_field_action_t *action_id);
  25273 
  25274 /* 
  25275  * Maps the bcm value of a given action in a given stage to the
  25276  * correspondig HW value. This functionality is needed when non-trivial
  25277  * user defined actions are created and values need to be set for them
  25278  */
  25279 extern int bcm_field_action_value_map(
  25280     int unit, 
  25281     bcm_field_stage_t stage, 
  25282     bcm_field_action_t bcm_action, 
  25283     uint32 bcm_value[BCM_FIELD_ACTION_WIDTH_IN_WORDS], 
  25284     uint32 hw_value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]);
  25285 
  25286 /* This function gets all information of an action. */
  25287 extern int bcm_field_action_info_get(
  25288     int unit, 
  25289     bcm_field_action_t action_id, 
  25290     bcm_field_stage_t stage, 
  25291     bcm_field_action_info_t *action_info);
  25292 
  25293 /* Destroys an existing user action based. */
  25294 extern int bcm_field_action_destroy(
  25295     int unit, 
  25296     bcm_field_action_t action_id);
  25297 
  25298 #endif /* BCM_HIDE_DISPATCHABLE */
  25299 
  25300 /* Initialize the bcm_field_qualifier_info_create_t structure. */
  25301 extern void bcm_field_qualifier_info_create_t_init(
  25302     bcm_field_qualifier_info_create_t *qual_info);
  25303 
  25304 /* Initialize the bcm_field_qualifier_info_get_t structure. */
  25305 extern void bcm_field_qualifier_info_get_t_init(
  25306     bcm_field_qualifier_info_get_t *qual_info);
  25307 
  25308 #ifndef BCM_HIDE_DISPATCHABLE
  25309 
  25310 /* 
  25311  * This function creates a user defined qualifier, when user wants to use
  25312  * a non-predefined, it indicated the size and gets a qualifier ID.
  25313  */
  25314 extern int bcm_field_qualifier_create(
  25315     int unit, 
  25316     uint32 flags, 
  25317     bcm_field_qualifier_info_create_t *qual_info, 
  25318     bcm_field_qualify_t *qual_id);
  25319 
  25320 /* 
  25321  * Maps the bcm value of a given qualifier in a given stage to the
  25322  * correspondig HW value. This functionality is needed when non-trivial
  25323  * user defined qualifiers are created and values need to be set for them
  25324  */
  25325 extern int bcm_field_qualifier_value_map(
  25326     int unit, 
  25327     bcm_field_stage_t stage, 
  25328     bcm_field_qualify_t bcm_qual, 
  25329     uint32 bcm_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS], 
  25330     uint32 hw_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]);
  25331 
  25332 /* This function gets all information of a qualifier. */
  25333 extern int bcm_field_qualifier_info_get(
  25334     int unit, 
  25335     bcm_field_qualify_t qual_id, 
  25336     bcm_field_stage_t stage, 
  25337     bcm_field_qualifier_info_get_t *qual_info);
  25338 
  25339 /* Destroys an existing user qualifier. */
  25340 extern int bcm_field_qualifier_destroy(
  25341     int unit, 
  25342     bcm_field_qualify_t qual_id);
  25343 
  25344 #endif /* BCM_HIDE_DISPATCHABLE */
  25345 
  25346 /* Object type for name to ID mapping. */
  25347 typedef enum bcm_field_name_to_id_type_e {
  25348     bcmFieldNameToIdGroup = 0,      /* Field group. */
  25349     bcmFieldNameToIdQualifier = 1,  /* Qualifier. */
  25350     bcmFieldNameToIdAction = 2,     /* Action. */
  25351     bcmFieldNameToIdContext = 3,    /* Context. */
  25352     bcmFieldNameToIdAceFormat = 4,  /* Context. */
  25353     bcmFieldNameToIdCount = 5       /* Always last. Not a usable value.. */
  25354 } bcm_field_name_to_id_type_t;
  25355 
  25356 /* 
  25357  * Information for mapping name to ID. used by
  25358  * bcm_field_object_name_to_id().
  25359  */
  25360 typedef struct bcm_field_name_to_id_info_s {
  25361     bcm_field_stage_t stage;            /* Field stage of the object. Relevant
  25362                                            for contexts. */
  25363     bcm_field_name_to_id_type_t name_to_id_type; /* What type of object to translate
  25364                                            (e.g. field group, qualifier,
  25365                                            action). */
  25366     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* Name of the object. */
  25367 } bcm_field_name_to_id_info_t;
  25368 
  25369 /* Initialize the bcm_field_name_to_id_info_t structure. */
  25370 extern void bcm_field_name_to_id_info_t_init(
  25371     bcm_field_name_to_id_info_t *name_to_id_info);
  25372 
  25373 /* Initialize the bcm_field_entry_info_t structure. */
  25374 extern void bcm_field_entry_info_t_init(
  25375     bcm_field_entry_info_t *entry_info);
  25376 
  25377 /* Initialize an array of bcm_field_entry_qual_t structures. */
  25378 extern void bcm_field_entry_qual_t_init(
  25379     bcm_field_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]);
  25380 
  25381 #ifndef BCM_HIDE_DISPATCHABLE
  25382 
  25383 /* 
  25384  * This function creates, sets and installs to HW a single entry (ACL
  25385  * rule) for a specific field group.
  25386  */
  25387 extern int bcm_field_entry_add(
  25388     int unit, 
  25389     uint32 flags, 
  25390     bcm_field_group_t fg_id, 
  25391     bcm_field_entry_info_t *entry_info, 
  25392     bcm_field_entry_t *entry_handle);
  25393 
  25394 /* Get info for specific a field group by entry id. */
  25395 extern int bcm_field_entry_info_get(
  25396     int unit, 
  25397     bcm_field_group_t fg_id, 
  25398     bcm_field_entry_t entry_handle, 
  25399     bcm_field_entry_info_t *entry_info);
  25400 
  25401 /* Delete Entry From HW and free all allocated resources. */
  25402 extern int bcm_field_entry_delete(
  25403     int unit, 
  25404     bcm_field_group_t fg_id, 
  25405     bcm_field_entry_qual_t entry_qual_info[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP], 
  25406     bcm_field_entry_t entry_handle);
  25407 
  25408 /* Delete all entries in all field groups. */
  25409 extern int bcm_field_entry_delete_all(
  25410     int unit);
  25411 
  25412 #endif /* BCM_HIDE_DISPATCHABLE */
  25413 
  25414 /* 
  25415  * This enum contains Packet Layers to remove, used in the
  25416  * BCM_FIELD_PACKET_STRIP() macro.
  25417  */
  25418 typedef enum bcm_field_packet_remove_layers_e {
  25419     bcmFieldPacketRemoveLayerFirst = 0, /* Invalid Param. */
  25420     bcmFieldPacketRemoveLayerOffset0 = bcmFieldPacketRemoveLayerFirst, /* Packet Layer offset 0. */
  25421     bcmFieldPacketRemoveLayerOffset1 = 1, /* Packet Layer offset 1. */
  25422     bcmFieldPacketRemoveLayerForwardingOffset0 = 2, /* Packet Layer Forwarding offset 0. */
  25423     bcmFieldPacketRemoveLayerForwardingOffset1 = 3, /* Packet Layer Forwarding offset 1. */
  25424     bcmFieldPacketRemoveLayerCount = 4  /* Always last. Not a usable value. */
  25425 } bcm_field_packet_remove_layers_t;
  25426 
  25427 #define BCM_FIELD_PACKET_REMOVE_LAYER_STRINGS \
  25428 { \
  25429     "Offset0", \
  25430     "Offset1", \
  25431     "ForwardingOffset0", \
  25432     "ForwardingOffset1"  \
  25433 }
  25434 
  25435 /* 
  25436  * This macro encodes the number of headers to remove and number of bytes
  25437  * to a single parameter, given as input to PMF action
  25438  * bcmFieldActionStartPacketStrip.
  25439  */
  25440 #define BCM_FIELD_PACKET_STRIP(remove_layers, fixed_num_bytes)  ((fixed_num_bytes<<4) + (remove_layers)) 
  25441 
  25442 /* 
  25443  * This enum contains all Polynomial hashing Functions values that can be
  25444  * passed to the 'hash_function' param in the
  25445  * bcm_field_context_hash_info_t struct.
  25446  */
  25447 typedef enum bcm_field_context_hash_function_e {
  25448     bcmFieldContextHashFunctionFirst = 0, /* Invalid Param. */
  25449     bcmFieldContextHashFunctionFirstReserved = bcmFieldContextHashFunctionFirst, /* HW Reserved Value */
  25450     bcmFieldContextHashFunctionSecondReserved = 1, /* HW Reserved Value. */
  25451     bcmFieldContextHashFunctionThirdReserved = 2, /* Polynomial BISYNC hashing Function. */
  25452     bcmFieldContextHashFunctionCrc16Bisync = 3, /* Polynomial CRC 16 BISYNC hashing
  25453                                            Function. */
  25454     bcmFieldContextHashFunctionCrc16Xor1 = 4, /* Polynomial CRC 16 XOR1 hashing
  25455                                            Function. */
  25456     bcmFieldContextHashFunctionCrc16Xor2 = 5, /* Polynomial CRC 16 XOR2 hashing
  25457                                            Function. */
  25458     bcmFieldContextHashFunctionCrc16Xor4 = 6, /* Polynomial CRC 16 XOR4 hashing
  25459                                            Function. */
  25460     bcmFieldContextHashFunctionCrc16Xor8 = 7, /* Polynomial CRC 16 XOR8 hashing
  25461                                            Function. */
  25462     bcmFieldContextHashFunctionXor16 = 8, /* Polynomial XOR16 hashing Function. */
  25463     bcmFieldContextHashFunctionCrc16Ccitt = 9, /* Polynomial CRC 16 CCITT hashing
  25464                                            Function. */
  25465     bcmFieldContextHashFunctionCrc32ALow = 10, /* Polynomial CRC 32 A LOW hashing
  25466                                            Function. */
  25467     bcmFieldContextHashFunctionCrc32Ahigh = 11, /* Polynomial CRC 32 A HIGH hashing
  25468                                            Function. */
  25469     bcmFieldContextHashFunctionCrc32BLow = 12, /* Polynomial CRC 32 B LOW hashing
  25470                                            Function. */
  25471     bcmFieldContextHashFunctionCrc32BHigh = 13, /* Polynomial CRC 32 B HIGH hashing
  25472                                            Function. */
  25473     bcmFieldContextHashFunctionCount = 14 /* Always last. Not a usable value. */
  25474 } bcm_field_context_hash_function_t;
  25475 
  25476 /* 
  25477  * This enum contains all Hashing Action Key values that can be passed to
  25478  * the 'hash_config->action_key' param in the
  25479  * bcm_field_context_hash_info_t struct.
  25480  */
  25481 typedef enum bcm_field_context_hash_action_key_e {
  25482     bcmFieldContextHashActionKeyFirst = 0, /* Invalid Param. */
  25483     bcmFieldContextHashActionKeyEcmpLbKey0 = bcmFieldContextHashActionKeyFirst, /* Hashing key ECMP_LB0. */
  25484     bcmFieldContextHashActionKeyEcmpLbKey1 = 1, /* Hashing key ECMP_LB1. */
  25485     bcmFieldContextHashActionKeyEcmpLbKey2 = 2, /* Hashing key ECMP_LB2. */
  25486     bcmFieldContextHashActionKeyNetworkLbKey = 3, /* Hashing key NETWORK_LB. */
  25487     bcmFieldContextHashActionKeyLagLbKey = 4, /* Hashing key LAG_LB. */
  25488     bcmFieldContextHashActionKeyAdditionalLbKey = 5, /* Hashing key ADDITIONAL_LB. */
  25489     bcmFieldContextHashActionKeyCount = 6 /* Always last. Not a usable value. */
  25490 } bcm_field_context_hash_action_key_t;
  25491 
  25492 /* 
  25493  * This enum contains all Hashing Action Values that can be passed to the
  25494  * 'hash_config->function_select' param in the
  25495  * bcm_field_context_hash_info_t struct.
  25496  */
  25497 typedef enum bcm_field_context_hash_action_value_e {
  25498     bcmFieldContextHashActionValueFirst = 0, /* Invalid Param. */
  25499     bcmFieldContextHashActionValueNone = bcmFieldContextHashActionValueFirst, /* Hashing action value DO_NOTHING. */
  25500     bcmFieldContextHashActionValueReplaceCrc = 1, /* Hashing action value
  25501                                            REPLACE_WITH_CRC_16. */
  25502     bcmFieldContextHashActionValueAugmentCrc = 2, /* Hashing action value
  25503                                            AUGMENT_WITH_PMF_CRC_16. */
  25504     bcmFieldContextHashActionValueAugmentKey = 3, /* Hashing action value
  25505                                            AUGMENT_WITH_KEY_J. */
  25506     bcmFieldContextHashActionValueCount = 4 /* Always last. Not a usable value. */
  25507 } bcm_field_context_hash_action_value_t;
  25508 
  25509 /* 
  25510  * This enum contains all CRC Select values that can be passed to the
  25511  * 'hash_config->crc_select' param in the bcm_field_context_hash_info_t
  25512  * struct.
  25513  */
  25514 typedef enum bcm_field_crc_select_e {
  25515     bcmFieldCrcSelectInvalid = 0,       /* Invalid */
  25516     bcmFieldCrcSelectFirst = 1,         /* Indexer */
  25517     bcmFieldCrcSelectCrc16P0x10039 = bcmFieldCrcSelectFirst, /* CRC16 with 0x10039 polynomial */
  25518     bcmFieldCrcSelectCrc16P0x100d7 = 2, /* CRC16 with 0x100d7 polynomial */
  25519     bcmFieldCrcSelectCrc16P0x1015d = 3, /* CRC16 with 0x1015d polynomial */
  25520     bcmFieldCrcSelectCrc16P0x10939 = 4, /* CRC16 with 0x10939 polynomial */
  25521     bcmFieldCrcSelectCrc16P0x109e7 = 5, /* CRC16 with 0x109e7 polynomial */
  25522     bcmFieldCrcSelectCrc16P0x10ac5 = 6, /* CRC16 with 0x10ac5 polynomial */
  25523     bcmFieldCrcSelectCrc16P0x1203d = 7, /* CRC16 with 0x1203d polynomial */
  25524     bcmFieldCrcSelectCrc16P0x12105 = 8, /* CRC16 with 0x12105 polynomial */
  25525     bcmFieldCrcSelectCount              /* Need to be always last */
  25526 } bcm_field_crc_select_t;
  25527 
  25528 /* This structure holds detailed info about hash configuration. */
  25529 typedef struct bcm_field_context_hash_config_s {
  25530     bcm_field_context_hash_action_key_t action_key; /* One of the various lb-keys which are
  25531                                            iPMF1 output. */
  25532     bcm_field_context_hash_action_value_t function_select; /* Hashing Action which selects whether
  25533                                            to keep the input lb-key or to
  25534                                            replace it. */
  25535     bcm_field_crc_select_t crc_select;  /* Selects which CRC polynomial
  25536                                            (function) to use on hash function
  25537                                            output (only works in case hash
  25538                                            action is augment). */
  25539 } bcm_field_context_hash_config_t;
  25540 
  25541 /* 
  25542  * This structure holds detailed info how hash key should be constructed,
  25543  * needed for bcm_field_context_hash_create() function.
  25544  */
  25545 typedef struct bcm_field_context_hash_info_s {
  25546     bcm_field_context_key_info_t key_info; /* The Hash key information, describing
  25547                                            the qualifiers and template of the
  25548                                            constructed key */
  25549     uint8 compression;                  /* Disable/enable compress data (128->32
  25550                                            bit). Typical usage: compress ipv6
  25551                                            address into 32 bits. */
  25552     uint8 order;                        /* Disable/enable order data (smaller
  25553                                            32-bits value will always be in 32LSB
  25554                                            ). Typical usage order between
  25555                                            generate the same key for
  25556                                            bidirectional ip flows. */
  25557     bcm_field_context_hash_function_t hash_function; /* Hashing polynomial for hashing
  25558                                            mechanism. */
  25559     bcm_field_context_hash_config_t hash_config; /* Hashing configuration params,
  25560                                            describing which hash action is
  25561                                            performed and which signals */
  25562     int nof_additional_hash_config;     /* Number of additional hashing
  25563                                            configuration */
  25564     bcm_field_context_hash_config_t additional_hash_config[BCM_FIELD_NUMBER_OF_HASH_KEYS]; /* Additional hashing configuration
  25565                                            params. */
  25566 } bcm_field_context_hash_info_t;
  25567 
  25568 /* 
  25569  * This structure holds detailed info for keys, which should be compared
  25570  * needed for bcm_field_context_compare_create() function.
  25571  */
  25572 typedef struct bcm_field_context_compare_info_s {
  25573     bcm_field_context_key_info_t first_key_info; /* The information for the first key. */
  25574     bcm_field_context_key_info_t second_key_info; /* The information for the second key. */
  25575 } bcm_field_context_compare_info_t;
  25576 
  25577 /* Initialize the bcm_field_context_hash_info_t structure. */
  25578 extern void bcm_field_context_hash_info_t_init(
  25579     bcm_field_context_hash_info_t *hash_info);
  25580 
  25581 #ifndef BCM_HIDE_DISPATCHABLE
  25582 
  25583 /* 
  25584  * This function is used to create, allocate all resources and configure
  25585  * HASH key which is used to create CRC.
  25586  */
  25587 extern int bcm_field_context_hash_create(
  25588     int unit, 
  25589     uint32 flags, 
  25590     bcm_field_stage_t stage, 
  25591     bcm_field_context_t context_id, 
  25592     bcm_field_context_hash_info_t *hash_info);
  25593 
  25594 /* This function gets HASH info of a specific context. */
  25595 extern int bcm_field_context_hash_info_get(
  25596     int unit, 
  25597     bcm_field_stage_t stage, 
  25598     bcm_field_context_t context_id, 
  25599     bcm_field_context_hash_info_t *hash_info);
  25600 
  25601 /* 
  25602  * Destroy HASH key which is used to create CRC, deallocate all resources
  25603  * allocated by bcm_field_context_hash_create.
  25604  */
  25605 extern int bcm_field_context_hash_destroy(
  25606     int unit, 
  25607     bcm_field_stage_t stage, 
  25608     bcm_field_context_t context_id);
  25609 
  25610 #endif /* BCM_HIDE_DISPATCHABLE */
  25611 
  25612 /* Initialize the bcm_field_context_compare_info_t structure. */
  25613 extern void bcm_field_context_compare_info_t_init(
  25614     bcm_field_context_compare_info_t *compare_info);
  25615 
  25616 #ifndef BCM_HIDE_DISPATCHABLE
  25617 
  25618 /* 
  25619  * This function is used to set up to two pairs of keys for comparison
  25620  * for a given context.
  25621  */
  25622 extern int bcm_field_context_compare_create(
  25623     int unit, 
  25624     uint32 flags, 
  25625     bcm_field_stage_t stage, 
  25626     bcm_field_context_t context_id, 
  25627     uint32 pair_id, 
  25628     bcm_field_context_compare_info_t *cmp_info);
  25629 
  25630 /* 
  25631  * This function returns information for a specific pair of keys which
  25632  * used for comparison in a given context.
  25633  */
  25634 extern int bcm_field_context_compare_info_get(
  25635     int unit, 
  25636     bcm_field_stage_t stage, 
  25637     bcm_field_context_t context_id, 
  25638     uint32 pair_id, 
  25639     bcm_field_context_compare_info_t *cmp_info);
  25640 
  25641 /* Destroys the compare keys in the given context. */
  25642 extern int bcm_field_context_compare_destroy(
  25643     int unit, 
  25644     bcm_field_stage_t stage, 
  25645     bcm_field_context_t context_id, 
  25646     uint32 pair_id);
  25647 
  25648 #endif /* BCM_HIDE_DISPATCHABLE */
  25649 
  25650 /* 
  25651  * List of all TCAM PP Databases. This enum is used as an input to part
  25652  * of field TCAM functions to provide field TCAM functionaity to static
  25653  * TCAM PP Databases.
  25654  */
  25655 typedef enum bcm_field_app_db_e {
  25656     bcmFieldAppDbInvalid = 0,           /* Invalid Param. */
  25657     bcmFieldAppDbFirst = 1,             /* First valid value (used for indexing) */
  25658     bcmFieldAppDbVlanPort = bcmFieldAppDbFirst, /* IN_AC_TCAM_DB */
  25659     bcmFieldAppDbIpmcV4 = 2,            /* IPV4_MULTICAST_TCAM_FORWARD */
  25660     bcmFieldAppDbIpmcV6 = 3,            /* IPV6_MULTICAST_TCAM_FORWARD */
  25661     bcmFieldAppDbTunnelTerminatorV4 = 4, /* IPV4_TT_TCAM_BASIC */
  25662     bcmFieldAppDbTunnelTerminatorBudV4 = 5, /* IPV4_TT_TCAM_2ND_PASS */
  25663     bcmFieldAppDbTunnelTerminatorV6 = 6, /* IPV6_MP_TT_TCAM_BASIC */
  25664     bcmFieldAppDbTunnelTerminatorBudV6 = 7, /* IPV6_MP_TT_TCAM_2ND_PASS */
  25665     bcmFieldAppDbMplsFrr = 8,           /* MPLS_FRR_TCAM_DB */
  25666     bcmFieldAppDbOamIdentification = 9, /* OAM_TCAM_IDENTIFICATION_DB */
  25667     bcmFieldAppDbL3VPbrV4 = 10,         /* IPV4_VRF_DB_TCAM */
  25668     bcmFieldAppDbL3VPbrV6 = 11,         /* IPV6_VRF_DB_TCAM */
  25669     bcmFieldAppDbCount                  /* Should be last */
  25670 } bcm_field_app_db_t;
  25671 
  25672 /* 
  25673  * This function holds information needed by the bank operation
  25674  * (add/evacuate) APIs, it contains the field group ID or the TCAM APP ID
  25675  * to add/evacuate the banks to/from (only one can be set, but not both),
  25676  * and the list of the banks to do the operation on
  25677  */
  25678 typedef struct bcm_field_tcam_bank_info_s {
  25679     bcm_field_group_t fg_id;            /* FG-ID */
  25680     bcm_field_app_db_t pp_app;          /* PP-APP */
  25681     int nof_banks;                      /* Number of banks to evacuate */
  25682     int tcam_bank_ids[BCM_FIELD_NUMBER_OF_TCAM_BANKS]; /* Array that holds the TCAM bank IDs to
  25683                                            be evacuated */
  25684 } bcm_field_tcam_bank_info_t;
  25685 
  25686 /* Initialize the bcm_field_tcam_bank_info_t structure. */
  25687 extern void bcm_field_tcam_bank_info_t_init(
  25688     bcm_field_tcam_bank_info_t *bank_info);
  25689 
  25690 #ifndef BCM_HIDE_DISPATCHABLE
  25691 
  25692 /* 
  25693  * Evacuates the given fg_id OR pp_app from the bank IDs that are given
  25694  * in evac_info struct.
  25695  * The evacuation process involves moving the entries of the given fg_id
  25696  * from the targeted banks to other banks allocated by the fg_id,
  25697  * if not enough space is available for moving the entries, this function
  25698  * fails.
  25699  */
  25700 extern int bcm_field_tcam_bank_evacuate(
  25701     int unit, 
  25702     uint32 flags, 
  25703     bcm_field_tcam_bank_info_t *evac_info);
  25704 
  25705 /* 
  25706  * Adds the given bank IDs to the given fg_id OR pp_app that are given in
  25707  * add_info struct.
  25708  */
  25709 extern int bcm_field_tcam_bank_add(
  25710     int unit, 
  25711     uint32 flags, 
  25712     bcm_field_tcam_bank_info_t *add_info);
  25713 
  25714 #endif /* BCM_HIDE_DISPATCHABLE */
  25715 
  25716 /* 
  25717  * ACE Format ID. Used to indicate the ID of an ACE format and the result
  25718  * type of its entries.
  25719  */
  25720 typedef uint8 bcm_field_ace_format_t;
  25721 
  25722 /* 
  25723  * This structure represents a single context_payload element. This is an
  25724  * abstract structure used only by other structures, like
  25725  * bcm_field_group_attach_info_t, as a uniformed way to define
  25726  * context_payloads.
  25727  */
  25728 typedef struct bcm_field_ace_format_info_s {
  25729     int nof_actions;                    /* Number of valid actions in the action
  25730                                            set of ACE format. */
  25731     bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to
  25732                                            matching entries for this action set.
  25733                                            BCM level action look at
  25734                                            bcm_field_action_t for more info. */
  25735     int action_with_valid_bit[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* If set, then additional bit is added
  25736                                            in payload to indicate weather this
  25737                                            action is valid. */
  25738     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  25739 } bcm_field_ace_format_info_t;
  25740 
  25741 /* Initialize the bcm_field_ace_format_info_t structure. */
  25742 extern void bcm_field_ace_format_info_t_init(
  25743     bcm_field_ace_format_info_t *ace_format_info);
  25744 
  25745 #ifndef BCM_HIDE_DISPATCHABLE
  25746 
  25747 /* 
  25748  * This function adds new ACE field format to Egress-PMF stage. This
  25749  * format uses an ACE table (PPMC table) lookup for MC replication
  25750  * entries and ACE pointers.Aligns field group add and field group
  25751  * context attach.
  25752  */
  25753 extern int bcm_field_ace_format_add(
  25754     int unit, 
  25755     uint32 flags, 
  25756     bcm_field_ace_format_info_t *ace_format_info, 
  25757     bcm_field_ace_format_t *ace_format_id );
  25758 
  25759 /* Get the information about a specific ACE format. */
  25760 extern int bcm_field_ace_format_info_get(
  25761     int unit, 
  25762     bcm_field_ace_format_t ace_format_id, 
  25763     bcm_field_ace_format_info_t *ace_format_info);
  25764 
  25765 /* 
  25766  * This function deletes an ACE format, deallocates all relevant
  25767  * resources.
  25768  */
  25769 extern int bcm_field_ace_format_delete(
  25770     int unit, 
  25771     bcm_field_ace_format_t ace_format_id);
  25772 
  25773 #endif /* BCM_HIDE_DISPATCHABLE */
  25774 
  25775 /* This structure holds detailed info for ACE field entry. */
  25776 typedef struct bcm_field_ace_entry_info_s {
  25777     int nof_entry_actions;              /* Number of valid actions in the ACE
  25778                                            field entry. */
  25779     bcm_field_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type,
  25780                                            value.. */
  25781 } bcm_field_ace_entry_info_t;
  25782 
  25783 /* Initialize the bcm_field_ace_entry_info_t structure. */
  25784 extern void bcm_field_ace_entry_info_t_init(
  25785     bcm_field_ace_entry_info_t *entry_info);
  25786 
  25787 #ifndef BCM_HIDE_DISPATCHABLE
  25788 
  25789 /* This function adds new entry in hardware to indicated ACE format. */
  25790 extern int bcm_field_ace_entry_add(
  25791     int unit, 
  25792     uint32 flags, 
  25793     bcm_field_ace_format_t ace_format_id , 
  25794     bcm_field_ace_entry_info_t *entry_info, 
  25795     uint32 *entry_handle);
  25796 
  25797 /* 
  25798  * This function retrieves the entry information of a specific ACE Format
  25799  * ID.
  25800  */
  25801 extern int bcm_field_ace_entry_info_get(
  25802     int unit, 
  25803     uint32 entry_handle, 
  25804     bcm_field_ace_entry_info_t *entry_info);
  25805 
  25806 /* This function deletes an ACE entry from hardware. */
  25807 extern int bcm_field_ace_entry_delete(
  25808     int unit, 
  25809     uint32 entry_handle);
  25810 
  25811 #endif /* BCM_HIDE_DISPATCHABLE */
  25812 
  25813 /* 
  25814  * Indicates the first user action id to avoid overlapping with static
  25815  * ones.
  25816  */
  25817 #define BCM_FIELD_FIRST_USER_ACTION_ID  (2048)     
  25818 
  25819 /* 
  25820  * Indicates the first user qualifier id to avoid overlapping with static
  25821  * ones
  25822  */
  25823 #define BCM_FIELD_FIRST_USER_QUALIFIER_ID   (2048)     
  25824 
  25825 /* Calculates the User Defined action id. */
  25826 #define BCM_FIELD_ACTION_ID_MAP(user_action_id)  (BCM_FIELD_FIRST_USER_ACTION_ID + user_action_id) 
  25827 
  25828 /* Calculates the User Defined qualifier id. */
  25829 #define BCM_FIELD_QUALIFIER_ID_MAP(user_qualifier_id)  (BCM_FIELD_FIRST_USER_QUALIFIER_ID + user_qualifier_id) 
  25830 
  25831 /* 
  25832  * This enum contains all 'param_type' values that can be passed to the
  25833  * bcm_field_context_param_set() function.
  25834  */
  25835 typedef enum bcm_field_context_param_type_e {
  25836     bcmFieldContextParamTypeFirst = 0,  /* Invalid Param. */
  25837     bcmFieldContextParamTypeSystemHeaderProfile = bcmFieldContextParamTypeFirst, /* Selects a system header profile to
  25838                                            determine which headers will be
  25839                                            appended to packets matching the
  25840                                            context. */
  25841     bcmFieldContextParamTypeSystemHeaderStrip = 1, /* Packet strip parameters - bytes and
  25842                                            headers to remove. */
  25843     bcmFieldContextParamTypeKeyVal = 2, /* Set a constant value that can be used
  25844                                            as qualifier for lookups performed by
  25845                                            the context. */
  25846     bcmFieldContextParamTypeFlushLearnEnable = 3, /* Enable Flush learning. */
  25847     bcmFieldContextParamCount = 4       /* Always last. Not a usable value. */
  25848 } bcm_field_context_param_type_t;
  25849 
  25850 /* 
  25851  * This structure holds all parameters, which can be set by
  25852  * bcm_field_context_param_set() for a specific context.
  25853  */
  25854 typedef struct bcm_field_context_param_info_s {
  25855     bcm_field_context_param_type_t param_type; /* The type of the parameter to set. */
  25856     uint32 param_arg;                   /* Extra arg for the parameter to set. */
  25857     uint32 param_val;                   /* The value to set for the given
  25858                                            parameter. */
  25859 } bcm_field_context_param_info_t;
  25860 
  25861 /* Initialize the bcm_field_context_param_info_t structure. */
  25862 extern void bcm_field_context_param_info_t_init(
  25863     bcm_field_context_param_info_t *context_params);
  25864 
  25865 #ifndef BCM_HIDE_DISPATCHABLE
  25866 
  25867 /* This function sets specific attribute value for a context. */
  25868 extern int bcm_field_context_param_set(
  25869     int unit, 
  25870     uint32 flags, 
  25871     bcm_field_stage_t stage, 
  25872     bcm_field_context_t context_id, 
  25873     bcm_field_context_param_info_t *context_params);
  25874 
  25875 #endif /* BCM_HIDE_DISPATCHABLE */
  25876 
  25877 /* Container of 4-bits identifiers of a FEM. */
  25878 typedef uint8 bcm_field_fem_id_t;
  25879 
  25880 /* 
  25881  * Indicates the maximum number of conditions per FEM(Field Extraction
  25882  * Macro).
  25883  */
  25884 #define BCM_FIELD_NUMBER_OF_CONDITIONS_PER_FEM (16)       
  25885 
  25886 /* 
  25887  * Indicates the maximum number of extractions per FEM(Field Extraction
  25888  * Macro).
  25889  */
  25890 #define BCM_FIELD_NUMBER_OF_EXTRACTIONS_PER_FEM (4)        
  25891 
  25892 /* 
  25893  * Indicates the maximum number of mapping bits per FEM(Field Extraction
  25894  * Macro).
  25895  */
  25896 #define BCM_FIELD_NUMBER_OF_MAPPING_BITS_PER_FEM (24)       
  25897 
  25898 /* 
  25899  * This Enum used to select the source type for the output bit of action
  25900  * extraction.
  25901  */
  25902 typedef enum bcm_field_fem_extraction_output_source_type_e {
  25903     bcmFieldFemExtractionOutputSourceTypeFirst = 0, /* Invalid Param. */
  25904     bcmFieldFemExtractionOutputSourceTypeForce = bcmFieldFemExtractionOutputSourceTypeFirst, /* Use a constant value for this bit. */
  25905     bcmFieldFemExtractionOutputSourceTypeKey = 1, /* Use a bit from the input key. */
  25906     bcmFieldFemExtractionOutputSourceTypeCount = 2 /* Always last. Not a usable value. */
  25907 } bcm_field_fem_extraction_output_source_type_t;
  25908 
  25909 /* This structure holds detailed info for FEM condition info. */
  25910 typedef struct bcm_field_fem_extraction_output_bit_s {
  25911     bcm_field_fem_extraction_output_source_type_t source_type; /* Output source type. */
  25912     uint8 offset;                       /* Offset from key select. */
  25913     uint8 forced_value;                 /* Force bit value in case source type
  25914                                            == force. */
  25915 } bcm_field_fem_extraction_output_bit_t;
  25916 
  25917 /* This structure holds detailed info for FEM extraction info. */
  25918 typedef struct bcm_field_fem_extraction_s {
  25919     bcm_field_action_t action_type;     /* Action type to be performed by this
  25920                                            extraction. */
  25921     bcm_field_fem_extraction_output_bit_t output_bit[BCM_FIELD_NUMBER_OF_MAPPING_BITS_PER_FEM]; /* Array of extraction commands. Each
  25922                                            extract 1 bit of the action value. */
  25923     uint32 increment;                   /* Add a constant value to the result of
  25924                                            the extraction. */
  25925 } bcm_field_fem_extraction_t;
  25926 
  25927 /* This structure holds detailed info for FEM condition info. */
  25928 typedef struct bcm_field_fem_condition_s {
  25929     uint8 extraction_id;    /* Choose one of 4 action extraction tables that
  25930                                will produce an action. */
  25931     uint8 is_action_valid;  /* If TRUE, the FEM will produce an action for the
  25932                                given 4 bits word. */
  25933 } bcm_field_fem_condition_t;
  25934 
  25935 /* This structure holds detailed info for FEM input info. */
  25936 typedef struct bcm_field_fem_input_info_s {
  25937     uint8 input_offset;                 /* Offset inside the FG-ID result
  25938                                            buffer. The FEM input is 32 bits
  25939                                            long.  When the FG result buffer is
  25940                                            longer than 32 bits, offset is
  25941                                            required (in resolution of 16 bits). */
  25942     bcm_field_group_t overriding_fg_id; /* If valid FG-ID,  override the main
  25943                                            group result buffer with 16 bits
  25944                                            result from this specified TCAM-FG
  25945                                            result. */
  25946 } bcm_field_fem_input_info_t;
  25947 
  25948 /* This structure holds detailed info for FEM action info. */
  25949 typedef struct bcm_field_fem_action_info_s {
  25950     bcm_field_fem_input_info_t fem_input; /* Structure holds all FEM input
  25951                                            information. */
  25952     uint8 condition_msb;                /* Select the MSB of a 4 bit chunk that
  25953                                            will choose extraction tables ID
  25954                                            taken from the 32 input bits selected
  25955                                            by input offset (range of 3-31). */
  25956     bcm_field_fem_condition_t fem_condition[BCM_FIELD_NUMBER_OF_CONDITIONS_PER_FEM]; /* Array of structures, each describing
  25957                                            the condition information for the
  25958                                            FEM. */
  25959     bcm_field_fem_extraction_t fem_extraction[BCM_FIELD_NUMBER_OF_EXTRACTIONS_PER_FEM]; /* Array of structures, each describes
  25960                                            the extraction information for the
  25961                                            FEM,action combination including
  25962                                            action type, how to construct the
  25963                                            action values out of the 32 input 
  25964                                            bits, and option for an increment for
  25965                                            adding constant value for the result
  25966                                            of the extraction. */
  25967 } bcm_field_fem_action_info_t;
  25968 
  25969 /* Initialize the bcm_field_fem_action_info_t structure. */
  25970 extern void bcm_field_fem_action_info_t_init(
  25971     bcm_field_fem_action_info_t *fem_action_info);
  25972 
  25973 #ifndef BCM_HIDE_DISPATCHABLE
  25974 
  25975 /* 
  25976  * This function adds FEM machine as a resource to a specific field
  25977  * group.
  25978  */
  25979 extern int bcm_field_fem_action_add(
  25980     int unit, 
  25981     uint32 flags, 
  25982     bcm_field_group_t fg_id, 
  25983     bcm_field_action_priority_t encoded_position, 
  25984     bcm_field_fem_action_info_t *fem_action_info);
  25985 
  25986 /* 
  25987  * This function give the caller all info concerning contents of FEM
  25988  * machine's HW and, also, some SW values (SWSTATE).
  25989  */
  25990 extern int bcm_field_fem_action_info_get(
  25991     int unit, 
  25992     bcm_field_group_t fg_id, 
  25993     bcm_field_action_priority_t encoded_position, 
  25994     bcm_field_fem_action_info_t *fem_action_info);
  25995 
  25996 /* 
  25997  * This function sets FEM machine's HW and SW values (SWSTATE) to initial
  25998  * values.
  25999  */
  26000 extern int bcm_field_fem_action_delete(
  26001     int unit, 
  26002     bcm_field_group_t fg_id, 
  26003     bcm_field_action_priority_t bcm_field_action_priority_t);
  26004 
  26005 #endif /* BCM_HIDE_DISPATCHABLE */
  26006 
  26007 /* Opaque handle to a bitwie OR mask of an EFES. */
  26008 typedef uint32 bcm_field_efes_action_or_mask_t;
  26009 
  26010 /* Indicates the maximum number of conditions per EFES. */
  26011 #define BCM_FIELD_NUMBER_OF_CONDITIONS_PER_EFES (4)        
  26012 
  26013 /* 
  26014  * This structure holds info for EFES configuration for one combination
  26015  * of the condition bits.
  26016  */
  26017 typedef struct bcm_field_efes_condition_conf_s {
  26018     uint8 is_action_valid;              /* If false, under this condition no
  26019                                            action will take place (and all other
  26020                                            fields are irrelevant). */
  26021     bcm_field_action_t action_type;     /* The action type to perform. */
  26022     int action_lsb;                     /* The starting offset (from the LSB of
  26023                                            the field group) of the bits to
  26024                                            extract from the input to the action,
  26025                                            not including valid bit. */
  26026     int action_nof_bits;                /* The number of bits to extract from
  26027                                            the input to the action, not
  26028                                            including valid bit. */
  26029     uint8 action_with_valid_bit;        /* Whether or not to use valid bit. If
  26030                                            we use valid bit, itwill be placed
  26031                                            one bit before action_lsb. */
  26032     uint8 valid_bit_polarity;           /* If we use valid bit, what value (zero
  26033                                            or one) will indicate that the action
  26034                                            should take place. */
  26035     bcm_field_efes_action_or_mask_t action_or_mask; /* A bitwise OR mask that perfroms an OR
  26036                                            with the output of the EFES. */
  26037 } bcm_field_efes_condition_conf_t;
  26038 
  26039 /* 
  26040  * This structure holds info for EFES configuration for one combination
  26041  * of the condition bits.
  26042  */
  26043 typedef struct bcm_field_efes_action_info_s {
  26044     uint8 is_condition_valid;           /* Whether we use the 2MSB feature for
  26045                                            condition bits. */
  26046     int condition_msb;                  /* The offset (from the LSB of the field
  26047                                            group) of the MSB of the condition
  26048                                            bits, if is_condition_valid is true. */
  26049     bcm_field_efes_condition_conf_t efes_condition_conf[BCM_FIELD_NUMBER_OF_CONDITIONS_PER_EFES]; /* Array of structures, each describing
  26050                                            the configuration for a specific
  26051                                            conbination of the condition bits. If
  26052                                            is_condition_valid is false, only the
  26053                                            first element is relevant. */
  26054 } bcm_field_efes_action_info_t;
  26055 
  26056 /* Initialize the bcm_field_efes_action_info_t structure. */
  26057 extern void bcm_field_efes_action_info_t_init(
  26058     bcm_field_efes_action_info_t *efes_action_info);
  26059 
  26060 #ifndef BCM_HIDE_DISPATCHABLE
  26061 
  26062 /* This function adds an EFES to a specific field group and context pair. */
  26063 extern int bcm_field_efes_action_add(
  26064     int unit, 
  26065     uint32 flags, 
  26066     bcm_field_group_t fg_id, 
  26067     bcm_field_context_t context_id, 
  26068     bcm_field_action_priority_t *encoded_position, 
  26069     bcm_field_efes_action_info_t *efes_action_info);
  26070 
  26071 /* 
  26072  * This function give the caller all info concerning contents of an EFES
  26073  * that was added with bcm_field_efes_action_add().
  26074  */
  26075 extern int bcm_field_efes_action_info_get(
  26076     int unit, 
  26077     bcm_field_group_t fg_id, 
  26078     bcm_field_context_t context_id, 
  26079     bcm_field_action_priority_t encoded_position, 
  26080     bcm_field_efes_action_info_t *efes_action_info);
  26081 
  26082 /* 
  26083  * This function deletes an EFES that was added with
  26084  * bcm_field_efes_action_add().
  26085  */
  26086 extern int bcm_field_efes_action_delete(
  26087     int unit, 
  26088     bcm_field_group_t fg_id, 
  26089     bcm_field_context_t context_id, 
  26090     bcm_field_action_priority_t bcm_field_action_priority_t);
  26091 
  26092 #endif /* BCM_HIDE_DISPATCHABLE */
  26093 
  26094 /* 
  26095  * The mask of position of the preferred location within the FES-FEM
  26096  * array.
  26097  */
  26098 #define BCM_FIELD_ACTION_POSITION_MASK  (0xFFFF)   
  26099 
  26100 /* 
  26101  * The mask of priority of the preferred location within the FES-FEM
  26102  * array.
  26103  */
  26104 #define BCM_FIELD_ACTION_PRIORITY_MASK  (0xFFFF)   
  26105 
  26106 /* The mask of the preferred FES-FEM array. */
  26107 #define BCM_FIELD_ACTION_ARRAY_MASK (0xF)      
  26108 
  26109 /* The offset of the preferred FES-FEM array. */
  26110 #define BCM_FIELD_ACTION_ARRAY_OFFSET   (16)       
  26111 
  26112 /* The offset inside the FES-FEM array, where the valid bid is located. */
  26113 #define BCM_FIELD_ACTION_VALID_OFFSET   (31)       
  26114 
  26115 /* 
  26116  * The value of the bit is reserved for BCM_FIELD_ACTION_DONT_CARE 'don't
  26117  * care'. 0 means we care about position.
  26118  */
  26119 #define BCM_FIELD_ACTION_DONT_CARE_OFFSET   (30)       
  26120 
  26121 /* 
  26122  * The action priority used to indicate that we don't care about the
  26123  * priority.
  26124  */
  26125 #define BCM_FIELD_ACTION_DONT_CARE  ((1U << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | (1U << BCM_FIELD_ACTION_VALID_OFFSET)) 
  26126 
  26127 /* 
  26128  * The action priority used to indicate that we do not want the action to
  26129  * take place (no EFES is allocated for it).
  26130  */
  26131 #define BCM_FIELD_ACTION_INVALIDATE (1 << (BCM_FIELD_ACTION_VALID_OFFSET - 1)) 
  26132 
  26133 /* 
  26134  * Flag to indicate position or priority. 1 means we indicate a specific
  26135  * position. 0 means we indicate a numerical priority.
  26136  */
  26137 #define BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET (20)       
  26138 
  26139 #define BCM_FIELD_ACTION_POSITION(_array_id_, _position_)  \
  26140     (((((bcm_field_action_priority_t) (_position_)) & BCM_FIELD_ACTION_POSITION_MASK) | \
  26141       ((((bcm_field_action_priority_t) (_array_id_)) & BCM_FIELD_ACTION_ARRAY_MASK) \
  26142          << BCM_FIELD_ACTION_ARRAY_OFFSET) | \
  26143         (1 << BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET) | \
  26144         ((0 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | \
  26145         (1U << BCM_FIELD_ACTION_VALID_OFFSET)))) 
  26146 
  26147 #define BCM_FIELD_ACTION_PRIORITY(_array_id_, _priority_)  \
  26148     (((((bcm_field_action_priority_t) (_priority_)) & BCM_FIELD_ACTION_PRIORITY_MASK) | \
  26149       (((bcm_field_action_priority_t) (_array_id_)) << BCM_FIELD_ACTION_ARRAY_OFFSET) | \
  26150         (0 << BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET) | \
  26151         ((0 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | \
  26152         (1U << BCM_FIELD_ACTION_VALID_OFFSET)))) 
  26153 
  26154 /* 
  26155  * The Enum described the system header profile types, which are used in
  26156  * order to build the appropriate system headers in the Ingress Transmit
  26157  * unit.
  26158  */
  26159 typedef enum bcm_field_system_header_profile_e {
  26160     bcmFieldSystemHeaderProfileFirst = 0, /* Invalid Param. */
  26161     bcmFieldSystemHeaderProfileNone = bcmFieldSystemHeaderProfileFirst, /* No system Headers. */
  26162     bcmFieldSystemHeaderProfileFtmh = 1, /* FTMH only. */
  26163     bcmFieldSystemHeaderProfileFtmhPph = 2, /* FTMH + PP header. */
  26164     bcmFieldSystemHeaderProfileFtmhTsh = 3, /* FTMH + Timestamp header. */
  26165     bcmFieldSystemHeaderProfileFtmhTshPph = 4, /* FTMH +Timestamp +PP header. */
  26166     bcmFieldSystemHeaderProfileFtmhTshPphUdh = 5, /* FTMH +Timestamp +PP header + User
  26167                                            defined Header. Used for Ethernet
  26168                                            header. */
  26169     bcmFieldSystemHeaderProfileFtmhUdh = 6, /* FTMH + User defined Header. */
  26170     bcmFieldSystemHeaderProfileCount = 7 /* Always last. Not a usable value. */
  26171 } bcm_field_system_header_profile_t;
  26172 
  26173 #define BCM_FIELD_SYSTEM_HEADER_PROFILE_STRINGS \
  26174 { \
  26175     "None", \
  26176     "Ftmh", \
  26177     "FtmhPph", \
  26178     "FtmhTsh", \
  26179     "FtmhTshPph", \
  26180     "FtmhTshPphUdh", \
  26181     "FtmhUdh"  \
  26182 }
  26183 
  26184 /* Range Qualifier Types */
  26185 typedef enum bcm_field_range_type_e {
  26186     bcmFieldRangeTypeFirst = 0,         /* Invalid Param. */
  26187     bcmFieldRangeTypeL4SrcPort = bcmFieldRangeTypeFirst, /* L4 Source Port Range Qualifier. */
  26188     bcmFieldRangeTypeL4DstPort = 1,     /*  L4 Destination Port Range Qualifier. */
  26189     bcmFieldRangeTypeOutVport = 2,      /* Egress Virtual Port Range Qualifier. */
  26190     bcmFieldRangeTypePacketHeaderSize = 3, /* Packet Header Size Range Qualifier. */
  26191     bcmFieldRangeTypeL4OpsPacketHeaderSize = 4, /* Packet Header Size Range Qualifier
  26192                                            for L4 OPS. */
  26193     bcmFieldRangeTypeInTTL = 5,         /* In TTL Range Qualifier */
  26194     bcmFieldRangeTypeUserDefined1Low = 6, /* User-Defined-1 Low (16b) Range
  26195                                            Qualifier */
  26196     bcmFieldRangeTypeUserDefined1High = 7, /* User-Defined-1 High (16b) Range
  26197                                            Qualifier */
  26198     bcmFieldRangeTypeUserDefined2Low = 8, /* User-Defined-2 Low (16b) Range
  26199                                            Qualifier */
  26200     bcmFieldRangeTypeUserDefined2High = 9, /* User-Defined-2 High (16b) Range
  26201                                            Qualifier */
  26202     bcmFieldRangeTypeCount = 10         /* Always last. Not a usable value. */
  26203 } bcm_field_range_type_t;
  26204 
  26205 #define BCM_FIELD_RANGE_TYPE_STR \
  26206 { \
  26207     "L4SrcPort", \
  26208     "L4DstPort", \
  26209     "OutVport", \
  26210     "PacketHeaderSize", \
  26211     "L4OpsPacketHeaderSize", \
  26212     "InTTL", \
  26213     "UserDefined1Low", \
  26214     "UserDefined1High", \
  26215     "UserDefined2Low", \
  26216     "UserDefined2High"  \
  26217 }
  26218 
  26219 /* 
  26220  * This structure holds the info about range configuration, needed for
  26221  * bcm_field_range_set API.
  26222  */
  26223 typedef struct bcm_field_range_info_s {
  26224     bcm_field_range_type_t range_type;  /* Range type */
  26225     uint32 min_val;                     /* Minimum value of the range. */
  26226     uint32 max_val;                     /* Maximum value of the range. */
  26227 } bcm_field_range_info_t;
  26228 
  26229 #ifndef BCM_HIDE_DISPATCHABLE
  26230 
  26231 /* Set new Field Range used for range qualifier. */
  26232 extern int bcm_field_range_set(
  26233     int unit, 
  26234     uint32 flags, 
  26235     bcm_field_stage_t stage, 
  26236     bcm_field_range_t range_id, 
  26237     bcm_field_range_info_t *range_info);
  26238 
  26239 /* Set new Field Range used for range qualifier. */
  26240 extern int bcm_field_range_info_get(
  26241     int unit, 
  26242     bcm_field_stage_t stage, 
  26243     bcm_field_range_t *range_id, 
  26244     bcm_field_range_info_t *range_info);
  26245 
  26246 /* Get the offset of the qualifier in the key. */
  26247 extern int bcm_field_group_qualifier_offset_get(
  26248     int unit, 
  26249     uint32 flags, 
  26250     bcm_field_group_t fg_id, 
  26251     bcm_field_qualify_t qualifier, 
  26252     int *offset);
  26253 
  26254 /* Get the offset of the action in the action payload. */
  26255 extern int bcm_field_group_action_offset_get(
  26256     int unit, 
  26257     uint32 flags, 
  26258     bcm_field_group_t fg_id, 
  26259     bcm_field_action_t action, 
  26260     int *offset);
  26261 
  26262 #endif /* BCM_HIDE_DISPATCHABLE */
  26263 
  26264 /* Forwarding Layer Types. */
  26265 typedef enum bcm_field_layer_type_e {
  26266     bcmFieldLayerTypeFirst = 0, 
  26267     bcmFieldLayerTypeEth = bcmFieldLayerTypeFirst, 
  26268     bcmFieldLayerTypeIp4 = 1, 
  26269     bcmFieldLayerTypeIp6 = 2, 
  26270     bcmFieldLayerTypeMpls = 3, 
  26271     bcmFieldLayerTypeMplsUa = 4, 
  26272     bcmFieldLayerTypeArp = 5, 
  26273     bcmFieldLayerTypeFcoe = 6, 
  26274     bcmFieldLayerTypeTcp = 7, 
  26275     bcmFieldLayerTypeUdp = 8, 
  26276     bcmFieldLayerTypeBfdSingleHop = 9, 
  26277     bcmFieldLayerTypeBfdMultiHop = 10, 
  26278     bcmFieldLayerTypePtpEvent = 11, 
  26279     bcmFieldLayerTypePtpGeneral = 12, 
  26280     bcmFieldLayerTypeY1731 = 13, 
  26281     bcmFieldLayerTypeIcmp = 14, 
  26282     bcmFieldLayerTypeBierTi = 15, 
  26283     bcmFieldLayerTypeBierMpls = 16, 
  26284     bcmFieldLayerTypeRch = 17, 
  26285     bcmFieldLayerTypePppoe = 18, 
  26286     bcmFieldLayerTypeSrv6Endpoint = 19, 
  26287     bcmFieldLayerTypeSrv6Beyond = 20, 
  26288     bcmFieldLayerTypeIgmp = 21, 
  26289     bcmFieldLayerTypeIpAny = 22, 
  26290     bcmFieldLayerTypeGre = 23, 
  26291     bcmFieldLayerTypeLt2pv3 = 24, 
  26292     bcmFieldLayerTypeVxlanGpe = 25, 
  26293     bcmFieldLayerTypeVxlan = 26, 
  26294     bcmFieldLayerTypeGeneve = 27, 
  26295     bcmFieldLayerTypeIpt = 28, 
  26296     bcmFieldLayerTypeTm = 29, 
  26297     bcmFieldLayerTypeUnknown = 30, 
  26298     bcmFieldLayerTypeTmLegacy = 31, 
  26299     bcmFieldLayerTypeSctp = 32, 
  26300     bcmFieldLayerTypeForwardingMPLS = 33, 
  26301     bcmFieldLayerTypeGtp = 34, 
  26302     bcmFieldLayerTypeCount = 35         /* Always last. Not a usable value. */
  26303 } bcm_field_layer_type_t;
  26304 
  26305 #define BCM_FIELD_LAYER_TYPE_STRINGS \
  26306 { \
  26307     "Eth", \
  26308     "Ip4", \
  26309     "Ip6", \
  26310     "Mpls", \
  26311     "MplsUa", \
  26312     "Arp", \
  26313     "Fcoe", \
  26314     "Tcp", \
  26315     "Udp", \
  26316     "BfdSingleHop", \
  26317     "BfdMultiHop", \
  26318     "PtpEvent", \
  26319     "PtpGeneral", \
  26320     "Y1731", \
  26321     "Icmp", \
  26322     "BierTi", \
  26323     "BierMpls", \
  26324     "Rch", \
  26325     "Pppoe", \
  26326     "Srv6Endpoint", \
  26327     "Srv6Beyond", \
  26328     "Igmp", \
  26329     "IpAny", \
  26330     "Gre", \
  26331     "Lt2pv3", \
  26332     "VxlanGpe", \
  26333     "Vxlan", \
  26334     "Geneve", \
  26335     "Ipt", \
  26336     "Tm", \
  26337     "Unknown", \
  26338     "TmLegacy", \
  26339     "Sctp", \
  26340     "ForwardingMPLS", \
  26341     "Gtp"  \
  26342 }
  26343 
  26344 /* Forwarding Context. */
  26345 typedef enum bcm_field_forward_context_e {
  26346     bcmFieldForwardContextFirst = 0, 
  26347     bcmFieldForwardContextEth = bcmFieldForwardContextFirst, 
  26348     bcmFieldForwardContextMirrorOrSs = 1, 
  26349     bcmFieldForwardContextIPv4UcR0 = 2, 
  26350     bcmFieldForwardContextIPv4McR0 = 3, 
  26351     bcmFieldForwardContextIPv6UcR0 = 4, 
  26352     bcmFieldForwardContextIPv6McR0 = 5, 
  26353     bcmFieldForwardContextBierMpls = 6, 
  26354     bcmFieldForwardContextBierTi = 7, 
  26355     bcmFieldForwardContextIngressTrapLegacy = 8, 
  26356     bcmFieldForwardContextCpuPort = 9, 
  26357     bcmFieldForwardContextRchEnc = 10, 
  26358     bcmFieldForwardContextRchPtchEnc = 11, 
  26359     bcmFieldForwardContextStackingPort = 12, 
  26360     bcmFieldForwardContextFcoeFcf = 13, 
  26361     bcmFieldForwardContextFcoeFcfVft = 14, 
  26362     bcmFieldForwardContextSrv6Endpoint = 15, 
  26363     bcmFieldForwardContextSrv6EndpointPsp = 16, 
  26364     bcmFieldForwardContextSrv6TunnelTerm = 17, 
  26365     bcmFieldForwardContextTm = 18, 
  26366     bcmFieldForwardContextRawProcessing = 19, 
  26367     bcmFieldForwardContextTdm = 20, 
  26368     bcmFieldForwardContextMplsInjectedFromOamp = 21, 
  26369     bcmFieldForwardContextErppTrap = 22, 
  26370     bcmFieldForwardContextDoNotEdit = 23, 
  26371     bcmFieldForwardContextMpls = 24, 
  26372     bcmFieldForwardContextIpv4UcR1 = 25, 
  26373     bcmFieldForwardContextIpv4McR1 = 26, 
  26374     bcmFieldForwardContextIpv6UcR1 = 27, 
  26375     bcmFieldForwardContextIpv6McR1 = 28, 
  26376     bcmFieldForwardContextCount = 29    /* Always last. Not a usable value. */
  26377 } bcm_field_forward_context_t;
  26378 
  26379 #define BCM_FIELD_FORWARD_CONTEXT_STRINGS \
  26380 { \
  26381     "Eth", \
  26382     "MirrorOrSs", \
  26383     "IPv4UcR0", \
  26384     "IPv4McR0", \
  26385     "IPv6UcR0", \
  26386     "IPv6McR0", \
  26387     "BierMpls", \
  26388     "BierTi", \
  26389     "IngressTrapLegacy", \
  26390     "CpuPort", \
  26391     "RchEnc", \
  26392     "RchPtchEnc", \
  26393     "StackingPort", \
  26394     "FcoeFcf", \
  26395     "FcoeFcfVft", \
  26396     "Srv6Endpoint", \
  26397     "Srv6EndpointPsp", \
  26398     "Srv6TunnelTerm", \
  26399     "Tm", \
  26400     "RawProcessing", \
  26401     "Tdm", \
  26402     "MplsInjectedFromOamp", \
  26403     "ErppTrap", \
  26404     "DoNotEdit", \
  26405     "Mpls", \
  26406     "Ipv4UcR1", \
  26407     "Ipv4McR1", \
  26408     "Ipv6UcR1", \
  26409     "Ipv6McR1"  \
  26410 }
  26411 
  26412 /* The place of is_meter bit inside the stat profile. */
  26413 #define BCM_FILED_STAT_IS_METER_SHIFT   (0)        
  26414 
  26415 /* The place of is_lm bit inside the stat profile. */
  26416 #define BCM_FILED_STAT_IS_LM_SHIFT  (1)        
  26417 
  26418 /* The place of stat type bits inside the stat profile. */
  26419 #define BCM_FILED_STAT_TYPE_SHIFT   (2)        
  26420 
  26421 /* The place, whre the valid bit is located, inside the stat profile. */
  26422 #define BCM_FILED_STAT_VALID_SHIFT  (4)        
  26423 
  26424 /* 
  26425  * Base value for Ingress based Field Processor stage Group/Entry/Presel
  26426  * Ids.
  26427  */
  26428 #define BCM_FIELD_IFP_ID_BASE   (0x00000000) 
  26429 
  26430 /* 
  26431  * Base value for Egress based Field Processor stage Group/Entry/Presel
  26432  * Ids.
  26433  */
  26434 #define BCM_FIELD_EFP_ID_BASE   (0x01000000) 
  26435 
  26436 /* 
  26437  * Base value for VLAN based Field Processor stage Group/Entry/Presel
  26438  * Ids.
  26439  */
  26440 #define BCM_FIELD_VFP_ID_BASE   (0x02000000) 
  26441 
  26442 /* 
  26443  * Base value for Exact Match based Field Processor stage
  26444  * Group/Entry/Presel Ids.
  26445  */
  26446 #define BCM_FIELD_EM_ID_BASE    (0x03000000) 
  26447 
  26448 /* 
  26449  * Base value for Flow Tracker based Field Processor stage
  26450  * Group/Entry/Presel Ids.
  26451  */
  26452 #define BCM_FIELD_FT_ID_BASE    (0x04000000) 
  26453 
  26454 /* Mask for stage Group/Entry/Presel Ids. */
  26455 #define BCM_FIELD_ID_MASK       (0x00FFFFFF) 
  26456 
  26457 /* Parameters info for Field Action. */
  26458 typedef struct bcm_field_action_params_s {
  26459     uint32 param0;      /* First Parameter to Action */
  26460     uint32 param1;      /* Second Parameter to Action */
  26461     uint32 param2;      /* Third Parameter to Action */
  26462     bcm_pbmp_t pbmp;    /* Port bitmap */
  26463 } bcm_field_action_params_t;
  26464 
  26465 /* Match configuration info for Field Action. */
  26466 typedef struct bcm_field_action_match_config_s {
  26467     uint8 elephant_pkt_only;    /* To match only elephant flows */
  26468     bcm_pbmp_t egr_pbmp;        /* Match Pbmp for Egress Port */
  26469 } bcm_field_action_match_config_t;
  26470 
  26471 #ifndef BCM_HIDE_DISPATCHABLE
  26472 
  26473 /* Add an action to a field entry */
  26474 extern int bcm_field_action_config_info_add(
  26475     int unit, 
  26476     bcm_field_entry_t entry, 
  26477     bcm_field_action_t action, 
  26478     bcm_field_action_params_t *params, 
  26479     bcm_field_action_match_config_t *match_config);
  26480 
  26481 /* 
  26482  * Retrieve the parameters for an action previously added to a field
  26483  * entry
  26484  */
  26485 extern int bcm_field_action_config_info_get(
  26486     int unit, 
  26487     bcm_field_entry_t entry, 
  26488     bcm_field_action_t action, 
  26489     bcm_field_action_params_t *params, 
  26490     bcm_field_action_match_config_t *match_config);
  26491 
  26492 /* 
  26493  * Configure match criteria for bcmFieldQualifyRangeCheckGroup
  26494  *         qualifier from the field entry.
  26495  */
  26496 extern int bcm_field_qualify_RangeCheckGroup(
  26497     int unit, 
  26498     bcm_field_entry_t entry, 
  26499     uint8 data, 
  26500     uint8 mask);
  26501 
  26502 /* 
  26503  * Get match criteria for bcmFieldQualifyRangeCheckGroup
  26504  *                qualifier from the field entry.
  26505  */
  26506 extern int bcm_field_qualify_RangeCheckGroup_get(
  26507     int unit, 
  26508     bcm_field_entry_t entry, 
  26509     uint8 *data, 
  26510     uint8 *mask);
  26511 
  26512 /* 
  26513  * Qualifies on Flow group id assigned(bcmFieldActionFlowtrackerGroupId)
  26514  * by FlowTracker based Field Processor Stage.
  26515  */
  26516 extern int bcm_field_qualify_FlowtrackerGroupId(
  26517     int unit, 
  26518     bcm_field_entry_t entry, 
  26519     int data, 
  26520     int mask);
  26521 
  26522 /* 
  26523  * To get the qualified inputs on Flow group id
  26524  * assigned(bcmFieldActionFlowtrackerGroupId) by FlowTracker based Field
  26525  * Processor Stage.
  26526  */
  26527 extern int bcm_field_qualify_FlowtrackerGroupId_get(
  26528     int unit, 
  26529     bcm_field_entry_t entry, 
  26530     int *data, 
  26531     int *mask);
  26532 
  26533 /* Qualifies on Classifier ID from Flowtracker group. */
  26534 extern int bcm_field_qualify_FlowtrackerClassId(
  26535     int unit, 
  26536     bcm_field_entry_t entry, 
  26537     int data, 
  26538     int mask);
  26539 
  26540 /* To get the qualified inputs on Classifier ID from Flowtracker group. */
  26541 extern int bcm_field_qualify_FlowtrackerClassId_get(
  26542     int unit, 
  26543     bcm_field_entry_t entry, 
  26544     int *data, 
  26545     int *mask);
  26546 
  26547 /* Qualifies on event Flowtracker group valid or not. */
  26548 extern int bcm_field_qualify_FlowtrackerGroupValid(
  26549     int unit, 
  26550     bcm_field_entry_t entry, 
  26551     uint8 data, 
  26552     uint8 mask);
  26553 
  26554 /* To get the qualified inputs on event Flowtracker group valid or not. */
  26555 extern int bcm_field_qualify_FlowtrackerGroupValid_get(
  26556     int unit, 
  26557     bcm_field_entry_t entry, 
  26558     uint8 *data, 
  26559     uint8 *mask);
  26560 
  26561 /* Qualifies on event whether Flowtracker flow tracking is disabled. */
  26562 extern int bcm_field_qualify_FlowtrackerDisabled(
  26563     int unit, 
  26564     bcm_field_entry_t entry, 
  26565     uint8 data, 
  26566     uint8 mask);
  26567 
  26568 /* 
  26569  * To get the qualified inputs on event whether Flowtracker flow tracking
  26570  * is disabled.
  26571  */
  26572 extern int bcm_field_qualify_FlowtrackerDisabled_get(
  26573     int unit, 
  26574     bcm_field_entry_t entry, 
  26575     uint8 *data, 
  26576     uint8 *mask);
  26577 
  26578 /* Qualifies on event whether Flowtracker metering is exceeded. */
  26579 extern int bcm_field_qualify_FlowtrackerMeteringExceeded(
  26580     int unit, 
  26581     bcm_field_entry_t entry, 
  26582     uint8 data, 
  26583     uint8 mask);
  26584 
  26585 /* 
  26586  * To get the qualified inputs on event whether Flowtracker metering is
  26587  * exceeded.
  26588  */
  26589 extern int bcm_field_qualify_FlowtrackerMeteringExceeded_get(
  26590     int unit, 
  26591     bcm_field_entry_t entry, 
  26592     uint8 *data, 
  26593     uint8 *mask);
  26594 
  26595 /* 
  26596  * Qualifies on the event whether initial or sample copied to collector
  26597  * happened by Flowtracker.
  26598  */
  26599 extern int bcm_field_qualify_FlowtrackerCollectorCopy(
  26600     int unit, 
  26601     bcm_field_entry_t entry, 
  26602     uint8 data, 
  26603     uint8 mask);
  26604 
  26605 /* 
  26606  * To get the qualified inputs on event whether initial or sample copied
  26607  * to collector happened by Flowtracker.
  26608  */
  26609 extern int bcm_field_qualify_FlowtrackerCollectorCopy_get(
  26610     int unit, 
  26611     bcm_field_entry_t entry, 
  26612     uint8 *data, 
  26613     uint8 *mask);
  26614 
  26615 /* Qualifies on the Flowtracker event whether the flow table is full. */
  26616 extern int bcm_field_qualify_FlowtrackerFlowTableFull(
  26617     int unit, 
  26618     bcm_field_entry_t entry, 
  26619     uint8 data, 
  26620     uint8 mask);
  26621 
  26622 /* 
  26623  * To get the qualified inputs on Flowtracker event whether the flow
  26624  * table is full.
  26625  */
  26626 extern int bcm_field_qualify_FlowtrackerFlowTableFull_get(
  26627     int unit, 
  26628     bcm_field_entry_t entry, 
  26629     uint8 *data, 
  26630     uint8 *mask);
  26631 
  26632 /* Qualifies on the event whether flow limit for Flowtracker is exceeded. */
  26633 extern int bcm_field_qualify_FlowtrackerGroupFlowExceeded(
  26634     int unit, 
  26635     bcm_field_entry_t entry, 
  26636     uint8 data, 
  26637     uint8 mask);
  26638 
  26639 /* 
  26640  * To get the qualified inputs on the event  whether flow limit for
  26641  * Flowtracker is exceeded.
  26642  */
  26643 extern int bcm_field_qualify_FlowtrackerGroupFlowExceeded_get(
  26644     int unit, 
  26645     bcm_field_entry_t entry, 
  26646     uint8 *data, 
  26647     uint8 *mask);
  26648 
  26649 /* Qualifies on the event whether Flowtracker export queue is full. */
  26650 extern int bcm_field_qualify_FlowtrackerExportQueueFull(
  26651     int unit, 
  26652     bcm_field_entry_t entry, 
  26653     uint8 data, 
  26654     uint8 mask);
  26655 
  26656 /* 
  26657  * To get the qualified inputs on the event whether Flowtracker export
  26658  * queue is full.
  26659  */
  26660 extern int bcm_field_qualify_FlowtrackerExportQueueFull_get(
  26661     int unit, 
  26662     bcm_field_entry_t entry, 
  26663     uint8 *data, 
  26664     uint8 *mask);
  26665 
  26666 #endif /* BCM_HIDE_DISPATCHABLE */
  26667 
  26668 /* Map a presel id to a name */
  26669 extern void bcm_field_range_info_t_init(
  26670     bcm_field_range_info_t *range_info);
  26671 
  26672 #ifndef BCM_HIDE_DISPATCHABLE
  26673 
  26674 /* Qualifies on the tag type configured for opaque tags. */
  26675 extern int bcm_field_qualify_OpaqueTagType(
  26676     int unit, 
  26677     bcm_field_entry_t entry, 
  26678     uint8 data, 
  26679     uint8 mask);
  26680 
  26681 /* 
  26682  * To get the qualified inputs on the tag type configured for opaque
  26683  * tags.
  26684  */
  26685 extern int bcm_field_qualify_OpaqueTagType_get(
  26686     int unit, 
  26687     bcm_field_entry_t entry, 
  26688     uint8 *data, 
  26689     uint8 *mask);
  26690 
  26691 /* Qualifies on the higher 32 bits of opaque tag allowed in the system */
  26692 extern int bcm_field_qualify_OpaqueTagHigh(
  26693     int unit, 
  26694     bcm_field_entry_t entry, 
  26695     uint32 data, 
  26696     uint32 mask);
  26697 
  26698 /* 
  26699  * To get the qualified inputs on the higher 32 bits of opaque tag
  26700  * allowed in the system.
  26701  */
  26702 extern int bcm_field_qualify_OpaqueTagHigh_get(
  26703     int unit, 
  26704     bcm_field_entry_t entry, 
  26705     uint32 *data, 
  26706     uint32 *mask);
  26707 
  26708 /* Qualifies on the lower 32 bits of opaque tag allowed in the system */
  26709 extern int bcm_field_qualify_OpaqueTagLow(
  26710     int unit, 
  26711     bcm_field_entry_t entry, 
  26712     uint32 data, 
  26713     uint32 mask);
  26714 
  26715 /* 
  26716  * To get the qualified inputs on the lower 32 bits of opaque tag allowed
  26717  * in the system.
  26718  */
  26719 extern int bcm_field_qualify_OpaqueTagLow_get(
  26720     int unit, 
  26721     bcm_field_entry_t entry, 
  26722     uint32 *data, 
  26723     uint32 *mask);
  26724 
  26725 #endif /* BCM_HIDE_DISPATCHABLE */
  26726 
  26727 /* Dos Attack Events. */
  26728 #define BCM_FIELD_DOSATTACK_MACSA_DA_SAME   (1 << 0)   /* Dos Attack Event when
  26729                                                           Source MAC is same as
  26730                                                           Destination MAC. */
  26731 #define BCM_FIELD_DOSATTACK_IPFRAG_OFFSET   (1 << 1)   /* Dos Attack Event when
  26732                                                           Protocol field Offset
  26733                                                           in IPv4 Header is
  26734                                                           equal to 1. */
  26735 #define BCM_FIELD_DOSATTACK_V6_TYPE0_ROUTING_HDR (1 << 2)   /* Dos Attack Event when
  26736                                                           Type0 Routing
  26737                                                           Extension header is
  26738                                                           present in IPv6. */
  26739 #define BCM_FIELD_DOSATTACK_V6_NON_LAST_FRAG_LT_1280 (1 << 3)   /* Dos Attack Event when
  26740                                                           non-last fragment of
  26741                                                           IPv6 Packet is less
  26742                                                           than 1280 bytes. */
  26743 #define BCM_FIELD_DOSATTACK_FIRST_TCPIP_FRAG_SMALL (1 << 4)   /* Dos Attack Event when
  26744                                                           First Fragment of IP
  26745                                                           payload with TCP is
  26746                                                           smaller than
  26747                                                           configured value. */
  26748 #define BCM_FIELD_DOSATTACK_TCP_OFFSET      (1 << 5)   /* Dos Attack Event when
  26749                                                           L4 is TCP and IP
  26750                                                           protocol offset is
  26751                                                           equal to 1. */
  26752 #define BCM_FIELD_DOSATTACK_SYN_FRAG        (1 << 6)   /* Dos Attack Event when
  26753                                                           TCP SYN Packet with
  26754                                                           Source Port 0-1023 for
  26755                                                           non-first fragments
  26756                                                           tcp/udp port values
  26757                                                           are always zero. */
  26758 #define BCM_FIELD_DOSATTACK_FLAGZERO_SEQZERO (1 << 7)   /* Dos Attack Event when
  26759                                                           TCP Packets with
  26760                                                           control flags == 0 and
  26761                                                           sequence number == 0. */
  26762 #define BCM_FIELD_DOSATTACK_TCPFLAGS_FUP    (1 << 8)   /* Dos Attack Event when
  26763                                                           TCP Packets with
  26764                                                           FIN,URG & PSH bits set
  26765                                                           & sequence number ==
  26766                                                           0. */
  26767 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SF     (1 << 9)   /* Dos Attack Event when
  26768                                                           TCP packets with SYN
  26769                                                           and FIN set. */
  26770 #define BCM_FIELD_DOSATTACK_TCPPORTS_EQUAL  (1 << 10)  /* Dos Attack Event when
  26771                                                           TCP Source and
  26772                                                           Destination ports are
  26773                                                           same. */
  26774 #define BCM_FIELD_DOSATTACK_UDPPORTS_EQUAL  (1 << 11)  /* Dos Attack Event when
  26775                                                           UDP Source and
  26776                                                           Destination ports are
  26777                                                           same. */
  26778 #define BCM_FIELD_DOSATTACK_ICMP            (1 << 12)  /* Dos Attack Event when
  26779                                                           ICMP V4 and V6 ping
  26780                                                           packet with payload
  26781                                                           bigger than configured
  26782                                                           value. */
  26783 #define BCM_FIELD_DOSATTACK_ICMPFRAGMENTS   (1 << 13)  /* Dos Attack Event when
  26784                                                           IPv4/IPv6 fragmented
  26785                                                           ICMP packets. */
  26786 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SR     (1 << 14)  /* Dos Attack Event when
  26787                                                           TCP packets with SYN
  26788                                                           and RST set. */
  26789 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SYN_FIRSTFRAG (1 << 15)  /* Dos Attack Event when
  26790                                                           TCP with SYN set and
  26791                                                           first fragment of
  26792                                                           fragmented IP packet. */
  26793 #define BCM_FIELD_DOSATTACK_TCPFLAGS_FIN_NOACK (1 << 16)  /* Dos Attack Event when
  26794                                                           TCP packet with FIN
  26795                                                           set but ACK not set. */
  26796 #define BCM_FIELD_DOSATTACK_TCPFLAGS_RST_NOACK (1 << 17)  /* Dos Attack Event when
  26797                                                           TCP packet with RST
  26798                                                           set but ACK not set. */
  26799 #define BCM_FIELD_DOSATTACK_TCPFLAGS_NOSFRA (1 << 18)  /* Dos Attack Event when
  26800                                                           TCP packet with SYN,
  26801                                                           FIN, RST and ACK not
  26802                                                           set. */
  26803 #define BCM_FIELD_DOSATTACK_TCP_DSTPORT_ZERO (1 << 19)  /* Dos Attack Event when
  26804                                                           TCP packet with
  26805                                                           Destination port
  26806                                                           equals to 0. */
  26807 #define BCM_FIELD_DOSATTACK_TCP_SRCPORT_ZERO (1 << 20)  /* Dos Attack Event when
  26808                                                           TCP packet with Source
  26809                                                           port equals to 0. */
  26810 #define BCM_FIELD_DOSATTACK_TCP_DST_IP_BCAST (1 << 21)  /* Dos Attack Event when
  26811                                                           TCP Packet with
  26812                                                           Destination IP
  26813                                                           Broadcast. */
  26814 #define BCM_FIELD_DOSATTACK_TCPFLAGS_ZERO   (1 << 22)  /* Dos Attack Event when
  26815                                                           configured TCP flags
  26816                                                           is zero. */
  26817 #define BCM_FIELD_DOSATTACK_TCPFLAGS_RESVD_NONZERO (1 << 23)  /* Dos Attack Event when
  26818                                                           configured Reserved
  26819                                                           flags is non-zero. */
  26820 #define BCM_FIELD_DOSATTACK_TCPFLAGS_ACK    (1 << 24)  /* Dos Attack Event when
  26821                                                           TCP flag ACK is set
  26822                                                           and Acknowledge number
  26823                                                           is zero. */
  26824 #define BCM_FIELD_DOSATTACK_TCPFLAGS_URG_NOURGPTR (1 << 25)  /* Dos Attack Event when
  26825                                                           TCP Flag URG set and
  26826                                                           Urgent pointer is
  26827                                                           zero. */
  26828 #define BCM_FIELD_DOSATTACK_TCPFLAGS_NOURG_URGPTR (1 << 26)  /* Dos Attack Event when
  26829                                                           TCP Flag URG not set
  26830                                                           and Urgent pointer is
  26831                                                           not zero. */
  26832 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SYNOPTION (1 << 27)  /* Dos Attack Event when
  26833                                                           TCP Flag SYN set and
  26834                                                           Option same as
  26835                                                           configured value. */
  26836 
  26837 #ifndef BCM_HIDE_DISPATCHABLE
  26838 
  26839 /* 
  26840  * Configure match criteria for bcmFieldQualifyInnerDosAttack
  26841  *         qualifier for the field entry.
  26842  */
  26843 extern int bcm_field_qualify_InnerDosAttack(
  26844     int unit, 
  26845     bcm_field_entry_t entry, 
  26846     uint8 data, 
  26847     uint8 mask);
  26848 
  26849 /* 
  26850  * Get match criteria for bcmFieldQualifyInnerDosAttack
  26851  *                qualifier from the field entry.
  26852  */
  26853 extern int bcm_field_qualify_InnerDosAttack_get(
  26854     int unit, 
  26855     bcm_field_entry_t entry, 
  26856     uint8 *data, 
  26857     uint8 *mask);
  26858 
  26859 /* 
  26860  * Configure Match criteria for bcmFieldQualifyDosAttackEvents qualifier
  26861  * for the field entry.
  26862  */
  26863 extern int bcm_field_qualify_DosAttackEvents(
  26864     int unit, 
  26865     bcm_field_entry_t entry, 
  26866     uint32 data, 
  26867     uint32 mask);
  26868 
  26869 /* 
  26870  * Get match criteria for bcmFieldQualifyDosAttackEvents qualifier from
  26871  * the field entry.
  26872  */
  26873 extern int bcm_field_qualify_DosAttackEvents_get(
  26874     int unit, 
  26875     bcm_field_entry_t entry, 
  26876     uint32 *data, 
  26877     uint32 *mask);
  26878 
  26879 /* 
  26880  * Configure Match criteria for bcmFieldQualifyInnerDosAttackEvents
  26881  * qualifier for the field entry.
  26882  */
  26883 extern int bcm_field_qualify_InnerDosAttackEvents(
  26884     int unit, 
  26885     bcm_field_entry_t entry, 
  26886     uint32 data, 
  26887     uint32 mask);
  26888 
  26889 /* 
  26890  * Get match criteria for bcmFieldQualifyInnerDosAttackEvents qualifier
  26891  * from the field entry.
  26892  */
  26893 extern int bcm_field_qualify_InnerDosAttackEvents_get(
  26894     int unit, 
  26895     bcm_field_entry_t entry, 
  26896     uint32 *data, 
  26897     uint32 *mask);
  26898 
  26899 #endif /* BCM_HIDE_DISPATCHABLE */
  26900 
  26901 /* Parameters for bcmFieldActionDlbEcmpMonitorEnable */
  26902 #define BCM_FIELD_DLB_ECMP_MON_DISABLE  (1 << 0)   /* Enabling Dlb Ecmp Monitor
  26903                                                       support */
  26904 #define BCM_FIELD_DLB_ECMP_MON_ENABLE   (1 << 1)   /* Disabling Dlb Ecmp Monitor
  26905                                                       support */
  26906 
  26907 /* Parameters for bcmFieldActionDlbTrunkMonitorEnable */
  26908 #define BCM_FIELD_DLB_TRUNK_MON_DISABLE (1 << 0)   /* Enabling Dlb Trunk Monitor
  26909                                                       support */
  26910 #define BCM_FIELD_DLB_TRUNK_MON_ENABLE  (1 << 1)   /* Disabling Dlb Trunk
  26911                                                       Monitor support */
  26912 
  26913 #ifndef BCM_HIDE_DISPATCHABLE
  26914 
  26915 /* Set match criteria for Container qualifier. */
  26916 extern int bcm_field_qualify_Container(
  26917     int unit, 
  26918     bcm_field_entry_t entry, 
  26919     uint64 data, 
  26920     uint64 mask);
  26921 
  26922 /* Get match criteria for Container qualifier. */
  26923 extern int bcm_field_qualify_Container_get(
  26924     int unit, 
  26925     bcm_field_entry_t entry, 
  26926     uint64 *data, 
  26927     uint64 *mask);
  26928 
  26929 /* 
  26930  * To qualify on Class identifier assigned by Egress adaptation
  26931  * forwarding tables
  26932  */
  26933 extern int bcm_field_qualify_EgressForwardingClassId(
  26934     int unit, 
  26935     bcm_field_entry_t entry, 
  26936     int data, 
  26937     int mask);
  26938 
  26939 /* 
  26940  * To get the qualified inputs on Class identifier assigned by Egress
  26941  * adaptation forwarding tables
  26942  */
  26943 extern int bcm_field_qualify_EgressForwardingClassId_get(
  26944     int unit, 
  26945     bcm_field_entry_t entry, 
  26946     int *data, 
  26947     int *mask);
  26948 
  26949 #endif /* BCM_HIDE_DISPATCHABLE */
  26950 
  26951 /* bcm_field_pkt_flow_type_e */
  26952 typedef enum bcm_field_pkt_flow_type_e {
  26953     bcmFieldPktFlowTypeTunnelNone = 0,  /* Type to identify non-tunnel flows
  26954                                            like access or transit flows. */
  26955     bcmFieldPktFlowTypeTunnelL2 = 1,    /* Type to identify L2 Tunnel flows. */
  26956     bcmFieldPktFlowTypeTunnelL3 = 2,    /* Type to identify L3 Tunnel flows. */
  26957     bcmFieldPktFlowTypeLastCount = 4    /* Always Last. Not a usable value. */
  26958 } bcm_field_pkt_flow_type_t;
  26959 
  26960 #define BCM_FIELD_PKT_FLOW_TYPE \
  26961 { \
  26962     "TunnelNone", \
  26963     "TunnelL2", \
  26964     "TunnelL3"  \
  26965 }
  26966 
  26967 #ifndef BCM_HIDE_DISPATCHABLE
  26968 
  26969 /* 
  26970  * Selects Packet flow for preselector qualifiers in-order to program the
  26971  * suitable offsets. The supported flows are \ref
  26972  * field_pkt_flow_type_table
  26973  */
  26974 extern int bcm_field_qualify_PktFlowType(
  26975     int unit, 
  26976     bcm_field_entry_t entry, 
  26977     bcm_field_pkt_flow_type_t type);
  26978 
  26979 /* To get the qualified inputs on Pkt Flow Type */
  26980 extern int bcm_field_qualify_PktFlowType_get(
  26981     int unit, 
  26982     bcm_field_entry_t entry, 
  26983     bcm_field_pkt_flow_type_t *type);
  26984 
  26985 /* To qualify on Class identifier assigned by Vlan translate tables */
  26986 extern int bcm_field_qualify_VlanTranslateClassId(
  26987     int unit, 
  26988     bcm_field_entry_t entry, 
  26989     uint16 data, 
  26990     uint16 mask);
  26991 
  26992 /* 
  26993  * To get the qualified inputs on Class identifier assigned by Vlan
  26994  * Translate tables
  26995  */
  26996 extern int bcm_field_qualify_VlanTranslateClassId_get(
  26997     int unit, 
  26998     bcm_field_entry_t entry, 
  26999     uint16 *data, 
  27000     uint16 *mask);
  27001 
  27002 /* To qualify on IP identifier field available in incoming IP header. */
  27003 extern int bcm_field_qualify_IpIdentifier(
  27004     int unit, 
  27005     bcm_field_entry_t entry, 
  27006     uint16 data, 
  27007     uint16 mask);
  27008 
  27009 /* To get the qualified inputs on IP identifier field */
  27010 extern int bcm_field_qualify_IpIdentifier_get(
  27011     int unit, 
  27012     bcm_field_entry_t entry, 
  27013     uint16 *data, 
  27014     uint16 *mask);
  27015 
  27016 /* 
  27017  * Configure match criteria for bcmFieldQualifyIp4Length
  27018  *         qualifier for the field entry.
  27019  */
  27020 extern int bcm_field_qualify_Ip4Length(
  27021     int unit, 
  27022     bcm_field_entry_t entry, 
  27023     uint16 data, 
  27024     uint16 mask);
  27025 
  27026 /* 
  27027  * Get match criteria for bcmFieldQualifyIp4Length
  27028  *                qualifier from the field entry.
  27029  */
  27030 extern int bcm_field_qualify_Ip4Length_get(
  27031     int unit, 
  27032     bcm_field_entry_t entry, 
  27033     uint16 *data, 
  27034     uint16 *mask);
  27035 
  27036 /* 
  27037  * Configure match criteria for bcmFieldQualifyIp6Length
  27038  *         qualifier for the field entry.
  27039  */
  27040 extern int bcm_field_qualify_Ip6Length(
  27041     int unit, 
  27042     bcm_field_entry_t entry, 
  27043     uint16 data, 
  27044     uint16 mask);
  27045 
  27046 /* 
  27047  * Get match criteria for bcmFieldQualifyIp6Length
  27048  *                qualifier from the field entry.
  27049  */
  27050 extern int bcm_field_qualify_Ip6Length_get(
  27051     int unit, 
  27052     bcm_field_entry_t entry, 
  27053     uint16 *data, 
  27054     uint16 *mask);
  27055 
  27056 /* 
  27057  * Configure match criteria for bcmFieldQualifyTunnelPayloadIp4Length
  27058  *         qualifier for the field entry.
  27059  */
  27060 extern int bcm_field_qualify_TunnelPayloadIp4Length(
  27061     int unit, 
  27062     bcm_field_entry_t entry, 
  27063     uint16 data, 
  27064     uint16 mask);
  27065 
  27066 /* 
  27067  * Get match criteria for bcmFieldQualifyTunnelPayloadIp4Length
  27068  *                qualifier from the field entry.
  27069  */
  27070 extern int bcm_field_qualify_TunnelPayloadIp4Length_get(
  27071     int unit, 
  27072     bcm_field_entry_t entry, 
  27073     uint16 *data, 
  27074     uint16 *mask);
  27075 
  27076 /* 
  27077  * Configure match criteria for bcmFieldQualifyTunnelPayloadIp6Length
  27078  *         qualifier for the field entry.
  27079  */
  27080 extern int bcm_field_qualify_TunnelPayloadIp6Length(
  27081     int unit, 
  27082     bcm_field_entry_t entry, 
  27083     uint16 data, 
  27084     uint16 mask);
  27085 
  27086 /* 
  27087  * Get match criteria for bcmFieldQualifyTunnelPayloadIp6Length
  27088  *                qualifier from the field entry.
  27089  */
  27090 extern int bcm_field_qualify_TunnelPayloadIp6Length_get(
  27091     int unit, 
  27092     bcm_field_entry_t entry, 
  27093     uint16 *data, 
  27094     uint16 *mask);
  27095 
  27096 /* To qualify on GBP Presence */
  27097 extern int bcm_field_qualify_GbpPresent(
  27098     int unit, 
  27099     bcm_field_entry_t entry, 
  27100     uint8 data, 
  27101     uint8 mask);
  27102 
  27103 /* To get the qualified inputs on  GBP Presence */
  27104 extern int bcm_field_qualify_GbpPresent_get(
  27105     int unit, 
  27106     bcm_field_entry_t entry, 
  27107     uint8 *data, 
  27108     uint8 *mask);
  27109 
  27110 /* To qualify on Overlay GBP Presence */
  27111 extern int bcm_field_qualify_HiGigGbpPresent(
  27112     int unit, 
  27113     bcm_field_entry_t entry, 
  27114     uint8 data, 
  27115     uint8 mask);
  27116 
  27117 /* To get the qualified inputs on Overlay GBP Presence */
  27118 extern int bcm_field_qualify_HiGigGbpPresent_get(
  27119     int unit, 
  27120     bcm_field_entry_t entry, 
  27121     uint8 *data, 
  27122     uint8 *mask);
  27123 
  27124 /* To qualify on  GBP source ID */
  27125 extern int bcm_field_qualify_GbpSrcId(
  27126     int unit, 
  27127     bcm_field_entry_t entry, 
  27128     uint16 data, 
  27129     uint16 mask);
  27130 
  27131 /* To get the qualified inputs on  GBP source ID */
  27132 extern int bcm_field_qualify_GbpSrcId_get(
  27133     int unit, 
  27134     bcm_field_entry_t entry, 
  27135     uint16 *data, 
  27136     uint16 *mask);
  27137 
  27138 /* To qualify on  GBP destination ID */
  27139 extern int bcm_field_qualify_GbpDstId(
  27140     int unit, 
  27141     bcm_field_entry_t entry, 
  27142     uint16 data, 
  27143     uint16 mask);
  27144 
  27145 /* To get the qualified inputs on  GBP destination ID */
  27146 extern int bcm_field_qualify_GbpDstId_get(
  27147     int unit, 
  27148     bcm_field_entry_t entry, 
  27149     uint16 *data, 
  27150     uint16 *mask);
  27151 
  27152 /* To qualify on GBP source ID of the HIGIG packet. */
  27153 extern int bcm_field_qualify_HiGigGbpSrcId(
  27154     int unit, 
  27155     bcm_field_entry_t entry, 
  27156     uint16 data, 
  27157     uint16 mask);
  27158 
  27159 /* To get the qualified inputs on  GBP source ID of the HiGig packet */
  27160 extern int bcm_field_qualify_HiGigGbpSrcId_get(
  27161     int unit, 
  27162     bcm_field_entry_t entry, 
  27163     uint16 *data, 
  27164     uint16 *mask);
  27165 
  27166 /* To qualify on Vxlan GBP Presence flag */
  27167 extern int bcm_field_qualify_VxlanGbpPresent(
  27168     int unit, 
  27169     bcm_field_entry_t entry, 
  27170     uint8 data, 
  27171     uint8 mask);
  27172 
  27173 /* To get the qualified inputs on Vxlan GBP Presence */
  27174 extern int bcm_field_qualify_VxlanGbpPresent_get(
  27175     int unit, 
  27176     bcm_field_entry_t entry, 
  27177     uint8 *data, 
  27178     uint8 *mask);
  27179 
  27180 /* 
  27181  * To Qualify on the results of Flowtracker checker events in Flow
  27182  * Tracker Module.
  27183  * Note: This qualifier needs a precondition that
  27184  * bcmFieldQualifyFlowtrackerGroupId qualifier
  27185  *       has to be added in group's qset during group create and has to
  27186  * be qualified
  27187  *       prior to qualifying on this(FlowtrackerCheck) qualifier.
  27188  */
  27189 extern int bcm_field_qualify_FlowtrackerCheck(
  27190     int unit, 
  27191     bcm_field_entry_t entry, 
  27192     bcm_flowtracker_group_t flow_group_id, 
  27193     uint32 num_checks, 
  27194     bcm_field_flowtrackercheck_t *list_of_check_ids);
  27195 
  27196 /* 
  27197  * To get the qualified inputs the results of Flowtracker checker events
  27198  * in Flow Tracker Module.
  27199  */
  27200 extern int bcm_field_qualify_FlowtrackerCheck_get(
  27201     int unit, 
  27202     bcm_field_entry_t entry, 
  27203     bcm_flowtracker_group_t flow_group_id, 
  27204     uint32 num_checks, 
  27205     bcm_field_flowtrackercheck_t *list_of_check_ids, 
  27206     uint32 *actual_num_checks);
  27207 
  27208 /* Qualifies whether the packet flow is learnt by Flowtracker module */
  27209 extern int bcm_field_qualify_FlowtrackerLearn(
  27210     int unit, 
  27211     bcm_field_entry_t entry, 
  27212     uint8 data, 
  27213     uint8 mask);
  27214 
  27215 /* 
  27216  * To get the qualified inputs on whether the packet flow is learnt by
  27217  * Flowtracker module.
  27218  */
  27219 extern int bcm_field_qualify_FlowtrackerLearn_get(
  27220     int unit, 
  27221     bcm_field_entry_t entry, 
  27222     uint8 *data, 
  27223     uint8 *mask);
  27224 
  27225 /* To Qualify on the COS Map type type of bcm_field_cos_map_select_t. */
  27226 extern int bcm_field_qualify_CosMapSelect(
  27227     int unit, 
  27228     bcm_field_entry_t entry, 
  27229     bcm_field_cos_map_select_t cos_map_select);
  27230 
  27231 /* 
  27232  * To get the qualified inputs on the COS Map type type of
  27233  * bcm_field_cos_map_select_t.
  27234  */
  27235 extern int bcm_field_qualify_CosMapSelect_get(
  27236     int unit, 
  27237     bcm_field_entry_t entry, 
  27238     bcm_field_cos_map_select_t *cos_map_select);
  27239 
  27240 /* 
  27241  * To Qualify on Opaque Object1 which was assigned
  27242  * by Flex modules for example NSH, INT..etc and VFP
  27243  */
  27244 extern int bcm_field_qualify_OpaqueObject1(
  27245     int unit, 
  27246     bcm_field_entry_t entry, 
  27247     uint16 data, 
  27248     uint16 mask);
  27249 
  27250 /* 
  27251  * To get the qualified inputs on Opaque Object1 which was assigned
  27252  * by Flex modules for example NSH, INT..etc and VFP
  27253  */
  27254 extern int bcm_field_qualify_OpaqueObject1_get(
  27255     int unit, 
  27256     bcm_field_entry_t entry, 
  27257     uint16 *data, 
  27258     uint16 *mask);
  27259 
  27260 /* 
  27261  * To Qualify on Opaque Object2 which was assigned
  27262  * by Flex modules for example NSH, INT..etc and VFP
  27263  */
  27264 extern int bcm_field_qualify_OpaqueObject2(
  27265     int unit, 
  27266     bcm_field_entry_t entry, 
  27267     uint16 data, 
  27268     uint16 mask);
  27269 
  27270 /* 
  27271  * To get the qualified inputs on Opaque Object2 which was assigned
  27272  * by Flex modules for example NSH, INT..etc and VFP
  27273  */
  27274 extern int bcm_field_qualify_OpaqueObject2_get(
  27275     int unit, 
  27276     bcm_field_entry_t entry, 
  27277     uint16 *data, 
  27278     uint16 *mask);
  27279 
  27280 /* 
  27281  * To Qualify on Opaque Object3 which was assigned
  27282  * by Flex modules for example NSH, INT..etc and VFP
  27283  */
  27284 extern int bcm_field_qualify_OpaqueObject3(
  27285     int unit, 
  27286     bcm_field_entry_t entry, 
  27287     uint16 data, 
  27288     uint16 mask);
  27289 
  27290 /* 
  27291  * To get the qualified inputs on Opaque Object3 which was assigned
  27292  * by Flex modules for example NSH, INT..etc and VFP
  27293  */
  27294 extern int bcm_field_qualify_OpaqueObject3_get(
  27295     int unit, 
  27296     bcm_field_entry_t entry, 
  27297     uint16 *data, 
  27298     uint16 *mask);
  27299 
  27300 /* 
  27301  * To Qualify on Opaque Object4 which was assigned
  27302  * by Flex modules for example NSH, INT..etc and VFP
  27303  */
  27304 extern int bcm_field_qualify_OpaqueObject4(
  27305     int unit, 
  27306     bcm_field_entry_t entry, 
  27307     uint16 data, 
  27308     uint16 mask);
  27309 
  27310 /* 
  27311  * To get the qualified inputs on Opaque Object4 which was assigned
  27312  * by Flex modules for example NSH, INT..etc and VFP
  27313  */
  27314 extern int bcm_field_qualify_OpaqueObject4_get(
  27315     int unit, 
  27316     bcm_field_entry_t entry, 
  27317     uint16 *data, 
  27318     uint16 *mask);
  27319 
  27320 /* To qualify on the packet's Incoming Outer VLAN ID. */
  27321 extern int bcm_field_qualify_IncomingOuterVlanId(
  27322     int unit, 
  27323     bcm_field_entry_t entry, 
  27324     bcm_vlan_t data, 
  27325     bcm_vlan_t mask);
  27326 
  27327 /* To get the qualified inputs on the packet's Incoming Outer VLAN ID */
  27328 extern int bcm_field_qualify_IncomingOuterVlanId_get(
  27329     int unit, 
  27330     bcm_field_entry_t entry, 
  27331     bcm_vlan_t *data, 
  27332     bcm_vlan_t *mask);
  27333 
  27334 #endif /* BCM_HIDE_DISPATCHABLE */
  27335 
  27336 /* Loopback subtypes */
  27337 typedef enum bcm_field_loopback_subtype_e {
  27338     bcmFieldLoopbackSubtypeIfa = 0,     /* Loopback Subtype Inband Flow Analysis */
  27339     bcmFieldLoopbackSubtypeCount = 1    /* Always last. Not to be used. */
  27340 } bcm_field_loopback_subtype_t;
  27341 
  27342 /* Egress Flow control for bcmFieldActionEgressFlowControlEnable */
  27343 typedef enum bcm_field_egress_flow_control_e {
  27344     bcmFieldEgressFlowControlLoopbackRedirect = 0, /* Egress Flow Control for Loopback
  27345                                            Redirect */
  27346     bcmFieldEgressFlowControlAppendIncomingOuterVlan = 1, /* The incoming Outer Vlan tag will be
  27347                                            appended in the outgoing packet */
  27348     bcmFieldEgressFlowControlAppendOuterVlanNew = 2, /* New Outer Vlan tag will be appended
  27349                                            in the outgoing packet */
  27350     bcmFieldEgressFlowControlTranslateSnatSrcIpOnly = 3, /* Source IP address translation for
  27351                                            SNAT */
  27352     bcmFieldEgressFlowControlTranslateDnatSrcIpDstIp = 4, /* Source and Destination IP addresses
  27353                                            translation for DNAT */
  27354     bcmFieldEgressFlowControlTranslateSnaptSrcIpL4SrcPort = 5, /* Source IP address and L4 Source port
  27355                                            translation for SNAPT */
  27356     bcmFieldEgressFlowControlTranslateSnaptSrcIpDstIpL4SrcPortL4DstPort = 6, /* Source and Destination IP addresses
  27357                                            and L4 Source and Destination ports
  27358                                            translation for SNAPT */
  27359     bcmFieldEgressFlowControlTranslateDnatDstIpOnly = 7, /* Destination IP address translation
  27360                                            for DNAT */
  27361     bcmFieldEgressFlowControlTranslateDnaptDstIpL4DstPort = 8, /* Destination IP address and L3
  27362                                            destination port translation for
  27363                                            DNAPT */
  27364     bcmFieldEgressFlowControlTranslateDnaptSrcIpDstIpL4SrcPortL4DstPort = 9, /* Source and Destination IP addresses
  27365                                            and L4 Source and Destination ports
  27366                                            translation for DNAPT */
  27367     bcmFieldEgressFlowControlTranslateIpmc = 10, /* Multicast NAT */
  27368     bcmFieldEgressFlowControlVlanNew = 11, /* Triggers Egress Vlan Translation
  27369                                            Lookup for new VLAN */
  27370     bcmFieldEgressFlowControlSrcMacVlanNew = 12, /* Triggers Egress Vlan Translation
  27371                                            Lookup for new Source MAC and VLAN */
  27372     bcmFieldEgressFlowControlDstMacVlanNew = 13, /* Triggers Egress Vlan Translation
  27373                                            Lookup for new Destination MAC and
  27374                                            VLAN */
  27375     bcmFieldEgressFlowControlSrcMacDstMacVlanNew = 14, /* Triggers Egress Vlan Translation
  27376                                            Lookup for new Source and Destination
  27377                                            MAC and VLAN */
  27378     bcmFieldEgressFlowControlTranslateSnatSrcIpDstIp = 15, /* Source and Destination IP addresses
  27379                                            translation for SNAT */
  27380     bcmFieldEgressFlowControlIfaCopyToCpuWithMetadata = 16, /* Copy to cpu IFA packet with metadata */
  27381     bcmFieldEgressFlowControlIfaLastNodeWithMetadata = 17, /* IFA Last node with Metadata */
  27382     bcmFieldEgressFlowControlIfaProbeSecondPass = 18, /* IFA probe second pass */
  27383     bcmFieldEgressFlowControlTunnelDecap = 19, /* Tunnel Decap */
  27384     bcmFieldEgressFlowControlNshInsert = 20, /* Insertion of NSH header */
  27385     bcmFieldEgressFlowControlNshTerminate = 21, /* NSH Termination */
  27386     bcmFieldEgressFlowControlNshTermMdClassPayload = 22, /* Add NSH Termination metadata class
  27387                                            payload */
  27388     bcmFieldEgressFlowControlIfaHdrInsertionOverTrunk = 23, /* Insert IFA Header Over trunk */
  27389     bcmFieldEgressFlowControlCount = 24 /* Always last. Not to be used. */
  27390 } bcm_field_egress_flow_control_t;
  27391 
  27392 /* Egress Flow Encap for bcmFieldActionEgressFlowEncapEnable */
  27393 typedef enum bcm_field_egress_flow_encap_e {
  27394     bcmFieldEgressFlowEncapAppendIncomingOuterVlan = 0, /* The incoming Outer Vlan tag will be
  27395                                            appended in the outgoing packet */
  27396     bcmFieldEgressFlowEncapTwampOwampTxTimestamp = 1, /* Requires BROADCOM_PREMIUM license */
  27397     bcmFieldEgressFlowEncapIOAMEnable = 2, /* Requires BROADCOM_PREMIUM license */
  27398     bcmFieldEgressFlowEncapIOAMOverflowFlagSet = 3, /* Requires BROADCOM_PREMIUM license */
  27399     bcmFieldEgressFlowEncapMacsecEncryptRxControlPktSvtagAdd = 4, /* Set control bit in SVTAG for MACSEC
  27400                                            RX Control Packets. */
  27401     bcmFieldEgressFlowEncapIfaCopyToCpuWithMetadata = 5, /* Copy to cpu IFA packet with Metadata */
  27402     bcmFieldEgressFlowEncapIfaUdpHdrUpdate = 6, /* IFA UDP header update */
  27403     bcmFieldEgressFlowEncapIntReply = 7, /* INT metadata header insertion */
  27404     bcmFieldEgressFlowEncapIOAME2EEnable = 8, /* IOAM E2E Enable */
  27405     bcmFieldEgressFlowEncapTunnelDecap = 9, /* Tunnel Decap */
  27406     bcmFieldEgressFlowEncapNshMdTypeEqualToOne = 10, /* NSH Metadata type equal to One */
  27407     bcmFieldEgressFlowEncapNshMdTypeEqualToTwo = 11, /* NSH Metadata type equal to Two */
  27408     bcmFieldEgressFlowEncapIfaCopyToCpuWithMetadataOverTrunk = 12, /* Copy to CPU IFA with Metadata over
  27409                                            trunk */
  27410     bcmFieldEgressFlowEncapIfaOverTrunkEnable = 13, /* Enable IFA over trunk */
  27411     bcmFieldEgressFlowEncapCount = 14   /* Always last. Not to be used. */
  27412 } bcm_field_egress_flow_encap_t;
  27413 
  27414 #ifndef BCM_HIDE_DISPATCHABLE
  27415 
  27416 /* To qualify on  Subtype of the Loopback header */
  27417 extern int bcm_field_qualify_LoopbackSubtype(
  27418     int unit, 
  27419     bcm_field_entry_t entry, 
  27420     bcm_field_loopback_subtype_t lb_subtype);
  27421 
  27422 /* To get the qualified inputs on Subtype of the Loopback header */
  27423 extern int bcm_field_qualify_LoopbackSubtype_get(
  27424     int unit, 
  27425     bcm_field_entry_t entry, 
  27426     bcm_field_loopback_subtype_t *lb_subtype);
  27427 
  27428 #endif /* BCM_HIDE_DISPATCHABLE */
  27429 
  27430 /* Parameters for bcmFieldActionDlbEcmpMonitorEnable */
  27431 #define BCM_FIELD_L3INGRESS_STRENGTH_HIGH   (1 << 0)   /* This prioritizes
  27432                                                           L3_TUNNEL/MPLS over
  27433                                                           VFP, Port and Vlan
  27434                                                           Mpls */
  27435 #define BCM_FIELD_L3INGRESS_STRENGTH_LOW    (1 << 1)   /* This prioritizes
  27436                                                           L3_TUNNEL/MPLS and
  27437                                                           Port over VFP and Vlan
  27438                                                           Mpls */
  27439 
  27440 /* 
  27441  * Used as data value for qualifier
  27442  * bcm_field_qualify_MacsecControlPkt.Used as param0 for action
  27443  * bcmFieldActionMacSecDecryptPktType and
  27444  * bcmFieldActionMacSecEncryptPktType
  27445  */
  27446 typedef enum bcm_field_macsec_encrypt_decrypt_pkt_e {
  27447     bcmFieldMacSecEncryptDecryptPktData = 0, /* MACSEC Encrypt data packet or Decrypt
  27448                                            data packet. */
  27449     bcmFieldMacSecEncryptDecryptPktControl = 1, /* MACSEC Encrypt control packet or
  27450                                            Decrypt control packet. */
  27451     bcmFieldMacSecEncryptDecryptPktCount = 2 /* Always last. Not to be used. */
  27452 } bcm_field_macsec_encrypt_decrypt_pkt_t;
  27453 
  27454 /* Compare result operands between a pair of values. */
  27455 typedef enum bcm_field_compare_operand_e {
  27456     bcmFieldCompareOperandFirst = 0,    /* The first value is equal to the
  27457                                            second value. */
  27458     bcmFieldCompareOperandEqual = bcmFieldCompareOperandFirst, /* The first value is equal to the
  27459                                            second value. */
  27460     bcmFieldCompareOperandNotEqual = 1, /* The first value is not equal to the
  27461                                            second value. */
  27462     bcmFieldCompareOperandFirstKeySmaller = 2, /* The first value is smaller then the
  27463                                            second value. */
  27464     bcmFieldCompareOperandFirstKeyNotSmaller = 3, /* The first value is not smaller then
  27465                                            the second value. */
  27466     bcmFieldCompareOperandFirstKeyBigger = 4, /* The first value is bigger then the
  27467                                            second value. */
  27468     bcmFieldCompareOperandFirstKeyNotBigger = 5, /* The first value is not bigger then
  27469                                            the second value. */
  27470     bcmFieldCompareOperandCount = 6     /* Always last. Number of Base Types. */
  27471 } bcm_field_compare_operand_t;
  27472 
  27473 #define BCM_FIELD_COMPARE_OPERAND_STRINGS \
  27474 { \
  27475     "Equal", \
  27476     "NotEqual", \
  27477     "FirstKeySmaller", \
  27478     "FirstKeyNotSmaller", \
  27479     "FirstKeyBigger", \
  27480     "FirstKeyNotBigger"  \
  27481 }
  27482 
  27483 #ifndef BCM_HIDE_DISPATCHABLE
  27484 
  27485 /* 
  27486  * Gives the offset of a specific compare operand inside the 6-bit
  27487  * compare result.
  27488  */
  27489 extern int bcm_field_compare_operand_offset_get(
  27490     int unit, 
  27491     int pair_id, 
  27492     bcm_field_compare_operand_t compare_operand, 
  27493     int *offset);
  27494 
  27495 #endif /* BCM_HIDE_DISPATCHABLE */
  27496 
  27497 /* 
  27498  * Field optional flag used for flushing hit indication info for all
  27499  * entries.
  27500  */
  27501 #define BCM_FIELD_ENTRY_HIT_FLUSH_ALL   (1 << 1)   
  27502 
  27503 #ifndef BCM_HIDE_DISPATCHABLE
  27504 
  27505 /* Get hit indication info for a specific entry per core. */
  27506 extern int bcm_field_entry_hit_get(
  27507     int unit, 
  27508     uint32 flags, 
  27509     bcm_field_entry_t entry_handle, 
  27510     uint8 *entry_hit_core_bmp);
  27511 
  27512 /* 
  27513  * This function flushes hit information of an entry or all entries, from
  27514  * hardware.
  27515  */
  27516 extern int bcm_field_entry_hit_flush(
  27517     int unit, 
  27518     uint32 flags, 
  27519     bcm_field_entry_t entry_handle);
  27520 
  27521 #endif /* BCM_HIDE_DISPATCHABLE */
  27522 
  27523 /* Ace context. */
  27524 typedef enum bcm_field_ace_context_e {
  27525     bcmFieldAceContextFirst = 0,        /* First element, not in use. */
  27526     bcmFieldAceContextNull = bcmFieldAceContextFirst, /* Null ACE context. */
  27527     bcmFieldAceContextReflector = 1,    /* Ace context which is used for
  27528                                            Reflector application (ERPP Trap). */
  27529     bcmFieldAceContextForwardingCodeOverride = 2, /* Ace context which is used for
  27530                                            Forwarding code override. */
  27531     bcmFieldAceContextIFATrap = 3,      /* Ace context which is used for IFA
  27532                                            Trap. */
  27533     bcmFieldAceContextAlternateMarking = 4, /* ACE context action, used to set the
  27534                                            context selection for ENCAP_1/2. */
  27535     bcmFieldAceContextTmToCOE = 5,      /* ACE context which is used for TM to
  27536                                            COE */
  27537     bcmFieldAceContextMplsTransitCCMSignal = 6, /* ACE context which is used for CCM
  27538                                            packet to send back the signal defect */
  27539     bcmFieldAceContextAlternateMarkingIntermediate = 7, /* ACE context which is used for set the
  27540                                            context selection for ENCAP_1 for
  27541                                            intermidiate PE note */
  27542     bcmFieldAceContextCount = 8         /* Always last. Not a usable value. */
  27543 } bcm_field_ace_context_t;
  27544 
  27545 #define BCM_FIELD_ACE_CONTEXT_STRINGS \
  27546 { \
  27547     "Null", \
  27548     "Reflector", \
  27549     "ForwardingCodeOverride", \
  27550     "IFATrap", \
  27551     "AlternateMarking", \
  27552     "TmToCOE", \
  27553     "MplsTransitCCMSignal", \
  27554     "AlternateMarkingIntermediate"  \
  27555 }
  27556 
  27557 #ifndef BCM_HIDE_DISPATCHABLE
  27558 
  27559 /* 
  27560  *  Set match criteria for bcmFieldQualifyInVportDataIndex
  27561  *                  qualifier in the field entry.
  27562  */
  27563 extern int bcm_field_qualify_InVportDataIndex(
  27564     int unit, 
  27565     bcm_field_entry_t entry, 
  27566     uint8 data, 
  27567     uint8 mask);
  27568 
  27569 /* 
  27570  *  Get match criteria for bcmFieldQualifyInVportDataIndex
  27571  *                  qualifier from the field entry.
  27572  */
  27573 extern int bcm_field_qualify_InVportDataIndex_get(
  27574     int unit, 
  27575     bcm_field_entry_t entry, 
  27576     uint8 *data, 
  27577     uint8 *mask);
  27578 
  27579 /* To qualify on the MACSEC control packet */
  27580 extern int bcm_field_qualify_MacSecControlPkt(
  27581     int unit, 
  27582     bcm_field_entry_t entry, 
  27583     bcm_field_macsec_encrypt_decrypt_pkt_t data);
  27584 
  27585 /* To get the qualified inputs on the MACSEC control packet */
  27586 extern int bcm_field_qualify_MacSecControlPkt_get(
  27587     int unit, 
  27588     bcm_field_entry_t entry, 
  27589     bcm_field_macsec_encrypt_decrypt_pkt_t *data);
  27590 
  27591 /* To qualify on the C-Bit of MACSEC SECTAG. */
  27592 extern int bcm_field_qualify_MacSecSecTagCbit(
  27593     int unit, 
  27594     bcm_field_entry_t entry, 
  27595     uint8 data, 
  27596     uint8 mask);
  27597 
  27598 /* To get the qualified inputs on the C-Bit of the MACSEC SECTAG. */
  27599 extern int bcm_field_qualify_MacSecSecTagCbit_get(
  27600     int unit, 
  27601     bcm_field_entry_t entry, 
  27602     uint8 *data, 
  27603     uint8 *mask);
  27604 
  27605 /* To qualify on the E-Bit of MACSEC SECTAG */
  27606 extern int bcm_field_qualify_MacSecSecTagEbit(
  27607     int unit, 
  27608     bcm_field_entry_t entry, 
  27609     uint8 data, 
  27610     uint8 mask);
  27611 
  27612 /* To get the qualified inputs on the C-Bit of MACSEC SECTAG */
  27613 extern int bcm_field_qualify_MacSecSecTagEbit_get(
  27614     int unit, 
  27615     bcm_field_entry_t entry, 
  27616     uint8 *data, 
  27617     uint8 *mask);
  27618 
  27619 /* Qualifies on Underlay destination egress next hop. */
  27620 extern int bcm_field_qualify_DstL3EgressUnderlay(
  27621     int unit, 
  27622     bcm_field_entry_t entry, 
  27623     bcm_if_t if_id);
  27624 
  27625 /* Retrieves qualifies inputs on Underlay destination egress next hop. */
  27626 extern int bcm_field_qualify_DstL3EgressUnderlay_get(
  27627     int unit, 
  27628     bcm_field_entry_t entry, 
  27629     bcm_if_t *if_id);
  27630 
  27631 /* Qualifies on range of Underlay destination egress next hops. */
  27632 extern int bcm_field_qualify_DstL3EgressNextHopsUnderlay(
  27633     int unit, 
  27634     bcm_field_entry_t entry, 
  27635     uint32 data, 
  27636     uint32 mask);
  27637 
  27638 /* 
  27639  * Retrieves qualifies inputs on range of Underlay destination egress
  27640  * next hops.
  27641  */
  27642 extern int bcm_field_qualify_DstL3EgressNextHopsUnderlay_get(
  27643     int unit, 
  27644     bcm_field_entry_t entry, 
  27645     uint32 *data, 
  27646     uint32 *mask);
  27647 
  27648 /* To Qualify on Class ID assigned to packet based on Egress Port */
  27649 extern int bcm_field_qualify_EgressClassPort(
  27650     int unit, 
  27651     bcm_field_entry_t entry, 
  27652     uint16 data, 
  27653     uint16 mask);
  27654 
  27655 /* 
  27656  * To get the qualified inputs on Class ID assigned to packet based on
  27657  * Egress Port
  27658  */
  27659 extern int bcm_field_qualify_EgressClassPort_get(
  27660     int unit, 
  27661     bcm_field_entry_t entry, 
  27662     uint16 *data, 
  27663     uint16 *mask);
  27664 
  27665 /* 
  27666  * Set match criteria for bcmFieldQualifyINTProbeMarker1 qualifier for a
  27667  * given field entry.
  27668  */
  27669 extern int bcm_field_qualify_INTProbeMarker1(
  27670     int unit, 
  27671     bcm_field_entry_t entry, 
  27672     uint32 data, 
  27673     uint32 mask);
  27674 
  27675 /* 
  27676  * Get match criteria for bcmFieldQualifyINTProbeMarker1 qualifier for a
  27677  * given field entry.
  27678  */
  27679 extern int bcm_field_qualify_INTProbeMarker1_get(
  27680     int unit, 
  27681     bcm_field_entry_t entry, 
  27682     uint32 *data, 
  27683     uint32 *mask);
  27684 
  27685 /* 
  27686  * Set match criteria for bcmFieldQualifyINTProbeMarker2 qualifier for a
  27687  * given field entry.
  27688  */
  27689 extern int bcm_field_qualify_INTProbeMarker2(
  27690     int unit, 
  27691     bcm_field_entry_t entry, 
  27692     uint32 data, 
  27693     uint32 mask);
  27694 
  27695 /* 
  27696  * Get match criteria for bcmFieldQualifyINTProbeMarker2 qualifier for a
  27697  * given field entry.
  27698  */
  27699 extern int bcm_field_qualify_INTProbeMarker2_get(
  27700     int unit, 
  27701     bcm_field_entry_t entry, 
  27702     uint32 *data, 
  27703     uint32 *mask);
  27704 
  27705 /* 
  27706  * Set match criteria for bcmFieldQualifyINTReserved4Bytes qualifier for
  27707  * a given field entry.
  27708  */
  27709 extern int bcm_field_qualify_INTReserved4Bytes(
  27710     int unit, 
  27711     bcm_field_entry_t entry, 
  27712     uint32 data, 
  27713     uint32 mask);
  27714 
  27715 /* 
  27716  * Get match criteria for bcmFieldQualifyINTReserved4Bytes qualifier for
  27717  * a given field entry.
  27718  */
  27719 extern int bcm_field_qualify_INTReserved4Bytes_get(
  27720     int unit, 
  27721     bcm_field_entry_t entry, 
  27722     uint32 *data, 
  27723     uint32 *mask);
  27724 
  27725 /* To qualify on the type of Flow control packet */
  27726 extern int bcm_field_qualify_FlowControlType(
  27727     int unit, 
  27728     bcm_field_entry_t entry, 
  27729     bcm_field_flow_control_pkt_type_t fc_type);
  27730 
  27731 /* To get qualified inputs on the type of Flow control packet */
  27732 extern int bcm_field_qualify_FlowControlType_get(
  27733     int unit, 
  27734     bcm_field_entry_t entry, 
  27735     bcm_field_flow_control_pkt_type_t *fc_type);
  27736 
  27737 /* Requires BROADCOM_PREMIUM license */
  27738 extern int bcm_field_qualify_TimeStampTxPktType(
  27739     int unit, 
  27740     bcm_field_entry_t entry, 
  27741     bcm_field_timestamp_transmit_pkt_type_t ts_pkt_type);
  27742 
  27743 /* Requires BROADCOM_PREMIUM license */
  27744 extern int bcm_field_qualify_TimeStampTxPktType_get(
  27745     int unit, 
  27746     bcm_field_entry_t entry, 
  27747     bcm_field_timestamp_transmit_pkt_type_t *ts_pkt_type);
  27748 
  27749 /* Requires BROADCOM_PREMIUM license */
  27750 extern int bcm_field_qualify_SysHdrLocalDstport(
  27751     int unit, 
  27752     bcm_field_entry_t entry, 
  27753     bcm_port_t data, 
  27754     bcm_port_t mask);
  27755 
  27756 /* Requires BROADCOM_PREMIUM license */
  27757 extern int bcm_field_qualify_SysHdrLocalDstport_get(
  27758     int unit, 
  27759     bcm_field_entry_t entry, 
  27760     bcm_port_t *data, 
  27761     bcm_port_t *mask);
  27762 
  27763 /* Qualify IP forward plus one next protocol. */
  27764 extern int bcm_field_qualify_IpFwdPlusOneNextProtocol(
  27765     int unit, 
  27766     bcm_field_entry_t entry, 
  27767     uint32 data, 
  27768     uint32 mask);
  27769 
  27770 /* Get qualifier IP forward plus one next protocol. */
  27771 extern int bcm_field_qualify_IpFwdPlusOneNextProtocol_get(
  27772     int unit, 
  27773     bcm_field_entry_t entry, 
  27774     uint32 *data, 
  27775     uint32 *mask);
  27776 
  27777 /* Requires BROADCOM_PREMIUM license */
  27778 extern int bcm_field_qualify_IOAMNameSpaceIdMatch(
  27779     int unit, 
  27780     bcm_field_entry_t entry, 
  27781     uint8 data, 
  27782     uint8 mask);
  27783 
  27784 /* Requires BROADCOM_PREMIUM license */
  27785 extern int bcm_field_qualify_IOAMNameSpaceIdMatch_get(
  27786     int unit, 
  27787     bcm_field_entry_t entry, 
  27788     uint8 *data, 
  27789     uint8 *mask);
  27790 
  27791 /* Requires BROADCOM_PREMIUM license */
  27792 extern int bcm_field_qualify_IOAMPktOverflowed(
  27793     int unit, 
  27794     bcm_field_entry_t entry, 
  27795     uint8 data, 
  27796     uint8 mask);
  27797 
  27798 /* Requires BROADCOM_PREMIUM license */
  27799 extern int bcm_field_qualify_IOAMPktOverflowed_get(
  27800     int unit, 
  27801     bcm_field_entry_t entry, 
  27802     uint8 *data, 
  27803     uint8 *mask);
  27804 
  27805 /* Requires BROADCOM_PREMIUM license */
  27806 extern int bcm_field_qualify_IOAMRemainingLenValid(
  27807     int unit, 
  27808     bcm_field_entry_t entry, 
  27809     uint8 data, 
  27810     uint8 mask);
  27811 
  27812 /* Requires BROADCOM_PREMIUM license */
  27813 extern int bcm_field_qualify_IOAMRemainingLenValid_get(
  27814     int unit, 
  27815     bcm_field_entry_t entry, 
  27816     uint8 *data, 
  27817     uint8 *mask);
  27818 
  27819 /* To qualify on packet Igmp type value. */
  27820 extern int bcm_field_qualify_IgmpType(
  27821     int unit, 
  27822     bcm_field_entry_t entry, 
  27823     uint16 data, 
  27824     uint16 mask);
  27825 
  27826 /* 
  27827  * Get value for bcmFieldQualifyIgmpType
  27828  *             qualifier from the field entry.
  27829  */
  27830 extern int bcm_field_qualify_IgmpType_get(
  27831     int unit, 
  27832     bcm_field_entry_t entry, 
  27833     uint8 *data, 
  27834     uint8 *mask);
  27835 
  27836 /* bcm_field_qualify_L2IngressInterface */
  27837 extern int bcm_field_qualify_L2IngressInterface(
  27838     int unit, 
  27839     bcm_field_entry_t entry, 
  27840     uint32 intf_id, 
  27841     uint32 mask);
  27842 
  27843 /* 
  27844  * Get match criteria for bcmFieldQualifyL2IngressInterface
  27845  *             qualifier from the field entry.
  27846  */
  27847 extern int bcm_field_qualify_L2IngressInterface_get(
  27848     int unit, 
  27849     bcm_field_entry_t entry, 
  27850     uint32 *data, 
  27851     uint32 *mask);
  27852 
  27853 /* bcm_field_qualify_L3SrcHit */
  27854 extern int bcm_field_qualify_L3SrcHit(
  27855     int unit, 
  27856     bcm_field_entry_t entry, 
  27857     uint8 data, 
  27858     uint8 mask);
  27859 
  27860 /* 
  27861  * Get match criteria for bcmFieldQualifyL3SrcHit
  27862  *             qualifier from the field entry.
  27863  */
  27864 extern int bcm_field_qualify_L3SrcHit_get(
  27865     int unit, 
  27866     bcm_field_entry_t entry, 
  27867     uint8 *data, 
  27868     uint8 *mask);
  27869 
  27870 /* bcm_field_qualify_L3DestHit */
  27871 extern int bcm_field_qualify_L3DestHit(
  27872     int unit, 
  27873     bcm_field_entry_t entry, 
  27874     uint8 data, 
  27875     uint8 mask);
  27876 
  27877 /* 
  27878  * Get match criteria for bcmFieldQualifyL3DestHit
  27879  *             qualifier from the field entry.
  27880  */
  27881 extern int bcm_field_qualify_L3DestHit_get(
  27882     int unit, 
  27883     bcm_field_entry_t entry, 
  27884     uint8 *data, 
  27885     uint8 *mask);
  27886 
  27887 /* Add packet mac validations qualification to a field entry. */
  27888 extern int bcm_field_qualify_L2MacInfo(
  27889     int unit, 
  27890     bcm_field_entry_t entry, 
  27891     uint32 data, 
  27892     uint32 mask);
  27893 
  27894 /* Get packet L2 mac info qualification from a field entry. */
  27895 extern int bcm_field_qualify_L2MacInfo_get(
  27896     int unit, 
  27897     bcm_field_entry_t entry, 
  27898     uint32 *data, 
  27899     uint32 *mask);
  27900 
  27901 /* Add packet L4 info qualification to a field entry. */
  27902 extern int bcm_field_qualify_L4Info(
  27903     int unit, 
  27904     bcm_field_entry_t entry, 
  27905     uint32 data, 
  27906     uint32 mask);
  27907 
  27908 /* Get packet L4 info qualification from a field entry. */
  27909 extern int bcm_field_qualify_L4Info_get(
  27910     int unit, 
  27911     bcm_field_entry_t entry, 
  27912     uint32 *data, 
  27913     uint32 *mask);
  27914 
  27915 /* 
  27916  * Add to match on inner priority tagged packet qualification to a field
  27917  * entry.
  27918  */
  27919 extern int bcm_field_qualify_InnerPriTaggedPkt(
  27920     int unit, 
  27921     bcm_field_entry_t entry, 
  27922     uint8 data, 
  27923     uint8 mask);
  27924 
  27925 /* 
  27926  * Get to match on inner priority tagged packet qualification from a
  27927  * field entry.
  27928  */
  27929 extern int bcm_field_qualify_InnerPriTaggedPkt_get(
  27930     int unit, 
  27931     bcm_field_entry_t entry, 
  27932     uint8 *data, 
  27933     uint8 *mask);
  27934 
  27935 /* bcm_field_qualify_HiGig3Class */
  27936 extern int bcm_field_qualify_HiGig3Class(
  27937     int unit, 
  27938     bcm_field_entry_t entry, 
  27939     uint32 data, 
  27940     uint32 mask);
  27941 
  27942 /* 
  27943  * Get match criteria for bcmFieldQualifyHiGig3Class
  27944  *             qualifier from the field entry.
  27945  */
  27946 extern int bcm_field_qualify_HiGig3Class_get(
  27947     int unit, 
  27948     bcm_field_entry_t entry, 
  27949     uint32 *data, 
  27950     uint32 *mask);
  27951 
  27952 /* Add HiGig3 packet flags qualification to a field entry. */
  27953 extern int bcm_field_qualify_HiGig3Flags(
  27954     int unit, 
  27955     bcm_field_entry_t entry, 
  27956     uint16 data, 
  27957     uint16 mask);
  27958 
  27959 /* Get higig3 packet flags from a field entry. */
  27960 extern int bcm_field_qualify_HiGig3Flags_get(
  27961     int unit, 
  27962     bcm_field_entry_t entry, 
  27963     uint16 *data, 
  27964     uint16 *mask);
  27965 
  27966 /* Add higig3 loopback packet flags qualification to a field entry. */
  27967 extern int bcm_field_qualify_LoopbackHiGig3Flags(
  27968     int unit, 
  27969     bcm_field_entry_t entry, 
  27970     uint16 data, 
  27971     uint16 mask);
  27972 
  27973 /* Get higig3 loopback packet flags from a field entry. */
  27974 extern int bcm_field_qualify_LoopbackHiGig3Flags_get(
  27975     int unit, 
  27976     bcm_field_entry_t entry, 
  27977     uint16 *data, 
  27978     uint16 *mask);
  27979 
  27980 /* To qualify on number of Ip extension headers present in packet. */
  27981 extern int bcm_field_qualify_IpExtensionHdrNum(
  27982     int unit, 
  27983     bcm_field_entry_t entry, 
  27984     uint8 data, 
  27985     uint8 mask);
  27986 
  27987 /* 
  27988  * Get value for bcmFieldQualifyIpExtensionHdrNum
  27989  *             qualifier from the field entry.
  27990  */
  27991 extern int bcm_field_qualify_IpExtensionHdrNum_get(
  27992     int unit, 
  27993     bcm_field_entry_t entry, 
  27994     uint8 *data, 
  27995     uint8 *mask);
  27996 
  27997 /* To qualify on opaque control id from L2_IIF table. */
  27998 extern int bcm_field_qualify_IngressL2InterfaceOpaqueCtrlId(
  27999     int unit, 
  28000     bcm_field_entry_t entry, 
  28001     uint8 data, 
  28002     uint8 mask);
  28003 
  28004 /* 
  28005  * Get value for bcmFieldQualifyIngressL2InterfaceOpaqueCtrlId
  28006  *             qualifier from the field entry.
  28007  */
  28008 extern int bcm_field_qualify_IngressL2InterfaceOpaqueCtrlId_get(
  28009     int unit, 
  28010     bcm_field_entry_t entry, 
  28011     uint8 *data, 
  28012     uint8 *mask);
  28013 
  28014 /* To qualify on opaque control from device port table. */
  28015 extern int bcm_field_qualify_DevicePortOpaqueCommand(
  28016     int unit, 
  28017     bcm_field_entry_t entry, 
  28018     uint8 data, 
  28019     uint8 mask);
  28020 
  28021 /* 
  28022  * Get value for bcmFieldQualifyDevicePortOpaqueCommand
  28023  *             qualifier from the field entry.
  28024  */
  28025 extern int bcm_field_qualify_DevicePortOpaqueCommand_get(
  28026     int unit, 
  28027     bcm_field_entry_t entry, 
  28028     uint8 *data, 
  28029     uint8 *mask);
  28030 
  28031 /* To qualify on class id provided by L2_IIF/SVP/L3_IIF ingress tables. */
  28032 extern int bcm_field_qualify_IngressInterfaceClass(
  28033     int unit, 
  28034     bcm_field_entry_t entry, 
  28035     uint32 data, 
  28036     uint32 mask);
  28037 
  28038 /* 
  28039  * Get value for bcmFieldQualifyIngressInterfaceClass
  28040  *             qualifier from the field entry.
  28041  */
  28042 extern int bcm_field_qualify_IngressInterfaceClass_get(
  28043     int unit, 
  28044     bcm_field_entry_t entry, 
  28045     uint32 *data, 
  28046     uint32 *mask);
  28047 
  28048 /* To qualify on opaque control from L3_IIF table. */
  28049 extern int bcm_field_qualify_IngressL3InterfaceOpaqueCtrlId(
  28050     int unit, 
  28051     bcm_field_entry_t entry, 
  28052     uint8 data, 
  28053     uint8 mask);
  28054 
  28055 /* 
  28056  * Get value for bcmFieldQualifyIngressL3InterfaceOpaqueCtrlId
  28057  *             qualifier from the field entry.
  28058  */
  28059 extern int bcm_field_qualify_IngressL3InterfaceOpaqueCtrlId_get(
  28060     int unit, 
  28061     bcm_field_entry_t entry, 
  28062     uint8 *data, 
  28063     uint8 *mask);
  28064 
  28065 /* To qualify on opaque control from SVP table. */
  28066 extern int bcm_field_qualify_SvpOpaqueCtrlId(
  28067     int unit, 
  28068     bcm_field_entry_t entry, 
  28069     uint8 data, 
  28070     uint8 mask);
  28071 
  28072 /* 
  28073  * Get value for bcmFieldQualifySvpOpaqueCtrlId
  28074  *             qualifier from the field entry.
  28075  */
  28076 extern int bcm_field_qualify_SvpOpaqueCtrlId_get(
  28077     int unit, 
  28078     bcm_field_entry_t entry, 
  28079     uint8 *data, 
  28080     uint8 *mask);
  28081 
  28082 /* To qualify on opaque control from VFI table. */
  28083 extern int bcm_field_qualify_VpnOpaqueCtrlId(
  28084     int unit, 
  28085     bcm_field_entry_t entry, 
  28086     uint8 data, 
  28087     uint8 mask);
  28088 
  28089 /* 
  28090  * Get value for bcmFieldQualifyVpnOpaqueCtrlId
  28091  *             qualifier from the field entry.
  28092  */
  28093 extern int bcm_field_qualify_VpnOpaqueCtrlId_get(
  28094     int unit, 
  28095     bcm_field_entry_t entry, 
  28096     uint8 *data, 
  28097     uint8 *mask);
  28098 
  28099 /* To qualify on L2 source discard bit. */
  28100 extern int bcm_field_qualify_L2SrcDiscard(
  28101     int unit, 
  28102     bcm_field_entry_t entry, 
  28103     uint8 data, 
  28104     uint8 mask);
  28105 
  28106 /* 
  28107  * Get value for bcmFieldQualifyL2SrcDiscard
  28108  *             qualifier from the field entry.
  28109  */
  28110 extern int bcm_field_qualify_L2SrcDiscard_get(
  28111     int unit, 
  28112     bcm_field_entry_t entry, 
  28113     uint8 *data, 
  28114     uint8 *mask);
  28115 
  28116 /* To qualify on L2 learning commands. */
  28117 extern int bcm_field_qualify_L2LearnCommands(
  28118     int unit, 
  28119     bcm_field_entry_t entry, 
  28120     uint32 data, 
  28121     uint32 mask);
  28122 
  28123 /* 
  28124  * Get value for bcmFieldQualifyL2LearnCommands
  28125  *             qualifier from the field entry.
  28126  */
  28127 extern int bcm_field_qualify_L2LearnCommands_get(
  28128     int unit, 
  28129     bcm_field_entry_t entry, 
  28130     uint32 *data, 
  28131     uint32 *mask);
  28132 
  28133 /* To qualify on tunnel termination status bits. */
  28134 extern int bcm_field_qualify_TunnelTermStatus(
  28135     int unit, 
  28136     bcm_field_entry_t entry, 
  28137     uint32 data, 
  28138     uint32 mask);
  28139 
  28140 /* 
  28141  * Get value for bcmFieldQualifyTunnelTermStatus
  28142  *             qualifier from the field entry.
  28143  */
  28144 extern int bcm_field_qualify_TunnelTermStatus_get(
  28145     int unit, 
  28146     bcm_field_entry_t entry, 
  28147     uint32 *data, 
  28148     uint32 *mask);
  28149 
  28150 /* To qualify on loopback packet header flag bits. */
  28151 extern int bcm_field_qualify_LoopbackHdrFlags(
  28152     int unit, 
  28153     bcm_field_entry_t entry, 
  28154     uint32 data, 
  28155     uint32 mask);
  28156 
  28157 /* 
  28158  * Get value for bcmFieldQualifyLoopbackHdrFlags
  28159  *             qualifier from the field entry.
  28160  */
  28161 extern int bcm_field_qualify_LoopbackHdrFlags_get(
  28162     int unit, 
  28163     bcm_field_entry_t entry, 
  28164     uint32 *data, 
  28165     uint32 *mask);
  28166 
  28167 /* To qualify on packet status. */
  28168 extern int bcm_field_qualify_PacketStatus(
  28169     int unit, 
  28170     bcm_field_entry_t entry, 
  28171     uint32 data, 
  28172     uint32 mask);
  28173 
  28174 /* 
  28175  * Get value for bcmFieldQualifyPacketStatus
  28176  *             qualifier from the field entry.
  28177  */
  28178 extern int bcm_field_qualify_PacketStatus_get(
  28179     int unit, 
  28180     bcm_field_entry_t entry, 
  28181     uint32 *data, 
  28182     uint32 *mask);
  28183 
  28184 /* To qualify on packet forwarding status. */
  28185 extern int bcm_field_qualify_ForwardingStatus(
  28186     int unit, 
  28187     bcm_field_entry_t entry, 
  28188     uint32 data, 
  28189     uint32 mask);
  28190 
  28191 /* 
  28192  * Get value for bcmFieldQualifyForwardingStatus
  28193  *             qualifier from the field entry.
  28194  */
  28195 extern int bcm_field_qualify_ForwardingStatus_get(
  28196     int unit, 
  28197     bcm_field_entry_t entry, 
  28198     uint32 *data, 
  28199     uint32 *mask);
  28200 
  28201 /* To qualify on alternate tunnel EtherType. */
  28202 extern int bcm_field_qualify_TunnelAltEtherType(
  28203     int unit, 
  28204     bcm_field_entry_t entry, 
  28205     uint16 data, 
  28206     uint16 mask);
  28207 
  28208 /* 
  28209  * Get value for bcmFieldQualifyTunnelAltEtherType
  28210  *             qualifier from the field entry.
  28211  */
  28212 extern int bcm_field_qualify_TunnelAltEtherType_get(
  28213     int unit, 
  28214     bcm_field_entry_t entry, 
  28215     uint16 *data, 
  28216     uint16 *mask);
  28217 
  28218 /* To qualify on alternate tunnel source Ipv4. */
  28219 extern int bcm_field_qualify_TunnelAltSrcIp(
  28220     int unit, 
  28221     bcm_field_entry_t entry, 
  28222     bcm_ip_t data, 
  28223     bcm_ip_t mask);
  28224 
  28225 /* 
  28226  * Get value for bcmFieldQualifyTunnelAltSrcIp
  28227  *             qualifier from the field entry.
  28228  */
  28229 extern int bcm_field_qualify_TunnelAltSrcIp_get(
  28230     int unit, 
  28231     bcm_field_entry_t entry, 
  28232     bcm_ip_t *data, 
  28233     bcm_ip_t *mask);
  28234 
  28235 /* To qualify on alternate tunnel source Ipv6. */
  28236 extern int bcm_field_qualify_TunnelAltSrcIp6(
  28237     int unit, 
  28238     bcm_field_entry_t entry, 
  28239     bcm_ip6_t data, 
  28240     bcm_ip6_t mask);
  28241 
  28242 /* 
  28243  * Get value for bcmFieldQualifyTunnelAltSrcIp6
  28244  *             qualifier from the field entry.
  28245  */
  28246 extern int bcm_field_qualify_TunnelAltSrcIp6_get(
  28247     int unit, 
  28248     bcm_field_entry_t entry, 
  28249     bcm_ip6_t *data, 
  28250     bcm_ip6_t *mask);
  28251 
  28252 /* To qualify on alternate tunnel destination Ipv4. */
  28253 extern int bcm_field_qualify_TunnelAltDstIp(
  28254     int unit, 
  28255     bcm_field_entry_t entry, 
  28256     bcm_ip_t data, 
  28257     bcm_ip_t mask);
  28258 
  28259 /* 
  28260  * Get value for bcmFieldQualifyTunnelAltDstIp
  28261  *             qualifier from the field entry.
  28262  */
  28263 extern int bcm_field_qualify_TunnelAltDstIp_get(
  28264     int unit, 
  28265     bcm_field_entry_t entry, 
  28266     bcm_ip_t *data, 
  28267     bcm_ip_t *mask);
  28268 
  28269 /* To qualify on alternate tunnel destination Ipv6. */
  28270 extern int bcm_field_qualify_TunnelAltDstIp6(
  28271     int unit, 
  28272     bcm_field_entry_t entry, 
  28273     bcm_ip6_t data, 
  28274     bcm_ip6_t mask);
  28275 
  28276 /* 
  28277  * Get value for bcmFieldQualifyTunnelAltDstIp6
  28278  *             qualifier from the field entry.
  28279  */
  28280 extern int bcm_field_qualify_TunnelAltDstIp6_get(
  28281     int unit, 
  28282     bcm_field_entry_t entry, 
  28283     bcm_ip6_t *data, 
  28284     bcm_ip6_t *mask);
  28285 
  28286 /* To qualify on alternate tunnel ip protocol. */
  28287 extern int bcm_field_qualify_TunnelAltIpProtocol(
  28288     int unit, 
  28289     bcm_field_entry_t entry, 
  28290     uint8 data, 
  28291     uint8 mask);
  28292 
  28293 /* 
  28294  * Get value for bcmFieldQualifyTunnelAltIpProtocol
  28295  *             qualifier from the field entry.
  28296  */
  28297 extern int bcm_field_qualify_TunnelAltIpProtocol_get(
  28298     int unit, 
  28299     bcm_field_entry_t entry, 
  28300     uint8 *data, 
  28301     uint8 *mask);
  28302 
  28303 /* To qualify on alternate tunnel l4 source port. */
  28304 extern int bcm_field_qualify_TunnelAltL4SrcPort(
  28305     int unit, 
  28306     bcm_field_entry_t entry, 
  28307     uint16 data, 
  28308     uint16 mask);
  28309 
  28310 /* 
  28311  * Get value for bcmFieldQualifyTunnelAltL4SrcPort
  28312  *             qualifier from the field entry.
  28313  */
  28314 extern int bcm_field_qualify_TunnelAltL4SrcPort_get(
  28315     int unit, 
  28316     bcm_field_entry_t entry, 
  28317     uint16 *data, 
  28318     uint16 *mask);
  28319 
  28320 /* To qualify on alternate tunnel l4 destination port. */
  28321 extern int bcm_field_qualify_TunnelAltL4DstPort(
  28322     int unit, 
  28323     bcm_field_entry_t entry, 
  28324     uint16 data, 
  28325     uint16 mask);
  28326 
  28327 /* 
  28328  * Get value for bcmFieldQualifyTunnelAltL4DstPort
  28329  *             qualifier from the field entry.
  28330  */
  28331 extern int bcm_field_qualify_TunnelAltL4DstPort_get(
  28332     int unit, 
  28333     bcm_field_entry_t entry, 
  28334     uint16 *data, 
  28335     uint16 *mask);
  28336 
  28337 /* To qualify on outer Ip Information. */
  28338 extern int bcm_field_qualify_OuterIpInfo(
  28339     int unit, 
  28340     bcm_field_entry_t entry, 
  28341     uint32 data, 
  28342     uint32 mask);
  28343 
  28344 /* 
  28345  * Get value for bcmFieldQualifyOuterIpInfo
  28346  *             qualifier from the field entry.
  28347  */
  28348 extern int bcm_field_qualify_OuterIpInfo_get(
  28349     int unit, 
  28350     bcm_field_entry_t entry, 
  28351     uint32 *data, 
  28352     uint32 *mask);
  28353 
  28354 /* To qualify on outer Ip Information. */
  28355 extern int bcm_field_qualify_OuterL2MacInfo(
  28356     int unit, 
  28357     bcm_field_entry_t entry, 
  28358     uint32 data, 
  28359     uint32 mask);
  28360 
  28361 /* 
  28362  * Get value for bcmFieldQualifyOuterL2MacInfo
  28363  *             qualifier from the field entry.
  28364  */
  28365 extern int bcm_field_qualify_OuterL2MacInfo_get(
  28366     int unit, 
  28367     bcm_field_entry_t entry, 
  28368     uint32 *data, 
  28369     uint32 *mask);
  28370 
  28371 /* To qualify on outer L4 Information. */
  28372 extern int bcm_field_qualify_OuterL4Info(
  28373     int unit, 
  28374     bcm_field_entry_t entry, 
  28375     uint32 data, 
  28376     uint32 mask);
  28377 
  28378 /* 
  28379  * Get value for bcmFieldQualifyOuterL4Info
  28380  *             qualifier from the field entry.
  28381  */
  28382 extern int bcm_field_qualify_OuterL4Info_get(
  28383     int unit, 
  28384     bcm_field_entry_t entry, 
  28385     uint32 *data, 
  28386     uint32 *mask);
  28387 
  28388 /* To qualify on inner Ip Information. */
  28389 extern int bcm_field_qualify_InnerIpInfo(
  28390     int unit, 
  28391     bcm_field_entry_t entry, 
  28392     uint32 data, 
  28393     uint32 mask);
  28394 
  28395 /* 
  28396  * Get value for bcmFieldQualifyInnerIpInfo
  28397  *             qualifier from the field entry.
  28398  */
  28399 extern int bcm_field_qualify_InnerIpInfo_get(
  28400     int unit, 
  28401     bcm_field_entry_t entry, 
  28402     uint32 *data, 
  28403     uint32 *mask);
  28404 
  28405 /* To qualify on inner Ip Information. */
  28406 extern int bcm_field_qualify_InnerL2MacInfo(
  28407     int unit, 
  28408     bcm_field_entry_t entry, 
  28409     uint32 data, 
  28410     uint32 mask);
  28411 
  28412 /* 
  28413  * Get value for bcmFieldQualifyInnerL2MacInfo
  28414  *             qualifier from the field entry.
  28415  */
  28416 extern int bcm_field_qualify_InnerL2MacInfo_get(
  28417     int unit, 
  28418     bcm_field_entry_t entry, 
  28419     uint32 *data, 
  28420     uint32 *mask);
  28421 
  28422 /* To qualify on inner L4 Information. */
  28423 extern int bcm_field_qualify_InnerL4Info(
  28424     int unit, 
  28425     bcm_field_entry_t entry, 
  28426     uint32 data, 
  28427     uint32 mask);
  28428 
  28429 /* 
  28430  * Get value for bcmFieldQualifyInnerL4Info
  28431  *             qualifier from the field entry.
  28432  */
  28433 extern int bcm_field_qualify_InnerL4Info_get(
  28434     int unit, 
  28435     bcm_field_entry_t entry, 
  28436     uint32 *data, 
  28437     uint32 *mask);
  28438 
  28439 /* To qualify on effective Ttl Information. */
  28440 extern int bcm_field_qualify_EffectiveTtl(
  28441     int unit, 
  28442     bcm_field_entry_t entry, 
  28443     uint8 data, 
  28444     uint8 mask);
  28445 
  28446 /* 
  28447  * Get value for bcmFieldQualifyEffectiveTtl
  28448  *             qualifier from the field entry.
  28449  */
  28450 extern int bcm_field_qualify_EffectiveTtl_get(
  28451     int unit, 
  28452     bcm_field_entry_t entry, 
  28453     uint8 *data, 
  28454     uint8 *mask);
  28455 
  28456 /* To qualify on flex state result counter a0 value. */
  28457 extern int bcm_field_qualify_FlexStateResultA0(
  28458     int unit, 
  28459     bcm_field_entry_t entry, 
  28460     uint32 data, 
  28461     uint32 mask);
  28462 
  28463 /* 
  28464  * Get value for bcmFieldQualifyFlexStateResultA0
  28465  *             qualifier from the field entry.
  28466  */
  28467 extern int bcm_field_qualify_FlexStateResultA0_get(
  28468     int unit, 
  28469     bcm_field_entry_t entry, 
  28470     uint32 *data, 
  28471     uint32 *mask);
  28472 
  28473 /* To qualify on flex state result counter a1 value. */
  28474 extern int bcm_field_qualify_FlexStateResultA1(
  28475     int unit, 
  28476     bcm_field_entry_t entry, 
  28477     uint32 data, 
  28478     uint32 mask);
  28479 
  28480 /* 
  28481  * Get value for bcmFieldQualifyFlexStateResultA1
  28482  *             qualifier from the field entry.
  28483  */
  28484 extern int bcm_field_qualify_FlexStateResultA1_get(
  28485     int unit, 
  28486     bcm_field_entry_t entry, 
  28487     uint32 *data, 
  28488     uint32 *mask);
  28489 
  28490 /* To qualify on forwarding header last ip protocol value. */
  28491 extern int bcm_field_qualify_LastIpProtocol(
  28492     int unit, 
  28493     bcm_field_entry_t entry, 
  28494     uint8 data, 
  28495     uint8 mask);
  28496 
  28497 /* 
  28498  * Get value for bcmFieldQualifyLastIpProtocol
  28499  *             qualifier from the field entry.
  28500  */
  28501 extern int bcm_field_qualify_LastIpProtocol_get(
  28502     int unit, 
  28503     bcm_field_entry_t entry, 
  28504     uint8 *data, 
  28505     uint8 *mask);
  28506 
  28507 /* To qualify on MPLS label4. */
  28508 extern int bcm_field_qualify_MplsLabel4(
  28509     int unit, 
  28510     bcm_field_entry_t entry, 
  28511     uint32 data, 
  28512     uint32 mask);
  28513 
  28514 /* 
  28515  * Get value for bcmFieldQualifyMplsLabel4
  28516  *             qualifier from the field entry.
  28517  */
  28518 extern int bcm_field_qualify_MplsLabel4_get(
  28519     int unit, 
  28520     bcm_field_entry_t entry, 
  28521     uint32 *data, 
  28522     uint32 *mask);
  28523 
  28524 /* To qualify on MPLS label4 ttl value. */
  28525 extern int bcm_field_qualify_MplsLabel4Ttl(
  28526     int unit, 
  28527     bcm_field_entry_t entry, 
  28528     uint8 data, 
  28529     uint8 mask);
  28530 
  28531 /* 
  28532  * Get value for bcmFieldQualifyMplsLabel4Ttl
  28533  *             qualifier from the field entry.
  28534  */
  28535 extern int bcm_field_qualify_MplsLabel4Ttl_get(
  28536     int unit, 
  28537     bcm_field_entry_t entry, 
  28538     uint8 *data, 
  28539     uint8 *mask);
  28540 
  28541 /* To qualify on MPLS label4 bos value. */
  28542 extern int bcm_field_qualify_MplsLabel4Bos(
  28543     int unit, 
  28544     bcm_field_entry_t entry, 
  28545     uint8 data, 
  28546     uint8 mask);
  28547 
  28548 /* 
  28549  * Get value for bcmFieldQualifyMplsLabel4Bos
  28550  *             qualifier from the field entry.
  28551  */
  28552 extern int bcm_field_qualify_MplsLabel4Bos_get(
  28553     int unit, 
  28554     bcm_field_entry_t entry, 
  28555     uint8 *data, 
  28556     uint8 *mask);
  28557 
  28558 /* To qualify on MPLS label4 exp value. */
  28559 extern int bcm_field_qualify_MplsLabel4Exp(
  28560     int unit, 
  28561     bcm_field_entry_t entry, 
  28562     uint8 data, 
  28563     uint8 mask);
  28564 
  28565 /* 
  28566  * Get value for bcmFieldQualifyMplsLabel4Exp
  28567  *             qualifier from the field entry.
  28568  */
  28569 extern int bcm_field_qualify_MplsLabel4Exp_get(
  28570     int unit, 
  28571     bcm_field_entry_t entry, 
  28572     uint8 *data, 
  28573     uint8 *mask);
  28574 
  28575 /* To qualify on MPLS label4 id value. */
  28576 extern int bcm_field_qualify_MplsLabel4Id(
  28577     int unit, 
  28578     bcm_field_entry_t entry, 
  28579     uint32 data, 
  28580     uint32 mask);
  28581 
  28582 /* 
  28583  * Get value for bcmFieldQualifyMplsLabel4Id
  28584  *             qualifier from the field entry.
  28585  */
  28586 extern int bcm_field_qualify_MplsLabel4Id_get(
  28587     int unit, 
  28588     bcm_field_entry_t entry, 
  28589     uint32 *data, 
  28590     uint32 *mask);
  28591 
  28592 /* To qualify on MPLS label5. */
  28593 extern int bcm_field_qualify_MplsLabel5(
  28594     int unit, 
  28595     bcm_field_entry_t entry, 
  28596     uint32 data, 
  28597     uint32 mask);
  28598 
  28599 /* 
  28600  * Get value for bcmFieldQualifyMplsLabel5
  28601  *             qualifier from the field entry.
  28602  */
  28603 extern int bcm_field_qualify_MplsLabel5_get(
  28604     int unit, 
  28605     bcm_field_entry_t entry, 
  28606     uint32 *data, 
  28607     uint32 *mask);
  28608 
  28609 /* To qualify on MPLS label5 ttl value. */
  28610 extern int bcm_field_qualify_MplsLabel5Ttl(
  28611     int unit, 
  28612     bcm_field_entry_t entry, 
  28613     uint8 data, 
  28614     uint8 mask);
  28615 
  28616 /* 
  28617  * Get value for bcmFieldQualifyMplsLabel5Ttl
  28618  *             qualifier from the field entry.
  28619  */
  28620 extern int bcm_field_qualify_MplsLabel5Ttl_get(
  28621     int unit, 
  28622     bcm_field_entry_t entry, 
  28623     uint8 *data, 
  28624     uint8 *mask);
  28625 
  28626 /* To qualify on MPLS label5 bos value. */
  28627 extern int bcm_field_qualify_MplsLabel5Bos(
  28628     int unit, 
  28629     bcm_field_entry_t entry, 
  28630     uint8 data, 
  28631     uint8 mask);
  28632 
  28633 /* 
  28634  * Get value for bcmFieldQualifyMplsLabel5Bos
  28635  *             qualifier from the field entry.
  28636  */
  28637 extern int bcm_field_qualify_MplsLabel5Bos_get(
  28638     int unit, 
  28639     bcm_field_entry_t entry, 
  28640     uint8 *data, 
  28641     uint8 *mask);
  28642 
  28643 /* To qualify on MPLS label5 exp value. */
  28644 extern int bcm_field_qualify_MplsLabel5Exp(
  28645     int unit, 
  28646     bcm_field_entry_t entry, 
  28647     uint8 data, 
  28648     uint8 mask);
  28649 
  28650 /* 
  28651  * Get value for bcmFieldQualifyMplsLabel5Exp
  28652  *             qualifier from the field entry.
  28653  */
  28654 extern int bcm_field_qualify_MplsLabel5Exp_get(
  28655     int unit, 
  28656     bcm_field_entry_t entry, 
  28657     uint8 *data, 
  28658     uint8 *mask);
  28659 
  28660 /* To qualify on MPLS label5 id value. */
  28661 extern int bcm_field_qualify_MplsLabel5Id(
  28662     int unit, 
  28663     bcm_field_entry_t entry, 
  28664     uint32 data, 
  28665     uint32 mask);
  28666 
  28667 /* 
  28668  * Get value for bcmFieldQualifyMplsLabel5Id
  28669  *             qualifier from the field entry.
  28670  */
  28671 extern int bcm_field_qualify_MplsLabel5Id_get(
  28672     int unit, 
  28673     bcm_field_entry_t entry, 
  28674     uint32 *data, 
  28675     uint32 *mask);
  28676 
  28677 /* To qualify on MPLS label6. */
  28678 extern int bcm_field_qualify_MplsLabel6(
  28679     int unit, 
  28680     bcm_field_entry_t entry, 
  28681     uint32 data, 
  28682     uint32 mask);
  28683 
  28684 /* 
  28685  * Get value for bcmFieldQualifyMplsLabel6
  28686  *             qualifier from the field entry.
  28687  */
  28688 extern int bcm_field_qualify_MplsLabel6_get(
  28689     int unit, 
  28690     bcm_field_entry_t entry, 
  28691     uint32 *data, 
  28692     uint32 *mask);
  28693 
  28694 /* To qualify on MPLS label6 ttl value. */
  28695 extern int bcm_field_qualify_MplsLabel6Ttl(
  28696     int unit, 
  28697     bcm_field_entry_t entry, 
  28698     uint8 data, 
  28699     uint8 mask);
  28700 
  28701 /* 
  28702  * Get value for bcmFieldQualifyMplsLabel6Ttl
  28703  *             qualifier from the field entry.
  28704  */
  28705 extern int bcm_field_qualify_MplsLabel6Ttl_get(
  28706     int unit, 
  28707     bcm_field_entry_t entry, 
  28708     uint8 *data, 
  28709     uint8 *mask);
  28710 
  28711 /* To qualify on MPLS label6 bos value. */
  28712 extern int bcm_field_qualify_MplsLabel6Bos(
  28713     int unit, 
  28714     bcm_field_entry_t entry, 
  28715     uint8 data, 
  28716     uint8 mask);
  28717 
  28718 /* 
  28719  * Get value for bcmFieldQualifyMplsLabel6Bos
  28720  *             qualifier from the field entry.
  28721  */
  28722 extern int bcm_field_qualify_MplsLabel6Bos_get(
  28723     int unit, 
  28724     bcm_field_entry_t entry, 
  28725     uint8 *data, 
  28726     uint8 *mask);
  28727 
  28728 /* To qualify on MPLS label6 exp value. */
  28729 extern int bcm_field_qualify_MplsLabel6Exp(
  28730     int unit, 
  28731     bcm_field_entry_t entry, 
  28732     uint8 data, 
  28733     uint8 mask);
  28734 
  28735 /* 
  28736  * Get value for bcmFieldQualifyMplsLabel6Exp
  28737  *             qualifier from the field entry.
  28738  */
  28739 extern int bcm_field_qualify_MplsLabel6Exp_get(
  28740     int unit, 
  28741     bcm_field_entry_t entry, 
  28742     uint8 *data, 
  28743     uint8 *mask);
  28744 
  28745 /* To qualify on MPLS label6 id value. */
  28746 extern int bcm_field_qualify_MplsLabel6Id(
  28747     int unit, 
  28748     bcm_field_entry_t entry, 
  28749     uint32 data, 
  28750     uint32 mask);
  28751 
  28752 /* 
  28753  * Get value for bcmFieldQualifyMplsLabel6Id
  28754  *             qualifier from the field entry.
  28755  */
  28756 extern int bcm_field_qualify_MplsLabel6Id_get(
  28757     int unit, 
  28758     bcm_field_entry_t entry, 
  28759     uint32 *data, 
  28760     uint32 *mask);
  28761 
  28762 /* To qualify on MPLS label7. */
  28763 extern int bcm_field_qualify_MplsLabel7(
  28764     int unit, 
  28765     bcm_field_entry_t entry, 
  28766     uint32 data, 
  28767     uint32 mask);
  28768 
  28769 /* 
  28770  * Get value for bcmFieldQualifyMplsLabel7
  28771  *             qualifier from the field entry.
  28772  */
  28773 extern int bcm_field_qualify_MplsLabel7_get(
  28774     int unit, 
  28775     bcm_field_entry_t entry, 
  28776     uint32 *data, 
  28777     uint32 *mask);
  28778 
  28779 /* To qualify on MPLS label7 ttl value. */
  28780 extern int bcm_field_qualify_MplsLabel7Ttl(
  28781     int unit, 
  28782     bcm_field_entry_t entry, 
  28783     uint8 data, 
  28784     uint8 mask);
  28785 
  28786 /* 
  28787  * Get value for bcmFieldQualifyMplsLabel7Ttl
  28788  *             qualifier from the field entry.
  28789  */
  28790 extern int bcm_field_qualify_MplsLabel7Ttl_get(
  28791     int unit, 
  28792     bcm_field_entry_t entry, 
  28793     uint8 *data, 
  28794     uint8 *mask);
  28795 
  28796 /* To qualify on MPLS label7 bos value. */
  28797 extern int bcm_field_qualify_MplsLabel7Bos(
  28798     int unit, 
  28799     bcm_field_entry_t entry, 
  28800     uint8 data, 
  28801     uint8 mask);
  28802 
  28803 /* 
  28804  * Get value for bcmFieldQualifyMplsLabel7Bos
  28805  *             qualifier from the field entry.
  28806  */
  28807 extern int bcm_field_qualify_MplsLabel7Bos_get(
  28808     int unit, 
  28809     bcm_field_entry_t entry, 
  28810     uint8 *data, 
  28811     uint8 *mask);
  28812 
  28813 /* To qualify on MPLS label7 exp value. */
  28814 extern int bcm_field_qualify_MplsLabel7Exp(
  28815     int unit, 
  28816     bcm_field_entry_t entry, 
  28817     uint8 data, 
  28818     uint8 mask);
  28819 
  28820 /* 
  28821  * Get value for bcmFieldQualifyMplsLabel7Exp
  28822  *             qualifier from the field entry.
  28823  */
  28824 extern int bcm_field_qualify_MplsLabel7Exp_get(
  28825     int unit, 
  28826     bcm_field_entry_t entry, 
  28827     uint8 *data, 
  28828     uint8 *mask);
  28829 
  28830 /* To qualify on MPLS label7 id value. */
  28831 extern int bcm_field_qualify_MplsLabel7Id(
  28832     int unit, 
  28833     bcm_field_entry_t entry, 
  28834     uint32 data, 
  28835     uint32 mask);
  28836 
  28837 /* 
  28838  * Get value for bcmFieldQualifyMplsLabel7Id
  28839  *             qualifier from the field entry.
  28840  */
  28841 extern int bcm_field_qualify_MplsLabel7Id_get(
  28842     int unit, 
  28843     bcm_field_entry_t entry, 
  28844     uint32 *data, 
  28845     uint32 *mask);
  28846 
  28847 /* To qualify on L5 Payload byte 1. */
  28848 extern int bcm_field_qualify_L5PayloadByte1(
  28849     int unit, 
  28850     bcm_field_entry_t entry, 
  28851     uint8 data, 
  28852     uint8 mask);
  28853 
  28854 /* 
  28855  * Get value for bcmFieldQualifyL5PayloadByte1
  28856  *             qualifier from the field entry.
  28857  */
  28858 extern int bcm_field_qualify_L5PayloadByte1_get(
  28859     int unit, 
  28860     bcm_field_entry_t entry, 
  28861     uint8 *data, 
  28862     uint8 *mask);
  28863 
  28864 /* To qualify on L5 Payload byte 2. */
  28865 extern int bcm_field_qualify_L5PayloadByte2(
  28866     int unit, 
  28867     bcm_field_entry_t entry, 
  28868     uint8 data, 
  28869     uint8 mask);
  28870 
  28871 /* 
  28872  * Get value for bcmFieldQualifyL5PayloadByte2
  28873  *             qualifier from the field entry.
  28874  */
  28875 extern int bcm_field_qualify_L5PayloadByte2_get(
  28876     int unit, 
  28877     bcm_field_entry_t entry, 
  28878     uint8 *data, 
  28879     uint8 *mask);
  28880 
  28881 /* To qualify on L5 Payload byte 3. */
  28882 extern int bcm_field_qualify_L5PayloadByte3(
  28883     int unit, 
  28884     bcm_field_entry_t entry, 
  28885     uint8 data, 
  28886     uint8 mask);
  28887 
  28888 /* 
  28889  * Get value for bcmFieldQualifyL5PayloadByte3
  28890  *             qualifier from the field entry.
  28891  */
  28892 extern int bcm_field_qualify_L5PayloadByte3_get(
  28893     int unit, 
  28894     bcm_field_entry_t entry, 
  28895     uint8 *data, 
  28896     uint8 *mask);
  28897 
  28898 /* To qualify on L5 Payload byte 4. */
  28899 extern int bcm_field_qualify_L5PayloadByte4(
  28900     int unit, 
  28901     bcm_field_entry_t entry, 
  28902     uint8 data, 
  28903     uint8 mask);
  28904 
  28905 /* 
  28906  * Get value for bcmFieldQualifyL5PayloadByte4
  28907  *             qualifier from the field entry.
  28908  */
  28909 extern int bcm_field_qualify_L5PayloadByte4_get(
  28910     int unit, 
  28911     bcm_field_entry_t entry, 
  28912     uint8 *data, 
  28913     uint8 *mask);
  28914 
  28915 /* To qualify on L5 Payload byte 5. */
  28916 extern int bcm_field_qualify_L5PayloadByte5(
  28917     int unit, 
  28918     bcm_field_entry_t entry, 
  28919     uint8 data, 
  28920     uint8 mask);
  28921 
  28922 /* 
  28923  * Get value for bcmFieldQualifyL5PayloadByte5
  28924  *             qualifier from the field entry.
  28925  */
  28926 extern int bcm_field_qualify_L5PayloadByte5_get(
  28927     int unit, 
  28928     bcm_field_entry_t entry, 
  28929     uint8 *data, 
  28930     uint8 *mask);
  28931 
  28932 /* To qualify on L5 Payload byte 6. */
  28933 extern int bcm_field_qualify_L5PayloadByte6(
  28934     int unit, 
  28935     bcm_field_entry_t entry, 
  28936     uint8 data, 
  28937     uint8 mask);
  28938 
  28939 /* 
  28940  * Get value for bcmFieldQualifyL5PayloadByte6
  28941  *             qualifier from the field entry.
  28942  */
  28943 extern int bcm_field_qualify_L5PayloadByte6_get(
  28944     int unit, 
  28945     bcm_field_entry_t entry, 
  28946     uint8 *data, 
  28947     uint8 *mask);
  28948 
  28949 /* To qualify on L5 Payload byte 7. */
  28950 extern int bcm_field_qualify_L5PayloadByte7(
  28951     int unit, 
  28952     bcm_field_entry_t entry, 
  28953     uint8 data, 
  28954     uint8 mask);
  28955 
  28956 /* 
  28957  * Get value for bcmFieldQualifyL5PayloadByte7
  28958  *             qualifier from the field entry.
  28959  */
  28960 extern int bcm_field_qualify_L5PayloadByte7_get(
  28961     int unit, 
  28962     bcm_field_entry_t entry, 
  28963     uint8 *data, 
  28964     uint8 *mask);
  28965 
  28966 /* To qualify on L5 Payload byte 8. */
  28967 extern int bcm_field_qualify_L5PayloadByte8(
  28968     int unit, 
  28969     bcm_field_entry_t entry, 
  28970     uint8 data, 
  28971     uint8 mask);
  28972 
  28973 /* 
  28974  * Get value for bcmFieldQualifyL5PayloadByte8
  28975  *             qualifier from the field entry.
  28976  */
  28977 extern int bcm_field_qualify_L5PayloadByte8_get(
  28978     int unit, 
  28979     bcm_field_entry_t entry, 
  28980     uint8 *data, 
  28981     uint8 *mask);
  28982 
  28983 /* To qualify on Outer L5 Payload byte 1. */
  28984 extern int bcm_field_qualify_OuterL5PayloadByte1(
  28985     int unit, 
  28986     bcm_field_entry_t entry, 
  28987     uint8 data, 
  28988     uint8 mask);
  28989 
  28990 /* 
  28991  * Get value for bcmFieldQualifyOuterL5PayloadByte1
  28992  *             qualifier from the field entry.
  28993  */
  28994 extern int bcm_field_qualify_OuterL5PayloadByte1_get(
  28995     int unit, 
  28996     bcm_field_entry_t entry, 
  28997     uint8 *data, 
  28998     uint8 *mask);
  28999 
  29000 /* To qualify on Outer L5 Payload byte 2. */
  29001 extern int bcm_field_qualify_OuterL5PayloadByte2(
  29002     int unit, 
  29003     bcm_field_entry_t entry, 
  29004     uint8 data, 
  29005     uint8 mask);
  29006 
  29007 /* 
  29008  * Get value for bcmFieldQualifyOuterL5PayloadByte2
  29009  *             qualifier from the field entry.
  29010  */
  29011 extern int bcm_field_qualify_OuterL5PayloadByte2_get(
  29012     int unit, 
  29013     bcm_field_entry_t entry, 
  29014     uint8 *data, 
  29015     uint8 *mask);
  29016 
  29017 /* To qualify on Outer L5 Payload byte 3. */
  29018 extern int bcm_field_qualify_OuterL5PayloadByte3(
  29019     int unit, 
  29020     bcm_field_entry_t entry, 
  29021     uint8 data, 
  29022     uint8 mask);
  29023 
  29024 /* 
  29025  * Get value for bcmFieldQualifyOuterL5PayloadByte3
  29026  *             qualifier from the field entry.
  29027  */
  29028 extern int bcm_field_qualify_OuterL5PayloadByte3_get(
  29029     int unit, 
  29030     bcm_field_entry_t entry, 
  29031     uint8 *data, 
  29032     uint8 *mask);
  29033 
  29034 /* To qualify on Outer L5 Payload byte 4. */
  29035 extern int bcm_field_qualify_OuterL5PayloadByte4(
  29036     int unit, 
  29037     bcm_field_entry_t entry, 
  29038     uint8 data, 
  29039     uint8 mask);
  29040 
  29041 /* 
  29042  * Get value for bcmFieldQualifyOuterL5PayloadByte4
  29043  *             qualifier from the field entry.
  29044  */
  29045 extern int bcm_field_qualify_OuterL5PayloadByte4_get(
  29046     int unit, 
  29047     bcm_field_entry_t entry, 
  29048     uint8 *data, 
  29049     uint8 *mask);
  29050 
  29051 /* To qualify on Outer L5 Payload byte 5. */
  29052 extern int bcm_field_qualify_OuterL5PayloadByte5(
  29053     int unit, 
  29054     bcm_field_entry_t entry, 
  29055     uint8 data, 
  29056     uint8 mask);
  29057 
  29058 /* 
  29059  * Get value for bcmFieldQualifyOuterL5PayloadByte5
  29060  *             qualifier from the field entry.
  29061  */
  29062 extern int bcm_field_qualify_OuterL5PayloadByte5_get(
  29063     int unit, 
  29064     bcm_field_entry_t entry, 
  29065     uint8 *data, 
  29066     uint8 *mask);
  29067 
  29068 /* To qualify on Outer L5 Payload byte 6. */
  29069 extern int bcm_field_qualify_OuterL5PayloadByte6(
  29070     int unit, 
  29071     bcm_field_entry_t entry, 
  29072     uint8 data, 
  29073     uint8 mask);
  29074 
  29075 /* 
  29076  * Get value for bcmFieldQualifyOuterL5PayloadByte6
  29077  *             qualifier from the field entry.
  29078  */
  29079 extern int bcm_field_qualify_OuterL5PayloadByte6_get(
  29080     int unit, 
  29081     bcm_field_entry_t entry, 
  29082     uint8 *data, 
  29083     uint8 *mask);
  29084 
  29085 /* To qualify on Outer L5 Payload byte 7. */
  29086 extern int bcm_field_qualify_OuterL5PayloadByte7(
  29087     int unit, 
  29088     bcm_field_entry_t entry, 
  29089     uint8 data, 
  29090     uint8 mask);
  29091 
  29092 /* 
  29093  * Get value for bcmFieldQualifyOuterL5PayloadByte7
  29094  *             qualifier from the field entry.
  29095  */
  29096 extern int bcm_field_qualify_OuterL5PayloadByte7_get(
  29097     int unit, 
  29098     bcm_field_entry_t entry, 
  29099     uint8 *data, 
  29100     uint8 *mask);
  29101 
  29102 /* To qualify on Outer L5 Payload byte 8. */
  29103 extern int bcm_field_qualify_OuterL5PayloadByte8(
  29104     int unit, 
  29105     bcm_field_entry_t entry, 
  29106     uint8 data, 
  29107     uint8 mask);
  29108 
  29109 /* 
  29110  * Get value for bcmFieldQualifyOuterL5PayloadByte8
  29111  *             qualifier from the field entry.
  29112  */
  29113 extern int bcm_field_qualify_OuterL5PayloadByte8_get(
  29114     int unit, 
  29115     bcm_field_entry_t entry, 
  29116     uint8 *data, 
  29117     uint8 *mask);
  29118 
  29119 /* To qualify on source mac of Arp/Rarp packet. */
  29120 extern int bcm_field_qualify_ArpSrcMac(
  29121     int unit, 
  29122     bcm_field_entry_t entry, 
  29123     bcm_mac_t data, 
  29124     bcm_mac_t mask);
  29125 
  29126 /* 
  29127  * Get value for bcmFieldQualifyArpSrcMac
  29128  *             qualifier from the field entry.
  29129  */
  29130 extern int bcm_field_qualify_ArpSrcMac_get(
  29131     int unit, 
  29132     bcm_field_entry_t entry, 
  29133     bcm_mac_t *data, 
  29134     bcm_mac_t *mask);
  29135 
  29136 /* To qualify on destination mac of Arp/Rarp packet. */
  29137 extern int bcm_field_qualify_ArpDstMac(
  29138     int unit, 
  29139     bcm_field_entry_t entry, 
  29140     bcm_mac_t data, 
  29141     bcm_mac_t mask);
  29142 
  29143 /* 
  29144  * Get value for bcmFieldQualifyArpDstMac
  29145  *             qualifier from the field entry.
  29146  */
  29147 extern int bcm_field_qualify_ArpDstMac_get(
  29148     int unit, 
  29149     bcm_field_entry_t entry, 
  29150     bcm_mac_t *data, 
  29151     bcm_mac_t *mask);
  29152 
  29153 /* To qualify on layer2 egress interface(L2_OIF). */
  29154 extern int bcm_field_qualify_L2EgressInterface(
  29155     int unit, 
  29156     bcm_field_entry_t entry, 
  29157     uint32 data, 
  29158     uint32 mask);
  29159 
  29160 /* 
  29161  * Get value for bcmFieldQualifyL2EgressInterface
  29162  *             qualifier from the field entry.
  29163  */
  29164 extern int bcm_field_qualify_L2EgressInterface_get(
  29165     int unit, 
  29166     bcm_field_entry_t entry, 
  29167     uint32 *data, 
  29168     uint32 *mask);
  29169 
  29170 /* To qualify on spanning tree profile index. */
  29171 extern int bcm_field_qualify_Stg(
  29172     int unit, 
  29173     bcm_field_entry_t entry, 
  29174     bcm_stg_t data, 
  29175     bcm_stg_t mask);
  29176 
  29177 /* 
  29178  * Get value for bcmFieldQualifyStg
  29179  *             qualifier from the field entry.
  29180  */
  29181 extern int bcm_field_qualify_Stg_get(
  29182     int unit, 
  29183     bcm_field_entry_t entry, 
  29184     bcm_stg_t *data, 
  29185     bcm_stg_t *mask);
  29186 
  29187 /* To qualify on cosq queue number. */
  29188 extern int bcm_field_qualify_CosQueueNum(
  29189     int unit, 
  29190     bcm_field_entry_t entry, 
  29191     uint16 data, 
  29192     uint16 mask);
  29193 
  29194 /* 
  29195  * Get value for bcmFieldQualifyCosQueueNum
  29196  *             qualifier from the field entry.
  29197  */
  29198 extern int bcm_field_qualify_CosQueueNum_get(
  29199     int unit, 
  29200     bcm_field_entry_t entry, 
  29201     uint16 *data, 
  29202     uint16 *mask);
  29203 
  29204 /* To qualify on packet marked as copy to CPU. */
  29205 extern int bcm_field_qualify_CopyToCpu(
  29206     int unit, 
  29207     bcm_field_entry_t entry, 
  29208     uint8 data, 
  29209     uint8 mask);
  29210 
  29211 /* 
  29212  * Get value for bcmFieldQualifyCopyToCpu
  29213  *             qualifier from the field entry.
  29214  */
  29215 extern int bcm_field_qualify_CopyToCpu_get(
  29216     int unit, 
  29217     bcm_field_entry_t entry, 
  29218     uint8 *data, 
  29219     uint8 *mask);
  29220 
  29221 /* To qualify on packet marked as truncate copy to CPU. */
  29222 extern int bcm_field_qualify_CopyToCpuTruncate(
  29223     int unit, 
  29224     bcm_field_entry_t entry, 
  29225     uint8 data, 
  29226     uint8 mask);
  29227 
  29228 /* 
  29229  * Get value for bcmFieldQualifyCopyToCpuTruncate
  29230  *             qualifier from the field entry.
  29231  */
  29232 extern int bcm_field_qualify_CopyToCpuTruncate_get(
  29233     int unit, 
  29234     bcm_field_entry_t entry, 
  29235     uint8 *data, 
  29236     uint8 *mask);
  29237 
  29238 /* To qualify on multicast packet. */
  29239 extern int bcm_field_qualify_McastPkt(
  29240     int unit, 
  29241     bcm_field_entry_t entry, 
  29242     uint8 data, 
  29243     uint8 mask);
  29244 
  29245 /* 
  29246  * Get value for bcmFieldQualifyMcastPkt
  29247  *             qualifier from the field entry.
  29248  */
  29249 extern int bcm_field_qualify_McastPkt_get(
  29250     int unit, 
  29251     bcm_field_entry_t entry, 
  29252     uint8 *data, 
  29253     uint8 *mask);
  29254 
  29255 /* To qualify on untagged packet. */
  29256 extern int bcm_field_qualify_UntagPkt(
  29257     int unit, 
  29258     bcm_field_entry_t entry, 
  29259     uint8 data, 
  29260     uint8 mask);
  29261 
  29262 /* 
  29263  * Get value for bcmFieldQualifyUntagPkt
  29264  *             qualifier from the field entry.
  29265  */
  29266 extern int bcm_field_qualify_UntagPkt_get(
  29267     int unit, 
  29268     bcm_field_entry_t entry, 
  29269     uint8 *data, 
  29270     uint8 *mask);
  29271 
  29272 /* To qualify on packet marked as donot modify forwarding header. */
  29273 extern int bcm_field_qualify_DoNotModify(
  29274     int unit, 
  29275     bcm_field_entry_t entry, 
  29276     uint8 data, 
  29277     uint8 mask);
  29278 
  29279 /* 
  29280  * Get value for bcmFieldQualifyDoNotModify
  29281  *             qualifier from the field entry.
  29282  */
  29283 extern int bcm_field_qualify_DoNotModify_get(
  29284     int unit, 
  29285     bcm_field_entry_t entry, 
  29286     uint8 *data, 
  29287     uint8 *mask);
  29288 
  29289 /* Add tx port type field qualification to a field entry. */
  29290 extern int bcm_field_qualify_TxPortType(
  29291     int unit, 
  29292     bcm_field_entry_t entry, 
  29293     bcm_field_PortType_t port_type);
  29294 
  29295 /* Get tx port type field qualification from a field entry. */
  29296 extern int bcm_field_qualify_TxPortType_get(
  29297     int unit, 
  29298     bcm_field_entry_t entry, 
  29299     bcm_field_PortType_t *port_type);
  29300 
  29301 /* Add rx port type field qualification to a field entry. */
  29302 extern int bcm_field_qualify_RxPortType(
  29303     int unit, 
  29304     bcm_field_entry_t entry, 
  29305     bcm_field_PortType_t port_type);
  29306 
  29307 /* Get rx port type field qualification from a field entry. */
  29308 extern int bcm_field_qualify_RxPortType_get(
  29309     int unit, 
  29310     bcm_field_entry_t entry, 
  29311     bcm_field_PortType_t *port_type);
  29312 
  29313 /* Add packet destination type field qualification to a field entry. */
  29314 extern int bcm_field_qualify_DstType(
  29315     int unit, 
  29316     bcm_field_entry_t entry, 
  29317     bcm_field_DstType_t dst_type);
  29318 
  29319 /* Get packet destinaion type field qualification from a field entry. */
  29320 extern int bcm_field_qualify_DstType_get(
  29321     int unit, 
  29322     bcm_field_entry_t entry, 
  29323     bcm_field_DstType_t *dst_type);
  29324 
  29325 /* 
  29326  * Add loopback packet header destination type field qualification to a
  29327  * field entry.
  29328  */
  29329 extern int bcm_field_qualify_LoopbackHdrDstType(
  29330     int unit, 
  29331     bcm_field_entry_t entry, 
  29332     bcm_field_DstType_t lb_hdr_dst_type);
  29333 
  29334 /* Get packet destinaion type field qualification from a field entry. */
  29335 extern int bcm_field_qualify_LoopbackHdrDstType_get(
  29336     int unit, 
  29337     bcm_field_entry_t entry, 
  29338     bcm_field_DstType_t *lb_hdr_dst_type);
  29339 
  29340 /* To qualify on mirror packet type. */
  29341 extern int bcm_field_qualify_MirrorPktType(
  29342     int unit, 
  29343     bcm_field_entry_t entry, 
  29344     uint32 data, 
  29345     uint32 mask);
  29346 
  29347 /* 
  29348  * Get value for bcmFieldQualifyMirrorPktType
  29349  *             qualifier from the field entry.
  29350  */
  29351 extern int bcm_field_qualify_MirrorPktType_get(
  29352     int unit, 
  29353     bcm_field_entry_t entry, 
  29354     uint32 *data, 
  29355     uint32 *mask);
  29356 
  29357 /* To qualify on PTP packet message type. */
  29358 extern int bcm_field_qualify_PtpMsgType(
  29359     int unit, 
  29360     bcm_field_entry_t entry, 
  29361     uint8 data, 
  29362     uint8 mask);
  29363 
  29364 /* 
  29365  * Get value for bcmFieldQualifyPtpMsgType
  29366  *             qualifier from the field entry.
  29367  */
  29368 extern int bcm_field_qualify_PtpMsgType_get(
  29369     int unit, 
  29370     bcm_field_entry_t entry, 
  29371     uint8 *data, 
  29372     uint8 *mask);
  29373 
  29374 /* To qualify on PTP packet version. */
  29375 extern int bcm_field_qualify_PtpVersion(
  29376     int unit, 
  29377     bcm_field_entry_t entry, 
  29378     uint8 data, 
  29379     uint8 mask);
  29380 
  29381 /* 
  29382  * Get value for bcmFieldQualifyPtpVersion
  29383  *             qualifier from the field entry.
  29384  */
  29385 extern int bcm_field_qualify_PtpVersion_get(
  29386     int unit, 
  29387     bcm_field_entry_t entry, 
  29388     uint8 *data, 
  29389     uint8 *mask);
  29390 
  29391 /* To qualify on PTP packet control. */
  29392 extern int bcm_field_qualify_PtpPktCtrl(
  29393     int unit, 
  29394     bcm_field_entry_t entry, 
  29395     uint16 data, 
  29396     uint16 mask);
  29397 
  29398 /* 
  29399  * Get value for bcmFieldQualifyPtpPktCtrl
  29400  *             qualifier from the field entry.
  29401  */
  29402 extern int bcm_field_qualify_PtpPktCtrl_get(
  29403     int unit, 
  29404     bcm_field_entry_t entry, 
  29405     uint16 *data, 
  29406     uint16 *mask);
  29407 
  29408 /* To qualify on vlan membership check. */
  29409 extern int bcm_field_qualify_VlanMembershipCheck(
  29410     int unit, 
  29411     bcm_field_entry_t entry, 
  29412     uint8 data, 
  29413     uint8 mask);
  29414 
  29415 /* 
  29416  * Get value for bcmFieldQualifyVlanMembershipCheck
  29417  *             qualifier from the field entry.
  29418  */
  29419 extern int bcm_field_qualify_VlanMembershipCheck_get(
  29420     int unit, 
  29421     bcm_field_entry_t entry, 
  29422     uint8 *data, 
  29423     uint8 *mask);
  29424 
  29425 /* To qualify on packets marked for inner vlan tag preserve. */
  29426 extern int bcm_field_qualify_InnerVlanTagPreserve(
  29427     int unit, 
  29428     bcm_field_entry_t entry, 
  29429     uint8 data, 
  29430     uint8 mask);
  29431 
  29432 /* 
  29433  * Get value for bcmFieldQualifyInnerVlanTagPreserve
  29434  *             qualifier from the field entry.
  29435  */
  29436 extern int bcm_field_qualify_InnerVlanTagPreserve_get(
  29437     int unit, 
  29438     bcm_field_entry_t entry, 
  29439     uint8 *data, 
  29440     uint8 *mask);
  29441 
  29442 /* To qualify on packets marked for outer vlan tag preserve. */
  29443 extern int bcm_field_qualify_OuterVlanTagPreserve(
  29444     int unit, 
  29445     bcm_field_entry_t entry, 
  29446     uint8 data, 
  29447     uint8 mask);
  29448 
  29449 /* 
  29450  * Get value for bcmFieldQualifyOuterVlanTagPreserve
  29451  *             qualifier from the field entry.
  29452  */
  29453 extern int bcm_field_qualify_OuterVlanTagPreserve_get(
  29454     int unit, 
  29455     bcm_field_entry_t entry, 
  29456     uint8 *data, 
  29457     uint8 *mask);
  29458 
  29459 /* To qualify on forwarding eligibility */
  29460 extern int bcm_field_qualify_ForwardingEligible(
  29461     int unit, 
  29462     bcm_field_entry_t entry, 
  29463     uint32 data, 
  29464     uint32 mask);
  29465 
  29466 /* 
  29467  * Get value for bcmFieldQualifyForwardingEligible
  29468  *             qualifier from the field entry.
  29469  */
  29470 extern int bcm_field_qualify_ForwardingEligible_get(
  29471     int unit, 
  29472     bcm_field_entry_t entry, 
  29473     uint32 *data, 
  29474     uint32 *mask);
  29475 
  29476 /* To qualify on class id retreived from forwarding MPLS lookup */
  29477 extern int bcm_field_qualify_InterfaceClassMpls(
  29478     int unit, 
  29479     bcm_field_entry_t entry, 
  29480     uint16 data, 
  29481     uint16 mask);
  29482 
  29483 /* 
  29484  * Get value for bcmFieldQualifyInterfaceClassMpls
  29485  *             qualifier from the field entry.
  29486  */
  29487 extern int bcm_field_qualify_InterfaceClassMpls_get(
  29488     int unit, 
  29489     bcm_field_entry_t entry, 
  29490     uint16 *data, 
  29491     uint16 *mask);
  29492 
  29493 /* To qualify on packet L3 check. */
  29494 extern int bcm_field_qualify_L3Check(
  29495     int unit, 
  29496     bcm_field_entry_t entry, 
  29497     uint32 data, 
  29498     uint32 mask);
  29499 
  29500 /* 
  29501  * Get value for bcmFieldQualifyL3Check
  29502  *             qualifier from the field entry.
  29503  */
  29504 extern int bcm_field_qualify_L3Check_get(
  29505     int unit, 
  29506     bcm_field_entry_t entry, 
  29507     uint32 *data, 
  29508     uint32 *mask);
  29509 
  29510 /* To qualify on L2 Interface match. */
  29511 extern int bcm_field_qualify_L2InterfaceMatch(
  29512     int unit, 
  29513     bcm_field_entry_t entry, 
  29514     uint8 data, 
  29515     uint8 mask);
  29516 
  29517 /* 
  29518  * Get value for bcmFieldQualifyL2InterfaceMatch
  29519  *             qualifier from the field entry.
  29520  */
  29521 extern int bcm_field_qualify_L2InterfaceMatch_get(
  29522     int unit, 
  29523     bcm_field_entry_t entry, 
  29524     uint8 *data, 
  29525     uint8 *mask);
  29526 
  29527 /* To qualify on opaque control id from protocol pkt forward table. */
  29528 extern int bcm_field_qualify_ProtocolPktOpaqueCtrlId(
  29529     int unit, 
  29530     bcm_field_entry_t entry, 
  29531     uint8 data, 
  29532     uint8 mask);
  29533 
  29534 /* 
  29535  * Get value for bcmFieldQualifyProtocolPktOpaqueCtrlId
  29536  *             qualifier from the field entry.
  29537  */
  29538 extern int bcm_field_qualify_ProtocolPktOpaqueCtrlId_get(
  29539     int unit, 
  29540     bcm_field_entry_t entry, 
  29541     uint8 *data, 
  29542     uint8 *mask);
  29543 
  29544 /* To qualify on class field provided by FP lookup stage. */
  29545 extern int bcm_field_qualify_LookupClassField(
  29546     int unit, 
  29547     bcm_field_entry_t entry, 
  29548     uint32 data, 
  29549     uint32 mask);
  29550 
  29551 /* 
  29552  * Get value for bcmFieldQualifyLookupClassField
  29553  *             qualifier from the field entry.
  29554  */
  29555 extern int bcm_field_qualify_LookupClassField_get(
  29556     int unit, 
  29557     bcm_field_entry_t entry, 
  29558     uint32 *data, 
  29559     uint32 *mask);
  29560 
  29561 /* 
  29562  * To qualify on opaque object 0 provided by exact match or flowtracker
  29563  * stage.
  29564  */
  29565 extern int bcm_field_qualify_ExactMatchOpaqueObject0(
  29566     int unit, 
  29567     bcm_field_entry_t entry, 
  29568     uint16 data, 
  29569     uint16 mask);
  29570 
  29571 /* 
  29572  * Get value for bcmFieldQualifyExactMatchOpaqueObject0
  29573  *             qualifier from the field entry.
  29574  */
  29575 extern int bcm_field_qualify_ExactMatchOpaqueObject0_get(
  29576     int unit, 
  29577     bcm_field_entry_t entry, 
  29578     uint16 *data, 
  29579     uint16 *mask);
  29580 
  29581 /* To qualify on type value of ICMP packet. */
  29582 extern int bcm_field_qualify_IcmpType(
  29583     int unit, 
  29584     bcm_field_entry_t entry, 
  29585     uint8 data, 
  29586     uint8 mask);
  29587 
  29588 /* 
  29589  * Get value for bcmFieldQualifyIcmpType
  29590  *             qualifier from the field entry.
  29591  */
  29592 extern int bcm_field_qualify_IcmpType_get(
  29593     int unit, 
  29594     bcm_field_entry_t entry, 
  29595     uint8 *data, 
  29596     uint8 *mask);
  29597 
  29598 /* To qualify on outer vlan range match status */
  29599 extern int bcm_field_qualify_OuterVlanRangeMatch(
  29600     int unit, 
  29601     bcm_field_entry_t entry, 
  29602     uint8 data, 
  29603     uint8 mask);
  29604 
  29605 /* 
  29606  * Get value for bcmFieldQualifyOuterVlanRangeMatch
  29607  *             qualifier from the field entry.
  29608  */
  29609 extern int bcm_field_qualify_OuterVlanRangeMatch_get(
  29610     int unit, 
  29611     bcm_field_entry_t entry, 
  29612     uint8 *data, 
  29613     uint8 *mask);
  29614 
  29615 /* To qualify on inner vlan range match status */
  29616 extern int bcm_field_qualify_InnerVlanRangeMatch(
  29617     int unit, 
  29618     bcm_field_entry_t entry, 
  29619     uint8 data, 
  29620     uint8 mask);
  29621 
  29622 /* 
  29623  * Get value for bcmFieldQualifyInnerVlanRangeMatch
  29624  *             qualifier from the field entry.
  29625  */
  29626 extern int bcm_field_qualify_InnerVlanRangeMatch_get(
  29627     int unit, 
  29628     bcm_field_entry_t entry, 
  29629     uint8 *data, 
  29630     uint8 *mask);
  29631 
  29632 /* 
  29633  * Set match criteria for bcmFieldQualifyTunnelHeaderDstMac
  29634  *                qualifier in the field entry.
  29635  */
  29636 extern int bcm_field_qualify_TunnelHeaderDstMac(
  29637     int unit, 
  29638     bcm_field_entry_t entry, 
  29639     bcm_mac_t data, 
  29640     bcm_mac_t mask);
  29641 
  29642 /* 
  29643  * Get match criteria for bcmFieldQualifyTunnelHeaderDstMac
  29644  *                qualifier from the field entry.
  29645  */
  29646 extern int bcm_field_qualify_TunnelHeaderDstMac_get(
  29647     int unit, 
  29648     bcm_field_entry_t entry, 
  29649     bcm_mac_t *data, 
  29650     bcm_mac_t *mask);
  29651 
  29652 /* 
  29653  * Set match criteria for bcmFieldQualifyTunnelHeaderSrcMac
  29654  *                qualifier in the field entry.
  29655  */
  29656 extern int bcm_field_qualify_TunnelHeaderSrcMac(
  29657     int unit, 
  29658     bcm_field_entry_t entry, 
  29659     bcm_mac_t data, 
  29660     bcm_mac_t mask);
  29661 
  29662 /* 
  29663  * Get match criteria for bcmFieldQualifyTunnelHeaderSrcMac
  29664  *                qualifier from the field entry.
  29665  */
  29666 extern int bcm_field_qualify_TunnelHeaderSrcMac_get(
  29667     int unit, 
  29668     bcm_field_entry_t entry, 
  29669     bcm_mac_t *data, 
  29670     bcm_mac_t *mask);
  29671 
  29672 /* 
  29673  * Set match criteria for bcmFieldQualifyTunnelHeaderSip
  29674  *                  qualifier in the field entry.
  29675  */
  29676 extern int bcm_field_qualify_TunnelHeaderSip(
  29677     int unit, 
  29678     bcm_field_entry_t entry, 
  29679     bcm_ip_t data, 
  29680     bcm_ip_t mask);
  29681 
  29682 /* 
  29683  * Set match criteria for bcmFieldQualifyTunnelHeaderDip
  29684  *                  qualifier in the field entry.
  29685  */
  29686 extern int bcm_field_qualify_TunnelHeaderDip(
  29687     int unit, 
  29688     bcm_field_entry_t entry, 
  29689     bcm_ip_t data, 
  29690     bcm_ip_t mask);
  29691 
  29692 /* 
  29693  * Get match criteria for bcmFieldQualifyTunnelHeaderSip
  29694  *                qualifier from the field entry.
  29695  */
  29696 extern int bcm_field_qualify_TunnelHeaderSip_get(
  29697     int unit, 
  29698     bcm_field_entry_t entry, 
  29699     bcm_ip_t *data, 
  29700     bcm_ip_t *mask);
  29701 
  29702 /* 
  29703  * Get match criteria for bcmFieldQualifyTunnelHeaderDip
  29704  *                qualifier from the field entry.
  29705  */
  29706 extern int bcm_field_qualify_TunnelHeaderDip_get(
  29707     int unit, 
  29708     bcm_field_entry_t entry, 
  29709     bcm_ip_t *data, 
  29710     bcm_ip_t *mask);
  29711 
  29712 /* 
  29713  * Set match criteria for bcmFieldQualifyTunnelHeaderSip6
  29714  *                  qualifier in the field entry.
  29715  */
  29716 extern int bcm_field_qualify_TunnelHeaderSip6(
  29717     int unit, 
  29718     bcm_field_entry_t entry, 
  29719     bcm_ip6_t data, 
  29720     bcm_ip6_t mask);
  29721 
  29722 /* 
  29723  * Set match criteria for bcmFieldQualifyTunnelHeaderDip6
  29724  *                  qualifier in the field entry.
  29725  */
  29726 extern int bcm_field_qualify_TunnelHeaderDip6(
  29727     int unit, 
  29728     bcm_field_entry_t entry, 
  29729     bcm_ip6_t data, 
  29730     bcm_ip6_t mask);
  29731 
  29732 /* 
  29733  * Get match criteria for bcmFieldQualifyTunnelHeaderSip6
  29734  *                qualifier from the field entry.
  29735  */
  29736 extern int bcm_field_qualify_TunnelHeaderSip6_get(
  29737     int unit, 
  29738     bcm_field_entry_t entry, 
  29739     bcm_ip6_t *data, 
  29740     bcm_ip6_t *mask);
  29741 
  29742 /* 
  29743  * Get match criteria for bcmFieldQualifyTunnelHeaderDip6
  29744  *                qualifier from the field entry.
  29745  */
  29746 extern int bcm_field_qualify_TunnelHeaderDip6_get(
  29747     int unit, 
  29748     bcm_field_entry_t entry, 
  29749     bcm_ip6_t *data, 
  29750     bcm_ip6_t *mask);
  29751 
  29752 /* 
  29753  * Set match criteria for bcmFieldQualifyTunnelHeaderIpProtocol
  29754  *                  qualifier in the field entry.
  29755  */
  29756 extern int bcm_field_qualify_TunnelHeaderIpProtocol(
  29757     int unit, 
  29758     bcm_field_entry_t entry, 
  29759     uint8 data, 
  29760     uint8 mask);
  29761 
  29762 /* 
  29763  * Get match criteria for bcmFieldQualifyTunnelHeaderIpProtocol
  29764  *                  qualifier from the field entry.
  29765  */
  29766 extern int bcm_field_qualify_TunnelHeaderIpProtocol_get(
  29767     int unit, 
  29768     bcm_field_entry_t entry, 
  29769     uint8 *data, 
  29770     uint8 *mask);
  29771 
  29772 /* bcm_field_qualify_L3EgressIntf */
  29773 extern int bcm_field_qualify_L3EgressIntf(
  29774     int unit, 
  29775     bcm_field_entry_t entry, 
  29776     uint32 intf_id, 
  29777     uint32 mask);
  29778 
  29779 /* 
  29780  * Get match criteria for bcmFieldQualifyL3EgressIntf
  29781  *                qualifier from the field entry.
  29782  */
  29783 extern int bcm_field_qualify_L3EgressIntf_get(
  29784     int unit, 
  29785     bcm_field_entry_t entry, 
  29786     uint32 *data, 
  29787     uint32 *mask);
  29788 
  29789 /* Add packet forward type field qualification to a field entry. */
  29790 extern int bcm_field_qualify_PktFwdType(
  29791     int unit, 
  29792     bcm_field_entry_t entry, 
  29793     bcm_field_PktFwdType_t type);
  29794 
  29795 /* Get packet forward type field qualification from a field entry. */
  29796 extern int bcm_field_qualify_PktFwdType_get(
  29797     int unit, 
  29798     bcm_field_entry_t entry, 
  29799     bcm_field_PktFwdType_t *type);
  29800 
  29801 #endif /* BCM_HIDE_DISPATCHABLE */
  29802 
  29803 /* Packet colors for flex counter. */
  29804 #define BCM_FIELD_COUNT_ALL     0          
  29805 #define BCM_FIELD_COUNT_GREEN   1          
  29806 #define BCM_FIELD_COUNT_YELLOW  2          
  29807 #define BCM_FIELD_COUNT_RED     4          
  29808 
  29809 /* 
  29810  * Flex counter configuration structure. Used to attach or detach the
  29811  * flex counter to field entry.
  29812  */
  29813 typedef struct bcm_field_flexctr_config_s {
  29814     uint32 flexctr_action_id;   /* Flex counter action ID. */
  29815     uint32 counter_index;       /* Index to the counters associated to the flex
  29816                                    counter action. */
  29817     uint8 color;                /* Packet color to be counted,
  29818                                    BCM_FIELD_COUNT_xxx */
  29819 } bcm_field_flexctr_config_t;
  29820 
  29821 #ifndef BCM_HIDE_DISPATCHABLE
  29822 
  29823 /* 
  29824  * Attach the flexctr action and its associated counter index to the
  29825  * field entry. The counter index in the 'bcm_field_flexctr_config_t'
  29826  * structure should be in the range of maximum counters associated to the
  29827  * flexctr action.
  29828  */
  29829 extern int bcm_field_entry_flexctr_attach(
  29830     int unit, 
  29831     bcm_field_entry_t entry, 
  29832     bcm_field_flexctr_config_t *flexctr_cfg);
  29833 
  29834 /* Detach the flexctr for a given field entry. */
  29835 extern int bcm_field_entry_flexctr_detach(
  29836     int unit, 
  29837     bcm_field_entry_t entry, 
  29838     bcm_field_flexctr_config_t *flexctr_cfg);
  29839 
  29840 #endif /* BCM_HIDE_DISPATCHABLE */
  29841 
  29842 /* 
  29843  * Presel Group configuration structure. Used to create a field presel
  29844  * group with specific attributes.
  29845  */
  29846 typedef struct bcm_field_presel_group_config_s {
  29847     uint32 flags;                       /* Presel Group create flags
  29848                                            BCM_FIELD_GROUP_CREATE_XXX. */
  29849     bcm_field_qset_t qset;              /* Group qualifier set. */
  29850     bcm_field_presel_group_t presel_group; /* Presel Group ID. */
  29851     bcm_field_hintid_t hintid;          /* Hints for Presel Group Creation. */
  29852 } bcm_field_presel_group_config_t;
  29853 
  29854 /* Initialize Field Presel Group Config structure. */
  29855 extern void bcm_field_presel_group_config_t_init(
  29856     bcm_field_presel_group_config_t *group_config);
  29857 
  29858 #ifndef BCM_HIDE_DISPATCHABLE
  29859 
  29860 /* Create a field presel group with specific attributes. */
  29861 extern int bcm_field_presel_group_config_create(
  29862     int unit, 
  29863     bcm_field_presel_group_config_t *group_config);
  29864 
  29865 /* Destroys a given field presel group. */
  29866 extern int bcm_field_presel_group_destroy(
  29867     int unit, 
  29868     bcm_field_presel_group_t presel_group);
  29869 
  29870 /* 
  29871  * Retrieve a field presel group config attributes for a given presel
  29872  * group Id mentioned in the input structure.
  29873  */
  29874 extern int bcm_field_presel_group_config_get(
  29875     int unit, 
  29876     bcm_field_presel_group_config_t *group_config);
  29877 
  29878 /* 
  29879  * Set match criteria for bcmFieldQualifySubportGroupIds
  29880  *                qualifier in the field entry.
  29881  */
  29882 extern int bcm_field_qualify_SubportGroupIds(
  29883     int unit, 
  29884     bcm_field_entry_t entry, 
  29885     uint32 num_groups, 
  29886     bcm_subport_port_group_t *subport_group_id_arr);
  29887 
  29888 /* 
  29889  * Get match criteria for bcmFieldQualifySubportGroupIds
  29890  *                qualifier from the field entry.
  29891  */
  29892 extern int bcm_field_qualify_SubportGroupIds_get(
  29893     int unit, 
  29894     bcm_field_entry_t entry, 
  29895     uint32 num_groups, 
  29896     bcm_subport_port_group_t *subport_group_id_arr, 
  29897     uint32 *actual_groups);
  29898 
  29899 /* To qualify on Flowtracker Class from Source 1. */
  29900 extern int bcm_field_qualify_FlowtrackerClassIdSource1(
  29901     int unit, 
  29902     bcm_field_entry_t entry, 
  29903     uint16 data, 
  29904     uint16 mask);
  29905 
  29906 /* To get qualified inputs on Flowtracker Class from Source 1. */
  29907 extern int bcm_field_qualify_FlowtrackerClassIdSource1_get(
  29908     int unit, 
  29909     bcm_field_entry_t entry, 
  29910     uint16 *data, 
  29911     uint16 *mask);
  29912 
  29913 /* To qualify on Flowtracker Class from Source 2. */
  29914 extern int bcm_field_qualify_FlowtrackerClassIdSource2(
  29915     int unit, 
  29916     bcm_field_entry_t entry, 
  29917     uint16 data, 
  29918     uint16 mask);
  29919 
  29920 /* To get qualified inputs on Flowtracker Class from Source 2. */
  29921 extern int bcm_field_qualify_FlowtrackerClassIdSource2_get(
  29922     int unit, 
  29923     bcm_field_entry_t entry, 
  29924     uint16 *data, 
  29925     uint16 *mask);
  29926 
  29927 /* Map an object name (field group, action, qualifier etc.) to an ID. */
  29928 extern int bcm_field_name_to_id(
  29929     int unit, 
  29930     uint32 flags, 
  29931     bcm_field_name_to_id_info_t *name_to_id_info, 
  29932     int *nof_ids, 
  29933     uint32 *ids);
  29934 
  29935 /* Create a field presel ID with specific attributes. */
  29936 extern int bcm_field_presel_config_create(
  29937     int unit, 
  29938     bcm_field_presel_config_t *presel_config);
  29939 
  29940 /* To Qualify on type of the Egress port control */
  29941 extern int bcm_field_qualify_EgressPortCtrlType(
  29942     int unit, 
  29943     bcm_field_entry_t entry, 
  29944     bcm_field_egress_port_ctrl_t ctrl_type);
  29945 
  29946 /* To Qualify on type of the Egress port control */
  29947 extern int bcm_field_qualify_EgressPortCtrlType_get(
  29948     int unit, 
  29949     bcm_field_entry_t entry, 
  29950     bcm_field_egress_port_ctrl_t *ctrl_type);
  29951 
  29952 /* To qualify if IFA metadata header current length equals to 0 */
  29953 extern int bcm_field_qualify_IfaCurrentLengthEqualToZero(
  29954     int unit, 
  29955     bcm_field_entry_t entry, 
  29956     uint8 data, 
  29957     uint8 mask);
  29958 
  29959 /* 
  29960  * To get qualified inputs on if IFA metadata header current length
  29961  * equals to 0
  29962  */
  29963 extern int bcm_field_qualify_IfaCurrentLengthEqualToZero_get(
  29964     int unit, 
  29965     bcm_field_entry_t entry, 
  29966     uint8 *data, 
  29967     uint8 *mask);
  29968 
  29969 /* To qualify if IFA metadata header hop limit equals to 0 */
  29970 extern int bcm_field_qualify_IfaHopLimitEqualToZero(
  29971     int unit, 
  29972     bcm_field_entry_t entry, 
  29973     uint8 data, 
  29974     uint8 mask);
  29975 
  29976 /* 
  29977  * To get qualified inputs on if IFA metadata header hop limit equals to
  29978  * 0
  29979  */
  29980 extern int bcm_field_qualify_IfaHopLimitEqualToZero_get(
  29981     int unit, 
  29982     bcm_field_entry_t entry, 
  29983     uint8 *data, 
  29984     uint8 *mask);
  29985 
  29986 /* To qualify if IFA version is 2 */
  29987 extern int bcm_field_qualify_IfaVersion2(
  29988     int unit, 
  29989     bcm_field_entry_t entry, 
  29990     uint8 data, 
  29991     uint8 mask);
  29992 
  29993 /* To get qualified inputs on if IFA version is 2 */
  29994 extern int bcm_field_qualify_IfaVersion2_get(
  29995     int unit, 
  29996     bcm_field_entry_t entry, 
  29997     uint8 *data, 
  29998     uint8 *mask);
  29999 
  30000 /* To qualify on IFA Global Name Space. */
  30001 extern int bcm_field_qualify_IfaGlobalNameSpace(
  30002     int unit, 
  30003     bcm_field_entry_t entry, 
  30004     uint32 data, 
  30005     uint32 mask);
  30006 
  30007 /* To get qualified inputs on IFA Global Name Space. */
  30008 extern int bcm_field_qualify_IfaGlobalNameSpace_get(
  30009     int unit, 
  30010     bcm_field_entry_t entry, 
  30011     uint32 *data, 
  30012     uint32 *mask);
  30013 
  30014 /* To qualify on IFA Local Name Space. */
  30015 extern int bcm_field_qualify_IfaLocalNameSpace(
  30016     int unit, 
  30017     bcm_field_entry_t entry, 
  30018     uint32 data, 
  30019     uint32 mask);
  30020 
  30021 /* To get qualified inputs on IFA Local Name Space. */
  30022 extern int bcm_field_qualify_IfaLocalNameSpace_get(
  30023     int unit, 
  30024     bcm_field_entry_t entry, 
  30025     uint32 *data, 
  30026     uint32 *mask);
  30027 
  30028 /* To qualify on IFA metadata header current length. */
  30029 extern int bcm_field_qualify_IfaCurrentLength(
  30030     int unit, 
  30031     bcm_field_entry_t entry, 
  30032     uint32 data, 
  30033     uint32 mask);
  30034 
  30035 /* To get qualified inputs on IFA metadata header current length. */
  30036 extern int bcm_field_qualify_IfaCurrentLength_get(
  30037     int unit, 
  30038     bcm_field_entry_t entry, 
  30039     uint32 *data, 
  30040     uint32 *mask);
  30041 
  30042 /* To qualify on IFA metadata header Request vector. */
  30043 extern int bcm_field_qualify_IfaRequestVector(
  30044     int unit, 
  30045     bcm_field_entry_t entry, 
  30046     uint32 data, 
  30047     uint32 mask);
  30048 
  30049 /* To get qualified inputs on IFA metadata header request vector. */
  30050 extern int bcm_field_qualify_IfaRequestVector_get(
  30051     int unit, 
  30052     bcm_field_entry_t entry, 
  30053     uint32 *data, 
  30054     uint32 *mask);
  30055 
  30056 /* To qualify on IFA Flags. */
  30057 extern int bcm_field_qualify_IfaFlags(
  30058     int unit, 
  30059     bcm_field_entry_t entry, 
  30060     uint32 data, 
  30061     uint32 mask);
  30062 
  30063 /* To get qualified inputs on IFA Flags. */
  30064 extern int bcm_field_qualify_IfaFlags_get(
  30065     int unit, 
  30066     bcm_field_entry_t entry, 
  30067     uint32 *data, 
  30068     uint32 *mask);
  30069 
  30070 /* To qualify on IFA Max length. */
  30071 extern int bcm_field_qualify_IfaMaxLength(
  30072     int unit, 
  30073     bcm_field_entry_t entry, 
  30074     uint32 data, 
  30075     uint32 mask);
  30076 
  30077 /* To get qualified inputs on IFA Max length. */
  30078 extern int bcm_field_qualify_IfaMaxLength_get(
  30079     int unit, 
  30080     bcm_field_entry_t entry, 
  30081     uint32 *data, 
  30082     uint32 *mask);
  30083 
  30084 /* To qualify on IFA Action vector */
  30085 extern int bcm_field_qualify_IfaActionVector(
  30086     int unit, 
  30087     bcm_field_entry_t entry, 
  30088     uint32 data, 
  30089     uint32 mask);
  30090 
  30091 /* To get qualified inputs on IFA action vector. */
  30092 extern int bcm_field_qualify_IfaActionVector_get(
  30093     int unit, 
  30094     bcm_field_entry_t entry, 
  30095     uint32 *data, 
  30096     uint32 *mask);
  30097 
  30098 #endif /* BCM_HIDE_DISPATCHABLE */
  30099 
  30100 /* Initialize the field destination match structure. */
  30101 extern void bcm_field_destination_match_t_init(
  30102     bcm_field_destination_match_t *match);
  30103 
  30104 /* Initialize the field destination action structure. */
  30105 extern void bcm_field_destination_action_t_init(
  30106     bcm_field_destination_action_t *action);
  30107 
  30108 #ifndef BCM_HIDE_DISPATCHABLE
  30109 
  30110 /* Add a field destination entry. */
  30111 extern int bcm_field_destination_entry_add(
  30112     int unit, 
  30113     uint32 options, 
  30114     bcm_field_destination_match_t *match, 
  30115     bcm_field_destination_action_t *action);
  30116 
  30117 /* Get a field destination entry. */
  30118 extern int bcm_field_destination_entry_get(
  30119     int unit, 
  30120     bcm_field_destination_match_t *match, 
  30121     bcm_field_destination_action_t *action);
  30122 
  30123 #endif /* BCM_HIDE_DISPATCHABLE */
  30124 
  30125 /* Field destination entry traverse callback function */
  30126 typedef int (*bcm_field_destination_entry_traverse_cb)(
  30127     int unit, 
  30128     bcm_field_destination_match_t *match, 
  30129     bcm_field_destination_action_t *action, 
  30130     void *user_data);
  30131 
  30132 #ifndef BCM_HIDE_DISPATCHABLE
  30133 
  30134 /* Traverse field destination entries. */
  30135 extern int bcm_field_destination_entry_traverse(
  30136     int unit, 
  30137     bcm_field_destination_entry_traverse_cb callback, 
  30138     void *user_data);
  30139 
  30140 /* Delete a field destination entry. */
  30141 extern int bcm_field_destination_entry_delete(
  30142     int unit, 
  30143     bcm_field_destination_match_t *match);
  30144 
  30145 /* Attach the statistic counter ID to a field destination entry. */
  30146 extern int bcm_field_destination_stat_attach(
  30147     int unit, 
  30148     bcm_field_destination_match_t *match, 
  30149     uint32 stat_counter_id);
  30150 
  30151 /* Get the statistic counter ID attached to a field destination entry. */
  30152 extern int bcm_field_destination_stat_id_get(
  30153     int unit, 
  30154     bcm_field_destination_match_t *match, 
  30155     uint32 *stat_counter_id);
  30156 
  30157 /* Detach the statistic counter ID attached to a field destination entry. */
  30158 extern int bcm_field_destination_stat_detach(
  30159     int unit, 
  30160     bcm_field_destination_match_t *match);
  30161 
  30162 /* Set the flex counter object value for a field destination entry. */
  30163 extern int bcm_field_destination_flexctr_object_set(
  30164     int unit, 
  30165     bcm_field_destination_match_t *match, 
  30166     uint32 value);
  30167 
  30168 /* Get the flex counter object value of a field destination entry. */
  30169 extern int bcm_field_destination_flexctr_object_get(
  30170     int unit, 
  30171     bcm_field_destination_match_t *match, 
  30172     uint32 *value);
  30173 
  30174 #endif /* BCM_HIDE_DISPATCHABLE */
  30175 
  30176 /* 
  30177  * This structure is used to configure one FFC for user-defined range
  30178  * type
  30179  */
  30180 typedef struct bcm_field_range_qual_info_s {
  30181     bcm_field_qualify_t qual_type;      /* BCM level qualifier look at
  30182                                            bcm_field_qualify_t for more info. */
  30183     bcm_field_qualify_attach_info_t qual_info; /* Indicate how to read the relevant
  30184                                            qualifier from PBUS. */
  30185 } bcm_field_range_qual_info_t;
  30186 
  30187 #ifndef BCM_HIDE_DISPATCHABLE
  30188 
  30189 /* Configures the L4 OPS Extended FFCs */
  30190 extern int bcm_field_range_type_config_set(
  30191     int unit, 
  30192     uint32 flags, 
  30193     bcm_field_stage_t stage, 
  30194     bcm_field_context_t context_id, 
  30195     uint32 configurable_range_index, 
  30196     bcm_field_range_qual_info_t *range_qualifier_info);
  30197 
  30198 /* Returns the L4 OPS Extended FFCs configuration */
  30199 extern int bcm_field_range_type_config_get(
  30200     int unit, 
  30201     uint32 flags, 
  30202     bcm_field_stage_t stage, 
  30203     bcm_field_context_t context_id, 
  30204     uint32 configurable_range_index, 
  30205     bcm_field_range_qual_info_t *range_qualifier_info);
  30206 
  30207 /* Qualify on Application signature. */
  30208 extern int bcm_field_qualify_ApplSignatureId(
  30209     int unit, 
  30210     bcm_field_entry_t entry, 
  30211     uint16 data, 
  30212     uint16 mask);
  30213 
  30214 /* Get qualified inputs on Application signature. */
  30215 extern int bcm_field_qualify_ApplSignatureId_get(
  30216     int unit, 
  30217     bcm_field_entry_t entry, 
  30218     uint16 *data, 
  30219     uint16 *mask);
  30220 
  30221 /* Qualify on Application signature based on Inner Payload. */
  30222 extern int bcm_field_qualify_InnerApplSignatureId(
  30223     int unit, 
  30224     bcm_field_entry_t entry, 
  30225     uint16 data, 
  30226     uint16 mask);
  30227 
  30228 /* Get qualified inputs on Application signature based on Inner Payload. */
  30229 extern int bcm_field_qualify_InnerApplSignatureId_get(
  30230     int unit, 
  30231     bcm_field_entry_t entry, 
  30232     uint16 *data, 
  30233     uint16 *mask);
  30234 
  30235 /* Qualify on Cos Queue. */
  30236 extern int bcm_field_qualify_CosQueueId(
  30237     int unit, 
  30238     bcm_field_entry_t entry, 
  30239     bcm_gport_t queue_gport);
  30240 
  30241 /* Get qualified inputs on Cos Queue. */
  30242 extern int bcm_field_qualify_CosQueueId_get(
  30243     int unit, 
  30244     bcm_field_entry_t entry, 
  30245     bcm_gport_t *queue_gport);
  30246 
  30247 /* Qualify on Congestion Experienced Status. */
  30248 extern int bcm_field_qualify_CongestionExperienced(
  30249     int unit, 
  30250     bcm_field_entry_t entry, 
  30251     uint8 data, 
  30252     uint8 mask);
  30253 
  30254 /* Get qualified inputs on Congestion Experienced Status */
  30255 extern int bcm_field_qualify_CongestionExperienced_get(
  30256     int unit, 
  30257     bcm_field_entry_t entry, 
  30258     uint8 *data, 
  30259     uint8 *mask);
  30260 
  30261 /* Qualify on Congestion Marked Status. */
  30262 extern int bcm_field_qualify_CongestionMarked(
  30263     int unit, 
  30264     bcm_field_entry_t entry, 
  30265     uint8 data, 
  30266     uint8 mask);
  30267 
  30268 /* Get qualified inputs on Congestion Marked Status */
  30269 extern int bcm_field_qualify_CongestionMarked_get(
  30270     int unit, 
  30271     bcm_field_entry_t entry, 
  30272     uint8 *data, 
  30273     uint8 *mask);
  30274 
  30275 /* Qualify if packet is stored in unicast Cos Queue. */
  30276 extern int bcm_field_qualify_IsUcastCosQueue(
  30277     int unit, 
  30278     bcm_field_entry_t entry, 
  30279     uint8 data, 
  30280     uint8 mask);
  30281 
  30282 /* Get qualified inputs if packet is stored in unicast Cos Queue. */
  30283 extern int bcm_field_qualify_IsUcastCosQueue_get(
  30284     int unit, 
  30285     bcm_field_entry_t entry, 
  30286     uint8 *data, 
  30287     uint8 *mask);
  30288 
  30289 /* Qualify on Egress Port Cos Queue value. */
  30290 extern int bcm_field_qualify_EgressPortQueue(
  30291     int unit, 
  30292     bcm_field_entry_t entry, 
  30293     uint8 data, 
  30294     uint8 mask);
  30295 
  30296 /* Get qualified inputs on Egress Port Cos Queue value. */
  30297 extern int bcm_field_qualify_EgressPortQueue_get(
  30298     int unit, 
  30299     bcm_field_entry_t entry, 
  30300     uint8 *data, 
  30301     uint8 *mask);
  30302 
  30303 /* Qualify on Flowtracker Aggregate Class. */
  30304 extern int bcm_field_qualify_FlowtrackerAggregateClass(
  30305     int unit, 
  30306     bcm_field_entry_t entry, 
  30307     uint16 data, 
  30308     uint16 mask);
  30309 
  30310 /* Get qualified inputs on Flowtracker Aggregate Class. */
  30311 extern int bcm_field_qualify_FlowtrackerAggregateClass_get(
  30312     int unit, 
  30313     bcm_field_entry_t entry, 
  30314     uint16 *data, 
  30315     uint16 *mask);
  30316 
  30317 #endif /* BCM_HIDE_DISPATCHABLE */
  30318 
  30319 /* bcm_field_drop_reason_e */
  30320 typedef enum bcm_field_drop_reason_e {
  30321     bcmFieldDropReasonNoDrop = 0,       /* Drop reason No Drop */
  30322     bcmFieldDropReasonCMLFlags = 1,     /* Ingress drop reason CML flags */
  30323     bcmFieldDropReasonL2SrcStaticMove = 2, /* Ingress drop reason L2 src static
  30324                                            move */
  30325     bcmFieldDropReasonL2SrcDiscard = 3, /* Ingress drop reason L2 src discard */
  30326     bcmFieldDropReasonMacSaMulticast = 4, /* Ingress drop reason MacSa Multicast */
  30327     bcmFieldDropReasonOuterTpidCheckFailed = 5, /* Ingress drop reason Outer TPID check
  30328                                            failed */
  30329     bcmFieldDropReasonIncomingPvlanCheckFailed = 6, /* Ingress drop reason Incoming PVLAN
  30330                                            check failed */
  30331     bcmFieldDropReasonPktIntegrityCheckFailed = 7, /* Ingress drop reason Pkt integrity
  30332                                            check failed */
  30333     bcmFieldDropReasonProtocolPktDrop = 8, /* Ingress drop reason Protocol packet
  30334                                            drop */
  30335     bcmFieldDropReasonMembershipCheckFailed = 9, /* Ingress drop reason Membership check
  30336                                            failed */
  30337     bcmFieldDropReasonSpanningTreeCheckFailed = 10, /* Ingress drop reason spanning tree
  30338                                            check failed */
  30339     bcmFieldDropReasonL2DstLookupMiss = 11, /* Ingress drop reason L2 Dst lookup
  30340                                            miss */
  30341     bcmFieldDropReasonL2DstDiscard = 12, /* Ingress drop reason L2 Dst discard */
  30342     bcmFieldDropReasonL3DstLookupMiss = 13, /* Ingress drop reason L3 Dst lookup
  30343                                            miss */
  30344     bcmFieldDropReasonL3DstDiscard = 14, /* Ingress drop reason L3 Dst discard */
  30345     bcmFieldDropReasonL3HdrError = 15,  /* Ingress drop reason L3 header Error */
  30346     bcmFieldDropReasonL3TTLError = 16,  /* Ingress drop reason L3 TTL error */
  30347     bcmFieldDropReasonIPMCL3IIFOrRPAIDCheckFailed = 17, /* Ingress drop reason IPMC L3 IIF or
  30348                                            RPA ID check failed */
  30349     bcmFieldDropReasonTunnelTTLCheckFailed = 18, /* Ingress drop reason Tunnel TTL check
  30350                                            failed */
  30351     bcmFieldDropReasonTunnelShimHdrError = 19, /* Ingress drop reason Tunnel Shim
  30352                                            header error */
  30353     bcmFieldDropReasonTunnelObjectValidationFailed = 20, /* Ingress drop reason Tunnel object
  30354                                            validation failed */
  30355     bcmFieldDropReasonTunnelAdaptDrop = 21, /* Ingress drop reason Tunnel adapt drop */
  30356     bcmFieldDropReasonPVLANDrop = 22,   /* Ingress drop reason PVLAN Drop */
  30357     bcmFieldDropReasonVFP = 23,         /* Ingress drop reason VFP */
  30358     bcmFieldDropReasonIFP = 24,         /* Ingress drop reason IFP */
  30359     bcmFieldDropReasonIFPMeter = 25,    /* Ingress drop reason IFP Meter */
  30360     bcmFieldDropReasonDSTFP = 26,       /* Ingress drop reason Destination FP */
  30361     bcmFieldDropReasonMplsProtectionDrop = 27, /* Ingress drop reason Mpls protection
  30362                                            drop */
  30363     bcmFieldDropReasonMplsLabelActionInvalid = 28, /* Ingress drop reason Mpls label action
  30364                                            invalid */
  30365     bcmFieldDropReasonMplsTermPolicySelectTableDrop = 29, /* Ingress drop reason Mpls term policy
  30366                                            select table drop */
  30367     bcmFieldDropReasonMPLSReservedLabelExposed = 30, /* Ingress drop reason Mpls reserved
  30368                                            label exposed */
  30369     bcmFieldDropReasonMplsTTLError = 31, /* Ingress drop reason Mpls TTL error */
  30370     bcmFieldDropReasonMplsEcnError = 32, /* Ingress drop reason Mpls Ecn error */
  30371     bcmFieldDropReasonEMFT = 33,        /* Ingress drop reason EM FT */
  30372     bcmFieldDropReasonIVXLT = 34,       /* Ingress drop reason IVXLT */
  30373     bcmFieldDropReasonUrpfCheckFailed = 35, /* Ingress drop reason Urpf check failed */
  30374     bcmFieldDropReasonSrcPortKnockoutDrop = 36, /* Ingress drop reason Srcport knockout
  30375                                            drop */
  30376     bcmFieldDropReasonLagFailoverPortDown = 37, /* Ingress drop reason Lag failover port
  30377                                            down */
  30378     bcmFieldDropReasonSplitHorizonCheckFailed = 38, /* Ingress drop reason Split horizon
  30379                                            check failed */
  30380     bcmFieldDropReasonDstLinkDown = 39, /* Ingress drop reason Dst linkdown */
  30381     bcmFieldDropReasonBlockMaskDrop = 40, /* Ingress drop reason Block mask drop */
  30382     bcmFieldDropReasonL3MtuCheckFailed = 41, /* Ingress drop reason L3 Mtu check
  30383                                            failed */
  30384     bcmFieldDropReasonSeqNumCheckFailed = 42, /* Ingress drop reason Seq num check
  30385                                            failed */
  30386     bcmFieldDropReasonL3IIFEqL3OIF = 43, /* Ingress drop reason L3 IIF Equals L3
  30387                                            OIF */
  30388     bcmFieldDropReasonStormControlDrop = 44, /* Ingress drop reason Storm control
  30389                                            drop */
  30390     bcmFieldDropReasonEgrMembershipCheckFailed = 45, /* Ingress drop reason Egr membership
  30391                                            check failed */
  30392     bcmFieldDropReasonEgrSpanningTreeCheckFailed = 46, /* Ingress drop reason Egr spanning tree
  30393                                            check failed */
  30394     bcmFieldDropReasonDstPBMZero = 47,  /* Ingress drop reason Dst PBM zero */
  30395     bcmFieldDropReasonMplsCtrlPktDrop = 48, /* Ingress drop reason Mpls ctrl pkt
  30396                                            drop */
  30397     bcmFieldDropReasonL2OIFDrop = 49,   /* Egress drop reason L2 OIF */
  30398     bcmFieldDropReasonEgrMembershipDrop = 50, /* Egress drop reason due to membership
  30399                                            check */
  30400     bcmFieldDropReasonDvpMembershipDrop = 51, /* Egress drop reason dvp membsership
  30401                                            check */
  30402     bcmFieldDropReasonTtlDrop = 52,     /* Egress drop reason ttl drop */
  30403     bcmFieldDropReasonL3SameIntfDrop = 53, /* Egress drop reason l3 same interface */
  30404     bcmFieldDropReasonL2SamePortDrop = 54, /* Egress drop reason l2 same port */
  30405     bcmFieldDropReasonSplitHorizonDrop = 55, /* Egress drop reason split horizon */
  30406     bcmFieldDropReasonSpanningTreeDisableDrop = 56, /* Egress drop reason spanning tree
  30407                                            disabled */
  30408     bcmFieldDropReasonSpanningTreeBlockDrop = 57, /* Egress drop reason spanning tree
  30409                                            blocked */
  30410     bcmFieldDropReasonEFP = 58,         /* Egress drop reason filter processor */
  30411     bcmFieldDropReasonEgrMeterDrop = 59, /* Egress drop reason meter drop */
  30412     bcmFieldDropReasonEgrMtuDrop = 60,  /* Egress drop reason MTU check */
  30413     bcmFieldDropReasonEgrVxltDrop = 61, /* Egress drop reason vlan translate */
  30414     bcmFieldDropReasonEgrCellTooLargeDrop = 62, /* Egress drop reason cell is too large */
  30415     bcmFieldDropReasonEgrCellTooSmallDrop = 63, /* Egress drop reason cell is too small */
  30416     bcmFieldDropReasonQosRemarkingDrop = 64, /* Egress drop reason qos remarking */
  30417     bcmFieldDropReasonSvpEqualDvpDrop = 65, /* Egress drop reason svp is equal to
  30418                                            dvp */
  30419     bcmFieldDropReasonInvalid1588Pkt = 66, /* Egress drop reason invalid 1588
  30420                                            packet */
  30421     bcmFieldDropReasonFlexEditorDrop = 67, /* Egress drop reason flex editor */
  30422     bcmFieldDropReasonEgrRecircleHdrDrop = 68, /* Egress drop reason EP NIH */
  30423     bcmFieldDropReasonIfaMdDeleteDrop = 69, /* Egress drop reason IFA MD delete */
  30424     bcmFieldDropReasonIngPortGroupLimit = 70, /* MMU drop reason ingress port group
  30425                                            limit */
  30426     bcmFieldDropReasonIngPortServicePoolLimit = 71, /* MMU drop reason ingress port service
  30427                                            pool limit */
  30428     bcmFieldDropReasonIngHeadroomPoolLimit = 72, /* MMU drop reason headroom pool limit */
  30429     bcmFieldDropReasonEgrQueueLimit = 73, /* MMU drop reason egress queue limit */
  30430     bcmFieldDropReasonEgrPortServicePoolLimit = 74, /* MMU drop reason egress port service
  30431                                            pool limit */
  30432     bcmFieldDropReasonWREDCheck = 75,   /* MMU drop reason WRED check */
  30433     bcmFieldDropReasonIngRecircleHdrDrop = 76, /* MMU drop reason EP NIH packet */
  30434     bcmFieldDropReasonMtopIpv4Gateway = 77, /* MMU drop reason MTOP IPV4 gateway */
  30435     bcmFieldDropReasonLastCount = 78    /* Always Last. Not a usable value. */
  30436 } bcm_field_drop_reason_t;
  30437 
  30438 #define BCM_FIELD_DROP_REASON \
  30439 { \
  30440     "NoDrop", \
  30441     "CMLFlags", \
  30442     "L2SrcStaticMove", \
  30443     "L2SrcDiscard", \
  30444     "MacSaMulticast", \
  30445     "OuterTpidCheckFailed", \
  30446     "IncomingPvlanCheckFailed", \
  30447     "PktIntegrityCheckFailed", \
  30448     "ProtocolPktDrop", \
  30449     "MembershipCheckFailed", \
  30450     "SpanningTreeCheckFailed", \
  30451     "L2DstLookupMiss", \
  30452     "L2DstDiscard", \
  30453     "L3DstLookupMiss", \
  30454     "L3DstDiscard", \
  30455     "L3HdrError", \
  30456     "L3TTLError", \
  30457     "IPMCL3IIFOrRPAIDCheckFailed", \
  30458     "TunnelTTLCheckFailed", \
  30459     "TunnelShimHdrError", \
  30460     "TunnelObjectValidationFailed", \
  30461     "TunnelAdaptDrop", \
  30462     "PVLANDrop", \
  30463     "VFP", \
  30464     "IFP", \
  30465     "IFPMeter", \
  30466     "DSTFP", \
  30467     "MplsProtectionDrop", \
  30468     "MplsLabelActionInvalid", \
  30469     "MplsTermPolicySelectTableDrop", \
  30470     "MPLSReservedLabelExposed", \
  30471     "MplsTTLError", \
  30472     "MplsEcnError", \
  30473     "EMFT", \
  30474     "IVXLT", \
  30475     "UrpfCheckFailed", \
  30476     "SrcPortKnockoutDrop", \
  30477     "LagFailoverPortDown", \
  30478     "SplitHorizonCheckFailed", \
  30479     "DstLinkDown", \
  30480     "BlockMaskDrop", \
  30481     "L3MtuCheckFailed", \
  30482     "SeqNumCheckFailed", \
  30483     "L3IIFEqL3OIF", \
  30484     "StormControlDrop", \
  30485     "EgrMembershipCheckFailed", \
  30486     "EgrSpanningTreeCheckFailed", \
  30487     "DstPBMZero", \
  30488     "MplsCtrlPktDrop", \
  30489     "L2OIFDrop", \
  30490     "EgrMembershipDrop", \
  30491     "DvpMembershipDrop", \
  30492     "TtlDrop", \
  30493     "L3SameIntfDrop", \
  30494     "L2SamePortDrop", \
  30495     "SplitHorizonDrop", \
  30496     "SpanningTreeDisableDrop", \
  30497     "SpanningTreeBlockDrop", \
  30498     "EFP", \
  30499     "EgrMeterDrop", \
  30500     "EgrMtuDrop", \
  30501     "EgrVxltDrop", \
  30502     "EgrCellTooLargeDrop", \
  30503     "EgrCellTooSmallDrop", \
  30504     "QosRemarkingDrop", \
  30505     "SvpEqualDvpDrop", \
  30506     "Invalid1588Pkt", \
  30507     "FlexEditorDrop", \
  30508     "EgrRecircleHdrDrop", \
  30509     "IfaMdDeleteDrop", \
  30510     "IngPortGroupLimit", \
  30511     "IngPortServicePoolLimit", \
  30512     "IngHeadroomPoolLimit", \
  30513     "EgrQueueLimit", \
  30514     "EgrPortServicePoolLimit", \
  30515     "WREDCheck", \
  30516     "IngRecircleHdrDrop", \
  30517     "MtopIpv4Gateway"  \
  30518 }
  30519 
  30520 /* Copy to cpu Reason (for bcm_field_qualify_CopyToCpuReasonLow). */
  30521 #define BCM_FIELD_COPY_TO_CPU_REASON_NO_COPY_TO_CPU (1 << 0)   /* Copytocpu reason No
  30522                                                           copy to cpu */
  30523 #define BCM_FIELD_COPY_TO_CPU_REASON_CML_FLAGS (1 << 1)   /* Copytocpu reason CML
  30524                                                           flags */
  30525 #define BCM_FIELD_COPY_TO_CPU_REASON_L2_SRC_STATIC_MOVE (1 << 2)   /* Copytocpu reason L2
  30526                                                           src static move */
  30527 #define BCM_FIELD_COPY_TO_CPU_REASON_L2_SRC_DISCARD (1 << 3)   /* Copytocpu reason L2
  30528                                                           src discard */
  30529 #define BCM_FIELD_COPY_TO_CPU_REASON_MACSA_MULTICAST (1 << 4)   /* Copytocpu reason Macsa
  30530                                                           multicast */
  30531 #define BCM_FIELD_COPY_TO_CPU_REASON_PKT_INTEGRITY_CHECK_FAILED (1 << 5)   /* Copytocpu reason Pkt
  30532                                                           intergrity check
  30533                                                           failed */
  30534 #define BCM_FIELD_COPY_TO_CPU_REASON_PROTOCOL_PKT (1 << 6)   /* Copytocpu reason
  30535                                                           Protocol pkt */
  30536 #define BCM_FIELD_COPY_TO_CPU_REASON_MEMBERSHIP_CHECK_FAILED (1 << 7)   /* Copytocpu reason
  30537                                                           Membership check
  30538                                                           failed */
  30539 #define BCM_FIELD_COPY_TO_CPU_REASON_SPANNING_TREE_CHECK_FAILED (1 << 8)   /* Copytocpu reason
  30540                                                           Spanning tree check
  30541                                                           failed */
  30542 #define BCM_FIELD_COPY_TO_CPU_REASON_L2_DST_LOOKUP_MISS (1 << 9)   /* Copytocpu reason L2
  30543                                                           dst lookup miss */
  30544 #define BCM_FIELD_COPY_TO_CPU_REASON_L2_DST_LOOKUP (1 << 10)  /* Copytocpu reason L2
  30545                                                           dst lookup */
  30546 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_DST_LOOKUP_MISS (1 << 11)  /* Copytocpu reason L3
  30547                                                           dst lookup miss */
  30548 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_DST_LOOKUP (1 << 12)  /* Copytocpu reason L3
  30549                                                           dst lookup */
  30550 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_HDR_ERROR (1 << 13)  /* Copytocpu reason L3
  30551                                                           hdr error */
  30552 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_TTL_ERROR (1 << 14)  /* Copytocpu reason L3
  30553                                                           TTL error */
  30554 #define BCM_FIELD_COPY_TO_CPU_REASON_IPMC_L3_IIF_OR_RPA_ID_CHECK_FAILED (1 << 15)  /* Copytocpu reason IOMC
  30555                                                           L3 IIF Or RPA Id check
  30556                                                           failed */
  30557 #define BCM_FIELD_COPY_TO_CPU_REASON_LEARN_CACHE_FULL (1 << 16)  /* Copytocpu reason Learn
  30558                                                           cache full */
  30559 #define BCM_FIELD_COPY_TO_CPU_REASON_VFP    (1 << 17)  /* Copytocpu reason VFP */
  30560 #define BCM_FIELD_COPY_TO_CPU_REASON_IFP    (1 << 18)  /* Copytocpu reason IFP */
  30561 #define BCM_FIELD_COPY_TO_CPU_REASON_IFP_METER (1 << 19)  /* Copytocpu reason IFP
  30562                                                           Meter */
  30563 #define BCM_FIELD_COPY_TO_CPU_REASON_DST_FP (1 << 20)  /* Copytocpu reason
  30564                                                           Destination FP */
  30565 #define BCM_FIELD_COPY_TO_CPU_REASON_SVP    (1 << 21)  /* Copytocpu reason SVP */
  30566 #define BCM_FIELD_COPY_TO_CPU_REASON_EM_FT  (1 << 22)  /* Copytocpu reason EM FT */
  30567 #define BCM_FIELD_COPY_TO_CPU_REASON_IVXLT  (1 << 23)  /* Copytocpu reason IVXLT */
  30568 #define BCM_FIELD_COPY_TO_CPU_REASON_MIRROR_SAMPLER_SAMPLED (1 << 24)  /* Copytocpu reason
  30569                                                           Mirror sampler sampled */
  30570 #define BCM_FIELD_COPY_TO_CPU_REASON_MIRROR_SAMPLER_EGR_SAMPLED (1 << 25)  /* Copytocpu reason
  30571                                                           Mirror sampler egr
  30572                                                           sampled */
  30573 #define BCM_FIELD_COPY_TO_CPU_REASON_SER_DROP (1 << 26)  /* Copytocpu reason Ser
  30574                                                           drop */
  30575 #define BCM_FIELD_COPY_TO_CPU_REASON_URPF_CHECK_FAILED (1 << 27)  /* Copytocpu reason Urpf
  30576                                                           check failed */
  30577 #define BCM_FIELD_COPY_TO_CPU_REASON_L3_IIF_EQ_L3_OIF (1 << 28)  /* Copytocpu reason L3
  30578                                                           IIF Equals L3 OIF */
  30579 #define BCM_FIELD_COPY_TO_CPU_REASON_DLB_ECMP_MONITOR_EN_OR_MEMBER_REASSINED (1 << 29)  /* Copytocpu reason Dlb
  30580                                                           Ecmp Monitor En Or
  30581                                                           Member Reassined */
  30582 #define BCM_FIELD_COPY_TO_CPU_REASON_DLB_LAG_MONITOR_EN_OR_MEMBER_REASSINED (1 << 30)  /* Copytocpu reason Dlb
  30583                                                           Lag Monitor En Or
  30584                                                           Member Reassined */
  30585 #define BCM_FIELD_COPY_TO_CPU_REASON_MPLS_CTRL_PKT_TO_CPU (1U << 31) /* Copytocpu reason Mpls
  30586                                                           ctrl pkt to cpu */
  30587 
  30588 /* Copy to cpu Reason (for bcm_field_qualify_CopyToCpuReasonHigh). */
  30589 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_0 (1 << 0)   /* Copytocpu reason
  30590                                                           Matched rule bit 0 */
  30591 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_1 (1 << 1)   /* Copytocpu reason
  30592                                                           Matched rule bit 1 */
  30593 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_2 (1 << 2)   /* Copytocpu reason
  30594                                                           Matched rule bit 2 */
  30595 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_3 (1 << 3)   /* Copytocpu reason
  30596                                                           Matched rule bit 3 */
  30597 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_4 (1 << 4)   /* Copytocpu reason
  30598                                                           Matched rule bit 4 */
  30599 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_5 (1 << 5)   /* Copytocpu reason
  30600                                                           Matched rule bit 5 */
  30601 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_6 (1 << 6)   /* Copytocpu reason
  30602                                                           Matched rule bit 6 */
  30603 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_MATCHED_RULE_BIT_7 (1 << 7)   /* Copytocpu reason
  30604                                                           Matched rule bit 7 */
  30605 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_TRACE_DO_NOT_MIRROR (1 << 8)   /* Copytocpu reason Trace
  30606                                                           do not mirror */
  30607 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_TRACE_DO_NOT_COPY_TO_CPU (1 << 9)   /* Copytocpu reason Trace
  30608                                                           do not CopyToCpu */
  30609 #define BCM_FIELD_COPY_TO_CPU_REASON_HIGH_TRACE_DOP (1 << 10)  /* Copytocpu reason Trace
  30610                                                           dop */
  30611 
  30612 #ifndef BCM_HIDE_DISPATCHABLE
  30613 
  30614 /* API to add First Drop reason to a field entry for qualification. */
  30615 extern int bcm_field_qualify_FirstDropReason(
  30616     int unit, 
  30617     bcm_field_entry_t entry, 
  30618     bcm_field_drop_reason_t type);
  30619 
  30620 /* API to retrieve First Drop reason associated to a field entry. */
  30621 extern int bcm_field_qualify_FirstDropReason_get(
  30622     int unit, 
  30623     bcm_field_entry_t entry, 
  30624     bcm_field_drop_reason_t *type);
  30625 
  30626 /* API to add Drop reason to a field entry for qualification. */
  30627 extern int bcm_field_qualify_DropReason(
  30628     int unit, 
  30629     bcm_field_entry_t entry, 
  30630     bcm_field_drop_reason_t type);
  30631 
  30632 /* API to retrieve Drop reason associated to a field entry. */
  30633 extern int bcm_field_qualify_DropReason_get(
  30634     int unit, 
  30635     bcm_field_entry_t entry, 
  30636     bcm_field_drop_reason_t *type);
  30637 
  30638 /* 
  30639  * API to add redirect header first drop reason to a field entry for
  30640  * qualification.
  30641  */
  30642 extern int bcm_field_qualify_RecircleHdrFirstDropReason(
  30643     int unit, 
  30644     bcm_field_entry_t entry, 
  30645     bcm_field_drop_reason_t type);
  30646 
  30647 /* 
  30648  * API to retrieve redirect header first drop reason associated to a
  30649  * field entry.
  30650  */
  30651 extern int bcm_field_qualify_RecircleHdrFirstDropReason_get(
  30652     int unit, 
  30653     bcm_field_entry_t entry, 
  30654     bcm_field_drop_reason_t *type);
  30655 
  30656 /* 
  30657  * API to add redirect header drop reason to a field entry for
  30658  * qualification.
  30659  */
  30660 extern int bcm_field_qualify_RecircleHdrDropReason(
  30661     int unit, 
  30662     bcm_field_entry_t entry, 
  30663     bcm_field_drop_reason_t type);
  30664 
  30665 /* 
  30666  * API to retrieve redirect header drop reason associated to a field
  30667  * entry.
  30668  */
  30669 extern int bcm_field_qualify_RecircleHdrDropReason_get(
  30670     int unit, 
  30671     bcm_field_entry_t entry, 
  30672     bcm_field_drop_reason_t *type);
  30673 
  30674 /* To qualify on RecircleHdrCode. */
  30675 extern int bcm_field_qualify_RecircleHdrCode(
  30676     int unit, 
  30677     bcm_field_entry_t entry, 
  30678     uint8 data, 
  30679     uint8 mask);
  30680 
  30681 /* 
  30682  * Get value for bcmFieldQualifyRecircleHdrCode
  30683  *             qualifier from the field entry.
  30684  */
  30685 extern int bcm_field_qualify_RecircleHdrCode_get(
  30686     int unit, 
  30687     bcm_field_entry_t entry, 
  30688     uint8 *data, 
  30689     uint8 *mask);
  30690 
  30691 /* To qualify on macsec opaque object. */
  30692 extern int bcm_field_qualify_MacSecOpaque(
  30693     int unit, 
  30694     bcm_field_entry_t entry, 
  30695     uint16 data, 
  30696     uint16 mask);
  30697 
  30698 /* 
  30699  * Get value for bcmFieldQualifyMacSecOpaque
  30700  *             qualifier from the field entry.
  30701  */
  30702 extern int bcm_field_qualify_MacSecOpaque_get(
  30703     int unit, 
  30704     bcm_field_entry_t entry, 
  30705     uint16 *data, 
  30706     uint16 *mask);
  30707 
  30708 /* To qualify on mirrored copy of MMU dropped packet. */
  30709 extern int bcm_field_qualify_MirrorOnDrop(
  30710     int unit, 
  30711     bcm_field_entry_t entry, 
  30712     uint8 data, 
  30713     uint8 mask);
  30714 
  30715 /* 
  30716  * Get value for bcmFieldQualifyMirrorOnDrop
  30717  *             qualifier from the field entry.
  30718  */
  30719 extern int bcm_field_qualify_MirrorOnDrop_get(
  30720     int unit, 
  30721     bcm_field_entry_t entry, 
  30722     uint8 *data, 
  30723     uint8 *mask);
  30724 
  30725 #endif /* BCM_HIDE_DISPATCHABLE */
  30726 
  30727 /* bcm_field_mirror_on_drop_reason_e */
  30728 typedef enum bcm_field_mirror_on_drop_reason_e {
  30729     bcmFieldMirrorOnDropReasonSharedPoolLimit = 0, /* MMU drop reason is due to shared pool
  30730                                            limit */
  30731     bcmFieldMirrorOnDropReasonIngressPortGroupLimit = 1, /* MMU drop reason is due to ingress
  30732                                            port limit */
  30733     bcmFieldMirrorOnDropReasonIngressPortServicePoolLimit = 2, /* MMU drop reason is due to ingress
  30734                                            port service pool limit */
  30735     bcmFieldMirrorOnDropReasonIngressHeadroomPoolLimit = 3, /* MMU drop reason is due to ingress
  30736                                            headroom pool limit */
  30737     bcmFieldMirrorOnDropReasonEgressQueueLimit = 4, /* MMU drop reason is due to egress
  30738                                            queue limit */
  30739     bcmFieldMirrorOnDropReasonEgressPortServicePoolLimit = 5, /* MMU drop reason is due to egress port
  30740                                            service pool limit */
  30741     bcmFieldMirrorOnDropReasonWREDCheck = 6, /* MMU drop reason is due to WRED check */
  30742     bcmFieldMirrorOnDropReasonLastCount = 1 /* Always Last. Not a usable value. */
  30743 } bcm_field_mirror_on_drop_reason_t;
  30744 
  30745 #define BCM_FIELD_MIRROR_ON_DROP_REASON \
  30746 { \
  30747     "SharedPoolLimit", \
  30748     "IngressPortGroupLimit", \
  30749     "IngressPortServicePoolLimit", \
  30750     "IngressHeadroomPoolLimit", \
  30751     "EgressQueueLimit", \
  30752     "EgressPortServicePoolLimit", \
  30753     "WREDCheck"  \
  30754 }
  30755 
  30756 #ifndef BCM_HIDE_DISPATCHABLE
  30757 
  30758 /* To qualify on packets mirrored due to MMU drop. */
  30759 extern int bcm_field_qualify_MirrorOnDropReason(
  30760     int unit, 
  30761     bcm_field_entry_t entry, 
  30762     bcm_field_mirror_on_drop_reason_t type);
  30763 
  30764 /* API to retrieve mirror on drop reason associated to a field entry. */
  30765 extern int bcm_field_qualify_MirrorOnDropReason_get(
  30766     int unit, 
  30767     bcm_field_entry_t entry, 
  30768     bcm_field_mirror_on_drop_reason_t *type);
  30769 
  30770 /* To qualify on Inband telemetry control. */
  30771 extern int bcm_field_qualify_IntCtrl(
  30772     int unit, 
  30773     bcm_field_entry_t entry, 
  30774     uint32 data, 
  30775     uint32 mask);
  30776 
  30777 /* 
  30778  * Get value for bcmFieldQualifyIntCtrl
  30779  *             qualifier from the field entry.
  30780  */
  30781 extern int bcm_field_qualify_IntCtrl_get(
  30782     int unit, 
  30783     bcm_field_entry_t entry, 
  30784     uint32 *data, 
  30785     uint32 *mask);
  30786 
  30787 /* To qualify on IFA hop count. */
  30788 extern int bcm_field_qualify_IfaHopCount(
  30789     int unit, 
  30790     bcm_field_entry_t entry, 
  30791     uint16 data, 
  30792     uint16 mask);
  30793 
  30794 /* 
  30795  * Get value for bcmFieldQualifyIfaHopCount
  30796  *             qualifier from the field entry.
  30797  */
  30798 extern int bcm_field_qualify_IfaHopCount_get(
  30799     int unit, 
  30800     bcm_field_entry_t entry, 
  30801     uint16 *data, 
  30802     uint16 *mask);
  30803 
  30804 /* To qualify on IFA hop limit. */
  30805 extern int bcm_field_qualify_IfaHopLimit(
  30806     int unit, 
  30807     bcm_field_entry_t entry, 
  30808     uint16 data, 
  30809     uint16 mask);
  30810 
  30811 /* 
  30812  * Get value for bcmFieldQualifyIfaHopLimit
  30813  *             qualifier from the field entry.
  30814  */
  30815 extern int bcm_field_qualify_IfaHopLimit_get(
  30816     int unit, 
  30817     bcm_field_entry_t entry, 
  30818     uint16 *data, 
  30819     uint16 *mask);
  30820 
  30821 /* API to add copy to cpu reason to a field entry for qualification. */
  30822 extern int bcm_field_qualify_CopyToCpuReasonLow(
  30823     int unit, 
  30824     bcm_field_entry_t entry, 
  30825     uint32 data, 
  30826     uint32 mask);
  30827 
  30828 /* API to retrieve copy to cpu reason associated to a field entry. */
  30829 extern int bcm_field_qualify_CopyToCpuReasonLow_get(
  30830     int unit, 
  30831     bcm_field_entry_t entry, 
  30832     uint32 *data, 
  30833     uint32 *mask);
  30834 
  30835 /* API to add copy to cpu reason to a field entry for qualification. */
  30836 extern int bcm_field_qualify_CopyToCpuReasonHigh(
  30837     int unit, 
  30838     bcm_field_entry_t entry, 
  30839     uint32 data, 
  30840     uint32 mask);
  30841 
  30842 /* API to retrieve copy to cpu reason associated to a field entry. */
  30843 extern int bcm_field_qualify_CopyToCpuReasonHigh_get(
  30844     int unit, 
  30845     bcm_field_entry_t entry, 
  30846     uint32 *data, 
  30847     uint32 *mask);
  30848 
  30849 /* 
  30850  * Set match criteria for Rtag7CHashUpper
  30851  *                qualifier.
  30852  */
  30853 extern int bcm_field_qualify_Rtag7CHashUpper(
  30854     int unit, 
  30855     bcm_field_entry_t entry, 
  30856     uint16 data, 
  30857     uint16 mask);
  30858 
  30859 /* 
  30860  * Get match criteria for Rtag7CHashUpper
  30861  *                qualifier.
  30862  */
  30863 extern int bcm_field_qualify_Rtag7CHashUpper_get(
  30864     int unit, 
  30865     bcm_field_entry_t entry, 
  30866     uint16 *data, 
  30867     uint16 *mask);
  30868 
  30869 /* 
  30870  * Set match criteria for Rtag7CHashLower
  30871  *                qualifier.
  30872  */
  30873 extern int bcm_field_qualify_Rtag7CHashLower(
  30874     int unit, 
  30875     bcm_field_entry_t entry, 
  30876     uint16 data, 
  30877     uint16 mask);
  30878 
  30879 /* 
  30880  * Get match criteria for Rtag7CHashLower
  30881  *                qualifier.
  30882  */
  30883 extern int bcm_field_qualify_Rtag7CHashLower_get(
  30884     int unit, 
  30885     bcm_field_entry_t entry, 
  30886     uint16 *data, 
  30887     uint16 *mask);
  30888 
  30889 /* 
  30890  * API to add overlay network tag type to a field entry for the field
  30891  * qualification.
  30892  */
  30893 extern int bcm_field_qualify_OverlayNetworkTagType(
  30894     int unit, 
  30895     bcm_field_entry_t entry, 
  30896     bcm_field_network_tag_type_t type);
  30897 
  30898 /* 
  30899  * API to retrieve overlay network tag type associated to a given field
  30900  * entry.
  30901  */
  30902 extern int bcm_field_qualify_OverlayNetworkTagType_get(
  30903     int unit, 
  30904     bcm_field_entry_t entry, 
  30905     bcm_field_network_tag_type_t *type);
  30906 
  30907 /* API to add Ip option header type to a field entry for qualification. */
  30908 extern int bcm_field_qualify_IpOptionHdrType(
  30909     int unit, 
  30910     bcm_field_entry_t entry, 
  30911     bcm_field_ip_option_hdr_type_t type);
  30912 
  30913 /* 
  30914  * API to retrieve IP option header type associated to a given field
  30915  * entry.
  30916  */
  30917 extern int bcm_field_qualify_IpOptionHdrType_get(
  30918     int unit, 
  30919     bcm_field_entry_t entry, 
  30920     bcm_field_ip_option_hdr_type_t *type);
  30921 
  30922 /* 
  30923  * API to add overlay Ip option header type to a field entry for
  30924  * qualification.
  30925  */
  30926 extern int bcm_field_qualify_OverlayIpOptionHdrType(
  30927     int unit, 
  30928     bcm_field_entry_t entry, 
  30929     bcm_field_ip_option_hdr_type_t type);
  30930 
  30931 /* 
  30932  * API to retrieve overlay IP option header type associated to a given
  30933  * field entry.
  30934  */
  30935 extern int bcm_field_qualify_OverlayIpOptionHdrType_get(
  30936     int unit, 
  30937     bcm_field_entry_t entry, 
  30938     bcm_field_ip_option_hdr_type_t *type);
  30939 
  30940 /* 
  30941  * Set match criteria for OverlayEgressClass ID
  30942  *                qualifier.
  30943  */
  30944 extern int bcm_field_qualify_OverlayEgressClass(
  30945     int unit, 
  30946     bcm_field_entry_t entry, 
  30947     uint16 data, 
  30948     uint16 mask);
  30949 
  30950 /* 
  30951  * Get match criteria for OverlayEgressClass ID
  30952  *                qualifier.
  30953  */
  30954 extern int bcm_field_qualify_OverlayEgressClass_get(
  30955     int unit, 
  30956     bcm_field_entry_t entry, 
  30957     uint16 *data, 
  30958     uint16 *mask);
  30959 
  30960 /* 
  30961  * Set match criteria for Egress DOP Trigger
  30962  *                qualifier.
  30963  */
  30964 extern int bcm_field_qualify_EgressDOPTrigger(
  30965     int unit, 
  30966     bcm_field_entry_t entry, 
  30967     uint8 data, 
  30968     uint8 mask);
  30969 
  30970 /* 
  30971  * Get match criteria for Egress DOP Trigger
  30972  *                qualifier.
  30973  */
  30974 extern int bcm_field_qualify_EgressDOPTrigger_get(
  30975     int unit, 
  30976     bcm_field_entry_t entry, 
  30977     uint8 *data, 
  30978     uint8 *mask);
  30979 
  30980 /* 
  30981  * Set match criteria for EgressTunnelIpHeaderFlowLabel
  30982  *                qualifier.
  30983  */
  30984 extern int bcm_field_qualify_EgressTunnelIpHeaderFlowLabel(
  30985     int unit, 
  30986     bcm_field_entry_t entry, 
  30987     uint32 data, 
  30988     uint32 mask);
  30989 
  30990 /* 
  30991  * Get match criteria for EgressTunnelIpHeaderFlowLabel
  30992  *                qualifier.
  30993  */
  30994 extern int bcm_field_qualify_EgressTunnelIpHeaderFlowLabel_get(
  30995     int unit, 
  30996     bcm_field_entry_t entry, 
  30997     uint32 *data, 
  30998     uint32 *mask);
  30999 
  31000 /* 
  31001  * Set match criteria for EgressTunnelIpHeaderEcn
  31002  *                qualifier.
  31003  */
  31004 extern int bcm_field_qualify_EgressTunnelIpHeaderEcn(
  31005     int unit, 
  31006     bcm_field_entry_t entry, 
  31007     uint8 data, 
  31008     uint8 mask);
  31009 
  31010 /* 
  31011  * Get match criteria for EgressTunnelIpHeaderEcn
  31012  *                qualifier.
  31013  */
  31014 extern int bcm_field_qualify_EgressTunnelIpHeaderEcn_get(
  31015     int unit, 
  31016     bcm_field_entry_t entry, 
  31017     uint8 *data, 
  31018     uint8 *mask);
  31019 
  31020 /* 
  31021  * Set match criteria for EgressTunnelIpHeaderDscp
  31022  *                qualifier.
  31023  */
  31024 extern int bcm_field_qualify_EgressTunnelIpHeaderDscp(
  31025     int unit, 
  31026     bcm_field_entry_t entry, 
  31027     uint8 data, 
  31028     uint8 mask);
  31029 
  31030 /* 
  31031  * Get match criteria for EgressTunnelIpHeaderDscp
  31032  *                qualifier.
  31033  */
  31034 extern int bcm_field_qualify_EgressTunnelIpHeaderDscp_get(
  31035     int unit, 
  31036     bcm_field_entry_t entry, 
  31037     uint8 *data, 
  31038     uint8 *mask);
  31039 
  31040 /* 
  31041  * Set match criteria for IpExtHdr2Protocol
  31042  *                qualifier.
  31043  */
  31044 extern int bcm_field_qualify_IpExtHdr2Protocol(
  31045     int unit, 
  31046     bcm_field_entry_t entry, 
  31047     uint8 data, 
  31048     uint8 mask);
  31049 
  31050 /* 
  31051  * Get match criteria for IpExtHdr2Protocol
  31052  *                qualifier.
  31053  */
  31054 extern int bcm_field_qualify_IpExtHdr2Protocol_get(
  31055     int unit, 
  31056     bcm_field_entry_t entry, 
  31057     uint8 *data, 
  31058     uint8 *mask);
  31059 
  31060 /* bcm_field_qualify_EgressL3TunnelGport */
  31061 extern int bcm_field_qualify_EgressL3TunnelGport(
  31062     int unit, 
  31063     bcm_field_entry_t entry, 
  31064     bcm_gport_t tunnel_port_id);
  31065 
  31066 /* 
  31067  * Get match criteria for EgressL3TunnelGport
  31068  *                qualifier from the field entry.
  31069  */
  31070 extern int bcm_field_qualify_EgressL3TunnelGport_get(
  31071     int unit, 
  31072     bcm_field_entry_t entry, 
  31073     bcm_gport_t *tunnel_port_id);
  31074 
  31075 #endif /* BCM_HIDE_DISPATCHABLE */
  31076 
  31077 /* bcm_field_pkt_queue_notif_e */
  31078 typedef enum bcm_field_pkt_queue_notif_e {
  31079     bcmFieldPktQueueNotifCongestionIndication = 0, /* Congestion Experienced indication
  31080                                            from MMU */
  31081     bcmFieldPktQueueNotifUnicastQueuing = 1 /* Unicast Queuing */
  31082 } bcm_field_pkt_queue_notif_t;
  31083 
  31084 #define BCM_FIELD_PKT_QUEUE_NOTIF \
  31085 { \
  31086     "CongestionIndication", \
  31087     "UnicastQueuing"  \
  31088 }
  31089 
  31090 #ifndef BCM_HIDE_DISPATCHABLE
  31091 
  31092 /* 
  31093  * API to add Egress pkt queue notification to a field entry for
  31094  * qualification.
  31095  */
  31096 extern int bcm_field_qualify_EgressPktQueueNotification(
  31097     int unit, 
  31098     bcm_field_entry_t entry, 
  31099     bcm_field_pkt_queue_notif_t type);
  31100 
  31101 /* 
  31102  * API to retrieve Egress pkt queue notification associated to a field
  31103  * entry.
  31104  */
  31105 extern int bcm_field_qualify_EgressPktQueueNotification_get(
  31106     int unit, 
  31107     bcm_field_entry_t entry, 
  31108     bcm_field_pkt_queue_notif_t *type);
  31109 
  31110 #endif /* BCM_HIDE_DISPATCHABLE */
  31111 
  31112 /* bcm_field_l2_pkt_type_e */
  31113 typedef enum bcm_field_mcast_pkt_reason_e {
  31114     bcmFieldMcastPktReasonSwitchCopy = 0, /* Switch copy indication from MMU */
  31115     bcmFieldMcastPktReasonReplicatedCopy = 1, /* L3IPMC replicated copy indication
  31116                                            from MMU */
  31117     bcmFieldMcastPktReasonL3Only = 2,   /* L3 ONLY indication from MMU */
  31118     bcmFieldMcastPktReasonLastCount = 3 /* Always Last. Not a usable value. */
  31119 } bcm_field_mcast_pkt_reason_t;
  31120 
  31121 #define BCM_FIELD_MAST_PKT_REASON \
  31122 { \
  31123     "SwitchCopy", \
  31124     "ReplicatedCopy", \
  31125     "L3Only", \
  31126     "LastCount"  \
  31127 }
  31128 
  31129 #ifndef BCM_HIDE_DISPATCHABLE
  31130 
  31131 /* 
  31132  * API to add Egress Multicast Packet reason to a field entry for
  31133  * qualification.
  31134  */
  31135 extern int bcm_field_qualify_EgressMcastPktReason(
  31136     int unit, 
  31137     bcm_field_entry_t entry, 
  31138     bcm_field_mcast_pkt_reason_t type);
  31139 
  31140 /* 
  31141  * API to retrieve Egress multicast Packet reason associated to a field
  31142  * entry.
  31143  */
  31144 extern int bcm_field_qualify_EgressMcastPktReason_get(
  31145     int unit, 
  31146     bcm_field_entry_t entry, 
  31147     bcm_field_mcast_pkt_reason_t *type);
  31148 
  31149 /* To qualify on L2 Egr Interface control id. */
  31150 extern int bcm_field_qualify_L2EgrIntfEfpCtrlId(
  31151     int unit, 
  31152     bcm_field_entry_t entry, 
  31153     uint8 data, 
  31154     uint8 mask);
  31155 
  31156 /* 
  31157  * Get value for L2 Egr Interface control id
  31158  *             qualifier from the field entry.
  31159  */
  31160 extern int bcm_field_qualify_L2EgrIntfEfpCtrlId_get(
  31161     int unit, 
  31162     bcm_field_entry_t entry, 
  31163     uint8 *data, 
  31164     uint8 *mask);
  31165 
  31166 #endif /* BCM_HIDE_DISPATCHABLE */
  31167 
  31168 /* Enums for VlanTagActions */
  31169 typedef enum bcm_field_vlan_tag_action_e {
  31170     bcmFieldVlanTagActionDelete = 0,    /* Delete Vlan Tag */
  31171     bcmFieldVlanTagActionAddOrReplace = 1, /* Add or replace Vlan tag. */
  31172     bcmFieldVlanTagActionLastCount = 2  /* Always last. Not to be used. */
  31173 } bcm_field_vlan_tag_action_t;
  31174 
  31175 /* bcm_field_compression_map_type_e */
  31176 typedef enum bcm_field_compression_map_type_e {
  31177     bcmFieldCompressionDirectMapTypeTtl = 0, /* Compression type TTL to match
  31178                                            qualifier bcmFieldQualifyTtl. */
  31179     bcmFieldCompressionDirectMapTypeTos = 1, /* Compression type to match qualifier
  31180                                            bcmFieldQualifyTosLower4Bits. */
  31181     bcmFieldCompressionDirectMapTypeTcp = 2, /* Compression type TCP flags to match
  31182                                            qualifier bcmFieldQualifyTcpControl */
  31183     bcmFieldCompressionIndexMapTypeEthertype = 3, /* Compression type Ethertype to match
  31184                                            qualifier bcmFieldQualifyEtherType. */
  31185     bcmFieldCompressionIndexMapTypeIpProtocol = 4, /* Compression type IP Protocol to match
  31186                                            qualifier
  31187                                            bcmFieldQualifyExtensionHeaderType. */
  31188     bcmFieldCompressionDirectMapTypeTtlZero = 5, /* Compression type TTL to match
  31189                                            qualifier
  31190                                            bcmFieldQualifyTtlClassZero. */
  31191     bcmFieldCompressionDirectMapTypeTtlOne = 6, /* Compression type TTL to match
  31192                                            qualifier bcmFieldQualifyTtlClassOne. */
  31193     bcmFieldCompressionDirectMapTypeTosZero = 7, /* Compression type to match qualifier
  31194                                            bcmFieldQualifyTosClassZero. */
  31195     bcmFieldCompressionDirectMapTypeTosOne = 8, /* Compression type to match qualifier
  31196                                            bcmFieldQualifyTosClassOne. */
  31197     bcmFieldCompressionDirectMapTypeTcpZero = 9, /* Compression type TCP flags to match
  31198                                            qualifier bcmFieldQualifyTcpClassZero */
  31199     bcmFieldCompressionDirectMapTypeTcpOne = 10, /* Compression type TCP flags to match
  31200                                            qualifier bcmFieldQualifyTcpClassOne */
  31201     bcmFieldCompressionDirectMapTypeIpTunnelTtl = 11, /* Compression type Tunnel TTL to match
  31202                                            qualifier bcmFieldQualifyIpTunnelTtl. */
  31203     bcmFieldCompressionDirectMapTypeIpProtocol = 12, /* Compression type IP Protocol to match
  31204                                            qualifier
  31205                                            bcmFieldQualifyIpProtocolClass. */
  31206     bcmFieldCompressionLastMapTypeCount = 13 /* Always Last. Not a usable value. */
  31207 } bcm_field_compression_map_type_t;
  31208 
  31209 #define BCM_FIELD_COMPRESSION_TYPE \
  31210 { \
  31211     "DirectMapTypeTtl", \
  31212     "DirectMapTypeTos", \
  31213     "DirectMapTypeTcp", \
  31214     "IndexMapTypeEthertype", \
  31215     "IndexMapTypeIpProtocol", \
  31216     "DirectMapTypeTtlZero", \
  31217     "DirectMapTypeTtlOne", \
  31218     "DirectMapTypeTosZero", \
  31219     "DirectMapTypeTosOne", \
  31220     "DirectMapTypeTcpZero", \
  31221     "DirectMapTypeTcpOne", \
  31222     "DirectMapTypeIpTunnelTtl", \
  31223     "DirectMapTypeIpProtocol"  \
  31224 }
  31225 
  31226 #ifndef BCM_HIDE_DISPATCHABLE
  31227 
  31228 /* To set the remapped compression values for a particular value. */
  31229 extern int bcm_field_compression_direct_mapped_set(
  31230     int unit, 
  31231     bcm_field_compression_map_type_t type, 
  31232     bcm_pbmp_t ports, 
  31233     uint16 entry_cnt, 
  31234     uint16 *val_arr, 
  31235     uint16 *map_val_arr);
  31236 
  31237 /* To get the remapped compression values for a particular value. */
  31238 extern int bcm_field_compression_direct_mapped_get(
  31239     int unit, 
  31240     bcm_field_compression_map_type_t type, 
  31241     bcm_pbmp_t ports, 
  31242     uint16 entry_cnt, 
  31243     uint16 *val_arr, 
  31244     uint16 *map_val_arr);
  31245 
  31246 /* 
  31247  * To set the remapped compression values for a particular value at a
  31248  * particular index.
  31249  */
  31250 extern int bcm_field_compression_index_mapped_set(
  31251     int unit, 
  31252     bcm_field_compression_map_type_t type, 
  31253     uint16 index, 
  31254     bcm_pbmp_t ports, 
  31255     uint16 val, 
  31256     uint16 map_val);
  31257 
  31258 /* 
  31259  * To get the remapped compression values for a particular value at a
  31260  * particular index.
  31261  */
  31262 extern int bcm_field_compression_index_mapped_get(
  31263     int unit, 
  31264     bcm_field_compression_map_type_t type, 
  31265     uint16 index, 
  31266     bcm_pbmp_t ports, 
  31267     uint16 *val, 
  31268     uint16 *map_val);
  31269 
  31270 /* To qualify on Module Header Priority. */
  31271 extern int bcm_field_qualify_MHPriority(
  31272     int unit, 
  31273     bcm_field_entry_t entry, 
  31274     uint8 data, 
  31275     uint8 mask);
  31276 
  31277 /* To get qualified inputs on Module Header Priority. */
  31278 extern int bcm_field_qualify_MHPriority_get(
  31279     int unit, 
  31280     bcm_field_entry_t entry, 
  31281     uint8 *data, 
  31282     uint8 *mask);
  31283 
  31284 /* bcm_field_qualify_InnerTcpControl */
  31285 extern int bcm_field_qualify_InnerTcpControl(
  31286     int unit, 
  31287     bcm_field_entry_t entry, 
  31288     uint8 data, 
  31289     uint8 mask);
  31290 
  31291 /* 
  31292  * Get match criteria for bcmFieldQualifyInnerTcpControl
  31293  *                qualifier from the field entry.
  31294  */
  31295 extern int bcm_field_qualify_InnerTcpControl_get(
  31296     int unit, 
  31297     bcm_field_entry_t entry, 
  31298     uint8 *data, 
  31299     uint8 *mask);
  31300 
  31301 /* 
  31302  * Set match criteria for IntFlags
  31303  *                qualifier.
  31304  */
  31305 extern int bcm_field_qualify_IntFlags(
  31306     int unit, 
  31307     bcm_field_entry_t entry, 
  31308     uint8 data, 
  31309     uint8 mask);
  31310 
  31311 /* 
  31312  * Get match criteria for IntFlags
  31313  *                qualifier.
  31314  */
  31315 extern int bcm_field_qualify_IntFlags_get(
  31316     int unit, 
  31317     bcm_field_entry_t entry, 
  31318     uint8 *data, 
  31319     uint8 *mask);
  31320 
  31321 /* 
  31322  * Set match criteria for IntUdpChecksumEqualsZero
  31323  *                qualifier.
  31324  */
  31325 extern int bcm_field_qualify_IntUdpChecksumEqualsZero(
  31326     int unit, 
  31327     bcm_field_entry_t entry, 
  31328     uint8 data, 
  31329     uint8 mask);
  31330 
  31331 /* 
  31332  * Get match criteria for IntUdpChecksumEqualsZero
  31333  *                qualifier.
  31334  */
  31335 extern int bcm_field_qualify_IntUdpChecksumEqualsZero_get(
  31336     int unit, 
  31337     bcm_field_entry_t entry, 
  31338     uint8 *data, 
  31339     uint8 *mask);
  31340 
  31341 /* 
  31342  * Set match criteria for IntMetadataHdrType
  31343  *                qualifier.
  31344  */
  31345 extern int bcm_field_qualify_IntMetadataHdrType(
  31346     int unit, 
  31347     bcm_field_entry_t entry, 
  31348     uint8 data, 
  31349     uint8 mask);
  31350 
  31351 /* 
  31352  * Get match criteria for IntMetadataHdrType
  31353  *                qualifier.
  31354  */
  31355 extern int bcm_field_qualify_IntMetadataHdrType_get(
  31356     int unit, 
  31357     bcm_field_entry_t entry, 
  31358     uint8 *data, 
  31359     uint8 *mask);
  31360 
  31361 /* 
  31362  * Set match criteria for CompressionDstHit
  31363  *                qualifier.
  31364  */
  31365 extern int bcm_field_qualify_CompressionDstHit(
  31366     int unit, 
  31367     bcm_field_entry_t entry, 
  31368     uint8 data, 
  31369     uint8 mask);
  31370 
  31371 /* 
  31372  * Get match criteria for CompressionDstHit
  31373  *                qualifier.
  31374  */
  31375 extern int bcm_field_qualify_CompressionDstHit_get(
  31376     int unit, 
  31377     bcm_field_entry_t entry, 
  31378     uint8 *data, 
  31379     uint8 *mask);
  31380 
  31381 /* 
  31382  * Set match criteria for CompressionSrcHit
  31383  *                qualifier.
  31384  */
  31385 extern int bcm_field_qualify_CompressionSrcHit(
  31386     int unit, 
  31387     bcm_field_entry_t entry, 
  31388     uint8 data, 
  31389     uint8 mask);
  31390 
  31391 /* 
  31392  * Get match criteria for CompressionSrcHit
  31393  *                qualifier.
  31394  */
  31395 extern int bcm_field_qualify_CompressionSrcHit_get(
  31396     int unit, 
  31397     bcm_field_entry_t entry, 
  31398     uint8 *data, 
  31399     uint8 *mask);
  31400 
  31401 #endif /* BCM_HIDE_DISPATCHABLE */
  31402 
  31403 /* bcm_field_IntHdr_Location_e */
  31404 typedef enum bcm_field_IntHdr_Location_e {
  31405     bcmfieldIntHdrLocationInner = 0,    /* INT header location is inner payload. */
  31406     bcmfieldIntHdrLocationOuter = 1,    /* INT header location is outer payload. */
  31407     bcmfieldIntHdrLocationBoth = 2,     /* INT header location is both inner and
  31408                                            outer payload. */
  31409     bcmfieldIntHdrLocationCount = 3     /* Always Last. Not a usable value. */
  31410 } bcm_field_IntHdr_Location_t;
  31411 
  31412 #define BCM_FIELD_INT_HEADER_LOCATION \
  31413 { \
  31414     "bcmfieldIntHdrLocationInner", \
  31415     "bcmfieldIntHdrLocationOuter", \
  31416     "bcmfieldIntHdrLocationBoth"  \
  31417 }
  31418 
  31419 /* bcm_field_IntHdr_Type_e */
  31420 typedef enum bcm_field_IntHdr_Type_e {
  31421     bcmfieldIntHdrTypeNone = 0,     /* INT header type NONE. */
  31422     bcmfieldIntHdrTypeINTDP = 1,    /* INT header type INT_DP. */
  31423     bcmfieldIntHdrTypeIFA = 2,      /* INT header type IFA. */
  31424     bcmfieldIntHdrTypeIOAM = 3,     /* INT header type IOAM. */
  31425     bcmfieldIntHdrTypeCount = 4     /* Always Last. Not a usable value. */
  31426 } bcm_field_IntHdr_Type_t;
  31427 
  31428 #define BCM_FIELD_INT_HEADER_TYPE \
  31429 { \
  31430     "bcmfieldIntHdrTypeNone", \
  31431     "bcmfieldIntHdrTypeINTDP", \
  31432     "bcmfieldIntHdrTypeIFA", \
  31433     "bcmfieldIntHdrTypeIOAM"  \
  31434 }
  31435 
  31436 #ifndef BCM_HIDE_DISPATCHABLE
  31437 
  31438 /* 
  31439  * Set match criteria for IntHdrType
  31440  *                qualifier.
  31441  */
  31442 extern int bcm_field_qualify_IntHdrType(
  31443     int unit, 
  31444     bcm_field_entry_t entry, 
  31445     bcm_field_IntHdr_Type_t int_type);
  31446 
  31447 /* 
  31448  * Get match criteria for IntHdrType
  31449  *                qualifier.
  31450  */
  31451 extern int bcm_field_qualify_IntHdrType_get(
  31452     int unit, 
  31453     bcm_field_entry_t entry, 
  31454     bcm_field_IntHdr_Type_t *int_type);
  31455 
  31456 /* 
  31457  * Set match criteria for IntHdrPresent
  31458  *                qualifier.
  31459  */
  31460 extern int bcm_field_qualify_IntHdrPresent(
  31461     int unit, 
  31462     bcm_field_entry_t entry, 
  31463     bcm_field_IntHdr_Location_t int_type);
  31464 
  31465 /* 
  31466  * Get match criteria for IntHdrPresent
  31467  *                qualifier.
  31468  */
  31469 extern int bcm_field_qualify_IntHdrPresent_get(
  31470     int unit, 
  31471     bcm_field_entry_t entry, 
  31472     bcm_field_IntHdr_Location_t *int_type);
  31473 
  31474 #endif /* BCM_HIDE_DISPATCHABLE */
  31475 
  31476 /* bcm_field_pkt_misc_ctrl_e */
  31477 typedef enum bcm_field_pkt_misc_ctrl_e {
  31478     bcmFieldPktMiscCtrlNone = 0,        /* No operation */
  31479     bcmFieldPktMiscCtrlGoodIpPkt = 1,   /* Good IP packet. */
  31480     bcmFieldPktMiscCtrlNotGoodIpPkt = 2, /* Not Good IP packet. */
  31481     bcmFieldPktMiscCtrlBpduPkt = 3,     /* BPDU packet. */
  31482     bcmFieldPktMiscCtrlNotBpduPkt = 4,  /* Not BPDU packet. */
  31483     bcmFieldPktMiscCtrlPimBidirPkt = 5, /* PIM Bidirectional Flow. */
  31484     bcmFieldPktMiscCtrlNotPimBidirPkt = 6, /* Not PIM Bidirectional Flow. */
  31485     bcmFieldPktMiscCtrlHiGig3MirrorPkt = 7, /* HiGig3 Mirror Packet. */
  31486     bcmFieldPktMiscCtrlNotHiGig3MirrorPkt = 8, /* Not HiGig3 Mirror Packet. */
  31487     bcmFieldPktMiscCtrlLastCount = 9    /* Always Last. Not a usable value. */
  31488 } bcm_field_pkt_misc_ctrl_t;
  31489 
  31490 #ifndef BCM_HIDE_DISPATCHABLE
  31491 
  31492 /* Set match criteria for Packet Misc Controls. */
  31493 extern int bcm_field_qualify_PktMiscCtrl(
  31494     int unit, 
  31495     bcm_field_entry_t entry, 
  31496     bcm_field_pkt_misc_ctrl_t pkt_misc_ctrl);
  31497 
  31498 /* Get match criteria for Packet Misc controls qualifier. */
  31499 extern int bcm_field_qualify_PktMiscCtrl_get(
  31500     int unit, 
  31501     bcm_field_entry_t entry, 
  31502     bcm_field_pkt_misc_ctrl_t *pkt_misc_ctrl);
  31503 
  31504 /* Set match criteria for HiGig3 packet. */
  31505 extern int bcm_field_qualify_HiGig3Pkt(
  31506     int unit, 
  31507     bcm_field_entry_t entry, 
  31508     uint8 data, 
  31509     uint8 mask);
  31510 
  31511 /* Get match criteria for HiGig3 packet qualifier. */
  31512 extern int bcm_field_qualify_HiGig3Pkt_get(
  31513     int unit, 
  31514     bcm_field_entry_t entry, 
  31515     uint8 *data, 
  31516     uint8 *mask);
  31517 
  31518 /* Set match criteria for Loopback Lag Failover packet. */
  31519 extern int bcm_field_qualify_LoopbackLagFailoverPkt(
  31520     int unit, 
  31521     bcm_field_entry_t entry, 
  31522     uint8 data, 
  31523     uint8 mask);
  31524 
  31525 /* Get match criteria for Loopback Lag Failover packet qualifier. */
  31526 extern int bcm_field_qualify_LoopbackLagFailoverPkt_get(
  31527     int unit, 
  31528     bcm_field_entry_t entry, 
  31529     uint8 *data, 
  31530     uint8 *mask);
  31531 
  31532 #endif /* BCM_HIDE_DISPATCHABLE */
  31533 
  31534 /* Macros for VLAN Tag Preserve */
  31535 #define BCM_FIELD_OUTER_VLAN_TAG_PRESERVE   (1 << 0)   /* Preserve Outer VLAN
  31536                                                           Tag */
  31537 #define BCM_FIELD_INNER_VLAN_TAG_PRESERVE   (1 << 1)   /* Preserve Inner VLAN
  31538                                                           Tag */
  31539 
  31540 #ifndef BCM_HIDE_DISPATCHABLE
  31541 
  31542 /* 
  31543  *  Set match criteria for bcmFieldQualifyForwardingOuterVlanPri
  31544  *                  qualifier in the field entry.
  31545  */
  31546 extern int bcm_field_qualify_ForwardingOuterVlanPri(
  31547     int unit, 
  31548     bcm_field_entry_t entry, 
  31549     uint8 data, 
  31550     uint8 mask);
  31551 
  31552 /* 
  31553  *  Get match criteria for bcmFieldQualifyForwardingOuterVlanPri
  31554  *                  qualifier from the field entry.
  31555  */
  31556 extern int bcm_field_qualify_ForwardingOuterVlanPri_get(
  31557     int unit, 
  31558     bcm_field_entry_t entry, 
  31559     uint8 *data, 
  31560     uint8 *mask);
  31561 
  31562 /* 
  31563  *  Set match criteria for bcmFieldQualifyForwardingOuterTpid qualifier
  31564  * in the field entry.
  31565  */
  31566 extern int bcm_field_qualify_ForwardingOuterTpid(
  31567     int unit, 
  31568     bcm_field_entry_t entry, 
  31569     uint16 data, 
  31570     uint16 mask);
  31571 
  31572 /* 
  31573  * Get match criteria for bcmFieldQualifyForwardingOuterTpid qualifier
  31574  * from the field entry.
  31575  */
  31576 extern int bcm_field_qualify_ForwardingOuterTpid_get(
  31577     int unit, 
  31578     bcm_field_entry_t entry, 
  31579     uint16 *data, 
  31580     uint16 *mask);
  31581 
  31582 /* 
  31583  *  Set match criteria for bcmFieldQualifyIncomingVlanFormat qualifier in
  31584  * the field entry.
  31585  */
  31586 extern int bcm_field_qualify_IncomingVlanFormat(
  31587     int unit, 
  31588     bcm_field_entry_t entry, 
  31589     uint8 data, 
  31590     uint8 mask);
  31591 
  31592 /* 
  31593  * Get match criteria for bcmFieldQualifyIncomingVlanFormat qualifier
  31594  * from the field entry.
  31595  */
  31596 extern int bcm_field_qualify_IncomingVlanFormat_get(
  31597     int unit, 
  31598     bcm_field_entry_t entry, 
  31599     uint8 *data, 
  31600     uint8 *mask);
  31601 
  31602 /* 
  31603  * Set match criteria for bcmFieldQualifyBfdMultiplierLen qualifier in
  31604  * the field entry.
  31605  */
  31606 extern int bcm_field_qualify_BfdMultiplierLen(
  31607     int unit, 
  31608     bcm_field_entry_t entry, 
  31609     uint16 data, 
  31610     uint16 mask);
  31611 
  31612 /* Set match criteria for BFD Version Flags in the field entry. */
  31613 extern int bcm_field_qualify_BfdVerFlags(
  31614     int unit, 
  31615     bcm_field_entry_t entry, 
  31616     uint8 data, 
  31617     uint8 mask);
  31618 
  31619 /* Set match criteria for GPE Flags in the field entry. */
  31620 extern int bcm_field_qualify_GpeFlags(
  31621     int unit, 
  31622     bcm_field_entry_t entry, 
  31623     uint8 data, 
  31624     uint8 mask);
  31625 
  31626 /* Set match criteria for GPE Network ID in the field entry. */
  31627 extern int bcm_field_qualify_GpeNetworkId(
  31628     int unit, 
  31629     bcm_field_entry_t entry, 
  31630     uint32 data, 
  31631     uint32 mask);
  31632 
  31633 /* Set match criteria for GPE Protocol in the field entry. */
  31634 extern int bcm_field_qualify_GpeProtocol(
  31635     int unit, 
  31636     bcm_field_entry_t entry, 
  31637     uint8 data, 
  31638     uint8 mask);
  31639 
  31640 /* Set match criteria for GPE Reserved0 in the field entry. */
  31641 extern int bcm_field_qualify_GpeReserved0(
  31642     int unit, 
  31643     bcm_field_entry_t entry, 
  31644     uint16 data, 
  31645     uint16 mask);
  31646 
  31647 /* Set match criteria for GPE Reserved1 in the field entry. */
  31648 extern int bcm_field_qualify_GpeReserved1(
  31649     int unit, 
  31650     bcm_field_entry_t entry, 
  31651     uint8 data, 
  31652     uint8 mask);
  31653 
  31654 /* Set match criteria for IFA Attribute Opaque data in the field entry. */
  31655 extern int bcm_field_qualify_IfaAttrOpaqData(
  31656     int unit, 
  31657     bcm_field_entry_t entry, 
  31658     uint16 data, 
  31659     uint16 mask);
  31660 
  31661 /* Set match criteria for IGMP Max Response time in the field entry. */
  31662 extern int bcm_field_qualify_IgmpMaxRespTime(
  31663     int unit, 
  31664     bcm_field_entry_t entry, 
  31665     uint8 data, 
  31666     uint8 mask);
  31667 
  31668 /* Set match criteria for MPLS TOP Header in the field entry. */
  31669 extern int bcm_field_qualify_MplsTopHeader(
  31670     int unit, 
  31671     bcm_field_entry_t entry, 
  31672     uint32 data, 
  31673     uint32 mask);
  31674 
  31675 /* Set match criteria for MPLS VC Label header in the field entry. */
  31676 extern int bcm_field_qualify_MplsVcLabelHeader(
  31677     int unit, 
  31678     bcm_field_entry_t entry, 
  31679     uint32 data, 
  31680     uint32 mask);
  31681 
  31682 /* Set match criteria for TCP Ack number in the field entry. */
  31683 extern int bcm_field_qualify_TcpAckNum(
  31684     int unit, 
  31685     bcm_field_entry_t entry, 
  31686     uint32 data, 
  31687     uint32 mask);
  31688 
  31689 /* Set match criteria for TCP Sequence Num in the field entry. */
  31690 extern int bcm_field_qualify_TcpSequenceNum(
  31691     int unit, 
  31692     bcm_field_entry_t entry, 
  31693     uint32 data, 
  31694     uint32 mask);
  31695 
  31696 /* Set match criteria for UDP Length in the field entry. */
  31697 extern int bcm_field_qualify_UdpLength(
  31698     int unit, 
  31699     bcm_field_entry_t entry, 
  31700     uint16 data, 
  31701     uint16 mask);
  31702 
  31703 /* Set match criteria for PTP Rserved1 in the field entry. */
  31704 extern int bcm_field_qualify_PtpReserved1(
  31705     int unit, 
  31706     bcm_field_entry_t entry, 
  31707     uint8 data, 
  31708     uint8 mask);
  31709 
  31710 /* Set match criteria for PTP Transport Spec in the field entry. */
  31711 extern int bcm_field_qualify_PtpTransportSpec(
  31712     int unit, 
  31713     bcm_field_entry_t entry, 
  31714     uint8 data, 
  31715     uint8 mask);
  31716 
  31717 /* Get match criteria for BFD Multiplier Length. */
  31718 extern int bcm_field_qualify_BfdMultiplierLen_get(
  31719     int unit, 
  31720     bcm_field_entry_t entry, 
  31721     uint16 data, 
  31722     uint16 mask);
  31723 
  31724 /* Get match criteria for BFD Version Flags. */
  31725 extern int bcm_field_qualify_BfdVerFlags_get(
  31726     int unit, 
  31727     bcm_field_entry_t entry, 
  31728     uint8 data, 
  31729     uint8 mask);
  31730 
  31731 /* Get match criteria for GPE Flags. */
  31732 extern int bcm_field_qualify_GpeFlags_get(
  31733     int unit, 
  31734     bcm_field_entry_t entry, 
  31735     uint8 data, 
  31736     uint8 mask);
  31737 
  31738 /* Get match criteria for GPE Network ID. */
  31739 extern int bcm_field_qualify_GpeNetworkId_get(
  31740     int unit, 
  31741     bcm_field_entry_t entry, 
  31742     uint32 data, 
  31743     uint32 mask);
  31744 
  31745 /* Get match criteria for GPE Protocol. */
  31746 extern int bcm_field_qualify_GpeProtocol_get(
  31747     int unit, 
  31748     bcm_field_entry_t entry, 
  31749     uint8 data, 
  31750     uint8 mask);
  31751 
  31752 /* Get match criteria for GPE Reserved0. */
  31753 extern int bcm_field_qualify_GpeReserved0_get(
  31754     int unit, 
  31755     bcm_field_entry_t entry, 
  31756     uint16 data, 
  31757     uint16 mask);
  31758 
  31759 /* Get match criteria for GPE Reserved1. */
  31760 extern int bcm_field_qualify_GpeReserved1_get(
  31761     int unit, 
  31762     bcm_field_entry_t entry, 
  31763     uint8 data, 
  31764     uint8 mask);
  31765 
  31766 /* Get match criteria for IFA Attribute Opaque data. */
  31767 extern int bcm_field_qualify_IfaAttrOpaqData_get(
  31768     int unit, 
  31769     bcm_field_entry_t entry, 
  31770     uint16 data, 
  31771     uint16 mask);
  31772 
  31773 /* Get match criteria for IGMP Max Response time. */
  31774 extern int bcm_field_qualify_IgmpMaxRespTime_get(
  31775     int unit, 
  31776     bcm_field_entry_t entry, 
  31777     uint8 data, 
  31778     uint8 mask);
  31779 
  31780 /* Get match criteria for MPLS TOP Header. */
  31781 extern int bcm_field_qualify_MplsTopHeader_get(
  31782     int unit, 
  31783     bcm_field_entry_t entry, 
  31784     uint32 data, 
  31785     uint32 mask);
  31786 
  31787 /* Get match criteria for MPLS VC Label header. */
  31788 extern int bcm_field_qualify_MplsVcLabelHeader_get(
  31789     int unit, 
  31790     bcm_field_entry_t entry, 
  31791     uint32 data, 
  31792     uint32 mask);
  31793 
  31794 /* Get match criteria for TCP Ack number. */
  31795 extern int bcm_field_qualify_TcpAckNum_get(
  31796     int unit, 
  31797     bcm_field_entry_t entry, 
  31798     uint32 data, 
  31799     uint32 mask);
  31800 
  31801 /* Get match criteria for TCP Sequence Num. */
  31802 extern int bcm_field_qualify_TcpSequenceNum_get(
  31803     int unit, 
  31804     bcm_field_entry_t entry, 
  31805     uint32 data, 
  31806     uint32 mask);
  31807 
  31808 /* Get match criteria for UDP Length. */
  31809 extern int bcm_field_qualify_UdpLength_get(
  31810     int unit, 
  31811     bcm_field_entry_t entry, 
  31812     uint16 data, 
  31813     uint16 mask);
  31814 
  31815 /* Get match criteria for PTP Rserved1. */
  31816 extern int bcm_field_qualify_PtpReserved1_get(
  31817     int unit, 
  31818     bcm_field_entry_t entry, 
  31819     uint8 data, 
  31820     uint8 mask);
  31821 
  31822 /* Get match criteria for PTP Transport Spec. */
  31823 extern int bcm_field_qualify_PtpTransportSpec_get(
  31824     int unit, 
  31825     bcm_field_entry_t entry, 
  31826     uint8 data, 
  31827     uint8 mask);
  31828 
  31829 /* List the actions supported for a given stage */
  31830 extern int bcm_field_stage_aset_get(
  31831     int unit, 
  31832     bcm_field_stage_t stage, 
  31833     bcm_field_aset_t *aset);
  31834 
  31835 /* 
  31836  * The API retrieves the allocated container ID information in
  31837  * cont_id_arr and the size of each container in cont_sz_arr for a given
  31838  * action, the actual_ct is the valid size of the array which holds the
  31839  * container ID and the size. If max_ct is zero,
  31840  * bcm_field_action_cont_info_get will ignore the pointers for
  31841  * cont_id_arr, cont_sz_arr; instead it will count the number of elements
  31842  * needed to return the current full state and write that at actual_ct
  31843  * and also returns the action size.
  31844  */
  31845 extern int bcm_field_action_cont_info_get(
  31846     int unit, 
  31847     bcm_field_stage_t stage, 
  31848     bcm_field_action_t action, 
  31849     uint8 max_ct, 
  31850     uint16 *cont_id_arr, 
  31851     uint16 *cont_sz_arr, 
  31852     uint8 *actual_ct, 
  31853     uint8 *action_size);
  31854 
  31855 /* 
  31856  * To qualify on Loopback header drop indicator for IFA switch probe
  31857  * copy.
  31858  */
  31859 extern int bcm_field_qualify_LoopbackIfaSwitchCopyDrop(
  31860     int unit, 
  31861     bcm_field_entry_t entry, 
  31862     uint8 data, 
  31863     uint8 mask);
  31864 
  31865 /* 
  31866  * To get qualified inputs on Loopback header drop indicator for IFA
  31867  * switch probe copy.
  31868  */
  31869 extern int bcm_field_qualify_LoopbackIfaSwitchCopyDrop_get(
  31870     int unit, 
  31871     bcm_field_entry_t entry, 
  31872     uint8 *data, 
  31873     uint8 *mask);
  31874 
  31875 /* To qualify on the PDELAY_REQ message. */
  31876 extern int bcm_field_qualify_PdelayReq(
  31877     int unit, 
  31878     bcm_field_entry_t entry, 
  31879     uint8 data, 
  31880     uint8 mask);
  31881 
  31882 /* To get qualified inputs on the PDELAY_REQ. */
  31883 extern int bcm_field_qualify_PdelayReq_get(
  31884     int unit, 
  31885     bcm_field_entry_t entry, 
  31886     uint8 *data, 
  31887     uint8 *mask);
  31888 
  31889 #endif /* BCM_HIDE_DISPATCHABLE */
  31890 
  31891 /* 
  31892  * Structure holds a qualifier to be qualified upon as part of the entry
  31893  * in the field flush machine TCAM.
  31894  */
  31895 typedef struct bcm_field_flush_entry_qual_s {
  31896     bcm_field_qualify_t type;           /* Qualifier type. */
  31897     uint32 value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Set value for qualify (lookup key). */
  31898     uint32 mask[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Mask value that dictates which of the
  31899                                            value bits are relevant for lookup. */
  31900 } bcm_field_flush_entry_qual_t;
  31901 
  31902 /* 
  31903  *  Structure holds an action to be qualified upon as part of the entry
  31904  * in the field flush machine TCAM, or to be modified as part of the
  31905  * payload.
  31906  */
  31907 typedef struct bcm_field_flush_entry_action_s {
  31908     bcm_field_action_t type;            /* Action type. */
  31909     uint32 value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]; /* Set value for action (lookup key) or
  31910                                            new value to be modified (in
  31911                                            payload). */
  31912     uint32 mask[BCM_FIELD_ACTION_WIDTH_IN_WORDS]; /* Mask that dictates which of the value
  31913                                            bits are relevant for lookup, (in
  31914                                            key) or to be changed (in action). */
  31915     uint8 valid_bit_value;              /* What value of valid bit to expect in
  31916                                            key or written in payload (if there
  31917                                            is a valid bit for the action). */
  31918     uint8 valid_bit_mask;               /* Whether to qualify upon the valid bit
  31919                                            value in key or whether to change the
  31920                                            valid bit in payload (if there is a
  31921                                            valid bit for the action). */
  31922 } bcm_field_flush_entry_action_t;
  31923 
  31924 /* Structure holds flush profile information. */
  31925 typedef struct bcm_field_flush_profile_info_s {
  31926     uint32 high_threshold_value;    /* when age-counter is higher than this
  31927                                        threshold, flow is considered as High
  31928                                        Flow */
  31929     uint32 low_threshold_value;     /* when age-counter is lower than this
  31930                                        threshold, flow is considered as Low Flow */
  31931     uint32 increment_value;         /* the age-counter increment value */
  31932     uint32 decrement_value;         /* the age-counter decrement value */
  31933     uint32 maximal_value;           /* the age-counter maximum value
  31934                                        (age-counter upper limit value) */
  31935     uint32 out_value;               /* the age-counter age-out value
  31936                                        (age-counter value for deleting an entry
  31937                                        from database) */
  31938     uint32 init_value;              /* age-counter initial value for new entry */
  31939 } bcm_field_flush_profile_info_t;
  31940 
  31941 /* Structure holds flush entry key to qualify upon. */
  31942 typedef struct bcm_field_flush_entry_key_s {
  31943     int nof_entry_quals;                /* Number of valid qualifiers in the
  31944                                            flush rule Field entry. */
  31945     bcm_field_flush_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Entry qualifiers info including type,
  31946                                            value, and mask, used to qualify upon
  31947                                            what entry was hit. */
  31948     int nof_entry_actions;              /* Number of valid actions in the flush
  31949                                            rule Field entry. */
  31950     bcm_field_flush_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type,
  31951                                            value, and mask, used to qualify upon
  31952                                            what entry was hit. */
  31953     uint8 hit;                          /* the hit value. */
  31954     uint8 hit_mask;                     /* the mask to be applied on hit field. */
  31955 } bcm_field_flush_entry_key_t;
  31956 
  31957 /* Structure holds flush action information. */
  31958 typedef struct bcm_field_flush_entry_payload_s {
  31959     uint8 hit_clear_cmd;                /* Clear hit bit of the entry. */
  31960     uint8 delete_cmd;                   /* Remove the entry. */
  31961     uint8 transplant_cmd;               /* Edit the entry. */
  31962     int nof_entry_actions;              /* Number of valid actions in the flush
  31963                                            action Field entry. */
  31964     bcm_field_flush_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type,
  31965                                            value to be changed (by mask).
  31966                                            Relevant if transplant is true. */
  31967 } bcm_field_flush_entry_payload_t;
  31968 
  31969 /* Structure holds flush entry information. */
  31970 typedef struct bcm_field_flush_entry_info_s {
  31971     bcm_field_flush_entry_key_t key;    /* Flush entry key to be compared by the
  31972                                            TCAM. */
  31973     bcm_field_flush_entry_payload_t payload; /* Flush entry payload for actions to be
  31974                                            performed, including changing the
  31975                                            payload of the EXEM entry. */
  31976 } bcm_field_flush_entry_info_t;
  31977 
  31978 #ifndef BCM_HIDE_DISPATCHABLE
  31979 
  31980 /* 
  31981  * This function allocates a flush profile, sets it and installs it to
  31982  * HW.
  31983  */
  31984 extern int bcm_field_flush_profile_create(
  31985     int unit, 
  31986     uint32 flags, 
  31987     bcm_field_flush_profile_info_t *flush_profile_info, 
  31988     uint32 *flush_profile_id);
  31989 
  31990 /* Gets a flush profile information. */
  31991 extern int bcm_field_flush_profile_get(
  31992     int unit, 
  31993     uint32 flags, 
  31994     uint32 flush_profile_id, 
  31995     bcm_field_flush_profile_info_t *flush_profile_info);
  31996 
  31997 /* 
  31998  * This function de-allocates a flush profile and sets the HW back to
  31999  * default values.
  32000  */
  32001 extern int bcm_field_flush_profile_destroy(
  32002     int unit, 
  32003     uint32 flags, 
  32004     uint32 flush_profile_id);
  32005 
  32006 /* This function attaches a field-group to a flush profile. */
  32007 extern int bcm_field_flush_profile_attach(
  32008     int unit, 
  32009     uint32 flags, 
  32010     bcm_field_group_t fg_id, 
  32011     uint32 flush_profile_id);
  32012 
  32013 /* 
  32014  * This function creates, sets and installs to HW a single flush machine
  32015  * entry (rule and action) for a specific field group.
  32016  */
  32017 extern int bcm_field_flush_entry_add(
  32018     int unit, 
  32019     uint32 flags, 
  32020     bcm_field_group_t fg_id, 
  32021     int entry_id, 
  32022     bcm_field_flush_entry_info_t *flush_entry_info);
  32023 
  32024 /* 
  32025  * Gets the a single flush machine entry (rule and action) for a specific
  32026  * field group.
  32027  */
  32028 extern int bcm_field_flush_entry_get(
  32029     int unit, 
  32030     uint32 flags, 
  32031     bcm_field_group_t fg_id, 
  32032     int entry_id, 
  32033     bcm_field_flush_entry_info_t *flush_entry_info);
  32034 
  32035 /* 
  32036  * Clears a single flush machine entry (rule and action) for a specific
  32037  * field group.
  32038  */
  32039 extern int bcm_field_flush_entry_delete(
  32040     int unit, 
  32041     uint32 flags, 
  32042     bcm_field_group_t fg_id, 
  32043     int entry_id);
  32044 
  32045 #endif /* BCM_HIDE_DISPATCHABLE */
  32046 
  32047 /* Initialize the field flush entry structure. */
  32048 extern void bcm_field_flush_entry_info_t_init(
  32049     bcm_field_flush_entry_info_t *flush_entry_info);
  32050 
  32051 /* Initialize the field flush profile structure. */
  32052 extern void bcm_field_flush_profile_info_t_init(
  32053     bcm_field_flush_profile_info_t *flush_profile_info);
  32054 
  32055 #ifndef BCM_HIDE_DISPATCHABLE
  32056 
  32057 /* Add match criteria for bcmFieldQualifyDstMultipathLevel1. */
  32058 extern int bcm_field_qualify_DstMultipathLevel1(
  32059     int unit, 
  32060     bcm_field_entry_t entry, 
  32061     bcm_if_t data, 
  32062     bcm_if_t mask);
  32063 
  32064 /* Get match criteria for Level 1 ECMP groups from a field entry. */
  32065 extern int bcm_field_qualify_DstMultipathLevel1_get(
  32066     int unit, 
  32067     bcm_field_entry_t entry, 
  32068     bcm_if_t *data, 
  32069     bcm_if_t *mask);
  32070 
  32071 /* Add match criteria for bcmFieldQualifyDstMultipathLevel2. */
  32072 extern int bcm_field_qualify_DstMultipathLevel2(
  32073     int unit, 
  32074     bcm_field_entry_t entry, 
  32075     bcm_if_t data, 
  32076     bcm_if_t mask);
  32077 
  32078 /* Get match criteria for Level 2 ECMP groups from a field entry. */
  32079 extern int bcm_field_qualify_DstMultipathLevel2_get(
  32080     int unit, 
  32081     bcm_field_entry_t entry, 
  32082     bcm_if_t *data, 
  32083     bcm_if_t *mask);
  32084 
  32085 /* Add match criteria for bcmFieldQualifyL2SrcMiscClassId. */
  32086 extern int bcm_field_qualify_L2SrcMiscClassId(
  32087     int unit, 
  32088     bcm_field_entry_t entry, 
  32089     uint8 data, 
  32090     uint8 mask);
  32091 
  32092 /* 
  32093  * Get match criteria for bcmFieldQualifyL2SrcMiscClassId from a field
  32094  * entry.
  32095  */
  32096 extern int bcm_field_qualify_L2SrcMiscClassId_get(
  32097     int unit, 
  32098     bcm_field_entry_t entry, 
  32099     uint8 *data, 
  32100     uint8 *mask);
  32101 
  32102 /* Add match criteria for bcmFieldQualifyL2DstMiscClassId. */
  32103 extern int bcm_field_qualify_L2DstMiscClassId(
  32104     int unit, 
  32105     bcm_field_entry_t entry, 
  32106     uint8 data, 
  32107     uint8 mask);
  32108 
  32109 /* 
  32110  * Get match criteria for bcmFieldQualifyL2DstMiscClassId from a field
  32111  * entry.
  32112  */
  32113 extern int bcm_field_qualify_L2DstMiscClassId_get(
  32114     int unit, 
  32115     bcm_field_entry_t entry, 
  32116     uint8 *data, 
  32117     uint8 *mask);
  32118 
  32119 /* Add match criteria for bcmFieldQualifyL3SrcMiscClassId. */
  32120 extern int bcm_field_qualify_L3SrcMiscClassId(
  32121     int unit, 
  32122     bcm_field_entry_t entry, 
  32123     uint8 data, 
  32124     uint8 mask);
  32125 
  32126 /* 
  32127  * Get match criteria for bcmFieldQualifyL3SrcMiscClassId from a field
  32128  * entry.
  32129  */
  32130 extern int bcm_field_qualify_L3SrcMiscClassId_get(
  32131     int unit, 
  32132     bcm_field_entry_t entry, 
  32133     uint8 *data, 
  32134     uint8 *mask);
  32135 
  32136 /* Add match criteria for bcmFieldQualifyL2DstMiscClassId. */
  32137 extern int bcm_field_qualify_L3DstMiscClassId(
  32138     int unit, 
  32139     bcm_field_entry_t entry, 
  32140     uint8 data, 
  32141     uint8 mask);
  32142 
  32143 /* 
  32144  * Get match criteria for bcmFieldQualifyL3DstMiscClassId from a field
  32145  * entry.
  32146  */
  32147 extern int bcm_field_qualify_L3DstMiscClassId_get(
  32148     int unit, 
  32149     bcm_field_entry_t entry, 
  32150     uint8 *data, 
  32151     uint8 *mask);
  32152 
  32153 /* Add match criteria for bcmFieldQualifyIpFragInfo. */
  32154 extern int bcm_field_qualify_IpFragInfo(
  32155     int unit, 
  32156     bcm_field_entry_t entry, 
  32157     uint16 data, 
  32158     uint16 mask);
  32159 
  32160 /* Get match criteria for bcmFieldQualifyIpFragInfo from a field entry. */
  32161 extern int bcm_field_qualify_IpFragInfo_get(
  32162     int unit, 
  32163     bcm_field_entry_t entry, 
  32164     uint16 *data, 
  32165     uint16 *mask);
  32166 
  32167 /* Add match criteria for bcmFieldQualifyRawResidenceTime. */
  32168 extern int bcm_field_qualify_RawResidenceTime(
  32169     int unit, 
  32170     bcm_field_entry_t entry, 
  32171     uint32 data, 
  32172     uint32 mask);
  32173 
  32174 /* 
  32175  * Get match criteria for bcmFieldQualifyRawResidenceTime from a field
  32176  * entry.
  32177  */
  32178 extern int bcm_field_qualify_RawResidenceTime_get(
  32179     int unit, 
  32180     bcm_field_entry_t entry, 
  32181     uint32 *data, 
  32182     uint32 *mask);
  32183 
  32184 /* bcm_field_qualify_InDscpExp */
  32185 extern int bcm_field_qualify_InDscpExp(
  32186     int unit, 
  32187     bcm_field_entry_t entry, 
  32188     uint8 data, 
  32189     uint8 mask);
  32190 
  32191 /* 
  32192  * Get match criteria for bcmFieldQualifyInDscpExp
  32193  *                qualifier from the field entry.
  32194  */
  32195 extern int bcm_field_qualify_InDscpExp_get(
  32196     int unit, 
  32197     bcm_field_entry_t entry, 
  32198     uint8 *data, 
  32199     uint8 *mask);
  32200 
  32201 /* Fetch qset details for a mode and packet type. */
  32202 extern int bcm_field_group_mode_qset_get(
  32203     int unit, 
  32204     bcm_field_group_mode_type_t mode_type, 
  32205     bcm_field_group_packet_type_t packet_type, 
  32206     bcm_field_qset_t *qset);
  32207 
  32208 /* Add match criteria for bcmFieldQualifyIfaNextHdr. */
  32209 extern int bcm_field_qualify_IfaNextHdr(
  32210     int unit, 
  32211     bcm_field_entry_t entry, 
  32212     uint8 data, 
  32213     uint8 mask);
  32214 
  32215 /* Get match criteria for bcmFieldQualifyIfaNextHdr from a field entry. */
  32216 extern int bcm_field_qualify_IfaNextHdr_get(
  32217     int unit, 
  32218     bcm_field_entry_t entry, 
  32219     uint8 *data, 
  32220     uint8 *mask);
  32221 
  32222 /* Add match criteria for bcmFieldQualifyIfaVersion. */
  32223 extern int bcm_field_qualify_IfaVersion(
  32224     int unit, 
  32225     bcm_field_entry_t entry, 
  32226     uint8 data, 
  32227     uint8 mask);
  32228 
  32229 /* Get match criteria for bcmFieldQualifyIfaVersion from a field entry. */
  32230 extern int bcm_field_qualify_IfaVersion_get(
  32231     int unit, 
  32232     bcm_field_entry_t entry, 
  32233     uint8 *data, 
  32234     uint8 *mask);
  32235 
  32236 /* To qualify on opaque control id  1 from L2_IIF table. */
  32237 extern int bcm_field_qualify_IngressL2InterfaceOpaqueCtrlId1(
  32238     int unit, 
  32239     bcm_field_entry_t entry, 
  32240     uint8 data, 
  32241     uint8 mask);
  32242 
  32243 /* 
  32244  * Get value for bcmFieldQualifyIngressL2InterfaceOpaqueCtrlId1
  32245  *             qualifier from the field entry.
  32246  */
  32247 extern int bcm_field_qualify_IngressL2InterfaceOpaqueCtrlId1_get(
  32248     int unit, 
  32249     bcm_field_entry_t entry, 
  32250     uint8 *data, 
  32251     uint8 *mask);
  32252 
  32253 /* To qualify on flex digest control id A from L2_IIF table. */
  32254 extern int bcm_field_qualify_IngressL2InterfaceFlexDigestCtrlIdA(
  32255     int unit, 
  32256     bcm_field_entry_t entry, 
  32257     uint8 data, 
  32258     uint8 mask);
  32259 
  32260 /* 
  32261  * Get value for bcmFieldQualifyIngressL2InterfaceFlexDigestCtrlIdA
  32262  *             qualifier from the field entry.
  32263  */
  32264 extern int bcm_field_qualify_IngressL2InterfaceFlexDigestCtrlIdA_get(
  32265     int unit, 
  32266     bcm_field_entry_t entry, 
  32267     uint8 *data, 
  32268     uint8 *mask);
  32269 
  32270 /* To qualify on flex digest control id B from L2_IIF table. */
  32271 extern int bcm_field_qualify_IngressL2InterfaceFlexDigestCtrlIdB(
  32272     int unit, 
  32273     bcm_field_entry_t entry, 
  32274     uint8 data, 
  32275     uint8 mask);
  32276 
  32277 /* 
  32278  * Get value for bcmFieldQualifyIngressL2InterfaceFlexDigestCtrlIdB
  32279  *             qualifier from the field entry.
  32280  */
  32281 extern int bcm_field_qualify_IngressL2InterfaceFlexDigestCtrlIdB_get(
  32282     int unit, 
  32283     bcm_field_entry_t entry, 
  32284     uint8 *data, 
  32285     uint8 *mask);
  32286 
  32287 /* To match on Forwarding packet resolution */
  32288 extern int bcm_field_qualify_ForwardingPacketRes(
  32289     int unit, 
  32290     bcm_field_entry_t entry, 
  32291     uint32 data, 
  32292     uint32 mask);
  32293 
  32294 /* 
  32295  * Get match criteria for bcmFieldQualifyForwardingPacketRes
  32296  *                qualifier from the field entry.
  32297  */
  32298 extern int bcm_field_qualify_ForwardingPacketRes_get(
  32299     int unit, 
  32300     bcm_field_entry_t entry, 
  32301     uint32 *data, 
  32302     uint32 *mask);
  32303 
  32304 /* To qualify on EP NIH Header Opaque property value. */
  32305 extern int bcm_field_qualify_RecircleHdrOpaqueCtrlIdC(
  32306     int unit, 
  32307     bcm_field_entry_t entry, 
  32308     int data, 
  32309     int mask);
  32310 
  32311 /* 
  32312  * Get value for bcmFieldQualifyRecircleHdrOpaqueCtrlIdC
  32313  *             qualifier from the field entry.
  32314  */
  32315 extern int bcm_field_qualify_RecircleHdrOpaqueCtrlIdC_get(
  32316     int unit, 
  32317     bcm_field_entry_t entry, 
  32318     int *data, 
  32319     int *mask);
  32320 
  32321 /* 
  32322  * Set match criteria for Mpls forwarding ControlWord
  32323  *                qualifier.
  32324  */
  32325 extern int bcm_field_qualify_MplsForwardingControlWord(
  32326     int unit, 
  32327     bcm_field_entry_t entry, 
  32328     uint32 data, 
  32329     uint32 mask);
  32330 
  32331 /* 
  32332  * Get match criteria for Mpls Forwarding ControlWord
  32333  *                qualifier.
  32334  */
  32335 extern int bcm_field_qualify_MplsForwardingControlWord_get(
  32336     int unit, 
  32337     bcm_field_entry_t entry, 
  32338     uint32 *data, 
  32339     uint32 *mask);
  32340 
  32341 #endif /* BCM_HIDE_DISPATCHABLE */
  32342 
  32343 /* bcm_field_mpls_ctrl_pkt_type_e */
  32344 typedef enum bcm_field_mpls_ctrl_pkt_type_e {
  32345     bcmFieldMplsCtrlPktTypeNone = 0,    /* MPLS Control packet type none. */
  32346     bcmFieldMplsCtrlPktTypePwVccv4 = 1, /* MPLS Control packet type
  32347                                            PW_VCCV_TYPE_4. */
  32348     bcmFieldMplsCtrlPktTypeGAch = 2,    /* MPLS Control packet type G_ACH. */
  32349     bcmFieldMplsCtrlPktTypeLastCount = 3 /* Always Last. Not a usable value. */
  32350 } bcm_field_mpls_ctrl_pkt_type_t;
  32351 
  32352 #define BCM_FIELD_MPLS_CTRL_PKT_TYPE \
  32353 { \
  32354     "None", \
  32355     "PwVccv4", \
  32356     "GAch"  \
  32357 }
  32358 
  32359 #ifndef BCM_HIDE_DISPATCHABLE
  32360 
  32361 /* 
  32362  * API to add MPLS control packet type to a field entry for
  32363  * qualification.
  32364  */
  32365 extern int bcm_field_qualify_MplsCtrlPktType(
  32366     int unit, 
  32367     bcm_field_entry_t entry, 
  32368     bcm_field_mpls_ctrl_pkt_type_t type);
  32369 
  32370 /* API to retrieve MPLS control packet type associated to a field entry. */
  32371 extern int bcm_field_qualify_MplsCtrlPktType_get(
  32372     int unit, 
  32373     bcm_field_entry_t entry, 
  32374     bcm_field_mpls_ctrl_pkt_type_t *type);
  32375 
  32376 #endif /* BCM_HIDE_DISPATCHABLE */
  32377 
  32378 #endif /* __BCM_FIELD_H__ */