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 (916758B)


      1 /*
      2  * 
      3  * 
      4  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      5  * 
      6  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      7  * 
      8  * DO NOT EDIT THIS FILE!
      9  * This file is auto-generated.
     10  * Edits to this file will be lost when it is regenerated.
     11  */
     12 
     13 #ifndef __BCM_FIELD_H__
     14 #define __BCM_FIELD_H__
     15 
     16 #include <bcm/types.h>
     17 #include <shared/field.h>
     18 #include <bcm/policer.h>
     19 #include <bcm/port.h>
     20 #include <bcm/rx.h>
     21 #include <bcm/flowtracker.h>
     22 
     23 /* Entry priority. */
     24 #define BCM_FIELD_ENTRY_PRIO_HIGHEST    (0x7fffffff) /* Highest possible entry
     25                                                       priority in a group. */
     26 #define BCM_FIELD_ENTRY_PRIO_DONT_CARE  BCM_FIELD_ENTRY_PRIO_LOWEST /* Default entry priority. */
     27 #define BCM_FIELD_ENTRY_PRIO_LOWEST     (0)        /* Lowest possible entry
     28                                                       priority in a group. */
     29 
     30 /* Macros for Replace L2 Field Actions */
     31 #define BCM_FIELD_REPLACE_VLAN_PRIORITY     0          /* Replace vlan priority
     32                                                           with user provided
     33                                                           Priority without CFI
     34                                                           bit being set. User
     35                                                           provides Vlan priority
     36                                                           value (0-7) as an
     37                                                           input through param1
     38                                                           and CFI (bit being
     39                                                           unset) bit is appended
     40                                                           internally by FP
     41                                                           action handler. */
     42 #define BCM_FIELD_REPLACE_VLAN_PRIORITY_USE_INTERNAL_CFI 1          /* Replace vlan priority
     43                                                           with user provided
     44                                                           priority with CFI bit
     45                                                           set. User provides
     46                                                           Vlan priority value
     47                                                           (0-7) as an input
     48                                                           through param1 and CFI
     49                                                           bit ((bit being set) 
     50                                                           is appended internally
     51                                                           by FP action handler. */
     52 #define BCM_FIELD_REPLACE_VLAN_PRIORITY_FROM_INT_PRIO_AND_CNG 2          /* Replace Vlan priority
     53                                                           mapped from internal
     54                                                           priority and CNG
     55                                                           derived for a packet.
     56                                                           Param1 is not
     57                                                           applicable to this
     58                                                           type. */
     59 
     60 #define BCM_FIELD_ENTRY_PRIO_DEFAULT    BCM_FIELD_ENTRY_PRIO_LOWEST /* Default priority assigned
     61                                                       to new entries */
     62 
     63 #define BCM_FIELD_MAX_NAME_LEN  100        /* Maximum length for a name */
     64 
     65 #define BCM_FIELD_EXTRACTION_FLAG_CONSTANT  (0x00000001) /* Indicates constant
     66                                                           value will be used
     67                                                           instead of qualifier
     68                                                           extraction */
     69 #define BCM_FIELD_EXTRACTION_FLAG_DATA_FIELD (0x00000002) /* Indicates qualifier
     70                                                           specified is data
     71                                                           field ID instead of
     72                                                           bcmFieldQualify* */
     73 
     74 #define BCM_FIELD_ENTRY_INVALID (-1)       /* Indicates invalid and/or free
     75                                               entry */
     76 
     77 /* Macros for field entry copy */
     78 #define BCM_FIELD_ENTRY_COPY_WITHOUT_STATS  (1 << 0)   /* Avoid copying stats
     79                                                           during entry copy */
     80 
     81 /* Macros for field contol bcmFieldControlGbpSrcMacMcastBitSet */
     82 #define BCM_FIELD_GBP_SRC_ID_NEQ_DST_ID (0x0)      /* Applies this control only
     83                                                       when GBP Source ID not
     84                                                       equals to GBP Destination
     85                                                       ID (GBP_SID!=GBP_DID) */
     86 #define BCM_FIELD_GBP_SRC_ID_EQ_DST_ID  (0x1)      /* Applies this control only
     87                                                       when GBP Source ID equals
     88                                                       to GBP Destination ID
     89                                                       (GBP_SID==GBP_DID) */
     90 
     91 /* Macros for field stage slice info retrieval */
     92 #define BCM_FIELD_SLICE_ALLOCATED           (1 << 0)   /* Specify whether the
     93                                                           slice is allocated to
     94                                                           any group 0 if not
     95                                                           allocated. 1 if
     96                                                           allocated */
     97 #define BCM_FIELD_SLICE_MODE_SINGLE         (1 << 1)   /* Slice mode is single
     98                                                           wide */
     99 #define BCM_FIELD_SLICE_MODE_DOUBLE         (1 << 2)   /* Slice mode is double
    100                                                           wide */
    101 #define BCM_FIELD_SLICE_MODE_TRIPLE         (1 << 3)   /* Slice mode is triple
    102                                                           wide */
    103 #define BCM_FIELD_SLICE_MODE_INTRADOUBLE    (1 << 4)   /* Slice mode is intra
    104                                                           slice double wide */
    105 #define BCM_FIELD_SLICE_PART_PRIMARY        (1 << 5)   /* Slice is the primary
    106                                                           part */
    107 #define BCM_FIELD_SLICE_PART_SECONDARY      (1 << 6)   /* Slice is the secondary
    108                                                           part */
    109 #define BCM_FIELD_SLICE_PART_TERTIARY       (1 << 7)   /* Slice is the tertiary
    110                                                           part */
    111 #define BCM_FIELD_SLICE_PART_PRIMARY_EXPANDED (1 << 8)   /* Slice is auto expanded
    112                                                           primary part */
    113 #define BCM_FIELD_SLICE_PART_SECONDARY_EXPANDED (1 << 9)   /* Slice is auto expanded
    114                                                           secondary part */
    115 #define BCM_FIELD_SLICE_PART_TERTIARY_EXPANDED (1 << 10)  /* Slice is auto expanded
    116                                                           tertiary part */
    117 #define BCM_FIELD_SLICE_PART_INTRADOUBLE_EXPANDED (1 << 11)  /* Slice is auto expanded
    118                                                           intra slice double
    119                                                           wide part */
    120 #define BCM_FIELD_SLICE_MW_SUPPORTED        (1 << 12)  /* Slice supports multi
    121                                                           wide groups */
    122 #define BCM_FIELD_MAX_GROUPS_PER_SLICE      32         /* Maximum number of
    123                                                           groups allowed in a
    124                                                           slice */
    125 #define BCM_FIELD_STAGE_MAX_SLICES          18         /* Maximum number of
    126                                                           slices per stage */
    127 
    128 /* This structure holds details of entries in a slice */
    129 typedef struct bcm_field_stage_slice_info_s {
    130     int total_entries;                  /* Total number of entries available in
    131                                            given slice */
    132     int free_entries;                   /* Total number of free entries
    133                                            available in given slice */
    134     int flags;                          /* Flags to identify the properties of
    135                                            slice */
    136     int slice_gid_ct;                   /* Number of groups sharing the given
    137                                            slice */
    138     bcm_field_group_t slice_gid_list[BCM_FIELD_MAX_GROUPS_PER_SLICE]; /* The groupIds associated with the
    139                                            slice */
    140 } bcm_field_stage_slice_info_t;
    141 
    142 /* bcm_field_stat_action_e */
    143 typedef enum bcm_field_stat_action_e {
    144     bcmFieldStatActionNone = 0,         /* No Operation. */
    145     bcmFieldStatActionIncrement = 1,    /* Increment the stat. */
    146     bcmFieldStatActionIncrementCancel = 2, /* Do not increment the stat. */
    147     bcmFieldStatActionSample = 3,       /* Sample the stat value to the packet. */
    148     bcmFieldStatActionCount = 4         /* Always Last. Not a usable value. */
    149 } bcm_field_stat_action_t;
    150 
    151 #define BCM_FIELD_STAT_ACTION \
    152 { \
    153     "None", \
    154     "Increment", \
    155     "IncrementCancel", \
    156     "Sample"  \
    157 }
    158 
    159 /* Oam Stat Action Structure. */
    160 typedef struct bcm_field_oam_stat_action_s {
    161     bcm_stat_object_t stat_object;  /* Flex Stat Object */
    162     uint32 stat_mode_id;            /* Flex Stat Mode */
    163     bcm_field_stat_action_t action; /* Field Stat Action */
    164 } bcm_field_oam_stat_action_t;
    165 
    166 /* Packet content (data) qualification object flags. */
    167 #define BCM_FIELD_DATA_QUALIFIER_WITH_ID    (1 << 0)   
    168 #define BCM_FIELD_DATA_QUALIFIER_REPLACE    (1 << 1)   
    169 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_IP4_OPTIONS_ADJUST (1 << 2)   
    170 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_IP6_EXTENSIONS_ADJUST (1 << 3)   
    171 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_GRE_OPTIONS_ADJUST (1 << 4)   
    172 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_NEGATIVE (1 << 5)   /* The 'offset' field is
    173                                                           interpretated as
    174                                                           negative */
    175 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_BIT_RES (1 << 6)   /* The 'offset' field is
    176                                                           computed with a bit
    177                                                           resolution */
    178 #define BCM_FIELD_DATA_QUALIFIER_LENGTH_BIT_RES (1 << 7)   /* The 'length' field is
    179                                                           computed with a bit
    180                                                           resolution */
    181 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_PREDEFINED (1 << 8)   /* The 'qualifier' field
    182                                                           is used instead of
    183                                                           'offset_base' */
    184 #define BCM_FIELD_DATA_QUALIFIER_OFFSET_FLEX_HASH (1 << 9)   /* The 'qualifier' field
    185                                                           is used to create flex
    186                                                           hash entry' */
    187 #define BCM_FIELD_DATA_QUALIFIER_STAGE_LOOKUP (1 << 10)  /* The 'qualifier' field
    188                                                           is used to create for
    189                                                           Lookup Stage */
    190 #define BCM_FIELD_DATA_QUALIFIER_TYPE_L2    (1 << 11)  /* The 'qualifier' type
    191                                                           will be L2 */
    192 #define BCM_FIELD_DATA_QUALIFIER_TYPE_IPV4  (1 << 12)  /* The 'qualifier' type
    193                                                           will be ipv4 */
    194 #define BCM_FIELD_DATA_QUALIFIER_TYPE_IPV6  (1 << 13)  /* The 'qualifier' type
    195                                                           will be ipv6 */
    196 #define BCM_FIELD_DATA_QUALIFIER_TYPE_MPLS  (1 << 14)  /* The 'qualifier' type
    197                                                           will be mpls */
    198 #define BCM_FIELD_DATA_QUALIFIER_BIT_OFFSET_DNX_ORDER (1 << 15)  /* Control the qualifier
    199                                                           bit numbering */
    200 
    201 /* Packet content (data) qualification vlan tag format. */
    202 #define BCM_FIELD_DATA_FORMAT_VLAN_TAG_ANY  (0xffff)   
    203 #define BCM_FIELD_DATA_FORMAT_VLAN_NO_TAG   (1 << 0)   
    204 #define BCM_FIELD_DATA_FORMAT_VLAN_SINGLE_TAGGED (1 << 1)   
    205 #define BCM_FIELD_DATA_FORMAT_VLAN_DOUBLE_TAGGED (1 << 2)   
    206 
    207 /* Packet content (data) qualification L2 header format. */
    208 #define BCM_FIELD_DATA_FORMAT_L2_ANY    (0xffff)   
    209 #define BCM_FIELD_DATA_FORMAT_L2_ETH_II (1 << 0)   
    210 #define BCM_FIELD_DATA_FORMAT_L2_SNAP   (1 << 1)   
    211 #define BCM_FIELD_DATA_FORMAT_L2_LLC    (1 << 2)   
    212 
    213 /* Packet content (data) qualification L3 header version. */
    214 #define BCM_FIELD_DATA_FORMAT_IP_ANY        (0xffff)   
    215 #define BCM_FIELD_DATA_FORMAT_IP_NONE       (1 << 0)   
    216 #define BCM_FIELD_DATA_FORMAT_IP4           (1 << 1)   
    217 #define BCM_FIELD_DATA_FORMAT_IP6           (1 << 2)   
    218 #define BCM_FIELD_DATA_FORMAT_IP4_WITH_OPTIONS (1 << 3)   
    219 #define BCM_FIELD_DATA_FORMAT_IP6_WITH_OPTIONS (1 << 4)   
    220 
    221 /* Packet content (data) qualification Mpls encapsulation. */
    222 #define BCM_FIELD_DATA_FORMAT_MPLS_ANY      (0xffff)   
    223 #define BCM_FIELD_DATA_FORMAT_MPLS_ONE_LABEL (1 << 0)   
    224 #define BCM_FIELD_DATA_FORMAT_MPLS_TWO_LABELS (1 << 1)   
    225 #define BCM_FIELD_DATA_FORMAT_MPLS_THREE_LABELS (1 << 2)   
    226 #define BCM_FIELD_DATA_FORMAT_MPLS_FOUR_LABELS (1 << 3)   
    227 #define BCM_FIELD_DATA_FORMAT_MPLS_FIVE_LABELS (1 << 4)   
    228 
    229 /* Packet content (data) qualification FCoE encapsulation. */
    230 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ANY (0xffff)   
    231 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN    (1 << 0)   /* Standard fibre-channel
    232                                                           header */
    233 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ENCAP (1 << 1)   /* Encapsulation header */
    234 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_VIRTUAL (1 << 2)   /* Virtual fabric tag
    235                                                           (VFT) header */
    236 #define BCM_FIELD_DATA_FORMAT_FIBRE_CHAN_ROUTED (1 << 3)   /* Interfabric routing
    237                                                           (IFR) header */
    238 
    239 /* Packet content (data) qualification Tunnel. */
    240 #define BCM_FIELD_DATA_FORMAT_TUNNEL_ANY    (0xffff)   
    241 #define BCM_FIELD_DATA_FORMAT_TUNNEL_NONE   (1 << 0)   
    242 #define BCM_FIELD_DATA_FORMAT_TUNNEL_IP_IN_IP (1 << 1)   
    243 #define BCM_FIELD_DATA_FORMAT_TUNNEL_GRE    (1 << 2)   
    244 #define BCM_FIELD_DATA_FORMAT_TUNNEL_MPLS   (1 << 3)   
    245 #define BCM_FIELD_DATA_FORMAT_TUNNEL_FCOE   (1 << 4)   /* Fibre Channel over
    246                                                           Ethernet (FCoE),
    247                                                           ethertype 0x8906 */
    248 #define BCM_FIELD_DATA_FORMAT_TUNNEL_FCOE_INIT (1 << 5)   /* FCoE initialization
    249                                                           protocol (FIP),
    250                                                           ethertype 0x8914 */
    251 
    252 /* Packet content (data) qualification Flags. */
    253 #define BCM_FIELD_DATA_FORMAT_F_MASK        (0x3ff)    
    254 #define BCM_FIELD_DATA_FORMAT_F_ENCAP_STACK (1 << 0)   /* Indicates incoming
    255                                                           packet is a Higig
    256                                                           Packet */
    257 #define BCM_FIELD_DATA_FORMAT_F_NO_ENCAP_STACK (1 << 1)   /* Indicates incoming
    258                                                           packet is not a Higig
    259                                                           Packet */
    260 #define BCM_FIELD_DATA_FORMAT_F_VNTAG       (1 << 2)   /* Indicates incoming
    261                                                           packet is a VNTAG
    262                                                           Packet */
    263 #define BCM_FIELD_DATA_FORMAT_F_NO_VNTAG    (1 << 3)   /* Indicates incoming
    264                                                           packet is not a VNTAG
    265                                                           Packet */
    266 #define BCM_FIELD_DATA_FORMAT_F_CNTAG       (1 << 4)   /* Indicates incoming
    267                                                           packet is a CNTAG
    268                                                           Packet */
    269 #define BCM_FIELD_DATA_FORMAT_F_NO_CNTAG    (1 << 5)   /* Indicates incoming
    270                                                           packet is not a CNTAG
    271                                                           Packet */
    272 #define BCM_FIELD_DATA_FORMAT_F_ETAG        (1 << 6)   /* Indicates incoming
    273                                                           packet is a ETAG
    274                                                           Packet */
    275 #define BCM_FIELD_DATA_FORMAT_F_NO_ETAG     (1 << 7)   /* Indicates incoming
    276                                                           packet is not a ETAG
    277                                                           Packet */
    278 #define BCM_FIELD_DATA_FORMAT_F_ICNM        (1 << 8)   /* Indicates incoming
    279                                                           packet is a ICNM
    280                                                           Packet */
    281 #define BCM_FIELD_DATA_FORMAT_F_NO_ICNM     (1 << 9)   /* Indicates incoming
    282                                                           packet is not a ICNM
    283                                                           Packet */
    284 
    285 /* bcm_field_data_offset_base_e */
    286 typedef enum bcm_field_data_offset_base_e {
    287     bcmFieldDataOffsetBasePacketStart = 0, /* Offset provided from the beginning of
    288                                            a packet. */
    289     bcmFieldDataOffsetBaseOuterL3Header = 1, /* Offset provided from the beginning of
    290                                            outer L3 header. */
    291     bcmFieldDataOffsetBaseInnerL3Header = 2, /* Offset provided from the beginning of
    292                                            inner L3 header. */
    293     bcmFieldDataOffsetBaseOuterL4Header = 3, /* Offset provided from the beginning of
    294                                            outer L4 header.. */
    295     bcmFieldDataOffsetBaseInnerL4Header = 4, /* Offset provided from the beginning of
    296                                            inner L4 header. */
    297     bcmFieldDataOffsetBaseHigigHeader = 5, /* Offset provided from the beginning of
    298                                            Higig header. */
    299     bcmFieldDataOffsetBaseHigig2Header = 6, /* Offset provided from the beginning of
    300                                            Higig header. */
    301     bcmFieldDataOffsetBaseFcoeHeader = 7, /* Offset provided from the beginning of
    302                                            FCoE header. */
    303     bcmFieldDataOffsetBaseDeprecated8 = 8, /* Deprecated 8. */
    304     bcmFieldDataOffsetBaseL2Header = 9, /* Ethernet header. */
    305     bcmFieldDataOffsetBaseFirstHeader = 10, /* First header after Ethernet. */
    306     bcmFieldDataOffsetBaseSecondHeader = 11, /* Second header after Ethernet. */
    307     bcmFieldDataOffsetBaseThirdHeader = 12, /* Third header after Ethernet. */
    308     bcmFieldDataOffsetBaseMplsLabel1Header = 13, /* Offset provided from the beginning of
    309                                            the Mpls Label 1 header. */
    310     bcmFieldDataOffsetBaseMplsLabel2Header = 14, /* Offset provided from the beginning of
    311                                            the Mpls Label 2 header. */
    312     bcmFieldDataOffsetBaseMplsLabel3Header = 15, /* Offset provided from the beginning of
    313                                            the Mpls Label 3 header. */
    314     bcmFieldDataOffsetBaseInnerL2Header = 16, /* Offset provided from the beginning of
    315                                            inner L2 header. */
    316     bcmFieldDataOffsetBaseTrillHeader = 17, /* Offset provided from the beginning of
    317                                            Trill header. */
    318     bcmFieldDataOffsetBaseFourthHeader = 18, /* Fourth header after Ethernet. */
    319     bcmFieldDataOffsetBaseForwardingHeader = 19, /* Header used for the forwarding. */
    320     bcmFieldDataOffsetBaseNextForwardingHeader = 20, /* First header after the forwarding
    321                                            header. */
    322     bcmFieldDataOffsetBaseTrillPayload = 21, /* Offset provided from the beginning of
    323                                            Trill Payload. */
    324     bcmFieldDataOffsetBaseCount = 22    /* Always Last. Not a usable value. */
    325 } bcm_field_data_offset_base_t;
    326 
    327 #define BCM_FIELD_DATA_OFFSET_BASE \
    328 { \
    329     "bcmFieldDataOffsetBasePacketStart", \
    330     "bcmFieldDataOffsetBaseOuterL3Header", \
    331     "bcmFieldDataOffsetBaseInnerL3Header", \
    332     "bcmFieldDataOffsetBaseOuterL4Header", \
    333     "bcmFieldDataOffsetBaseInnerL4Header", \
    334     "bcmFieldDataOffsetBaseHigigHeader", \
    335     "bcmFieldDataOffsetBaseHigig2Header", \
    336     "bcmFieldDataOffsetBaseFcoeHeader", \
    337     "bcmFieldDataOffsetBaseDeprecated8", \
    338     "bcmFieldDataOffsetBaseL2Header", \
    339     "bcmFieldDataOffsetBaseFirstHeader", \
    340     "bcmFieldDataOffsetBaseSecondHeader", \
    341     "bcmFieldDataOffsetBaseThirdHeader", \
    342     "bcmFieldDataOffsetBaseMplsLabel1Header", \
    343     "bcmFieldDataOffsetBaseMplsLabel2Header", \
    344     "bcmFieldDataOffsetBaseMplsLabel3Header", \
    345     "bcmFieldDataOffsetBaseInnerL2Header", \
    346     "bcmFieldDataOffsetBaseTrillHeader", \
    347     "bcmFieldDataOffsetBaseFourthHeader", \
    348     "bcmFieldDataOffsetBaseForwardingHeader", \
    349     "bcmFieldDataOffsetBaseNextForwardingHeader", \
    350     "bcmFieldDataOffsetBaseTrillPayload"  \
    351 }
    352 
    353 /* Ethertype based DATA packet qualifier structure. */
    354 typedef struct bcm_field_data_ethertype_s {
    355     int relative_offset;            /* Packet byte offset relative to qualifier
    356                                        byte offset. */
    357     bcm_port_ethertype_t ethertype; /* Ether type. */
    358     uint16 l2;                      /* Packet l2 format.
    359                                        (FIELD_DATA_FORMAT_L2_XXX) */
    360     uint16 vlan_tag;                /* vlan_tag_format.
    361                                        (FIELD_DATA_FORMAT_VLAN_XXX) */
    362     uint32 flags;                   /* Flags. (FIELD_DATA_FORMAT_F_XXX) */
    363 } bcm_field_data_ethertype_t;
    364 
    365 /* Ip protocol/Next header based DATA packet qualifier structure. */
    366 typedef struct bcm_field_data_ip_protocol_s {
    367     int relative_offset;    /* Packet byte offset relative to qualifier byte
    368                                offset. */
    369     uint16 flags;           /* Packet ip header version.
    370                                (FIELD_DATA_FORMAT_IP_XXX) */
    371     uint8 ip;               /* Ip protocol id. */
    372     uint16 l2;              /* Packet l2 format. (FIELD_DATA_FORMAT_L2_XXX) */
    373     uint16 vlan_tag;        /* vlan_tag_format. (FIELD_DATA_FORMAT_VLAN_XXX) */
    374 } bcm_field_data_ip_protocol_t;
    375 
    376 /* Packet format based DATA qualifier specification structure. */
    377 typedef struct bcm_field_data_packet_format_s {
    378     int relative_offset;        /* Packet byte offset relative to qualifier byte
    379                                    offset. */
    380     uint16 l2;                  /* Packet l2 format. (FIELD_DATA_FORMAT_L2_XXX) */
    381     uint16 vlan_tag;            /* vlan_tag_format. (FIELD_DATA_FORMAT_VLAN_XXX) */
    382     uint16 outer_ip;            /* Outer IP header
    383                                    version.(FIELD_DATA_FORMAT_IP_XXX) */
    384     uint16 inner_ip;            /* Inner IP header
    385                                    version.(FIELD_DATA_FORMAT_IP_XXX) */
    386     uint16 tunnel;              /* Tunnel.(FIELD_DATA_FORMAT_TUNNEL_XXX) */
    387     uint16 mpls;                /* Mpls labels.(FIELD_DATA_FORMAT_MPLS_XXX) */
    388     uint16 fibre_chan_outer;    /* Header
    389                                    type.(FIELD_DATA_FORMAT_FIBRE_CHAN_XXX) */
    390     uint16 fibre_chan_inner;    /* Header
    391                                    type.(FIELD_DATA_FORMAT_FIBRE_CHAN_XXX) */
    392     uint32 flags;               /* Flags. (FIELD_DATA_FORMAT_F_XXX) */
    393 } bcm_field_data_packet_format_t;
    394 
    395 /* Packet colors. */
    396 #define BCM_FIELD_COLOR_PRESERVE    0          
    397 #define BCM_FIELD_COLOR_GREEN       1          
    398 #define BCM_FIELD_COLOR_YELLOW      2          
    399 #define BCM_FIELD_COLOR_RED         3          
    400 #define BCM_FIELD_COLOR_BLACK       4          
    401 
    402 /* IPv4 Flags from RFC-791 (for bcm_field_qualify_IpFlags). */
    403 #define BCM_FIELD_IPFLAGS_MF    0x1        /* More Fragments. */
    404 #define BCM_FIELD_IPFLAGS_DF    0x2        /* Don't Fragment. */
    405 #define BCM_FIELD_IPFLAGS_RF    0x4        /* Reserved. */
    406 #define BCM_FIELD_IPFLAGS_MASK  0x7        /* All bits. */
    407 
    408 /* TCP Control Flags from RFC-793 (for bcm_field_qualify_TcpControl). */
    409 #define BCM_FIELD_TCPCONTROL_FIN    0x01       /* No more data. */
    410 #define BCM_FIELD_TCPCONTROL_SYN    0x02       /* Sync seq numbers. */
    411 #define BCM_FIELD_TCPCONTROL_RST    0x04       /* Reset connection. */
    412 #define BCM_FIELD_TCPCONTROL_PSH    0x08       /* Push. */
    413 #define BCM_FIELD_TCPCONTROL_ACK    0x10       /* Ack field valid. */
    414 #define BCM_FIELD_TCPCONTROL_URG    0x20       /* Urgent field valid. */
    415 #define BCM_FIELD_TCPCONTROL_R40    0x40       /* Reserved. */
    416 #define BCM_FIELD_TCPCONTROL_R80    0x80       /* Reserved. */
    417 #define BCM_FIELD_TCPCONTROL_MASK   0x3f       /* All non-reserved bits. */
    418 
    419 /* IP Info (for bcm_field_qualify_IpInfo). */
    420 #define BCM_FIELD_IP_HDR_OFFSET_ZERO    0x0001     
    421 #define BCM_FIELD_IP_HDR_FLAGS_MF       0x0002     
    422 #define BCM_FIELD_IP_CHECKSUM_OK        0x0004     
    423 #define BCM_FIELD_IP_VERSION_ERR        0x0008     /* Error in the IP 'version'
    424                                                       field value */
    425 
    426 /* 
    427  * Field Qualifier VlanFormat (for bcm_field_qualify_VlanFormat).
    428  * Used to qualify packets based on vlan tag format.
    429  */
    430 #define BCM_FIELD_VLAN_FORMAT_UNTAGGED      0x0        /* Untagged packet
    431                                                           present. */
    432 #define BCM_FIELD_VLAN_FORMAT_OUTER_TAGGED  0x1        /* Outer tag present. */
    433 #define BCM_FIELD_VLAN_FORMAT_INNER_TAGGED  0x2        /* Inner tag present. */
    434 #define BCM_FIELD_VLAN_FORMAT_OUTER_TAGGED_VID_ZERO 0x4        /* Outer tag present and
    435                                                           vlan id is zero. */
    436 #define BCM_FIELD_VLAN_FORMAT_INNER_TAGGED_VID_ZERO 0x8        /* Inner tag present and
    437                                                           vlan id is zero. */
    438 
    439 /* Packet Resolution Values (for bcm_field_qualify_PacketRes). */
    440 #define BCM_FIELD_PKT_RES_UNKNOWN           0x0        /* No resolution. */
    441 #define BCM_FIELD_PKT_RES_CONTROL           0x1        /* Ethernet control
    442                                                           (8808). */
    443 #define BCM_FIELD_PKT_RES_BPDU              0x2        /* L2 cache BPDU bit. */
    444 #define BCM_FIELD_PKT_RES_L2BC              0x3        /* L2 broadcast. */
    445 #define BCM_FIELD_PKT_RES_L2UC              0x4        /* L2 unicast. */
    446 #define BCM_FIELD_PKT_RES_L2UNKNOWN         0x5        /* Unknown L2 dest (DLF). */
    447 #define BCM_FIELD_PKT_RES_L3MCUNKNOWN       0x6        /* Unknown L3 multicast. */
    448 #define BCM_FIELD_PKT_RES_L3MCKNOWN         0x7        /* Known L3 multicast. */
    449 #define BCM_FIELD_PKT_RES_L2MCKNOWN         0x8        /* Known L2 multicast. */
    450 #define BCM_FIELD_PKT_RES_L2MCUNKNOWN       0x9        /* Unknown L2 multicast. */
    451 #define BCM_FIELD_PKT_RES_L3UCKNOWN         0xa        /* Known L3 unicast. */
    452 #define BCM_FIELD_PKT_RES_L3UCUNKNOWN       0xb        /* Unknown L3 unicast. */
    453 #define BCM_FIELD_PKT_RES_MPLSKNOWN         0xc        /* Known MPLS packet   . */
    454 #define BCM_FIELD_PKT_RES_MPLSL3KNOWN       0xd        /* Known MPLS L3 packet. */
    455 #define BCM_FIELD_PKT_RES_MPLSL2KNOWN       0xe        /* Known MPLS L2 packet. */
    456 #define BCM_FIELD_PKT_RES_MPLSUNKNOWN       0xf        /* Unknown MPLS packet . */
    457 #define BCM_FIELD_PKT_RES_MIMKNOWN          0x10       /* Known MIM packet. */
    458 #define BCM_FIELD_PKT_RES_MIMUNKNOWN        0x11       /* Unknown MIM packet . */
    459 #define BCM_FIELD_PKT_RES_TRILLKNOWN        0x12       /* Known TRILL packet */
    460 #define BCM_FIELD_PKT_RES_TRILLUNKNOWN      0x13       /* Unknown TRILL packet */
    461 #define BCM_FIELD_PKT_RES_NIVKNOWN          0x14       /* Known NIV packet */
    462 #define BCM_FIELD_PKT_RES_NIVUNKNOWN        0x15       /* Unknown NIV packet */
    463 #define BCM_FIELD_PKT_RES_OAM               0x16       /* Packet hit OAM CFM
    464                                                           LMEP */
    465 #define BCM_FIELD_PKT_RES_BFD               0x17       /* Packet hit BFD session */
    466 #define BCM_FIELD_PKT_RES_ICNM              0x18       /* Congestion
    467                                                           notification */
    468 #define BCM_FIELD_PKT_RES_IEEE1588          0x19       /* IEEE 1588 packet */
    469 #define BCM_FIELD_PKT_RES_L2GREKNOWN        0x1a       /* Known L2 GRE packet */
    470 #define BCM_FIELD_PKT_RES_VXLANKNOWN        0x1b       /* Known VxLan Packet */
    471 #define BCM_FIELD_PKT_RES_FCOEKNOWN         0x1c       /* Known FCoE Packet */
    472 #define BCM_FIELD_PKT_RES_FCOEUNKNOWN       0x1d       /* Unknown FCoE Packet */
    473 #define BCM_FIELD_PKT_RES_MPLSMCKNOWN       0x1e       /* Known MPLS Multicast
    474                                                           packet */
    475 #define BCM_FIELD_PKT_RES_PIMBIDIRUNKNOWN   0x1f       /* Unknown PIM-BIDIR
    476                                                           packet from DF */
    477 #define BCM_FIELD_PKT_RES_L2_ANY            0x20       /* To match any L2
    478                                                           packet. It combines
    479                                                           the resolution types
    480                                                           BCM_FIELD_PKT_RES_L2BC,
    481                                                           BCM_FIELD_PKT_RES_L2UC,
    482                                                           BCM_FIELD_PKT_RES_L2UNKNOWN,
    483                                                           BCM_FIELD_PKT_RES_L2MCKNOWN
    484                                                           and
    485                                                           BCM_FIELD_PKT_RES_L2MCUNKNOWN */
    486 #define BCM_FIELD_PKT_RES_L2MC_ANY          0x21       /* To match any L2 MC
    487                                                           packet. This options
    488                                                           is to combine the
    489                                                           resolution types
    490                                                           BCM_FIELD_PKT_RES_L2MCKNOW
    491                                                           and
    492                                                           BCM_FIELD_PKT_RES_L2MCUNKNOWN */
    493 #define BCM_FIELD_PKT_RES_TRILL_ANY         0x22       /* To match any Trill
    494                                                           packet. This option is
    495                                                           to combine the
    496                                                           resolution types
    497                                                           BCM_FIELD_PKT_RES_TRILLKNOWN
    498                                                           and
    499                                                           BCM_FIELD_PKT_RES_TRILLUNKNOWN */
    500 #define BCM_FIELD_PKT_RES_NIV_ANY           0x23       /* To match any NIV
    501                                                           packet. This option is
    502                                                           to combine resolution
    503                                                           types
    504                                                           BCM_FIELD_PKT_RES_NIVKNOWN
    505                                                           and
    506                                                           BCM_FIELD_PKT_RES_NIVUNKNOWN */
    507 #define BCM_FIELD_PKT_RES_MPLS_ANY          0x24       /* To match any FCOE
    508                                                           packet. This option is
    509                                                           to combine resolution
    510                                                           types
    511                                                           BCM_FIELD_PKT_RES_MPLSKNOWN,
    512                                                           BCM_FIELD_PKT_RES_MPLSL3KNOWN,
    513                                                           BCM_FIELD_PKT_RES_MPLSL2KNOWN,
    514                                                           BCM_FIELD_PKT_RES_MPLSUNKNOWN
    515                                                           and
    516                                                           BCM_FIELD_PKT_RES_MPLSMCKNOWN */
    517 #define BCM_FIELD_PKT_RES_MIM_ANY           0x25       /* To match any MIM
    518                                                           packet. This option is
    519                                                           to combine resolution
    520                                                           types
    521                                                           BCM_FIELD_PKT_RES_MIMKNOWN
    522                                                           and
    523                                                           BCM_FIELD_PKT_RES_MIMUNKNOWN */
    524 #define BCM_FIELD_PKT_RES_FCOE_ANY          0x26       /* To match any FCOE
    525                                                           packet. This option is
    526                                                           to combine resolution
    527                                                           types
    528                                                           BCM_FIELD_PKT_RES_FCOEKNOWN
    529                                                           and
    530                                                           BCM_FIELD_PKT_RES_FCOEUNKNOWN */
    531 #define BCM_FIELD_PKT_RES_L3_ANY            0x27       /* To match any L3
    532                                                           packet. This option is
    533                                                           to combine resolution
    534                                                           types
    535                                                           BCM_FIELD_PKT_RES_L3MCKNOWN,
    536                                                           BCM_FIELD_PKT_RES_L3MCUNKNOWN,
    537                                                           BCM_FIELD_PKT_RES_L3KNOWN
    538                                                           and
    539                                                           BCM_FIELD_PKT_RES_L3UNKNOWN */
    540 #define BCM_FIELD_PKT_RES_LAST              (BCM_FIELD_PKT_RES_L3_ANY) /* Must be >= highest
    541                                                           valid
    542                                                           BCM_FIELD_PKT_RES_* */
    543 
    544 /* 
    545  * Vlan Translation Lookup status values (for
    546  * bcm_field_qualify_VlanTranslationHit)
    547  */
    548 #define BCM_FIELD_VXLT_LOOKUP_STATUS_NO_HIT 0x0        /* No Hit */
    549 #define BCM_FIELD_VXLT_LOOKUP_STATUS_HIT    0x1        /* Hit(First or Second
    550                                                           Hit) */
    551 #define BCM_FIELD_VXLT_LOOKUP_STATUS_FIRST_HIT 0x2        /* First Hit */
    552 #define BCM_FIELD_VXLT_LOOKUP_STATUS_SECOND_HIT 0x4        /* Second Hit */
    553 
    554 /* 
    555  * Mpls Forwarding Label action values (for
    556  * bcm_field_qualify_MplsForwardingLabelAction)
    557  */
    558 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_INVALID 0x0        /* Invalid */
    559 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_PHP 0x2        /* PHP */
    560 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_SWAP 0x3        /* SWAP the MPLS label */
    561 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP 0x4        /* POP the MPLS label.
    562                                                           This action is valid
    563                                                           for MPLS scenarios
    564                                                           which supports more
    565                                                           than 3 label lookups
    566                                                           through loopback. This
    567                                                           was added in TR3 which
    568                                                           supports upto 6 label
    569                                                           lookup. So 3 labels
    570                                                           can be POPed in first
    571                                                           pass and using this
    572                                                           action encoding in
    573                                                           IFP, we can catch such
    574                                                           packets. But for other
    575                                                           devices which supports
    576                                                           only 2 or 3 label
    577                                                           lookups, this encoding
    578                                                           is not valid. */
    579 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_L2_VPN 0x5        /* POP the MPLS label and
    580                                                           use L2 VPN */
    581 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_L3_VPN 0x6        /* POP the MPLS label and
    582                                                           use L3 VPN */
    583 #define BCM_FIELD_MPLS_FORWARDING_LABEL_ACTION_POP_USE_ENTROPY 0x7        /* POP the MPLS label and
    584                                                           use Entropy */
    585 
    586 /* FibreChanZoneCheck values (for bcm_field_qualify_FibreChanZoneCheck) */
    587 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_NOT_DONE 0x0        /* Zone Check Did Not
    588                                                           Take Place */
    589 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_ALLOW 0x1        /* Allow + Hit */
    590 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_MISS 0x2        /* Miss */
    591 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_DENY 0x3        /* Deny + Hit */
    592 
    593 /* Module header opcodes (for bcm_field_qualify_MHOpcode). */
    594 #define BCM_FIELD_MHOPCODE_CONTROL          0          
    595 #define BCM_FIELD_MHOPCODE_UNICAST          1          
    596 #define BCM_FIELD_MHOPCODE_BROADCAST_DLF    2          
    597 #define BCM_FIELD_MHOPCODE_MULTICAST        3          
    598 #define BCM_FIELD_MHOPCODE_IPMULTICAST      4          
    599 
    600 /* User-defined field maximums. */
    601 #define BCM_FIELD_USER_MAX_UDF_NUM  1          /* UDF0 or UDF1. */
    602 #define BCM_FIELD_USER_MAX_USER_NUM 3          /* Valid range: 0..3 */
    603 #define BCM_FIELD_USER_NUM_UDFS     277        
    604 #define BCM_FIELD_USER_FIELD_SIZE   4          /* Bytes per user_num. */
    605 #define BCM_FIELD_USER_MAX_LENGTH   (1 << 5)   /* Number of bits. */
    606 
    607 /* Meter select parameters. */
    608 #define BCM_FIELD_METER_PEAK        1          
    609 #define BCM_FIELD_METER_COMMITTED   2          
    610 
    611 /* Metering modes for bcmFieldActionMeterConfig param0. */
    612 #define BCM_FIELD_METER_MODE_DEFAULT        0x0        
    613 #define BCM_FIELD_METER_MODE_FLOW           0x1        
    614 #define BCM_FIELD_METER_MODE_trTCM_COLOR_BLIND 0x2        
    615 #define BCM_FIELD_METER_MODE_trTCM_COLOR_AWARE 0x3        
    616 #define BCM_FIELD_METER_MODE_srTCM_COLOR_BLIND 0x6        
    617 #define BCM_FIELD_METER_MODE_srTCM_COLOR_AWARE 0x7        
    618 
    619 /* Policy options for bcmFieldActionPrioPktNew param1. */
    620 #define BCM_FIELD_SPCP_MARK_MAPPED          0x01       
    621 #define BCM_FIELD_SPCP_MARK_USE_INNER_PCP   0x02       
    622 #define BCM_FIELD_SPCP_MARK_USE_OUTER_PCP   0x04       
    623 #define BCM_FIELD_SPCP_MARK_USE_PORT_DEFAULT 0x08       
    624 #define BCM_FIELD_SPCP_MARK_MASK            0x0f       
    625 #define BCM_FIELD_CPCP_MARK_MAPPED          0x10       
    626 #define BCM_FIELD_CPCP_MARK_USE_INNER_PCP   0x20       
    627 #define BCM_FIELD_CPCP_MARK_USE_OUTER_PCP   0x40       
    628 #define BCM_FIELD_CPCP_MARK_USE_PORT_DEFAULT 0x80       
    629 #define BCM_FIELD_CPCP_MARK_MASK            0xf0       
    630 
    631 /* 
    632  * Policy options for bcmFieldActionInnerVlanNew and
    633  * bcmFieldActionOuterVlanNew param1.
    634  */
    635 #define BCM_FIELD_TAG_AS_RECEIVED   0x01       
    636 #define BCM_FIELD_TAG_AS_NORMALIZED 0x02       
    637 #define BCM_FIELD_TAG_COPY          0x04       
    638 #define BCM_FIELD_TAG_REMOVE        0x08       
    639 #define BCM_FIELD_TAG_REPLACE       0x10       
    640 
    641 /* 
    642  * Counter pair modes for bcmFieldActionUpdateCounter
    643  * 
    644  * Specifies increment mode for upper (counter_num=1) and lower
    645  * (counter_num=0) counter in the pair. For example: GREEN_YELLOW would
    646  * increment the upper counter for green packets and the lower counter
    647  * for yellow packets.
    648  * 
    649  * BCM_FIELD_COUNTER_MODE_BYTES can be ORd with any of the other values
    650  * to make the counter count bytes instead of packets.
    651  */
    652 #define BCM_FIELD_COUNTER_MODE_NO_NO        0x0000     
    653 #define BCM_FIELD_COUNTER_MODE_NO_YES       0x0001     
    654 #define BCM_FIELD_COUNTER_MODE_YES_NO       0x0002     
    655 #define BCM_FIELD_COUNTER_MODE_RED_NOTRED   0x0003     
    656 #define BCM_FIELD_COUNTER_MODE_GREEN_NOTGREEN 0x0004     
    657 #define BCM_FIELD_COUNTER_MODE_GREEN_RED    0x0005     
    658 #define BCM_FIELD_COUNTER_MODE_GREEN_YELLOW 0x0006     
    659 #define BCM_FIELD_COUNTER_MODE_RED_YELLOW   0x0007     
    660 #define BCM_FIELD_COUNTER_MODE_BYTES_PACKETS 0x0008     /* Upper counter is
    661                                                           bytes; lower counter
    662                                                           is packets */
    663 #define BCM_FIELD_COUNTER_MODE_GREEN        0x0010     
    664 #define BCM_FIELD_COUNTER_MODE_YELLOW       0x0020     
    665 #define BCM_FIELD_COUNTER_MODE_RED          0x0040     
    666 #define BCM_FIELD_COUNTER_MODE_ALL          0x0070     
    667 #define BCM_FIELD_COUNTER_MODE_PACKETS      0x0000     
    668 #define BCM_FIELD_COUNTER_MODE_BYTES        0x0100     
    669 #define BCM_FIELD_COUNTER_MODE_DEFAULT      BCM_FIELD_COUNTER_MODE_NO_YES 
    670 
    671 /* Redirect ECMP hash key selection. */
    672 #define BCM_FIELD_MULTIPATH_HASH_DISABLE    0x0        
    673 #define BCM_FIELD_MULTIPATH_HASH_DIP        0x1        
    674 #define BCM_FIELD_MULTIPATH_HASH_SIP        0x2        
    675 #define BCM_FIELD_MULTIPATH_HASH_SIP_DIP    0x3        
    676 #define BCM_FIELD_MULTIPATH_HASH_DST_SRC_L4_DIP_SIP 0x4        
    677 #define BCM_FIELD_MULTIPATH_HASH_SRC_DST_L4_SIP_DIP 0x5        
    678 #define BCM_FIELD_MULTIPATH_HASH_SRC_L4_SIP 0x6        
    679 #define BCM_FIELD_MULTIPATH_HASH_DST_L4_DIP 0x7        
    680 
    681 /* Filter types for bcmFieldActionFilters. */
    682 #define BCM_FIELD_FILTER_LAG            0x1        /* LAG Filter overrides the
    683                                                       rule */
    684 #define BCM_FIELD_FILTER_TAGGED         0x2        /* Tag Framing Filter
    685                                                       overrides the rule */
    686 #define BCM_FIELD_FILTER_PORT_MASK      0x4        /* Port Mask Filter overrides
    687                                                       the rule */
    688 #define BCM_FIELD_FILTER_STP            0x8        /* STP Filter overrides the
    689                                                       rule */
    690 #define BCM_FIELD_FILTER_EAP            0x10       /* EAP Filter overrides the
    691                                                       rule */
    692 #define BCM_FIELD_FILTER_INGRESS_VLAN   0x20       /* Ingress Vlan Filter
    693                                                       overrides the rule */
    694 #define BCM_FIELD_FILTER_EGRESS_VLAN    0x40       /* Egress Vlan Filter
    695                                                       overrides the rule */
    696 #define BCM_FIELD_FILTER_SA             0x80       /* Source address Filter
    697                                                       overrides the rule */
    698 #define BCM_FIELD_FILTER_SA_DISABLED    0x100      /* Disable SA filtering */
    699 #define BCM_FIELD_FILTER_BYPASS_ALL     0x200      /* Bypass all filtering */
    700 #define BCM_FIELD_FILTER_ALL            0x3ff      
    701 
    702 /* Policer use options for bcmFieldActionUsePolicerResult param0. */
    703 #define BCM_FIELD_USE_POLICER_RESULT_INGRESS 0x01       /* Use policer result on
    704                                                           ingress */
    705 #define BCM_FIELD_USE_POLICER_RESULT_EGRESS 0x02       /* Use policer result on
    706                                                           egress */
    707 
    708 /* 
    709  * Global policer selection flag.
    710  * 
    711  * If policer ID passed to (bcm_field_entry_policer_attach) API
    712  * corresponds to global meters, below flag can be used to configure
    713  * highest priority to lookup table policer with respect to the priority
    714  * of the policers in other tables.
    715  */
    716 #define BCM_FIELD_POLICER_GLOBAL_METER_USE_STAGE_LOOKUP_ACTION 0x01       /* Use lookup stage
    717                                                           policer */
    718 
    719 /* Flags for bcm_field_qualify_HiGigDoNotFlags. */
    720 #define BCM_FIELD_HIGIG_DONOT_MODIFY    0x1        /* Packet should be sent to
    721                                                       the destination port
    722                                                       unmodified. This flag can
    723                                                       be used only for Egress
    724                                                       packet modification on
    725                                                       Virtual Ports and is not
    726                                                       applicable to Offload
    727                                                       Engines. */
    728 #define BCM_FIELD_HIGIG_DONOT_LEARN     0x2        /* Do not perform MAC
    729                                                       learning. */
    730 
    731 /* Flags for bcmFieldQualifyHiGigOffloadEngineVxltStatus. */
    732 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_NOT_ATTEMPTED 0x0        /* VLAN Translation was
    733                                                           not attempted on this
    734                                                           packet. */
    735 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_NOT_DONE 0x1        /* VLAN Translation was
    736                                                           allowed by the
    737                                                           redirect rule, but
    738                                                           there was no
    739                                                           translation to be done
    740                                                           i.e. no vxt-related
    741                                                           packet modifications
    742                                                           were done */
    743 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_VXLT_DONE 0x2        /* VLAN translation was
    744                                                           allowed by the
    745                                                           redirect rule, and
    746                                                           VLAN translation was
    747                                                           done. */
    748 
    749 /* Flags for bcmFieldQualifyHiGigOffloadEngineDeferredFlags. */
    750 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_DROP 0x01       /* Defer Drop Action. */
    751 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_CHANGE_PKT_PRIORITY 0x02       /* Defer Change in Packet
    752                                                           Priority. */
    753 #define BCM_FIELD_HIGIG_OFFLOAD_ENGINE_DEFERRED_CHANGE_DSCP 0x04       /* Defer Change in DSCP
    754                                                           value. */
    755 
    756 /* Flags for bcmFieldQualifyHiGigLabelType. */
    757 #define BCM_FIELD_HIGIG_LABEL_TYPE_HIGIGPLUS_OVERLAY 0x00       /* Original HiGig+
    758                                                           Overlay. */
    759 #define BCM_FIELD_HIGIG_LABEL_TYPE_INGRESS_MODPORT 0x01       /* The module ID and port
    760                                                           number through which
    761                                                           the packet originally
    762                                                           entered the system. */
    763 #define BCM_FIELD_HIGIG_LABEL_TYPE_MIRROR_CLASSIFICATION_TAG 0x02       /* An opaque field
    764                                                           generated by the ACL
    765                                                           that triggers this
    766                                                           packet. Can be used to
    767                                                           assist the MTP in
    768                                                           packet classification. */
    769 #define BCM_FIELD_HIGIG_LABEL_TYPE_QTAG     0x03       /* QTAG (Used to pass
    770                                                           QTAG when usage using
    771                                                           EH is not desirable) */
    772 
    773 /* 
    774  * Flags for bcmFieldQualifyHiGigPreserveFlags and
    775  * bcmFieldQualifyHiGigVpPreserveFlags.
    776  */
    777 #define BCM_FIELD_HIGIG_PRESERVE_DSCP   0x1        /* Do not change DSCP of the
    778                                                       outermost IP header. */
    779 #define BCM_FIELD_HIGIG_PRESERVE_DOT1P  0x2        /* Do not change 802.1p/CFI
    780                                                       bits of the outermost L2
    781                                                       header. */
    782 
    783 /* Flags for bcmFieldQualifyHiGigMirrorOrSwitchPkt. */
    784 #define BCM_FIELD_HIGIG_MIRROR  0x01       /* Mirror and Switch. */
    785 
    786 /* 
    787  * Various header format extension values for qualification /
    788  * preselection
    789  */
    790 typedef enum bcm_field_header_format_extension_e {
    791     bcmFieldHeaderFormatExtensionDontCare = 0, /* Select packets with any header format
    792                                            extension */
    793     bcmFieldHeaderFormatExtensionFtmh = 1, /* Select only packets which are FTMH */
    794     bcmFieldHeaderFormatExtensionIpUdpGtp1 = 2, /* Select only packets which UDP/IP and
    795                                            GPRS Tunneling Protocol (GTP1) */
    796     bcmFieldHeaderFormatExtensionIpUdpGtp2 = 3, /* Select only packets which UDP/IP and
    797                                            GPRS Tunneling Protocol (GTP2) */
    798     bcmFieldHeaderFormatExtensionFcoe = 4, /* Select only packets which are Fiber
    799                                            Channel Over Ethernet */
    800     bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3 = 5, /* 'Non_L4' stands for IPV4 which is
    801                                            neither UDP nor TCP. Hit is marked
    802                                            when parser speculates that,
    803                                            following MPLS, the next protocol is
    804                                            IPV4 (on the third header) but not L4 */
    805     bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3 = 6, /* 'Non_L4' stands for IPV6 which is
    806                                            neither UDP nor TCP. Hit is marked
    807                                            when parser speculates that,
    808                                            following MPLS, the next protocol is
    809                                            IPV6 (on the third header) but not L4 */
    810     bcmFieldHeaderFormatExtensionMplsL4IPV4isH3 = 7, /* 'L4' stands for UDP/TCP. Hit is
    811                                            marked when parser speculates that,
    812                                            following MPLS, the next protocol is
    813                                            L4 of IPV4 (on the third header) */
    814     bcmFieldHeaderFormatExtensionMplsL4IPV6isH3 = 8, /* 'L4' stands for UDP/TCP. Hit is
    815                                            marked when parser speculates that,
    816                                            following MPLS, the next protocol is
    817                                            L4 of IPV6 (on the third header) */
    818     bcmFieldHeaderFormatExtensionMplsETHisH3 = 9, /* Hit is marked when parser speculates
    819                                            that, following MPLS, the next
    820                                            protocol is Ethernet (on the third
    821                                            header) */
    822     bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH4 = 10, /* 'Non_L4' stands for IPV4 which is
    823                                            neither UDP nor TCP. Hit is marked
    824                                            when parser speculates that,
    825                                            following MPLS, the next protocol is
    826                                            Ethernet followed by IPV4 (on the
    827                                            fourth header) but not L4 */
    828     bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH4 = 11, /* 'Non_L4' stands for IPV4 which is
    829                                            neither UDP nor TCP. Hit is marked
    830                                            when parser speculates that,
    831                                            following MPLS, the next protocol is
    832                                            Ethernet followed by IPV6 (on the
    833                                            fourth header) but not L4 */
    834     bcmFieldHeaderFormatExtensionMplsL4IPV4isH4 = 12, /* 'L4' stands for UDP/TCP. Hit is
    835                                            marked when parser speculates that,
    836                                            following MPLS, the next protocol is
    837                                            Ethernet followed by L4 of IPV4 (on
    838                                            the fourth header) */
    839     bcmFieldHeaderFormatExtensionMplsL4IPV6isH4 = 13, /* 'L4' stands for UDP/TCP. Hit is
    840                                            marked when parser speculates that,
    841                                            following MPLS, the next protocol is
    842                                            Ethernet followed by L4 of IPV6 (on
    843                                            the fourth header) */
    844     bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsAny = 14, /* Group combining
    845                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3
    846                                            &
    847                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH4 */
    848     bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsAny = 15, /* Group combining
    849                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3
    850                                            &
    851                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH4 */
    852     bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH3 = 16, /* Group combining
    853                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH3
    854                                            &
    855                                            bcmFieldHeaderFormatExtensionMplsL4IPV4isH3 */
    856     bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH3 = 17, /* Group combining
    857                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH3
    858                                            &
    859                                            bcmFieldHeaderFormatExtensionMplsL4IPV6isH3 */
    860     bcmFieldHeaderFormatExtensionMplsNonL4IPV4isH5 = 18, /* 'Non_L4' stands for IPV4 which is
    861                                            neither UDP nor TCP. Hit is marked
    862                                            when parser speculates that,
    863                                            following MPLS, the next protocol is
    864                                            Ethernet followed by IPV4 (on the
    865                                            fifth header) but not L4 */
    866     bcmFieldHeaderFormatExtensionMplsNonL4IPV6isH5 = 19, /* 'Non_L4' stands for IPV4 which is
    867                                            neither UDP nor TCP. Hit is marked
    868                                            when parser speculates that,
    869                                            following MPLS, the next protocol is
    870                                            Ethernet followed by IPV6 (on the
    871                                            fifth header) but not L4 */
    872     bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH5 = 20, /* Group combining
    873                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH5
    874                                            &
    875                                            bcmFieldHeaderFormatExtensionMplsL4IPV4isH5 */
    876     bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH5 = 21, /* Group combining
    877                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH5
    878                                            &
    879                                            bcmFieldHeaderFormatExtensionMplsL4IPV6isH5 */
    880     bcmFieldHeaderFormatExtensionMplsETHisH4 = 22, /* Hit is marked when parser speculates
    881                                            that, following MPLS, the next
    882                                            protocol is Ethernet (on the fourth
    883                                            header) */
    884     bcmFieldHeaderFormatExtensionMplsAnyEthIsH3H4 = 23, /* Group combining
    885                                            bcmFieldHeaderFormatExtensionMplsETHisH3
    886                                            &
    887                                            bcmFieldHeaderFormatExtensionMplsETHisH4 */
    888     bcmFieldHeaderFormatExtensionMplsAnyL4IPV4IsH4 = 24, /* Group combining
    889                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV4IsH4
    890                                            &
    891                                            bcmFieldHeaderFormatExtensionMplsL4IPV4isH4 */
    892     bcmFieldHeaderFormatExtensionMplsAnyL4IPV6IsH4 = 25, /* Group combining
    893                                            bcmFieldHeaderFormatExtensionMplsNonL4IPV6IsH4
    894                                            &
    895                                            bcmFieldHeaderFormatExtensionMplsL4IPV6isH4 */
    896     bcmFieldHeaderFormatExtensionMplsL4IPV4isH5 = 26, /* 'L4' stands for UDP/TCP. Hit is
    897                                            marked when parser speculates that,
    898                                            following MPLS, the next protocol is
    899                                            Ethernet followed by L4 of IPV4 (on
    900                                            the fifth header). */
    901     bcmFieldHeaderFormatExtensionMplsL4IPV6isH5 = 27, /* 'L4' stands for UDP/TCP. Hit is
    902                                            marked when parser speculates that,
    903                                            following MPLS, the next protocol is
    904                                            Ethernet followed by L4 of IPV6 (on
    905                                            the fifth header). */
    906     bcmFieldHeaderFormatExtensionCount = 28 /* Always Last. Not a usable value. */
    907 } bcm_field_header_format_extension_t;
    908 
    909 #define BCM_FIELD_HEADER_FORMAT_EXTENSION \
    910 { \
    911     "DontCare", \
    912     "Ftmh", \
    913     "IpUdpGtp1", \
    914     "IpUdpGtp2", \
    915     "Fcoe", \
    916     "MplsNonL4IPV4IsH3", \
    917     "MplsNonL4IPV6IsH3", \
    918     "MplsL4IPV4isH3", \
    919     "MplsL4IPV6isH3", \
    920     "MplsETHisH3", \
    921     "MplsNonL4IPV4isH4", \
    922     "MplsNonL4IPV6isH4", \
    923     "MplsL4IPV4isH4", \
    924     "MplsL4IPV6isH4", \
    925     "MplsNonL4IPV4IsAny", \
    926     "MplsNonL4IPV6IsAny", \
    927     "MplsAnyL4IPV4IsH3", \
    928     "MplsAnyL4IPV6IsH3", \
    929     "MplsNonL4IPV4isH5", \
    930     "MplsNonL4IPV6isH5", \
    931     "MplsAnyL4IPV4IsH5", \
    932     "MplsAnyL4IPV6IsH5", \
    933     "MplsETHisH4", \
    934     "MplsAnyEthIsH3H4", \
    935     "MplsAnyL4IPV4IsH4", \
    936     "MplsAnyL4IPV6IsH4", \
    937     "MplsL4IPV4isH5", \
    938     "MplsL4IPV6isH5"  \
    939 }
    940 
    941 /* Various packet header formats for qualification / preselection */
    942 typedef enum bcm_field_header_format_e {
    943     bcmFieldHeaderFormatL2 = 0,         /* L2 packet (headers = L2) */
    944     bcmFieldHeaderFormatIp4 = 1,        /* IPv4 packet (headers = L2, IPv4, L4) */
    945     bcmFieldHeaderFormatIp4AnyL2L3 = 2, /* Any IPv4 packet (headers = L2, IPv4,
    946                                            Any) */
    947     bcmFieldHeaderFormatIp6 = 3,        /* IPv6 packet (headers = L2, IPv6, L4) */
    948     bcmFieldHeaderFormatIp6AnyL2L3 = 4, /* Any IPv6 packet (headers = L2, IPv6,
    949                                            Any) */
    950     bcmFieldHeaderFormatMplsLabel1 = 5, /* MPLS packet with one label (headers =
    951                                            L2, MPLS (1 label), L4) */
    952     bcmFieldHeaderFormatMplsLabel1AnyL2L3 = 6, /* Any MPLS packet with one label
    953                                            (headers = L2, MPLS (1 label), Any) */
    954     bcmFieldHeaderFormatMplsLabel2 = 7, /* MPLS packet with two labels (headers
    955                                            = L2, MPLS (2 labels), L4) */
    956     bcmFieldHeaderFormatMplsLabel2AnyL2L3 = 8, /* Any MPLS packet with two labels
    957                                            (headers = L2, MPLS (2 labels), Any) */
    958     bcmFieldHeaderFormatMplsLabel3 = 9, /* MPLS packet with three labels
    959                                            (headers = L2, MPLS (3 labels), L4) */
    960     bcmFieldHeaderFormatMplsLabel3AnyL2L3 = 10, /* Any MPLS packet with three labels
    961                                            (headers = L2, MPLS (3 labels), Any) */
    962     bcmFieldHeaderFormatTrill = 11,     /* Trill packet (headers = L2, Trill) */
    963     bcmFieldHeaderFormatEthEth = 12,    /* L2 over L2 packet (headers = L2, L2) */
    964     bcmFieldHeaderFormatEthTrillEth = 13, /* L2 over Trill packet (headers = L2,
    965                                            Trill, L2) */
    966     bcmFieldHeaderFormatIp4Ip4 = 14,    /* IPv4 over IPv4 packet (headers = L2,
    967                                            IPv4, IPv4) */
    968     bcmFieldHeaderFormatIp6Ip4 = 15,    /* IPv6 over IPv4 packet (headers = L2,
    969                                            IPv4, IPv6) */
    970     bcmFieldHeaderFormatIp4MplsLabel1 = 16, /* IPv4 over MPLS with one label
    971                                            (headers = L2, MPLS (one label),
    972                                            IPv4) */
    973     bcmFieldHeaderFormatIp4MplsLabel2 = 17, /* IPv4 over MPLS with two labels
    974                                            (headers = L2, MPLS (two labels),
    975                                            IPv4) */
    976     bcmFieldHeaderFormatIp4MplsLabel3 = 18, /* IPv4 over MPLS with three labels
    977                                            (headers = L2, MPLS (three labels),
    978                                            IPv4) */
    979     bcmFieldHeaderFormatIp6MplsLabel1 = 19, /* IPv6 over MPLS with one label
    980                                            (headers = L2, MPLS (one label),
    981                                            IPv6) */
    982     bcmFieldHeaderFormatIp6MplsLabel2 = 20, /* IPv6 over MPLS with two labels
    983                                            (headers = L2, MPLS (two labels),
    984                                            IPv6) */
    985     bcmFieldHeaderFormatIp6MplsLabel3 = 21, /* IPv6 over MPLS with three labels
    986                                            (headers = L2, MPLS (three labels),
    987                                            IPv6) */
    988     bcmFieldHeaderFormatEthMplsLabel1 = 22, /* L2 over MPLS with one label (headers
    989                                            = L2, MPLS (one label), L2) */
    990     bcmFieldHeaderFormatEthMplsLabel2 = 23, /* L2 over MPLS with two labels (headers
    991                                            = L2, MPLS (two labels), L2) */
    992     bcmFieldHeaderFormatEthMplsLabel3 = 24, /* L2 over MPLS with three labels
    993                                            (headers = L2, MPLS (three labels),
    994                                            L2) */
    995     bcmFieldHeaderFormatIp4EthMplsLabel1 = 25, /* IPv4 over L2 over MPLS with one label
    996                                            (headers = L2, MPLS (one label), L2,
    997                                            IPv4) */
    998     bcmFieldHeaderFormatIp4EthMplsLabel2 = 26, /* IPv4 over L2 over MPLS with two
    999                                            labels (headers = L2, MPLS (two
   1000                                            labels), L2, IPv4) */
   1001     bcmFieldHeaderFormatIp4EthMplsLabel3 = 27, /* IPv4 over L2 over MPLS with three
   1002                                            labels (headers = L2, MPLS (three
   1003                                            labels), L2, IPv4) */
   1004     bcmFieldHeaderFormatTrafficManagement = 28, /* Traffic Management packet injected by
   1005                                            an external Packet Processor */
   1006     bcmFieldHeaderFormatEthIp4Eth = 29, /* L2 over IPv4 over L2 packet (headers
   1007                                            = L2, IPv4, L2) */
   1008     bcmFieldHeaderFormatFCoE = 30,      /* FCoE packet */
   1009     bcmFieldHeaderFormatMplsAnyLabelAnyL2L3 = 31, /* Any Number of MPLS labels 1/2/3 and
   1010                                            any L2/L3 */
   1011     bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV4IsH3 = 32, /* 'Non_L4' stands for IPV4 which is
   1012                                            neither UDP nor TCP. Hit is marked
   1013                                            when parser detected that, after MPLS
   1014                                            termination, the next protocol is
   1015                                            IPV4 (on the third header) but not
   1016                                            L4. */
   1017     bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV6IsH3 = 33, /* 'Non_L4' stands for IPV6 which is
   1018                                            neither UDP nor TCP. Hit is marked
   1019                                            when parser detected that, after MPLS
   1020                                            termination, the next protocol is
   1021                                            IPV6 (on the third header) but not
   1022                                            L4. */
   1023     bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV4IsH3 = 34, /* 'L4' stands for UDP/TCP. Hit is
   1024                                            marked when parser detected that,
   1025                                            after MPLS termination, the next
   1026                                            protocol is L4 of IPV4 (on the third
   1027                                            header). */
   1028     bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV6IsH3 = 35, /* 'L4' stands for UDP/TCP. Hit is
   1029                                            marked when parser detected that,
   1030                                            after MPLS termination, the next
   1031                                            protocol is L4 of IPV6 (on the third
   1032                                            header). */
   1033     bcmFieldHeaderFormatAfterTunnelTerminatedEthIsH3 = 36, /* Hit is marked when parser detected
   1034                                            that, after MPLS termination, the
   1035                                            next protocol Ethernet (on the third
   1036                                            header). */
   1037     bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV4IsH4ETHisH3 = 37, /* 'Non_L4' stands for IPV4 which is
   1038                                            neither UDP nor TCP. Hit is marked
   1039                                            when parser detected that, after MPLS
   1040                                            termination, the next protocol is
   1041                                            Ethernet followed by IPV4 (on the
   1042                                            fourth header) but not L4. */
   1043     bcmFieldHeaderFormatAfterTunnelTerminatedNonL4IPV6IsH4ETHisH3 = 38, /* 'Non_L4' stands for IPV4 which is
   1044                                            neither UDP nor TCP. Hit is marked
   1045                                            when parser detected that, after MPLS
   1046                                            termination, the next protocol is
   1047                                            Ethernet followed by IPV6 (on the
   1048                                            fourth header) but not L4. */
   1049     bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV4IsH4ETHisH3 = 39, /* 'L4' stands for UDP/TCP. Hit is
   1050                                            marked when parser detected that,
   1051                                            after MPLS termination, the next
   1052                                            protocol is Ethernet followed by L4
   1053                                            of IPV4 (on the fourth header). */
   1054     bcmFieldHeaderFormatAfterTunnelTerminatedL4IPV6IsH4ETHisH3 = 40, /* 'L4' stands for UDP/TCP. Hit is
   1055                                            marked when parser detected that,
   1056                                            after MPLS termination, the next
   1057                                            protocol is Ethernet followed by L4
   1058                                            of IPV6 (on the fourth header). */
   1059     bcmFieldHeaderFormatMpls = 41,      /* MPLS packet (Packet containing MPLS) */
   1060     bcmFieldHeaderFormatIp4Ip6 = 42,    /* IPv4 over IPv6 packet (headers = L2,
   1061                                            IPv4, IPv6) */
   1062     bcmFieldHeaderFormatIp6Ip6 = 43,    /* IPv6 over IPv6 packet (headers = L2,
   1063                                            IPv6, IPv6) */
   1064     bcmFieldHeaderFormatFCoENoEncap = 44, /* FCoE packet with standard header only
   1065                                            (no extended header) */
   1066     bcmFieldHeaderFormatCount = 45      /* Always Last. Not a usable value. */
   1067 } bcm_field_header_format_t;
   1068 
   1069 #define BCM_FIELD_HEADER_FORMAT \
   1070 { \
   1071     "L2", \
   1072     "Ip4", \
   1073     "Ip4AnyL2L3", \
   1074     "Ip6", \
   1075     "Ip6AnyL2L3", \
   1076     "MplsLabel1", \
   1077     "MplsLabel1AnyL2L3", \
   1078     "MplsLabel2", \
   1079     "MplsLabel2AnyL2L3", \
   1080     "MplsLabel3", \
   1081     "MplsLabel3AnyL2L3", \
   1082     "Trill", \
   1083     "EthEth", \
   1084     "EthTrillEth", \
   1085     "Ip4Ip4", \
   1086     "Ip6Ip4", \
   1087     "Ip4MplsLabel1", \
   1088     "Ip4MplsLabel2", \
   1089     "Ip4MplsLabel3", \
   1090     "Ip6MplsLabel1", \
   1091     "Ip6MplsLabel2", \
   1092     "Ip6MplsLabel3", \
   1093     "EthMplsLabel1", \
   1094     "EthMplsLabel2", \
   1095     "EthMplsLabel3", \
   1096     "Ip4EthMplsLabel1", \
   1097     "Ip4EthMplsLabel2", \
   1098     "Ip4EthMplsLabel3", \
   1099     "TrafficManagement", \
   1100     "EthIp4Eth", \
   1101     "FCoE", \
   1102     "MplsAnyLabelAnyL2L3", \
   1103     "AfterTunnelTerminatedNonL4IPV4IsH3", \
   1104     "AfterTunnelTerminatedNonL4IPV6IsH3", \
   1105     "AfterTunnelTerminatedL4IPV4IsH3", \
   1106     "AfterTunnelTerminatedL4IPV6IsH3", \
   1107     "AfterTunnelTerminatedEthIsH3", \
   1108     "AfterTunnelTerminatedNonL4IPV4IsH4ETHisH3", \
   1109     "AfterTunnelTerminatedNonL4IPV6IsH4ETHisH3", \
   1110     "AfterTunnelTerminatedL4IPV4IsH4ETHisH3", \
   1111     "AfterTunnelTerminatedL4IPV6IsH4ETHisH3", \
   1112     "Mpls", \
   1113     "Ip4Ip6", \
   1114     "Ip6Ip6", \
   1115     "FCoENoEncap"  \
   1116 }
   1117 
   1118 /* 
   1119  * Specifies a set of possible header formats for matching, for use with
   1120  * bcmFieldQualifyHeaderFormatSet.
   1121  */
   1122 typedef struct bcm_field_header_format_set_s {
   1123     SHR_BITDCL w[_SHR_BITDCLSIZE(bcmFieldHeaderFormatCount)]; 
   1124 } bcm_field_header_format_set_t;
   1125 
   1126 #define BCM_FIELD_HEADER_FORMAT_SET_INIT(hfset)  \
   1127     sal_memset(&(hfset), 0, sizeof(bcm_field_header_format_set_t)) 
   1128 
   1129 #define BCM_FIELD_HEADER_FORMAT_SET_ADD(hfset, hf)  SHR_BITSET(((hfset).w), (hf)) 
   1130 
   1131 #define BCM_FIELD_HEADER_FORMAT_SET_REMOVE(hfset, hf)  SHR_BITCLR(((hfset).w), (hf)) 
   1132 
   1133 #define BCM_FIELD_HEADER_FORMAT_SET_TEST(hfset, hf)  SHR_BITGET(((hfset).w), (hf)) 
   1134 
   1135 /* Opaque handle to a field action priority. */
   1136 typedef uint32 bcm_field_action_priority_t;
   1137 
   1138 /* 
   1139  * Structure to indicate selected FEM id, identifying it by array to
   1140  * clarify priority between FEMs abd FESes.
   1141  */
   1142 typedef struct bcm_field_array_n_position_s {
   1143     uint8 array_id;                 /* Index of the FES/FEM array in the stage. */
   1144     uint16 fem_position_in_array;   /* Position of FES/FEM (by FES/FEM ID)
   1145                                        within the FES/FEM array. */
   1146 } bcm_field_array_n_position_t;
   1147 
   1148 /* 
   1149  * Field Qualifiers
   1150  * 
   1151  * Field qualifiers are collected into qualifier sets (qsets), which are
   1152  * used to allocate field groups.
   1153  * 
   1154  * Note: These are in order of their bit width. Do not change the order
   1155  * or the field select code algorithm for wide-mode will get slower.
   1156  */
   1157 typedef enum bcm_field_qualify_e {
   1158     bcmFieldQualifySrcIp6 = 0,          /*  Source IPv6 Address. */
   1159     bcmFieldQualifyDstIp6 = 1,          /*  Destination IPv6 Address. */
   1160     bcmFieldQualifySrcIp6High = 2,      /*  Src. IPv6 Address (High/Upper 64
   1161                                            bits). */
   1162     bcmFieldQualifyDstIp6High = 3,      /*  Dest IPv6 Address (High/Upper 64
   1163                                            bits). */
   1164     bcmFieldQualifySrcIp6Low = 4,       /*  Src. IPv6 Address (Low/Lower 64
   1165                                            bits). */
   1166     bcmFieldQualifyDstIp6Low = 5,       /*  Dest IPv6 Address (Low/Lower 64
   1167                                            bits). */
   1168     bcmFieldQualifySrcMac = 6,          /*  Source L2 MAC Address. */
   1169     bcmFieldQualifyDstMac = 7,          /*  Destination L2 MAC Address. */
   1170     bcmFieldQualifySnap = 8,            /*  40: SNAP Header. */
   1171     bcmFieldQualifySrcIp = 9,           /*  Source IPv4 Address. */
   1172     bcmFieldQualifyDstIp = 10,          /*  Destination IPv4 Address. */
   1173     bcmFieldQualifyLlc = 11,            /*  24: LLC Header. */
   1174     bcmFieldQualifyInPort = 12,         /*  Single Input Port. */
   1175     bcmFieldQualifyInPorts = 13,        /*  Input Port Bitmap. */
   1176     bcmFieldQualifyOutPorts = 14,       /*  Output Port Bitmap. */
   1177     bcmFieldQualifyDrop = 15,           /*  Packet is flagged to be dropped . */
   1178     bcmFieldQualifyIp6FlowLabel = 16,   /*  IPv6 Flow Label. */
   1179     bcmFieldQualifyOuterVlan = 17,      /*  Outer VLAN. */
   1180     bcmFieldQualifyOuterVlanId = 18,    /*  Outer VLAN Id. */
   1181     bcmFieldQualifyOuterVlanPri = 19,   /*  Outer VLAN priority. */
   1182     bcmFieldQualifyOuterVlanCfi = 20,   /*  Outer VLAN Cfi. */
   1183     bcmFieldQualifyInnerVlan = 21,      /*  Inner VLAN (double-tagged pkts
   1184                                            only). */
   1185     bcmFieldQualifyInnerVlanId = 22,    /*  Inner VLAN Id. */
   1186     bcmFieldQualifyInnerVlanPri = 23,   /*  Inner VLAN priority. */
   1187     bcmFieldQualifyInnerVlanCfi = 24,   /*  Inner VLAN Cfi. */
   1188     bcmFieldQualifyLookupStatus = 25,   /*  DEPRECATED Lookup status
   1189                                            (BCM_FIELD_LOOKUP_xxx). */
   1190     bcmFieldQualifyRangeCheck = 26,     /*  TCP/UDP Port Range Check Results. */
   1191     bcmFieldQualifyL4PortRangeCheck = bcmFieldQualifyRangeCheck, /* TCP/UDP Port Range Check Results */
   1192     bcmFieldQualifyL4SrcPort = 27,      /*  TCP/UDP Source Port. */
   1193     bcmFieldQualifyL4DstPort = 28,      /*  TCP/UDP Destination Port. */
   1194     bcmFieldQualifyEtherType = 29,      /*  Ethernet Type. */
   1195     bcmFieldQualifyIpProtocol = 30,     /*  IP Protocol Field. */
   1196     bcmFieldQualifyIp6NextHeader = bcmFieldQualifyIpProtocol, /*  IPv6 Next Header/IP Protocol. */
   1197     bcmFieldQualifyDSCP = 31,           /*  Diffserv Code Point. */
   1198     bcmFieldQualifyTos = bcmFieldQualifyDSCP, /*  Tos - same as DSCP. */
   1199     bcmFieldQualifyIp6TrafficClass = bcmFieldQualifyDSCP, /*  IPv6 Traffic Class. */
   1200     bcmFieldQualifyTtl = 32,            /*  Time To Live/Hop Limit. */
   1201     bcmFieldQualifyIp6HopLimit = bcmFieldQualifyTtl, /*  IPv6 Hop Limit. */
   1202     bcmFieldQualifySrcModid = 33,       /*  Source Module ID (deprecated). */
   1203     bcmFieldQualifySrcPortTgid = 34,    /*  Source Port/Trunk Group ID
   1204                                            (deprecated). */
   1205     bcmFieldQualifySrcPort = 35,        /*  Source Module ID and Port . */
   1206     bcmFieldQualifySrcTrunk = 36,       /*  Source Trunk Group ID . */
   1207     bcmFieldQualifySrcTrunkMemberGport = 37, /*  Source Trunk Member Port . */
   1208     bcmFieldQualifyDstModid = 38,       /*  Destination Module ID (deprecated). */
   1209     bcmFieldQualifyDstPortTgid = 39,    /*  Dest Port/Trunk Group ID
   1210                                            (deprecated. */
   1211     bcmFieldQualifyDstPort = 40,        /*  Destination Module ID and Port . */
   1212     bcmFieldQualifyDstTrunk = 41,       /*  Destination Trunk Group ID . */
   1213     bcmFieldQualifyTcpControl = 42,     /*  TCP Control Flags. */
   1214     bcmFieldQualifyPacketRes = 43,      /*  Pkt resolution
   1215                                            (BCM_FIELD_PKT_RES_xxx). */
   1216     bcmFieldQualifyPacketFormat = 44,   /*  DEPRECATED Packet Format
   1217                                            (BCM_FIELD_PKT_FMT_xxx). */
   1218     bcmFieldQualifySrcClassL2 = 45,     /*  Source Class based on L2 lookup
   1219                                            result. */
   1220     bcmFieldQualifySrcClassL3 = 46,     /*  Source Class based on L3 lookup
   1221                                            result. */
   1222     bcmFieldQualifySrcClassField = 47,  /*  Source Class based on
   1223                                            bcmFieldStageLookup result. */
   1224     bcmFieldQualifyDstClassL2 = 48,     /*  Destination Class based on L2 lookup
   1225                                            result. */
   1226     bcmFieldQualifyDstClassL3 = 49,     /*  Destination Class based on L3 lookup
   1227                                            result. */
   1228     bcmFieldQualifyDstClassField = 50,  /*  Destination Class based on
   1229                                            bcmFieldStageLookup result. */
   1230     bcmFieldQualifyIpInfo = 51,         /*  IP Information (BCM_FIELD_IP_xxx). */
   1231     bcmFieldQualifyIpProtocolCommon = 52, /*  3: Common IP protocols. */
   1232     bcmFieldQualifyMHOpcode = 53,       /*  Module Header Opcode. */
   1233     bcmFieldQualifyIpFlags = 54,        /*  IPv4 Flags. */
   1234     bcmFieldQualifyInnerTpid = 55,      /*  2: Inner VLAN TPID. */
   1235     bcmFieldQualifyOuterTpid = 56,      /*  2: Outer VLAN TPID. */
   1236     bcmFieldQualifyInnerIpType = 57,    /*  Inner ip header IP Type
   1237                                            (bcmFieldIpTypeXXX). */
   1238     bcmFieldQualifyTunnelType = 58,     /*  TunnelType (bcmFieldTunnelXXX). */
   1239     bcmFieldQualifyLoopbackType = 59,   /*  LoopbackType
   1240                                            (bcmFieldLoopbackTypeXXX). */
   1241     bcmFieldQualifyLoopback = 60,       /*  Packets forwarded through loopback
   1242                                            interface. */
   1243     bcmFieldQualifyIpType = 61,         /*  IP Type (bcmFieldIpTypeXXX). */
   1244     bcmFieldQualifyForwardingType = 62, /*  Packet forwarding type
   1245                                            (bcmFieldForwardingTypeXXX). */
   1246     bcmFieldQualifyDecap = 63,          /*  Decapsulation occurred. */
   1247     bcmFieldQualifyHiGig = 64,          /*  HiGig packet. */
   1248     bcmFieldQualifyHiGigProxy = 65,     /*  HiGig proxy processing is enabled. */
   1249     bcmFieldQualifyDstHiGig = 66,       /*  Packet being forwarded to higig
   1250                                            port. */
   1251     bcmFieldQualifyStage = 67,          /*  Field Processor pipeline stage. */
   1252     bcmFieldQualifyStageIngress = 68,   /*  Field Processor pipeline ingress
   1253                                            stage. */
   1254     bcmFieldQualifyStageIngressSecurity = 69, /*  Field Processor ingress security
   1255                                            stage. */
   1256     bcmFieldQualifyStageIngressQoS = 70, /*  Field Processor ingress QOS stage. */
   1257     bcmFieldQualifyStageLookup = 71,    /*  Field Processor pipeline lookup
   1258                                            stage. */
   1259     bcmFieldQualifyStageEgress = 72,    /*  Field Processor pipeline egress
   1260                                            stage. */
   1261     bcmFieldQualifyStageEgressSecurity = 73, /*  Field Processor egress security
   1262                                            stage. */
   1263     bcmFieldQualifyStageExternal = 74,  /*  Field Processor Rules in External
   1264                                            slice. */
   1265     bcmFieldQualifyDeprecated75 = 75,   /* Deprecated 75 */
   1266     bcmFieldQualifyDeprecated76 = 76,   /* Deprecated 76 */
   1267     bcmFieldQualifyTcpSequenceZero = 77, /*  Sequence number = 0. */
   1268     bcmFieldQualifyTcpHeaderSize = 78,  /*  TCP Header Size. */
   1269     bcmFieldQualifyInterfaceClassL2 = 79, /*  Vlan Class Id. */
   1270     bcmFieldQualifyInterfaceClassL3 = 80, /*  L3 Interface Class Id. */
   1271     bcmFieldQualifyInterfaceClassPort = 81, /*  Port Class Id. */
   1272     bcmFieldQualifyL3Routable = 82,     /*  L3 routable bit for FB2. */
   1273     bcmFieldQualifyIpFrag = 83,         /*  IP Fragment info. */
   1274     bcmFieldQualifyVrf = 84,            /*  VRF Id for FB 2. */
   1275     bcmFieldQualifyL3Ingress = 85,      /*  L3 ingress interface. */
   1276     bcmFieldQualifyOutPort = 86,        /*  Single Output Port. */
   1277     bcmFieldQualifyIp4 = 87,            /*  Qualify IpType == IPv4Any. */
   1278     bcmFieldQualifyIp6 = 88,            /*  Qualify IpType == Ipv6Any. */
   1279     bcmFieldQualifyL2Format = 89,       /*  Qualify on L2 header format. */
   1280     bcmFieldQualifyVlanFormat = 90,     /*  Qualify on vlan tag format. */
   1281     bcmFieldQualifyTranslatedVlanFormat = 91, /*  Qualify on translated vlan tag
   1282                                            format. */
   1283     bcmFieldQualifyExtensionHeaderType = 92, /*  Qualify on  Next Header Field in
   1284                                            First Extension Header. */
   1285     bcmFieldQualifyExtensionHeaderSubCode = 93, /*  Qualify on First byte after
   1286                                            extension header length field. */
   1287     bcmFieldQualifyExtensionHeader2Type = 94, /*  Qualify on  Next Header Field in
   1288                                            Second Extension Header. */
   1289     bcmFieldQualifyL4Ports = 95,        /*  Four bytes after L3 header are
   1290                                            available. */
   1291     bcmFieldQualifyMirrorCopy = 96,     /*  Qualify mirrored traffic. */
   1292     bcmFieldQualifyTunnelTerminated = 97, /*  Qualify tunnel terminated traffic. */
   1293     bcmFieldQualifyMplsTerminated = 98, /*  Qualify mpls terminated traffic. */
   1294     bcmFieldQualifyInnerSrcIp = 99,     /*  Inner ip header source IPv4 Address. */
   1295     bcmFieldQualifyInnerDstIp = 100,    /*  Inner ip header destination IPv4
   1296                                            Address. */
   1297     bcmFieldQualifyInnerSrcIp6 = 101,   /*  Inner ip header source IPv6 Address. */
   1298     bcmFieldQualifyInnerDstIp6 = 102,   /*  Inner ip header destination IPv6
   1299                                            Address. */
   1300     bcmFieldQualifyInnerSrcIp6High = 103, /*  Inner ip header Src. IPv6 Address
   1301                                            (High/Upper 64 bits). */
   1302     bcmFieldQualifyInnerDstIp6High = 104, /*  Inner ip header Dest IPv6 Address
   1303                                            (High/Upper 64 bits). */
   1304     bcmFieldQualifyInnerTtl = 105,      /*  Inner ip header time To Live/Hop
   1305                                            Limit. */
   1306     bcmFieldQualifyInnerIp6HopLimit = bcmFieldQualifyInnerTtl, /*  Inner IPv6 header Hop Limit. */
   1307     bcmFieldQualifyInnerTos = 106,      /*  Inner ip header diffserv Code Point. */
   1308     bcmFieldQualifyInnerDSCP = bcmFieldQualifyInnerTos, /*  Inner DSCP */
   1309     bcmFieldQualifyInnerIp6TrafficClass = bcmFieldQualifyInnerTos, /*  Inner IPv6 header Traffic Class. */
   1310     bcmFieldQualifyInnerIpProtocol = 107, /*  Inner ip header IP Protocol Field. */
   1311     bcmFieldQualifyInnerIp6NextHeader = bcmFieldQualifyInnerIpProtocol, /*  Inner Ip6 header  Next Header/IP
   1312                                            Protocol. */
   1313     bcmFieldQualifyInnerIpFrag = 108,   /*  Inner ip header IP Fragment info. */
   1314     bcmFieldQualifyVlanTranslationHit = 109, /*  Vlan Translation table hit. */
   1315     bcmFieldQualifyForwardingVlanValid = 110, /*  Forwarding vlan is valid. */
   1316     bcmFieldQualifyIngressStpState = 111, /*  Ingress Vlan STG STP state. */
   1317     bcmFieldQualifyL2SrcHit = 112,      /*  L2 Source lookup success. */
   1318     bcmFieldQualifyL2SrcStatic = 113,   /*  L2 Source is static entry. */
   1319     bcmFieldQualifyL2DestHit = 114,     /*  L2 Destination lookup success. */
   1320     bcmFieldQualifyL2StationMove = 115, /*  L2 Source port mismatch. */
   1321     bcmFieldQualifyL2CacheHit = 116,    /*  L2 Destination cache lookup success. */
   1322     bcmFieldQualifyL3SrcHostHit = 117,  /*  L3 Source lookup host table hit. */
   1323     bcmFieldQualifyL3DestHostHit = 118, /*  L3 Destination lookup host table
   1324                                            hit. */
   1325     bcmFieldQualifyL3DestRouteHit = 119, /*  L3 Destination lookup route table
   1326                                            hit. */
   1327     bcmFieldQualifyIpmcStarGroupHit = 120, /*  L3 Multicast lookup (Star,Group)
   1328                                            hit. */
   1329     bcmFieldQualifyDosAttack = 121,     /*  Denial of Service attack frame. */
   1330     bcmFieldQualifyDeprecated122 = 122, /* Deprecated 122 */
   1331     bcmFieldQualifyClassId = 123,       /*  internal use only. */
   1332     bcmFieldQualifyDeprecated124 = 124, /* Deprecated 124 */
   1333     bcmFieldQualifyIcmpTypeCode = 125,  /*  internal use only. */
   1334     bcmFieldQualifyDeprecated126 = 126, /* Deprecated 126 */
   1335     bcmFieldQualifyInnerIpProtocolCommon = 127, /*  Inner ip header IP Protocol Common
   1336                                            Field. */
   1337     bcmFieldQualifyInnerL4SrcPort = 128, /*  TCP/UDP Source Port. */
   1338     bcmFieldQualifyInnerL4DstPort = 129, /*  TCP/UDP Destination Port. */
   1339     bcmFieldQualifyInnerIp6FlowLabel = 130, /*  Inner IPv6 header Flow Label. */
   1340     bcmFieldQualifyDstL3Egress = 131,   /*  Egress Object id. */
   1341     bcmFieldQualifyDstMulticastGroup = 132, /*  Multicast Group id. */
   1342     bcmFieldQualifySrcMplsGport = 133,  /*  Source Mpls gport. */
   1343     bcmFieldQualifyDstMplsGport = 134,  /*  Destination Mpls gport. */
   1344     bcmFieldQualifySrcMimGport = 135,   /*  Source Mim gport. */
   1345     bcmFieldQualifyDstMimGport = 136,   /*  Destination Mim gport. */
   1346     bcmFieldQualifySrcWlanGport = 137,  /*  Source Wlan gport. */
   1347     bcmFieldQualifyDstWlanGport = 138,  /*  Destination Wlan gport. */
   1348     bcmFieldQualifySrcModPortGport = 139, /*  Source module/port pair. */
   1349     bcmFieldQualifySrcModuleGport = 140, /*  Source module. */
   1350     bcmFieldQualifyColor = 141,         /*  Packet color. */
   1351     bcmFieldQualifyIntPriority = 142,   /*  Internal priority. */
   1352     bcmFieldQualifyForwardingVlanId = 143, /*  Forwarding vlan id. */
   1353     bcmFieldQualifyVpn = 144,           /*  Vpn id. */
   1354     bcmFieldQualifyFlowId = 145,        /*  Flow id. */
   1355     bcmFieldQualifyInVPort = 146,       /*  Ingress virtual port id. */
   1356     bcmFieldQualifyOutVPort = 147,      /*  Egress virtual port id. */
   1357     bcmFieldQualifyFibreChanOuter = 148, /*  Outer Fibre Channel header type. */
   1358     bcmFieldQualifyFibreChanInner = 149, /*  Inner Fibre Channel header type. */
   1359     bcmFieldQualifyVnTag = 150,         /*  NIV VN tag. */
   1360     bcmFieldQualifyCnTag = 151,         /*  QCN CN tag. */
   1361     bcmFieldQualifyFabricQueueTag = 152, /*  Fabric queue tag. */
   1362     bcmFieldQualifyMyStationHit = 153,  /*  When RIOT is not enabled or not
   1363                                            supported, qualifies on L2 tunnel
   1364                                            termination lookup or Routing hit
   1365                                            status (default). When RIOT is
   1366                                            supported and enabled, qualifies on
   1367                                            L2 underlay tunnel termination lookup
   1368                                            hit status. */
   1369     bcmFieldQualifyDstMultipath = 154,  /*  Destination Multipath ID. */
   1370     bcmFieldQualifyL2PayloadFirstEightBytes = 155, /*  First eight bytes of L2 Payload. */
   1371     bcmFieldQualifySrcVirtualPortValid = 156, /*  Source Virtual Port is valid. */
   1372     bcmFieldQualifyDstL3EgressNextHops = 157, /*  Consecutive L3 Egress Next hops. */
   1373     bcmFieldQualifyRecoverableDrop = 158, /*  Recoverable drop indication. */
   1374     bcmFieldQualifyRepCopy = 159,       /*  Externally-replicated copy. */
   1375     bcmFieldQualifyIpTunnelHit = 160,   /*  IP tunnel lookup hit. */
   1376     bcmFieldQualifyMplsLabel1Hit = 161, /*  MPLS label 1 lookup hit. */
   1377     bcmFieldQualifyTrillEgressRbridgeHit = 162, /*  TRILL egress Rbridge lookup hit. */
   1378     bcmFieldQualifyL2GreSrcIpHit = 163, /*  Layer 2 GRE source IP address lookup
   1379                                            hit. */
   1380     bcmFieldQualifyMimSrcGportHit = 164, /*  MiM source port lookup hit. */
   1381     bcmFieldQualifyMplsLabel2Hit = 165, /*  MPLS label 2 lookup hit. */
   1382     bcmFieldQualifyTrillIngressRbridgeHit = 166, /*  TRILL ingress Rbridge lookup hit. */
   1383     bcmFieldQualifyL2GreVfiHit = 167,   /*  Layer 2 GRE VFI lookup hit. */
   1384     bcmFieldQualifyMimVfiHit = 168,     /*  MiM VFI lookup hit. */
   1385     bcmFieldQualifyGenericAssociatedChannelLabelValid = 169, /*  MPLS GAL valid. */
   1386     bcmFieldQualifyRouterAlertLabelValid = 170, /*  MPLS RAL valid. */
   1387     bcmFieldQualifyDstIpLocal = 171,    /*  Dest IP is local. */
   1388     bcmFieldQualifyNormalizeIpAddrs = 172, /*  Normalize IP addresses. */
   1389     bcmFieldQualifyNormalizeMacAddrs = 173, /*  Normalize MAC addresses. */
   1390     bcmFieldQualifyIpAddrsNormalized = 174, /*  IP addresses were normalized. */
   1391     bcmFieldQualifyMacAddrsNormalized = 175, /*  MAC addresses were normalized. */
   1392     bcmFieldQualifyMplsForwardingLabel = 176, /*  MPLS forwarding label. */
   1393     bcmFieldQualifyMplsForwardingLabelTtl = 177, /*  TTL field of MPLS forwarding label. */
   1394     bcmFieldQualifyMplsForwardingLabelBos = 178, /*  BOS field of MPLS forwarding label. */
   1395     bcmFieldQualifyMplsForwardingLabelExp = 179, /*  EXP field of MPLS forwarding label. */
   1396     bcmFieldQualifyMplsForwardingLabelId = 180, /*  ID field of MPLS forwarding label. */
   1397     bcmFieldQualifyMplsControlWord = 181, /*  MPLS control word. */
   1398     bcmFieldQualifyRtag7AHashUpper = 182, /*  Upper half of RTAG7 hash A result. */
   1399     bcmFieldQualifyRtag7AHashLower = 183, /*  Lower half of RTAG7 hash A result. */
   1400     bcmFieldQualifyRtag7BHashUpper = 184, /*  Upper half of RTAG7 hash B result. */
   1401     bcmFieldQualifyRtag7BHashLower = 185, /*  Lower half of RTAG7 hash B result. */
   1402     bcmFieldQualifyMplsForwardingLabelAction = 186, /*  MPLS forwarding label action. */
   1403     bcmFieldQualifyMplsControlWordValid = 187, /*  MPLS control word valid. */
   1404     bcmFieldQualifyEgressClass = 188,   /* Class assigned by next hop */
   1405     bcmFieldQualifyEgressClassL3Interface = 189, /* Class assigned by egress interface */
   1406     bcmFieldQualifyEgressClassTrill = 190, /* Class assigned by egress TRILL */
   1407     bcmFieldQualifyEgressClassWlan = 191, /* Class assigned by egress WLAN */
   1408     bcmFieldQualifyEgressClassL2Gre = 192, /* Class assigned by egress L2 GRE */
   1409     bcmFieldQualifyLlidValue = 193,     /*  LLID value (2 bytes) in preamble. */
   1410     bcmFieldQualifyCpuQueue = 194,      /*  CPU COS Queue value. */
   1411     bcmFieldQualifyMpls = 195,          /* Qualify on MPLS packets */
   1412     bcmFieldQualifySrcGport = 196,      /*  Source module/port pair or
   1413                                            MPLS/MiM/WLAN/Niv/Vlan port. */
   1414     bcmFieldQualifyHeaderFormat = 197,  /* Qualify on header format */
   1415     bcmFieldQualifyHeaderFormatSet = 198, /* Qualify on header format set */
   1416     bcmFieldQualifyL2Learn = 199,       /* Set if L2 learning is enabled */
   1417     bcmFieldQualifyPortOrientation = 200, /* Orientation in a Hub-Spoke topology
   1418                                            (Hub or Spoke) */
   1419     bcmFieldQualifyEcnValue = 201,      /* ECN Value */
   1420     bcmFieldQualifyRxTrapCode = 202,    /* Rx Trap Id */
   1421     bcmFieldQualifyPtch = 203,          /* Opaque attribute field of the
   1422                                            Injected packets. Part of the PTCH
   1423                                            header in 88650 */
   1424     bcmFieldQualifyMplsBos = 204,       /* Qualify on packets whose header
   1425                                            parsing reached the MPLS BoS label */
   1426     bcmFieldQualifyRxTrapData = 205,    /* Rx Trap Data */
   1427     bcmFieldQualifyPolicerIntPrio = 206, /* Internal priority for the policer */
   1428     bcmFieldQualifyPacketTerminatedBytes = 207, /* Number of bytes terminated */
   1429     bcmFieldQualifyBypassFilter = 208,  /* Qualify packets bypassing any
   1430                                            filtering */
   1431     bcmFieldQualifyReplicantAny = 209,  /* Qualify any Multicast packets */
   1432     bcmFieldQualifyReplicantFirst = 210, /* First-replication copy of the packet */
   1433     bcmFieldQualifyTrillEgressRbridge = 211, /* Egress RBridge Nickname */
   1434     bcmFieldQualifyISid = 212,          /* I-SID (MAC-in-MAC lookup-id) */
   1435     bcmFieldQualifyInterfaceClassProcessingPort = 213, /* Packet-processing Port Class ID */
   1436     bcmFieldQualifyDstRpfGport = 214,   /* RPF destination (gport) for the RPF
   1437                                            Check */
   1438     bcmFieldQualifyTrunkHashResult = 215, /* Trunk Hash Result (i.e., the
   1439                                            Load-balancing Key) */
   1440     bcmFieldQualifyDhcp = 216,          /* Qualify DHCP packets */
   1441     bcmFieldQualifySnoopCopy = 217,     /* Snooped traffic */
   1442     bcmFieldQualifyForwardCopy = 218,   /* Forwarded traffic */
   1443     bcmFieldQualifyInterfaceClassVPort = 219, /* Virtual Port Interface Class ID */
   1444     bcmFieldQualifyVPortRangeCheck = 220, /* Virtual Port Range Check Results */
   1445     bcmFieldQualifyPacketLengthRangeCheck = 221, /* Packet length Range Check Results */
   1446     bcmFieldQualifyStageIngressVlanTranslation = 222, /* VLAN Translation stage */
   1447     bcmFieldQualifyStageIngressTunnelTerminated = 223, /* Tunnel termination stage */
   1448     bcmFieldQualifyStageIngressMplsTerminated = 224, /* MPLS Termination stage */
   1449     bcmFieldQualifyStageIngressIpTunnel = 225, /* IP tunnel termination stage */
   1450     bcmFieldQualifyStageIngressL2Src = 226, /* L2 Source lookup stage */
   1451     bcmFieldQualifyStageIngressL2Dest = 227, /* L2 Destination lookup stage */
   1452     bcmFieldQualifyStageIngressL3SrcRoute = 228, /* L3 Source Route lookup stage */
   1453     bcmFieldQualifyStageIngressL3DestRoute = 229, /* L3 Destination Route lookup stage */
   1454     bcmFieldQualifyStageIngressIpmc = 230, /* IP Multicast lookup stage */
   1455     bcmFieldQualifyTunnelTerminatedHit = 231, /* Tunnel termination hit */
   1456     bcmFieldQualifyMplsTerminatedHit = 232, /* MPLS Termination hit */
   1457     bcmFieldQualifyL3SrcRouteHit = 233, /* L3 Source Route lookup hit */
   1458     bcmFieldQualifyIpmcHit = 234,       /* IP Multicast lookup hit */
   1459     bcmFieldQualifyVlanTranslationValue = 235, /* VLAN Translation lookup value */
   1460     bcmFieldQualifyTunnelTerminatedValue = 236, /* Tunnel Termination lookup value */
   1461     bcmFieldQualifyMplsTerminatedValue = 237, /* MPLS Termination lookup value */
   1462     bcmFieldQualifyIpTunnelValue = 238, /* IP Tunnel Termination lookup value */
   1463     bcmFieldQualifyL2SrcValue = 239,    /* L2 Source lookup value */
   1464     bcmFieldQualifyL2DestValue = 240,   /* L2 Destination lookup value */
   1465     bcmFieldQualifyL3SrcRouteValue = 241, /* L3 Source lookup value */
   1466     bcmFieldQualifyL3DestRouteValue = 242, /* L3 Destination lookup value */
   1467     bcmFieldQualifyIpmcValue = 243,     /* IP Multicast lookup value */
   1468     bcmFieldQualifyLearnSrcMac = 244,   /* MAC Source Address learnt */
   1469     bcmFieldQualifyLearnVlan = 245,     /* Vlan learnt */
   1470     bcmFieldQualifyLearnSrcPort = 246,  /* Source Port learnt */
   1471     bcmFieldQualifyPacketSize = 247,    /* Packet size in Bytes. */
   1472     bcmFieldQualifyInnerSrcMac = 248,   /* Inner Source L2 MAC Address. */
   1473     bcmFieldQualifyInnerDstMac = 249,   /* Inner Destination L2 MAC Address. */
   1474     bcmFieldQualifyInnerEtherType = 250, /* Inner Ethernet Type */
   1475     bcmFieldQualifyMplsLabel1 = 251,    /* MPLS Label 1 */
   1476     bcmFieldQualifyMplsLabel1Ttl = 252, /* TTL field of the first MPLS Label */
   1477     bcmFieldQualifyMplsLabel1Bos = 253, /* BoS field of the first MPLS Label */
   1478     bcmFieldQualifyMplsLabel1Exp = 254, /* Exp field of the first MPLS Label */
   1479     bcmFieldQualifyMplsLabel1Id = 255,  /* ID field of the first MPLS Label */
   1480     bcmFieldQualifyMplsLabel2 = 256,    /* MPLS Label 2 */
   1481     bcmFieldQualifyMplsLabel2Ttl = 257, /* TTL field of the second MPLS Label */
   1482     bcmFieldQualifyMplsLabel2Bos = 258, /* BoS field of the second MPLS Label */
   1483     bcmFieldQualifyMplsLabel2Exp = 259, /* Exp field of the second MPLS Label */
   1484     bcmFieldQualifyMplsLabel2Id = 260,  /* ID field of the second MPLS Label */
   1485     bcmFieldQualifyMplsLabel3 = 261,    /* MPLS Label 3 */
   1486     bcmFieldQualifyMplsLabel3Ttl = 262, /* TTL field of the third MPLS Label */
   1487     bcmFieldQualifyMplsLabel3Bos = 263, /* BoS field of the third MPLS Label */
   1488     bcmFieldQualifyMplsLabel3Exp = 264, /* Exp field of the third MPLS Label */
   1489     bcmFieldQualifyMplsLabel3Id = 265,  /* ID field of the third MPLS Label */
   1490     bcmFieldQualifyCascadedKeyValue = 266, /* Value of key cascaded from prior
   1491                                            group in cascade */
   1492     bcmFieldQualifyMplsOuterLabelPop = 267, /* Qualifies MPLS Outer Label Popped
   1493                                            Packets */
   1494     bcmFieldQualifyMplsStationHitTunnelUnterminated = 268, /* Qualifies Mpls Station Hit Tunnel
   1495                                            Unterminated Packets */
   1496     bcmFieldQualifyIngressClassField = 269, /* Class Id assigned for packet by
   1497                                            Ingress Stage */
   1498     bcmFieldQualifyIngressInterfaceClassPort = 270, /* Class Id assigned for packet based on
   1499                                            Ingress Port */
   1500     bcmFieldQualifyExternalValue0 = 271, /* External lookup 0 value */
   1501     bcmFieldQualifyExternalValue1 = 272, /* External lookup 1 value */
   1502     bcmFieldQualifyExternalValue2 = 273, /* External lookup 2 value */
   1503     bcmFieldQualifyExternalValue3 = 274, /* External lookup 3 value */
   1504     bcmFieldQualifyExternalHit0 = 275,  /* External lookup 0 hit */
   1505     bcmFieldQualifyExternalHit1 = 276,  /* External lookup 1 hit */
   1506     bcmFieldQualifyExternalHit2 = 277,  /* External lookup 2 hit */
   1507     bcmFieldQualifyExternalHit3 = 278,  /* External lookup 3 hit */
   1508     bcmFieldQualifyVpnUnknownDstMacDstPort = 279, /* Destination for unknown-DA packets.
   1509                                            Set per Vpn. */
   1510     bcmFieldQualifyVxlanNetworkId = 280, /* Vxlan Network/Segment Id */
   1511     bcmFieldQualifyVxlanFlags = 281,    /* VxLan header Flags */
   1512     bcmFieldQualifyNatNeeded = 282,     /* Qualify packets where NAT is needed */
   1513     bcmFieldQualifyNatDstRealmId = 283, /* Qualify packets on Dst Realm Id */
   1514     bcmFieldQualifyNatSrcRealmId = 284, /* Qualify packets on Src Realm Id */
   1515     bcmFieldQualifyIcmpError = 285,     /* Qualifies any packet with ICMP Error */
   1516     bcmFieldQualifyTunnelId = 286,      /* Tunnel Id */
   1517     bcmFieldQualifyArpSenderIp4 = 287,  /* Sender IPv4 field of ARP header */
   1518     bcmFieldQualifyArpTargetIp4 = 288,  /* Target IPv4 field of ARP header */
   1519     bcmFieldQualifyArpOpcode = 289,     /* Opcode field of ARP header.Values set
   1520                                            according to bcmFieldArpOpcode */
   1521     bcmFieldQualifyTranslatedOuterVlan = 290, /* Translated Outer VLAN ID, Cfi,
   1522                                            Priority */
   1523     bcmFieldQualifyTranslatedOuterVlanId = 291, /* Translated Outer VLAN ID */
   1524     bcmFieldQualifyTranslatedOuterVlanPri = 292, /* Translated Outer VLAN Priority */
   1525     bcmFieldQualifyTranslatedOuterVlanCfi = 293, /* Translated Outer VLAN Cfi */
   1526     bcmFieldQualifyTranslatedInnerVlan = 294, /* Translated Inner VLAN ID, Cfi,
   1527                                            Priority */
   1528     bcmFieldQualifyTranslatedInnerVlanId = 295, /* Translated Inner VLAN ID */
   1529     bcmFieldQualifyTranslatedInnerVlanPri = 296, /* Translated Inner VLAN Priority */
   1530     bcmFieldQualifyTranslatedInnerVlanCfi = 297, /* Translated Inner VLAN Cfi */
   1531     bcmFieldQualifyConstantZero = 298,  /* Constant zero-value. Useful for
   1532                                            Direct group mode. */
   1533     bcmFieldQualifyConstantOne = 299,   /* Constant one-value. Useful for Direct
   1534                                            group mode. */
   1535     bcmFieldQualifyFibreChanRCtl = 300, /* Fibre Channel's R_Ctl (Routing
   1536                                            Control) flags. */
   1537     bcmFieldQualifyFibreChanFCtl = 301, /* Fibre Channel's F_Ctl (Frame Control)
   1538                                            flags. */
   1539     bcmFieldQualifyFibreChanCSCtl = 302, /* Fibre Channel's CS_Ctl (Class
   1540                                            Specified Control) flags. */
   1541     bcmFieldQualifyFibreChanDFCtl = 303, /* Fibre Channel's DF_Ctl (Data Field
   1542                                            Control) flags. */
   1543     bcmFieldQualifyFibreChanType = 304, /* Match an FP entry based on Fibre
   1544                                            Channel's Type. */
   1545     bcmFieldQualifyFibreChanSrcId = 305, /* Fibre Channel's Src Id */
   1546     bcmFieldQualifyFibreChanDstId = 306, /* Fibre Channel's Dst Id. */
   1547     bcmFieldQualifyFibreChanZoneCheck = 307, /* Fibre Channel's Zone Check Status
   1548                                            (BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_xxx). */
   1549     bcmFieldQualifyFibreChanSrcFpmaCheck = 308, /* Fibre Channel's Src FPMA Prefix Check
   1550                                            Status. */
   1551     bcmFieldQualifyFibreChanSrcBindCheck = 309, /* Fibre Channel's Src Bind Check
   1552                                            Status. */
   1553     bcmFieldQualifyFibreChanVFTVersion = 310, /* Fibre Channel's VFT version. */
   1554     bcmFieldQualifyFibreChanVFTPri = 311, /* Fibre Channel's VFT Priority. */
   1555     bcmFieldQualifyFibreChanVFTFabricId = 312, /* Fibre Channel's VFT Fabric Id. */
   1556     bcmFieldQualifyFibreChanVFTHopCount = 313, /* Fibre Channel's VFT Hop Count. */
   1557     bcmFieldQualifyFibreChanVFTVsanId = 314, /* Fibre Channel's VFT Internal VSAN ID. */
   1558     bcmFieldQualifyFibreChanVFTVsanPri = 315, /* Fibre Channel's VFT VSAN Priority. */
   1559     bcmFieldQualifyFibreChanVFTValid = 316, /* Fibre Channel's VFT header
   1560                                            presence/validity. */
   1561     bcmFieldQualifyFcoeSOF = 317,       /* Match an FP entry based on Fcoe SOF. */
   1562     bcmFieldQualifyFcoeVersionIsZero = 318, /* FCoE Version Is Zero. */
   1563     bcmFieldQualifyForwardingHeaderOffset = 319, /* Distance of the forwarding header
   1564                                            from the start-of-packet. Unit:
   1565                                            bytes. */
   1566     bcmFieldQualifyL3SrcBind = 320,     /*  L3 source bind lookup success. */
   1567     bcmFieldQualifyECid = 321,          /* E-CID base. Same as ExtenderPortVid. */
   1568     bcmFieldQualifyIngressECid = 322,   /* Ingress E-CID base. */
   1569     bcmFieldQualifyETag = 323,          /* E-Tag value. */
   1570     bcmFieldQualifyIngressVPortBridgeDisable = 324, /* Ingress VPort Bridge same-interface
   1571                                            disabled */
   1572     bcmFieldQualifyHashValue = 325,     /* Hash value */
   1573     bcmFieldQualifyIsEqualValue = 326,  /* Result value of the is-equal
   1574                                            operation */
   1575     bcmFieldQualifyStageHash = 327,     /* Hashing stage */
   1576     bcmFieldQualifyUrpfMode = 328,      /* URPF mode according to
   1577                                            bcm_field_urpf_mode_t */
   1578     bcmFieldQualifyAppType = 329,       /*  Packet Application type
   1579                                            (bcmFieldAppTypeXXX). */
   1580     bcmFieldQualifySubportPktTag = 330, /* Ingress LLTAG. */
   1581     bcmFieldQualifySrcVxlanGport = 331, /* Qualify vxlan source gport. */
   1582     bcmFieldQualifyDstVxlanGport = 332, /*  Qualify vxlan destination gport. */
   1583     bcmFieldQualifyOamMdl = 333,        /*  Qualify OAM Maintenance Domain
   1584                                            Levels. */
   1585     bcmFieldQualifyIntCongestionNotification = 334, /*  Qualify internal congestion
   1586                                            notification value. */
   1587     bcmFieldQualifySrcNivGport = 335,   /*  Source Niv gport. */
   1588     bcmFieldQualifyDstNivGport = 336,   /*  Destination Niv gport. */
   1589     bcmFieldQualifyDstGport = 337,      /*  Destination Niv port. */
   1590     bcmFieldQualifyMirrorEgressDisabled = 338, /*  Egress Mirroring disabled. */
   1591     bcmFieldQualifyBypassSrcMacFilter = 339, /*  Qualify packets bypassing Source MAC
   1592                                            Address filtering. */
   1593     bcmFieldQualifyRxTrapCodeForSnoop = 340, /*  Rx Trap code ID used for snoop. */
   1594     bcmFieldQualifyIpmcStarGroupValue = 341, /*  L3 Multicast lookup (Star,Group)
   1595                                            Value. */
   1596     bcmFieldQualifyNativeVSwitch = 342, /*  Native-VSwitch (for
   1597                                            Routing-over-overlay packets). */
   1598     bcmFieldQualifyNativeVSwitchValid = 343, /*  Valid native-VSwitch (for
   1599                                            Routing-over-overlay packets). */
   1600     bcmFieldQualifyTrillIVersion = 344, /*  TRILL version field. */
   1601     bcmFieldQualifyTrillIngressRbridge = 345, /*  Ingress Rbridge Nickname. */
   1602     bcmFieldQualifyTrillMultiDestination = 346, /*  RILL Multi-destination field. */
   1603     bcmFieldQualifyTrillOpLength = 347, /*  TRILL Options length field. */
   1604     bcmFieldQualifyTrillHopCount = 348, /*  TRILL Hop count field . */
   1605     bcmFieldQualifyTrillPayload = 349,  /*  Payload of TRILL header. */
   1606     bcmFieldQualifyMplsForwardingLabelPayload = 350, /*  Payload of MPLS forwarding label. */
   1607     bcmFieldQualifyIncomingIpIfClass = 351, /*  Incoming IP interface Class ID. */
   1608     bcmFieldQualifyL2GreProtocolType = 352, /*  L2GRE Protocol type field . */
   1609     bcmFieldQualifyL2GreVsid = 353,     /*  L2GRE Virtual Subnet ID field. */
   1610     bcmFieldQualifyL2GreFlowId = 354,   /*  L2GRE Flow ID field. */
   1611     bcmFieldQualifyMimVlanPri = 355,    /*  MAC-in-MAC VLAN Priority field. */
   1612     bcmFieldQualifyMimVlanCfi = 356,    /*  MAC-in-MAC VLAN Cfi field. */
   1613     bcmFieldQualifyFhei = 357,          /*  DNX FHEI header field. */
   1614     bcmFieldQualifyFheiSize = 358,      /*  DNX FHEI header size in bytes. */
   1615     bcmFieldQualifyEthernetOamHeaderBits0_31 = 359, /*  Ethernet OAM Header First 4 Bytes. */
   1616     bcmFieldQualifyEthernetOamHeaderBits32_63 = 360, /*  Ethernet OAM Header Second 4 Bytes. */
   1617     bcmFieldQualifyEthernetOamDstClassL2 = 361, /*  Ethernet OAM Destination Class based
   1618                                            on L2 lookup result. */
   1619     bcmFieldQualifyEthernetOamTxPktUPMEP = 362, /*  Ethernet OAM UP-MEP Tx Packet. */
   1620     bcmFieldQualifyEthernetOamInterfaceClassNiv = 363, /*  Ethernet OAM ClassId from Source VP
   1621                                            Table. */
   1622     bcmFieldQualifyEthernetOamInterfaceClassMim = 364, /*  Ethernet OAM ClassId from Source VP
   1623                                            Table. */
   1624     bcmFieldQualifyEthernetOamInterfaceClassVxlan = 365, /*  Ethernet OAM ClassId from Source VP
   1625                                            Table. */
   1626     bcmFieldQualifyEthernetOamInterfaceClassVlan = 366, /*  Ethernet OAM ClassId from Source VP
   1627                                            Table. */
   1628     bcmFieldQualifyEthernetOamInterfaceClassPort = 367, /*  Ethernet OAM Class Id assigned for
   1629                                            packet based on Ingress Port. */
   1630     bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst = 368, /*  Ethernet OAM Class Id assigned for
   1631                                            packet based on 1st Lookup in
   1632                                            Vlan_Xlate table. */
   1633     bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond = 369, /*  Ethernet OAM Class Id assigned for
   1634                                            packet based on 2nd Lookup in
   1635                                            Vlan_Xlate table. */
   1636     bcmFieldQualifyEthernetOamInterfaceClassMpls = 370, /*  Ethernet OAM Class Id assigned for
   1637                                            packet based on Source VP table. */
   1638     bcmFieldQualifyEthernetOamClassVpn = 371, /*  Ethernet OAM Class Id assigned for
   1639                                            packet based on VFI table. */
   1640     bcmFieldQualifyMplsOamHeaderBits0_31 = 372, /*  Mpls OAM Header First 4 Bytes. */
   1641     bcmFieldQualifyMplsOamHeaderBits32_63 = 373, /*  Mpls OAM Header Second 4 Bytes. */
   1642     bcmFieldQualifyMplsOamGALLabelOnly = 374, /*  MPLS OAM packets having GAL Label
   1643                                            Only. */
   1644     bcmFieldQualifyMplsOamUpperLabelDataDrop = 375, /* MPLS OAM Labels above the forwarding
   1645                                            label. */
   1646     bcmFieldQualifyMplsOamGALExposed = 376, /*  MPLS OAM packets having GAL exposed. */
   1647     bcmFieldQualifyMplsOamACH = 377,    /*  MPLS OAM ACH Header. */
   1648     bcmFieldQualifyMplsOamControlPktType = 378, /*  MPLS OAM control packets based on
   1649                                            Packet Type. */
   1650     bcmFieldQualifyMplsOamClassMplsSwitchLabel = 379, /*  MPLS OAM Class Id assigned for
   1651                                            packet based on MPLS table. */
   1652     bcmFieldQualifyOamHeaderBits0_31 = 380, /*  OAM Header First 4 Bytes. */
   1653     bcmFieldQualifyOamHeaderBits32_63 = 381, /*  OAM Header Second 4 Bytes. */
   1654     bcmFieldQualifyOamEgressClassVxlt = 382, /*  OAM Class Id assigned for packet
   1655                                            based on EGR_VXLT table. */
   1656     bcmFieldQualifyOamEgressClassPort = 383, /*  OAM Class Id assigned for packet
   1657                                            based on Port table. */
   1658     bcmFieldQualifyUdf = 384,           /* Qualify UDF selected data */
   1659     bcmFieldQualifyOuterVlanActionRange = 385, /* compressed outer vlan tag */
   1660     bcmFieldQualifyInnerVlanActionRange = 386, /* compressed inner vlan tag */
   1661     bcmFieldQualifyIngressInterfaceClassVPort = 387, /* Class Id assigned for packet based on
   1662                                            Ingress GPort */
   1663     bcmFieldQualifySrcVlanGport = 388,  /* Qualify Source Vlan Gport */
   1664     bcmFieldQualifyDstVlanGport = 389,  /* Qualify Destination Vlan Gport */
   1665     bcmFieldQualifyOamType = 390,       /*  Qualify Ethernet/MPLS OAM. */
   1666     bcmFieldQualifySrcVlanGports = 391, /* Qualify Source Vlan Gports */
   1667     bcmFieldQualifyDstVlanGports = 392, /* Qualify Destination Vlan Gports */
   1668     bcmFieldQualifySrcVxlanGports = 393, /* Qualify Source Vxlan Gports */
   1669     bcmFieldQualifyDstVxlanGports = 394, /* Qualify Destination Vxlan Gports */
   1670     bcmFieldQualifySrcWlanGports = 395, /* Qualify Source Wlan Gports */
   1671     bcmFieldQualifyDstWlanGports = 396, /* Qualify Destination Wlan Gports */
   1672     bcmFieldQualifySrcMplsGports = 397, /* Qualify Source Mpls Gports */
   1673     bcmFieldQualifyDstMplsGports = 398, /* Qualify Destination Mpls Gports */
   1674     bcmFieldQualifySrcGports = 399,     /* Qualify Source module/port pair or
   1675                                            MPLS/MiM/WLAN/Niv/Vlan ports */
   1676     bcmFieldQualifyDstGports = 400,     /* Qualify Destination Niv Gports */
   1677     bcmFieldQualifySrcMimGports = 401,  /* Qualify Source Mim Gports */
   1678     bcmFieldQualifyDstMimGports = 402,  /* Qualify Destination Mim Gports */
   1679     bcmFieldQualifySrcNivGports = 403,  /* Qualify Source Niv Gports */
   1680     bcmFieldQualifyDstNivGports = 404,  /* Qualify Destination Niv Gports */
   1681     bcmFieldQualifySrcModPortGports = 405, /* Qualify Source ModPort Gports */
   1682     bcmFieldQualifyLearnInVPort = 406,  /* Qualify Learnt Incoming VPort */
   1683     bcmFieldQualifyStackingRoute = 407, /* Qualify Stacking Route */
   1684     bcmFieldQualifyRxTrapStrength = 408, /* Qualify Rx Trap Strength */
   1685     bcmFieldQualifyVxlanHeaderBits8_31 = 409, /* Qualify Reserved_1 field in Vxlan
   1686                                            Header */
   1687     bcmFieldQualifyVxlanHeaderBits56_63 = 410, /* Qualify Reserved_2 field in Vxlan
   1688                                            Header */
   1689     bcmFieldQualifyOamInLifIdValid = 411, /* Indicates if the LIF that has been
   1690                                            found is an OAM LIF. */
   1691     bcmFieldQualifyOamInLifId = 412,    /* Indicates the last OAM LIF that has
   1692                                            been found. This value is valid only
   1693                                            if SOC_PPC_FP_QUAL_VTT_OAM_LIF_VALID
   1694                                            is set. */
   1695     bcmFieldQualifyOamUpMep = 413,      /* It indicates if the OAM packet is
   1696                                            UP-MEP (sent to a destination in the
   1697                                            network, as opposed to a specific
   1698                                            port). This term belongs to the OAM
   1699                                            jargon. */
   1700     bcmFieldQualifyOamSubtype = 414,    /* In OAM the packet type is specified
   1701                                            in the OAM header and mapped to a
   1702                                            subtype in the hardware. This value
   1703                                            indicates the hardware type that it
   1704                                            is mapped to. */
   1705     bcmFieldQualifyOamHeaderOffset = 415, /* This field indicates the offset of
   1706                                            the OAM header relative to the start
   1707                                            of packet (as opposed to start of
   1708                                            header-offset) */
   1709     bcmFieldQualifyOamStampOffset = 416, /* This qualifier indicates the offset
   1710                                            to the position, in the OAM header,
   1711                                            where the ToD or counter value should
   1712                                            be stamped
   1713                                                                  relative to the
   1714                                            start of packet (as opposed to start
   1715                                            of header-offset[0]). */
   1716     bcmFieldQualifyOamMepId = 417,      /* This qualifier indicates is according
   1717                                            to the following encoding: OAM-ID
   1718                                            (17) = OAM-2-Match ?
   1719                                                                   {4'b0,
   1720                                            OAM-2-ID (13)} : {1'b1, OAM-LIF (16)}
   1721                                            If MEP is handled in OAMP, then the
   1722                                            OAM-ID is the MEP-ID
   1723                                                                       
   1724                                            (equivalent to the index used to
   1725                                            access the MEP DB). */
   1726     bcmFieldQualifyOamMeterDisable = 418, /* This qualifier is an attribute that
   1727                                            is passed to the PMF and can also be
   1728                                            configured by the user per MEP.
   1729                                                               It has no meaning
   1730                                            other than being a qualifier in the
   1731                                            PMF. */
   1732     bcmFieldQualifyOamTsSystemHeader = 419, /* The entire OAM-TS is passed to the
   1733                                            egress PMF (48 bit) */
   1734     bcmFieldQualifyDstMulticastGroups = 420, /* Qualify Multicast Group ids */
   1735     bcmFieldQualifyInterfaceInPorts = 421, /* Qualify Interface In Ports */
   1736     bcmFieldQualifyDestVirtualPortValid = 422, /* Destination Virtual Port is valid. */
   1737     bcmFieldQualifyInVPortWide = 423,   /* Wide attribute of Ingress VPort . */
   1738     bcmFieldQualifyStageClass = 424,    /* Pseudo Compression Class Stage. */
   1739     bcmFieldQualifyStageClassExactMatch = 425, /* Pseudo Compression Exact Match Class
   1740                                            Stage. */
   1741     bcmFieldQualifyFcoeOxID = 426,      /* FCoE Originator Exchange ID. */
   1742     bcmFieldQualifyFcoeRxID = 427,      /* FCoE Responder Exchange ID. */
   1743     bcmFieldQualifyIpProtocolClass = 428, /* IP Protocol ID Class. */
   1744     bcmFieldQualifyEtherTypeClass = 429, /* EtherType Class. */
   1745     bcmFieldQualifyL4SrcPortClass = 430, /* L4 Source Port Class. */
   1746     bcmFieldQualifyL4DstPortClass = 431, /* L4 Destination Port Class. */
   1747     bcmFieldQualifySrcIpClass = 432,    /* IPv4 SIP Class. */
   1748     bcmFieldQualifySrcIpClassMsbNibble = 433, /* IPv4 SIP Class 4-bits. */
   1749     bcmFieldQualifySrcIpClassLower = 434, /* IPv4 SIP Class Lower 16-bits. */
   1750     bcmFieldQualifySrcIpClassUpper = 435, /* IPv4 SIP Class Upper 16-bits. */
   1751     bcmFieldQualifySrcIp6Class = 436,   /* IPv6 SIP Class. */
   1752     bcmFieldQualifySrcIp6ClassMsbNibble = 437, /* IPv6 SIP Class 4-bits. */
   1753     bcmFieldQualifySrcIp6ClassLower = 438, /* Ipv6 SIP Class Lower 16-bits. */
   1754     bcmFieldQualifySrcIp6ClassUpper = 439, /* IPv6 SIP Class Upper 16-bits. */
   1755     bcmFieldQualifyFcoeOxIDClass = 440, /* FCoE Originator Exchange ID Class. */
   1756     bcmFieldQualifyDstIpClass = 441,    /* IPv4 DIP Class. */
   1757     bcmFieldQualifyDstIpClassMsbNibble = 442, /* IPv4 DIP Class 4-bits. */
   1758     bcmFieldQualifyDstIpClassLower = 443, /* IPv4 DIP Class Lower 16-bits. */
   1759     bcmFieldQualifyDstIpClassUpper = 444, /* IPv4 DIP Class Upper 16-bits. */
   1760     bcmFieldQualifyDstIp6Class = 445,   /* IPv6 DIP Class. */
   1761     bcmFieldQualifyDstIp6ClassMsbNibble = 446, /* Ipv6 DIP Class 4-bits. */
   1762     bcmFieldQualifyDstIp6ClassLower = 447, /* IPv6 DIP Class Lower 16-bits. */
   1763     bcmFieldQualifyDstIp6ClassUpper = 448, /* IPv6 DIP Class Upper 16-bits. */
   1764     bcmFieldQualifyFcoeRxIDClass = 449, /* FCoE Responder Exchange ID Class. */
   1765     bcmFieldQualifyFibreChanSrcIdClass = 450, /* Fibre Channel Src Id Class. */
   1766     bcmFieldQualifyFibreChanSrcIdClassMsbNibble = 451, /* Fibre Channel Src Id Class 4-bits. */
   1767     bcmFieldQualifyFibreChanSrcIdClassLower = 452, /* Fibre Channel Src Id Class Lower
   1768                                            16-bits. */
   1769     bcmFieldQualifyFibreChanSrcIdClassUpper = 453, /* Fibre Channel Src Id Class Upper
   1770                                            16-bits. */
   1771     bcmFieldQualifyFibreChanDstIdClass = 454, /* Fibre Channel Dst Id Class. */
   1772     bcmFieldQualifyFibreChanDstIdClassMsbNibble = 455, /* Fibre Channel Dst Id Class 4-bits. */
   1773     bcmFieldQualifyFibreChanDstIdClassLower = 456, /* Fibre Channel Dst Id Class Lower
   1774                                            16-bits. */
   1775     bcmFieldQualifyFibreChanDstIdClassUpper = 457, /* Fibre Channel Dst Id Class Upper
   1776                                            16-bits. */
   1777     bcmFieldQualifyTcpClassZero = 458,  /* TCP Class from TCP_FN0. */
   1778     bcmFieldQualifyTosClassZero = 459,  /* TOS Class from TOS_FN0. */
   1779     bcmFieldQualifyTtlClassZero = 460,  /* TTL Class from TTL_FN0. */
   1780     bcmFieldQualifyTcpClassOne = 461,   /* TCP Class from TCP_FN1. */
   1781     bcmFieldQualifyTosClassOne = 462,   /* TOS Class from TOS_FN1. */
   1782     bcmFieldQualifyTtlClassOne = 463,   /* TTL Class from TTL_FN1. */
   1783     bcmFieldQualifyOuterVlanPriCfi = 464, /*  Outer VLAN Pri + Cfi (4 bits). */
   1784     bcmFieldQualifyForwardHdrSrcMac = 465, /*  FWD Header SA MAC (48 bits). */
   1785     bcmFieldQualifyForwardHdrDstMac = 466, /*  FWD Header DA MAC (48 bits). */
   1786     bcmFieldQualifyForwardHdrVlanId = 467, /*  FWD Header Vlan Id (12 bits). */
   1787     bcmFieldQualifyDstSysPortExt = 468, /*  FTMH Destination System Port (DSP)
   1788                                            Extension (16 bits). */
   1789     bcmFieldQualifyStageIngressExactMatch = 469, /*  Field Processor pipeline ingress
   1790                                            exact match stage. */
   1791     bcmFieldQualifyLearnExtension = 470, /* Learn Extension Data. */
   1792     bcmFieldQualifyIpFragNonOrFirst = 471, /*  Non Fragmented IP Packet or First
   1793                                            Fragment of IP Packet. */
   1794     bcmFieldQualifyPacketLength = 472,  /*  Packet Length Excluding L2 Header(+
   1795                                            Vlan Tag for Tagged packets). */
   1796     bcmFieldQualifyGroupClass = 473,    /*  Field Group Class Id (Logical Table
   1797                                            Class Id) assigned by pre-selection
   1798                                            entry. */
   1799     bcmFieldQualifyUdfClass = 474,      /*  Class ID associated to packet on UDF
   1800                                            match. */
   1801     bcmFieldQualifyInterfaceLookupClassPort = 475, /*  VFP Port Class Id that can be
   1802                                            matched in Ingress Filter Processor. */
   1803     bcmFieldQualifyHiGigDstMulticast = 476, /* Indicates if the HiGig Destination is
   1804                                            a Multicast or Unicast. */
   1805     bcmFieldQualifyHiGigDstMulticastGroupId = 477, /* Destination Multicast Group Id. */
   1806     bcmFieldQualifyHiGigTrafficClass = 478, /* QOS provided by Fabric when
   1807                                            forwarding the packet through Fabric. */
   1808     bcmFieldQualifyHiGigDstModuleGport = 479, /* Destination Module ID. */
   1809     bcmFieldQualifyHiGigDstPortGport = 480, /* Destination Port. */
   1810     bcmFieldQualifyHiGigDstModPortGport = 481, /* Destination Module ID and Port. */
   1811     bcmFieldQualifyHiGigSrcModuleGport = 482, /* Source Module ID. */
   1812     bcmFieldQualifyHiGigSrcPortGport = 483, /* Source Port. */
   1813     bcmFieldQualifyHiGigSrcModPortGport = 484, /* Source Module ID and Port. */
   1814     bcmFieldQualifyHiGigLoadBalanceID = 485, /* A packet flow hashing index for
   1815                                            distribution of packet flows through
   1816                                            a multipath fabric. */
   1817     bcmFieldQualifyHiGigColor = 486,    /* Indicates Traffic rate violation
   1818                                            status of the packet measured by
   1819                                            Ingress Module.This can be
   1820                                            Green/Yellow/Red */
   1821     bcmFieldQualifyHiGigIntCongestionNotification = 487, /* Indicates ECN and Transport Protocol
   1822                                            Class Information generated by
   1823                                            Ingress Module. */
   1824     bcmFieldQualifyHiGigIngressTagged = 488, /* Tagged packet was ingressed at the
   1825                                            HiGig Port. */
   1826     bcmFieldQualifyHiGigDstTrunk = 489, /* Is the Destination port is Trunk
   1827                                            Port? */
   1828     bcmFieldQualifyHiGigDstTrunkId = 490, /* Destination HiGig Trunk Group Id. */
   1829     bcmFieldQualifyHiGigIngressL3SwitchPkt = 491, /* Packet is L3 switched at the Source
   1830                                            Port */
   1831     bcmFieldQualifyHiGigLabel = 492,    /* 20 Bit Label Present in HiGig Header.
   1832                                            Label Type can be QTag/Mirror
   1833                                            Classification Tag/System Ingress
   1834                                            Port. */
   1835     bcmFieldQualifyHiGigReplicationId = 493, /* Replication ID used to identify
   1836                                            Packet modifications to be applied
   1837                                            for this replicated copy. */
   1838     bcmFieldQualifyHiGigVlan = 494,     /* Vlan tag information in HiGig Header */
   1839     bcmFieldQualifyHiGigPortFilteringMode = 495, /* Port Filtering mode used for
   1840                                            Multicast packets. */
   1841     bcmFieldQualifyHiGigSrcTrunk = 496, /* Indicates the packet is originally
   1842                                            ingressed on Trunk Port. */
   1843     bcmFieldQualifyHiGigIngressClassificationTag = 497, /* Classification Tag assigned to packet
   1844                                            in Ingress Filter Processor(IFP). */
   1845     bcmFieldQualifyHiGigEgressMcast = 498, /* Indicates whether the packet is sent
   1846                                            to a single point or a multi-point
   1847                                            tree within the egress chip. */
   1848     bcmFieldQualifyHiGigVni = 499,      /* Virtual Network Identifier (ISID)
   1849                                            which identifies the service instance
   1850                                            for this packet. */
   1851     bcmFieldQualifyHiGigDstGport = 500, /* The destination VP index for egress
   1852                                            chip packet modification and
   1853                                            encapsulation. */
   1854     bcmFieldQualifyHiGigMulticastIndex = 501, /* The destination multicast index for
   1855                                            egress chip packet modification and
   1856                                            encapsulation. */
   1857     bcmFieldQualifyHiGigVpReplicationId = 502, /* The destination Replication ID for
   1858                                            egress chip packet modification and
   1859                                            encapsulation. */
   1860     bcmFieldQualifyHiGigSrcGport = 503, /* The Source VP index from which the
   1861                                            packet ingressed the system. */
   1862     bcmFieldQualifyHiGigProtectionSwitchingStatus = 504, /* This indicates the egress packet
   1863                                            processor to use working / protection
   1864                                            path based on the decision made in
   1865                                            the ingress packet processor. */
   1866     bcmFieldQualifyHiGigMirrorToVp = 505, /* Indicates whether the packet is a
   1867                                            mirrored copy or Switched Copy */
   1868     bcmFieldQualifyHiGigDstType = 506,  /* Indicates whether the destination is
   1869                                            Virtual or Physical. */
   1870     bcmFieldQualifyHiGigSrcType = 507,  /* Indicates whether the source is
   1871                                            Virtual or Physical. */
   1872     bcmFieldQualifyHiGigOffloadEngineClassificationTag = 508, /* Opaque field generated by the ACL
   1873                                            rule that triggered the redirect to
   1874                                            the offload engine. */
   1875     bcmFieldQualifyHiGigOffloadEnginePktPriNew = 509, /* New 802.1p bits */
   1876     bcmFieldQualifyHiGigOffloadEngineDscpNew = 510, /* New DSCP value. */
   1877     bcmFieldQualifyLoopBackQueue = 511, /* Loopback Port Queue Number. It is
   1878                                            used in the MMU for buffer account
   1879                                            and flow control of traffic received
   1880                                            on the internal loopback port. */
   1881     bcmFieldQualifyLoopBackSrcGport = 512, /* Source field for the packet. It can
   1882                                            be a Virtual/Physical port. */
   1883     bcmFieldQualifyPktIsVisible = 513,  /* Triggers capture of intermediate
   1884                                            packet processing results for this
   1885                                            packet. */
   1886     bcmFieldQualifyLoopBackCpuMasqueradePktProfile = 514, /* Pointer to indicate disposition of
   1887                                            these packets in the Ingress
   1888                                            Pipeline. */
   1889     bcmFieldQualifyLoopBackColor = 515, /* Indicates Traffic rate violation
   1890                                            status of the packet measured by
   1891                                            Ingress Module.This can be
   1892                                            Green/Yellow/Red. */
   1893     bcmFieldQualifyLoopBackTrafficClass = 516, /* QOS provided by Fabric when
   1894                                            forwarding the packet through Fabric. */
   1895     bcmFieldQualifyLoopBackPacketProcessingPort = 517, /* Device Port Number which is to be
   1896                                            used for processing the packet in the
   1897                                            Ingress Pipeline. This must be a port
   1898                                            that is programmed in the device to
   1899                                            be a front panel (Ethernet) port. */
   1900     bcmFieldQualifyMixedSrcClassId = 518, /* Mixed Source ID value used in
   1901                                            Pre-selection. */
   1902     bcmFieldQualifyITag = 519,          /* Service Instance Tag in MAC-in-MAC. */
   1903     bcmFieldQualifyInterfaceIngressKeySelectClassPort = 520, /* Ingress port class id assigned to
   1904                                            port by port table. */
   1905     bcmFieldQualifyBfdYourDiscriminator = 521, /* BFD Your Discriminator. */
   1906     bcmFieldQualifyCpuVisibilityPacket = 522, /* CPU visibility packet. */
   1907     bcmFieldQualifyDstL2MulticastGroup = 523, /* Destination L2 Multicast Group Id. */
   1908     bcmFieldQualifyDstL3MulticastGroup = 524, /* Destination L3 Multicast Group Id. */
   1909     bcmFieldQualifyExactMatchHitStatus = 525, /* Exact Match Hit Status. */
   1910     bcmFieldQualifyExactMatchActionClassId = 526, /* Exact Match Action Class Identifier. */
   1911     bcmFieldQualifyExactMatchGroupClassId = 527, /* Exact Match Group Class Identifier. */
   1912     bcmFieldQualifyL2PayLoad = 528,     /* Qualify Bytes after L2 Header */
   1913     bcmFieldQualifyCustomHeaderPkt = 529, /* Qualify Custom Header packets. */
   1914     bcmFieldQualifyCustomHeaderData = 530, /* Qualify the content of Custom Header
   1915                                            32-bits. */
   1916     bcmFieldQualifyMimlPkt = 531,       /* Qualify for MiML or non-MiML packet. */
   1917     bcmFieldQualifyMimlSrcMac = 532,    /* Mac-in-Mac Lite(MiML) Source MAC
   1918                                            Address. */
   1919     bcmFieldQualifyMimlDstMac = 533,    /* Mac-in-Mac Lite(MiML) Destination MAC
   1920                                            Address. */
   1921     bcmFieldQualifyMimlVlan = 534,      /* Mac-in-Mac Lite(MiML) VLAN ID, Cfi,
   1922                                            Priority. */
   1923     bcmFieldQualifyMimlVlanId = 535,    /* Mac-in-Mac Lite(MiML) VLAN ID. */
   1924     bcmFieldQualifyMimlVlanPri = 536,   /* Mac-in-Mac Lite(MiML) VLAN Priority. */
   1925     bcmFieldQualifyMimlVlanCfi = 537,   /* Mac-in-Mac Lite(MiML) VLAN Cfi. */
   1926     bcmFieldQualifyMimlInnerTag = 538,  /* Mac-in-Mac Lite(MiML) inner tag
   1927                                            fields {MIML_PKT_TYPE, MIML_IID,
   1928                                            MIML_RSVD, MIML_LENGTH}. */
   1929     bcmFieldQualifyCapwapHdrType = 539, /* The TYPE field in CAPWAP header. */
   1930     bcmFieldQualifyCapwapHdrRid = 540,  /* The RID field in CAPWAP header. */
   1931     bcmFieldQualifyCapwapPayloadSOF = 541, /* It indicates the CAPWAP payload is
   1932                                            non-fragmented or first fragment. */
   1933     bcmFieldQualifyCapwapPayloadDstMac = 542, /* destination MAC address in CAPWAP
   1934                                            payload. */
   1935     bcmFieldQualifyCapwapPayloadSrcMac = 543, /* source MAC address in CAPWAP payload. */
   1936     bcmFieldQualifyCapwapPayloadEtherType = 544, /* Ethernet type in CAPWAP payload. */
   1937     bcmFieldQualifyCapwapPayloadOuterVlan = 545, /* Outer VLAN tag in CAPWAP payload. */
   1938     bcmFieldQualifyCapwapPayloadOuterVlanId = 546, /* Outer VLAN id in CAPWAP payload. */
   1939     bcmFieldQualifyCapwapPayloadOuterVlanPri = 547, /* Outer VLAN priority in CAPWAP
   1940                                            payload. */
   1941     bcmFieldQualifyCapwapPayloadOuterVlanCfi = 548, /* Outer VLAN CFI in CAPWAP payload. */
   1942     bcmFieldQualifyCapwapPayloadInnerVlan = 549, /* Inner VLAN tag in CAPWAP payload. */
   1943     bcmFieldQualifyCapwapPayloadInnerVlanId = 550, /* Inner VLAN id in CAPWAP payload. */
   1944     bcmFieldQualifyCapwapPayloadInnerVlanPri = 551, /* Inner VLAN priority in CAPWAP
   1945                                            payload. */
   1946     bcmFieldQualifyCapwapPayloadInnerVlanCfi = 552, /* Inner VLAN CFI in CAPWAP payload. */
   1947     bcmFieldQualifyCapwapPayloadVlanFormat = 553, /* VLAN tag format in CAPWAP payload. */
   1948     bcmFieldQualifyCapwapPayloadSip = 554, /* IPv4 source address in CAPWAP
   1949                                            payload. */
   1950     bcmFieldQualifyCapwapPayloadDip = 555, /* IPv4 destination address in CAPWAP
   1951                                            payload. */
   1952     bcmFieldQualifyCapwapPayloadSip6 = 556, /* IPv6 source address in CAPWAP
   1953                                            payload. */
   1954     bcmFieldQualifyCapwapPayloadDip6 = 557, /* IPv6 destination address in CAPWAP
   1955                                            payload. */
   1956     bcmFieldQualifyCapwapPayloadIpProtocol = 558, /* IP Protocol value in CAPWAP payload. */
   1957     bcmFieldQualifyCapwapPayloadTos = 559, /* Type-of-Service value in CAPWAP
   1958                                            payload. */
   1959     bcmFieldQualifyCapwapPayloadL4DstPort = 560, /* UDP/TCP destination port number in
   1960                                            CAPWAP payload. */
   1961     bcmFieldQualifyCapwapPayloadL4SrcPort = 561, /* UDP/TCP source port number in CAPWAP
   1962                                            payload. */
   1963     bcmFieldQualifyCapwapPayloadL3HdrParseable = 562, /* It indicates the parser can parse
   1964                                            ipv4/ipv6 header in the wireless
   1965                                            payload. */
   1966     bcmFieldQualifyCapwapPayloadL4HdrParseable = 563, /* It indicates the parser can parse
   1967                                            UDP/TCP header in the wireless
   1968                                            payload. */
   1969     bcmFieldQualifyVlanAction = 564,    /* Vlan Action Set ID. */
   1970     bcmFieldQualifyDownMepSatTerminated = 565, /* Qualify Rx Down Mep SAT terminated
   1971                                            hit status. */
   1972     bcmFieldQualifyDstMultipathOverlay = 566, /* Qualify on ECMP groups with overlay
   1973                                            flag */
   1974     bcmFieldQualifyDstMultipathUnderlay = 567, /* Qualify on ECMP groups with Underlay
   1975                                            flag */
   1976     bcmFieldQualifyStpState = 568,      /* Qualify on VLAN STG STP states. */
   1977     bcmFieldQualifyHiGigMirrorOrSwitchPkt = 569, /* Indicates whether the packet has to
   1978                                            be mirrored and switched. */
   1979     bcmFieldQualifyHiGigPreserveFlags = 570, /* Indicates the DSCP/DOT1P flags should
   1980                                            not be modified. */
   1981     bcmFieldQualifyHiGigMplsPkt = 571,  /* When set, indicates packet contains a
   1982                                            20 bit label. Otherwise packet
   1983                                            contains MPLS information. */
   1984     bcmFieldQualifyHiGigDoNotFlags = 572, /* Donot Learn(do not perform MAC
   1985                                            learning) and Donot Modify(Send the
   1986                                            packet to destination unmodified)
   1987                                            Flags. */
   1988     bcmFieldQualifyHiGigVpPreserveFlags = 573, /* Indicates the VP not to modify the
   1989                                            DSCP/DOT1P flags. */
   1990     bcmFieldQualifyHiGigOffloadEngineVxltStatus = 574, /* Indicates whether the Packet has been
   1991                                            through Vlan Translation. */
   1992     bcmFieldQualifyHiGigForwardingType = 575, /* Indicates the forwarding type whether
   1993                                            it is a control/L2/L3/broadcast
   1994                                            packet. */
   1995     bcmFieldQualifyHiGigLabelType = 576, /* Indicates contents of Label. It can
   1996                                            be a QTag/ Mirror Classification Tag/
   1997                                            Original System Ingress Port through
   1998                                            which the packet ingressed/ Original
   1999                                            HiGig+ Overlay. */
   2000     bcmFieldQualifyHiGigExtendedHeaderPresent = 577, /* Indicates whether extended header is
   2001                                            present in the HiGiG header or not. */
   2002     bcmFieldQualifyHiGigVpLagFailoverPacket = 578, /* When set, it indicates that the
   2003                                            packet is redirected by a LAG
   2004                                            failover and the packet must not be
   2005                                            redirected again by LAG failover. */
   2006     bcmFieldQualifyHiGigOffloadEnginePreserveDscp = 579, /* Indicates offload engine not to
   2007                                            change the DSCP in the packet. */
   2008     bcmFieldQualifyHiGigOffloadEnginePreserveDot1p = 580, /* Indicates offload engine not to
   2009                                            change the DOT1P in the packet. */
   2010     bcmFieldQualifyHiGigOffloadEngineDeferredFlags = 581, /* Indicates whether a drop action/DSCP
   2011                                            change/802.1 change was deferred. */
   2012     bcmFieldQualifyHiGigOffloadEngineSrcType = 582, /* This applies to packets destined to
   2013                                            Offload Engine and this indicates
   2014                                            whether the packet is ingressed on a
   2015                                            Physical port / Virtual Port. */
   2016     bcmFieldQualifySystemPortBitmap = 583, /* To qualify on a port bitmap generated
   2017                                            from SGLP. */
   2018     bcmFieldQualifySourceGportBitmap = 584, /* To qualify on a port bitmap generated
   2019                                            from SVP. */
   2020     bcmFieldQualifyDevicePortBitmap = 585, /* To qualify on a port bitmap generated
   2021                                            from device ingress port. */
   2022     bcmFieldQualifyTosLower4Bits = 586, /* To qualify on Lower 4bits of TOS. */
   2023     bcmFieldQualifyOamEgressClass2Vxlt = 587, /* To qualify on OAM Class Id assigned
   2024                                            for packet based on Second Lookup in
   2025                                            EGR_VLAN_XLATE table. */
   2026     bcmFieldQualifyOamEgressVxltFirstHit = 588, /* To qualify on First EGR_VXLT lookup
   2027                                            hit status. */
   2028     bcmFieldQualifyOamEgressVxltSecondHit = 589, /* To qualify on Second EGR_VXLT lookup
   2029                                            hit status. */
   2030     bcmFieldQualifyOamDownMEPLoopbackPacket = 590, /* Indicates Down-MEP Loopback or
   2031                                            Down-SAT Latching Loopback packet. */
   2032     bcmFieldQualifyOamEgressPortUnicastDstMacHit = 591, /* To qualify on EGR_PORT MAC DA hit
   2033                                            status. */
   2034     bcmFieldQualifyOamSat = 592,        /* Pseudo qualifier for OAM/SAT. */
   2035     bcmFieldQualifyIngressDropEthernetOamControl = 593, /* To qualify on Drop reasons for
   2036                                            Ethernet Oam Control Packets based on
   2037                                            MEP type. */
   2038     bcmFieldQualifyIngressDropEthernetOamData = 594, /* To qualify on Drop reasons for
   2039                                            Ethernet Oam Data Packets based on
   2040                                            MEP type. */
   2041     bcmFieldQualifyIngressDropMplsOamControl = 595, /* To qualify on Drop reasons for Mpls
   2042                                            Oam Control Packets based on MEP
   2043                                            type. */
   2044     bcmFieldQualifyIngressDropMplsOamData = 596, /* To qualify on Drop reasons for Mpls
   2045                                            Oam Data Packets based on MEP type. */
   2046     bcmFieldQualifyEgressClassVxlan = 597, /* Class assigned by Egress Vxlan */
   2047     bcmFieldQualifyOamEgressEtherType = 598, /* To qualify on OAM/SAT Ethernet Type.
   2048                                            Allowed values are 0x8902 and 0x88b7 */
   2049     bcmFieldQualifyOamEgressMulticastMacHit = 599, /* To qualify on Multicast OAM Dest Mac
   2050                                            Address Range Hit. Allowed values
   2051                                            BCM_FIELD_OAM_MULTICAST_MAC_XXX */
   2052     bcmFieldQualifyTrunkMemberSourceModuleId = 600, /* To qualify on Module ID on a trunk
   2053                                            member port. */
   2054     bcmFieldQualifyOamEgressClassSrcMac = 601, /* To qualify on SourceMac Class ID
   2055                                            assigned for packet based on Hit in
   2056                                            EGR_OAM_SAT_MISC_MAC_SA_0.15
   2057                                            registers. */
   2058     bcmFieldQualifyMyStation2Hit = 602, /* Applicable when RIOT is enabled or l2
   2059                                            entry is used as my station (by
   2060                                            enabling config
   2061                                            l2_entry_used_as_my_station) is set.
   2062                                            To qualify on Overlay L2 termination
   2063                                            lookup hit status for tunnel packets
   2064                                            or Routing hit status for non-tunnel
   2065                                            packets or when l2 entry added as my
   2066                                            station is hit. */
   2067     bcmFieldQualifyExternalValue4 = 603, /* External lookup 4 value */
   2068     bcmFieldQualifyExternalValue5 = 604, /* External lookup 5 value */
   2069     bcmFieldQualifyExternalHit4 = 605,  /* External lookup 4 hit */
   2070     bcmFieldQualifyExternalHit5 = 606,  /* External lookup 5 hit */
   2071     bcmFieldQualifyGeneratedTtl = 607,  /* Get match criteria for
   2072                                            bcmFieldQualifyGeneratedTtl qualifier
   2073                                            from the field entry. */
   2074     bcmFieldQualifyIpMulticastCompatible = 608, /* Packet is compatible for multicast. */
   2075     bcmFieldQualifyEgressClassTunnel = 609, /* Class assigned by next hop tunnel */
   2076     bcmFieldQualifyEgressClassL3InterfaceTunnel = 610, /* Class assigned by egress interface
   2077                                            tunnel */
   2078     bcmFieldQualifyStaggeredValue0 = 611, /* Value taken from action result 0 in
   2079                                            staggered mode. */
   2080     bcmFieldQualifyStaggeredValue1 = 612, /* Value taken from action result 1 in
   2081                                            staggered mode. */
   2082     bcmFieldQualifyStaggeredValue2 = 613, /* Value taken from action result 2 in
   2083                                            staggered mode. */
   2084     bcmFieldQualifyStaggeredValue3 = 614, /* Value taken from action result 3 in
   2085                                            staggered mode. */
   2086     bcmFieldQualifyStaggeredDirectValue = 615, /* Value taken from KAPS payload in
   2087                                            staggered mode. */
   2088     bcmFieldQualifyStaggeredPreselProfile0 = 616, /* Program selection profile value taken
   2089                                            from action result 0 in staggered
   2090                                            mode. */
   2091     bcmFieldQualifyStaggeredPreselProfile1 = 617, /* Program selection profile value taken
   2092                                            from action result 1 in staggered
   2093                                            mode. */
   2094     bcmFieldQualifyStaggeredPreselProfile2 = 618, /* Program selection profile value taken
   2095                                            from action result 2 in staggered
   2096                                            mode. */
   2097     bcmFieldQualifyStaggeredPreselProfile3 = 619, /* Program selection profile value taken
   2098                                            from action result 3 in staggered
   2099                                            mode. */
   2100     bcmFieldQualifyStaggeredPreselProfileDirect = 620, /* Program selection profile value taken
   2101                                            from KAPS payload 0 in staggered
   2102                                            mode. */
   2103     bcmFieldQaulifyPreselId = 621,      /* Program selection value in 2nd Pass
   2104                                            according to the 1st Pass
   2105                                            preselector-id. */
   2106     bcmFieldQualifyEthernetData = 622,  /* Egress data qualifier base only.
   2107                                            NWK_RCRDS Ethernet data field,
   2108                                            containing Ethernet tags (if any) and
   2109                                            Ethertype. */
   2110     bcmFieldQualifyPreemptablePacket = 623, /* Preemptable Packet */
   2111     bcmFieldQualifyVxlanClassValid = 624, /* VXLAN Class is valid or not */
   2112     bcmFieldQualifyVxlanPacket = 625,   /* Indicates whether it is a VXLAN
   2113                                            packet */
   2114     bcmFieldQualifyVxlanVnidVlanTranslateHit = 626, /* VXLAN Network Identifier (VN_ID)
   2115                                            lookup hit through vlan translation */
   2116     bcmFieldQualifyVxlanPayloadVlanFormat = 627, /* VLAN tag format in VXLAN payload */
   2117     bcmFieldQualifyTunnelPayloadDstMac = 628, /* Destination MAC address in Tunnel
   2118                                            payload */
   2119     bcmFieldQualifyTunnelPayloadSrcMac = 629, /* Source MAC address in Tunnel payload */
   2120     bcmFieldQualifyTunnelPayloadEtherType = 630, /* Ethernet type in Tunnel payload */
   2121     bcmFieldQualifyTunnelPayloadOuterVlan = 631, /* Outer VLAN tag in Tunnel payload */
   2122     bcmFieldQualifyTunnelPayloadOuterVlanId = 632, /* Outer VLAN id in Tunnel payload */
   2123     bcmFieldQualifyTunnelPayloadOuterVlanPri = 633, /* Outer VLAN priority in Tunnel payload */
   2124     bcmFieldQualifyTunnelPayloadOuterVlanCfi = 634, /* Outer VLAN CFI in Tunnel payload */
   2125     bcmFieldQualifyTunnelPayloadSip = 635, /* IPv4 source address in Tunnel payload */
   2126     bcmFieldQualifyTunnelPayloadDip = 636, /* IPv4 destination address in Tunnel
   2127                                            payload */
   2128     bcmFieldQualifyTunnelPayloadSip6 = 637, /* IPv6 source address in Tunnel payload */
   2129     bcmFieldQualifyTunnelPayloadDip6 = 638, /* IPv6 destination address in Tunnel
   2130                                            payload */
   2131     bcmFieldQualifyTunnelPayloadIpProtocol = 639, /* IP Protocol value in Tunnel payload */
   2132     bcmFieldQualifyTunnelPayloadL4DstPort = 640, /* UDP/TCP destination port number in
   2133                                            Tunnel payload */
   2134     bcmFieldQualifyTunnelPayloadL4SrcPort = 641, /* UDP/TCP source port number in Tunnel
   2135                                            payload */
   2136     bcmFieldQualifyRoceBthOpcode = 642, /* To qualify on OP code on RoCEv1 /
   2137                                            RoCEv2 Base Transport Header(BTH) */
   2138     bcmFieldQualifyRoceBthPartitionKey = 643, /* To qualify on partition key on RoCEv1
   2139                                            / RoCEv2  Base Transport Header (BTH) */
   2140     bcmFieldQualifyRoceBthDstQueuePair = 644, /* To qualify on destination queue pair
   2141                                            on RoCEv1 / RoCEv2 Base Transport
   2142                                            Header(BTH) */
   2143     bcmFieldQualifyRoceBthFlags = 645,  /* To qualify on flags on RoCEv1 /
   2144                                            RoCEv2 Base Transport Header(BTH) */
   2145     bcmFieldQualifyRoceVer1Pkt = 646,   /* Indicate whether it is a RoCEv1
   2146                                            packet */
   2147     bcmFieldQualifyRoceVer2Pkt = 647,   /* Indicate whether it is a RoCEv2
   2148                                            packet */
   2149     bcmFieldQualifySrcPortSRType = 648, /* SR (Seamless Redundancy) port type
   2150                                            (bcmFieldPortSRTypeXXX) assigned to
   2151                                            the source port */
   2152     bcmFieldQualifyDstPortSRType = 649, /* SR (Seamless Redundancy) port type
   2153                                            (bcmFieldPortSRTypeXXX) assigned to
   2154                                            the destination port */
   2155     bcmFieldQualifySrcPortSRRoleInterlink = 650, /* Indicates whether the SR role for the
   2156                                            source is an interlink */
   2157     bcmFieldQualifyDstPortSRRoleInterlink = 651, /* Indicates whether the SR role for the
   2158                                            destination is an interlink */
   2159     bcmFieldQualifySrcPortSRMode = 652, /* The SR port mode
   2160                                            (bcmFieldSRPortModeXXX) assigned to
   2161                                            the source port */
   2162     bcmFieldQualifyDstPortSRMode = 653, /* The SR port mode
   2163                                            (bcmFieldSRPortModeXXX) assigned to
   2164                                            the destination port */
   2165     bcmFieldQualifySrcPortSRNetId = 654, /* The SR NET ID (0~7) assigned to the
   2166                                            source port */
   2167     bcmFieldQualifyDstPortSRNetId = 655, /* The SR NET ID (0~7) assigned to the
   2168                                            destination port */
   2169     bcmFieldQualifySrcPortSRLanId = 656, /* The SR LAN ID (0 for LAN A and 1 for
   2170                                            LAN B) assigned to the source port */
   2171     bcmFieldQualifyDstPortSRLanId = 657, /* The SR LAN ID (0 for LAN A and 1 for
   2172                                            LAN B) assigned to the destination
   2173                                            port */
   2174     bcmFieldQualifySRTagType = 658,     /* The SR (Seamless Redundancy) tag type
   2175                                            (bcmFieldSRTagTypeXXX) identified in
   2176                                            this packet */
   2177     bcmFieldQualifySRLanId = 659,       /* The SR LAN ID (0 for LAN A and 1 for
   2178                                            LAN B) in the SR tag. Valid only if
   2179                                            the packet contains an SR tag. */
   2180     bcmFieldQualifySRNetId = 660,       /* The SR NET ID (0~7) in the SR tag.
   2181                                            Valid only if the packet contains an
   2182                                            SR tag. */
   2183     bcmFieldQualifyVlanSREnable = 661,  /* Indicates whether SR (Seamless
   2184                                            Redundancy) is enabled in this VLAN */
   2185     bcmFieldQualifyVlanSRLanId = 662,   /* Indicates the SR LAN ID (0 for LAN A
   2186                                            and 1 for LAN B) for this VLAN. Valid
   2187                                            only if SR is enabled for this VLAN. */
   2188     bcmFieldQualifySRFlowId = 663,      /* SR flow ID for the SR flow that the
   2189                                            packet belongs to */
   2190     bcmFieldQualifyL2DestSRNodeType = 664, /* SR node type (bcmFieldSRNodeTypeXXX)
   2191                                            for the destination address */
   2192     bcmFieldQualifySRNetIdMatched = 665, /* Indicates whether the SR packet's NET
   2193                                            ID matches the configured NET ID on
   2194                                            the destination port */
   2195     bcmFieldQualifySRSrcNodeIsSan = 666, /* Indicates whether the source address
   2196                                            belongs to an SR SAN node */
   2197     bcmFieldQualifySRSupervisionType = 667, /* The SR supervision type
   2198                                            (bcmFieldSRSupervisionTypeXXX) if
   2199                                            it's an SR supervision packet */
   2200     bcmFieldQualifySRError = 668,       /* Indicates SR errors for the packet */
   2201     bcmFieldQualifyL2SrcMulticastHit = 669, /* Indicates L2 source address found on
   2202                                            the correct multicast group. */
   2203     bcmFieldQualifyL2DstMulticastHit = 670, /* Indicates L2 destination address
   2204                                            found and result is a multicast
   2205                                            group. */
   2206     bcmFieldQualifySRDuplicate = 671,   /* SR (Seamless Redundancy): Indicates
   2207                                            whether this packet is a duplicate SR
   2208                                            packet */
   2209     bcmFieldQualifyTsnFlowId = 672,     /* TSN (Time-Sensitive Networking) flow
   2210                                            ID for the TSN flow that the packet
   2211                                            belongs to */
   2212     bcmFieldQualifyExternalValue6 = 673, /* External lookup 6 value */
   2213     bcmFieldQualifyExternalValue7 = 674, /* External lookup 7 value */
   2214     bcmFieldQualifyExternalHit6 = 675,  /* External lookup 6 hit */
   2215     bcmFieldQualifyExternalHit7 = 676,  /* External lookup 7 hit */
   2216     bcmFieldQualifyMirrorDest = 677,    /* Link Layer mirror command value */
   2217     bcmFieldQualifyPacketIsIEEE1588 = 678, /* Indicating whether the packet is 1588 */
   2218     bcmFieldQualifyIEEE1588Encapsulation = 679, /* IEEE-1588 Encapsulation according to
   2219                                            bcm_field_IEEE1588Encap_t */
   2220     bcmFieldQualifyIEEE1588CompensateTimeStamp = 680, /* IEEE-1588 update time stamp */
   2221     bcmFieldQualifyIEEE1588Command = 681, /* Command used by egress pipeline,
   2222                                            indicating if CF(correction field)
   2223                                            needs to be update */
   2224     bcmFieldQualifyIEEE1588HeaderOffset = 682, /* This field indicates the offset of
   2225                                            the IEEE-1588 header. Offset in bytes */
   2226     bcmFieldQualifyHeaderFormatExtension = 683, /* Qualify on header format extension
   2227                                            from profile of header format */
   2228     bcmFieldQualifyMacSecTagPresent = 684, /* Qualifies the MACSEC tagged packets */
   2229     bcmFieldQualifyMacSecTag = 685,     /* Qualifies on the SecTag field in
   2230                                            MACSEC tagged packets */
   2231     bcmFieldQualifyMacSecDstMacRangeHit = 686, /* Qualifies hit on Destination MAC
   2232                                            addresses range; which is configured
   2233                                            by API
   2234                                            bcm_field_macsec_DstMacRange_set */
   2235     bcmFieldQualifyFromMacSecPort = 687, /* Packet forwarded through the internal
   2236                                            MACSEC port */
   2237     bcmFieldQualifyMacSecFlow = 688,    /* Qualifies on the MACSEC packet flow */
   2238     bcmFieldQualifyEgressBridgedForwardingDataHigh = 689, /* Used for ACL-while-bridging. Contains
   2239                                            the 64 bits of packet data starting
   2240                                            80 bits after SA */
   2241     bcmFieldQualifyEgressBridgedForwardingDataLow = 690, /* Used for ACL-while-bridging. Contains
   2242                                            the 56 bits of packet data starting
   2243                                            144 bits after SA */
   2244     bcmFieldQualifyEgressBridgedAclDataHigh = 691, /* Used for ACL-while-bridging. Contains
   2245                                            the 40 bits of packet data starting
   2246                                            200 bits after SA */
   2247     bcmFieldQualifyEgressBridgedAclDataLow = 692, /*  Used for ACL-while-bridging.
   2248                                            Contains the 32 bits of packet data
   2249                                            starting 240 bits after SA */
   2250     bcmFieldQualifySysHdrType = 693,    /* Qualifier is to match on incoming
   2251                                            packet system header type */
   2252     bcmFieldQualifySubportTagPresent = 694, /* Match on packet's subport tag */
   2253     bcmFieldQualifyNetworkTagType = 695, /* Match on Network (VnTag/Etag) */
   2254     bcmFieldQualifyCnTagPresent = 696,  /* Match on congestion tag */
   2255     bcmFieldQualifyL2PktType = 697,     /* Match on L2 Packet Type
   2256                                            (Ethernet/Snap/Llc/None) */
   2257     bcmFieldQualifyPktType = 698,       /* Match on Packet type after L2 header */
   2258     bcmFieldQualifyMplsCwPresent = 699, /* Match on MPLS Control word */
   2259     bcmFieldQualifyMplsMcastEthertypePresent = 700, /* Match on Multicast MPLS Ethertype */
   2260     bcmFieldQualifyIpv4OptionHdrType = 701, /* Match on IPv4 Option header types. */
   2261     bcmFieldQualifyIpv6ExtensionHdrType = 702, /* Match on IPv6 Extension header types. */
   2262     bcmFieldQualifyOverlayVlanFormat = 703, /* Match on Overlay vlan tag format. */
   2263     bcmFieldQualifyOverlayL2PktType = 704, /* Match on Overlay L2 Packet type */
   2264     bcmFieldQualifyOverlayPktType = 705, /* Match on Overlay Packet type */
   2265     bcmFieldQualifyOverlayIpv4OptionHdrType = 706, /* Match on Overlay IPv4 option header
   2266                                            types */
   2267     bcmFieldQualifyOverlayIpv6ExtensionHdrType = 707, /* Match on Overlay IPv6 option header
   2268                                            types */
   2269     bcmFieldQualifyFrontPanelPkt = 708, /* Match on packets incoming from Front
   2270                                            panel ports */
   2271     bcmFieldQualifyHiGigProxyTunnelType = 709, /* Match on incoming HiGig Proxy tunnel
   2272                                            types */
   2273     bcmFieldQualifyIpFragPkt = 710,     /* Match on IP Fragment packet */
   2274     bcmFieldQualifyOuterPriTaggedPkt = 711, /* Match on Outer priority tagged packet */
   2275     bcmFieldQualifyIpInIpPkt = 712,     /* Match on IP in IP packet */
   2276     bcmFieldQualifyIpmcV4Pkt = 713,     /* Match on packets with IPMC IPv4
   2277                                            packet */
   2278     bcmFieldQualifyIpmcV6Pkt = 714,     /* Match on packets with IPMC IPv6
   2279                                            packet */
   2280     bcmFieldQualifyIpChecksumOkPkt = 715, /* Match on IP packet with Checksum OK */
   2281     bcmFieldQualifyNetworkTagMulticastPkt = 716, /* Match on multicast packets with VNTAG
   2282                                            or ETAG */
   2283     bcmFieldQualifyIpTtlZeroPkt = 717,  /* Match on IP packet with Zero TTL
   2284                                            value */
   2285     bcmFieldQualifyPimBidirDfStatus = 718, /* Match on PIM Bi-directional
   2286                                            Designated Forwarder status */
   2287     bcmFieldQualifyInterfaceClassL2Type = 719, /* Qualifier is to to indicate whether
   2288                                            the Interface L2 Class ID is from VFI
   2289                                            or VLAN */
   2290     bcmFieldQualifyIntPktVersionOne = 720, /* Match on the INT (Inband-Telemetry)
   2291                                            Version One. The data '1' indicates
   2292                                            the INT version is set to 1, 0
   2293                                            indicates version other than 1. */
   2294     bcmFieldQualifyIntPktOverflowed = 721, /* Match on the INT (Inband-Telemetry)
   2295                                            Header Overflow Bit. The data '1'
   2296                                            indicates the frame is full of
   2297                                            telemetry information. The INT header
   2298                                            current length exceeds max length and
   2299                                            can't add any more metadata to it. */
   2300     bcmFieldQualifyIntPktLengthValid = 722, /* Match on the INT (Inband-Telemetry)
   2301                                            valid length, the data '1' indicates
   2302                                            the difference between INT Header max
   2303                                            length and current length is greater
   2304                                            than INT Metadata length, that is the
   2305                                            frame is capable of accommodating INT
   2306                                            metadata. */
   2307     bcmFieldQualifyIntPktType = 723,    /* Match on the INT (Inband-Telemetry)
   2308                                            Message Type (bcmFieldIntPktTypeXX). */
   2309     bcmFieldQualifyIntPktFinalHop = 724, /* Match on the INT (Inband-Telemetry)
   2310                                            Maximum Hop Limit Check, the data '1'
   2311                                            indicates INT exceeds Max Hop Count
   2312                                            (Hop Limit >= Hop Count). */
   2313     bcmFieldQualifyTunnelSubType = 725, /*  TunnelType (bcmFieldTunnelSubTypeXXX
   2314                                            in bcm_field_tunnel_subtype_t). */
   2315     bcmFieldQualifyNshServicePathId = 726, /*  Match on NSH Service Path ID. */
   2316     bcmFieldQualifyNshServiceIndex = 727, /*  Match on NSH Service Index. */
   2317     bcmFieldQualifyKeyGenVar = 728,     /*  Match on Key Gen Var */
   2318     bcmFieldQualifyRoeFrameType = 729,  /*  Match on Roe frame type set in MPLS
   2319                                            entry for a MPLS packet or based on
   2320                                            UDP port number for an IP tunnel
   2321                                            packet. Roe frame types are defined
   2322                                            by bcm_field_roe_frame_type_t. */
   2323     bcmFieldQualifyBfdGoodPkt = 730,    /* Match on BFD Good packet (Good here
   2324                                            represents the valid TTL range for
   2325                                            1-hop and M-hop). */
   2326     bcmFieldQualifyBfdPktWithDstIpLoopbackAddr = 731, /* Match whether the incoming BFD packet
   2327                                            has destination loopback IP Address. */
   2328     bcmFieldQualifyMplsControlPkt = 732, /* Match on MPLS Control Packet (packet
   2329                                            with VCCV_1/2/3/4 and
   2330                                            [LSP]/GAL/G-ACH). */
   2331     bcmFieldQualifyStageIngressFlowtracker = 733, /*  Field Processor pipeline ingress
   2332                                            flowtracker stage. */
   2333     bcmFieldQualifyInterfaceClassMplsLookup1 = 734, /* Qualifies on Class identifier derived
   2334                                            from MPLS label 1 entry Lookup. */
   2335     bcmFieldQualifyInterfaceClassMplsLookup2 = 735, /* Qualifies on Class identifier derived
   2336                                            from MPLS label 2 entry Lookup. */
   2337     bcmFieldQualifyInterfaceClassMplsLookup3 = 736, /* Qualifies on Class identifier derived
   2338                                            from MPLS label 3 entry Lookup. */
   2339     bcmFieldQualifyInterfaceClassL3Tunnel = 737, /* Qualifies on Class identifier derived
   2340                                            from L3 Tunnel. */
   2341     bcmFieldQualifyBfdPktVersionOne = 738, /* Match on BFD Version One. The data
   2342                                            '1' indicates the ersion as 1, 0
   2343                                            indicates version other than 1. */
   2344     bcmFieldQualifyGenevePktVersionZero = 739, /* Match on Geneve Version Zero. The
   2345                                            data '1' indicates the version as 0,
   2346                                            '0' indicates version other than 0. */
   2347     bcmFieldQualifyGpePktVersionZero = 740, /* Match on Gpe Version Zero. The data
   2348                                            '1' indicates the version as 0, '0'
   2349                                            indicates version other than 0. */
   2350     bcmFieldQualifyGenevePktWithOam = 741, /* Match on BFD over Geneve Packet. */
   2351     bcmFieldQualifyGpePktWithOam = 742, /* Match on BFD over Gpe Packet. */
   2352     bcmFieldQualifyInnerBfdPktVersionOne = 743, /* Match on Inner BFD Version One. The
   2353                                            data '1' indicates the ersion as 1, 0
   2354                                            indicates version other than 1. */
   2355     bcmFieldQualifyPktDstAddrType = 744, /*  Match on Packet destination address
   2356                                            type. */
   2357     bcmFieldQualifyPktInnerDstAddrType = 745, /*  Match on Packet inner destination
   2358                                            address type. */
   2359     bcmFieldQualifyInnerL4Ports = 746,  /*  Four bytes after Inner L3 header are
   2360                                            available. */
   2361     bcmFieldQualifyTafEnable = 747,     /* Qualifies on TAF (Time Aware
   2362                                            Filtering) enable */
   2363     bcmFieldQualifyTafGateId = 748,     /* Qualifies on TAF(Time Aware
   2364                                            Filtering) gate id */
   2365     bcmFieldQualifyTafGateState = 749,  /* Qualifies on TAF(Time Aware
   2366                                            Filtering) gate state */
   2367     bcmFieldQualifyTafCosProfile = 750, /* Qualifies on TAF(Time Aware
   2368                                            Filtering) CoS profile */
   2369     bcmFieldQualifyElkRangeL4DstPort = 751, /* Qualifies for L4 Dst port of ELK
   2370                                            range */
   2371     bcmFieldQualifyElkRangeL4SrcPort = 752, /* Qualifies for L4 Src port of ELK
   2372                                            range */
   2373     bcmFieldQualifyIp6PktNextHeader = 753, /* Qualifies for Next Header protocol
   2374                                            field in IPv6 header. */
   2375     bcmFieldQualifyIp6PktHopLimit = 754, /* Qualifies for Hop limit protocol
   2376                                            field in IPv6 header. */
   2377     bcmFieldQualifyIp6PktTrafficClass = 755, /* Qualifies for Traffic Class protocol
   2378                                            field in IPv6 header. */
   2379     bcmFieldQualifyInnerIp6PktNextHeader = 756, /* Qualifies for Next Header protocol
   2380                                            field in Inner IPv6 header. */
   2381     bcmFieldQualifyInnerIp6PktHopLimit = 757, /* Qualifies for Hop limit protocol
   2382                                            field in Inner IPv6 header. */
   2383     bcmFieldQualifyInnerIp6PktTrafficClass = 758, /* Qualifies for Traffic Class protocol
   2384                                            field in Inner IPv6 header. */
   2385     bcmFieldQualifyIpTunnelTtl = 759,   /* Qualifies on outer TTL for IP Tunnels
   2386                                            and Vxlan */
   2387     bcmFieldQualifyIpTunnelTtlClassZero = 760, /* Qualifies on outer TTL class for IP
   2388                                            Tunnels and Vxlan */
   2389     bcmFieldQualifyRangeCheckGroup = 761, /*  Range Group Identifier for a set of
   2390                                            Range IDs. */
   2391     bcmFieldQualifyFlowtrackerGroupId = 762, /* Qualifies on Flow group id
   2392                                            assigned(bcmFieldActionFlowtrackerGroupId)
   2393                                            by FlowTracker based Field Processor
   2394                                            Stage. */
   2395     bcmFieldQualifyFlowtrackerClassId = 763, /* Qualifies on Classifier ID from
   2396                                            Flowtracker group */
   2397     bcmFieldQualifyFlowtrackerGroupValid = 764, /* Qualifies on event Flowtracker group
   2398                                            valid status */
   2399     bcmFieldQualifyFlowtrackerDisabled = 765, /* Qualifies on event whether
   2400                                            Flowtracker flow tracking is
   2401                                            disabled. */
   2402     bcmFieldQualifyFlowtrackerMeteringExceeded = 766, /* Qualifies on the event whether
   2403                                            Flowtracker metering is exceeded. */
   2404     bcmFieldQualifyFlowtrackerCollectorCopy = 767, /* Qualifies on the event whether
   2405                                            initial or sample copied to collector
   2406                                            happened by Flowtracker. */
   2407     bcmFieldQualifyFlowtrackerFlowTableFull = 768, /* Qualifies on the Flowtracker event
   2408                                            whether the flow table is full. */
   2409     bcmFieldQualifyFlowtrackerGroupFlowExceeded = 769, /* Qualifies on the event whether flow
   2410                                            limit for Flowtracker is exceeded. */
   2411     bcmFieldQualifyFlowtrackerExportQueueFull = 770, /* Qualifies on the event whether
   2412                                            Flowtracker export queue is full. */
   2413     bcmFieldQualifyOpaqueTagType = 771, /* Qualifies on the tag type configured
   2414                                            for opaque tags. */
   2415     bcmFieldQualifyOpaqueTagHigh = 772, /* Qualifies on the higher 32 bits of
   2416                                            opaque tag. */
   2417     bcmFieldQualifyOpaqueTagLow = 773,  /* Qualifies on the lower 32 bits of
   2418                                            opaque tag. */
   2419     bcmFieldQualifyInnerDosAttack = 774, /* Denial of Service attack in inner
   2420                                            headers of frame. */
   2421     bcmFieldQualifyDosAttackEvents = 775, /* Qualifies on the dos attack events in
   2422                                            outer header of frame. */
   2423     bcmFieldQualifyInnerDosAttackEvents = 776, /* Qualifies on the dos attack events in
   2424                                            inner header of frame. */
   2425     bcmFieldQualifySrcTMPort = 777,     /* Qualifies on source TM port. */
   2426     bcmFieldQualifyContainer = 778,     /* This qualifier will be used as
   2427                                            container in IPMF3, to receive the
   2428                                            action buffer, when performing
   2429                                            cascading between IPMF2 and IPMF3. */
   2430     bcmFieldQualifyEgressForwardingClassId = 779, /* Qualifies on the Class Identifier
   2431                                            assigned by Egress Adaptation
   2432                                            forwarding tables. */
   2433     bcmFieldQualifyPktFlowType = 780,   /* Psuedo Qualifier to define the flow
   2434                                            for the rules configured to match on
   2435                                            qualifiers related to zone match Ids. */
   2436     bcmFieldQualifyVlanTranslateClassId = 781, /* Qualifies on the Class Identifier
   2437                                            assigned by Vlan Translate tables. */
   2438     bcmFieldQualifyIpIdentifier = 782,  /* Qualifies on 16-bits Identifier field
   2439                                            available in IP Header. */
   2440     bcmFieldQualifyTcpWindowSize = 783, /* Qualifies on the Tcp Window protocol
   2441                                            field in TCP header of the packet. */
   2442     bcmFieldQualifyIp4Length = 784,     /* Qualifies on the total length
   2443                                            protocol field of IPv4 header of the
   2444                                            packet. */
   2445     bcmFieldQualifyIp6Length = 785,     /* Qualifies on the payload Length
   2446                                            protocol field of IPv6 header of the
   2447                                            packet. */
   2448     bcmFieldQualifyTunnelPayloadIp4Length = 786, /* Qualifies on the total length
   2449                                            protocol field of inner IPv4 header
   2450                                            of the packet. */
   2451     bcmFieldQualifyTunnelPayloadIp6Length = 787, /* Qualifies on the payload Length
   2452                                            protocol field of inner IPv6 header
   2453                                            of the packet. */
   2454     bcmFieldQualifyGbpPresent = 788,    /* When set matches on GBP Presence. */
   2455     bcmFieldQualifyHiGigGbpPresent = 789, /* When set matches on presence of GBP
   2456                                            Source ID, present after L2 Tag,
   2457                                            carried to the remote device, via
   2458                                            HiGig.. */
   2459     bcmFieldQualifyGbpSrcId = 790,      /* Qualifies on the GBP Source ID of the
   2460                                            packet. */
   2461     bcmFieldQualifyVxlanGbpPresent = 791, /* When set matches on Vxlan GBP
   2462                                            presence flag. */
   2463     bcmFieldQualifyFlowtrackerCheck = 792, /* Qualifies on the results of
   2464                                            Flowtracker checker events in Flow
   2465                                            Tracker Module. */
   2466     bcmFieldQualifyFlowtrackerLearn = 793, /* Match on packet which was learnt by
   2467                                            Flowtracker module */
   2468     bcmFieldQualifyCosMapSelect = 794,  /* Match on the COS map type */
   2469     bcmFieldQualifyOpaqueObject1 = 795, /* Matches on Opaque Object1 */
   2470     bcmFieldQualifyOpaqueObject2 = 796, /* Matches on Opaque Object2 */
   2471     bcmFieldQualifyOpaqueObject3 = 797, /* Matches on Opaque Object3 */
   2472     bcmFieldQualifyOpaqueObject4 = 798, /* Matches on Opaque Object4 */
   2473     bcmFieldQualifyIncomingOuterVlanId = 799, /* Qualifies on the packet?s Incoming
   2474                                            Outer VLAN ID */
   2475     bcmFieldQualifyGbpDstId = 800,      /* Qualifies on the GBP Destination ID
   2476                                            of the packet */
   2477     bcmFieldQualifyHiGigGbpSrcId = 801, /* Qualifies on GBP Source ID, present
   2478                                            after L2 Tag, carried to the remote
   2479                                            device, via HiGig. */
   2480     bcmFieldQualifyLoopbackSubtype = 802, /* Qualifies on subtype of the Loopback
   2481                                            header */
   2482     bcmFieldQualifyPphPresent = 803,    /* Qualifies on PPH present field in
   2483                                            ITMH. */
   2484     bcmFieldQualifyPacketProcessingInVportClass = 804, /* Qualifies on PPH In-LIF profile. */
   2485     bcmFieldQualifyUDHBase0 = 805,      /* Qualifies UDH0 base value */
   2486     bcmFieldQualifyUDHBase1 = 806,      /* Qualifies UDH1 base value */
   2487     bcmFieldQualifyUDHBase2 = 807,      /* Qualifies UDH2 base value */
   2488     bcmFieldQualifyUDHBase3 = 808,      /* Qualifies UDH3 base value */
   2489     bcmFieldQualifyNetworkQos = 809,    /* Qualify Upon Network Qos. */
   2490     bcmFieldQualifyAceEntryId = 810,    /* Qualify Upon ACE entry ID. */
   2491     bcmFieldQualifyIp4Protocol = 811,   /* Qualify Upon IPv4 Protocol. */
   2492     bcmFieldQualifyIp4Tos = 812,        /* Qualify Upon IPv4 TOS. */
   2493     bcmFieldQualifyIp4Ttl = 813,        /* Qualify Upon IPv4 TTL. */
   2494     bcmFieldQualifyInVportDataIndex = 814, /* Qualifies upon the ingress logical
   2495                                            port data index. */
   2496     bcmFieldQualifyEtherTypeUntagged = 815, /*  Ethernet Type, only for untagged
   2497                                            frames. */
   2498     bcmFieldQualifyNetworkLoadBalanceKeyInitial = 816, /* Qualifies on the initial Network Load
   2499                                            Balancing key. */
   2500     bcmFieldQualifyNetworkLoadBalanceKey = 817, /* Qualifies on the Network Load
   2501                                            Balancing key, after ingress PMF1
   2502                                            stage */
   2503     bcmFieldQualifyEcmpLoadBalanceKey0Initial = 818, /* Qualifies on the initial ECMP Load
   2504                                            Balancing key 0. */
   2505     bcmFieldQualifyEcmpLoadBalanceKey0 = 819, /* Qualifies on the ECMP Load Balancing
   2506                                            key 0, after ingress PMF1 stage */
   2507     bcmFieldQualifyEcmpLoadBalanceKey1Initial = 820, /* Qualifies on the initial ECMP Load
   2508                                            Balancing key 1. */
   2509     bcmFieldQualifyEcmpLoadBalanceKey1 = 821, /* Qualifies on the ECMP Load Balancing
   2510                                            key 1, after ingress PMF1 stage */
   2511     bcmFieldQualifyEcmpLoadBalanceKey2Initial = 822, /* Qualifies on the initial ECMP Load
   2512                                            Balancing key 2. */
   2513     bcmFieldQualifyEcmpLoadBalanceKey2 = 823, /* Qualifies on the ECMP Load Balancing
   2514                                            key 2, after ingress PMF1 stage */
   2515     bcmFieldQualifyTrunkLoadBalanceKeyInitial = 824, /* Qualifies on the initial LAG Load
   2516                                            Balancing Key */
   2517     bcmFieldQualifyStateTableKey = 825, /* Qualifies on the memory index which
   2518                                            the state data is set */
   2519     bcmFieldQualifyStateTableData = 826, /* Qualifies on the state table payload. */
   2520     bcmFieldQualifyCompareKeysResult0 = 827, /* Qualifies on the Result of comapring
   2521                                            the first pair of initial keys */
   2522     bcmFieldQualifyCompareKeysResult1 = 828, /* Qualifies on the Result of comapring
   2523                                            the second pair of initial keys */
   2524     bcmFieldQualifyCompareKeysTcam0 = 829, /* Qualifies on the Result of comapring
   2525                                            inital key and TCAM result 0 */
   2526     bcmFieldQualifyCompareKeysTcam1 = 830, /* Qualifies on the Result of comapring
   2527                                            inital key and TCAM result 1. */
   2528     bcmFieldQualifyLayerRecordType = 831, /* Qualifies on the Layer Record Type. */
   2529     bcmFieldQualifyLayerRecordOffset = 832, /* Qualifies on the Layer Record Offset. */
   2530     bcmFieldQualifyLayerRecordQualifier = 833, /* Qualifies on the Layer Record
   2531                                            Qualfier (info). */
   2532     bcmFieldQualifyUDHBase = 834,       /* User define header base, used in
   2533                                            IPMF3. */
   2534     bcmFieldQualifyForwardingLayerIndex = 835, /* Qualifies on the Forwarding Layer
   2535                                            Index. */
   2536     bcmFieldQualifyIPTProfile = 836,    /* Qualifies upon IPT Profile. */
   2537     bcmFieldQualifyAcInLifWideData = 837, /* Qualifies on the Ac in-lif
   2538                                            wide(generic) data */
   2539     bcmFieldQualifyNativeAcInLifWideData = 838, /* Qualifies on the native Ac in-lif
   2540                                            wide(generic) data */
   2541     bcmFieldQualifyForwardingProfile = 839, /* Qualifies on the Forwarding Profile. */
   2542     bcmFieldQualifyContextId = 840,     /* Qualifies on the Context Id. */
   2543     bcmFieldQualifyForwardingLayerQualifier = 841, /* Qualifies on the Forwarding Layer
   2544                                            Qualifier. */
   2545     bcmFieldQualifyTracePacket = 842,   /* Qualifies on the Trace Packet. */
   2546     bcmFieldQualifyTrunkLoadBalanceKey = 843, /* Qualifies on the LAG Load Balancing
   2547                                            Key. */
   2548     bcmFieldQualifyForward = 844,       /* Raw data for detination. */
   2549     bcmFieldQualifyParsingStartType = 845, /* Qualifies on the layer type that
   2550                                            egress parser should consider. */
   2551     bcmFieldQualifyParsingStartOffset = 846, /* Qualifies on which offset egress
   2552                                            parser should start parsing. */
   2553     bcmFieldQualifyUDHData0 = 847,      /* Qualifies on user defined header 0
   2554                                            data. */
   2555     bcmFieldQualifyUDHData1 = 848,      /* Qualifies on user defined header 1
   2556                                            data. */
   2557     bcmFieldQualifyUDHData2 = 849,      /* Qualifies on user defined header 2
   2558                                            data. */
   2559     bcmFieldQualifyUDHData3 = 850,      /* Qualifies on user defined header 3
   2560                                            data. */
   2561     bcmFieldQualifyRxSnoopStrength = 851, /* Qualifies on Snoop strength. */
   2562     bcmFieldQualifyRxSnoopCode = 852,   /* Qualifies on Snoop code. */
   2563     bcmFieldQualifyVisibility = 853,    /* Qualifies on whether visibility is
   2564                                            set. */
   2565     bcmFieldQualifyVisibilityClear = 854, /* Qualifies on whether visibility is
   2566                                            clear. */
   2567     bcmFieldQualifyEthernetMulticast = 855, /* Qualify on Ethernet packets which
   2568                                            destination MAC address is multicast
   2569                                            (MAC-DA[40] is set). */
   2570     bcmFieldQualifyEthernetBroadcast = 856, /* Qualify on Ethernet packets which
   2571                                            destination MAC address is broadcast
   2572                                            (MAC-DA[47:0] is all 1). */
   2573     bcmFieldQualifyEthernetFirstTpidExist = 857, /* Qualify on Ethernet packets which
   2574                                            their first Vlan TPID exists. */
   2575     bcmFieldQualifyEthernetFirstTpidIndex = 858, /* Qualify on Ethernet packets  first
   2576                                            Vlan TPID Index. */
   2577     bcmFieldQualifyEthernetSecondTpidExist = 859, /* Qualify on Ethernet packets which
   2578                                            their second Vlan TPID exists. */
   2579     bcmFieldQualifyEthernetSecondTpidIndex = 860, /* Qualify on Ethernet packets second
   2580                                            Vlan TPID Index. */
   2581     bcmFieldQualifyEthernetThirdTpidExist = 861, /* Qualify on Ethernet packets which
   2582                                            their third Vlan TPID exists. */
   2583     bcmFieldQualifyEthernetThirdTpidIndex = 862, /* Qualify on Ethernet packets  third
   2584                                            Vlan TPID Index. */
   2585     bcmFieldQualifyIpHasOptions = 863,  /* Qualify on IPv4 packets where the IP
   2586                                            Header include options. */
   2587     bcmFieldQualifyIpFirstFrag = 864,   /* Qualify on IPv4 packets where the IP
   2588                                            Header is fragmented and this is the
   2589                                            first fragment. */
   2590     bcmFieldQualifyIpTunnelType = 865,  /* Qualify on IPv4 TunnelType
   2591                                            (bcmFieldTunnelXXX). */
   2592     bcmFieldQualifyIp6MulticastCompatible = 866, /* Qualify on IPv6 packets which their
   2593                                            DIP is Multicast (8msb are 0xFF). */
   2594     bcmFieldQualifyIp6FirstAdditionalHeaderExist = 867, /* Qualify on IPv6 packets first
   2595                                            additional header exists. */
   2596     bcmFieldQualifyItmhExtensionExist = 868, /* Qualify if Ingress TM Header
   2597                                            extension exists. */
   2598     bcmFieldQualifyItmhDestinationFec = 869, /* Qualify if Ingress TM Header
   2599                                            destination is FEC. */
   2600     bcmFieldQualifyItmhPphType = 870,   /* Qualify on Ingress TM Header PPH
   2601                                            type. */
   2602     bcmFieldQualifyStatSamplingCode = 871, /* Qualify on Statistic Sampling code
   2603                                            value. */
   2604     bcmFieldQualifyStatSamplingQualifier = 872, /* Qualify on Statistic Sampling
   2605                                            qualifier value. */
   2606     bcmFieldQualifyRpfEcmpMode = 873,   /* Qualify on RPF ECMP MODE value. */
   2607     bcmFieldQualifyStatOamLM = 874,     /* Qualify on OAM LM counter value. */
   2608     bcmFieldQualifyInInterface = 875,   /* Qualify on the in LIF encoded as
   2609                                            interface. */
   2610     bcmFieldQualifyOutInterface = 876,  /* Qualify on the out LIF encoded as
   2611                                            interface */
   2612     bcmFieldQualifyInVportClass = 877,  /* Qualify on the profile of an in LIF
   2613                                            encoded as Gport. */
   2614     bcmFieldQualifyOutVportClass = 878, /* Qualify on the profile of an out LIF
   2615                                            encoded as Gport. */
   2616     bcmFieldQualifyInterfaceClass = 879, /* Qualify on the profile of a LIF
   2617                                            encoded as interface. */
   2618     bcmFieldQualifyPortClassPacketProcessing = 880, /* Qualify on the profile of a packet
   2619                                            processing port. */
   2620     bcmFieldQualifyPortClassTrafficManagement = 881, /* Qualify on the profile of a traffic
   2621                                            management port. */
   2622     bcmFieldQualifyOutPortTrafficManagement = 882, /* Qualify upon out-TM port. */
   2623     bcmFieldQualifyMulticastRpfMode = 883, /* Qualify upon Multicast RPF Mode. */
   2624     bcmFieldQualifyTpid = 884,          /* Qualify upon VLAN TPID. */
   2625     bcmFieldQualifyVlanId = 885,        /* Qualify upon VLAN  tag Id. */
   2626     bcmFieldQualifyVlanPri = 886,       /* Qualify upon VLAN priority. */
   2627     bcmFieldQualifyVlanCfi = 887,       /* Qualify upon VLAN Cfi. */
   2628     bcmFieldQualifyVlanPriCfi = 888,    /* Qualify upon VLAN Cfi+Pri (4 bits). */
   2629     bcmFieldQualifyVlan = 889,          /* Qualify upon VLAN Tag. */
   2630     bcmFieldQualifyMplsLabel = 890,     /* Qualify upon MPLS Label. */
   2631     bcmFieldQualifyMplsLabelId = 891,   /* Qualify upon ID field of the MPLS
   2632                                            Label. */
   2633     bcmFieldQualifyMplsLabelTtl = 892,  /* Qualify upon TTL field of the MPLS
   2634                                            Label. */
   2635     bcmFieldQualifyMplsLabelBos = 893,  /* Qualify upon BOS field of the MPLS
   2636                                            Label. */
   2637     bcmFieldQualifyMplsLabelExp = 894,  /* Qualify upon EXP field of the MPLS
   2638                                            Label. */
   2639     bcmFieldQualifyInVPort0 = 895,      /*  Ingress virtual port 0. */
   2640     bcmFieldQualifyInVPort1 = 896,      /*  Ingress virtual port 1. */
   2641     bcmFieldQualifyOutVPort0 = 897,     /*  Egress virtual port 0. */
   2642     bcmFieldQualifyOutVPort1 = 898,     /*  Egress virtual port 1. */
   2643     bcmFieldQualifyOutVPort2 = 899,     /*  Egress virtual port 2. */
   2644     bcmFieldQualifyOutVPort3 = 900,     /*  Egress virtual port 3. */
   2645     bcmFieldQualifyBierStringOffset = 901, /* Qualifies upon Bier string offset. */
   2646     bcmFieldQualifyBierStringSize = 902, /* Qualifies upon Bier string size. */
   2647     bcmFieldQualifyPacketIsBier = 903,  /* Qualifies upon Bier packets. */
   2648     bcmFieldQualifyPortClassPacketProcessingGeneralData = 904, /* Qualify on the general data profile
   2649                                            of a packet processing port. */
   2650     bcmFieldQualifyForwardingAdditionalInfo = 905, /* Qualifies on the Forwarding
   2651                                            additional info. */
   2652     bcmFieldQualifyInVportClass0 = 906, /* Qualify on the profile of an in LIF
   2653                                            encoded as Gport. */
   2654     bcmFieldQualifyInVportClass1 = 907, /* Qualify on the profile of an in LIF
   2655                                            encoded as Gport. */
   2656     bcmFieldQualifyStatId0 = 908,       /* Qualifies on statistics ID 0. */
   2657     bcmFieldQualifyStatId1 = 909,       /* Qualifies on statistics ID 1. */
   2658     bcmFieldQualifyStatId2 = 910,       /* Qualifies on statistics ID 2. */
   2659     bcmFieldQualifyStatId3 = 911,       /* Qualifies on statistics ID 3. */
   2660     bcmFieldQualifyStatId4 = 912,       /* Qualifies on statistics ID 4. */
   2661     bcmFieldQualifyStatId5 = 913,       /* Qualifies on statistics ID 5. */
   2662     bcmFieldQualifyStatId6 = 914,       /* Qualifies on statistics ID 6. */
   2663     bcmFieldQualifyStatId7 = 915,       /* Qualifies on statistics ID 7. */
   2664     bcmFieldQualifyStatId8 = 916,       /* Qualifies on statistics ID 8. */
   2665     bcmFieldQualifyStatId9 = 917,       /* Qualifies on statistics ID 9. */
   2666     bcmFieldQualifyStatProfile0 = 918,  /* Qualifies on statistics profile 0. */
   2667     bcmFieldQualifyStatProfile1 = 919,  /* Qualifies on statistics profile 1. */
   2668     bcmFieldQualifyStatProfile2 = 920,  /* Qualifies on statistics profile 2. */
   2669     bcmFieldQualifyStatProfile3 = 921,  /* Qualifies on statistics profile 3. */
   2670     bcmFieldQualifyStatProfile4 = 922,  /* Qualifies on statistics profile 4. */
   2671     bcmFieldQualifyStatProfile5 = 923,  /* Qualifies on statistics profile 5. */
   2672     bcmFieldQualifyStatProfile6 = 924,  /* Qualifies on statistics profile 6. */
   2673     bcmFieldQualifyStatProfile7 = 925,  /* Qualifies on statistics profile 7. */
   2674     bcmFieldQualifyStatProfile8 = 926,  /* Qualifies on statistics profile 8. */
   2675     bcmFieldQualifyStatProfile9 = 927,  /* Qualifies on statistics profile 9. */
   2676     bcmFieldQualifyExtStat0 = 928,      /* Qualifies on External Statistics ID
   2677                                            0. */
   2678     bcmFieldQualifyExtStat1 = 929,      /* Qualifies on External Statistics ID
   2679                                            1. */
   2680     bcmFieldQualifyExtStat2 = 930,      /* Qualifies on External Statistics ID
   2681                                            2. */
   2682     bcmFieldQualifyExtStat3 = 931,      /* Qualifies on External Statistics ID
   2683                                            3. */
   2684     bcmFieldQualifyExtStatProfile0 = 932, /* Qualifies on External Statistics
   2685                                            profile 0. */
   2686     bcmFieldQualifyExtStatProfile1 = 933, /* Qualifies on External Statistics
   2687                                            profile 1. */
   2688     bcmFieldQualifyExtStatProfile2 = 934, /* Qualifies on External Statistics
   2689                                            profile 2. */
   2690     bcmFieldQualifyExtStatProfile3 = 935, /* Qualifies on External Statistics
   2691                                            profile 3. */
   2692     bcmFieldQualifyStatMetaData = 936,  /* Qualifies on Statistics meta data. */
   2693     bcmFieldQualifyDstL3EgressUnderlay = 937, /*  Qualifies on Underlay destination
   2694                                            egress object id. */
   2695     bcmFieldQualifyDstL3EgressNextHopsUnderlay = 938, /*  Consecutive Underlay L3 Egress Next
   2696                                            hops. */
   2697     bcmFieldQualifyEgressClassPort = 939, /* Qualifies on Class ID assigned to
   2698                                            packet based on Egress Port. The
   2699                                            class ID is assigned to egress port
   2700                                            using bcm_port_class_set(unit, port,
   2701                                            bcmPortClassEgress, class_id); */
   2702     bcmFieldQualifyINTProbeMarker1 = 940, /* Qualifies on INT Prober Marker1
   2703                                            field. */
   2704     bcmFieldQualifyINTProbeMarker2 = 941, /* Qualifies on INT Prober Marker2
   2705                                            field. */
   2706     bcmFieldQualifyINTReserved4Bytes = 942, /* Qualifies on INT Reserved 4 bytes
   2707                                            after Prober Marker2 field in the INT
   2708                                            header. */
   2709     bcmFieldQualifyInVPort0Raw = 943,   /* Qualifies on In LIF 0 raw value. */
   2710     bcmFieldQualifyInVPort1Raw = 944,   /* Qualifies on In LIF 1 raw value. */
   2711     bcmFieldQualifyOutVPort0Raw = 945,  /* Qualifies on Out LIF 0 raw value. */
   2712     bcmFieldQualifyOutVPort1Raw = 946,  /* Qualifies on Out LIF 1 raw value. */
   2713     bcmFieldQualifyOutVPort2Raw = 947,  /* Qualifies on Out LIF 2 raw value. */
   2714     bcmFieldQualifyOutVPort3Raw = 948,  /* Qualifies on Out LIF 3 raw value. */
   2715     bcmFieldQualifyAppTypePredefined = 949, /* Qualifies on predefined AppType. */
   2716     bcmFieldQualifyFlowControlType = 950, /* Indicates the type of Flow control
   2717                                            packet. */
   2718     bcmFieldQualifyTimeStampTxPktType = 951, /* Matches on Tx Timestamp packet type. */
   2719     bcmFieldQualifySysHdrLocalDstport = 952, /* Matches on System Header Local
   2720                                            Destination port. */
   2721     bcmFieldQualifyCount = 953          /* Always Last. Not a usable value. */
   2722 } bcm_field_qualify_t;
   2723 
   2724 #define BCM_FIELD_QUALIFY_STRINGS \
   2725 { \
   2726     "SrcIp6", \
   2727     "DstIp6", \
   2728     "SrcIp6High", \
   2729     "DstIp6High", \
   2730     "SrcIp6Low", \
   2731     "DstIp6Low", \
   2732     "SrcMac", \
   2733     "DstMac", \
   2734     "Snap", \
   2735     "SrcIp", \
   2736     "DstIp", \
   2737     "Llc", \
   2738     "InPort", \
   2739     "InPorts", \
   2740     "OutPorts", \
   2741     "Drop", \
   2742     "Ip6FlowLabel", \
   2743     "OuterVlan", \
   2744     "OuterVlanId", \
   2745     "OuterVlanPri", \
   2746     "OuterVlanCfi", \
   2747     "InnerVlan", \
   2748     "InnerVlanId", \
   2749     "InnerVlanPri", \
   2750     "InnerVlanCfi", \
   2751     "LookupStatus", \
   2752     "RangeCheck", \
   2753     "L4SrcPort", \
   2754     "L4DstPort", \
   2755     "EtherType", \
   2756     "IpProtocol", \
   2757     "DSCP", \
   2758     "Ttl", \
   2759     "SrcModid", \
   2760     "SrcPortTgid", \
   2761     "SrcPort", \
   2762     "SrcTrunk", \
   2763     "SrcTrunkMemberGport", \
   2764     "DstModid", \
   2765     "DstPortTgid", \
   2766     "DstPort", \
   2767     "DstTrunk", \
   2768     "TcpControl", \
   2769     "PacketRes", \
   2770     "PacketFormat", \
   2771     "SrcClassL2", \
   2772     "SrcClassL3", \
   2773     "SrcClassField", \
   2774     "DstClassL2", \
   2775     "DstClassL3", \
   2776     "DstClassField", \
   2777     "IpInfo", \
   2778     "IpProtocolCommon", \
   2779     "MHOpcode", \
   2780     "IpFlags", \
   2781     "InnerTpid", \
   2782     "OuterTpid", \
   2783     "InnerIpType", \
   2784     "TunnelType", \
   2785     "LoopbackType", \
   2786     "Loopback", \
   2787     "IpType", \
   2788     "ForwardingType", \
   2789     "Decap", \
   2790     "HiGig", \
   2791     "HiGigProxy", \
   2792     "DstHiGig", \
   2793     "Stage", \
   2794     "StageIngress", \
   2795     "StageIngressSecurity", \
   2796     "StageIngressQoS", \
   2797     "StageLookup", \
   2798     "StageEgress", \
   2799     "StageEgressSecurity", \
   2800     "StageExternal", \
   2801     "Deprecated75", \
   2802     "Deprecated76", \
   2803     "TcpSequenceZero", \
   2804     "TcpHeaderSize", \
   2805     "InterfaceClassL2", \
   2806     "InterfaceClassL3", \
   2807     "InterfaceClassPort", \
   2808     "L3Routable", \
   2809     "IpFrag", \
   2810     "Vrf", \
   2811     "L3Ingress", \
   2812     "OutPort", \
   2813     "Ip4", \
   2814     "Ip6", \
   2815     "L2Format", \
   2816     "VlanFormat", \
   2817     "TranslatedVlanFormat", \
   2818     "ExtensionHeaderType", \
   2819     "ExtensionHeaderSubCode", \
   2820     "ExtensionHeader2Type", \
   2821     "L4Ports", \
   2822     "MirrorCopy", \
   2823     "TunnelTerminated", \
   2824     "MplsTerminated", \
   2825     "InnerSrcIp", \
   2826     "InnerDstIp", \
   2827     "InnerSrcIp6", \
   2828     "InnerDstIp6", \
   2829     "InnerSrcIp6High", \
   2830     "InnerDstIp6High", \
   2831     "InnerTtl", \
   2832     "InnerTos", \
   2833     "InnerIpProtocol", \
   2834     "InnerIpFrag", \
   2835     "VlanTranslationHit", \
   2836     "ForwardingVlanValid", \
   2837     "IngressStpState", \
   2838     "L2SrcHit", \
   2839     "L2SrcStatic", \
   2840     "L2DestHit", \
   2841     "L2StationMove", \
   2842     "L2CacheHit", \
   2843     "L3SrcHostHit", \
   2844     "L3DestHostHit", \
   2845     "L3DestRouteHit", \
   2846     "IpmcStarGroupHit", \
   2847     "DosAttack", \
   2848     "Deprecated122", \
   2849     "ClassId", \
   2850     "Deprecated124", \
   2851     "IcmpTypeCode", \
   2852     "Deprecated126", \
   2853     "InnerIpProtocolCommon", \
   2854     "InnerL4SrcPort", \
   2855     "InnerL4DstPort", \
   2856     "InnerIp6FlowLabel", \
   2857     "DstL3Egress", \
   2858     "DstMulticastGroup", \
   2859     "SrcMplsGport", \
   2860     "DstMplsGport", \
   2861     "SrcMimGport", \
   2862     "DstMimGport", \
   2863     "SrcWlanGport", \
   2864     "DstWlanGport", \
   2865     "SrcModPortGport", \
   2866     "SrcModuleGport", \
   2867     "Color", \
   2868     "IntPriority", \
   2869     "ForwardingVlanId", \
   2870     "Vpn", \
   2871     "FlowId", \
   2872     "InVPort", \
   2873     "OutVPort", \
   2874     "FibreChanOuter", \
   2875     "FibreChanInner", \
   2876     "VnTag", \
   2877     "CnTag", \
   2878     "FabricQueueTag", \
   2879     "MyStationHit", \
   2880     "DstMultipath", \
   2881     "L2PayloadFirstEightBytes", \
   2882     "SrcVirtualPortValid", \
   2883     "DstL3EgressNextHops", \
   2884     "RecoverableDrop", \
   2885     "RepCopy", \
   2886     "IpTunnelHit", \
   2887     "MplsLabel1Hit", \
   2888     "TrillEgressRbridgeHit", \
   2889     "L2GreSrcIpHit", \
   2890     "MimSrcGportHit", \
   2891     "MplsLabel2Hit", \
   2892     "TrillIngressRbridgeHit", \
   2893     "L2GreVfiHit", \
   2894     "MimVfiHit", \
   2895     "GenericAssociatedChannelLabelValid", \
   2896     "RouterAlertLabelValid", \
   2897     "DstIpLocal", \
   2898     "NormalizeIpAddrs", \
   2899     "NormalizeMacAddrs", \
   2900     "IpAddrsNormalized", \
   2901     "MacAddrsNormalized", \
   2902     "MplsForwardingLabel", \
   2903     "MplsForwardingLabelTtl", \
   2904     "MplsForwardingLabelBos", \
   2905     "MplsForwardingLabelExp", \
   2906     "MplsForwardingLabelId", \
   2907     "MplsControlWord", \
   2908     "Rtag7AHashUpper", \
   2909     "Rtag7AHashLower", \
   2910     "Rtag7BHashUpper", \
   2911     "Rtag7BHashLower", \
   2912     "MplsForwardingLabelAction", \
   2913     "MplsControlWordValid", \
   2914     "EgressClass", \
   2915     "EgressClassL3Interface", \
   2916     "EgressClassTrill", \
   2917     "EgressClassWlan", \
   2918     "EgressClassL2Gre", \
   2919     "LlidValue", \
   2920     "CpuQueue", \
   2921     "Mpls", \
   2922     "SrcGport", \
   2923     "HeaderFormat", \
   2924     "HeaderFormatSet", \
   2925     "L2Learn", \
   2926     "PortOrientation", \
   2927     "EcnValue", \
   2928     "RxTrapCode", \
   2929     "Ptch", \
   2930     "MplsBos", \
   2931     "RxTrapData", \
   2932     "PolicerIntPrio", \
   2933     "PacketTerminatedBytes", \
   2934     "BypassFilter", \
   2935     "ReplicantAny", \
   2936     "ReplicantFirst", \
   2937     "TrillEgressRbridge", \
   2938     "ISid", \
   2939     "InterfaceClassProcessingPort", \
   2940     "DstRpfGport", \
   2941     "TrunkHashResult", \
   2942     "Dhcp", \
   2943     "SnoopCopy", \
   2944     "ForwardCopy", \
   2945     "InterfaceClassVPort", \
   2946     "VPortRangeCheck", \
   2947     "PacketLengthRangeCheck", \
   2948     "StageIngressVlanTranslation", \
   2949     "StageIngressTunnelTerminated", \
   2950     "StageIngressMplsTerminated", \
   2951     "StageIngressIpTunnel", \
   2952     "StageIngressL2Src", \
   2953     "StageIngressL2Dest", \
   2954     "StageIngressL3SrcRoute", \
   2955     "StageIngressL3DestRoute", \
   2956     "StageIngressIpmc", \
   2957     "TunnelTerminatedHit", \
   2958     "MplsTerminatedHit", \
   2959     "L3SrcRouteHit", \
   2960     "IpmcHit", \
   2961     "VlanTranslationValue", \
   2962     "TunnelTerminatedValue", \
   2963     "MplsTerminatedValue", \
   2964     "IpTunnelValue", \
   2965     "L2SrcValue", \
   2966     "L2DestValue", \
   2967     "L3SrcRouteValue", \
   2968     "L3DestRouteValue", \
   2969     "IpmcValue", \
   2970     "LearnSrcMac", \
   2971     "LearnVlan", \
   2972     "LearnSrcPort", \
   2973     "PacketSize", \
   2974     "InnerSrcMac", \
   2975     "InnerDstMac", \
   2976     "InnerEtherType", \
   2977     "MplsLabel1", \
   2978     "MplsLabel1Ttl", \
   2979     "MplsLabel1Bos", \
   2980     "MplsLabel1Exp", \
   2981     "MplsLabel1Id", \
   2982     "MplsLabel2", \
   2983     "MplsLabel2Ttl", \
   2984     "MplsLabel2Bos", \
   2985     "MplsLabel2Exp", \
   2986     "MplsLabel2Id", \
   2987     "MplsLabel3", \
   2988     "MplsLabel3Ttl", \
   2989     "MplsLabel3Bos", \
   2990     "MplsLabel3Exp", \
   2991     "MplsLabel3Id", \
   2992     "CascadedKeyValue", \
   2993     "MplsOuterLabelPop", \
   2994     "MplsStationHitTunnelUnterminated", \
   2995     "IngressClassField", \
   2996     "IngressInterfaceClassPort", \
   2997     "ExternalValue0", \
   2998     "ExternalValue1", \
   2999     "ExternalValue2", \
   3000     "ExternalValue3", \
   3001     "ExternalHit0", \
   3002     "ExternalHit1", \
   3003     "ExternalHit2", \
   3004     "ExternalHit3", \
   3005     "VpnUnknownDstMacDstPort", \
   3006     "VxlanNetworkId", \
   3007     "VxlanFlags", \
   3008     "NatNeeded", \
   3009     "NatDstRealmId", \
   3010     "NatSrcRealmId", \
   3011     "IcmpError", \
   3012     "TunnelId", \
   3013     "ArpSenderIp4", \
   3014     "ArpTargetIp4", \
   3015     "ArpOpcode", \
   3016     "TranslatedOuterVlan", \
   3017     "TranslatedOuterVlanId", \
   3018     "TranslatedOuterVlanPri", \
   3019     "TranslatedOuterVlanCfi", \
   3020     "TranslatedInnerVlan", \
   3021     "TranslatedInnerVlanId", \
   3022     "TranslatedInnerVlanPri", \
   3023     "TranslatedInnerVlanCfi", \
   3024     "ConstantZero", \
   3025     "ConstantOne", \
   3026     "FibreChanRCtl", \
   3027     "FibreChanFCtl", \
   3028     "FibreChanCSCtl", \
   3029     "FibreChanDFCtl", \
   3030     "FibreChanType", \
   3031     "FibreChanSrcId", \
   3032     "FibreChanDstId", \
   3033     "FibreChanZoneCheck", \
   3034     "FibreChanSrcFpmaCheck", \
   3035     "FibreChanSrcBindCheck", \
   3036     "FibreChanVFTVersion", \
   3037     "FibreChanVFTPri", \
   3038     "FibreChanVFTFabricId", \
   3039     "FibreChanVFTHopCount", \
   3040     "FibreChanVFTVsanId", \
   3041     "FibreChanVFTVsanPri", \
   3042     "FibreChanVFTValid", \
   3043     "FcoeSOF", \
   3044     "FcoeVersionIsZero", \
   3045     "ForwardingHeaderOffset", \
   3046     "L3SrcBind", \
   3047     "ECid", \
   3048     "IngressECid", \
   3049     "ETag", \
   3050     "IngressVPortBridgeDisable", \
   3051     "HashValue", \
   3052     "IsEqualValue", \
   3053     "StageHash", \
   3054     "UrpfMode", \
   3055     "AppType", \
   3056     "SubportPktTag", \
   3057     "SrcVxlanGport", \
   3058     "DstVxlanGport", \
   3059     "OamMdl", \
   3060     "IntCongestionNotification", \
   3061     "SrcNivGport", \
   3062     "DstNivGport", \
   3063     "DstGport", \
   3064     "MirrorEgressDisabled", \
   3065     "BypassSrcMacFilter", \
   3066     "RxTrapCodeForSnoop", \
   3067     "IpmcStarGroupValue", \
   3068     "NativeVSwitch", \
   3069     "NativeVSwitchValid", \
   3070     "TrillIVersion", \
   3071     "TrillIngressRbridge", \
   3072     "TrillMultiDestination", \
   3073     "TrillOpLength", \
   3074     "TrillHopCount", \
   3075     "TrillPayload", \
   3076     "MplsForwardingLabelPayload", \
   3077     "IncomingIpIfClass", \
   3078     "L2GreProtocolType", \
   3079     "L2GreVsid", \
   3080     "L2GreFlowId", \
   3081     "MimVlanPri", \
   3082     "MimVlanCfi", \
   3083     "Fhei", \
   3084     "FheiSize", \
   3085     "EthernetOamHeaderBits0_31", \
   3086     "EthernetOamHeaderBits32_63", \
   3087     "EthernetOamDstClassL2", \
   3088     "EthernetOamTxPktUPMEP", \
   3089     "EthernetOamInterfaceClassNiv", \
   3090     "EthernetOamInterfaceClassMim", \
   3091     "EthernetOamInterfaceClassVxlan", \
   3092     "EthernetOamInterfaceClassVlan", \
   3093     "EthernetOamInterfaceClassPort", \
   3094     "EthernetOamClassVlanTranslateKeyFirst", \
   3095     "EthernetOamClassVlanTranslateKeySecond", \
   3096     "EthernetOamInterfaceClassMpls", \
   3097     "EthernetOamClassVpn", \
   3098     "MplsOamHeaderBits0_31", \
   3099     "MplsOamHeaderBits32_63", \
   3100     "MplsOamGALLabelOnly", \
   3101     "MplsOamUpperLabelDataDrop", \
   3102     "MplsOamGALExposed", \
   3103     "MplsOamACH", \
   3104     "MplsOamControlPktType", \
   3105     "MplsOamClassMplsSwitchLabel", \
   3106     "OamHeaderBits0_31", \
   3107     "OamHeaderBits32_63", \
   3108     "OamEgressClassVxlt", \
   3109     "OamEgressClassPort", \
   3110     "Udf", \
   3111     "OuterVlanActionRange", \
   3112     "InnerVlanActionRange", \
   3113     "IngressInterfaceClassVPort", \
   3114     "SrcVlanGport", \
   3115     "DstVlanGport", \
   3116     "OamType", \
   3117     "SrcVlanGports", \
   3118     "DstVlanGports", \
   3119     "SrcVxlanGports", \
   3120     "DstVxlanGports", \
   3121     "SrcWlanGports", \
   3122     "DstWlanGports", \
   3123     "SrcMplsGports", \
   3124     "DstMplsGports", \
   3125     "SrcGports", \
   3126     "DstGports", \
   3127     "SrcMimGports", \
   3128     "DstMimGports", \
   3129     "SrcNivGports", \
   3130     "DstNivGports", \
   3131     "SrcModPortGports", \
   3132     "LearnInVPort", \
   3133     "StackingRoute", \
   3134     "RxTrapStrength", \
   3135     "VxlanHeaderBits8_31", \
   3136     "VxlanHeaderBits56_63", \
   3137     "OamInLifIdValid", \
   3138     "OamInLifId", \
   3139     "OamUpMep", \
   3140     "OamSubtype", \
   3141     "OamHeaderOffset", \
   3142     "OamStampOffset", \
   3143     "OamMepId", \
   3144     "OamMeterDisable", \
   3145     "OamTsSystemHeader", \
   3146     "DstMulticastGroups", \
   3147     "InterfaceInPorts", \
   3148     "DestVirtualPortValid", \
   3149     "InVPortWide", \
   3150     "StageClass", \
   3151     "StageClassExactMatch", \
   3152     "FcoeOxID", \
   3153     "FcoeRxID", \
   3154     "IpProtocolClass", \
   3155     "EtherTypeClass", \
   3156     "L4SrcPortClass", \
   3157     "L4DstPortClass", \
   3158     "SrcIpClass", \
   3159     "SrcIpClassMsbNibble", \
   3160     "SrcIpClassLower", \
   3161     "SrcIpClassUpper", \
   3162     "SrcIp6Class", \
   3163     "SrcIp6ClassMsbNibble", \
   3164     "SrcIp6ClassLower", \
   3165     "SrcIp6ClassUpper", \
   3166     "FcoeOxIDClass", \
   3167     "DstIpClass", \
   3168     "DstIpClassMsbNibble", \
   3169     "DstIpClassLower", \
   3170     "DstIpClassUpper", \
   3171     "DstIp6Class", \
   3172     "DstIp6ClassMsbNibble", \
   3173     "DstIp6ClassLower", \
   3174     "DstIp6ClassUpper", \
   3175     "FcoeRxIDClass", \
   3176     "FibreChanSrcIdClass", \
   3177     "FibreChanSrcIdClassMsbNibble", \
   3178     "FibreChanSrcIdClassLower", \
   3179     "FibreChanSrcIdClassUpper", \
   3180     "FibreChanDstIdClass", \
   3181     "FibreChanDstIdClassMsbNibble", \
   3182     "FibreChanDstIdClassLower", \
   3183     "FibreChanDstIdClassUpper", \
   3184     "TcpClassZero", \
   3185     "TosClassZero", \
   3186     "TtlClassZero", \
   3187     "TcpClassOne", \
   3188     "TosClassOne", \
   3189     "TtlClassOne", \
   3190     "OuterVlanPriCfi", \
   3191     "ForwardHdrSrcMac", \
   3192     "ForwardHdrDstMac", \
   3193     "ForwardHdrVlanId", \
   3194     "DstSysPortExt", \
   3195     "StageIngressExactMatch", \
   3196     "LearnExtension", \
   3197     "IpFragNonOrFirst", \
   3198     "PacketLength", \
   3199     "GroupClass", \
   3200     "UdfClass", \
   3201     "InterfaceLookupClassPort", \
   3202     "HiGigDstMulticast", \
   3203     "HiGigDstMulticastGroupId", \
   3204     "HiGigTrafficClass", \
   3205     "HiGigDstModuleGport", \
   3206     "HiGigDstPortGport", \
   3207     "HiGigDstModPortGport", \
   3208     "HiGigSrcModuleGport", \
   3209     "HiGigSrcPortGport", \
   3210     "HiGigSrcModPortGport", \
   3211     "HiGigLoadBalanceID", \
   3212     "HiGigColor", \
   3213     "HiGigIntCongestionNotification", \
   3214     "HiGigIngressTagged", \
   3215     "HiGigDstTrunk", \
   3216     "HiGigDstTrunkId", \
   3217     "HiGigIngressL3SwitchPkt", \
   3218     "HiGigLabel", \
   3219     "HiGigReplicationId", \
   3220     "HiGigVlan", \
   3221     "HiGigPortFilteringMode", \
   3222     "HiGigSrcTrunk", \
   3223     "HiGigIngressClassificationTag", \
   3224     "HiGigEgressMcast", \
   3225     "HiGigVni", \
   3226     "HiGigDstGport", \
   3227     "HiGigMulticastIndex", \
   3228     "HiGigVpReplicationId", \
   3229     "HiGigSrcGport", \
   3230     "HiGigProtectionSwitchingStatus", \
   3231     "HiGigMirrorToVp", \
   3232     "HiGigDstType", \
   3233     "HiGigSrcType", \
   3234     "HiGigOffloadEngineClassificationTag", \
   3235     "HiGigOffloadEnginePktPriNew", \
   3236     "HiGigOffloadEngineDscpNew", \
   3237     "LoopBackQueue", \
   3238     "LoopBackSrcGport", \
   3239     "PktIsVisible", \
   3240     "LoopBackCpuMasqueradePktProfile", \
   3241     "LoopBackColor", \
   3242     "LoopBackTrafficClass", \
   3243     "LoopBackPacketProcessingPort", \
   3244     "MixedSrcClassId", \
   3245     "ITag", \
   3246     "InterfaceIngressKeySelectClassPort", \
   3247     "BfdYourDiscriminator", \
   3248     "CpuVisibilityPacket", \
   3249     "DstL2MulticastGroup", \
   3250     "DstL3MulticastGroup", \
   3251     "ExactMatchHitStatus", \
   3252     "ExactMatchActionClassId", \
   3253     "ExactMatchGroupClassId", \
   3254     "L2PayLoad", \
   3255     "CustomHeaderPkt", \
   3256     "CustomHeaderData", \
   3257     "MimlPkt", \
   3258     "MimlSrcMac", \
   3259     "MimlDstMac", \
   3260     "MimlVlan", \
   3261     "MimlVlanId", \
   3262     "MimlVlanPri", \
   3263     "MimlVlanCfi", \
   3264     "MimlInnerTag", \
   3265     "CapwapHdrType", \
   3266     "CapwapHdrRid", \
   3267     "CapwapPayloadSOF", \
   3268     "CapwapPayloadDstMac", \
   3269     "CapwapPayloadSrcMac", \
   3270     "CapwapPayloadEtherType", \
   3271     "CapwapPayloadOuterVlan", \
   3272     "CapwapPayloadOuterVlanId", \
   3273     "CapwapPayloadOuterVlanPri", \
   3274     "CapwapPayloadOuterVlanCfi", \
   3275     "CapwapPayloadInnerVlan", \
   3276     "CapwapPayloadInnerVlanId", \
   3277     "CapwapPayloadInnerVlanPri", \
   3278     "CapwapPayloadInnerVlanCfi", \
   3279     "CapwapPayloadVlanFormat", \
   3280     "CapwapPayloadSip", \
   3281     "CapwapPayloadDip", \
   3282     "CapwapPayloadSip6", \
   3283     "CapwapPayloadDip6", \
   3284     "CapwapPayloadIpProtocol", \
   3285     "CapwapPayloadTos", \
   3286     "CapwapPayloadL4DstPort", \
   3287     "CapwapPayloadL4SrcPort", \
   3288     "CapwapPayloadL3HdrParseable", \
   3289     "CapwapPayloadL4HdrParseable", \
   3290     "VlanAction", \
   3291     "DownMepSatTerminated", \
   3292     "DstMultipathOverlay", \
   3293     "DstMultipathUnderlay", \
   3294     "StpState", \
   3295     "HiGigMirrorOrSwitchPkt", \
   3296     "HiGigPreserveFlags", \
   3297     "HiGigMplsPkt", \
   3298     "HiGigDoNotFlags", \
   3299     "HiGigVpPreserveFlags", \
   3300     "HiGigOffloadEngineVxltStatus", \
   3301     "HiGigForwardingType", \
   3302     "HiGigLabelType", \
   3303     "HiGigExtendedHeaderPresent", \
   3304     "HiGigVpLagFailoverPacket", \
   3305     "HiGigOffloadEnginePreserveDscp", \
   3306     "HiGigOffloadEnginePreserveDot1p", \
   3307     "HiGigOffloadEngineDeferredFlags", \
   3308     "HiGigOffloadEngineSrcType", \
   3309     "SystemPortBitmap", \
   3310     "SourceGportBitmap", \
   3311     "DevicePortBitmap", \
   3312     "TosLower4Bits", \
   3313     "OamEgressClass2Vxlt", \
   3314     "OamEgressVxltFirstHit", \
   3315     "OamEgressVxltSecondHit", \
   3316     "OamDownMEPLoopbackPacket", \
   3317     "OamEgressPortUnicastDstMacHit", \
   3318     "OamSat", \
   3319     "IngressDropEthernetOamControl", \
   3320     "IngressDropEthernetOamData", \
   3321     "IngressDropMplsOamControl", \
   3322     "IngressDropMplsOamData", \
   3323     "EgressClassVxlan", \
   3324     "OamEgressEtherType", \
   3325     "OamEgressMulticastMacHit", \
   3326     "TrunkMemberSourceModuleId", \
   3327     "OamEgressClassSrcMac", \
   3328     "MyStation2Hit", \
   3329     "ExternalValue4", \
   3330     "ExternalValue5", \
   3331     "ExternalHit4", \
   3332     "ExternalHit5", \
   3333     "GeneratedTtl", \
   3334     "IpMulticastCompatible", \
   3335     "EgressClassTunnel", \
   3336     "EgressClassL3InterfaceTunnel", \
   3337     "StaggeredValue0", \
   3338     "StaggeredValue1", \
   3339     "StaggeredValue2", \
   3340     "StaggeredValue3", \
   3341     "StaggeredDirectValue", \
   3342     "StaggeredPreselProfile0", \
   3343     "StaggeredPreselProfile1", \
   3344     "StaggeredPreselProfile2", \
   3345     "StaggeredPreselProfile3", \
   3346     "StaggeredPreselProfileDirect", \
   3347     "bcmFieldQaulifyPreselId", \
   3348     "EthernetData", \
   3349     "PreemptablePacket", \
   3350     "VxlanClassValid", \
   3351     "VxlanPacket", \
   3352     "VxlanVnidVlanTranslateHit", \
   3353     "VxlanPayloadVlanFormat", \
   3354     "TunnelPayloadDstMac", \
   3355     "TunnelPayloadSrcMac", \
   3356     "TunnelPayloadEtherType", \
   3357     "TunnelPayloadOuterVlan", \
   3358     "TunnelPayloadOuterVlanId", \
   3359     "TunnelPayloadOuterVlanPri", \
   3360     "TunnelPayloadOuterVlanCfi", \
   3361     "TunnelPayloadSip", \
   3362     "TunnelPayloadDip", \
   3363     "TunnelPayloadSip6", \
   3364     "TunnelPayloadDip6", \
   3365     "TunnelPayloadIpProtocol", \
   3366     "TunnelPayloadL4DstPort", \
   3367     "TunnelPayloadL4SrcPort", \
   3368     "RoceBthOpcode", \
   3369     "RoceBthPartitionKey", \
   3370     "RoceBthDstQueuePair", \
   3371     "RoceBthFlags", \
   3372     "RoceVer1Pkt", \
   3373     "RoceVer2Pkt", \
   3374     "SrcPortSRType", \
   3375     "DstPortSRType", \
   3376     "SrcPortSRRoleInterlink", \
   3377     "DstPortSRRoleInterlink", \
   3378     "SrcPortSRMode", \
   3379     "DstPortSRMode", \
   3380     "SrcPortSRNetId", \
   3381     "DstPortSRNetId", \
   3382     "SrcPortSRLanId", \
   3383     "DstPortSRLanId", \
   3384     "SRTagType", \
   3385     "SRLanId", \
   3386     "SRNetId", \
   3387     "VlanSREnable", \
   3388     "VlanSRLanId", \
   3389     "SRFlowId", \
   3390     "L2DestSRNodeType", \
   3391     "SRNetIdMatched", \
   3392     "SRSrcNodeIsSan", \
   3393     "SRSupervisionType", \
   3394     "SRError", \
   3395     "L2SrcMulticastHit", \
   3396     "L2DstMulticastHit", \
   3397     "SRDuplicate", \
   3398     "TsnFlowId", \
   3399     "ExternalValue6", \
   3400     "ExternalValue7", \
   3401     "ExternalHit6", \
   3402     "ExternalHit7", \
   3403     "MirrorDest", \
   3404     "PacketIsIEEE1588", \
   3405     "IEEE1588Encapsulation", \
   3406     "IEEE1588CompensateTimeStamp", \
   3407     "IEEE1588Command", \
   3408     "IEEE1588HeaderOffset", \
   3409     "HeaderFormatExtension", \
   3410     "MacSecTagPresent", \
   3411     "MacSecTag", \
   3412     "MacSecDstMacRangeHit", \
   3413     "FromMacSecPort", \
   3414     "MacSecFlow", \
   3415     "EgressBridgedForwardingDataHigh", \
   3416     "EgressBridgedForwardingDataLow", \
   3417     "EgressBridgedAclDataHigh", \
   3418     "EgressBridgedAclDataLow", \
   3419     "SysHdrType", \
   3420     "SubportTagPresent", \
   3421     "NetworkTagType", \
   3422     "CnTagPresent", \
   3423     "L2PktType", \
   3424     "PktType", \
   3425     "MplsCwPresent", \
   3426     "MplsMcastEthertypePresent", \
   3427     "Ipv4OptionHdrType", \
   3428     "Ipv6ExtensionHdrType", \
   3429     "OverlayVlanFormat", \
   3430     "OverlayL2PktType", \
   3431     "OverlayPktType", \
   3432     "OverlayIpv4OptionHdrType", \
   3433     "OverlayIpv6ExtensionHdrType", \
   3434     "FrontPanelPkt", \
   3435     "HiGigProxyTunnelType", \
   3436     "IpFragPkt", \
   3437     "OuterPriTaggedPkt", \
   3438     "IpInIpPkt", \
   3439     "IpmcV4Pkt", \
   3440     "IpmcV6Pkt", \
   3441     "IpChecksumOkPkt", \
   3442     "NetworkTagMulticastPkt", \
   3443     "IpTtlZeroPkt", \
   3444     "PimBidirDfStatus", \
   3445     "InterfaceClassL2Type", \
   3446     "IntPktVersionOne", \
   3447     "IntPktOverflowed", \
   3448     "IntPktLengthValid", \
   3449     "IntPktType", \
   3450     "IntPktFinalHop", \
   3451     "TunnelSubType", \
   3452     "NshServicePathId", \
   3453     "NshServiceIndex", \
   3454     "KeyGenVar", \
   3455     "RoeFrameType", \
   3456     "BfdGoodPkt", \
   3457     "BfdPktWithDstIpLoopbackAddr", \
   3458     "MplsControlPkt", \
   3459     "StageIngressFlowtracker", \
   3460     "InterfaceClassMplsLookup1", \
   3461     "InterfaceClassMplsLookup2", \
   3462     "InterfaceClassMplsLookup3", \
   3463     "InterfaceClassL3Tunnel", \
   3464     "BfdPktVersionOne", \
   3465     "GenevePktVersionZero", \
   3466     "GpePktVersionZero", \
   3467     "GenevePktWithOam", \
   3468     "GpePktWithOam", \
   3469     "InnerBfdPktVersionOne", \
   3470     "PktDstAddrType", \
   3471     "PktInnerDstAddrType", \
   3472     "InnerL4Ports", \
   3473     "TafEnable", \
   3474     "TafGateId", \
   3475     "TafGateState", \
   3476     "TafCosProfile", \
   3477     "ElkRangeL4DstPort", \
   3478     "ElkRangeL4SrcPort", \
   3479     "Ip6PktNextHeader", \
   3480     "Ip6PktHopLimit", \
   3481     "Ip6PktTrafficClass", \
   3482     "InnerIp6PktNextHeader", \
   3483     "InnerIp6PktHopLimit", \
   3484     "InnerIp6PktTrafficClass", \
   3485     "IpTunnelTtl", \
   3486     "IpTunnelTtlClassZero", \
   3487     "RangeCheckGroup", \
   3488     "FlowtrackerGroupId", \
   3489     "FlowtrackerClassId", \
   3490     "FlowtrackerGroupValid", \
   3491     "FlowtrackerDisabled", \
   3492     "FlowtrackerMeteringExceeded", \
   3493     "FlowtrackerCollectorCopy", \
   3494     "FlowtrackerFlowTableFull", \
   3495     "FlowtrackerGroupFlowExceeded", \
   3496     "FlowtrackerExportQueueFull", \
   3497     "OpaqueTagType", \
   3498     "OpaqueTagHigh", \
   3499     "OpaqueTagLow", \
   3500     "InnerDosAttack", \
   3501     "DosAttackEvents", \
   3502     "InnerDosAttackEvents", \
   3503     "SrcTMPort", \
   3504     "Container", \
   3505     "EgressForwardingClassId", \
   3506     "PktFlowType", \
   3507     "VlanTranslateClassId", \
   3508     "IpIdentifier", \
   3509     "TcpWindowSize", \
   3510     "Ip4Length", \
   3511     "Ip6Length", \
   3512     "TunnelPayloadIp4Length", \
   3513     "TunnelPayloadIp6Length", \
   3514     "GbpPresent", \
   3515     "HiGigGbpPresent", \
   3516     "GbpSrcId", \
   3517     "VxlanGbpPresent", \
   3518     "FlowtrackerCheck", \
   3519     "FlowtrackerLearn", \
   3520     "CosMapSelect", \
   3521     "OpaqueObject1", \
   3522     "OpaqueObject2", \
   3523     "OpaqueObject3", \
   3524     "OpaqueObject4", \
   3525     "IncomingOuterVlanId", \
   3526     "GbpDstId", \
   3527     "HiGigGbpSrcId", \
   3528     "LoopbackSubtype", \
   3529     "PphPresent", \
   3530     "PacketProcessingInVportClass", \
   3531     "UDHBase0", \
   3532     "UDHBase1", \
   3533     "UDHBase2", \
   3534     "UDHBase3", \
   3535     "NetworkQos", \
   3536     "AceEntryId", \
   3537     "Ip4Protocol", \
   3538     "Ip4Tos", \
   3539     "Ip4Ttl", \
   3540     "InVportDataIndex", \
   3541     "EtherTypeUntagged", \
   3542     "NetworkLoadBalanceKeyInitial", \
   3543     "NetworkLoadBalanceKey", \
   3544     "EcmpLoadBalanceKey0Initial", \
   3545     "EcmpLoadBalanceKey0", \
   3546     "EcmpLoadBalanceKey1Initial", \
   3547     "EcmpLoadBalanceKey1", \
   3548     "EcmpLoadBalanceKey2Initial", \
   3549     "EcmpLoadBalanceKey2", \
   3550     "TrunkLoadBalanceKeyInitial", \
   3551     "StateTableKey", \
   3552     "StateTableData", \
   3553     "CompareKeysResult0", \
   3554     "CompareKeysResult1", \
   3555     "CompareKeysTcam0", \
   3556     "CompareKeysTcam1", \
   3557     "LayerRecordType", \
   3558     "LayerRecordOffset", \
   3559     "LayerRecordQualifier", \
   3560     "UDHBase", \
   3561     "ForwardingLayerIndex", \
   3562     "IPTProfile", \
   3563     "AcInLifWideData", \
   3564     "NativeAcInLifWideData", \
   3565     "ForwardingProfile", \
   3566     "ContextId", \
   3567     "ForwardingLayerQualifier", \
   3568     "TracePacket", \
   3569     "TrunkLoadBalanceKey", \
   3570     "Forward", \
   3571     "ParsingStartType", \
   3572     "ParsingStartOffset", \
   3573     "UDHData0", \
   3574     "UDHData1", \
   3575     "UDHData2", \
   3576     "UDHData3", \
   3577     "RxSnoopStrength", \
   3578     "RxSnoopCode", \
   3579     "Visibility", \
   3580     "VisibilityClear", \
   3581     "EthernetMulticast", \
   3582     "EthernetBroadcast", \
   3583     "EthernetFirstTpidExist", \
   3584     "EthernetFirstTpidIndex", \
   3585     "EthernetSecondTpidExist", \
   3586     "EthernetSecondTpidIndex", \
   3587     "EthernetThirdTpidExist", \
   3588     "EthernetThirdTpidIndex", \
   3589     "IpHasOptions", \
   3590     "IpFirstFrag", \
   3591     "IpTunnelType", \
   3592     "Ip6MulticastCompatible", \
   3593     "Ip6FirstAdditionalHeaderExist", \
   3594     "ItmhExtensionExist", \
   3595     "ItmhDestinationFec", \
   3596     "ItmhPphType", \
   3597     "StatSamplingCode", \
   3598     "StatSamplingQualifier", \
   3599     "RpfEcmpMode", \
   3600     "StatOamLM", \
   3601     "InInterface", \
   3602     "OutInterface", \
   3603     "InVportClass", \
   3604     "OutVportClass", \
   3605     "InterfaceClass", \
   3606     "PortClassPacketProcessing", \
   3607     "PortClassTrafficManagement", \
   3608     "OutPortTrafficManagement", \
   3609     "MulticastRpfMode", \
   3610     "Tpid", \
   3611     "VlanId", \
   3612     "VlanPri", \
   3613     "VlanCfi", \
   3614     "VlanPriCfi", \
   3615     "Vlan", \
   3616     "MplsLabel", \
   3617     "MplsLabelId", \
   3618     "MplsLabelTtl", \
   3619     "MplsLabelBos", \
   3620     "MplsLabelExp", \
   3621     "InVPort0", \
   3622     "InVPort1", \
   3623     "OutVPort0", \
   3624     "OutVPort1", \
   3625     "OutVPort2", \
   3626     "OutVPort3", \
   3627     "BierStringOffset", \
   3628     "BierStringSize", \
   3629     "PacketIsBier", \
   3630     "PortClassPacketProcessingGeneralData", \
   3631     "ForwardingAdditionalInfo", \
   3632     "InVportClass0", \
   3633     "InVportClass1", \
   3634     "StatId0", \
   3635     "StatId1", \
   3636     "StatId2", \
   3637     "StatId3", \
   3638     "StatId4", \
   3639     "StatId5", \
   3640     "StatId6", \
   3641     "StatId7", \
   3642     "StatId8", \
   3643     "StatId9", \
   3644     "StatProfile0", \
   3645     "StatProfile1", \
   3646     "StatProfile2", \
   3647     "StatProfile3", \
   3648     "StatProfile4", \
   3649     "StatProfile5", \
   3650     "StatProfile6", \
   3651     "StatProfile7", \
   3652     "StatProfile8", \
   3653     "StatProfile9", \
   3654     "ExtStat0", \
   3655     "ExtStat1", \
   3656     "ExtStat2", \
   3657     "ExtStat3", \
   3658     "ExtStatProfile0", \
   3659     "ExtStatProfile1", \
   3660     "ExtStatProfile2", \
   3661     "ExtStatProfile3", \
   3662     "StatMetaData", \
   3663     "DstL3EgressUnderlay", \
   3664     "DstL3EgressNextHopsUnderlay", \
   3665     "EgressClassPort", \
   3666     "INTProbeMarker1", \
   3667     "INTProbeMarker2", \
   3668     "INTReserved4Bytes", \
   3669     "InVPort0Raw", \
   3670     "InVPort1Raw", \
   3671     "OutVPort0Raw", \
   3672     "OutVPort1Raw", \
   3673     "OutVPort2Raw", \
   3674     "OutVPort3Raw", \
   3675     "AppTypePredefined", \
   3676     "FlowControlType", \
   3677     "TimeStampTxPktType", \
   3678     "SysHdrLocalDstport"  \
   3679 }
   3680 
   3681 /* Field Qualifier Class (for bcm_field_qualifier_info_get()). */
   3682 typedef enum bcm_field_qualifier_class_e {
   3683     bcmFieldQualifierClassMetaData = 0, /* Info taken from the packet's
   3684                                            MetaData. Can use
   3685                                            FieldInputTypeMetaData. */
   3686     bcmFieldQualifierClassHeader = 1,   /* Info taken from the packet's header.
   3687                                            Can use FieldInputTypeLayerFwd or
   3688                                            FieldInputTypeLayerAbsolute. */
   3689     bcmFieldQualifierClassLayerRecord = 2, /* Info taken from the packet's layer
   3690                                            records. Can use
   3691                                            FieldInputTypeLayerRecordsFwd or
   3692                                            FieldInputTypeLayerRecordsAbsolute. */
   3693     bcmFieldQualifierClassUserCreated = 3, /* User defined qualifier. Can use any
   3694                                            input type. */
   3695     bcmFieldQualifierClassCount = 4     /* Always Last. Not a usable value. */
   3696 } bcm_field_qualifier_class_t;
   3697 
   3698 #define BCM_FIELD_QUALIFIERCLASS_STRINGS \
   3699 { \
   3700     "bcmFieldQualifierClassMetaData", \
   3701     "bcmFieldQualifierClassHeader", \
   3702     "bcmFieldQualifierClassLayerRecord", \
   3703     "bcmFieldQualifierClassUserCreated"  \
   3704 }
   3705 
   3706 /* 
   3707  * Field Stage Type
   3708  * 
   3709  * Selects which pipeline stage an entry applies to.
   3710  */
   3711 typedef enum bcm_field_stage_e {
   3712     bcmFieldStageFirst = 0,             /* Earliest Field stage in device. */
   3713     bcmFieldStageIngressEarly = 1,      /* Early Ingress Field stage. */
   3714     bcmFieldStageIngressLate = 2,       /* Late Ingress Field stage. */
   3715     bcmFieldStageDefault = 3,           /* Default stage for device. */
   3716     bcmFieldStageLast = 4,              /* Latest Field stage in device. */
   3717     bcmFieldStageIngress = 5,           /* Ingress stage, when there is only one
   3718                                            such. */
   3719     bcmFieldStageEgress = 6,            /* Egress field stage */
   3720     bcmFieldStageExternal = 7,          /* External field stage */
   3721     bcmFieldStageHash = 8,              /* Hashing stage */
   3722     bcmFieldStageIngressExactMatch = 9, /* Ingress exact match stage */
   3723     bcmFieldStageIngressFlowtracker = 10, /* Ingress flowtracker stage */
   3724     bcmFieldStageIngressPMF1 = 11,      /* Stage Ingress PMF-1 */
   3725     bcmFieldStageIngressPMF2 = 12,      /* Stage Ingress PMF-2 */
   3726     bcmFieldStageIngressPMF3 = 13,      /* Stage Ingress PMF-3 */
   3727     bcmFieldStageLookup = 14,           /* Stage Lookup */
   3728     bcmFieldStageClass = 15,            /* Stage Class */
   3729     bcmFieldStageEgressExtension = 16,  /* Extension of the egress field stage,
   3730                                            performing actions later. */
   3731     bcmFieldStageCount = 17             /* Always Last. Not a usable value. */
   3732 } bcm_field_stage_t;
   3733 
   3734 #define BCM_FIELD_STAGE_STRINGS \
   3735 { \
   3736     "First", \
   3737     "IngressEarly", \
   3738     "IngressLate", \
   3739     "Default", \
   3740     "Last", \
   3741     "Ingress", \
   3742     "Egress", \
   3743     "External", \
   3744     "Hash", \
   3745     "IngressExactMatch", \
   3746     "IngressFlowtracker", \
   3747     "IngressPMF1", \
   3748     "IngressPMF2", \
   3749     "IngressPMF3", \
   3750     "Lookup", \
   3751     "Class", \
   3752     "EgressExtension"  \
   3753 }
   3754 
   3755 /* 
   3756  * information related to the preselectors management advance mode per
   3757  * stage.
   3758  */
   3759 typedef struct bcm_field_stage_info_s {
   3760     int field_presel_advanced_mode;     /* is presel advanced mode enabled. */
   3761     int field_presel_max_id;            /* The maximum presel id that can be
   3762                                            defined for a new created program
   3763                                            selector in advanced mode. */
   3764     int field_presel_staggered_max_id;  /* The maximum presel id that can be
   3765                                            defined for a new created program
   3766                                            selector in staggered mode. */
   3767 } bcm_field_stage_info_t;
   3768 
   3769 /* DATA qualifier object, used for creation of custom data qualifiers. */
   3770 typedef struct bcm_field_data_qualifier_s {
   3771     int qual_id;                        /* Data qualifier id. */
   3772     uint32 flags;                       /* Data qualifier flags
   3773                                            BCM_FIELD_DATA_QUALIFIER_XXX. */
   3774     bcm_field_data_offset_base_t offset_base; /* Offset base adjustment. */
   3775     uint16 offset;                      /* Packet byte offset. */
   3776     int length;                         /* Matched data byte length. */
   3777     bcm_field_qualify_t qualifier;      /* Data qualifier based on a predefined
   3778                                            qualifier. Used when
   3779                                            BCM_FIELD_DATA_QUALIFIER_OFFSET_PREDEFINED
   3780                                            is set. */
   3781     bcm_field_stage_t stage;            /* Data qualifier stage (e.g. when based
   3782                                            on predefined qualifiers). */
   3783     uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Data Qualifier. */
   3784 } bcm_field_data_qualifier_t;
   3785 
   3786 #define BCM_FIELD_QUALIFY_MAX   (bcmFieldQualifyCount + BCM_FIELD_USER_NUM_UDFS) /* Must be >= bcmFieldQualifyCount. */
   3787 
   3788 #define BCM_FIELD_QUALIFY_WIDTH_MAX 50         
   3789 
   3790 #define BCM_FIELD_QSET_WIDTH_MAX    \
   3791     ((BCM_FIELD_QUALIFY_WIDTH_MAX+1) * \
   3792     bcmFieldQualifyCount + 1) 
   3793 
   3794 #define BCM_FIELD_EXACT_MATCH_MASK  (~0)       /* Mask parameter value. */
   3795 
   3796 /* 
   3797  * Field Qualifier Decap.
   3798  * 
   3799  * Possible data values for bcm_field_qualify_decap().
   3800  */
   3801 typedef enum bcm_field_decap_e {
   3802     bcmFieldDecapNone = 0,          /* No Decap. */
   3803     bcmFieldDecapL2Mpls = 1,        /* L2 MPLS Decap. */
   3804     bcmFieldDecapL3Mpls = 2,        /* L3 MPLS Decap. */
   3805     bcmFieldDecapOtherMPLS = 3,     /* non-L2 or L3 MPLS Decap. */
   3806     bcmFieldDecapIpTunnel = 4,      /* IP Tunnel Decap. */
   3807     bcmFieldDecapIpGreTunnel = 5,   /* IP GRE Tunnel Decap. */
   3808     bcmFieldDecapIpUdpTunnel = 6,   /* IP UDP Tunnel Decap. */
   3809     bcmFieldDecapIpPimTunnel = 7,   /* IP PIM Tunnel Decap. */
   3810     bcmFieldDecapVxlan = 8,         /* VXLAN Decap. */
   3811     bcmFieldDecapCount = 9          /* Always Last. Not a usable value. */
   3812 } bcm_field_decap_t;
   3813 
   3814 #define BCM_FIELD_DECAP_STRINGS \
   3815 { \
   3816     "None", \
   3817     "L2Mpls", \
   3818     "L3Mpls", \
   3819     "OtherMPLS", \
   3820     "IpTunnel", \
   3821     "IpGreTunnel", \
   3822     "IpUdpTunnel", \
   3823     "IpPimTunnel", \
   3824     "Vxlan"  \
   3825 }
   3826 
   3827 /* 
   3828  * Field Qualifier Forwarding Type (for
   3829  * bcm_field_qualify_ForwardingType).
   3830  */
   3831 typedef enum bcm_field_ForwardingType_e {
   3832     bcmFieldForwardingTypeAny = 0,      /* Don't care. */
   3833     bcmFieldForwardingTypeL2 = 1,       /* L2 switching forwarding. */
   3834     bcmFieldForwardingTypeL3 = 2,       /* L3 routing forwarding. */
   3835     bcmFieldForwardingTypeL2Shared = 3, /* Shared vlan L2 forwarding. */
   3836     bcmFieldForwardingTypeL2Independent = 4, /* Vlan based L2 forwarding. */
   3837     bcmFieldForwardingTypeL2Vpn = 5,    /* VFI based L2 forwarding. */
   3838     bcmFieldForwardingTypeL2VpnDirect = 6, /* L2 point to point vpn forwarding. */
   3839     bcmFieldForwardingTypeL3Direct = 7, /* L3 predefined next hop forwarding. */
   3840     bcmFieldForwardingTypeIp4Ucast = 8, /* IPv4 Unicast Routing forwarding. */
   3841     bcmFieldForwardingTypeIp4Mcast = 9, /* IPv4 Multicast Routing forwarding. */
   3842     bcmFieldForwardingTypeIp6Ucast = 10, /* IPv6 Unicast Routing forwarding. */
   3843     bcmFieldForwardingTypeIp6Mcast = 11, /* IPv6 Multicast Routing forwarding. */
   3844     bcmFieldForwardingTypeMpls = 12,    /* MPLS Switching forwarding. */
   3845     bcmFieldForwardingTypeTrill = 13,   /* Trill forwarding. */
   3846     bcmFieldForwardingTypeRxReason = 14, /* Forwarding according to a RxReason. */
   3847     bcmFieldForwardingTypeTrafficManagement = 15, /* Traffic Management forwarding, when
   3848                                            an external Packet Processor sets the
   3849                                            forwarding decision. */
   3850     bcmFieldForwardingTypeSnoop = 16,   /* Snooped packet. */
   3851     bcmFieldForwardingTypeMplsLabel1 = 17, /* MPLS Switching forwarding according
   3852                                            to the 1st label */
   3853     bcmFieldForwardingTypeMplsLabel2 = 18, /* MPLS Switching forwarding according
   3854                                            to the 2nd label */
   3855     bcmFieldForwardingTypeMplsLabel3 = 19, /* MPLS Switching forwarding according
   3856                                            to the 3rd label */
   3857     bcmFieldForwardingTypeFCoE = 20,    /* Fiber Channel over Ethernet
   3858                                            forwarding. */
   3859     bcmFieldForwardingTypePortExtender = 21, /* VNTAG/ETAG based forwarding. */
   3860     bcmFieldForwardingTypeCustom1 = 22, /* Custom_1 forwarding. */
   3861     bcmFieldForwardingTypeCustom2 = 23, /* Custom_2 forwarding. */
   3862     bcmFieldForwardingTypeL2SharedVpn = 24, /* Shared VFI based L2 Forwarding. */
   3863     bcmFieldForwardingTypePortDirect = 25, /* Port based Point to Point Forwarding. */
   3864     bcmFieldForwardingTypeSvpDirect = 26, /* SVP based Point to Point Forwarding. */
   3865     bcmFieldForwardingTypeVlanDirect = 27, /* VLAN based Point to Point Forwarding. */
   3866     bcmFieldForwardingTypeCount = 28    /* Always Last. Not a usable value. */
   3867 } bcm_field_ForwardingType_t;
   3868 
   3869 #define BCM_FIELD_FORWARDINGTYPE_STRINGS \
   3870 { \
   3871     "Any", \
   3872     "L2", \
   3873     "L3", \
   3874     "L2Shared", \
   3875     "L2Independent", \
   3876     "L2Vpn", \
   3877     "L2VpnDirect", \
   3878     "L3Direct", \
   3879     "Ip4Ucast", \
   3880     "Ip4Mcast", \
   3881     "Ip6Ucast", \
   3882     "Ip6Mcast", \
   3883     "Mpls", \
   3884     "Trill", \
   3885     "RxReason", \
   3886     "TrafficManagement", \
   3887     "Snoop", \
   3888     "MplsLabel1", \
   3889     "MplsLabel2", \
   3890     "MplsLabel3", \
   3891     "FCoE", \
   3892     "PortExtender", \
   3893     "Custom1", \
   3894     "Custom2", \
   3895     "L2SharedVpn", \
   3896     "PortDirect", \
   3897     "SvpDirect", \
   3898     "VlanDirect"  \
   3899 }
   3900 
   3901 /* 
   3902  * Field Qualifier HiGig Forwarding Type (for
   3903  * bcm_field_qualify_HiGigForwardingType).
   3904  */
   3905 typedef enum bcm_field_HiGigForwardingType_e {
   3906     bcmFieldHiGigForwardingTypeControlPacket = 0, /* Control Packet. */
   3907     bcmFieldHiGigForwardingTypeKnownL2 = 1, /* L2 Unicast/ Known L2 Multicast. */
   3908     bcmFieldHiGigForwardingTypeKnownL3 = 2, /* L3 Unicast/ Known L3 Multicast. */
   3909     bcmFieldHiGigForwardingTypeUnknownL2Multicast = 3, /* Unknown L2 Multicast. */
   3910     bcmFieldHiGigForwardingTypeUnknownL3Multicast = 4, /* Unknown L3 Multicast. */
   3911     bcmFieldHiGigForwardingTypeBroadcastOnUnknownL2Unicast = 5, /* Broadcast due to Unknown L2 Unicast. */
   3912     bcmFieldHiGigForwardingTypeBroadcast = 6, /* Broadcast. */
   3913     bcmFieldHiGigForwardingTypeCount = 7 /* Always Last. Not a usable value. */
   3914 } bcm_field_HiGigForwardingType_t;
   3915 
   3916 #define BCM_FIELD_HIGIGFORWARDINGTYPE_STRINGS \
   3917 { \
   3918     "ControlPacket", \
   3919     "KnownL2", \
   3920     "KnownL3", \
   3921     "UnknownL2Multicast", \
   3922     "UnknownL3Multicast", \
   3923     "BroadcastOnUnknownL2Unicast", \
   3924     "Broadcast"  \
   3925 }
   3926 
   3927 /* Field Qualifier Application Type (for bcm_field_qualify_AppType). */
   3928 typedef enum bcm_field_AppType_e {
   3929     bcmFieldAppTypeAny = 0,             /* Don't care. */
   3930     bcmFieldAppTypeL2 = 1,              /* L2 bridging. */
   3931     bcmFieldAppTypeL2VpnDirect = 2,     /* Cross connect service. */
   3932     bcmFieldAppTypeIp4Ucast = 3,        /* IPv4 Unicast Routing. */
   3933     bcmFieldAppTypeIp4McastBidir = 4,   /* IPv4 Multicast BIDIR Routing. */
   3934     bcmFieldAppTypeIp6Ucast = 5,        /* IPv6 Unicast Routing. */
   3935     bcmFieldAppTypeIp6Mcast = 6,        /* IPv6 Multicast Routing forwarding. */
   3936     bcmFieldAppTypeMpls = 7,            /* MPLS Switching forwarding. */
   3937     bcmFieldAppTypeArp = 8,             /* ARP forwarding. */
   3938     bcmFieldAppTypeTrillUcast = 9,      /* Trill Unicast forwarding. */
   3939     bcmFieldAppTypeTrillMcast = 10,     /* Trill Multicast forwarding. */
   3940     bcmFieldAppTypeL2TrillMcast = 11,   /* L2 Multicast after Trill termination. */
   3941     bcmFieldAppTypeTrafficManagement = 12, /* Traffic Management forwarding, when
   3942                                            an external Packet Processor sets the
   3943                                            forwarding decision. */
   3944     bcmFieldAppTypeMiM = 13,            /* MAC-in-MAC forwarding. */
   3945     bcmFieldAppTypeL2MiM = 14,          /* L2 forwarding after MAC-in-MAC
   3946                                            termination. */
   3947     bcmFieldAppTypeIp4UcastRpf = 15,    /* IPv4 Unicast Routing (coupled to the
   3948                                            RPF lookup). */
   3949     bcmFieldAppTypeIp6UcastRpf = 16,    /* IPv6 Unicast Routing (coupled to the
   3950                                            RPF lookup). */
   3951     bcmFieldAppTypeIp4McastRpf = 17,    /* IPv4 Multicast Routing (coupled to
   3952                                            the RPF lookup). */
   3953     bcmFieldAppTypeCompIp4McastRpf = 18, /* Compatible IPv4 Multicast Routing
   3954                                            (coupled to the RPF lookup). */
   3955     bcmFieldAppTypeIp6McastRpf = 19,    /* IPv6 Multicast Routing (coupled to
   3956                                            the RPF lookup). */
   3957     bcmFieldAppTypeMplsCoupling = 20,   /* Coupling MPLS Switching. */
   3958     bcmFieldAppTypeFCoE = 21,           /* FCoE without VFT and local D_ID. */
   3959     bcmFieldAppTypeFCoETransit = 22,    /* Transit FCoE (bridging). */
   3960     bcmFieldAppTypeFCoEVft = 23,        /* FCoE with VFT Routing. */
   3961     bcmFieldAppTypeFCoERemote = 24,     /* FCoE without VFT and remote D_ID
   3962                                            Routing. */
   3963     bcmFieldAppTypeFCoEVftRemote = 25,  /* FCoE wth VFT and remote D_ID v. */
   3964     bcmFieldAppTypeL2VpnExtended = 26,  /* Extended P2P forwarding. */
   3965     bcmFieldAppTypeIp4MacSrcBind = 27,  /* IPV4-MAC Source bind. */
   3966     bcmFieldAppTypeIp6MacSrcBind = 28,  /* IPV6-MAC Source bind. */
   3967     bcmFieldAppTypeIp4SrcBind = 29,     /* IPV4 Source bind. */
   3968     bcmFieldAppTypeIp6SrcBind = 30,     /* IPV6 Source bind. */
   3969     bcmFieldAppTypeVplsGreIp = 31,      /* VPLS tunnel over GREoIP tunnel. */
   3970     bcmFieldAppTypeFglTrillMcast = 32,  /* Fine-grained labeling Trill Multicast
   3971                                            forwarding. */
   3972     bcmFieldAppTypeBfdIp4SingleHop = 33, /* BFD ipv4 single hop. */
   3973     bcmFieldAppTypeBfdEcho = 34,        /* BFD Echo. */
   3974     bcmFieldAppTypeIp4DoubleCapacity = 35, /* IPv4 Unicast Routing with double
   3975                                            capacity in external tcam. */
   3976     bcmFieldAppTypeIp6UcastPublic = 36, /* IPv6 Unicast Public Routing. */
   3977     bcmFieldAppTypeIp6UcastRpfPublic = 37, /* IPv6 Unicast Public Routing (coupled
   3978                                            to the RPF lookup). */
   3979     bcmFieldAppTypeIp4UcastPublic = 38, /* IPv4 Unicast Public Routing. */
   3980     bcmFieldAppTypeIp4UcastRpfPublic = 39, /* IPv4 Unicast Public Routing (coupled
   3981                                            to the RPF lookup). */
   3982     bcmFieldAppTypeIp4McastL2Ssm = 40,  /* IPv4 L2 Source Specific Multicast
   3983                                            forwarding. */
   3984     bcmFieldAppTypeIp6McastL2Ssm = 41,  /* IPv6 L2 Source Specific Multicast
   3985                                            forwarding. */
   3986     bcmFieldAppTypeBfdIp6SingleHop = 42, /* BFD ipv6 single hop. */
   3987     bcmFieldAppTypeCount = 43           /* Always Last. Not a usable value. */
   3988 } bcm_field_AppType_t;
   3989 
   3990 #define BCM_FIELD_APPTYPE_STRINGS \
   3991 { \
   3992     "Any", \
   3993     "L2", \
   3994     "L2VpnDirect", \
   3995     "Ip4Ucast", \
   3996     "Ip4McastBidir", \
   3997     "Ip6Ucast", \
   3998     "Ip6Mcast", \
   3999     "Mpls", \
   4000     "Arp", \
   4001     "TrillUcast", \
   4002     "TrillMcast", \
   4003     "L2TrillMcast", \
   4004     "TrafficManagement", \
   4005     "MiM", \
   4006     "L2MiM", \
   4007     "Ip4UcastRpf", \
   4008     "Ip6UcastRpf", \
   4009     "Ip4McastRpf", \
   4010     "CompIp4McastRpf", \
   4011     "Ip6McastRpf", \
   4012     "MplsCoupling", \
   4013     "FCoE", \
   4014     "FCoETransit", \
   4015     "FCoEVft", \
   4016     "FCoERemote", \
   4017     "FCoEVftRemote", \
   4018     "L2VpnExtended", \
   4019     "Ip4MacSrcBind", \
   4020     "Ip6MacSrcBind", \
   4021     "Ip4SrcBind", \
   4022     "Ip6SrcBind", \
   4023     "VplsGreIp", \
   4024     "FglTrillMcast", \
   4025     "BfdIp4SingleHop", \
   4026     "BfdEcho", \
   4027     "Ip4DoubleCapacity", \
   4028     "Ip6UcastPublic", \
   4029     "Ip6UcastRpfPublic", \
   4030     "Ip4UcastPublic", \
   4031     "Ip4UcastRpfPublic", \
   4032     "Ip4McastL2Ssm", \
   4033     "Ip6McastL2Ssm", \
   4034     "BfdIp6SingleHop"  \
   4035 }
   4036 
   4037 /* Field Qualifier LoopbackType (for bcm_field_qualify_LoopbackType). */
   4038 typedef enum bcm_field_LoopbackType_e {
   4039     bcmFieldLoopbackTypeAny = 0,        /* Don't care. */
   4040     bcmFieldLoopbackTypeMirror = 1,     /* Mirrored frames. */
   4041     bcmFieldLoopbackTypeWlan = 2,       /* WLAN frames. */
   4042     bcmFieldLoopbackTypeMim = 3,        /* Mac in Mac frames. */
   4043     bcmFieldLoopbackTypeRedirect = 4,   /* Redirected frames. */
   4044     bcmFieldLoopbackTypeTrillNetwork = 5, /* Trill network port loopback. */
   4045     bcmFieldLoopbackTypeTrillAccess = 6, /* Trill access port loopback. */
   4046     bcmFieldLoopbackTypeRegexMatch = 7, /* Regex NLF loopback packet. */
   4047     bcmFieldLoopbackTypeMplsP2mp = 8,   /* MPLS P2MP second pass loopback
   4048                                            packet. */
   4049     bcmFieldLoopbackTypeQcn = 9,        /* QCN loopback packet. */
   4050     bcmFieldLoopbackTypeWlanEncap = 10, /* WLAN ENCAP NLF loopback packet. */
   4051     bcmFieldLoopbackTypeWlanEncapEncrypt = 11, /* WLAN ENCAP needs encryption loopback
   4052                                            packet. */
   4053     bcmFieldLoopbackTypeWlanDecap = 12, /* WLAN DECAP NLF loopback packet. */
   4054     bcmFieldLoopbackTypePassThru = 13,  /* PassThru NLF loopback packet. */
   4055     bcmFieldLoopbackTypeMplsExtendedLookup = 14, /* MPLS extended lookup packet. */
   4056     bcmFieldLoopbackTypeL2Gre = 15,     /* L2 GRE loopback packet. */
   4057     bcmFieldLoopbackTypeVxlan = 16,     /* Vxlan loopback packet. */
   4058     bcmFieldLoopbackTypeTunnelAny = 17, /* MinM, L2GRE and VXLAN tunnel loopback
   4059                                            packet. */
   4060     bcmFieldLoopbackTypeMasquerade = 18, /* Process as if it was received on
   4061                                            front panel port. */
   4062     bcmFieldLoopbackTypeCount = 19      /* Always Last. Not a usable value. */
   4063 } bcm_field_LoopbackType_t;
   4064 
   4065 #define BCM_FIELD_LOOPBACKTYPE_STRINGS \
   4066 { \
   4067     "Any", \
   4068     "Mirror", \
   4069     "Wlan", \
   4070     "Mim", \
   4071     "Redirect", \
   4072     "TrillNetwork", \
   4073     "TrillAccess", \
   4074     "RegexMatch", \
   4075     "MplsP2mp", \
   4076     "Qcn", \
   4077     "WlanEncap", \
   4078     "WlanEncapEncrypt", \
   4079     "WlanDecap", \
   4080     "PassThru", \
   4081     "MplsExtendedLookup", \
   4082     "L2Gre", \
   4083     "Vxlan", \
   4084     "TunnelAny", \
   4085     "Masquerade"  \
   4086 }
   4087 
   4088 /* 
   4089  * Field Qualifier FibreChan (for bcm_field_qualify_FibreChanOuter and
   4090  * bcm_field_qualify_FibreChanInner).
   4091  */
   4092 typedef enum bcm_field_FibreChan_e {
   4093     bcmFieldFibreChanAny = 0,       /* Don't care. */
   4094     bcmFieldFibreChan = 1,          /* Standard Fibre Channel header. */
   4095     bcmFieldFibreChanEncap = 2,     /* Encapsulation (ENC) header. */
   4096     bcmFieldFibreChanVirtual = 3,   /* Virtual fabric tag (VFT) header. */
   4097     bcmFieldFibreChanRouted = 4,    /* Interfabric routing (IFR) header. */
   4098     bcmFieldFibreChanCount = 5      /* Always Last. Not a usable value. */
   4099 } bcm_field_FibreChan_t;
   4100 
   4101 #define BCM_FIELD_FIBRECHAN_STRINGS \
   4102 { \
   4103     "Any", \
   4104     "bcmFieldFibreChan", \
   4105     "Encap", \
   4106     "Virtual", \
   4107     "Routed"  \
   4108 }
   4109 
   4110 /* Field Qualifier TunnelType (for bcm_field_qualify_TunnelType). */
   4111 typedef enum bcm_field_TunnelType_e {
   4112     bcmFieldTunnelTypeAny = 0,          /* Don't care. */
   4113     bcmFieldTunnelTypeIp = 1,           /* IP in IP, Istap, GRE. */
   4114     bcmFieldTunnelTypeMpls = 2,         /* MPLS. */
   4115     bcmFieldTunnelTypeMim = 3,          /* Mac in Mac. */
   4116     bcmFieldTunnelTypeWlanWtpToAc = 4,  /* WLAN access point to access control. */
   4117     bcmFieldTunnelTypeWlanAcToAc = 5,   /* WLAN access control to access
   4118                                            control. */
   4119     bcmFieldTunnelTypeAutoMulticast = 6, /* IPV4 Automatic multicast. */
   4120     bcmFieldTunnelTypeTrill = 7,        /* Trill. */
   4121     bcmFieldTunnelTypeL2Gre = 8,        /* L2 GRE. */
   4122     bcmFieldTunnelTypeIp6 = 9,          /* IPv6 termination. */
   4123     bcmFieldTunnelTypeMplsControlWord = 10, /* MPLS with Control Word terminated. */
   4124     bcmFieldTunnelTypeMplsLabel2 = 11,  /* 2 MPLS labels terminated. */
   4125     bcmFieldTunnelTypeMplsLabel2ControlWord = 12, /* 2 MPLS labels with Control Word
   4126                                            terminated. */
   4127     bcmFieldTunnelTypeMplsLabel3 = 13,  /* 3 MPLS labels terminated. */
   4128     bcmFieldTunnelTypeMplsLabel3ControlWord = 14, /* 3 MPLS labels with Control Word
   4129                                            terminated. */
   4130     bcmFieldTunnelTypeVxlan = 15,       /* Vxlan Tunnel Packet. */
   4131     bcmFieldTunnelTypeNone = 16,        /* L2 termination. */
   4132     bcmFieldTunnelTypeVxlanFlex = 17,   /* Vxlan Flex Tunnel Packet. */
   4133     bcmFieldTunnelTypeGpe = 18,         /* GPE (Generic Protocol Extension for
   4134                                            VXLAN) Tunnel Packet. */
   4135     bcmFieldTunnelTypeGeneve = 19,      /* Geneve Tunnel Packet. */
   4136     bcmFieldTunnelTypeMplsOverGre = 20, /* MPLS Over GRE Tunnel Packet. */
   4137     bcmFieldTunnelTypeNsh = 21,         /* Network Service Header (NSH) Tunnel
   4138                                            Packet. */
   4139     bcmFieldTunnelTypeCount = 22        /* Always Last. Not a usable value. */
   4140 } bcm_field_TunnelType_t;
   4141 
   4142 #define BCM_FIELD_TUNNELTYPE_STRINGS \
   4143 { \
   4144     "Any", \
   4145     "Ip", \
   4146     "Mpls", \
   4147     "Mim", \
   4148     "WlanWtpToAc", \
   4149     "WlanAcToAc", \
   4150     "AutoMulticast", \
   4151     "Trill", \
   4152     "L2Gre", \
   4153     "Ip6", \
   4154     "MplsControlWord", \
   4155     "MplsLabel2", \
   4156     "MplsLabel2ControlWord", \
   4157     "MplsLabel3", \
   4158     "MplsLabel3ControlWord", \
   4159     "Vxlan", \
   4160     "None", \
   4161     "VxlanFlex", \
   4162     "Gpe", \
   4163     "Geneve", \
   4164     "MplsOverGre", \
   4165     "Nsh"  \
   4166 }
   4167 
   4168 /* Field Qualifier IpType (for bcm_field_qualify_IpType). */
   4169 typedef enum bcm_field_IpType_e {
   4170     bcmFieldIpTypeAny = 0,              /* Don't care. */
   4171     bcmFieldIpTypeNonIp = 1,            /* Non-Ip packet. */
   4172     bcmFieldIpTypeIpv4Not = 2,          /* Anything but IPv4 packets. */
   4173     bcmFieldIpTypeIpv4NoOpts = 3,       /* IPv4 without options. */
   4174     bcmFieldIpTypeIpv4WithOpts = 4,     /* IPv4 with options. */
   4175     bcmFieldIpTypeIpv4Any = 5,          /* Any IPv4 packet. */
   4176     bcmFieldIpTypeIpv6Not = 6,          /* Anything but IPv6 packets. */
   4177     bcmFieldIpTypeIpv6NoExtHdr = 7,     /* IPv6 packet without any extension
   4178                                            header. */
   4179     bcmFieldIpTypeIpv6OneExtHdr = 8,    /* IPv6 packet with one extension
   4180                                            header. */
   4181     bcmFieldIpTypeIpv6TwoExtHdr = 9,    /* IPv6 packet with two or more
   4182                                            extension headers. */
   4183     bcmFieldIpTypeIpv6 = 10,            /* IPv6 packet. */
   4184     bcmFieldIpTypeIp = 11,              /* IPv4 and IPv6 packets. */
   4185     bcmFieldIpTypeArp = 12,             /* ARP/RARP. */
   4186     bcmFieldIpTypeArpRequest = 13,      /* ARP Request. */
   4187     bcmFieldIpTypeArpReply = 14,        /* ARP Reply. */
   4188     bcmFieldIpTypeMplsUnicast = 15,     /* Mpls unicast frame (ethertype =
   4189                                            0x8847). */
   4190     bcmFieldIpTypeMplsMulticast = 16,   /* Mpls mcast frame   (ethertype =
   4191                                            0x8848). */
   4192     bcmFieldIpTypeTrill = 17,           /* Trill packet. */
   4193     bcmFieldIpTypeMim = 18,             /* Mac-in-Mac frame. */
   4194     bcmFieldIpTypeMpls = 19,            /* MPLS Packets. */
   4195     bcmFieldIpTypeCfm = 20,             /* CFM Packets (0x8902). */
   4196     bcmFieldIpTypeFCoE = 21,            /* Fiber Channel Packets (0x8906). */
   4197     bcmFieldIpTypeCount = 22            /* Always Last. Not a usable value. */
   4198 } bcm_field_IpType_t;
   4199 
   4200 #define BCM_FIELD_IPTYPE_STRINGS \
   4201 { \
   4202     "Any", \
   4203     "NonIp", \
   4204     "Ipv4Not", \
   4205     "Ipv4NoOpts", \
   4206     "Ipv4WithOpts", \
   4207     "Ipv4Any", \
   4208     "Ipv6Not", \
   4209     "Ipv6NoExtHdr", \
   4210     "Ipv6OneExtHdr", \
   4211     "Ipv6TwoExtHdr", \
   4212     "Ipv6", \
   4213     "Ip", \
   4214     "Arp", \
   4215     "ArpRequest", \
   4216     "ArpReply", \
   4217     "MplsUnicast", \
   4218     "MplsMulticast", \
   4219     "Trill", \
   4220     "Mim", \
   4221     "Mpls", \
   4222     "Cfm", \
   4223     "FCoE"  \
   4224 }
   4225 
   4226 /* 
   4227  * Field Qualifier IpProtocolCommon (for
   4228  * bcm_field_qualify_IpProtocolCommon).
   4229  */
   4230 typedef enum bcm_field_IpProtocolCommon_e {
   4231     bcmFieldIpProtocolCommonTcp = 0,    /* TCP Packets (6) */
   4232     bcmFieldIpProtocolCommonUdp = 1,    /* UDP Packets (17) */
   4233     bcmFieldIpProtocolCommonIgmp = 2,   /* IGMP Packets (2) */
   4234     bcmFieldIpProtocolCommonIcmp = 3,   /* ICMP Packets (1) */
   4235     bcmFieldIpProtocolCommonIp6Icmp = 4, /* IPv6 ICMP Packets (58) */
   4236     bcmFieldIpProtocolCommonIp6HopByHop = 5, /* IPv6 Hop-by-Hop Packets (0) */
   4237     bcmFieldIpProtocolCommonIpInIp = 6, /* IPv4 Payload Packets (4) */
   4238     bcmFieldIpProtocolCommonTcpUdp = 7, /* TCP and UDP Packets (6 & 17) */
   4239     bcmFieldIpProtocolCommonUnknown = 8, /* Not-standard IP Protocol. */
   4240     bcmFieldIpProtocolCommonIp6InIp = 9, /* IPv6 (0x29) */
   4241     bcmFieldIpProtocolCommonMplsInIp = 10, /* MPLS (0x89) */
   4242     bcmFieldIpProtocolCommonCount = 11  /* Always Last. Not a usable value. */
   4243 } bcm_field_IpProtocolCommon_t;
   4244 
   4245 #define BCM_FIELD_IPPROTOCOLCOMMON_STRINGS \
   4246 { \
   4247     "Tcp", \
   4248     "Udp", \
   4249     "Igmp", \
   4250     "Icmp", \
   4251     "Ip6Icmp", \
   4252     "Ip6HopByHop", \
   4253     "IpInIp", \
   4254     "TcpUdp", \
   4255     "Unknown", \
   4256     "Ip6InIp", \
   4257     "MplsInIp"  \
   4258 }
   4259 
   4260 /* Field Qualifier IpFrag (for bcm_field_qualify_IpFrag). */
   4261 typedef enum bcm_field_IpFrag_e {
   4262     bcmFieldIpFragNon = 0,          /* Non-fragmented packet. */
   4263     bcmFieldIpFragFirst = 1,        /* First fragment of fragmented packet. */
   4264     bcmFieldIpFragNonOrFirst = 2,   /* Non-fragmented or first fragment. */
   4265     bcmFieldIpFragNotFirst = 3,     /* Not the first fragment. */
   4266     bcmFieldIpFragAny = 4,          /* Any fragment of fragmented packet. */
   4267     bcmFieldIpFragCount = 5         /* Always last. Not a usable value. */
   4268 } bcm_field_IpFrag_t;
   4269 
   4270 /* Urpf mode */
   4271 typedef enum bcm_field_urpf_mode_e {
   4272     bcmFieldUrpfLoose = 0,  /* Loose mode Unicast RPF. */
   4273     bcmFieldUrpfStrict = 1, /* Strict mode Unicast RPF */
   4274     bcmFieldUrpfCount = 2   /* Always Last. Not a usable value. */
   4275 } bcm_field_urpf_mode_t;
   4276 
   4277 /* 
   4278  * Field Qualifier L2Format (for bcm_field_qualify_L2Format).
   4279  * Used to qualify packets based on L2 header format.
   4280  */
   4281 typedef enum bcm_field_L2Format_e {
   4282     bcmFieldL2FormatAny = 0,            /* Do not qualify on L2 format. */
   4283     bcmFieldL2FormatEthII = 1,          /* Ethernet 2 (802.2). */
   4284     bcmFieldL2FormatSnap = 2,           /* Sub-Network Access Protocol (SNAP). */
   4285     bcmFieldL2FormatLlc = 3,            /* Logical Link Control. */
   4286     bcmFieldL2Format802dot3 = 4,        /* 802.3 frame format. */
   4287     bcmFieldL2FormatDeprecated5 = 5,    /* Deprecated. Do not use. */
   4288     bcmFieldL2FormatMiM = 6,            /* MAC-In-MAC. */
   4289     bcmFieldL2FormatCount = 7           /* Always Last. Not a usable value. */
   4290 } bcm_field_L2Format_t;
   4291 
   4292 #define BCM_FIELD_L2FORMAT_STRINGS \
   4293 { \
   4294     "Any", \
   4295     "EthII", \
   4296     "Snap", \
   4297     "Llc", \
   4298     "802dot3", \
   4299     "Deprecated5", \
   4300     "MiM"  \
   4301 }
   4302 
   4303 /* 
   4304  * Field action olp_header_type (for bcmFieldActionOamOlpHeaderAdd).
   4305  * Used to specify the type of the OLP header to be added.
   4306  */
   4307 typedef enum bcm_field_olp_header_type_e {
   4308     bcmFieldOlpHeaderTypeEthCC = 0,     /* Ethernet Oam Down MEP Ccm packet. */
   4309     bcmFieldOlpHeaderTypeEthOamCcm = bcmFieldOlpHeaderTypeEthCC, /* Ethernet Oam Down MEP Ccm packet. */
   4310     bcmFieldOlpHeaderTypeEthLmDm = 1,   /* Ethernet Oam Down MEP LM/DM packet. */
   4311     bcmFieldOlpHeaderTypeEthOamLmDm = bcmFieldOlpHeaderTypeEthLmDm, /* Ethernet Oam Down MEP LM/DM packet. */
   4312     bcmFieldOlpHeaderTypeEthOthers = 2, /* Ethernet Oam Down MEP Other opcode
   4313                                            packet. */
   4314     bcmFieldOlpHeaderTypeEthOamOthers = bcmFieldOlpHeaderTypeEthOthers, /* Ethernet Oam Down MEP Other opcode
   4315                                            packet. */
   4316     bcmFieldOlpHeaderTypeBfdOam = 3,    /* BFD Oam packet */
   4317     bcmFieldOlpHeaderTypeEthOamLm = 4,  /* Ethernet Oam Down Mep LM packet */
   4318     bcmFieldOlpHeaderTypeEthOamDm = 5,  /* Ethernet Oam Down Mep DM packet */
   4319     bcmFieldOlpHeaderTypeBhhOamCcm = 6, /* BHH OAM CCM packet */
   4320     bcmFieldOlpHeaderTypeBhhOamLm = 7,  /* BHH Oam LM packet */
   4321     bcmFieldOlpHeaderTypeBhhOamDm = 8,  /* BHH Oam DM packet */
   4322     bcmFieldOlpHeaderTypeBhhOamOthers = 9, /* BHH OAM other opcode type packet */
   4323     bcmFieldOlpHeaderTypeRfc6374Dlm = 10, /* MPLS LM/DM DLM packet */
   4324     bcmFieldOlpHeaderTypeRfc6374Dm = 11, /* MPLS LM/DM DM packet */
   4325     bcmFieldOlpHeaderTypeRfc6374DlmPlusDm = 12, /* MPLS LM/DM DLM + DM packet */
   4326     bcmFieldOlpHeaderTypeRfc6374Ilm = 13, /* MPLS LM/DM ILM packet */
   4327     bcmFieldOlpHeaderTypeRfc6374IlmPlusDm = 14, /* MPLS LM/DM ILM + DM packet */
   4328     bcmFieldOlpHeaderTypeSat = 15,      /* Down Service Activation Test packet */
   4329     bcmFieldOlpHeaderTypeOtherAch = 16, /* OAM packets with other ACH types */
   4330     bcmFieldOlpHeaderTypeEthOamUpMepCcm = 17, /* Ethernet Oam Up MEP Ccm packet. */
   4331     bcmFieldOlpHeaderTypeEthOamUpMepLm = 18, /* Ethernet Oam Up MEP Lm packet. */
   4332     bcmFieldOlpHeaderTypeEthOamUpMepDm = 19, /* Ethernet Oam Up MEP Dm packet. */
   4333     bcmFieldOlpHeaderTypeEthOamUpMepOthers = 20, /* Ethernet Oam Up MEP Other opcode
   4334                                            packet. */
   4335     bcmFieldOlpHeaderTypeUpSat = 21,    /* Up Service Activation Test packet. */
   4336     bcmFieldOlpHeaderTypeMacSecEncrypt = 22, /* OLP header type for MACSEC Encrypt
   4337                                            flow. */
   4338     bcmFieldOlpHeaderTypeMacSecDecrypt = 23, /* OLP header type for MACSEC Decrypt
   4339                                            flow. */
   4340     bcmFieldOlpHeaderTypeCount = 24     /* Always Last. Not a usable value. */
   4341 } bcm_field_olp_header_type_t;
   4342 
   4343 #define BCM_FIELD_OLP_HEADER_TYPE_STRINGS \
   4344 { \
   4345     "EthCC", \
   4346     "EthLmDm", \
   4347     "EthOthers", \
   4348     "BfdOam", \
   4349     "EthOamLm", \
   4350     "EthOamDm", \
   4351     "BhhOamCcm", \
   4352     "BhhOamLm", \
   4353     "BhhOamDm", \
   4354     "BhhOamOthers", \
   4355     "Rfc6374Dlm", \
   4356     "Rfc6374Dm", \
   4357     "Rfc6374DlmPlusDm", \
   4358     "Rfc6374Ilm", \
   4359     "Rfc6374IlmPlusDm", \
   4360     "Sat", \
   4361     "OtherAch", \
   4362     "EthOamUpMepCcm", \
   4363     "EthOamUpMepLm", \
   4364     "EthOamUpMepDm", \
   4365     "EthOamUpMepOthers", \
   4366     "UpSat", \
   4367     "MacSecEncrypt", \
   4368     "MacSecDecrypt"  \
   4369 }
   4370 
   4371 /* 
   4372  * Field action oam_domain (for bcmFieldActionOamDomain).
   4373  * Used to specify the OAM domain on which endpoints lookup has to be
   4374  * done.
   4375  */
   4376 typedef enum bcm_field_oam_domain_e {
   4377     bcmFieldOamDomainCVlan = 0,         /* Endpoints configured on C-VLAN. */
   4378     bcmFieldOamDomainSVlan = 1,         /* Endpoints configured on S-VLAN. */
   4379     bcmFieldOamDomainDoubleVlan = 2,    /* Endpoints configured on S+C-VLAN. */
   4380     bcmFieldOamDomainPbbTe = 3,         /* Endpoints configured on PBB-TE. */
   4381     bcmFieldOamDomainMplsLmDmSectionPort = 4, /* RFC 6374 Section - Port based
   4382                                            loss/delay measurement. */
   4383     bcmFieldOamDomainMplsLmDmSectionInnerVlan = 5, /* RFC 6374 Section - Port + Inner vlan
   4384                                            based loss/delay measurement. */
   4385     bcmFieldOamDomainMplsLmDmSectionOuterVlan = 6, /* RFC 6374 Section - Port + Outer vlan
   4386                                            based loss/delay measurement. */
   4387     bcmFieldOamDomainMplsLmDmSectionOuterPlusInnerVlan = 7, /* RFC 6374 Section - Port + Outer vlan
   4388                                            + Inner Vlan based loss/delay
   4389                                            measurement. */
   4390     bcmFieldOamDomainMplsLmDmPw = 8,    /* RFC 6374 Pseudowire based loss/delay
   4391                                            measurement. */
   4392     bcmFieldOamDomainMplsLmDmLspLabel = 9, /* RFC 6374 LSP based loss/delay
   4393                                            measurement. */
   4394     bcmFieldOamDomainCount = 10         /* Always Last. Not a usable value. */
   4395 } bcm_field_oam_domain_t;
   4396 
   4397 #define BCM_FIELD_OAM_DOMAIN_STRINGS \
   4398 { \
   4399     "CVlan", \
   4400     "SVlan", \
   4401     "DoubleVlan", \
   4402     "PbbTe", \
   4403     "MplsLmDmSectionPort", \
   4404     "MplsLmDmSectionInnerVlan", \
   4405     "MplsLmDmSectionOuterVlan", \
   4406     "MplsLmDmSectionOuterPlusInnerVlan", \
   4407     "MplsLmDmPw", \
   4408     "MplsLmDmLspLabel"  \
   4409 }
   4410 
   4411 /* 
   4412  * Field Qualify oam_drop_mep_type (for bcmFieldQualifyIngressDropXXX).
   4413  * Used to Qualify on Drop reasons related to OAM Data or Control packets
   4414  * based on MEP type.
   4415  */
   4416 typedef enum bcm_field_oam_drop_mep_type_e {
   4417     bcmFieldOamDropInvalid = 0,         /* Invalid. */
   4418     bcmFieldOamDropPortDownMepControl = 1, /* Drop Reasons for Port Down MEP
   4419                                            control packets. */
   4420     bcmFieldOamDropPortDownMepData = 2, /* Drop Reasons for Port Down MEP data
   4421                                            packets. */
   4422     bcmFieldOamDropInnerVlanDownMepControl = 3, /* Drop Reasons for Inner Vlan Down MEP
   4423                                            control packets. */
   4424     bcmFieldOamDropInnerVlanDownMepData = 4, /* Drop Reasons for Inner Vlan Down MEP
   4425                                            data packets. */
   4426     bcmFieldOamDropOuterVlanDownMepControl = 5, /* Drop Reasons for Outer Vlan Down MEP
   4427                                            control packets. */
   4428     bcmFieldOamDropOuterVlanDownMepData = 6, /* Drop Reasons for Outer Vlan Down MEP
   4429                                            data packets. */
   4430     bcmFieldOamDropInnerPlusOuterVlanDownMepControl = 7, /* Drop Reasons for Inner + Outer Vlan
   4431                                            Down MEP control packets. */
   4432     bcmFieldOamDropInnerPlusOuterVlanDownMepData = 8, /* Drop Reasons for Inner + Outer Vlan
   4433                                            Down MEP data packets. */
   4434     bcmFieldOamDropInnerVlanUpMepData = 9, /* Drop Reasons for Inner Vlan Up MEP
   4435                                            data packets. */
   4436     bcmFieldOamDropOuterVlanUpMepData = 10, /* Drop Reasons for Outer Vlan Up MEP
   4437                                            data packets. */
   4438     bcmFieldOamDropInnerPlusOuterVlanUpMepData = 11, /* Drop Reasons for Inner + Outer Vlan
   4439                                            Up MEP data packets. */
   4440     bcmFieldOamDropSectionPortMepControl = 12, /* Drop Reasons for Port Section MEP
   4441                                            control packets. */
   4442     bcmFieldOamDropSectionPortMepData = 13, /* Drop Reasons for Port Section MEP
   4443                                            data packets. */
   4444     bcmFieldOamDropSectionInnerVlanMepControl = 14, /* Drop Reasons for Inner  Vlan Section
   4445                                            MEP control packets. */
   4446     bcmFieldOamDropSectionInnerVlanMepData = 15, /* Drop Reasons for Inner Vlan Section
   4447                                            MEP data packets. */
   4448     bcmFieldOamDropSectionOuterVlanMepControl = 16, /* Drop Reasons for Outer Vlan Section
   4449                                            MEP control packets. */
   4450     bcmFieldOamDropSectionOuterVlanMepData = 17, /* Drop Reasons for Outer Vlan Section
   4451                                            MEP data packets. */
   4452     bcmFieldOamDropSectionInnerPlusOuterVlanMepControl = 18, /* Drop Reasons for Inner + Outer Vlan
   4453                                            Section MEP control packets. */
   4454     bcmFieldOamDropSectionInnerPlusOuterVlanMepData = 19, /* Drop Reasons for Inner + Outer Vlan
   4455                                            Section MEP data packets. */
   4456     bcmFieldOamDropLSPMepControl = 20,  /* Drop Reasons for LSP MEP control
   4457                                            packets. */
   4458     bcmFieldOamDropLSPMepData = 21,     /* Drop Reasons for LSP MEP data
   4459                                            packets. */
   4460     bcmFieldOamDropPwMepControl = 22,   /* Drop Reasons for PsuedoWire MEP
   4461                                            control packets. */
   4462     bcmFieldOamDropPwMepData = 23,      /* Drop Reasons for PsuedoWire MEP data
   4463                                            packets. */
   4464     bcmFieldOamDropCount = 24           /* Always Last. Not a usable value. */
   4465 } bcm_field_oam_drop_mep_type_t;
   4466 
   4467 #define BCM_FIELD_OAM_DROP_MEP_TYPE_STRINGS \
   4468 { \
   4469     "Invalid", \
   4470     "PortDownMepControl", \
   4471     "PortDownMepData", \
   4472     "InnerVlanDownMepControl", \
   4473     "InnerVlanDownMepData", \
   4474     "OuterVlanDownMepControl", \
   4475     "OuterVlanDownMepData", \
   4476     "InnerPlusOuterVlanDownMepControl", \
   4477     "InnerPlusOuterVlanDownMepData", \
   4478     "InnerVlanUpMepData", \
   4479     "OuterVlanUpMepData", \
   4480     "InnerPlusOuterVlanUpMepData", \
   4481     "SectionPortMepControl", \
   4482     "SectionPortMepData", \
   4483     "SectionInnerVlanMepControl", \
   4484     "SectionInnerVlanMepData", \
   4485     "SectionOuterVlanMepControl", \
   4486     "SectionOuterVlanMepData", \
   4487     "SectionInnerPlusOuterVlanMepControl", \
   4488     "SectionInnerPlusOuterVlanMepData", \
   4489     "LSPMepControl", \
   4490     "LSPMepData", \
   4491     "PwMepControl", \
   4492     "PwMepData"  \
   4493 }
   4494 
   4495 /* LLC Header Format. */
   4496 typedef struct bcm_field_llc_header_s {
   4497     uint8 dsap; 
   4498     uint8 ssap; 
   4499     uint8 control; 
   4500 } bcm_field_llc_header_t;
   4501 
   4502 /* SNAP Header Format. */
   4503 typedef struct bcm_field_snap_header_s {
   4504     uint32 org_code; 
   4505     uint16 type; 
   4506 } bcm_field_snap_header_t;
   4507 
   4508 /* 
   4509  * Range Check.
   4510  * 
   4511  * bcm_field_range_create requires exactly one of SRCPORT or DSTPORT or
   4512  * FIELD_RANGE_OUTER_VLAN or FIELD_RANGE_PACKET_LENGTH.
   4513  */
   4514 #define BCM_FIELD_RANGE_SRCPORT         0x00000001 /* Check source port range */
   4515 #define BCM_FIELD_RANGE_DSTPORT         0x00000002 /* Check dest port range */
   4516 #define BCM_FIELD_RANGE_TCP             0x00000004 /* Check TCP port range */
   4517 #define BCM_FIELD_RANGE_UDP             0x00000008 /* Check UDP port range */
   4518 #define BCM_FIELD_RANGE_INVERT          0x00000010 /* Check for match outside
   4519                                                       specified port range */
   4520 #define BCM_FIELD_RANGE_EXTERNAL        0x00000020 /* Create range checker on
   4521                                                       External table (5661x
   4522                                                       only) */
   4523 #define BCM_FIELD_RANGE_OUTER_VLAN      0x00000040 /* Check outer VLAN ID range */
   4524 #define BCM_FIELD_RANGE_INNER_VLAN      0x00000080 /* Check inner VLAN ID range */
   4525 #define BCM_FIELD_RANGE_PACKET_LENGTH   0x00000100 /* Check packet length range */
   4526 #define BCM_FIELD_RANGE_LOOKUP          0x00000200 /* Create range checker on
   4527                                                       Lookup table */
   4528 #define BCM_FIELD_RANGE_OUT_VPORT       0x00000400 /* Check OutVPort range */
   4529 #define BCM_FIELD_RANGE_REPLACE         0x00000800 /* Modify configurations of
   4530                                                       an existing range checker.
   4531                                                       Using this flag, the Range
   4532                                                       checker's range limits
   4533                                                       (min/max) and Type can be
   4534                                                       modified dynamically. */
   4535 
   4536 /* Opaque handle to a field range. */
   4537 typedef uint32 bcm_field_range_t;
   4538 
   4539 /* Field udf_spec defines the locations of user-defined byte fields. */
   4540 typedef struct bcm_field_udf_spec_s {
   4541     uint32 offset[384]; 
   4542 } bcm_field_udf_spec_t;
   4543 
   4544 /* Field qset defines the set of fields used for lookup. */
   4545 typedef struct bcm_field_qset_s {
   4546     SHR_BITDCL w[_SHR_BITDCLSIZE(BCM_FIELD_QUALIFY_MAX)]; 
   4547     SHR_BITDCL udf_map[_SHR_BITDCLSIZE(BCM_FIELD_USER_NUM_UDFS)]; 
   4548 } bcm_field_qset_t;
   4549 
   4550 #define BCM_FIELD_QSET_INIT(qset)  \
   4551     sal_memset(&(qset), 0, sizeof(bcm_field_qset_t)) 
   4552 
   4553 #define BCM_FIELD_QSET_ADD(qset, q)  SHR_BITSET(((qset).w), (q)) 
   4554 
   4555 #define BCM_FIELD_QSET_REMOVE(qset, q)  SHR_BITCLR(((qset).w), (q)) 
   4556 
   4557 #define BCM_FIELD_QSET_TEST(qset, q)  SHR_BITGET(((qset).w), (q)) 
   4558 
   4559 /* 
   4560  * Group Priority.
   4561  * 
   4562  * Numerically higher values are higher priority. Each priority value may
   4563  * be used only once. BCM_FIELD_GROUP_PRIO_ANY can be used to have a
   4564  * priority assigned automatically.
   4565  */
   4566 #define BCM_FIELD_GROUP_PRIO_ANY    -0x7fffffff 
   4567 
   4568 /* 
   4569  * Copy To Cpu Flags.
   4570  * 
   4571  * bcm_field_action_copytocpu_config_set requires atleast of these flags
   4572  * to be configured for CopyToCpu action.
   4573  */
   4574 #define BCM_FIELD_COPYTOCPU_GREEN_PACKET    0x00000001 /* Copy to cpu only Green
   4575                                                           Packets regardless of
   4576                                                           its drop */
   4577 #define BCM_FIELD_COPYTOCPU_YELLOW_PACKET   0x00000002 /* Copy to cpu only
   4578                                                           Yellow Packets
   4579                                                           regardless of its drop */
   4580 #define BCM_FIELD_COPYTOCPU_RED_PACKET      0x00000004 /* Copy to cpu only Red
   4581                                                           Packets regardless of
   4582                                                           its drop */
   4583 #define BCM_FIELD_COPYTOCPU_ALL_PACKET      0x00000007 /* Copy to cpu All
   4584                                                           Packets regardless of
   4585                                                           its drop */
   4586 #define BCM_FIELD_COPYTOCPU_TRUNCATE        0x00000008 /* Copy to cpu only the
   4587                                                           first cell of Packets */
   4588 #define BCM_FIELD_COPYTOCPU_GREEN_DROPPED_PACKET 0x00000010 /* Copy to cpu only
   4589                                                           Dropped Green Packets */
   4590 #define BCM_FIELD_COPYTOCPU_YELLOW_DROPPED_PACKET 0x00000020 /* Copy to cpu only
   4591                                                           Dropped Yellow Packets */
   4592 #define BCM_FIELD_COPYTOCPU_RED_DROPPED_PACKET 0x00000040 /* Copy to cpu only
   4593                                                           Dropped Red Packets */
   4594 #define BCM_FIELD_COPYTOCPU_DROPPED_PACKET  0x00000070 /* Copy to cpu All
   4595                                                           Dropped Packets */
   4596 #define BCM_FIELD_COPYTOCPU_GREEN_NOT_DROPPED_PACKET 0x00000080 /* Copy to cpu only
   4597                                                           Non-dropped Green
   4598                                                           Packets */
   4599 #define BCM_FIELD_COPYTOCPU_YELLOW_NOT_DROPPED_PACKET 0x00000100 /* Copy to cpu only
   4600                                                           Non-dropped Yellow
   4601                                                           Packets */
   4602 #define BCM_FIELD_COPYTOCPU_RED_NOT_DROPPED_PACKET 0x00000200 /* Copy to cpu only
   4603                                                           Non-dropped Red
   4604                                                           Packets */
   4605 #define BCM_FIELD_COPYTOCPU_NOT_DROPPED_PACKET 0x00000380 /* Copy to cpu All
   4606                                                           Non-dropped Packets */
   4607 
   4608 /* Field CopyToCpu Config Format. */
   4609 typedef struct bcm_field_CopyToCpu_config_s {
   4610     uint32 flags;       /* CopyToCpu flags (BCM_FIELD_COPYTOCPU_XXX). */
   4611     uint32 match_rule;  /* CopyToCpu matched rule ID. */
   4612 } bcm_field_CopyToCpu_config_t;
   4613 
   4614 /* 
   4615  * Redirect Flags.
   4616  * 
   4617  * bcm_field_action_redirect_config_set requires atleast of these flags
   4618  * to be configured for Redirect action.
   4619  */
   4620 #define BCM_FIELD_REDIRECT_GREEN_PACKET     0x00000001 /* Redirect only Green
   4621                                                           Packets regardless of
   4622                                                           its drop */
   4623 #define BCM_FIELD_REDIRECT_YELLOW_PACKET    0x00000002 /* Redirect only Yellow
   4624                                                           Packets regardless of
   4625                                                           its drop */
   4626 #define BCM_FIELD_REDIRECT_RED_PACKET       0x00000004 /* Redirect only Red
   4627                                                           Packets regardless of
   4628                                                           its drop */
   4629 #define BCM_FIELD_REDIRECT_ALL_PACKET       0x00000007 /* Redirect All Packets
   4630                                                           regardless of its drop */
   4631 #define BCM_FIELD_REDIRECT_TRUNCATE         0x00000008 /* Redirect only the
   4632                                                           first cell of Packets */
   4633 #define BCM_FIELD_REDIRECT_SOURCE_USE_ORIGINAL_SOURCE 0x00000010 /* Use original packet
   4634                                                           source as Redirected
   4635                                                           packet source */
   4636 #define BCM_FIELD_REDIRECT_SOURCE_USE_ORIGINAL_DESTINATION 0x00000020 /* Use original packet
   4637                                                           destination as
   4638                                                           Redirected packet
   4639                                                           source */
   4640 #define BCM_FIELD_REDIRECT_SOURCE_USE_CONFIGURED 0x00000040 /* Use configured source
   4641                                                           as Redirected packet
   4642                                                           source */
   4643 #define BCM_FIELD_REDIRECT_GREEN_DROPPED_PACKET 0x00000080 /* Redirect only Dropped
   4644                                                           Green Packets */
   4645 #define BCM_FIELD_REDIRECT_YELLOW_DROPPED_PACKET 0x00000100 /* Redirect only Dropped
   4646                                                           Yellow Packets */
   4647 #define BCM_FIELD_REDIRECT_RED_DROPPED_PACKET 0x00000200 /* Redirect only Dropped
   4648                                                           Red Packets */
   4649 #define BCM_FIELD_REDIRECT_DROPPED_PACKET   0x00000380 /* Redirect All Dropped
   4650                                                           Packets */
   4651 #define BCM_FIELD_REDIRECT_GREEN_NOT_DROPPED_PACKET 0x00000400 /* Redirect only
   4652                                                           Non-dropped Green
   4653                                                           Packets */
   4654 #define BCM_FIELD_REDIRECT_YELLOW_NOT_DROPPED_PACKET 0x00000800 /* Redirect only
   4655                                                           Non-dropped Yellow
   4656                                                           Packets */
   4657 #define BCM_FIELD_REDIRECT_RED_NOT_DROPPED_PACKET 0x00001000 /* Redirect only
   4658                                                           Non-dropped Red
   4659                                                           Packets */
   4660 #define BCM_FIELD_REDIRECT_NOT_DROPPED_PACKET 0x00001C00 /* Redirect All
   4661                                                           Non-dropped Packets */
   4662 
   4663 /* 
   4664  * Field action Redirection (for bcmFieldActionRedirect).
   4665  * Used to specify the Redirection type in
   4666  * bcm_field_action_redirect_config_set.
   4667  */
   4668 typedef enum bcm_field_redirect_destination_type_e {
   4669     bcmFieldRedirectDestinationInvalid = 0, /* Invalid. */
   4670     bcmFieldRedirectDestinationPort = 1, /* Destination Port. */
   4671     bcmFieldRedirectDestinationTrunk = 2, /* Destination Trunk. */
   4672     bcmFieldRedirectDestinationMCast = 3, /* Destination L2 Multicast. */
   4673     bcmFieldRedirectDestinationCount = 4 /* Always Last. Not a usable value. */
   4674 } bcm_field_redirect_destination_type_t;
   4675 
   4676 #define BCM_FIELD_REDIRECTION_STRINGS \
   4677 { \
   4678     "Invalid", \
   4679     "Port", \
   4680     "Trunk", \
   4681     "MCast"  \
   4682 }
   4683 
   4684 /* Field Redirect Config Format. */
   4685 typedef struct bcm_field_redirect_config_s {
   4686     uint32 flags;                       /* Redirect flags
   4687                                            (BCM_FIELD_REDIRECT_XXX). */
   4688     bcm_field_redirect_destination_type_t destination_type; /* Destination type. */
   4689     int destination;                    /* Destination of the re-directed
   4690                                            packets. */
   4691     int source_port;                    /* Source port to use for re-directed
   4692                                            packets. */
   4693 } bcm_field_redirect_config_t;
   4694 
   4695 /* bcm_field_action_e */
   4696 typedef enum bcm_field_action_e {
   4697     bcmFieldActionCosQNew = 0,          /* Change CoS Queue; param0: New CoS
   4698                                            Queue. */
   4699     bcmFieldActionCosQCpuNew = 1,       /* Change CoS Queue when CopyToCpu;
   4700                                            param0: New CoS Queue. */
   4701     bcmFieldActionVlanCosQNew = 2,      /* Change VLAN CoS Queue; param0: New
   4702                                            CoS Queue. */
   4703     bcmFieldActionUcastCosQNew = 3,     /* Change CoS Queue for unicast packets;
   4704                                            param0: New CoS Queue. */
   4705     bcmFieldActionMcastCosQNew = 4,     /* Change CoS Queue for multicast
   4706                                            packets; param0: New CoS Queue. */
   4707     bcmFieldActionPrioPktAndIntCopy = 5, /* Pkt & internal priority from inner
   4708                                            tag. */
   4709     bcmFieldActionPrioPktAndIntNew = 6, /* Pkt & internal priority from arg;
   4710                                            param0: New priority. */
   4711     bcmFieldActionPrioPktAndIntTos = 7, /* Pkt & internal priority from TOS
   4712                                            field. */
   4713     bcmFieldActionPrioPktAndIntCancel = 8, /* Override another rule. */
   4714     bcmFieldActionPrioPktCopy = 9,      /* Pkt priority from inner tag. */
   4715     bcmFieldActionPrioPktNew = 10,      /* Pkt priority from arg; param0: New
   4716                                            priority. */
   4717     bcmFieldActionPrioPktTos = 11,      /* Pkt priority from TOS field. */
   4718     bcmFieldActionPrioPktCancel = 12,   /* Override another rule. */
   4719     bcmFieldActionPrioIntCopy = 13,     /* Internal priority from inner tag. */
   4720     bcmFieldActionPrioIntNew = 14,      /* Internal priority from arg; param0:
   4721                                            New priority. */
   4722     bcmFieldActionPrioIntTos = 15,      /* Internal priority from TOS field. */
   4723     bcmFieldActionPrioIntCancel = 16,   /* Override another rule. */
   4724     bcmFieldActionTosNew = 17,          /* Change TOS value in IP header;
   4725                                            param0: New TOS value. */
   4726     bcmFieldActionTosCopy = 18,         /* Copy priority from outer tag to IP
   4727                                            hdr. */
   4728     bcmFieldActionTosCancel = 19,       /* Override another rule. */
   4729     bcmFieldActionDscpNew = 20,         /* Change DSCP value; param0: New DSCP
   4730                                            value. */
   4731     bcmFieldActionDscpCancel = 21,      /* Override another rule. */
   4732     bcmFieldActionEcnNew = 22,          /* Change ECN value in IP header TOS;
   4733                                            param0: New ECN value. */
   4734     bcmFieldActionCopyToCpu = 23,       /* Copy to CPU. */
   4735     bcmFieldActionCopyToCpuCancel = 24, /* Override another rule. */
   4736     bcmFieldActionSwitchToCpuCancel = 25, /* Override switch logic copy-to-CPU. */
   4737     bcmFieldActionSwitchToCpuReinstate = 26, /* Reinstate copy-to-CPU switch logic. */
   4738     bcmFieldActionTimeStampToCpu = 27,  /* Send a copy to cpu with timestamp and
   4739                                            drop the packet */
   4740     bcmFieldActionTimeStampToCpuCancel = 28, /* Override another action (don't
   4741                                            copy,don't drop) */
   4742     bcmFieldActionRedirectPort = 29,    /* Redirect Packet to single port;
   4743                                            param0: Destination modid; param1:
   4744                                            Destination port. */
   4745     bcmFieldActionRedirect = bcmFieldActionRedirectPort, /* Same as bcmFieldActionRedirectPort. */
   4746     bcmFieldActionRedirectTrunk = 30,   /* Redirect Packet to a trunk; param0:
   4747                                            Destination trunk ID. */
   4748     bcmFieldActionRedirectCancel = 31,  /* Override another rule. */
   4749     bcmFieldActionRedirectPbmp = 32,    /* Replace port bitmap; param0:
   4750                                            Destination port bitmap. */
   4751     bcmFieldActionRedirectIpmc = 33,    /* Replace L3 multicast L3 & L2 bitmap;
   4752                                            param0: IP Multicast Index. */
   4753     bcmFieldActionRedirectMcast = 34,   /* Replace L2 multicast dest bitmap;
   4754                                            param0: L2 Multicast Index. */
   4755     bcmFieldActionRedirectVlan = 35,    /* Redirect to VLAN port bitmap. */
   4756     bcmFieldActionRedirectBcastPbmp = 36, /* Replace L2 broadcast dest bitmap;
   4757                                            param0: Destination port bitmap. */
   4758     bcmFieldActionEgressMask = 37,      /* Apply egress mask; param0:
   4759                                            Destination port bitmap mask. */
   4760     bcmFieldActionEgressPortsAdd = 38,  /* Add additional egress ports; param0:
   4761                                            Destination port bitmap. */
   4762     bcmFieldActionDrop = 39,            /* Drop. */
   4763     bcmFieldActionDropCancel = 40,      /* Override another rule. */
   4764     bcmFieldActionMirrorOverride = 41,  /* Override any mirroring for packet. */
   4765     bcmFieldActionMirrorIngress = 42,   /* Ingress mirror; param0: Dest modid;
   4766                                            param1: Dest port/tgid. */
   4767     bcmFieldActionMirrorEgress = 43,    /* Egress mirror; param0: Dest modid;
   4768                                            param1: Dest port/tgid. */
   4769     bcmFieldActionL3ChangeVlan = 44,    /* Change VLAN on L3-switched packets;
   4770                                            param0: ECMP or next hop info. */
   4771     bcmFieldActionL3ChangeVlanCancel = 45, /* Override another rule. */
   4772     bcmFieldActionL3ChangeMacDa = 46,   /* Change MAC DA on L3-switched packets;
   4773                                            param0: ECMP or next hop info. */
   4774     bcmFieldActionL3ChangeMacDaCancel = 47, /* Override another rule; param0: Next
   4775                                            hop table index. */
   4776     bcmFieldActionL3Switch = 48,        /* L3-switch packet; param0: ECMP or
   4777                                            next hop info. */
   4778     bcmFieldActionL3SwitchCancel = 49,  /* Override another rule. */
   4779     bcmFieldActionAddClassTag = 50,     /* Add Classification Tag. */
   4780     bcmFieldActionDropPrecedence = 51,  /* Set Drop Precedence; param0:
   4781                                            BCM_FIELD_COLOR_xxx. */
   4782     bcmFieldActionRpDrop = 52,          /* Red Priority Drop. */
   4783     bcmFieldActionRpDropCancel = 53,    /* Override another rule. */
   4784     bcmFieldActionRpDropPrecedence = 54, /* Set Red Priority Drop Precedence;
   4785                                            param0: BCM_FIELD_COLOR_xxx. */
   4786     bcmFieldActionRpCopyToCpu = 55,     /* Red Priority Copy to CPU. */
   4787     bcmFieldActionRpCopyToCpuCancel = 56, /* Override another rule. */
   4788     bcmFieldActionRpSwitchToCpuCancel = 57, /* Override switch logic copy-to-CPU. */
   4789     bcmFieldActionRpSwitchToCpuReinstate = 58, /* Reinstate copy-to-CPU switch logic. */
   4790     bcmFieldActionRpTimeStampToCpu = 59, /* Send a copy to cpu with timestamp and
   4791                                            drop the packet */
   4792     bcmFieldActionRpTimeStampToCpuCancel = 60, /* Override another action (don't
   4793                                            copy,don't drop) */
   4794     bcmFieldActionRpDscpNew = 61,       /* Red packet change DSCP value; param0:
   4795                                            New DSCP value. */
   4796     bcmFieldActionRpDscpCancel = 62,    /* Override any changes to DSCP field. */
   4797     bcmFieldActionRpEcnNew = 63,        /* Red packet change ECN value; param0:
   4798                                            New ECN value. */
   4799     bcmFieldActionRpOuterVlanPrioNew = 64, /* Red packet 802.1p priority from arg;
   4800                                            param0: New priority. */
   4801     bcmFieldActionRpInnerVlanPrioNew = 65, /* Red packet 802.1p priority from arg;
   4802                                            param0: New priority. */
   4803     bcmFieldActionRpOuterVlanCfiNew = 66, /* Red packet 802.1p CFI from arg;
   4804                                            param0: New CFI bit value. */
   4805     bcmFieldActionRpInnerVlanCfiNew = 67, /* Red packet 802.1p CFI from arg;
   4806                                            param0: New CFI bit value. */
   4807     bcmFieldActionRpPrioPktCopy = 68,   /* Red packet priority from inner tag. */
   4808     bcmFieldActionRpPrioPktNew = 69,    /* Red packet priority from argument0;
   4809                                            param0: New priority. */
   4810     bcmFieldActionRpPrioPktTos = 70,    /* Red Packet priority from TOS field in
   4811                                            IP header. */
   4812     bcmFieldActionRpPrioPktCancel = 71, /* Override another rule. */
   4813     bcmFieldActionRpCosQNew = 72,       /* Red packet change CoS Queue; param0:
   4814                                            New CoS Queue. */
   4815     bcmFieldActionRpVlanCosQNew = 73,   /* Red packet change VLAN CoSQ; param0:
   4816                                            New CoS Queue. */
   4817     bcmFieldActionRpUcastCosQNew = 74,  /* Red unicast packet change CoS Queue;
   4818                                            param0: New CoS Queue. */
   4819     bcmFieldActionRpMcastCosQNew = 75,  /* Red multicast packet change CoS
   4820                                            Queue; param0: New CoS Queue. */
   4821     bcmFieldActionRpPrioPktAndIntCopy = 76, /* Red packet Packet & Internal priority
   4822                                            from inner tag. */
   4823     bcmFieldActionRpPrioPktAndIntNew = 77, /* Red packet Packet & Internal priority
   4824                                            from param0; param0: New priority. */
   4825     bcmFieldActionRpPrioPktAndIntTos = 78, /* Red packet Packet & Internal priority
   4826                                            from TOS field. */
   4827     bcmFieldActionRpPrioPktAndIntCancel = 79, /* Override any internal priority
   4828                                            changes. */
   4829     bcmFieldActionRpPrioIntCopy = 80,   /* Red packet internal priority from
   4830                                            inner VLAN tag. */
   4831     bcmFieldActionRpPrioIntNew = 81,    /* Red packet internal priority from an
   4832                                            argument; param0: New priority. */
   4833     bcmFieldActionRpPrioIntTos = 82,    /* Red packet internal priority from IP
   4834                                            header  TOS field. */
   4835     bcmFieldActionRpPrioIntCancel = 83, /* Red packet override any internal
   4836                                            priority changes. */
   4837     bcmFieldActionYpDrop = 84,          /* Yellow Priority Drop. */
   4838     bcmFieldActionYpDropCancel = 85,    /* Override another rule. */
   4839     bcmFieldActionYpDropPrecedence = 86, /* Set Yellow Priority Drop Precedence;
   4840                                            param0: BCM_FIELD_COLOR_xxx. */
   4841     bcmFieldActionYpCopyToCpu = 87,     /* Yellow Priority Copy to CPU. */
   4842     bcmFieldActionYpCopyToCpuCancel = 88, /* Override another rule. */
   4843     bcmFieldActionYpSwitchToCpuCancel = 89, /* Override switch logic copy-to-CPU. */
   4844     bcmFieldActionYpSwitchToCpuReinstate = 90, /* Reinstate copy-to-CPU switch logic. */
   4845     bcmFieldActionYpTimeStampToCpu = 91, /* Send a copy to cpu with timestamp and
   4846                                            drop the packet */
   4847     bcmFieldActionYpTimeStampToCpuCancel = 92, /* Override another action (don't
   4848                                            copy,don't drop) */
   4849     bcmFieldActionYpDscpNew = 93,       /* Yellow packet change DSCP value;
   4850                                            param0: New DSCP value. */
   4851     bcmFieldActionYpDscpCancel = 94,    /* Override any changes to DSCP field. */
   4852     bcmFieldActionYpEcnNew = 95,        /* Yellow packet change ECN value;
   4853                                            param0: New ECN value. */
   4854     bcmFieldActionYpOuterVlanPrioNew = 96, /* Yellow packet 802.1p priority from
   4855                                            arg. */
   4856     bcmFieldActionYpInnerVlanPrioNew = 97, /* Yellow packet 802.1p priority from
   4857                                            arg; param0: New priority. */
   4858     bcmFieldActionYpOuterVlanCfiNew = 98, /* Yellow packet 802.1p CFI from arg;
   4859                                            param0: New CFI bit value. */
   4860     bcmFieldActionYpInnerVlanCfiNew = 99, /* Yellow packet 802.1p CFI from arg;
   4861                                            param0: New CFI bit value. */
   4862     bcmFieldActionYpPrioPktCopy = 100,  /* Yellow packet priority from inner
   4863                                            tag. */
   4864     bcmFieldActionYpPrioPktNew = 101,   /* Yellow packet priority from param0;
   4865                                            param0: New priority. */
   4866     bcmFieldActionYpPrioPktTos = 102,   /* Yellow packet priority from TOS field
   4867                                            in IP header. */
   4868     bcmFieldActionYpPrioPktCancel = 103, /* Override another rule. */
   4869     bcmFieldActionYpCosQNew = 104,      /* Yellow packet change CoS Queue;
   4870                                            param0: New CoS Queue. */
   4871     bcmFieldActionYpVlanCosQNew = 105,  /* Yellow packet change VLAN CoSQ;
   4872                                            param0: New CoS Queue. */
   4873     bcmFieldActionYpUcastCosQNew = 106, /* Yellow unicast packet change CoS
   4874                                            Queue; param0: New CoS Queue. */
   4875     bcmFieldActionYpMcastCosQNew = 107, /* Yellow multicast packet change CoS
   4876                                            Queue; param0: New CoS Queue. */
   4877     bcmFieldActionYpPrioPktAndIntCopy = 108, /* Yellow packet Packet & Internal
   4878                                            priority from inner tag. */
   4879     bcmFieldActionYpPrioPktAndIntNew = 109, /* Yellow packet Packet & Internal
   4880                                            priority from param0; param0: New
   4881                                            priority. */
   4882     bcmFieldActionYpPrioPktAndIntTos = 110, /* Yellow packet Packet & Internal
   4883                                            priority from TOS field. */
   4884     bcmFieldActionYpPrioPktAndIntCancel = 111, /* Override any int priority changes. */
   4885     bcmFieldActionYpPrioIntCopy = 112,  /* Yellow packet internal priority from
   4886                                            inner VLAN tag. */
   4887     bcmFieldActionYpPrioIntNew = 113,   /* Yellow packet internal priority from
   4888                                            an argument; param0: New priority. */
   4889     bcmFieldActionYpPrioIntTos = 114,   /* Yellow packet internal priority from
   4890                                            IP header TOS field. */
   4891     bcmFieldActionYpPrioIntCancel = 115, /* Yellow packet override any internal
   4892                                            priority changes. */
   4893     bcmFieldActionUpdateCounter = 116,  /* Update Counter; param0:
   4894                                            BCM_FIELD_COUNTER_MODE_xxx. */
   4895     bcmFieldActionMeterConfig = 117,    /* Meter configuration; param0:
   4896                                            BCM_FIELD_METER_MODE_xxx; param1: if
   4897                                            param0 == BCM_FIELD_METER_MODE_FLOW,
   4898                                            this denotes BCM_FIELD_METER_PEAK(1)
   4899                                            or BCM_FIELD_METER_COMMITTED(2). */
   4900     bcmFieldActionColorIndependent = 118, /* Make L3SW_CHANGE_MACDA_OR_VLAN
   4901                                            actions color independent. */
   4902     bcmFieldActionClassDestSet = 119,   /* Set destination address lookup class
   4903                                            ID. */
   4904     bcmFieldActionClassSet = bcmFieldActionClassDestSet, /* Same as bcmFieldActionClassDestSet. */
   4905     bcmFieldActionClassSourceSet = 120, /* Set source address lookup class ID. */
   4906     bcmFieldActionVrfSet = 121,         /* Set VRF ID. */
   4907     bcmFieldActionInnerVlanNew = 122,   /* Replace inner VLAN ID; param0: New
   4908                                            inner VLAN ID. */
   4909     bcmFieldActionInnerVlanPrioNew = 123, /* Replace inner VLAN tag priority;
   4910                                            param0: New inner VLAN tag priority. */
   4911     bcmFieldActionInnerVlanDelete = 124, /* Delete inner VLAN tag. */
   4912     bcmFieldActionOuterVlanDelete = 125, /* Delete outer VLAN tag. */
   4913     bcmFieldActionOuterVlanDeleteCancel = 126, /* Override previous outer VLAN tag
   4914                                            delete. */
   4915     bcmFieldActionInnerVlanAdd = 127,   /* Add a new Inner VLAN tag. */
   4916     bcmFieldActionInnerVlanCfiNew = 128, /* Replace packet 802.1p CFI from arg. */
   4917     bcmFieldActionOuterVlanNew = 129,   /* Replace outer VLAN ID; param0: New
   4918                                            outer VLAN ID. */
   4919     bcmFieldActionVlanNew = bcmFieldActionOuterVlanNew, /* Same as bcmFieldActionOuterVlanNew. */
   4920     bcmFieldActionOuterVlanAdd = 130,   /* Add a new Outer VLAN tag. */
   4921     bcmFieldActionVlanAdd = bcmFieldActionOuterVlanAdd, /* Same as bcmFieldActionOuterVlanAdd. */
   4922     bcmFieldActionOuterVlanAddCancel = 131, /* Override previous outer VLAN tag add. */
   4923     bcmFieldActionOuterVlanLookup = 132, /* Lookup outer VLAN tag. */
   4924     bcmFieldActionVlanLookup = bcmFieldActionOuterVlanLookup, /* Same as
   4925                                            bcmFieldActionOuterVlanLookup. */
   4926     bcmFieldActionOuterVlanPrioNew = 133, /* Replace outer VLAN tag priority;
   4927                                            param0: New outer VLAN tag priority. */
   4928     bcmFieldActionOuterVlanCfiNew = 134, /* Replace packet 802.1p CFI from arg;
   4929                                            param0: New CFI bit value; param0:
   4930                                            New CFI bit value. */
   4931     bcmFieldActionOuterTpidNew = 135,   /* Replace TPID in outer VLAN tag;
   4932                                            param0: New tpid. */
   4933     bcmFieldActionGpDrop = 136,         /* Green Priority Drop. */
   4934     bcmFieldActionGpDropCancel = 137,   /* Override another rule. */
   4935     bcmFieldActionGpDropPrecedence = 138, /* Set Green Priority Drop Precedence;
   4936                                            param0: BCM_FIELD_COLOR_xxx. */
   4937     bcmFieldActionGpCopyToCpu = 139,    /* Green Priority Copy to CPU. */
   4938     bcmFieldActionGpCopyToCpuCancel = 140, /* Override another rule. */
   4939     bcmFieldActionGpSwitchToCpuCancel = 141, /* Override switch logic copy-to-CPU. */
   4940     bcmFieldActionGpSwitchToCpuReinstate = 142, /* Reinstate copy-to-CPU switch logic. */
   4941     bcmFieldActionGpTimeStampToCpu = 143, /* Send a copy to cpu with timestamp and
   4942                                            drop the packet */
   4943     bcmFieldActionGpTimeStampToCpuCancel = 144, /* Override another action (don't
   4944                                            copy,don't drop) */
   4945     bcmFieldActionGpDscpNew = 145,      /* Green packet change DSCP value;
   4946                                            param0: New DSCP value. */
   4947     bcmFieldActionGpDscpCancel = 146,   /* Override any changes to DSCP field. */
   4948     bcmFieldActionGpEcnNew = 147,       /* Green packet change ECN value;
   4949                                            param0: New ECN value. */
   4950     bcmFieldActionGpTosPrecedenceNew = 148, /* Green packet change Tos byte
   4951                                            precedence value; param0: New
   4952                                            precedence value. */
   4953     bcmFieldActionGpTosPrecedenceCopy = 149, /* Green packet copy Tos byte precedence
   4954                                            from 802.1p priority. */
   4955     bcmFieldActionGpOuterVlanPrioNew = 150, /* Green packet 802.1p priority from
   4956                                            arg. */
   4957     bcmFieldActionGpInnerVlanPrioNew = 151, /* Green packet 802.1p priority from
   4958                                            arg; param0: New priority. */
   4959     bcmFieldActionGpOuterVlanCfiNew = 152, /* Green packet 802.1p CFI from arg;
   4960                                            param0: New CFI bit value. */
   4961     bcmFieldActionGpInnerVlanCfiNew = 153, /* Green packet 802.1p CFI from arg;
   4962                                            param0: New CFI bit value. */
   4963     bcmFieldActionGpPrioPktCopy = 154,  /* Green packet priority from inner tag. */
   4964     bcmFieldActionGpPrioPktNew = 155,   /* Green packet priority from param0;
   4965                                            param0: New priority. */
   4966     bcmFieldActionGpPrioPktTos = 156,   /* Green packet priority from TOS field
   4967                                            in IP header. */
   4968     bcmFieldActionGpPrioPktCancel = 157, /* Override another rule. */
   4969     bcmFieldActionGpCosQNew = 158,      /* Green packet change CoS Queue;
   4970                                            param0: New CoS Queue. */
   4971     bcmFieldActionGpVlanCosQNew = 159,  /* Green packet change VLAN CoSQ;
   4972                                            param0: New CoS Queue. */
   4973     bcmFieldActionGpUcastCosQNew = 160, /* Green unicast packet change CoS
   4974                                            Queue; param0: New CoS Queue. */
   4975     bcmFieldActionGpMcastCosQNew = 161, /* Green multicast packet change CoS
   4976                                            Queue; param0: New CoS Queue. */
   4977     bcmFieldActionGpPrioPktAndIntCopy = 162, /* Green packet Packet & Internal
   4978                                            priority from inner tag. */
   4979     bcmFieldActionGpPrioPktAndIntNew = 163, /* Green packet Packet & Internal
   4980                                            priority from param0; param0: New
   4981                                            priority. */
   4982     bcmFieldActionGpPrioPktAndIntTos = 164, /* Green packet Packet & Internal
   4983                                            priority from TOS field. */
   4984     bcmFieldActionGpPrioPktAndIntCancel = 165, /* Override any int priority changes. */
   4985     bcmFieldActionGpPrioIntCopy = 166,  /* Green packet internal priority from
   4986                                            inner VLAN tag. */
   4987     bcmFieldActionGpPrioIntNew = 167,   /* Green packet internal priority from
   4988                                            an argument; param0: New priority. */
   4989     bcmFieldActionGpPrioIntTos = 168,   /* Green packet internal priority from
   4990                                            IP header TOS field. */
   4991     bcmFieldActionGpPrioIntCancel = 169, /* Green packet override any internal
   4992                                            priority changes. */
   4993     bcmFieldActionDoNotChangeTtl = 170, /* Do not decrement TTL. */
   4994     bcmFieldActionDoNotCheckUrpf = 171, /* Do not check reverse path for unicast
   4995                                            traffic. */
   4996     bcmFieldActionDoNotCheckVlan = 172, /* Do not check VLAN membership and STG
   4997                                            STP state. */
   4998     bcmFieldActionDoNotLearn = 173,     /* Disable L2 learning. */
   4999     bcmFieldActionIpFix = 174,          /* Record the packet regardless of port
   5000                                            ipfix enable. */
   5001     bcmFieldActionIpFixCancel = 175,    /* Record the packet action override. */
   5002     bcmFieldActionIncomingMplsPortSet = 176, /* Assign incoming MPLS port. */
   5003     bcmFieldActionDeprecated177 = 177,  /* Deprecated. Do not use. */
   5004     bcmFieldActionNewClassId = 178,     /* Assign new classification ID. */
   5005     bcmFieldActionDeprecated179 = 179,  /* Deprecated. Do not use. */
   5006     bcmFieldActionDeprecated180 = 180,  /* Deprecated. Do not use. */
   5007     bcmFieldActionDeprecated181 = 181,  /* Deprecated. Do not use. */
   5008     bcmFieldActionDeprecated182 = 182,  /* Deprecated. Do not use. */
   5009     bcmFieldActionDeprecated183 = 183,  /* Deprecated. Do not use. */
   5010     bcmFieldActionDeprecated184 = 184,  /* Deprecated. Do not use. */
   5011     bcmFieldActionDeprecated185 = 185,  /* Deprecated. Do not use. */
   5012     bcmFieldActionMultipathHash = 186,  /* ECMP Hash selection for
   5013                                            bcmFieldActionL3Switch action. */
   5014     bcmFieldActionIpfixRate = 187,      /* Set IPFIX flow rate meter; param0:
   5015                                            rate id */
   5016     bcmFieldActionOffloadRedirect = 188, /* Redirect packet to offload engine. */
   5017     bcmFieldActionOffloadClassSet = 189, /* Set Class Id in offload engine
   5018                                            redirected traffic. */
   5019     bcmFieldActionOffloadDropIndication = 190, /* Set drop indicator in offload engine
   5020                                            redirected traffic. */
   5021     bcmFieldActionOamUpMep = 191,       /* Indicate UP MEP. */
   5022     bcmFieldActionOamTx = 192,          /* Indicate TX direction OAM PDU or data
   5023                                            packet. Used as MSB of
   5024                                            FieldActionOamLmBasePtr'. */
   5025     bcmFieldActionOamLmepMdl = 193,     /* MDL value for the LMEP. */
   5026     bcmFieldActionOamServicePriMappingPtr = 194, /* Concatenated with the internal
   5027                                            priority as index to LM packet
   5028                                            counter. */
   5029     bcmFieldActionOamLmBasePtr = 195,   /* Set base pointer to LM packet
   5030                                            counter. */
   5031     bcmFieldActionOamDmEnable = 196,    /* Enable OAM Delay Measurement. */
   5032     bcmFieldActionOamLmEnable = 197,    /* Enable OAM Loss Measurement. */
   5033     bcmFieldActionOamLmepEnable = 198,  /* Enable OAM loss/delay measurement. */
   5034     bcmFieldActionOamPbbteLookupEnable = 199, /* Indicate SVP should be used as the
   5035                                            key for LMEP lookup. */
   5036     bcmFieldActionSrcMacNew = 200,      /* Replace source mac of the packet. */
   5037     bcmFieldActionDstMacNew = 201,      /* Replace destination mac of the
   5038                                            packet. */
   5039     bcmFieldActionVnTagNew = 202,       /* Replace NIV VN tag if present, add if
   5040                                            not present; param0: VN tag. */
   5041     bcmFieldActionVnTagDelete = 203,    /* Delete NIV VN tag. */
   5042     bcmFieldActionDeprecated204 = 204,  /* Deprecated. Do not use. */
   5043     bcmFieldActionDeprecated205 = 205,  /* Deprecated. Do not use. */
   5044     bcmFieldActionVportNew = 206,       /* Replace/assign virtual port id. */
   5045     bcmFieldActionVportSpcpNew = 207,   /* Replace/assign virtual port's spcp. */
   5046     bcmFieldActionVportCpcpNew = 208,   /* Replace/assign virtual port's cpcp. */
   5047     bcmFieldActionVportTcNew = 209,     /* Replace/assign virtual port's traffic
   5048                                            class. */
   5049     bcmFieldActionVportDpNew = 210,     /* Replace/assign virtual port's drop
   5050                                            precedence. */
   5051     bcmFieldActionRedirectVportPort = 211, /* Redirect Packet to single VportPort;
   5052                                            param0: Destination vport; param1:
   5053                                            Destination port. */
   5054     bcmFieldActionMacDaKnown = 212,     /* Packet is not treated as a DLF type */
   5055     bcmFieldActionFilters = 213,        /* Enable Filters to override the rule;
   5056                                            param0: filter
   5057                                            types(BCM_FIELD_FILTER_XXX) */
   5058     bcmFieldActionFabricQueue = 214,    /* Enable ext header on hg ports. */
   5059     bcmFieldActionCnmCancel = 215,      /* Do not generate QCN congestion
   5060                                            notification message. */
   5061     bcmFieldActionQcnUndo = bcmFieldActionCnmCancel, /* Do not perform a Congestion test on
   5062                                            this packet (no QCN message can be
   5063                                            generated) */
   5064     bcmFieldActionDynamicHgTrunkCancel = 216, /* Disable dynamic HiGig trunking. */
   5065     bcmFieldActionEgressMirrorDisable = 217, /* Disable Egress Mirror for matching
   5066                                            packet. */
   5067     bcmFieldActionMultipathHashAdditionalInfo = 218, /* Add additional information to
   5068                                            matching packet's LAG/ECMP
   5069                                            load-balancing hash calculation */
   5070     bcmFieldActionDeprecated219 = 219,  /* Deprecated. Do not use. */
   5071     bcmFieldActionMirrorEgressDisable = 220, /* Disable egress mirror; param0 = TRUE
   5072                                            to disable, FALSE otherwise */
   5073     bcmFieldActionOuterVlanCopyInner = 221, /* Copy the VLAN id from the inner tag
   5074                                            to the outer. */
   5075     bcmFieldActionOuterVlanPrioCopyInner = 222, /* Copy the 802.1p priority from the
   5076                                            inner tag to the outer. */
   5077     bcmFieldActionOuterVlanCfiCopyInner = 223, /* Copy the CFI bit from the inner tag
   5078                                            to the outer. */
   5079     bcmFieldActionInnerVlanCopyOuter = 224, /* Copy the VLAN id from the outer tag
   5080                                            to the inner. */
   5081     bcmFieldActionInnerVlanPrioCopyOuter = 225, /* Copy the 802.1p priority from the
   5082                                            outer tag to the inner. */
   5083     bcmFieldActionInnerVlanCfiCopyOuter = 226, /* Copy the CFI bit from the outer tag
   5084                                            to the inner. */
   5085     bcmFieldActionCompressSrcIp6 = 227, /* Map incoming IPv6 packet Source IP to
   5086                                            ingress field processor IPv4 Source
   5087                                            IP field. */
   5088     bcmFieldActionCompressDstIp6 = 228, /* Map incoming IPv6 packet Destination
   5089                                            IP to ingress field processor IPv4
   5090                                            Destination IP field. */
   5091     bcmFieldActionServicePoolIdNew = 229, /* Change Service Pool ID; param0: New
   5092                                            Service Pool ID. */
   5093     bcmFieldActionUseGlobalMeterColor = 230, /* Use service meters output color
   5094                                            instead of CNG based color as input
   5095                                            packet color */
   5096     bcmFieldActionRedirectEgrNextHop = 231, /* Redirect packet to next hop; param0:
   5097                                            ECMP or next hop info. */
   5098     bcmFieldActionTrunkLoadBalanceCancel = 232, /* Disable trunk load balancing */
   5099     bcmFieldActionEcmpLoadBalanceCancel = 233, /* Disable ECMP group load balancing */
   5100     bcmFieldActionDoNotOverride = 234,  /* Do not override actions */
   5101     bcmFieldActionEgressClassSelect = 235, /* Select class to pass to EFP */
   5102     bcmFieldActionHiGigClassSelect = 236, /* Select class for HiGig */
   5103     bcmFieldActionOamDmTimeFormat = 237, /* Select time format for OAM delay
   5104                                            measurement */
   5105     bcmFieldActionOamLmDmSampleEnable = 238, /* Indicates if packet should be
   5106                                            processed as an OAMPDU belonging to
   5107                                            this MEP */
   5108     bcmFieldActionOamTagStatusCheck = 239, 
   5109     bcmFieldActionOamTunnelControl = 240, /* Select whether OAMPDU can either be
   5110                                            in a tunnel that is terminated or not
   5111                                            tunneled */
   5112     bcmFieldActionRegex = 241,          /* Perform DPI */
   5113     bcmFieldActionNoRegex = 242,        /* Do not perform DPI */
   5114     bcmFieldActionStat0 = 243,          /* Update statistics (statId in param0)
   5115                                            on entry hit.  See
   5116                                            bcm_field_entry_stat_attach and
   5117                                            related APIs. */
   5118     bcmFieldActionStat = bcmFieldActionStat0, /* Alias for bcmFieldActionStat0 */
   5119     bcmFieldActionPolicerLevel0 = 244,  /* Apply policer (policerId in param0)
   5120                                            to traffic hitting this entry.  See
   5121                                            bcm_field_entry_policer_attach and
   5122                                            related APIs. */
   5123     bcmFieldActionPolicerLevel1 = 245,  /* Apply policer (policerId in param0)
   5124                                            to traffic hitting this entry.  See
   5125                                            bcm_field_entry_policer_attach and
   5126                                            related APIs. */
   5127     bcmFieldActionPolicerGroup = 246,   /* Flag in ASETs to indicate group
   5128                                            policer usage with the group */
   5129     bcmFieldActionStatGroup = 247,      /* Flag in ASETs to indicate stat group
   5130                                            usage with the group */
   5131     bcmFieldActionVSQ = 248,            /* Assign matching packets to specified
   5132                                            VSQ (param0). */
   5133     bcmFieldActionIntPriorityAndDropPrecedence = 249, /* Change internal priority and drop
   5134                                            precedence.  param0 = new internal
   5135                                            priority.  param1 = new drop
   5136                                            precedence */
   5137     bcmFieldActionISQ = 250,            /* Assign matching packets to specified
   5138                                            ISQ (param0). */
   5139     bcmFieldActionTrap = 251,           /* Trap matched packets (treat them
   5140                                            according to the specified trap
   5141                                            profile) */
   5142     bcmFieldActionUsePolicerResult = 252, /* Specify/override where policer result
   5143                                            will be used for matched packets. 
   5144                                            See BCM_FIELD_USE_POLICER_RESULT_*
   5145                                            for flags that go in param0. */
   5146     bcmFieldActionStat1 = 253,          /* Secondary statistics update for
   5147                                            matched packets (statId in param0) */
   5148     bcmFieldActionStatTag = 254,        /* Assign statistics tag (such as for
   5149                                            external statistics engine) to
   5150                                            matched packets */
   5151     bcmFieldActionSnoop = 255,          /* Snoop matched packets (treat them
   5152                                            according to the specified snoop
   5153                                            profile) */
   5154     bcmFieldActionTtlSet = 256,         /* New TTL */
   5155     bcmFieldActionIncomingIpIfSet = 257, /* Assign incoming IP interface */
   5156     bcmFieldActionOrientationSet = 258, /* Set the new Orientation */
   5157     bcmFieldActionTrunkHashKeySet = 259, /* Set the Trunk Hash Key */
   5158     bcmFieldActionDstRpfGportNew = 260, /* Set the RPF Destination */
   5159     bcmFieldActionDhcpPkt = 261,        /* Indicate whether the Packet is DHCP */
   5160     bcmFieldActionSrcGportNew = 262,    /* Set the Source-Port */
   5161     bcmFieldActionForwardingTypeNew = 263, /* Set the new Forwarding type */
   5162     bcmFieldActionStartPacketStrip = 264, /* Strip the start-of-packet */
   5163     bcmFieldActionSystemHeaderSet = 265, /* Modify a System Header */
   5164     bcmFieldActionVSwitchNew = 266,     /* Replace Virtual Switch */
   5165     bcmFieldActionLearnSrcMacNew = 267, /* Replace the learnt packet source MAC
   5166                                            address */
   5167     bcmFieldActionLearnSrcPortNew = 268, /* Replace the learnt packet source Port */
   5168     bcmFieldActionLearnForwardingVlanIdNew = 269, /* Replace the learnt packet Forwarding
   5169                                            Vlan ID */
   5170     bcmFieldActionQosMapIdNew = 270,    /* Set the QoS map Id */
   5171     bcmFieldActionVlanActionSetNew = 271, /* Modify the VLAN Action Set Id */
   5172     bcmFieldActionVlanTranslationValueSet = 272, /* Set VLAN Translation lookup result */
   5173     bcmFieldActionTunnelTerminatedValueSet = 273, /* Set Tunnel termination lookup result */
   5174     bcmFieldActionMplsTerminatedValueSet = 274, /* Set MPLS termination lookup result */
   5175     bcmFieldActionIpTunnelValueSet = 275, /* Set IP Tunnel termination lookup
   5176                                            result */
   5177     bcmFieldActionL2SrcValueSet = 276,  /* Set L2 Source lookup result */
   5178     bcmFieldActionL2DestValueSet = 277, /* Set L2 Destination lookup result */
   5179     bcmFieldActionL3SrcRouteValueSet = 278, /* Set L3 Source lookup result */
   5180     bcmFieldActionL3DestRouteValueSet = 279, /* Set L3 Destination lookup result */
   5181     bcmFieldActionIpmcValueSet = 280,   /* Set IP Multicast lookup result */
   5182     bcmFieldActionCascadedKeyValueSet = 281, /* Set key value to cascade to later
   5183                                            group for a packet */
   5184     bcmFieldActionIngressGportSet = 282, /* Set a new ingress Gport
   5185                                            (MPLS/Mim/WLAN) value. */
   5186     bcmFieldActionExternalValue0Set = 283, /* Set External lookup 0 result */
   5187     bcmFieldActionExternalValue1Set = 284, /* Set External lookup 1 result */
   5188     bcmFieldActionExternalValue2Set = 285, /* Set External lookup 2 result */
   5189     bcmFieldActionExternalValue3Set = 286, /* Set External lookup 3 result */
   5190     bcmFieldActionNatCancel = 287,      /* Do Not perform NAT on this matching
   5191                                            packet */
   5192     bcmFieldActionNat = 288,            /* Perform NAT operation on the matching
   5193                                            packet */
   5194     bcmFieldActionNatEgressOverride = 289, /* Override NAT Egress information with
   5195                                            the given Egress information for
   5196                                            Translation */
   5197     bcmFieldActionRegexActionCancel = 290, /* Suppress action taken by the Regex
   5198                                            module for matching pkt. */
   5199     bcmFieldActionPortPrioIntCosQNew = 291, /* Change CoS Queue; param0: Classifier
   5200                                            ID param1: Queue offset or l2 UC
   5201                                            Gport. */
   5202     bcmFieldActionRpPortPrioIntCosQNew = 292, /* Red packet change CoS Queue; param0:
   5203                                            Classifier ID param1: Queue offset or
   5204                                            l2 UC Gport. */
   5205     bcmFieldActionYpPortPrioIntCosQNew = 293, /*  Yellow packet change CoS Queue;
   5206                                            param0: Classifier ID param1: Queue
   5207                                            offset or l2 UC Gport. */
   5208     bcmFieldActionGpPortPrioIntCosQNew = 294, /* Green packet change CoS Queue;
   5209                                            param0: Classifier ID param1: Queue
   5210                                            offset or l2 UC Gport. */
   5211     bcmFieldActionYpMirrorIngress = 295, /* Yellow packet ingress mirror; param0:
   5212                                            Dest modid; param1: Dest port/tgid. */
   5213     bcmFieldActionYpRedirectPort = 296, /* Redirect yellow packet to single
   5214                                            port; param0: Destination modid;
   5215                                            param1: Destination port. */
   5216     bcmFieldActionDeprecated297 = 297,  /* Deprecated. Do not use. */
   5217     bcmFieldActionFibreChanSrcBindEnable = 298, /* Enable or Disable Source Bind Check
   5218                                            for Fibre Chan packets */
   5219     bcmFieldActionFibreChanFpmaPrefixCheckEnable = 299, /* Enable or Disable FPMA prefix check
   5220                                            for Fibre Chan packets */
   5221     bcmFieldActionFibreChanZoneCheckEnable = 300, /* Enable or Disable Zone Check for
   5222                                            Fibre Chan packets */
   5223     bcmFieldActionFibreChanVsanId = 301, /* VSAN Id generated via VFP. */
   5224     bcmFieldActionFibreChanZoneCheckActionCancel = 302, /* To Accept or Ignore previously made
   5225                                            Zone check result */
   5226     bcmFieldActionFibreChanIntVsanPri = 303, /* New VSAN Priority. */
   5227     bcmFieldActionLearnInVPortNew = 304, /* Replace the learnt packet InVPort. */
   5228     bcmFieldActionOamDomain = 305,      /* Set the OAM domains on which the MEP
   5229                                            lookups are done. param0 can be used
   5230                                            to set first domain and param1 for
   5231                                            second domain. */
   5232     bcmFieldActionOamOlpHeaderAdd = 306, /* Add OLP  header for this packet -
   5233                                            param0 to be used for passing the
   5234                                            header type. */
   5235     bcmFieldActionOamSessionId = 307,   /* OAM session Id to be used in OLP Rx
   5236                                            header - param0 to be used for
   5237                                            passing the session id. */
   5238     bcmFieldActionOuterVlanCfiCancel = 308, /* Disable the CFI remarking of the
   5239                                            outer vlan tag CFI bit. */
   5240     bcmFieldActionInnerVlanPriCancel = 309, /* Disable the PCP remarking of the
   5241                                            inner vlan tag priority bits. */
   5242     bcmFieldActionPrioIntRemark = 310,  /* Assign a new packet internal priority
   5243                                            for PCP or CFI remarking. */
   5244     bcmFieldActionUseDefaultWred = 311, /* Use the discard settings from default
   5245                                            WRED configuration */
   5246     bcmFieldActionHashValueSet = 312,   /* Set Hash result */
   5247     bcmFieldActionL3IngressSet = 313,   /* Assign L3 Ingress Interface value to
   5248                                            packet. */
   5249     bcmFieldActionInterfaceClassVPort = 314, /* Set the Virtual Port Interface Class
   5250                                            ID . */
   5251     bcmFieldActionIngSampleEnable = 315, /* Set the SFLOW Ingress Sampling. */
   5252     bcmFieldActionEgrSampleEnable = 316, /* Set the SFLOW Egress Sampling. */
   5253     bcmFieldActionHashSelect0 = 317,    /* Set the hash buckets bitmap for Hash
   5254                                            key A. */
   5255     bcmFieldActionHashSelect1 = 318,    /* Set the hash buckets bitmap for Hash
   5256                                            key B. */
   5257     bcmFieldActionTrunkResilientHashCancel = 319, /* Cancels the resilient hash on Trunk. */
   5258     bcmFieldActionHgTrunkResilientHashCancel = 320, /* Cancels the resilient hash on HiGiG
   5259                                            Trunk. */
   5260     bcmFieldActionEcmpResilientHashCancel = 321, /* Cancels the resilient hash on ECMP. */
   5261     bcmFieldActionUnmodifiedPacketRedirectPort = 322, /* Redirect Unmodified Packet to single
   5262                                            port; param0: Destination Gport. */
   5263     bcmFieldActionEtagNew = 323,        /* Replace Port Extender ETAG if
   5264                                            present, add if not present; param0:
   5265                                            ETAG. */
   5266     bcmFieldActionEtagDelete = 324,     /* Delete Port Extender ETAG. */
   5267     bcmFieldActionPfcClassNew = 325,    /* Change the PFC class of the packet;
   5268                                            param0 : new PFC class value. */
   5269     bcmFieldActionRpIntCongestionNotificationNew = 326, /* Replace the internal congestion
   5270                                            notification value of red packet;
   5271                                            param0: Internal congestion
   5272                                            notification value. */
   5273     bcmFieldActionYpIntCongestionNotificationNew = 327, /* Replace the internal congestion
   5274                                            notification value of yellow packet;
   5275                                            param0: Internal congestion
   5276                                            notification value. */
   5277     bcmFieldActionGpIntCongestionNotificationNew = 328, /* Replace the internal congestion
   5278                                            notification value of green packet;
   5279                                            param0: Internal congestion
   5280                                            notification value. */
   5281     bcmFieldActionRpHGCongestionClassNew = 329, /* Replace the value of CongestionClass
   5282                                            field in Higig header for red packet;
   5283                                            param0: CongestionClass value. */
   5284     bcmFieldActionYpHGCongestionClassNew = 330, /* Replace the value of CongestionClass
   5285                                            field in Higig header for yellow
   5286                                            packet; param0: CongestionClass
   5287                                            value. */
   5288     bcmFieldActionGpHGCongestionClassNew = 331, /* Replace the value of CongestionClass
   5289                                            field in Higig header for green
   5290                                            packet; param0: CongestionClass
   5291                                            value. */
   5292     bcmFieldActionRedirDropPrecedence = 332, /* Set the redirect drop precedence of
   5293                                            packets. param0:BCM_FIELD_COLOR_xxx
   5294                                            param1:n/a. */
   5295     bcmFieldActionRpRedirDropPrecedence = 333, /* Set the redirect drop precedence of
   5296                                            Red packets.
   5297                                            param0:BCM_FIELD_COLOR_xxx
   5298                                            param1:n/a. */
   5299     bcmFieldActionYpRedirDropPrecedence = 334, /* Set the redirect drop precedence of
   5300                                            Yellow packets.
   5301                                            param0:BCM_FIELD_COLOR_xxx
   5302                                            param1:n/a. */
   5303     bcmFieldActionGpRedirDropPrecedence = 335, /* Set the redirect drop precedence of
   5304                                            Green packets.
   5305                                            param0:BCM_FIELD_COLOR_xxx
   5306                                            param1:n/a. */
   5307     bcmFieldActionHiGigDstModuleGportNew = 336, /* Replace the value of DST_MODID field
   5308                                            in Higig header ; param0: New
   5309                                            Destination Module Id. */
   5310     bcmFieldActionHiGigDstPortGportNew = 337, /* Replace the value of DST_PORT field
   5311                                            in Higig header ; param0: New
   5312                                            Destination Port Id. */
   5313     bcmFieldActionHiGigDstGportNew = 338, /* Replace the value of DST_MODID and
   5314                                            DST_PORT fields in Higig header ;
   5315                                            param0: New Destination Gport. */
   5316     bcmFieldActionGpHiGigDropPrecedenceNew = 339, /* Replace the value of Drop Precedence
   5317                                            field in Higig header for Green
   5318                                            Packets; param0: BCM_FIELD_COLOR_xxx. */
   5319     bcmFieldActionYpHiGigDropPrecedenceNew = 340, /* Replace the value of Drop Precedence
   5320                                            field in Higig header for Yellow
   5321                                            packets; param0: BCM_FIELD_COLOR_xxx. */
   5322     bcmFieldActionRpHiGigDropPrecedenceNew = 341, /* Replace the value of Drop Precedence
   5323                                            field in Higig header for Red
   5324                                            packets; param0: BCM_FIELD_COLOR_xxx. */
   5325     bcmFieldActionHiGigDropPrecedenceNew = 342, /* Replace the value of Drop Precedence
   5326                                            field in Higig header for
   5327                                            any(Green/Yellow/Red) packets;
   5328                                            param0: BCM_FIELD_COLOR_xxx. */
   5329     bcmFieldActionGpHiGigIntPriNew = 343, /* Replace the value of Traffic Class
   5330                                            field in Higig header for Green
   5331                                            packets; param0: New Internal
   5332                                            Priority. */
   5333     bcmFieldActionYpHiGigIntPriNew = 344, /* Replace the value of Traffic Class
   5334                                            field in Higig header for Yellow
   5335                                            packets; param0: New Internal
   5336                                            Priority. */
   5337     bcmFieldActionRpHiGigIntPriNew = 345, /* Replace the value of Traffic Class
   5338                                            field in Higig header for Red
   5339                                            packets; param0: New Internal
   5340                                            Priority. */
   5341     bcmFieldActionHiGigIntPriNew = 346, /* Replace the value of Traffic Class
   5342                                            field in Higig header for
   5343                                            any(green/Yellow/Red) packet; param0:
   5344                                            New Internal Priority. */
   5345     bcmFieldActionLoopbackSrcModuleGportNew = 347, /* Replace the value of Source ModId
   5346                                            field in Loopback header ; param0:
   5347                                            New Source Module Id. */
   5348     bcmFieldActionLoopbackSrcPortGportNew = 348, /* Replace the value of Source PortId
   5349                                            field in Loopback header ; param0:
   5350                                            New Source Port Id. */
   5351     bcmFieldActionLoopbackSrcGportNew = 349, /* Replace the value of Source ModId and
   5352                                            Source PortId fields in Loopback
   5353                                            header ; param0: New Source Gport. */
   5354     bcmFieldActionLoopbackCpuMasqueradePktProfileNew = 350, /* Replace the value of Packet Profile
   5355                                            field in Loopback header ; param0:
   5356                                            New Packet Profile. */
   5357     bcmFieldActionLoopbackPacketProcessingPortNew = 351, /* Replace the value of Packet
   5358                                            Processing port field in Loopback
   5359                                            header ; param0: New Packet
   5360                                            Processing Port. */
   5361     bcmFieldActionLoopBackTypeNew = 352, /* Replace the value of Loopback Type
   5362                                            field in Loopback header ; param0:
   5363                                            Loopback Type
   5364                                            (bcmFieldLoopbackTypeXXX). */
   5365     bcmFieldActionRecoverableDropCancel = 353, /* Override drop decision taken by
   5366                                            Protection switching logic */
   5367     bcmFieldActionStackingRouteNew = 354, /* Replace the value of the stacking
   5368                                            route */
   5369     bcmFieldActionPphPresentSet = 355,  /* If set, a Packet Processing header is
   5370                                            present. */
   5371     bcmFieldActionVxlanHeaderBits8_31_Set = 356, /* Set Vxlan Header Reserved_1 Field */
   5372     bcmFieldActionVxlanHeaderBits56_63_Set = 357, /* Set Vxlan Header Reserved_2 Field */
   5373     bcmFieldActionFabricHeaderSet = 358, /* If set, a Packet Processing header is
   5374                                            present. */
   5375     bcmFieldActionOam = 359,            /* It comprises several fields that are
   5376                                            changed at the same time: OAM-Up-Mep,
   5377                                            OAM-Sub-Type, OAM-offset,
   5378                                            OAM-Stamp-Offset */
   5379     bcmFieldActionVpnSet = 360,         /* Set a new VPN value; param0: VPN Id. */
   5380     bcmFieldActionL3DestRoutePublicValueSet = 361, /* Set L3 Destination public lookup
   5381                                            result. */
   5382     bcmFieldActionL3SrcRoutePublicValueSet = 362, /* Set L3 Source public lookup result. */
   5383     bcmFieldActionClassZero = 363,      /* Class Action Zero. */
   5384     bcmFieldActionClassOne = 364,       /* Class Action One. */
   5385     bcmFieldActionTrapReduced = 365,    /* Trap action without qualifier. */
   5386     bcmFieldActionGroupClassSet = 366,  /* Assign Class Id value to a Ingress
   5387                                            Field Group. */
   5388     bcmFieldActionEgressPbmpNullCopyToCpu = 367, /* Dropped Packets Copy to Cpu */
   5389     bcmFieldActionPimBidirFwd = 368,    /* If set, enable PIM-BIDIR forwarding
   5390                                            of IP Multicast packets. */
   5391     bcmFieldActionDscpMapNew = 369,     /* Qos Mapping for Incoming packet DSCP */
   5392     bcmFieldActionReserved370 = 370,    /* Reserved action. */
   5393     bcmFieldActionReserved371 = 371,    /* Reserved action. */
   5394     bcmFieldActionReserved372 = 372,    /* Reserved action. */
   5395     bcmFieldActionReserved373 = 373,    /* Reserved action. */
   5396     bcmFieldActionFabricEHAddOrUpdate = 374, /* To add or update the Higig extended
   5397                                            header(4 bytes) to Higig Packets. */
   5398     bcmFieldActionDot1pPreserve = 375,  /* To prohibit changing/rewriting of
   5399                                            packets 802.1p priority. */
   5400     bcmFieldActionGpDot1pPreserve = 376, /* To prohibit changing/rewriting of
   5401                                            Green packets 802.1p priority. */
   5402     bcmFieldActionYpDot1pPreserve = 377, /* To prohibit changing/rewriting of
   5403                                            yellow packets 802.1p priority. */
   5404     bcmFieldActionRpDot1pPreserve = 378, /* To prohibit changing/rewriting of red
   5405                                            packets 802.1p priority. */
   5406     bcmFieldActionDscpPreserve = 379,   /* To prohibit changing/rewriting of
   5407                                            packets DSCP. */
   5408     bcmFieldActionGpDscpPreserve = 380, /* To prohibit changing/rewriting of
   5409                                            green packets DSCP. */
   5410     bcmFieldActionYpDscpPreserve = 381, /* To prohibit changing/rewriting of
   5411                                            yellow packets DSCP. */
   5412     bcmFieldActionRpDscpPreserve = 382, /* To prohibit changing/rewriting of red
   5413                                            packets DSCP. */
   5414     bcmFieldActionChangeL2FieldsCancel = 383, /* Cancel Changing OuterVlan, SrcMac,
   5415                                            DstMac, VnTag, Etag from lower
   5416                                            priority groups. */
   5417     bcmFieldActionBFDSessionIdNew = 384, /* Assign new Session Id to BFD
   5418                                            EndPoint. */
   5419     bcmFieldActionCosMapNew = 385,      /* Override the default internal
   5420                                            priority to cosq mapping derived in
   5421                                            ingress pipeline using new IFP Cos
   5422                                            Map. */
   5423     bcmFieldActionGpCosMapNew = 386,    /* Override the default internal
   5424                                            priority to cosq mapping derived in
   5425                                            ingress pipeline using new IFP Cos
   5426                                            Map for Green Packets only. */
   5427     bcmFieldActionYpCosMapNew = 387,    /* Override the default internal
   5428                                            priority to cosq mapping derived in
   5429                                            ingress pipeline using new IFP Cos
   5430                                            Map for Yellow Packets only. */
   5431     bcmFieldActionRpCosMapNew = 388,    /* Override the default internal
   5432                                            priority to cosq mapping derived in
   5433                                            ingress pipeline using new IFP Cos
   5434                                            Map for Red Packets only. */
   5435     bcmFieldActionVxlanHeaderFlags = 389, /* Set Vxlan Header Flags Field. */
   5436     bcmFieldActionChangeL2Fields = 390, /* Modify L2 fields for the given L3
   5437                                            egress object. */
   5438     bcmFieldActionExactMatchClassId = 391, /* Exact Match Action Class Id. */
   5439     bcmFieldActionPfcTx = 392,          /* Send out a PFC frame. parma0: local
   5440                                            port number. param1: the enable
   5441                                            vector of the PFC frame */
   5442     bcmFieldActionSwitchEncap = 393,    /* To encapsulate MiML or Custom Header
   5443                                            in the customer ethernet packet for
   5444                                            selected packets */
   5445     bcmFieldActionStatVportNew = 394,   /* Replace/assign virtual port id
   5446                                            attached to specific statistic */
   5447     bcmFieldActionUcastQueueNew = 395,  /* Assign new Unicast Queue Number
   5448                                            param0: l2 UC queue gport. */
   5449     bcmFieldActionRpUcastQueueNew = 396, /* Red packet Assign new Unicast Queue
   5450                                            Number param0: l2 UC queue gport. */
   5451     bcmFieldActionYpUcastQueueNew = 397, /* Yellow Packet Assign new Unicast
   5452                                            Queue Number param0: l2 UC queue
   5453                                            gport. */
   5454     bcmFieldActionGpUcastQueueNew = 398, /* Green Packet Assign new Unicast Queue
   5455                                            Number param0: l2 UC queue gport. */
   5456     bcmFieldActionIntCosUcastQueueNew = 399, /* Assign new Unicast Queue Number
   5457                                            param0: l2 UC queue gport. param1:
   5458                                            classifier id */
   5459     bcmFieldActionRpIntCosUcastQueueNew = 400, /* Red Packet Assign new Unicast Queue
   5460                                            Number param0: l2 UC queue gport.
   5461                                            param1: classifier id */
   5462     bcmFieldActionYpIntCosUcastQueueNew = 401, /* Yellow Packet Assign new Unicast
   5463                                            Queue Number param0: l2 UC queue
   5464                                            gport. param1: classifier id */
   5465     bcmFieldActionGpIntCosUcastQueueNew = 402, /* Green Packet Assign new Unicast Queue
   5466                                            Number param0: l2 UC queue gport.
   5467                                            param1: classifier id */
   5468     bcmFieldActionHgTrunkRandomRoundRobinHashCancel = 403, /* Cancel Random or Roundrobin hash
   5469                                            configured for Higig Trunks */
   5470     bcmFieldActionTrunkRandomRoundRobinHashCancel = 404, /* Cancel Random or Roundrobin hash
   5471                                            configured for Trunks */
   5472     bcmFieldActionEcmpRandomRoundRobinHashCancel = 405, /* Cancel Random or Roundrobin hash
   5473                                            configured for Ecmp */
   5474     bcmFieldActionPacketTraceEnable = 406, /* trigger storing all instrumentation
   5475                                            triggers for this packet to a buffer.
   5476                                            Other than IFP, same can be done
   5477                                            using packet visibility API */
   5478     bcmFieldActionStrength = 407,       /* Strength for CopyToCpu or Redirection
   5479                                            packets */
   5480     bcmFieldActionRedirectBufferPriority = 408, /* Buffer priority for CopyToCpu or
   5481                                            Redirection packets */
   5482     bcmFieldActionRedirectPrioIntNew = 409, /* Internal priority for Redirected
   5483                                            packets */
   5484     bcmFieldActionRpRedirectPrioIntNew = 410, /* Internal priority for Redirected Red
   5485                                            packets */
   5486     bcmFieldActionYpRedirectPrioIntNew = 411, /* Internal priority for Redirected
   5487                                            Yellow packets */
   5488     bcmFieldActionGpRedirectPrioIntNew = 412, /* Internal priority for Redirected
   5489                                            Green packets */
   5490     bcmFieldActionUntaggedPacketPriorityNew = 413, /* set input priority for untagged
   5491                                            packets. (not internal priority,
   5492                                            refer doc) */
   5493     bcmFieldActionDoNotCutThrough = 414, /* On configuring this action, the
   5494                                            packet is not eligible for
   5495                                            cut-through mode in MMU. It will take
   5496                                            the default store and forward method. */
   5497     bcmFieldActionLoopbackOamResponse = 415, /* Generate OAM Loopback response. */
   5498     bcmFieldActionLoopbackSatResponse = 416, /* Generate SAT latching Loopback
   5499                                            response. */
   5500     bcmFieldActionOamStatObjectSessionId = 417, /* Adds LM counter index to OLP header
   5501                                            to uniquely identify OAM session. */
   5502     bcmFieldActionServicePrioIntCosQNew = 418, /* Change CoS Queue; param0: Classifier
   5503                                            ID param1: Queue offset. */
   5504     bcmFieldActionRpServicePrioIntCosQNew = 419, /* Red packet change CoS Queue; param0:
   5505                                            Classifier ID param1: Queue offset. */
   5506     bcmFieldActionYpServicePrioIntCosQNew = 420, /*  Yellow packet change CoS Queue;
   5507                                            param0: Classifier ID param1: Queue
   5508                                            offset. */
   5509     bcmFieldActionGpServicePrioIntCosQNew = 421, /* Green packet change CoS Queue;
   5510                                            param0: Classifier ID param1: Queue
   5511                                            offset. */
   5512     bcmFieldActionProtectionSwitchingDrop = 422, /* Drop the data packets on working or
   5513                                            protected path of PBB in VFP. */
   5514     bcmFieldActionServicePoolIdPrecedenceNew = 423, /* Change SPID and SPAP; param0: New
   5515                                            Service Pool ID param1: Service Pool
   5516                                            Precedence (color) */
   5517     bcmFieldActionSwapMacDaSa = 424,    /* Swap Destination and Source Mac
   5518                                            addresses */
   5519     bcmFieldActionSwapSourceIPDestIP = 425, /* Swap Destination and Source IP
   5520                                            addresses */
   5521     bcmFieldActionReplaceTtl = 426,     /* TTL is replaced with the value
   5522                                            programmed by
   5523                                            bcmFieldControlReplacementTtl instead
   5524                                            of decrementing */
   5525     bcmFieldActionPacketIsL3SAT = 427,  /* Indicates matched packet is L3SAT
   5526                                            packet and calculates offset to the
   5527                                            start of the L3SAT PDU */
   5528     bcmFieldActionReplaceSrcMac = 428,  /* Replace Source Mac */
   5529     bcmFieldActionReplaceDstMac = 429,  /* Replace Destination Mac */
   5530     bcmFieldActionReplaceInnerVlan = 430, /* Replace Inner Vlan */
   5531     bcmFieldActionReplaceOuterVlan = 431, /* Replace Outer Vlan */
   5532     bcmFieldActionReplaceInnerVlanPriority = 432, /* Replace Inner Vlan Priority */
   5533     bcmFieldActionReplaceOuterVlanPriority = 433, /* ReplaceOuter Vlan Priority */
   5534     bcmFieldActionStatAndPolicer = 434, /* Stat and Policer Action */
   5535     bcmFieldActionSnoopAndTrap = 435,   /* Snoop and Trap Action */
   5536     bcmFieldActionIEEE1588 = 436,       /* Setting varoius parameters for 1588
   5537                                            frames */
   5538     bcmFieldActionExternalValue4Set = 437, /* Set External lookup 4 result */
   5539     bcmFieldActionExternalValue5Set = 438, /* Set External lookup 5 result */
   5540     bcmFieldActionForward = 439,        /* Set Forwarding destination raw value */
   5541     bcmFieldActionTrapCodeQualifier = 440, /* Set Trap destination value (trap code
   5542                                            + forward strength+ snoop strength )
   5543                                            in addition to configurable value
   5544                                            that further resolves the cause of
   5545                                            the trap in the context of the
   5546                                            CPU-Trap-Code */
   5547     bcmFieldActionPphSnoopCode = 441,   /* Set the PPH Snoop code value */
   5548     bcmFieldActionEgressTimeStampInsert = 442, /* Insert EPIPE timestamp. */
   5549     bcmFieldActionIngressTimeStampInsert = 443, /* Insert IPIPE timestamp. */
   5550     bcmFieldActionIngressTimeStampInsertCancel = 444, /* Do not insert ingress timestamp.
   5551                                            Overrules port config. */
   5552     bcmFieldActionEgressTimeStampInsertCancel = 445, /* Do not insert egress timestamp.
   5553                                            Overrules port config. */
   5554     bcmFieldActionMplsLabel1ExpNew = 446, /* Change the EXP field in forwarding
   5555                                            label of MPLS packets. */
   5556     bcmFieldActionDynamicEcmpEnable = 447, /* Force packets to use DLB when matched
   5557                                            by IFP rules, even though the Group
   5558                                            Table indicates hash-based load
   5559                                            balancing is to be used. */
   5560     bcmFieldActionDynamicTrunkEnable = 448, /* Force packets to use DLB when matched
   5561                                            by IFP rules, even though the Group
   5562                                            Table indicates hash-based load
   5563                                            balancing is to be used. */
   5564     bcmFieldActionDynamicEcmpCancel = bcmFieldActionEcmpLoadBalanceCancel, /* Same as
   5565                                            bcmFieldActionEcmpLoadBalanceCancel. */
   5566     bcmFieldActionDynamicTrunkCancel = 449, /* Force packets to use hash-based load
   5567                                            balancing, even though the group is
   5568                                            configured to support DLB. */
   5569     bcmFieldActionDgm = 450,            /* Indicate IFP action is valid. It is
   5570                                            mandatory to add this action to for
   5571                                            the following three actions to get
   5572                                            applied. */
   5573     bcmFieldActionDgmThreshold = 451,   /* Indicates the IFP action is only
   5574                                            valid when the primary optimal band
   5575                                            is equal to or below this threshold.
   5576                                            If threshold is set to 7, this action
   5577                                            will always be valid. */
   5578     bcmFieldActionDgmBias = 452,        /* Indicates the bias in favor of the
   5579                                            alternate path in DGM. */
   5580     bcmFieldActionDgmCost = 453,        /* Indicates the cost of switching over
   5581                                            to the alternate path in DGM. */
   5582     bcmFieldActionStaggeredValue0Set = 454, /* Value taken from action result 0 in
   5583                                            staggered mode. */
   5584     bcmFieldActionStaggeredValue1Set = 455, /* Value taken from action result 1 in
   5585                                            staggered mode. */
   5586     bcmFieldActionStaggeredValue2Set = 456, /* Value taken from action result 2 in
   5587                                            staggered mode. */
   5588     bcmFieldActionStaggeredValue3Set = 457, /* Value taken from action result 3 in
   5589                                            staggered mode. */
   5590     bcmFieldActionStaggeredDirectValueSet = 458, /* Value taken from KAPS payload in
   5591                                            staggered mode. */
   5592     bcmFieldActionStaggeredPreselProfile0Set = 459, /* Program selection profile value taken
   5593                                            from action result 0 in staggered
   5594                                            mode. */
   5595     bcmFieldActionStaggeredPreselProfile1Set = 460, /* Program selection profile value taken
   5596                                            from action result 1 in staggered
   5597                                            mode. */
   5598     bcmFieldActionStaggeredPreselProfile2Set = 461, /* Program selection profile value taken
   5599                                            from action result 2 in staggered
   5600                                            mode. */
   5601     bcmFieldActionStaggeredPreselProfile3Set = 462, /* Program selection profile value taken
   5602                                            from action result 3 in staggered
   5603                                            mode. */
   5604     bcmFieldActionStaggeredPreselProfileDirectSet = 463, /* Program selection profile value taken
   5605                                            from KAPS payload 0 in staggered
   5606                                            mode. */
   5607     bcmFieldActionEnableVlanCheck = 464, /* Check VLAN membership and STG STP
   5608                                            state */
   5609     bcmFieldActionAdmitProfile = 465,   /* Return admit profile by
   5610                                            bcmFieldAdmitProfile_t */
   5611     bcmFieldActionDynamicHgTrunkEnable = 466, /* Force packets to use DLB when matched
   5612                                            by IFP rules, even though the Group
   5613                                            Table indicates hash-based load
   5614                                            balancing is to be used. */
   5615     bcmFieldActionVxlanTerminate = 467, /* De-capsulate VXLAN tunnel header */
   5616     bcmFieldActionUseTunnelPayload = 468, /* To use Tunnel payload header fields
   5617                                            for hashing */
   5618     bcmFieldActionVlanActions = 469,    /* Set actions to modify VLAN tag
   5619                                            fields. */
   5620     bcmFieldActionSRDuplicateDrop = 470, /* SR (Seamless Redundancy): drop the
   5621                                            packet if it's an SR duplicate */
   5622     bcmFieldActionSRDuplicateDropCancel = 471, /* SR (Seamless Redundancy): Do not drop
   5623                                            the duplicate packet (override
   5624                                            another rule) */
   5625     bcmFieldActionSRNetIdFilter = 472,  /* SR (Seamless Redundancy): NET ID
   5626                                            filtering drop the packet if its NET
   5627                                            ID is the same as destination ports */
   5628     bcmFieldActionSRNetIdSource = 473,  /* SR: Indicates the source which NET ID
   5629                                            comes from; param0:
   5630                                            BCM_FIELD_SR_NET_ID_SOURCE_xxx */
   5631     bcmFieldActionFilterSrcMacPorts = 474, /* SR: Apply source port filtering based
   5632                                            on source address */
   5633     bcmFieldActionSRCopyToCpu = 475,    /* SR: Copy all packets or only
   5634                                            non-duplicate packets to CPU with
   5635                                            specified custom reason code; param0:
   5636                                            BCM_FIELD_SR_COPYTOCPU_xxx; param1:
   5637                                            custom CPU RX reason code (1~63) */
   5638     bcmFieldActionSRTagAdd = 476,       /* Insert SR (Seamless Redundancy) tag
   5639                                            in the packet; param0: SR packet type
   5640                                            (BCM_FIELD_SR_TAG_TYPE_xxx) */
   5641     bcmFieldActionSRTagDelete = 477,    /* Delete SR (Seamless Redundancy) tag
   5642                                            (if present) in the packet; param0:
   5643                                            SR packet type
   5644                                            (BCM_FIELD_SR_TAG_TYPE_xxx) */
   5645     bcmFieldActionSRLanIdNew = 478,     /* Specify SR(Seamless Redundancy) LAN
   5646                                            ID; param0: 0 for LAN A, 1 for LAN B */
   5647     bcmFieldActionSRNetIdNew = 479,     /* Specify SR(Seamless Redundancy) NET
   5648                                            ID; param0: NET ID 0~7 */
   5649     bcmFieldActionSRFlowIdNew = 480,    /* Specify SR(Seamless Redundancy) flow
   5650                                            ID; param0: SR flow ID */
   5651     bcmFieldActionSRFlowPriMapIdNew = 481, /* Specify TSN priority map for
   5652                                            SR(Seamless Redundancy) flow; param0:
   5653                                            TSN priority map ID */
   5654     bcmFieldActionMtuSize = 482,        /* Specify MTU size that the packet
   5655                                            should be checked against. It
   5656                                            overrides the MTU size specified from
   5657                                            MTU profile. */
   5658     bcmFieldActionStuSize = 483,        /* Specify STU (Shortest Transmission
   5659                                            Unit) size that the packet should be
   5660                                            checked against. It overrides the STU
   5661                                            size specified from MTU profile. */
   5662     bcmFieldActionTsnFlowIdNew = 484,   /* Specify TSN (Time-Sensitive
   5663                                            Networking) flow ID; param0: TSN flow
   5664                                            ID. */
   5665     bcmFieldActionTsnFlowPriMapIdNew = 485, /* Specify TSN priority map for TSN
   5666                                            flow; param0: TSN priority map ID */
   5667     bcmFieldActionMtuProfileIdNew = 486, /* Specify the TSN MTU profile ID;
   5668                                            param0: new MTU profile ID */
   5669     bcmFieldActionStuProfileIdNew = 487, /* Specify the TSN STU (Shortest
   5670                                            Transmission Unit) profile ID;
   5671                                            param0: new STU profile ID */
   5672     bcmFieldActionExternalValue6Set = 488, /* Set External lookup 6 result */
   5673     bcmFieldActionExternalValue7Set = 489, /* Set External lookup 7 result */
   5674     bcmFieldActionEsmSearchKeySrcMac = 490, /* This action sets ESM search key to
   5675                                            perform only L2 Source Mac Address
   5676                                            Lookup */
   5677     bcmFieldActionTrunkResilientHashEnable = 491, /* Forcefully Enable Resilient hashing
   5678                                            for Trunk groups. */
   5679     bcmFieldActionTrunkResilientHashDisable = 492, /* Forcefully Disable Resilient hashing
   5680                                            for Trunk groups. */
   5681     bcmFieldActionEcmpResilientHashEnable = 493, /* Forcefully Enable Resilient hashing
   5682                                            for ECMP groups. */
   5683     bcmFieldActionEcmpResilientHashDisable = 494, /* Forcefully Disable Resilient hashing
   5684                                            for ECMP groups. */
   5685     bcmFieldActionHiGigTrunkResilientHashEnable = 495, /* Forcefully Enable Resilient hashing
   5686                                            for HiGig Trunk groups. */
   5687     bcmFieldActionHiGigTrunkResilientHashDisable = 496, /* Forcefully Disable Resilient hashing
   5688                                            for HiGig Trunk groups. */
   5689     bcmFieldActionMacSecDecrypt = 497,  /* This action adds MACSEC Decrypt OLP
   5690                                            header in Egress  Pipe. This action
   5691                                            does not modify packet in Egress
   5692                                            Pipe. */
   5693     bcmFieldActionMacSecEncrypt = 498,  /* This action only adds MACSEC Encrypt
   5694                                            OLP header in Egress Pipe. */
   5695     bcmFieldActionMacSecSubPortNumAdd = 499, /* This action assigns MACSEC Subport
   5696                                            number to be used by MACSEC engine
   5697                                            for Security Association lookup */
   5698     bcmFieldActionMacSecPktTypeSet = 500, /* This action assigns a MACSEC packet
   5699                                            type to be used in MACSEC block.
   5700                                            MACSEC packet type is defined by
   5701                                            bcm_field_macsec_pkt_type_t. */
   5702     bcmFieldActionLatencyFlowId = 501,  /* Update Latency-Flow-Id in OAM-TS
   5703                                            HEADER; param0: New Latency-Flow-Id
   5704                                            value. */
   5705     bcmFieldActionIntEncapEnable = 502, /* This action triggers to insert INT
   5706                                            metadata header to the incoming valid
   5707                                            INT packet. */
   5708     bcmFieldActionIntTurnAround = 503,  /* This action triggers to turn-around
   5709                                            the packet if it fails to detect the
   5710                                            INT packet (one of the case if the
   5711                                            packet reaches hop limit). */
   5712     bcmFieldActionMacSecRedirectIpmc = 504, /* This action redirects multicast
   5713                                            MACSEC packets to MACSEC engine and
   5714                                            also adds OLP header in Egress
   5715                                            Pipeline. */
   5716     bcmFieldActionAddIngOuterVlanToEgrOuterVlan = 505, /* This action is to add the incoming
   5717                                            outer VLAN tag to the outgoing packet
   5718                                            in Egress Pipeline. */
   5719     bcmFieldActionErspan3HdrVlanCosPktCopy = 506, /* This action is to copy the incoming
   5720                                            outer VLAN and COS in the outgoing
   5721                                            ERSPAN3 header. */
   5722     bcmFieldActionErspan3HdrGbpSrcIdAdd = 507, /* This action is to add the GBP source
   5723                                            ID in ERSPAN3 header. */
   5724     bcmFieldActionErspan3HdrUdf2Add = 508, /* This action is to add the User
   5725                                            Defined Field 2 in ERSPAN3 header. */
   5726     bcmFieldActionRoeFrameTypeSet = 509, /* This action is to set or overwrite
   5727                                            Roe frame type. Roe frame types are
   5728                                            defined by
   5729                                            bcm_field_roe_frame_type_t. */
   5730     bcmFieldActionFlowtrackerGroupId = 510, /* This action is to associate
   5731                                            flowtracker group. */
   5732     bcmFieldActionStatisticPtr0 = 511,  /* Statistic pointer 0 for statistic
   5733                                            interface (stat I/F). */
   5734     bcmFieldActionStatisticPtr1 = 512,  /* Statistic pointer 1 for statistic
   5735                                            interface (stat I/F). */
   5736     bcmFieldActionTafGatePriMap = 513,  /* This action specify the priority
   5737                                            mapping of TAF (Time Aware Filtering)
   5738                                            gate. */
   5739     bcmFieldActionIntEncapUpdate = 514, /* This action triggers to update
   5740                                            existing INT metadata header of a
   5741                                            incoming valid INT packet. */
   5742     bcmFieldActionMplsLookupEnable = 515, /* Enable MPLS lookup similar to the
   5743                                            functionality managed by VLAN
   5744                                            controls; param0:BCM_FIELD_MPLS_XXX */
   5745     bcmFieldActionTerminationAllowed = 516, /* Overrides MY_STATION_TCAM actions;
   5746                                            param0:BCM_FIELD_XXX_TERM_ALLOWED */
   5747     bcmFieldActionMatchPbmpDrop = 517,  /* Drop packets on a port or a group of
   5748                                            ports after IFP resolution */
   5749     bcmFieldActionMatchPbmpRedirect = 518, /* Redirect packets on a port or a group
   5750                                            of ports after IFP resolution */
   5751     bcmFieldActionIntEncapDisable = 519, /* This action triggers to disable the
   5752                                            insertion of INT metadata header to
   5753                                            the incoming valid INT packet. */
   5754     bcmFieldActionElephantLookupEnable = 520, /* Enable Elephant flow lookup. */
   5755     bcmFieldActionElephantLookupDisable = 521, /* Disable Elephant flow lookup. */
   5756     bcmFieldActionElephantColorEnable = 522, /* Enable color assignment for a packet
   5757                                            identified as Elephant. */
   5758     bcmFieldActionElephantColorDisable = 523, /* Disable color assignment for a packet
   5759                                            identified as Elephant. */
   5760     bcmFieldActionElephantQueueEnable = 524, /* Enable Queue assignment for a packet
   5761                                            identified as Elephant. */
   5762     bcmFieldActionElephantQueueDisable = 525, /* Disable Queue assignment for a packet
   5763                                            identified as Elephant. */
   5764     bcmFieldActionLatencyMonitorEnable = 526, /* Enable Latency Monitor for a given
   5765                                            monitor IDs. */
   5766     bcmFieldActionLatencyMonitorDisable = 527, /* Disable Latency Monitor for a given
   5767                                            monitor IDs. */
   5768     bcmFieldActionOamLmCounterPoolId = 528, /* This action assigns OAM LM Counter
   5769                                            Pool ID. */
   5770     bcmFieldActionLoopbackType = 529,   /* Loopback Type of type
   5771                                            bcm_field_LoopbackType_t. */
   5772     bcmFieldActionVisibilityEnable = 530, /* This action marks a packet as
   5773                                            Visibility Packet */
   5774     bcmFieldActionDlbEcmpMonitorEnable = 531, /* This action is to enable/disable ecmp
   5775                                            monitor during DLB. */
   5776     bcmFieldActionMirrorZeroingEnable = 532, /* This action is to enable zeroing
   5777                                            [payload wiping] on any mirrored
   5778                                            packet */
   5779     bcmFieldActionNshEncapEnable = 533, /* This action triggers to NSH
   5780                                            encapuslation in the outgoing packet. */
   5781     bcmFieldActionNshServicePathId = 534, /* Add Service Path ID to the NSH for
   5782                                            the lookups at egress stage. */
   5783     bcmFieldActionNshServiceIndex = 535, /* Add Service Index to the NSH for the
   5784                                            lookups at egress stage. */
   5785     bcmFieldActionL3IngressStrengthSet = 536, /* Set the strength levels for L3_IIF
   5786                                            assignment from various sources w.r.t
   5787                                            VFP.. */
   5788     bcmFieldActionGbpClassifierAdd = 537, /* Indicates that GBP is present for
   5789                                            EPIPE for Multicast flows. */
   5790     bcmFieldActionGbpSrcIdNew = 538,    /* Assign a new GBP source ID for
   5791                                            matched packet. */
   5792     bcmFieldActionAssignOpaqueObject1 = 539, /* Assign a flex Opaque 1 object. */
   5793     bcmFieldActionAssignOpaqueObject2 = 540, /* Assign a flex Opaque 2 object. */
   5794     bcmFieldActionAssignOpaqueObject3 = 541, /* Assign a flex Opaque 3 object. */
   5795     bcmFieldActionAssignOpaqueObject4 = 542, /* Assign a flex Opaque 4 object. */
   5796     bcmFieldActionAssignExtractionCtrlId = 543, /* Assign a flex Extraction Control ID. */
   5797     bcmFieldActionAssignEditCtrlId = 544, /* Assign a flex Extraction Control ID. */
   5798     bcmFieldActionFlowtrackerEnable = 545, /* Enable/Disable Flowtracking for flows
   5799                                            hitting this entry. */
   5800     bcmFieldActionFlowtrackerNewLearnEnable = 546, /* Enable/Disable new learning in
   5801                                            flowtracker for flows hitting this
   5802                                            entry. */
   5803     bcmFieldActionCosMapSelect = 547,   /* This action applies the given COS map
   5804                                            type (as defined in
   5805                                            bcm_field_cos_map_select_t) */
   5806     bcmFieldActionGbpSrcMacMcastBitSet = 548, /* This action converts matched packet?s
   5807                                            Source Mac to Multicast based on
   5808                                            Field Control
   5809                                            bcmFieldControlGbpSrcMacMcastBitSet */
   5810     bcmFieldActionGbpDstIdNew = 549,    /* Assign a new  GBP Destination ID for
   5811                                            matched packet. */
   5812     bcmFieldActionLoopbackSubtype = 550, /* This action adds Subtype in the
   5813                                            Loopback header. */
   5814     bcmFieldActionEgressFlowControlEnable = 551, /* This action enables Egress Flow
   5815                                            controls */
   5816     bcmFieldActionEgressFlowEncapEnable = 552, /* This action enables Egress Flow encap
   5817                                            of type bcm_field_egress_flow_encap_t */
   5818     bcmFieldActionSystemHeaderSizeAdjust = 553, /* Updates the System Header Size Adjust
   5819                                            value. */
   5820     bcmFieldActionInVportClass0 = 554,  /* Updates the profile of an in LIF 0
   5821                                            encoded as Gport. */
   5822     bcmFieldActionInVportClass1 = 555,  /* Updates the profile of an in LIF 1
   5823                                            encoded as Gport. */
   5824     bcmFieldActionNetworkQos = 556,     /* Set the Network QoS. */
   5825     bcmFieldActionVoid = 557,           /* This action will be used when no Hw
   5826                                            resource should be taken (SW only). */
   5827     bcmFieldActionContainer = 558,      /* This action will be used as container
   5828                                            in IPMF2, to parse the action buffer,
   5829                                            when performing cascading between
   5830                                            IPMF2 and IPMF3. */
   5831     bcmFieldActionParsingStartType = 559, /*  Indicate the layer type that egress
   5832                                            parser should consider. */
   5833     bcmFieldActionParsingStartOffset = 560, /*  Indicate from which offset egress
   5834                                            parser should start parsing (all info
   5835                                            before that will not be parsed). */
   5836     bcmFieldActionEgressForwardingIndex = 561, /* Indicate for egress parser which
   5837                                            layer is the Forwarding layer. */
   5838     bcmFieldActionUDHData0 = 562,       /* User Define Header 0 data. */
   5839     bcmFieldActionUDHData1 = 563,       /* User Define Header 1 data. */
   5840     bcmFieldActionUDHData2 = 564,       /* User Define Header 2 data. */
   5841     bcmFieldActionUDHData3 = 565,       /* User Define Header 3 data. */
   5842     bcmFieldActionUDHBase0 = 566,       /* User Define Header 0 base. */
   5843     bcmFieldActionUDHBase1 = 567,       /* User Define Header 1 base. */
   5844     bcmFieldActionUDHBase2 = 568,       /* User Define Header 2 base. */
   5845     bcmFieldActionUDHBase3 = 569,       /* User Define Header 3 base. */
   5846     bcmFieldActionUDHBase = 570,        /* User define header base, used in
   5847                                            IPMF3. */
   5848     bcmFieldActionIPTProfile = 571,     /* IPT Profile action. */
   5849     bcmFieldActionIPTCommand = 572,     /* IPT Profile command. */
   5850     bcmFieldActionStatId0 = 573,        /* Updates statistics ID on entry hit. */
   5851     bcmFieldActionStatId1 = 574,        /* Updates statistics ID on entry hit. */
   5852     bcmFieldActionStatId2 = 575,        /* Updates statistics ID on entry hit. */
   5853     bcmFieldActionStatId3 = 576,        /* Updates statistics ID on entry hit. */
   5854     bcmFieldActionStatId4 = 577,        /* Updates statistics ID on entry hit. */
   5855     bcmFieldActionStatId5 = 578,        /* Updates statistics ID on entry hit. */
   5856     bcmFieldActionStatId6 = 579,        /* Updates statistics ID on entry hit. */
   5857     bcmFieldActionStatId7 = 580,        /* Updates statistics ID on entry hit. */
   5858     bcmFieldActionStatId8 = 581,        /* Updates statistics ID on entry hit. */
   5859     bcmFieldActionStatId9 = 582,        /* Updates statistics ID on entry hit. */
   5860     bcmFieldActionStatProfile0 = 583,   /* Updates statistics profile on entry
   5861                                            hit. */
   5862     bcmFieldActionStatProfile1 = 584,   /* Updates statistics profile on entry
   5863                                            hit. */
   5864     bcmFieldActionStatProfile2 = 585,   /* Updates statistics profile on entry
   5865                                            hit. */
   5866     bcmFieldActionStatProfile3 = 586,   /* Updates statistics profile on entry
   5867                                            hit. */
   5868     bcmFieldActionStatProfile4 = 587,   /* Updates statistics profile on entry
   5869                                            hit. */
   5870     bcmFieldActionStatProfile5 = 588,   /* Updates statistics profile on entry
   5871                                            hit. */
   5872     bcmFieldActionStatProfile6 = 589,   /* Updates statistics profile on entry
   5873                                            hit. */
   5874     bcmFieldActionStatProfile7 = 590,   /* Updates statistics profile on entry
   5875                                            hit. */
   5876     bcmFieldActionStatProfile8 = 591,   /* Updates statistics profile on entry
   5877                                            hit. */
   5878     bcmFieldActionStatProfile9 = 592,   /* Updates statistics profile on entry
   5879                                            hit. */
   5880     bcmFieldActionInvalidNext = 593,    /* Indicates to not execute the next
   5881                                            action. */
   5882     bcmFieldActionIngressDoNotLearn = 594, /* Disables L2 learning in ingress. */
   5883     bcmFieldActionEgressDoNotLearn = 595, /* Disables L2 learning in egress. */
   5884     bcmFieldActionDstRpf = 596,         /* Set the RPF destination. */
   5885     bcmFieldActionDstRpfValid = 597,    /* Validate the RPF destination. */
   5886     bcmFieldActionVisibilityClear = 598, /* Clear visibility. */
   5887     bcmFieldActionStatMetaData = 599,   /* Set statistics metaData. */
   5888     bcmFieldActionAceEntryId = 600,     /* Set ace ID pointer. */
   5889     bcmFieldActionInVport0 = 601,       /* Set INLIF0, value given as Gport. */
   5890     bcmFieldActionInVport1 = 602,       /* Set INLIF1, value given as Gport. */
   5891     bcmFieldActionOutVport0 = 603,      /* Set OUTLIF0, value given as Gport. */
   5892     bcmFieldActionOutVport1 = 604,      /* Set OUTLIF1, value given as Gport. */
   5893     bcmFieldActionOutVport2 = 605,      /* Set OUTLIF2, value given as Gport. */
   5894     bcmFieldActionOutVport3 = 606,      /* Set OUTLIF3, value given as Gport. */
   5895     bcmFieldActionExtStat0 = 607,       /* Update External Statistics ID 0. */
   5896     bcmFieldActionExtStat1 = 608,       /* Update External Statistics ID 1. */
   5897     bcmFieldActionExtStat2 = 609,       /* Update External Statistics ID 2. */
   5898     bcmFieldActionExtStat3 = 610,       /* Update External Statistics ID 3. */
   5899     bcmFieldActionForwardingTypeMeterMap = 611, /* Maps L2 forwarding type to one of the
   5900                                            general meters. */
   5901     bcmFieldActionStatSampling = 612,   /* Updates statistical sampling value. */
   5902     bcmFieldActionStatOamLM = 613,      /* Updates OAM LM counter value. */
   5903     bcmFieldActionForwardingLayerIndex = 614, /* Changes the forwarding Layer index at
   5904                                            Egress. */
   5905     bcmFieldActionInInterface0 = 615,   /* Changes the in LIF (INLIF0) encoded
   5906                                            as interface. */
   5907     bcmFieldActionInInterface1 = 616,   /* Changes the in LIF (INLIF1) encoded
   5908                                            as interface. */
   5909     bcmFieldActionOutInterface0 = 617,  /* Changes the out LIF (OUTLIF0) encoded
   5910                                            as interface. */
   5911     bcmFieldActionOutInterface1 = 618,  /* Changes the out LIF (OUTLIF1) encoded
   5912                                            as interface. */
   5913     bcmFieldActionOutInterface2 = 619,  /* Changes the out LIF (OUTLIF2) encoded
   5914                                            as interface. */
   5915     bcmFieldActionOutInterface3 = 620,  /* Changes the out LIF (OUTLIF3) encoded
   5916                                            as interface. */
   5917     bcmFieldActionTrapStrength = 621,   /* Updates the Trap Strength. */
   5918     bcmFieldActionSnoopStrength = 622,  /* Updates the Snoop strength. */
   5919     bcmFieldActionOutPortTrafficManagement = 623, /* Updates the Out-TM port. */
   5920     bcmFieldActionAceContextValue = 624, /* Updates ACE context. */
   5921     bcmFieldActionBierStringOffset = 625, /* Updates Bier string offset. */
   5922     bcmFieldActionBierStringSize = 626, /* Updates Bier string size. */
   5923     bcmFieldActionPacketIsBier = 627,   /* Updates is Bier packet. */
   5924     bcmFieldActionEventor = 628,        /* Enable push data to eventor. */
   5925     bcmFieldActionForwardingAdditionalInfo = 629, /* Updates forwarding additional
   5926                                            information. */
   5927     bcmFieldActionSmallExemLearn = 630, /* Updates the Small Exact Match learn
   5928                                            info (IPMF2 only). */
   5929     bcmFieldActionLargeExemLearn = 631, /* Updates the Large Exact Match learn
   5930                                            info (IPMF1 only). */
   5931     bcmFieldActionGroupLookupDisable = 632, /* Disables FP lookup for a given group
   5932                                            or groups sharing same slice
   5933                                            (Applicable to Presel only). */
   5934     bcmFieldActionOamCopyToCpu = 633,   /* Copies packet to CPU along with OAM
   5935                                            reason code be carried to CPU */
   5936     bcmFieldActionGpOamCopyToCpu = 634, /* Copies Green packet to CPU along with
   5937                                            OAM reason code be carried to CPU */
   5938     bcmFieldActionYpOamCopyToCpu = 635, /* Copies Yellow packet to CPU along
   5939                                            with OAM reason code be carried to
   5940                                            CPU */
   5941     bcmFieldActionRpOamCopyToCpu = 636, /* Copies Red packet to CPU along with
   5942                                            OAM reason code be carried to CPU */
   5943     bcmFieldActionInVport0Raw = 637,    /* Change the In Lif0, with raw value. */
   5944     bcmFieldActionInVport1Raw = 638,    /* Change the In Lif1, with raw value. */
   5945     bcmFieldActionOutVport0Raw = 639,   /* Change the Out Lif 0, with raw value. */
   5946     bcmFieldActionOutVport1Raw = 640,   /* Change the Out Lif 1, with raw value. */
   5947     bcmFieldActionOutVport2Raw = 641,   /* Change the Out Lif 2, with raw value. */
   5948     bcmFieldActionOutVport3Raw = 642,   /* Change the Out Lif 3, with raw value. */
   5949     bcmFieldActionAppendPointerCompensation = 643, /* Configures pointer to header append
   5950                                            compensation value. */
   5951     bcmFieldActionAssignNatClassId = 644, /* Assigns NAT class ID to have lookup
   5952                                            in Egress Vlan translation for NAT. */
   5953     bcmFieldActionAssignChangeL2FieldsClassId = 645, /* Assigns class ID to have a lookup in
   5954                                            Egress Vlan translation for Change L2
   5955                                            Fields. */
   5956     bcmFieldActionCount = 646           /* Always Last. Not a usable value. */
   5957 } bcm_field_action_t;
   5958 
   5959 #define BCM_FIELD_ACTION_STRINGS \
   5960 { \
   5961     "CosQNew", \
   5962     "CosQCpuNew", \
   5963     "VlanCosQNew", \
   5964     "UcastCosQNew", \
   5965     "McastCosQNew", \
   5966     "PrioPktAndIntCopy", \
   5967     "PrioPktAndIntNew", \
   5968     "PrioPktAndIntTos", \
   5969     "PrioPktAndIntCancel", \
   5970     "PrioPktCopy", \
   5971     "PrioPktNew", \
   5972     "PrioPktTos", \
   5973     "PrioPktCancel", \
   5974     "PrioIntCopy", \
   5975     "PrioIntNew", \
   5976     "PrioIntTos", \
   5977     "PrioIntCancel", \
   5978     "TosNew", \
   5979     "TosCopy", \
   5980     "TosCancel", \
   5981     "DscpNew", \
   5982     "DscpCancel", \
   5983     "EcnNew", \
   5984     "CopyToCpu", \
   5985     "CopyToCpuCancel", \
   5986     "SwitchToCpuCancel", \
   5987     "SwitchToCpuReinstate", \
   5988     "TimeStampToCpu", \
   5989     "TimeStampToCpuCancel", \
   5990     "RedirectPort", \
   5991     "RedirectTrunk", \
   5992     "RedirectCancel", \
   5993     "RedirectPbmp", \
   5994     "RedirectIpmc", \
   5995     "RedirectMcast", \
   5996     "RedirectVlan", \
   5997     "RedirectBcastPbmp", \
   5998     "EgressMask", \
   5999     "EgressPortsAdd", \
   6000     "Drop", \
   6001     "DropCancel", \
   6002     "MirrorOverride", \
   6003     "MirrorIngress", \
   6004     "MirrorEgress", \
   6005     "L3ChangeVlan", \
   6006     "L3ChangeVlanCancel", \
   6007     "L3ChangeMacDa", \
   6008     "L3ChangeMacDaCancel", \
   6009     "L3Switch", \
   6010     "L3SwitchCancel", \
   6011     "AddClassTag", \
   6012     "DropPrecedence", \
   6013     "RpDrop", \
   6014     "RpDropCancel", \
   6015     "RpDropPrecedence", \
   6016     "RpCopyToCpu", \
   6017     "RpCopyToCpuCancel", \
   6018     "RpSwitchToCpuCancel", \
   6019     "RpSwitchToCpuReinstate", \
   6020     "RpTimeStampToCpu", \
   6021     "RpTimeStampToCpuCancel", \
   6022     "RpDscpNew", \
   6023     "RpDscpCancel", \
   6024     "RpEcnNew", \
   6025     "RpOuterVlanPrioNew", \
   6026     "RpInnerVlanPrioNew", \
   6027     "RpOuterVlanCfiNew", \
   6028     "RpInnerVlanCfiNew", \
   6029     "RpPrioPktCopy", \
   6030     "RpPrioPktNew", \
   6031     "RpPrioPktTos", \
   6032     "RpPrioPktCancel", \
   6033     "RpCosQNew", \
   6034     "RpVlanCosQNew", \
   6035     "RpUcastCosQNew", \
   6036     "RpMcastCosQNew", \
   6037     "RpPrioPktAndIntCopy", \
   6038     "RpPrioPktAndIntNew", \
   6039     "RpPrioPktAndIntTos", \
   6040     "RpPrioPktAndIntCancel", \
   6041     "RpPrioIntCopy", \
   6042     "RpPrioIntNew", \
   6043     "RpPrioIntTos", \
   6044     "RpPrioIntCancel", \
   6045     "YpDrop", \
   6046     "YpDropCancel", \
   6047     "YpDropPrecedence", \
   6048     "YpCopyToCpu", \
   6049     "YpCopyToCpuCancel", \
   6050     "YpSwitchToCpuCancel", \
   6051     "YpSwitchToCpuReinstate", \
   6052     "YpTimeStampToCpu", \
   6053     "YpTimeStampToCpuCancel", \
   6054     "YpDscpNew", \
   6055     "YpDscpCancel", \
   6056     "YpEcnNew", \
   6057     "YpOuterVlanPrioNew", \
   6058     "YpInnerVlanPrioNew", \
   6059     "YpOuterVlanCfiNew", \
   6060     "YpInnerVlanCfiNew", \
   6061     "YpPrioPktCopy", \
   6062     "YpPrioPktNew", \
   6063     "YpPrioPktTos", \
   6064     "YpPrioPktCancel", \
   6065     "YpCosQNew", \
   6066     "YpVlanCosQNew", \
   6067     "YpUcastCosQNew", \
   6068     "YpMcastCosQNew", \
   6069     "YpPrioPktAndIntCopy", \
   6070     "YpPrioPktAndIntNew", \
   6071     "YpPrioPktAndIntTos", \
   6072     "YpPrioPktAndIntCancel", \
   6073     "YpPrioIntCopy", \
   6074     "YpPrioIntNew", \
   6075     "YpPrioIntTos", \
   6076     "YpPrioIntCancel", \
   6077     "UpdateCounter", \
   6078     "MeterConfig", \
   6079     "ColorIndependent", \
   6080     "ClassDestSet", \
   6081     "ClassSourceSet", \
   6082     "VrfSet", \
   6083     "InnerVlanNew", \
   6084     "InnerVlanPrioNew", \
   6085     "InnerVlanDelete", \
   6086     "OuterVlanDelete", \
   6087     "OuterVlanDeleteCancel", \
   6088     "InnerVlanAdd", \
   6089     "InnerVlanCfiNew", \
   6090     "OuterVlanNew", \
   6091     "OuterVlanAdd", \
   6092     "OuterVlanAddCancel", \
   6093     "OuterVlanLookup", \
   6094     "OuterVlanPrioNew", \
   6095     "OuterVlanCfiNew", \
   6096     "OuterTpidNew", \
   6097     "GpDrop", \
   6098     "GpDropCancel", \
   6099     "GpDropPrecedence", \
   6100     "GpCopyToCpu", \
   6101     "GpCopyToCpuCancel", \
   6102     "GpSwitchToCpuCancel", \
   6103     "GpSwitchToCpuReinstate", \
   6104     "GpTimeStampToCpu", \
   6105     "GpTimeStampToCpuCancel", \
   6106     "GpDscpNew", \
   6107     "GpDscpCancel", \
   6108     "GpEcnNew", \
   6109     "GpTosPrecedenceNew", \
   6110     "GpTosPrecedenceCopy", \
   6111     "GpOuterVlanPrioNew", \
   6112     "GpInnerVlanPrioNew", \
   6113     "GpOuterVlanCfiNew", \
   6114     "GpInnerVlanCfiNew", \
   6115     "GpPrioPktCopy", \
   6116     "GpPrioPktNew", \
   6117     "GpPrioPktTos", \
   6118     "GpPrioPktCancel", \
   6119     "GpCosQNew", \
   6120     "GpVlanCosQNew", \
   6121     "GpUcastCosQNew", \
   6122     "GpMcastCosQNew", \
   6123     "GpPrioPktAndIntCopy", \
   6124     "GpPrioPktAndIntNew", \
   6125     "GpPrioPktAndIntTos", \
   6126     "GpPrioPktAndIntCancel", \
   6127     "GpPrioIntCopy", \
   6128     "GpPrioIntNew", \
   6129     "GpPrioIntTos", \
   6130     "GpPrioIntCancel", \
   6131     "DoNotChangeTtl", \
   6132     "DoNotCheckUrpf", \
   6133     "DoNotCheckVlan", \
   6134     "DoNotLearn", \
   6135     "IpFix", \
   6136     "IpFixCancel", \
   6137     "IncomingMplsPortSet", \
   6138     "Deprecated177", \
   6139     "NewClassId", \
   6140     "Deprecated179", \
   6141     "Deprecated180", \
   6142     "Deprecated181", \
   6143     "Deprecated182", \
   6144     "Deprecated183", \
   6145     "Deprecated184", \
   6146     "Deprecated185", \
   6147     "MultipathHash", \
   6148     "IpfixRate", \
   6149     "OffloadRedirect", \
   6150     "OffloadClassSet", \
   6151     "OffloadDropIndication", \
   6152     "OamUpMep", \
   6153     "OamTx", \
   6154     "OamLmepMdl", \
   6155     "OamServicePriMappingPtr", \
   6156     "OamLmBasePtr", \
   6157     "OamDmEnable", \
   6158     "OamLmEnable", \
   6159     "OamLmepEnable", \
   6160     "OamPbbteLookupEnable", \
   6161     "SrcMacNew", \
   6162     "DstMacNew", \
   6163     "VnTagNew", \
   6164     "VnTagDelete", \
   6165     "Deprecated204", \
   6166     "Deprecated205", \
   6167     "VportNew", \
   6168     "VportSpcpNew", \
   6169     "VportCpcpNew", \
   6170     "VportTcNew", \
   6171     "VportDpNew", \
   6172     "RedirectVportPort", \
   6173     "MacDaKnown", \
   6174     "Filters", \
   6175     "FabricQueue", \
   6176     "CnmCancel", \
   6177     "DynamicHgTrunkCancel", \
   6178     "EgressMirrorDisable", \
   6179     "MultipathHashAdditionalInfo", \
   6180     "Deprecated219", \
   6181     "MirrorEgressDisable", \
   6182     "OuterVlanCopyInner", \
   6183     "OuterVlanPrioCopyInner", \
   6184     "OuterVlanCfiCopyInner", \
   6185     "InnerVlanCopyOuter", \
   6186     "InnerVlanPrioCopyOuter", \
   6187     "InnerVlanCfiCopyOuter", \
   6188     "CompressSrcIp6", \
   6189     "CompressDstIp6", \
   6190     "ServicePoolIdNew", \
   6191     "UseGlobalMeterColor", \
   6192     "RedirectEgrNextHop", \
   6193     "TrunkLoadBalanceCancel", \
   6194     "EcmpLoadBalanceCancel", \
   6195     "DoNotOverride", \
   6196     "EgressClassSelect", \
   6197     "HiGigClassSelect", \
   6198     "OamDmTimeFormat", \
   6199     "OamLmDmSampleEnable", \
   6200     "OamTagStatusCheck", \
   6201     "OamTunnelControl", \
   6202     "Regex", \
   6203     "NoRegex", \
   6204     "Stat0", \
   6205     "PolicerLevel0", \
   6206     "PolicerLevel1", \
   6207     "PolicerGroup", \
   6208     "StatGroup", \
   6209     "VSQ", \
   6210     "IntPriorityAndDropPrecedence", \
   6211     "ISQ", \
   6212     "Trap", \
   6213     "UsePolicerResult", \
   6214     "Stat1", \
   6215     "StatTag", \
   6216     "Snoop", \
   6217     "TtlSet", \
   6218     "IncomingIpIfSet", \
   6219     "OrientationSet", \
   6220     "TrunkHashKeySet", \
   6221     "DstRpfGportNew", \
   6222     "DhcpPkt", \
   6223     "SrcGportNew", \
   6224     "ForwardingTypeNew", \
   6225     "StartPacketStrip", \
   6226     "SystemHeaderSet", \
   6227     "VSwitchNew", \
   6228     "LearnSrcMacNew", \
   6229     "LearnSrcPortNew", \
   6230     "LearnForwardingVlanIdNew", \
   6231     "QosMapIdNew", \
   6232     "VlanActionSetNew", \
   6233     "VlanTranslationValueSet", \
   6234     "TunnelTerminatedValueSet", \
   6235     "MplsTerminatedValueSet", \
   6236     "IpTunnelValueSet", \
   6237     "L2SrcValueSet", \
   6238     "L2DestValueSet", \
   6239     "L3SrcRouteValueSet", \
   6240     "L3DestRouteValueSet", \
   6241     "IpmcValueSet", \
   6242     "CascadedKeyValueSet", \
   6243     "IngressGportSet", \
   6244     "ExternalValue0Set", \
   6245     "ExternalValue1Set", \
   6246     "ExternalValue2Set", \
   6247     "ExternalValue3Set", \
   6248     "NatCancel", \
   6249     "Nat", \
   6250     "NatEgressOverride", \
   6251     "RegexActionCancel", \
   6252     "PortPrioIntCosQNew", \
   6253     "RpPortPrioIntCosQNew", \
   6254     "YpPortPrioIntCosQNew", \
   6255     "GpPortPrioIntCosQNew", \
   6256     "YpMirrorIngress", \
   6257     "YpRedirectPort", \
   6258     "Deprecated297", \
   6259     "FibreChanSrcBindEnable", \
   6260     "FibreChanFpmaPrefixCheckEnable", \
   6261     "FibreChanZoneCheckEnable", \
   6262     "FibreChanVsanId", \
   6263     "FibreChanZoneCheckActionCancel", \
   6264     "FibreChanIntVsanPri", \
   6265     "LearnInVPortNew", \
   6266     "OamDomain", \
   6267     "OamOlpHeaderAdd", \
   6268     "OamSessionId", \
   6269     "OuterVlanCfiCancel", \
   6270     "InnerVlanPriCancel", \
   6271     "PrioIntRemark", \
   6272     "UseDefaultWred", \
   6273     "HashValueSet", \
   6274     "L3IngressSet", \
   6275     "InterfaceClassVPort", \
   6276     "IngSampleEnable", \
   6277     "EgrSampleEnable", \
   6278     "HashSelect0", \
   6279     "HashSelect1", \
   6280     "TrunkResilientHashCancel", \
   6281     "HgTrunkResilientHashCancel", \
   6282     "EcmpResilientHashCancel", \
   6283     "UnmodifiedPacketRedirectPort", \
   6284     "EtagNew", \
   6285     "EtagDelete", \
   6286     "PfcClassNew", \
   6287     "RpIntCongestionNotificationNew", \
   6288     "YpIntCongestionNotificationNew", \
   6289     "GpIntCongestionNotificationNew", \
   6290     "RpHGCongestionClassNew", \
   6291     "YpHGCongestionClassNew", \
   6292     "GpHGCongestionClassNew", \
   6293     "RedirDropPrecedence", \
   6294     "RpRedirDropPrecedence", \
   6295     "YpRedirDropPrecedence", \
   6296     "GpRedirDropPrecedence", \
   6297     "HiGigDstModuleGportNew", \
   6298     "HiGigDstPortGportNew", \
   6299     "HiGigDstGportNew", \
   6300     "GpHiGigDropPrecedenceNew", \
   6301     "YpHiGigDropPrecedenceNew", \
   6302     "RpHiGigDropPrecedenceNew", \
   6303     "HiGigDropPrecedenceNew", \
   6304     "GpHiGigIntPriNew", \
   6305     "YpHiGigIntPriNew", \
   6306     "RpHiGigIntPriNew", \
   6307     "HiGigIntPriNew", \
   6308     "LoopbackSrcModuleGportNew", \
   6309     "LoopbackSrcPortGportNew", \
   6310     "LoopbackSrcGportNew", \
   6311     "LoopbackCpuMasqueradePktProfileNew", \
   6312     "LoopbackPacketProcessingPortNew", \
   6313     "LoopBackTypeNew", \
   6314     "RecoverableDropCancel", \
   6315     "StackingRouteNew", \
   6316     "PphPresentSet", \
   6317     "VxlanHeaderBits8_31_Set", \
   6318     "VxlanHeaderBits56_63_Set", \
   6319     "FabricHeaderSet", \
   6320     "Oam", \
   6321     "VpnSet", \
   6322     "L3DestRoutePublicValueSet", \
   6323     "L3SrcRoutePublicValueSet", \
   6324     "ClassZero", \
   6325     "ClassOne", \
   6326     "TrapReduced", \
   6327     "GroupClassSet", \
   6328     "EgressPbmpNullCopyToCpu", \
   6329     "PimBidirFwd", \
   6330     "DscpMapNew", \
   6331     "Reserved370", \
   6332     "Reserved371", \
   6333     "Reserved372", \
   6334     "Reserved373", \
   6335     "FabricEHAddOrUpdate", \
   6336     "Dot1pPreserve", \
   6337     "GpDot1pPreserve", \
   6338     "YpDot1pPreserve", \
   6339     "RpDot1pPreserve", \
   6340     "DscpPreserve", \
   6341     "GpDscpPreserve", \
   6342     "YpDscpPreserve", \
   6343     "RpDscpPreserve", \
   6344     "ChangeL2FieldsCancel", \
   6345     "BFDSessionIdNew", \
   6346     "CosMapNew", \
   6347     "GpCosMapNew", \
   6348     "YpCosMapNew", \
   6349     "RpCosMapNew", \
   6350     "VxlanHeaderFlags", \
   6351     "ChangeL2Fields", \
   6352     "ExactMatchClassId", \
   6353     "PfcTx", \
   6354     "SwitchEncap", \
   6355     "StatVportNew", \
   6356     "UcastQueueNew", \
   6357     "RpUcastQueueNew", \
   6358     "YpUcastQueueNew", \
   6359     "GpUcastQueueNew", \
   6360     "IntCosUcastQueueNew", \
   6361     "RpIntCosUcastQueueNew", \
   6362     "YpIntCosUcastQueueNew", \
   6363     "GpIntCosUcastQueueNew", \
   6364     "HgTrunkRandomRoundRobinHashCancel", \
   6365     "TrunkRandomRoundRobinHashCancel", \
   6366     "EcmpRandomRoundRobinHashCancel", \
   6367     "PacketTraceEnable", \
   6368     "Strength", \
   6369     "RedirectBufferPriority", \
   6370     "RedirectPrioIntNew", \
   6371     "RpRedirectPrioIntNew", \
   6372     "YpRedirectPrioIntNew", \
   6373     "GpRedirectPrioIntNew", \
   6374     "UntaggedPacketPriorityNew", \
   6375     "DoNotCutThrough", \
   6376     "LoopbackOamResponse", \
   6377     "LoopbackSatResponse", \
   6378     "OamStatObjectSessionId", \
   6379     "ServicePrioIntCosQNew", \
   6380     "RpServicePrioIntCosQNew", \
   6381     "YpServicePrioIntCosQNew", \
   6382     "GpServicePrioIntCosQNew", \
   6383     "ProtectionSwitchingDrop", \
   6384     "ServicePoolIdPrecedenceNew", \
   6385     "SwapMacDaSa", \
   6386     "SwapSourceIPDestIP", \
   6387     "ReplaceTtl", \
   6388     "PacketIsL3SAT", \
   6389     "ReplaceSrcMac", \
   6390     "ReplaceDstMac", \
   6391     "ReplaceInnerVlan", \
   6392     "ReplaceOuterVlan", \
   6393     "ReplaceInnerVlanPriority", \
   6394     "ReplaceOuterVlanPriority", \
   6395     "StatAndPolicer", \
   6396     "SnoopAndTrap", \
   6397     "IEEE1588", \
   6398     "ExternalValue4Set", \
   6399     "ExternalValue5Set", \
   6400     "Forward", \
   6401     "TrapCodeQualifier", \
   6402     "PphSnoopCode", \
   6403     "EgressTimeStampInsert", \
   6404     "IngressTimeStampInsert", \
   6405     "IngressTimeStampInsertCancel", \
   6406     "EgressTimeStampInsertCancel", \
   6407     "MplsLabel1ExpNew", \
   6408     "DynamicEcmpEnable", \
   6409     "DynamicTrunkEnable", \
   6410     "DynamicTrunkCancel", \
   6411     "Dgm", \
   6412     "DgmThreshold", \
   6413     "DgmBias", \
   6414     "DgmCost", \
   6415     "StaggeredValue0Set", \
   6416     "StaggeredValue1Set", \
   6417     "StaggeredValue2Set", \
   6418     "StaggeredValue3Set", \
   6419     "StaggeredDirectValueSet", \
   6420     "StaggeredPreselProfile0Set", \
   6421     "StaggeredPreselProfile1Set", \
   6422     "StaggeredPreselProfile2Set", \
   6423     "StaggeredPreselProfile3Set", \
   6424     "StaggeredPreselProfileDirectSet", \
   6425     "EnableVlanCheck", \
   6426     "AdmitProfile", \
   6427     "DynamicHgTrunkEnable", \
   6428     "VxlanTerminate", \
   6429     "UseTunnelPayload", \
   6430     "VlanActions", \
   6431     "SRDuplicateDrop", \
   6432     "SRDuplicateDropCancel", \
   6433     "SRNetIdFilter", \
   6434     "SRNetIdSource", \
   6435     "FilterSrcMacPorts", \
   6436     "SRCopyToCpu", \
   6437     "SRTagAdd", \
   6438     "SRTagDelete", \
   6439     "SRLanIdNew", \
   6440     "SRNetIdNew", \
   6441     "SRFlowIdNew", \
   6442     "SRFlowPriMapIdNew", \
   6443     "MtuSize", \
   6444     "StuSize", \
   6445     "TsnFlowIdNew", \
   6446     "TsnFlowPriMapIdNew", \
   6447     "MtuProfileIdNew", \
   6448     "StuProfileIdNew", \
   6449     "ExternalValue6Set", \
   6450     "ExternalValue7Set", \
   6451     "EsmSearchKeySrcMac", \
   6452     "TrunkResilientHashEnable", \
   6453     "TrunkResilientHashDisable", \
   6454     "EcmpResilientHashEnable", \
   6455     "EcmpResilientHashDisable", \
   6456     "HiGigTrunkResilientHashEnable", \
   6457     "HiGigTrunkResilientHashDisable", \
   6458     "MacSecDecrypt", \
   6459     "MacSecEncrypt", \
   6460     "MacSecSubPortNumAdd", \
   6461     "MacSecPktTypeSet", \
   6462     "LatencyFlowId", \
   6463     "IntEncapEnable", \
   6464     "IntTurnAround", \
   6465     "MacSecRedirectIpmc", \
   6466     "AddIngOuterVlanToEgrOuterVlan", \
   6467     "Erspan3HdrVlanCosPktCopy", \
   6468     "Erspan3HdrGbpSrcIdAdd", \
   6469     "Erspan3HdrUdf2Add", \
   6470     "RoeFrameTypeSet", \
   6471     "FlowtrackerGroupId", \
   6472     "StatisticPtr0", \
   6473     "StatisticPtr1", \
   6474     "TafGatePriMap", \
   6475     "IntEncapUpdate", \
   6476     "MplsLookupEnable", \
   6477     "TerminationAllowed", \
   6478     "MatchPbmpDrop", \
   6479     "MatchPbmpRedirect", \
   6480     "IntEncapDisable", \
   6481     "ElephantLookupEnable", \
   6482     "ElephantLookupDisable", \
   6483     "ElephantColorEnable", \
   6484     "ElephantColorDisable", \
   6485     "ElephantQueueEnable", \
   6486     "ElephantQueueDisable", \
   6487     "LatencyMonitorEnable", \
   6488     "LatencyMonitorDisable", \
   6489     "OamLmCounterPoolId", \
   6490     "LoopbackType", \
   6491     "VisibilityEnable", \
   6492     "DlbEcmpMonitorEnable", \
   6493     "MirrorZeroingEnable", \
   6494     "NshEncapEnable", \
   6495     "NshServicePathId", \
   6496     "NshServiceIndex", \
   6497     "L3IngressStrengthSet", \
   6498     "GbpClassifierAdd", \
   6499     "GbpSrcIdNew", \
   6500     "AssignOpaqueObject1", \
   6501     "AssignOpaqueObject2", \
   6502     "AssignOpaqueObject3", \
   6503     "AssignOpaqueObject4", \
   6504     "AssignExtractionCtrlId", \
   6505     "AssignEditCtrlId", \
   6506     "FlowtrackerEnable", \
   6507     "FlowtrackerNewLearnEnable", \
   6508     "CosMapSelect", \
   6509     "GbpSrcMacMcastBitSet", \
   6510     "GbpDstIdNew", \
   6511     "LoopbackSubtype", \
   6512     "EgressFlowControlEnable", \
   6513     "EgressFlowEncapEnable", \
   6514     "SystemHeaderSizeAdjust", \
   6515     "InVportClass0", \
   6516     "InVportClass1", \
   6517     "NetworkQos", \
   6518     "Void", \
   6519     "Container", \
   6520     "ParsingStartType", \
   6521     "ParsingStartOffset", \
   6522     "EgressForwardingIndex", \
   6523     "UDHData0", \
   6524     "UDHData1", \
   6525     "UDHData2", \
   6526     "UDHData3", \
   6527     "UDHBase0", \
   6528     "UDHBase1", \
   6529     "UDHBase2", \
   6530     "UDHBase3", \
   6531     "UDHBase", \
   6532     "IPTProfile", \
   6533     "IPTCommand", \
   6534     "StatId0", \
   6535     "StatId1", \
   6536     "StatId2", \
   6537     "StatId3", \
   6538     "StatId4", \
   6539     "StatId5", \
   6540     "StatId6", \
   6541     "StatId7", \
   6542     "StatId8", \
   6543     "StatId9", \
   6544     "StatProfile0", \
   6545     "StatProfile1", \
   6546     "StatProfile2", \
   6547     "StatProfile3", \
   6548     "StatProfile4", \
   6549     "StatProfile5", \
   6550     "StatProfile6", \
   6551     "StatProfile7", \
   6552     "StatProfile8", \
   6553     "StatProfile9", \
   6554     "InvalidNext", \
   6555     "IngressDoNotLearn", \
   6556     "EgressDoNotLearn", \
   6557     "DstRpf", \
   6558     "DstRpfValid", \
   6559     "VisibilityClear", \
   6560     "StatMetaData", \
   6561     "AceEntryId", \
   6562     "InVport0", \
   6563     "InVport1", \
   6564     "OutVport0", \
   6565     "OutVport1", \
   6566     "OutVport2", \
   6567     "OutVport3", \
   6568     "ExtStat0", \
   6569     "ExtStat1", \
   6570     "ExtStat2", \
   6571     "ExtStat3", \
   6572     "ForwardingTypeMeterMap", \
   6573     "StatSampling", \
   6574     "StatOamLM", \
   6575     "ForwardingLayerIndex", \
   6576     "InInterface0", \
   6577     "InInterface1", \
   6578     "OutInterface0", \
   6579     "OutInterface1", \
   6580     "OutInterface2", \
   6581     "OutInterface3", \
   6582     "TrapStrength", \
   6583     "SnoopStrength", \
   6584     "OutPortTrafficManagement", \
   6585     "AceContextValue", \
   6586     "BierStringOffset", \
   6587     "BierStringSize", \
   6588     "PacketIsBier", \
   6589     "Eventor", \
   6590     "ForwardingAdditionalInfo", \
   6591     "SmallExemLearn", \
   6592     "LargeExemLearn", \
   6593     "GroupLookupDisable", \
   6594     "OamCopyToCpu", \
   6595     "GpOamCopyToCpu", \
   6596     "YpOamCopyToCpu", \
   6597     "RpOamCopyToCpu", \
   6598     "InVport0Raw", \
   6599     "InVport1Raw", \
   6600     "OutVport0Raw", \
   6601     "OutVport1Raw", \
   6602     "OutVport2Raw", \
   6603     "OutVport3Raw", \
   6604     "AppendPointerCompensation", \
   6605     "AssignNatClassId", \
   6606     "AssignChangeL2FieldsClassId"  \
   6607 }
   6608 
   6609 /* Used as data value for qualifier bcm_field_qualify_MacSecFlow */
   6610 typedef enum bcm_field_macsec_flow_e {
   6611     bcmFieldMacSecFlowNotMacSec = 0,    /* Regular non MACSEC packets */
   6612     bcmFieldMacSecFlowForEncrypt = 1,   /* MACSEC packets for Encryption to
   6613                                            MACSEC port */
   6614     bcmFieldMacSecFlowForDecrypt = 2,   /* MACSEC packets for Decryption to
   6615                                            MACSEC port */
   6616     bcmFieldMacSecFlowAfterDecrypt = 3, /* MACSEC packets after Decryption from
   6617                                            MACSEC port */
   6618     bcmFieldMacSecFlowCount = 4         /* Always last. Not to be used. */
   6619 } bcm_field_macsec_flow_t;
   6620 
   6621 /* Used as param0 for action bcmFieldActionMacSecPktTypeSet */
   6622 typedef enum bcm_field_macsec_pkt_type_e {
   6623     bcmFieldMacSecPktTypeNonMacSec = 0, /* Regular non MACSEC packets */
   6624     bcmFieldMacSecPktTypeMacSec = 1,    /* MACSEC Data packet */
   6625     bcmFieldMacSecPktTypeMacSecMgmt = 2, /* Both BPDU & KaY tagged packets */
   6626     bcmFieldMacSecPktTypeKaYFrames = 3, /* MACSEC packets with SecTAG.TCI.E=1
   6627                                            and SecTAG.TCI.C=0 */
   6628     bcmFieldMacSecPktTypeControlPkt = 4, /* MACSEC Control packet */
   6629     bcmFieldMacSecPktTypeMacSecEncrypted = 5, /* MACSEC already encrypted packet */
   6630     bcmFieldMacSecPktTypeCount = 6      /* Always last. Not to be used. */
   6631 } bcm_field_macsec_pkt_type_t;
   6632 
   6633 /* Timestamp transmit packet type */
   6634 typedef enum bcm_field_timestamp_transmit_pkt_type_e {
   6635     bcmFieldTimestampTwampOwamp = 0,    /* TWAMP/OWAMP Tx packet */
   6636     bcmFieldTimestampCount = 1          /* Always last. Not to be used. */
   6637 } bcm_field_timestamp_transmit_pkt_type_t;
   6638 
   6639 /* Flow control packet type */
   6640 typedef enum bcm_field_flow_control_pkt_type_e {
   6641     bcmFieldFlowControlPktTypeDataPkt = 0, /* Data packet */
   6642     bcmFieldFlowControlPktTypePause = 1, /* Pause flow control */
   6643     bcmFieldFlowControlPktTypePfc = 2,  /* PFC flow control */
   6644     bcmFieldFlowControlPktTypeE2ecc = 3, /* E2ECC flow control */
   6645     bcmFieldFlowControlPktTypeCount = 4 /* Always last. Not to be used. */
   6646 } bcm_field_flow_control_pkt_type_t;
   6647 
   6648 /* 
   6649  * Roe Frame Types used for qualifier bcmFieldQualifyRoeFrameType and
   6650  * action bcmFieldActionRoeFrameTypeSet.
   6651  */
   6652 typedef enum bcm_field_roe_frame_type_e {
   6653     bcmFieldRoeFrameTypeNone = 0,   /* Frame type is neither Radio over Ethernet
   6654                                        nor Custom Protocol. */
   6655     bcmFieldRoeFrameTypeRoe = 1,    /* Frame type is Radio over Ethernet. */
   6656     bcmFieldRoeFrameTypeCustom = 2, /* Frame type is Custom Protocol. */
   6657     bcmFieldRoeFrameTypeCount = 3   /* Always last. Not to be used. */
   6658 } bcm_field_roe_frame_type_t;
   6659 
   6660 #define BCM_FIELD_ROE_FRAME_TYPE_STRINGS \
   6661 { \
   6662     "None", \
   6663     "Roe", \
   6664     "Custom"  \
   6665 }
   6666 
   6667 /* 
   6668  * Used as parameter for COS MAP select APIs like
   6669  * bcm_field_qualify_CosMapSelect and bcmFieldActionCosMapSelect
   6670  */
   6671 typedef enum bcm_field_cos_map_select_e {
   6672     bcmFieldCosMapSelectWired = 0,      /* Wired */
   6673     bcmFieldCosMapSelectWireless = 1,   /* Wireless */
   6674     bcmFieldCosMapSelectCount = 2       /* Always last. Not to be used. */
   6675 } bcm_field_cos_map_select_t;
   6676 
   6677 /* 
   6678  * Used for action bcmFieldActionAdmitProfile to return profile number by
   6679  * enum.
   6680  */
   6681 typedef enum bcm_field_admit_profile_e {
   6682     bcmFieldAdmitProfileEcnNonCapable = 0, /* Packet is not ECN capable. Use
   6683                                            profile 0. */
   6684     bcmFieldAdmitProfileEcnCapable = 1  /* Packet is ECN capable. Use profile 1. */
   6685 } bcm_field_admit_profile_t;
   6686 
   6687 /* Double Actions param1 values enum */
   6688 typedef enum bcm_field_double_action_vals_e {
   6689     bcmFieldDoubleActionNone = 0,   /* Run No Action */
   6690     bcmFieldDoubleActionFirst = 1,  /* Run First Action */
   6691     bcmFieldDoubleActionSecond = 2, /* Run Second Action */
   6692     bcmFieldDoubleActionBoth = 3    /* Run Both Actions */
   6693 } bcm_field_double_action_vals_t;
   6694 
   6695 #define BCM_FIELD_DOUBLE_ACTION_VALS \
   6696 { \
   6697     "None", \
   6698     "First", \
   6699     "Second", \
   6700     "Both"  \
   6701 }
   6702 
   6703 /* 
   6704  * BCM action and the stage on which it applies specified internal
   6705  * action. See bcm_field_internal_to_bcm_action_map()
   6706  */
   6707 typedef struct bcm_field_internal_to_bcm_map_s {
   6708     bcm_field_action_t bcm_action;  /* BCM action containing specified internal
   6709                                        action. See
   6710                                        bcm_field_internal_to_bcm_action_map() */
   6711     bcm_field_stage_t bcm_stage;    /* BCM stage related to specified internal
   6712                                        action. See
   6713                                        bcm_field_internal_to_bcm_action_map() */
   6714 } bcm_field_internal_to_bcm_map_t;
   6715 
   6716 /* Holds which action to set width for, and the size of width to set */
   6717 typedef struct bcm_field_action_width_s {
   6718     uint32 action; 
   6719     uint32 width; 
   6720     uint8 valid; 
   6721 } bcm_field_action_width_t;
   6722 
   6723 /* 
   6724  * Used to specify the actions that can be taken by the entries in a
   6725  * group
   6726  */
   6727 typedef struct bcm_field_aset_s {
   6728     SHR_BITDCL w[_SHR_BITDCLSIZE(bcmFieldActionCount)]; 
   6729     bcm_field_action_width_t actions_width[16]; /* Actions width struct, used by
   6730                                            bcm_petra_field_action_width_set to
   6731                                            set width for certain action, 16 is
   6732                                            max_actions_per_db */
   6733 } bcm_field_aset_t;
   6734 
   6735 #define BCM_FIELD_ASET_INIT(aset)  \
   6736     sal_memset(&(aset), 0, sizeof(bcm_field_aset_t)) 
   6737 
   6738 #define BCM_FIELD_ASET_ADD(aset, q)  SHR_BITSET(((aset).w), (q)) 
   6739 
   6740 #define BCM_FIELD_ASET_ADD_WIDTH(aset, q, width_)  \
   6741     do {                                          \
   6742         int __i__ = 0;                            \
   6743         uint8 __new_valid__ = 1;                  \
   6744         SHR_BITSET(((aset).w), (q));                   \
   6745         for (;(aset).actions_width[__i__].valid != 0;__i__++);  \
   6746         if (__i__ < 16) { \
   6747             sal_memcpy(&((aset).actions_width[__i__].action), &(q), sizeof((q))); \
   6748             sal_memcpy(&((aset).actions_width[__i__].width), &(width_), sizeof((width_))); \
   6749             sal_memcpy(&((aset).actions_width[__i__].valid), &(__new_valid__), 1); \
   6750         } \
   6751     } while(0) 
   6752 
   6753 #define BCM_FIELD_ASET_REMOVE(aset, q)  SHR_BITCLR(((aset).w), (q)) 
   6754 
   6755 #define BCM_FIELD_ASET_TEST(aset, q)  SHR_BITGET(((aset).w), (q)) 
   6756 
   6757 /* 
   6758  * Match rule value used by OAM CCM Embedded App to indicate MEP type
   6759  * through bcmFieldActionCopyToCpu Action
   6760  */
   6761 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_PORT 0x1        /* Match rule values used
   6762                                                           by OAM CCM Embedded
   6763                                                           App to indicate Port
   6764                                                           MEP type */
   6765 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_INNER_VLAN 0x2        /* Match rule values used
   6766                                                           by OAM CCM Embedded
   6767                                                           App to indicate Inner
   6768                                                           vlan MEP type */
   6769 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_OUTER_VLAN 0x3        /* Match rule values used
   6770                                                           by OAM CCM Embedded
   6771                                                           App to indicate Outer
   6772                                                           vlan MEP type */
   6773 #define BCM_FIELD_OAM_MATCHED_RULE_ETHERNET_INNER_PLUS_OUTER_VLAN 0x4        /* Match rule values used
   6774                                                           by OAM CCM Embedded
   6775                                                           App to indicate Inner
   6776                                                           + Outer vlan MEP type */
   6777 
   6778 /* 
   6779  * Match rule value used by BFD Embedded App to indicate endpoint type
   6780  * through bcmFieldActionCopyToCpu Action
   6781  */
   6782 #define BCM_FIELD_BFD_MATCHED_RULE_MPLS_TUNNEL_PHP 0x1        /* Match rule value used
   6783                                                           by BFD Embedded App to
   6784                                                           indicate MPLS PHP
   6785                                                           tunnel type */
   6786 
   6787 #define BCM_FIELD_PRESEL_INIT(presel_set)  \
   6788     sal_memset(&(presel_set), 0, sizeof(bcm_field_presel_set_t)) 
   6789 
   6790 #define BCM_FIELD_PRESEL_ADD(presel_set, presel_id)  SHR_BITSET(((presel_set).w), (presel_id)) 
   6791 
   6792 #define BCM_FIELD_PRESEL_REMOVE(presel_set, presel_id)  SHR_BITCLR(((presel_set).w), (presel_id)) 
   6793 
   6794 #define BCM_FIELD_PRESEL_TEST(presel_set, presel_id)  SHR_BITGET(((presel_set).w), (presel_id)) 
   6795 
   6796 #define BCM_FIELD_ACTION_WIDTH_MAX  48         
   6797 
   6798 #define BCM_FIELD_ASET_WIDTH_MAX    \
   6799     ((BCM_FIELD_ACTION_WIDTH_MAX+1) * \
   6800     bcmFieldActionCount + 1) 
   6801 
   6802 /* Parameter flags for bcmFieldActionFabricQueue action. */
   6803 #define BCM_FABRIC_QUEUE_CUSTOMER       (1 << 29)  /* Indicates the intended
   6804                                                       application for the
   6805                                                       SBX_QUEUE_TAG.0x0-Fabric
   6806                                                       Interface Chip.0x1 Traffic
   6807                                                       Manager. */
   6808 #define BCM_FABRIC_QUEUE_QOS_BASE       (1 << 30)  /* Offset to base queue
   6809                                                       number from the QUEUE_MAP
   6810                                                       Table. Index into
   6811                                                       QUEUE_MAP Table is
   6812                                                       DST_MODID, DST_PID. */
   6813 #define BCM_FABRIC_QUEUE_DEST_OFFSET    (1 << 31)  /*  Index into QUEUE_MAP
   6814                                                       Table used for lookup. . */
   6815 
   6816 /* Unit capabilities flags. */
   6817 #define BCM_FIELD_STAT_WIDE_MODE    (1 << 0)   /* Unit has wide-mode slices. */
   6818 #define BCM_FIELD_STAT_SLICE_EN     (1 << 1)   /* Enable/disable slice lookup. */
   6819 #define BCM_FIELD_STAT_COS_QUEUE    (1 << 2)   /* Unit has CoS Queue change
   6820                                                   actions. */
   6821 
   6822 /* information related to the field class. */
   6823 typedef struct bcm_field_class_info_s {
   6824     bcm_field_action_t action;  /* field class action. */
   6825     bcm_class_t class_id;       /* field class value. */
   6826 } bcm_field_class_info_t;
   6827 
   6828 /* This API is deprecated and no longer supported. */
   6829 typedef struct bcm_field_status_s {
   6830     int group_total;    /* Total possible number of groups in unit. */
   6831     int group_free;     /* Unused groups in unit. */
   6832     uint32 flags;       /* Unit capabilities flags. */
   6833 } bcm_field_status_t;
   6834 
   6835 /* Field name. */
   6836 typedef struct bcm_field_presel_config_s {
   6837     uint8 name[BCM_FIELD_MAX_NAME_LEN]; 
   6838 } bcm_field_presel_config_t;
   6839 
   6840 /* 
   6841  * Value for bcmFieldControlSharedVlanFieldSet.
   6842  * 
   6843  * When using shared VLAN feature, the shared VLAN ID can be used in
   6844  * place of the packet's inner or outer vlan ID during packet
   6845  * classification.
   6846  */
   6847 #define BCM_FIELD_SHARED_VLAN_NONE  0          /* Do not use shared VLAN ID. */
   6848 #define BCM_FIELD_SHARED_VLAN_INNER 1          /* Use shared VLAN ID as inner
   6849                                                   VLAN ID. */
   6850 #define BCM_FIELD_SHARED_VLAN_OUTER 2          /* Use shared VLAN ID as outer
   6851                                                   VLAN ID. */
   6852 
   6853 /* Field control elements. */
   6854 typedef enum bcm_field_control_e {
   6855     bcmFieldControlStage = 0,           /* Select default Field Processor stage. */
   6856     bcmFieldControlColorIndependent = 1, /* Default for color in/dependent. */
   6857     bcmFieldControlUdfHigig0 = 2,       /* UDF_ID=7, has 1st word of Higig
   6858                                            Packet (deprecated). */
   6859     bcmFieldControlUdfHigig1 = 3,       /* UDF_ID=6, has 2nd word of Higig
   6860                                            Packet (deprecated). */
   6861     bcmFieldControlUdfHigig2 = 4,       /* UDF_ID=5, has 3rd word of Higig
   6862                                            Packet (deprecated). */
   6863     bcmFieldControlSharedVlanFieldSet = 5, /* Shared VLAN ID as inner/outer VLAN.
   6864                                            See BCM_FIELD_SHARED_VLAN_xxx. */
   6865     bcmFieldControlRedirectIngressVlanCheck = 6, /* Enable ingress vlan membership check
   6866                                            for FP redirected traffic. */
   6867     bcmFieldControlRedirectNonUcastTrunkResolve = 7, /* Enable uniform distribution of
   6868                                            non-unicast FP redirected traffic. */
   6869     bcmFieldControlRedirectExcludeSrcPort = 8, /* Exclude source port/trunk from FP
   6870                                            redirection  destination. */
   6871     bcmFieldControlRedirectPortFloodBlock = 9, /* Enable port flood blocking policy for
   6872                                            FP redirected traffic. */
   6873     bcmFieldControlRedirectVlanFloodBlock = 10, /* Enable vlan flood blocking policy for
   6874                                            FP redirected traffic. */
   6875     bcmFieldControlArpAsIp = 11,        /* Treat ARP packets as Ip. */
   6876     bcmFieldControlRarpAsIp = 12,       /* Treat RARP packets as Ip. */
   6877     bcmFieldControlIntraDoubleEnable = 13, /* Enable/Disable INTRA slice groups. */
   6878     bcmFieldControlExternalUdfEnable = 14, /* Enable/Disable External UDF support. */
   6879     bcmFieldControlRedirectNonUcastEtherTrunkResolve = 15, /* Enable uniform distribution of
   6880                                            non-unicast FP redirected traffic
   6881                                            over Ethernet Ports. */
   6882     bcmFieldControlRedirectNonUcastFabricTrunkResolve = 16, /* Enable uniform distribution of
   6883                                            non-unicast FP redirected traffic
   6884                                            over HiGig Ports. */
   6885     bcmFieldControlStatSyncEnable = 17, /* Field stat get api will sync up with
   6886                                            hardware before returning the stat
   6887                                            value. */
   6888     bcmFieldControlCascadedKeyWidth = 18, /* Default width of key cascaded between
   6889                                            groups */
   6890     bcmFieldControlPolicerGroupSharingEnable = 19, /* Enable/Disable sharing of policer by
   6891                                            field groups. */
   6892     bcmFieldControlRedirectNextHopExcludeSrcPort = 20, /* Enable removal of system ingress port
   6893                                            from port-bitmap for packets that
   6894                                            have been Redirected to a Next-hop
   6895                                            index by the IFP. */
   6896     bcmFieldControlIngressLogicalPolicerPoolsMode = 21, /* Configure Logical Policer pool mode.
   6897                                            It can be set only if the policers
   6898                                            are not existing. */
   6899     bcmFieldControlEcmpHashOffset = 22, /* Configure offset for every ECMP hash
   6900                                            key. */
   6901     bcmFieldControlEcmpHashUseCrc = 23, /* If set, then use CRC32 hash, else use
   6902                                            XOR function. */
   6903     bcmFieldControlEcmpHashUseUpper5Bits = 24, /* If set, uses upper-most 5 bits of
   6904                                            hash result, else uses least
   6905                                            significant 5-bits of hash result. */
   6906     bcmFieldControlEcmpHashEnable = 25, /* If set, then enable the use of the
   6907                                            ECMP_HASH_SEL field from the Field
   6908                                            Processor. */
   6909     bcmFieldControlOverrideStageLookupPhb = 26, /* If set, internal priority assigned by
   6910                                            L2/L3/DSCP lookups overrides internal
   6911                                            priority assigned by VFP */
   6912     bcmFieldControlRedirectExcludeEtherSrcPort = 27, /* Exclude the ingress front panel port
   6913                                            from FP redirection destination. */
   6914     bcmFieldControlRedirectExcludeHiGigSrcPort = 28, /* Exclude the ingress higig port from
   6915                                            FP redirection destination. */
   6916     bcmFieldControlReplacementTtl = 29, /* To program the TTL value to be used
   6917                                            by bcmFieldActionReplaceTtl */
   6918     bcmFieldControlLargeDirectLuKeyLength = 30, /* Field processor large direct lookup
   6919                                            key length. valid values are 14,15,16
   6920                                            or 17. */
   6921     bcmFieldControlKeyGenVar = 31,      /* Value for KeyGenVar */
   6922     bcmFieldControlEgressAutoExpandWithPolicer = 32, /* Enable or disable auto expansion with
   6923                                            policers in case of non-shared meter
   6924                                            pool of Egress stage. */
   6925     bcmFieldControlDlbMonitorIngressRandomSeed = 33, /* Set RNG seed for DLB flow monitoring
   6926                                            for IFP. This RNG seed overwrites the
   6927                                            RNG seed set by the switch control
   6928                                            bcmSwitchDlbMonitorIngressRandomSeed.
   6929                                            This seed is used by the device for
   6930                                            the flow which matches IFP entries
   6931                                            with action
   6932                                            bcmFieldActionDlbEcmpMonitorEnable. */
   6933     bcmFieldControlGbpSrcMacMcastBitSet = 34, /* This Field control converts packet?s
   6934                                            Source mac to Multicast when IFP
   6935                                            action
   6936                                            bcmFieldActionGbpSrcMacMcastBitSet is
   6937                                            applied on the matched packet. */
   6938     bcmFieldControlCount = 35           /* Always last. Not a usable value. */
   6939 } bcm_field_control_t;
   6940 
   6941 #define BCM_FIELD_CONTROL_STRINGS \
   6942 { \
   6943     "Stage", \
   6944     "ColorIndependent", \
   6945     "UdfHigig0", \
   6946     "UdfHigig1", \
   6947     "UdfHigig2", \
   6948     "SharedVlanFieldSet", \
   6949     "RedirectIngressVlanCheck", \
   6950     "RedirectNonUcastTrunkResolve", \
   6951     "RedirectExcludeSrcPort", \
   6952     "RedirectPortFloodBlock", \
   6953     "RedirectVlanFloodBlock", \
   6954     "ArpAsIp", \
   6955     "RarpAsIp", \
   6956     "IntraDoubleEnable", \
   6957     "ExternalUdfEnable", \
   6958     "RedirectNonUcastEtherTrunkResolve", \
   6959     "RedirectNonUcastFabricTrunkResolve", \
   6960     "StatSyncEnable", \
   6961     "CascadedKeyWidth", \
   6962     "PolicerGroupSharingEnable", \
   6963     "RedirectNextHopExcludeSrcPort", \
   6964     "IngressLogicalPolicerPoolsMode", \
   6965     "EcmpHashOffset", \
   6966     "EcmpHashUseCrc", \
   6967     "EcmpHashUseUpper5Bits", \
   6968     "EcmpHashEnable", \
   6969     "OverrideStageLookupPhb", \
   6970     "RedirectExcludeEtherSrcPort", \
   6971     "RedirectExcludeHiGigSrcPort", \
   6972     "ReplacementTtl", \
   6973     "LargeDirectLuKeyLength", \
   6974     "KeyGenVar", \
   6975     "EgressAutoExpandWithPolicer", \
   6976     "DlbMonitorIngressRandomSeed", \
   6977     "GbpSrcMacMcastBitSet"  \
   6978 }
   6979 
   6980 /* Field Group Status structure. */
   6981 typedef struct bcm_field_group_status_s {
   6982     int prio_min;       /* Minimum priority within group. */
   6983     int prio_max;       /* Maximum priority within group. */
   6984     int entries_total;  /* Total possible entries in group. */
   6985     int entries_free;   /* Unused entries in slice. */
   6986     int counters_total; /* Total possible counters in slice. */
   6987     int counters_free;  /* Unused counters in slice. */
   6988     int meters_total;   /* Total meters in slice. */
   6989     int meters_free;    /* Unused meters in slice. */
   6990     int entry_count;    /* Number of entries in the group. */
   6991     int counter_count;  /* Number of counters attached to group entries. */
   6992     int meter_count;    /* Number of meters attached to group entries. */
   6993 } bcm_field_group_status_t;
   6994 
   6995 /* Group Modes (single, double or triple wide). */
   6996 typedef enum bcm_field_group_mode_e {
   6997     bcmFieldGroupModeSingle = 0,        /* Single-wide group. */
   6998     bcmFieldGroupModeDouble = 1,        /* Double-wide group. */
   6999     bcmFieldGroupModeTriple = 2,        /* Triple-wide group. */
   7000     bcmFieldGroupModeQuad = 3,          /* Quad-wide group. */
   7001     bcmFieldGroupModeAuto = 4,          /* Auto-expand group based on Qset
   7002                                            (default). */
   7003     bcmFieldGroupModeDirect = 5,        /* Direct group (no TCAM lookup). */
   7004     bcmFieldGroupModeDirectExtraction = 6, /* Direct extraction (instead of TCAM)
   7005                                            group. */
   7006     bcmFieldGroupModeHashing = 7,       /* Hash function group - no entries are
   7007                                            expected. */
   7008     bcmFieldGroupModeExactMatch = 8,    /* Exact match group - partial masking
   7009                                            is not supported. */
   7010     bcmFieldGroupModeIntraSliceDouble = 9, /* Intraslice double wide group. */
   7011     bcmFieldGroupModeCount = 10         /* Always last. Not a usable value. */
   7012 } bcm_field_group_mode_t;
   7013 
   7014 #define BCM_FIELD_GROUP_MODE_STRINGS \
   7015 { \
   7016     "Single", \
   7017     "Double", \
   7018     "Triple", \
   7019     "Quad", \
   7020     "Auto", \
   7021     "Direct", \
   7022     "DirectExtraction", \
   7023     "Hashing", \
   7024     "ExactMatch", \
   7025     "IntraSliceDouble"  \
   7026 }
   7027 
   7028 /* 
   7029  * Ingress Policer Pool Modes (8x1024default, 16x512Contiguous,
   7030  * 16x512Split).
   7031  */
   7032 typedef enum bcm_field_ingress_policer_pools_e {
   7033     bcmFieldIngressLogicalPolicerPools8x1024, /* 8 Meter pools with 1024 entries in
   7034                                            each pool (Default Configuration). */
   7035     bcmFieldIngressLogicalPolicerPools16x512Contiguous, /* 16 Meter pools with 512 entries in
   7036                                            each pool in Contiguous mode. */
   7037     bcmFieldIngressLogicalPolicerPools16x512Split, /* 16 Meter pools with 512 entries in
   7038                                            each pool in Split mode. */
   7039     bcmFieldIngressPolicerPoolsCount    /* Always last. Not a usable value. */
   7040 } bcm_field_ingress_policer_pools_t;
   7041 
   7042 #define BCM_FIELD_INGRESS_POLICER_POOL_MODE_STRINGS \
   7043 { \
   7044     "bcmFieldIngressLogicalPolicerPools8x1024", \
   7045     "bcmFieldIngressLogicalPolicerPools16x512Contiguous", \
   7046     "bcmFieldIngressLogicalPolicerPools16x512Split"  \
   7047 }
   7048 
   7049 #define bcmFieldGroupModeDefault    bcmFieldGroupModeAuto 
   7050 
   7051 #define BCM_FIELD_GROUP_MODE_WIDTH_MAX  24         
   7052 
   7053 /* Parameter for bcmFieldActionEgressClassSelect */
   7054 #define BCM_FIELD_EGRESS_CLASS_SELECT_PORT  0          
   7055 #define BCM_FIELD_EGRESS_CLASS_SELECT_SVP   1          
   7056 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_IIF 2          
   7057 #define BCM_FIELD_EGRESS_CLASS_SELECT_FIELD_SRC 3          
   7058 #define BCM_FIELD_EGRESS_CLASS_SELECT_FIELD_DST 4          
   7059 #define BCM_FIELD_EGRESS_CLASS_SELECT_L2_SRC 5          
   7060 #define BCM_FIELD_EGRESS_CLASS_SELECT_L2_DST 6          
   7061 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_SRC 7          
   7062 #define BCM_FIELD_EGRESS_CLASS_SELECT_L3_DST 8          
   7063 #define BCM_FIELD_EGRESS_CLASS_SELECT_VLAN  9          
   7064 #define BCM_FIELD_EGRESS_CLASS_SELECT_VRF   10         
   7065 #define BCM_FIELD_EGRESS_CLASS_SELECT_NEW   11         
   7066 
   7067 /* Parameter for bcmFieldActionHiGigClassSelect */
   7068 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGRESS 0          
   7069 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_DVP 1          
   7070 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_L3_INTERFACE 2          
   7071 #define BCM_FIELD_HIGIG_CLASS_SELECT_EGR_NEXT_HOP 3          
   7072 #define BCM_FIELD_HIGIG_CLASS_SELECT_PORT   4          
   7073 
   7074 /* parameter for bcmFieldActionOamDmTimeFormat */
   7075 #define BCM_FIELD_OAM_DM_TIME_FORMAT_IEEE1588 0          
   7076 #define BCM_FIELD_OAM_DM_TIME_FORMAT_NTP    1          
   7077 
   7078 /* Parameter for bcmFieldActionOamTagStatusCheck */
   7079 #define BCM_FIELD_OAM_TAG_STATUS_OUTER_MASK (1 << 0)   
   7080 #define BCM_FIELD_OAM_TAG_STATUS_INNER_MASK (1 << 1)   
   7081 #define BCM_FIELD_OAM_TAG_STATUS_INNER_L2_OUTER_MASK (1 << 2)   
   7082 #define BCM_FIELD_OAM_TAG_STATUS_INNER_L2_INNER_MASK (1 << 3)   
   7083 
   7084 /* Parameter for bcmFieldActionOamTunnelControl */
   7085 #define BCM_FIELD_OAM_TUNNEL_CONTROL_ANY    0          
   7086 #define BCM_FIELD_OAM_TUNNEL_CONTROL_NOT_TUNNELDED 1          
   7087 
   7088 /* Parameter for qualifier bcmFieldQualifyOamEgressMulticastMacHit */
   7089 #define BCM_FIELD_OAM_MUTLICAST_MAC_NO_HIT  0x1        /* Destination MAC
   7090                                                           address not in OAM
   7091                                                           Multicast MAC CLASS1
   7092                                                           or CLASS 2 Address
   7093                                                           Range */
   7094 #define BCM_FIELD_OAM_MUTLICAST_MAC_CLASS1_HIT 0x2        /* Destination MAC
   7095                                                           address in OAM
   7096                                                           Multicast MAC CLASS1
   7097                                                           Address Range
   7098                                                           01-80-C2-00-00-30 to
   7099                                                           01-80-C2-00-00-37 */
   7100 #define BCM_FIELD_OAM_MUTLICAST_MAC_CLASS2_HIT 0x3        /* Destination MAC
   7101                                                           address in OAM
   7102                                                           Multicast MAC CLASS2
   7103                                                           Address Range
   7104                                                           01-80-C2-00-00-38 to
   7105                                                           01-80-C2-00-00-3f */
   7106 
   7107 /* Group config create API optional flags. */
   7108 #define BCM_FIELD_GROUP_CREATE_WITH_ID      (1 << 0)   
   7109 #define BCM_FIELD_GROUP_CREATE_WITH_PORT    (1 << 1)   
   7110 #define BCM_FIELD_GROUP_CREATE_WITH_MODE    (1 << 2)   
   7111 #define BCM_FIELD_GROUP_CREATE_SMALL        (1 << 3)   
   7112 #define BCM_FIELD_GROUP_CREATE_LARGE        (1 << 4)   
   7113 #define BCM_FIELD_GROUP_CREATE_WITH_ASET    (1 << 5)   
   7114 #define BCM_FIELD_GROUP_CREATE_WITH_PRESELSET (1 << 6)   
   7115 #define BCM_FIELD_GROUP_CREATE_INSERTION_ORDER_LOOSE (1 << 7)   /* If set, do not apply
   7116                                                           the rule where TCAM
   7117                                                           entries with identical
   7118                                                           priorities are ordered
   7119                                                           in the TCAM according
   7120                                                           to their insertion
   7121                                                           order */
   7122 #define BCM_FIELD_GROUP_CREATE_IS_EQUAL     (1 << 8)   /* If set, the is-equal
   7123                                                           result of this Field
   7124                                                           group key and the
   7125                                                           Field group
   7126                                                           'group_ref' is set in
   7127                                                           the
   7128                                                           bcmFieldQualifyIsEqualValue
   7129                                                           qualifier */
   7130 #define BCM_FIELD_GROUP_CREATE_SPARSE_ENTRY_PRIORITIES (1 << 9)   /* If set, the TCAM
   7131                                                           shuffle algorithm
   7132                                                           assumes only sparse
   7133                                                           priorities assigned to
   7134                                                           the Field group
   7135                                                           entries */
   7136 #define BCM_FIELD_GROUP_CREATE_SINGLE       (1 << 10)  /* If set, use single
   7137                                                           resource for field
   7138                                                           group */
   7139 #define BCM_FIELD_GROUP_CREATE_IS_CASCADED  (1 << 11)  /* If set, the cascaded
   7140                                                           action value of this
   7141                                                           Field group is set in
   7142                                                           the
   7143                                                           bcmFieldQualifyCascadedKeyValue
   7144                                                           qualifier of the Field
   7145                                                           group 'group_ref'. */
   7146 #define BCM_FIELD_GROUP_CREATE_HANDLE_ENTRIES_BY_KEY (1 << 12)  /* If set,  entries in
   7147                                                           this group is handled
   7148                                                           by key and not by ID.
   7149                                                           entries with identical
   7150                                                           key cannot be added.
   7151                                                           getting and deleting
   7152                                                           entries should be
   7153                                                           according to the key'. */
   7154 #define BCM_FIELD_GROUP_CREATE_WITH_CYCLE   (1 << 13)  /* If set, use created
   7155                                                           cycle value for field
   7156                                                           group */
   7157 #define BCM_FIELD_GROUP_CREATE_WITH_PROGRAMS (1 << 14)  /* Create field group
   7158                                                           attached with specific
   7159                                                           program(s). */
   7160 #define BCM_FIELD_GROUP_CREATE_WITH_CE_ID   (1 << 15)  /* Create field group
   7161                                                           with user provided ce
   7162                                                           id(s). */
   7163 #define BCM_FIELD_GROUP_CREATE_WITH_MW_SUPPORT (1 << 16)  /* Create field group
   7164                                                           with multiwide
   7165                                                           support. The allocated
   7166                                                           slice for this group
   7167                                                           can spam multiwide
   7168                                                           modes. */
   7169 
   7170 #define BCM_FIELD_PRESEL_SEL_MAX    1024       /* Maximum Preselection entries
   7171                                                   supported. */
   7172 
   7173 /* Bitmap of all possible preselection specification IDs. */
   7174 typedef struct bcm_field_presel_set_s {
   7175     SHR_BITDCL w[_SHR_BITDCLSIZE(BCM_FIELD_PRESEL_SEL_MAX)]; 
   7176 } bcm_field_presel_set_t;
   7177 
   7178 #define BCM_FIELD_PRESEL_ENTRY_SET(_eid_, _presel_id_)  (_eid_ = _presel_id_ | BCM_FIELD_QUALIFY_PRESEL) /* Build Preselector Entry ID for
   7179                                                   the given preselector ID. */
   7180 
   7181 /* Identifier for bcm_field_hint_t structure */
   7182 typedef uint32 bcm_field_hintid_t;
   7183 
   7184 /*  Default Action resolution ID for groups. */
   7185 #define BCM_FIELD_GROUP_ACTION_RES_ID_DEFAULT -1         /* Group default action
   7186                                                           resolution id value */
   7187 
   7188 /* Group Cycle value. */
   7189 typedef enum bcm_field_group_cycle_e {
   7190     bcmFieldGroupCycle0 = 0,    /* Create Field Group in Cycle 0. */
   7191     bcmFieldGroupCycle1 = 1,    /* Create Field Group in Cycle 1. */
   7192     bcmFieldGroupCycleCount = 2 /* Always last. Not a usable value. */
   7193 } bcm_field_group_cycle_t;
   7194 
   7195 #define BCM_FIELD_GROUP_CYCLE_STRINGS \
   7196 { \
   7197     "Cycle0", \
   7198     "Cycle1"  \
   7199 }
   7200 
   7201 /* PMF Program ID. */
   7202 typedef uint32 bcm_field_context_t;
   7203 
   7204 /* Maximum number of presels per FG. */
   7205 #define BCM_FIELD_NOF_PRESEL_PER_FG 32         /* Maximum number of presels per
   7206                                                   fg */
   7207 
   7208 /* Maximum number of qualifiers per FG . */
   7209 #define BCM_FIELD_NOF_QUALS_PER_FG  32         /* Maximum number of quals per fg */
   7210 
   7211 /* Maximum number of ce id per qualifier . */
   7212 #define BCM_FIELD_NOF_CE_ID_PER_QUAL    8          /* Maximum number of ce ids
   7213                                                       per qualifier */
   7214 
   7215 /* Description of a qualifier ce information. */
   7216 typedef struct bcm_field_qual_ce_info_s {
   7217     bcm_field_qualify_t qual;           /* Qualifier for which the ce info is
   7218                                            provided */
   7219     int nof_ce_ids;                     /* Number of ce ids for the given
   7220                                            qualifeir */
   7221     int ce_id[BCM_FIELD_NOF_CE_ID_PER_QUAL]; /* ce ids for the given qualifier */
   7222     int key_index[BCM_FIELD_NOF_CE_ID_PER_QUAL]; /* key_index for the given ce ids. In
   7223                                            case the key is double key and the
   7224                                            ce_id is located in the second key -
   7225                                            this index should be set to 1 */
   7226 } bcm_field_qual_ce_info_t;
   7227 
   7228 /* Opaque handle to a field presel. */
   7229 typedef int bcm_field_presel_t;
   7230 
   7231 #ifndef BCM_HIDE_DISPATCHABLE
   7232 
   7233 /* Create a preselection specification. */
   7234 extern int bcm_field_presel_create(
   7235     int unit, 
   7236     bcm_field_presel_t *presel_id);
   7237 
   7238 /* Create a preselection specification using a specific ID. */
   7239 extern int bcm_field_presel_create_id(
   7240     int unit, 
   7241     bcm_field_presel_t presel_id);
   7242 
   7243 #endif /* BCM_HIDE_DISPATCHABLE */
   7244 
   7245 /* Description of a group hw information. */
   7246 typedef struct bcm_field_group_presel_info_s {
   7247     bcm_field_presel_t presel_id;       /* Presel Id for the given group hw info */
   7248     int nof_qual_info;                  /* Number of qualifiers in the hw info */
   7249     bcm_field_qual_ce_info_t qual_info[BCM_FIELD_NOF_QUALS_PER_FG]; /* Hw info for the given qualifier */
   7250 } bcm_field_group_presel_info_t;
   7251 
   7252 /* Initialize Field Group Hw Info structure. */
   7253 extern void bcm_field_group_presel_info_init(
   7254     int nof_presel_info, 
   7255     bcm_field_group_presel_info_t *presel_info);
   7256 
   7257 /* 
   7258  * Group configuration structure. Used to create a field group with
   7259  * specific attributes.
   7260  */
   7261 typedef struct bcm_field_group_config_s {
   7262     uint32 flags;                       /* Group create flags
   7263                                            BCM_FIELD_GROUP_CREATE_XXX. */
   7264     bcm_field_qset_t qset;              /* Group qualifier set. */
   7265     int priority;                       /* Group priority. */
   7266     bcm_field_group_mode_t mode;        /* Group mode. */
   7267     bcm_pbmp_t ports;                   /* Group member ports. */
   7268     bcm_field_group_t group;            /* Group. */
   7269     bcm_field_aset_t aset;              /* Group action set */
   7270     bcm_field_presel_set_t preselset;   /* Group preselector set */
   7271     bcm_field_presel_set_t group_ref;   /* Reference Field group for operation
   7272                                            set by the Flag. */
   7273     int max_entry_priorities;           /* Number of entries priorities in the
   7274                                            group. 0 means unlimited. */
   7275     bcm_field_hintid_t hintid;          /* Hints for Group Creation. */
   7276     int action_res_id;                  /* Action resolution id for Group. */
   7277     uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Group. */
   7278     bcm_field_group_cycle_t cycle;      /* Create Field Group Cycle. */
   7279     uint32 pgm_bmp;                     /* Bitmap of program-ids which the
   7280                                            current field group will be pointing
   7281                                            to. */
   7282     uint32 share_id;                    /* Group share ID. Groups created with
   7283                                            same share ID may share TCAM banks. */
   7284 } bcm_field_group_config_t;
   7285 
   7286 /* Used to create a field group with specific attributes. */
   7287 typedef struct bcm_field_group_config_extension_s {
   7288     uint32 flags;                       /* Group create flags
   7289                                            BCM_FIELD_GROUP_CREATE_XXX. */
   7290     bcm_field_qset_t qset;              /* Group qualifier set. */
   7291     int priority;                       /* Group priority. */
   7292     bcm_field_group_mode_t mode;        /* Group mode. */
   7293     bcm_pbmp_t ports;                   /* Group member ports. */
   7294     bcm_field_group_t group;            /* Group. */
   7295     bcm_field_aset_t aset;              /* Group action set */
   7296     bcm_field_presel_set_t preselset;   /* Group preselector set */
   7297     bcm_field_presel_set_t group_ref;   /* Reference Field group for operation
   7298                                            set by the Flag. */
   7299     int max_entry_priorities;           /* Number of entries priorities in the
   7300                                            group. 0 means unlimited. */
   7301     bcm_field_hintid_t hintid;          /* Hints for Group Creation. */
   7302     int action_res_id;                  /* Action resolution id for Group. */
   7303     uint8 name[BCM_FIELD_MAX_NAME_LEN]; /* Name for Group. */
   7304     bcm_field_group_cycle_t cycle;      /* Create Field Group Cycle. */
   7305     uint32 pgm_bmp;                     /* Bitmap of program-ids which the
   7306                                            current field group will be pointing
   7307                                            to. */
   7308     uint32 share_id;                    /* Group share ID. Groups created with
   7309                                            same share ID may share TCAM banks. */
   7310     uint32 nof_presel_info;             /* Number of presel_info elements. */
   7311     bcm_field_group_presel_info_t *presel_info; /* Per preselector data. */
   7312 } bcm_field_group_config_extension_t;
   7313 
   7314 /* Description of a single extraction point. */
   7315 typedef struct bcm_field_extraction_field_s {
   7316     uint32 flags;                   /* Flags for this extraction point */
   7317     bcm_field_qualify_t qualifier;  /* BCM field qualifier ID (or
   7318                                        bcmFieldQualifyCount is using constant
   7319                                        value) */
   7320     int lsb;                        /* Least significant bit to be extracted
   7321                                        from qualifier */
   7322     int bits;                       /* Number of bits to use, valid for both
   7323                                        qualifier extraction and constant */
   7324     int value;                      /* Constant value (if qualifier is
   7325                                        bcmFieldQualifyCount) */
   7326 } bcm_field_extraction_field_t;
   7327 
   7328 /* 
   7329  * A single action, composed of possibly several extraction fields, for
   7330  * an entry in a direct extraction group.
   7331  */
   7332 typedef struct bcm_field_extraction_action_s {
   7333     bcm_field_action_t action;  /* BCM field action ID of the action to be built
   7334                                    by extraction */
   7335     int bias;                   /* Bias value added to the final extracted value
   7336                                    before using it as an argument to the action */
   7337 } bcm_field_extraction_action_t;
   7338 
   7339 /* core specific paramters for a field group entry */
   7340 typedef struct bcm_field_action_core_config_s {
   7341     uint32 flags;   /* flags for core specific action */
   7342     int param0;     /* action core-specific paramter No.0 */
   7343     int param1;     /* action core-specific paramter No.1 */
   7344     int param2;     /* action core-specific paramter No.2 */
   7345     int param3;     /* action core-specific paramter No.3 */
   7346 } bcm_field_action_core_config_t;
   7347 
   7348 /* core specific paramters for a field group entry */
   7349 typedef struct bcm_field_flowtrackercheck_s {
   7350     bcm_flowtracker_check_t flow_check_id; /* Flowtracker check ID */
   7351     uint32 value;                       /* Value for flowtracker check ID */
   7352 } bcm_field_flowtrackercheck_t;
   7353 
   7354 #define BCM_ILLEGAL_ACTION_PARAMETER    (-1)       /* Indicates meaningless
   7355                                                       paramX on
   7356                                                       bcm_field_action_core_config_t */
   7357 
   7358 /* Field Qualifier Arp Opcode (for bcm_field_qualify_ArpOpcode). */
   7359 typedef enum bcm_field_ArpOpcode_e {
   7360     bcmFieldArpOpcodeRequest = 0,   /* Request opcode. */
   7361     bcmFieldArpOpcodeReply = 1,     /* Reply opcode. */
   7362     bcmFieldArpOpcodeCount = 2      /* Always last; not a usable value. */
   7363 } bcm_field_ArpOpcode_t;
   7364 
   7365 #define BCM_FIELD_FARPOPCODE_STRINGS \
   7366 { \
   7367     "Request", \
   7368     "Reply"  \
   7369 }
   7370 
   7371 /* 
   7372  * Bitmap for the various options on 'flags' on
   7373  * bcm_field_action_width_set() or bcm_field_action_width_get()
   7374  */
   7375 typedef enum bcm_field_action_width_flags_e {
   7376     bcm_default_action_width = 0    /* When this bit is set then ignore 'width'
   7377                                        and set action runtime width to its
   7378                                        default value. */
   7379 } bcm_field_action_width_flags_t;
   7380 
   7381 #ifndef BCM_HIDE_DISPATCHABLE
   7382 
   7383 /* Initialize field software subsystem. */
   7384 extern int bcm_field_init(
   7385     int unit);
   7386 
   7387 /* De-initialize field software subsystem. */
   7388 extern int bcm_field_detach(
   7389     int unit);
   7390 
   7391 /* Get a field control value. */
   7392 extern int bcm_field_control_get(
   7393     int unit, 
   7394     bcm_field_control_t control, 
   7395     uint32 *state);
   7396 
   7397 /* Set a field control value. */
   7398 extern int bcm_field_control_set(
   7399     int unit, 
   7400     bcm_field_control_t control, 
   7401     uint32 state);
   7402 
   7403 /* This function retrieves the number of slices in a given stage. */
   7404 extern int bcm_field_stage_slice_count_get(
   7405     int unit, 
   7406     bcm_field_stage_t stage_id, 
   7407     int *slice_count);
   7408 
   7409 /* 
   7410  * This function retrives the entries information for the given slice
   7411  * number.
   7412  */
   7413 extern int bcm_field_stage_slice_info_get(
   7414     int unit, 
   7415     bcm_field_stage_t stage_id, 
   7416     bcm_pbmp_t pbmp, 
   7417     int slice_no, 
   7418     bcm_field_stage_slice_info_t *slice_info);
   7419 
   7420 /* List the qualifiers supported for a given stage. */
   7421 extern int bcm_field_stage_qset_get(
   7422     int unit, 
   7423     bcm_field_stage_t stage, 
   7424     uint8 presel, 
   7425     bcm_field_qset_t *qset);
   7426 
   7427 /* Get per-stage field information */
   7428 extern int bcm_field_stage_info_get(
   7429     int unit, 
   7430     bcm_field_stage_t stage, 
   7431     bcm_field_stage_info_t *info);
   7432 
   7433 #endif /* BCM_HIDE_DISPATCHABLE */
   7434 
   7435 /* Initialize UDF specification structure. */
   7436 extern void bcm_field_udf_spec_t_init(
   7437     bcm_field_udf_spec_t *udf_spec);
   7438 
   7439 #ifndef BCM_HIDE_DISPATCHABLE
   7440 
   7441 /* Create a field group. */
   7442 extern int bcm_field_group_create(
   7443     int unit, 
   7444     bcm_field_qset_t qset, 
   7445     int pri, 
   7446     bcm_field_group_t *group);
   7447 
   7448 /* Create a field group. */
   7449 extern int bcm_field_group_create_id(
   7450     int unit, 
   7451     bcm_field_qset_t qset, 
   7452     int pri, 
   7453     bcm_field_group_t group);
   7454 
   7455 /* Enable or Disable Auto expansion of entries for a group. */
   7456 extern int bcm_field_group_expansion_enable_set(
   7457     int unit, 
   7458     bcm_field_group_t group, 
   7459     int enable);
   7460 
   7461 /* Get Auto expansion configuration for a group. */
   7462 extern int bcm_field_group_expansion_enable_get(
   7463     int unit, 
   7464     bcm_field_group_t group, 
   7465     int *enable);
   7466 
   7467 /* Create a field group. */
   7468 extern int bcm_field_group_create_mode(
   7469     int unit, 
   7470     bcm_field_qset_t qset, 
   7471     int pri, 
   7472     bcm_field_group_mode_t mode, 
   7473     bcm_field_group_t *group);
   7474 
   7475 /* Create a field group. */
   7476 extern int bcm_field_group_create_mode_id(
   7477     int unit, 
   7478     bcm_field_qset_t qset, 
   7479     int pri, 
   7480     bcm_field_group_mode_t mode, 
   7481     bcm_field_group_t group);
   7482 
   7483 /* Create a field group. */
   7484 extern int bcm_field_group_port_create_mode(
   7485     int unit, 
   7486     bcm_port_t port, 
   7487     bcm_field_qset_t qset, 
   7488     int pri, 
   7489     bcm_field_group_mode_t mode, 
   7490     bcm_field_group_t *group);
   7491 
   7492 /* Create a field group. */
   7493 extern int bcm_field_group_port_create_mode_id(
   7494     int unit, 
   7495     bcm_port_t port, 
   7496     bcm_field_qset_t qset, 
   7497     int pri, 
   7498     bcm_field_group_mode_t mode, 
   7499     bcm_field_group_t group);
   7500 
   7501 /* Create a field group. */
   7502 extern int bcm_field_group_ports_create_mode(
   7503     int unit, 
   7504     bcm_pbmp_t pbmp, 
   7505     bcm_field_qset_t qset, 
   7506     int pri, 
   7507     bcm_field_group_mode_t mode, 
   7508     bcm_field_group_t *group);
   7509 
   7510 /* Create a field group. */
   7511 extern int bcm_field_group_ports_create_mode_id(
   7512     int unit, 
   7513     bcm_pbmp_t pbmp, 
   7514     bcm_field_qset_t qset, 
   7515     int pri, 
   7516     bcm_field_group_mode_t mode, 
   7517     bcm_field_group_t group);
   7518 
   7519 /* Create a wlan field group. */
   7520 extern int bcm_field_group_wlan_create_mode(
   7521     int unit, 
   7522     bcm_field_qset_t qset, 
   7523     int pri, 
   7524     bcm_field_group_mode_t mode, 
   7525     bcm_field_group_t *group);
   7526 
   7527 /* Create a wlan field group. */
   7528 extern int bcm_field_group_wlan_create_mode_id(
   7529     int unit, 
   7530     bcm_field_qset_t qset, 
   7531     int pri, 
   7532     bcm_field_group_mode_t mode, 
   7533     bcm_field_group_t group);
   7534 
   7535 /* Get the mode of a group. */
   7536 extern int bcm_field_group_mode_get(
   7537     int unit, 
   7538     bcm_field_group_t group, 
   7539     bcm_field_group_mode_t *mode);
   7540 
   7541 /* Create a field group with specific attributes. */
   7542 extern int bcm_field_group_config_create(
   7543     int unit, 
   7544     bcm_field_group_config_t *group_config);
   7545 
   7546 /* Create a field group with extension specific attributes. */
   7547 extern int bcm_field_group_config_extension_create(
   7548     int unit, 
   7549     bcm_field_group_config_extension_t *group_config);
   7550 
   7551 #endif /* BCM_HIDE_DISPATCHABLE */
   7552 
   7553 /* Initialize Field Group Config structure. */
   7554 extern void bcm_field_group_config_t_init(
   7555     bcm_field_group_config_t *group_config);
   7556 
   7557 /* Initialize Field Group Config Extension structure. */
   7558 extern void bcm_field_group_config_extension_t_init(
   7559     bcm_field_group_config_extension_t *group_config);
   7560 
   7561 /* FP group traverse callback function */
   7562 typedef int (*bcm_field_group_traverse_cb)(
   7563     int unit, 
   7564     bcm_field_group_t group, 
   7565     void *user_data);
   7566 
   7567 #ifndef BCM_HIDE_DISPATCHABLE
   7568 
   7569 /* 
   7570  * Traverse all the fp groups in the system, calling a specified callback
   7571  * for each one
   7572  */
   7573 extern int bcm_field_group_traverse(
   7574     int unit, 
   7575     bcm_field_group_traverse_cb callback, 
   7576     void *user_data);
   7577 
   7578 /* 
   7579  * Destroys field entries in the given group (both software object and
   7580  * the actual hardware entry) before destroying the field group. Field
   7581  * group sw object is also destroyed as well.
   7582  */
   7583 extern int bcm_field_group_flush(
   7584     int unit, 
   7585     bcm_field_group_t group);
   7586 
   7587 /* Change or retrieve the qualifiers for a field group. */
   7588 extern int bcm_field_group_set(
   7589     int unit, 
   7590     bcm_field_group_t group, 
   7591     bcm_field_qset_t qset);
   7592 
   7593 /* Change or retrieve the qualifiers for a field group. */
   7594 extern int bcm_field_group_get(
   7595     int unit, 
   7596     bcm_field_group_t group, 
   7597     bcm_field_qset_t *qset);
   7598 
   7599 /* Change or retrieve the actions for a field group. */
   7600 extern int bcm_field_group_action_set(
   7601     int unit, 
   7602     bcm_field_group_t group, 
   7603     bcm_field_aset_t aset);
   7604 
   7605 /* Change or retrieve the actions for a field group. */
   7606 extern int bcm_field_group_action_get(
   7607     int unit, 
   7608     bcm_field_group_t group, 
   7609     bcm_field_aset_t *aset);
   7610 
   7611 /* Deallocates a field group. */
   7612 extern int bcm_field_group_destroy(
   7613     int unit, 
   7614     bcm_field_group_t group);
   7615 
   7616 /* Compress field group entries. */
   7617 extern int bcm_field_group_compress(
   7618     int unit, 
   7619     bcm_field_group_t group);
   7620 
   7621 /* Set or Clear entry as default entry to group. */
   7622 extern int bcm_field_group_default_entry_set(
   7623     int unit, 
   7624     bcm_field_group_t group, 
   7625     bcm_field_entry_t entry, 
   7626     int enable);
   7627 
   7628 /* Get default entry id associated to group. */
   7629 extern int bcm_field_group_default_entry_get(
   7630     int unit, 
   7631     bcm_field_group_t group, 
   7632     bcm_field_entry_t *entry);
   7633 
   7634 /* Set field group priority. */
   7635 extern int bcm_field_group_priority_set(
   7636     int unit, 
   7637     bcm_field_group_t group, 
   7638     int priority);
   7639 
   7640 /* Get field group priority. */
   7641 extern int bcm_field_group_priority_get(
   7642     int unit, 
   7643     bcm_field_group_t group, 
   7644     int *priority);
   7645 
   7646 /* Retrieve status of a specified field group. */
   7647 extern int bcm_field_group_status_get(
   7648     int unit, 
   7649     bcm_field_group_t group, 
   7650     bcm_field_group_status_t *status);
   7651 
   7652 /* Set the group enable state. */
   7653 extern int bcm_field_group_enable_set(
   7654     int unit, 
   7655     bcm_field_group_t group, 
   7656     int enable);
   7657 
   7658 /* Get the group enable state. */
   7659 extern int bcm_field_group_enable_get(
   7660     int unit, 
   7661     bcm_field_group_t group, 
   7662     int *enable);
   7663 
   7664 /* Allocate a range checker with specified configuration. */
   7665 extern int bcm_field_range_create(
   7666     int unit, 
   7667     bcm_field_range_t *range, 
   7668     uint32 flags, 
   7669     bcm_l4_port_t min, 
   7670     bcm_l4_port_t max);
   7671 
   7672 /* 
   7673  * Install all entries of a field group into the hardware tables (will
   7674  * silently reinstall entries already in the hardware tables)
   7675  */
   7676 extern int bcm_field_group_install(
   7677     int unit, 
   7678     bcm_field_group_t group);
   7679 
   7680 /* 
   7681  * Remove all entries of a field group from the hardware tables (will
   7682  * silently ignore entries not in the hardware tables)
   7683  */
   7684 extern int bcm_field_group_remove(
   7685     int unit, 
   7686     bcm_field_group_t group);
   7687 
   7688 /* Allocate a range checker with specified configuration. */
   7689 extern int bcm_field_range_create_id(
   7690     int unit, 
   7691     bcm_field_range_t range, 
   7692     uint32 flags, 
   7693     bcm_l4_port_t min, 
   7694     bcm_l4_port_t max);
   7695 
   7696 /* 
   7697  * Allocate a range checker with specified configuration associated with
   7698  * an interface group.
   7699  */
   7700 extern int bcm_field_range_group_create(
   7701     int unit, 
   7702     bcm_field_range_t *range, 
   7703     uint32 flags, 
   7704     bcm_l4_port_t min, 
   7705     bcm_l4_port_t max, 
   7706     bcm_if_group_t group);
   7707 
   7708 /* 
   7709  * Allocate a range checker with specified configuration associated with
   7710  * an interface group.
   7711  */
   7712 extern int bcm_field_range_group_create_id(
   7713     int unit, 
   7714     bcm_field_range_t range, 
   7715     uint32 flags, 
   7716     bcm_l4_port_t min, 
   7717     bcm_l4_port_t max, 
   7718     bcm_if_group_t group);
   7719 
   7720 /* Retrieve parameters associated with an existing range checker. */
   7721 extern int bcm_field_range_get(
   7722     int unit, 
   7723     bcm_field_range_t range, 
   7724     uint32 *flags, 
   7725     bcm_l4_port_t *min, 
   7726     bcm_l4_port_t *max);
   7727 
   7728 /* Destroy a virtual range checker. */
   7729 extern int bcm_field_range_destroy(
   7730     int unit, 
   7731     bcm_field_range_t range);
   7732 
   7733 #endif /* BCM_HIDE_DISPATCHABLE */
   7734 
   7735 /* Initialize Field Data Qualifier structure. */
   7736 extern void bcm_field_data_qualifier_t_init(
   7737     bcm_field_data_qualifier_t *data_qual);
   7738 
   7739 /* Initialize ethertype based field data qualifier. */
   7740 extern void bcm_field_data_ethertype_t_init(
   7741     bcm_field_data_ethertype_t *etype);
   7742 
   7743 /* Initialize ip protocol based field data qualifier. */
   7744 extern void bcm_field_data_ip_protocol_t_init(
   7745     bcm_field_data_ip_protocol_t *ip_protocol);
   7746 
   7747 /* Initialize packet format based field data qualifier. */
   7748 extern void bcm_field_data_packet_format_t_init(
   7749     bcm_field_data_packet_format_t *packet_format);
   7750 
   7751 /* Initialize field class info structure. */
   7752 extern void bcm_field_class_info_t_init(
   7753     bcm_field_class_info_t *class_info);
   7754 
   7755 #ifndef BCM_HIDE_DISPATCHABLE
   7756 
   7757 /* Create an data/offset based qualifier. */
   7758 extern int bcm_field_data_qualifier_create(
   7759     int unit, 
   7760     bcm_field_data_qualifier_t *data_qualifier);
   7761 
   7762 /* Return list of ids of defined data qualifiers, per standard API idiom. */
   7763 extern int bcm_field_data_qualifier_multi_get(
   7764     int unit, 
   7765     int qual_size, 
   7766     int *qual_array, 
   7767     int *qual_count);
   7768 
   7769 /* Return configuration of given data qualifier. */
   7770 extern int bcm_field_data_qualifier_get(
   7771     int unit, 
   7772     int qual_id, 
   7773     bcm_field_data_qualifier_t *qual);
   7774 
   7775 /* Destroy an data/offset based qualifier. */
   7776 extern int bcm_field_data_qualifier_destroy(
   7777     int unit, 
   7778     int qual_id);
   7779 
   7780 /* Delete all data/offset based qualifiers. */
   7781 extern int bcm_field_data_qualifier_destroy_all(
   7782     int unit);
   7783 
   7784 /* Add ethertype based offset to data qualifier object. */
   7785 extern int bcm_field_data_qualifier_ethertype_add(
   7786     int unit, 
   7787     int qual_id, 
   7788     bcm_field_data_ethertype_t *etype);
   7789 
   7790 /* Remove ethertype based offset from data qualifier object. */
   7791 extern int bcm_field_data_qualifier_ethertype_delete(
   7792     int unit, 
   7793     int qual_id, 
   7794     bcm_field_data_ethertype_t *etype);
   7795 
   7796 /* Add ip protocol based offset to data qualifier object. */
   7797 extern int bcm_field_data_qualifier_ip_protocol_add(
   7798     int unit, 
   7799     int qual_id, 
   7800     bcm_field_data_ip_protocol_t *ip_protocol);
   7801 
   7802 /* Remove ip protocol based offset from data qualifier object. */
   7803 extern int bcm_field_data_qualifier_ip_protocol_delete(
   7804     int unit, 
   7805     int qual_id, 
   7806     bcm_field_data_ip_protocol_t *ip_protocol);
   7807 
   7808 /* Add packet format based offset/s to data qualifier object. */
   7809 extern int bcm_field_data_qualifier_packet_format_add(
   7810     int unit, 
   7811     int qual_id, 
   7812     bcm_field_data_packet_format_t *packet_format);
   7813 
   7814 /* Remove packet format based offset/s from data qualifier object. */
   7815 extern int bcm_field_data_qualifier_packet_format_delete(
   7816     int unit, 
   7817     int qual_id, 
   7818     bcm_field_data_packet_format_t *packet_format);
   7819 
   7820 /* Add field data qualifier to group qset. */
   7821 extern int bcm_field_qset_data_qualifier_add(
   7822     int unit, 
   7823     bcm_field_qset_t *qset, 
   7824     int qual_id);
   7825 
   7826 /* Delete a field data qualifier from group qset. */
   7827 extern int bcm_field_qset_data_qualifier_delete(
   7828     int unit, 
   7829     bcm_field_qset_t *qset, 
   7830     int qual_id);
   7831 
   7832 /* Get field data qualifiers included in group qset. */
   7833 extern int bcm_field_qset_data_qualifier_get(
   7834     int unit, 
   7835     bcm_field_qset_t qset, 
   7836     int qual_max, 
   7837     int *qual_arr, 
   7838     int *qual_count);
   7839 
   7840 /* Create a blank field entry. */
   7841 extern int bcm_field_entry_create(
   7842     int unit, 
   7843     bcm_field_group_t group, 
   7844     bcm_field_entry_t *entry);
   7845 
   7846 #endif /* BCM_HIDE_DISPATCHABLE */
   7847 
   7848 #define BCM_FIELD_DATA_QUALIFIER_SHIFT  14         
   7849 
   7850 #define BCM_FIELD_DATA_QUALIFIER_SET(data_qual_id, qual_id)  (qual_id = (1 << BCM_FIELD_DATA_QUALIFIER_SHIFT) | data_qual_id) 
   7851 
   7852 #ifndef BCM_HIDE_DISPATCHABLE
   7853 
   7854 /* Create a blank field entry. */
   7855 extern int bcm_field_entry_create_id(
   7856     int unit, 
   7857     bcm_field_group_t group, 
   7858     bcm_field_entry_t entry);
   7859 
   7860 /* Create a blank field entry. */
   7861 extern int bcm_field_entry_multi_get(
   7862     int unit, 
   7863     bcm_field_group_t group, 
   7864     int entry_size, 
   7865     bcm_field_entry_t *entry_array, 
   7866     int *entry_count);
   7867 
   7868 /* Destroy a field entry. */
   7869 extern int bcm_field_entry_destroy(
   7870     int unit, 
   7871     bcm_field_entry_t entry);
   7872 
   7873 /* Destroy all field entries. */
   7874 extern int bcm_field_entry_destroy_all(
   7875     int unit);
   7876 
   7877 /* 
   7878  * Create a copy of an existing entry and control the entry copy using
   7879  * flags
   7880  */
   7881 extern int bcm_field_entry_config_copy(
   7882     int unit, 
   7883     bcm_field_entry_t src_entry, 
   7884     bcm_field_entry_t *dst_entry, 
   7885     uint32 flags);
   7886 
   7887 /* Create a copy of an existing field entry. */
   7888 extern int bcm_field_entry_copy(
   7889     int unit, 
   7890     bcm_field_entry_t src_entry, 
   7891     bcm_field_entry_t *dst_entry);
   7892 
   7893 /* Create a copy of an existing field entry. */
   7894 extern int bcm_field_entry_copy_id(
   7895     int unit, 
   7896     bcm_field_entry_t src_entry, 
   7897     bcm_field_entry_t dst_entry);
   7898 
   7899 /* Install a field entry into the hardware tables. */
   7900 extern int bcm_field_entry_install(
   7901     int unit, 
   7902     bcm_field_entry_t entry);
   7903 
   7904 #endif /* BCM_HIDE_DISPATCHABLE */
   7905 
   7906 #define BCM_FIELD_LARGE_DIRECT_ENTRY_ID_PACK(_entry_id, _group_id, _index)  \
   7907         _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_PACK(_entry_id, _group_id, _index)
   7908  
   7909 
   7910 #define BCM_FIELD_LARGE_DIRECT_ENTRY_ID_UNPACK(_entry_id, _group_id, _index)  \
   7911         _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_UNPACK(_entry_id, _group_id, _index)
   7912  
   7913 
   7914 #ifndef BCM_HIDE_DISPATCHABLE
   7915 
   7916 /* Install a field entry into large direct tables. */
   7917 extern int bcm_field_entry_install_and_handler_update(
   7918     int unit, 
   7919     bcm_field_entry_t entry, 
   7920     bcm_field_entry_t *large_dt_entry);
   7921 
   7922 /* Re-install a field entry into the hardware tables. */
   7923 extern int bcm_field_entry_reinstall(
   7924     int unit, 
   7925     bcm_field_entry_t entry);
   7926 
   7927 /* Remove a field entry from the hardware tables. */
   7928 extern int bcm_field_entry_remove(
   7929     int unit, 
   7930     bcm_field_entry_t entry);
   7931 
   7932 /* Enable or Disable a field Entry in hardware table by toggling VALIDf. */
   7933 extern int bcm_field_entry_enable_set(
   7934     int unit, 
   7935     bcm_field_entry_t entry, 
   7936     int enable_flag);
   7937 
   7938 /* Get the Enable or Disable status of a field Entry. */
   7939 extern int bcm_field_entry_enable_get(
   7940     int unit, 
   7941     bcm_field_entry_t entry, 
   7942     int *enable_flag);
   7943 
   7944 /* Attach a policer to a field entry. */
   7945 extern int bcm_field_entry_policer_attach(
   7946     int unit, 
   7947     bcm_field_entry_t entry_id, 
   7948     int level, 
   7949     bcm_policer_t policer_id);
   7950 
   7951 /* Detach a policer from a field entry. */
   7952 extern int bcm_field_entry_policer_detach(
   7953     int unit, 
   7954     bcm_field_entry_t entry_id, 
   7955     int level);
   7956 
   7957 /* Detach all policers from a field entry. */
   7958 extern int bcm_field_entry_policer_detach_all(
   7959     int unit, 
   7960     bcm_field_entry_t entry_id);
   7961 
   7962 /* Get the policer(s) attached to a field entry. */
   7963 extern int bcm_field_entry_policer_get(
   7964     int unit, 
   7965     bcm_field_entry_t entry_id, 
   7966     int level, 
   7967     bcm_policer_t *policer_id);
   7968 
   7969 /* Get/Set the priority for an entry within a group. */
   7970 extern int bcm_field_entry_prio_get(
   7971     int unit, 
   7972     bcm_field_entry_t entry, 
   7973     int *prio);
   7974 
   7975 /* Get/Set the priority for an entry within a group. */
   7976 extern int bcm_field_entry_prio_set(
   7977     int unit, 
   7978     bcm_field_entry_t entry, 
   7979     int prio);
   7980 
   7981 /* Invalidate HW FP entries that have not been replayed after warm boot. */
   7982 extern int bcm_field_resync(
   7983     int unit);
   7984 
   7985 /* Add qualifier objects to field group qset. */
   7986 extern int bcm_field_qset_id_multi_set(
   7987     int unit, 
   7988     bcm_field_qualify_t qualifier, 
   7989     int num_objects, 
   7990     int *object_list, 
   7991     bcm_field_qset_t *qset);
   7992 
   7993 /* Delete qualifier objects to field group qset. */
   7994 extern int bcm_field_qset_id_multi_delete(
   7995     int unit, 
   7996     bcm_field_qualify_t qualifier, 
   7997     int num_objects, 
   7998     int *object_list, 
   7999     bcm_field_qset_t *qset);
   8000 
   8001 /* Get qualifier objects added to the field group qset. */
   8002 extern int bcm_field_qset_id_multi_get(
   8003     int unit, 
   8004     bcm_field_qset_t qset, 
   8005     bcm_field_qualify_t qualifier, 
   8006     int max_objects, 
   8007     int *object_list, 
   8008     int *count_objects);
   8009 
   8010 #endif /* BCM_HIDE_DISPATCHABLE */
   8011 
   8012 #define BCM_FIELD_ENTRY_LARGE_DIRECT_LOOKUP 0x10000000 /* OR with ID when
   8013                                                           calling
   8014                                                           bcm_field_entry_*
   8015                                                           functions to indicate
   8016                                                           large direct lookup
   8017                                                           advanced application */
   8018 
   8019 #define BCM_FIELD_ENTRY_KEEP_LOCATION   0x20000000 /* OR with ID when calling
   8020                                                       bcm_field_entry_remove
   8021                                                       functions to indicate TCAM
   8022                                                       location of entry is kept
   8023                                                       for
   8024                                                       bcm_field_entry_install
   8025                                                       function */
   8026 
   8027 #define BCM_FIELD_SEL_NOT_IN_TABLE  0xfff0     
   8028 
   8029 #define BCM_FIELD_QUALIFY_PRESEL    0x40000000 /* OR with ID when calling
   8030                                                   bcm_field_qualify_* functions
   8031                                                   to indicate ID is a
   8032                                                   preselector instead of an
   8033                                                   entry */
   8034 
   8035 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_INGRESS 0x80001000 /* OR with ID when
   8036                                                           calling
   8037                                                           bcm_field_qualify_*
   8038                                                           functions to indicate
   8039                                                           ID is a preselector in
   8040                                                           ingress stage instead
   8041                                                           of an entry */
   8042 
   8043 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_EGRESS 0x80002000 /* OR with ID when
   8044                                                           calling
   8045                                                           bcm_field_qualify_*
   8046                                                           functions to indicate
   8047                                                           ID is a preselector in
   8048                                                           egress stage instead
   8049                                                           of an entry */
   8050 
   8051 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_HASH 0x80004000 /* OR with ID when
   8052                                                           calling
   8053                                                           bcm_field_qualify_*
   8054                                                           functions to indicate
   8055                                                           ID is a preselector in
   8056                                                           hashing stage instead
   8057                                                           of an entry */
   8058 
   8059 #define BCM_FIELD_QUALIFY_PRESEL_ADVANCED_MODE_STAGE_EXTERNAL 0x80008000 /* OR with ID when
   8060                                                           calling
   8061                                                           bcm_field_qualify_*
   8062                                                           functions to indicate
   8063                                                           ID is a preselector in
   8064                                                           external stage */
   8065 
   8066 #define BCM_FIELD_QUALIFY_PRESEL_STAGGERED  0x41000000 /* OR with ID when
   8067                                                           calling
   8068                                                           bcm_field_qualify_*
   8069                                                           functions to indicate
   8070                                                           ID is a preselector in
   8071                                                           staggered mode */
   8072 
   8073 #define BCM_FIELD_PRESEL_STAGGERED  512        /* flag to indicate the prsele-id
   8074                                                   is staggered and should be
   8075                                                   configured in the second pass
   8076                                                   program selection table */
   8077 
   8078 #ifndef BCM_HIDE_DISPATCHABLE
   8079 
   8080 /* Remove all qualifications from a field entry. */
   8081 extern int bcm_field_qualify_clear(
   8082     int unit, 
   8083     bcm_field_entry_t entry);
   8084 
   8085 /* Add data field that the packet must match to trigger qualifier. */
   8086 extern int bcm_field_qualify_data(
   8087     int unit, 
   8088     bcm_field_entry_t eid, 
   8089     int qual_id, 
   8090     uint8 *data, 
   8091     uint8 *mask, 
   8092     uint16 length);
   8093 
   8094 /* Add UDF data that the packet must match to trigger qualifier. */
   8095 extern int bcm_field_qualify_udf(
   8096     int unit, 
   8097     bcm_field_entry_t eid, 
   8098     bcm_udf_id_t udf_id, 
   8099     int length, 
   8100     uint8 *data, 
   8101     uint8 *mask);
   8102 
   8103 /* Get UDF data that the packet configured to match on. */
   8104 extern int bcm_field_qualify_udf_get(
   8105     int unit, 
   8106     bcm_field_entry_t eid, 
   8107     bcm_udf_id_t udf_id, 
   8108     int max_length, 
   8109     uint8 *data, 
   8110     uint8 *mask, 
   8111     int *actual_length);
   8112 
   8113 /* Remove match criteria from a field processor entry. */
   8114 extern int bcm_field_qualifier_delete(
   8115     int unit, 
   8116     bcm_field_entry_t entry, 
   8117     bcm_field_qualify_t qual_id);
   8118 
   8119 /* bcm_field_qualify_InPort */
   8120 extern int bcm_field_qualify_InPort(
   8121     int unit, 
   8122     bcm_field_entry_t entry, 
   8123     bcm_port_t data, 
   8124     bcm_port_t mask);
   8125 
   8126 /* bcm_field_qualify_OutPort */
   8127 extern int bcm_field_qualify_OutPort(
   8128     int unit, 
   8129     bcm_field_entry_t entry, 
   8130     bcm_port_t data, 
   8131     bcm_port_t mask);
   8132 
   8133 /* bcm_field_qualify_InPorts */
   8134 extern int bcm_field_qualify_InPorts(
   8135     int unit, 
   8136     bcm_field_entry_t entry, 
   8137     bcm_pbmp_t data, 
   8138     bcm_pbmp_t mask);
   8139 
   8140 /* bcm_field_qualify_OutPorts */
   8141 extern int bcm_field_qualify_OutPorts(
   8142     int unit, 
   8143     bcm_field_entry_t entry, 
   8144     bcm_pbmp_t data, 
   8145     bcm_pbmp_t mask);
   8146 
   8147 /* bcm_field_qualify_Drop */
   8148 extern int bcm_field_qualify_Drop(
   8149     int unit, 
   8150     bcm_field_entry_t entry, 
   8151     uint8 data, 
   8152     uint8 mask);
   8153 
   8154 /* bcm_field_qualify_SrcPort */
   8155 extern int bcm_field_qualify_SrcPort(
   8156     int unit, 
   8157     bcm_field_entry_t entry, 
   8158     bcm_module_t data_modid, 
   8159     bcm_module_t mask_modid, 
   8160     bcm_port_t data_port, 
   8161     bcm_port_t mask_port);
   8162 
   8163 /* bcm_field_qualify_SrcTrunk */
   8164 extern int bcm_field_qualify_SrcTrunk(
   8165     int unit, 
   8166     bcm_field_entry_t entry, 
   8167     bcm_trunk_t data, 
   8168     bcm_trunk_t mask);
   8169 
   8170 /* 
   8171  * Set match criteria for bcmFieldQualifySrcTrunkMemberGport
   8172  *                qualifier in the field entry.
   8173  */
   8174 extern int bcm_field_qualify_SrcTrunkMemberGport(
   8175     int unit, 
   8176     bcm_field_entry_t entry, 
   8177     bcm_gport_t data);
   8178 
   8179 /* bcm_field_qualify_SrcTMPort */
   8180 extern int bcm_field_qualify_SrcTMPort(
   8181     int unit, 
   8182     bcm_field_entry_t entry, 
   8183     bcm_port_t data_port, 
   8184     bcm_port_t mask_port);
   8185 
   8186 /* bcm_field_qualify_DstPort */
   8187 extern int bcm_field_qualify_DstPort(
   8188     int unit, 
   8189     bcm_field_entry_t entry, 
   8190     bcm_module_t data_modid, 
   8191     bcm_module_t mask_modid, 
   8192     bcm_port_t data_port, 
   8193     bcm_port_t mask_port);
   8194 
   8195 /* bcm_field_qualify_DstTrunk */
   8196 extern int bcm_field_qualify_DstTrunk(
   8197     int unit, 
   8198     bcm_field_entry_t entry, 
   8199     bcm_trunk_t data, 
   8200     bcm_trunk_t mask);
   8201 
   8202 /* bcm_field_qualify_InnerL4SrcPort */
   8203 extern int bcm_field_qualify_InnerL4SrcPort(
   8204     int unit, 
   8205     bcm_field_entry_t entry, 
   8206     bcm_l4_port_t data, 
   8207     bcm_l4_port_t mask);
   8208 
   8209 /* bcm_field_qualify_InnerL4DstPort */
   8210 extern int bcm_field_qualify_InnerL4DstPort(
   8211     int unit, 
   8212     bcm_field_entry_t entry, 
   8213     bcm_l4_port_t data, 
   8214     bcm_l4_port_t mask);
   8215 
   8216 /* bcm_field_qualify_L4SrcPort */
   8217 extern int bcm_field_qualify_L4SrcPort(
   8218     int unit, 
   8219     bcm_field_entry_t entry, 
   8220     bcm_l4_port_t data, 
   8221     bcm_l4_port_t mask);
   8222 
   8223 /* bcm_field_qualify_L4DstPort */
   8224 extern int bcm_field_qualify_L4DstPort(
   8225     int unit, 
   8226     bcm_field_entry_t entry, 
   8227     bcm_l4_port_t data, 
   8228     bcm_l4_port_t mask);
   8229 
   8230 /* bcm_field_qualify_OuterVlan */
   8231 extern int bcm_field_qualify_OuterVlan(
   8232     int unit, 
   8233     bcm_field_entry_t entry, 
   8234     bcm_vlan_t data, 
   8235     bcm_vlan_t mask);
   8236 
   8237 /* 
   8238  *  Set match criteria for bcmFieldQualifyOuterVlanId
   8239  *                  qualifier in the field entry.
   8240  */
   8241 extern int bcm_field_qualify_OuterVlanId(
   8242     int unit, 
   8243     bcm_field_entry_t entry, 
   8244     bcm_vlan_t data, 
   8245     bcm_vlan_t mask);
   8246 
   8247 /* 
   8248  *  Set match criteria for bcmFieldQualifyOuterVlanPri
   8249  *                  qualifier in the field entry.
   8250  */
   8251 extern int bcm_field_qualify_OuterVlanPri(
   8252     int unit, 
   8253     bcm_field_entry_t entry, 
   8254     uint8 data, 
   8255     uint8 mask);
   8256 
   8257 /* 
   8258  *  Set match criteria for bcmFieldQualifyOuterVlanCfi
   8259  *                  qualifier in the field entry.
   8260  */
   8261 extern int bcm_field_qualify_OuterVlanCfi(
   8262     int unit, 
   8263     bcm_field_entry_t entry, 
   8264     uint8 data, 
   8265     uint8 mask);
   8266 
   8267 /* 
   8268  *  Set match criteria for bcmFieldQualifyOuterVlanPriCfi
   8269  *                  qualifier in the field entry.
   8270  */
   8271 extern int bcm_field_qualify_OuterVlanPriCfi(
   8272     int unit, 
   8273     bcm_field_entry_t entry, 
   8274     uint8 data, 
   8275     uint8 mask);
   8276 
   8277 /* bcm_field_qualify_InnerVlan */
   8278 extern int bcm_field_qualify_InnerVlan(
   8279     int unit, 
   8280     bcm_field_entry_t entry, 
   8281     bcm_vlan_t data, 
   8282     bcm_vlan_t mask);
   8283 
   8284 /* 
   8285  *  Set match criteria for bcmFieldQualifyInnerVlanId
   8286  *                  qualifier in the field entry.
   8287  */
   8288 extern int bcm_field_qualify_InnerVlanId(
   8289     int unit, 
   8290     bcm_field_entry_t entry, 
   8291     bcm_vlan_t data, 
   8292     bcm_vlan_t mask);
   8293 
   8294 /* 
   8295  *  Set match criteria for bcmFieldQualifyInnerVlanPri
   8296  *                  qualifier in the field entry.
   8297  */
   8298 extern int bcm_field_qualify_InnerVlanPri(
   8299     int unit, 
   8300     bcm_field_entry_t entry, 
   8301     uint8 data, 
   8302     uint8 mask);
   8303 
   8304 /* 
   8305  *  Set match criteria for bcmFieldQualifyInnerVlanCfi
   8306  *                  qualifier in the field entry.
   8307  */
   8308 extern int bcm_field_qualify_InnerVlanCfi(
   8309     int unit, 
   8310     bcm_field_entry_t entry, 
   8311     uint8 data, 
   8312     uint8 mask);
   8313 
   8314 /* bcm_field_qualify_EtherType */
   8315 extern int bcm_field_qualify_EtherType(
   8316     int unit, 
   8317     bcm_field_entry_t entry, 
   8318     uint16 data, 
   8319     uint16 mask);
   8320 
   8321 /* Add loopback field qualification to a field entry. */
   8322 extern int bcm_field_qualify_Loopback(
   8323     int unit, 
   8324     bcm_field_entry_t entry, 
   8325     uint8 data, 
   8326     uint8 mask);
   8327 
   8328 /* Add loopback type field qualification to a field entry. */
   8329 extern int bcm_field_qualify_LoopbackType(
   8330     int unit, 
   8331     bcm_field_entry_t entry, 
   8332     bcm_field_LoopbackType_t loopback_type);
   8333 
   8334 /* Add tunnel type field qualification to a field entry. */
   8335 extern int bcm_field_qualify_TunnelType(
   8336     int unit, 
   8337     bcm_field_entry_t entry, 
   8338     bcm_field_TunnelType_t tunnel_type);
   8339 
   8340 /* bcm_field_qualify_DstL3Egress */
   8341 extern int bcm_field_qualify_DstL3Egress(
   8342     int unit, 
   8343     bcm_field_entry_t entry, 
   8344     bcm_if_t if_id);
   8345 
   8346 /* bcm_field_qualify_DstMulticastGroup */
   8347 extern int bcm_field_qualify_DstMulticastGroup(
   8348     int unit, 
   8349     bcm_field_entry_t entry, 
   8350     bcm_multicast_t group);
   8351 
   8352 /* bcm_field_qualify_SrcMplsGport */
   8353 extern int bcm_field_qualify_SrcMplsGport(
   8354     int unit, 
   8355     bcm_field_entry_t entry, 
   8356     bcm_gport_t mpls_port_id);
   8357 
   8358 /* bcm_field_qualify_DstMplsGport */
   8359 extern int bcm_field_qualify_DstMplsGport(
   8360     int unit, 
   8361     bcm_field_entry_t entry, 
   8362     bcm_gport_t mpls_port_id);
   8363 
   8364 /* bcm_field_qualify_SrcMimGport */
   8365 extern int bcm_field_qualify_SrcMimGport(
   8366     int unit, 
   8367     bcm_field_entry_t entry, 
   8368     bcm_gport_t mim_port_id);
   8369 
   8370 /* bcm_field_qualify_DstMimGport */
   8371 extern int bcm_field_qualify_DstMimGport(
   8372     int unit, 
   8373     bcm_field_entry_t entry, 
   8374     bcm_gport_t mim_port_id);
   8375 
   8376 /* bcm_field_qualify_SrcWlanGport */
   8377 extern int bcm_field_qualify_SrcWlanGport(
   8378     int unit, 
   8379     bcm_field_entry_t entry, 
   8380     bcm_gport_t wlan_port_id);
   8381 
   8382 /* bcm_field_qualify_DstWlanGport */
   8383 extern int bcm_field_qualify_DstWlanGport(
   8384     int unit, 
   8385     bcm_field_entry_t entry, 
   8386     bcm_gport_t wlan_port_id);
   8387 
   8388 /* bcm_field_qualify_SrcVxlanGport */
   8389 extern int bcm_field_qualify_SrcVxlanGport(
   8390     int unit, 
   8391     bcm_field_entry_t entry, 
   8392     bcm_gport_t vxlan_port_id);
   8393 
   8394 /* bcm_field_qualify_DstVxlanGport */
   8395 extern int bcm_field_qualify_DstVxlanGport(
   8396     int unit, 
   8397     bcm_field_entry_t entry, 
   8398     bcm_gport_t vxlan_port_id);
   8399 
   8400 /* 
   8401  * Set match criteria for bcmFieldQualifyIntPriority
   8402  *                qualifier in the field entry.
   8403  */
   8404 extern int bcm_field_qualify_IntPriority(
   8405     int unit, 
   8406     bcm_field_entry_t entry, 
   8407     uint8 data, 
   8408     uint8 mask);
   8409 
   8410 /* 
   8411  * Set match criteria for bcmFieldQualifyForwardingVlanId
   8412  *                qualifier in the field entry.
   8413  */
   8414 extern int bcm_field_qualify_ForwardingVlanId(
   8415     int unit, 
   8416     bcm_field_entry_t entry, 
   8417     bcm_vlan_t data, 
   8418     bcm_vlan_t mask);
   8419 
   8420 /* 
   8421  * Get match criteria for bcmFieldQualifyForwardingVlanId
   8422  *                qualifier from the field entry.
   8423  */
   8424 extern int bcm_field_qualify_ForwardingVlanId_get(
   8425     int unit, 
   8426     bcm_field_entry_t entry, 
   8427     bcm_vlan_t *data, 
   8428     bcm_vlan_t *mask);
   8429 
   8430 /* 
   8431  * Set match criteria for bcmFieldQualifyVpn
   8432  *                qualifier in the field entry.
   8433  */
   8434 extern int bcm_field_qualify_Vpn(
   8435     int unit, 
   8436     bcm_field_entry_t entry, 
   8437     bcm_vpn_t data, 
   8438     bcm_vpn_t mask);
   8439 
   8440 /* 
   8441  * Get match criteria for bcmFieldQualifyVpn
   8442  *                qualifier from the field entry.
   8443  */
   8444 extern int bcm_field_qualify_Vpn_get(
   8445     int unit, 
   8446     bcm_field_entry_t entry, 
   8447     bcm_vpn_t *data, 
   8448     bcm_vpn_t *mask);
   8449 
   8450 /* 
   8451  * Set match criteria for bcmFieldQualifyColor
   8452  *                qualifier in the field entry.
   8453  */
   8454 extern int bcm_field_qualify_Color(
   8455     int unit, 
   8456     bcm_field_entry_t entry, 
   8457     uint8 color);
   8458 
   8459 /* 
   8460  * Set match criteria for bcmFieldQualifySrcModPortGport
   8461  *                qualifier in the field entry.
   8462  */
   8463 extern int bcm_field_qualify_SrcModPortGport(
   8464     int unit, 
   8465     bcm_field_entry_t entry, 
   8466     bcm_gport_t data);
   8467 
   8468 /* 
   8469  * Set match criteria for bcmFieldQualifySrcModuleGport
   8470  *                qualifier in the field entry.
   8471  */
   8472 extern int bcm_field_qualify_SrcModuleGport(
   8473     int unit, 
   8474     bcm_field_entry_t entry, 
   8475     bcm_gport_t data);
   8476 
   8477 /* bcm_field_qualify_IpProtocol */
   8478 extern int bcm_field_qualify_IpProtocol(
   8479     int unit, 
   8480     bcm_field_entry_t entry, 
   8481     uint8 data, 
   8482     uint8 mask);
   8483 
   8484 /* bcm_field_qualify_IpInfo */
   8485 extern int bcm_field_qualify_IpInfo(
   8486     int unit, 
   8487     bcm_field_entry_t entry, 
   8488     uint32 data, 
   8489     uint32 mask);
   8490 
   8491 /* bcm_field_qualify_PacketRes */
   8492 extern int bcm_field_qualify_PacketRes(
   8493     int unit, 
   8494     bcm_field_entry_t entry, 
   8495     uint32 data, 
   8496     uint32 mask);
   8497 
   8498 /* bcm_field_qualify_SrcIp */
   8499 extern int bcm_field_qualify_SrcIp(
   8500     int unit, 
   8501     bcm_field_entry_t entry, 
   8502     bcm_ip_t data, 
   8503     bcm_ip_t mask);
   8504 
   8505 /* bcm_field_qualify_DstIp */
   8506 extern int bcm_field_qualify_DstIp(
   8507     int unit, 
   8508     bcm_field_entry_t entry, 
   8509     bcm_ip_t data, 
   8510     bcm_ip_t mask);
   8511 
   8512 /* bcm_field_qualify_KeyGenVar */
   8513 extern int bcm_field_qualify_KeyGenVar(
   8514     int unit, 
   8515     bcm_field_entry_t entry, 
   8516     uint32 data, 
   8517     uint32 mask);
   8518 
   8519 /* bcm_field_qualify_DSCP */
   8520 extern int bcm_field_qualify_DSCP(
   8521     int unit, 
   8522     bcm_field_entry_t entry, 
   8523     uint8 data, 
   8524     uint8 mask);
   8525 
   8526 /* bcm_field_qualify_Tos */
   8527 extern int bcm_field_qualify_Tos(
   8528     int unit, 
   8529     bcm_field_entry_t entry, 
   8530     uint8 data, 
   8531     uint8 mask);
   8532 
   8533 /* bcm_field_qualify_IpFlags */
   8534 extern int bcm_field_qualify_IpFlags(
   8535     int unit, 
   8536     bcm_field_entry_t entry, 
   8537     uint8 data, 
   8538     uint8 mask);
   8539 
   8540 /* bcm_field_qualify_TcpControl */
   8541 extern int bcm_field_qualify_TcpControl(
   8542     int unit, 
   8543     bcm_field_entry_t entry, 
   8544     uint8 data, 
   8545     uint8 mask);
   8546 
   8547 /* bcm_field_qualify_TcpSequenceZero */
   8548 extern int bcm_field_qualify_TcpSequenceZero(
   8549     int unit, 
   8550     bcm_field_entry_t entry, 
   8551     uint32 flag);
   8552 
   8553 /* bcm_field_qualify_TcpHeaderSize */
   8554 extern int bcm_field_qualify_TcpHeaderSize(
   8555     int unit, 
   8556     bcm_field_entry_t entry, 
   8557     uint8 data, 
   8558     uint8 mask);
   8559 
   8560 /* bcm_field_qualify_Ttl */
   8561 extern int bcm_field_qualify_Ttl(
   8562     int unit, 
   8563     bcm_field_entry_t entry, 
   8564     uint8 data, 
   8565     uint8 mask);
   8566 
   8567 /* bcm_field_qualify_RangeCheck */
   8568 extern int bcm_field_qualify_RangeCheck(
   8569     int unit, 
   8570     bcm_field_entry_t entry, 
   8571     bcm_field_range_t range, 
   8572     int invert);
   8573 
   8574 /* bcm_field_qualify_SrcIp6 */
   8575 extern int bcm_field_qualify_SrcIp6(
   8576     int unit, 
   8577     bcm_field_entry_t entry, 
   8578     bcm_ip6_t data, 
   8579     bcm_ip6_t mask);
   8580 
   8581 /* bcm_field_qualify_DstIp6 */
   8582 extern int bcm_field_qualify_DstIp6(
   8583     int unit, 
   8584     bcm_field_entry_t entry, 
   8585     bcm_ip6_t data, 
   8586     bcm_ip6_t mask);
   8587 
   8588 /* bcm_field_qualify_SrcIp6High */
   8589 extern int bcm_field_qualify_SrcIp6High(
   8590     int unit, 
   8591     bcm_field_entry_t entry, 
   8592     bcm_ip6_t data, 
   8593     bcm_ip6_t mask);
   8594 
   8595 /* bcm_field_qualify_DstIp6High */
   8596 extern int bcm_field_qualify_DstIp6High(
   8597     int unit, 
   8598     bcm_field_entry_t entry, 
   8599     bcm_ip6_t data, 
   8600     bcm_ip6_t mask);
   8601 
   8602 /* bcm_field_qualify_DstIp6Low */
   8603 extern int bcm_field_qualify_DstIp6Low(
   8604     int unit, 
   8605     bcm_field_entry_t entry, 
   8606     bcm_ip6_t data, 
   8607     bcm_ip6_t mask);
   8608 
   8609 /* bcm_field_qualify_SrcIp6Low */
   8610 extern int bcm_field_qualify_SrcIp6Low(
   8611     int unit, 
   8612     bcm_field_entry_t entry, 
   8613     bcm_ip6_t data, 
   8614     bcm_ip6_t mask);
   8615 
   8616 /* bcm_field_qualify_Ip6NextHeader */
   8617 extern int bcm_field_qualify_Ip6NextHeader(
   8618     int unit, 
   8619     bcm_field_entry_t entry, 
   8620     uint8 data, 
   8621     uint8 mask);
   8622 
   8623 /* bcm_field_qualify_Ip6TrafficClass */
   8624 extern int bcm_field_qualify_Ip6TrafficClass(
   8625     int unit, 
   8626     bcm_field_entry_t entry, 
   8627     uint8 data, 
   8628     uint8 mask);
   8629 
   8630 /* bcm_field_qualify_InnerIp6FlowLabel */
   8631 extern int bcm_field_qualify_InnerIp6FlowLabel(
   8632     int unit, 
   8633     bcm_field_entry_t entry, 
   8634     uint32 data, 
   8635     uint32 mask);
   8636 
   8637 /* bcm_field_qualify_Ip6FlowLabel */
   8638 extern int bcm_field_qualify_Ip6FlowLabel(
   8639     int unit, 
   8640     bcm_field_entry_t entry, 
   8641     uint32 data, 
   8642     uint32 mask);
   8643 
   8644 /* bcm_field_qualify_Ip6HopLimit */
   8645 extern int bcm_field_qualify_Ip6HopLimit(
   8646     int unit, 
   8647     bcm_field_entry_t entry, 
   8648     uint8 data, 
   8649     uint8 mask);
   8650 
   8651 /* bcm_field_qualify_SrcMac */
   8652 extern int bcm_field_qualify_SrcMac(
   8653     int unit, 
   8654     bcm_field_entry_t entry, 
   8655     bcm_mac_t data, 
   8656     bcm_mac_t mask);
   8657 
   8658 /* bcm_field_qualify_DstMac */
   8659 extern int bcm_field_qualify_DstMac(
   8660     int unit, 
   8661     bcm_field_entry_t entry, 
   8662     bcm_mac_t data, 
   8663     bcm_mac_t mask);
   8664 
   8665 /* bcm_field_qualify_InnerIpType */
   8666 extern int bcm_field_qualify_InnerIpType(
   8667     int unit, 
   8668     bcm_field_entry_t entry, 
   8669     bcm_field_IpType_t type);
   8670 
   8671 /* bcm_field_qualify_ForwardingType */
   8672 extern int bcm_field_qualify_ForwardingType(
   8673     int unit, 
   8674     bcm_field_entry_t entry, 
   8675     bcm_field_ForwardingType_t type);
   8676 
   8677 /* bcm_field_qualify_AppType */
   8678 extern int bcm_field_qualify_AppType(
   8679     int unit, 
   8680     bcm_field_entry_t entry, 
   8681     bcm_field_AppType_t type);
   8682 
   8683 /* bcm_field_qualify_IpType */
   8684 extern int bcm_field_qualify_IpType(
   8685     int unit, 
   8686     bcm_field_entry_t entry, 
   8687     bcm_field_IpType_t type);
   8688 
   8689 /* bcm_field_qualify_L2Format */
   8690 extern int bcm_field_qualify_L2Format(
   8691     int unit, 
   8692     bcm_field_entry_t entry, 
   8693     bcm_field_L2Format_t type);
   8694 
   8695 /* bcm_field_qualify_VlanFormat */
   8696 extern int bcm_field_qualify_VlanFormat(
   8697     int unit, 
   8698     bcm_field_entry_t entry, 
   8699     uint8 data, 
   8700     uint8 mask);
   8701 
   8702 /* bcm_field_qualify_MHOpcode */
   8703 extern int bcm_field_qualify_MHOpcode(
   8704     int unit, 
   8705     bcm_field_entry_t entry, 
   8706     uint8 data, 
   8707     uint8 mask);
   8708 
   8709 /* bcm_field_qualify_Decap */
   8710 extern int bcm_field_qualify_Decap(
   8711     int unit, 
   8712     bcm_field_entry_t entry, 
   8713     bcm_field_decap_t decap);
   8714 
   8715 /* Qualify on HiGig packets. */
   8716 extern int bcm_field_qualify_HiGig(
   8717     int unit, 
   8718     bcm_field_entry_t entry, 
   8719     uint8 data, 
   8720     uint8 mask);
   8721 
   8722 /* Qualify on HiGig destination packets. */
   8723 extern int bcm_field_qualify_DstHiGig(
   8724     int unit, 
   8725     bcm_field_entry_t entry, 
   8726     uint8 data, 
   8727     uint8 mask);
   8728 
   8729 /* Qualify on HiGig lookup packets. */
   8730 extern int bcm_field_qualify_HiGigProxy(
   8731     int unit, 
   8732     bcm_field_entry_t entry, 
   8733     uint8 data, 
   8734     uint8 mask);
   8735 
   8736 /* bcm_field_qualify_InterfaceClassPort */
   8737 extern int bcm_field_qualify_InterfaceClassPort(
   8738     int unit, 
   8739     bcm_field_entry_t entry, 
   8740     uint32 data, 
   8741     uint32 mask);
   8742 
   8743 /* bcm_field_qualify_InterfaceClassL2 */
   8744 extern int bcm_field_qualify_InterfaceClassL2(
   8745     int unit, 
   8746     bcm_field_entry_t entry, 
   8747     uint32 data, 
   8748     uint32 mask);
   8749 
   8750 /* bcm_field_qualify_InterfaceClassL3 */
   8751 extern int bcm_field_qualify_InterfaceClassL3(
   8752     int unit, 
   8753     bcm_field_entry_t entry, 
   8754     uint32 data, 
   8755     uint32 mask);
   8756 
   8757 /* bcm_field_qualify_SrcClassL2 */
   8758 extern int bcm_field_qualify_SrcClassL2(
   8759     int unit, 
   8760     bcm_field_entry_t entry, 
   8761     uint32 data, 
   8762     uint32 mask);
   8763 
   8764 /* bcm_field_qualify_SrcClassL3 */
   8765 extern int bcm_field_qualify_SrcClassL3(
   8766     int unit, 
   8767     bcm_field_entry_t entry, 
   8768     uint32 data, 
   8769     uint32 mask);
   8770 
   8771 /* bcm_field_qualify_SrcClassField */
   8772 extern int bcm_field_qualify_SrcClassField(
   8773     int unit, 
   8774     bcm_field_entry_t entry, 
   8775     uint32 data, 
   8776     uint32 mask);
   8777 
   8778 /* bcm_field_qualify_DstClassL2 */
   8779 extern int bcm_field_qualify_DstClassL2(
   8780     int unit, 
   8781     bcm_field_entry_t entry, 
   8782     uint32 data, 
   8783     uint32 mask);
   8784 
   8785 /* bcm_field_qualify_DstClassL3 */
   8786 extern int bcm_field_qualify_DstClassL3(
   8787     int unit, 
   8788     bcm_field_entry_t entry, 
   8789     uint32 data, 
   8790     uint32 mask);
   8791 
   8792 /* bcm_field_qualify_DstClassField */
   8793 extern int bcm_field_qualify_DstClassField(
   8794     int unit, 
   8795     bcm_field_entry_t entry, 
   8796     uint32 data, 
   8797     uint32 mask);
   8798 
   8799 /* bcm_field_qualify_DstMultipath */
   8800 extern int bcm_field_qualify_DstMultipath(
   8801     int unit, 
   8802     bcm_field_entry_t entry, 
   8803     bcm_if_t mpintf);
   8804 
   8805 /* bcm_field_qualify_DstMultipath_get */
   8806 extern int bcm_field_qualify_DstMultipath_get(
   8807     int unit, 
   8808     bcm_field_entry_t entry, 
   8809     bcm_if_t *mpintf);
   8810 
   8811 /* bcm_field_qualify_IpProtocolCommon */
   8812 extern int bcm_field_qualify_IpProtocolCommon(
   8813     int unit, 
   8814     bcm_field_entry_t entry, 
   8815     bcm_field_IpProtocolCommon_t protocol);
   8816 
   8817 /* bcm_field_qualify_InnerIpProtocolCommon */
   8818 extern int bcm_field_qualify_InnerIpProtocolCommon(
   8819     int unit, 
   8820     bcm_field_entry_t entry, 
   8821     bcm_field_IpProtocolCommon_t protocol);
   8822 
   8823 /* bcm_field_qualify_Snap */
   8824 extern int bcm_field_qualify_Snap(
   8825     int unit, 
   8826     bcm_field_entry_t entry, 
   8827     bcm_field_snap_header_t data, 
   8828     bcm_field_snap_header_t mask);
   8829 
   8830 /* bcm_field_qualify_Llc */
   8831 extern int bcm_field_qualify_Llc(
   8832     int unit, 
   8833     bcm_field_entry_t entry, 
   8834     bcm_field_llc_header_t data, 
   8835     bcm_field_llc_header_t mask);
   8836 
   8837 /* bcm_field_qualify_InnerTpid */
   8838 extern int bcm_field_qualify_InnerTpid(
   8839     int unit, 
   8840     bcm_field_entry_t entry, 
   8841     uint16 tpid);
   8842 
   8843 /* bcm_field_qualify_OuterTpid */
   8844 extern int bcm_field_qualify_OuterTpid(
   8845     int unit, 
   8846     bcm_field_entry_t entry, 
   8847     uint16 tpid);
   8848 
   8849 /* bcm_field_qualify_L3Routable */
   8850 extern int bcm_field_qualify_L3Routable(
   8851     int unit, 
   8852     bcm_field_entry_t entry, 
   8853     uint8 data, 
   8854     uint8 mask);
   8855 
   8856 /* bcm_field_qualify_IpFrag */
   8857 extern int bcm_field_qualify_IpFrag(
   8858     int unit, 
   8859     bcm_field_entry_t entry, 
   8860     bcm_field_IpFrag_t frag_info);
   8861 
   8862 /* bcm_field_qualify_Vrf */
   8863 extern int bcm_field_qualify_Vrf(
   8864     int unit, 
   8865     bcm_field_entry_t entry, 
   8866     uint32 data, 
   8867     uint32 mask);
   8868 
   8869 /* bcm_field_qualify_L3Ingress */
   8870 extern int bcm_field_qualify_L3Ingress(
   8871     int unit, 
   8872     bcm_field_entry_t entry, 
   8873     uint32 intf_id, 
   8874     uint32 mask);
   8875 
   8876 /* bcm_field_qualify_ExtensionHeaderType */
   8877 extern int bcm_field_qualify_ExtensionHeaderType(
   8878     int unit, 
   8879     bcm_field_entry_t entry, 
   8880     uint8 data, 
   8881     uint8 mask);
   8882 
   8883 /* bcm_field_qualify_ExtensionHeaderSubCode */
   8884 extern int bcm_field_qualify_ExtensionHeaderSubCode(
   8885     int unit, 
   8886     bcm_field_entry_t entry, 
   8887     uint8 data, 
   8888     uint8 mask);
   8889 
   8890 /* bcm_field_qualify_ExtensionHeader2Type */
   8891 extern int bcm_field_qualify_ExtensionHeader2Type(
   8892     int unit, 
   8893     bcm_field_entry_t entry, 
   8894     uint8 data, 
   8895     uint8 mask);
   8896 
   8897 /* bcm_field_qualify_L4Ports */
   8898 extern int bcm_field_qualify_L4Ports(
   8899     int unit, 
   8900     bcm_field_entry_t entry, 
   8901     uint8 data, 
   8902     uint8 mask);
   8903 
   8904 /* bcm_field_qualify_MirrorCopy */
   8905 extern int bcm_field_qualify_MirrorCopy(
   8906     int unit, 
   8907     bcm_field_entry_t entry, 
   8908     uint8 data, 
   8909     uint8 mask);
   8910 
   8911 /* bcm_field_qualify_TunnelTerminated */
   8912 extern int bcm_field_qualify_TunnelTerminated(
   8913     int unit, 
   8914     bcm_field_entry_t entry, 
   8915     uint8 data, 
   8916     uint8 mask);
   8917 
   8918 /* bcm_field_qualify_MplsTerminated */
   8919 extern int bcm_field_qualify_MplsTerminated(
   8920     int unit, 
   8921     bcm_field_entry_t entry, 
   8922     uint8 data, 
   8923     uint8 mask);
   8924 
   8925 /* bcm_field_qualify_InnerSrcIp */
   8926 extern int bcm_field_qualify_InnerSrcIp(
   8927     int unit, 
   8928     bcm_field_entry_t entry, 
   8929     bcm_ip_t data, 
   8930     bcm_ip_t mask);
   8931 
   8932 /* bcm_field_qualify_InnerDstIp */
   8933 extern int bcm_field_qualify_InnerDstIp(
   8934     int unit, 
   8935     bcm_field_entry_t entry, 
   8936     bcm_ip_t data, 
   8937     bcm_ip_t mask);
   8938 
   8939 /* bcm_field_qualify_InnerSrcIp6 */
   8940 extern int bcm_field_qualify_InnerSrcIp6(
   8941     int unit, 
   8942     bcm_field_entry_t entry, 
   8943     bcm_ip6_t data, 
   8944     bcm_ip6_t mask);
   8945 
   8946 /* bcm_field_qualify_InnerDstIp6 */
   8947 extern int bcm_field_qualify_InnerDstIp6(
   8948     int unit, 
   8949     bcm_field_entry_t entry, 
   8950     bcm_ip6_t data, 
   8951     bcm_ip6_t mask);
   8952 
   8953 /* bcm_field_qualify_InnerSrcIp6High */
   8954 extern int bcm_field_qualify_InnerSrcIp6High(
   8955     int unit, 
   8956     bcm_field_entry_t entry, 
   8957     bcm_ip6_t data, 
   8958     bcm_ip6_t mask);
   8959 
   8960 /* bcm_field_qualify_InnerDstIp6High */
   8961 extern int bcm_field_qualify_InnerDstIp6High(
   8962     int unit, 
   8963     bcm_field_entry_t entry, 
   8964     bcm_ip6_t data, 
   8965     bcm_ip6_t mask);
   8966 
   8967 /* bcm_field_qualify_InnerIp6HopLimit */
   8968 extern int bcm_field_qualify_InnerIp6HopLimit(
   8969     int unit, 
   8970     bcm_field_entry_t entry, 
   8971     uint8 data, 
   8972     uint8 mask);
   8973 
   8974 /* bcm_field_qualify_InnerTtl */
   8975 extern int bcm_field_qualify_InnerTtl(
   8976     int unit, 
   8977     bcm_field_entry_t entry, 
   8978     uint8 data, 
   8979     uint8 mask);
   8980 
   8981 /* bcm_field_qualify_InnerTos */
   8982 extern int bcm_field_qualify_InnerTos(
   8983     int unit, 
   8984     bcm_field_entry_t entry, 
   8985     uint8 data, 
   8986     uint8 mask);
   8987 
   8988 /* bcm_field_qualify_InnerDSCP */
   8989 extern int bcm_field_qualify_InnerDSCP(
   8990     int unit, 
   8991     bcm_field_entry_t entry, 
   8992     uint8 data, 
   8993     uint8 mask);
   8994 
   8995 /* bcm_field_qualify_InnerIpProtocol */
   8996 extern int bcm_field_qualify_InnerIpProtocol(
   8997     int unit, 
   8998     bcm_field_entry_t entry, 
   8999     uint8 data, 
   9000     uint8 mask);
   9001 
   9002 /* bcm_field_qualify_InnerIp6NextHeader */
   9003 extern int bcm_field_qualify_InnerIp6NextHeader(
   9004     int unit, 
   9005     bcm_field_entry_t entry, 
   9006     uint8 data, 
   9007     uint8 mask);
   9008 
   9009 /* bcm_field_qualify_InnerIpFrag */
   9010 extern int bcm_field_qualify_InnerIpFrag(
   9011     int unit, 
   9012     bcm_field_entry_t entry, 
   9013     bcm_field_IpFrag_t frag_info);
   9014 
   9015 /* bcm_field_qualify_DosAttack */
   9016 extern int bcm_field_qualify_DosAttack(
   9017     int unit, 
   9018     bcm_field_entry_t entry, 
   9019     uint8 data, 
   9020     uint8 mask);
   9021 
   9022 /* bcm_field_qualify_IpmcStarGroupHit */
   9023 extern int bcm_field_qualify_IpmcStarGroupHit(
   9024     int unit, 
   9025     bcm_field_entry_t entry, 
   9026     uint8 data, 
   9027     uint8 mask);
   9028 
   9029 /* bcm_field_qualify_MyStationHit */
   9030 extern int bcm_field_qualify_MyStationHit(
   9031     int unit, 
   9032     bcm_field_entry_t entry, 
   9033     uint8 data, 
   9034     uint8 mask);
   9035 
   9036 /* Match on first eight bytes of L2 payload */
   9037 extern int bcm_field_qualify_L2PayloadFirstEightBytes(
   9038     int unit, 
   9039     bcm_field_entry_t entry, 
   9040     uint32 data1, 
   9041     uint32 data2, 
   9042     uint32 mask1, 
   9043     uint32 mask2);
   9044 
   9045 /* bcm_field_qualify_L3DestRouteHit */
   9046 extern int bcm_field_qualify_L3DestRouteHit(
   9047     int unit, 
   9048     bcm_field_entry_t entry, 
   9049     uint8 data, 
   9050     uint8 mask);
   9051 
   9052 /* bcm_field_qualify_L3DestHostHit */
   9053 extern int bcm_field_qualify_L3DestHostHit(
   9054     int unit, 
   9055     bcm_field_entry_t entry, 
   9056     uint8 data, 
   9057     uint8 mask);
   9058 
   9059 /* bcm_field_qualify_L3SrcHostHit */
   9060 extern int bcm_field_qualify_L3SrcHostHit(
   9061     int unit, 
   9062     bcm_field_entry_t entry, 
   9063     uint8 data, 
   9064     uint8 mask);
   9065 
   9066 /* bcm_field_qualify_L2CacheHit */
   9067 extern int bcm_field_qualify_L2CacheHit(
   9068     int unit, 
   9069     bcm_field_entry_t entry, 
   9070     uint8 data, 
   9071     uint8 mask);
   9072 
   9073 /* bcm_field_qualify_L2StationMove */
   9074 extern int bcm_field_qualify_L2StationMove(
   9075     int unit, 
   9076     bcm_field_entry_t entry, 
   9077     uint8 data, 
   9078     uint8 mask);
   9079 
   9080 /* bcm_field_qualify_L2DestHit */
   9081 extern int bcm_field_qualify_L2DestHit(
   9082     int unit, 
   9083     bcm_field_entry_t entry, 
   9084     uint8 data, 
   9085     uint8 mask);
   9086 
   9087 /* bcm_field_qualify_L2SrcStatic */
   9088 extern int bcm_field_qualify_L2SrcStatic(
   9089     int unit, 
   9090     bcm_field_entry_t entry, 
   9091     uint8 data, 
   9092     uint8 mask);
   9093 
   9094 /* bcm_field_qualify_L2SrcHit */
   9095 extern int bcm_field_qualify_L2SrcHit(
   9096     int unit, 
   9097     bcm_field_entry_t entry, 
   9098     uint8 data, 
   9099     uint8 mask);
   9100 
   9101 /* bcm_field_qualify_IngressStpState */
   9102 extern int bcm_field_qualify_IngressStpState(
   9103     int unit, 
   9104     bcm_field_entry_t entry, 
   9105     uint8 data, 
   9106     uint8 mask);
   9107 
   9108 /* bcm_field_qualify_IngressVPortBridgeDisable */
   9109 extern int bcm_field_qualify_IngressVPortBridgeDisable(
   9110     int unit, 
   9111     bcm_field_entry_t entry, 
   9112     uint8 data, 
   9113     uint8 mask);
   9114 
   9115 /* 
   9116  *  Get match criteria for bcmFieldQualifyIngressVPortBridgeDisable
   9117  * qualifier from the field entry.
   9118  */
   9119 extern int bcm_field_qualify_IngressVPortBridgeDisable_get(
   9120     int unit, 
   9121     bcm_field_entry_t entry, 
   9122     uint8 *data, 
   9123     uint8 *mask);
   9124 
   9125 /* bcm_field_qualify_ForwardingVlanValid */
   9126 extern int bcm_field_qualify_ForwardingVlanValid(
   9127     int unit, 
   9128     bcm_field_entry_t entry, 
   9129     uint8 data, 
   9130     uint8 mask);
   9131 
   9132 /* bcm_field_qualify_SrcVirtualPortValid */
   9133 extern int bcm_field_qualify_SrcVirtualPortValid(
   9134     int unit, 
   9135     bcm_field_entry_t entry, 
   9136     uint8 data, 
   9137     uint8 mask);
   9138 
   9139 /* 
   9140  * Set match criteria for bcmFieldQualifyDstL3EgressNextHops
   9141  *                 qualifier in the field entry.
   9142  */
   9143 extern int bcm_field_qualify_DstL3EgressNextHops(
   9144     int unit, 
   9145     bcm_field_entry_t entry, 
   9146     uint32 data, 
   9147     uint32 mask);
   9148 
   9149 /* bcm_field_qualify_VlanTranslationHit */
   9150 extern int bcm_field_qualify_VlanTranslationHit(
   9151     int unit, 
   9152     bcm_field_entry_t entry, 
   9153     uint8 data, 
   9154     uint8 mask);
   9155 
   9156 /* bcm_field_qualify_IcmpTypeCode */
   9157 extern int bcm_field_qualify_IcmpTypeCode(
   9158     int unit, 
   9159     bcm_field_entry_t entry, 
   9160     uint16 data, 
   9161     uint16 mask);
   9162 
   9163 /* 
   9164  * Set match criteria for bcmFieldQualifyTranslatedVlanFormat
   9165  *                qualifier in the field entry.
   9166  */
   9167 extern int bcm_field_qualify_TranslatedVlanFormat(
   9168     int unit, 
   9169     bcm_field_entry_t entry, 
   9170     uint8 data, 
   9171     uint8 mask);
   9172 
   9173 /* 
   9174  * Add Fibre Channel outer header type field qualification to a field
   9175  * entry.
   9176  */
   9177 extern int bcm_field_qualify_FibreChanOuter(
   9178     int unit, 
   9179     bcm_field_entry_t entry, 
   9180     bcm_field_FibreChan_t fibre_chan_type);
   9181 
   9182 /* 
   9183  * Add Fibre Channel inner header type field qualification to a field
   9184  * entry.
   9185  */
   9186 extern int bcm_field_qualify_FibreChanInner(
   9187     int unit, 
   9188     bcm_field_entry_t entry, 
   9189     bcm_field_FibreChan_t fibre_chan_type);
   9190 
   9191 /* bcm_field_qualify_VnTag */
   9192 extern int bcm_field_qualify_VnTag(
   9193     int unit, 
   9194     bcm_field_entry_t entry, 
   9195     uint32 data, 
   9196     uint32 mask);
   9197 
   9198 /* bcm_field_qualify_SubportPktTag */
   9199 extern int bcm_field_qualify_SubportPktTag(
   9200     int unit, 
   9201     bcm_field_entry_t entry, 
   9202     uint16 data, 
   9203     uint16 mask);
   9204 
   9205 /* bcm_field_qualify_CnTag */
   9206 extern int bcm_field_qualify_CnTag(
   9207     int unit, 
   9208     bcm_field_entry_t entry, 
   9209     uint32 data, 
   9210     uint32 mask);
   9211 
   9212 /* bcm_field_qualify_FabricQueueTag */
   9213 extern int bcm_field_qualify_FabricQueueTag(
   9214     int unit, 
   9215     bcm_field_entry_t entry, 
   9216     uint32 data, 
   9217     uint32 mask);
   9218 
   9219 /* 
   9220  * Get match criteria for bcmFieldQualifyIntPriority
   9221  *                qualifier from the field entry.
   9222  */
   9223 extern int bcm_field_qualify_IntPriority_get(
   9224     int unit, 
   9225     bcm_field_entry_t entry, 
   9226     uint8 *data, 
   9227     uint8 *mask);
   9228 
   9229 /* 
   9230  * Get match criteria for bcmFieldQualifyColor
   9231  *                qualifier from the field entry.
   9232  */
   9233 extern int bcm_field_qualify_Color_get(
   9234     int unit, 
   9235     bcm_field_entry_t entry, 
   9236     uint8 *color);
   9237 
   9238 /* 
   9239  * Get match criteria for bcmFieldQualifySrcModPortGport
   9240  *                qualifier from the field entry.
   9241  */
   9242 extern int bcm_field_qualify_SrcModPortGport_get(
   9243     int unit, 
   9244     bcm_field_entry_t entry, 
   9245     bcm_gport_t *data);
   9246 
   9247 /* 
   9248  * Get match criteria for bcmFieldQualifySrcModuleGport
   9249  *                qualifier from the field entry.
   9250  */
   9251 extern int bcm_field_qualify_SrcModuleGport_get(
   9252     int unit, 
   9253     bcm_field_entry_t entry, 
   9254     bcm_gport_t *data);
   9255 
   9256 /* Get loopback type field qualification from a field entry. */
   9257 extern int bcm_field_qualify_LoopbackType_get(
   9258     int unit, 
   9259     bcm_field_entry_t entry, 
   9260     bcm_field_LoopbackType_t *loopback_type);
   9261 
   9262 /* Get tunnel type field qualification from a field entry. */
   9263 extern int bcm_field_qualify_TunnelType_get(
   9264     int unit, 
   9265     bcm_field_entry_t entry, 
   9266     bcm_field_TunnelType_t *tunnel_type);
   9267 
   9268 /* 
   9269  * Get match criteria for bcmFieldQualifyDstL3Egress
   9270  *                qualifier from the field entry.
   9271  */
   9272 extern int bcm_field_qualify_DstL3Egress_get(
   9273     int unit, 
   9274     bcm_field_entry_t entry, 
   9275     bcm_if_t *if_id);
   9276 
   9277 /* 
   9278  * Get match criteria for bcmFieldQualifyDstMulticastGroup
   9279  *                qualifier from the field entry.
   9280  */
   9281 extern int bcm_field_qualify_DstMulticastGroup_get(
   9282     int unit, 
   9283     bcm_field_entry_t entry, 
   9284     bcm_multicast_t *group);
   9285 
   9286 /* 
   9287  * Get match criteria for bcmFieldQualifySrcMplsGport
   9288  *                qualifier from the field entry.
   9289  */
   9290 extern int bcm_field_qualify_SrcMplsGport_get(
   9291     int unit, 
   9292     bcm_field_entry_t entry, 
   9293     bcm_gport_t *mpls_port_id);
   9294 
   9295 /* 
   9296  * Get match criteria for bcmFieldQualifyDstMplsGport
   9297  *                qualifier from the field entry.
   9298  */
   9299 extern int bcm_field_qualify_DstMplsGport_get(
   9300     int unit, 
   9301     bcm_field_entry_t entry, 
   9302     bcm_gport_t *mpls_port_id);
   9303 
   9304 /* 
   9305  * Get match criteria for bcmFieldQualifySrcMimGport
   9306  *                qualifier from the field entry.
   9307  */
   9308 extern int bcm_field_qualify_SrcMimGport_get(
   9309     int unit, 
   9310     bcm_field_entry_t entry, 
   9311     bcm_gport_t *mim_port_id);
   9312 
   9313 /* 
   9314  * Get match criteria for bcmFieldQualifyDstMimGport
   9315  *                qualifier from the field entry.
   9316  */
   9317 extern int bcm_field_qualify_DstMimGport_get(
   9318     int unit, 
   9319     bcm_field_entry_t entry, 
   9320     bcm_gport_t *mim_port_id);
   9321 
   9322 /* 
   9323  * Get match criteria for bcmFieldQualifySrcWlanGport
   9324  *                qualifier from the field entry.
   9325  */
   9326 extern int bcm_field_qualify_SrcWlanGport_get(
   9327     int unit, 
   9328     bcm_field_entry_t entry, 
   9329     bcm_gport_t *wlan_port_id);
   9330 
   9331 /* 
   9332  * Get match criteria for bcmFieldQualifyDstWlanGport
   9333  *                qualifier from the field entry.
   9334  */
   9335 extern int bcm_field_qualify_DstWlanGport_get(
   9336     int unit, 
   9337     bcm_field_entry_t entry, 
   9338     bcm_gport_t *wlan_port_id);
   9339 
   9340 /* 
   9341  * Get match criteria for bcmFieldQualifySrcVxlanGport
   9342  *                qualifier from the field entry.
   9343  */
   9344 extern int bcm_field_qualify_SrcVxlanGport_get(
   9345     int unit, 
   9346     bcm_field_entry_t entry, 
   9347     bcm_gport_t *vxlan_port_id);
   9348 
   9349 /* 
   9350  * Get match criteria for bcmFieldQualifyDstVxlanGport
   9351  *                qualifier from the field entry.
   9352  */
   9353 extern int bcm_field_qualify_DstVxlanGport_get(
   9354     int unit, 
   9355     bcm_field_entry_t entry, 
   9356     bcm_gport_t *vxlan_port_id);
   9357 
   9358 /* Get loopback field qualification from  a field entry. */
   9359 extern int bcm_field_qualify_Loopback_get(
   9360     int unit, 
   9361     bcm_field_entry_t entry, 
   9362     uint8 *data, 
   9363     uint8 *mask);
   9364 
   9365 /* 
   9366  * Get match criteria for bcmFieldQualifyInPort
   9367  *                qualifier from the field entry.
   9368  */
   9369 extern int bcm_field_qualify_InPort_get(
   9370     int unit, 
   9371     bcm_field_entry_t entry, 
   9372     bcm_port_t *data, 
   9373     bcm_port_t *mask);
   9374 
   9375 /* 
   9376  * Get match criteria for bcmFieldQualifyOutPort
   9377  *                qualifier from the field entry.
   9378  */
   9379 extern int bcm_field_qualify_OutPort_get(
   9380     int unit, 
   9381     bcm_field_entry_t entry, 
   9382     bcm_port_t *data, 
   9383     bcm_port_t *mask);
   9384 
   9385 /* 
   9386  * Get match criteria for bcmFieldQualifyInPorts
   9387  *                qualifier from the field entry.
   9388  */
   9389 extern int bcm_field_qualify_InPorts_get(
   9390     int unit, 
   9391     bcm_field_entry_t entry, 
   9392     bcm_pbmp_t *data, 
   9393     bcm_pbmp_t *mask);
   9394 
   9395 /* 
   9396  * Get match criteria for bcmFieldQualifyOutPorts
   9397  *                qualifier from the field entry.
   9398  */
   9399 extern int bcm_field_qualify_OutPorts_get(
   9400     int unit, 
   9401     bcm_field_entry_t entry, 
   9402     bcm_pbmp_t *data, 
   9403     bcm_pbmp_t *mask);
   9404 
   9405 /* 
   9406  * Get match criteria for bcmFieldQualifyDrop
   9407  *                qualifier from the field entry.
   9408  */
   9409 extern int bcm_field_qualify_Drop_get(
   9410     int unit, 
   9411     bcm_field_entry_t entry, 
   9412     uint8 *data, 
   9413     uint8 *mask);
   9414 
   9415 /* 
   9416  * Get match criteria for bcmFieldQualifySrcPort
   9417  *                qualifier from the field entry.
   9418  */
   9419 extern int bcm_field_qualify_SrcPort_get(
   9420     int unit, 
   9421     bcm_field_entry_t entry, 
   9422     bcm_module_t *data_modid, 
   9423     bcm_module_t *mask_modid, 
   9424     bcm_port_t *data_port, 
   9425     bcm_port_t *mask_port);
   9426 
   9427 /* 
   9428  * Get match criteria for bcmFieldQualifySrcTrunk
   9429  *                qualifier from the field entry.
   9430  */
   9431 extern int bcm_field_qualify_SrcTrunk_get(
   9432     int unit, 
   9433     bcm_field_entry_t entry, 
   9434     bcm_trunk_t *data, 
   9435     bcm_trunk_t *mask);
   9436 
   9437 /* 
   9438  * Get match criteria for bcmFieldQualifySrcTrunkMemberGport
   9439  *                qualifier from the field entry.
   9440  */
   9441 extern int bcm_field_qualify_SrcTrunkMemberGport_get(
   9442     int unit, 
   9443     bcm_field_entry_t entry, 
   9444     bcm_gport_t *data);
   9445 
   9446 /* 
   9447  * Get match criteria for bcmFieldQualifySrcTMPort
   9448  *                qualifier from the field entry.
   9449  */
   9450 extern int bcm_field_qualify_SrcTMPort_get(
   9451     int unit, 
   9452     bcm_field_entry_t entry, 
   9453     bcm_port_t *data_port, 
   9454     bcm_port_t *mask_port);
   9455 
   9456 /* 
   9457  * Get match criteria for bcmFieldQualifyDstPort
   9458  *                qualifier from the field entry.
   9459  */
   9460 extern int bcm_field_qualify_DstPort_get(
   9461     int unit, 
   9462     bcm_field_entry_t entry, 
   9463     bcm_module_t *data_modid, 
   9464     bcm_module_t *mask_modid, 
   9465     bcm_port_t *data_port, 
   9466     bcm_port_t *mask_port);
   9467 
   9468 /* 
   9469  * Get match criteria for bcmFieldQualifyDstTrunk
   9470  *                qualifier from the field entry.
   9471  */
   9472 extern int bcm_field_qualify_DstTrunk_get(
   9473     int unit, 
   9474     bcm_field_entry_t entry, 
   9475     bcm_trunk_t *data, 
   9476     bcm_trunk_t *mask);
   9477 
   9478 /* 
   9479  * Get match criteria for bcmFieldQualifyInnerL4SrcPort
   9480  *                qualifier from the field entry.
   9481  */
   9482 extern int bcm_field_qualify_InnerL4SrcPort_get(
   9483     int unit, 
   9484     bcm_field_entry_t entry, 
   9485     bcm_l4_port_t *data, 
   9486     bcm_l4_port_t *mask);
   9487 
   9488 /* 
   9489  * Get match criteria for bcmFieldQualifyInnerL4DstPort
   9490  *                qualifier from the field entry.
   9491  */
   9492 extern int bcm_field_qualify_InnerL4DstPort_get(
   9493     int unit, 
   9494     bcm_field_entry_t entry, 
   9495     bcm_l4_port_t *data, 
   9496     bcm_l4_port_t *mask);
   9497 
   9498 /* 
   9499  * Get match criteria for bcmFieldQualifyL4SrcPort
   9500  *                qualifier from the field entry.
   9501  */
   9502 extern int bcm_field_qualify_L4SrcPort_get(
   9503     int unit, 
   9504     bcm_field_entry_t entry, 
   9505     bcm_l4_port_t *data, 
   9506     bcm_l4_port_t *mask);
   9507 
   9508 /* 
   9509  * Get match criteria for bcmFieldQualifyL4DstPort
   9510  *                qualifier from the field entry.
   9511  */
   9512 extern int bcm_field_qualify_L4DstPort_get(
   9513     int unit, 
   9514     bcm_field_entry_t entry, 
   9515     bcm_l4_port_t *data, 
   9516     bcm_l4_port_t *mask);
   9517 
   9518 /* 
   9519  * Get match criteria for bcmFieldQualifyOuterVlan
   9520  *                qualifier from the field entry.
   9521  */
   9522 extern int bcm_field_qualify_OuterVlan_get(
   9523     int unit, 
   9524     bcm_field_entry_t entry, 
   9525     bcm_vlan_t *data, 
   9526     bcm_vlan_t *mask);
   9527 
   9528 /* 
   9529  *  Get match criteria for bcmFieldQualifyOuterVlanId
   9530  *                  qualifier from the field entry.
   9531  */
   9532 extern int bcm_field_qualify_OuterVlanId_get(
   9533     int unit, 
   9534     bcm_field_entry_t entry, 
   9535     bcm_vlan_t *data, 
   9536     bcm_vlan_t *mask);
   9537 
   9538 /* 
   9539  *  Get match criteria for bcmFieldQualifyOuterVlanPri
   9540  *                  qualifier from the field entry.
   9541  */
   9542 extern int bcm_field_qualify_OuterVlanPri_get(
   9543     int unit, 
   9544     bcm_field_entry_t entry, 
   9545     uint8 *data, 
   9546     uint8 *mask);
   9547 
   9548 /* 
   9549  *  Get match criteria for bcmFieldQualifyOuterVlanCfi
   9550  *                  qualifier from the field entry.
   9551  */
   9552 extern int bcm_field_qualify_OuterVlanCfi_get(
   9553     int unit, 
   9554     bcm_field_entry_t entry, 
   9555     uint8 *data, 
   9556     uint8 *mask);
   9557 
   9558 /* 
   9559  *  Get match criteria for bcmFieldQualifyOuterVlanPriCfi
   9560  *                  qualifier from the field entry.
   9561  */
   9562 extern int bcm_field_qualify_OuterVlanPriCfi_get(
   9563     int unit, 
   9564     bcm_field_entry_t entry, 
   9565     uint8 *data, 
   9566     uint8 *mask);
   9567 
   9568 /* 
   9569  * Get match criteria for bcmFieldQualifyInnerVlan
   9570  *                qualifier from the field entry.
   9571  */
   9572 extern int bcm_field_qualify_InnerVlan_get(
   9573     int unit, 
   9574     bcm_field_entry_t entry, 
   9575     bcm_vlan_t *data, 
   9576     bcm_vlan_t *mask);
   9577 
   9578 /* 
   9579  *  Get match criteria for bcmFieldQualifyInnerVlanId
   9580  *                  qualifier from the field entry.
   9581  */
   9582 extern int bcm_field_qualify_InnerVlanId_get(
   9583     int unit, 
   9584     bcm_field_entry_t entry, 
   9585     bcm_vlan_t *data, 
   9586     bcm_vlan_t *mask);
   9587 
   9588 /* 
   9589  *  Get match criteria for bcmFieldQualifyInnerVlanPri
   9590  *                  qualifier from the field entry.
   9591  */
   9592 extern int bcm_field_qualify_InnerVlanPri_get(
   9593     int unit, 
   9594     bcm_field_entry_t entry, 
   9595     uint8 *data, 
   9596     uint8 *mask);
   9597 
   9598 /* 
   9599  *  Get match criteria for bcmFieldQualifyInnerVlanCfi_get
   9600  *                  qualifier from the field entry.
   9601  */
   9602 extern int bcm_field_qualify_InnerVlanCfi_get(
   9603     int unit, 
   9604     bcm_field_entry_t entry, 
   9605     uint8 *data, 
   9606     uint8 *mask);
   9607 
   9608 /* 
   9609  * Get match criteria for bcmFieldQualifyEtherType
   9610  *                qualifier from the field entry.
   9611  */
   9612 extern int bcm_field_qualify_EtherType_get(
   9613     int unit, 
   9614     bcm_field_entry_t entry, 
   9615     uint16 *data, 
   9616     uint16 *mask);
   9617 
   9618 /* 
   9619  * Get match criteria for bcmFieldQualifyIpProtocol
   9620  *                qualifier from the field entry.
   9621  */
   9622 extern int bcm_field_qualify_IpProtocol_get(
   9623     int unit, 
   9624     bcm_field_entry_t entry, 
   9625     uint8 *data, 
   9626     uint8 *mask);
   9627 
   9628 /* 
   9629  * Get match criteria for bcmFieldQualifyIpInfo
   9630  *                qualifier from the field entry.
   9631  */
   9632 extern int bcm_field_qualify_IpInfo_get(
   9633     int unit, 
   9634     bcm_field_entry_t entry, 
   9635     uint32 *data, 
   9636     uint32 *mask);
   9637 
   9638 /* 
   9639  * Get match criteria for bcmFieldQualifyPacketRes
   9640  *                qualifier from the field entry.
   9641  */
   9642 extern int bcm_field_qualify_PacketRes_get(
   9643     int unit, 
   9644     bcm_field_entry_t entry, 
   9645     uint32 *data, 
   9646     uint32 *mask);
   9647 
   9648 /* 
   9649  * Get match criteria for bcmFieldQualifySrcIp
   9650  *                qualifier from the field entry.
   9651  */
   9652 extern int bcm_field_qualify_SrcIp_get(
   9653     int unit, 
   9654     bcm_field_entry_t entry, 
   9655     bcm_ip_t *data, 
   9656     bcm_ip_t *mask);
   9657 
   9658 /* 
   9659  * Get match criteria for bcmFieldQualifyDstIp
   9660  *                qualifier from the field entry.
   9661  */
   9662 extern int bcm_field_qualify_DstIp_get(
   9663     int unit, 
   9664     bcm_field_entry_t entry, 
   9665     bcm_ip_t *data, 
   9666     bcm_ip_t *mask);
   9667 
   9668 /* 
   9669  * Get match criteria for bcmFieldQualifyTos
   9670  *                qualifier from the field entry.
   9671  */
   9672 extern int bcm_field_qualify_Tos_get(
   9673     int unit, 
   9674     bcm_field_entry_t entry, 
   9675     uint8 *data, 
   9676     uint8 *mask);
   9677 
   9678 /* 
   9679  * Get match criteria for bcmFieldQualifyDSCP
   9680  *                qualifier from the field entry.
   9681  */
   9682 extern int bcm_field_qualify_DSCP_get(
   9683     int unit, 
   9684     bcm_field_entry_t entry, 
   9685     uint8 *data, 
   9686     uint8 *mask);
   9687 
   9688 /* 
   9689  * Get match criteria for bcmFieldQualifyIpFlags
   9690  *                qualifier from the field entry.
   9691  */
   9692 extern int bcm_field_qualify_IpFlags_get(
   9693     int unit, 
   9694     bcm_field_entry_t entry, 
   9695     uint8 *data, 
   9696     uint8 *mask);
   9697 
   9698 /* 
   9699  * Get match criteria for bcmFieldQualifyTcpControl
   9700  *                qualifier from the field entry.
   9701  */
   9702 extern int bcm_field_qualify_TcpControl_get(
   9703     int unit, 
   9704     bcm_field_entry_t entry, 
   9705     uint8 *data, 
   9706     uint8 *mask);
   9707 
   9708 /* 
   9709  * Get match criteria for bcmFieldQualifyTcpSequenceZero
   9710  *                qualifier from the field entry.
   9711  */
   9712 extern int bcm_field_qualify_TcpSequenceZero_get(
   9713     int unit, 
   9714     bcm_field_entry_t entry, 
   9715     uint32 *flag);
   9716 
   9717 /* 
   9718  * Get match criteria for bcmFieldQualifyTcpHeaderSize
   9719  *                qualifier from the field entry.
   9720  */
   9721 extern int bcm_field_qualify_TcpHeaderSize_get(
   9722     int unit, 
   9723     bcm_field_entry_t entry, 
   9724     uint8 *data, 
   9725     uint8 *mask);
   9726 
   9727 /* 
   9728  * Get match criteria for bcmFieldQualifyTtl
   9729  *                qualifier from the field entry.
   9730  */
   9731 extern int bcm_field_qualify_Ttl_get(
   9732     int unit, 
   9733     bcm_field_entry_t entry, 
   9734     uint8 *data, 
   9735     uint8 *mask);
   9736 
   9737 /* 
   9738  * Get match criteria for bcmFieldQualifyRangeCheck
   9739  *                qualifier from the field entry.
   9740  */
   9741 extern int bcm_field_qualify_RangeCheck_get(
   9742     int unit, 
   9743     bcm_field_entry_t entry, 
   9744     int max_count, 
   9745     bcm_field_range_t *range, 
   9746     int *invert, 
   9747     int *count);
   9748 
   9749 /* 
   9750  * Get match criteria for bcmFieldQualifySrcIp6
   9751  *                qualifier from the field entry.
   9752  */
   9753 extern int bcm_field_qualify_SrcIp6_get(
   9754     int unit, 
   9755     bcm_field_entry_t entry, 
   9756     bcm_ip6_t *data, 
   9757     bcm_ip6_t *mask);
   9758 
   9759 /* 
   9760  * Get match criteria for bcmFieldQualifyDstIp6
   9761  *                qualifier from the field entry.
   9762  */
   9763 extern int bcm_field_qualify_DstIp6_get(
   9764     int unit, 
   9765     bcm_field_entry_t entry, 
   9766     bcm_ip6_t *data, 
   9767     bcm_ip6_t *mask);
   9768 
   9769 /* 
   9770  * Get match criteria for bcmFieldQualifySrcIp6High
   9771  *                qualifier from the field entry.
   9772  */
   9773 extern int bcm_field_qualify_SrcIp6High_get(
   9774     int unit, 
   9775     bcm_field_entry_t entry, 
   9776     bcm_ip6_t *data, 
   9777     bcm_ip6_t *mask);
   9778 
   9779 /* 
   9780  * Get match criteria for bcmFieldQualifyDstIp6High
   9781  *                qualifier from the field entry.
   9782  */
   9783 extern int bcm_field_qualify_DstIp6High_get(
   9784     int unit, 
   9785     bcm_field_entry_t entry, 
   9786     bcm_ip6_t *data, 
   9787     bcm_ip6_t *mask);
   9788 
   9789 /* 
   9790  * Get match criteria for bcmFieldQualifyDstIp6Low
   9791  *                qualifier from the field entry.
   9792  */
   9793 extern int bcm_field_qualify_DstIp6Low_get(
   9794     int unit, 
   9795     bcm_field_entry_t entry, 
   9796     bcm_ip6_t *data, 
   9797     bcm_ip6_t *mask);
   9798 
   9799 /* 
   9800  * Get match criteria for bcmFieldQualifySrcIp6Low
   9801  *                qualifier from the field entry.
   9802  */
   9803 extern int bcm_field_qualify_SrcIp6Low_get(
   9804     int unit, 
   9805     bcm_field_entry_t entry, 
   9806     bcm_ip6_t *data, 
   9807     bcm_ip6_t *mask);
   9808 
   9809 /* 
   9810  * Get match criteria for bcmFieldQualifyIp6NextHeader
   9811  *                qualifier from the field entry.
   9812  */
   9813 extern int bcm_field_qualify_Ip6NextHeader_get(
   9814     int unit, 
   9815     bcm_field_entry_t entry, 
   9816     uint8 *data, 
   9817     uint8 *mask);
   9818 
   9819 /* 
   9820  * Get match criteria for bcmFieldQualifyIp6TrafficClass
   9821  *                qualifier from the field entry.
   9822  */
   9823 extern int bcm_field_qualify_Ip6TrafficClass_get(
   9824     int unit, 
   9825     bcm_field_entry_t entry, 
   9826     uint8 *data, 
   9827     uint8 *mask);
   9828 
   9829 /* 
   9830  * Get match criteria for bcmFieldQualifyInnerIp6FlowLabel
   9831  *                qualifier from the field entry.
   9832  */
   9833 extern int bcm_field_qualify_InnerIp6FlowLabel_get(
   9834     int unit, 
   9835     bcm_field_entry_t entry, 
   9836     uint32 *data, 
   9837     uint32 *mask);
   9838 
   9839 /* 
   9840  * Get match criteria for bcmFieldQualifyIp6FlowLabel
   9841  *                qualifier from the field entry.
   9842  */
   9843 extern int bcm_field_qualify_Ip6FlowLabel_get(
   9844     int unit, 
   9845     bcm_field_entry_t entry, 
   9846     uint32 *data, 
   9847     uint32 *mask);
   9848 
   9849 /* 
   9850  * Get match criteria for bcmFieldQualifyIp6HopLimit
   9851  *                qualifier from the field entry.
   9852  */
   9853 extern int bcm_field_qualify_Ip6HopLimit_get(
   9854     int unit, 
   9855     bcm_field_entry_t entry, 
   9856     uint8 *data, 
   9857     uint8 *mask);
   9858 
   9859 /* 
   9860  * Get match criteria for bcmFieldQualifySrcMac
   9861  *                qualifier from the field entry.
   9862  */
   9863 extern int bcm_field_qualify_SrcMac_get(
   9864     int unit, 
   9865     bcm_field_entry_t entry, 
   9866     bcm_mac_t *data, 
   9867     bcm_mac_t *mask);
   9868 
   9869 /* 
   9870  * Get match criteria for bcmFieldQualifyDstMac
   9871  *                qualifier from the field entry.
   9872  */
   9873 extern int bcm_field_qualify_DstMac_get(
   9874     int unit, 
   9875     bcm_field_entry_t entry, 
   9876     bcm_mac_t *data, 
   9877     bcm_mac_t *mask);
   9878 
   9879 /* 
   9880  * Set match criteria for bcmFieldQualifyForwardHdrSrcMac
   9881  *                qualifier from the field entry.
   9882  */
   9883 extern int bcm_field_qualify_ForwardHdrSrcMac(
   9884     int unit, 
   9885     bcm_field_entry_t entry, 
   9886     bcm_mac_t data, 
   9887     bcm_mac_t mask);
   9888 
   9889 /* 
   9890  * Get match criteria for bcmFieldQualifyForwardHdrSrcMac
   9891  *                qualifier from the field entry.
   9892  */
   9893 extern int bcm_field_qualify_ForwardHdrSrcMac_get(
   9894     int unit, 
   9895     bcm_field_entry_t entry, 
   9896     bcm_mac_t *data, 
   9897     bcm_mac_t *mask);
   9898 
   9899 /* 
   9900  * Set match criteria for bcmFieldQualifyForwardHdrDstMac
   9901  *                qualifier from the field entry.
   9902  */
   9903 extern int bcm_field_qualify_ForwardHdrDstMac(
   9904     int unit, 
   9905     bcm_field_entry_t entry, 
   9906     bcm_mac_t data, 
   9907     bcm_mac_t mask);
   9908 
   9909 /* 
   9910  * Get match criteria for bcmFieldQualifyForwardHdrDstMac
   9911  *                qualifier from the field entry.
   9912  */
   9913 extern int bcm_field_qualify_ForwardHdrDstMac_get(
   9914     int unit, 
   9915     bcm_field_entry_t entry, 
   9916     bcm_mac_t *data, 
   9917     bcm_mac_t *mask);
   9918 
   9919 /* 
   9920  *  Set match criteria for bcmFieldQualifyForwardHdrVlanId
   9921  *                  qualifier in the field entry.
   9922  */
   9923 extern int bcm_field_qualify_ForwardHdrVlanId(
   9924     int unit, 
   9925     bcm_field_entry_t entry, 
   9926     bcm_vlan_t data, 
   9927     bcm_vlan_t mask);
   9928 
   9929 /* 
   9930  * Get match criteria for bcmFieldQualifyForwardHdrVlanId
   9931  *                qualifier from the field entry.
   9932  */
   9933 extern int bcm_field_qualify_ForwardHdrVlanId_get(
   9934     int unit, 
   9935     bcm_field_entry_t entry, 
   9936     bcm_vlan_t *data, 
   9937     bcm_vlan_t *mask);
   9938 
   9939 /* 
   9940  * Get match criteria for bcmFieldQualifyInnerIpType
   9941  *                qualifier from the field entry.
   9942  */
   9943 extern int bcm_field_qualify_InnerIpType_get(
   9944     int unit, 
   9945     bcm_field_entry_t entry, 
   9946     bcm_field_IpType_t *type);
   9947 
   9948 /* 
   9949  * Get match criteria for bcmFieldQualifyForwardingType
   9950  *                qualifier from the field entry.
   9951  */
   9952 extern int bcm_field_qualify_ForwardingType_get(
   9953     int unit, 
   9954     bcm_field_entry_t entry, 
   9955     bcm_field_ForwardingType_t *type);
   9956 
   9957 /* 
   9958  * Get match criteria for bcmFieldQualifyAppType
   9959  *                qualifier from the field entry.
   9960  */
   9961 extern int bcm_field_qualify_AppType_get(
   9962     int unit, 
   9963     bcm_field_entry_t entry, 
   9964     bcm_field_AppType_t *type);
   9965 
   9966 /* 
   9967  * Get match criteria for bcmFieldQualifyIpType
   9968  *                qualifier from the field entry.
   9969  */
   9970 extern int bcm_field_qualify_IpType_get(
   9971     int unit, 
   9972     bcm_field_entry_t entry, 
   9973     bcm_field_IpType_t *type);
   9974 
   9975 /* 
   9976  * Get match criteria for bcmFieldQualifyL2Format
   9977  *                qualifier from the field entry.
   9978  */
   9979 extern int bcm_field_qualify_L2Format_get(
   9980     int unit, 
   9981     bcm_field_entry_t entry, 
   9982     bcm_field_L2Format_t *type);
   9983 
   9984 /* 
   9985  * Get match criteria for bcmFieldQualifyTranslatedVlanFormat
   9986  *                qualifier from the field entry.
   9987  */
   9988 extern int bcm_field_qualify_TranslatedVlanFormat_get(
   9989     int unit, 
   9990     bcm_field_entry_t entry, 
   9991     uint8 *data, 
   9992     uint8 *mask);
   9993 
   9994 /* 
   9995  * Get match criteria for bcmFieldQualifyVlanFormat
   9996  *                qualifier from the field entry.
   9997  */
   9998 extern int bcm_field_qualify_VlanFormat_get(
   9999     int unit, 
  10000     bcm_field_entry_t entry, 
  10001     uint8 *data, 
  10002     uint8 *mask);
  10003 
  10004 /* 
  10005  * Get match criteria for bcmFieldQualifyMHOpcode
  10006  *                qualifier from the field entry.
  10007  */
  10008 extern int bcm_field_qualify_MHOpcode_get(
  10009     int unit, 
  10010     bcm_field_entry_t entry, 
  10011     uint8 *data, 
  10012     uint8 *mask);
  10013 
  10014 /* bcm_field_qualify_Decap_get */
  10015 extern int bcm_field_qualify_Decap_get(
  10016     int unit, 
  10017     bcm_field_entry_t entry, 
  10018     bcm_field_decap_t *decap);
  10019 
  10020 /* 
  10021  * Get match criteria for bcmFieldQualifyDstHiGig
  10022  *                qualifier from the field entry.
  10023  */
  10024 extern int bcm_field_qualify_DstHiGig_get(
  10025     int unit, 
  10026     bcm_field_entry_t entry, 
  10027     uint8 *data, 
  10028     uint8 *mask);
  10029 
  10030 /* 
  10031  * Get match criteria for bcmFieldQualifyHiGig
  10032  *                qualifier from the field entry.
  10033  */
  10034 extern int bcm_field_qualify_HiGig_get(
  10035     int unit, 
  10036     bcm_field_entry_t entry, 
  10037     uint8 *data, 
  10038     uint8 *mask);
  10039 
  10040 /* 
  10041  * Get match criteria for bcmFieldQualifyHiGigProxy
  10042  *                qualifier from the field entry.
  10043  */
  10044 extern int bcm_field_qualify_HiGigProxy_get(
  10045     int unit, 
  10046     bcm_field_entry_t entry, 
  10047     uint8 *data, 
  10048     uint8 *mask);
  10049 
  10050 /* 
  10051  * Get match criteria for bcmFieldQualifyInterfaceClassPort
  10052  *                qualifier from the field entry.
  10053  */
  10054 extern int bcm_field_qualify_InterfaceClassPort_get(
  10055     int unit, 
  10056     bcm_field_entry_t entry, 
  10057     uint32 *data, 
  10058     uint32 *mask);
  10059 
  10060 /* 
  10061  * Get match criteria for bcmFieldQualifyInterfaceClassL2
  10062  *                qualifier from the field entry.
  10063  */
  10064 extern int bcm_field_qualify_InterfaceClassL2_get(
  10065     int unit, 
  10066     bcm_field_entry_t entry, 
  10067     uint32 *data, 
  10068     uint32 *mask);
  10069 
  10070 /* 
  10071  * Get match criteria for bcmFieldQualifyInterfaceClassL3
  10072  *                qualifier from the field entry.
  10073  */
  10074 extern int bcm_field_qualify_InterfaceClassL3_get(
  10075     int unit, 
  10076     bcm_field_entry_t entry, 
  10077     uint32 *data, 
  10078     uint32 *mask);
  10079 
  10080 /* 
  10081  * Get match criteria for bcmFieldQualifySrcClassL2
  10082  *                qualifier from the field entry.
  10083  */
  10084 extern int bcm_field_qualify_SrcClassL2_get(
  10085     int unit, 
  10086     bcm_field_entry_t entry, 
  10087     uint32 *data, 
  10088     uint32 *mask);
  10089 
  10090 /* 
  10091  * Get match criteria for bcmFieldQualifySrcClassL3
  10092  *                qualifier from the field entry.
  10093  */
  10094 extern int bcm_field_qualify_SrcClassL3_get(
  10095     int unit, 
  10096     bcm_field_entry_t entry, 
  10097     uint32 *data, 
  10098     uint32 *mask);
  10099 
  10100 /* 
  10101  * Get match criteria for bcmFieldQualifySrcClassField
  10102  *                qualifier from the field entry.
  10103  */
  10104 extern int bcm_field_qualify_SrcClassField_get(
  10105     int unit, 
  10106     bcm_field_entry_t entry, 
  10107     uint32 *data, 
  10108     uint32 *mask);
  10109 
  10110 /* 
  10111  * Get match criteria for bcmFieldQualifyDstClassL2
  10112  *                qualifier from the field entry.
  10113  */
  10114 extern int bcm_field_qualify_DstClassL2_get(
  10115     int unit, 
  10116     bcm_field_entry_t entry, 
  10117     uint32 *data, 
  10118     uint32 *mask);
  10119 
  10120 /* 
  10121  * Get match criteria for bcmFieldQualifyDstClassL3
  10122  *                qualifier from the field entry.
  10123  */
  10124 extern int bcm_field_qualify_DstClassL3_get(
  10125     int unit, 
  10126     bcm_field_entry_t entry, 
  10127     uint32 *data, 
  10128     uint32 *mask);
  10129 
  10130 /* 
  10131  * Get match criteria for bcmFieldQualifyDstClassField
  10132  *                qualifier from the field entry.
  10133  */
  10134 extern int bcm_field_qualify_DstClassField_get(
  10135     int unit, 
  10136     bcm_field_entry_t entry, 
  10137     uint32 *data, 
  10138     uint32 *mask);
  10139 
  10140 /* 
  10141  * Get match criteria for bcmFieldQualifyIpProtocolCommon
  10142  *                qualifier from the field entry.
  10143  */
  10144 extern int bcm_field_qualify_IpProtocolCommon_get(
  10145     int unit, 
  10146     bcm_field_entry_t entry, 
  10147     bcm_field_IpProtocolCommon_t *protocol);
  10148 
  10149 /* 
  10150  * Get match criteria for bcmFieldQualifyInnerIpProtocolCommon
  10151  *                qualifier from the field entry.
  10152  */
  10153 extern int bcm_field_qualify_InnerIpProtocolCommon_get(
  10154     int unit, 
  10155     bcm_field_entry_t entry, 
  10156     bcm_field_IpProtocolCommon_t *protocol);
  10157 
  10158 /* 
  10159  * Get match criteria for bcmFieldQualifySnap
  10160  *                qualifier from the field entry.
  10161  */
  10162 extern int bcm_field_qualify_Snap_get(
  10163     int unit, 
  10164     bcm_field_entry_t entry, 
  10165     bcm_field_snap_header_t *data, 
  10166     bcm_field_snap_header_t *mask);
  10167 
  10168 /* 
  10169  * Get match criteria for bcmFieldQualifyLlc
  10170  *                qualifier from the field entry.
  10171  */
  10172 extern int bcm_field_qualify_Llc_get(
  10173     int unit, 
  10174     bcm_field_entry_t entry, 
  10175     bcm_field_llc_header_t *data, 
  10176     bcm_field_llc_header_t *mask);
  10177 
  10178 /* 
  10179  * Get match criteria for bcmFieldQualifyInnerTpid
  10180  *                qualifier from the field entry.
  10181  */
  10182 extern int bcm_field_qualify_InnerTpid_get(
  10183     int unit, 
  10184     bcm_field_entry_t entry, 
  10185     uint16 *tpid);
  10186 
  10187 /* 
  10188  * Get match criteria for bcmFieldQualifyOuterTpid
  10189  *                qualifier from the field entry.
  10190  */
  10191 extern int bcm_field_qualify_OuterTpid_get(
  10192     int unit, 
  10193     bcm_field_entry_t entry, 
  10194     uint16 *tpid);
  10195 
  10196 /* 
  10197  * Get match criteria for bcmFieldQualifyL3Routable
  10198  *                qualifier from the field entry.
  10199  */
  10200 extern int bcm_field_qualify_L3Routable_get(
  10201     int unit, 
  10202     bcm_field_entry_t entry, 
  10203     uint8 *data, 
  10204     uint8 *mask);
  10205 
  10206 /* 
  10207  * Get match criteria for bcmFieldQualifyIpFrag
  10208  *                qualifier from the field entry.
  10209  */
  10210 extern int bcm_field_qualify_IpFrag_get(
  10211     int unit, 
  10212     bcm_field_entry_t entry, 
  10213     bcm_field_IpFrag_t *frag_info);
  10214 
  10215 /* 
  10216  * Get match criteria for bcmFieldQualifyVrf
  10217  *                qualifier from the field entry.
  10218  */
  10219 extern int bcm_field_qualify_Vrf_get(
  10220     int unit, 
  10221     bcm_field_entry_t entry, 
  10222     uint32 *data, 
  10223     uint32 *mask);
  10224 
  10225 /* 
  10226  * Get match criteria for bcmFieldQualifyL3Ingress
  10227  *                qualifier from the field entry.
  10228  */
  10229 extern int bcm_field_qualify_L3Ingress_get(
  10230     int unit, 
  10231     bcm_field_entry_t entry, 
  10232     uint32 *data, 
  10233     uint32 *mask);
  10234 
  10235 /* 
  10236  * Get match criteria for bcmFieldQualifyExtensionHeaderType
  10237  *                qualifier from the field entry.
  10238  */
  10239 extern int bcm_field_qualify_ExtensionHeaderType_get(
  10240     int unit, 
  10241     bcm_field_entry_t entry, 
  10242     uint8 *data, 
  10243     uint8 *mask);
  10244 
  10245 /* 
  10246  * Get match criteria for bcmFieldQualifyExtensionHeaderSubCode
  10247  *                qualifier from the field entry.
  10248  */
  10249 extern int bcm_field_qualify_ExtensionHeaderSubCode_get(
  10250     int unit, 
  10251     bcm_field_entry_t entry, 
  10252     uint8 *data, 
  10253     uint8 *mask);
  10254 
  10255 /* 
  10256  * Get match criteria for bcmFieldQualifyExtensionHeader2Type
  10257  *                qualifier from the field entry.
  10258  */
  10259 extern int bcm_field_qualify_ExtensionHeader2Type_get(
  10260     int unit, 
  10261     bcm_field_entry_t entry, 
  10262     uint8 *data, 
  10263     uint8 *mask);
  10264 
  10265 /* 
  10266  * Get match criteria for bcmFieldQualifyL4Ports
  10267  *                qualifier from the field entry.
  10268  */
  10269 extern int bcm_field_qualify_L4Ports_get(
  10270     int unit, 
  10271     bcm_field_entry_t entry, 
  10272     uint8 *data, 
  10273     uint8 *mask);
  10274 
  10275 /* 
  10276  * Get match criteria for bcmFieldQualifyMirrorCopy
  10277  *                qualifier from the field entry.
  10278  */
  10279 extern int bcm_field_qualify_MirrorCopy_get(
  10280     int unit, 
  10281     bcm_field_entry_t entry, 
  10282     uint8 *data, 
  10283     uint8 *mask);
  10284 
  10285 /* 
  10286  * Get match criteria for bcmFieldQualifyTunnelTerminated
  10287  *                qualifier from the field entry.
  10288  */
  10289 extern int bcm_field_qualify_TunnelTerminated_get(
  10290     int unit, 
  10291     bcm_field_entry_t entry, 
  10292     uint8 *data, 
  10293     uint8 *mask);
  10294 
  10295 /* 
  10296  * Get match criteria for bcmFieldQualifyMplsTerminated
  10297  *                qualifier from the field entry.
  10298  */
  10299 extern int bcm_field_qualify_MplsTerminated_get(
  10300     int unit, 
  10301     bcm_field_entry_t entry, 
  10302     uint8 *data, 
  10303     uint8 *mask);
  10304 
  10305 /* 
  10306  * Get match criteria for bcmFieldQualifyInnerSrcIp
  10307  *                qualifier from the field entry.
  10308  */
  10309 extern int bcm_field_qualify_InnerSrcIp_get(
  10310     int unit, 
  10311     bcm_field_entry_t entry, 
  10312     bcm_ip_t *data, 
  10313     bcm_ip_t *mask);
  10314 
  10315 /* 
  10316  * Get match criteria for bcmFieldQualifyInnerDstIp
  10317  *                qualifier from the field entry.
  10318  */
  10319 extern int bcm_field_qualify_InnerDstIp_get(
  10320     int unit, 
  10321     bcm_field_entry_t entry, 
  10322     bcm_ip_t *data, 
  10323     bcm_ip_t *mask);
  10324 
  10325 /* 
  10326  * Get match criteria for bcmFieldQualifyInnerSrcIp6
  10327  *                qualifier from the field entry.
  10328  */
  10329 extern int bcm_field_qualify_InnerSrcIp6_get(
  10330     int unit, 
  10331     bcm_field_entry_t entry, 
  10332     bcm_ip6_t *data, 
  10333     bcm_ip6_t *mask);
  10334 
  10335 /* 
  10336  * Get match criteria for bcmFieldQualifyInnerDstIp6
  10337  *                qualifier from the field entry.
  10338  */
  10339 extern int bcm_field_qualify_InnerDstIp6_get(
  10340     int unit, 
  10341     bcm_field_entry_t entry, 
  10342     bcm_ip6_t *data, 
  10343     bcm_ip6_t *mask);
  10344 
  10345 /* 
  10346  * Get match criteria for bcmFieldQualifyInnerSrcIp6High
  10347  *                qualifier from the field entry.
  10348  */
  10349 extern int bcm_field_qualify_InnerSrcIp6High_get(
  10350     int unit, 
  10351     bcm_field_entry_t entry, 
  10352     bcm_ip6_t *data, 
  10353     bcm_ip6_t *mask);
  10354 
  10355 /* 
  10356  * Get match criteria for bcmFieldQualifyInnerDstIp6High
  10357  *                qualifier from the field entry.
  10358  */
  10359 extern int bcm_field_qualify_InnerDstIp6High_get(
  10360     int unit, 
  10361     bcm_field_entry_t entry, 
  10362     bcm_ip6_t *data, 
  10363     bcm_ip6_t *mask);
  10364 
  10365 /* 
  10366  * Get match criteria for bcmFieldQualifyInnerTtl
  10367  *                qualifier from the field entry.
  10368  */
  10369 extern int bcm_field_qualify_InnerTtl_get(
  10370     int unit, 
  10371     bcm_field_entry_t entry, 
  10372     uint8 *data, 
  10373     uint8 *mask);
  10374 
  10375 /* 
  10376  * Get match criteria for bcmFieldQualifyInnerIp6HopLimit
  10377  *                qualifier from the field entry.
  10378  */
  10379 extern int bcm_field_qualify_InnerIp6HopLimit_get(
  10380     int unit, 
  10381     bcm_field_entry_t entry, 
  10382     uint8 *data, 
  10383     uint8 *mask);
  10384 
  10385 /* 
  10386  * Get match criteria for bcmFieldQualifyInnerTos
  10387  *                qualifier from the field entry.
  10388  */
  10389 extern int bcm_field_qualify_InnerTos_get(
  10390     int unit, 
  10391     bcm_field_entry_t entry, 
  10392     uint8 *data, 
  10393     uint8 *mask);
  10394 
  10395 /* 
  10396  * Get match criteria for bcmFieldQualifyInnerDSCP
  10397  *                qualifier from the field entry.
  10398  */
  10399 extern int bcm_field_qualify_InnerDSCP_get(
  10400     int unit, 
  10401     bcm_field_entry_t entry, 
  10402     uint8 *data, 
  10403     uint8 *mask);
  10404 
  10405 /* 
  10406  * Get match criteria for bcmFieldQualifyInnerIpProtocol
  10407  *                qualifier from the field entry.
  10408  */
  10409 extern int bcm_field_qualify_InnerIpProtocol_get(
  10410     int unit, 
  10411     bcm_field_entry_t entry, 
  10412     uint8 *data, 
  10413     uint8 *mask);
  10414 
  10415 /* 
  10416  * Get match criteria for bcmFieldQualifyInnerIp6NextHeader
  10417  *                qualifier from the field entry.
  10418  */
  10419 extern int bcm_field_qualify_InnerIp6NextHeader_get(
  10420     int unit, 
  10421     bcm_field_entry_t entry, 
  10422     uint8 *data, 
  10423     uint8 *mask);
  10424 
  10425 /* 
  10426  * Get match criteria for bcmFieldQualifyInnerIpFrag
  10427  *                qualifier from the field entry.
  10428  */
  10429 extern int bcm_field_qualify_InnerIpFrag_get(
  10430     int unit, 
  10431     bcm_field_entry_t entry, 
  10432     bcm_field_IpFrag_t *frag_info);
  10433 
  10434 /* 
  10435  * Get match criteria for bcmFieldQualifyDosAttack
  10436  *                qualifier from the field entry.
  10437  */
  10438 extern int bcm_field_qualify_DosAttack_get(
  10439     int unit, 
  10440     bcm_field_entry_t entry, 
  10441     uint8 *data, 
  10442     uint8 *mask);
  10443 
  10444 /* 
  10445  * Get match criteria for bcmFieldQualifyIpmcStarGroupHit
  10446  *                qualifier from the field entry.
  10447  */
  10448 extern int bcm_field_qualify_IpmcStarGroupHit_get(
  10449     int unit, 
  10450     bcm_field_entry_t entry, 
  10451     uint8 *data, 
  10452     uint8 *mask);
  10453 
  10454 /* 
  10455  * Get match criteria for bcmFieldQualifyMyStationHit
  10456  *                qualifier from the field entry.
  10457  */
  10458 extern int bcm_field_qualify_MyStationHit_get(
  10459     int unit, 
  10460     bcm_field_entry_t entry, 
  10461     uint8 *data, 
  10462     uint8 *mask);
  10463 
  10464 /* 
  10465  * Get match criteria for bcmFieldQualifyL2PayloadFirstEightBytes
  10466  *                qualifier from the field entry.
  10467  */
  10468 extern int bcm_field_qualify_L2PayloadFirstEightBytes_get(
  10469     int unit, 
  10470     bcm_field_entry_t entry, 
  10471     uint32 *data1, 
  10472     uint32 *data2, 
  10473     uint32 *mask1, 
  10474     uint32 *mask2);
  10475 
  10476 /* 
  10477  * Get match criteria for bcmFieldQualifyL3DestRouteHit
  10478  *                qualifier from the field entry.
  10479  */
  10480 extern int bcm_field_qualify_L3DestRouteHit_get(
  10481     int unit, 
  10482     bcm_field_entry_t entry, 
  10483     uint8 *data, 
  10484     uint8 *mask);
  10485 
  10486 /* 
  10487  * Get match criteria for bcmFieldQualifyL3DestHostHit
  10488  *                qualifier from the field entry.
  10489  */
  10490 extern int bcm_field_qualify_L3DestHostHit_get(
  10491     int unit, 
  10492     bcm_field_entry_t entry, 
  10493     uint8 *data, 
  10494     uint8 *mask);
  10495 
  10496 /* 
  10497  * Get match criteria for bcmFieldQualifyL3SrcHostHit
  10498  *                qualifier from the field entry.
  10499  */
  10500 extern int bcm_field_qualify_L3SrcHostHit_get(
  10501     int unit, 
  10502     bcm_field_entry_t entry, 
  10503     uint8 *data, 
  10504     uint8 *mask);
  10505 
  10506 /* 
  10507  * Get match criteria for bcmFieldQualifyL2CacheHit
  10508  *                qualifier from the field entry.
  10509  */
  10510 extern int bcm_field_qualify_L2CacheHit_get(
  10511     int unit, 
  10512     bcm_field_entry_t entry, 
  10513     uint8 *data, 
  10514     uint8 *mask);
  10515 
  10516 /* 
  10517  * Get match criteria for bcmFieldQualifyL2StationMove
  10518  *                qualifier from the field entry.
  10519  */
  10520 extern int bcm_field_qualify_L2StationMove_get(
  10521     int unit, 
  10522     bcm_field_entry_t entry, 
  10523     uint8 *data, 
  10524     uint8 *mask);
  10525 
  10526 /* 
  10527  * Get match criteria for bcmFieldQualifyL2DestHit
  10528  *                qualifier from the field entry.
  10529  */
  10530 extern int bcm_field_qualify_L2DestHit_get(
  10531     int unit, 
  10532     bcm_field_entry_t entry, 
  10533     uint8 *data, 
  10534     uint8 *mask);
  10535 
  10536 /* 
  10537  * Get match criteria for bcmFieldQualifyL2SrcStatic
  10538  *                qualifier from the field entry.
  10539  */
  10540 extern int bcm_field_qualify_L2SrcStatic_get(
  10541     int unit, 
  10542     bcm_field_entry_t entry, 
  10543     uint8 *data, 
  10544     uint8 *mask);
  10545 
  10546 /* 
  10547  * Get match criteria for bcmFieldQualifyL2SrcHit
  10548  *                qualifier from the field entry.
  10549  */
  10550 extern int bcm_field_qualify_L2SrcHit_get(
  10551     int unit, 
  10552     bcm_field_entry_t entry, 
  10553     uint8 *data, 
  10554     uint8 *mask);
  10555 
  10556 /* 
  10557  * Get match criteria for bcmFieldQualifyIngressStpState
  10558  *                qualifier from the field entry.
  10559  */
  10560 extern int bcm_field_qualify_IngressStpState_get(
  10561     int unit, 
  10562     bcm_field_entry_t entry, 
  10563     uint8 *data, 
  10564     uint8 *mask);
  10565 
  10566 /* 
  10567  * Get match criteria for bcmFieldQualifyForwardingVlanValid
  10568  *                qualifier from the field entry.
  10569  */
  10570 extern int bcm_field_qualify_ForwardingVlanValid_get(
  10571     int unit, 
  10572     bcm_field_entry_t entry, 
  10573     uint8 *data, 
  10574     uint8 *mask);
  10575 
  10576 /* 
  10577  * Get match criteria for bcmFieldQualifySrcVirtualPortValid
  10578  *                qualifier from the field entry.
  10579  */
  10580 extern int bcm_field_qualify_SrcVirtualPortValid_get(
  10581     int unit, 
  10582     bcm_field_entry_t entry, 
  10583     uint8 *data, 
  10584     uint8 *mask);
  10585 
  10586 /* 
  10587  * Get match criteria for bcmFieldQualifyDstL3EgressNextHops
  10588  *                 qualifier from the field entry.
  10589  */
  10590 extern int bcm_field_qualify_DstL3EgressNextHops_get(
  10591     int unit, 
  10592     bcm_field_entry_t entry, 
  10593     uint32 *data, 
  10594     uint32 *mask);
  10595 
  10596 /* 
  10597  * Get match criteria for bcmFieldQualifyVlanTranslationHit
  10598  *                qualifier from the field entry.
  10599  */
  10600 extern int bcm_field_qualify_VlanTranslationHit_get(
  10601     int unit, 
  10602     bcm_field_entry_t entry, 
  10603     uint8 *data, 
  10604     uint8 *mask);
  10605 
  10606 /* 
  10607  * Get match criteria for bcmFieldQualifyIcmpTypeCode
  10608  *                qualifier from the field entry.
  10609  */
  10610 extern int bcm_field_qualify_IcmpTypeCode_get(
  10611     int unit, 
  10612     bcm_field_entry_t entry, 
  10613     uint16 *data, 
  10614     uint16 *mask);
  10615 
  10616 /* 
  10617  * Get Fibre Channel outer header type field qualification from a field
  10618  * entry.
  10619  */
  10620 extern int bcm_field_qualify_FibreChanOuter_get(
  10621     int unit, 
  10622     bcm_field_entry_t entry, 
  10623     bcm_field_FibreChan_t *fibre_chan_type);
  10624 
  10625 /* 
  10626  * Get Fibre Channel inner header type field qualification from a field
  10627  * entry.
  10628  */
  10629 extern int bcm_field_qualify_FibreChanInner_get(
  10630     int unit, 
  10631     bcm_field_entry_t entry, 
  10632     bcm_field_FibreChan_t *fibre_chan_type);
  10633 
  10634 /* 
  10635  * Get match criteria for bcmFieldQualifyVnTag
  10636  *                qualifier from the field entry.
  10637  */
  10638 extern int bcm_field_qualify_VnTag_get(
  10639     int unit, 
  10640     bcm_field_entry_t entry, 
  10641     uint32 *data, 
  10642     uint32 *mask);
  10643 
  10644 /* 
  10645  * Get match criteria for bcmFieldQualifySubportPktTag
  10646  *                qualifier from the field entry.
  10647  */
  10648 extern int bcm_field_qualify_SubportPktTag_get(
  10649     int unit, 
  10650     bcm_field_entry_t entry, 
  10651     uint16 *data, 
  10652     uint16 *mask);
  10653 
  10654 /* 
  10655  * Get match criteria for bcmFieldQualifyCnTag
  10656  *                qualifier from the field entry.
  10657  */
  10658 extern int bcm_field_qualify_CnTag_get(
  10659     int unit, 
  10660     bcm_field_entry_t entry, 
  10661     uint32 *data, 
  10662     uint32 *mask);
  10663 
  10664 /* 
  10665  * Get match criteria for bcmFieldQualifyFabricQueueTag
  10666  *                qualifier from the field entry.
  10667  */
  10668 extern int bcm_field_qualify_FabricQueueTag_get(
  10669     int unit, 
  10670     bcm_field_entry_t entry, 
  10671     uint32 *data, 
  10672     uint32 *mask);
  10673 
  10674 /* bcm_field_qualify_FlowId */
  10675 extern int bcm_field_qualify_FlowId(
  10676     int unit, 
  10677     bcm_field_entry_t entry, 
  10678     uint16 data, 
  10679     uint16 mask);
  10680 
  10681 /* bcm_field_qualify_InVPort */
  10682 extern int bcm_field_qualify_InVPort(
  10683     int unit, 
  10684     bcm_field_entry_t entry, 
  10685     uint8 data, 
  10686     uint8 mask);
  10687 
  10688 /* bcm_field_qualify_OutVPort */
  10689 extern int bcm_field_qualify_OutVPort(
  10690     int unit, 
  10691     bcm_field_entry_t entry, 
  10692     uint8 data, 
  10693     uint8 mask);
  10694 
  10695 /* bcm_field_qualify_InVPort32 */
  10696 extern int bcm_field_qualify_InVPort32(
  10697     int unit, 
  10698     bcm_field_entry_t entry, 
  10699     uint32 data, 
  10700     uint32 mask);
  10701 
  10702 /* bcm_field_qualify_OutVPort32 */
  10703 extern int bcm_field_qualify_OutVPort32(
  10704     int unit, 
  10705     bcm_field_entry_t entry, 
  10706     uint32 data, 
  10707     uint32 mask);
  10708 
  10709 /* 
  10710  * Get match criteria for bcmFieldQualifyFlowId
  10711  *                qualifier from the field entry.
  10712  */
  10713 extern int bcm_field_qualify_FlowId_get(
  10714     int unit, 
  10715     bcm_field_entry_t entry, 
  10716     uint16 *data, 
  10717     uint16 *mask);
  10718 
  10719 /* 
  10720  * Get match criteria for bcmFieldQualifyInVPort
  10721  *                qualifier from the field entry (8-bits).
  10722  */
  10723 extern int bcm_field_qualify_InVPort_get(
  10724     int unit, 
  10725     bcm_field_entry_t entry, 
  10726     uint8 *data, 
  10727     uint8 *mask);
  10728 
  10729 /* 
  10730  * Get match criteria for bcmFieldQualifyOutVPort
  10731  *                qualifier from the field entry (8-bits).
  10732  */
  10733 extern int bcm_field_qualify_OutVPort_get(
  10734     int unit, 
  10735     bcm_field_entry_t entry, 
  10736     uint8 *data, 
  10737     uint8 *mask);
  10738 
  10739 /* 
  10740  * Get match criteria for bcmFieldQualifyInVPort
  10741  *                qualifier from the field entry (32-bits).
  10742  */
  10743 extern int bcm_field_qualify_InVPort32_get(
  10744     int unit, 
  10745     bcm_field_entry_t entry, 
  10746     uint32 *data, 
  10747     uint32 *mask);
  10748 
  10749 /* 
  10750  * Get match criteria for bcmFieldQualifyOutVPort
  10751  *                qualifier from the field entry (32-bits).
  10752  */
  10753 extern int bcm_field_qualify_OutVPort32_get(
  10754     int unit, 
  10755     bcm_field_entry_t entry, 
  10756     uint32 *data, 
  10757     uint32 *mask);
  10758 
  10759 /* bcm_field_qualify_LlidValue */
  10760 extern int bcm_field_qualify_LlidValue(
  10761     int unit, 
  10762     bcm_field_entry_t entry, 
  10763     uint16 data, 
  10764     uint16 mask);
  10765 
  10766 /* 
  10767  * Get LLID value for bcmFieldQualifyLlidValue
  10768  *                qualifier from the field entry.
  10769  */
  10770 extern int bcm_field_qualify_LlidValue_get(
  10771     int unit, 
  10772     bcm_field_entry_t entry, 
  10773     uint16 *data, 
  10774     uint16 *mask);
  10775 
  10776 /* 
  10777  * Set match criteria for RecoverableDrop
  10778  *                qualifier.
  10779  */
  10780 extern int bcm_field_qualify_RecoverableDrop(
  10781     int unit, 
  10782     bcm_field_entry_t entry, 
  10783     uint8 data, 
  10784     uint8 mask);
  10785 
  10786 /* 
  10787  * Get match criteria for RecoverableDrop
  10788  *                qualifier.
  10789  */
  10790 extern int bcm_field_qualify_RecoverableDrop_get(
  10791     int unit, 
  10792     bcm_field_entry_t entry, 
  10793     uint8 *data, 
  10794     uint8 *mask);
  10795 
  10796 /* 
  10797  * Set match criteria for RepCopy
  10798  *                qualifier.
  10799  */
  10800 extern int bcm_field_qualify_RepCopy(
  10801     int unit, 
  10802     bcm_field_entry_t entry, 
  10803     uint8 data, 
  10804     uint8 mask);
  10805 
  10806 /* 
  10807  * Get match criteria for RepCopy
  10808  *                qualifier.
  10809  */
  10810 extern int bcm_field_qualify_RepCopy_get(
  10811     int unit, 
  10812     bcm_field_entry_t entry, 
  10813     uint8 *data, 
  10814     uint8 *mask);
  10815 
  10816 /* 
  10817  * Set match criteria for IpTunnelHit
  10818  *                qualifier.
  10819  */
  10820 extern int bcm_field_qualify_IpTunnelHit(
  10821     int unit, 
  10822     bcm_field_entry_t entry, 
  10823     uint8 data, 
  10824     uint8 mask);
  10825 
  10826 /* 
  10827  * Get match criteria for IpTunnelHit
  10828  *                qualifier.
  10829  */
  10830 extern int bcm_field_qualify_IpTunnelHit_get(
  10831     int unit, 
  10832     bcm_field_entry_t entry, 
  10833     uint8 *data, 
  10834     uint8 *mask);
  10835 
  10836 /* 
  10837  * Set match criteria for MplsLabel1Hit
  10838  *                qualifier.
  10839  */
  10840 extern int bcm_field_qualify_MplsLabel1Hit(
  10841     int unit, 
  10842     bcm_field_entry_t entry, 
  10843     uint8 data, 
  10844     uint8 mask);
  10845 
  10846 /* 
  10847  * Get match criteria for MplsLabel1Hit
  10848  *                qualifier.
  10849  */
  10850 extern int bcm_field_qualify_MplsLabel1Hit_get(
  10851     int unit, 
  10852     bcm_field_entry_t entry, 
  10853     uint8 *data, 
  10854     uint8 *mask);
  10855 
  10856 /* 
  10857  * Set match criteria for TrillEgressRbridgeHit
  10858  *                qualifier.
  10859  */
  10860 extern int bcm_field_qualify_TrillEgressRbridgeHit(
  10861     int unit, 
  10862     bcm_field_entry_t entry, 
  10863     uint8 data, 
  10864     uint8 mask);
  10865 
  10866 /* 
  10867  * Get match criteria for TrillEgressRbridgeHit
  10868  *                qualifier.
  10869  */
  10870 extern int bcm_field_qualify_TrillEgressRbridgeHit_get(
  10871     int unit, 
  10872     bcm_field_entry_t entry, 
  10873     uint8 *data, 
  10874     uint8 *mask);
  10875 
  10876 /* 
  10877  * Set match criteria for L2GreSrcIpHit
  10878  *                qualifier.
  10879  */
  10880 extern int bcm_field_qualify_L2GreSrcIpHit(
  10881     int unit, 
  10882     bcm_field_entry_t entry, 
  10883     uint8 data, 
  10884     uint8 mask);
  10885 
  10886 /* 
  10887  * Get match criteria for L2GreSrcIpHit
  10888  *                qualifier.
  10889  */
  10890 extern int bcm_field_qualify_L2GreSrcIpHit_get(
  10891     int unit, 
  10892     bcm_field_entry_t entry, 
  10893     uint8 *data, 
  10894     uint8 *mask);
  10895 
  10896 /* 
  10897  * Set match criteria for MimSrcGportHit
  10898  *                qualifier.
  10899  */
  10900 extern int bcm_field_qualify_MimSrcGportHit(
  10901     int unit, 
  10902     bcm_field_entry_t entry, 
  10903     uint8 data, 
  10904     uint8 mask);
  10905 
  10906 /* 
  10907  * Get match criteria for MimSrcGportHit
  10908  *                qualifier.
  10909  */
  10910 extern int bcm_field_qualify_MimSrcGportHit_get(
  10911     int unit, 
  10912     bcm_field_entry_t entry, 
  10913     uint8 *data, 
  10914     uint8 *mask);
  10915 
  10916 /* 
  10917  * Set match criteria for MplsLabel2Hit
  10918  *                qualifier.
  10919  */
  10920 extern int bcm_field_qualify_MplsLabel2Hit(
  10921     int unit, 
  10922     bcm_field_entry_t entry, 
  10923     uint8 data, 
  10924     uint8 mask);
  10925 
  10926 /* 
  10927  * Get match criteria for MplsLabel2Hit
  10928  *                qualifier.
  10929  */
  10930 extern int bcm_field_qualify_MplsLabel2Hit_get(
  10931     int unit, 
  10932     bcm_field_entry_t entry, 
  10933     uint8 *data, 
  10934     uint8 *mask);
  10935 
  10936 /* 
  10937  * Set match criteria for TrillIngressRbridgeHit
  10938  *                qualifier.
  10939  */
  10940 extern int bcm_field_qualify_TrillIngressRbridgeHit(
  10941     int unit, 
  10942     bcm_field_entry_t entry, 
  10943     uint8 data, 
  10944     uint8 mask);
  10945 
  10946 /* 
  10947  * Get match criteria for TrillIngressRbridgeHit
  10948  *                qualifier.
  10949  */
  10950 extern int bcm_field_qualify_TrillIngressRbridgeHit_get(
  10951     int unit, 
  10952     bcm_field_entry_t entry, 
  10953     uint8 *data, 
  10954     uint8 *mask);
  10955 
  10956 /* 
  10957  * Set match criteria for L2GreVfiHit
  10958  *                qualifier.
  10959  */
  10960 extern int bcm_field_qualify_L2GreVfiHit(
  10961     int unit, 
  10962     bcm_field_entry_t entry, 
  10963     uint8 data, 
  10964     uint8 mask);
  10965 
  10966 /* 
  10967  * Get match criteria for L2GreVfiHit
  10968  *                qualifier.
  10969  */
  10970 extern int bcm_field_qualify_L2GreVfiHit_get(
  10971     int unit, 
  10972     bcm_field_entry_t entry, 
  10973     uint8 *data, 
  10974     uint8 *mask);
  10975 
  10976 /* 
  10977  * Set match criteria for MimVfiHit
  10978  *                qualifier.
  10979  */
  10980 extern int bcm_field_qualify_MimVfiHit(
  10981     int unit, 
  10982     bcm_field_entry_t entry, 
  10983     uint8 data, 
  10984     uint8 mask);
  10985 
  10986 /* 
  10987  * Get match criteria for MimVfiHit
  10988  *                qualifier.
  10989  */
  10990 extern int bcm_field_qualify_MimVfiHit_get(
  10991     int unit, 
  10992     bcm_field_entry_t entry, 
  10993     uint8 *data, 
  10994     uint8 *mask);
  10995 
  10996 /* 
  10997  * Set match criteria for GenericAssociatedChannelLabelValid
  10998  *                qualifier.
  10999  */
  11000 extern int bcm_field_qualify_GenericAssociatedChannelLabelValid(
  11001     int unit, 
  11002     bcm_field_entry_t entry, 
  11003     uint8 data, 
  11004     uint8 mask);
  11005 
  11006 /* 
  11007  * Get match criteria for GenericAssociatedChannelLabelValid
  11008  *                qualifier.
  11009  */
  11010 extern int bcm_field_qualify_GenericAssociatedChannelLabelValid_get(
  11011     int unit, 
  11012     bcm_field_entry_t entry, 
  11013     uint8 *data, 
  11014     uint8 *mask);
  11015 
  11016 /* 
  11017  * Set match criteria for RouterAlertLabelValid
  11018  *                qualifier.
  11019  */
  11020 extern int bcm_field_qualify_RouterAlertLabelValid(
  11021     int unit, 
  11022     bcm_field_entry_t entry, 
  11023     uint8 data, 
  11024     uint8 mask);
  11025 
  11026 /* 
  11027  * Get match criteria for RouterAlertLabelValid
  11028  *                qualifier.
  11029  */
  11030 extern int bcm_field_qualify_RouterAlertLabelValid_get(
  11031     int unit, 
  11032     bcm_field_entry_t entry, 
  11033     uint8 *data, 
  11034     uint8 *mask);
  11035 
  11036 /* 
  11037  * Set match criteria for DspIpLocal
  11038  *                qualifier.
  11039  */
  11040 extern int bcm_field_qualify_DstIpLocal(
  11041     int unit, 
  11042     bcm_field_entry_t entry, 
  11043     uint8 data, 
  11044     uint8 mask);
  11045 
  11046 /* 
  11047  * Get match criteria for DspIpLocal
  11048  *                qualifier.
  11049  */
  11050 extern int bcm_field_qualify_DstIpLocal_get(
  11051     int unit, 
  11052     bcm_field_entry_t entry, 
  11053     uint8 *data, 
  11054     uint8 *mask);
  11055 
  11056 /* 
  11057  * Set match criteria for IpAddrsNormalized
  11058  *                qualifier.
  11059  */
  11060 extern int bcm_field_qualify_IpAddrsNormalized(
  11061     int unit, 
  11062     bcm_field_entry_t entry, 
  11063     uint8 data, 
  11064     uint8 mask);
  11065 
  11066 /* 
  11067  * Get match criteria for IpAddrsNormalized
  11068  *                qualifier.
  11069  */
  11070 extern int bcm_field_qualify_IpAddrsNormalized_get(
  11071     int unit, 
  11072     bcm_field_entry_t entry, 
  11073     uint8 *data, 
  11074     uint8 *mask);
  11075 
  11076 /* 
  11077  * Set match criteria for MacAddrsNormalized
  11078  *                qualifier.
  11079  */
  11080 extern int bcm_field_qualify_MacAddrsNormalized(
  11081     int unit, 
  11082     bcm_field_entry_t entry, 
  11083     uint8 data, 
  11084     uint8 mask);
  11085 
  11086 /* 
  11087  * Get match criteria for MacAddrsNormalized
  11088  *                qualifier.
  11089  */
  11090 extern int bcm_field_qualify_MacAddrsNormalized_get(
  11091     int unit, 
  11092     bcm_field_entry_t entry, 
  11093     uint8 *data, 
  11094     uint8 *mask);
  11095 
  11096 /* 
  11097  * Set match criteria for MplsForwardingLabel
  11098  *                qualifier.
  11099  */
  11100 extern int bcm_field_qualify_MplsForwardingLabel(
  11101     int unit, 
  11102     bcm_field_entry_t entry, 
  11103     uint32 data, 
  11104     uint32 mask);
  11105 
  11106 /* 
  11107  * Get match criteria for MplsForwardingLabel
  11108  *                qualifier.
  11109  */
  11110 extern int bcm_field_qualify_MplsForwardingLabel_get(
  11111     int unit, 
  11112     bcm_field_entry_t entry, 
  11113     uint32 *data, 
  11114     uint32 *mask);
  11115 
  11116 /* 
  11117  * Set match criteria for MplsForwardingLabelTtl
  11118  *                qualifier.
  11119  */
  11120 extern int bcm_field_qualify_MplsForwardingLabelTtl(
  11121     int unit, 
  11122     bcm_field_entry_t entry, 
  11123     uint8 data, 
  11124     uint8 mask);
  11125 
  11126 /* 
  11127  * Get match criteria for MplsForwardingLabelTtl
  11128  *                qualifier.
  11129  */
  11130 extern int bcm_field_qualify_MplsForwardingLabelTtl_get(
  11131     int unit, 
  11132     bcm_field_entry_t entry, 
  11133     uint8 *data, 
  11134     uint8 *mask);
  11135 
  11136 /* 
  11137  * Set match criteria for MplsForwardingLabelBos
  11138  *                qualifier.
  11139  */
  11140 extern int bcm_field_qualify_MplsForwardingLabelBos(
  11141     int unit, 
  11142     bcm_field_entry_t entry, 
  11143     uint8 data, 
  11144     uint8 mask);
  11145 
  11146 /* 
  11147  * Get match criteria for MplsForwardingLabelBos
  11148  *                qualifier.
  11149  */
  11150 extern int bcm_field_qualify_MplsForwardingLabelBos_get(
  11151     int unit, 
  11152     bcm_field_entry_t entry, 
  11153     uint8 *data, 
  11154     uint8 *mask);
  11155 
  11156 /* 
  11157  * Set match criteria for MplsForwardingLabelExp
  11158  *                qualifier.
  11159  */
  11160 extern int bcm_field_qualify_MplsForwardingLabelExp(
  11161     int unit, 
  11162     bcm_field_entry_t entry, 
  11163     uint8 data, 
  11164     uint8 mask);
  11165 
  11166 /* 
  11167  * Get match criteria for MplsForwardingLabelExp
  11168  *                qualifier.
  11169  */
  11170 extern int bcm_field_qualify_MplsForwardingLabelExp_get(
  11171     int unit, 
  11172     bcm_field_entry_t entry, 
  11173     uint8 *data, 
  11174     uint8 *mask);
  11175 
  11176 /* 
  11177  * Set match criteria for MplsForwardingLabelId
  11178  *                qualifier.
  11179  */
  11180 extern int bcm_field_qualify_MplsForwardingLabelId(
  11181     int unit, 
  11182     bcm_field_entry_t entry, 
  11183     uint32 data, 
  11184     uint32 mask);
  11185 
  11186 /* 
  11187  * Get match criteria for MplsForwardingLabelId
  11188  *                qualifier.
  11189  */
  11190 extern int bcm_field_qualify_MplsForwardingLabelId_get(
  11191     int unit, 
  11192     bcm_field_entry_t entry, 
  11193     uint32 *data, 
  11194     uint32 *mask);
  11195 
  11196 /* 
  11197  * Set match criteria for MplsControlWord
  11198  *                qualifier.
  11199  */
  11200 extern int bcm_field_qualify_MplsControlWord(
  11201     int unit, 
  11202     bcm_field_entry_t entry, 
  11203     uint32 data, 
  11204     uint32 mask);
  11205 
  11206 /* 
  11207  * Get match criteria for MplsControlWord
  11208  *                qualifier.
  11209  */
  11210 extern int bcm_field_qualify_MplsControlWord_get(
  11211     int unit, 
  11212     bcm_field_entry_t entry, 
  11213     uint32 *data, 
  11214     uint32 *mask);
  11215 
  11216 /* 
  11217  * Set match criteria for Rtag7AHashUpper
  11218  *                qualifier.
  11219  */
  11220 extern int bcm_field_qualify_Rtag7AHashUpper(
  11221     int unit, 
  11222     bcm_field_entry_t entry, 
  11223     uint16 data, 
  11224     uint16 mask);
  11225 
  11226 /* 
  11227  * Get match criteria for Rtag7AHashUpper
  11228  *                qualifier.
  11229  */
  11230 extern int bcm_field_qualify_Rtag7AHashUpper_get(
  11231     int unit, 
  11232     bcm_field_entry_t entry, 
  11233     uint16 *data, 
  11234     uint16 *mask);
  11235 
  11236 /* 
  11237  * Set match criteria for Rtag7AHashLower
  11238  *                qualifier.
  11239  */
  11240 extern int bcm_field_qualify_Rtag7AHashLower(
  11241     int unit, 
  11242     bcm_field_entry_t entry, 
  11243     uint16 data, 
  11244     uint16 mask);
  11245 
  11246 /* 
  11247  * Get match criteria for Rtag7AHashLower
  11248  *                qualifier.
  11249  */
  11250 extern int bcm_field_qualify_Rtag7AHashLower_get(
  11251     int unit, 
  11252     bcm_field_entry_t entry, 
  11253     uint16 *data, 
  11254     uint16 *mask);
  11255 
  11256 /* 
  11257  * Set match criteria for Rtag7BHashUpper
  11258  *                qualifier.
  11259  */
  11260 extern int bcm_field_qualify_Rtag7BHashUpper(
  11261     int unit, 
  11262     bcm_field_entry_t entry, 
  11263     uint16 data, 
  11264     uint16 mask);
  11265 
  11266 /* 
  11267  * Get match criteria for Rtag7BHashUpper
  11268  *                qualifier.
  11269  */
  11270 extern int bcm_field_qualify_Rtag7BHashUpper_get(
  11271     int unit, 
  11272     bcm_field_entry_t entry, 
  11273     uint16 *data, 
  11274     uint16 *mask);
  11275 
  11276 /* 
  11277  * Set match criteria for Rtag7BHashLower
  11278  *                qualifier.
  11279  */
  11280 extern int bcm_field_qualify_Rtag7BHashLower(
  11281     int unit, 
  11282     bcm_field_entry_t entry, 
  11283     uint16 data, 
  11284     uint16 mask);
  11285 
  11286 /* 
  11287  * Get match criteria for Rtag7BHashLower
  11288  *                qualifier.
  11289  */
  11290 extern int bcm_field_qualify_Rtag7BHashLower_get(
  11291     int unit, 
  11292     bcm_field_entry_t entry, 
  11293     uint16 *data, 
  11294     uint16 *mask);
  11295 
  11296 /* 
  11297  * Set match criteria for MplsForwardingLabelAction
  11298  *                qualifier(8 bits).
  11299  */
  11300 extern int bcm_field_qualify_MplsForwardingLabelAction(
  11301     int unit, 
  11302     bcm_field_entry_t entry, 
  11303     uint8 data, 
  11304     uint8 mask);
  11305 
  11306 /* 
  11307  * Get match criteria for MplsForwardingLabelAction
  11308  *                qualifier(8 bits).
  11309  */
  11310 extern int bcm_field_qualify_MplsForwardingLabelAction_get(
  11311     int unit, 
  11312     bcm_field_entry_t entry, 
  11313     uint8 *data, 
  11314     uint8 *mask);
  11315 
  11316 /* 
  11317  * Set match criteria for MplsForwardingLabelAction
  11318  *                qualifier (32 bits).
  11319  */
  11320 extern int bcm_field_qualify_MplsForwardingLabelAction32(
  11321     int unit, 
  11322     bcm_field_entry_t entry, 
  11323     uint32 data, 
  11324     uint32 mask);
  11325 
  11326 /* 
  11327  * Get match criteria for MplsForwardingLabelAction
  11328  *                qualifier (32 bits).
  11329  */
  11330 extern int bcm_field_qualify_MplsForwardingLabelAction32_get(
  11331     int unit, 
  11332     bcm_field_entry_t entry, 
  11333     uint32 *data, 
  11334     uint32 *mask);
  11335 
  11336 /* 
  11337  * Set match criteria for MplsControlWordValid
  11338  *                qualifier.
  11339  */
  11340 extern int bcm_field_qualify_MplsControlWordValid(
  11341     int unit, 
  11342     bcm_field_entry_t entry, 
  11343     uint8 data, 
  11344     uint8 mask);
  11345 
  11346 /* 
  11347  * Get match criteria for MplsControlWordValid
  11348  *                qualifier.
  11349  */
  11350 extern int bcm_field_qualify_MplsControlWordValid_get(
  11351     int unit, 
  11352     bcm_field_entry_t entry, 
  11353     uint8 *data, 
  11354     uint8 *mask);
  11355 
  11356 /* 
  11357  * Set match criteria for EgressClass
  11358  *                qualifier.
  11359  */
  11360 extern int bcm_field_qualify_EgressClass(
  11361     int unit, 
  11362     bcm_field_entry_t entry, 
  11363     uint16 data, 
  11364     uint16 mask);
  11365 
  11366 /* 
  11367  * Get match criteria for EgressClass
  11368  *                qualifier.
  11369  */
  11370 extern int bcm_field_qualify_EgressClass_get(
  11371     int unit, 
  11372     bcm_field_entry_t entry, 
  11373     uint16 *data, 
  11374     uint16 *mask);
  11375 
  11376 /* 
  11377  * Set match criteria for EgressClassL3Interface
  11378  *                qualifier.
  11379  */
  11380 extern int bcm_field_qualify_EgressClassL3Interface(
  11381     int unit, 
  11382     bcm_field_entry_t entry, 
  11383     uint16 data, 
  11384     uint16 mask);
  11385 
  11386 /* 
  11387  * Get match criteria for EgressClassL3Interface
  11388  *                qualifier.
  11389  */
  11390 extern int bcm_field_qualify_EgressClassL3Interface_get(
  11391     int unit, 
  11392     bcm_field_entry_t entry, 
  11393     uint16 *data, 
  11394     uint16 *mask);
  11395 
  11396 /* 
  11397  * Set match criteria for EgressClassTrill
  11398  *                qualifier.
  11399  */
  11400 extern int bcm_field_qualify_EgressClassTrill(
  11401     int unit, 
  11402     bcm_field_entry_t entry, 
  11403     uint16 data, 
  11404     uint16 mask);
  11405 
  11406 /* 
  11407  * Get match criteria for EgressClassTrill
  11408  *                qualifier.
  11409  */
  11410 extern int bcm_field_qualify_EgressClassTrill_get(
  11411     int unit, 
  11412     bcm_field_entry_t entry, 
  11413     uint16 *data, 
  11414     uint16 *mask);
  11415 
  11416 /* 
  11417  * Set match criteria for EgressClassWlan
  11418  *                qualifier.
  11419  */
  11420 extern int bcm_field_qualify_EgressClassWlan(
  11421     int unit, 
  11422     bcm_field_entry_t entry, 
  11423     uint16 data, 
  11424     uint16 mask);
  11425 
  11426 /* 
  11427  * Get match criteria for EgressClassWlan
  11428  *                qualifier.
  11429  */
  11430 extern int bcm_field_qualify_EgressClassWlan_get(
  11431     int unit, 
  11432     bcm_field_entry_t entry, 
  11433     uint16 *data, 
  11434     uint16 *mask);
  11435 
  11436 /* 
  11437  * Set match criteria for EgressClassL2Gre
  11438  *                qualifier.
  11439  */
  11440 extern int bcm_field_qualify_EgressClassL2Gre(
  11441     int unit, 
  11442     bcm_field_entry_t entry, 
  11443     uint16 data, 
  11444     uint16 mask);
  11445 
  11446 /* 
  11447  * Get match criteria for EgressClassL2Gre
  11448  *                qualifier.
  11449  */
  11450 extern int bcm_field_qualify_EgressClassL2Gre_get(
  11451     int unit, 
  11452     bcm_field_entry_t entry, 
  11453     uint16 *data, 
  11454     uint16 *mask);
  11455 
  11456 /* Set match criteria for CpuQueue qualifier. */
  11457 extern int bcm_field_qualify_CpuQueue(
  11458     int unit, 
  11459     bcm_field_entry_t entry, 
  11460     uint8 data, 
  11461     uint8 mask);
  11462 
  11463 /* Get match criteria for CpuQueue qualifier. */
  11464 extern int bcm_field_qualify_CpuQueue_get(
  11465     int unit, 
  11466     bcm_field_entry_t entry, 
  11467     uint8 *data, 
  11468     uint8 *mask);
  11469 
  11470 /* Set match criteria for SrcGport qualifier. */
  11471 extern int bcm_field_qualify_SrcGport(
  11472     int unit, 
  11473     bcm_field_entry_t entry, 
  11474     bcm_gport_t port_id);
  11475 
  11476 /* Get match criteria for SrcGport qualifier. */
  11477 extern int bcm_field_qualify_SrcGport_get(
  11478     int unit, 
  11479     bcm_field_entry_t entry, 
  11480     bcm_gport_t *port_id);
  11481 
  11482 /* 
  11483  * Set match for the header format indicated.  This qualifier is similar
  11484  * to HeaderFormatSet, but this one allows only one matching header
  11485  * format to be specified.
  11486  */
  11487 extern int bcm_field_qualify_HeaderFormat(
  11488     int unit, 
  11489     bcm_field_entry_t entry, 
  11490     bcm_field_header_format_t header_format);
  11491 
  11492 /* Get matching header format. */
  11493 extern int bcm_field_qualify_HeaderFormat_get(
  11494     int unit, 
  11495     bcm_field_entry_t entry, 
  11496     bcm_field_header_format_t *header_format);
  11497 
  11498 /* 
  11499  * Set match for the header format extension indicated.  The profile, out
  11500  * of which header_format_extension must be selected, is set by the
  11501  * previously selected header format.
  11502  */
  11503 extern int bcm_field_qualify_HeaderFormatExtension(
  11504     int unit, 
  11505     bcm_field_entry_t entry, 
  11506     bcm_field_header_format_extension_t header_format_extension);
  11507 
  11508 /* 
  11509  * Get header format extension that is currently set for the indicated
  11510  * entry.
  11511  */
  11512 extern int bcm_field_qualify_HeaderFormatExtension_get(
  11513     int unit, 
  11514     bcm_field_entry_t entry, 
  11515     bcm_field_header_format_extension_t *header_format_extension);
  11516 
  11517 /* 
  11518  * Set match for the header formats included in the format_header_set. 
  11519  * This qualifier is similar to HeaderFormat, but this qualifier allows
  11520  * the caller to specify more than one header format to match.
  11521  */
  11522 extern int bcm_field_qualify_HeaderFormatSet(
  11523     int unit, 
  11524     bcm_field_entry_t entry, 
  11525     bcm_field_header_format_set_t header_format_set);
  11526 
  11527 /* Get matching header format set. */
  11528 extern int bcm_field_qualify_HeaderFormatSet_get(
  11529     int unit, 
  11530     bcm_field_entry_t entry, 
  11531     bcm_field_header_format_set_t *header_format_set);
  11532 
  11533 /* Set match criteria for L2Learn qualifier. */
  11534 extern int bcm_field_qualify_L2Learn(
  11535     int unit, 
  11536     bcm_field_entry_t entry, 
  11537     uint8 data, 
  11538     uint8 mask);
  11539 
  11540 /* Get match criteria for L2Learn qualifier. */
  11541 extern int bcm_field_qualify_L2Learn_get(
  11542     int unit, 
  11543     bcm_field_entry_t entry, 
  11544     uint8 *data, 
  11545     uint8 *mask);
  11546 
  11547 /* Set match criteria for PortOrientation qualifier. */
  11548 extern int bcm_field_qualify_PortOrientation(
  11549     int unit, 
  11550     bcm_field_entry_t entry, 
  11551     uint8 data, 
  11552     uint8 mask);
  11553 
  11554 /* Get match criteria for PortOrientation qualifier. */
  11555 extern int bcm_field_qualify_PortOrientation_get(
  11556     int unit, 
  11557     bcm_field_entry_t entry, 
  11558     uint8 *data, 
  11559     uint8 *mask);
  11560 
  11561 /* To qualify the MACSEC tagged packets */
  11562 extern int bcm_field_qualify_MacSecTagPresent(
  11563     int unit, 
  11564     bcm_field_entry_t entry, 
  11565     uint8 data, 
  11566     uint8 mask);
  11567 
  11568 /* To get the qualified inputs on the MACSEC tagged packets */
  11569 extern int bcm_field_qualify_MacSecTagPresent_get(
  11570     int unit, 
  11571     bcm_field_entry_t entry, 
  11572     uint8 *data, 
  11573     uint8 *mask);
  11574 
  11575 /* To qualify on the SecTag field in MACSEC tagged packets */
  11576 extern int bcm_field_qualify_MacSecTag(
  11577     int unit, 
  11578     bcm_field_entry_t entry, 
  11579     uint8 data, 
  11580     uint8 mask);
  11581 
  11582 /* To get the qualified inputs on SecTag field in MACSEC tagged packets */
  11583 extern int bcm_field_qualify_MacSecTag_get(
  11584     int unit, 
  11585     bcm_field_entry_t entry, 
  11586     uint8 *data, 
  11587     uint8 *mask);
  11588 
  11589 /* 
  11590  * To qualify the hit on Destination MAC addresses range. The range can
  11591  * be configured by API bcm_field_macsec_DstMacRange_set
  11592  */
  11593 extern int bcm_field_qualify_MacSecDstMacRangeHit(
  11594     int unit, 
  11595     bcm_field_entry_t entry, 
  11596     uint8 data, 
  11597     uint8 mask);
  11598 
  11599 /* To get the qualified inputs on the Destination MAC addresses range hit */
  11600 extern int bcm_field_qualify_MacSecDstMacRangeHit_get(
  11601     int unit, 
  11602     bcm_field_entry_t entry, 
  11603     uint8 *data, 
  11604     uint8 *mask);
  11605 
  11606 /* 
  11607  * To configure lower and upper limits to be used by qualifier
  11608  * bcmFieldQualifyMacSecDstMacRangeHit
  11609  */
  11610 extern int bcm_field_macsec_DstMacRange_set(
  11611     int unit, 
  11612     bcm_mac_t lower_limit, 
  11613     bcm_mac_t upper_limit);
  11614 
  11615 /* 
  11616  * To get the configured lower and upper limits to be used by qualifier
  11617  * bcmFieldQualifyMacSecDstMacRangeHit
  11618  */
  11619 extern int bcm_field_macsec_DstMacRange_get(
  11620     int unit, 
  11621     bcm_mac_t *lower_limit, 
  11622     bcm_mac_t *upper_limit);
  11623 
  11624 /* To qualify on packet forwarded through the internal MACSEC port */
  11625 extern int bcm_field_qualify_FromMacSecPort(
  11626     int unit, 
  11627     bcm_field_entry_t entry, 
  11628     uint8 data, 
  11629     uint8 mask);
  11630 
  11631 /* 
  11632  * To get the qualified inputs on packet forwarded through the internal
  11633  * MACSEC port
  11634  */
  11635 extern int bcm_field_qualify_FromMacSecPort_get(
  11636     int unit, 
  11637     bcm_field_entry_t entry, 
  11638     uint8 *data, 
  11639     uint8 *mask);
  11640 
  11641 /* To qualify on the MACSEC packet flow */
  11642 extern int bcm_field_qualify_MacSecFlow(
  11643     int unit, 
  11644     bcm_field_entry_t entry, 
  11645     bcm_field_macsec_flow_t data);
  11646 
  11647 /* To get the qualified inputs on the MACSEC packet flow */
  11648 extern int bcm_field_qualify_MacSecFlow_get(
  11649     int unit, 
  11650     bcm_field_entry_t entry, 
  11651     bcm_field_macsec_flow_t *data);
  11652 
  11653 /* Set match criteria for PortOrientation qualifier. */
  11654 extern int bcm_field_qualify_EcnValue(
  11655     int unit, 
  11656     bcm_field_entry_t entry, 
  11657     uint8 data, 
  11658     uint8 mask);
  11659 
  11660 /* Get match criteria for EcnValue qualifier. */
  11661 extern int bcm_field_qualify_EcnValue_get(
  11662     int unit, 
  11663     bcm_field_entry_t entry, 
  11664     uint8 *data, 
  11665     uint8 *mask);
  11666 
  11667 /* Set match criteria for RxTrapCode qualifier. */
  11668 extern int bcm_field_qualify_RxTrapCode(
  11669     int unit, 
  11670     bcm_field_entry_t entry, 
  11671     bcm_rx_trap_t data);
  11672 
  11673 /* Get match criteria for RxTrapCode qualifier. */
  11674 extern int bcm_field_qualify_RxTrapCode_get(
  11675     int unit, 
  11676     bcm_field_entry_t entry, 
  11677     bcm_rx_trap_t *data);
  11678 
  11679 /* Set match criteria for RxTrapCode qualifier. */
  11680 extern int bcm_field_qualify_RxTrapCode32(
  11681     int unit, 
  11682     bcm_field_entry_t entry, 
  11683     uint32 data, 
  11684     uint32 mask);
  11685 
  11686 /* Get match criteria for RxTrapCode qualifier. */
  11687 extern int bcm_field_qualify_RxTrapCode32_get(
  11688     int unit, 
  11689     bcm_field_entry_t entry, 
  11690     uint32 *data, 
  11691     uint32 *mask);
  11692 
  11693 /* Set match criteria for RxTrapStrength qualifier. */
  11694 extern int bcm_field_qualify_RxTrapStrength(
  11695     int unit, 
  11696     bcm_field_entry_t entry, 
  11697     uint32 data, 
  11698     uint32 mask);
  11699 
  11700 /* Get match criteria for RxTrapStrength qualifier. */
  11701 extern int bcm_field_qualify_RxTrapStrength_get(
  11702     int unit, 
  11703     bcm_field_entry_t entry, 
  11704     uint32 *data, 
  11705     uint32 *mask);
  11706 
  11707 /* Set match criteria for Ptch qualifier. */
  11708 extern int bcm_field_qualify_Ptch(
  11709     int unit, 
  11710     bcm_field_entry_t entry, 
  11711     uint8 data, 
  11712     uint8 mask);
  11713 
  11714 /* Get match criteria for Ptch qualifier. */
  11715 extern int bcm_field_qualify_Ptch_get(
  11716     int unit, 
  11717     bcm_field_entry_t entry, 
  11718     uint8 *data, 
  11719     uint8 *mask);
  11720 
  11721 /* Set match criteria for MplsBos qualifier. */
  11722 extern int bcm_field_qualify_MplsBos(
  11723     int unit, 
  11724     bcm_field_entry_t entry, 
  11725     uint8 data, 
  11726     uint8 mask);
  11727 
  11728 /* Get match criteria for MplsBos qualifier. */
  11729 extern int bcm_field_qualify_MplsBos_get(
  11730     int unit, 
  11731     bcm_field_entry_t entry, 
  11732     uint8 *data, 
  11733     uint8 *mask);
  11734 
  11735 /* Set match criteria for RxTrapData qualifier. */
  11736 extern int bcm_field_qualify_RxTrapData(
  11737     int unit, 
  11738     bcm_field_entry_t entry, 
  11739     uint32 data, 
  11740     uint32 mask);
  11741 
  11742 /* Get match criteria for RxTrapData qualifier. */
  11743 extern int bcm_field_qualify_RxTrapData_get(
  11744     int unit, 
  11745     bcm_field_entry_t entry, 
  11746     uint32 *data, 
  11747     uint32 *mask);
  11748 
  11749 /* Set match criteria for PolicerIntPrio qualifier. */
  11750 extern int bcm_field_qualify_PolicerIntPrio(
  11751     int unit, 
  11752     bcm_field_entry_t entry, 
  11753     uint8 data, 
  11754     uint8 mask);
  11755 
  11756 /* Get match criteria for PolicerIntPrio qualifier. */
  11757 extern int bcm_field_qualify_PolicerIntPrio_get(
  11758     int unit, 
  11759     bcm_field_entry_t entry, 
  11760     uint8 *data, 
  11761     uint8 *mask);
  11762 
  11763 /* Set match criteria for PacketTerminatedBytes qualifier. */
  11764 extern int bcm_field_qualify_PacketTerminatedBytes(
  11765     int unit, 
  11766     bcm_field_entry_t entry, 
  11767     uint32 data, 
  11768     uint32 mask);
  11769 
  11770 /* Get match criteria for PacketTerminatedBytes qualifier. */
  11771 extern int bcm_field_qualify_PacketTerminatedBytes_get(
  11772     int unit, 
  11773     bcm_field_entry_t entry, 
  11774     uint32 *data, 
  11775     uint32 *mask);
  11776 
  11777 /* Set match criteria for BypassFilter qualifier (8-bits). */
  11778 extern int bcm_field_qualify_BypassFilter(
  11779     int unit, 
  11780     bcm_field_entry_t entry, 
  11781     uint8 data, 
  11782     uint8 mask);
  11783 
  11784 /* Get match criteria for BypassFilter qualifier (8-bits). */
  11785 extern int bcm_field_qualify_BypassFilter_get(
  11786     int unit, 
  11787     bcm_field_entry_t entry, 
  11788     uint8 *data, 
  11789     uint8 *mask);
  11790 
  11791 /* Set match criteria for BypassFilter qualifier (32-bits). */
  11792 extern int bcm_field_qualify_BypassFilter32(
  11793     int unit, 
  11794     bcm_field_entry_t entry, 
  11795     uint32 data, 
  11796     uint32 mask);
  11797 
  11798 /* Get match criteria for BypassFilter qualifier (32-bits). */
  11799 extern int bcm_field_qualify_BypassFilter32_get(
  11800     int unit, 
  11801     bcm_field_entry_t entry, 
  11802     uint32 *data, 
  11803     uint32 *mask);
  11804 
  11805 /* Set match criteria for ReplicantAny qualifier. */
  11806 extern int bcm_field_qualify_ReplicantAny(
  11807     int unit, 
  11808     bcm_field_entry_t entry, 
  11809     uint8 data, 
  11810     uint8 mask);
  11811 
  11812 /* Get match criteria for ReplicantAny qualifier. */
  11813 extern int bcm_field_qualify_ReplicantAny_get(
  11814     int unit, 
  11815     bcm_field_entry_t entry, 
  11816     uint8 *data, 
  11817     uint8 *mask);
  11818 
  11819 /* Set match criteria for ReplicantFirst qualifier. */
  11820 extern int bcm_field_qualify_ReplicantFirst(
  11821     int unit, 
  11822     bcm_field_entry_t entry, 
  11823     uint8 data, 
  11824     uint8 mask);
  11825 
  11826 /* Get match criteria for ReplicantFirst qualifier. */
  11827 extern int bcm_field_qualify_ReplicantFirst_get(
  11828     int unit, 
  11829     bcm_field_entry_t entry, 
  11830     uint8 *data, 
  11831     uint8 *mask);
  11832 
  11833 /* Set match criteria for TrillEgressRbridge qualifier. */
  11834 extern int bcm_field_qualify_TrillEgressRbridge(
  11835     int unit, 
  11836     bcm_field_entry_t entry, 
  11837     uint32 data, 
  11838     uint32 mask);
  11839 
  11840 /* Get match criteria for TrillEgressRbridge qualifier. */
  11841 extern int bcm_field_qualify_TrillEgressRbridge_get(
  11842     int unit, 
  11843     bcm_field_entry_t entry, 
  11844     uint32 *data, 
  11845     uint32 *mask);
  11846 
  11847 /* Set match criteria for ISid qualifier. */
  11848 extern int bcm_field_qualify_ISid(
  11849     int unit, 
  11850     bcm_field_entry_t entry, 
  11851     uint32 data, 
  11852     uint32 mask);
  11853 
  11854 /* Get match criteria for ISid qualifier. */
  11855 extern int bcm_field_qualify_ISid_get(
  11856     int unit, 
  11857     bcm_field_entry_t entry, 
  11858     uint32 *data, 
  11859     uint32 *mask);
  11860 
  11861 /* Set match criteria for InterfaceClassProcessingPort qualifier. */
  11862 extern int bcm_field_qualify_InterfaceClassProcessingPort(
  11863     int unit, 
  11864     bcm_field_entry_t entry, 
  11865     uint64 data, 
  11866     uint64 mask);
  11867 
  11868 /* Get match criteria for InterfaceClassProcessingPort qualifier. */
  11869 extern int bcm_field_qualify_InterfaceClassProcessingPort_get(
  11870     int unit, 
  11871     bcm_field_entry_t entry, 
  11872     uint64 *data, 
  11873     uint64 *mask);
  11874 
  11875 /* Set match criteria for DstRpfGport qualifier. */
  11876 extern int bcm_field_qualify_DstRpfGport(
  11877     int unit, 
  11878     bcm_field_entry_t entry, 
  11879     bcm_gport_t data);
  11880 
  11881 /* Get match criteria for DstRpfGport qualifier. */
  11882 extern int bcm_field_qualify_DstRpfGport_get(
  11883     int unit, 
  11884     bcm_field_entry_t entry, 
  11885     bcm_gport_t *data);
  11886 
  11887 /* Set match criteria for TrunkHashResult qualifier. */
  11888 extern int bcm_field_qualify_TrunkHashResult(
  11889     int unit, 
  11890     bcm_field_entry_t entry, 
  11891     uint32 data, 
  11892     uint32 mask);
  11893 
  11894 /* Get match criteria for TrunkHashResult qualifier. */
  11895 extern int bcm_field_qualify_TrunkHashResult_get(
  11896     int unit, 
  11897     bcm_field_entry_t entry, 
  11898     uint32 *data, 
  11899     uint32 *mask);
  11900 
  11901 /* Set match criteria for Dhcp qualifier. */
  11902 extern int bcm_field_qualify_Dhcp(
  11903     int unit, 
  11904     bcm_field_entry_t entry, 
  11905     uint8 data, 
  11906     uint8 mask);
  11907 
  11908 /* Get match criteria for Dhcp qualifier. */
  11909 extern int bcm_field_qualify_Dhcp_get(
  11910     int unit, 
  11911     bcm_field_entry_t entry, 
  11912     uint8 *data, 
  11913     uint8 *mask);
  11914 
  11915 /* Set match criteria for SnoopCopy qualifier. */
  11916 extern int bcm_field_qualify_SnoopCopy(
  11917     int unit, 
  11918     bcm_field_entry_t entry, 
  11919     uint8 data, 
  11920     uint8 mask);
  11921 
  11922 /* Get match criteria for SnoopCopy qualifier. */
  11923 extern int bcm_field_qualify_SnoopCopy_get(
  11924     int unit, 
  11925     bcm_field_entry_t entry, 
  11926     uint8 *data, 
  11927     uint8 *mask);
  11928 
  11929 /* Set match criteria for ForwardCopy qualifier. */
  11930 extern int bcm_field_qualify_ForwardCopy(
  11931     int unit, 
  11932     bcm_field_entry_t entry, 
  11933     uint8 data, 
  11934     uint8 mask);
  11935 
  11936 /* Get match criteria for ForwardCopy qualifier. */
  11937 extern int bcm_field_qualify_ForwardCopy_get(
  11938     int unit, 
  11939     bcm_field_entry_t entry, 
  11940     uint8 *data, 
  11941     uint8 *mask);
  11942 
  11943 /* Set match criteria for InterfaceClassVPort qualifier. */
  11944 extern int bcm_field_qualify_InterfaceClassVPort(
  11945     int unit, 
  11946     bcm_field_entry_t entry, 
  11947     uint32 data, 
  11948     uint32 mask);
  11949 
  11950 /* Get match criteria for InterfaceClassVPort qualifier. */
  11951 extern int bcm_field_qualify_InterfaceClassVPort_get(
  11952     int unit, 
  11953     bcm_field_entry_t entry, 
  11954     uint32 *data, 
  11955     uint32 *mask);
  11956 
  11957 /* Set match criteria for L4PortRangeCheck qualifier. */
  11958 extern int bcm_field_qualify_L4PortRangeCheck(
  11959     int unit, 
  11960     bcm_field_entry_t entry, 
  11961     bcm_field_range_t range, 
  11962     int invert);
  11963 
  11964 /* Get match criteria for L4PortRangeCheck qualifier. */
  11965 extern int bcm_field_qualify_L4PortRangeCheck_get(
  11966     int unit, 
  11967     bcm_field_entry_t entry, 
  11968     int max_count, 
  11969     bcm_field_range_t *range, 
  11970     int *invert, 
  11971     int *count);
  11972 
  11973 /* Set match criteria for VPortRangeCheck qualifier. */
  11974 extern int bcm_field_qualify_VPortRangeCheck(
  11975     int unit, 
  11976     bcm_field_entry_t entry, 
  11977     bcm_field_range_t range, 
  11978     int invert);
  11979 
  11980 /* 
  11981  * Get match criteria for VPortRangeCheck
  11982  *                qualifier from the field entry.
  11983  */
  11984 extern int bcm_field_qualify_VPortRangeCheck_get(
  11985     int unit, 
  11986     bcm_field_entry_t entry, 
  11987     int max_count, 
  11988     bcm_field_range_t *range, 
  11989     int *invert, 
  11990     int *count);
  11991 
  11992 /* Set match criteria for PacketLengthRangeCheck qualifier. */
  11993 extern int bcm_field_qualify_PacketLengthRangeCheck(
  11994     int unit, 
  11995     bcm_field_entry_t entry, 
  11996     bcm_field_range_t range, 
  11997     int invert);
  11998 
  11999 /* 
  12000  * Get match criteria for PacketLengthRangeCheck
  12001  *                qualifier from the field entry.
  12002  */
  12003 extern int bcm_field_qualify_PacketLengthRangeCheck_get(
  12004     int unit, 
  12005     bcm_field_entry_t entry, 
  12006     int max_count, 
  12007     bcm_field_range_t *range, 
  12008     int *invert, 
  12009     int *count);
  12010 
  12011 /* Set match criteria for TunnelTerminatedHit qualifier. */
  12012 extern int bcm_field_qualify_TunnelTerminatedHit(
  12013     int unit, 
  12014     bcm_field_entry_t entry, 
  12015     uint8 data, 
  12016     uint8 mask);
  12017 
  12018 /* Get match criteria for TunnelTerminatedHit qualifier. */
  12019 extern int bcm_field_qualify_TunnelTerminatedHit_get(
  12020     int unit, 
  12021     bcm_field_entry_t entry, 
  12022     uint8 *data, 
  12023     uint8 *mask);
  12024 
  12025 /* Set match criteria for MplsTerminatedHit qualifier. */
  12026 extern int bcm_field_qualify_MplsTerminatedHit(
  12027     int unit, 
  12028     bcm_field_entry_t entry, 
  12029     uint8 data, 
  12030     uint8 mask);
  12031 
  12032 /* Get match criteria for MplsTerminatedHit qualifier. */
  12033 extern int bcm_field_qualify_MplsTerminatedHit_get(
  12034     int unit, 
  12035     bcm_field_entry_t entry, 
  12036     uint8 *data, 
  12037     uint8 *mask);
  12038 
  12039 /* Set match criteria for L3SrcRouteHit qualifier. */
  12040 extern int bcm_field_qualify_L3SrcRouteHit(
  12041     int unit, 
  12042     bcm_field_entry_t entry, 
  12043     uint8 data, 
  12044     uint8 mask);
  12045 
  12046 /* Get match criteria for L3SrcRouteHit qualifier. */
  12047 extern int bcm_field_qualify_L3SrcRouteHit_get(
  12048     int unit, 
  12049     bcm_field_entry_t entry, 
  12050     uint8 *data, 
  12051     uint8 *mask);
  12052 
  12053 /* Set match criteria for IpmcHit qualifier. */
  12054 extern int bcm_field_qualify_IpmcHit(
  12055     int unit, 
  12056     bcm_field_entry_t entry, 
  12057     uint8 data, 
  12058     uint8 mask);
  12059 
  12060 /* Get match criteria for IpmcHit qualifier. */
  12061 extern int bcm_field_qualify_IpmcHit_get(
  12062     int unit, 
  12063     bcm_field_entry_t entry, 
  12064     uint8 *data, 
  12065     uint8 *mask);
  12066 
  12067 /* Set match criteria for VlanTranslationValue qualifier. */
  12068 extern int bcm_field_qualify_VlanTranslationValue(
  12069     int unit, 
  12070     bcm_field_entry_t entry, 
  12071     uint64 data, 
  12072     uint64 mask);
  12073 
  12074 /* Get match criteria for VlanTranslationValue qualifier. */
  12075 extern int bcm_field_qualify_VlanTranslationValue_get(
  12076     int unit, 
  12077     bcm_field_entry_t entry, 
  12078     uint64 *data, 
  12079     uint64 *mask);
  12080 
  12081 /* Set match criteria for TunnelTerminatedValue qualifier. */
  12082 extern int bcm_field_qualify_TunnelTerminatedValue(
  12083     int unit, 
  12084     bcm_field_entry_t entry, 
  12085     uint64 data, 
  12086     uint64 mask);
  12087 
  12088 /* Get match criteria for TunnelTerminatedValue qualifier. */
  12089 extern int bcm_field_qualify_TunnelTerminatedValue_get(
  12090     int unit, 
  12091     bcm_field_entry_t entry, 
  12092     uint64 *data, 
  12093     uint64 *mask);
  12094 
  12095 /* Set match criteria for MplsTerminatedValue qualifier. */
  12096 extern int bcm_field_qualify_MplsTerminatedValue(
  12097     int unit, 
  12098     bcm_field_entry_t entry, 
  12099     uint64 data, 
  12100     uint64 mask);
  12101 
  12102 /* Get match criteria for MplsTerminatedValue qualifier. */
  12103 extern int bcm_field_qualify_MplsTerminatedValue_get(
  12104     int unit, 
  12105     bcm_field_entry_t entry, 
  12106     uint64 *data, 
  12107     uint64 *mask);
  12108 
  12109 /* Set match criteria for IpTunnelValue qualifier. */
  12110 extern int bcm_field_qualify_IpTunnelValue(
  12111     int unit, 
  12112     bcm_field_entry_t entry, 
  12113     uint64 data, 
  12114     uint64 mask);
  12115 
  12116 /* Get match criteria for IpTunnelValue qualifier. */
  12117 extern int bcm_field_qualify_IpTunnelValue_get(
  12118     int unit, 
  12119     bcm_field_entry_t entry, 
  12120     uint64 *data, 
  12121     uint64 *mask);
  12122 
  12123 /* Set match criteria for L2SrcValue qualifier. */
  12124 extern int bcm_field_qualify_L2SrcValue(
  12125     int unit, 
  12126     bcm_field_entry_t entry, 
  12127     uint64 data, 
  12128     uint64 mask);
  12129 
  12130 /* Get match criteria for L2SrcValue qualifier. */
  12131 extern int bcm_field_qualify_L2SrcValue_get(
  12132     int unit, 
  12133     bcm_field_entry_t entry, 
  12134     uint64 *data, 
  12135     uint64 *mask);
  12136 
  12137 /* Set match criteria for L2DestValue qualifier. */
  12138 extern int bcm_field_qualify_L2DestValue(
  12139     int unit, 
  12140     bcm_field_entry_t entry, 
  12141     uint64 data, 
  12142     uint64 mask);
  12143 
  12144 /* Get match criteria for L2DestValue qualifier. */
  12145 extern int bcm_field_qualify_L2DestValue_get(
  12146     int unit, 
  12147     bcm_field_entry_t entry, 
  12148     uint64 *data, 
  12149     uint64 *mask);
  12150 
  12151 /* Set match criteria for L3SrcRouteValue qualifier. */
  12152 extern int bcm_field_qualify_L3SrcRouteValue(
  12153     int unit, 
  12154     bcm_field_entry_t entry, 
  12155     uint64 data, 
  12156     uint64 mask);
  12157 
  12158 /* Get match criteria for L3SrcRouteValue qualifier. */
  12159 extern int bcm_field_qualify_L3SrcRouteValue_get(
  12160     int unit, 
  12161     bcm_field_entry_t entry, 
  12162     uint64 *data, 
  12163     uint64 *mask);
  12164 
  12165 /* Set match criteria for L3DestRouteValue qualifier. */
  12166 extern int bcm_field_qualify_L3DestRouteValue(
  12167     int unit, 
  12168     bcm_field_entry_t entry, 
  12169     uint64 data, 
  12170     uint64 mask);
  12171 
  12172 /* Get match criteria for L3DestRouteValue qualifier. */
  12173 extern int bcm_field_qualify_L3DestRouteValue_get(
  12174     int unit, 
  12175     bcm_field_entry_t entry, 
  12176     uint64 *data, 
  12177     uint64 *mask);
  12178 
  12179 /* Set match criteria for IpmcValue qualifier. */
  12180 extern int bcm_field_qualify_IpmcValue(
  12181     int unit, 
  12182     bcm_field_entry_t entry, 
  12183     uint64 data, 
  12184     uint64 mask);
  12185 
  12186 /* Get match criteria for IpmcValue qualifier. */
  12187 extern int bcm_field_qualify_IpmcValue_get(
  12188     int unit, 
  12189     bcm_field_entry_t entry, 
  12190     uint64 *data, 
  12191     uint64 *mask);
  12192 
  12193 /* Set match criteria for CascadedKeyValue qualifier. */
  12194 extern int bcm_field_qualify_CascadedKeyValue(
  12195     int unit, 
  12196     bcm_field_entry_t entry, 
  12197     uint32 data, 
  12198     uint32 mask);
  12199 
  12200 /* Get match criteria for CascadedKeyValue qualifier. */
  12201 extern int bcm_field_qualify_CascadedKeyValue_get(
  12202     int unit, 
  12203     bcm_field_entry_t entry, 
  12204     uint32 *data, 
  12205     uint32 *mask);
  12206 
  12207 /* Set match criteria for IsEqualValue qualifier. */
  12208 extern int bcm_field_qualify_IsEqualValue(
  12209     int unit, 
  12210     bcm_field_entry_t entry, 
  12211     uint8 data, 
  12212     uint8 mask);
  12213 
  12214 /* Get match criteria for IsEqualValue qualifier. */
  12215 extern int bcm_field_qualify_IsEqualValue_get(
  12216     int unit, 
  12217     bcm_field_entry_t entry, 
  12218     uint8 *data, 
  12219     uint8 *mask);
  12220 
  12221 /* Set match criteria for LearnSrcMac qualifier. */
  12222 extern int bcm_field_qualify_LearnSrcMac(
  12223     int unit, 
  12224     bcm_field_entry_t entry, 
  12225     bcm_mac_t data, 
  12226     bcm_mac_t mask);
  12227 
  12228 /* Get match criteria for LearnSrcMac qualifier. */
  12229 extern int bcm_field_qualify_LearnSrcMac_get(
  12230     int unit, 
  12231     bcm_field_entry_t entry, 
  12232     bcm_mac_t *data, 
  12233     bcm_mac_t *mask);
  12234 
  12235 /* Set match criteria for LearnVlan qualifier. */
  12236 extern int bcm_field_qualify_LearnVlan(
  12237     int unit, 
  12238     bcm_field_entry_t entry, 
  12239     bcm_vlan_t data, 
  12240     bcm_vlan_t mask);
  12241 
  12242 /* Get match criteria for LearnVlan qualifier. */
  12243 extern int bcm_field_qualify_LearnVlan_get(
  12244     int unit, 
  12245     bcm_field_entry_t entry, 
  12246     bcm_vlan_t *data, 
  12247     bcm_vlan_t *mask);
  12248 
  12249 /* Set match criteria for LearnSrcPort qualifier. */
  12250 extern int bcm_field_qualify_LearnSrcPort(
  12251     int unit, 
  12252     bcm_field_entry_t entry, 
  12253     bcm_gport_t data);
  12254 
  12255 /* Get match criteria for LearnSrcPort qualifier. */
  12256 extern int bcm_field_qualify_LearnSrcPort_get(
  12257     int unit, 
  12258     bcm_field_entry_t entry, 
  12259     bcm_gport_t *data);
  12260 
  12261 /* Set match criteria for LearnInVPort qualifier. */
  12262 extern int bcm_field_qualify_LearnInVPort(
  12263     int unit, 
  12264     bcm_field_entry_t entry, 
  12265     uint32 data, 
  12266     uint32 mask);
  12267 
  12268 /* Get match criteria for LearnInVPort qualifier. */
  12269 extern int bcm_field_qualify_LearnInVPort_get(
  12270     int unit, 
  12271     bcm_field_entry_t entry, 
  12272     uint32 *data, 
  12273     uint32 *mask);
  12274 
  12275 /* Set enable criteria for LearnExtension qualifier. */
  12276 extern int bcm_field_qualify_LearnExtension(
  12277     int unit, 
  12278     bcm_field_entry_t entry, 
  12279     uint8 data);
  12280 
  12281 /* Get enable status of LearnExtension qualifier. */
  12282 extern int bcm_field_qualify_LearnExtension_get(
  12283     int unit, 
  12284     bcm_field_entry_t entry, 
  12285     uint8 *data);
  12286 
  12287 /* Set match criteria for Stacking Route qualifier. */
  12288 extern int bcm_field_qualify_StackingRoute(
  12289     int unit, 
  12290     bcm_field_entry_t entry, 
  12291     uint32 data, 
  12292     uint32 mask);
  12293 
  12294 /* Get match criteria for Stacking Route qualifier. */
  12295 extern int bcm_field_qualify_StackingRoute_get(
  12296     int unit, 
  12297     bcm_field_entry_t entry, 
  12298     uint32 *data, 
  12299     uint32 *mask);
  12300 
  12301 /* Set match criteria for DSP Extension qualifier. */
  12302 extern int bcm_field_qualify_DstSysPortExt(
  12303     int unit, 
  12304     bcm_field_entry_t entry, 
  12305     uint16 data, 
  12306     uint16 mask);
  12307 
  12308 /* Get match criteria for DSP Extension qualifier. */
  12309 extern int bcm_field_qualify_DstSysPortExt_get(
  12310     int unit, 
  12311     bcm_field_entry_t entry, 
  12312     uint16 *data, 
  12313     uint16 *mask);
  12314 
  12315 /* Set match criteria for PacketSize qualifier. */
  12316 extern int bcm_field_qualify_PacketSize(
  12317     int unit, 
  12318     bcm_field_entry_t entry, 
  12319     uint32 data, 
  12320     uint32 mask);
  12321 
  12322 /* Get match criteria for PacketSize qualifier. */
  12323 extern int bcm_field_qualify_PacketSize_get(
  12324     int unit, 
  12325     bcm_field_entry_t entry, 
  12326     uint32 *data, 
  12327     uint32 *mask);
  12328 
  12329 /* Set match criteria for InnerSrcMac qualifier. */
  12330 extern int bcm_field_qualify_InnerSrcMac(
  12331     int unit, 
  12332     bcm_field_entry_t entry, 
  12333     bcm_mac_t data, 
  12334     bcm_mac_t mask);
  12335 
  12336 /* Get match criteria for InnerSrcMac qualifier. */
  12337 extern int bcm_field_qualify_InnerSrcMac_get(
  12338     int unit, 
  12339     bcm_field_entry_t entry, 
  12340     bcm_mac_t *data, 
  12341     bcm_mac_t *mask);
  12342 
  12343 /* Set match criteria for InnerDstMac qualifier. */
  12344 extern int bcm_field_qualify_InnerDstMac(
  12345     int unit, 
  12346     bcm_field_entry_t entry, 
  12347     bcm_mac_t data, 
  12348     bcm_mac_t mask);
  12349 
  12350 /* Get match criteria for InnerDstMac qualifier. */
  12351 extern int bcm_field_qualify_InnerDstMac_get(
  12352     int unit, 
  12353     bcm_field_entry_t entry, 
  12354     bcm_mac_t *data, 
  12355     bcm_mac_t *mask);
  12356 
  12357 /* Set match criteria for InnerEtherType qualifier. */
  12358 extern int bcm_field_qualify_InnerEtherType(
  12359     int unit, 
  12360     bcm_field_entry_t entry, 
  12361     uint16 data, 
  12362     uint16 mask);
  12363 
  12364 /* Get match criteria for InnerEtherType qualifier. */
  12365 extern int bcm_field_qualify_InnerEtherType_get(
  12366     int unit, 
  12367     bcm_field_entry_t entry, 
  12368     uint16 *data, 
  12369     uint16 *mask);
  12370 
  12371 /* Set match criteria for MplsLabel1 qualifier. */
  12372 extern int bcm_field_qualify_MplsLabel1(
  12373     int unit, 
  12374     bcm_field_entry_t entry, 
  12375     uint32 data, 
  12376     uint32 mask);
  12377 
  12378 /* Get match criteria for MplsLabel1 qualifier. */
  12379 extern int bcm_field_qualify_MplsLabel1_get(
  12380     int unit, 
  12381     bcm_field_entry_t entry, 
  12382     uint32 *data, 
  12383     uint32 *mask);
  12384 
  12385 /* Set match criteria for MplsLabel1Ttl qualifier. */
  12386 extern int bcm_field_qualify_MplsLabel1Ttl(
  12387     int unit, 
  12388     bcm_field_entry_t entry, 
  12389     uint8 data, 
  12390     uint8 mask);
  12391 
  12392 /* Get match criteria for MplsLabel1Ttl qualifier. */
  12393 extern int bcm_field_qualify_MplsLabel1Ttl_get(
  12394     int unit, 
  12395     bcm_field_entry_t entry, 
  12396     uint8 *data, 
  12397     uint8 *mask);
  12398 
  12399 /* Set match criteria for MplsLabel1Bos qualifier. */
  12400 extern int bcm_field_qualify_MplsLabel1Bos(
  12401     int unit, 
  12402     bcm_field_entry_t entry, 
  12403     uint8 data, 
  12404     uint8 mask);
  12405 
  12406 /* Get match criteria for MplsLabel1Bos qualifier. */
  12407 extern int bcm_field_qualify_MplsLabel1Bos_get(
  12408     int unit, 
  12409     bcm_field_entry_t entry, 
  12410     uint8 *data, 
  12411     uint8 *mask);
  12412 
  12413 /* Set match criteria for MplsLabel1Exp qualifier. */
  12414 extern int bcm_field_qualify_MplsLabel1Exp(
  12415     int unit, 
  12416     bcm_field_entry_t entry, 
  12417     uint8 data, 
  12418     uint8 mask);
  12419 
  12420 /* Get match criteria for MplsLabel1Exp qualifier. */
  12421 extern int bcm_field_qualify_MplsLabel1Exp_get(
  12422     int unit, 
  12423     bcm_field_entry_t entry, 
  12424     uint8 *data, 
  12425     uint8 *mask);
  12426 
  12427 /* Set match criteria for MplsLabel1Id qualifier. */
  12428 extern int bcm_field_qualify_MplsLabel1Id(
  12429     int unit, 
  12430     bcm_field_entry_t entry, 
  12431     uint32 data, 
  12432     uint32 mask);
  12433 
  12434 /* Get match criteria for MplsLabel1Id qualifier. */
  12435 extern int bcm_field_qualify_MplsLabel1Id_get(
  12436     int unit, 
  12437     bcm_field_entry_t entry, 
  12438     uint32 *data, 
  12439     uint32 *mask);
  12440 
  12441 /* Set match criteria for MplsLabel2 qualifier. */
  12442 extern int bcm_field_qualify_MplsLabel2(
  12443     int unit, 
  12444     bcm_field_entry_t entry, 
  12445     uint32 data, 
  12446     uint32 mask);
  12447 
  12448 /* Get match criteria for MplsLabel2 qualifier. */
  12449 extern int bcm_field_qualify_MplsLabel2_get(
  12450     int unit, 
  12451     bcm_field_entry_t entry, 
  12452     uint32 *data, 
  12453     uint32 *mask);
  12454 
  12455 /* Set match criteria for MplsLabel2Ttl qualifier. */
  12456 extern int bcm_field_qualify_MplsLabel2Ttl(
  12457     int unit, 
  12458     bcm_field_entry_t entry, 
  12459     uint8 data, 
  12460     uint8 mask);
  12461 
  12462 /* Get match criteria for MplsLabel2Ttl qualifier. */
  12463 extern int bcm_field_qualify_MplsLabel2Ttl_get(
  12464     int unit, 
  12465     bcm_field_entry_t entry, 
  12466     uint8 *data, 
  12467     uint8 *mask);
  12468 
  12469 /* Set match criteria for MplsLabel2Bos qualifier. */
  12470 extern int bcm_field_qualify_MplsLabel2Bos(
  12471     int unit, 
  12472     bcm_field_entry_t entry, 
  12473     uint8 data, 
  12474     uint8 mask);
  12475 
  12476 /* Get match criteria for MplsLabel2Bos qualifier. */
  12477 extern int bcm_field_qualify_MplsLabel2Bos_get(
  12478     int unit, 
  12479     bcm_field_entry_t entry, 
  12480     uint8 *data, 
  12481     uint8 *mask);
  12482 
  12483 /* Set match criteria for MplsLabel2Exp qualifier. */
  12484 extern int bcm_field_qualify_MplsLabel2Exp(
  12485     int unit, 
  12486     bcm_field_entry_t entry, 
  12487     uint8 data, 
  12488     uint8 mask);
  12489 
  12490 /* Get match criteria for MplsLabel2Exp qualifier. */
  12491 extern int bcm_field_qualify_MplsLabel2Exp_get(
  12492     int unit, 
  12493     bcm_field_entry_t entry, 
  12494     uint8 *data, 
  12495     uint8 *mask);
  12496 
  12497 /* Set match criteria for MplsLabel2Id qualifier. */
  12498 extern int bcm_field_qualify_MplsLabel2Id(
  12499     int unit, 
  12500     bcm_field_entry_t entry, 
  12501     uint32 data, 
  12502     uint32 mask);
  12503 
  12504 /* Get match criteria for MplsLabel2Id qualifier. */
  12505 extern int bcm_field_qualify_MplsLabel2Id_get(
  12506     int unit, 
  12507     bcm_field_entry_t entry, 
  12508     uint32 *data, 
  12509     uint32 *mask);
  12510 
  12511 /* Set match criteria for MplsLabel3 qualifier. */
  12512 extern int bcm_field_qualify_MplsLabel3(
  12513     int unit, 
  12514     bcm_field_entry_t entry, 
  12515     uint32 data, 
  12516     uint32 mask);
  12517 
  12518 /* Get match criteria for MplsLabel3 qualifier. */
  12519 extern int bcm_field_qualify_MplsLabel3_get(
  12520     int unit, 
  12521     bcm_field_entry_t entry, 
  12522     uint32 *data, 
  12523     uint32 *mask);
  12524 
  12525 /* Set match criteria for MplsLabel3Ttl qualifier. */
  12526 extern int bcm_field_qualify_MplsLabel3Ttl(
  12527     int unit, 
  12528     bcm_field_entry_t entry, 
  12529     uint8 data, 
  12530     uint8 mask);
  12531 
  12532 /* Get match criteria for MplsLabel3Ttl qualifier. */
  12533 extern int bcm_field_qualify_MplsLabel3Ttl_get(
  12534     int unit, 
  12535     bcm_field_entry_t entry, 
  12536     uint8 *data, 
  12537     uint8 *mask);
  12538 
  12539 /* Set match criteria for MplsLabel3Bos qualifier. */
  12540 extern int bcm_field_qualify_MplsLabel3Bos(
  12541     int unit, 
  12542     bcm_field_entry_t entry, 
  12543     uint8 data, 
  12544     uint8 mask);
  12545 
  12546 /* Get match criteria for MplsLabel3Bos qualifier. */
  12547 extern int bcm_field_qualify_MplsLabel3Bos_get(
  12548     int unit, 
  12549     bcm_field_entry_t entry, 
  12550     uint8 *data, 
  12551     uint8 *mask);
  12552 
  12553 /* Set match criteria for MplsLabel3Exp qualifier. */
  12554 extern int bcm_field_qualify_MplsLabel3Exp(
  12555     int unit, 
  12556     bcm_field_entry_t entry, 
  12557     uint8 data, 
  12558     uint8 mask);
  12559 
  12560 /* Get match criteria for MplsLabel3Exp qualifier. */
  12561 extern int bcm_field_qualify_MplsLabel3Exp_get(
  12562     int unit, 
  12563     bcm_field_entry_t entry, 
  12564     uint8 *data, 
  12565     uint8 *mask);
  12566 
  12567 /* Set match criteria for MplsLabel3Id qualifier. */
  12568 extern int bcm_field_qualify_MplsLabel3Id(
  12569     int unit, 
  12570     bcm_field_entry_t entry, 
  12571     uint32 data, 
  12572     uint32 mask);
  12573 
  12574 /* Get match criteria for MplsLabel3Id qualifier. */
  12575 extern int bcm_field_qualify_MplsLabel3Id_get(
  12576     int unit, 
  12577     bcm_field_entry_t entry, 
  12578     uint32 *data, 
  12579     uint32 *mask);
  12580 
  12581 /* Set match criteria for ExactMatchHitStatus qualifier. */
  12582 extern int bcm_field_qualify_ExactMatchHitStatus(
  12583     int unit, 
  12584     bcm_field_entry_t entry, 
  12585     int group_pri, 
  12586     uint8 data, 
  12587     uint8 mask);
  12588 
  12589 /* Get match criteria for ExactMatchHitStatus qualifier. */
  12590 extern int bcm_field_qualify_ExactMatchHitStatus_get(
  12591     int unit, 
  12592     bcm_field_entry_t entry, 
  12593     int group_pri, 
  12594     uint8 *data, 
  12595     uint8 *mask);
  12596 
  12597 /* Set match criteria for ExactMatchActionClassId qualifier. */
  12598 extern int bcm_field_qualify_ExactMatchActionClassId(
  12599     int unit, 
  12600     bcm_field_entry_t entry, 
  12601     int group_pri, 
  12602     uint32 data, 
  12603     uint32 mask);
  12604 
  12605 /* Get match criteria for ExactMatchActionClassId qualifier. */
  12606 extern int bcm_field_qualify_ExactMatchActionClassId_get(
  12607     int unit, 
  12608     bcm_field_entry_t entry, 
  12609     int group_pri, 
  12610     uint32 *data, 
  12611     uint32 *mask);
  12612 
  12613 /* Set match criteria for ExactMatchGroupClassId qualifier. */
  12614 extern int bcm_field_qualify_ExactMatchGroupClassId(
  12615     int unit, 
  12616     bcm_field_entry_t entry, 
  12617     int group_pri, 
  12618     bcm_field_group_t group);
  12619 
  12620 /* Add action core specific parameters to a specified  entry. */
  12621 extern int bcm_field_action_config_add(
  12622     int unit, 
  12623     bcm_field_entry_t entry, 
  12624     bcm_field_action_t action, 
  12625     int core_config_arr_len, 
  12626     bcm_field_action_core_config_t *core_config_arr);
  12627 
  12628 /* Get action core specific parameters from a specified entry. */
  12629 extern int bcm_field_action_config_get(
  12630     int unit, 
  12631     bcm_field_entry_t entry, 
  12632     bcm_field_action_t action, 
  12633     int core_config_arr_len, 
  12634     bcm_field_action_core_config_t *core_config_arr);
  12635 
  12636 /* Given low level action, get the BCM actions and stages which use it. */
  12637 extern int bcm_field_internal_to_bcm_action_map(
  12638     int unit, 
  12639     uint32 flags, 
  12640     int internal_action, 
  12641     uint32 bcm_action_size, 
  12642     bcm_field_internal_to_bcm_map_t *bcm_action_stage, 
  12643     uint32 *bcm_action_size_actual);
  12644 
  12645 /* 
  12646  * Set new width (in bits) to a specific action. Width may be required to
  12647  * be the default value. See 'flags'
  12648  */
  12649 extern int bcm_field_action_width_set(
  12650     int unit, 
  12651     uint32 flags, 
  12652     int internal_action, 
  12653     uint32 width);
  12654 
  12655 /* 
  12656  * Get width (in bits) of specific action. Width may be required to be
  12657  * the default value. See 'flags'
  12658  */
  12659 extern int bcm_field_action_width_get(
  12660     int unit, 
  12661     uint32 flags, 
  12662     int internal_action, 
  12663     uint32 *width_p);
  12664 
  12665 /* Get match criteria for ExactMatchGroupClassId qualifier. */
  12666 extern int bcm_field_qualify_ExactMatchGroupClassId_get(
  12667     int unit, 
  12668     bcm_field_entry_t entry, 
  12669     int group_pri, 
  12670     bcm_field_group_t *group);
  12671 
  12672 /* Set match criteria for Vlan Action ID. */
  12673 extern int bcm_field_qualify_VlanAction(
  12674     int unit, 
  12675     bcm_field_entry_t entry, 
  12676     uint32 data, 
  12677     uint32 mask);
  12678 
  12679 /* Get match criteria for Vlan Action ID qualifier. */
  12680 extern int bcm_field_qualify_VlanAction_get(
  12681     int unit, 
  12682     bcm_field_entry_t entry, 
  12683     uint32 *data, 
  12684     uint32 *mask);
  12685 
  12686 /* Set match criteria for ECMP groups with Overlay flag. */
  12687 extern int bcm_field_qualify_DstMultipathOverlay(
  12688     int unit, 
  12689     bcm_field_entry_t entry, 
  12690     bcm_if_t data, 
  12691     bcm_if_t mask);
  12692 
  12693 /* Get match criteria for ECMP groups with Overlay flag. */
  12694 extern int bcm_field_qualify_DstMultipathOverlay_get(
  12695     int unit, 
  12696     bcm_field_entry_t entry, 
  12697     bcm_if_t *data, 
  12698     bcm_if_t *mask);
  12699 
  12700 /* Set match criteria for ECMP groups with Underlay flag. */
  12701 extern int bcm_field_qualify_DstMultipathUnderlay(
  12702     int unit, 
  12703     bcm_field_entry_t entry, 
  12704     bcm_if_t data, 
  12705     bcm_if_t mask);
  12706 
  12707 /* Get match criteria for ECMP groups with Underlay flag. */
  12708 extern int bcm_field_qualify_DstMultipathUnderlay_get(
  12709     int unit, 
  12710     bcm_field_entry_t entry, 
  12711     bcm_if_t *data, 
  12712     bcm_if_t *mask);
  12713 
  12714 /* Add an action to a field entry. */
  12715 extern int bcm_field_action_add(
  12716     int unit, 
  12717     bcm_field_entry_t entry, 
  12718     bcm_field_action_t action, 
  12719     uint32 param0, 
  12720     uint32 param1);
  12721 
  12722 /* Delete an action from a field entry. */
  12723 extern int bcm_field_action_delete(
  12724     int unit, 
  12725     bcm_field_entry_t entry, 
  12726     bcm_field_action_t action, 
  12727     uint32 param0, 
  12728     uint32 param1);
  12729 
  12730 /* Retrieve the class size for given qualifier. */
  12731 extern int bcm_field_class_size_get(
  12732     int unit, 
  12733     bcm_field_qualify_t qual, 
  12734     uint16 *class_size);
  12735 
  12736 /* Add an class action to a field entry. */
  12737 extern int bcm_field_action_class_add(
  12738     int unit, 
  12739     bcm_field_entry_t entry, 
  12740     bcm_field_class_info_t *class_info);
  12741 
  12742 /* 
  12743  * Retrieve the parameters for an class action previously added to a
  12744  * field entry.
  12745  */
  12746 extern int bcm_field_action_class_get(
  12747     int unit, 
  12748     bcm_field_entry_t entry, 
  12749     bcm_field_class_info_t *class_info);
  12750 
  12751 /* Add an action to a field entry. */
  12752 extern int bcm_field_action_mac_add(
  12753     int unit, 
  12754     bcm_field_entry_t entry, 
  12755     bcm_field_action_t action, 
  12756     bcm_mac_t mac);
  12757 
  12758 /* Add an action to a field entry. */
  12759 extern int bcm_field_action_ports_add(
  12760     int unit, 
  12761     bcm_field_entry_t entry, 
  12762     bcm_field_action_t action, 
  12763     bcm_pbmp_t pbmp);
  12764 
  12765 /* 
  12766  * Retrieve the parameters for an action previously added to a field
  12767  * entry.
  12768  */
  12769 extern int bcm_field_action_get(
  12770     int unit, 
  12771     bcm_field_entry_t entry, 
  12772     bcm_field_action_t action, 
  12773     uint32 *param0, 
  12774     uint32 *param1);
  12775 
  12776 /* 
  12777  * Retrieve the parameters for an action previously added to a field
  12778  * entry.
  12779  */
  12780 extern int bcm_field_action_mac_get(
  12781     int unit, 
  12782     bcm_field_entry_t entry, 
  12783     bcm_field_action_t action, 
  12784     bcm_mac_t *mac);
  12785 
  12786 /* 
  12787  * Retrieve the parameters for an action previously added to a field
  12788  * entry.
  12789  */
  12790 extern int bcm_field_action_ports_get(
  12791     int unit, 
  12792     bcm_field_entry_t entry, 
  12793     bcm_field_action_t action, 
  12794     bcm_pbmp_t *pbmp);
  12795 
  12796 /* 
  12797  * Remove an action from a field entry.  Same as bcm_field_action_delete
  12798  * for actions without parameters.
  12799  */
  12800 extern int bcm_field_action_remove(
  12801     int unit, 
  12802     bcm_field_entry_t entry, 
  12803     bcm_field_action_t action);
  12804 
  12805 /* Remove all actions from a field entry. */
  12806 extern int bcm_field_action_remove_all(
  12807     int unit, 
  12808     bcm_field_entry_t entry);
  12809 
  12810 #endif /* BCM_HIDE_DISPATCHABLE */
  12811 
  12812 /* Clear a bcm_field_extraction_field_t to reasonable default values */
  12813 extern void bcm_field_extraction_field_t_init(
  12814     bcm_field_extraction_field_t *action);
  12815 
  12816 /* Clear a bcm_field_extraction_action_t to reasonable default values */
  12817 extern void bcm_field_extraction_action_t_init(
  12818     bcm_field_extraction_action_t *action);
  12819 
  12820 #ifndef BCM_HIDE_DISPATCHABLE
  12821 
  12822 /* 
  12823  * Add an extraction action to a specified direct extraction entry.  Such
  12824  * actions can be removed using bcm_field_action_remove.
  12825  */
  12826 extern int bcm_field_direct_extraction_action_add(
  12827     int unit, 
  12828     bcm_field_entry_t entry, 
  12829     bcm_field_extraction_action_t action, 
  12830     int count, 
  12831     bcm_field_extraction_field_t *extractions);
  12832 
  12833 /* Get an extraction action from a direct extraction entry */
  12834 extern int bcm_field_direct_extraction_action_get(
  12835     int unit, 
  12836     bcm_field_entry_t entry, 
  12837     bcm_field_extraction_action_t *action, 
  12838     int max_count, 
  12839     bcm_field_extraction_field_t *extractions, 
  12840     int *actual_count);
  12841 
  12842 /* Create stat collection entity. */
  12843 extern int bcm_field_stat_create(
  12844     int unit, 
  12845     bcm_field_group_t group, 
  12846     int nstat, 
  12847     bcm_field_stat_t *stat_arr, 
  12848     int *stat_id);
  12849 
  12850 /* Create stat collection entity with specified ID. */
  12851 extern int bcm_field_stat_create_id(
  12852     int unit, 
  12853     bcm_field_group_t group, 
  12854     int nstat, 
  12855     bcm_field_stat_t *stat_arr, 
  12856     int stat_id);
  12857 
  12858 /* Provide stat counter ids associated with given field group */
  12859 extern int bcm_field_stat_id_get(
  12860     int unit, 
  12861     bcm_field_group_t group, 
  12862     uint32 stat_id, 
  12863     uint32 *stat_counter_id);
  12864 
  12865 /* Destroy stat collection entity. */
  12866 extern int bcm_field_stat_destroy(
  12867     int unit, 
  12868     int stat_id);
  12869 
  12870 /* 
  12871  * Get number of different statistics associated with stat collection
  12872  * entity.
  12873  */
  12874 extern int bcm_field_stat_size(
  12875     int unit, 
  12876     int stat_id, 
  12877     int *stat_size);
  12878 
  12879 /* Get enabled statistics for specific collection entity. */
  12880 extern int bcm_field_stat_config_get(
  12881     int unit, 
  12882     int stat_id, 
  12883     int nstat, 
  12884     bcm_field_stat_t *stat_arr);
  12885 
  12886 /* Set 64 bit counter value for specific statistic type. */
  12887 extern int bcm_field_stat_set(
  12888     int unit, 
  12889     int stat_id, 
  12890     bcm_field_stat_t stat, 
  12891     uint64 value);
  12892 
  12893 /* Set lower 32 bit counter value for specific statistic type. */
  12894 extern int bcm_field_stat_set32(
  12895     int unit, 
  12896     int stat_id, 
  12897     bcm_field_stat_t stat, 
  12898     uint32 value);
  12899 
  12900 /* Set 64 bit counter value for all statistics types. */
  12901 extern int bcm_field_stat_all_set(
  12902     int unit, 
  12903     int stat_id, 
  12904     uint64 value);
  12905 
  12906 /* Set lower 32 bit counter value for all statistic types. */
  12907 extern int bcm_field_stat_all_set32(
  12908     int unit, 
  12909     int stat_id, 
  12910     uint32 value);
  12911 
  12912 /* Get 64 bit counter value for specific statistic type. */
  12913 extern int bcm_field_stat_get(
  12914     int unit, 
  12915     int stat_id, 
  12916     bcm_field_stat_t stat, 
  12917     uint64 *value);
  12918 
  12919 /* Get 64 bit counter value for specific statistic type. */
  12920 extern int bcm_field_stat_sync_get(
  12921     int unit, 
  12922     int stat_id, 
  12923     bcm_field_stat_t stat, 
  12924     uint64 *value);
  12925 
  12926 /* Get lower 32 bit counter value for specific statistic type. */
  12927 extern int bcm_field_stat_get32(
  12928     int unit, 
  12929     int stat_id, 
  12930     bcm_field_stat_t stat, 
  12931     uint32 *value);
  12932 
  12933 /* Get lower 32 bit counter value for specific statistic type. */
  12934 extern int bcm_field_stat_sync_get32(
  12935     int unit, 
  12936     int stat_id, 
  12937     bcm_field_stat_t stat, 
  12938     uint32 *value);
  12939 
  12940 /* Get 64 bit counter values for multiple statistic types. */
  12941 extern int bcm_field_stat_multi_get(
  12942     int unit, 
  12943     int stat_id, 
  12944     int nstat, 
  12945     bcm_field_stat_t *stat_arr, 
  12946     uint64 *value_arr);
  12947 
  12948 /* Get lower 32 bit counter values for multiple statistic types. */
  12949 extern int bcm_field_stat_multi_get32(
  12950     int unit, 
  12951     int stat_id, 
  12952     int nstat, 
  12953     bcm_field_stat_t *stat_arr, 
  12954     uint32 *value_arr);
  12955 
  12956 /* Attach statistics entity to Field Processor entry. */
  12957 extern int bcm_field_entry_stat_attach(
  12958     int unit, 
  12959     bcm_field_entry_t entry, 
  12960     int stat_id);
  12961 
  12962 /* Attach statistics with stat action entity to Field Processor entry. */
  12963 extern int bcm_field_entry_stat_extended_attach(
  12964     int unit, 
  12965     bcm_field_entry_t entry, 
  12966     int stat_id, 
  12967     bcm_field_stat_action_t stat_action);
  12968 
  12969 /* Detach statistics entity from Field Processor entry. */
  12970 extern int bcm_field_entry_stat_detach(
  12971     int unit, 
  12972     bcm_field_entry_t entry, 
  12973     int stat_id);
  12974 
  12975 /* Get statistics entity attached to Field Processor entry. */
  12976 extern int bcm_field_entry_stat_get(
  12977     int unit, 
  12978     bcm_field_entry_t entry, 
  12979     int *stat_id);
  12980 
  12981 /* 
  12982  * Get statistics with stat action entity attached to Field Processor
  12983  * entry.
  12984  */
  12985 extern int bcm_field_entry_stat_extended_get(
  12986     int unit, 
  12987     bcm_field_entry_t entry, 
  12988     int *stat_id, 
  12989     bcm_field_stat_action_t *stat_action);
  12990 
  12991 #endif /* BCM_HIDE_DISPATCHABLE */
  12992 
  12993 /* Initialize Field Oam Stat Action Structure. */
  12994 extern void bcm_field_oam_stat_action_t_init(
  12995     bcm_field_oam_stat_action_t *oam_action);
  12996 
  12997 #ifndef BCM_HIDE_DISPATCHABLE
  12998 
  12999 /* Add Oam Stat action to Field Processor entry. */
  13000 extern int bcm_field_oam_stat_action_add(
  13001     int unit, 
  13002     bcm_field_entry_t entry, 
  13003     bcm_field_oam_stat_action_t *oam_stat_action);
  13004 
  13005 /* Remove Oam Stat action from Field Processor entry. */
  13006 extern int bcm_field_oam_stat_action_delete(
  13007     int unit, 
  13008     bcm_field_entry_t entry, 
  13009     bcm_field_oam_stat_action_t *oam_stat_action);
  13010 
  13011 /* Remove all Oam Stat action from Field Processor entry. */
  13012 extern int bcm_field_oam_stat_action_delete_all(
  13013     int unit, 
  13014     bcm_field_entry_t entry);
  13015 
  13016 /* Get Oam Stat action from Field Processor entry. */
  13017 extern int bcm_field_oam_stat_action_get(
  13018     int unit, 
  13019     bcm_field_entry_t entry, 
  13020     bcm_field_oam_stat_action_t *oam_stat_action);
  13021 
  13022 /* Get all Oam Stat action from Field Processor entry. */
  13023 extern int bcm_field_oam_stat_action_get_all(
  13024     int unit, 
  13025     bcm_field_entry_t entry, 
  13026     int oam_stat_max, 
  13027     bcm_field_oam_stat_action_t *oam_stat_action, 
  13028     int *oam_stat_count);
  13029 
  13030 #endif /* BCM_HIDE_DISPATCHABLE */
  13031 
  13032 /* Initialize Field Qualifier LLC header structure. */
  13033 extern void bcm_field_llc_header_t_init(
  13034     bcm_field_llc_header_t *llc_header);
  13035 
  13036 /* Initialize Field Qualifier SNAP header structure. */
  13037 extern void bcm_field_snap_header_t_init(
  13038     bcm_field_snap_header_t *snap_header);
  13039 
  13040 /* Initialize the Field Qualifier Set structure. */
  13041 extern void bcm_field_qset_t_init(
  13042     bcm_field_qset_t *qset);
  13043 
  13044 /* Initialize the Field Action Set structure. */
  13045 extern void bcm_field_aset_t_init(
  13046     bcm_field_aset_t *aset);
  13047 
  13048 /* Initialize the Field Presel Set structure. */
  13049 extern void bcm_field_presel_set_t_init(
  13050     bcm_field_presel_set_t *presel_set);
  13051 
  13052 /* Initialize the Field Group Status structure. */
  13053 extern void bcm_field_group_status_t_init(
  13054     bcm_field_group_status_t *fgroup);
  13055 
  13056 #ifndef BCM_HIDE_DISPATCHABLE
  13057 
  13058 #if defined(BROADCOM_DEBUG)
  13059 /* Show current software state of the field module. */
  13060 extern int bcm_field_show(
  13061     int unit, 
  13062     const char *pfx);
  13063 #endif
  13064 
  13065 #if defined(BROADCOM_DEBUG)
  13066 /* Show contents of a field entry. */
  13067 extern int bcm_field_entry_dump(
  13068     int unit, 
  13069     bcm_field_entry_t entry);
  13070 #endif
  13071 
  13072 #if defined(BROADCOM_DEBUG)
  13073 /* Show contents of a field group. */
  13074 extern int bcm_field_group_dump(
  13075     int unit, 
  13076     bcm_field_group_t group);
  13077 #endif
  13078 
  13079 #endif /* BCM_HIDE_DISPATCHABLE */
  13080 
  13081 /* SDK 5.2.0 backward compatibility. */
  13082 #define bcmFieldQualifyOutVlan  bcmFieldQualifyOuterVlan 
  13083 #define bcmFieldQualifyInVlan   bcmFieldQualifyInnerVlan 
  13084 
  13085 /* SDK 5.2.0 backward compatibility. */
  13086 #define bcm_field_qualify_OutVlan   bcm_field_qualify_OuterVlan 
  13087 #define bcm_field_qualify_InVlan    bcm_field_qualify_InnerVlan 
  13088 
  13089 #ifndef BCM_HIDE_DISPATCHABLE
  13090 
  13091 /* Attach counters entries to a field group */
  13092 extern int bcm_field_stat_attach(
  13093     int unit, 
  13094     bcm_field_group_t group, 
  13095     uint32 stat_counter_id, 
  13096     uint32 *stat_id);
  13097 
  13098 /* Detach counters entries to a field group. */
  13099 extern int bcm_field_stat_detach(
  13100     int unit, 
  13101     uint32 stat_id);
  13102 
  13103 /* Get counter statistic values for a field entity */
  13104 extern int bcm_field_stat_counter_get(
  13105     int unit, 
  13106     uint32 stat_id, 
  13107     bcm_field_stat_t stat, 
  13108     uint32 num_entries, 
  13109     uint32 *counter_indexes, 
  13110     bcm_stat_value_t *counter_values);
  13111 
  13112 /* Get counter statistic values for a field entity */
  13113 extern int bcm_field_stat_counter_sync_get(
  13114     int unit, 
  13115     uint32 stat_id, 
  13116     bcm_field_stat_t stat, 
  13117     uint32 num_entries, 
  13118     uint32 *counter_indexes, 
  13119     bcm_stat_value_t *counter_values);
  13120 
  13121 /* Set counter statistic values for a field entity */
  13122 extern int bcm_field_stat_counter_set(
  13123     int unit, 
  13124     uint32 stat_id, 
  13125     bcm_field_stat_t stat, 
  13126     uint32 num_entries, 
  13127     uint32 *counter_indexes, 
  13128     bcm_stat_value_t *counter_values);
  13129 
  13130 /* 
  13131  * Create a preselection specification for a specific stage using a
  13132  * specific ID.
  13133  */
  13134 extern int bcm_field_presel_create_stage_id(
  13135     int unit, 
  13136     bcm_field_stage_t stage, 
  13137     bcm_field_presel_t presel_id);
  13138 
  13139 /* Destroy a preselection specification. */
  13140 extern int bcm_field_presel_destroy(
  13141     int unit, 
  13142     bcm_field_presel_t presel_id);
  13143 
  13144 /* Associate a set of preselectors with a group. */
  13145 extern int bcm_field_group_presel_set(
  13146     int unit, 
  13147     bcm_field_group_t group, 
  13148     bcm_field_presel_set_t *presel);
  13149 
  13150 /* Get the set of preselectors associated with a group. */
  13151 extern int bcm_field_group_presel_get(
  13152     int unit, 
  13153     bcm_field_group_t group, 
  13154     bcm_field_presel_set_t *presel);
  13155 
  13156 #endif /* BCM_HIDE_DISPATCHABLE */
  13157 
  13158 /* Field entry operation structure. */
  13159 typedef struct bcm_field_entry_oper_s {
  13160     uint32 flags;               /* Entry operation BCM_FIELD_ENTRY_OPER_XXX. */
  13161     bcm_field_entry_t entry_id; /* Entry identifier. */
  13162 } bcm_field_entry_oper_t;
  13163 
  13164 /* Parameter for bcm_field_entry_oper_t. */
  13165 #define BCM_FIELD_ENTRY_OPER_BACKUP     (1 << 0)   /* Backup up an entry
  13166                                                       configuration. */
  13167 #define BCM_FIELD_ENTRY_OPER_RESTORE    (1 << 1)   /* Restore backed up entry
  13168                                                       configuration. */
  13169 #define BCM_FIELD_ENTRY_OPER_CLEANUP    (1 << 2)   /* Free resources used by
  13170                                                       back entry. */
  13171 #define BCM_FIELD_ENTRY_OPER_MASK       (0x7)      /* Mask of valid entry
  13172                                                       operations supported. */
  13173 
  13174 /* Initialize field entry operation structure. */
  13175 extern void bcm_field_entry_oper_t_init(
  13176     bcm_field_entry_oper_t *entry_oper);
  13177 
  13178 #ifndef BCM_HIDE_DISPATCHABLE
  13179 
  13180 /* Perform operation on a field processor entry. */
  13181 extern int bcm_field_entry_operation(
  13182     int unit, 
  13183     bcm_field_entry_oper_t *entry_oper);
  13184 
  13185 /* Perform operation on a field processor entry. */
  13186 extern int bcm_field_qualify_data_get(
  13187     int unit, 
  13188     bcm_field_entry_t eid, 
  13189     int qual_id, 
  13190     uint16 length_max, 
  13191     uint8 *data, 
  13192     uint8 *mask, 
  13193     uint16 *length);
  13194 
  13195 extern int bcm_field_range_multi_create(
  13196     int unit, 
  13197     bcm_field_range_t *range_id, 
  13198     uint32 create_flags, 
  13199     int count, 
  13200     uint32 *range_flags, 
  13201     uint32 *min_value, 
  13202     uint32 *max_value);
  13203 
  13204 extern int bcm_field_range_multi_get(
  13205     int unit, 
  13206     bcm_field_range_t range_id, 
  13207     int max_count, 
  13208     uint32 *range_flags, 
  13209     uint32 *minimum_value, 
  13210     uint32 *maxamum_value, 
  13211     int *actual_count);
  13212 
  13213 /* 
  13214  * Set match criteria for bcmFieldQualifyMplsOuterLabelPop
  13215  *                qualifier in the field entry.
  13216  */
  13217 extern int bcm_field_qualify_MplsOuterLabelPop(
  13218     int unit, 
  13219     bcm_field_entry_t entry, 
  13220     uint8 data, 
  13221     uint8 mask);
  13222 
  13223 /* 
  13224  * Get match criteria for bcmFieldQualifyMplsOuterLabelPop
  13225  *                qualifier in the field entry.
  13226  */
  13227 extern int bcm_field_qualify_MplsOuterLabelPop_get(
  13228     int unit, 
  13229     bcm_field_entry_t entry, 
  13230     uint8 *data, 
  13231     uint8 *mask);
  13232 
  13233 /* 
  13234  * Set match criteria for
  13235  *                bcmFieldQualifyMplsStationHitTunnelUnterminated
  13236  *                qualifier in the field entry.
  13237  */
  13238 extern int bcm_field_qualify_MplsStationHitTunnelUnterminated(
  13239     int unit, 
  13240     bcm_field_entry_t entry, 
  13241     uint8 data, 
  13242     uint8 mask);
  13243 
  13244 /* 
  13245  * Get match criteria for
  13246  *                bcmFieldQualifyMplsStationHitTunnelUnterminated
  13247  *                qualifier in the field entry.
  13248  */
  13249 extern int bcm_field_qualify_MplsStationHitTunnelUnterminated_get(
  13250     int unit, 
  13251     bcm_field_entry_t entry, 
  13252     uint8 *data, 
  13253     uint8 *mask);
  13254 
  13255 /* 
  13256  * Set match criteria for bcmFieldQualifyIngressClassField
  13257  *                qualifier in the field entry.
  13258  */
  13259 extern int bcm_field_qualify_IngressClassField(
  13260     int unit, 
  13261     bcm_field_entry_t entry, 
  13262     uint32 data, 
  13263     uint32 mask);
  13264 
  13265 /* 
  13266  * Get match criteria for bcmFieldQualifyIngressClassField
  13267  *                qualifier in the field entry.
  13268  */
  13269 extern int bcm_field_qualify_IngressClassField_get(
  13270     int unit, 
  13271     bcm_field_entry_t entry, 
  13272     uint32 *data, 
  13273     uint32 *mask);
  13274 
  13275 /* 
  13276  * Set match criteria for bcmFieldQualifyIngressInterfaceClassPort
  13277  *                qualifier in the field entry.
  13278  */
  13279 extern int bcm_field_qualify_IngressInterfaceClassPort(
  13280     int unit, 
  13281     bcm_field_entry_t entry, 
  13282     uint32 data, 
  13283     uint32 mask);
  13284 
  13285 /* 
  13286  * Get match criteria for bcmFieldQualifyIngressInterfaceClassPort
  13287  *                qualifier in the field entry.
  13288  */
  13289 extern int bcm_field_qualify_IngressInterfaceClassPort_get(
  13290     int unit, 
  13291     bcm_field_entry_t entry, 
  13292     uint32 *data, 
  13293     uint32 *mask);
  13294 
  13295 /* 
  13296  * Set match criteria for bcmFieldQualifyExternalValue0
  13297  *                qualifier in the field entry.
  13298  */
  13299 extern int bcm_field_qualify_ExternalValue0(
  13300     int unit, 
  13301     bcm_field_entry_t entry, 
  13302     uint64 data, 
  13303     uint64 mask);
  13304 
  13305 /* 
  13306  * Get match criteria for bcmFieldQualifyExternalValue0
  13307  *                qualifier in the field entry.
  13308  */
  13309 extern int bcm_field_qualify_ExternalValue0_get(
  13310     int unit, 
  13311     bcm_field_entry_t entry, 
  13312     uint64 *data, 
  13313     uint64 *mask);
  13314 
  13315 /* 
  13316  * Set match criteria for bcmFieldQualifyExternalValue1
  13317  *                qualifier in the field entry.
  13318  */
  13319 extern int bcm_field_qualify_ExternalValue1(
  13320     int unit, 
  13321     bcm_field_entry_t entry, 
  13322     uint64 data, 
  13323     uint64 mask);
  13324 
  13325 /* 
  13326  * Get match criteria for bcmFieldQualifyExternalValue1
  13327  *                qualifier in the field entry.
  13328  */
  13329 extern int bcm_field_qualify_ExternalValue1_get(
  13330     int unit, 
  13331     bcm_field_entry_t entry, 
  13332     uint64 *data, 
  13333     uint64 *mask);
  13334 
  13335 /* 
  13336  * Set match criteria for bcmFieldQualifyExternalValue2
  13337  *                qualifier in the field entry.
  13338  */
  13339 extern int bcm_field_qualify_ExternalValue2(
  13340     int unit, 
  13341     bcm_field_entry_t entry, 
  13342     uint64 data, 
  13343     uint64 mask);
  13344 
  13345 /* 
  13346  * Get match criteria for bcmFieldQualifyExternalValue2
  13347  *                qualifier in the field entry.
  13348  */
  13349 extern int bcm_field_qualify_ExternalValue2_get(
  13350     int unit, 
  13351     bcm_field_entry_t entry, 
  13352     uint64 *data, 
  13353     uint64 *mask);
  13354 
  13355 /* 
  13356  * Set match criteria for bcmFieldQualifyExternalValue3
  13357  *                qualifier in the field entry.
  13358  */
  13359 extern int bcm_field_qualify_ExternalValue3(
  13360     int unit, 
  13361     bcm_field_entry_t entry, 
  13362     uint64 data, 
  13363     uint64 mask);
  13364 
  13365 /* 
  13366  * Get match criteria for bcmFieldQualifyExternalValue3
  13367  *                qualifier in the field entry.
  13368  */
  13369 extern int bcm_field_qualify_ExternalValue3_get(
  13370     int unit, 
  13371     bcm_field_entry_t entry, 
  13372     uint64 *data, 
  13373     uint64 *mask);
  13374 
  13375 /* 
  13376  * Set match criteria for bcmFieldQualifyExternalValue4
  13377  *                qualifier in the field entry.
  13378  */
  13379 extern int bcm_field_qualify_ExternalValue4(
  13380     int unit, 
  13381     bcm_field_entry_t entry, 
  13382     uint64 data, 
  13383     uint64 mask);
  13384 
  13385 /* 
  13386  * Get match criteria for bcmFieldQualifyExternalValue4
  13387  *                qualifier in the field entry.
  13388  */
  13389 extern int bcm_field_qualify_ExternalValue4_get(
  13390     int unit, 
  13391     bcm_field_entry_t entry, 
  13392     uint64 *data, 
  13393     uint64 *mask);
  13394 
  13395 /* 
  13396  * Set match criteria for bcmFieldQualifyExternalValue5
  13397  *                qualifier in the field entry.
  13398  */
  13399 extern int bcm_field_qualify_ExternalValue5(
  13400     int unit, 
  13401     bcm_field_entry_t entry, 
  13402     uint64 data, 
  13403     uint64 mask);
  13404 
  13405 /* 
  13406  * Get match criteria for bcmFieldQualifyExternalValue5
  13407  *                qualifier in the field entry.
  13408  */
  13409 extern int bcm_field_qualify_ExternalValue5_get(
  13410     int unit, 
  13411     bcm_field_entry_t entry, 
  13412     uint64 *data, 
  13413     uint64 *mask);
  13414 
  13415 /* 
  13416  * Set match criteria for bcmFieldQualifyExternalValue6
  13417  *                qualifier in the field entry.
  13418  */
  13419 extern int bcm_field_qualify_ExternalValue6(
  13420     int unit, 
  13421     bcm_field_entry_t entry, 
  13422     uint64 data, 
  13423     uint64 mask);
  13424 
  13425 /* 
  13426  * Get match criteria for bcmFieldQualifyExternalValue6
  13427  *                qualifier in the field entry.
  13428  */
  13429 extern int bcm_field_qualify_ExternalValue6_get(
  13430     int unit, 
  13431     bcm_field_entry_t entry, 
  13432     uint64 *data, 
  13433     uint64 *mask);
  13434 
  13435 /* 
  13436  * Set match criteria for bcmFieldQualifyExternalValue7
  13437  *                qualifier in the field entry.
  13438  */
  13439 extern int bcm_field_qualify_ExternalValue7(
  13440     int unit, 
  13441     bcm_field_entry_t entry, 
  13442     uint64 data, 
  13443     uint64 mask);
  13444 
  13445 /* 
  13446  * Get match criteria for bcmFieldQualifyExternalValue7
  13447  *                qualifier in the field entry.
  13448  */
  13449 extern int bcm_field_qualify_ExternalValue7_get(
  13450     int unit, 
  13451     bcm_field_entry_t entry, 
  13452     uint64 *data, 
  13453     uint64 *mask);
  13454 
  13455 /* 
  13456  * Set match criteria for bcmFieldQualifyExternalHit0
  13457  *                qualifier in the field entry.
  13458  */
  13459 extern int bcm_field_qualify_ExternalHit0(
  13460     int unit, 
  13461     bcm_field_entry_t entry, 
  13462     uint8 data, 
  13463     uint8 mask);
  13464 
  13465 /* 
  13466  * Get match criteria for bcmFieldQualifyExternalHit0
  13467  *                qualifier in the field entry.
  13468  */
  13469 extern int bcm_field_qualify_ExternalHit0_get(
  13470     int unit, 
  13471     bcm_field_entry_t entry, 
  13472     uint8 *data, 
  13473     uint8 *mask);
  13474 
  13475 /* 
  13476  * Set match criteria for bcmFieldQualifyExternalHit1
  13477  *                qualifier in the field entry.
  13478  */
  13479 extern int bcm_field_qualify_ExternalHit1(
  13480     int unit, 
  13481     bcm_field_entry_t entry, 
  13482     uint8 data, 
  13483     uint8 mask);
  13484 
  13485 /* 
  13486  * Get match criteria for bcmFieldQualifyExternalHit1
  13487  *                qualifier in the field entry.
  13488  */
  13489 extern int bcm_field_qualify_ExternalHit1_get(
  13490     int unit, 
  13491     bcm_field_entry_t entry, 
  13492     uint8 *data, 
  13493     uint8 *mask);
  13494 
  13495 /* 
  13496  * Set match criteria for bcmFieldQualifyExternalHit2
  13497  *                qualifier in the field entry.
  13498  */
  13499 extern int bcm_field_qualify_ExternalHit2(
  13500     int unit, 
  13501     bcm_field_entry_t entry, 
  13502     uint8 data, 
  13503     uint8 mask);
  13504 
  13505 /* 
  13506  * Get match criteria for bcmFieldQualifyExternalHit2
  13507  *                qualifier in the field entry.
  13508  */
  13509 extern int bcm_field_qualify_ExternalHit2_get(
  13510     int unit, 
  13511     bcm_field_entry_t entry, 
  13512     uint8 *data, 
  13513     uint8 *mask);
  13514 
  13515 /* 
  13516  * Set match criteria for bcmFieldQualifyExternalHit3
  13517  *                qualifier in the field entry.
  13518  */
  13519 extern int bcm_field_qualify_ExternalHit3(
  13520     int unit, 
  13521     bcm_field_entry_t entry, 
  13522     uint8 data, 
  13523     uint8 mask);
  13524 
  13525 /* 
  13526  * Get match criteria for bcmFieldQualifyExternalHit3
  13527  *                qualifier in the field entry.
  13528  */
  13529 extern int bcm_field_qualify_ExternalHit3_get(
  13530     int unit, 
  13531     bcm_field_entry_t entry, 
  13532     uint8 *data, 
  13533     uint8 *mask);
  13534 
  13535 /* 
  13536  * Set match criteria for bcmFieldQualifyExternalHit4
  13537  *                qualifier in the field entry.
  13538  */
  13539 extern int bcm_field_qualify_ExternalHit4(
  13540     int unit, 
  13541     bcm_field_entry_t entry, 
  13542     uint8 data, 
  13543     uint8 mask);
  13544 
  13545 /* 
  13546  * Get match criteria for bcmFieldQualifyExternalHit4
  13547  *                qualifier in the field entry.
  13548  */
  13549 extern int bcm_field_qualify_ExternalHit4_get(
  13550     int unit, 
  13551     bcm_field_entry_t entry, 
  13552     uint8 *data, 
  13553     uint8 *mask);
  13554 
  13555 /* 
  13556  * Set match criteria for bcmFieldQualifyExternalHit5
  13557  *                qualifier in the field entry.
  13558  */
  13559 extern int bcm_field_qualify_ExternalHit5(
  13560     int unit, 
  13561     bcm_field_entry_t entry, 
  13562     uint8 data, 
  13563     uint8 mask);
  13564 
  13565 /* 
  13566  * Get match criteria for bcmFieldQualifyExternalHit5
  13567  *                qualifier in the field entry.
  13568  */
  13569 extern int bcm_field_qualify_ExternalHit5_get(
  13570     int unit, 
  13571     bcm_field_entry_t entry, 
  13572     uint8 *data, 
  13573     uint8 *mask);
  13574 
  13575 /* 
  13576  * Set match criteria for bcmFieldQualifyExternalHit6
  13577  *                qualifier in the field entry.
  13578  */
  13579 extern int bcm_field_qualify_ExternalHit6(
  13580     int unit, 
  13581     bcm_field_entry_t entry, 
  13582     uint8 data, 
  13583     uint8 mask);
  13584 
  13585 /* 
  13586  * Get match criteria for bcmFieldQualifyExternalHit6
  13587  *                qualifier in the field entry.
  13588  */
  13589 extern int bcm_field_qualify_ExternalHit6_get(
  13590     int unit, 
  13591     bcm_field_entry_t entry, 
  13592     uint8 *data, 
  13593     uint8 *mask);
  13594 
  13595 /* 
  13596  * Set match criteria for bcmFieldQualifyExternalHit7
  13597  *                qualifier in the field entry.
  13598  */
  13599 extern int bcm_field_qualify_ExternalHit7(
  13600     int unit, 
  13601     bcm_field_entry_t entry, 
  13602     uint8 data, 
  13603     uint8 mask);
  13604 
  13605 /* 
  13606  * Get match criteria for bcmFieldQualifyExternalHit7
  13607  *                qualifier in the field entry.
  13608  */
  13609 extern int bcm_field_qualify_ExternalHit7_get(
  13610     int unit, 
  13611     bcm_field_entry_t entry, 
  13612     uint8 *data, 
  13613     uint8 *mask);
  13614 
  13615 /* 
  13616  * Set match criteria for bcmFieldQualifyVpnUnknownDstMacDstPort
  13617  *                qualifier in the field entry.
  13618  */
  13619 extern int bcm_field_qualify_VpnUnknownDstMacDstPort(
  13620     int unit, 
  13621     bcm_field_entry_t entry, 
  13622     bcm_gport_t port_id);
  13623 
  13624 /* 
  13625  * Get match criteria for bcmFieldQualifyVpnUnknownDstMacDstPort
  13626  *                qualifier in the field entry.
  13627  */
  13628 extern int bcm_field_qualify_VpnUnknownDstMacDstPort_get(
  13629     int unit, 
  13630     bcm_field_entry_t entry, 
  13631     bcm_gport_t *port_id);
  13632 
  13633 /* 
  13634  *  Set match criteria for bcmFieldQualifyVxlanNetworkId
  13635  *                  qualifier in the field entry.
  13636  */
  13637 extern int bcm_field_qualify_VxlanNetworkId(
  13638     int unit, 
  13639     bcm_field_entry_t entry, 
  13640     uint32 data, 
  13641     uint32 mask);
  13642 
  13643 /* 
  13644  *  Get match criteria for bcmFieldQualifyVxlanNetworkId
  13645  *                  qualifier in the field entry.
  13646  */
  13647 extern int bcm_field_qualify_VxlanNetworkId_get(
  13648     int unit, 
  13649     bcm_field_entry_t entry, 
  13650     uint32 *data, 
  13651     uint32 *mask);
  13652 
  13653 /* 
  13654  *  Set match criteria for bcmFieldQualifyVxlanFlags
  13655  *                  qualifier in the field entry.
  13656  */
  13657 extern int bcm_field_qualify_VxlanFlags(
  13658     int unit, 
  13659     bcm_field_entry_t entry, 
  13660     uint8 data, 
  13661     uint8 mask);
  13662 
  13663 /* 
  13664  *  Get match criteria for bcmFieldQualifyVxlanFlags
  13665  *                  qualifier in the field entry.
  13666  */
  13667 extern int bcm_field_qualify_VxlanFlags_get(
  13668     int unit, 
  13669     bcm_field_entry_t entry, 
  13670     uint8 *data, 
  13671     uint8 *mask);
  13672 
  13673 /* 
  13674  *  Set match criteria for bcmFieldQualifyNatNeeded
  13675  *                  qualifier in the field entry.
  13676  */
  13677 extern int bcm_field_qualify_NatNeeded(
  13678     int unit, 
  13679     bcm_field_entry_t entry, 
  13680     uint8 data, 
  13681     uint8 mask);
  13682 
  13683 /* 
  13684  *  Get match criteria for bcmFieldQualifyNatNeeded
  13685  *                  qualifier in the field entry.
  13686  */
  13687 extern int bcm_field_qualify_NatNeeded_get(
  13688     int unit, 
  13689     bcm_field_entry_t entry, 
  13690     uint8 *data, 
  13691     uint8 *mask);
  13692 
  13693 /* 
  13694  *  Set match criteria for bcmFieldQualifyNatDstRealmId
  13695  *                  qualifier in the field entry.
  13696  */
  13697 extern int bcm_field_qualify_NatDstRealmId(
  13698     int unit, 
  13699     bcm_field_entry_t entry, 
  13700     uint8 data, 
  13701     uint8 mask);
  13702 
  13703 /* 
  13704  *  Get match criteria for bcmFieldQualifyNatDstRealmId
  13705  *                  qualifier in the field entry.
  13706  */
  13707 extern int bcm_field_qualify_NatDstRealmId_get(
  13708     int unit, 
  13709     bcm_field_entry_t entry, 
  13710     uint8 *data, 
  13711     uint8 *mask);
  13712 
  13713 /* 
  13714  *  Set match criteria for bcmFieldQualifyNatSrcRealmId
  13715  *                  qualifier in the field entry.
  13716  */
  13717 extern int bcm_field_qualify_NatSrcRealmId(
  13718     int unit, 
  13719     bcm_field_entry_t entry, 
  13720     uint8 data, 
  13721     uint8 mask);
  13722 
  13723 /* 
  13724  *  Get match criteria for bcmFieldQualifyNatSrcRealmId
  13725  *                  qualifier in the field entry.
  13726  */
  13727 extern int bcm_field_qualify_NatSrcRealmId_get(
  13728     int unit, 
  13729     bcm_field_entry_t entry, 
  13730     uint8 *data, 
  13731     uint8 *mask);
  13732 
  13733 /* 
  13734  *  Set match criteria for bcmFieldQualifyIcmpError
  13735  *                  qualifier in the field entry.
  13736  */
  13737 extern int bcm_field_qualify_IcmpError(
  13738     int unit, 
  13739     bcm_field_entry_t entry, 
  13740     uint8 data, 
  13741     uint8 mask);
  13742 
  13743 /* 
  13744  *  Get match criteria for bcmFieldQualifyIcmpError
  13745  *                  qualifier in the field entry.
  13746  */
  13747 extern int bcm_field_qualify_IcmpError_get(
  13748     int unit, 
  13749     bcm_field_entry_t entry, 
  13750     uint8 *data, 
  13751     uint8 *mask);
  13752 
  13753 /* 
  13754  *  Set match criteria for bcmFieldQualifyTunnelId
  13755  *                  qualifier in the field entry.
  13756  */
  13757 extern int bcm_field_qualify_TunnelId(
  13758     int unit, 
  13759     bcm_field_entry_t entry, 
  13760     uint32 data, 
  13761     uint32 mask);
  13762 
  13763 /* 
  13764  *  Get match criteria for bcmFieldQualifyTunnelId
  13765  *                  qualifier in the field entry.
  13766  */
  13767 extern int bcm_field_qualify_TunnelId_get(
  13768     int unit, 
  13769     bcm_field_entry_t entry, 
  13770     uint32 *data, 
  13771     uint32 *mask);
  13772 
  13773 /* 
  13774  *  Set match criteria for bcmFieldQualifyArpSenderIp4
  13775  *                  qualifier in the field entry.
  13776  */
  13777 extern int bcm_field_qualify_ArpSenderIp4(
  13778     int unit, 
  13779     bcm_field_entry_t entry, 
  13780     uint32 data, 
  13781     uint32 mask);
  13782 
  13783 /* 
  13784  *  Get match criteria for bcmFieldQualifyArpSenderIp4
  13785  *                  qualifier in the field entry.
  13786  */
  13787 extern int bcm_field_qualify_ArpSenderIp4_get(
  13788     int unit, 
  13789     bcm_field_entry_t entry, 
  13790     uint32 *data, 
  13791     uint32 *mask);
  13792 
  13793 /* 
  13794  *  Set match criteria for bcmFieldQualifyArpTargetIp4
  13795  *                  qualifier in the field entry.
  13796  */
  13797 extern int bcm_field_qualify_ArpTargetIp4(
  13798     int unit, 
  13799     bcm_field_entry_t entry, 
  13800     uint32 data, 
  13801     uint32 mask);
  13802 
  13803 /* 
  13804  *  Get match criteria for bcmFieldQualifyArpTargetIp4
  13805  *                  qualifier in the field entry.
  13806  */
  13807 extern int bcm_field_qualify_ArpTargetIp4_get(
  13808     int unit, 
  13809     bcm_field_entry_t entry, 
  13810     uint32 *data, 
  13811     uint32 *mask);
  13812 
  13813 /* 
  13814  *  Set match criteria for bcmFieldQualifyArpOpcode
  13815  *                  qualifier in the field entry.
  13816  */
  13817 extern int bcm_field_qualify_ArpOpcode(
  13818     int unit, 
  13819     bcm_field_entry_t entry, 
  13820     bcm_field_ArpOpcode_t data);
  13821 
  13822 /* 
  13823  *  Get match criteria for bcmFieldQualifyArpOpcode
  13824  *                  qualifier in the field entry.
  13825  */
  13826 extern int bcm_field_qualify_ArpOpcode_get(
  13827     int unit, 
  13828     bcm_field_entry_t entry, 
  13829     bcm_field_ArpOpcode_t *data);
  13830 
  13831 /* 
  13832  *  Set match criteria for bcmFieldQualifyTranslatedOuterVlan
  13833  *                  qualifier in the field entry.
  13834  */
  13835 extern int bcm_field_qualify_TranslatedOuterVlan(
  13836     int unit, 
  13837     bcm_field_entry_t entry, 
  13838     bcm_vlan_t data, 
  13839     bcm_vlan_t mask);
  13840 
  13841 /* 
  13842  * Get match criteria for bcmFieldQualifyTranslatedOuterVlan
  13843  *                qualifier from the field entry.
  13844  */
  13845 extern int bcm_field_qualify_TranslatedOuterVlan_get(
  13846     int unit, 
  13847     bcm_field_entry_t entry, 
  13848     bcm_vlan_t *data, 
  13849     bcm_vlan_t *mask);
  13850 
  13851 /* 
  13852  *  Set match criteria for bcmFieldQualifyTranslatedOuterVlanId
  13853  *                  qualifier in the field entry.
  13854  */
  13855 extern int bcm_field_qualify_TranslatedOuterVlanId(
  13856     int unit, 
  13857     bcm_field_entry_t entry, 
  13858     bcm_vlan_t data, 
  13859     bcm_vlan_t mask);
  13860 
  13861 /* 
  13862  *  Get match criteria for bcmFieldQualifyTranslatedOuterVlanId
  13863  *                  qualifier from the field entry.
  13864  */
  13865 extern int bcm_field_qualify_TranslatedOuterVlanId_get(
  13866     int unit, 
  13867     bcm_field_entry_t entry, 
  13868     bcm_vlan_t *data, 
  13869     bcm_vlan_t *mask);
  13870 
  13871 /* 
  13872  *  Set match criteria for bcmFieldQualifyTranslatedOuterVlanPri
  13873  *                  qualifier in the field entry.
  13874  */
  13875 extern int bcm_field_qualify_TranslatedOuterVlanPri(
  13876     int unit, 
  13877     bcm_field_entry_t entry, 
  13878     uint8 data, 
  13879     uint8 mask);
  13880 
  13881 /* 
  13882  *  Get match criteria for bcmFieldQualifyTranslatedOuterVlanPri
  13883  *                  qualifier from the field entry.
  13884  */
  13885 extern int bcm_field_qualify_TranslatedOuterVlanPri_get(
  13886     int unit, 
  13887     bcm_field_entry_t entry, 
  13888     uint8 *data, 
  13889     uint8 *mask);
  13890 
  13891 /* 
  13892  *  Set match criteria for bcmFieldQualifyTranslatedOuterVlanCfi
  13893  *                  qualifier in the field entry.
  13894  */
  13895 extern int bcm_field_qualify_TranslatedOuterVlanCfi(
  13896     int unit, 
  13897     bcm_field_entry_t entry, 
  13898     uint8 data, 
  13899     uint8 mask);
  13900 
  13901 /* 
  13902  *  Get match criteria for bcmFieldQualifyTranslatedOuterVlanCfi_get
  13903  *                  qualifier from the field entry.
  13904  */
  13905 extern int bcm_field_qualify_TranslatedOuterVlanCfi_get(
  13906     int unit, 
  13907     bcm_field_entry_t entry, 
  13908     uint8 *data, 
  13909     uint8 *mask);
  13910 
  13911 /* 
  13912  *  Set match criteria for bcmFieldQualifyTranslatedInnerVlan
  13913  *                  qualifier in the field entry.
  13914  */
  13915 extern int bcm_field_qualify_TranslatedInnerVlan(
  13916     int unit, 
  13917     bcm_field_entry_t entry, 
  13918     bcm_vlan_t data, 
  13919     bcm_vlan_t mask);
  13920 
  13921 /* 
  13922  * Get match criteria for bcmFieldQualifyTranslatedInnerVlan
  13923  *                qualifier from the field entry.
  13924  */
  13925 extern int bcm_field_qualify_TranslatedInnerVlan_get(
  13926     int unit, 
  13927     bcm_field_entry_t entry, 
  13928     bcm_vlan_t *data, 
  13929     bcm_vlan_t *mask);
  13930 
  13931 /* 
  13932  *  Set match criteria for bcmFieldQualifyTranslatedInnerVlanId
  13933  *                  qualifier in the field entry.
  13934  */
  13935 extern int bcm_field_qualify_TranslatedInnerVlanId(
  13936     int unit, 
  13937     bcm_field_entry_t entry, 
  13938     bcm_vlan_t data, 
  13939     bcm_vlan_t mask);
  13940 
  13941 /* 
  13942  *  Get match criteria for bcmFieldQualifyTranslatedInnerVlanId
  13943  *                  qualifier from the field entry.
  13944  */
  13945 extern int bcm_field_qualify_TranslatedInnerVlanId_get(
  13946     int unit, 
  13947     bcm_field_entry_t entry, 
  13948     bcm_vlan_t *data, 
  13949     bcm_vlan_t *mask);
  13950 
  13951 /* 
  13952  *  Set match criteria for bcmFieldQualifyTranslatedInnerVlanPri
  13953  *                  qualifier in the field entry.
  13954  */
  13955 extern int bcm_field_qualify_TranslatedInnerVlanPri(
  13956     int unit, 
  13957     bcm_field_entry_t entry, 
  13958     uint8 data, 
  13959     uint8 mask);
  13960 
  13961 /* 
  13962  *  Get match criteria for bcmFieldQualifyTranslatedInnerVlanPri
  13963  *                  qualifier from the field entry.
  13964  */
  13965 extern int bcm_field_qualify_TranslatedInnerVlanPri_get(
  13966     int unit, 
  13967     bcm_field_entry_t entry, 
  13968     uint8 *data, 
  13969     uint8 *mask);
  13970 
  13971 /* 
  13972  *  Set match criteria for bcmFieldQualifyTranslatedInnerVlanCfi
  13973  *                  qualifier in the field entry.
  13974  */
  13975 extern int bcm_field_qualify_TranslatedInnerVlanCfi(
  13976     int unit, 
  13977     bcm_field_entry_t entry, 
  13978     uint8 data, 
  13979     uint8 mask);
  13980 
  13981 /* 
  13982  *  Get match criteria for bcmFieldQualifyTranslatedInnerVlanCfi_get
  13983  *                  qualifier from the field entry.
  13984  */
  13985 extern int bcm_field_qualify_TranslatedInnerVlanCfi_get(
  13986     int unit, 
  13987     bcm_field_entry_t entry, 
  13988     uint8 *data, 
  13989     uint8 *mask);
  13990 
  13991 /* 
  13992  *  Set match criteria for bcmFieldQualifyFibreChanRCtl
  13993  *                  qualifier in the field entry.
  13994  */
  13995 extern int bcm_field_qualify_FibreChanRCtl(
  13996     int unit, 
  13997     bcm_field_entry_t entry, 
  13998     uint8 data, 
  13999     uint8 mask);
  14000 
  14001 /* 
  14002  *  Get match criteria for bcmFieldQualifyFibreChanRCtl
  14003  *                  qualifier from the field entry.
  14004  */
  14005 extern int bcm_field_qualify_FibreChanRCtl_get(
  14006     int unit, 
  14007     bcm_field_entry_t entry, 
  14008     uint8 *data, 
  14009     uint8 *mask);
  14010 
  14011 /* 
  14012  *  Set match criteria for bcmFieldQualifyFibreChanFCtl
  14013  *                  qualifier in the field entry.
  14014  */
  14015 extern int bcm_field_qualify_FibreChanFCtl(
  14016     int unit, 
  14017     bcm_field_entry_t entry, 
  14018     uint32 data, 
  14019     uint32 mask);
  14020 
  14021 /* 
  14022  *  Get match criteria for bcmFieldQualifyFibreChanFCtl
  14023  *                  qualifier from the field entry.
  14024  */
  14025 extern int bcm_field_qualify_FibreChanFCtl_get(
  14026     int unit, 
  14027     bcm_field_entry_t entry, 
  14028     uint32 *data, 
  14029     uint32 *mask);
  14030 
  14031 /* 
  14032  *  Set match criteria for bcmFieldQualifyFibreChanCSCtl
  14033  *                  qualifier in the field entry.
  14034  */
  14035 extern int bcm_field_qualify_FibreChanCSCtl(
  14036     int unit, 
  14037     bcm_field_entry_t entry, 
  14038     uint8 data, 
  14039     uint8 mask);
  14040 
  14041 /* 
  14042  *  Get match criteria for bcmFieldQualifyFibreChanCSCtl
  14043  *                  qualifier from the field entry.
  14044  */
  14045 extern int bcm_field_qualify_FibreChanCSCtl_get(
  14046     int unit, 
  14047     bcm_field_entry_t entry, 
  14048     uint8 *data, 
  14049     uint8 *mask);
  14050 
  14051 /* 
  14052  *  Set match criteria for bcmFieldQualifyFibreChanDFCtl
  14053  *                  qualifier in the field entry.
  14054  */
  14055 extern int bcm_field_qualify_FibreChanDFCtl(
  14056     int unit, 
  14057     bcm_field_entry_t entry, 
  14058     uint8 data, 
  14059     uint8 mask);
  14060 
  14061 /* 
  14062  *  Get match criteria for bcmFieldQualifyFibreChanDFCtl
  14063  *                  qualifier from the field entry.
  14064  */
  14065 extern int bcm_field_qualify_FibreChanDFCtl_get(
  14066     int unit, 
  14067     bcm_field_entry_t entry, 
  14068     uint8 *data, 
  14069     uint8 *mask);
  14070 
  14071 /* 
  14072  *  Set match criteria for bcmFieldQualifyFibreChanType
  14073  *                  qualifier in the field entry.
  14074  */
  14075 extern int bcm_field_qualify_FibreChanType(
  14076     int unit, 
  14077     bcm_field_entry_t entry, 
  14078     uint8 data, 
  14079     uint8 mask);
  14080 
  14081 /* 
  14082  *  Get match criteria for bcmFieldQualifyFibreChanType
  14083  *                  qualifier from the field entry.
  14084  */
  14085 extern int bcm_field_qualify_FibreChanType_get(
  14086     int unit, 
  14087     bcm_field_entry_t entry, 
  14088     uint8 *data, 
  14089     uint8 *mask);
  14090 
  14091 /* 
  14092  *  Set match criteria for bcmFieldQualifyFibreChanSrcId
  14093  *                  qualifier in the field entry.
  14094  */
  14095 extern int bcm_field_qualify_FibreChanSrcId(
  14096     int unit, 
  14097     bcm_field_entry_t entry, 
  14098     uint32 data, 
  14099     uint32 mask);
  14100 
  14101 /* 
  14102  *  Get match criteria for bcmFieldQualifyFibreChanSrcId
  14103  *                  qualifier from the field entry.
  14104  */
  14105 extern int bcm_field_qualify_FibreChanSrcId_get(
  14106     int unit, 
  14107     bcm_field_entry_t entry, 
  14108     uint32 *data, 
  14109     uint32 *mask);
  14110 
  14111 /* 
  14112  *  Set match criteria for bcmFieldQualifyFibreChanDstId
  14113  *                  qualifier in the field entry.
  14114  */
  14115 extern int bcm_field_qualify_FibreChanDstId(
  14116     int unit, 
  14117     bcm_field_entry_t entry, 
  14118     uint32 data, 
  14119     uint32 mask);
  14120 
  14121 /* 
  14122  *  Get match criteria for bcmFieldQualifyFibreChanDstId
  14123  *                  qualifier from the field entry.
  14124  */
  14125 extern int bcm_field_qualify_FibreChanDstId_get(
  14126     int unit, 
  14127     bcm_field_entry_t entry, 
  14128     uint32 *data, 
  14129     uint32 *mask);
  14130 
  14131 /* 
  14132  *  Set match criteria for bcmFieldQualifyFibreChanVFTVersion
  14133  *                  qualifier in the field entry.
  14134  */
  14135 extern int bcm_field_qualify_FibreChanVFTVersion(
  14136     int unit, 
  14137     bcm_field_entry_t entry, 
  14138     uint8 data, 
  14139     uint8 mask);
  14140 
  14141 /* 
  14142  *  Get match criteria for bcmFieldQualifyFibreChanVFTVersion
  14143  *                  qualifier from the field entry.
  14144  */
  14145 extern int bcm_field_qualify_FibreChanVFTVersion_get(
  14146     int unit, 
  14147     bcm_field_entry_t entry, 
  14148     uint8 *data, 
  14149     uint8 *mask);
  14150 
  14151 /* 
  14152  *  Set match criteria for bcmFieldQualifyFibreChanVFTPri
  14153  *                  qualifier in the field entry.
  14154  */
  14155 extern int bcm_field_qualify_FibreChanVFTPri(
  14156     int unit, 
  14157     bcm_field_entry_t entry, 
  14158     uint8 data, 
  14159     uint8 mask);
  14160 
  14161 /* 
  14162  *  Get match criteria for bcmFieldQualifyFibreChanVFTPri
  14163  *                  qualifier from the field entry.
  14164  */
  14165 extern int bcm_field_qualify_FibreChanVFTPri_get(
  14166     int unit, 
  14167     bcm_field_entry_t entry, 
  14168     uint8 *data, 
  14169     uint8 *mask);
  14170 
  14171 /* 
  14172  *  Set match criteria for bcmFieldQualifyFibreChanVFTFabricId
  14173  *                  qualifier in the field entry.
  14174  */
  14175 extern int bcm_field_qualify_FibreChanVFTFabricId(
  14176     int unit, 
  14177     bcm_field_entry_t entry, 
  14178     uint16 data, 
  14179     uint16 mask);
  14180 
  14181 /* 
  14182  *  Get match criteria for bcmFieldQualifyFibreChanVFTFabricId
  14183  *                  qualifier from the field entry.
  14184  */
  14185 extern int bcm_field_qualify_FibreChanVFTFabricId_get(
  14186     int unit, 
  14187     bcm_field_entry_t entry, 
  14188     uint16 *data, 
  14189     uint16 *mask);
  14190 
  14191 /* 
  14192  *  Set match criteria for bcmFieldQualifyFibreChanVFTHopCount
  14193  *                  qualifier in the field entry.
  14194  */
  14195 extern int bcm_field_qualify_FibreChanVFTHopCount(
  14196     int unit, 
  14197     bcm_field_entry_t entry, 
  14198     uint8 data, 
  14199     uint8 mask);
  14200 
  14201 /* 
  14202  *  Get match criteria for bcmFieldQualifyFibreChanVFTHopCount
  14203  *                  qualifier from the field entry.
  14204  */
  14205 extern int bcm_field_qualify_FibreChanVFTHopCount_get(
  14206     int unit, 
  14207     bcm_field_entry_t entry, 
  14208     uint8 *data, 
  14209     uint8 *mask);
  14210 
  14211 /* 
  14212  *  Set match criteria for bcmFieldQualifyFibreChanVFTVsanId
  14213  *                  qualifier in the field entry.
  14214  */
  14215 extern int bcm_field_qualify_FibreChanVFTVsanId(
  14216     int unit, 
  14217     bcm_field_entry_t entry, 
  14218     uint16 data, 
  14219     uint16 mask);
  14220 
  14221 /* 
  14222  *  Get match criteria for bcmFieldQualifyFibreChanVFTVsanId
  14223  *                  qualifier from the field entry.
  14224  */
  14225 extern int bcm_field_qualify_FibreChanVFTVsanId_get(
  14226     int unit, 
  14227     bcm_field_entry_t entry, 
  14228     uint16 *data, 
  14229     uint16 *mask);
  14230 
  14231 /* 
  14232  *  Set match criteria for bcmFieldQualifyFibreChanVFTVsanPri
  14233  *                  qualifier in the field entry.
  14234  */
  14235 extern int bcm_field_qualify_FibreChanVFTVsanPri(
  14236     int unit, 
  14237     bcm_field_entry_t entry, 
  14238     uint8 data, 
  14239     uint8 mask);
  14240 
  14241 /* 
  14242  *  Get match criteria for bcmFieldQualifyFibreChanVFTVsanPri
  14243  *                  qualifier from the field entry.
  14244  */
  14245 extern int bcm_field_qualify_FibreChanVFTVsanPri_get(
  14246     int unit, 
  14247     bcm_field_entry_t entry, 
  14248     uint8 *data, 
  14249     uint8 *mask);
  14250 
  14251 /* 
  14252  *  Set match criteria for bcmFieldQualifyFcoeSOF
  14253  *                  qualifier in the field entry.
  14254  */
  14255 extern int bcm_field_qualify_FcoeSOF(
  14256     int unit, 
  14257     bcm_field_entry_t entry, 
  14258     uint8 data, 
  14259     uint8 mask);
  14260 
  14261 /* 
  14262  *  Get match criteria for bcmFieldQualifyFcoeSOF
  14263  *                  qualifier from the field entry.
  14264  */
  14265 extern int bcm_field_qualify_FcoeSOF_get(
  14266     int unit, 
  14267     bcm_field_entry_t entry, 
  14268     uint8 *data, 
  14269     uint8 *mask);
  14270 
  14271 /* 
  14272  *  Set match criteria for bcmFieldQualifyFibreChanZoneCheck
  14273  *                  qualifier in the field entry.
  14274  */
  14275 extern int bcm_field_qualify_FibreChanZoneCheck(
  14276     int unit, 
  14277     bcm_field_entry_t entry, 
  14278     uint8 data, 
  14279     uint8 mask);
  14280 
  14281 /* 
  14282  *  Get match criteria for bcmFieldQualifyFibreChanZoneCheck
  14283  *                  qualifier from the field entry.
  14284  */
  14285 extern int bcm_field_qualify_FibreChanZoneCheck_get(
  14286     int unit, 
  14287     bcm_field_entry_t entry, 
  14288     uint8 *data, 
  14289     uint8 *mask);
  14290 
  14291 /* 
  14292  *  Set match criteria for bcmFieldQualifyFibreChanSrcFpmaCheck
  14293  *                  qualifier in the field entry.
  14294  */
  14295 extern int bcm_field_qualify_FibreChanSrcFpmaCheck(
  14296     int unit, 
  14297     bcm_field_entry_t entry, 
  14298     uint8 data, 
  14299     uint8 mask);
  14300 
  14301 /* 
  14302  *  Get match criteria for bcmFieldQualifyFibreChanSrcFpmaCheck
  14303  *                  qualifier from the field entry.
  14304  */
  14305 extern int bcm_field_qualify_FibreChanSrcFpmaCheck_get(
  14306     int unit, 
  14307     bcm_field_entry_t entry, 
  14308     uint8 *data, 
  14309     uint8 *mask);
  14310 
  14311 /* 
  14312  *  Set match criteria for bcmFieldQualifyFibreChanSrcBindCheck
  14313  *                  qualifier in the field entry.
  14314  */
  14315 extern int bcm_field_qualify_FibreChanSrcBindCheck(
  14316     int unit, 
  14317     bcm_field_entry_t entry, 
  14318     uint8 data, 
  14319     uint8 mask);
  14320 
  14321 /* 
  14322  *  Get match criteria for bcmFieldQualifyFibreChanSrcBindCheck
  14323  *                  qualifier from the field entry.
  14324  */
  14325 extern int bcm_field_qualify_FibreChanSrcBindCheck_get(
  14326     int unit, 
  14327     bcm_field_entry_t entry, 
  14328     uint8 *data, 
  14329     uint8 *mask);
  14330 
  14331 /* 
  14332  *  Set match criteria for bcmFieldQualifyFcoeVersionIsZero
  14333  *                  qualifier in the field entry.
  14334  */
  14335 extern int bcm_field_qualify_FcoeVersionIsZero(
  14336     int unit, 
  14337     bcm_field_entry_t entry, 
  14338     uint8 data, 
  14339     uint8 mask);
  14340 
  14341 /* 
  14342  *  Get match criteria for bcmFieldQualifyFcoeVersionIsZero
  14343  *                  qualifier from the field entry.
  14344  */
  14345 extern int bcm_field_qualify_FcoeVersionIsZero_get(
  14346     int unit, 
  14347     bcm_field_entry_t entry, 
  14348     uint8 *data, 
  14349     uint8 *mask);
  14350 
  14351 /* 
  14352  *  Set match criteria for bcmFieldQualifyFibreChanVFTValid
  14353  *                  qualifier in the field entry.
  14354  */
  14355 extern int bcm_field_qualify_FibreChanVFTValid(
  14356     int unit, 
  14357     bcm_field_entry_t entry, 
  14358     uint8 data, 
  14359     uint8 mask);
  14360 
  14361 /* 
  14362  *  Get match criteria for bcmFieldQualifyFibreChanVFTValid
  14363  *                  qualifier from the field entry.
  14364  */
  14365 extern int bcm_field_qualify_FibreChanVFTValid_get(
  14366     int unit, 
  14367     bcm_field_entry_t entry, 
  14368     uint8 *data, 
  14369     uint8 *mask);
  14370 
  14371 /* 
  14372  *  Set match criteria for bcmFieldQualifyForwardingHeaderOffset
  14373  *                  qualifier in the field entry.
  14374  */
  14375 extern int bcm_field_qualify_ForwardingHeaderOffset(
  14376     int unit, 
  14377     bcm_field_entry_t entry, 
  14378     bcm_field_data_offset_base_t base_header, 
  14379     uint32 data, 
  14380     uint32 mask);
  14381 
  14382 /* 
  14383  *  Get match criteria for bcmFieldQualifyForwardingHeaderOffset
  14384  *                  qualifier from the field entry.
  14385  */
  14386 extern int bcm_field_qualify_ForwardingHeaderOffset_get(
  14387     int unit, 
  14388     bcm_field_entry_t entry, 
  14389     bcm_field_data_offset_base_t *base_header, 
  14390     uint32 *data, 
  14391     uint32 *mask);
  14392 
  14393 #endif /* BCM_HIDE_DISPATCHABLE */
  14394 
  14395 typedef enum bcm_field_orientation_e {
  14396     bcmFieldOrientationNetwork = 0, /* Network orientation (hub) */
  14397     bcmFieldOrientationAccess = 1,  /* Access orientation (spoke) */
  14398     bcmFieldOrientationCount = 2    /* Always Last. Not a usable value. */
  14399 } bcm_field_orientation_t;
  14400 
  14401 typedef enum bcm_field_start_packet_strip_e {
  14402     bcmFieldStartToConfigurableStrip = 0, /* Configurable size of number of bytes
  14403                                            to strip, according to param1. */
  14404     bcmFieldStartToL2Strip = 1,         /* Remove the start-of-packet up to the
  14405                                            L2 header. */
  14406     bcmFieldStartToFwdStrip = 2,        /* Remove the start-of-packet up to the
  14407                                            Forwarding header. */
  14408     bcmFieldStartToFwdNextStrip = 3,    /* Remove the start-of-packet up to the
  14409                                            header following the Forwarding
  14410                                            header. */
  14411     bcmFieldStartStripCount = 4         /* Always Last. Not a usable value. */
  14412 } bcm_field_start_packet_strip_t;
  14413 
  14414 #ifndef BCM_HIDE_DISPATCHABLE
  14415 
  14416 /* 
  14417  * Set qualification on a particular stage.  This feature is normally
  14418  * used for preselectors.
  14419  */
  14420 extern int bcm_field_qualify_Stage(
  14421     int unit, 
  14422     bcm_field_entry_t entry, 
  14423     bcm_field_stage_t data);
  14424 
  14425 /* Get stage qualifier information. */
  14426 extern int bcm_field_qualify_Stage_get(
  14427     int unit, 
  14428     bcm_field_entry_t entry, 
  14429     bcm_field_stage_t *data);
  14430 
  14431 /* 
  14432  * Configure match criteria for bcmFieldQualifyIpFragNonOrFirst
  14433  *         qualifier from the field entry.
  14434  */
  14435 extern int bcm_field_qualify_IpFragNonOrFirst(
  14436     int unit, 
  14437     bcm_field_entry_t entry, 
  14438     uint8 data, 
  14439     uint8 mask);
  14440 
  14441 /* 
  14442  * Get match criteria for bcmFieldQualifyIpFragNonOrFirst
  14443  *                qualifier from the field entry.
  14444  */
  14445 extern int bcm_field_qualify_IpFragNonOrFirst_get(
  14446     int unit, 
  14447     bcm_field_entry_t entry, 
  14448     uint8 *data, 
  14449     uint8 *mask);
  14450 
  14451 /* 
  14452  * Configure match criteria for bcmFieldQualifyPacketLength
  14453  *             qualifier from the field entry.
  14454  */
  14455 extern int bcm_field_qualify_PacketLength(
  14456     int unit, 
  14457     bcm_field_entry_t entry, 
  14458     uint16 data, 
  14459     uint16 mask);
  14460 
  14461 /* 
  14462  * Get match criteria for bcmFieldQualifyPacketLength
  14463  *                qualifier from the field entry.
  14464  */
  14465 extern int bcm_field_qualify_PacketLength_get(
  14466     int unit, 
  14467     bcm_field_entry_t entry, 
  14468     uint16 *data, 
  14469     uint16 *mask);
  14470 
  14471 /* 
  14472  * Set match criteria for bcmFieldQualifyGroupClass
  14473  *                qualifier in the field entry.
  14474  */
  14475 extern int bcm_field_qualify_GroupClass(
  14476     int unit, 
  14477     bcm_field_entry_t entry, 
  14478     uint32 data, 
  14479     uint32 mask);
  14480 
  14481 /* 
  14482  * Get match criteria for bcmFieldQualifyGroupClass
  14483  *                qualifier in the field entry.
  14484  */
  14485 extern int bcm_field_qualify_GroupClass_get(
  14486     int unit, 
  14487     bcm_field_entry_t entry, 
  14488     uint32 *data, 
  14489     uint32 *mask);
  14490 
  14491 /* 
  14492  * Set match criteria for bcmFieldQualifyUdfClass
  14493  *                qualifier in the field entry.
  14494  */
  14495 extern int bcm_field_qualify_UdfClass(
  14496     int unit, 
  14497     bcm_field_entry_t entry, 
  14498     uint32 data, 
  14499     uint32 mask);
  14500 
  14501 /* 
  14502  * Get match criteria for bcmFieldQualifyUdfClass
  14503  *                qualifier in the field entry.
  14504  */
  14505 extern int bcm_field_qualify_UdfClass_get(
  14506     int unit, 
  14507     bcm_field_entry_t entry, 
  14508     uint32 *data, 
  14509     uint32 *mask);
  14510 
  14511 /* 
  14512  * Set match criteria for bcmFieldQualifyInterfaceLookupClassPort
  14513  *                qualifier in the field entry.
  14514  */
  14515 extern int bcm_field_qualify_InterfaceLookupClassPort(
  14516     int unit, 
  14517     bcm_field_entry_t entry, 
  14518     uint32 data, 
  14519     uint32 mask);
  14520 
  14521 /* 
  14522  * Get match criteria for bcmFieldQualifyInterfaceLookupClassPort
  14523  *                qualifier in the field entry.
  14524  */
  14525 extern int bcm_field_qualify_InterfaceLookupClassPort_get(
  14526     int unit, 
  14527     bcm_field_entry_t entry, 
  14528     uint32 *data, 
  14529     uint32 *mask);
  14530 
  14531 /* 
  14532  * Set match criteria for
  14533  * bcmFieldQualifyInterfaceIngressKeySelectClassPort
  14534  *                qualifier in the field entry.
  14535  */
  14536 extern int bcm_field_qualify_InterfaceIngressKeySelectClassPort(
  14537     int unit, 
  14538     bcm_field_entry_t entry, 
  14539     uint32 data, 
  14540     uint32 mask);
  14541 
  14542 /* 
  14543  * Get match criteria for
  14544  * bcmFieldQualifyInterfaceIngressKeySelectClassPort
  14545  *                qualifier in the field entry.
  14546  */
  14547 extern int bcm_field_qualify_InterfaceIngressKeySelectClassPort_get(
  14548     int unit, 
  14549     bcm_field_entry_t entry, 
  14550     uint32 *data, 
  14551     uint32 *mask);
  14552 
  14553 /* 
  14554  * Set match criteria for bcmFieldQualifyITag
  14555  *                qualifier in the field entry.
  14556  */
  14557 extern int bcm_field_qualify_ITag(
  14558     int unit, 
  14559     bcm_field_entry_t entry, 
  14560     uint32 data, 
  14561     uint32 mask);
  14562 
  14563 /* 
  14564  * Get match criteria for bcmFieldQualifyITag
  14565  *                qualifier from the field entry.
  14566  */
  14567 extern int bcm_field_qualify_ITag_get(
  14568     int unit, 
  14569     bcm_field_entry_t entry, 
  14570     uint32 *data, 
  14571     uint32 *mask);
  14572 
  14573 /* 
  14574  * Set match criteria for bcmFieldQualifyBfdYourDiscriminator
  14575  *                qualifier in the field entry.
  14576  */
  14577 extern int bcm_field_qualify_BfdYourDiscriminator(
  14578     int unit, 
  14579     bcm_field_entry_t entry, 
  14580     uint32 data, 
  14581     uint32 mask);
  14582 
  14583 /* 
  14584  * Get match criteria for bcmFieldQualifyBfdYourDiscriminator
  14585  *                qualifier from the field entry.
  14586  */
  14587 extern int bcm_field_qualify_BfdYourDiscriminator_get(
  14588     int unit, 
  14589     bcm_field_entry_t entry, 
  14590     uint32 *data, 
  14591     uint32 *mask);
  14592 
  14593 /* 
  14594  * Set match criteria for bcmFieldQualifyCpuVisibilityPacket
  14595  *                qualifier in the field entry.
  14596  */
  14597 extern int bcm_field_qualify_CpuVisibilityPacket(
  14598     int unit, 
  14599     bcm_field_entry_t entry, 
  14600     uint8 data, 
  14601     uint8 mask);
  14602 
  14603 /* 
  14604  * Get match criteria for bcmFieldQualifyCpuVisibilityPacket
  14605  *                qualifier from the field entry.
  14606  */
  14607 extern int bcm_field_qualify_CpuVisibilityPacket_get(
  14608     int unit, 
  14609     bcm_field_entry_t entry, 
  14610     uint8 *data, 
  14611     uint8 *mask);
  14612 
  14613 /* 
  14614  * Set match criteria for bcmFieldQualifyDstL2MulticastGroup
  14615  *                qualifier in the field entry.
  14616  */
  14617 extern int bcm_field_qualify_DstL2MulticastGroup(
  14618     int unit, 
  14619     bcm_field_entry_t entry, 
  14620     bcm_multicast_t group, 
  14621     bcm_multicast_t mask);
  14622 
  14623 /* 
  14624  * Get match criteria for bcmFieldQualifyDstL2MulticastGroup
  14625  *                qualifier from the field entry.
  14626  */
  14627 extern int bcm_field_qualify_DstL2MulticastGroup_get(
  14628     int unit, 
  14629     bcm_field_entry_t entry, 
  14630     bcm_multicast_t *group, 
  14631     bcm_multicast_t *mask);
  14632 
  14633 /* 
  14634  * Set match criteria for bcmFieldQualifyDstL3MulticastGroup
  14635  *                qualifier in the field entry.
  14636  */
  14637 extern int bcm_field_qualify_DstL3MulticastGroup(
  14638     int unit, 
  14639     bcm_field_entry_t entry, 
  14640     bcm_multicast_t group, 
  14641     bcm_multicast_t mask);
  14642 
  14643 /* 
  14644  * Get match criteria for bcmFieldQualifyDstL3MulticastGroup
  14645  *                qualifier from the field entry.
  14646  */
  14647 extern int bcm_field_qualify_DstL3MulticastGroup_get(
  14648     int unit, 
  14649     bcm_field_entry_t entry, 
  14650     bcm_multicast_t *group, 
  14651     bcm_multicast_t *mask);
  14652 
  14653 #endif /* BCM_HIDE_DISPATCHABLE */
  14654 
  14655 /* Oam Type (ETHERNET, MPLS). */
  14656 typedef enum bcm_field_oam_type_e {
  14657     bcmFieldOamTypeEthernet,    /* Oam Type Ethernet. */
  14658     bcmFieldOamTypeMpls,        /* Oam Type MPLS. */
  14659     bcmFieldOamTypeCount        /* Always last. Not a usable value. */
  14660 } bcm_field_oam_type_t;
  14661 
  14662 #define BCM_FIELD_OAM_TYPE \
  14663 { \
  14664     "Ethernet", \
  14665     "Mpls"  \
  14666 }
  14667 
  14668 /* 
  14669  * Mpls Oam Control Packet Type (UNKNOWN, VCCV1, VCCV2, VCCV3,
  14670  * VCCV4/GAL_ACH).
  14671  */
  14672 typedef enum bcm_field_MplsOam_Control_pktType_e {
  14673     bcmFieldMplsOamControlPktTypeUnknown, /* Mpls Oam Control Packet Type UNKNOWN. */
  14674     bcmFieldMplsOamControlPktTypeVCCV1, /* Mpls Oam Control Packet Type VCCV1. */
  14675     bcmFieldMplsOamControlPktTypeVCCV2, /* Mpls Oam Control Packet Type VCCV2. */
  14676     bcmFieldMplsOamControlPktTypeVCCV3, /* Mpls Oam Control Packet Type VCCV3. */
  14677     bcmFieldMplsOamControlPktTypeVCCV4_GAL_ACH, /* Mpls Oam Control Packet Type
  14678                                            VCCV4/GAL_ACH. */
  14679     bcmFieldMplsOamControlPktTypeCount  /* Always last. Not a usable value. */
  14680 } bcm_field_MplsOam_Control_pktType_t;
  14681 
  14682 #define BCM_FIELD_MPLS_OAM_CONTROL_PKT_TYPE \
  14683 { \
  14684     "Unknown", \
  14685     "VCCV1", \
  14686     "VCCV2", \
  14687     "VCCV3", \
  14688     "VCCV4_GAL_ACH"  \
  14689 }
  14690 
  14691 #ifndef BCM_HIDE_DISPATCHABLE
  14692 
  14693 /* bcm_field_qualify_L3SrcBind */
  14694 extern int bcm_field_qualify_L3SrcBind(
  14695     int unit, 
  14696     bcm_field_entry_t entry, 
  14697     uint8 data, 
  14698     uint8 mask);
  14699 
  14700 /* 
  14701  * Get match criteria for bcmFieldQualifyL3SrcBind
  14702  *                qualifier from the field entry.
  14703  */
  14704 extern int bcm_field_qualify_L3SrcBind_get(
  14705     int unit, 
  14706     bcm_field_entry_t entry, 
  14707     uint8 *data, 
  14708     uint8 *mask);
  14709 
  14710 /* bcm_field_qualify_ECid */
  14711 extern int bcm_field_qualify_ECid(
  14712     int unit, 
  14713     bcm_field_entry_t entry, 
  14714     uint32 data, 
  14715     uint32 mask);
  14716 
  14717 /* 
  14718  * Get match criteria for bcmFieldQualifyECid
  14719  *                qualifier from the field entry.
  14720  */
  14721 extern int bcm_field_qualify_ECid_get(
  14722     int unit, 
  14723     bcm_field_entry_t entry, 
  14724     uint32 *data, 
  14725     uint32 *mask);
  14726 
  14727 /* bcm_field_qualify_IngressECid */
  14728 extern int bcm_field_qualify_IngressECid(
  14729     int unit, 
  14730     bcm_field_entry_t entry, 
  14731     uint32 data, 
  14732     uint32 mask);
  14733 
  14734 /* 
  14735  * Get match criteria for bcmFieldQualifyIngressECid
  14736  *                qualifier from the field entry.
  14737  */
  14738 extern int bcm_field_qualify_IngressECid_get(
  14739     int unit, 
  14740     bcm_field_entry_t entry, 
  14741     uint32 *data, 
  14742     uint32 *mask);
  14743 
  14744 /* bcm_field_qualify_ETag */
  14745 extern int bcm_field_qualify_ETag(
  14746     int unit, 
  14747     bcm_field_entry_t entry, 
  14748     uint64 data, 
  14749     uint64 mask);
  14750 
  14751 /* 
  14752  * Get match criteria for bcmFieldQualifyETag
  14753  *                qualifier from the field entry.
  14754  */
  14755 extern int bcm_field_qualify_ETag_get(
  14756     int unit, 
  14757     bcm_field_entry_t entry, 
  14758     uint64 *data, 
  14759     uint64 *mask);
  14760 
  14761 #endif /* BCM_HIDE_DISPATCHABLE */
  14762 
  14763 typedef enum bcm_field_system_header_e {
  14764     bcmFieldSystemHeaderPphEei = 0, /* EEI extension of the PPH (Packet
  14765                                        Processing Header) */
  14766     bcmFieldSystemHeaderCount = 1   /* Always Last. Not a usable value. */
  14767 } bcm_field_system_header_t;
  14768 
  14769 typedef enum bcm_field_fabric_header_e {
  14770     bcmFieldFabricHeaderEthernet = 0,   /* Ethernet fabric header */
  14771     bcmFieldFabricHeaderTrafficManagementUcast = 1, /* Unicast Traffic Management fabric
  14772                                            header */
  14773     bcmFieldFabricHeaderTrafficManagementMcast = 2, /* Multicast Traffic Management fabric
  14774                                            header */
  14775     bcmFieldFabricHeaderTrafficManagementVPort = 3, /*  VPort Traffic Management fabric
  14776                                            header */
  14777     bcmFieldFabricHeaderStacking = 4,   /* Stacking fabric header */
  14778     bcmFieldFabricHeaderEthernetDSP = 5, /* regular Ethernet, stacking FTMH with
  14779                                            DSP Extension and PPH fabric header */
  14780     bcmFieldFabricHeaderEthernetLearn = 6, /* regular Ethernet, stacking FTMH with
  14781                                            DSP Extension and PPH fabric header */
  14782     bcmFieldFabricHeaderEthernetlatency = 7, /* regular Ethernet, stacking FTMH with
  14783                                            OAM-TS-LATENCY header */
  14784     bcmFieldFabricHeaderEthernetLearnDisable = 8, /* Regular Ethernet, with disabled PPH
  14785                                            header learn extension. */
  14786     bcmFieldFabricHeaderCount = 9       /* Always Last. Not a usable value. */
  14787 } bcm_field_fabric_header_t;
  14788 
  14789 /* Multi-range flags */
  14790 #define BCM_FIELD_RANGE_MULTI_WITH_ID   0x00000001 /* Range Id is provided */
  14791 #define BCM_FIELD_RANGE_MULTI_REPLACE   0x00000002 /* Replace existing range */
  14792 
  14793 /* VXLAN Flags from IETF Draft(for bcm_field_qualify_VxlanFlags). */
  14794 #define BCM_FIELD_VXLAN_VNI_VALID   0x8        /* VXLAN Network ID (VNI)- Valid */
  14795 
  14796 /* FCOE zone check action types. */
  14797 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_NOP 0          
  14798 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_DISABLE 1          
  14799 #define BCM_FIELD_FIBRE_CHAN_ZONE_CHECK_ENABLE 2          
  14800 
  14801 #ifndef BCM_HIDE_DISPATCHABLE
  14802 
  14803 /* 
  14804  * Set match criteria for bcmFieldQualifyOamMdl
  14805  *                 qualifier from the field entry
  14806  */
  14807 extern int bcm_field_qualify_OamMdl(
  14808     int unit, 
  14809     bcm_field_entry_t entry, 
  14810     uint8 data, 
  14811     uint8 mask);
  14812 
  14813 /* 
  14814  * Get match criteria for bcmFieldQualifyOamMdl
  14815  *                qualifier from the field entry.
  14816  */
  14817 extern int bcm_field_qualify_OamMdl_get(
  14818     int unit, 
  14819     bcm_field_entry_t entry, 
  14820     uint8 *data, 
  14821     uint8 *mask);
  14822 
  14823 /* Set match criteria for IntCongestionNotification qualifier. */
  14824 extern int bcm_field_qualify_IntCongestionNotification(
  14825     int unit, 
  14826     bcm_field_entry_t entry, 
  14827     uint8 data, 
  14828     uint8 mask);
  14829 
  14830 /* Get match criteria for IntCongestionNotification qualifier. */
  14831 extern int bcm_field_qualify_IntCongestionNotification_get(
  14832     int unit, 
  14833     bcm_field_entry_t entry, 
  14834     uint8 *data, 
  14835     uint8 *mask);
  14836 
  14837 /* bcm_field_qualify_SrcNivGport */
  14838 extern int bcm_field_qualify_SrcNivGport(
  14839     int unit, 
  14840     bcm_field_entry_t entry, 
  14841     bcm_gport_t niv_port_id);
  14842 
  14843 /* bcm_field_qualify_DstNivGport */
  14844 extern int bcm_field_qualify_DstNivGport(
  14845     int unit, 
  14846     bcm_field_entry_t entry, 
  14847     bcm_gport_t niv_port_id);
  14848 
  14849 /* 
  14850  * Get match criteria for bcmFieldQualifySrcNivGport
  14851  *                qualifier from the field entry.
  14852  */
  14853 extern int bcm_field_qualify_SrcNivGport_get(
  14854     int unit, 
  14855     bcm_field_entry_t entry, 
  14856     bcm_gport_t *niv_port_id);
  14857 
  14858 /* 
  14859  * Get match criteria for bcmFieldQualifyDstNivGport
  14860  *                qualifier from the field entry.
  14861  */
  14862 extern int bcm_field_qualify_DstNivGport_get(
  14863     int unit, 
  14864     bcm_field_entry_t entry, 
  14865     bcm_gport_t *niv_port_id);
  14866 
  14867 /* Set match criteria for DstGport qualifier. */
  14868 extern int bcm_field_qualify_DstGport(
  14869     int unit, 
  14870     bcm_field_entry_t entry, 
  14871     bcm_gport_t port_id);
  14872 
  14873 /* Get match criteria for DstGport qualifier. */
  14874 extern int bcm_field_qualify_DstGport_get(
  14875     int unit, 
  14876     bcm_field_entry_t entry, 
  14877     bcm_gport_t *port_id);
  14878 
  14879 /* Set match criteria for MirrorEgressDisabled qualifier. */
  14880 extern int bcm_field_qualify_MirrorEgressDisabled(
  14881     int unit, 
  14882     bcm_field_entry_t entry, 
  14883     uint8 data, 
  14884     uint8 mask);
  14885 
  14886 /* Get match criteria for MirrorEgressDisabled qualifier. */
  14887 extern int bcm_field_qualify_MirrorEgressDisabled_get(
  14888     int unit, 
  14889     bcm_field_entry_t entry, 
  14890     uint8 *data, 
  14891     uint8 *mask);
  14892 
  14893 /* Set match criteria for BypassSrcMacFilter qualifier. */
  14894 extern int bcm_field_qualify_BypassSrcMacFilter(
  14895     int unit, 
  14896     bcm_field_entry_t entry, 
  14897     uint8 data, 
  14898     uint8 mask);
  14899 
  14900 /* Get match criteria for BypassSrcMacFilter qualifier. */
  14901 extern int bcm_field_qualify_BypassSrcMacFilter_get(
  14902     int unit, 
  14903     bcm_field_entry_t entry, 
  14904     uint8 *data, 
  14905     uint8 *mask);
  14906 
  14907 /* Set match criteria for RxTrapCodeForSnoop qualifier. */
  14908 extern int bcm_field_qualify_RxTrapCodeForSnoop(
  14909     int unit, 
  14910     bcm_field_entry_t entry, 
  14911     uint32 data, 
  14912     uint32 mask);
  14913 
  14914 /* Get match criteria for RxTrapCodeForSnoop qualifier. */
  14915 extern int bcm_field_qualify_RxTrapCodeForSnoop_get(
  14916     int unit, 
  14917     bcm_field_entry_t entry, 
  14918     uint32 *data, 
  14919     uint32 *mask);
  14920 
  14921 /* Set match criteria for IpmcStarGroupValue qualifier. */
  14922 extern int bcm_field_qualify_IpmcStarGroupValue(
  14923     int unit, 
  14924     bcm_field_entry_t entry, 
  14925     uint64 data, 
  14926     uint64 mask);
  14927 
  14928 /* Get match criteria for IpmcStarGroupValue qualifier. */
  14929 extern int bcm_field_qualify_IpmcStarGroupValue_get(
  14930     int unit, 
  14931     bcm_field_entry_t entry, 
  14932     uint64 *data, 
  14933     uint64 *mask);
  14934 
  14935 /* Set match criteria for NativeVSwitch qualifier. */
  14936 extern int bcm_field_qualify_NativeVSwitch(
  14937     int unit, 
  14938     bcm_field_entry_t entry, 
  14939     bcm_vlan_t data, 
  14940     bcm_vlan_t mask);
  14941 
  14942 /* Get match criteria for NativeVSwitch qualifier. */
  14943 extern int bcm_field_qualify_NativeVSwitch_get(
  14944     int unit, 
  14945     bcm_field_entry_t entry, 
  14946     bcm_vlan_t *data, 
  14947     bcm_vlan_t *mask);
  14948 
  14949 /* Set match criteria for NativeVSwitchValid qualifier. */
  14950 extern int bcm_field_qualify_NativeVSwitchValid(
  14951     int unit, 
  14952     bcm_field_entry_t entry, 
  14953     uint8 data, 
  14954     uint8 mask);
  14955 
  14956 /* Get match criteria for NativeVSwitchValid qualifier. */
  14957 extern int bcm_field_qualify_NativeVSwitchValid_get(
  14958     int unit, 
  14959     bcm_field_entry_t entry, 
  14960     uint8 *data, 
  14961     uint8 *mask);
  14962 
  14963 /* Set match criteria for TrillIVersion qualifier. */
  14964 extern int bcm_field_qualify_TrillIVersion(
  14965     int unit, 
  14966     bcm_field_entry_t entry, 
  14967     uint8 data, 
  14968     uint8 mask);
  14969 
  14970 /* Get match criteria for TrillIVersion qualifier. */
  14971 extern int bcm_field_qualify_TrillIVersion_get(
  14972     int unit, 
  14973     bcm_field_entry_t entry, 
  14974     uint8 *data, 
  14975     uint8 *mask);
  14976 
  14977 /* Set match criteria for TrillIngressRbridge qualifier. */
  14978 extern int bcm_field_qualify_TrillIngressRbridge(
  14979     int unit, 
  14980     bcm_field_entry_t entry, 
  14981     uint16 data, 
  14982     uint16 mask);
  14983 
  14984 /* Get match criteria for TrillIngressRbridge qualifier. */
  14985 extern int bcm_field_qualify_TrillIngressRbridge_get(
  14986     int unit, 
  14987     bcm_field_entry_t entry, 
  14988     uint16 *data, 
  14989     uint16 *mask);
  14990 
  14991 /* Set match criteria for TrillMultiDestination qualifier. */
  14992 extern int bcm_field_qualify_TrillMultiDestination(
  14993     int unit, 
  14994     bcm_field_entry_t entry, 
  14995     uint8 data, 
  14996     uint8 mask);
  14997 
  14998 /* Get match criteria for TrillMultiDestination qualifier. */
  14999 extern int bcm_field_qualify_TrillMultiDestination_get(
  15000     int unit, 
  15001     bcm_field_entry_t entry, 
  15002     uint8 *data, 
  15003     uint8 *mask);
  15004 
  15005 /* Set match criteria for TrillOpLength qualifier. */
  15006 extern int bcm_field_qualify_TrillOpLength(
  15007     int unit, 
  15008     bcm_field_entry_t entry, 
  15009     uint8 data, 
  15010     uint8 mask);
  15011 
  15012 /* Get match criteria for TrillOpLength qualifier. */
  15013 extern int bcm_field_qualify_TrillOpLength_get(
  15014     int unit, 
  15015     bcm_field_entry_t entry, 
  15016     uint8 *data, 
  15017     uint8 *mask);
  15018 
  15019 /* Set match criteria for TrillHopCount qualifier. */
  15020 extern int bcm_field_qualify_TrillHopCount(
  15021     int unit, 
  15022     bcm_field_entry_t entry, 
  15023     uint8 data, 
  15024     uint8 mask);
  15025 
  15026 /* Get match criteria for TrillHopCount qualifier. */
  15027 extern int bcm_field_qualify_TrillHopCount_get(
  15028     int unit, 
  15029     bcm_field_entry_t entry, 
  15030     uint8 *data, 
  15031     uint8 *mask);
  15032 
  15033 /* Set match criteria for TrillPayload qualifier. */
  15034 extern int bcm_field_qualify_TrillPayload(
  15035     int unit, 
  15036     bcm_field_entry_t entry, 
  15037     uint64 data, 
  15038     uint64 mask);
  15039 
  15040 /* Get match criteria for TrillPayload qualifier. */
  15041 extern int bcm_field_qualify_TrillPayload_get(
  15042     int unit, 
  15043     bcm_field_entry_t entry, 
  15044     uint64 *data, 
  15045     uint64 *mask);
  15046 
  15047 /* Set match criteria for MplsForwardingLabelPayload qualifier. */
  15048 extern int bcm_field_qualify_MplsForwardingLabelPayload(
  15049     int unit, 
  15050     bcm_field_entry_t entry, 
  15051     uint64 data, 
  15052     uint64 mask);
  15053 
  15054 /* Get match criteria for MplsForwardingLabelPayload qualifier. */
  15055 extern int bcm_field_qualify_MplsForwardingLabelPayload_get(
  15056     int unit, 
  15057     bcm_field_entry_t entry, 
  15058     uint64 *data, 
  15059     uint64 *mask);
  15060 
  15061 /* Set match criteria for IncomingIpIfClass qualifier. */
  15062 extern int bcm_field_qualify_IncomingIpIfClass(
  15063     int unit, 
  15064     bcm_field_entry_t entry, 
  15065     uint32 data, 
  15066     uint32 mask);
  15067 
  15068 /* Get match criteria for IncomingIpIfClass qualifier. */
  15069 extern int bcm_field_qualify_IncomingIpIfClass_get(
  15070     int unit, 
  15071     bcm_field_entry_t entry, 
  15072     uint32 *data, 
  15073     uint32 *mask);
  15074 
  15075 /* Set match criteria for L2GreProtocolType qualifier. */
  15076 extern int bcm_field_qualify_L2GreProtocolType(
  15077     int unit, 
  15078     bcm_field_entry_t entry, 
  15079     uint16 data, 
  15080     uint16 mask);
  15081 
  15082 /* Get match criteria for L2GreProtocolType qualifier. */
  15083 extern int bcm_field_qualify_L2GreProtocolType_get(
  15084     int unit, 
  15085     bcm_field_entry_t entry, 
  15086     uint16 *data, 
  15087     uint16 *mask);
  15088 
  15089 /* Set match criteria for L2GreVsid qualifier. */
  15090 extern int bcm_field_qualify_L2GreVsid(
  15091     int unit, 
  15092     bcm_field_entry_t entry, 
  15093     uint32 data, 
  15094     uint32 mask);
  15095 
  15096 /* Get match criteria for L2GreVsid qualifier. */
  15097 extern int bcm_field_qualify_L2GreVsid_get(
  15098     int unit, 
  15099     bcm_field_entry_t entry, 
  15100     uint32 *data, 
  15101     uint32 *mask);
  15102 
  15103 /* Set match criteria for L2GreFlowId qualifier. */
  15104 extern int bcm_field_qualify_L2GreFlowId(
  15105     int unit, 
  15106     bcm_field_entry_t entry, 
  15107     uint8 data, 
  15108     uint8 mask);
  15109 
  15110 /* Get match criteria for L2GreFlowId qualifier. */
  15111 extern int bcm_field_qualify_L2GreFlowId_get(
  15112     int unit, 
  15113     bcm_field_entry_t entry, 
  15114     uint8 *data, 
  15115     uint8 *mask);
  15116 
  15117 /* Set match criteria for MimVlanPri qualifier. */
  15118 extern int bcm_field_qualify_MimVlanPri(
  15119     int unit, 
  15120     bcm_field_entry_t entry, 
  15121     uint8 data, 
  15122     uint8 mask);
  15123 
  15124 /* Get match criteria for MimVlanPri qualifier. */
  15125 extern int bcm_field_qualify_MimVlanPri_get(
  15126     int unit, 
  15127     bcm_field_entry_t entry, 
  15128     uint8 *data, 
  15129     uint8 *mask);
  15130 
  15131 /* Set match criteria for MimVlanCfi qualifier. */
  15132 extern int bcm_field_qualify_MimVlanCfi(
  15133     int unit, 
  15134     bcm_field_entry_t entry, 
  15135     uint8 data, 
  15136     uint8 mask);
  15137 
  15138 /* Get match criteria for MimVlanCfi qualifier. */
  15139 extern int bcm_field_qualify_MimVlanCfi_get(
  15140     int unit, 
  15141     bcm_field_entry_t entry, 
  15142     uint8 *data, 
  15143     uint8 *mask);
  15144 
  15145 /* Set match criteria for Fhei qualifier. */
  15146 extern int bcm_field_qualify_Fhei(
  15147     int unit, 
  15148     bcm_field_entry_t entry, 
  15149     uint64 data, 
  15150     uint64 mask);
  15151 
  15152 /* Get match criteria for Fhei qualifier. */
  15153 extern int bcm_field_qualify_Fhei_get(
  15154     int unit, 
  15155     bcm_field_entry_t entry, 
  15156     uint64 *data, 
  15157     uint64 *mask);
  15158 
  15159 /* Set match criteria for FheiSize qualifier. */
  15160 extern int bcm_field_qualify_FheiSize(
  15161     int unit, 
  15162     bcm_field_entry_t entry, 
  15163     uint32 data, 
  15164     uint32 mask);
  15165 
  15166 /* Get match criteria for FheiSize qualifier. */
  15167 extern int bcm_field_qualify_FheiSize_get(
  15168     int unit, 
  15169     bcm_field_entry_t entry, 
  15170     uint32 *data, 
  15171     uint32 *mask);
  15172 
  15173 /* 
  15174  * Set match criteria for bcmFieldQualifyOamType
  15175  *                 qualifier from the field entry
  15176  */
  15177 extern int bcm_field_qualify_OamType(
  15178     int unit, 
  15179     bcm_field_entry_t entry, 
  15180     bcm_field_oam_type_t oam_type);
  15181 
  15182 /* 
  15183  * Get match criteria for bcmFieldQualifyOamType
  15184  *                qualifier from the field entry.
  15185  */
  15186 extern int bcm_field_qualify_OamType_get(
  15187     int unit, 
  15188     bcm_field_entry_t entry, 
  15189     bcm_field_oam_type_t *oam_type);
  15190 
  15191 /* Set match criteria for bcmFieldQualifyDstClassL2. */
  15192 extern int bcm_field_qualify_EthernetOamDstClassL2(
  15193     int unit, 
  15194     bcm_field_entry_t entry, 
  15195     uint8 data, 
  15196     uint8 mask);
  15197 
  15198 /* Get match criteria for bcmFieldQualifyDstClassL2. */
  15199 extern int bcm_field_qualify_EthernetOamDstClassL2_get(
  15200     int unit, 
  15201     bcm_field_entry_t entry, 
  15202     uint8 *data, 
  15203     uint8 *mask);
  15204 
  15205 /* Set match criteria for bcmFieldQualifyEthernetOamTxPktUPMEP. */
  15206 extern int bcm_field_qualify_EthernetOamTxPktUPMEP(
  15207     int unit, 
  15208     bcm_field_entry_t entry, 
  15209     uint8 data, 
  15210     uint8 mask);
  15211 
  15212 /* Get match criteria for bcmFieldQualifyEthernetOamTxPktUPMEP. */
  15213 extern int bcm_field_qualify_EthernetOamTxPktUPMEP_get(
  15214     int unit, 
  15215     bcm_field_entry_t entry, 
  15216     uint8 *data, 
  15217     uint8 *mask);
  15218 
  15219 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassNiv. */
  15220 extern int bcm_field_qualify_EthernetOamInterfaceClassNiv(
  15221     int unit, 
  15222     bcm_field_entry_t entry, 
  15223     uint8 data, 
  15224     uint8 mask);
  15225 
  15226 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassNiv. */
  15227 extern int bcm_field_qualify_EthernetOamInterfaceClassNiv_get(
  15228     int unit, 
  15229     bcm_field_entry_t entry, 
  15230     uint8 *data, 
  15231     uint8 *mask);
  15232 
  15233 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassMim. */
  15234 extern int bcm_field_qualify_EthernetOamInterfaceClassMim(
  15235     int unit, 
  15236     bcm_field_entry_t entry, 
  15237     uint8 data, 
  15238     uint8 mask);
  15239 
  15240 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassMim. */
  15241 extern int bcm_field_qualify_EthernetOamInterfaceClassMim_get(
  15242     int unit, 
  15243     bcm_field_entry_t entry, 
  15244     uint8 *data, 
  15245     uint8 *mask);
  15246 
  15247 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassVxlan. */
  15248 extern int bcm_field_qualify_EthernetOamInterfaceClassVxlan(
  15249     int unit, 
  15250     bcm_field_entry_t entry, 
  15251     uint8 data, 
  15252     uint8 mask);
  15253 
  15254 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVxlan. */
  15255 extern int bcm_field_qualify_EthernetOamInterfaceClassVxlan_get(
  15256     int unit, 
  15257     bcm_field_entry_t entry, 
  15258     uint8 *data, 
  15259     uint8 *mask);
  15260 
  15261 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassVlan. */
  15262 extern int bcm_field_qualify_EthernetOamInterfaceClassVlan(
  15263     int unit, 
  15264     bcm_field_entry_t entry, 
  15265     uint8 data, 
  15266     uint8 mask);
  15267 
  15268 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVlan. */
  15269 extern int bcm_field_qualify_EthernetOamInterfaceClassVlan_get(
  15270     int unit, 
  15271     bcm_field_entry_t entry, 
  15272     uint8 *data, 
  15273     uint8 *mask);
  15274 
  15275 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassPort. */
  15276 extern int bcm_field_qualify_EthernetOamInterfaceClassPort(
  15277     int unit, 
  15278     bcm_field_entry_t entry, 
  15279     uint8 data, 
  15280     uint8 mask);
  15281 
  15282 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassPort. */
  15283 extern int bcm_field_qualify_EthernetOamInterfaceClassPort_get(
  15284     int unit, 
  15285     bcm_field_entry_t entry, 
  15286     uint8 *data, 
  15287     uint8 *mask);
  15288 
  15289 /* 
  15290  * Set match criteria for
  15291  * bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst.
  15292  */
  15293 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeyFirst(
  15294     int unit, 
  15295     bcm_field_entry_t entry, 
  15296     uint8 data, 
  15297     uint8 mask);
  15298 
  15299 /* 
  15300  * Get match criteria for
  15301  * bcmFieldQualifyEthernetOamClassVlanTranslateKeyFirst.
  15302  */
  15303 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeyFirst_get(
  15304     int unit, 
  15305     bcm_field_entry_t entry, 
  15306     uint8 *data, 
  15307     uint8 *mask);
  15308 
  15309 /* 
  15310  * Set match criteria for
  15311  * bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond.
  15312  */
  15313 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeySecond(
  15314     int unit, 
  15315     bcm_field_entry_t entry, 
  15316     uint8 data, 
  15317     uint8 mask);
  15318 
  15319 /* 
  15320  * Get match criteria for
  15321  * bcmFieldQualifyEthernetOamClassVlanTranslateKeySecond.
  15322  */
  15323 extern int bcm_field_qualify_EthernetOamClassVlanTranslateKeySecond_get(
  15324     int unit, 
  15325     bcm_field_entry_t entry, 
  15326     uint8 *data, 
  15327     uint8 *mask);
  15328 
  15329 /* Set match criteria for bcmFieldQualifyEthernetOamInterfaceClassMpls. */
  15330 extern int bcm_field_qualify_EthernetOamInterfaceClassMpls(
  15331     int unit, 
  15332     bcm_field_entry_t entry, 
  15333     uint8 data, 
  15334     uint8 mask);
  15335 
  15336 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassMpls. */
  15337 extern int bcm_field_qualify_EthernetOamInterfaceClassMpls_get(
  15338     int unit, 
  15339     bcm_field_entry_t entry, 
  15340     uint8 *data, 
  15341     uint8 *mask);
  15342 
  15343 /* Set match criteria for bcmFieldQualifyEthernetOamClassVpn. */
  15344 extern int bcm_field_qualify_EthernetOamClassVpn(
  15345     int unit, 
  15346     bcm_field_entry_t entry, 
  15347     uint8 data, 
  15348     uint8 mask);
  15349 
  15350 /* Get match criteria for bcmFieldQualifyEthernetOamInterfaceClassVpn. */
  15351 extern int bcm_field_qualify_EthernetOamClassVpn_get(
  15352     int unit, 
  15353     bcm_field_entry_t entry, 
  15354     uint8 *data, 
  15355     uint8 *mask);
  15356 
  15357 /* Set match criteria for bcmFieldQualifyMplsOamGALLabelOnly. */
  15358 extern int bcm_field_qualify_MplsOamGALLabelOnly(
  15359     int unit, 
  15360     bcm_field_entry_t entry, 
  15361     uint8 data, 
  15362     uint8 mask);
  15363 
  15364 /* Get match criteria for bcmFieldQualifyMplsOamGALLabelOnly. */
  15365 extern int bcm_field_qualify_MplsOamGALLabelOnly_get(
  15366     int unit, 
  15367     bcm_field_entry_t entry, 
  15368     uint8 *data, 
  15369     uint8 *mask);
  15370 
  15371 /* Set match criteria for bcmFieldQualifyMplsOamUpperLabelDataDrop. */
  15372 extern int bcm_field_qualify_MplsOamUpperLabelDataDrop(
  15373     int unit, 
  15374     bcm_field_entry_t entry, 
  15375     uint8 data, 
  15376     uint8 mask);
  15377 
  15378 /* Get match criteria for bcmFieldQualifyMplsOamUpperLabelDataDrop. */
  15379 extern int bcm_field_qualify_MplsOamUpperLabelDataDrop_get(
  15380     int unit, 
  15381     bcm_field_entry_t entry, 
  15382     uint8 *data, 
  15383     uint8 *mask);
  15384 
  15385 /* Set match criteria for bcmFieldQualifyMplsOamGALExposed. */
  15386 extern int bcm_field_qualify_MplsOamGALExposed(
  15387     int unit, 
  15388     bcm_field_entry_t entry, 
  15389     uint8 data, 
  15390     uint8 mask);
  15391 
  15392 /* Get match criteria for bcmFieldQualifyMplsOamGALExposed. */
  15393 extern int bcm_field_qualify_MplsOamGALExposed_get(
  15394     int unit, 
  15395     bcm_field_entry_t entry, 
  15396     uint8 *data, 
  15397     uint8 *mask);
  15398 
  15399 /* Set match criteria for bcmFieldQualifyMplsOamControlPktType. */
  15400 extern int bcm_field_qualify_MplsOamControlPktType(
  15401     int unit, 
  15402     bcm_field_entry_t entry, 
  15403     bcm_field_MplsOam_Control_pktType_t data);
  15404 
  15405 /* Get match criteria for bcmFieldQualifyMplsOamControlPktType. */
  15406 extern int bcm_field_qualify_MplsOamControlPktType_get(
  15407     int unit, 
  15408     bcm_field_entry_t entry, 
  15409     bcm_field_MplsOam_Control_pktType_t *data);
  15410 
  15411 /* Set match criteria for bcmFieldQualifyMplsOamClassMplsSwitchLabel. */
  15412 extern int bcm_field_qualify_MplsOamClassMplsSwitchLabel(
  15413     int unit, 
  15414     bcm_field_entry_t entry, 
  15415     uint16 data, 
  15416     uint16 mask);
  15417 
  15418 /* Get match criteria for bcmFieldQualifyMplsOamClassMplsSwitchLabel. */
  15419 extern int bcm_field_qualify_MplsOamClassMplsSwitchLabel_get(
  15420     int unit, 
  15421     bcm_field_entry_t entry, 
  15422     uint16 *data, 
  15423     uint16 *mask);
  15424 
  15425 /* Set match criteria for bcmFieldQualifyOamEgressClassVxlt. */
  15426 extern int bcm_field_qualify_OamEgressClassVxlt(
  15427     int unit, 
  15428     bcm_field_entry_t entry, 
  15429     uint16 data, 
  15430     uint16 mask);
  15431 
  15432 /* Get match criteria for bcmFieldQualifyOamEgressClassVxlt. */
  15433 extern int bcm_field_qualify_OamEgressClassVxlt_get(
  15434     int unit, 
  15435     bcm_field_entry_t entry, 
  15436     uint16 *data, 
  15437     uint16 *mask);
  15438 
  15439 /* Set match criteria for bcmFieldQualifyOamEgressClassPort. */
  15440 extern int bcm_field_qualify_OamEgressClassPort(
  15441     int unit, 
  15442     bcm_field_entry_t entry, 
  15443     uint16 data, 
  15444     uint16 mask);
  15445 
  15446 /* Get match criteria for bcmFieldQualifyOamEgressClassPort. */
  15447 extern int bcm_field_qualify_OamEgressClassPort_get(
  15448     int unit, 
  15449     bcm_field_entry_t entry, 
  15450     uint16 *data, 
  15451     uint16 *mask);
  15452 
  15453 /* Set match criteria for OuterVlanActionRange qualifier. */
  15454 extern int bcm_field_qualify_OuterVlanActionRange(
  15455     int unit, 
  15456     bcm_field_entry_t entry, 
  15457     bcm_vlan_t data, 
  15458     bcm_vlan_t mask);
  15459 
  15460 /* Get match criteria for OuterVlanActionRange qualifier. */
  15461 extern int bcm_field_qualify_OuterVlanActionRange_get(
  15462     int unit, 
  15463     bcm_field_entry_t entry, 
  15464     bcm_vlan_t *data, 
  15465     bcm_vlan_t *mask);
  15466 
  15467 /* Set match criteria for InnerVlanActionRange qualifier. */
  15468 extern int bcm_field_qualify_InnerVlanActionRange(
  15469     int unit, 
  15470     bcm_field_entry_t entry, 
  15471     bcm_vlan_t data, 
  15472     bcm_vlan_t mask);
  15473 
  15474 /* Get match criteria for InnerVlanActionRange qualifier. */
  15475 extern int bcm_field_qualify_InnerVlanActionRange_get(
  15476     int unit, 
  15477     bcm_field_entry_t entry, 
  15478     bcm_vlan_t *data, 
  15479     bcm_vlan_t *mask);
  15480 
  15481 /* bcm_field_qualify_SrcVlanGport */
  15482 extern int bcm_field_qualify_SrcVlanGport(
  15483     int unit, 
  15484     bcm_field_entry_t entry, 
  15485     bcm_gport_t vlan_port_id);
  15486 
  15487 /* bcm_field_qualify_DstVlanGport */
  15488 extern int bcm_field_qualify_DstVlanGport(
  15489     int unit, 
  15490     bcm_field_entry_t entry, 
  15491     bcm_gport_t vlan_port_id);
  15492 
  15493 /* 
  15494  * Get match criteria for bcmFieldQualifySrcVlanGport
  15495  *                qualifier from the field entry.
  15496  */
  15497 extern int bcm_field_qualify_SrcVlanGport_get(
  15498     int unit, 
  15499     bcm_field_entry_t entry, 
  15500     bcm_gport_t *vlan_port_id);
  15501 
  15502 /* 
  15503  * Get match criteria for bcmFieldQualifyDstVlanGport
  15504  *                qualifier from the field entry.
  15505  */
  15506 extern int bcm_field_qualify_DstVlanGport_get(
  15507     int unit, 
  15508     bcm_field_entry_t entry, 
  15509     bcm_gport_t *vlan_port_id);
  15510 
  15511 /* Set match criteria for ClassId qualifier. */
  15512 extern int bcm_field_qualify_ClassId(
  15513     int unit, 
  15514     bcm_field_entry_t entry, 
  15515     uint32 data, 
  15516     uint32 mask);
  15517 
  15518 /* Get match criteria for ClassId qualifier. */
  15519 extern int bcm_field_qualify_ClassId_get(
  15520     int unit, 
  15521     bcm_field_entry_t entry, 
  15522     uint32 *data, 
  15523     uint32 *mask);
  15524 
  15525 /* 
  15526  * Set match criteria for bcmFieldQualifyIngressInterfaceClassVPort
  15527  *                qualifier in the field entry.
  15528  */
  15529 extern int bcm_field_qualify_IngressInterfaceClassVPort(
  15530     int unit, 
  15531     bcm_field_entry_t entry, 
  15532     uint32 data, 
  15533     uint32 mask);
  15534 
  15535 /* 
  15536  * Get match criteria for bcmFieldQualifyIngressInterfaceClassVPort
  15537  *                qualifier in the field entry.
  15538  */
  15539 extern int bcm_field_qualify_IngressInterfaceClassVPort_get(
  15540     int unit, 
  15541     bcm_field_entry_t entry, 
  15542     uint32 *data, 
  15543     uint32 *mask);
  15544 
  15545 /* bcm_field_qualify_SrcVlanGports */
  15546 extern int bcm_field_qualify_SrcVlanGports(
  15547     int unit, 
  15548     bcm_field_entry_t entry, 
  15549     bcm_gport_t vlan_port_id, 
  15550     bcm_gport_t vlan_port_mask);
  15551 
  15552 /* bcm_field_qualify_DstVlanGports */
  15553 extern int bcm_field_qualify_DstVlanGports(
  15554     int unit, 
  15555     bcm_field_entry_t entry, 
  15556     bcm_gport_t vlan_port_id, 
  15557     bcm_gport_t vlan_port_mask);
  15558 
  15559 /* 
  15560  * Get match criteria for bcmFieldQualifySrcVlanGports
  15561  *                qualifier from the field entry.
  15562  */
  15563 extern int bcm_field_qualify_SrcVlanGports_get(
  15564     int unit, 
  15565     bcm_field_entry_t entry, 
  15566     bcm_gport_t *vlan_port_id, 
  15567     bcm_gport_t *vlan_port_mask);
  15568 
  15569 /* 
  15570  * Get match criteria for bcmFieldQualifyDstVlanGports
  15571  *                qualifier from the field entry.
  15572  */
  15573 extern int bcm_field_qualify_DstVlanGports_get(
  15574     int unit, 
  15575     bcm_field_entry_t entry, 
  15576     bcm_gport_t *vlan_port_id, 
  15577     bcm_gport_t *vlan_port_mask);
  15578 
  15579 /* bcm_field_qualify_SrcVxlanGports */
  15580 extern int bcm_field_qualify_SrcVxlanGports(
  15581     int unit, 
  15582     bcm_field_entry_t entry, 
  15583     bcm_gport_t vxlan_port_id, 
  15584     bcm_gport_t vxlan_port_mask);
  15585 
  15586 /* bcm_field_qualify_DstVxlanGports */
  15587 extern int bcm_field_qualify_DstVxlanGports(
  15588     int unit, 
  15589     bcm_field_entry_t entry, 
  15590     bcm_gport_t vxlan_port_id, 
  15591     bcm_gport_t vxlan_port_mask);
  15592 
  15593 /* 
  15594  * Get match criteria for bcmFieldQualifySrcVxlanGports
  15595  *                qualifier from the field entry.
  15596  */
  15597 extern int bcm_field_qualify_SrcVxlanGports_get(
  15598     int unit, 
  15599     bcm_field_entry_t entry, 
  15600     bcm_gport_t *vxlan_port_id, 
  15601     bcm_gport_t *vxlan_port_mask);
  15602 
  15603 /* 
  15604  * Get match criteria for bcmFieldQualifyDstVxlanGports
  15605  *                qualifier from the field entry.
  15606  */
  15607 extern int bcm_field_qualify_DstVxlanGports_get(
  15608     int unit, 
  15609     bcm_field_entry_t entry, 
  15610     bcm_gport_t *vxlan_port_id, 
  15611     bcm_gport_t *vxlan_port_mask);
  15612 
  15613 /* bcm_field_qualify_SrcWlanGports */
  15614 extern int bcm_field_qualify_SrcWlanGports(
  15615     int unit, 
  15616     bcm_field_entry_t entry, 
  15617     bcm_gport_t wlan_port_id, 
  15618     bcm_gport_t wlan_port_mask);
  15619 
  15620 /* bcm_field_qualify_DstWlanGports */
  15621 extern int bcm_field_qualify_DstWlanGports(
  15622     int unit, 
  15623     bcm_field_entry_t entry, 
  15624     bcm_gport_t wlan_port_id, 
  15625     bcm_gport_t wlan_port_mask);
  15626 
  15627 /* 
  15628  * Get match criteria for bcmFieldQualifySrcWlanGports
  15629  *                qualifier from the field entry.
  15630  */
  15631 extern int bcm_field_qualify_SrcWlanGports_get(
  15632     int unit, 
  15633     bcm_field_entry_t entry, 
  15634     bcm_gport_t *wlan_port_id, 
  15635     bcm_gport_t *wlan_port_mask);
  15636 
  15637 /* 
  15638  * Get match criteria for bcmFieldQualifyDstWlanGports
  15639  *                qualifier from the field entry.
  15640  */
  15641 extern int bcm_field_qualify_DstWlanGports_get(
  15642     int unit, 
  15643     bcm_field_entry_t entry, 
  15644     bcm_gport_t *wlan_port_id, 
  15645     bcm_gport_t *wlan_port_mask);
  15646 
  15647 /* bcm_field_qualify_SrcMplsGports */
  15648 extern int bcm_field_qualify_SrcMplsGports(
  15649     int unit, 
  15650     bcm_field_entry_t entry, 
  15651     bcm_gport_t mpls_port_id, 
  15652     bcm_gport_t mpls_port_mask);
  15653 
  15654 /* bcm_field_qualify_DstMplsGports */
  15655 extern int bcm_field_qualify_DstMplsGports(
  15656     int unit, 
  15657     bcm_field_entry_t entry, 
  15658     bcm_gport_t mpls_port_id, 
  15659     bcm_gport_t mpls_port_mask);
  15660 
  15661 /* 
  15662  * Get match criteria for bcmFieldQualifySrcMplsGports
  15663  *                qualifier from the field entry.
  15664  */
  15665 extern int bcm_field_qualify_SrcMplsGports_get(
  15666     int unit, 
  15667     bcm_field_entry_t entry, 
  15668     bcm_gport_t *mpls_port_id, 
  15669     bcm_gport_t *mpls_port_mask);
  15670 
  15671 /* 
  15672  * Get match criteria for bcmFieldQualifyDstMplsGports
  15673  *                qualifier from the field entry.
  15674  */
  15675 extern int bcm_field_qualify_DstMplsGports_get(
  15676     int unit, 
  15677     bcm_field_entry_t entry, 
  15678     bcm_gport_t *mpls_port_id, 
  15679     bcm_gport_t *mpls_port_mask);
  15680 
  15681 /* bcm_field_qualify_SrcGports */
  15682 extern int bcm_field_qualify_SrcGports(
  15683     int unit, 
  15684     bcm_field_entry_t entry, 
  15685     bcm_gport_t port_id, 
  15686     bcm_gport_t port_mask);
  15687 
  15688 /* bcm_field_qualify_DstGports */
  15689 extern int bcm_field_qualify_DstGports(
  15690     int unit, 
  15691     bcm_field_entry_t entry, 
  15692     bcm_gport_t port_id, 
  15693     bcm_gport_t port_mask);
  15694 
  15695 /* 
  15696  * Get match criteria for bcmFieldQualifySrcGports
  15697  *                qualifier from the field entry.
  15698  */
  15699 extern int bcm_field_qualify_SrcGports_get(
  15700     int unit, 
  15701     bcm_field_entry_t entry, 
  15702     bcm_gport_t *port_id, 
  15703     bcm_gport_t *port_mask);
  15704 
  15705 /* 
  15706  * Get match criteria for bcmFieldQualifyDstGports
  15707  *                qualifier from the field entry.
  15708  */
  15709 extern int bcm_field_qualify_DstGports_get(
  15710     int unit, 
  15711     bcm_field_entry_t entry, 
  15712     bcm_gport_t *port_id, 
  15713     bcm_gport_t *port_mask);
  15714 
  15715 /* bcm_field_qualify_SrcMimGports */
  15716 extern int bcm_field_qualify_SrcMimGports(
  15717     int unit, 
  15718     bcm_field_entry_t entry, 
  15719     bcm_gport_t mim_port_id, 
  15720     bcm_gport_t mim_port_mask);
  15721 
  15722 /* bcm_field_qualify_DstMimGports */
  15723 extern int bcm_field_qualify_DstMimGports(
  15724     int unit, 
  15725     bcm_field_entry_t entry, 
  15726     bcm_gport_t mim_port_id, 
  15727     bcm_gport_t mim_port_mask);
  15728 
  15729 /* 
  15730  * Get match criteria for bcmFieldQualifySrcMimGports
  15731  *                qualifier from the field entry.
  15732  */
  15733 extern int bcm_field_qualify_SrcMimGports_get(
  15734     int unit, 
  15735     bcm_field_entry_t entry, 
  15736     bcm_gport_t *mim_port_id, 
  15737     bcm_gport_t *mim_port_mask);
  15738 
  15739 /* 
  15740  * Get match criteria for bcmFieldQualifyDstMimGports
  15741  *                qualifier from the field entry.
  15742  */
  15743 extern int bcm_field_qualify_DstMimGports_get(
  15744     int unit, 
  15745     bcm_field_entry_t entry, 
  15746     bcm_gport_t *mim_port_id, 
  15747     bcm_gport_t *mim_port_mask);
  15748 
  15749 /* bcm_field_qualify_SrcNivGports */
  15750 extern int bcm_field_qualify_SrcNivGports(
  15751     int unit, 
  15752     bcm_field_entry_t entry, 
  15753     bcm_gport_t niv_port_id, 
  15754     bcm_gport_t niv_port_mask);
  15755 
  15756 /* bcm_field_qualify_DstNivGports */
  15757 extern int bcm_field_qualify_DstNivGports(
  15758     int unit, 
  15759     bcm_field_entry_t entry, 
  15760     bcm_gport_t niv_port_id, 
  15761     bcm_gport_t niv_port_mask);
  15762 
  15763 /* 
  15764  * Get match criteria for bcmFieldQualifySrcNivGports
  15765  *                qualifier from the field entry.
  15766  */
  15767 extern int bcm_field_qualify_SrcNivGports_get(
  15768     int unit, 
  15769     bcm_field_entry_t entry, 
  15770     bcm_gport_t *niv_port_id, 
  15771     bcm_gport_t *niv_port_mask);
  15772 
  15773 /* 
  15774  * Get match criteria for bcmFieldQualifyDstNivGports
  15775  *                qualifier from the field entry.
  15776  */
  15777 extern int bcm_field_qualify_DstNivGports_get(
  15778     int unit, 
  15779     bcm_field_entry_t entry, 
  15780     bcm_gport_t *niv_port_id, 
  15781     bcm_gport_t *niv_port_mask);
  15782 
  15783 /* bcm_field_qualify_SrcModPortGports */
  15784 extern int bcm_field_qualify_SrcModPortGports(
  15785     int unit, 
  15786     bcm_field_entry_t entry, 
  15787     bcm_gport_t port_id, 
  15788     bcm_gport_t port_mask);
  15789 
  15790 /* 
  15791  * Get match criteria for bcmFieldQualifySrcModPortGports
  15792  *                qualifier from the field entry.
  15793  */
  15794 extern int bcm_field_qualify_SrcModPortGports_get(
  15795     int unit, 
  15796     bcm_field_entry_t entry, 
  15797     bcm_gport_t *port_id, 
  15798     bcm_gport_t *port_mask);
  15799 
  15800 /* Qualify Reserved_1 field in Vxlan Header */
  15801 extern int bcm_field_qualify_VxlanHeaderBits8_31(
  15802     int unit, 
  15803     bcm_field_entry_t entry, 
  15804     uint32 data, 
  15805     uint32 mask);
  15806 
  15807 /* Get match criteria for Reserved_1 field in Vxlan Header */
  15808 extern int bcm_field_qualify_VxlanHeaderBits8_31_get(
  15809     int unit, 
  15810     bcm_field_entry_t entry, 
  15811     uint32 *data, 
  15812     uint32 *mask);
  15813 
  15814 /* Qualify Reserved_2 field in Vxlan Header */
  15815 extern int bcm_field_qualify_VxlanHeaderBits56_63(
  15816     int unit, 
  15817     bcm_field_entry_t entry, 
  15818     uint8 data, 
  15819     uint8 mask);
  15820 
  15821 /* Get match criteria for Reserved_2 field in Vxlan Header */
  15822 extern int bcm_field_qualify_VxlanHeaderBits56_63_get(
  15823     int unit, 
  15824     bcm_field_entry_t entry, 
  15825     uint8 *data, 
  15826     uint8 *mask);
  15827 
  15828 #endif /* BCM_HIDE_DISPATCHABLE */
  15829 
  15830 /* 
  15831  * Field Hint Type
  15832  * 
  15833  * Specify the hint type for a group.
  15834  */
  15835 typedef enum bcm_field_hint_type_e {
  15836     bcmFieldHintTypeCompression = 0,    /* Hint Type for Auto Compression */
  15837     bcmFieldHintTypeExtraction = 1,     /* Hint Type for Qualifier Extraction */
  15838     bcmFieldHintTypeGroupAutoExpansion = 2, /* Hint Type for Group Auto Expansion */
  15839     bcmFieldHintTypeExactMatch = 3,     /* Hint Type for Exact Match. */
  15840     bcmFieldHintTypeCount = 4           /* Always Last. Not a usable value. */
  15841 } bcm_field_hint_type_t;
  15842 
  15843 #define BCM_FIELD_HINT_TYPE_STRINGS \
  15844 { \
  15845     "Compression", \
  15846     "Extraction", \
  15847     "GroupAutoExpansion", \
  15848     "ExactMatch"  \
  15849 }
  15850 
  15851 /* 
  15852  * Field Hints.
  15853  * 
  15854  * Flags values to update the bcm_field_hints_t structure.
  15855  */
  15856 #define BCM_FIELD_HINT_EXACT_MATCH_ONLY     (1 << 0)   /* Exact Match Only. */
  15857 #define BCM_FIELD_GROUP_AUTO_EXPANSION_SMALL (1 << 1)   /* Prefer expanding using
  15858                                                           smaller slices */
  15859 #define BCM_FIELD_GROUP_AUTO_EXPANSION_LARGE (1 << 2)   /* Prefer expanding using
  15860                                                           larger slices */
  15861 #define BCM_FIELD_GROUP_MAX_SIZE_HARD_LIMIT (1 << 3)   /* Set Hard limit for
  15862                                                           max_group_size. */
  15863 #define BCM_FIELD_HINT_EXACT_MATCH_GROUP_PRIORITY (1 << 4)   /* Set Hint for Exact
  15864                                                           Match Group. */
  15865 
  15866 /* Specify hints to be used during group creation. */
  15867 typedef struct bcm_field_hint_s {
  15868     bcm_field_hint_type_t hint_type;    /* Field hints of type
  15869                                            bcm_field_hint_type_t. */
  15870     bcm_field_qualify_t qual;           /* Field qualifier bcmFieldQualifyXXX. */
  15871     uint32 max_values;                  /* To figure out the width of the
  15872                                            compression output. */
  15873     uint32 start_bit;                   /* Builds the range in conjunction with
  15874                                            end_bit which will indicate that in
  15875                                            the
  15876                                                                    full mask any
  15877                                            bits outside of that range are
  15878                                            guaranteed to be 0. */
  15879     uint32 end_bit;                     /* End bit of a mask for the qualifier
  15880                                            in hint structure. */
  15881     uint32 flags;                       /* Flags. */
  15882     uint32 dosattack_event_flags;       /* Dos Attack Events Flags. */
  15883     uint32 max_group_size;              /* Max size of the group. */
  15884     int priority;                       /* Group priority. */
  15885     bcm_udf_id_t udf_id;                /* UDF ID. */
  15886 } bcm_field_hint_t;
  15887 
  15888 /* Initialize Field Group Hint Structure. */
  15889 extern void bcm_field_hint_t_init(
  15890     bcm_field_hint_t *hint);
  15891 
  15892 #ifndef BCM_HIDE_DISPATCHABLE
  15893 
  15894 /* Create a hint id. */
  15895 extern int bcm_field_hints_create(
  15896     int unit, 
  15897     bcm_field_hintid_t *hint_id);
  15898 
  15899 /* Add bcm_field_hint_t structure to a hint_id */
  15900 extern int bcm_field_hints_add(
  15901     int unit, 
  15902     bcm_field_hintid_t hint_id, 
  15903     bcm_field_hint_t *hint);
  15904 
  15905 /* Get bcm_field_hint_t structure from a hint_id */
  15906 extern int bcm_field_hints_get(
  15907     int unit, 
  15908     bcm_field_hintid_t hint_id, 
  15909     bcm_field_hint_t *hint);
  15910 
  15911 /* Delete bcm_field_hint_t structure from a hint_id */
  15912 extern int bcm_field_hints_delete(
  15913     int unit, 
  15914     bcm_field_hintid_t hint_id, 
  15915     bcm_field_hint_t *hint);
  15916 
  15917 /* Delete all the bcm_field_hint_t structures from a hint_id */
  15918 extern int bcm_field_hints_delete_all(
  15919     int unit, 
  15920     bcm_field_hintid_t hint_id);
  15921 
  15922 /* 
  15923  * Delete all the bcm_field_hint_t structures from a hint_id
  15924  * and also the hint id so that the id can be reused
  15925  */
  15926 extern int bcm_field_hints_destroy(
  15927     int unit, 
  15928     bcm_field_hintid_t hint_id);
  15929 
  15930 /* Set match criteria for OamInLifIdValid qualifier. */
  15931 extern int bcm_field_qualify_OamInLifIdValid(
  15932     int unit, 
  15933     bcm_field_entry_t entry, 
  15934     uint8 data, 
  15935     uint8 mask);
  15936 
  15937 /* Get match criteria for OamInLifIdValid qualifier. */
  15938 extern int bcm_field_qualify_OamInLifIdValid_get(
  15939     int unit, 
  15940     bcm_field_entry_t entry, 
  15941     uint8 *data, 
  15942     uint8 *mask);
  15943 
  15944 /* Set match criteria for OamInLifId qualifier. */
  15945 extern int bcm_field_qualify_OamInLifId(
  15946     int unit, 
  15947     bcm_field_entry_t entry, 
  15948     uint32 data, 
  15949     uint32 mask);
  15950 
  15951 /* Get match criteria for OamInLifId qualifier. */
  15952 extern int bcm_field_qualify_OamInLifId_get(
  15953     int unit, 
  15954     bcm_field_entry_t entry, 
  15955     uint32 *data, 
  15956     uint32 *mask);
  15957 
  15958 /* Set match criteria for OamUpMep qualifier. */
  15959 extern int bcm_field_qualify_OamUpMep(
  15960     int unit, 
  15961     bcm_field_entry_t entry, 
  15962     uint8 data, 
  15963     uint8 mask);
  15964 
  15965 /* Get match criteria for OamUpMep qualifier. */
  15966 extern int bcm_field_qualify_OamUpMep_get(
  15967     int unit, 
  15968     bcm_field_entry_t entry, 
  15969     uint8 *data, 
  15970     uint8 *mask);
  15971 
  15972 /* Set match criteria for OamSubtype qualifier. */
  15973 extern int bcm_field_qualify_OamSubtype(
  15974     int unit, 
  15975     bcm_field_entry_t entry, 
  15976     uint8 data, 
  15977     uint8 mask);
  15978 
  15979 /* Get match criteria for OamSubtype qualifier. */
  15980 extern int bcm_field_qualify_OamSubtype_get(
  15981     int unit, 
  15982     bcm_field_entry_t entry, 
  15983     uint8 *data, 
  15984     uint8 *mask);
  15985 
  15986 /* Set match criteria for OamHeaderOffset qualifier. */
  15987 extern int bcm_field_qualify_OamHeaderOffset(
  15988     int unit, 
  15989     bcm_field_entry_t entry, 
  15990     uint32 data, 
  15991     uint32 mask);
  15992 
  15993 /* Get match criteria for OamHeaderOffset qualifier. */
  15994 extern int bcm_field_qualify_OamHeaderOffset_get(
  15995     int unit, 
  15996     bcm_field_entry_t entry, 
  15997     uint32 *data, 
  15998     uint32 *mask);
  15999 
  16000 /* Set match criteria for OamStampOffset qualifier. */
  16001 extern int bcm_field_qualify_OamStampOffset(
  16002     int unit, 
  16003     bcm_field_entry_t entry, 
  16004     uint32 data, 
  16005     uint32 mask);
  16006 
  16007 /* Get match criteria for OamStampOffset qualifier. */
  16008 extern int bcm_field_qualify_OamStampOffset_get(
  16009     int unit, 
  16010     bcm_field_entry_t entry, 
  16011     uint32 *data, 
  16012     uint32 *mask);
  16013 
  16014 /* Set match criteria for OamMepId qualifier. */
  16015 extern int bcm_field_qualify_OamMepId(
  16016     int unit, 
  16017     bcm_field_entry_t entry, 
  16018     uint32 data, 
  16019     uint32 mask);
  16020 
  16021 /* Get match criteria for OamMepId qualifier. */
  16022 extern int bcm_field_qualify_OamMepId_get(
  16023     int unit, 
  16024     bcm_field_entry_t entry, 
  16025     uint32 *data, 
  16026     uint32 *mask);
  16027 
  16028 /* Set match criteria for OamMeterDisable qualifier. */
  16029 extern int bcm_field_qualify_OamMeterDisable(
  16030     int unit, 
  16031     bcm_field_entry_t entry, 
  16032     uint8 data, 
  16033     uint8 mask);
  16034 
  16035 /* Get match criteria for OamMeterDisable qualifier. */
  16036 extern int bcm_field_qualify_OamMeterDisable_get(
  16037     int unit, 
  16038     bcm_field_entry_t entry, 
  16039     uint8 *data, 
  16040     uint8 *mask);
  16041 
  16042 /* Set match criteria for OamTsSystemHeader qualifier. */
  16043 extern int bcm_field_qualify_OamTsSystemHeader(
  16044     int unit, 
  16045     bcm_field_entry_t entry, 
  16046     uint64 data, 
  16047     uint64 mask);
  16048 
  16049 /* Get match criteria for OamTsSystemHeader qualifier. */
  16050 extern int bcm_field_qualify_OamTsSystemHeader_get(
  16051     int unit, 
  16052     bcm_field_entry_t entry, 
  16053     uint64 *data, 
  16054     uint64 *mask);
  16055 
  16056 /* Set match criteria for EthernetOamHeaderBits0_31 qualifier. */
  16057 extern int bcm_field_qualify_EthernetOamHeaderBits0_31(
  16058     int unit, 
  16059     bcm_field_entry_t entry, 
  16060     uint32 data, 
  16061     uint32 mask);
  16062 
  16063 /* Get match criteria for EthernetOamHeaderBits0_31 qualifier. */
  16064 extern int bcm_field_qualify_EthernetOamHeaderBits0_31_get(
  16065     int unit, 
  16066     bcm_field_entry_t entry, 
  16067     uint32 *data, 
  16068     uint32 *mask);
  16069 
  16070 /* Set match criteria for EthernetOamHeaderBits32_63. */
  16071 extern int bcm_field_qualify_EthernetOamHeaderBits32_63(
  16072     int unit, 
  16073     bcm_field_entry_t entry, 
  16074     uint32 data, 
  16075     uint32 mask);
  16076 
  16077 /* Get match criteria for EthernetOamHeaderBits32_63. */
  16078 extern int bcm_field_qualify_EthernetOamHeaderBits32_63_get(
  16079     int unit, 
  16080     bcm_field_entry_t entry, 
  16081     uint32 *data, 
  16082     uint32 *mask);
  16083 
  16084 /* Set match criteria for MplsOamHeaderBits0_31. */
  16085 extern int bcm_field_qualify_MplsOamHeaderBits0_31(
  16086     int unit, 
  16087     bcm_field_entry_t entry, 
  16088     uint32 data, 
  16089     uint32 mask);
  16090 
  16091 /* Get match criteria for MplsOamHeaderBits0_31 qualifier. */
  16092 extern int bcm_field_qualify_MplsOamHeaderBits0_31_get(
  16093     int unit, 
  16094     bcm_field_entry_t entry, 
  16095     uint32 *data, 
  16096     uint32 *mask);
  16097 
  16098 /* Set match criteria for MplsOamHeaderBits32_63 qualifier. */
  16099 extern int bcm_field_qualify_MplsOamHeaderBits32_63(
  16100     int unit, 
  16101     bcm_field_entry_t entry, 
  16102     uint32 data, 
  16103     uint32 mask);
  16104 
  16105 /* Get match criteria for MplsOamHeaderBits32_63 qualifier. */
  16106 extern int bcm_field_qualify_MplsOamHeaderBits32_63_get(
  16107     int unit, 
  16108     bcm_field_entry_t entry, 
  16109     uint32 *data, 
  16110     uint32 *mask);
  16111 
  16112 /* Set match criteria for MplsOamACH qualifier. */
  16113 extern int bcm_field_qualify_MplsOamACH(
  16114     int unit, 
  16115     bcm_field_entry_t entry, 
  16116     uint32 data, 
  16117     uint32 mask);
  16118 
  16119 /* Get match criteria for MplsOamACH qualifier. */
  16120 extern int bcm_field_qualify_MplsOamACH_get(
  16121     int unit, 
  16122     bcm_field_entry_t entry, 
  16123     uint32 *data, 
  16124     uint32 *mask);
  16125 
  16126 /* Set match criteria for OamHeaderBits0_31 qualifier. */
  16127 extern int bcm_field_qualify_OamHeaderBits0_31(
  16128     int unit, 
  16129     bcm_field_entry_t entry, 
  16130     uint32 data, 
  16131     uint32 mask);
  16132 
  16133 /* Get match criteria for OamHeaderBits0_31 qualifier. */
  16134 extern int bcm_field_qualify_OamHeaderBits0_31_get(
  16135     int unit, 
  16136     bcm_field_entry_t entry, 
  16137     uint32 *data, 
  16138     uint32 *mask);
  16139 
  16140 /* Set match criteria for OamHeaderBits32_63 qualifier. */
  16141 extern int bcm_field_qualify_OamHeaderBits32_63(
  16142     int unit, 
  16143     bcm_field_entry_t entry, 
  16144     uint32 data, 
  16145     uint32 mask);
  16146 
  16147 /* Get match criteria for OamHeaderBits32_63 qualifier. */
  16148 extern int bcm_field_qualify_OamHeaderBits32_63_get(
  16149     int unit, 
  16150     bcm_field_entry_t entry, 
  16151     uint32 *data, 
  16152     uint32 *mask);
  16153 
  16154 /* 
  16155  * Set match criteria for bcmFieldQualifyDstMulticastGroups
  16156  *                qualifier in the field entry.
  16157  */
  16158 extern int bcm_field_qualify_DstMulticastGroups(
  16159     int unit, 
  16160     bcm_field_entry_t entry, 
  16161     bcm_multicast_t group, 
  16162     bcm_multicast_t mask);
  16163 
  16164 /* 
  16165  * Get match criteria for bcmFieldQualifyDstMulticastGroups
  16166  *                qualifier from the field entry.
  16167  */
  16168 extern int bcm_field_qualify_DstMulticastGroups_get(
  16169     int unit, 
  16170     bcm_field_entry_t entry, 
  16171     bcm_multicast_t *group, 
  16172     bcm_multicast_t *mask);
  16173 
  16174 #endif /* BCM_HIDE_DISPATCHABLE */
  16175 
  16176 /* 
  16177  * List of Field Processor group operational modes supported per-CAP
  16178  * stage.
  16179  */
  16180 typedef enum bcm_field_group_oper_mode_e {
  16181     bcmFieldGroupOperModeGlobal = 0,    /* Group Operational Global Mode Value. */
  16182     bcmFieldGroupOperModePipeLocal = 1, /* Group Operational Pipe Local Mode
  16183                                            Value. */
  16184     bcmFieldGroupOperModeCount = 2      /* Always last. Not a usable value. */
  16185 } bcm_field_group_oper_mode_t;
  16186 
  16187 #define BCM_FIELD_OPER_MODE_STRINGS \
  16188 { \
  16189     "Global", \
  16190     "PipeLocal"  \
  16191 }
  16192 
  16193 #ifndef BCM_HIDE_DISPATCHABLE
  16194 
  16195 /* Configure Field Processor Group operational mode per-CAP stage. */
  16196 extern int bcm_field_group_oper_mode_set(
  16197     int unit, 
  16198     bcm_field_qualify_t stage, 
  16199     bcm_field_group_oper_mode_t mode);
  16200 
  16201 /* 
  16202  * Retrieves current Field Processor Group operational mode per-CAP
  16203  * stage.
  16204  */
  16205 extern int bcm_field_group_oper_mode_get(
  16206     int unit, 
  16207     bcm_field_qualify_t stage, 
  16208     bcm_field_group_oper_mode_t *mode);
  16209 
  16210 /* bcm_field_qualify_InterfaceInPorts */
  16211 extern int bcm_field_qualify_InterfaceInPorts(
  16212     int unit, 
  16213     bcm_field_entry_t entry, 
  16214     bcm_pbmp_t data, 
  16215     bcm_pbmp_t mask);
  16216 
  16217 /* 
  16218  * Get match criteria for bcmFieldQualifyInPorts
  16219  *                qualifier from the field entry.
  16220  */
  16221 extern int bcm_field_qualify_InterfaceInPorts_get(
  16222     int unit, 
  16223     bcm_field_entry_t entry, 
  16224     bcm_pbmp_t *data, 
  16225     bcm_pbmp_t *mask);
  16226 
  16227 /* 
  16228  * Configure match criteria for bcmFieldQualifyDestVirtualPortValid
  16229  *                qualifier from the field entry.
  16230  */
  16231 extern int bcm_field_qualify_DestVirtualPortValid(
  16232     int unit, 
  16233     bcm_field_entry_t entry, 
  16234     uint8 data, 
  16235     uint8 mask);
  16236 
  16237 /* 
  16238  * Get match criteria for bcmFieldQualifyDestVirtualPortValid
  16239  *                 qualifier from the field entry.
  16240  */
  16241 extern int bcm_field_qualify_DestVirtualPortValid_get(
  16242     int unit, 
  16243     bcm_field_entry_t entry, 
  16244     uint8 *data, 
  16245     uint8 *mask);
  16246 
  16247 /* 
  16248  * Configure match criteria for bcmFieldQualifyInVPortWide
  16249  *                qualifier from the field entry.
  16250  */
  16251 extern int bcm_field_qualify_InVPortWide(
  16252     int unit, 
  16253     bcm_field_entry_t entry, 
  16254     uint64 data, 
  16255     uint64 mask);
  16256 
  16257 /* 
  16258  * Get match criteria for bcmFieldQualifyInVPortWide
  16259  *                 qualifier from the field entry.
  16260  */
  16261 extern int bcm_field_qualify_InVPortWide_get(
  16262     int unit, 
  16263     bcm_field_entry_t entry, 
  16264     uint64 *data, 
  16265     uint64 *mask);
  16266 
  16267 /* 
  16268  * Configure match criteria for bcmFieldQualifyFcoeOxID
  16269  *             qualifier from the field entry.
  16270  */
  16271 extern int bcm_field_qualify_FcoeOxID(
  16272     int unit, 
  16273     bcm_field_entry_t entry, 
  16274     uint16 data, 
  16275     uint16 mask);
  16276 
  16277 /* 
  16278  * Get match criteria for bcmFieldQualifyFcoeOxID
  16279  *             qualifier from the field entry.
  16280  */
  16281 extern int bcm_field_qualify_FcoeOxID_get(
  16282     int unit, 
  16283     bcm_field_entry_t entry, 
  16284     uint16 *data, 
  16285     uint16 *mask);
  16286 
  16287 /* 
  16288  * Configure match criteria for bcmFieldQualifyFcoeRxID
  16289  *             qualifier from the field entry.
  16290  */
  16291 extern int bcm_field_qualify_FcoeRxID(
  16292     int unit, 
  16293     bcm_field_entry_t entry, 
  16294     uint16 data, 
  16295     uint16 mask);
  16296 
  16297 /* 
  16298  * Get match criteria for bcmFieldQualifyFcoeRxID
  16299  *             qualifier from the field entry.
  16300  */
  16301 extern int bcm_field_qualify_FcoeRxID_get(
  16302     int unit, 
  16303     bcm_field_entry_t entry, 
  16304     uint16 *data, 
  16305     uint16 *mask);
  16306 
  16307 /* 
  16308  * Configure match criteria for bcmFieldQualifyIpProtocolClass
  16309  *             qualifier from the field entry.
  16310  */
  16311 extern int bcm_field_qualify_IpProtocolClass(
  16312     int unit, 
  16313     bcm_field_entry_t entry, 
  16314     bcm_class_t data, 
  16315     bcm_class_t mask);
  16316 
  16317 /* 
  16318  * Get match criteria for bcmFieldQualifyIpProtocolClass
  16319  *             qualifier from the field entry.
  16320  */
  16321 extern int bcm_field_qualify_IpProtocolClass_get(
  16322     int unit, 
  16323     bcm_field_entry_t entry, 
  16324     bcm_class_t *data, 
  16325     bcm_class_t *mask);
  16326 
  16327 /* 
  16328  * Configure match criteria for bcmFieldQualifyEtherTypeClass
  16329  *             qualifier from the field entry.
  16330  */
  16331 extern int bcm_field_qualify_EtherTypeClass(
  16332     int unit, 
  16333     bcm_field_entry_t entry, 
  16334     bcm_class_t data, 
  16335     bcm_class_t mask);
  16336 
  16337 /* 
  16338  * Get match criteria for bcmFieldQualifyEtherTypeClass
  16339  *             qualifier from the field entry.
  16340  */
  16341 extern int bcm_field_qualify_EtherTypeClass_get(
  16342     int unit, 
  16343     bcm_field_entry_t entry, 
  16344     bcm_class_t *data, 
  16345     bcm_class_t *mask);
  16346 
  16347 /* 
  16348  * Configure match criteria for bcmFieldQualifyL4SrcPortClass
  16349  *             qualifier from the field entry.
  16350  */
  16351 extern int bcm_field_qualify_L4SrcPortClass(
  16352     int unit, 
  16353     bcm_field_entry_t entry, 
  16354     bcm_class_t data, 
  16355     bcm_class_t mask);
  16356 
  16357 /* 
  16358  * Get match criteria for bcmFieldQualifyL4SrcPortClass
  16359  *             qualifier from the field entry.
  16360  */
  16361 extern int bcm_field_qualify_L4SrcPortClass_get(
  16362     int unit, 
  16363     bcm_field_entry_t entry, 
  16364     bcm_class_t *data, 
  16365     bcm_class_t *mask);
  16366 
  16367 /* 
  16368  * Configure match criteria for bcmFieldQualifyL4DstPortClass
  16369  *             qualifier from the field entry.
  16370  */
  16371 extern int bcm_field_qualify_L4DstPortClass(
  16372     int unit, 
  16373     bcm_field_entry_t entry, 
  16374     bcm_class_t data, 
  16375     bcm_class_t mask);
  16376 
  16377 /* 
  16378  * Get match criteria for bcmFieldQualifyL4DstPortClass
  16379  *             qualifier from the field entry.
  16380  */
  16381 extern int bcm_field_qualify_L4DstPortClass_get(
  16382     int unit, 
  16383     bcm_field_entry_t entry, 
  16384     bcm_class_t *data, 
  16385     bcm_class_t *mask);
  16386 
  16387 /* 
  16388  * Configure match criteria for bcmFieldQualifySrcIpClass
  16389  *             qualifier from the field entry.
  16390  */
  16391 extern int bcm_field_qualify_SrcIpClass(
  16392     int unit, 
  16393     bcm_field_entry_t entry, 
  16394     bcm_class_t data, 
  16395     bcm_class_t mask);
  16396 
  16397 /* 
  16398  * Get match criteria for bcmFieldQualifySrcIpClass
  16399  *             qualifier from the field entry.
  16400  */
  16401 extern int bcm_field_qualify_SrcIpClass_get(
  16402     int unit, 
  16403     bcm_field_entry_t entry, 
  16404     bcm_class_t *data, 
  16405     bcm_class_t *mask);
  16406 
  16407 /* 
  16408  * Configure match criteria for bcmFieldQualifySrcIpClassMsbNibble
  16409  *             qualifier from the field entry.
  16410  */
  16411 extern int bcm_field_qualify_SrcIpClassMsbNibble(
  16412     int unit, 
  16413     bcm_field_entry_t entry, 
  16414     bcm_class_t data, 
  16415     bcm_class_t mask);
  16416 
  16417 /* 
  16418  * Get match criteria for bcmFieldQualifySrcIpClassMsbNibble
  16419  *             qualifier from the field entry.
  16420  */
  16421 extern int bcm_field_qualify_SrcIpClassMsbNibble_get(
  16422     int unit, 
  16423     bcm_field_entry_t entry, 
  16424     bcm_class_t *data, 
  16425     bcm_class_t *mask);
  16426 
  16427 /* 
  16428  * Configure match criteria for bcmFieldQualifySrcIpClassLower
  16429  *             qualifier from the field entry.
  16430  */
  16431 extern int bcm_field_qualify_SrcIpClassLower(
  16432     int unit, 
  16433     bcm_field_entry_t entry, 
  16434     bcm_class_t data, 
  16435     bcm_class_t mask);
  16436 
  16437 /* 
  16438  * Get match criteria for bcmFieldQualifySrcIpClassLower
  16439  *             qualifier from the field entry.
  16440  */
  16441 extern int bcm_field_qualify_SrcIpClassLower_get(
  16442     int unit, 
  16443     bcm_field_entry_t entry, 
  16444     bcm_class_t *data, 
  16445     bcm_class_t *mask);
  16446 
  16447 /* 
  16448  * Configure match criteria for bcmFieldQualifySrcIpClassUpper
  16449  *             qualifier from the field entry.
  16450  */
  16451 extern int bcm_field_qualify_SrcIpClassUpper(
  16452     int unit, 
  16453     bcm_field_entry_t entry, 
  16454     bcm_class_t data, 
  16455     bcm_class_t mask);
  16456 
  16457 /* 
  16458  * Get match criteria for bcmFieldQualifySrcIpClassUpper
  16459  *             qualifier from the field entry.
  16460  */
  16461 extern int bcm_field_qualify_SrcIpClassUpper_get(
  16462     int unit, 
  16463     bcm_field_entry_t entry, 
  16464     bcm_class_t *data, 
  16465     bcm_class_t *mask);
  16466 
  16467 /* 
  16468  * Configure match criteria for bcmFieldQualifySrcIp6Class
  16469  *             qualifier from the field entry.
  16470  */
  16471 extern int bcm_field_qualify_SrcIp6Class(
  16472     int unit, 
  16473     bcm_field_entry_t entry, 
  16474     bcm_class_t data, 
  16475     bcm_class_t mask);
  16476 
  16477 /* 
  16478  * Get match criteria for bcmFieldQualifySrcIp6Class
  16479  *             qualifier from the field entry.
  16480  */
  16481 extern int bcm_field_qualify_SrcIp6Class_get(
  16482     int unit, 
  16483     bcm_field_entry_t entry, 
  16484     bcm_class_t *data, 
  16485     bcm_class_t *mask);
  16486 
  16487 /* 
  16488  * Configure match criteria for bcmFieldQualifySrcIp6ClassMsbNibble
  16489  *             qualifier from the field entry.
  16490  */
  16491 extern int bcm_field_qualify_SrcIp6ClassMsbNibble(
  16492     int unit, 
  16493     bcm_field_entry_t entry, 
  16494     bcm_class_t data, 
  16495     bcm_class_t mask);
  16496 
  16497 /* 
  16498  * Get match criteria for bcmFieldQualifySrcIp6ClassMsbNibble
  16499  *             qualifier from the field entry.
  16500  */
  16501 extern int bcm_field_qualify_SrcIp6ClassMsbNibble_get(
  16502     int unit, 
  16503     bcm_field_entry_t entry, 
  16504     bcm_class_t *data, 
  16505     bcm_class_t *mask);
  16506 
  16507 /* 
  16508  * Configure match criteria for bcmFieldQualifySrcIp6ClassLower
  16509  *             qualifier from the field entry.
  16510  */
  16511 extern int bcm_field_qualify_SrcIp6ClassLower(
  16512     int unit, 
  16513     bcm_field_entry_t entry, 
  16514     bcm_class_t data, 
  16515     bcm_class_t mask);
  16516 
  16517 /* 
  16518  * Get match criteria for bcmFieldQualifySrcIp6ClassLower
  16519  *             qualifier from the field entry.
  16520  */
  16521 extern int bcm_field_qualify_SrcIp6ClassLower_get(
  16522     int unit, 
  16523     bcm_field_entry_t entry, 
  16524     bcm_class_t *data, 
  16525     bcm_class_t *mask);
  16526 
  16527 /* 
  16528  * Configure match criteria for bcmFieldQualifySrcIp6ClassUpper
  16529  *             qualifier from the field entry.
  16530  */
  16531 extern int bcm_field_qualify_SrcIp6ClassUpper(
  16532     int unit, 
  16533     bcm_field_entry_t entry, 
  16534     bcm_class_t data, 
  16535     bcm_class_t mask);
  16536 
  16537 /* 
  16538  * Get match criteria for bcmFieldQualifySrcIp6ClassUpper
  16539  *             qualifier from the field entry.
  16540  */
  16541 extern int bcm_field_qualify_SrcIp6ClassUpper_get(
  16542     int unit, 
  16543     bcm_field_entry_t entry, 
  16544     bcm_class_t *data, 
  16545     bcm_class_t *mask);
  16546 
  16547 /* 
  16548  * Configure match criteria for bcmFieldQualifyFcoeOxIDClass
  16549  *             qualifier from the field entry.
  16550  */
  16551 extern int bcm_field_qualify_FcoeOxIDClass(
  16552     int unit, 
  16553     bcm_field_entry_t entry, 
  16554     bcm_class_t data, 
  16555     bcm_class_t mask);
  16556 
  16557 /* 
  16558  * Get match criteria for bcmFieldQualifyFcoeOxIDClass
  16559  *             qualifier from the field entry.
  16560  */
  16561 extern int bcm_field_qualify_FcoeOxIDClass_get(
  16562     int unit, 
  16563     bcm_field_entry_t entry, 
  16564     bcm_class_t *data, 
  16565     bcm_class_t *mask);
  16566 
  16567 /* 
  16568  * Configure match criteria for bcmFieldQualifyDstIpClass
  16569  *             qualifier from the field entry.
  16570  */
  16571 extern int bcm_field_qualify_DstIpClass(
  16572     int unit, 
  16573     bcm_field_entry_t entry, 
  16574     bcm_class_t data, 
  16575     bcm_class_t mask);
  16576 
  16577 /* 
  16578  * Get match criteria for bcmFieldQualifyDstIpClass
  16579  *             qualifier from the field entry.
  16580  */
  16581 extern int bcm_field_qualify_DstIpClass_get(
  16582     int unit, 
  16583     bcm_field_entry_t entry, 
  16584     bcm_class_t *data, 
  16585     bcm_class_t *mask);
  16586 
  16587 /* 
  16588  * Configure match criteria for bcmFieldQualifyDstIpClassMsbNibble
  16589  *             qualifier from the field entry.
  16590  */
  16591 extern int bcm_field_qualify_DstIpClassMsbNibble(
  16592     int unit, 
  16593     bcm_field_entry_t entry, 
  16594     bcm_class_t data, 
  16595     bcm_class_t mask);
  16596 
  16597 /* 
  16598  * Get match criteria for bcmFieldQualifyDstIpClassMsbNibble
  16599  *             qualifier from the field entry.
  16600  */
  16601 extern int bcm_field_qualify_DstIpClassMsbNibble_get(
  16602     int unit, 
  16603     bcm_field_entry_t entry, 
  16604     bcm_class_t *data, 
  16605     bcm_class_t *mask);
  16606 
  16607 /* 
  16608  * Configure match criteria for bcmFieldQualifyDstIpClassLower
  16609  *             qualifier from the field entry.
  16610  */
  16611 extern int bcm_field_qualify_DstIpClassLower(
  16612     int unit, 
  16613     bcm_field_entry_t entry, 
  16614     bcm_class_t data, 
  16615     bcm_class_t mask);
  16616 
  16617 /* 
  16618  * Get match criteria for bcmFieldQualifyDstIpClassLower
  16619  *             qualifier from the field entry.
  16620  */
  16621 extern int bcm_field_qualify_DstIpClassLower_get(
  16622     int unit, 
  16623     bcm_field_entry_t entry, 
  16624     bcm_class_t *data, 
  16625     bcm_class_t *mask);
  16626 
  16627 /* 
  16628  * Configure match criteria for bcmFieldQualifyDstIpClassUpper
  16629  *             qualifier from the field entry.
  16630  */
  16631 extern int bcm_field_qualify_DstIpClassUpper(
  16632     int unit, 
  16633     bcm_field_entry_t entry, 
  16634     bcm_class_t data, 
  16635     bcm_class_t mask);
  16636 
  16637 /* 
  16638  * Get match criteria for bcmFieldQualifyDstIpClassUpper
  16639  *             qualifier from the field entry.
  16640  */
  16641 extern int bcm_field_qualify_DstIpClassUpper_get(
  16642     int unit, 
  16643     bcm_field_entry_t entry, 
  16644     bcm_class_t *data, 
  16645     bcm_class_t *mask);
  16646 
  16647 /* 
  16648  * Configure match criteria for bcmFieldQualifyDstIp6Class
  16649  *             qualifier from the field entry.
  16650  */
  16651 extern int bcm_field_qualify_DstIp6Class(
  16652     int unit, 
  16653     bcm_field_entry_t entry, 
  16654     bcm_class_t data, 
  16655     bcm_class_t mask);
  16656 
  16657 /* 
  16658  * Get match criteria for bcmFieldQualifyDstIp6Class
  16659  *             qualifier from the field entry.
  16660  */
  16661 extern int bcm_field_qualify_DstIp6Class_get(
  16662     int unit, 
  16663     bcm_field_entry_t entry, 
  16664     bcm_class_t *data, 
  16665     bcm_class_t *mask);
  16666 
  16667 /* 
  16668  * Configure match criteria for bcmFieldQualifyDstIp6ClassMsbNibble
  16669  *             qualifier from the field entry.
  16670  */
  16671 extern int bcm_field_qualify_DstIp6ClassMsbNibble(
  16672     int unit, 
  16673     bcm_field_entry_t entry, 
  16674     bcm_class_t data, 
  16675     bcm_class_t mask);
  16676 
  16677 /* 
  16678  * Get match criteria for bcmFieldQualifyDstIp6ClassMsbNibble
  16679  *             qualifier from the field entry.
  16680  */
  16681 extern int bcm_field_qualify_DstIp6ClassMsbNibble_get(
  16682     int unit, 
  16683     bcm_field_entry_t entry, 
  16684     bcm_class_t *data, 
  16685     bcm_class_t *mask);
  16686 
  16687 /* 
  16688  * Configure match criteria for bcmFieldQualifyDstIp6ClassLower
  16689  *             qualifier from the field entry.
  16690  */
  16691 extern int bcm_field_qualify_DstIp6ClassLower(
  16692     int unit, 
  16693     bcm_field_entry_t entry, 
  16694     bcm_class_t data, 
  16695     bcm_class_t mask);
  16696 
  16697 /* 
  16698  * Get match criteria for bcmFieldQualifyDstIp6ClassLower
  16699  *             qualifier from the field entry.
  16700  */
  16701 extern int bcm_field_qualify_DstIp6ClassLower_get(
  16702     int unit, 
  16703     bcm_field_entry_t entry, 
  16704     bcm_class_t *data, 
  16705     bcm_class_t *mask);
  16706 
  16707 /* 
  16708  * Configure match criteria for bcmFieldQualifyDstIp6ClassUpper
  16709  *             qualifier from the field entry.
  16710  */
  16711 extern int bcm_field_qualify_DstIp6ClassUpper(
  16712     int unit, 
  16713     bcm_field_entry_t entry, 
  16714     bcm_class_t data, 
  16715     bcm_class_t mask);
  16716 
  16717 /* 
  16718  * Get match criteria for bcmFieldQualifyDstIp6ClassUpper
  16719  *             qualifier from the field entry.
  16720  */
  16721 extern int bcm_field_qualify_DstIp6ClassUpper_get(
  16722     int unit, 
  16723     bcm_field_entry_t entry, 
  16724     bcm_class_t *data, 
  16725     bcm_class_t *mask);
  16726 
  16727 /* 
  16728  * Configure match criteria for bcmFieldQualifyFcoeRxIDClass
  16729  *             qualifier from the field entry.
  16730  */
  16731 extern int bcm_field_qualify_FcoeRxIDClass(
  16732     int unit, 
  16733     bcm_field_entry_t entry, 
  16734     bcm_class_t data, 
  16735     bcm_class_t mask);
  16736 
  16737 /* 
  16738  * Get match criteria for bcmFieldQualifyFcoeRxIDClass
  16739  *             qualifier from the field entry.
  16740  */
  16741 extern int bcm_field_qualify_FcoeRxIDClass_get(
  16742     int unit, 
  16743     bcm_field_entry_t entry, 
  16744     bcm_class_t *data, 
  16745     bcm_class_t *mask);
  16746 
  16747 /* 
  16748  * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClass
  16749  *             qualifier from the field entry.
  16750  */
  16751 extern int bcm_field_qualify_FibreChanSrcIdClass(
  16752     int unit, 
  16753     bcm_field_entry_t entry, 
  16754     bcm_class_t data, 
  16755     bcm_class_t mask);
  16756 
  16757 /* 
  16758  * Get match criteria for bcmFieldQualifyFibreChanSrcIdClass
  16759  *             qualifier from the field entry.
  16760  */
  16761 extern int bcm_field_qualify_FibreChanSrcIdClass_get(
  16762     int unit, 
  16763     bcm_field_entry_t entry, 
  16764     bcm_class_t *data, 
  16765     bcm_class_t *mask);
  16766 
  16767 /* 
  16768  * Configure match criteria for
  16769  * bcmFieldQualifyFibreChanSrcIdClassMsbNibble
  16770  *             qualifier from the field entry.
  16771  */
  16772 extern int bcm_field_qualify_FibreChanSrcIdClassMsbNibble(
  16773     int unit, 
  16774     bcm_field_entry_t entry, 
  16775     bcm_class_t data, 
  16776     bcm_class_t mask);
  16777 
  16778 /* 
  16779  * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassMsbNibble
  16780  *             qualifier from the field entry.
  16781  */
  16782 extern int bcm_field_qualify_FibreChanSrcIdClassMsbNibble_get(
  16783     int unit, 
  16784     bcm_field_entry_t entry, 
  16785     bcm_class_t *data, 
  16786     bcm_class_t *mask);
  16787 
  16788 /* 
  16789  * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClassLower
  16790  *             qualifier from the field entry.
  16791  */
  16792 extern int bcm_field_qualify_FibreChanSrcIdClassLower(
  16793     int unit, 
  16794     bcm_field_entry_t entry, 
  16795     bcm_class_t data, 
  16796     bcm_class_t mask);
  16797 
  16798 /* 
  16799  * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassLower
  16800  *             qualifier from the field entry.
  16801  */
  16802 extern int bcm_field_qualify_FibreChanSrcIdClassLower_get(
  16803     int unit, 
  16804     bcm_field_entry_t entry, 
  16805     bcm_class_t *data, 
  16806     bcm_class_t *mask);
  16807 
  16808 /* 
  16809  * Configure match criteria for bcmFieldQualifyFibreChanSrcIdClassUpper
  16810  *             qualifier from the field entry.
  16811  */
  16812 extern int bcm_field_qualify_FibreChanSrcIdClassUpper(
  16813     int unit, 
  16814     bcm_field_entry_t entry, 
  16815     bcm_class_t data, 
  16816     bcm_class_t mask);
  16817 
  16818 /* 
  16819  * Get match criteria for bcmFieldQualifyFibreChanSrcIdClassUpper
  16820  *             qualifier from the field entry.
  16821  */
  16822 extern int bcm_field_qualify_FibreChanSrcIdClassUpper_get(
  16823     int unit, 
  16824     bcm_field_entry_t entry, 
  16825     bcm_class_t *data, 
  16826     bcm_class_t *mask);
  16827 
  16828 /* 
  16829  * Configure match criteria for bcmFieldQualifyFibreChanDstIdClass
  16830  *             qualifier from the field entry.
  16831  */
  16832 extern int bcm_field_qualify_FibreChanDstIdClass(
  16833     int unit, 
  16834     bcm_field_entry_t entry, 
  16835     bcm_class_t data, 
  16836     bcm_class_t mask);
  16837 
  16838 /* 
  16839  * Get match criteria for bcmFieldQualifyFibreChanDstIdClass
  16840  *             qualifier from the field entry.
  16841  */
  16842 extern int bcm_field_qualify_FibreChanDstIdClass_get(
  16843     int unit, 
  16844     bcm_field_entry_t entry, 
  16845     bcm_class_t *data, 
  16846     bcm_class_t *mask);
  16847 
  16848 /* 
  16849  * Configure match criteria for
  16850  * bcmFieldQualifyFibreChanDstIdClassMsbNibble
  16851  *             qualifier from the field entry.
  16852  */
  16853 extern int bcm_field_qualify_FibreChanDstIdClassMsbNibble(
  16854     int unit, 
  16855     bcm_field_entry_t entry, 
  16856     bcm_class_t data, 
  16857     bcm_class_t mask);
  16858 
  16859 /* 
  16860  * Get match criteria for bcmFieldQualifyFibreChanDstIdClassMsbNibble
  16861  *             qualifier from the field entry.
  16862  */
  16863 extern int bcm_field_qualify_FibreChanDstIdClassMsbNibble_get(
  16864     int unit, 
  16865     bcm_field_entry_t entry, 
  16866     bcm_class_t *data, 
  16867     bcm_class_t *mask);
  16868 
  16869 /* 
  16870  * Configure match criteria for bcmFieldQualifyFibreChanDstIdClassLower
  16871  *             qualifier from the field entry.
  16872  */
  16873 extern int bcm_field_qualify_FibreChanDstIdClassLower(
  16874     int unit, 
  16875     bcm_field_entry_t entry, 
  16876     bcm_class_t data, 
  16877     bcm_class_t mask);
  16878 
  16879 /* 
  16880  * Get match criteria for bcmFieldQualifyFibreChanDstIdClassLower
  16881  *             qualifier from the field entry.
  16882  */
  16883 extern int bcm_field_qualify_FibreChanDstIdClassLower_get(
  16884     int unit, 
  16885     bcm_field_entry_t entry, 
  16886     bcm_class_t *data, 
  16887     bcm_class_t *mask);
  16888 
  16889 /* 
  16890  * Configure match criteria for bcmFieldQualifyFibreChanDstIdClassUpper
  16891  *             qualifier from the field entry.
  16892  */
  16893 extern int bcm_field_qualify_FibreChanDstIdClassUpper(
  16894     int unit, 
  16895     bcm_field_entry_t entry, 
  16896     bcm_class_t data, 
  16897     bcm_class_t mask);
  16898 
  16899 /* 
  16900  * Get match criteria for bcmFieldQualifyFibreChanDstIdClassUpper
  16901  *             qualifier from the field entry.
  16902  */
  16903 extern int bcm_field_qualify_FibreChanDstIdClassUpper_get(
  16904     int unit, 
  16905     bcm_field_entry_t entry, 
  16906     bcm_class_t *data, 
  16907     bcm_class_t *mask);
  16908 
  16909 /* 
  16910  * Configure match criteria for bcmFieldQualifyTcpClassZero
  16911  *             qualifier from the field entry.
  16912  */
  16913 extern int bcm_field_qualify_TcpClassZero(
  16914     int unit, 
  16915     bcm_field_entry_t entry, 
  16916     bcm_class_t data, 
  16917     bcm_class_t mask);
  16918 
  16919 /* 
  16920  * Get match criteria for bcmFieldQualifyTcpClassZero
  16921  *             qualifier from the field entry.
  16922  */
  16923 extern int bcm_field_qualify_TcpClassZero_get(
  16924     int unit, 
  16925     bcm_field_entry_t entry, 
  16926     bcm_class_t *data, 
  16927     bcm_class_t *mask);
  16928 
  16929 /* 
  16930  * Configure match criteria for bcmFieldQualifyTosClassZero
  16931  *             qualifier from the field entry.
  16932  */
  16933 extern int bcm_field_qualify_TosClassZero(
  16934     int unit, 
  16935     bcm_field_entry_t entry, 
  16936     bcm_class_t data, 
  16937     bcm_class_t mask);
  16938 
  16939 /* 
  16940  * Get match criteria for bcmFieldQualifyTosClassZero
  16941  *             qualifier from the field entry.
  16942  */
  16943 extern int bcm_field_qualify_TosClassZero_get(
  16944     int unit, 
  16945     bcm_field_entry_t entry, 
  16946     bcm_class_t *data, 
  16947     bcm_class_t *mask);
  16948 
  16949 /* 
  16950  * Configure match criteria for bcmFieldQualifyTtlClassZero
  16951  *             qualifier from the field entry.
  16952  */
  16953 extern int bcm_field_qualify_TtlClassZero(
  16954     int unit, 
  16955     bcm_field_entry_t entry, 
  16956     bcm_class_t data, 
  16957     bcm_class_t mask);
  16958 
  16959 /* 
  16960  * Get match criteria for bcmFieldQualifyTtlClassZero
  16961  *             qualifier from the field entry.
  16962  */
  16963 extern int bcm_field_qualify_TtlClassZero_get(
  16964     int unit, 
  16965     bcm_field_entry_t entry, 
  16966     bcm_class_t *data, 
  16967     bcm_class_t *mask);
  16968 
  16969 /* 
  16970  * Configure match criteria for bcmFieldQualifyTcpClassOne
  16971  *             qualifier from the field entry.
  16972  */
  16973 extern int bcm_field_qualify_TcpClassOne(
  16974     int unit, 
  16975     bcm_field_entry_t entry, 
  16976     bcm_class_t data, 
  16977     bcm_class_t mask);
  16978 
  16979 /* 
  16980  * Get match criteria for bcmFieldQualifyTcpClassOne
  16981  *             qualifier from the field entry.
  16982  */
  16983 extern int bcm_field_qualify_TcpClassOne_get(
  16984     int unit, 
  16985     bcm_field_entry_t entry, 
  16986     bcm_class_t *data, 
  16987     bcm_class_t *mask);
  16988 
  16989 /* 
  16990  * Configure match criteria for bcmFieldQualifyTosClassOne
  16991  *             qualifier from the field entry.
  16992  */
  16993 extern int bcm_field_qualify_TosClassOne(
  16994     int unit, 
  16995     bcm_field_entry_t entry, 
  16996     bcm_class_t data, 
  16997     bcm_class_t mask);
  16998 
  16999 /* 
  17000  * Get match criteria for bcmFieldQualifyTosClassOne
  17001  *             qualifier from the field entry.
  17002  */
  17003 extern int bcm_field_qualify_TosClassOne_get(
  17004     int unit, 
  17005     bcm_field_entry_t entry, 
  17006     bcm_class_t *data, 
  17007     bcm_class_t *mask);
  17008 
  17009 /* 
  17010  * Configure match criteria for bcmFieldQualifyTtlClassOne
  17011  *             qualifier from the field entry.
  17012  */
  17013 extern int bcm_field_qualify_TtlClassOne(
  17014     int unit, 
  17015     bcm_field_entry_t entry, 
  17016     bcm_class_t data, 
  17017     bcm_class_t mask);
  17018 
  17019 /* 
  17020  * Get match criteria for bcmFieldQualifyTtlClassOne
  17021  *             qualifier from the field entry.
  17022  */
  17023 extern int bcm_field_qualify_TtlClassOne_get(
  17024     int unit, 
  17025     bcm_field_entry_t entry, 
  17026     bcm_class_t *data, 
  17027     bcm_class_t *mask);
  17028 
  17029 #endif /* BCM_HIDE_DISPATCHABLE */
  17030 
  17031 /* bcm_field_redirect_type_e */
  17032 typedef enum bcm_field_redirect_type_e {
  17033     bcmFieldRedirectTypeL3 = 0,     /* Redirect based on L3 route flow. */
  17034     bcmFieldRedirectTypeAll = 1,    /* Redirect all IP and non-IP flows. */
  17035     bcmFieldRedirectTypeCount = 3   /* Always Last. Not a usable value. */
  17036 } bcm_field_redirect_type_t;
  17037 
  17038 #define BCM_FIELD_REDIRECT_TYPE \
  17039 { \
  17040     "bcmFieldRedirectTypeL3", \
  17041     "bcmFieldRedirectTypeAll"  \
  17042 }
  17043 
  17044 #ifndef BCM_HIDE_DISPATCHABLE
  17045 
  17046 /* 
  17047  * Set match criteria for bcmFieldQualifyHiGigDstMulticast
  17048  *             qualifier in the field entry.
  17049  */
  17050 extern int bcm_field_qualify_HiGigDstMulticast(
  17051     int unit, 
  17052     bcm_field_entry_t entry, 
  17053     uint8 data, 
  17054     uint8 mask);
  17055 
  17056 /* 
  17057  * Get match criteria for bcmFieldQualifyHiGigDstMulticast
  17058  *             qualifier from the field entry.
  17059  */
  17060 extern int bcm_field_qualify_HiGigDstMulticast_get(
  17061     int unit, 
  17062     bcm_field_entry_t entry, 
  17063     uint8 *data, 
  17064     uint8 *mask);
  17065 
  17066 /* 
  17067  * Set match criteria for bcmFieldQualifyHiGigDstMulticastGroupId
  17068  *             qualifier in the field entry.
  17069  */
  17070 extern int bcm_field_qualify_HiGigDstMulticastGroupId(
  17071     int unit, 
  17072     bcm_field_entry_t entry, 
  17073     bcm_multicast_t group, 
  17074     bcm_multicast_t mask);
  17075 
  17076 /* 
  17077  * Get match criteria for bcmFieldQualifyHiGigDstMulticastGroupId
  17078  *             qualifier from the field entry.
  17079  */
  17080 extern int bcm_field_qualify_HiGigDstMulticastGroupId_get(
  17081     int unit, 
  17082     bcm_field_entry_t entry, 
  17083     bcm_multicast_t *group, 
  17084     bcm_multicast_t *mask);
  17085 
  17086 /* 
  17087  * Set match criteria for bcmFieldQualifyHigigTrafficClass
  17088  *             qualifier in the field entry.
  17089  */
  17090 extern int bcm_field_qualify_HiGigTrafficClass(
  17091     int unit, 
  17092     bcm_field_entry_t entry, 
  17093     uint8 data, 
  17094     uint8 mask);
  17095 
  17096 /* 
  17097  * Get match criteria for bcmFieldQualifyHiGigTrafficClass
  17098  *             qualifier from the field entry.
  17099  */
  17100 extern int bcm_field_qualify_HiGigTrafficClass_get(
  17101     int unit, 
  17102     bcm_field_entry_t entry, 
  17103     uint8 *data, 
  17104     uint8 *mask);
  17105 
  17106 /* 
  17107  * Set match criteria for bcmFieldQualifyHiGigDstModuleGport
  17108  *             qualifier in the field entry.
  17109  */
  17110 extern int bcm_field_qualify_HiGigDstModuleGport(
  17111     int unit, 
  17112     bcm_field_entry_t entry, 
  17113     bcm_gport_t port_id, 
  17114     bcm_gport_t port_mask);
  17115 
  17116 /* 
  17117  * Get match criteria for bcmFieldQualifyHiGigDstModuleGport
  17118  *             qualifier from the field entry.
  17119  */
  17120 extern int bcm_field_qualify_HiGigDstModuleGport_get(
  17121     int unit, 
  17122     bcm_field_entry_t entry, 
  17123     bcm_gport_t *port_id, 
  17124     bcm_gport_t *port_mask);
  17125 
  17126 /* 
  17127  * Set match criteria for bcmFieldQualifyHiGigDstPortGport
  17128  *             qualifier in the field entry.
  17129  */
  17130 extern int bcm_field_qualify_HiGigDstPortGport(
  17131     int unit, 
  17132     bcm_field_entry_t entry, 
  17133     bcm_gport_t port_id, 
  17134     bcm_gport_t mask);
  17135 
  17136 /* 
  17137  * Get match criteria for bcmFieldQualifyHiGigDstPortGport
  17138  *             qualifier from the field entry.
  17139  */
  17140 extern int bcm_field_qualify_HiGigDstPortGport_get(
  17141     int unit, 
  17142     bcm_field_entry_t entry, 
  17143     bcm_gport_t *port_id, 
  17144     bcm_gport_t *port_mask);
  17145 
  17146 /* 
  17147  * Set match criteria for bcmFieldQualifyHiGigDstModPortGport
  17148  *             qualifier in the field entry.
  17149  */
  17150 extern int bcm_field_qualify_HiGigDstModPortGport(
  17151     int unit, 
  17152     bcm_field_entry_t entry, 
  17153     bcm_gport_t port_id, 
  17154     bcm_gport_t port_mask);
  17155 
  17156 /* 
  17157  * Get match criteria for bcmFieldQualifyHiGigDstModPortGport
  17158  *             qualifier from the field entry.
  17159  */
  17160 extern int bcm_field_qualify_HiGigDstModPortGport_get(
  17161     int unit, 
  17162     bcm_field_entry_t entry, 
  17163     bcm_gport_t *port_id, 
  17164     bcm_gport_t *port_mask);
  17165 
  17166 /* 
  17167  * Set match criteria for bcmFieldQualifyHiGigSrcModuleGport
  17168  *             qualifier in the field entry.
  17169  */
  17170 extern int bcm_field_qualify_HiGigSrcModuleGport(
  17171     int unit, 
  17172     bcm_field_entry_t entry, 
  17173     bcm_gport_t port_id, 
  17174     bcm_gport_t port_mask);
  17175 
  17176 /* 
  17177  * Get match criteria for bcmFieldQualifyHiGigSrcModuleGport
  17178  *             qualifier from the field entry.
  17179  */
  17180 extern int bcm_field_qualify_HiGigSrcModuleGport_get(
  17181     int unit, 
  17182     bcm_field_entry_t entry, 
  17183     bcm_gport_t *port_id, 
  17184     bcm_gport_t *port_mask);
  17185 
  17186 /* 
  17187  * Set match criteria for bcmFieldQualifyHiGigSrcPortGport
  17188  *             qualifier in the field entry.
  17189  */
  17190 extern int bcm_field_qualify_HiGigSrcPortGport(
  17191     int unit, 
  17192     bcm_field_entry_t entry, 
  17193     bcm_gport_t port_id, 
  17194     bcm_gport_t port_mask);
  17195 
  17196 /* 
  17197  * Get match criteria for bcmFieldQualifyHiGigSrcPortGport
  17198  *             qualifier from the field entry.
  17199  */
  17200 extern int bcm_field_qualify_HiGigSrcPortGport_get(
  17201     int unit, 
  17202     bcm_field_entry_t entry, 
  17203     bcm_gport_t *port_id, 
  17204     bcm_gport_t *port_mask);
  17205 
  17206 /* 
  17207  * Set match criteria for bcmFieldQualifyHiGigSrcModPortGport
  17208  *             qualifier in the field entry.
  17209  */
  17210 extern int bcm_field_qualify_HiGigSrcModPortGport(
  17211     int unit, 
  17212     bcm_field_entry_t entry, 
  17213     bcm_gport_t port_id, 
  17214     bcm_gport_t port_mask);
  17215 
  17216 /* 
  17217  * Get match criteria for bcmFieldQualifyHiGigSrcModPortGport
  17218  *             qualifier from the field entry.
  17219  */
  17220 extern int bcm_field_qualify_HiGigSrcModPortGport_get(
  17221     int unit, 
  17222     bcm_field_entry_t entry, 
  17223     bcm_gport_t *port_id, 
  17224     bcm_gport_t *port_mask);
  17225 
  17226 /* 
  17227  * Set match criteria for bcmFieldQualifyHiGigLoadBalanceID
  17228  *             qualifier in the field entry.
  17229  */
  17230 extern int bcm_field_qualify_HiGigLoadBalanceID(
  17231     int unit, 
  17232     bcm_field_entry_t entry, 
  17233     uint8 data, 
  17234     uint8 mask);
  17235 
  17236 /* 
  17237  * Get match criteria for bcmFieldQualifyHiGigLoadBalanceID
  17238  *             qualifier from the field entry.
  17239  */
  17240 extern int bcm_field_qualify_HiGigLoadBalanceID_get(
  17241     int unit, 
  17242     bcm_field_entry_t entry, 
  17243     uint8 *data, 
  17244     uint8 *mask);
  17245 
  17246 /* 
  17247  * Set match criteria for bcmFieldQualifyHiGigColor
  17248  *             qualifier in the field entry.
  17249  */
  17250 extern int bcm_field_qualify_HiGigColor(
  17251     int unit, 
  17252     bcm_field_entry_t entry, 
  17253     uint8 color);
  17254 
  17255 /* 
  17256  * Get match criteria for bcmFieldQualifyHiGigColor
  17257  *             qualifier in the field entry.
  17258  */
  17259 extern int bcm_field_qualify_HiGigColor_get(
  17260     int unit, 
  17261     bcm_field_entry_t entry, 
  17262     uint8 *color);
  17263 
  17264 /* 
  17265  * Set match criteria for bcmFieldQualifyHiGigIntCongestionNotification
  17266  *             qualifier in the field entry.
  17267  */
  17268 extern int bcm_field_qualify_HiGigIntCongestionNotification(
  17269     int unit, 
  17270     bcm_field_entry_t entry, 
  17271     uint8 data, 
  17272     uint8 mask);
  17273 
  17274 /* 
  17275  * Get match criteria for bcmFieldQualifyHiGigIntCongestionNotification
  17276  *             qualifier from the field entry.
  17277  */
  17278 extern int bcm_field_qualify_HiGigIntCongestionNotification_get(
  17279     int unit, 
  17280     bcm_field_entry_t entry, 
  17281     uint8 *data, 
  17282     uint8 *mask);
  17283 
  17284 /* 
  17285  * Set match criteria for bcmFieldQualifyHiGigIngressTagged
  17286  *             qualifier in the field entry.
  17287  */
  17288 extern int bcm_field_qualify_HiGigIngressTagged(
  17289     int unit, 
  17290     bcm_field_entry_t entry, 
  17291     uint8 data, 
  17292     uint8 mask);
  17293 
  17294 /* 
  17295  * Get match criteria for bcmFieldQualifyHiGigIngressTagged
  17296  *             qualifier from the field entry.
  17297  */
  17298 extern int bcm_field_qualify_HiGigIngressTagged_get(
  17299     int unit, 
  17300     bcm_field_entry_t entry, 
  17301     uint8 *data, 
  17302     uint8 *mask);
  17303 
  17304 /* 
  17305  * Set match criteria for bcmFieldQualifyHiGigDstTrunk
  17306  *             qualifier in the field entry.
  17307  */
  17308 extern int bcm_field_qualify_HiGigDstTrunk(
  17309     int unit, 
  17310     bcm_field_entry_t entry, 
  17311     uint8 data, 
  17312     uint8 mask);
  17313 
  17314 /* 
  17315  * Get match criteria for bcmFieldQualifyHiGigDstTrunk
  17316  *             qualifier from the field entry.
  17317  */
  17318 extern int bcm_field_qualify_HiGigDstTrunk_get(
  17319     int unit, 
  17320     bcm_field_entry_t entry, 
  17321     uint8 *data, 
  17322     uint8 *mask);
  17323 
  17324 /* 
  17325  * Set match criteria for bcmFieldQualifyHiGigDstTrunkId
  17326  *             qualifier in the field entry.
  17327  */
  17328 extern int bcm_field_qualify_HiGigDstTrunkId(
  17329     int unit, 
  17330     bcm_field_entry_t entry, 
  17331     bcm_trunk_t data, 
  17332     bcm_trunk_t mask);
  17333 
  17334 /* 
  17335  * Get match criteria for bcmFieldQualifyHiGigDstTrunkId
  17336  *             qualifier from the field entry.
  17337  */
  17338 extern int bcm_field_qualify_HiGigDstTrunkId_get(
  17339     int unit, 
  17340     bcm_field_entry_t entry, 
  17341     bcm_trunk_t *data, 
  17342     bcm_trunk_t *mask);
  17343 
  17344 /* 
  17345  * Set match criteria for bcmFieldQualifyHiGigIngressL3SwitchPkt
  17346  *             qualifier in the field entry.
  17347  */
  17348 extern int bcm_field_qualify_HiGigIngressL3SwitchPkt(
  17349     int unit, 
  17350     bcm_field_entry_t entry, 
  17351     uint8 data, 
  17352     uint8 mask);
  17353 
  17354 /* 
  17355  * Get match criteria for bcmFieldQualifyHiGigIngressL3SwitchPkt
  17356  *             qualifier from the field entry.
  17357  */
  17358 extern int bcm_field_qualify_HiGigIngressL3SwitchPkt_get(
  17359     int unit, 
  17360     bcm_field_entry_t entry, 
  17361     uint8 *data, 
  17362     uint8 *mask);
  17363 
  17364 /* 
  17365  * Set match criteria for bcmFieldQualifyHiGigLabel
  17366  *             qualifier in the field entry.
  17367  */
  17368 extern int bcm_field_qualify_HiGigLabel(
  17369     int unit, 
  17370     bcm_field_entry_t entry, 
  17371     uint32 data, 
  17372     uint32 mask);
  17373 
  17374 /* 
  17375  * Get match criteria for bcmFieldQualifyHiGigLabel
  17376  *             qualifier from the field entry.
  17377  */
  17378 extern int bcm_field_qualify_HiGigLabel_get(
  17379     int unit, 
  17380     bcm_field_entry_t entry, 
  17381     uint32 *data, 
  17382     uint32 *mask);
  17383 
  17384 /* 
  17385  * Set match criteria for bcmFieldQualifyHiGigReplicationId
  17386  *             qualifier in the field entry.
  17387  */
  17388 extern int bcm_field_qualify_HiGigReplicationId(
  17389     int unit, 
  17390     bcm_field_entry_t entry, 
  17391     uint32 data, 
  17392     uint32 mask);
  17393 
  17394 /* 
  17395  * Get match criteria for bcmFieldQualifyHiGigReplicationId
  17396  *             qualifier from the field entry.
  17397  */
  17398 extern int bcm_field_qualify_HiGigReplicationId_get(
  17399     int unit, 
  17400     bcm_field_entry_t entry, 
  17401     uint32 *data, 
  17402     uint32 *mask);
  17403 
  17404 /* 
  17405  * Set match criteria for bcmFieldQualifyHiGigVlan
  17406  *             qualifier in the field entry.
  17407  */
  17408 extern int bcm_field_qualify_HiGigVlan(
  17409     int unit, 
  17410     bcm_field_entry_t entry, 
  17411     uint16 data, 
  17412     uint16 mask);
  17413 
  17414 /* 
  17415  * Get match criteria for bcmFieldQualifyHiGigVlan
  17416  *             qualifier from the field entry.
  17417  */
  17418 extern int bcm_field_qualify_HiGigVlan_get(
  17419     int unit, 
  17420     bcm_field_entry_t entry, 
  17421     uint16 *data, 
  17422     uint16 *mask);
  17423 
  17424 /* 
  17425  * Set match criteria for bcmFieldQualifyHiGigPortFilteringMode
  17426  *             qualifier in the field entry.
  17427  */
  17428 extern int bcm_field_qualify_HiGigPortFilteringMode(
  17429     int unit, 
  17430     bcm_field_entry_t entry, 
  17431     uint8 data, 
  17432     uint8 mask);
  17433 
  17434 /* 
  17435  * Get match criteria for bcmFieldQualifyHiGigPortFilteringMode
  17436  *             qualifier from the field entry.
  17437  */
  17438 extern int bcm_field_qualify_HiGigPortFilteringMode_get(
  17439     int unit, 
  17440     bcm_field_entry_t entry, 
  17441     uint8 *data, 
  17442     uint8 *mask);
  17443 
  17444 /* 
  17445  * Set match criteria for bcmFieldQualifyHiGigSrcTrunk
  17446  *             qualifier in the field entry.
  17447  */
  17448 extern int bcm_field_qualify_HiGigSrcTrunk(
  17449     int unit, 
  17450     bcm_field_entry_t entry, 
  17451     uint8 data, 
  17452     uint8 mask);
  17453 
  17454 /* 
  17455  * Get match criteria for bcmFieldQualifyHiGigSrcTrunk
  17456  *             qualifier from the field entry.
  17457  */
  17458 extern int bcm_field_qualify_HiGigSrcTrunk_get(
  17459     int unit, 
  17460     bcm_field_entry_t entry, 
  17461     uint8 *data, 
  17462     uint8 *mask);
  17463 
  17464 /* 
  17465  * Set match criteria for bcmFieldQualifyHiGigIngressClassificationTag
  17466  *             qualifier in the field entry.
  17467  */
  17468 extern int bcm_field_qualify_HiGigIngressClassificationTag(
  17469     int unit, 
  17470     bcm_field_entry_t entry, 
  17471     uint16 data, 
  17472     uint16 mask);
  17473 
  17474 /* 
  17475  * Get match criteria for bcmFieldQualifyHiGigIngressClassificationTag
  17476  *             qualifier from the field entry.
  17477  */
  17478 extern int bcm_field_qualify_HiGigIngressClassificationTag_get(
  17479     int unit, 
  17480     bcm_field_entry_t entry, 
  17481     uint16 *data, 
  17482     uint16 *mask);
  17483 
  17484 /* 
  17485  * Set match criteria for bcmFieldQualifyHiGigEgressMcast
  17486  *             qualifier in the field entry.
  17487  */
  17488 extern int bcm_field_qualify_HiGigEgressMcast(
  17489     int unit, 
  17490     bcm_field_entry_t entry, 
  17491     uint8 data, 
  17492     uint8 mask);
  17493 
  17494 /* 
  17495  * Get match criteria for bcmFieldQualifyHiGigEgressMcast
  17496  *             qualifier from the field entry.
  17497  */
  17498 extern int bcm_field_qualify_HiGigEgressMcast_get(
  17499     int unit, 
  17500     bcm_field_entry_t entry, 
  17501     uint8 *data, 
  17502     uint8 *mask);
  17503 
  17504 /* 
  17505  * Set match criteria for bcmFieldQualifyHiGigVni
  17506  *             qualifier in the field entry.
  17507  */
  17508 extern int bcm_field_qualify_HiGigVni(
  17509     int unit, 
  17510     bcm_field_entry_t entry, 
  17511     uint16 data, 
  17512     uint16 mask);
  17513 
  17514 /* 
  17515  * Get match criteria for bcmFieldQualifyHiGigVni
  17516  *             qualifier from the field entry.
  17517  */
  17518 extern int bcm_field_qualify_HiGigVni_get(
  17519     int unit, 
  17520     bcm_field_entry_t entry, 
  17521     uint16 *data, 
  17522     uint16 *mask);
  17523 
  17524 /* 
  17525  * Set match criteria for bcmFieldQualifyHiGigDstGport
  17526  *             qualifier in the field entry.
  17527  */
  17528 extern int bcm_field_qualify_HiGigDstGport(
  17529     int unit, 
  17530     bcm_field_entry_t entry, 
  17531     bcm_gport_t port_id, 
  17532     bcm_gport_t port_mask);
  17533 
  17534 /* 
  17535  * Get match criteria for bcmFieldQualifyHiGigDstGport
  17536  *             qualifier from the field entry.
  17537  */
  17538 extern int bcm_field_qualify_HiGigDstGport_get(
  17539     int unit, 
  17540     bcm_field_entry_t entry, 
  17541     bcm_gport_t *port_id, 
  17542     bcm_gport_t *port_mask);
  17543 
  17544 /* 
  17545  * Set match criteria for bcmFieldQualifyHiGigMulticastIndex
  17546  *             qualifier in the field entry.
  17547  */
  17548 extern int bcm_field_qualify_HiGigMulticastIndex(
  17549     int unit, 
  17550     bcm_field_entry_t entry, 
  17551     uint16 data, 
  17552     uint16 mask);
  17553 
  17554 /* 
  17555  * Get match criteria for bcmFieldQualifyHiGigMulticastIndex
  17556  *             qualifier from the field entry.
  17557  */
  17558 extern int bcm_field_qualify_HiGigMulticastIndex_get(
  17559     int unit, 
  17560     bcm_field_entry_t entry, 
  17561     uint16 *data, 
  17562     uint16 *mask);
  17563 
  17564 /* 
  17565  * Set match criteria for bcmFieldQualifyHiGigVpReplicationId
  17566  *             qualifier in the field entry.
  17567  */
  17568 extern int bcm_field_qualify_HiGigVpReplicationId(
  17569     int unit, 
  17570     bcm_field_entry_t entry, 
  17571     uint32 data, 
  17572     uint32 mask);
  17573 
  17574 /* 
  17575  * Get match criteria for bcmFieldQualifyHiGigVpReplicationId
  17576  *             qualifier from the field entry.
  17577  */
  17578 extern int bcm_field_qualify_HiGigVpReplicationId_get(
  17579     int unit, 
  17580     bcm_field_entry_t entry, 
  17581     uint32 *data, 
  17582     uint32 *mask);
  17583 
  17584 /* 
  17585  * Set match criteria for bcmFieldQualifyHiGigSrcGport
  17586  *             qualifier in the field entry.
  17587  */
  17588 extern int bcm_field_qualify_HiGigSrcGport(
  17589     int unit, 
  17590     bcm_field_entry_t entry, 
  17591     bcm_gport_t port_id, 
  17592     bcm_gport_t port_mask);
  17593 
  17594 /* 
  17595  * Get match criteria for bcmFieldQualifyHiGigSrcGport
  17596  *             qualifier from the field entry.
  17597  */
  17598 extern int bcm_field_qualify_HiGigSrcGport_get(
  17599     int unit, 
  17600     bcm_field_entry_t entry, 
  17601     bcm_gport_t *port_id, 
  17602     bcm_gport_t *port_mask);
  17603 
  17604 /* 
  17605  * Set match criteria for bcmFieldQualifyHiGigProtectionSwitchingStatus
  17606  *             qualifier in the field entry.
  17607  */
  17608 extern int bcm_field_qualify_HiGigProtectionSwitchingStatus(
  17609     int unit, 
  17610     bcm_field_entry_t entry, 
  17611     uint8 data, 
  17612     uint8 mask);
  17613 
  17614 /* 
  17615  * Get match criteria for bcmFieldQualifyHiGigProtectionSwitchingStatus
  17616  *             qualifier from the field entry.
  17617  */
  17618 extern int bcm_field_qualify_HiGigProtectionSwitchingStatus_get(
  17619     int unit, 
  17620     bcm_field_entry_t entry, 
  17621     uint8 *data, 
  17622     uint8 *mask);
  17623 
  17624 /* 
  17625  * Set match criteria for bcmFieldQualifyHiGigMirrorToVp
  17626  *             qualifier in the field entry.
  17627  */
  17628 extern int bcm_field_qualify_HiGigMirrorToVp(
  17629     int unit, 
  17630     bcm_field_entry_t entry, 
  17631     uint8 data, 
  17632     uint8 mask);
  17633 
  17634 /* 
  17635  * Get match criteria for bcmFieldQualifyHiGigMirrorToVp
  17636  *             qualifier from the field entry.
  17637  */
  17638 extern int bcm_field_qualify_HiGigMirrorToVp_get(
  17639     int unit, 
  17640     bcm_field_entry_t entry, 
  17641     uint8 *data, 
  17642     uint8 *mask);
  17643 
  17644 /* 
  17645  * Set match criteria for bcmFieldQualifyHiGigDstType
  17646  *             qualifier in the field entry.
  17647  */
  17648 extern int bcm_field_qualify_HiGigDstType(
  17649     int unit, 
  17650     bcm_field_entry_t entry, 
  17651     uint8 data, 
  17652     uint8 mask);
  17653 
  17654 /* 
  17655  * Get match criteria for bcmFieldQualifyHiGigDstType
  17656  *             qualifier from the field entry.
  17657  */
  17658 extern int bcm_field_qualify_HiGigDstType_get(
  17659     int unit, 
  17660     bcm_field_entry_t entry, 
  17661     uint8 *data, 
  17662     uint8 *mask);
  17663 
  17664 /* 
  17665  * Set match criteria for bcmFieldQualifyHiGigSrcType
  17666  *             qualifier in the field entry.
  17667  */
  17668 extern int bcm_field_qualify_HiGigSrcType(
  17669     int unit, 
  17670     bcm_field_entry_t entry, 
  17671     uint8 data, 
  17672     uint8 mask);
  17673 
  17674 /* 
  17675  * Get match criteria for bcmFieldQualifyHiGigSrcType
  17676  *             qualifier from the field entry.
  17677  */
  17678 extern int bcm_field_qualify_HiGigSrcType_get(
  17679     int unit, 
  17680     bcm_field_entry_t entry, 
  17681     uint8 *data, 
  17682     uint8 *mask);
  17683 
  17684 /* 
  17685  * Set match criteria for
  17686  * bcmFieldQualifyHiGigOffloadEngineClassificationTag
  17687  *             qualifier in the field entry.
  17688  */
  17689 extern int bcm_field_qualify_HiGigOffloadEngineClassificationTag(
  17690     int unit, 
  17691     bcm_field_entry_t entry, 
  17692     uint16 data, 
  17693     uint16 mask);
  17694 
  17695 /* 
  17696  * Get match criteria for
  17697  * bcmFieldQualifyHiGigOffloadEngineClassificationTag
  17698  *             qualifier from the field entry.
  17699  */
  17700 extern int bcm_field_qualify_HiGigOffloadEngineClassificationTag_get(
  17701     int unit, 
  17702     bcm_field_entry_t entry, 
  17703     uint16 *data, 
  17704     uint16 *mask);
  17705 
  17706 /* 
  17707  * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePktPriNew
  17708  *             qualifier in the field entry.
  17709  */
  17710 extern int bcm_field_qualify_HiGigOffloadEnginePktPriNew(
  17711     int unit, 
  17712     bcm_field_entry_t entry, 
  17713     uint8 data, 
  17714     uint8 mask);
  17715 
  17716 /* 
  17717  * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePktPriNew
  17718  *             qualifier from the field entry.
  17719  */
  17720 extern int bcm_field_qualify_HiGigOffloadEnginePktPriNew_get(
  17721     int unit, 
  17722     bcm_field_entry_t entry, 
  17723     uint8 *data, 
  17724     uint8 *mask);
  17725 
  17726 /* 
  17727  * Set match criteria for bcmFieldQualifyHiGigOffloadEngineDscpNew
  17728  *             qualifier in the field entry.
  17729  */
  17730 extern int bcm_field_qualify_HiGigOffloadEngineDscpNew(
  17731     int unit, 
  17732     bcm_field_entry_t entry, 
  17733     uint8 data, 
  17734     uint8 mask);
  17735 
  17736 /* 
  17737  * Get match criteria for bcmFieldQualifyHiGigOffloadEngineDscpNew
  17738  *             qualifier from the field entry.
  17739  */
  17740 extern int bcm_field_qualify_HiGigOffloadEngineDscpNew_get(
  17741     int unit, 
  17742     bcm_field_entry_t entry, 
  17743     uint8 *data, 
  17744     uint8 *mask);
  17745 
  17746 /* 
  17747  * Set match criteria for bcmFieldQualifyLoopBackQueue
  17748  *             qualifier in the field entry.
  17749  */
  17750 extern int bcm_field_qualify_LoopBackQueue(
  17751     int unit, 
  17752     bcm_field_entry_t entry, 
  17753     uint8 data, 
  17754     uint8 mask);
  17755 
  17756 /* 
  17757  * Get match criteria for bcmFieldQualifyLoopBackQueue
  17758  *             qualifier from the field entry.
  17759  */
  17760 extern int bcm_field_qualify_LoopBackQueue_get(
  17761     int unit, 
  17762     bcm_field_entry_t entry, 
  17763     uint8 *data, 
  17764     uint8 *mask);
  17765 
  17766 /* 
  17767  * Set match criteria for bcmFieldQualifyLoopBackSrcGport
  17768  *             qualifier in the field entry.
  17769  */
  17770 extern int bcm_field_qualify_LoopBackSrcGport(
  17771     int unit, 
  17772     bcm_field_entry_t entry, 
  17773     bcm_gport_t port_id, 
  17774     bcm_gport_t port_mask);
  17775 
  17776 /* 
  17777  * Get match criteria for bcmFieldQualifyLoopBackSrcGport
  17778  *             qualifier from the field entry.
  17779  */
  17780 extern int bcm_field_qualify_LoopBackSrcGport_get(
  17781     int unit, 
  17782     bcm_field_entry_t entry, 
  17783     bcm_gport_t *port_id, 
  17784     bcm_gport_t *port_mask);
  17785 
  17786 /* 
  17787  * Set match criteria for bcmFieldQualifyPktIsVisible
  17788  *             qualifier in the field entry.
  17789  */
  17790 extern int bcm_field_qualify_PktIsVisible(
  17791     int unit, 
  17792     bcm_field_entry_t entry, 
  17793     uint8 data, 
  17794     uint8 mask);
  17795 
  17796 /* 
  17797  * Get match criteria for bcmFieldQualifyPktIsVisible
  17798  *             qualifier from the field entry.
  17799  */
  17800 extern int bcm_field_qualify_PktIsVisible_get(
  17801     int unit, 
  17802     bcm_field_entry_t entry, 
  17803     uint8 *data, 
  17804     uint8 *mask);
  17805 
  17806 /* 
  17807  * Set match criteria for bcmFieldQualifyLoopBackCpuMasqueradePktProfile
  17808  *             qualifier in the field entry.
  17809  */
  17810 extern int bcm_field_qualify_LoopBackCpuMasqueradePktProfile(
  17811     int unit, 
  17812     bcm_field_entry_t entry, 
  17813     uint8 data, 
  17814     uint8 mask);
  17815 
  17816 /* 
  17817  * Get match criteria for bcmFieldQualifyLoopBackCpuMasqueradePktProfile
  17818  *             qualifier from the field entry.
  17819  */
  17820 extern int bcm_field_qualify_LoopBackCpuMasqueradePktProfile_get(
  17821     int unit, 
  17822     bcm_field_entry_t entry, 
  17823     uint8 *data, 
  17824     uint8 *mask);
  17825 
  17826 /* 
  17827  * Set match criteria for bcmFieldQualifyLoopBackColor
  17828  *             qualifier in the field entry.
  17829  */
  17830 extern int bcm_field_qualify_LoopBackColor(
  17831     int unit, 
  17832     bcm_field_entry_t entry, 
  17833     uint8 color);
  17834 
  17835 /* 
  17836  * Get match criteria for bcmFieldQualifyLoopBackColor
  17837  *             qualifier from the field entry.
  17838  */
  17839 extern int bcm_field_qualify_LoopBackColor_get(
  17840     int unit, 
  17841     bcm_field_entry_t entry, 
  17842     uint8 *color);
  17843 
  17844 /* 
  17845  * Set match criteria for bcmFieldQualifyLoopBackTrafficClass
  17846  *             qualifier in the field entry.
  17847  */
  17848 extern int bcm_field_qualify_LoopBackTrafficClass(
  17849     int unit, 
  17850     bcm_field_entry_t entry, 
  17851     uint8 data, 
  17852     uint8 mask);
  17853 
  17854 /* 
  17855  * Get match criteria for bcmFieldQualifyLoopBackTrafficClass
  17856  *             qualifier from the field entry.
  17857  */
  17858 extern int bcm_field_qualify_LoopBackTrafficClass_get(
  17859     int unit, 
  17860     bcm_field_entry_t entry, 
  17861     uint8 *data, 
  17862     uint8 *mask);
  17863 
  17864 /* 
  17865  * Set match criteria for bcmFieldQualifyLoopBackPacketProcessingPort
  17866  *             qualifier in the field entry.
  17867  */
  17868 extern int bcm_field_qualify_LoopBackPacketProcessingPort(
  17869     int unit, 
  17870     bcm_field_entry_t entry, 
  17871     bcm_gport_t port_id, 
  17872     bcm_gport_t port_mask);
  17873 
  17874 /* 
  17875  * Get match criteria for bcmFieldQualifyLoopBackPacketProcessingPort
  17876  *             qualifier from the field entry.
  17877  */
  17878 extern int bcm_field_qualify_LoopBackPacketProcessingPort_get(
  17879     int unit, 
  17880     bcm_field_entry_t entry, 
  17881     bcm_gport_t *port_id, 
  17882     bcm_gport_t *port_mask);
  17883 
  17884 #endif /* BCM_HIDE_DISPATCHABLE */
  17885 
  17886 /* bcm_field_src_class_mode_e */
  17887 typedef enum bcm_field_src_class_mode_e {
  17888     bcmFieldSrcClassModeDefault = 0,    /* XGS Default. */
  17889     bcmFieldSrcClassModeSDN = 1,        /* Suitable for  SDN. */
  17890     bcmFieldSrcClassModeBalanced = 2,   /* Balanced mode. */
  17891     bcmFieldSrcClassModeOverlayNetworks = 3, /* Suitable for Overlay Networks. */
  17892     bcmFieldSrcClassModeCount = 4       /* Always Last. Not a usable value. */
  17893 } bcm_field_src_class_mode_t;
  17894 
  17895 #define BCM_FIELD_SRC_CLASS_MODE_TYPE \
  17896 { \
  17897     "bcmFieldSrcClassModeDefault", \
  17898     "bcmFieldSrcClassModeSDN", \
  17899     "bcmFieldSrcClassModeBalanced", \
  17900     "bcmFieldSrcClassModeOverlayNetworks"  \
  17901 }
  17902 
  17903 /* Source Class Mode Structure. */
  17904 typedef struct bcm_field_src_class_s {
  17905     uint16 src_class_field;     /* Field Lookup stage Class ID value assigned by
  17906                                    bcmFieldActionClassSourceSet action */
  17907     uint16 dst_class_field;     /* Field Stage Lookup Class ID value assigned by
  17908                                    bcmFieldActionClassDestSet action. */
  17909     uint32 udf_class;           /* Class ID value from UDF lookup. */
  17910     uint32 intf_class_port;     /* Class ID value from Port Table. */
  17911     uint32 intf_class_l2;       /* Class ID value from Vlan or Vfi lookup. */
  17912     uint32 intf_class_l3;       /* L3 ingress interface Class ID. */
  17913     uint32 intf_class_vport;    /* Class ID value from Mim / L2Gre / VxLan /
  17914                                    Mpls / Trill / Vlan Translation / Field
  17915                                    Lookup stage source virtual port lookup. */
  17916 } bcm_field_src_class_t;
  17917 
  17918 /* Initialize Field Source Class Mode structure. */
  17919 extern void bcm_field_src_class_t_init(
  17920     bcm_field_src_class_t *src_class);
  17921 
  17922 #ifndef BCM_HIDE_DISPATCHABLE
  17923 
  17924 /* 
  17925  * Configures the mixed Source Class ID generation
  17926  *             mode for Ingress and Exact Match Search stages.
  17927  */
  17928 extern int bcm_field_source_class_mode_set(
  17929     int unit, 
  17930     bcm_field_stage_t stage, 
  17931     bcm_pbmp_t pbmp, 
  17932     bcm_field_src_class_mode_t mode);
  17933 
  17934 /* 
  17935  * Gets the mixed source class ID generation mode configured
  17936  *             for Field Ingress and EM search stages.
  17937  */
  17938 extern int bcm_field_source_class_mode_get(
  17939     int unit, 
  17940     bcm_field_stage_t stage, 
  17941     bcm_pbmp_t pbmp, 
  17942     bcm_field_src_class_mode_t *mode);
  17943 
  17944 /* 
  17945  * Configure match criteria for bcmFieldQualifyMixedSrcClassId
  17946  *             qualifier from the field entry.
  17947  */
  17948 extern int bcm_field_qualify_MixedSrcClassId(
  17949     int unit, 
  17950     bcm_field_entry_t entry, 
  17951     bcm_pbmp_t pbmp, 
  17952     bcm_field_src_class_t data, 
  17953     bcm_field_src_class_t mask);
  17954 
  17955 /* 
  17956  * Get match criteria for bcmFieldQualifyMixedSrcClassId
  17957  *             qualifier from the field entry.
  17958  */
  17959 extern int bcm_field_qualify_MixedSrcClassId_get(
  17960     int unit, 
  17961     bcm_field_entry_t entry, 
  17962     bcm_pbmp_t pbmp, 
  17963     bcm_field_src_class_t *data, 
  17964     bcm_field_src_class_t *mask);
  17965 
  17966 /* 
  17967  * Configure match criteria for bcmFieldQualifyCustomHeaderPkt
  17968  *             qualifier from the field entry.
  17969  */
  17970 extern int bcm_field_qualify_CustomHeaderPkt(
  17971     int unit, 
  17972     bcm_field_entry_t entry, 
  17973     uint8 data, 
  17974     uint8 mask);
  17975 
  17976 /* 
  17977  * Get match criteria for bcmFieldQualifyCustomHeaderPkt
  17978  *             qualifier from the field entry.
  17979  */
  17980 extern int bcm_field_qualify_CustomHeaderPkt_get(
  17981     int unit, 
  17982     bcm_field_entry_t entry, 
  17983     uint8 *data, 
  17984     uint8 *mask);
  17985 
  17986 /* 
  17987  * Configure match criteria for bcmFieldQualifyCustomHeaderData
  17988  *             qualifier from the field entry.
  17989  */
  17990 extern int bcm_field_qualify_CustomHeaderData(
  17991     int unit, 
  17992     bcm_field_entry_t entry, 
  17993     uint32 data, 
  17994     uint32 mask);
  17995 
  17996 /* 
  17997  * Get match criteria for bcmFieldQualifyCustomHeaderData
  17998  *             qualifier from the field entry.
  17999  */
  18000 extern int bcm_field_qualify_CustomHeaderData_get(
  18001     int unit, 
  18002     bcm_field_entry_t entry, 
  18003     uint32 *data, 
  18004     uint32 *mask);
  18005 
  18006 /* 
  18007  * Set match criteria for bcmFieldQualifyMimlPkt
  18008  *                qualifier in the field entry.
  18009  */
  18010 extern int bcm_field_qualify_MimlPkt(
  18011     int unit, 
  18012     bcm_field_entry_t entry, 
  18013     uint8 data, 
  18014     uint8 mask);
  18015 
  18016 /* 
  18017  * Get match criteria for bcmFieldQualifyMimlPkt
  18018  *                qualifier from the field entry.
  18019  */
  18020 extern int bcm_field_qualify_MimlPkt_get(
  18021     int unit, 
  18022     bcm_field_entry_t entry, 
  18023     uint8 *data, 
  18024     uint8 *mask);
  18025 
  18026 /* 
  18027  * Set match criteria for bcmFieldQualifyMimlSrcMac
  18028  *                qualifier in the field entry.
  18029  */
  18030 extern int bcm_field_qualify_MimlSrcMac(
  18031     int unit, 
  18032     bcm_field_entry_t entry, 
  18033     bcm_mac_t data, 
  18034     bcm_mac_t mask);
  18035 
  18036 /* 
  18037  * Set match criteria for bcmFieldQualifyMimlDstMac
  18038  *                qualifier in the field entry.
  18039  */
  18040 extern int bcm_field_qualify_MimlDstMac(
  18041     int unit, 
  18042     bcm_field_entry_t entry, 
  18043     bcm_mac_t data, 
  18044     bcm_mac_t mask);
  18045 
  18046 /* To qualify on a port bitmap generated from SGLP. */
  18047 extern int bcm_field_qualify_SystemPortBitmap(
  18048     int unit, 
  18049     bcm_field_entry_t entry, 
  18050     bcm_pbmp_t data, 
  18051     bcm_pbmp_t mask);
  18052 
  18053 /* 
  18054  * Get match criteria for SystemPortBitmap qualifier from the field
  18055  * entry.
  18056  */
  18057 extern int bcm_field_qualify_SystemPortBitmap_get(
  18058     int unit, 
  18059     bcm_field_entry_t entry, 
  18060     bcm_pbmp_t *data, 
  18061     bcm_pbmp_t *mask);
  18062 
  18063 /* To qualify on a port bitmap generated from Source Virtual Port. */
  18064 extern int bcm_field_qualify_SourceGportBitmap(
  18065     int unit, 
  18066     bcm_field_entry_t entry, 
  18067     bcm_pbmp_t data, 
  18068     bcm_pbmp_t mask);
  18069 
  18070 /* 
  18071  * Get match criteria for SourceGportBitmap qualifier from the field
  18072  * entry.
  18073  */
  18074 extern int bcm_field_qualify_SourceGportBitmap_get(
  18075     int unit, 
  18076     bcm_field_entry_t entry, 
  18077     bcm_pbmp_t *data, 
  18078     bcm_pbmp_t *mask);
  18079 
  18080 /* To qualify on a port bitmap generated from Device ingress port. */
  18081 extern int bcm_field_qualify_DevicePortBitmap(
  18082     int unit, 
  18083     bcm_field_entry_t entry, 
  18084     bcm_pbmp_t data, 
  18085     bcm_pbmp_t mask);
  18086 
  18087 /* 
  18088  * Get match criteria for DevicePortBitmap qualifier from the field
  18089  * entry.
  18090  */
  18091 extern int bcm_field_qualify_DevicePortBitmap_get(
  18092     int unit, 
  18093     bcm_field_entry_t entry, 
  18094     bcm_pbmp_t *data, 
  18095     bcm_pbmp_t *mask);
  18096 
  18097 /* 
  18098  * Get match criteria for bcmFieldQualifyMimlSrcMac
  18099  *                qualifier from the field entry.
  18100  */
  18101 extern int bcm_field_qualify_MimlSrcMac_get(
  18102     int unit, 
  18103     bcm_field_entry_t entry, 
  18104     bcm_mac_t *data, 
  18105     bcm_mac_t *mask);
  18106 
  18107 /* 
  18108  * Get match criteria for bcmFieldQualifyMimlDstMac
  18109  *                qualifier from the field entry.
  18110  */
  18111 extern int bcm_field_qualify_MimlDstMac_get(
  18112     int unit, 
  18113     bcm_field_entry_t entry, 
  18114     bcm_mac_t *data, 
  18115     bcm_mac_t *mask);
  18116 
  18117 /* 
  18118  * Set match criteria for bcmFieldQualifyMimlVlan
  18119  *                  qualifier in the field entry.
  18120  */
  18121 extern int bcm_field_qualify_MimlVlan(
  18122     int unit, 
  18123     bcm_field_entry_t entry, 
  18124     bcm_vlan_t data, 
  18125     bcm_vlan_t mask);
  18126 
  18127 /* 
  18128  * Get match criteria for bcmFieldQualifyMimlVlan
  18129  *                qualifier from the field entry.
  18130  */
  18131 extern int bcm_field_qualify_MimlVlan_get(
  18132     int unit, 
  18133     bcm_field_entry_t entry, 
  18134     bcm_vlan_t *data, 
  18135     bcm_vlan_t *mask);
  18136 
  18137 /* 
  18138  * Set match criteria for bcmFieldQualifyMimlVlanId
  18139  *                  qualifier in the field entry.
  18140  */
  18141 extern int bcm_field_qualify_MimlVlanId(
  18142     int unit, 
  18143     bcm_field_entry_t entry, 
  18144     bcm_vlan_t data, 
  18145     bcm_vlan_t mask);
  18146 
  18147 /* 
  18148  * Get match criteria for bcmFieldQualifyMimlVlanId
  18149  *                  qualifier from the field entry.
  18150  */
  18151 extern int bcm_field_qualify_MimlVlanId_get(
  18152     int unit, 
  18153     bcm_field_entry_t entry, 
  18154     bcm_vlan_t *data, 
  18155     bcm_vlan_t *mask);
  18156 
  18157 /* 
  18158  * Set match criteria for bcmFieldQualifyMimlVlanPri
  18159  *                  qualifier in the field entry.
  18160  */
  18161 extern int bcm_field_qualify_MimlVlanPri(
  18162     int unit, 
  18163     bcm_field_entry_t entry, 
  18164     uint8 data, 
  18165     uint8 mask);
  18166 
  18167 /* 
  18168  * Get match criteria for bcmFieldQualifyMimlVlanPri
  18169  *                  qualifier from the field entry.
  18170  */
  18171 extern int bcm_field_qualify_MimlVlanPri_get(
  18172     int unit, 
  18173     bcm_field_entry_t entry, 
  18174     uint8 *data, 
  18175     uint8 *mask);
  18176 
  18177 /* 
  18178  * Set match criteria for bcmFieldQualifyMimlVlanCfi
  18179  *                  qualifier in the field entry.
  18180  */
  18181 extern int bcm_field_qualify_MimlVlanCfi(
  18182     int unit, 
  18183     bcm_field_entry_t entry, 
  18184     uint8 data, 
  18185     uint8 mask);
  18186 
  18187 /* 
  18188  * Get match criteria for bcmFieldQualifyMimlVlanCfi_get
  18189  *                  qualifier from the field entry.
  18190  */
  18191 extern int bcm_field_qualify_MimlVlanCfi_get(
  18192     int unit, 
  18193     bcm_field_entry_t entry, 
  18194     uint8 *data, 
  18195     uint8 *mask);
  18196 
  18197 /* 
  18198  * Set match criteria for bcmFieldQualifyMimlInnerTag
  18199  *                  qualifier in the field entry.
  18200  */
  18201 extern int bcm_field_qualify_MimlInnerTag(
  18202     int unit, 
  18203     bcm_field_entry_t entry, 
  18204     uint32 data, 
  18205     uint32 mask);
  18206 
  18207 /* 
  18208  * Get match criteria for bcmFieldQualifyMimlInnerTag_get
  18209  *                  qualifier from the field entry.
  18210  */
  18211 extern int bcm_field_qualify_MimlInnerTag_get(
  18212     int unit, 
  18213     bcm_field_entry_t entry, 
  18214     uint32 *data, 
  18215     uint32 *mask);
  18216 
  18217 /* 
  18218  * Set match criteria for bcmFieldQualifyCapwapHdrType
  18219  *                qualifier in the field entry.
  18220  */
  18221 extern int bcm_field_qualify_CapwapHdrType(
  18222     int unit, 
  18223     bcm_field_entry_t entry, 
  18224     uint8 data, 
  18225     uint8 mask);
  18226 
  18227 /* 
  18228  * Get match criteria for bcmFieldQualifyCapwapHdrType
  18229  *                qualifier from the field entry.
  18230  */
  18231 extern int bcm_field_qualify_CapwapHdrType_get(
  18232     int unit, 
  18233     bcm_field_entry_t entry, 
  18234     uint8 *data, 
  18235     uint8 *mask);
  18236 
  18237 /* 
  18238  * Set match criteria for bcmFieldQualifyCapwapHdrRid
  18239  *                qualifier in the field entry.
  18240  */
  18241 extern int bcm_field_qualify_CapwapHdrRid(
  18242     int unit, 
  18243     bcm_field_entry_t entry, 
  18244     uint8 data, 
  18245     uint8 mask);
  18246 
  18247 /* 
  18248  * Get match criteria for bcmFieldQualifyCapwapHdrRid
  18249  *                qualifier from the field entry.
  18250  */
  18251 extern int bcm_field_qualify_CapwapHdrRid_get(
  18252     int unit, 
  18253     bcm_field_entry_t entry, 
  18254     uint8 *data, 
  18255     uint8 *mask);
  18256 
  18257 /* 
  18258  * Set match criteria for bcmFieldQualifyCapwapPayloadSOF
  18259  *                qualifier in the field entry.
  18260  */
  18261 extern int bcm_field_qualify_CapwapPayloadSOF(
  18262     int unit, 
  18263     bcm_field_entry_t entry, 
  18264     uint8 data, 
  18265     uint8 mask);
  18266 
  18267 /* 
  18268  * Get match criteria for bcmFieldQualifyCapwapPayloadSOF
  18269  *                qualifier from the field entry.
  18270  */
  18271 extern int bcm_field_qualify_CapwapPayloadSOF_get(
  18272     int unit, 
  18273     bcm_field_entry_t entry, 
  18274     uint8 *data, 
  18275     uint8 *mask);
  18276 
  18277 /* 
  18278  * Set match criteria for bcmFieldQualifyCapwapPayloadDstMac
  18279  *                qualifier in the field entry.
  18280  */
  18281 extern int bcm_field_qualify_CapwapPayloadDstMac(
  18282     int unit, 
  18283     bcm_field_entry_t entry, 
  18284     bcm_mac_t data, 
  18285     bcm_mac_t mask);
  18286 
  18287 /* 
  18288  * Get match criteria for CapwapPayloadDstMac
  18289  *                qualifier from the field entry.
  18290  */
  18291 extern int bcm_field_qualify_CapwapPayloadDstMac_get(
  18292     int unit, 
  18293     bcm_field_entry_t entry, 
  18294     bcm_mac_t *data, 
  18295     bcm_mac_t *mask);
  18296 
  18297 /* 
  18298  * Set match criteria for bcmFieldQualifyCapwapPayloadSrcMac
  18299  *                qualifier in the field entry.
  18300  */
  18301 extern int bcm_field_qualify_CapwapPayloadSrcMac(
  18302     int unit, 
  18303     bcm_field_entry_t entry, 
  18304     bcm_mac_t data, 
  18305     bcm_mac_t mask);
  18306 
  18307 /* 
  18308  * Get match criteria for bcmFieldQualifyCapwapPayloadSrcMac
  18309  *                qualifier from the field entry.
  18310  */
  18311 extern int bcm_field_qualify_CapwapPayloadSrcMac_get(
  18312     int unit, 
  18313     bcm_field_entry_t entry, 
  18314     bcm_mac_t *data, 
  18315     bcm_mac_t *mask);
  18316 
  18317 /* 
  18318  * Configure match criteria for bcmFieldQualifyCapwapPayloadEtherType
  18319  *             qualifier from the field entry.
  18320  */
  18321 extern int bcm_field_qualify_CapwapPayloadEtherType(
  18322     int unit, 
  18323     bcm_field_entry_t entry, 
  18324     uint16 data, 
  18325     uint16 mask);
  18326 
  18327 /* 
  18328  * Get match criteria for bcmFieldQualifyCapwapPayloadEtherType
  18329  *             qualifier from the field entry.
  18330  */
  18331 extern int bcm_field_qualify_CapwapPayloadEtherType_get(
  18332     int unit, 
  18333     bcm_field_entry_t entry, 
  18334     uint16 *data, 
  18335     uint16 *mask);
  18336 
  18337 /* 
  18338  * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlan
  18339  *                  qualifier in the field entry.
  18340  */
  18341 extern int bcm_field_qualify_CapwapPayloadOuterVlan(
  18342     int unit, 
  18343     bcm_field_entry_t entry, 
  18344     bcm_vlan_t data, 
  18345     bcm_vlan_t mask);
  18346 
  18347 /* 
  18348  * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlan
  18349  *                qualifier from the field entry.
  18350  */
  18351 extern int bcm_field_qualify_CapwapPayloadOuterVlan_get(
  18352     int unit, 
  18353     bcm_field_entry_t entry, 
  18354     bcm_vlan_t *data, 
  18355     bcm_vlan_t *mask);
  18356 
  18357 /* 
  18358  * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanId
  18359  *                  qualifier in the field entry.
  18360  */
  18361 extern int bcm_field_qualify_CapwapPayloadOuterVlanId(
  18362     int unit, 
  18363     bcm_field_entry_t entry, 
  18364     bcm_vlan_t data, 
  18365     bcm_vlan_t mask);
  18366 
  18367 /* 
  18368  * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanId
  18369  *                  qualifier from the field entry.
  18370  */
  18371 extern int bcm_field_qualify_CapwapPayloadOuterVlanId_get(
  18372     int unit, 
  18373     bcm_field_entry_t entry, 
  18374     bcm_vlan_t *data, 
  18375     bcm_vlan_t *mask);
  18376 
  18377 /* 
  18378  * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanPri
  18379  *                  qualifier in the field entry.
  18380  */
  18381 extern int bcm_field_qualify_CapwapPayloadOuterVlanPri(
  18382     int unit, 
  18383     bcm_field_entry_t entry, 
  18384     uint8 data, 
  18385     uint8 mask);
  18386 
  18387 /* 
  18388  * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanPri
  18389  *                  qualifier from the field entry.
  18390  */
  18391 extern int bcm_field_qualify_CapwapPayloadOuterVlanPri_get(
  18392     int unit, 
  18393     bcm_field_entry_t entry, 
  18394     uint8 *data, 
  18395     uint8 *mask);
  18396 
  18397 /* 
  18398  * Set match criteria for bcmFieldQualifyCapwapPayloadOuterVlanCfi
  18399  *                  qualifier in the field entry.
  18400  */
  18401 extern int bcm_field_qualify_CapwapPayloadOuterVlanCfi(
  18402     int unit, 
  18403     bcm_field_entry_t entry, 
  18404     uint8 data, 
  18405     uint8 mask);
  18406 
  18407 /* 
  18408  * Get match criteria for bcmFieldQualifyCapwapPayloadOuterVlanCfi_get
  18409  *                  qualifier from the field entry.
  18410  */
  18411 extern int bcm_field_qualify_CapwapPayloadOuterVlanCfi_get(
  18412     int unit, 
  18413     bcm_field_entry_t entry, 
  18414     uint8 *data, 
  18415     uint8 *mask);
  18416 
  18417 /* 
  18418  * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlan
  18419  *                  qualifier in the field entry.
  18420  */
  18421 extern int bcm_field_qualify_CapwapPayloadInnerVlan(
  18422     int unit, 
  18423     bcm_field_entry_t entry, 
  18424     bcm_vlan_t data, 
  18425     bcm_vlan_t mask);
  18426 
  18427 /* 
  18428  * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlan
  18429  *                qualifier from the field entry.
  18430  */
  18431 extern int bcm_field_qualify_CapwapPayloadInnerVlan_get(
  18432     int unit, 
  18433     bcm_field_entry_t entry, 
  18434     bcm_vlan_t *data, 
  18435     bcm_vlan_t *mask);
  18436 
  18437 /* 
  18438  * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanId
  18439  *                  qualifier in the field entry.
  18440  */
  18441 extern int bcm_field_qualify_CapwapPayloadInnerVlanId(
  18442     int unit, 
  18443     bcm_field_entry_t entry, 
  18444     bcm_vlan_t data, 
  18445     bcm_vlan_t mask);
  18446 
  18447 /* 
  18448  * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanId
  18449  *                  qualifier from the field entry.
  18450  */
  18451 extern int bcm_field_qualify_CapwapPayloadInnerVlanId_get(
  18452     int unit, 
  18453     bcm_field_entry_t entry, 
  18454     bcm_vlan_t *data, 
  18455     bcm_vlan_t *mask);
  18456 
  18457 /* 
  18458  * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanPri
  18459  *                  qualifier in the field entry.
  18460  */
  18461 extern int bcm_field_qualify_CapwapPayloadInnerVlanPri(
  18462     int unit, 
  18463     bcm_field_entry_t entry, 
  18464     uint8 data, 
  18465     uint8 mask);
  18466 
  18467 /* 
  18468  * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanPri
  18469  *                  qualifier from the field entry.
  18470  */
  18471 extern int bcm_field_qualify_CapwapPayloadInnerVlanPri_get(
  18472     int unit, 
  18473     bcm_field_entry_t entry, 
  18474     uint8 *data, 
  18475     uint8 *mask);
  18476 
  18477 /* 
  18478  * Set match criteria for bcmFieldQualifyCapwapPayloadInnerVlanCfi
  18479  *                  qualifier in the field entry.
  18480  */
  18481 extern int bcm_field_qualify_CapwapPayloadInnerVlanCfi(
  18482     int unit, 
  18483     bcm_field_entry_t entry, 
  18484     uint8 data, 
  18485     uint8 mask);
  18486 
  18487 /* 
  18488  * Get match criteria for bcmFieldQualifyCapwapPayloadInnerVlanCfi_get
  18489  *                  qualifier from the field entry.
  18490  */
  18491 extern int bcm_field_qualify_CapwapPayloadInnerVlanCfi_get(
  18492     int unit, 
  18493     bcm_field_entry_t entry, 
  18494     uint8 *data, 
  18495     uint8 *mask);
  18496 
  18497 /* 
  18498  * Set match criteria for bcmFieldQualifyCapwapPayloadVlanFormat
  18499  *                  qualifier in the field entry.
  18500  */
  18501 extern int bcm_field_qualify_CapwapPayloadVlanFormat(
  18502     int unit, 
  18503     bcm_field_entry_t entry, 
  18504     uint8 data, 
  18505     uint8 mask);
  18506 
  18507 /* 
  18508  * Get match criteria for bcmFieldQualifyCapwapPayloadVlanFormat
  18509  *                  qualifier from the field entry.
  18510  */
  18511 extern int bcm_field_qualify_CapwapPayloadVlanFormat_get(
  18512     int unit, 
  18513     bcm_field_entry_t entry, 
  18514     uint8 *data, 
  18515     uint8 *mask);
  18516 
  18517 /* bcm_field_qualify_CapwapPayloadSip */
  18518 extern int bcm_field_qualify_CapwapPayloadSip(
  18519     int unit, 
  18520     bcm_field_entry_t entry, 
  18521     bcm_ip_t data, 
  18522     bcm_ip_t mask);
  18523 
  18524 /* bcm_field_qualify_CapwapPayloadDip */
  18525 extern int bcm_field_qualify_CapwapPayloadDip(
  18526     int unit, 
  18527     bcm_field_entry_t entry, 
  18528     bcm_ip_t data, 
  18529     bcm_ip_t mask);
  18530 
  18531 /* 
  18532  * Get match criteria for bcmFieldQualifyCapwapPayloadSip
  18533  *                qualifier from the field entry.
  18534  */
  18535 extern int bcm_field_qualify_CapwapPayloadSip_get(
  18536     int unit, 
  18537     bcm_field_entry_t entry, 
  18538     bcm_ip_t *data, 
  18539     bcm_ip_t *mask);
  18540 
  18541 /* 
  18542  * Get match criteria for bcmFieldQualifyCapwapPayloadDip
  18543  *                qualifier from the field entry.
  18544  */
  18545 extern int bcm_field_qualify_CapwapPayloadDip_get(
  18546     int unit, 
  18547     bcm_field_entry_t entry, 
  18548     bcm_ip_t *data, 
  18549     bcm_ip_t *mask);
  18550 
  18551 /* bcm_field_qualify_CapwapPayloadSip6 */
  18552 extern int bcm_field_qualify_CapwapPayloadSip6(
  18553     int unit, 
  18554     bcm_field_entry_t entry, 
  18555     bcm_ip6_t data, 
  18556     bcm_ip6_t mask);
  18557 
  18558 /* bcm_field_qualify_CapwapPayloadDip6 */
  18559 extern int bcm_field_qualify_CapwapPayloadDip6(
  18560     int unit, 
  18561     bcm_field_entry_t entry, 
  18562     bcm_ip6_t data, 
  18563     bcm_ip6_t mask);
  18564 
  18565 /* 
  18566  * Get match criteria for bcmFieldQualifyCapwapPayloadSip6
  18567  *                qualifier from the field entry.
  18568  */
  18569 extern int bcm_field_qualify_CapwapPayloadSip6_get(
  18570     int unit, 
  18571     bcm_field_entry_t entry, 
  18572     bcm_ip6_t *data, 
  18573     bcm_ip6_t *mask);
  18574 
  18575 /* 
  18576  * Get match criteria for bcmFieldQualifyCapwapPayloadDip6
  18577  *                qualifier from the field entry.
  18578  */
  18579 extern int bcm_field_qualify_CapwapPayloadDip6_get(
  18580     int unit, 
  18581     bcm_field_entry_t entry, 
  18582     bcm_ip6_t *data, 
  18583     bcm_ip6_t *mask);
  18584 
  18585 /* 
  18586  * Set match criteria for bcmFieldQualifyCapwapPayloadIpProtocol
  18587  *                  qualifier in the field entry.
  18588  */
  18589 extern int bcm_field_qualify_CapwapPayloadIpProtocol(
  18590     int unit, 
  18591     bcm_field_entry_t entry, 
  18592     uint8 data, 
  18593     uint8 mask);
  18594 
  18595 /* 
  18596  * Get match criteria for bcmFieldQualifyCapwapPayloadIpProtocol_get
  18597  *                  qualifier from the field entry.
  18598  */
  18599 extern int bcm_field_qualify_CapwapPayloadIpProtocol_get(
  18600     int unit, 
  18601     bcm_field_entry_t entry, 
  18602     uint8 *data, 
  18603     uint8 *mask);
  18604 
  18605 /* 
  18606  * Set match criteria for bcmFieldQualifyCapwapPayloadTos
  18607  *                  qualifier in the field entry.
  18608  */
  18609 extern int bcm_field_qualify_CapwapPayloadTos(
  18610     int unit, 
  18611     bcm_field_entry_t entry, 
  18612     uint8 data, 
  18613     uint8 mask);
  18614 
  18615 /* 
  18616  * Get match criteria for bcmFieldQualifyCapwapPayloadTos_get
  18617  *                  qualifier from the field entry.
  18618  */
  18619 extern int bcm_field_qualify_CapwapPayloadTos_get(
  18620     int unit, 
  18621     bcm_field_entry_t entry, 
  18622     uint8 *data, 
  18623     uint8 *mask);
  18624 
  18625 /* bcm_field_qualify_CapwapPayloadL4SrcPort */
  18626 extern int bcm_field_qualify_CapwapPayloadL4SrcPort(
  18627     int unit, 
  18628     bcm_field_entry_t entry, 
  18629     bcm_l4_port_t data, 
  18630     bcm_l4_port_t mask);
  18631 
  18632 /* bcm_field_qualify_CapwapPayloadL4DstPort */
  18633 extern int bcm_field_qualify_CapwapPayloadL4DstPort(
  18634     int unit, 
  18635     bcm_field_entry_t entry, 
  18636     bcm_l4_port_t data, 
  18637     bcm_l4_port_t mask);
  18638 
  18639 /* 
  18640  * Get match criteria for bcmFieldQualifyCapwapPayloadL4SrcPort
  18641  *                qualifier from the field entry.
  18642  */
  18643 extern int bcm_field_qualify_CapwapPayloadL4SrcPort_get(
  18644     int unit, 
  18645     bcm_field_entry_t entry, 
  18646     bcm_l4_port_t *data, 
  18647     bcm_l4_port_t *mask);
  18648 
  18649 /* 
  18650  * Get match criteria for bcmFieldQualifyCapwapPayloadL4DstPort
  18651  *                qualifier from the field entry.
  18652  */
  18653 extern int bcm_field_qualify_CapwapPayloadL4DstPort_get(
  18654     int unit, 
  18655     bcm_field_entry_t entry, 
  18656     bcm_l4_port_t *data, 
  18657     bcm_l4_port_t *mask);
  18658 
  18659 /* 
  18660  * Set match criteria for bcmFieldQualifyTafEnable
  18661  *                qualifier in the field entry.
  18662  */
  18663 extern int bcm_field_qualify_TafEnable(
  18664     int unit, 
  18665     bcm_field_entry_t entry, 
  18666     uint8 enable);
  18667 
  18668 /* 
  18669  * Set match criteria for bcmFieldQualifyTafGateId
  18670  *                qualifier in the field entry.
  18671  */
  18672 extern int bcm_field_qualify_TafGateId(
  18673     int unit, 
  18674     bcm_field_entry_t entry, 
  18675     uint32 data, 
  18676     uint32 mask);
  18677 
  18678 /* 
  18679  * Set match criteria for bcmFieldQualifyTafGateState
  18680  *                qualifier in the field entry.
  18681  */
  18682 extern int bcm_field_qualify_TafGateState(
  18683     int unit, 
  18684     bcm_field_entry_t entry, 
  18685     uint8 state);
  18686 
  18687 /* 
  18688  * Set match criteria for bcmFieldQualifyTafCosProfile
  18689  *                qualifier in the field entry.
  18690  */
  18691 extern int bcm_field_qualify_TafCosProfile(
  18692     int unit, 
  18693     bcm_field_entry_t entry, 
  18694     uint32 data, 
  18695     uint32 mask);
  18696 
  18697 /* 
  18698  * Get match criteria for bcmFieldQualifyTafEnable
  18699  *                qualifier from the field entry.
  18700  */
  18701 extern int bcm_field_qualify_TafEnable_get(
  18702     int unit, 
  18703     bcm_field_entry_t entry, 
  18704     uint8 *enable);
  18705 
  18706 /* 
  18707  * Get match criteria for bcmFieldQualifyTafGateId
  18708  *                qualifier from the field entry.
  18709  */
  18710 extern int bcm_field_qualify_TafGateId_get(
  18711     int unit, 
  18712     bcm_field_entry_t entry, 
  18713     uint32 *data, 
  18714     uint32 *mask);
  18715 
  18716 /* 
  18717  * Get match criteria for bcmFieldQualifyTafGateState
  18718  *                qualifier from the field entry.
  18719  */
  18720 extern int bcm_field_qualify_TafGateState_get(
  18721     int unit, 
  18722     bcm_field_entry_t entry, 
  18723     uint8 *state);
  18724 
  18725 /* 
  18726  * Get match criteria for bcmFieldQualifyTafCosProfile
  18727  *                qualifier from the field entry.
  18728  */
  18729 extern int bcm_field_qualify_TafCosProfile_get(
  18730     int unit, 
  18731     bcm_field_entry_t entry, 
  18732     uint32 *data, 
  18733     uint32 *mask);
  18734 
  18735 /* 
  18736  * Set match criteria for bcmFieldQualifyCapwapPayloadL3HdrParseable
  18737  *                  qualifier in the field entry.
  18738  */
  18739 extern int bcm_field_qualify_CapwapPayloadL3HdrParseable(
  18740     int unit, 
  18741     bcm_field_entry_t entry, 
  18742     uint8 data, 
  18743     uint8 mask);
  18744 
  18745 /* 
  18746  * Get match criteria for bcmFieldQualifyCapwapPayloadL3HdrParseable_get
  18747  *                  qualifier from the field entry.
  18748  */
  18749 extern int bcm_field_qualify_CapwapPayloadL3HdrParseable_get(
  18750     int unit, 
  18751     bcm_field_entry_t entry, 
  18752     uint8 *data, 
  18753     uint8 *mask);
  18754 
  18755 /* 
  18756  * Set match criteria for bcmFieldQualifyCapwapPayloadL4HdrParseable
  18757  *                  qualifier in the field entry.
  18758  */
  18759 extern int bcm_field_qualify_CapwapPayloadL4HdrParseable(
  18760     int unit, 
  18761     bcm_field_entry_t entry, 
  18762     uint8 data, 
  18763     uint8 mask);
  18764 
  18765 /* 
  18766  * Get match criteria for bcmFieldQualifyCapwapPayloadL4HdrParseable_get
  18767  *                  qualifier from the field entry.
  18768  */
  18769 extern int bcm_field_qualify_CapwapPayloadL4HdrParseable_get(
  18770     int unit, 
  18771     bcm_field_entry_t entry, 
  18772     uint8 *data, 
  18773     uint8 *mask);
  18774 
  18775 /* 
  18776  * Set match criteria for bcmFieldQualifyL2PayLoad
  18777  *            qualifier in the field entry.
  18778  */
  18779 extern int bcm_field_qualify_L2PayLoad(
  18780     int unit, 
  18781     bcm_field_entry_t entry, 
  18782     uint32 length, 
  18783     const uint8 *data, 
  18784     const uint8 *mask);
  18785 
  18786 /* 
  18787  * Get match criteria for bcmFieldQualifyL2PayLoad
  18788  *            qualifier from the field entry.
  18789  */
  18790 extern int bcm_field_qualify_L2PayLoad_get(
  18791     int unit, 
  18792     bcm_field_entry_t entry, 
  18793     uint32 length, 
  18794     uint8 *data, 
  18795     uint8 *mask);
  18796 
  18797 /* Set match criteria to qualify Rx Down Mep SAT terminated hit status. */
  18798 extern int bcm_field_qualify_DownMepSatTerminated(
  18799     int unit, 
  18800     bcm_field_entry_t entry, 
  18801     uint8 data, 
  18802     uint8 mask);
  18803 
  18804 /* Get match criteria for Rx Down Mep SAT terminated hit status. */
  18805 extern int bcm_field_qualify_DownMepSatTerminated_get(
  18806     int unit, 
  18807     bcm_field_entry_t entry, 
  18808     uint8 *data, 
  18809     uint8 *mask);
  18810 
  18811 /* Set match criteria for VLAN STG STP states. */
  18812 extern int bcm_field_qualify_StpState(
  18813     int unit, 
  18814     bcm_field_entry_t entry, 
  18815     uint8 data);
  18816 
  18817 /* Get match criteria for VLAN STG STP states. */
  18818 extern int bcm_field_qualify_StpState_get(
  18819     int unit, 
  18820     bcm_field_entry_t entry, 
  18821     uint8 *data);
  18822 
  18823 #endif /* BCM_HIDE_DISPATCHABLE */
  18824 
  18825 /* VLAN STG STP States (for bcm_field_qualify_StgState) */
  18826 #define BCM_FIELD_STG_STP_DISABLE   0x1        /* Disabled state */
  18827 #define BCM_FIELD_STG_STP_BLOCK     0x2        /* Blocked state */
  18828 #define BCM_FIELD_STG_STP_LEARN     0x4        /* Learn state */
  18829 #define BCM_FIELD_STG_STP_FORWARD   0x8        /* Forward state */
  18830 
  18831 #ifndef BCM_HIDE_DISPATCHABLE
  18832 
  18833 /* 
  18834  * Set match criteria for bcmFieldQualifyHiGigMirrorOrSwitchPkt
  18835  *             qualifier in the field entry.
  18836  */
  18837 extern int bcm_field_qualify_HiGigMirrorOrSwitchPkt(
  18838     int unit, 
  18839     bcm_field_entry_t entry, 
  18840     uint8 data, 
  18841     uint8 mask);
  18842 
  18843 /* 
  18844  * Get match criteria for bcmFieldQualifyHiGigMirrorOrSwitchPkt
  18845  *             qualifier from the field entry.
  18846  */
  18847 extern int bcm_field_qualify_HiGigMirrorOrSwitchPkt_get(
  18848     int unit, 
  18849     bcm_field_entry_t entry, 
  18850     uint8 *data, 
  18851     uint8 *mask);
  18852 
  18853 /* 
  18854  * Set match criteria for bcmFieldQualifyHiGigMplsPkt
  18855  *             qualifier in the field entry.
  18856  */
  18857 extern int bcm_field_qualify_HiGigMplsPkt(
  18858     int unit, 
  18859     bcm_field_entry_t entry, 
  18860     uint8 data, 
  18861     uint8 mask);
  18862 
  18863 /* 
  18864  * Get match criteria for bcmFieldQualifyHiGigMplsPkt
  18865  *             qualifier from the field entry.
  18866  */
  18867 extern int bcm_field_qualify_HiGigMplsPkt_get(
  18868     int unit, 
  18869     bcm_field_entry_t entry, 
  18870     uint8 *data, 
  18871     uint8 *mask);
  18872 
  18873 /* 
  18874  * Set match criteria for bcmFieldQualifyHiGigLabelType
  18875  *             qualifier in the field entry.
  18876  */
  18877 extern int bcm_field_qualify_HiGigLabelType(
  18878     int unit, 
  18879     bcm_field_entry_t entry, 
  18880     uint8 data, 
  18881     uint8 mask);
  18882 
  18883 /* 
  18884  * Get match criteria for bcmFieldQualifyHiGigLabelType
  18885  *             qualifier from the field entry.
  18886  */
  18887 extern int bcm_field_qualify_HiGigLabelType_get(
  18888     int unit, 
  18889     bcm_field_entry_t entry, 
  18890     uint8 *data, 
  18891     uint8 *mask);
  18892 
  18893 /* 
  18894  * Set match criteria for bcmFieldQualifyHiGigForwardingType
  18895  *             qualifier in the field entry.
  18896  */
  18897 extern int bcm_field_qualify_HiGigForwardingType(
  18898     int unit, 
  18899     bcm_field_entry_t entry, 
  18900     bcm_field_HiGigForwardingType_t type);
  18901 
  18902 /* 
  18903  * Get match criteria for bcmFieldQualifyHiGigForwardingType
  18904  *             qualifier from the field entry.
  18905  */
  18906 extern int bcm_field_qualify_HiGigForwardingType_get(
  18907     int unit, 
  18908     bcm_field_entry_t entry, 
  18909     bcm_field_HiGigForwardingType_t *type);
  18910 
  18911 /* 
  18912  * Set match criteria for bcmFieldQualifyHiGigDoNotFlags
  18913  *             qualifier in the field entry.
  18914  */
  18915 extern int bcm_field_qualify_HiGigDoNotFlags(
  18916     int unit, 
  18917     bcm_field_entry_t entry, 
  18918     uint8 data, 
  18919     uint8 mask);
  18920 
  18921 /* 
  18922  * Get match criteria for bcmFieldQualifyHiGigDoNotFlags
  18923  *             qualifier from the field entry.
  18924  */
  18925 extern int bcm_field_qualify_HiGigDoNotFlags_get(
  18926     int unit, 
  18927     bcm_field_entry_t entry, 
  18928     uint8 *data, 
  18929     uint8 *mask);
  18930 
  18931 /* 
  18932  * Set match criteria for bcmFieldQualifyHiGigPreserveFlags
  18933  *             qualifier in the field entry.
  18934  */
  18935 extern int bcm_field_qualify_HiGigPreserveFlags(
  18936     int unit, 
  18937     bcm_field_entry_t entry, 
  18938     uint8 data, 
  18939     uint8 mask);
  18940 
  18941 /* 
  18942  * Get match criteria for bcmFieldQualifyHiGigPreserveFlags
  18943  *             qualifier from the field entry.
  18944  */
  18945 extern int bcm_field_qualify_HiGigPreserveFlags_get(
  18946     int unit, 
  18947     bcm_field_entry_t entry, 
  18948     uint8 *data, 
  18949     uint8 *mask);
  18950 
  18951 /* 
  18952  * Set match criteria for bcmFieldQualifyHiGigVpPreserveFlags
  18953  *             qualifier in the field entry.
  18954  */
  18955 extern int bcm_field_qualify_HiGigVpPreserveFlags(
  18956     int unit, 
  18957     bcm_field_entry_t entry, 
  18958     uint8 data, 
  18959     uint8 mask);
  18960 
  18961 /* 
  18962  * Get match criteria for bcmFieldQualifyHiGigVpPreserveFlags
  18963  *             qualifier from the field entry.
  18964  */
  18965 extern int bcm_field_qualify_HiGigVpPreserveFlags_get(
  18966     int unit, 
  18967     bcm_field_entry_t entry, 
  18968     uint8 *data, 
  18969     uint8 *mask);
  18970 
  18971 /* 
  18972  * Set match criteria for bcmFieldQualifyHiGigOffloadEngineDeferredFlags
  18973  *             qualifier in the field entry.
  18974  */
  18975 extern int bcm_field_qualify_HiGigOffloadEngineDeferredFlags(
  18976     int unit, 
  18977     bcm_field_entry_t entry, 
  18978     uint8 data, 
  18979     uint8 mask);
  18980 
  18981 /* 
  18982  * Get match criteria for bcmFieldQualifyHiGigOffloadEngineDeferredFlags
  18983  *             qualifier from the field entry.
  18984  */
  18985 extern int bcm_field_qualify_HiGigOffloadEngineDeferredFlags_get(
  18986     int unit, 
  18987     bcm_field_entry_t entry, 
  18988     uint8 *data, 
  18989     uint8 *mask);
  18990 
  18991 /* 
  18992  * Set match criteria for bcmFieldQualifyHiGigOffloadEngineVxltStatus
  18993  *             qualifier in the field entry.
  18994  */
  18995 extern int bcm_field_qualify_HiGigOffloadEngineVxltStatus(
  18996     int unit, 
  18997     bcm_field_entry_t entry, 
  18998     uint8 data, 
  18999     uint8 mask);
  19000 
  19001 /* 
  19002  * Get match criteria for bcmFieldQualifyHiGigOffloadEngineVxltStatus
  19003  *             qualifier from the field entry.
  19004  */
  19005 extern int bcm_field_qualify_HiGigOffloadEngineVxltStatus_get(
  19006     int unit, 
  19007     bcm_field_entry_t entry, 
  19008     uint8 *data, 
  19009     uint8 *mask);
  19010 
  19011 /* 
  19012  * Set match criteria for bcmFieldQualifyHiGigOffloadEngineSrcType
  19013  *             qualifier in the field entry.
  19014  */
  19015 extern int bcm_field_qualify_HiGigOffloadEngineSrcType(
  19016     int unit, 
  19017     bcm_field_entry_t entry, 
  19018     uint8 data, 
  19019     uint8 mask);
  19020 
  19021 /* 
  19022  * Get match criteria for bcmFieldQualifyHiGigOffloadEngineSrcType
  19023  *             qualifier from the field entry.
  19024  */
  19025 extern int bcm_field_qualify_HiGigOffloadEngineSrcType_get(
  19026     int unit, 
  19027     bcm_field_entry_t entry, 
  19028     uint8 *data, 
  19029     uint8 *mask);
  19030 
  19031 /* 
  19032  * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDscp
  19033  *             qualifier in the field entry.
  19034  */
  19035 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDscp(
  19036     int unit, 
  19037     bcm_field_entry_t entry, 
  19038     uint8 data, 
  19039     uint8 mask);
  19040 
  19041 /* 
  19042  * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDscp
  19043  *             qualifier from the field entry.
  19044  */
  19045 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDscp_get(
  19046     int unit, 
  19047     bcm_field_entry_t entry, 
  19048     uint8 *data, 
  19049     uint8 *mask);
  19050 
  19051 /* 
  19052  * Set match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDot1p
  19053  *             qualifier in the field entry.
  19054  */
  19055 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDot1p(
  19056     int unit, 
  19057     bcm_field_entry_t entry, 
  19058     uint8 data, 
  19059     uint8 mask);
  19060 
  19061 /* 
  19062  * Get match criteria for bcmFieldQualifyHiGigOffloadEnginePreserveDot1p
  19063  *             qualifier from the field entry.
  19064  */
  19065 extern int bcm_field_qualify_HiGigOffloadEnginePreserveDot1p_get(
  19066     int unit, 
  19067     bcm_field_entry_t entry, 
  19068     uint8 *data, 
  19069     uint8 *mask);
  19070 
  19071 /* 
  19072  * Set match criteria for bcmFieldQualifyHiGigExtendedHeaderPresent
  19073  *             qualifier in the field entry.
  19074  */
  19075 extern int bcm_field_qualify_HiGigExtendedHeaderPresent(
  19076     int unit, 
  19077     bcm_field_entry_t entry, 
  19078     uint8 data, 
  19079     uint8 mask);
  19080 
  19081 /* 
  19082  * Get match criteria for bcmFieldQualifyHiGigExtendedHeaderPresent
  19083  *             qualifier from the field entry.
  19084  */
  19085 extern int bcm_field_qualify_HiGigExtendedHeaderPresent_get(
  19086     int unit, 
  19087     bcm_field_entry_t entry, 
  19088     uint8 *data, 
  19089     uint8 *mask);
  19090 
  19091 /* 
  19092  * Set match criteria for bcmFieldQualifyHiGigVpLagFailoverPacket
  19093  *             qualifier in the field entry.
  19094  */
  19095 extern int bcm_field_qualify_HiGigVpLagFailoverPacket(
  19096     int unit, 
  19097     bcm_field_entry_t entry, 
  19098     uint8 data, 
  19099     uint8 mask);
  19100 
  19101 /* 
  19102  * Get match criteria for bcmFieldQualifyHiGigVpLagFailoverPacket
  19103  *             qualifier from the field entry.
  19104  */
  19105 extern int bcm_field_qualify_HiGigVpLagFailoverPacket_get(
  19106     int unit, 
  19107     bcm_field_entry_t entry, 
  19108     uint8 *data, 
  19109     uint8 *mask);
  19110 
  19111 #endif /* BCM_HIDE_DISPATCHABLE */
  19112 
  19113 /* Initiaize Field CopyToCpu Config structure. */
  19114 extern void bcm_field_copytocpu_config_t_init(
  19115     bcm_field_CopyToCpu_config_t *CopyToCpu_config);
  19116 
  19117 #ifndef BCM_HIDE_DISPATCHABLE
  19118 
  19119 /* Configure CopyToCpu action for the field entry. */
  19120 extern int bcm_field_action_copytocpu_config_set(
  19121     int unit, 
  19122     bcm_field_entry_t entry, 
  19123     bcm_field_CopyToCpu_config_t CopyToCpu_config);
  19124 
  19125 /* Get CopyToCpu action from the field entry. */
  19126 extern int bcm_field_action_copytocpu_config_get(
  19127     int unit, 
  19128     bcm_field_entry_t entry, 
  19129     bcm_field_CopyToCpu_config_t *CopyToCpu_config);
  19130 
  19131 #endif /* BCM_HIDE_DISPATCHABLE */
  19132 
  19133 /* Initiaize Field Redirect Config structure. */
  19134 extern void bcm_field_redirect_config_t_init(
  19135     bcm_field_redirect_config_t *redirect_config);
  19136 
  19137 #ifndef BCM_HIDE_DISPATCHABLE
  19138 
  19139 /* Configure Redirect action for the field entry. */
  19140 extern int bcm_field_action_redirect_config_set(
  19141     int unit, 
  19142     bcm_field_entry_t entry, 
  19143     bcm_field_redirect_config_t redirect_config);
  19144 
  19145 /* Get Redirect action from the field entry. */
  19146 extern int bcm_field_action_redirect_config_get(
  19147     int unit, 
  19148     bcm_field_entry_t entry, 
  19149     bcm_field_redirect_config_t *redirect_config);
  19150 
  19151 /* 
  19152  * Set match criteria for bcmFieldQualifyTosLower4Bits
  19153  *             qualifier in the field entry.
  19154  */
  19155 extern int bcm_field_qualify_TosLower4Bits(
  19156     int unit, 
  19157     bcm_field_entry_t entry, 
  19158     uint8 data, 
  19159     uint8 mask);
  19160 
  19161 /* 
  19162  * Get match criteria for bcmFieldQualifyTosLower4Bits
  19163  *             qualifier from the field entry.
  19164  */
  19165 extern int bcm_field_qualify_TosLower4Bits_get(
  19166     int unit, 
  19167     bcm_field_entry_t entry, 
  19168     uint8 *data, 
  19169     uint8 *mask);
  19170 
  19171 /* 
  19172  * Set match criteria for bcmFieldQualifyOamEgressClass2Vxlt
  19173  *             qualifier in the field entry.
  19174  */
  19175 extern int bcm_field_qualify_OamEgressClass2Vxlt(
  19176     int unit, 
  19177     bcm_field_entry_t entry, 
  19178     uint32 data, 
  19179     uint32 mask);
  19180 
  19181 /* 
  19182  * Get match criteria for bcmFieldQualifyOamEgressClass2Vxlt
  19183  *             qualifier from the field entry.
  19184  */
  19185 extern int bcm_field_qualify_OamEgressClass2Vxlt_get(
  19186     int unit, 
  19187     bcm_field_entry_t entry, 
  19188     uint32 *data, 
  19189     uint32 *mask);
  19190 
  19191 /* 
  19192  * Set match criteria for bcmFieldQualifyOamEgressVxltFirstHit
  19193  *             qualifier in the field entry.
  19194  */
  19195 extern int bcm_field_qualify_OamEgressVxltFirstHit(
  19196     int unit, 
  19197     bcm_field_entry_t entry, 
  19198     uint8 data, 
  19199     uint8 mask);
  19200 
  19201 /* 
  19202  * Get match criteria for bcmFieldQualifyOamEgressVxltFirstHit
  19203  *             qualifier from the field entry.
  19204  */
  19205 extern int bcm_field_qualify_OamEgressVxltFirstHit_get(
  19206     int unit, 
  19207     bcm_field_entry_t entry, 
  19208     uint8 *data, 
  19209     uint8 *mask);
  19210 
  19211 /* 
  19212  * Set match criteria for bcmFieldQualifyOamEgressVxltSecondHit
  19213  *             qualifier in the field entry.
  19214  */
  19215 extern int bcm_field_qualify_OamEgressVxltSecondHit(
  19216     int unit, 
  19217     bcm_field_entry_t entry, 
  19218     uint8 data, 
  19219     uint8 mask);
  19220 
  19221 /* 
  19222  * Get match criteria for bcmFieldQualifyOamEgressVxltSecondHit
  19223  *             qualifier from the field entry.
  19224  */
  19225 extern int bcm_field_qualify_OamEgressVxltSecondHit_get(
  19226     int unit, 
  19227     bcm_field_entry_t entry, 
  19228     uint8 *data, 
  19229     uint8 *mask);
  19230 
  19231 /* 
  19232  * Set match criteria for bcmFieldQualifyOamDownMEPLoopbackPacket
  19233  *             qualifier in the field entry.
  19234  */
  19235 extern int bcm_field_qualify_OamDownMEPLoopbackPacket(
  19236     int unit, 
  19237     bcm_field_entry_t entry, 
  19238     uint8 data, 
  19239     uint8 mask);
  19240 
  19241 /* 
  19242  * Get match criteria for bcmFieldQualifyOamDownMEPLoopbackPacket
  19243  *             qualifier from the field entry.
  19244  */
  19245 extern int bcm_field_qualify_OamDownMEPLoopbackPacket_get(
  19246     int unit, 
  19247     bcm_field_entry_t entry, 
  19248     uint8 *data, 
  19249     uint8 *mask);
  19250 
  19251 /* 
  19252  * Set match criteria for bcmFieldQualifyOamEgressPortUnicastDstMacHit
  19253  *             qualifier in the field entry.
  19254  */
  19255 extern int bcm_field_qualify_OamEgressPortUnicastDstMacHit(
  19256     int unit, 
  19257     bcm_field_entry_t entry, 
  19258     uint8 data, 
  19259     uint8 mask);
  19260 
  19261 /* 
  19262  * Get match criteria for bcmFieldQualifyOamEgressPortUnicastDstMacHit
  19263  *             qualifier from the field entry.
  19264  */
  19265 extern int bcm_field_qualify_OamEgressPortUnicastDstMacHit_get(
  19266     int unit, 
  19267     bcm_field_entry_t entry, 
  19268     uint8 *data, 
  19269     uint8 *mask);
  19270 
  19271 /* 
  19272  * Set match criteria for bcmFieldQualifyIngressDropEthernetOamControl
  19273  *             qualifier in the field entry.
  19274  */
  19275 extern int bcm_field_qualify_IngressDropEthernetOamControl(
  19276     int unit, 
  19277     bcm_field_entry_t entry, 
  19278     bcm_field_oam_drop_mep_type_t mep_type);
  19279 
  19280 /* 
  19281  * Get match criteria for bcmFieldQualifyIngressDropEthernetOamControl
  19282  *             qualifier from the field entry.
  19283  */
  19284 extern int bcm_field_qualify_IngressDropEthernetOamControl_get(
  19285     int unit, 
  19286     bcm_field_entry_t entry, 
  19287     bcm_field_oam_drop_mep_type_t *mep_type);
  19288 
  19289 /* 
  19290  * Set match criteria for bcmFieldQualifyIngressDropEthernetOamData
  19291  *             qualifier in the field entry.
  19292  */
  19293 extern int bcm_field_qualify_IngressDropEthernetOamData(
  19294     int unit, 
  19295     bcm_field_entry_t entry, 
  19296     bcm_field_oam_drop_mep_type_t mep_type);
  19297 
  19298 /* 
  19299  * Get match criteria for bcmFieldQualifyIngressDropEthernetOamData
  19300  *             qualifier from the field entry.
  19301  */
  19302 extern int bcm_field_qualify_IngressDropEthernetOamData_get(
  19303     int unit, 
  19304     bcm_field_entry_t entry, 
  19305     bcm_field_oam_drop_mep_type_t *mep_type);
  19306 
  19307 /* 
  19308  * Set match criteria for bcmFieldQualifyIngressDropMplsOamControl
  19309  *             qualifier in the field entry.
  19310  */
  19311 extern int bcm_field_qualify_IngressDropMplsOamControl(
  19312     int unit, 
  19313     bcm_field_entry_t entry, 
  19314     bcm_field_oam_drop_mep_type_t mep_type);
  19315 
  19316 /* 
  19317  * Get match criteria for bcmFieldQualifyIngressDropMplsOamControl
  19318  *             qualifier from the field entry.
  19319  */
  19320 extern int bcm_field_qualify_IngressDropMplsOamControl_get(
  19321     int unit, 
  19322     bcm_field_entry_t entry, 
  19323     bcm_field_oam_drop_mep_type_t *mep_type);
  19324 
  19325 /* 
  19326  * Set match criteria for bcmFieldQualifyIngressDropMplsOamData
  19327  *             qualifier in the field entry.
  19328  */
  19329 extern int bcm_field_qualify_IngressDropMplsOamData(
  19330     int unit, 
  19331     bcm_field_entry_t entry, 
  19332     bcm_field_oam_drop_mep_type_t mep_type);
  19333 
  19334 /* 
  19335  * Get match criteria for bcmFieldQualifyIngressDropMplsOamData
  19336  *             qualifier from the field entry.
  19337  */
  19338 extern int bcm_field_qualify_IngressDropMplsOamData_get(
  19339     int unit, 
  19340     bcm_field_entry_t entry, 
  19341     bcm_field_oam_drop_mep_type_t *mep_type);
  19342 
  19343 /* 
  19344  * Set match criteria for EgressClassVxlan
  19345  *                qualifier.
  19346  */
  19347 extern int bcm_field_qualify_EgressClassVxlan(
  19348     int unit, 
  19349     bcm_field_entry_t entry, 
  19350     uint16 data, 
  19351     uint16 mask);
  19352 
  19353 /* 
  19354  * Get match criteria for EgressClassVxlan
  19355  *                qualifier.
  19356  */
  19357 extern int bcm_field_qualify_EgressClassVxlan_get(
  19358     int unit, 
  19359     bcm_field_entry_t entry, 
  19360     uint16 *data, 
  19361     uint16 *mask);
  19362 
  19363 /* 
  19364  * Set match criteria for bcmFieldQualifyOamEgressEtherType
  19365  *             qualifier in the field entry.
  19366  */
  19367 extern int bcm_field_qualify_OamEgressEtherType(
  19368     int unit, 
  19369     bcm_field_entry_t entry, 
  19370     uint16 data);
  19371 
  19372 /* 
  19373  * Get match criteria for bcmFieldQualifyOamEgressEtherType
  19374  *             qualifier from the field entry.
  19375  */
  19376 extern int bcm_field_qualify_OamEgressEtherType_get(
  19377     int unit, 
  19378     bcm_field_entry_t entry, 
  19379     uint16 *data);
  19380 
  19381 /* 
  19382  * Set match criteria for bcmFieldQualifyOamEgressMulticastMacHit
  19383  *             qualifier in the field entry.
  19384  */
  19385 extern int bcm_field_qualify_OamEgressMulticastMacHit(
  19386     int unit, 
  19387     bcm_field_entry_t entry, 
  19388     uint8 data);
  19389 
  19390 /* 
  19391  * Get match criteria for bcmFieldQualifyOamEgressMulticastMacHit
  19392  *             qualifier from the field entry.
  19393  */
  19394 extern int bcm_field_qualify_OamEgressMulticastMacHit_get(
  19395     int unit, 
  19396     bcm_field_entry_t entry, 
  19397     uint8 *data);
  19398 
  19399 /* 
  19400  * Set match criteria for bcmFieldQualifyTrunkMemberSourceModuleId
  19401  *                qualifier in the field entry.
  19402  */
  19403 extern int bcm_field_qualify_TrunkMemberSourceModuleId(
  19404     int unit, 
  19405     bcm_field_entry_t entry, 
  19406     int data, 
  19407     int mask);
  19408 
  19409 /* 
  19410  * Get match criteria for bcmFieldQualifyTrunkMemberSourceModuleId
  19411  *                qualifier from the field entry.
  19412  */
  19413 extern int bcm_field_qualify_TrunkMemberSourceModuleId_get(
  19414     int unit, 
  19415     bcm_field_entry_t entry, 
  19416     int *data, 
  19417     int *mask);
  19418 
  19419 /* 
  19420  * Set match criteria for bcmFieldQualifyOamEgressClassSrcMac
  19421  *             qualifier in the field entry.
  19422  */
  19423 extern int bcm_field_qualify_OamEgressClassSrcMac(
  19424     int unit, 
  19425     bcm_field_entry_t entry, 
  19426     uint32 data, 
  19427     uint32 mask);
  19428 
  19429 /* 
  19430  * Get match criteria for bcmFieldQualifyOamEgressClassSrcMac
  19431  *             qualifier from the field entry.
  19432  */
  19433 extern int bcm_field_qualify_OamEgressClassSrcMac_get(
  19434     int unit, 
  19435     bcm_field_entry_t entry, 
  19436     uint32 *data, 
  19437     uint32 *mask);
  19438 
  19439 /* 
  19440  * Set match criteria for bcmFieldQualifyMyStation2Hit
  19441  *             qualifier in the field entry.
  19442  */
  19443 extern int bcm_field_qualify_MyStation2Hit(
  19444     int unit, 
  19445     bcm_field_entry_t entry, 
  19446     uint8 data, 
  19447     uint8 mask);
  19448 
  19449 /* 
  19450  * Get match criteria for bcmFieldQualifyMyStation2Hit
  19451  *                qualifier from the field entry.
  19452  */
  19453 extern int bcm_field_qualify_MyStation2Hit_get(
  19454     int unit, 
  19455     bcm_field_entry_t entry, 
  19456     uint8 *data, 
  19457     uint8 *mask);
  19458 
  19459 /* 
  19460  * Set match criteria for bcmFieldQualifyPreemptablePacket qualifier in
  19461  * the field entry.
  19462  */
  19463 extern int bcm_field_qualify_PreemptablePacket(
  19464     int unit, 
  19465     bcm_field_entry_t entry, 
  19466     uint8 data, 
  19467     uint8 mask);
  19468 
  19469 /* 
  19470  * Get match criteria for bcmFieldQualifyPreemptablePacket qualifier in
  19471  * the field entry.
  19472  */
  19473 extern int bcm_field_qualify_PreemptablePacket_get(
  19474     int unit, 
  19475     bcm_field_entry_t entry, 
  19476     uint8 *data, 
  19477     uint8 *mask);
  19478 
  19479 /* 
  19480  * Set match criteria for bcmFieldQualifyVxlanClassValid
  19481  *             qualifier in the field entry.
  19482  */
  19483 extern int bcm_field_qualify_VxlanClassValid(
  19484     int unit, 
  19485     bcm_field_entry_t entry, 
  19486     uint8 data, 
  19487     uint8 mask);
  19488 
  19489 /* 
  19490  * Get match criteria for bcmFieldQualifyVxlanClassValid
  19491  *             qualifier from the field entry.
  19492  */
  19493 extern int bcm_field_qualify_VxlanClassValid_get(
  19494     int unit, 
  19495     bcm_field_entry_t entry, 
  19496     uint8 *data, 
  19497     uint8 *mask);
  19498 
  19499 /* 
  19500  * Set match criteria for bcmFieldQualifyVxlanPacket
  19501  *             qualifier in the field entry.
  19502  */
  19503 extern int bcm_field_qualify_VxlanPacket(
  19504     int unit, 
  19505     bcm_field_entry_t entry, 
  19506     uint8 data, 
  19507     uint8 mask);
  19508 
  19509 /* 
  19510  * Get match criteria for bcmFieldQualifyVxlanPacket
  19511  *             qualifier from the field entry.
  19512  */
  19513 extern int bcm_field_qualify_VxlanPacket_get(
  19514     int unit, 
  19515     bcm_field_entry_t entry, 
  19516     uint8 *data, 
  19517     uint8 *mask);
  19518 
  19519 /* 
  19520  * Set match criteria for bcmFieldQualifyVxlanVnidVlanTranslateHit
  19521  *             qualifier in the field entry.
  19522  */
  19523 extern int bcm_field_qualify_VxlanVnidVlanTranslateHit(
  19524     int unit, 
  19525     bcm_field_entry_t entry, 
  19526     uint8 data, 
  19527     uint8 mask);
  19528 
  19529 /* 
  19530  * Get match criteria for bcmFieldQualifyVxlanVnidVlanTranslateHit
  19531  *             qualifier from the field entry.
  19532  */
  19533 extern int bcm_field_qualify_VxlanVnidVlanTranslateHit_get(
  19534     int unit, 
  19535     bcm_field_entry_t entry, 
  19536     uint8 *data, 
  19537     uint8 *mask);
  19538 
  19539 /* 
  19540  * Set match criteria for bcmFieldQualifyVxlanPayloadVlanFormat
  19541  *             qualifier in the field entry.
  19542  */
  19543 extern int bcm_field_qualify_VxlanPayloadVlanFormat(
  19544     int unit, 
  19545     bcm_field_entry_t entry, 
  19546     uint8 data, 
  19547     uint8 mask);
  19548 
  19549 /* 
  19550  * Get match criteria for bcmFieldQualifyVxlanPayloadVlanFormat
  19551  *             qualifier from the field entry.
  19552  */
  19553 extern int bcm_field_qualify_VxlanPayloadVlanFormat_get(
  19554     int unit, 
  19555     bcm_field_entry_t entry, 
  19556     uint8 *data, 
  19557     uint8 *mask);
  19558 
  19559 /* 
  19560  * Set match criteria for bcmFieldQualifyTunnelPayloadDstMac
  19561  *                qualifier in the field entry.
  19562  */
  19563 extern int bcm_field_qualify_TunnelPayloadDstMac(
  19564     int unit, 
  19565     bcm_field_entry_t entry, 
  19566     bcm_mac_t data, 
  19567     bcm_mac_t mask);
  19568 
  19569 /* 
  19570  * Get match criteria for bcmFieldQualifyTunnelPayloadDstMac
  19571  *                qualifier from the field entry.
  19572  */
  19573 extern int bcm_field_qualify_TunnelPayloadDstMac_get(
  19574     int unit, 
  19575     bcm_field_entry_t entry, 
  19576     bcm_mac_t *data, 
  19577     bcm_mac_t *mask);
  19578 
  19579 /* 
  19580  * Set match criteria for bcmFieldQualifyTunnelPayloadSrcMac
  19581  *                qualifier in the field entry.
  19582  */
  19583 extern int bcm_field_qualify_TunnelPayloadSrcMac(
  19584     int unit, 
  19585     bcm_field_entry_t entry, 
  19586     bcm_mac_t data, 
  19587     bcm_mac_t mask);
  19588 
  19589 /* 
  19590  * Get match criteria for bcmFieldQualifyTunnelPayloadSrcMac
  19591  *                qualifier from the field entry.
  19592  */
  19593 extern int bcm_field_qualify_TunnelPayloadSrcMac_get(
  19594     int unit, 
  19595     bcm_field_entry_t entry, 
  19596     bcm_mac_t *data, 
  19597     bcm_mac_t *mask);
  19598 
  19599 /* 
  19600  * Set match criteria for EgressClassTunnel
  19601  *                qualifier.
  19602  */
  19603 extern int bcm_field_qualify_EgressClassTunnel(
  19604     int unit, 
  19605     bcm_field_entry_t entry, 
  19606     uint16 data, 
  19607     uint16 mask);
  19608 
  19609 /* 
  19610  * Get match criteria for EgressClassTunnel
  19611  *                qualifier.
  19612  */
  19613 extern int bcm_field_qualify_EgressClassTunnel_get(
  19614     int unit, 
  19615     bcm_field_entry_t entry, 
  19616     uint16 *data, 
  19617     uint16 *mask);
  19618 
  19619 /* 
  19620  * Set match criteria for EgressClassL3InterfaceTunnel
  19621  *                qualifier.
  19622  */
  19623 extern int bcm_field_qualify_EgressClassL3InterfaceTunnel(
  19624     int unit, 
  19625     bcm_field_entry_t entry, 
  19626     uint16 data, 
  19627     uint16 mask);
  19628 
  19629 /* 
  19630  * Get match criteria for EgressClassL3InterfaceTunnel
  19631  *                qualifier.
  19632  */
  19633 extern int bcm_field_qualify_EgressClassL3InterfaceTunnel_get(
  19634     int unit, 
  19635     bcm_field_entry_t entry, 
  19636     uint16 *data, 
  19637     uint16 *mask);
  19638 
  19639 /* Add VLAN actions to a field entry. */
  19640 extern int bcm_field_action_vlan_actions_add(
  19641     int unit, 
  19642     bcm_field_entry_t entry, 
  19643     bcm_field_action_t action, 
  19644     bcm_vlan_action_set_t *vlan_action_set);
  19645 
  19646 /* Retrieve VLAN actions configured to a field entry. */
  19647 extern int bcm_field_action_vlan_actions_get(
  19648     int unit, 
  19649     bcm_field_entry_t entry, 
  19650     bcm_field_action_t action, 
  19651     bcm_vlan_action_set_t *vlan_action_set);
  19652 
  19653 /* 
  19654  * Set match criteria for bcmFieldQualifyTunnelPayloadEtherType
  19655  *             qualifier in the field entry.
  19656  */
  19657 extern int bcm_field_qualify_TunnelPayloadEtherType(
  19658     int unit, 
  19659     bcm_field_entry_t entry, 
  19660     uint16 data, 
  19661     uint16 mask);
  19662 
  19663 /* 
  19664  * Get match criteria for bcmFieldQualifyTunnelPayloadEtherType
  19665  *             qualifier from the field entry.
  19666  */
  19667 extern int bcm_field_qualify_TunnelPayloadEtherType_get(
  19668     int unit, 
  19669     bcm_field_entry_t entry, 
  19670     uint16 *data, 
  19671     uint16 *mask);
  19672 
  19673 /* 
  19674  * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlan
  19675  *                  qualifier in the field entry.
  19676  */
  19677 extern int bcm_field_qualify_TunnelPayloadOuterVlan(
  19678     int unit, 
  19679     bcm_field_entry_t entry, 
  19680     bcm_vlan_t data, 
  19681     bcm_vlan_t mask);
  19682 
  19683 /* 
  19684  * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlan
  19685  *                qualifier from the field entry.
  19686  */
  19687 extern int bcm_field_qualify_TunnelPayloadOuterVlan_get(
  19688     int unit, 
  19689     bcm_field_entry_t entry, 
  19690     bcm_vlan_t *data, 
  19691     bcm_vlan_t *mask);
  19692 
  19693 /* 
  19694  * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanId
  19695  *                  qualifier in the field entry.
  19696  */
  19697 extern int bcm_field_qualify_TunnelPayloadOuterVlanId(
  19698     int unit, 
  19699     bcm_field_entry_t entry, 
  19700     bcm_vlan_t data, 
  19701     bcm_vlan_t mask);
  19702 
  19703 /* 
  19704  * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanId
  19705  *                  qualifier from the field entry.
  19706  */
  19707 extern int bcm_field_qualify_TunnelPayloadOuterVlanId_get(
  19708     int unit, 
  19709     bcm_field_entry_t entry, 
  19710     bcm_vlan_t *data, 
  19711     bcm_vlan_t *mask);
  19712 
  19713 /* 
  19714  * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanPri
  19715  *                  qualifier in the field entry.
  19716  */
  19717 extern int bcm_field_qualify_TunnelPayloadOuterVlanPri(
  19718     int unit, 
  19719     bcm_field_entry_t entry, 
  19720     uint8 data, 
  19721     uint8 mask);
  19722 
  19723 /* 
  19724  * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanPri
  19725  *                  qualifier from the field entry.
  19726  */
  19727 extern int bcm_field_qualify_TunnelPayloadOuterVlanPri_get(
  19728     int unit, 
  19729     bcm_field_entry_t entry, 
  19730     uint8 *data, 
  19731     uint8 *mask);
  19732 
  19733 /* 
  19734  * Set match criteria for bcmFieldQualifyTunnelPayloadOuterVlanCfi
  19735  *                  qualifier in the field entry.
  19736  */
  19737 extern int bcm_field_qualify_TunnelPayloadOuterVlanCfi(
  19738     int unit, 
  19739     bcm_field_entry_t entry, 
  19740     uint8 data, 
  19741     uint8 mask);
  19742 
  19743 /* 
  19744  * Get match criteria for bcmFieldQualifyTunnelPayloadOuterVlanCfi
  19745  *                  qualifier from the field entry.
  19746  */
  19747 extern int bcm_field_qualify_TunnelPayloadOuterVlanCfi_get(
  19748     int unit, 
  19749     bcm_field_entry_t entry, 
  19750     uint8 *data, 
  19751     uint8 *mask);
  19752 
  19753 /* 
  19754  * Set match criteria for bcmFieldQualifyTunnelPayloadSip
  19755  *                  qualifier in the field entry.
  19756  */
  19757 extern int bcm_field_qualify_TunnelPayloadSip(
  19758     int unit, 
  19759     bcm_field_entry_t entry, 
  19760     bcm_ip_t data, 
  19761     bcm_ip_t mask);
  19762 
  19763 /* 
  19764  * Set match criteria for bcmFieldQualifyTunnelPayloadDip
  19765  *                  qualifier in the field entry.
  19766  */
  19767 extern int bcm_field_qualify_TunnelPayloadDip(
  19768     int unit, 
  19769     bcm_field_entry_t entry, 
  19770     bcm_ip_t data, 
  19771     bcm_ip_t mask);
  19772 
  19773 /* 
  19774  * Get match criteria for bcmFieldQualifyTunnelPayloadSip
  19775  *                qualifier from the field entry.
  19776  */
  19777 extern int bcm_field_qualify_TunnelPayloadSip_get(
  19778     int unit, 
  19779     bcm_field_entry_t entry, 
  19780     bcm_ip_t *data, 
  19781     bcm_ip_t *mask);
  19782 
  19783 /* 
  19784  * Get match criteria for bcmFieldQualifyTunnelPayloadDip
  19785  *                qualifier from the field entry.
  19786  */
  19787 extern int bcm_field_qualify_TunnelPayloadDip_get(
  19788     int unit, 
  19789     bcm_field_entry_t entry, 
  19790     bcm_ip_t *data, 
  19791     bcm_ip_t *mask);
  19792 
  19793 /* 
  19794  * Set match criteria for bcmFieldQualifyTunnelPayloadSip6
  19795  *                  qualifier in the field entry.
  19796  */
  19797 extern int bcm_field_qualify_TunnelPayloadSip6(
  19798     int unit, 
  19799     bcm_field_entry_t entry, 
  19800     bcm_ip6_t data, 
  19801     bcm_ip6_t mask);
  19802 
  19803 /* 
  19804  * Set match criteria for bcmFieldQualifyTunnelPayloadDip6
  19805  *                  qualifier in the field entry.
  19806  */
  19807 extern int bcm_field_qualify_TunnelPayloadDip6(
  19808     int unit, 
  19809     bcm_field_entry_t entry, 
  19810     bcm_ip6_t data, 
  19811     bcm_ip6_t mask);
  19812 
  19813 /* 
  19814  * Get match criteria for bcmFieldQualifyTunnelPayloadSip6
  19815  *                qualifier from the field entry.
  19816  */
  19817 extern int bcm_field_qualify_TunnelPayloadSip6_get(
  19818     int unit, 
  19819     bcm_field_entry_t entry, 
  19820     bcm_ip6_t *data, 
  19821     bcm_ip6_t *mask);
  19822 
  19823 /* 
  19824  * Get match criteria for bcmFieldQualifyTunnelPayloadDip6
  19825  *                qualifier from the field entry.
  19826  */
  19827 extern int bcm_field_qualify_TunnelPayloadDip6_get(
  19828     int unit, 
  19829     bcm_field_entry_t entry, 
  19830     bcm_ip6_t *data, 
  19831     bcm_ip6_t *mask);
  19832 
  19833 /* 
  19834  * Set match criteria for bcmFieldQualifyTunnelPayloadIpProtocol
  19835  *                  qualifier in the field entry.
  19836  */
  19837 extern int bcm_field_qualify_TunnelPayloadIpProtocol(
  19838     int unit, 
  19839     bcm_field_entry_t entry, 
  19840     uint8 data, 
  19841     uint8 mask);
  19842 
  19843 /* 
  19844  * Get match criteria for bcmFieldQualifyTunnelPayloadIpProtocol
  19845  *                  qualifier from the field entry.
  19846  */
  19847 extern int bcm_field_qualify_TunnelPayloadIpProtocol_get(
  19848     int unit, 
  19849     bcm_field_entry_t entry, 
  19850     uint8 *data, 
  19851     uint8 *mask);
  19852 
  19853 /* 
  19854  * Get match criteria for bcmFieldQualifyTunnelPayloadL4SrcPort
  19855  *                qualifier in the field entry.
  19856  */
  19857 extern int bcm_field_qualify_TunnelPayloadL4SrcPort(
  19858     int unit, 
  19859     bcm_field_entry_t entry, 
  19860     bcm_l4_port_t data, 
  19861     bcm_l4_port_t mask);
  19862 
  19863 /* 
  19864  * Get match criteria for bcmFieldQualifyTunnelPayloadL4DstPort
  19865  *                qualifier in the field entry.
  19866  */
  19867 extern int bcm_field_qualify_TunnelPayloadL4DstPort(
  19868     int unit, 
  19869     bcm_field_entry_t entry, 
  19870     bcm_l4_port_t data, 
  19871     bcm_l4_port_t mask);
  19872 
  19873 /* 
  19874  * Get match criteria for bcmFieldQualifyTunnelPayloadL4SrcPort
  19875  *                qualifier from the field entry.
  19876  */
  19877 extern int bcm_field_qualify_TunnelPayloadL4SrcPort_get(
  19878     int unit, 
  19879     bcm_field_entry_t entry, 
  19880     bcm_l4_port_t *data, 
  19881     bcm_l4_port_t *mask);
  19882 
  19883 /* 
  19884  * Get match criteria for bcmFieldQualifyTunnelPayloadL4DstPort
  19885  *                qualifier from the field entry.
  19886  */
  19887 extern int bcm_field_qualify_TunnelPayloadL4DstPort_get(
  19888     int unit, 
  19889     bcm_field_entry_t entry, 
  19890     bcm_l4_port_t *data, 
  19891     bcm_l4_port_t *mask);
  19892 
  19893 /* Assign a class_id for given Source MAC Address of SAT packet */
  19894 extern int bcm_field_sat_macsa_add(
  19895     int unit, 
  19896     bcm_mac_t mac, 
  19897     uint32 class_id);
  19898 
  19899 /* Get the class_id for given Source MAC Address of SAT packet */
  19900 extern int bcm_field_sat_macsa_get(
  19901     int unit, 
  19902     bcm_mac_t mac, 
  19903     uint32 *class_id);
  19904 
  19905 /* 
  19906  * Delete the class_id associated with given Source MAC Address
  19907  *              of SAT packet
  19908  */
  19909 extern int bcm_field_sat_macsa_delete(
  19910     int unit, 
  19911     bcm_mac_t mac);
  19912 
  19913 /* 
  19914  * Delete all Source MAC Address entries and their Class IDs
  19915  *             of SAT packet
  19916  */
  19917 extern int bcm_field_sat_macsa_delete_all(
  19918     int unit);
  19919 
  19920 /* Map a presel id to a name. */
  19921 extern int bcm_field_presel_config_set(
  19922     int unit, 
  19923     bcm_field_presel_t presel_id, 
  19924     bcm_field_presel_config_t *presel_config);
  19925 
  19926 /* Get name from presel id. */
  19927 extern int bcm_field_presel_config_get(
  19928     int unit, 
  19929     bcm_field_presel_t presel_id, 
  19930     bcm_field_presel_config_t *presel_config);
  19931 
  19932 /* 
  19933  * Set match criteria for bcmFieldQualifyRoceBthOpcode qualifier in the
  19934  * field entry
  19935  */
  19936 extern int bcm_field_qualify_RoceBthOpcode(
  19937     int unit, 
  19938     bcm_field_entry_t entry, 
  19939     uint8 data, 
  19940     uint8 mask);
  19941 
  19942 /* 
  19943  * Get match criteria for bcmFieldQualifyRoceBthOpcode qualifier in the
  19944  * field entry
  19945  */
  19946 extern int bcm_field_qualify_RoceBthOpcode_get(
  19947     int unit, 
  19948     bcm_field_entry_t entry, 
  19949     uint8 *data, 
  19950     uint8 *mask);
  19951 
  19952 /* 
  19953  * Set match criteria for bcmFieldQualifyRoceBthPartitionKey qualifier in
  19954  * the field entry
  19955  */
  19956 extern int bcm_field_qualify_RoceBthPartitionKey(
  19957     int unit, 
  19958     bcm_field_entry_t entry, 
  19959     uint16 data, 
  19960     uint16 mask);
  19961 
  19962 /* 
  19963  * Get match criteria for bcmFieldQualifyRoceBthPartitionKey qualifier in
  19964  * the field entry
  19965  */
  19966 extern int bcm_field_qualify_RoceBthPartitionKey_get(
  19967     int unit, 
  19968     bcm_field_entry_t entry, 
  19969     uint16 *data, 
  19970     uint16 *mask);
  19971 
  19972 /* 
  19973  * Set match criteria for bcmFieldQualifyRoceBthDstQueuePair qualifier in
  19974  * the field entry
  19975  */
  19976 extern int bcm_field_qualify_RoceBthDstQueuePair(
  19977     int unit, 
  19978     bcm_field_entry_t entry, 
  19979     uint32 data, 
  19980     uint32 mask);
  19981 
  19982 /* 
  19983  * Get match criteria for bcmFieldQualifyRoceBthDstQueuePair qualifier in
  19984  * the field entry
  19985  */
  19986 extern int bcm_field_qualify_RoceBthDstQueuePair_get(
  19987     int unit, 
  19988     bcm_field_entry_t entry, 
  19989     uint32 *data, 
  19990     uint32 *mask);
  19991 
  19992 /* 
  19993  * Set match criteria for bcmFieldQualifyRoceBthFlags qualifier in the
  19994  * field entry
  19995  */
  19996 extern int bcm_field_qualify_RoceBthFlags(
  19997     int unit, 
  19998     bcm_field_entry_t entry, 
  19999     uint8 data, 
  20000     uint8 mask);
  20001 
  20002 /* 
  20003  * Get match criteria for bcmFieldQualifyRoceBthFlags qualifier in the
  20004  * field entry
  20005  */
  20006 extern int bcm_field_qualify_RoceBthFlags_get(
  20007     int unit, 
  20008     bcm_field_entry_t entry, 
  20009     uint8 *data, 
  20010     uint8 *mask);
  20011 
  20012 /* 
  20013  * Set match criteria for bcmFieldQualifyRoceVer1Pkt qualifier in the
  20014  * field entry
  20015  */
  20016 extern int bcm_field_qualify_RoceVer1Pkt(
  20017     int unit, 
  20018     bcm_field_entry_t entry, 
  20019     uint8 data, 
  20020     uint8 mask);
  20021 
  20022 /* 
  20023  * Get match criteria for bcmFieldQualifyRoceVer1Pkt qualifier in the
  20024  * field entry
  20025  */
  20026 extern int bcm_field_qualify_RoceVer1Pkt_get(
  20027     int unit, 
  20028     bcm_field_entry_t entry, 
  20029     uint8 *data, 
  20030     uint8 *mask);
  20031 
  20032 /* 
  20033  * Set match criteria for bcmFieldQualifyRoceVer2Pkt qualifier in the
  20034  * field entry
  20035  */
  20036 extern int bcm_field_qualify_RoceVer2Pkt(
  20037     int unit, 
  20038     bcm_field_entry_t entry, 
  20039     uint8 data, 
  20040     uint8 mask);
  20041 
  20042 /* 
  20043  * Get match criteria for bcmFieldQualifyRoceVer2Pkt qualifier in the
  20044  * field entry
  20045  */
  20046 extern int bcm_field_qualify_RoceVer2Pkt_get(
  20047     int unit, 
  20048     bcm_field_entry_t entry, 
  20049     uint8 *data, 
  20050     uint8 *mask);
  20051 
  20052 #endif /* BCM_HIDE_DISPATCHABLE */
  20053 
  20054 /* Initialize Field Presel Config structure. */
  20055 extern void bcm_field_presel_config_t_init(
  20056     bcm_field_presel_config_t *presel_config);
  20057 
  20058 #ifndef BCM_HIDE_DISPATCHABLE
  20059 
  20060 /* 
  20061  * Set match criteria for bcmFieldQualifyGeneratedTtl qualifier in the
  20062  * field entry.
  20063  */
  20064 extern int bcm_field_qualify_GeneratedTtl(
  20065     int unit, 
  20066     bcm_field_entry_t entry, 
  20067     uint32 data, 
  20068     uint32 mask);
  20069 
  20070 /* 
  20071  * Get match criteria for bcmFieldQualifyGeneratedTtl qualifier from the
  20072  * field entry.
  20073  */
  20074 extern int bcm_field_qualify_GeneratedTtl_get(
  20075     int unit, 
  20076     bcm_field_entry_t entry, 
  20077     uint32 *data, 
  20078     uint32 *mask);
  20079 
  20080 /* Set match criteria for bcmFieldQualifyIpMulticastCompatible */
  20081 extern int bcm_field_qualify_IpMulticastCompatible(
  20082     int unit, 
  20083     bcm_field_entry_t entry, 
  20084     uint32 data, 
  20085     uint32 mask);
  20086 
  20087 /* Get match criteria for bcmFieldQualifyIpMulticastCompatible */
  20088 extern int bcm_field_qualify_IpMulticastCompatible_get(
  20089     int unit, 
  20090     bcm_field_entry_t entry, 
  20091     uint32 *data, 
  20092     uint32 *mask);
  20093 
  20094 #endif /* BCM_HIDE_DISPATCHABLE */
  20095 
  20096 /* SR (Seamless Redundancy) port type */
  20097 typedef enum bcm_field_port_sr_type_e {
  20098     bcmFieldPortSRTypeNone = 0,     /* SR not supported on this port */
  20099     bcmFieldPortSRTypeEthernet = 1, /* Ethernet */
  20100     bcmFieldPortSRTypePrp = 2,      /* PRP */
  20101     bcmFieldPortSRTypeHsr = 3,      /* HSR */
  20102     bcmFieldPortSRTypeDot1cb = 4,   /* 802.1CB */
  20103     bcmFieldPortSRTypeCount = 5     /* Always last. Not a usable value. */
  20104 } bcm_field_port_sr_type_t;
  20105 
  20106 /* SR (Seamless Redundancy) port mode */
  20107 typedef enum bcm_field_sr_port_mode_e {
  20108     bcmFieldSRPortModeDefault = 0,      /* Default mode (custom value 0) */
  20109     bcmFieldSRPortModeInterworkingPrp = 1, /* It's a PRP port in an interworking
  20110                                            box */
  20111     bcmFieldSRPortModeCustom1 = 2,      /* Custom value 1 */
  20112     bcmFieldSRPortModeCustom2 = 3,      /* Custom value 2 */
  20113     bcmFieldSRPortModeCustom3 = 4,      /* Custom value 3 */
  20114     bcmFieldSRPortModeCustom4 = 5,      /* Custom value 4 */
  20115     bcmFieldSRPortModeCustom5 = 6,      /* Custom value 5 */
  20116     bcmFieldSRPortModeCustom6 = 7,      /* Custom value 6 */
  20117     bcmFieldSRPortModeCount = 8         /* Always last. Not a usable value. */
  20118 } bcm_field_sr_port_mode_t;
  20119 
  20120 /* SR (Seamless Redundancy) tag type */
  20121 typedef enum bcm_field_sr_tag_type_e {
  20122     bcmFieldSRTagTypeNone = 0,      /* No SR tag present in the packet */
  20123     bcmFieldSRTagTypeHsr = 1,       /* HSR */
  20124     bcmFieldSRTagTypePrp = 2,       /* PRP */
  20125     bcmFieldSRTagTypeDot1cb = 3,    /* IEEE 802.1CB */
  20126     bcmFieldSRTagTypeCount = 4      /* Always last. Not a usable value. */
  20127 } bcm_field_sr_tag_type_t;
  20128 
  20129 /* SR (Seamless Redundancy) node type */
  20130 typedef enum bcm_field_sr_node_type_e {
  20131     bcmFieldSRNodeTypeDan = 0,          /* DAN node */
  20132     bcmFieldSRNodeTypeLinkLocal = 1,    /* Link local MAC address */
  20133     bcmFieldSRNodeTypeSan = 2,          /* SAN node */
  20134     bcmFieldSRNodeTypeSupervision = 3,  /* PRP/HSR/802.1CB Supervision MAC
  20135                                            address */
  20136     bcmFieldSRNodeTypeCount = 4         /* Always last. Not a usable value. */
  20137 } bcm_field_sr_node_type_t;
  20138 
  20139 /* SR (Seamless Redundancy) supervision type */
  20140 typedef enum bcm_field_sr_supervision_type_e {
  20141     bcmFieldSRSupervisionTypeNone = 0,  /* Not an SR Supervision Packet */
  20142     bcmFieldSRSupervisionTypePrp = 1,   /* PRP Supervision Packet */
  20143     bcmFieldSRSupervisionTypeHsr = 2,   /* HSR Supervision Packet */
  20144     bcmFieldSRSupervisionTypeDot1cb = 3, /* 802.1CB Supervision Packet */
  20145     bcmFieldSRSupervisionTypeCount = 4  /* Always last. Not an usable value. */
  20146 } bcm_field_sr_supervision_type_t;
  20147 
  20148 /* Used for IEEE1588Encapsulation value */
  20149 typedef enum bcm_field_IEEE1588Encap_e {
  20150     bcmFieldIEEE1588EncapUdp = 0,   /* UDP Encapsulation for IEEE-1588 */
  20151     bcmFieldIEEE1588EncapEth = 1    /* ETH Encapsulation for IEEE-1588 */
  20152 } bcm_field_IEEE1588Encap_t;
  20153 
  20154 /* Parameter for bcmFieldQualifySRError */
  20155 #define BCM_FIELD_SR_ERROR_UNEXPECTED_PKT   (1 << 0)   /* Unexpected SR tag
  20156                                                           present */
  20157 #define BCM_FIELD_SR_ERROR_TAG_ERROR        (1 << 1)   /* Invalid SR tag format */
  20158 #define BCM_FIELD_SR_ERROR_RX_ERROR         (1 << 2)   /* Invalid SR flow or
  20159                                                           dropped due to errors */
  20160 
  20161 /* Parameter for bcmFieldActionSRNetIdSource */
  20162 #define BCM_FIELD_SR_NET_ID_SOURCE_FORCE_ZERO 0          /* Force NET ID to be 0
  20163                                                           (default) */
  20164 #define BCM_FIELD_SR_NET_ID_SOURCE_SRC_PORT 1          /* From source port NET
  20165                                                           ID configuration */
  20166 #define BCM_FIELD_SR_NET_ID_SOURCE_DST_PORT 2          /* From destination port
  20167                                                           NET ID configuration */
  20168 #define BCM_FIELD_SR_NET_ID_SOURCE_PACKET   3          /* From SR tag of the
  20169                                                           packet */
  20170 
  20171 /* Parameter for bcmFieldActionSRCopyToCpu */
  20172 #define BCM_FIELD_SR_COPYTOCPU_ANY          0          /* Copy to CPU regardless
  20173                                                           of SR status */
  20174 #define BCM_FIELD_SR_COPYTOCPU_NON_DUPLICATE 1          /* Copy to CPU only if
  20175                                                           it's a non-duplicate
  20176                                                           packet */
  20177 
  20178 /* Parameters for bcmFieldActionSRTagAdd and bcmFieldActionSRTagDelete */
  20179 #define BCM_FIELD_SR_TAG_TYPE_RESERVED  0          /* Reserved */
  20180 #define BCM_FIELD_SR_TAG_TYPE_HSR       1          /* HSR */
  20181 #define BCM_FIELD_SR_TAG_TYPE_PRP       2          /* PRP */
  20182 #define BCM_FIELD_SR_TAG_TYPE_DOT1CB    3          /* 802.1CB */
  20183 
  20184 #ifndef BCM_HIDE_DISPATCHABLE
  20185 
  20186 /* Set match criteria for bcmFieldQualifySrcPortSRType */
  20187 extern int bcm_field_qualify_SrcPortSRType(
  20188     int unit, 
  20189     bcm_field_entry_t entry, 
  20190     bcm_field_port_sr_type_t type);
  20191 
  20192 /* Get match criteria for bcmFieldQualifySrcPortSRType */
  20193 extern int bcm_field_qualify_SrcPortSRType_get(
  20194     int unit, 
  20195     bcm_field_entry_t entry, 
  20196     bcm_field_port_sr_type_t *type);
  20197 
  20198 /* Set match criteria for bcmFieldQualifyDstPortSRType */
  20199 extern int bcm_field_qualify_DstPortSRType(
  20200     int unit, 
  20201     bcm_field_entry_t entry, 
  20202     bcm_field_port_sr_type_t type);
  20203 
  20204 /* Get match criteria for bcmFieldQualifyDstPortSRType */
  20205 extern int bcm_field_qualify_DstPortSRType_get(
  20206     int unit, 
  20207     bcm_field_entry_t entry, 
  20208     bcm_field_port_sr_type_t *type);
  20209 
  20210 /* Set match criteria for bcmFieldQualifySrcPortSRRoleInterlink */
  20211 extern int bcm_field_qualify_SrcPortSRRoleInterlink(
  20212     int unit, 
  20213     bcm_field_entry_t entry, 
  20214     uint8 data);
  20215 
  20216 /* Get match criteria for bcmFieldQualifySrcPortSRRoleInterlink */
  20217 extern int bcm_field_qualify_SrcPortSRRoleInterlink_get(
  20218     int unit, 
  20219     bcm_field_entry_t entry, 
  20220     uint8 *data);
  20221 
  20222 /* Set match criteria for bcmFieldQualifyDstPortSRRoleInterlink */
  20223 extern int bcm_field_qualify_DstPortSRRoleInterlink(
  20224     int unit, 
  20225     bcm_field_entry_t entry, 
  20226     uint8 data);
  20227 
  20228 /* Get match criteria for bcmFieldQualifyDstPortSRRoleInterlink */
  20229 extern int bcm_field_qualify_DstPortSRRoleInterlink_get(
  20230     int unit, 
  20231     bcm_field_entry_t entry, 
  20232     uint8 *data);
  20233 
  20234 /* Set match criteria for bcmFieldQualifySrcPortSRMode */
  20235 extern int bcm_field_qualify_SrcPortSRMode(
  20236     int unit, 
  20237     bcm_field_entry_t entry, 
  20238     bcm_field_sr_port_mode_t type, 
  20239     uint8 mask);
  20240 
  20241 /* Get match criteria for bcmFieldQualifySrcPortSRMode */
  20242 extern int bcm_field_qualify_SrcPortSRMode_get(
  20243     int unit, 
  20244     bcm_field_entry_t entry, 
  20245     bcm_field_sr_port_mode_t *type, 
  20246     uint8 *mask);
  20247 
  20248 /* Set match criteria for bcmFieldQualifyDstPortSRMode */
  20249 extern int bcm_field_qualify_DstPortSRMode(
  20250     int unit, 
  20251     bcm_field_entry_t entry, 
  20252     bcm_field_sr_port_mode_t type, 
  20253     uint8 mask);
  20254 
  20255 /* Get match criteria for bcmFieldQualifyDstPortSRMode */
  20256 extern int bcm_field_qualify_DstPortSRMode_get(
  20257     int unit, 
  20258     bcm_field_entry_t entry, 
  20259     bcm_field_sr_port_mode_t *type, 
  20260     uint8 *mask);
  20261 
  20262 /* Set match criteria for bcmFieldQualifySrcPortSRNetId */
  20263 extern int bcm_field_qualify_SrcPortSRNetId(
  20264     int unit, 
  20265     bcm_field_entry_t entry, 
  20266     uint8 net_id, 
  20267     uint8 mask);
  20268 
  20269 /* Get match criteria for bcmFieldQualifySrcPortSRNetId */
  20270 extern int bcm_field_qualify_SrcPortSRNetId_get(
  20271     int unit, 
  20272     bcm_field_entry_t entry, 
  20273     uint8 *net_id, 
  20274     uint8 *mask);
  20275 
  20276 /* Set match criteria for bcmFieldQualifyDstPortSRNetId */
  20277 extern int bcm_field_qualify_DstPortSRNetId(
  20278     int unit, 
  20279     bcm_field_entry_t entry, 
  20280     uint8 net_id, 
  20281     uint8 mask);
  20282 
  20283 /* Get match criteria for bcmFieldQualifyDstPortSRNetId */
  20284 extern int bcm_field_qualify_DstPortSRNetId_get(
  20285     int unit, 
  20286     bcm_field_entry_t entry, 
  20287     uint8 *net_id, 
  20288     uint8 *mask);
  20289 
  20290 /* Set match criteria for bcmFieldQualifySrcPortSRLanId */
  20291 extern int bcm_field_qualify_SrcPortSRLanId(
  20292     int unit, 
  20293     bcm_field_entry_t entry, 
  20294     uint8 lan_id);
  20295 
  20296 /* Get match criteria for bcmFieldQualifySrcPortSRLanId */
  20297 extern int bcm_field_qualify_SrcPortSRLanId_get(
  20298     int unit, 
  20299     bcm_field_entry_t entry, 
  20300     uint8 *lan_id);
  20301 
  20302 /* Set match criteria for bcmFieldQualifyDstPortSRLanId */
  20303 extern int bcm_field_qualify_DstPortSRLanId(
  20304     int unit, 
  20305     bcm_field_entry_t entry, 
  20306     uint8 lan_id);
  20307 
  20308 /* Get match criteria for bcmFieldQualifyDstPortSRLanId */
  20309 extern int bcm_field_qualify_DstPortSRLanId_get(
  20310     int unit, 
  20311     bcm_field_entry_t entry, 
  20312     uint8 *lan_id);
  20313 
  20314 /* Set match criteria for bcmFieldQualifySRTagType */
  20315 extern int bcm_field_qualify_SRTagType(
  20316     int unit, 
  20317     bcm_field_entry_t entry, 
  20318     bcm_field_sr_tag_type_t type);
  20319 
  20320 /* Get match criteria for bcmFieldQualifySRTagType */
  20321 extern int bcm_field_qualify_SRTagType_get(
  20322     int unit, 
  20323     bcm_field_entry_t entry, 
  20324     bcm_field_sr_tag_type_t *type);
  20325 
  20326 /* Set match criteria for bcmFieldQualifySRLanId */
  20327 extern int bcm_field_qualify_SRLanId(
  20328     int unit, 
  20329     bcm_field_entry_t entry, 
  20330     int lan_id);
  20331 
  20332 /* Get match criteria for bcmFieldQualifySRLanId */
  20333 extern int bcm_field_qualify_SRLanId_get(
  20334     int unit, 
  20335     bcm_field_entry_t entry, 
  20336     int *lan_id);
  20337 
  20338 /* Set match criteria for bcmFieldQualifySRNetId */
  20339 extern int bcm_field_qualify_SRNetId(
  20340     int unit, 
  20341     bcm_field_entry_t entry, 
  20342     int net_id);
  20343 
  20344 /* Get match criteria for bcmFieldQualifySRNetId */
  20345 extern int bcm_field_qualify_SRNetId_get(
  20346     int unit, 
  20347     bcm_field_entry_t entry, 
  20348     int *net_id);
  20349 
  20350 /* Set match criteria for bcmFieldQualifyVlanSREnable */
  20351 extern int bcm_field_qualify_VlanSREnable(
  20352     int unit, 
  20353     bcm_field_entry_t entry, 
  20354     uint8 data);
  20355 
  20356 /* Get match criteria for bcmFieldQualifyVlanSREnable */
  20357 extern int bcm_field_qualify_VlanSREnable_get(
  20358     int unit, 
  20359     bcm_field_entry_t entry, 
  20360     uint8 *data);
  20361 
  20362 /* Set match criteria for bcmFieldQualifyVlanSRLanId */
  20363 extern int bcm_field_qualify_VlanSRLanId(
  20364     int unit, 
  20365     bcm_field_entry_t entry, 
  20366     uint8 lan_id);
  20367 
  20368 /* Get match criteria for bcmFieldQualifyVlanSRLanId */
  20369 extern int bcm_field_qualify_VlanSRLanId_get(
  20370     int unit, 
  20371     bcm_field_entry_t entry, 
  20372     uint8 *lan_id);
  20373 
  20374 /* Set match criteria for bcmFieldQualifySRFlowId */
  20375 extern int bcm_field_qualify_SRFlowId(
  20376     int unit, 
  20377     bcm_field_entry_t entry, 
  20378     uint32 data, 
  20379     uint32 mask);
  20380 
  20381 /* Get match criteria for bcmFieldQualifySRFlowId */
  20382 extern int bcm_field_qualify_SRFlowId_get(
  20383     int unit, 
  20384     bcm_field_entry_t entry, 
  20385     uint32 *data, 
  20386     uint32 *mask);
  20387 
  20388 /* Set match criteria for bcmFieldQualifyL2DestSRNodeType */
  20389 extern int bcm_field_qualify_L2DestSRNodeType(
  20390     int unit, 
  20391     bcm_field_entry_t entry, 
  20392     bcm_field_sr_node_type_t type);
  20393 
  20394 /* Get match criteria for bcmFieldQualifyL2DestSRNodeType */
  20395 extern int bcm_field_qualify_L2DestSRNodeType_get(
  20396     int unit, 
  20397     bcm_field_entry_t entry, 
  20398     bcm_field_sr_node_type_t *type);
  20399 
  20400 /* Set match criteria for bcmFieldQualifySRNetIdMatched */
  20401 extern int bcm_field_qualify_SRNetIdMatched(
  20402     int unit, 
  20403     bcm_field_entry_t entry, 
  20404     uint8 data);
  20405 
  20406 /* Get match criteria for bcmFieldQualifySRNetIdMatched */
  20407 extern int bcm_field_qualify_SRNetIdMatched_get(
  20408     int unit, 
  20409     bcm_field_entry_t entry, 
  20410     uint8 *data);
  20411 
  20412 /* Set match criteria for bcmFieldQualifySRSrcNodeIsSan */
  20413 extern int bcm_field_qualify_SRSrcNodeIsSan(
  20414     int unit, 
  20415     bcm_field_entry_t entry, 
  20416     uint8 data);
  20417 
  20418 /* Get match criteria for bcmFieldQualifySRSrcNodeIsSan */
  20419 extern int bcm_field_qualify_SRSrcNodeIsSan_get(
  20420     int unit, 
  20421     bcm_field_entry_t entry, 
  20422     uint8 *data);
  20423 
  20424 /* Set match criteria for bcmFieldQualifySRSupervisionType */
  20425 extern int bcm_field_qualify_SRSupervisionType(
  20426     int unit, 
  20427     bcm_field_entry_t entry, 
  20428     bcm_field_sr_supervision_type_t type);
  20429 
  20430 /* Get match criteria for bcmFieldQualifySRSupervisionType */
  20431 extern int bcm_field_qualify_SRSupervisionType_get(
  20432     int unit, 
  20433     bcm_field_entry_t entry, 
  20434     bcm_field_sr_supervision_type_t *type);
  20435 
  20436 /* Set match criteria for bcmFieldQualifySRError */
  20437 extern int bcm_field_qualify_SRError(
  20438     int unit, 
  20439     bcm_field_entry_t entry, 
  20440     uint32 data, 
  20441     uint32 mask);
  20442 
  20443 /* Get match criteria for bcmFieldQualifySRError */
  20444 extern int bcm_field_qualify_SRError_get(
  20445     int unit, 
  20446     bcm_field_entry_t entry, 
  20447     uint32 *data, 
  20448     uint32 *mask);
  20449 
  20450 /* Set match criteria for bcmFieldQualifyL2SrcMulticastHit */
  20451 extern int bcm_field_qualify_L2SrcMulticastHit(
  20452     int unit, 
  20453     bcm_field_entry_t entry, 
  20454     uint8 data, 
  20455     uint8 mask);
  20456 
  20457 /* Get match criteria for bcmFieldQualifyL2SrcMulticastHit */
  20458 extern int bcm_field_qualify_L2SrcMulticastHit_get(
  20459     int unit, 
  20460     bcm_field_entry_t entry, 
  20461     uint8 *data, 
  20462     uint8 *mask);
  20463 
  20464 /* Set match criteria for bcmFieldQualifyL2DstMulticastHit */
  20465 extern int bcm_field_qualify_L2DstMulticastHit(
  20466     int unit, 
  20467     bcm_field_entry_t entry, 
  20468     uint8 data, 
  20469     uint8 mask);
  20470 
  20471 /* Get match criteria for bcmFieldQualifyL2DstMulticastHit */
  20472 extern int bcm_field_qualify_L2DstMulticastHit_get(
  20473     int unit, 
  20474     bcm_field_entry_t entry, 
  20475     uint8 *data, 
  20476     uint8 *mask);
  20477 
  20478 /* Set match criteria for bcmFieldQualifySRDuplicate */
  20479 extern int bcm_field_qualify_SRDuplicate(
  20480     int unit, 
  20481     bcm_field_entry_t entry, 
  20482     uint8 data);
  20483 
  20484 /* Get match criteria for bcmFieldQualifySRDuplicate */
  20485 extern int bcm_field_qualify_SRDuplicate_get(
  20486     int unit, 
  20487     bcm_field_entry_t entry, 
  20488     uint8 *data);
  20489 
  20490 /* Set match criteria for bcmFieldQualifyTsnFlowId */
  20491 extern int bcm_field_qualify_TsnFlowId(
  20492     int unit, 
  20493     bcm_field_entry_t entry, 
  20494     uint32 data, 
  20495     uint32 mask);
  20496 
  20497 extern int bcm_field_qualify_TsnFlowId_get(
  20498     int unit, 
  20499     bcm_field_entry_t entry, 
  20500     uint32 *data, 
  20501     uint32 *mask);
  20502 
  20503 /* Set match criteria for bcmFieldQualifyStaggeredValue0. */
  20504 extern int bcm_field_qualify_StaggeredValue0(
  20505     int unit, 
  20506     bcm_field_entry_t entry, 
  20507     uint32 data, 
  20508     uint32 mask);
  20509 
  20510 /* Get match criteria for bcmFieldQualifyStaggeredValue0 */
  20511 extern int bcm_field_qualify_StaggeredValue0_get(
  20512     int unit, 
  20513     bcm_field_entry_t entry, 
  20514     uint32 *data, 
  20515     uint32 *mask);
  20516 
  20517 /* Set match criteria for bcmFieldQualifyStaggeredValue1. */
  20518 extern int bcm_field_qualify_StaggeredValue1(
  20519     int unit, 
  20520     bcm_field_entry_t entry, 
  20521     uint32 data, 
  20522     uint32 mask);
  20523 
  20524 /* Get match criteria for bcmFieldQualifyStaggeredValue1 */
  20525 extern int bcm_field_qualify_StaggeredValue1_get(
  20526     int unit, 
  20527     bcm_field_entry_t entry, 
  20528     uint32 *data, 
  20529     uint32 *mask);
  20530 
  20531 /* Set match criteria for bcmFieldQualifyStaggeredValue2. */
  20532 extern int bcm_field_qualify_StaggeredValue2(
  20533     int unit, 
  20534     bcm_field_entry_t entry, 
  20535     uint32 data, 
  20536     uint32 mask);
  20537 
  20538 /* Get match criteria for bcmFieldQualifyStaggeredValue2 */
  20539 extern int bcm_field_qualify_StaggeredValue2_get(
  20540     int unit, 
  20541     bcm_field_entry_t entry, 
  20542     uint32 *data, 
  20543     uint32 *mask);
  20544 
  20545 /* Set match criteria for bcmFieldQualifyStaggeredValue3. */
  20546 extern int bcm_field_qualify_StaggeredValue3(
  20547     int unit, 
  20548     bcm_field_entry_t entry, 
  20549     uint32 data, 
  20550     uint32 mask);
  20551 
  20552 /* Get match criteria for bcmFieldQualifyStaggeredValue3 */
  20553 extern int bcm_field_qualify_StaggeredValue3_get(
  20554     int unit, 
  20555     bcm_field_entry_t entry, 
  20556     uint32 *data, 
  20557     uint32 *mask);
  20558 
  20559 /* Set match criteria for bcmFieldQualifyStaggeredDirectValue. */
  20560 extern int bcm_field_qualify_StaggeredDirectValue(
  20561     int unit, 
  20562     bcm_field_entry_t entry, 
  20563     uint32 data, 
  20564     uint32 mask);
  20565 
  20566 /* Get match criteria for bcmFieldQualifyStaggeredDirectValue */
  20567 extern int bcm_field_qualify_StaggeredDirectValue_get(
  20568     int unit, 
  20569     bcm_field_entry_t entry, 
  20570     uint32 *data, 
  20571     uint32 *mask);
  20572 
  20573 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile0. */
  20574 extern int bcm_field_qualify_StaggeredPreselProfile0(
  20575     int unit, 
  20576     bcm_field_entry_t entry, 
  20577     uint32 data, 
  20578     uint32 mask);
  20579 
  20580 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfile0 */
  20581 extern int bcm_field_qualify_StaggeredPreselProfile0_get(
  20582     int unit, 
  20583     bcm_field_entry_t entry, 
  20584     uint32 *data, 
  20585     uint32 *mask);
  20586 
  20587 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile1. */
  20588 extern int bcm_field_qualify_StaggeredPreselProfile1(
  20589     int unit, 
  20590     bcm_field_entry_t entry, 
  20591     uint32 data, 
  20592     uint32 mask);
  20593 
  20594 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfile1 */
  20595 extern int bcm_field_qualify_StaggeredPreselProfile1_get(
  20596     int unit, 
  20597     bcm_field_entry_t entry, 
  20598     uint32 *data, 
  20599     uint32 *mask);
  20600 
  20601 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile2. */
  20602 extern int bcm_field_qualify_StaggeredPreselProfile2(
  20603     int unit, 
  20604     bcm_field_entry_t entry, 
  20605     uint32 data, 
  20606     uint32 mask);
  20607 
  20608 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfile2. */
  20609 extern int bcm_field_qualify_StaggeredPreselProfile2_get(
  20610     int unit, 
  20611     bcm_field_entry_t entry, 
  20612     uint32 *data, 
  20613     uint32 *mask);
  20614 
  20615 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfile3. */
  20616 extern int bcm_field_qualify_StaggeredPreselProfile3(
  20617     int unit, 
  20618     bcm_field_entry_t entry, 
  20619     uint32 data, 
  20620     uint32 mask);
  20621 
  20622 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfile3. */
  20623 extern int bcm_field_qualify_StaggeredPreselProfile3_get(
  20624     int unit, 
  20625     bcm_field_entry_t entry, 
  20626     uint32 *data, 
  20627     uint32 *mask);
  20628 
  20629 /* Set match criteria for bcmFieldQualifyStaggeredPreselProfileDirect. */
  20630 extern int bcm_field_qualify_StaggeredPreselProfileDirect(
  20631     int unit, 
  20632     bcm_field_entry_t entry, 
  20633     uint32 data, 
  20634     uint32 mask);
  20635 
  20636 /* Get match criteria for bcmFieldQualifyStaggeredPreselProfileDirect. */
  20637 extern int bcm_field_qualify_StaggeredPreselProfileDirect_get(
  20638     int unit, 
  20639     bcm_field_entry_t entry, 
  20640     uint32 *data, 
  20641     uint32 *mask);
  20642 
  20643 /* Add ports to the specified group */
  20644 extern int bcm_field_group_ports_add(
  20645     int unit, 
  20646     bcm_field_group_t group, 
  20647     bcm_pbmp_t pbmp);
  20648 
  20649 /* Remove ports from a specified group. */
  20650 extern int bcm_field_group_ports_remove(
  20651     int unit, 
  20652     bcm_field_group_t group, 
  20653     bcm_pbmp_t pbmp);
  20654 
  20655 /* Retrieve the bitmap of ports associated with a given field group */
  20656 extern int bcm_field_group_ports_get(
  20657     int unit, 
  20658     bcm_field_group_t group, 
  20659     bcm_pbmp_t *pbmp);
  20660 
  20661 /* To verify whether a group can be created with a given qset and mode */
  20662 extern int bcm_field_group_config_validate(
  20663     int unit, 
  20664     bcm_field_group_config_t *group_config, 
  20665     bcm_field_group_mode_t *mode);
  20666 
  20667 /* 
  20668  * To map a given set of TTL/ToS/TCP values of the packet to another set
  20669  * of TTL/ToS/TCP values respectively.
  20670  */
  20671 extern int bcm_field_class_map_set(
  20672     int unit, 
  20673     bcm_field_stage_t stage, 
  20674     bcm_field_qualify_t qual, 
  20675     uint32 num_entries, 
  20676     uint32 *orig_values_array, 
  20677     uint32 *map_values_array);
  20678 
  20679 /* 
  20680  * To map a given set of TTL/ToS/TCP values of the packet to another set
  20681  * of TTL/ToS/TCP values respectively.
  20682  */
  20683 extern int bcm_field_class_map_get(
  20684     int unit, 
  20685     bcm_field_stage_t stage, 
  20686     bcm_field_qualify_t qual, 
  20687     uint32 num_entries, 
  20688     uint32 *orig_values_array, 
  20689     uint32 *map_values_array);
  20690 
  20691 /* Set match criteria for bcmFieldQaulifyPreselId. */
  20692 extern int bcm_field_qualify_PreselId(
  20693     int unit, 
  20694     bcm_field_entry_t entry, 
  20695     uint32 data, 
  20696     uint32 mask);
  20697 
  20698 /* Get match criteria for bcmFieldQaulifyPreselId. */
  20699 extern int bcm_field_qualify_PreselId_get(
  20700     int unit, 
  20701     bcm_field_entry_t entry, 
  20702     uint32 *data, 
  20703     uint32 *mask);
  20704 
  20705 /* Set match criteria for bcmFieldQualifyMirrorDest. */
  20706 extern int bcm_field_qualify_MirrorDest(
  20707     int unit, 
  20708     bcm_field_entry_t entry, 
  20709     bcm_gport_t mirror_gport);
  20710 
  20711 /* Get match criteria for bcmFieldQualifyMirrorDest. */
  20712 extern int bcm_field_qualify_MirrorDest_get(
  20713     int unit, 
  20714     bcm_field_entry_t entry, 
  20715     bcm_gport_t *mirror_gport);
  20716 
  20717 /* Set match criteria for bcm_field_qualify_PacketIsIEEE1588. */
  20718 extern int bcm_field_qualify_PacketIsIEEE1588(
  20719     int unit, 
  20720     bcm_field_entry_t entry, 
  20721     uint8 data, 
  20722     uint8 mask);
  20723 
  20724 /* Get match criteria for bcm_field_qualify_PacketIsIEEE1588_get. */
  20725 extern int bcm_field_qualify_PacketIsIEEE1588_get(
  20726     int unit, 
  20727     bcm_field_entry_t entry, 
  20728     uint8 *data, 
  20729     uint8 *mask);
  20730 
  20731 /* Set match criteria for field_qualify_IEEE1588Encapsulation. */
  20732 extern int bcm_field_qualify_IEEE1588Encapsulation(
  20733     int unit, 
  20734     bcm_field_entry_t entry, 
  20735     bcm_field_IEEE1588Encap_t encap);
  20736 
  20737 /* Get match criteria for field_qualify_IEEE1588Encapsulation_get. */
  20738 extern int bcm_field_qualify_IEEE1588Encapsulation_get(
  20739     int unit, 
  20740     bcm_field_entry_t entry, 
  20741     bcm_field_IEEE1588Encap_t *encap);
  20742 
  20743 /* Set match criteria for field_qualify_IEEE1588CompensateTimeStamp. */
  20744 extern int bcm_field_qualify_IEEE1588CompensateTimeStamp(
  20745     int unit, 
  20746     bcm_field_entry_t entry, 
  20747     uint8 data, 
  20748     uint8 mask);
  20749 
  20750 /* Get match criteria for field_qualify_IEEE1588CompensateTimeStamp_get. */
  20751 extern int bcm_field_qualify_IEEE1588CompensateTimeStamp_get(
  20752     int unit, 
  20753     bcm_field_entry_t entry, 
  20754     uint8 *data, 
  20755     uint8 *mask);
  20756 
  20757 /* Set match criteria for field_qualify_IEEE1588Command. */
  20758 extern int bcm_field_qualify_IEEE1588Command(
  20759     int unit, 
  20760     bcm_field_entry_t entry, 
  20761     uint8 data, 
  20762     uint8 mask);
  20763 
  20764 /* Get match criteria for field_qualify_IEEE1588Command_get. */
  20765 extern int bcm_field_qualify_IEEE1588Command_get(
  20766     int unit, 
  20767     bcm_field_entry_t entry, 
  20768     uint8 *data, 
  20769     uint8 *mask);
  20770 
  20771 /* Set match criteria for bcm_field_qualify_IEEE1588HeaderOffset. */
  20772 extern int bcm_field_qualify_IEEE1588HeaderOffset(
  20773     int unit, 
  20774     bcm_field_entry_t entry, 
  20775     uint32 data, 
  20776     uint32 mask);
  20777 
  20778 /* Get match criteria for field_qualify_IEEE1588HeaderOffset_get. */
  20779 extern int bcm_field_qualify_IEEE1588HeaderOffset_get(
  20780     int unit, 
  20781     bcm_field_entry_t entry, 
  20782     uint32 *data, 
  20783     uint32 *mask);
  20784 
  20785 #endif /* BCM_HIDE_DISPATCHABLE */
  20786 
  20787 /* 
  20788  * Field Qualifier System Header types (for
  20789  * bcm_field_qualify_SysHdrType).
  20790  */
  20791 typedef enum bcm_field_sys_hdr_type_e {
  20792     bcmFieldSysHdrNone = 0,             /* No System Header in the packet. */
  20793     bcmFieldSysHdrSubPort = 1,          /* Subport type System Header. */
  20794     bcmFieldSysHdrLoopbackNot = 2,      /* Not a system header of any Loopback
  20795                                            type. */
  20796     bcmFieldSysHdrLoopbackAny = 3,      /* Loopback system header
  20797                                            (GenericLoopback or CPU Masquerade). */
  20798     bcmFieldSysHdrLoopbackGeneric = 4,  /* System header of Generic Loopback. */
  20799     bcmFieldSysHdrLoopbackCpuMasquerade = 5, /* System header of Loopback CPU
  20800                                            Masquerade. */
  20801     bcmFieldSysHdrHiGigNot = 6,         /* Not a System header of any HiGig
  20802                                            type. */
  20803     bcmFieldSysHdrHiGigAny = 7,         /* System header of any HiGig type. */
  20804     bcmFieldSysHdrHiGigTypePpd0 = 8,    /* HiGig with PPD0. */
  20805     bcmFieldSysHdrHiGigTypePpd2 = 9,    /* HiGig with PPD2. */
  20806     bcmFieldSysHdrHiGigTypePpd0EhType0 = 10, /* HiGig with PPD0 Extension Header Type
  20807                                            0. */
  20808     bcmFieldSysHdrHiGigTypePpd0EhType1 = 11, /* HiGig with PPD0 Extension Header Type
  20809                                            1. */
  20810     bcmFieldSysHdrHiGigTypePpd0EhType2 = 12, /* HiGig with PPD0 Extension Header Type
  20811                                            2. */
  20812     bcmFieldSysHdrHiGigTypePpd2EhType0 = 13, /* HiGig with PPD2 Extension Header Type
  20813                                            0. */
  20814     bcmFieldSysHdrHiGigTypePpd2EhType1 = 14, /* HiGig with PPD2 Extension Header Type
  20815                                            1. */
  20816     bcmFieldSysHdrHiGigTypePpd2EhType2 = 15, /* HiGig with PPD2 Extension Header Type
  20817                                            2. */
  20818     bcmFieldSysHdrHiGigTypeUnknownPpd = 16, /* HiGig with unknown PPD. */
  20819     bcmFieldSysHdrHiGigTypeUnknownPpdWithEh = 17, /* HiGig with unknown PPD Extension
  20820                                            header. */
  20821     bcmFieldSysHdrHiGigTypePpd1 = 18,   /* HiGig with PPD1. */
  20822     bcmFieldSysHdrHiGigTypePpd1WithEh = 19, /* HiGig with PPD1 Extension Header. */
  20823     bcmFieldSysHdrTxTimestamp = 20,     /* SOBMH packet used for Tx Timestamp */
  20824     bcmFieldSysHdrLastCount = 21        /* Always Last. Not a usable value. */
  20825 } bcm_field_sys_hdr_type_t;
  20826 
  20827 #define BCM_FIELD_SYS_HDR_TYPE_STRINGS \
  20828 { \
  20829     "None", \
  20830     "SubPort", \
  20831     "LoopbackNot", \
  20832     "LoopbackAny", \
  20833     "LoopbackGeneric", \
  20834     "LoopbackCpuMasquerade", \
  20835     "HiGigNot", \
  20836     "HiGigAny", \
  20837     "HiGigTypePpd0", \
  20838     "HiGigTypePpd2", \
  20839     "HiGigTypePpd0EhType0", \
  20840     "HiGigTypePpd0EhType1", \
  20841     "HiGigTypePpd0EhType2", \
  20842     "HiGigTypePpd2EhType0", \
  20843     "HiGigTypePpd2EhType1", \
  20844     "HiGigTypePpd2EhType2", \
  20845     "HiGigTypeUnknownPpd", \
  20846     "HiGigTypeUnknownPpdWithEh", \
  20847     "HiGigTypePpd1", \
  20848     "HiGigTypePpd1WithEh", \
  20849     "TxTimestamp"  \
  20850 }
  20851 
  20852 #ifndef BCM_HIDE_DISPATCHABLE
  20853 
  20854 /* Add system header type field qualification to a field entry. */
  20855 extern int bcm_field_qualify_SysHdrType(
  20856     int unit, 
  20857     bcm_field_entry_t entry, 
  20858     bcm_field_sys_hdr_type_t type);
  20859 
  20860 /* Get system header type field qualification from a field entry. */
  20861 extern int bcm_field_qualify_SysHdrType_get(
  20862     int unit, 
  20863     bcm_field_entry_t entry, 
  20864     bcm_field_sys_hdr_type_t *type);
  20865 
  20866 /* Add Subport Tag present status field qualification to a field entry. */
  20867 extern int bcm_field_qualify_SubportTagPresent(
  20868     int unit, 
  20869     bcm_field_entry_t entry, 
  20870     uint8 data, 
  20871     uint8 mask);
  20872 
  20873 #endif /* BCM_HIDE_DISPATCHABLE */
  20874 
  20875 /* Parameters for bcmFieldActionMplsLookupEnable */
  20876 #define BCM_FIELD_MPLS_ENABLE   1          /* Enabling MPLS support */
  20877 #define BCM_FIELD_MPLS_DISABLE  2          /* Disabling MPLS support */
  20878 
  20879 /* Parameters for bcmFieldActionTerminationAllowed */
  20880 #define BCM_FIELD_MPLS_TERM_ALLOWED         (1 << 0)   /* Enabling MPLS tunnel
  20881                                                           termination */
  20882 #define BCM_FIELD_IPV4_TERM_ALLOWED         (1 << 1)   /* Enabling L3 Ipv4
  20883                                                           termination */
  20884 #define BCM_FIELD_IPV6_TERM_ALLOWED         (1 << 2)   /* Enabling L3 Ipv6
  20885                                                           termination */
  20886 #define BCM_FIELD_IPV4_MCAST_TERM_ALLOWED   (1 << 3)   /* Enabling L3 Ipv4
  20887                                                           multicast termination */
  20888 #define BCM_FIELD_IPV6_MCAST_TERM_ALLOWED   (1 << 4)   /* Enabling L3 Ipv6
  20889                                                           multicast termination */
  20890 #define BCM_FIELD_ARP_RARP_TERM_ALLOWED     (1 << 5)   /* Enabling arp/rarp
  20891                                                           termination */
  20892 
  20893 #ifndef BCM_HIDE_DISPATCHABLE
  20894 
  20895 /* 
  20896  * Configure match criteria for bcmFieldQualifyIpTunnelTtlClassZero
  20897  *             qualifier from the field entry.
  20898  */
  20899 extern int bcm_field_qualify_IpTunnelTtlClassZero(
  20900     int unit, 
  20901     bcm_field_entry_t entry, 
  20902     bcm_class_t data, 
  20903     bcm_class_t mask);
  20904 
  20905 /* Get Subport tag present status field qualification from a field entry. */
  20906 extern int bcm_field_qualify_SubportTagPresent_get(
  20907     int unit, 
  20908     bcm_field_entry_t entry, 
  20909     uint8 *data, 
  20910     uint8 *mask);
  20911 
  20912 #endif /* BCM_HIDE_DISPATCHABLE */
  20913 
  20914 /* bcm_field_network_tag_type_e */
  20915 typedef enum bcm_field_network_tag_type_e {
  20916     bcmFieldNetworkTagVnTag = 0,    /* Network tag type VNTAG. */
  20917     bcmFieldNetworkTagEtag = 1,     /* Network tag type ETAG. */
  20918     bcmFieldNetworkTagLastCount = 2 /* Always Last. Not a usable value. */
  20919 } bcm_field_network_tag_type_t;
  20920 
  20921 #define BCM_FIELD_NETWORK_TAG_TYPE \
  20922 { \
  20923     "VnTag", \
  20924     "Etag"  \
  20925 }
  20926 
  20927 #ifndef BCM_HIDE_DISPATCHABLE
  20928 
  20929 /* Add network tag type field qualification to a field entry. */
  20930 extern int bcm_field_qualify_NetworkTagType(
  20931     int unit, 
  20932     bcm_field_entry_t entry, 
  20933     bcm_field_network_tag_type_t type);
  20934 
  20935 /* Get network tag type field qualification from a field entry. */
  20936 extern int bcm_field_qualify_NetworkTagType_get(
  20937     int unit, 
  20938     bcm_field_entry_t entry, 
  20939     bcm_field_network_tag_type_t *type);
  20940 
  20941 /* 
  20942  * Add congestion Tag present status field qualification to a field
  20943  * entry.
  20944  */
  20945 extern int bcm_field_qualify_CnTagPresent(
  20946     int unit, 
  20947     bcm_field_entry_t entry, 
  20948     uint8 data, 
  20949     uint8 mask);
  20950 
  20951 /* 
  20952  * Get congestion tag present status field qualification from a field
  20953  * entry.
  20954  */
  20955 extern int bcm_field_qualify_CnTagPresent_get(
  20956     int unit, 
  20957     bcm_field_entry_t entry, 
  20958     uint8 *data, 
  20959     uint8 *mask);
  20960 
  20961 #endif /* BCM_HIDE_DISPATCHABLE */
  20962 
  20963 /* bcm_field_l2_pkt_type_e */
  20964 typedef enum bcm_field_l2_pkt_type_e {
  20965     bcmFieldL2PktTypeEthernet = 0,  /* Ethernet L2 packet type. */
  20966     bcmFieldL2PktTypeSnap = 1,      /* SNAP L2 packet type. */
  20967     bcmFieldL2PktTypeLLC = 2,       /* LLC L2 packet type. */
  20968     bcmFieldL2PktTypeLastCount = 3  /* Always Last. Not a usable value. */
  20969 } bcm_field_l2_pkt_type_t;
  20970 
  20971 #define BCM_FIELD_L2_PKT_TYPE \
  20972 { \
  20973     "Ethernet", \
  20974     "Snap", \
  20975     "LLC"  \
  20976 }
  20977 
  20978 #ifndef BCM_HIDE_DISPATCHABLE
  20979 
  20980 /* Add L2 Packet type field qualification to a field entry. */
  20981 extern int bcm_field_qualify_L2PktType(
  20982     int unit, 
  20983     bcm_field_entry_t entry, 
  20984     bcm_field_l2_pkt_type_t type);
  20985 
  20986 /* Get L2 Packet type field qualification from a field entry. */
  20987 extern int bcm_field_qualify_L2PktType_get(
  20988     int unit, 
  20989     bcm_field_entry_t entry, 
  20990     bcm_field_l2_pkt_type_t *type);
  20991 
  20992 #endif /* BCM_HIDE_DISPATCHABLE */
  20993 
  20994 /* bcm_field_pkt_type_e */
  20995 typedef enum bcm_field_pkt_type_e {
  20996     bcmFieldPktTypeMplsNot = 0,         /* Non-MPLS Packet type */
  20997     bcmFieldPktTypeMplsAny = 1,         /* Any MPLS Packet type */
  20998     bcmFieldPktTypeMplsOneLabel = 2,    /* MPLS with one label Packet type */
  20999     bcmFieldPktTypeMplsTwoLabel = 3,    /* MPLS with two labels Packet type */
  21000     bcmFieldPktTypeMplsThreeLabel = 4,  /* MPLS with three labels Packet type */
  21001     bcmFieldPktTypeMplsFourLabel = 5,   /* MPLS with four labels Packet type */
  21002     bcmFieldPktTypeMplsFiveLabel = 6,   /* MPLS with five labels Packet type */
  21003     bcmFieldPktTypeMplsSixLabel = 7,    /* MPLS with six labels Packet type */
  21004     bcmFieldPktTypeMplsSevenLabel = 8,  /* MPLS with seven labels Packet type */
  21005     bcmFieldPktTypeMplsMoreThanSevenLabel = 9, /* MPLS with more than seven labels
  21006                                            Packet type */
  21007     bcmFieldPktTypeFCoENot = 10,        /* Non-FCoE Packet type */
  21008     bcmFieldPktTypeFCoEAny = 11,        /* Any FCoE Packet type */
  21009     bcmFieldPktTypeFCoEVft = 12,        /* FCoE VFT Packet type */
  21010     bcmFieldPktTypeFCoEEncap = 13,      /* FCoE ENCAP Packet type */
  21011     bcmFieldPktTypeFCoEIfr = 14,        /* FCoE IFR Packet type */
  21012     bcmFieldPktTypeFCoEStd = 15,        /* FCoE STD Packet type */
  21013     bcmFieldPktTypeFCoEVftStd = 16,     /* FCoE VFT-STD Packet type */
  21014     bcmFieldPktTypeFCoEEncapStd = 17,   /* FCoE ENCAP-STD Packet type */
  21015     bcmFieldPktTypeFCoEIfrStd = 18,     /* FCoE IFR-STD Packet type */
  21016     bcmFieldPktTypeFCoEFip = 19,        /* FCoE FIP Packet type */
  21017     bcmFieldPktType1588 = 20,           /* 1588 Packet Type */
  21018     bcmFieldPktTypeArp = 21,            /* ARP Packet Type */
  21019     bcmFieldPktTypeRarp = 22,           /* RARP Packet Type */
  21020     bcmFieldPktTypeUnknownEtherType = 23, /* Packet with Unknown EtherType */
  21021     bcmFieldPktTypeMim = 24,            /* MiM Packet type */
  21022     bcmFieldPktTypeOam = 25,            /* OAM Packet Type */
  21023     bcmFieldPktTypeCnm = 26,            /* CNM (congestion notification message)
  21024                                            Packet Type */
  21025     bcmFieldPktTypeNshOverL2 = 27,      /* NSH Over L2 Packet Type */
  21026     bcmFieldPktTypeNshOverMplsOneLabel = 28, /* NSH Over MPLS with one label Packet
  21027                                            type */
  21028     bcmFieldPktTypeNshOverMplsTwoLabel = 29, /* NSH Over MPLS with two label Packet
  21029                                            type */
  21030     bcmFieldPktTypeIp4Not = 30,         /* Non-IPv4 Packet type */
  21031     bcmFieldPktTypeIp4Any = 31,         /* Any IPv4 Packet Type */
  21032     bcmFieldPktTypeIp4Nsh = 32,         /* NSH Over IPv4 Packet Type */
  21033     bcmFieldPktTypeIp4GpeNsh = 33,      /* GPE-NSH Over IPv4 Packet Type */
  21034     bcmFieldPktTypeIp4Gre = 34,         /* GRE over IPv4 Packet Type */
  21035     bcmFieldPktTypeIp4Bfd = 35,         /* BFD Over IPv4 Packet Type */
  21036     bcmFieldPktTypeIp4Vxlan = 36,       /* VXLAN Over IPv4 Packet Type */
  21037     bcmFieldPktTypeIp4Gpe = 37,         /* GPE Over IPv4 Packet Type */
  21038     bcmFieldPktTypeIp4GeneveNsh = 38,   /* GENEVE-NSH Over IPv4 Packet Type */
  21039     bcmFieldPktTypeIp41588Udp = 39,     /* 1588 UDP Packet over IPv4 */
  21040     bcmFieldPktTypeIp4VxlanFlex = 40,   /* VXLAN-Flex Over IPv4 Packet */
  21041     bcmFieldPktTypeIp4IPinIP = 41,      /* IPv4 IP-in-IP Packet */
  21042     bcmFieldPktTypeIp4IPinGre = 42,     /* IP GRE Ipv4 Packet */
  21043     bcmFieldPktTypeIp4Nvgre = 43,       /* NVGRE IPv4 Packet */
  21044     bcmFieldPktTypeIp4Geneve = 44,      /* IPv4-GENEVE Packet */
  21045     bcmFieldPktTypeIp4Gue = 45,         /* IPv4-GUE Packet */
  21046     bcmFieldPktTypeIp4Tcp = 46,         /* IPv4-TCP Packet */
  21047     bcmFieldPktTypeIp4Udp = 47,         /* IPv4-UDF Packet */
  21048     bcmFieldPktTypeIp4Icmp = 48,        /* IPv4-ICMP Packet */
  21049     bcmFieldPktTypeIp4Igmp = 49,        /* IPv4-IGMP Packet */
  21050     bcmFieldPktTypeIp4IpWithExtra4Bytes = 50, /* IPv4 with Extra four bytes Packet */
  21051     bcmFieldPktTypeIp4Sctp = 51,        /* IPv4 SCTP Packet */
  21052     bcmFieldPktTypeIp4MplsInIpAny = 52, /* Any MPLS in IPv4 Packet */
  21053     bcmFieldPktTypeIp4MplsInIpWithOneLabel = 53, /* MPLS with one label in IPv4 Packet */
  21054     bcmFieldPktTypeIp4MplsInIpWithTwoLabel = 54, /* MPLS with two label in IPv4 Packet */
  21055     bcmFieldPktTypeIp4MplsInIpWithThreeLabel = 55, /* MPLS with three label in IPv4 Packet */
  21056     bcmFieldPktTypeIp4MplsInIpWithFourLabel = 56, /* MPLS with four label in IPv4 Packet */
  21057     bcmFieldPktTypeIp4MplsInIpWithAnyCw = 57, /* Any MPLS with CW label in IPv4 Packet */
  21058     bcmFieldPktTypeIp4MplsInIpWithOneLabelAndCw = 58, /* MPLS with one label CW in IPv4 Packet */
  21059     bcmFieldPktTypeIp4MplsInIpWithTwoLabelAndCw = 59, /* MPLS with two label CW in IPv4 Packet */
  21060     bcmFieldPktTypeIp4MplsInIpWithThreeLabelAndCw = 60, /* MPLS with three label CW in IPv4
  21061                                            Packet */
  21062     bcmFieldPktTypeIp4MplsInIpWithFourLabelAndCw = 61, /* MPLS with four label CW in IPv4
  21063                                            Packet */
  21064     bcmFieldPktTypeIp6Not = 62,         /* Non-IPv6 Packet */
  21065     bcmFieldPktTypeIp6Any = 63,         /* Any IPv6 Packet */
  21066     bcmFieldPktTypeIp6Nsh = 64,         /* NSH Over IPv6 Packet */
  21067     bcmFieldPktTypeIp6GpeNsh = 65,      /* GPE-NSH Over IPv6 Packet */
  21068     bcmFieldPktTypeIp6Gre = 66,         /* GRE Over IPv6 Packet */
  21069     bcmFieldPktTypeIp6Bfd = 67,         /* BFD Over IPv6 Packet */
  21070     bcmFieldPktTypeIp6Vxlan = 68,       /* VXLAN Over IPv6 Packet */
  21071     bcmFieldPktTypeIp6Gpe = 69,         /* GPE Over IPv6 Packet */
  21072     bcmFieldPktTypeIp6GeneveNsh = 70,   /* GENEVE-NSH Over IPv6 Packet */
  21073     bcmFieldPktTypeIp61588Udp = 71,     /* 1588 UDF Packet over IPv6 */
  21074     bcmFieldPktTypeIp6VxlanFlex = 72,   /* VXLAN-Flex Over IPv6 Packet */
  21075     bcmFieldPktTypeIp6IPinIP = 73,      /* IPv6 IP-IN-IP Packet */
  21076     bcmFieldPktTypeIp6IPinGre = 74,     /* IPv6 IP in GRE */
  21077     bcmFieldPktTypeIp6Nvgre = 75,       /* IPv6 NVGRE Packet */
  21078     bcmFieldPktTypeIp6Geneve = 76,      /* IPv6 GENEVE Packet */
  21079     bcmFieldPktTypeIp6Gue = 77,         /* IPv6 GUE Packet */
  21080     bcmFieldPktTypeIp6Tcp = 78,         /* IPv6 TCP Packet */
  21081     bcmFieldPktTypeIp6Udp = 79,         /* IPv6 UDF Packet */
  21082     bcmFieldPktTypeIp6Icmp = 80,        /* IPv6 ICMP Packet */
  21083     bcmFieldPktTypeIp6Igmp = 81,        /* IPv6 IGMP Packet */
  21084     bcmFieldPktTypeIp6IpWithExtra4Bytes = 82, /* IPv6 with Extra four Bytes Packet */
  21085     bcmFieldPktTypeIp6Sctp = 83,        /* IPv6 SCTP Packet */
  21086     bcmFieldPktTypeIp6MplsInIpAny = 84, /* Any MPLS in IPv6 Packet */
  21087     bcmFieldPktTypeIp6MplsInIpWithOneLabel = 85, /* MPLS with one label in IPv6 Packet */
  21088     bcmFieldPktTypeIp6MplsInIpWithTwoLabel = 86, /* MPLS with two labels in IPv6 Packet */
  21089     bcmFieldPktTypeIp6MplsInIpWithThreeLabel = 87, /* MPLS with three labels in IPv6 Packet */
  21090     bcmFieldPktTypeIp6MplsInIpWithFourLabel = 88, /* MPLS with four labels in IPv6 Packet */
  21091     bcmFieldPktTypeIp6MplsInIpWithAnyCw = 89, /* Any MPLS with CW Label in IPv6 Packet */
  21092     bcmFieldPktTypeIp6MplsInIpWithOneLabelAndCw = 90, /* MPLS with one label CW in IPv6 Packet */
  21093     bcmFieldPktTypeIp6MplsInIpWithTwoLabelAndCw = 91, /* MPLS with two label CW in IPv6 Packet */
  21094     bcmFieldPktTypeIp6MplsInIpWithThreeLabelAndCw = 92, /* MPLS with three label CW in IPv6
  21095                                            Packet */
  21096     bcmFieldPktTypeIp6MplsInIpWithFourLabelAndCw = 93, /* MPLS with four labels in IPv6 Packet */
  21097     bcmFieldPktTypeNshOverMplsThreeLabel = 94, /* NSH Over MPLS with three labels
  21098                                            Packet */
  21099     bcmFieldPktTypeIpv4UdpINT = 95,     /* INT (Inband-Telemetry) packet type
  21100                                            over IPv4-UDP. */
  21101     bcmFieldPktTypeIpv6UdpINT = 96,     /* INT (Inband-Telemetry) packet type
  21102                                            over IPv6-UDP. */
  21103     bcmFieldPktTypeUdpINT = 97,         /* INT (Inband-Telemtry) Packet over any
  21104                                            IP-UDP packet */
  21105     bcmFieldPktTypeIpv4IOAM = 98,       /* IPv4 IOAM (Inband-OAM) Packet */
  21106     bcmFieldPktTypeIpv6IOAM = 99,       /* IPv6 IOAM (Inband-OAM) Packet */
  21107     bcmFieldPktTypeIOAM = 100,          /* IOAM (Inband-OAM) Packet over any IP
  21108                                            Packet */
  21109     bcmFieldPktTypeIpv4TcpINT = 101,    /* INT (Inband-Telemetry) packet type
  21110                                            over IPv4-TCP. */
  21111     bcmFieldPktTypeIpv6TcpINT = 102,    /* INT (Inband-Telemetry) packet type
  21112                                            over IPv6-TCP. */
  21113     bcmFieldPktTypeTcpINT = 103,        /* INT (Inband-Telemtry) Packet over
  21114                                            IP-TCP packet */
  21115     bcmFieldPktTypeLastCount = 104      /* Not in use - Last Count */
  21116 } bcm_field_pkt_type_t;
  21117 
  21118 #define BCM_FIELD_PKT_TYPE \
  21119 { \
  21120     "MplsNot", \
  21121     "MplsAny", \
  21122     "MplsOneLabel", \
  21123     "MplsTwoLabel", \
  21124     "MplsThreeLabel", \
  21125     "MplsFourLabel", \
  21126     "MplsFiveLabel", \
  21127     "MplsSixLabel", \
  21128     "MplsSevenLabel", \
  21129     "MplsMoreThanSevenLabel", \
  21130     "FCoENot", \
  21131     "FCoEAny", \
  21132     "FCoEVft", \
  21133     "FCoEEncap", \
  21134     "FCoEIfr", \
  21135     "FCoEStd", \
  21136     "FCoEVftStd", \
  21137     "FCoEEncapStd", \
  21138     "FCoEIfrStd", \
  21139     "FCoEFip", \
  21140     "1588", \
  21141     "Arp", \
  21142     "Rarp", \
  21143     "UnknownEtherType", \
  21144     "Mim", \
  21145     "Oam", \
  21146     "Cnm", \
  21147     "NshOverL2", \
  21148     "NshOverMplsOneLabel", \
  21149     "NshOverMplsTwoLabel", \
  21150     "Ip4Not", \
  21151     "Ip4Any", \
  21152     "Ip4Nsh", \
  21153     "Ip4GpeNsh", \
  21154     "Ip4Gre", \
  21155     "Ip4Bfd", \
  21156     "Ip4Vxlan", \
  21157     "Ip4Gpe", \
  21158     "Ip4GeneveNsh", \
  21159     "Ip41588Udp", \
  21160     "Ip4VxlanFlex", \
  21161     "Ip4IPinIP", \
  21162     "Ip4IPinGre", \
  21163     "Ip4Nvgre", \
  21164     "Ip4Geneve", \
  21165     "Ip4Gue", \
  21166     "Ip4Tcp", \
  21167     "Ip4Udp", \
  21168     "Ip4Icmp", \
  21169     "Ip4Igmp", \
  21170     "Ip4IpWithExtra4Bytes", \
  21171     "Ip4Sctp", \
  21172     "Ip4MplsInIpAny", \
  21173     "Ip4MplsInIpWithOneLabel", \
  21174     "Ip4MplsInIpWithTwoLabel", \
  21175     "Ip4MplsInIpWithThreeLabel", \
  21176     "Ip4MplsInIpWithFourLabel", \
  21177     "Ip4MplsInIpWithAnyCw", \
  21178     "Ip4MplsInIpWithOneLabelAndCw", \
  21179     "Ip4MplsInIpWithTwoLabelAndCw", \
  21180     "Ip4MplsInIpWithThreeLabelAndCw", \
  21181     "Ip4MplsInIpWithFourLabelAndCw", \
  21182     "Ip6Not", \
  21183     "Ip6Any", \
  21184     "Ip6Nsh", \
  21185     "Ip6GpeNsh", \
  21186     "Ip6Gre", \
  21187     "Ip6Bfd", \
  21188     "Ip6Vxlan", \
  21189     "Ip6Gpe", \
  21190     "Ip6GeneveNsh", \
  21191     "Ip61588Udp", \
  21192     "Ip6VxlanFlex", \
  21193     "Ip6IPinIP", \
  21194     "Ip6IPinGre", \
  21195     "Ip6Nvgre", \
  21196     "Ip6Geneve", \
  21197     "Ip6Gue", \
  21198     "Ip6Tcp", \
  21199     "Ip6Udp", \
  21200     "Ip6Icmp", \
  21201     "Ip6Igmp", \
  21202     "Ip6IpWithExtra4Bytes", \
  21203     "Ip6Sctp", \
  21204     "Ip6MplsInIpAny", \
  21205     "Ip6MplsInIpWithOneLabel", \
  21206     "Ip6MplsInIpWithTwoLabel", \
  21207     "Ip6MplsInIpWithThreeLabel", \
  21208     "Ip6MplsInIpWithFourLabel", \
  21209     "Ip6MplsInIpWithAnyCw", \
  21210     "Ip6MplsInIpWithOneLabelAndCw", \
  21211     "Ip6MplsInIpWithTwoLabelAndCw", \
  21212     "Ip6MplsInIpWithThreeLabelAndCw", \
  21213     "Ip6MplsInIpWithFourLabelAndCw", \
  21214     "NshOverMplsThreeLabel", \
  21215     "Ipv4UdpINT", \
  21216     "Ipv6UdpINT", \
  21217     "UdpINT", \
  21218     "Ipv4IOAM", \
  21219     "Ipv6IOAM", \
  21220     "IOAM", \
  21221     "Ipv4TcpINT", \
  21222     "Ipv6TcpINT", \
  21223     "TcpINT"  \
  21224 }
  21225 
  21226 #ifndef BCM_HIDE_DISPATCHABLE
  21227 
  21228 /* Add Packet type field qualification to a field entry. */
  21229 extern int bcm_field_qualify_PktType(
  21230     int unit, 
  21231     bcm_field_entry_t entry, 
  21232     bcm_field_pkt_type_t type);
  21233 
  21234 /* Get Packet type field qualification from a field entry. */
  21235 extern int bcm_field_qualify_PktType_get(
  21236     int unit, 
  21237     bcm_field_entry_t entry, 
  21238     bcm_field_pkt_type_t *type);
  21239 
  21240 /* 
  21241  * Add MPLS Control word present status field qualification to a field
  21242  * entry.
  21243  */
  21244 extern int bcm_field_qualify_MplsCwPresent(
  21245     int unit, 
  21246     bcm_field_entry_t entry, 
  21247     uint8 data, 
  21248     uint8 mask);
  21249 
  21250 /* 
  21251  * Get MPLS Control word present status field qualification from a field
  21252  * entry.
  21253  */
  21254 extern int bcm_field_qualify_MplsCwPresent_get(
  21255     int unit, 
  21256     bcm_field_entry_t entry, 
  21257     uint8 *data, 
  21258     uint8 *mask);
  21259 
  21260 /* 
  21261  * Add MPLS Multicast ethertype present status field qualification to a
  21262  * field entry.
  21263  */
  21264 extern int bcm_field_qualify_MplsMcastEthertypePresent(
  21265     int unit, 
  21266     bcm_field_entry_t entry, 
  21267     uint8 data, 
  21268     uint8 mask);
  21269 
  21270 /* 
  21271  * Get MPLS Multicast ethertype present status field qualification from a
  21272  * field entry.
  21273  */
  21274 extern int bcm_field_qualify_MplsMcastEthertypePresent_get(
  21275     int unit, 
  21276     bcm_field_entry_t entry, 
  21277     uint8 *data, 
  21278     uint8 *mask);
  21279 
  21280 #endif /* BCM_HIDE_DISPATCHABLE */
  21281 
  21282 /* bcm_field_ip_option_hdr_type_e */
  21283 typedef enum bcm_field_ip_option_hdr_type_e {
  21284     bcmFieldIpOptionHdrTypeAH = 0,      /* Authentication Header type */
  21285     bcmFieldIpOptionHdrTypeESP = 1,     /* Encapsulating Security Payload type */
  21286     bcmFieldIpOptionHdrTypeWESP = 2,    /* Wrapped ESP for traffic visibility
  21287                                            type */
  21288     bcmFieldIpOptionHdrTypeAHESP = 3,   /* Authentication Header and
  21289                                            Encapsulating Security Payload type */
  21290     bcmFieldIpOptionHdrTypeAHWESP = 4,  /* Authentication Header and Wrapped ESP
  21291                                            type */
  21292     bcmFieldIpOptionHdrTypeGeneric = 5, /* Generic type */
  21293     bcmFieldIpOptionHdrTypeFrag = 6,    /* Fragment type */
  21294     bcmFieldIpOptionHdrTypeGenericGeneric = 7, /* Generic over Generic type */
  21295     bcmFieldIpOptionHdrTypeGenericFrag = 8, /* Generic and Fragment type */
  21296     bcmFieldIpOptionHdrTypeGenericAH = 9, /* Generic and AH type */
  21297     bcmFieldIpOptionHdrTypeGenericESP = 10, /* Generic and ESP type */
  21298     bcmFieldIpOptionHdrTypeGenericWESP = 11, /* Generic and WESP type */
  21299     bcmFieldIpOptionHdrTypeFragAH = 12, /* Fragment and AH type */
  21300     bcmFieldIpOptionHdrTypeFragESP = 13, /* Fragment and ESP type */
  21301     bcmFieldIpOptionHdrTypeFragWESP = 14, /* Fragment and WESP type */
  21302     bcmFieldIpOptionHdrTypeLastCount = 15 /* Last count */
  21303 } bcm_field_ip_option_hdr_type_t;
  21304 
  21305 #define BCM_FIELD_IP_OPTION_HDR_TYPE \
  21306 { \
  21307     "AH", \
  21308     "ESP", \
  21309     "WESP", \
  21310     "AHESP", \
  21311     "AHWESP", \
  21312     "Generic", \
  21313     "Frag", \
  21314     "GenericGeneric", \
  21315     "GenericFrag", \
  21316     "GenericAH", \
  21317     "GenericESP", \
  21318     "GenericWESP", \
  21319     "FragAH", \
  21320     "FragESP", \
  21321     "FragWESP"  \
  21322 }
  21323 
  21324 #ifndef BCM_HIDE_DISPATCHABLE
  21325 
  21326 /* Add IPv4 option header type field qualification to a field entry. */
  21327 extern int bcm_field_qualify_Ipv4OptionHdrType(
  21328     int unit, 
  21329     bcm_field_entry_t entry, 
  21330     bcm_field_ip_option_hdr_type_t type);
  21331 
  21332 /* Get IPv4 option header type field qualification from a field entry. */
  21333 extern int bcm_field_qualify_Ipv4OptionHdrType_get(
  21334     int unit, 
  21335     bcm_field_entry_t entry, 
  21336     bcm_field_ip_option_hdr_type_t *type);
  21337 
  21338 /* Add IPv6 Extension header type field qualification to a field entry. */
  21339 extern int bcm_field_qualify_Ipv6ExtensionHdrType(
  21340     int unit, 
  21341     bcm_field_entry_t entry, 
  21342     bcm_field_ip_option_hdr_type_t type);
  21343 
  21344 /* Get IPv6 Extension header type field qualification from a field entry. */
  21345 extern int bcm_field_qualify_Ipv6ExtensionHdrType_get(
  21346     int unit, 
  21347     bcm_field_entry_t entry, 
  21348     bcm_field_ip_option_hdr_type_t *type);
  21349 
  21350 /* Overlay Vlan Tag Format */
  21351 extern int bcm_field_qualify_OverlayVlanFormat(
  21352     int unit, 
  21353     bcm_field_entry_t entry, 
  21354     uint8 data, 
  21355     uint8 mask);
  21356 
  21357 /* 
  21358  * Get match criteria for bcmFieldQualifyOverlayVlanFormat
  21359  *                qualifier from the field entry.
  21360  */
  21361 extern int bcm_field_qualify_OverlayVlanFormat_get(
  21362     int unit, 
  21363     bcm_field_entry_t entry, 
  21364     uint8 *data, 
  21365     uint8 *mask);
  21366 
  21367 /* Add Overlay L2 Packet type field qualification to a field entry. */
  21368 extern int bcm_field_qualify_OverlayL2PktType(
  21369     int unit, 
  21370     bcm_field_entry_t entry, 
  21371     bcm_field_l2_pkt_type_t type);
  21372 
  21373 /* Get Overlay L2 Packet type field qualification from a field entry. */
  21374 extern int bcm_field_qualify_OverlayL2PktType_get(
  21375     int unit, 
  21376     bcm_field_entry_t entry, 
  21377     bcm_field_l2_pkt_type_t *type);
  21378 
  21379 /* Add Overlay Packet type field qualification to a field entry. */
  21380 extern int bcm_field_qualify_OverlayPktType(
  21381     int unit, 
  21382     bcm_field_entry_t entry, 
  21383     bcm_field_pkt_type_t type);
  21384 
  21385 /* Get Overlay Packet type field qualification from a field entry. */
  21386 extern int bcm_field_qualify_OverlayPktType_get(
  21387     int unit, 
  21388     bcm_field_entry_t entry, 
  21389     bcm_field_pkt_type_t *type);
  21390 
  21391 /* 
  21392  * Add Overlay IPv4 option header type field qualification to a field
  21393  * entry.
  21394  */
  21395 extern int bcm_field_qualify_OverlayIpv4OptionHdrType(
  21396     int unit, 
  21397     bcm_field_entry_t entry, 
  21398     bcm_field_ip_option_hdr_type_t type);
  21399 
  21400 /* 
  21401  * Get Overlay IPv4 option header type field qualification from a field
  21402  * entry.
  21403  */
  21404 extern int bcm_field_qualify_OverlayIpv4OptionHdrType_get(
  21405     int unit, 
  21406     bcm_field_entry_t entry, 
  21407     bcm_field_ip_option_hdr_type_t *type);
  21408 
  21409 /* 
  21410  * Add Overlay IPv6 Extension header type field qualification to a field
  21411  * entry.
  21412  */
  21413 extern int bcm_field_qualify_OverlayIpv6ExtensionHdrType(
  21414     int unit, 
  21415     bcm_field_entry_t entry, 
  21416     bcm_field_ip_option_hdr_type_t type);
  21417 
  21418 /* 
  21419  * Get Overlay IPv6 Extension header type field qualification from a
  21420  * field entry.
  21421  */
  21422 extern int bcm_field_qualify_OverlayIpv6ExtensionHdrType_get(
  21423     int unit, 
  21424     bcm_field_entry_t entry, 
  21425     bcm_field_ip_option_hdr_type_t *type);
  21426 
  21427 /* Add Front panel packet field qualification to a field entry. */
  21428 extern int bcm_field_qualify_FrontPanelPkt(
  21429     int unit, 
  21430     bcm_field_entry_t entry, 
  21431     uint8 data, 
  21432     uint8 mask);
  21433 
  21434 /* Get Front Panel packet field qualification from a field entry. */
  21435 extern int bcm_field_qualify_FrontPanelPkt_get(
  21436     int unit, 
  21437     bcm_field_entry_t entry, 
  21438     uint8 *data, 
  21439     uint8 *mask);
  21440 
  21441 #endif /* BCM_HIDE_DISPATCHABLE */
  21442 
  21443 /* bcm_field_higig_proxy_tunnel_type_e */
  21444 typedef enum bcm_field_higig_proxy_tunnel_type_e {
  21445     bcmFieldHiGigProxyTunnelTypeAny = 0, /* HiGig Proxy Tunnel Any. */
  21446     bcmFieldHiGigProxyTunnelTypeVxlan = 1, /* HiGig Proxy on VXLAN tunnel. */
  21447     bcmFieldHiGigProxyTunnelTypeL2Gre = 2, /* HiGig Proxy on L2GRE tunnel. */
  21448     bcmFieldHiGigProxyTunnelTypeMim = 3, /* HiGig Proxy on MIM tunnel. */
  21449     bcmFieldHiGigProxyTunnelTypeLastCount = 4 /* Always Last. Not a usable value. */
  21450 } bcm_field_higig_proxy_tunnel_type_t;
  21451 
  21452 #define BCM_FIELD_HIGIG_PROXY_TUNNEL_TYPE \
  21453 { \
  21454     "Any", \
  21455     "Vxlan", \
  21456     "L2Gre", \
  21457     "Mim"  \
  21458 }
  21459 
  21460 #ifndef BCM_HIDE_DISPATCHABLE
  21461 
  21462 /* Add HiGig Proxy tunnel type field qualification to a field entry. */
  21463 extern int bcm_field_qualify_HiGigProxyTunnelType(
  21464     int unit, 
  21465     bcm_field_entry_t entry, 
  21466     bcm_field_higig_proxy_tunnel_type_t type);
  21467 
  21468 /* Get HiGig Proxy tunnel type field qualification from a field entry. */
  21469 extern int bcm_field_qualify_HiGigProxyTunnelType_get(
  21470     int unit, 
  21471     bcm_field_entry_t entry, 
  21472     bcm_field_higig_proxy_tunnel_type_t *type);
  21473 
  21474 /* Add to match on IPMC Ipv4 packet qualification to a field entry. */
  21475 extern int bcm_field_qualify_IpmcV4Pkt(
  21476     int unit, 
  21477     bcm_field_entry_t entry, 
  21478     uint8 data, 
  21479     uint8 mask);
  21480 
  21481 /* Get to match on IPMC Ipv4 packet qualification from a field entry. */
  21482 extern int bcm_field_qualify_IpmcV4Pkt_get(
  21483     int unit, 
  21484     bcm_field_entry_t entry, 
  21485     uint8 *data, 
  21486     uint8 *mask);
  21487 
  21488 /* Add to match on IPMC Ipv6 packet qualification to a field entry. */
  21489 extern int bcm_field_qualify_IpmcV6Pkt(
  21490     int unit, 
  21491     bcm_field_entry_t entry, 
  21492     uint8 data, 
  21493     uint8 mask);
  21494 
  21495 /* Get to match on IPMC Ipv6 packet qualification from a field entry. */
  21496 extern int bcm_field_qualify_IpmcV6Pkt_get(
  21497     int unit, 
  21498     bcm_field_entry_t entry, 
  21499     uint8 *data, 
  21500     uint8 *mask);
  21501 
  21502 /* 
  21503  * Add to match on Network tag (VnTag or Etag) multicast packet
  21504  * qualification to a field entry.
  21505  */
  21506 extern int bcm_field_qualify_NetworkTagMulticastPkt(
  21507     int unit, 
  21508     bcm_field_entry_t entry, 
  21509     uint8 data, 
  21510     uint8 mask);
  21511 
  21512 /* 
  21513  * Get to match on Network tag (VnTag or Etag) multicast packet
  21514  * qualification from a field entry.
  21515  */
  21516 extern int bcm_field_qualify_NetworkTagMulticastPkt_get(
  21517     int unit, 
  21518     bcm_field_entry_t entry, 
  21519     uint8 *data, 
  21520     uint8 *mask);
  21521 
  21522 /* 
  21523  * Add to match on IP packet with zero TTL qualification to a field
  21524  * entry.
  21525  */
  21526 extern int bcm_field_qualify_IpTtlZeroPkt(
  21527     int unit, 
  21528     bcm_field_entry_t entry, 
  21529     uint8 data, 
  21530     uint8 mask);
  21531 
  21532 /* 
  21533  * Get to match on IP packet with TTL zero qualification from a field
  21534  * entry.
  21535  */
  21536 extern int bcm_field_qualify_IpTtlZeroPkt_get(
  21537     int unit, 
  21538     bcm_field_entry_t entry, 
  21539     uint8 *data, 
  21540     uint8 *mask);
  21541 
  21542 /* Add to match on IP fragment packet qualification to a field entry. */
  21543 extern int bcm_field_qualify_IpFragPkt(
  21544     int unit, 
  21545     bcm_field_entry_t entry, 
  21546     uint8 data, 
  21547     uint8 mask);
  21548 
  21549 /* Get to match on IP Fragment packet qualification from a field entry. */
  21550 extern int bcm_field_qualify_IpFragPkt_get(
  21551     int unit, 
  21552     bcm_field_entry_t entry, 
  21553     uint8 *data, 
  21554     uint8 *mask);
  21555 
  21556 /* 
  21557  * Add to match on outer priority tagged packet qualification to a field
  21558  * entry.
  21559  */
  21560 extern int bcm_field_qualify_OuterPriTaggedPkt(
  21561     int unit, 
  21562     bcm_field_entry_t entry, 
  21563     uint8 data, 
  21564     uint8 mask);
  21565 
  21566 /* 
  21567  * Get to match on outer priority tagged packet qualification from a
  21568  * field entry.
  21569  */
  21570 extern int bcm_field_qualify_OuterPriTaggedPkt_get(
  21571     int unit, 
  21572     bcm_field_entry_t entry, 
  21573     uint8 *data, 
  21574     uint8 *mask);
  21575 
  21576 /* 
  21577  * Add to match on IP in IP packet with zero TTL qualification to a field
  21578  * entry.
  21579  */
  21580 extern int bcm_field_qualify_IpInIpPkt(
  21581     int unit, 
  21582     bcm_field_entry_t entry, 
  21583     uint8 data, 
  21584     uint8 mask);
  21585 
  21586 /* Get to match on IP in IP packet qualification from a field entry. */
  21587 extern int bcm_field_qualify_IpInIpPkt_get(
  21588     int unit, 
  21589     bcm_field_entry_t entry, 
  21590     uint8 *data, 
  21591     uint8 *mask);
  21592 
  21593 /* 
  21594  * Add to match on IP packet with checksum OK qualification to a field
  21595  * entry.
  21596  */
  21597 extern int bcm_field_qualify_IpChecksumOkPkt(
  21598     int unit, 
  21599     bcm_field_entry_t entry, 
  21600     uint8 data, 
  21601     uint8 mask);
  21602 
  21603 /* 
  21604  * Get to match on IP packet with checksum OK qualification from a field
  21605  * entry.
  21606  */
  21607 extern int bcm_field_qualify_IpChecksumOkPkt_get(
  21608     int unit, 
  21609     bcm_field_entry_t entry, 
  21610     uint8 *data, 
  21611     uint8 *mask);
  21612 
  21613 /* 
  21614  * Add to match on PIM Bidirectional designated forwarding bit of the
  21615  * incoming packet qualification to a field entry.
  21616  */
  21617 extern int bcm_field_qualify_PimBidirDfStatus(
  21618     int unit, 
  21619     bcm_field_entry_t entry, 
  21620     uint8 data, 
  21621     uint8 mask);
  21622 
  21623 /* 
  21624  * Get to match on PIM Bidrectional designated forwarding bit of the
  21625  * incoming packet qualification from a field entry.
  21626  */
  21627 extern int bcm_field_qualify_PimBidirDfStatus_get(
  21628     int unit, 
  21629     bcm_field_entry_t entry, 
  21630     uint8 *data, 
  21631     uint8 *mask);
  21632 
  21633 #endif /* BCM_HIDE_DISPATCHABLE */
  21634 
  21635 /* bcm_field_interface_class_l2_type_e */
  21636 typedef enum bcm_field_interface_class_l2_type_e {
  21637     bcmFieldInterfaceClassL2TypeVlan = 0, /* Class ID is from VLAN. */
  21638     bcmFieldInterfaceClassL2TypeVfi = 1, /* Class ID is from VFI. */
  21639     bcmFieldInterfaceClassL2TypeLastCount = 2 /* Always Last. Not a usable value. */
  21640 } bcm_field_interface_class_l2_type_t;
  21641 
  21642 #define BCM_FIELD_INTERFACE_CLASS_L2_TYPE \
  21643 { \
  21644     "Vlan", \
  21645     "Vfi"  \
  21646 }
  21647 
  21648 #ifndef BCM_HIDE_DISPATCHABLE
  21649 
  21650 /* Add Interface Class L2 type field qualification to a field entry. */
  21651 extern int bcm_field_qualify_InterfaceClassL2Type(
  21652     int unit, 
  21653     bcm_field_entry_t entry, 
  21654     bcm_field_interface_class_l2_type_t type);
  21655 
  21656 /* Get Interface Class L2 type field qualification from a field entry. */
  21657 extern int bcm_field_qualify_InterfaceClassL2Type_get(
  21658     int unit, 
  21659     bcm_field_entry_t entry, 
  21660     bcm_field_interface_class_l2_type_t *type);
  21661 
  21662 /* 
  21663  * Add to match on INT (Inband-Telemetry) header version packet
  21664  * qualification to a field entry.
  21665  */
  21666 extern int bcm_field_qualify_IntPktVersionOne(
  21667     int unit, 
  21668     bcm_field_entry_t entry, 
  21669     uint8 data, 
  21670     uint8 mask);
  21671 
  21672 /* 
  21673  * Get to match on INT (Inband-Telemetry) header version one packet
  21674  * qualification from a field entry.
  21675  */
  21676 extern int bcm_field_qualify_IntPktVersionOne_get(
  21677     int unit, 
  21678     bcm_field_entry_t entry, 
  21679     uint8 *data, 
  21680     uint8 *mask);
  21681 
  21682 /* 
  21683  * Add to match on INT (Inband-Telemetry) header Overflow Bit packet
  21684  * qualification to a field entry.
  21685  */
  21686 extern int bcm_field_qualify_IntPktOverflowed(
  21687     int unit, 
  21688     bcm_field_entry_t entry, 
  21689     uint8 data, 
  21690     uint8 mask);
  21691 
  21692 /* 
  21693  * Get to match on INT (Inband-Telemetry) header Overflow Bit packet
  21694  * qualification from a field entry.
  21695  */
  21696 extern int bcm_field_qualify_IntPktOverflowed_get(
  21697     int unit, 
  21698     bcm_field_entry_t entry, 
  21699     uint8 *data, 
  21700     uint8 *mask);
  21701 
  21702 /* 
  21703  * Add to match on INT (Inband-Telemetry) Valid Length Check packet
  21704  * qualification to a field entry.
  21705  */
  21706 extern int bcm_field_qualify_IntPktLengthValid(
  21707     int unit, 
  21708     bcm_field_entry_t entry, 
  21709     uint8 data, 
  21710     uint8 mask);
  21711 
  21712 /* 
  21713  * Get to match on INT (Inband-Telemetry) Valid Length Check packet
  21714  * qualification from a field entry.
  21715  */
  21716 extern int bcm_field_qualify_IntPktLengthValid_get(
  21717     int unit, 
  21718     bcm_field_entry_t entry, 
  21719     uint8 *data, 
  21720     uint8 *mask);
  21721 
  21722 #endif /* BCM_HIDE_DISPATCHABLE */
  21723 
  21724 /* bcm_field_int_pkt_type_e */
  21725 typedef enum bcm_field_int_pkt_type_e {
  21726     bcmFieldIntPktTypeProbeReply = 0,   /* INT Probe Reply. */
  21727     bcmFieldIntPktTypeProbeRequest = 1, /* INT Probe Request. */
  21728     bcmFieldIntPktTypeLastCount = 2     /* Always Last. Not a usable value. */
  21729 } bcm_field_int_pkt_type_t;
  21730 
  21731 #define BCM_FIELD_INT_PKT_TYPE \
  21732 { \
  21733     "ProbeReply", \
  21734     "ProbeRequest"  \
  21735 }
  21736 
  21737 #ifndef BCM_HIDE_DISPATCHABLE
  21738 
  21739 /* 
  21740  * Add INT (Inband-Telemetry) Packet type field qualification to a field
  21741  * entry.
  21742  */
  21743 extern int bcm_field_qualify_IntPktType(
  21744     int unit, 
  21745     bcm_field_entry_t entry, 
  21746     bcm_field_int_pkt_type_t type);
  21747 
  21748 /* 
  21749  * Get INT (Inband-Telemetry) Packet type field qualification from a
  21750  * field entry.
  21751  */
  21752 extern int bcm_field_qualify_IntPktType_get(
  21753     int unit, 
  21754     bcm_field_entry_t entry, 
  21755     bcm_field_int_pkt_type_t *type);
  21756 
  21757 /* 
  21758  * Add to match on INT (Inband-Telemetry) Maximum Hop Limit Check packet
  21759  * qualification to a field entry.
  21760  */
  21761 extern int bcm_field_qualify_IntPktFinalHop(
  21762     int unit, 
  21763     bcm_field_entry_t entry, 
  21764     uint8 data, 
  21765     uint8 mask);
  21766 
  21767 /* 
  21768  * Get to match on INT (Inband-Telemetry) Max Hop Limit Check packet
  21769  * qualification from a field entry.
  21770  */
  21771 extern int bcm_field_qualify_IntPktFinalHop_get(
  21772     int unit, 
  21773     bcm_field_entry_t entry, 
  21774     uint8 *data, 
  21775     uint8 *mask);
  21776 
  21777 #endif /* BCM_HIDE_DISPATCHABLE */
  21778 
  21779 /* Field Qualifier TunnelSubType (for bcm_field_qualify_TunnelSubType). */
  21780 typedef enum bcm_field_TunnelSubType_e {
  21781     bcmFieldTunnelSubTypeNshOverGpeWithL3Pyld = 0, /* NSH with L3 Payload Tunnel in GPE. */
  21782     bcmFieldTunnelSubTypeNshOverL2WithL3Pyld = 1, /* NSH with L3 Payload Tunnel in L2 */
  21783     bcmFieldTunnelSubTypeNshOverMplsWithL3Pyld = 2, /* NSH with L3 Payload Tunnel in MPLS */
  21784     bcmFieldTunnelSubTypeCount = 3      /* Always Last. Not a usable value. */
  21785 } bcm_field_TunnelSubType_t;
  21786 
  21787 #define BCM_FIELD_TUNNELSUBTYPE_STRINGS \
  21788 { \
  21789     "NshOverGpeWithL3Pyld", \
  21790     "NshOverL2WithL3Pyld", \
  21791     "NshOverMplsWithL3Pyld"  \
  21792 }
  21793 
  21794 #ifndef BCM_HIDE_DISPATCHABLE
  21795 
  21796 /* Add tunnel sub-type field qualification to a field entry. */
  21797 extern int bcm_field_qualify_TunnelSubType(
  21798     int unit, 
  21799     bcm_field_entry_t entry, 
  21800     bcm_field_TunnelSubType_t type);
  21801 
  21802 /* Get tunnel sub-type field qualification from a field entry. */
  21803 extern int bcm_field_qualify_TunnelSubType_get(
  21804     int unit, 
  21805     bcm_field_entry_t entry, 
  21806     bcm_field_TunnelSubType_t *type);
  21807 
  21808 #endif /* BCM_HIDE_DISPATCHABLE */
  21809 
  21810 /* PMF pass. */
  21811 typedef enum bcm_field_pmf_pass_e {
  21812     bcmFieldPmfPass0 = 0,       /* Pass-0 */
  21813     bcmFieldPmfPass1 = 1,       /* Pass-1 */
  21814     bcmFieldPmfPassCount = 2    /* nof pass. */
  21815 } bcm_field_pmf_pass_t;
  21816 
  21817 /* 
  21818  * Indicates the maximum number of context selection qualfiers which can
  21819  * be defined per single preselection entry
  21820  */
  21821 #define BCM_FIELD_MAX_NOF_CS_QUALIFIERS (32)       
  21822 
  21823 /* Preselector identifier structure. */
  21824 typedef struct bcm_field_presel_entry_id_s {
  21825     bcm_field_presel_t presel_id;   /* ID of the preselector entry. */
  21826     bcm_field_stage_t stage;        /* Preselection stage */
  21827 } bcm_field_presel_entry_id_t;
  21828 
  21829 /* Preselector qualifier data structure. */
  21830 typedef struct bcm_field_presel_qualify_data_s {
  21831     bcm_field_qualify_t qual_type;  /* Type of the qualifier. */
  21832     int qual_arg;                   /* Qualifier argument */
  21833     uint32 qual_value;              /* Value of the qualifier */
  21834     uint32 qual_mask;               /* Mask of the qualifier */
  21835 } bcm_field_presel_qualify_data_t;
  21836 
  21837 /* Preselector qualifier data structure. */
  21838 typedef struct bcm_field_presel_entry_data_s {
  21839     uint8 entry_valid;                  /* If set, the whole preselection entry
  21840                                            is set as valid. */
  21841     bcm_field_context_t context_id;     /* ID of the PMF context. */
  21842     uint32 nof_qualifiers;              /* Number of used qualifiers for CS. */
  21843     bcm_field_presel_qualify_data_t qual_data[BCM_FIELD_MAX_NOF_CS_QUALIFIERS]; /* Array of data of the used qualifiers. */
  21844 } bcm_field_presel_entry_data_t;
  21845 
  21846 #ifndef BCM_HIDE_DISPATCHABLE
  21847 
  21848 /* Add NSH Service Path ID qualification to a field entry. */
  21849 extern int bcm_field_qualify_NshServicePathId(
  21850     int unit, 
  21851     bcm_field_entry_t entry, 
  21852     uint32 data, 
  21853     uint32 mask);
  21854 
  21855 /* Get NSH Service Path ID qualification for a given field entry. */
  21856 extern int bcm_field_qualify_NshServicePathId_get(
  21857     int unit, 
  21858     bcm_field_entry_t entry, 
  21859     uint32 *data, 
  21860     uint32 *mask);
  21861 
  21862 /* Add NSH Service Index qualification to a field entry. */
  21863 extern int bcm_field_qualify_NshServiceIndex(
  21864     int unit, 
  21865     bcm_field_entry_t entry, 
  21866     uint32 data, 
  21867     uint32 mask);
  21868 
  21869 /* Get NSH Service Index qualification for a given field entry. */
  21870 extern int bcm_field_qualify_NshServiceIndex_get(
  21871     int unit, 
  21872     bcm_field_entry_t entry, 
  21873     uint32 *data, 
  21874     uint32 *mask);
  21875 
  21876 /* 
  21877  * Set match criteria for FieldQualifyRoeFrameType qualifier in the field
  21878  * entry.
  21879  */
  21880 extern int bcm_field_qualify_RoeFrameType(
  21881     int unit, 
  21882     bcm_field_entry_t entry, 
  21883     bcm_field_roe_frame_type_t data);
  21884 
  21885 /* 
  21886  * Get match criteria for FieldQualifyRoeFrameType qualifier from the
  21887  * field entry.
  21888  */
  21889 extern int bcm_field_qualify_RoeFrameType_get(
  21890     int unit, 
  21891     bcm_field_entry_t entry, 
  21892     bcm_field_roe_frame_type_t *data);
  21893 
  21894 #endif /* BCM_HIDE_DISPATCHABLE */
  21895 
  21896 /* Initialize the bcm_field_presel_entry_id_t structure. */
  21897 extern void bcm_field_presel_entry_id_info_init(
  21898     bcm_field_presel_entry_id_t *entry_id);
  21899 
  21900 /* Initialize the bcm_field_presel_entry_data_t structure. */
  21901 extern void bcm_field_presel_entry_data_info_init(
  21902     bcm_field_presel_entry_data_t *entry_data);
  21903 
  21904 #ifndef BCM_HIDE_DISPATCHABLE
  21905 
  21906 /* Set a preselector entity information. */
  21907 extern int bcm_field_presel_set(
  21908     int unit, 
  21909     uint32 flags, 
  21910     bcm_field_presel_entry_id_t *entry_id, 
  21911     bcm_field_presel_entry_data_t *entry_data);
  21912 
  21913 /* Get a preselector entity information. */
  21914 extern int bcm_field_presel_get(
  21915     int unit, 
  21916     uint32 flags, 
  21917     bcm_field_presel_entry_id_t *entry_id, 
  21918     bcm_field_presel_entry_data_t *entry_data);
  21919 
  21920 /* 
  21921  * API to match on BFD Good packet (Good here represents the valid TTL
  21922  * range for 1-hop and M-hop).
  21923  */
  21924 extern int bcm_field_qualify_BfdGoodPkt(
  21925     int unit, 
  21926     bcm_field_entry_t entry, 
  21927     uint8 data, 
  21928     uint8 mask);
  21929 
  21930 /* 
  21931  * Retrieve the match criteria fields for BfdGoodPkt qualifier associated
  21932  * to a given field entry.
  21933  */
  21934 extern int bcm_field_qualify_BfdGoodPkt_get(
  21935     int unit, 
  21936     bcm_field_entry_t entry, 
  21937     uint8 *data, 
  21938     uint8 *mask);
  21939 
  21940 /* 
  21941  * API to match whether the incoming BFD packet has destination loopback
  21942  * IP Address.
  21943  */
  21944 extern int bcm_field_qualify_BfdPktWithDstIpLoopbackAddr(
  21945     int unit, 
  21946     bcm_field_entry_t entry, 
  21947     uint8 data, 
  21948     uint8 mask);
  21949 
  21950 /* 
  21951  * Retrieve the match criteria fields for BfdPktWithDstIpLoopbackAddr
  21952  * qualifier associated to a given field entry.
  21953  */
  21954 extern int bcm_field_qualify_BfdPktWithDstIpLoopbackAddr_get(
  21955     int unit, 
  21956     bcm_field_entry_t entry, 
  21957     uint8 *data, 
  21958     uint8 *mask);
  21959 
  21960 /* 
  21961  * API to match on MPLS Control Packet (MPLS packet with VCCV_1/2/3/4 and
  21962  * [LSP]/GAL/G-ACH).
  21963  */
  21964 extern int bcm_field_qualify_MplsControlPkt(
  21965     int unit, 
  21966     bcm_field_entry_t entry, 
  21967     uint8 data, 
  21968     uint8 mask);
  21969 
  21970 /* 
  21971  * Retrieve the match criteria fields for MplsControlPkt qualifier
  21972  * associated to a given field entry.
  21973  */
  21974 extern int bcm_field_qualify_MplsControlPkt_get(
  21975     int unit, 
  21976     bcm_field_entry_t entry, 
  21977     uint8 *data, 
  21978     uint8 *mask);
  21979 
  21980 /* 
  21981  * Get match criteria for bcmFieldQualifyIpTunnelTtlClassZero
  21982  *             qualifier from the field entry.
  21983  */
  21984 extern int bcm_field_qualify_IpTunnelTtlClassZero_get(
  21985     int unit, 
  21986     bcm_field_entry_t entry, 
  21987     bcm_class_t *data, 
  21988     bcm_class_t *mask);
  21989 
  21990 /* 
  21991  * Configure match criteria for bcmFieldQualifyIpTunnelTtl
  21992  *                 qualifier from the field entry.
  21993  */
  21994 extern int bcm_field_qualify_IpTunnelTtl(
  21995     int unit, 
  21996     bcm_field_entry_t entry, 
  21997     uint8 data, 
  21998     uint8 mask);
  21999 
  22000 /* 
  22001  * Get match criteria for bcmFieldQualifyIpTunnelTtl
  22002  *                 qualifier from the field entry.
  22003  */
  22004 extern int bcm_field_qualify_IpTunnelTtl_get(
  22005     int unit, 
  22006     bcm_field_entry_t entry, 
  22007     uint8 *data, 
  22008     uint8 *mask);
  22009 
  22010 /* To Qualify on Class identifier derived from MPLS label 1. */
  22011 extern int bcm_field_qualify_InterfaceClassMplsLookup1(
  22012     int unit, 
  22013     bcm_field_entry_t entry, 
  22014     uint16 data, 
  22015     uint16 mask);
  22016 
  22017 /* 
  22018  * To get the qualifies inputs on Class identifier derived from MPLS
  22019  * label 1.
  22020  */
  22021 extern int bcm_field_qualify_InterfaceClassMplsLookup1_get(
  22022     int unit, 
  22023     bcm_field_entry_t entry, 
  22024     uint16 *data, 
  22025     uint16 *mask);
  22026 
  22027 /* To Qualify on Class identifier derived from MPLS label 2. */
  22028 extern int bcm_field_qualify_InterfaceClassMplsLookup2(
  22029     int unit, 
  22030     bcm_field_entry_t entry, 
  22031     uint16 data, 
  22032     uint16 mask);
  22033 
  22034 /* 
  22035  * To get the qualifies inputs on Class identifier derived from MPLS
  22036  * label 2.
  22037  */
  22038 extern int bcm_field_qualify_InterfaceClassMplsLookup2_get(
  22039     int unit, 
  22040     bcm_field_entry_t entry, 
  22041     uint16 *data, 
  22042     uint16 *mask);
  22043 
  22044 /* To Qualify on Class identifier derived from MPLS label 3. */
  22045 extern int bcm_field_qualify_InterfaceClassMplsLookup3(
  22046     int unit, 
  22047     bcm_field_entry_t entry, 
  22048     uint16 data, 
  22049     uint16 mask);
  22050 
  22051 /* 
  22052  * To get the qualifies inputs on Class identifier derived from MPLS
  22053  * label 3.
  22054  */
  22055 extern int bcm_field_qualify_InterfaceClassMplsLookup3_get(
  22056     int unit, 
  22057     bcm_field_entry_t entry, 
  22058     uint16 *data, 
  22059     uint16 *mask);
  22060 
  22061 /* To Qualify on Class identifier derived from L3 Tunnel. */
  22062 extern int bcm_field_qualify_InterfaceClassL3Tunnel(
  22063     int unit, 
  22064     bcm_field_entry_t entry, 
  22065     uint16 data, 
  22066     uint16 mask);
  22067 
  22068 /* 
  22069  * To get the qualifies inputs on Class identifier derived from L3
  22070  * Tunnel.
  22071  */
  22072 extern int bcm_field_qualify_InterfaceClassL3Tunnel_get(
  22073     int unit, 
  22074     bcm_field_entry_t entry, 
  22075     uint16 *data, 
  22076     uint16 *mask);
  22077 
  22078 #endif /* BCM_HIDE_DISPATCHABLE */
  22079 
  22080 #define BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP (16)       /* Default constant for
  22081                                                           number of qualifiers
  22082                                                           per field group. */
  22083 #define BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP (16)       /* Default constant for
  22084                                                           number of actions per
  22085                                                           field group. */
  22086 #define BCM_FIELD_NUMBER_OF_TCAM_BANKS      (16)       /* Default constant for
  22087                                                           number of TCAM banks. */
  22088 
  22089 /* Field Group Types. */
  22090 typedef enum bcm_field_group_type_e {
  22091     bcmFieldGroupTypeTcam = 0,          /* TCAM Lookup group (Default). */
  22092     bcmFieldGroupTypeDirectTcam = 1,    /* Direct group (no TCAM lookup). */
  22093     bcmFieldGroupTypeDirectMdb = 2,     /* Direct group (MDB Interface). */
  22094     bcmFieldGroupTypeDirectExtraction = 3, /* Direct extraction (instead of TCAM)
  22095                                            group. */
  22096     bcmFieldGroupTypeExactMatch = 4,    /* Exact match group - partial masking
  22097                                            is not supported. */
  22098     bcmFieldGroupTypeStateTable = 5,    /* State Table group. */
  22099     bcmFieldGroupTypeExternalTcam = 6,  /* External TCAM lookup group. */
  22100     bcmFieldGroupTypeConst = 7,         /* Define Field Group with zero key
  22101                                            size. */
  22102     bcmFieldGroupTypeCount = 8          /* Always last. Not a usable value. */
  22103 } bcm_field_group_type_t;
  22104 
  22105 #define BCM_FIELD_GROUP_TYPE_STRINGS \
  22106 { \
  22107     "Tcam", \
  22108     "DirectTcam", \
  22109     "DirectMdb", \
  22110     "DirectExtraction", \
  22111     "ExactMatch", \
  22112     "StateTable", \
  22113     "ExternalTcam", \
  22114     "Const"  \
  22115 }
  22116 
  22117 /* Bank allocation modes. */
  22118 typedef enum bcm_field_tcam_bank_allocation_mode_e {
  22119     bcmFieldTcamBankAllocationModeInvalid = -1, /* Invalid. */
  22120     bcmFieldTcamBankAllocationModeAuto = 0, /*  Auto TCAM bank allocation mode:
  22121                                            Starts with no banks and allocates
  22122                                            banks on demand. */
  22123     bcmFieldTcamBankAllocationModeSelect = 1, /*  Select TCAM bank allocation mode:
  22124                                            For TCAM handlers with this type of
  22125                                            allocation mode, user may supply an
  22126                                            additional array at creation time for
  22127                                            specific bank ids to be allocated for
  22128                                            the handler. */
  22129     bcmFieldTcamBankAllocationModeCount = 2 /* Always last. Not a usable value. */
  22130 } bcm_field_tcam_bank_allocation_mode_t;
  22131 
  22132 #define BCM_FIELD_TCAM_BANK_ALLOCATION_MODE_STRINGS \
  22133 { \
  22134     "Auto", \
  22135     "Select"  \
  22136 }
  22137 
  22138 /* 
  22139  * This structure holds the advanced parameters for TCAM type FG in
  22140  * bcm_field_group_add() function.
  22141  */
  22142 typedef struct bcm_field_group_tcam_info_s {
  22143     int nof_tcam_banks;                 /* Number of TCAM banks to reserve for
  22144                                            the given field group. */
  22145     int tcam_bank_ids[BCM_FIELD_NUMBER_OF_TCAM_BANKS]; /* The list of TCAM bank IDs to reserve
  22146                                            for the field group to be created.
  22147                                            This list is only valid for TCAM
  22148                                            field groups. */
  22149     bcm_field_tcam_bank_allocation_mode_t bank_allocation_mode; /* Bank allocation mode, see
  22150                                            bcm_field_tcam_bank_allocation_mode_e
  22151                                            in field.h. */
  22152 } bcm_field_group_tcam_info_t;
  22153 
  22154 /* Maximum length for a short name. */
  22155 #define BCM_FIELD_MAX_SHORT_NAME_LEN    (20)       
  22156 
  22157 /* 
  22158  * This structure holds the basic parameters for bcm_field_group_add()
  22159  * function.
  22160  */
  22161 typedef struct bcm_field_group_info_s {
  22162     bcm_field_stage_t stage;            /* Field stage, for which stage the
  22163                                            Field Group was created. */
  22164     bcm_field_group_type_t fg_type;     /* Field Group type: The database may
  22165                                            be: TCAM, Direct Table,Direct
  22166                                            Extraction, Exact Match, Hashing,
  22167                                            StateTable or MDB. */
  22168     int nof_quals;                      /* Number of valid qualifiers in the
  22169                                            Field Group. */
  22170     bcm_field_qualify_t qual_types[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* BCM level qualifier look at
  22171                                            bcm_field_qualify_t for more info.
  22172                                            Number of meaningful elements on this
  22173                                            array according to nof_quals. */
  22174     uint8 qual_is_ranged[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* If set, indicates that the
  22175                                            corresponding qualifier is expected
  22176                                            to accept a range of values for a
  22177                                            single entry. */
  22178     int nof_actions;                    /* Number of valid actions in the action
  22179                                            set of field group. */
  22180     bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to
  22181                                            matching entries for this action set. */
  22182     int action_with_valid_bit[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* If set, then additional bit is added
  22183                                            in payload to indicate weather this
  22184                                            action is valid. */
  22185     bcm_field_group_tcam_info_t tcam_info; /* Advanced parameters for TCAM field
  22186                                            group */
  22187     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  22188     int *ext_acl_db;                    /* Pointer to ext_acl_db. */
  22189 } bcm_field_group_info_t;
  22190 
  22191 #ifndef BCM_HIDE_DISPATCHABLE
  22192 
  22193 /* Add to match on BFD version packet qualification to a field entry. */
  22194 extern int bcm_field_qualify_BfdPktVersionOne(
  22195     int unit, 
  22196     bcm_field_entry_t entry, 
  22197     uint8 data, 
  22198     uint8 mask);
  22199 
  22200 /* Get BFD version one packet qualification from a field entry. */
  22201 extern int bcm_field_qualify_BfdPktVersionOne_get(
  22202     int unit, 
  22203     bcm_field_entry_t entry, 
  22204     uint8 *data, 
  22205     uint8 *mask);
  22206 
  22207 /* 
  22208  * Add to match on Inner BFD version packet qualification to a field
  22209  * entry.
  22210  */
  22211 extern int bcm_field_qualify_InnerBfdPktVersionOne(
  22212     int unit, 
  22213     bcm_field_entry_t entry, 
  22214     uint8 data, 
  22215     uint8 mask);
  22216 
  22217 /* Get Inner BFD version one packet qualification from a field entry. */
  22218 extern int bcm_field_qualify_InnerBfdPktVersionOne_get(
  22219     int unit, 
  22220     bcm_field_entry_t entry, 
  22221     uint8 *data, 
  22222     uint8 *mask);
  22223 
  22224 /* 
  22225  * Add to match on Geneve version 0 packet qualification to a field
  22226  * entry.
  22227  */
  22228 extern int bcm_field_qualify_GenevePktVersionZero(
  22229     int unit, 
  22230     bcm_field_entry_t entry, 
  22231     uint8 data, 
  22232     uint8 mask);
  22233 
  22234 /* Retreive Geneve version zero packet qualification from a field entry. */
  22235 extern int bcm_field_qualify_GenevePktVersionZero_get(
  22236     int unit, 
  22237     bcm_field_entry_t entry, 
  22238     uint8 *data, 
  22239     uint8 *mask);
  22240 
  22241 /* Add to match on Gpe version 0 packet qualification to a field entry. */
  22242 extern int bcm_field_qualify_GpePktVersionZero(
  22243     int unit, 
  22244     bcm_field_entry_t entry, 
  22245     uint8 data, 
  22246     uint8 mask);
  22247 
  22248 /* Retreive Gpe version zero packet qualification from a field entry. */
  22249 extern int bcm_field_qualify_GpePktVersionZero_get(
  22250     int unit, 
  22251     bcm_field_entry_t entry, 
  22252     uint8 *data, 
  22253     uint8 *mask);
  22254 
  22255 /* Add to match on OAM over Geneve packet qualification to a field entry. */
  22256 extern int bcm_field_qualify_GenevePktWithOam(
  22257     int unit, 
  22258     bcm_field_entry_t entry, 
  22259     uint8 data, 
  22260     uint8 mask);
  22261 
  22262 /* Retreive OAM over Geneve packet qualification from a field entry. */
  22263 extern int bcm_field_qualify_GenevePktWithOam_get(
  22264     int unit, 
  22265     bcm_field_entry_t entry, 
  22266     uint8 *data, 
  22267     uint8 *mask);
  22268 
  22269 /* Add to match on OAM over Gpe packet qualification to a field entry. */
  22270 extern int bcm_field_qualify_GpePktWithOam(
  22271     int unit, 
  22272     bcm_field_entry_t entry, 
  22273     uint8 data, 
  22274     uint8 mask);
  22275 
  22276 /* Retreive OAM over Gpe packet qualification from a field entry. */
  22277 extern int bcm_field_qualify_GpePktWithOam_get(
  22278     int unit, 
  22279     bcm_field_entry_t entry, 
  22280     uint8 *data, 
  22281     uint8 *mask);
  22282 
  22283 #endif /* BCM_HIDE_DISPATCHABLE */
  22284 
  22285 /* 
  22286  * Parameter flags form
  22287  * bcmQualifyPktDstAddrType/bcmQualifyPktInnerDstAddrType.
  22288  */
  22289 #define BCM_FIELD_PKT_DST_ADDR_TYPE_UCAST_MAC (1 << 0)   /* Indicates the packet
  22290                                                           has unicast
  22291                                                           destination mac
  22292                                                           address. */
  22293 #define BCM_FIELD_PKT_DST_ADDR_TYPE_MCAST_MAC (1 << 1)   /* Indicates the packet
  22294                                                           has multicast
  22295                                                           destination mac
  22296                                                           address. */
  22297 #define BCM_FIELD_PKT_DST_ADDR_TYPE_BCAST_MAC (1 << 2)   /* Indicates the packet
  22298                                                           has broadcast
  22299                                                           destination mac
  22300                                                           address. */
  22301 #define BCM_FIELD_PKT_DST_ADDR_TYPE_UCAST_IP (1 << 3)   /* Indicates the packet
  22302                                                           has unicast
  22303                                                           destination ip
  22304                                                           address. */
  22305 #define BCM_FIELD_PKT_DST_ADDR_TYPE_MCAST_IP (1 << 4)   /* Indicates the packet
  22306                                                           has multicast
  22307                                                           destination ip
  22308                                                           address. */
  22309 #define BCM_FIELD_PKT_DST_ADDR_TYPE_BCAST_IP (1 << 5)   /* Indicates the packet
  22310                                                           has broadcast
  22311                                                           destination ip
  22312                                                           address. */
  22313 
  22314 #ifndef BCM_HIDE_DISPATCHABLE
  22315 
  22316 /* 
  22317  * Configure match criteria for bcmFieldQualifyPktDstAddrType
  22318  *         qualifier from the field entry.
  22319  */
  22320 extern int bcm_field_qualify_PktDstAddrType(
  22321     int unit, 
  22322     bcm_field_entry_t entry, 
  22323     uint32 dst_addr_type);
  22324 
  22325 /* 
  22326  * Get match criteria for bcmFieldQualifyPktDstAddrType
  22327  *                qualifier from the field entry.
  22328  */
  22329 extern int bcm_field_qualify_PktDstAddrType_get(
  22330     int unit, 
  22331     bcm_field_entry_t entry, 
  22332     uint32 *dst_addr_type);
  22333 
  22334 /* 
  22335  * Configure match criteria for bcmFieldQualifyPktInnerDstAddrType
  22336  *         qualifier from the field entry.
  22337  */
  22338 extern int bcm_field_qualify_PktInnerDstAddrType(
  22339     int unit, 
  22340     bcm_field_entry_t entry, 
  22341     uint32 dst_addr_type);
  22342 
  22343 /* 
  22344  * Get match criteria for bcmFieldQualifyPktInnerDstType
  22345  *                qualifier from the field entry.
  22346  */
  22347 extern int bcm_field_qualify_PktInnerDstAddrType_get(
  22348     int unit, 
  22349     bcm_field_entry_t entry, 
  22350     uint32 *dst_addr_type);
  22351 
  22352 /* 
  22353  * Configure match criteria for bcmFieldQualifyInnerL4Ports
  22354  *         qualifier from the field entry.
  22355  */
  22356 extern int bcm_field_qualify_InnerL4Ports(
  22357     int unit, 
  22358     bcm_field_entry_t entry, 
  22359     uint8 data, 
  22360     uint8 mask);
  22361 
  22362 /* 
  22363  * Get match criteria for bcmFieldQualifyInnerL4Ports
  22364  *                qualifier from the field entry.
  22365  */
  22366 extern int bcm_field_qualify_InnerL4Ports_get(
  22367     int unit, 
  22368     bcm_field_entry_t entry, 
  22369     uint8 *data, 
  22370     uint8 *mask);
  22371 
  22372 /* 
  22373  * Configure match criteria for bcmFieldQualifyIp6PktNextHeader
  22374  *         qualifier for the field entry.
  22375  */
  22376 extern int bcm_field_qualify_Ip6PktNextHeader(
  22377     int unit, 
  22378     bcm_field_entry_t entry, 
  22379     uint8 data, 
  22380     uint8 mask);
  22381 
  22382 /* 
  22383  * Get match criteria for bcmFieldQualifyIp6PktNextHeader
  22384  *                qualifier from the field entry.
  22385  */
  22386 extern int bcm_field_qualify_Ip6PktNextHeader_get(
  22387     int unit, 
  22388     bcm_field_entry_t entry, 
  22389     uint8 *data, 
  22390     uint8 *mask);
  22391 
  22392 /* 
  22393  * Configure match criteria for bcmFieldQualifyIp6PktHopLimit
  22394  *         qualifier for the field entry.
  22395  */
  22396 extern int bcm_field_qualify_Ip6PktHopLimit(
  22397     int unit, 
  22398     bcm_field_entry_t entry, 
  22399     uint8 data, 
  22400     uint8 mask);
  22401 
  22402 /* 
  22403  * Get match criteria for bcmFieldQualifyIp6PktHopLimit
  22404  *                qualifier from the field entry.
  22405  */
  22406 extern int bcm_field_qualify_Ip6PktHopLimit_get(
  22407     int unit, 
  22408     bcm_field_entry_t entry, 
  22409     uint8 *data, 
  22410     uint8 *mask);
  22411 
  22412 /* 
  22413  * Configure match criteria for bcmFieldQualifyIp6PktTrafficClass
  22414  *         qualifier for the field entry.
  22415  */
  22416 extern int bcm_field_qualify_Ip6PktTrafficClass(
  22417     int unit, 
  22418     bcm_field_entry_t entry, 
  22419     uint8 data, 
  22420     uint8 mask);
  22421 
  22422 /* 
  22423  * Get match criteria for bcmFieldQualifyIp6PktTrafficClass
  22424  *                qualifier from the field entry.
  22425  */
  22426 extern int bcm_field_qualify_Ip6PktTrafficClass_get(
  22427     int unit, 
  22428     bcm_field_entry_t entry, 
  22429     uint8 *data, 
  22430     uint8 *mask);
  22431 
  22432 /* 
  22433  * Configure match criteria for bcmFieldQualifyInnerIp6PktNextHeader
  22434  *         qualifier for the field entry.
  22435  */
  22436 extern int bcm_field_qualify_InnerIp6PktNextHeader(
  22437     int unit, 
  22438     bcm_field_entry_t entry, 
  22439     uint8 data, 
  22440     uint8 mask);
  22441 
  22442 /* 
  22443  * Get match criteria for bcmFieldQualifyInnerIp6PktNextHeader
  22444  *                qualifier from the field entry.
  22445  */
  22446 extern int bcm_field_qualify_InnerIp6PktNextHeader_get(
  22447     int unit, 
  22448     bcm_field_entry_t entry, 
  22449     uint8 *data, 
  22450     uint8 *mask);
  22451 
  22452 /* 
  22453  * Configure match criteria for bcmFieldQualifyInnerIp6PktHopLimit
  22454  *         qualifier for the field entry.
  22455  */
  22456 extern int bcm_field_qualify_InnerIp6PktHopLimit(
  22457     int unit, 
  22458     bcm_field_entry_t entry, 
  22459     uint8 data, 
  22460     uint8 mask);
  22461 
  22462 /* 
  22463  * Get match criteria for bcmFieldQualifyInnerIp6PktHopLimit
  22464  *                qualifier from the field entry.
  22465  */
  22466 extern int bcm_field_qualify_InnerIp6PktHopLimit_get(
  22467     int unit, 
  22468     bcm_field_entry_t entry, 
  22469     uint8 *data, 
  22470     uint8 *mask);
  22471 
  22472 /* 
  22473  * Configure match criteria for bcmFieldQualifyIp6PktTrafficClass
  22474  *         qualifier for the field entry.
  22475  */
  22476 extern int bcm_field_qualify_InnerIp6PktTrafficClass(
  22477     int unit, 
  22478     bcm_field_entry_t entry, 
  22479     uint8 data, 
  22480     uint8 mask);
  22481 
  22482 /* 
  22483  * Get match criteria for bcmFieldQualifyInnerIp6PktTrafficClass
  22484  *                qualifier from the field entry.
  22485  */
  22486 extern int bcm_field_qualify_InnerIp6PktTrafficClass_get(
  22487     int unit, 
  22488     bcm_field_entry_t entry, 
  22489     uint8 *data, 
  22490     uint8 *mask);
  22491 
  22492 #endif /* BCM_HIDE_DISPATCHABLE */
  22493 
  22494 /* Invalid constant for Context ID, used in initialization. */
  22495 #define BCM_FIELD_CONTEXT_ID_INVALID    ((bcm_field_context_t) (-1)) 
  22496 
  22497 /* 
  22498  * Default context is created in case when TCAM Context Selection is miss
  22499  * and context 0 is chosen by defualt.
  22500  * If user don't want to configure preselectors he can use default
  22501  * context for bcm_field_group_context_attach().
  22502  * The default context is created on init for all stages.
  22503  */
  22504 #define BCM_FIELD_CONTEXT_ID_DEFAULT    (0)        
  22505 
  22506 /* Field Context Compare Types. */
  22507 typedef enum bcm_field_context_compare_type_e {
  22508     bcmFieldContextCompareTypeNone = 0, /* No special mode, used for
  22509                                            initialization. */
  22510     bcmFieldContextCompareTypeSingle = 1, /* Single-key compare. */
  22511     bcmFieldContextCompareTypeDouble = 2, /* Double-key compare. */
  22512     bcmFieldContextCompareTypeCount = 3 /* Always last. Not a usable value. */
  22513 } bcm_field_context_compare_type_t;
  22514 
  22515 /* 
  22516  * This structure holds the context compare mode information for
  22517  * bcm_field_context_create function.
  22518  */
  22519 typedef struct bcm_field_context_compare_modes_s {
  22520     bcm_field_context_compare_type_t compare_1_mode; /* Specifies compare type for the first
  22521                                            pair. */
  22522     bcm_field_context_compare_type_t compare_2_mode; /* Specifies compare type for the second
  22523                                            pair. */
  22524 } bcm_field_context_compare_modes_t;
  22525 
  22526 /* 
  22527  * This structure holds the basic parameters for
  22528  * bcm_dnx_field_context_create() function.
  22529  */
  22530 typedef struct bcm_field_context_info_s {
  22531     bcm_field_context_compare_modes_t context_compare_modes; /* Defines which compare types are set
  22532                                            for this context, for each compare
  22533                                            operation (compare1, compare2). */
  22534     bcm_field_context_t cascaded_from;  /* The context-Id which the current
  22535                                            context is cascaded from (relevant in
  22536                                            iPMF2) stage. */
  22537     uint8 hashing_enabled;              /* Enable in case a hash key is set on
  22538                                            this context. */
  22539     uint8 state_table_enabled;          /* Enabling state table for current
  22540                                            context */
  22541     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  22542 } bcm_field_context_info_t;
  22543 
  22544 /* Initialize the bcm_field_context_info_t structure. */
  22545 extern void bcm_field_context_info_t_init(
  22546     bcm_field_context_info_t *context_info);
  22547 
  22548 #ifndef BCM_HIDE_DISPATCHABLE
  22549 
  22550 /* Create a new Field Context on a desired stage. */
  22551 extern int bcm_field_context_create(
  22552     int unit, 
  22553     uint32 flags, 
  22554     bcm_field_stage_t stage, 
  22555     bcm_field_context_info_t *context_info, 
  22556     bcm_field_context_t *context_id);
  22557 
  22558 /* Get all context info of a Field Context. */
  22559 extern int bcm_field_context_info_get(
  22560     int unit, 
  22561     bcm_field_stage_t stage, 
  22562     bcm_field_context_t context_id, 
  22563     bcm_field_context_info_t *context_info);
  22564 
  22565 /* Destroy Context ID, deallocate all relevant resources. */
  22566 extern int bcm_field_context_destroy(
  22567     int unit, 
  22568     bcm_field_stage_t stage, 
  22569     bcm_field_context_t context_id);
  22570 
  22571 #endif /* BCM_HIDE_DISPATCHABLE */
  22572 
  22573 /* Initialize the bcm_field_group_info_t structure. */
  22574 extern void bcm_field_group_info_t_init(
  22575     bcm_field_group_info_t *fg_info);
  22576 
  22577 #ifndef BCM_HIDE_DISPATCHABLE
  22578 
  22579 /* Create a new Field group of any type on a desired stage. */
  22580 extern int bcm_field_group_add(
  22581     int unit, 
  22582     uint32 flags, 
  22583     bcm_field_group_info_t *fg_info, 
  22584     bcm_field_group_t *fg_id);
  22585 
  22586 /* Get the information about a specific Field group. */
  22587 extern int bcm_field_group_info_get(
  22588     int unit, 
  22589     bcm_field_group_t fg_id, 
  22590     bcm_field_group_info_t *fg_info);
  22591 
  22592 /* Delete Field Group, deallocate all relevant resources. */
  22593 extern int bcm_field_group_delete(
  22594     int unit, 
  22595     bcm_field_group_t fg_id);
  22596 
  22597 #endif /* BCM_HIDE_DISPATCHABLE */
  22598 
  22599 /* 
  22600  * General Field optional flags. Used if the user wants to specify which
  22601  * ID should be allocated.
  22602  */
  22603 #define BCM_FIELD_FLAG_WITH_ID  (1 << 0)   
  22604 
  22605 /* 
  22606  * Used if we want to replace/update existing entity. For example: update
  22607  * an existing entry - change its values.
  22608  */
  22609 #define BCM_FIELD_FLAG_UPDATE   (1 << 1)   
  22610 
  22611 /* Used if returned result is aligned to MSB. */
  22612 #define BCM_FIELD_FLAG_MSB_RESULT_ALIGN (1 << 2)   
  22613 
  22614 /* Used if returned result is aligned to LSB. */
  22615 #define BCM_FIELD_FLAG_LSB_RESULT_ALIGN (1 << 3)   
  22616 
  22617 /* 
  22618  * This flag enables external ACL counters for all entries in the
  22619  * external ACL DB.
  22620  */
  22621 #define BCM_FIELD_FLAG_EXTERNAL_COUNTERS    (1 << 4)   
  22622 
  22623 /* General invalid constant for Field */
  22624 #define BCM_FIELD_INVALID       0xFFFF     
  22625 
  22626 /* 
  22627  * General invalid constant for specific Field IDs, like presel_id,
  22628  * context_id. Used in initialization.
  22629  */
  22630 #define BCM_FIELD_ID_INVALID    (-1)       
  22631 
  22632 /* Field Qualifier Input Types, indicate base layer type for qualifier. */
  22633 typedef enum bcm_field_input_types_e {
  22634     bcmFieldInputTypeInvalid = -1,      /* Invalid base layer. */
  22635     bcmFieldInputTypeLayerFwd = 0,      /* Extracted from Layer info ,FWD layer
  22636                                            index. */
  22637     bcmFieldInputTypeLayerAbsolute = 1, /* Extracted from Layer info ,Absolute
  22638                                            layer index . */
  22639     bcmFieldInputTypeMetaData = 2,      /* Extracted from MetaData. */
  22640     bcmFieldInputTypeLayerRecordsFwd = 3, /* Extracted from LR ,FWD layer index . */
  22641     bcmFieldInputTypeLayerRecordsAbsolute = 4, /* Extracted from LR ,Absolute layer
  22642                                            index. */
  22643     bcmFieldInputTypeExternal = 5,      /* Extracted from 'Cascaded From' field
  22644                                            group result from the external field
  22645                                            stage. */
  22646     bcmFieldInputTypeCascaded = 6,      /* Extracted from 'Cascaded From' field
  22647                                            group result. */
  22648     bcmFieldInputTypeConst = 7,         /* Constant value. */
  22649     bcmFieldInputTypeCount = 8          /* Always last. Number of Base Types. */
  22650 } bcm_field_input_types_t;
  22651 
  22652 #define BCM_FIELD_INPUT_TYPES_STRINGS \
  22653 { \
  22654     "LayerFwd", \
  22655     "LayerAbsolute", \
  22656     "MetaData", \
  22657     "LayerRecordsFwd", \
  22658     "LayerRecordsAbsolute", \
  22659     "External", \
  22660     "Cascaded", \
  22661     "Const"  \
  22662 }
  22663 
  22664 /* 
  22665  * Include information on each action that configured in
  22666  * bcm_field_group_context_attach API.
  22667  */
  22668 typedef struct bcm_field_action_attach_info_s {
  22669     bcm_field_action_priority_t priority; /* Indicate the priority per action that
  22670                                            was configured for specific Field
  22671                                            Group the lower the number the higher
  22672                                            the priority of the actions the
  22673                                            higher FES/FEM id will be allocated */
  22674     uint8 valid_bit_polarity;           /* Indicate the polarity per action that
  22675                                            was configured for specific Field
  22676                                            Group, the meaning of the
  22677                                            use_valid_bit. Indicates whether
  22678                                            condition bit can be based on 0 or 1.
  22679                                            If there is a valid bit
  22680                                            (use_valid_bit=1),
  22681                                            the action will happen only if the
  22682                                            valid bit is equal to the polarity
  22683                                            bit. */
  22684 } bcm_field_action_attach_info_t;
  22685 
  22686 /* 
  22687  * This struct will indicate how to extract the qualifier from the PBUS,
  22688  * (MetaData/LR/Layer).
  22689  */
  22690 typedef struct bcm_field_qualify_attach_info_s {
  22691     bcm_field_input_types_t input_type; /* The base of qualifier indicate from
  22692                                            which part of the PBUS the info is
  22693                                            taken, relevant for all type of
  22694                                            qualifiers.
  22695                                            bcmFieldInputTypeLayerFwd  - Takes
  22696                                            data from a layer in the header,
  22697                                            using the forwarding layer
  22698                                            information.
  22699                                            bcmFieldInputTypeLayerAbsolute -
  22700                                            Takes data from a layer in the
  22701                                            header, ignoring forwarding layer
  22702                                            information.
  22703                                            bcmFieldInputTypeMetaData - Takes
  22704                                            data from the Metadata.
  22705                                            bcmFieldInputTypeLayerRecordsFwd  - 
  22706                                            Takes data about a layer in the
  22707                                            header (layer record), using the
  22708                                            forwarding layer information.
  22709                                            bcmFieldInputTypeLayerRecordsAbsolute
  22710                                            - Takes data about a layer in the
  22711                                            header (layer record), ignoring the
  22712                                            forwarding layer information.
  22713                                            bcmFieldInputTypeExternal - Takes
  22714                                            data from the result of an external
  22715                                            TCAM field group from an earlier
  22716                                            stage, using cascading.
  22717                                            bcmFieldInputTypeCascaded - Takes
  22718                                            data from the result of a field group
  22719                                            from an earlier PMF stage, using
  22720                                            cascading.
  22721                                            bcmFieldInputTypeConst - Writes a
  22722                                            constant value. */
  22723     int input_arg;                      /* input arg has different meaning per
  22724                                            input type as follows:
  22725                                            bcmFieldInputTypeLayerFwd  - how many
  22726                                            layer to increment from the
  22727                                            forwarding layer (i.e. FWD+input_arg)
  22728                                            bcmFieldInputTypeLayerAbsolute - how
  22729                                            many layer to increment from the
  22730                                            absolute layer (i.e. 0+input_arg)
  22731                                            bcmFieldInputTypeMetaData - Has no
  22732                                            meaning
  22733                                            bcmFieldInputTypeLayerRecordsFwd  - 
  22734                                            how many layer to increment from the
  22735                                            forwarding layer (i.e. FWD+input_arg)
  22736                                            bcmFieldInputTypeLayerRecordsAbsolute
  22737                                            - how many layer to increment from
  22738                                            the absolute layer (i.e. 0+input_arg)
  22739                                            bcmFieldInputTypeExternal - Has no
  22740                                            meaning
  22741                                            bcmFieldInputTypeCascaded - Field
  22742                                            group Id of the 'Cascaded from'
  22743                                            result
  22744                                            bcmFieldInputTypeConst - A 32 bit
  22745                                            constant */
  22746     int offset;                         /* 1) This filed is bit resolution
  22747                                            2) In case the qualifier was created
  22748                                            by bcm_field_qualify_create() this
  22749                                            field is always relevant it is the
  22750                                            offset of the field inside the PBUS
  22751                                            (MD/LR/Layer)
  22752                                            3) For predefined qualifiers based on
  22753                                            input_type:
  22754                                            bcmFieldInputTypeLayerFwd  - offset
  22755                                            inside the layer  (chosen by
  22756                                            input_type+input_arg)
  22757                                            bcmFieldInputTypeLayerAbsolute -
  22758                                            offset inside the layer  (chosen by
  22759                                            input_type+input_arg)
  22760                                            bcmFieldInputTypeMetaData - NA
  22761                                            bcmFieldInputTypeLayerRecordsFwd  - 
  22762                                            NA
  22763                                            bcmFieldInputTypeLayerRecordsAbsolute
  22764                                            - NA
  22765                                            bcmFieldInputTypeCascaded - offset of
  22766                                            the external TCAM field group
  22767                                            payload, plus the offset within the
  22768                                            payload of the field group
  22769                                            bcmFieldInputTypeCascaded - offset in
  22770                                            the field group of 'Cascaded from'
  22771                                            result buffer
  22772                                            bcmFieldInputTypeConst - NA */
  22773 } bcm_field_qualify_attach_info_t;
  22774 
  22775 /* 
  22776  * This structure represents a single context_key element. This is an
  22777  * abstract structure used only by other structures, like
  22778  * bcm_field_context_hash_info_t and bcm_field_context_compare_info_t, as
  22779  * a uniformed way to define context_keys.
  22780  */
  22781 typedef struct bcm_field_context_key_info_s {
  22782     int nof_quals;                      /* Number of valid qualifiers in the
  22783                                            context key. */
  22784     bcm_field_qualify_t qual_types[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* BCM level qualifier look at
  22785                                            bcm_field_qualify_t for more info.
  22786                                            Number of meaningful elements on this
  22787                                            array according to nof_quals. */
  22788     bcm_field_qualify_attach_info_t qual_info[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Indicate how to read the relevant
  22789                                            qualifier from PBUS. The information
  22790                                            is aligned to the qualifier types
  22791                                            array above. */
  22792 } bcm_field_context_key_info_t;
  22793 
  22794 /* 
  22795  * This structure represents a single context_payload element. This is an
  22796  * abstract structure used only by other structures, like
  22797  * bcm_field_group_attach_info_t, as a uniformed way to define
  22798  * context_payloads.
  22799  */
  22800 typedef struct bcm_field_context_payload_info_s {
  22801     int nof_actions;                    /* Number of valid actions in the action
  22802                                            set of the Field Group. */
  22803     bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to
  22804                                            matching entries for this action set.
  22805                                            BCM level action look at
  22806                                            bcm_field_action_t for more info. */
  22807     bcm_field_action_attach_info_t action_info[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Information (priority) on each action
  22808                                            that configured in
  22809                                            bcm_field_group_context_attach() API */
  22810     uint32 payload_id;                  /* Payload Id for current field group
  22811                                            inside the payload buffer. Payloads
  22812                                            returned from the external tcam are
  22813                                            acumulated sequentially. Indicates
  22814                                            the valid hit bit for current field
  22815                                            group. */
  22816     uint32 payload_offset;              /* Payload location inside the payload
  22817                                            buffer returned from the external
  22818                                            tcam. */
  22819 } bcm_field_context_payload_info_t;
  22820 
  22821 /* 
  22822  * This structure holds the basic parameters for
  22823  * bcm_field_group_context_attach() function.
  22824  */
  22825 typedef struct bcm_field_group_attach_info_s {
  22826     bcm_field_context_key_info_t key_info; /* Context attach qualifiers
  22827                                            information, like: number of valid
  22828                                            qualifiers, qualifier type and how to
  22829                                            read the relevant qualifier from
  22830                                            PBUS. */
  22831     bcm_field_context_payload_info_t payload_info; /* Context attach actions information,
  22832                                            like: number of valid actions, action
  22833                                            type and priority. */
  22834     uint8 compare_id;                   /* Compare id to use in case of
  22835                                            comparison. Can be 1 or 2, depends on
  22836                                            which compare pair is used in the
  22837                                            comparison. */
  22838 } bcm_field_group_attach_info_t;
  22839 
  22840 /* Initialize the bcm_field_qualify_attach_info_t structure. */
  22841 extern void bcm_field_qual_attach_info_t_init(
  22842     bcm_field_qualify_attach_info_t *qual_info);
  22843 
  22844 /* Initialize the bcm_field_group_attach_info_t structure. */
  22845 extern void bcm_field_group_attach_info_t_init(
  22846     bcm_field_group_attach_info_t *attach_info);
  22847 
  22848 #ifndef BCM_HIDE_DISPATCHABLE
  22849 
  22850 /* 
  22851  * This Function Attach Field Group to specific context ID, and defines
  22852  * the key template and action priorities for this lookup for this
  22853  * specific context.
  22854  */
  22855 extern int bcm_field_group_context_attach(
  22856     int unit, 
  22857     uint32 flags, 
  22858     bcm_field_group_t fg_id, 
  22859     bcm_field_context_t context_id, 
  22860     bcm_field_group_attach_info_t *attach_info);
  22861 
  22862 /* 
  22863  * This function will get all Group attach info of a specific Field
  22864  * context and Field group.
  22865  */
  22866 extern int bcm_field_group_context_info_get(
  22867     int unit, 
  22868     bcm_field_group_t fg_id, 
  22869     bcm_field_context_t context_id, 
  22870     bcm_field_group_attach_info_t *attach_info);
  22871 
  22872 /* 
  22873  * Reset/deallocate all resources that were allocated for the context ID
  22874  * at input to the FG at input.
  22875  */
  22876 extern int bcm_field_group_context_detach(
  22877     int unit, 
  22878     bcm_field_group_t fg_id, 
  22879     bcm_field_context_t context_id);
  22880 
  22881 #endif /* BCM_HIDE_DISPATCHABLE */
  22882 
  22883 /* Action width in words. */
  22884 #define BCM_FIELD_ACTION_WIDTH_IN_WORDS (4)        
  22885 
  22886 /* Qualifier width in words. */
  22887 #define BCM_FIELD_QUAL_WIDTH_IN_WORDS   (5)        
  22888 
  22889 /* 
  22890  * Include information regarding a user defined action used by
  22891  * bcm_field_action_create.
  22892  */
  22893 typedef struct bcm_field_action_info_s {
  22894     bcm_field_stage_t stage;            /* Field stage, for which stage the
  22895                                            action is created. */
  22896     bcm_field_action_t action_type;     /* used as basis for the user defined
  22897                                            action type, can be also void action */
  22898     int size;                           /* Size of the action to set in the
  22899                                            payload in bits. */
  22900     int prefix_size;                    /* Size of the prefix to set in the
  22901                                            payload in bits. */
  22902     int prefix_value;                   /* Value of the prefix (will be put in
  22903                                            the MSB of the action). */
  22904     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  22905 } bcm_field_action_info_t;
  22906 
  22907 /* 
  22908  * Include information regarding a qualifier. Used by
  22909  * bcm_field_qualifier_create() for creating user defined qualifiers.
  22910  */
  22911 typedef struct bcm_field_qualifier_info_create_s {
  22912     int size;                           /* Size of the qualifier to set in the
  22913                                            key in bits. */
  22914     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  22915 } bcm_field_qualifier_info_create_t;
  22916 
  22917 /* 
  22918  * Includes information regarding a qualifier. Used by
  22919  * bcm_field_qualifier_get() for retrieving information regarding
  22920  * predefined or user defined qualifiers.
  22921  */
  22922 typedef struct bcm_field_qualifier_info_get_s {
  22923     bcm_field_qualifier_class_t qual_class; /* Class of the qualifier. Indicates the
  22924                                            intput type of the qualifier for
  22925                                            predefined qualifiers. */
  22926     int size;                           /* Size of the qualifier in the key in
  22927                                            bits. */
  22928     int offset;                         /* The offset of the qualifier. */
  22929     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  22930 } bcm_field_qualifier_info_get_t;
  22931 
  22932 /* 
  22933  * This structure holds the payload values needed for bcm_field_entry_add
  22934  * function.
  22935  */
  22936 typedef struct bcm_field_entry_action_s {
  22937     bcm_field_action_t type;            /* BCM action type, an action to perform
  22938                                            in case of match. */
  22939     uint32 value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]; /* Set value for action (lookup result). */
  22940 } bcm_field_entry_action_t;
  22941 
  22942 /* 
  22943  * This structure holds the key values needed for bcm_field_entry_add
  22944  * function.
  22945  */
  22946 typedef struct bcm_field_entry_qual_s {
  22947     bcm_field_qualify_t type;           /* BCM qualifier type, a classifier type
  22948                                            for lookup. */
  22949     uint32 value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Set value for qualify (lookup key). */
  22950     uint32 max_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Sets the maximum value for ranged
  22951                                            qualify (lookup key). */
  22952     uint32 mask[BCM_FIELD_QUAL_WIDTH_IN_WORDS]; /* Mask Value with defined which of the
  22953                                            value bits are relevant for lookup. */
  22954 } bcm_field_entry_qual_t;
  22955 
  22956 /* 
  22957  * This structure holds the key values needed for bcm_field_entry_add
  22958  * function.
  22959  */
  22960 typedef struct bcm_field_entry_info_s {
  22961     uint32 priority;                    /* Entry priority, relevant only for
  22962                                            TCAM FG. The lower the number the
  22963                                            higher the entry priority. Higher
  22964                                            priority lookup will hit first. */
  22965     int nof_entry_quals;                /* Number of valid qualifiers in the
  22966                                            Field entry. */
  22967     bcm_field_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]; /* Entry qualifiers info including type,
  22968                                            value, and mask, not all are relevant
  22969                                            in various field group types. */
  22970     int nof_entry_actions;              /* Number of valid actions in the Field
  22971                                            entry. */
  22972     bcm_field_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type,
  22973                                            value. */
  22974     bcm_core_t core;                    /* Entry's core */
  22975     uint8 valid_bit;                    /* Entry valid bit */
  22976 } bcm_field_entry_info_t;
  22977 
  22978 /* Initialize the bcm_field_action_info_t structure. */
  22979 extern void bcm_field_action_info_t_init(
  22980     bcm_field_action_info_t *action_info);
  22981 
  22982 #ifndef BCM_HIDE_DISPATCHABLE
  22983 
  22984 /* 
  22985  * This function create a user defined action, when user wants to use a
  22986  * non-predefined, it indicated the size and gets an action ID.
  22987  */
  22988 extern int bcm_field_action_create(
  22989     int unit, 
  22990     uint32 flags, 
  22991     bcm_field_action_info_t *action_info, 
  22992     bcm_field_action_t *action_id);
  22993 
  22994 /* 
  22995  * Maps the bcm value of a given action in a given stage to the
  22996  * correspondig HW value. This functionality is needed when non-trivial
  22997  * user defined actions are created and values need to be set for them
  22998  */
  22999 extern int bcm_field_action_value_map(
  23000     int unit, 
  23001     bcm_field_stage_t stage, 
  23002     bcm_field_action_t bcm_action, 
  23003     uint32 bcm_value[BCM_FIELD_ACTION_WIDTH_IN_WORDS], 
  23004     uint32 hw_value[BCM_FIELD_ACTION_WIDTH_IN_WORDS]);
  23005 
  23006 /* 
  23007  * This function gets all information of an action. For predefined
  23008  * actions only, it takes stage as input.
  23009  */
  23010 extern int bcm_field_action_info_get(
  23011     int unit, 
  23012     bcm_field_action_t action_id, 
  23013     bcm_field_stage_t stage, 
  23014     bcm_field_action_info_t *action_info);
  23015 
  23016 /* Destroys an existing user action based. */
  23017 extern int bcm_field_action_destroy(
  23018     int unit, 
  23019     bcm_field_action_t action_id);
  23020 
  23021 #endif /* BCM_HIDE_DISPATCHABLE */
  23022 
  23023 /* Initialize the bcm_field_qualifier_info_create_t structure. */
  23024 extern void bcm_field_qualifier_info_create_t_init(
  23025     bcm_field_qualifier_info_create_t *qual_info);
  23026 
  23027 /* Initialize the bcm_field_qualifier_info_get_t structure. */
  23028 extern void bcm_field_qualifier_info_get_t_init(
  23029     bcm_field_qualifier_info_get_t *qual_info);
  23030 
  23031 #ifndef BCM_HIDE_DISPATCHABLE
  23032 
  23033 /* 
  23034  * This function creates a user defined qualifier, when user wants to use
  23035  * a non-predefined qualifier. It indicated the size and gets a qualifier
  23036  * ID.
  23037  */
  23038 extern int bcm_field_qualifier_create(
  23039     int unit, 
  23040     uint32 flags, 
  23041     bcm_field_qualifier_info_create_t *qual_info, 
  23042     bcm_field_qualify_t *qual_id);
  23043 
  23044 /* 
  23045  * Maps the bcm value of a given qualifier in a given stage to the
  23046  * correspondig HW value. This functionality is needed when non-trivial
  23047  * user defined qualifiers are created and values need to be set for them
  23048  */
  23049 extern int bcm_field_qualifier_value_map(
  23050     int unit, 
  23051     bcm_field_stage_t stage, 
  23052     bcm_field_qualify_t bcm_qual, 
  23053     uint32 bcm_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS], 
  23054     uint32 hw_value[BCM_FIELD_QUAL_WIDTH_IN_WORDS]);
  23055 
  23056 /* 
  23057  * This function gets all information of a qualifier for a specific
  23058  * stage. Used for both predefined qualifiers and user defined
  23059  * qualifiers.
  23060  */
  23061 extern int bcm_field_qualifier_info_get(
  23062     int unit, 
  23063     bcm_field_qualify_t qual_id, 
  23064     bcm_field_stage_t stage, 
  23065     bcm_field_qualifier_info_get_t *qual_info);
  23066 
  23067 /* Destroys an existing user qualifier. */
  23068 extern int bcm_field_qualifier_destroy(
  23069     int unit, 
  23070     bcm_field_qualify_t qual_id);
  23071 
  23072 #endif /* BCM_HIDE_DISPATCHABLE */
  23073 
  23074 /* Initialize the bcm_field_entry_info_t structure. */
  23075 extern void bcm_field_entry_info_t_init(
  23076     bcm_field_entry_info_t *entry_info);
  23077 
  23078 /* 
  23079  * Initialize an array with BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP elements
  23080  * of bcm_field_entry_qual_t structures.
  23081  */
  23082 extern void bcm_field_entry_qual_t_init(
  23083     bcm_field_entry_qual_t entry_qual[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP]);
  23084 
  23085 #ifndef BCM_HIDE_DISPATCHABLE
  23086 
  23087 /* 
  23088  * This function creates, sets and installs to HW a single entry (ACL
  23089  * rule) for a specific field group.
  23090  */
  23091 extern int bcm_field_entry_add(
  23092     int unit, 
  23093     uint32 flags, 
  23094     bcm_field_group_t fg_id, 
  23095     bcm_field_entry_info_t *entry_info, 
  23096     bcm_field_entry_t *entry_handle);
  23097 
  23098 /* Get info for specific a field group by entry id. */
  23099 extern int bcm_field_entry_info_get(
  23100     int unit, 
  23101     bcm_field_group_t fg_id, 
  23102     bcm_field_entry_t entry_handle, 
  23103     bcm_field_entry_info_t *entry_info);
  23104 
  23105 /* Delete Entry From HW and free all allocated resources. */
  23106 extern int bcm_field_entry_delete(
  23107     int unit, 
  23108     bcm_field_group_t fg_id, 
  23109     bcm_field_entry_qual_t entry_qual_info[BCM_FIELD_NUMBER_OF_QUALS_PER_GROUP], 
  23110     bcm_field_entry_t entry_handle);
  23111 
  23112 /* Delete all entries in all field groups. */
  23113 extern int bcm_field_entry_delete_all(
  23114     int unit);
  23115 
  23116 #endif /* BCM_HIDE_DISPATCHABLE */
  23117 
  23118 /* 
  23119  * This enum contains Packet Layers to remove, used in the
  23120  * BCM_FIELD_PACKET_STRIP() macro.
  23121  */
  23122 typedef enum bcm_field_packet_remove_layers_e {
  23123     bcmFieldPacketRemoveLayerFirst = 0, /* Invalid Param. */
  23124     bcmFieldPacketRemoveLayerOffset0 = bcmFieldPacketRemoveLayerFirst, /* Packet Layer offset 0. */
  23125     bcmFieldPacketRemoveLayerOffset1 = 1, /* Packet Layer offset 1. */
  23126     bcmFieldPacketRemoveLayerForwardingOffset0 = 2, /* Packet Layer Forwarding offset 0. */
  23127     bcmFieldPacketRemoveLayerForwardingOffset1 = 3, /* Packet Layer Forwarding offset 1. */
  23128     bcmFieldPacketRemoveLayerCount = 4  /* Always last. Not a usable value. */
  23129 } bcm_field_packet_remove_layers_t;
  23130 
  23131 #define BCM_FIELD_PACKET_REMOVE_LAYER_STRINGS \
  23132 { \
  23133     "Offset0", \
  23134     "Offset1", \
  23135     "ForwardingOffset0", \
  23136     "ForwardingOffset1"  \
  23137 }
  23138 
  23139 /* 
  23140  * This macro encodes the number of headers to remove and number of bytes
  23141  * to a single parameter, given as input to PMF action
  23142  * bcmFieldActionStartPacketStrip.
  23143  */
  23144 #define BCM_FIELD_PACKET_STRIP(remove_layers, fixed_num_bytes)  ((fixed_num_bytes<<4) + (remove_layers)) 
  23145 
  23146 /* 
  23147  * This enum contains all Polynomial hashing Functions values that can be
  23148  * passed to the 'hash_function' param in the
  23149  * bcm_field_context_hash_info_t struct.
  23150  */
  23151 typedef enum bcm_field_context_hash_function_e {
  23152     bcmFieldContextHashFunctionFirst = 0, /* Invalid Param. */
  23153     bcmFieldContextHashFunctionFirstReserved = bcmFieldContextHashFunctionFirst, /* HW Reserved Value */
  23154     bcmFieldContextHashFunctionSecondReserved = 1, /* HW Reserved Value. */
  23155     bcmFieldContextHashFunctionThirdReserved = 2, /* Polynomial BISYNC hashing Function. */
  23156     bcmFieldContextHashFunctionCrc16Bisync = 3, /* Polynomial CRC 16 BISYNC hashing
  23157                                            Function. */
  23158     bcmFieldContextHashFunctionCrc16Xor1 = 4, /* Polynomial CRC 16 XOR1 hashing
  23159                                            Function. */
  23160     bcmFieldContextHashFunctionCrc16Xor2 = 5, /* Polynomial CRC 16 XOR2 hashing
  23161                                            Function. */
  23162     bcmFieldContextHashFunctionCrc16Xor4 = 6, /* Polynomial CRC 16 XOR4 hashing
  23163                                            Function. */
  23164     bcmFieldContextHashFunctionCrc16Xor8 = 7, /* Polynomial CRC 16 XOR8 hashing
  23165                                            Function. */
  23166     bcmFieldContextHashFunctionXor16 = 8, /* Polynomial XOR16 hashing Function. */
  23167     bcmFieldContextHashFunctionCrc16Ccitt = 9, /* Polynomial CRC 16 CCITT hashing
  23168                                            Function. */
  23169     bcmFieldContextHashFunctionCrc32ALow = 10, /* Polynomial CRC 32 A LOW hashing
  23170                                            Function. */
  23171     bcmFieldContextHashFunctionCrc32Ahigh = 11, /* Polynomial CRC 32 A HIGH hashing
  23172                                            Function. */
  23173     bcmFieldContextHashFunctionCrc32BLow = 12, /* Polynomial CRC 32 B LOW hashing
  23174                                            Function. */
  23175     bcmFieldContextHashFunctionCrc32BHigh = 13, /* Polynomial CRC 32 B HIGH hashing
  23176                                            Function. */
  23177     bcmFieldContextHashFunctionCount = 14 /* Always last. Not a usable value. */
  23178 } bcm_field_context_hash_function_t;
  23179 
  23180 /* 
  23181  * This enum contains all Hashing Action Key values that can be passed to
  23182  * the 'hash_config->action_key' param in the
  23183  * bcm_field_context_hash_info_t struct.
  23184  */
  23185 typedef enum bcm_field_context_hash_action_key_e {
  23186     bcmFieldContextHashActionKeyFirst = 0, /* Invalid Param. */
  23187     bcmFieldContextHashActionKeyEcmpLbKey0 = bcmFieldContextHashActionKeyFirst, /* Hashing key ECMP_LB0. */
  23188     bcmFieldContextHashActionKeyEcmpLbKey1 = 1, /* Hashing key ECMP_LB1. */
  23189     bcmFieldContextHashActionKeyEcmpLbKey2 = 2, /* Hashing key ECMP_LB2. */
  23190     bcmFieldContextHashActionKeyNetworkLbKey = 3, /* Hashing key NETWORK_LB. */
  23191     bcmFieldContextHashActionKeyLagLbKey = 4, /* Hashing key LAG_LB. */
  23192     bcmFieldContextHashActionKeyAdditionalLbKey = 5, /* Hashing key ADDITIONAL_LB. */
  23193     bcmFieldContextHashActionKeyCount = 6 /* Always last. Not a usable value. */
  23194 } bcm_field_context_hash_action_key_t;
  23195 
  23196 /* 
  23197  * This enum contains all Hashing Action Values that can be passed to the
  23198  * 'hash_config->function_select and hash_config->crc_select' params in
  23199  * the bcm_field_context_hash_info_t struct.
  23200  */
  23201 typedef enum bcm_field_context_hash_action_value_e {
  23202     bcmFieldContextHashActionValueFirst = 0, /* Invalid Param. */
  23203     bcmFieldContextHashActionValueNone = bcmFieldContextHashActionValueFirst, /* Hashing action value DO_NOTHING. */
  23204     bcmFieldContextHashActionValueReplaceCrc = 1, /* Hashing action value
  23205                                            REPLACE_WITH_CRC_16. */
  23206     bcmFieldContextHashActionValueAugmentCrc = 2, /* Hashing action value
  23207                                            AUGMENT_WITH_PMF_CRC_16. */
  23208     bcmFieldContextHashActionValueAugmentKey = 3, /* Hashing action value
  23209                                            AUGMENT_WITH_KEY_J. */
  23210     bcmFieldContextHashActionValueCount = 4 /* Always last. Not a usable value. */
  23211 } bcm_field_context_hash_action_value_t;
  23212 
  23213 /* 
  23214  * This structure holds detailed info about hash configuration, needed
  23215  * for bcm_field_context_hash_info_t struct.
  23216  */
  23217 typedef struct bcm_field_context_hash_config_s {
  23218     bcm_field_context_hash_action_key_t action_key; /* One of the various lb-keys which are
  23219                                            iPMF1 output. */
  23220     bcm_field_context_hash_action_value_t function_select; /* Hashing Action which selects weather
  23221                                            to keep the input lb-key or to
  23222                                            replace it. */
  23223     bcm_field_context_hash_action_value_t crc_select; /* CRC Action which selects weather to
  23224                                            keep the input lb-key or to replace
  23225                                            it. */
  23226 } bcm_field_context_hash_config_t;
  23227 
  23228 /* 
  23229  * This structure holds detailed info how hash key should be constructed,
  23230  * needed for bcm_field_context_hash_create() function.
  23231  */
  23232 typedef struct bcm_field_context_hash_info_s {
  23233     bcm_field_context_key_info_t key_info; /* The Hash key information, describing
  23234                                            the qualfiers and template of the
  23235                                            constructed key */
  23236     uint8 compression;                  /* Disable/enable compress data (128->32
  23237                                            bit). Typical usage: compress ipv6
  23238                                            address into 32 bits. */
  23239     uint8 order;                        /* Disable/enable order data (smaller
  23240                                            32-bits value will always be in 32LSB
  23241                                            ). Typical usage order between
  23242                                            generate the same key for
  23243                                            bidirectional ip flows. */
  23244     bcm_field_context_hash_function_t hash_function; /* Hashing polynomial for hashing
  23245                                            mechanism. */
  23246     bcm_field_context_hash_config_t hash_config; /* Hashing configuration params,
  23247                                            describing which hash action is
  23248                                            performed and which signals */
  23249 } bcm_field_context_hash_info_t;
  23250 
  23251 /* 
  23252  * This structure holds detailed info for keys, which should be compared
  23253  * needed for bcm_field_context_compare_create() function.
  23254  */
  23255 typedef struct bcm_field_context_compare_info_s {
  23256     bcm_field_context_key_info_t first_key_info; /* The information for the first key. */
  23257     bcm_field_context_key_info_t second_key_info; /* The information for the second key. */
  23258 } bcm_field_context_compare_info_t;
  23259 
  23260 /* Initialize the bcm_field_context_hash_info_t structure. */
  23261 extern void bcm_field_context_hash_info_t_init(
  23262     bcm_field_context_hash_info_t *hash_info);
  23263 
  23264 #ifndef BCM_HIDE_DISPATCHABLE
  23265 
  23266 /* 
  23267  * This function is used to create, allocate all resources and configure
  23268  * HASH key which is used to create CRC.
  23269  */
  23270 extern int bcm_field_context_hash_create(
  23271     int unit, 
  23272     uint32 flags, 
  23273     bcm_field_stage_t stage, 
  23274     bcm_field_context_t context_id, 
  23275     bcm_field_context_hash_info_t *hash_info);
  23276 
  23277 /* This function gets HASH info of a specific context. */
  23278 extern int bcm_field_context_hash_info_get(
  23279     int unit, 
  23280     bcm_field_stage_t stage, 
  23281     bcm_field_context_t context_id, 
  23282     bcm_field_context_hash_info_t *hash_info);
  23283 
  23284 /* 
  23285  * Destroy HASH key which is used to create CRC, deallocate all resources
  23286  * allocated by bcm_field_context_hash_create.
  23287  */
  23288 extern int bcm_field_context_hash_destroy(
  23289     int unit, 
  23290     bcm_field_stage_t stage, 
  23291     bcm_field_context_t context_id);
  23292 
  23293 #endif /* BCM_HIDE_DISPATCHABLE */
  23294 
  23295 /* Initialize the bcm_field_context_compare_info_t structure. */
  23296 extern void bcm_field_context_compare_info_t_init(
  23297     bcm_field_context_compare_info_t *compare_info);
  23298 
  23299 #ifndef BCM_HIDE_DISPATCHABLE
  23300 
  23301 /* 
  23302  * This function is used to set up to two pairs of keys for comparison
  23303  * for a given context.
  23304  */
  23305 extern int bcm_field_context_compare_create(
  23306     int unit, 
  23307     uint32 flags, 
  23308     bcm_field_stage_t stage, 
  23309     bcm_field_context_t context_id, 
  23310     uint32 pair_id, 
  23311     bcm_field_context_compare_info_t *cmp_info);
  23312 
  23313 /* 
  23314  * This function returns information for a specific pair of keys which
  23315  * used for comparison in a given context.
  23316  */
  23317 extern int bcm_field_context_compare_info_get(
  23318     int unit, 
  23319     bcm_field_stage_t stage, 
  23320     bcm_field_context_t context_id, 
  23321     uint32 pair_id, 
  23322     bcm_field_context_compare_info_t *cmp_info);
  23323 
  23324 /* Destroys the compare keys in the given context. */
  23325 extern int bcm_field_context_compare_destroy(
  23326     int unit, 
  23327     bcm_field_stage_t stage, 
  23328     bcm_field_context_t context_id, 
  23329     uint32 pair_id);
  23330 
  23331 #endif /* BCM_HIDE_DISPATCHABLE */
  23332 
  23333 /* 
  23334  * This struct holds the banks to evacuate information given to
  23335  * dnx_field_tcam_bank_evacuate() function
  23336  */
  23337 typedef struct bcm_field_tcam_bank_evacuate_info_s {
  23338     int nof_banks;                      /* Number of banks to evacuate */
  23339     int tcam_bank_ids[BCM_FIELD_NUMBER_OF_TCAM_BANKS]; /* Array that holds the TCAM bank IDs to
  23340                                            be evacuated */
  23341 } bcm_field_tcam_bank_evacuate_info_t;
  23342 
  23343 #ifndef BCM_HIDE_DISPATCHABLE
  23344 
  23345 /* 
  23346  * Evacuates the given fg_id from the bank IDs that are given in
  23347  * evac_info struct. The evacuation process involves moving the entries
  23348  * of the given fg_id from the targeted banks to other banks allocated by
  23349  * the fg_id, if not enough space is available for moving the entries,
  23350  * this function fails.
  23351  */
  23352 extern int bcm_field_tcam_bank_evacuate(
  23353     int unit, 
  23354     uint32 flags, 
  23355     bcm_field_group_t fg_id, 
  23356     bcm_field_tcam_bank_evacuate_info_t *evac_info);
  23357 
  23358 #endif /* BCM_HIDE_DISPATCHABLE */
  23359 
  23360 /* 
  23361  * ACE Format ID. Used to indicate the ID of an ACE format and the result
  23362  * type of its entries.
  23363  */
  23364 typedef uint8 bcm_field_ace_format_t;
  23365 
  23366 /* 
  23367  * This structure represents a single context_payload element. This is an
  23368  * abstract structure used only by other structures, like
  23369  * bcm_field_group_attach_info_t, as a uniformed way to define
  23370  * context_payloads.
  23371  */
  23372 typedef struct bcm_field_ace_format_info_s {
  23373     int nof_actions;                    /* Number of valid actions in the action
  23374                                            set of ACE format. */
  23375     bcm_field_action_t action_types[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* The list of actions to be applied to
  23376                                            matching entries for this action set.
  23377                                            BCM level action look at
  23378                                            bcm_field_action_t for more info. */
  23379     int action_with_valid_bit[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* If set, then additional bit is added
  23380                                            in payload to indicate weather this
  23381                                            action is valid. */
  23382     uint8 name[BCM_FIELD_MAX_SHORT_NAME_LEN]; /* String for application use. */
  23383 } bcm_field_ace_format_info_t;
  23384 
  23385 /* Initialize the bcm_field_ace_format_info_t structure. */
  23386 extern void bcm_field_ace_format_info_t_init(
  23387     bcm_field_ace_format_info_t *ace_format_info);
  23388 
  23389 #ifndef BCM_HIDE_DISPATCHABLE
  23390 
  23391 /* 
  23392  * This function adds new ACE field format to Egress-PMF stage. This
  23393  * format uses an ACE table (PPMC table) lookup for MC replication
  23394  * entries and ACE pointers.Aligns field group add and field group
  23395  * context attach.
  23396  */
  23397 extern int bcm_field_ace_format_add(
  23398     int unit, 
  23399     uint32 flags, 
  23400     bcm_field_ace_format_info_t *ace_format_info, 
  23401     bcm_field_ace_format_t *ace_format_id );
  23402 
  23403 /* Get the information about a specific ACE format. */
  23404 extern int bcm_field_ace_format_info_get(
  23405     int unit, 
  23406     bcm_field_ace_format_t ace_format_id, 
  23407     bcm_field_ace_format_info_t *ace_format_info);
  23408 
  23409 /* 
  23410  * This function deletes an ACE format, deallocates all relevant
  23411  * resources.
  23412  */
  23413 extern int bcm_field_ace_format_delete(
  23414     int unit, 
  23415     bcm_field_ace_format_t ace_format_id);
  23416 
  23417 #endif /* BCM_HIDE_DISPATCHABLE */
  23418 
  23419 /* This structure holds detailed info for ACE field entry. */
  23420 typedef struct bcm_field_ace_entry_info_s {
  23421     int nof_entry_actions;              /* Number of valid actions in the ACE
  23422                                            field entry. */
  23423     bcm_field_entry_action_t entry_action[BCM_FIELD_NUMBER_OF_ACTIONS_PER_GROUP]; /* Entry actions info including type,
  23424                                            value.. */
  23425 } bcm_field_ace_entry_info_t;
  23426 
  23427 /* Initialize the bcm_field_ace_entry_info_t structure. */
  23428 extern void bcm_field_ace_entry_info_t_init(
  23429     bcm_field_ace_entry_info_t *entry_info);
  23430 
  23431 #ifndef BCM_HIDE_DISPATCHABLE
  23432 
  23433 /* This function adds new entry in hardware to indicated ACE format. */
  23434 extern int bcm_field_ace_entry_add(
  23435     int unit, 
  23436     uint32 flags, 
  23437     bcm_field_ace_format_t ace_format_id , 
  23438     bcm_field_ace_entry_info_t *entry_info, 
  23439     uint32 *entry_handle);
  23440 
  23441 /* 
  23442  * This function retrieves the entry information of a specific ACE Format
  23443  * ID.
  23444  */
  23445 extern int bcm_field_ace_entry_info_get(
  23446     int unit, 
  23447     uint32 entry_handle, 
  23448     bcm_field_ace_entry_info_t *entry_info);
  23449 
  23450 /* This function deletes an ACE entry from hardware. */
  23451 extern int bcm_field_ace_entry_delete(
  23452     int unit, 
  23453     uint32 entry_handle);
  23454 
  23455 #endif /* BCM_HIDE_DISPATCHABLE */
  23456 
  23457 /* 
  23458  * Indicates the first user action id to avoid overlapping with static
  23459  * ones.
  23460  */
  23461 #define BCM_FIELD_FIRST_USER_ACTION_ID  (2048)     
  23462 
  23463 /* 
  23464  * Indicates the first user qualifier id to avoid overlapping with static
  23465  * ones
  23466  */
  23467 #define BCM_FIELD_FIRST_USER_QUALIFIER_ID   (2048)     
  23468 
  23469 /* Calculates the User Defined action id. */
  23470 #define BCM_FIELD_ACTION_ID_MAP(user_action_id)  (BCM_FIELD_FIRST_USER_ACTION_ID + user_action_id) 
  23471 
  23472 /* Calculates the User Defined qualifier id. */
  23473 #define BCM_FIELD_QUALIFIER_ID_MAP(user_qualifier_id)  (BCM_FIELD_FIRST_USER_QUALIFIER_ID + user_qualifier_id) 
  23474 
  23475 /* 
  23476  * This enum contains all 'param_type' values that can be passed to the
  23477  * bcm_field_context_param_set() function.
  23478  */
  23479 typedef enum bcm_field_context_param_type_e {
  23480     bcmFieldContextParamTypeFirst = 0,  /* Invalid Param. */
  23481     bcmFieldContextParamTypeSystemHeaderProfile = bcmFieldContextParamTypeFirst, /* Selects a system header profile to
  23482                                            determine which headers will be
  23483                                            appended to packets matching the
  23484                                            context. */
  23485     bcmFieldContextParamTypeSystemHeaderStrip = 1, /* Packet strip parameters - bytes and
  23486                                            headers to remove. */
  23487     bcmFieldContextParamTypeKeyVal = 2, /* Set a constant value that can be used
  23488                                            as qualifier for lookups performed by
  23489                                            the context. */
  23490     bcmFieldContextParamCount = 3       /* Always last. Not a usable value. */
  23491 } bcm_field_context_param_type_t;
  23492 
  23493 /* 
  23494  * This structure holds all parameters, which can be set by
  23495  * bcm_field_context_param_set() for a specific context.
  23496  */
  23497 typedef struct bcm_field_context_param_info_s {
  23498     bcm_field_context_param_type_t param_type; /* The type of the parameter to set. */
  23499     uint32 param_arg;                   /* Extra arg for the parameter to set. */
  23500     uint32 param_val;                   /* The value to set for the given
  23501                                            parameter. */
  23502 } bcm_field_context_param_info_t;
  23503 
  23504 /* Initialize the bcm_field_context_param_info_t structure. */
  23505 extern void bcm_field_context_param_info_t_init(
  23506     bcm_field_context_param_info_t *context_params);
  23507 
  23508 #ifndef BCM_HIDE_DISPATCHABLE
  23509 
  23510 /* This function sets specific attribute value for a context. */
  23511 extern int bcm_field_context_param_set(
  23512     int unit, 
  23513     uint32 flags, 
  23514     bcm_field_stage_t stage, 
  23515     bcm_field_context_t context_id, 
  23516     bcm_field_context_param_info_t *context_params);
  23517 
  23518 #endif /* BCM_HIDE_DISPATCHABLE */
  23519 
  23520 /* Container of 4-bits identifiers of a FEM. */
  23521 typedef uint8 bcm_field_fem_id_t;
  23522 
  23523 /* 
  23524  * Indicates the maximum number of conditions per FEM(Field Extraction
  23525  * Macro).
  23526  */
  23527 #define BCM_FIELD_NUMBER_OF_CONDITIONS_PER_FEM (16)       
  23528 
  23529 /* 
  23530  * Indicates the maximum number of extractions per FEM(Field Extraction
  23531  * Macro).
  23532  */
  23533 #define BCM_FIELD_NUMBER_OF_EXTRACTIONS_PER_FEM (4)        
  23534 
  23535 /* 
  23536  * Indicates the maximum number of mapping bits per FEM(Field Extraction
  23537  * Macro).
  23538  */
  23539 #define BCM_FIELD_NUMBER_OF_MAPPING_BITS_PER_FEM (24)       
  23540 
  23541 /* 
  23542  * This Enum used to select the source type for the output bit of action
  23543  * extraction.
  23544  */
  23545 typedef enum bcm_field_fem_extraction_output_source_type_e {
  23546     bcmFieldFemExtractionOutputSourceTypeFirst = 0, /* Invalid Param. */
  23547     bcmFieldFemExtractionOutputSourceTypeForce = bcmFieldFemExtractionOutputSourceTypeFirst, /* Use a constant value for this bit. */
  23548     bcmFieldFemExtractionOutputSourceTypeKey = 1, /* Use a bit from the input key. */
  23549     bcmFieldFemExtractionOutputSourceTypeCount = 2 /* Always last. Not a usable value. */
  23550 } bcm_field_fem_extraction_output_source_type_t;
  23551 
  23552 /* This structure holds detailed info for FEM condition info. */
  23553 typedef struct bcm_field_fem_extraction_output_bit_s {
  23554     bcm_field_fem_extraction_output_source_type_t source_type; /* Output source type. */
  23555     uint8 offset;                       /* Offset from key select. */
  23556     uint8 forced_value;                 /* Force bit value in case source type
  23557                                            == force. */
  23558 } bcm_field_fem_extraction_output_bit_t;
  23559 
  23560 /* This structure holds detailed info for FEM extraction info. */
  23561 typedef struct bcm_field_fem_extraction_s {
  23562     bcm_field_action_t action_type;     /* Action type to be performed by this
  23563                                            extraction. */
  23564     bcm_field_fem_extraction_output_bit_t output_bit[BCM_FIELD_NUMBER_OF_MAPPING_BITS_PER_FEM]; /* Array of extraction commands. Each
  23565                                            extract 1 bit of the action value. */
  23566     uint32 increment;                   /* Add a constant value to the result of
  23567                                            the extraction. */
  23568 } bcm_field_fem_extraction_t;
  23569 
  23570 /* This structure holds detailed info for FEM condition info. */
  23571 typedef struct bcm_field_fem_condition_s {
  23572     uint8 extraction_id;    /* Choose one of 4 action extraction tables that
  23573                                will produce an action. */
  23574     uint8 is_action_valid;  /* If TRUE, the FEM will produce an action for the
  23575                                given 4 bits word. */
  23576 } bcm_field_fem_condition_t;
  23577 
  23578 /* This structure holds detailed info for FEM input info. */
  23579 typedef struct bcm_field_fem_input_info_s {
  23580     uint8 input_offset;                 /* Offset inside the FG-ID result
  23581                                            buffer. The FEM input is 32 bits
  23582                                            long.  When the FG result buffer is
  23583                                            longer than 32 bits, offset is
  23584                                            required (in resolution of 16 bits). */
  23585     bcm_field_group_t overriding_fg_id; /* If valid FG-ID,  override the main
  23586                                            group result buffer with 16 bits
  23587                                            result from this specified TCAM-FG
  23588                                            result. */
  23589 } bcm_field_fem_input_info_t;
  23590 
  23591 /* This structure holds detailed info for FEM action info. */
  23592 typedef struct bcm_field_fem_action_info_s {
  23593     bcm_field_fem_input_info_t fem_input; /* Structure holds all FEM input
  23594                                            information. */
  23595     uint8 condition_msb;                /* Select the MSB of a 4 bit chunk that
  23596                                            will choose extraction tables ID
  23597                                            taken from the 32 input bits selected
  23598                                            by input offset (range of 3-31). */
  23599     bcm_field_fem_condition_t fem_condition[BCM_FIELD_NUMBER_OF_CONDITIONS_PER_FEM]; /* Array of structures, each describing
  23600                                            the condition information for the
  23601                                            FEM. */
  23602     bcm_field_fem_extraction_t fem_extraction[BCM_FIELD_NUMBER_OF_EXTRACTIONS_PER_FEM]; /* Array of structures, each describes
  23603                                            the extraction information for the
  23604                                            FEM,action combination including
  23605                                            action type, how to construct the
  23606                                            action values out of the 32 input 
  23607                                            bits, and option for an increment for
  23608                                            adding constant value for the result
  23609                                            of the extraction. */
  23610 } bcm_field_fem_action_info_t;
  23611 
  23612 /* Initialize the bcm_field_fem_action_info_t structure. */
  23613 extern void bcm_field_fem_action_info_t_init(
  23614     bcm_field_fem_action_info_t *fem_action_info);
  23615 
  23616 #ifndef BCM_HIDE_DISPATCHABLE
  23617 
  23618 /* 
  23619  * This function adds FEM machine as a resource to a specific field
  23620  * group.
  23621  */
  23622 extern int bcm_field_fem_action_add(
  23623     int unit, 
  23624     uint32 flags, 
  23625     bcm_field_group_t fg_id, 
  23626     bcm_field_action_priority_t encoded_position, 
  23627     bcm_field_fem_action_info_t *fem_action_info);
  23628 
  23629 /* 
  23630  * This function give the caller all info concerning contents of FEM
  23631  * machine's HW and, also, some SW values (SWSTATE).
  23632  */
  23633 extern int bcm_field_fem_action_info_get(
  23634     int unit, 
  23635     bcm_field_group_t fg_id, 
  23636     bcm_field_action_priority_t encoded_position, 
  23637     bcm_field_fem_action_info_t *fem_action_info);
  23638 
  23639 /* 
  23640  * This function sets FEM machine's HW and SW values (SWSTATE) to initial
  23641  * values.
  23642  */
  23643 extern int bcm_field_fem_action_delete(
  23644     int unit, 
  23645     bcm_field_group_t fg_id, 
  23646     bcm_field_action_priority_t bcm_field_action_priority_t);
  23647 
  23648 #endif /* BCM_HIDE_DISPATCHABLE */
  23649 
  23650 /* 
  23651  * The mask of position of the preferred location within the FES-FEM
  23652  * array.
  23653  */
  23654 #define BCM_FIELD_ACTION_POSITION_MASK  (0xFFFF)   
  23655 
  23656 /* 
  23657  * The mask of priority of the preferred location within the FES-FEM
  23658  * array.
  23659  */
  23660 #define BCM_FIELD_ACTION_PRIORITY_MASK  (0xFFFF)   
  23661 
  23662 /* The mask of the preferred FES-FEM array. */
  23663 #define BCM_FIELD_ACTION_ARRAY_MASK (0xF)      
  23664 
  23665 /* The offset of the preferred FES-FEM array. */
  23666 #define BCM_FIELD_ACTION_ARRAY_OFFSET   (16)       
  23667 
  23668 /* The offset inside the FES-FEM array, where the valid bid is located. */
  23669 #define BCM_FIELD_ACTION_VALID_OFFSET   (31)       
  23670 
  23671 /* 
  23672  * The value of the bit is reserved for BCM_FIELD_ACTION_DONT_CARE 'don't
  23673  * care'. 0 means we care about position.
  23674  */
  23675 #define BCM_FIELD_ACTION_DONT_CARE_OFFSET   (30)       
  23676 
  23677 /* 
  23678  * The action priority used to indicate that we don't care about the
  23679  * priority.
  23680  */
  23681 #define BCM_FIELD_ACTION_DONT_CARE  ((1 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | (1 << BCM_FIELD_ACTION_VALID_OFFSET)) 
  23682 
  23683 /* 
  23684  * Flag to indicate position or priority. 1 means we indicate a specific
  23685  * position. 0 means we indicate a numerical priority.
  23686  */
  23687 #define BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET (20)       
  23688 
  23689 #define BCM_FIELD_ACTION_POSITION(_array_id_, _position_)  \
  23690     (((((bcm_field_action_priority_t) (_position_)) & BCM_FIELD_ACTION_POSITION_MASK) | \
  23691       ((((bcm_field_action_priority_t) (_array_id_)) & BCM_FIELD_ACTION_ARRAY_MASK) \
  23692          << BCM_FIELD_ACTION_ARRAY_OFFSET) | \
  23693         (1 << BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET) | \
  23694         ((0 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | \
  23695         (1 << BCM_FIELD_ACTION_VALID_OFFSET)))) 
  23696 
  23697 #define BCM_FIELD_ACTION_PRIORITY(_array_id_, _priority_)  \
  23698     (((((bcm_field_action_priority_t) (_priority_)) & BCM_FIELD_ACTION_PRIORITY_MASK) | \
  23699       (((bcm_field_action_priority_t) (_array_id_)) << BCM_FIELD_ACTION_ARRAY_OFFSET) | \
  23700         (0 << BCM_FIELD_ACTION_POSITION_PRIORITY_FLAG_OFFSET) | \
  23701         ((0 << BCM_FIELD_ACTION_DONT_CARE_OFFSET) | \
  23702         (1 << BCM_FIELD_ACTION_VALID_OFFSET)))) 
  23703 
  23704 /* 
  23705  * The Enum described the system header profile types, which are used in
  23706  * order to build the appropriate system headers in the Ingress Transmit
  23707  * unit.
  23708  */
  23709 typedef enum bcm_field_system_header_profile_e {
  23710     bcmFieldSystemHeaderProfileFirst = 0, /* Invalid Param. */
  23711     bcmFieldSystemHeaderProfileNone = bcmFieldSystemHeaderProfileFirst, /* No system Headers. */
  23712     bcmFieldSystemHeaderProfileFtmh = 1, /* FTMH only. */
  23713     bcmFieldSystemHeaderProfileFtmhPph = 2, /* FTMH + PP header. */
  23714     bcmFieldSystemHeaderProfileFtmhTsh = 3, /* FTMH + Timestamp header. */
  23715     bcmFieldSystemHeaderProfileFtmhTshPph = 4, /* FTMH +Timestamp +PP header. */
  23716     bcmFieldSystemHeaderProfileFtmhTshPphUdh = 5, /* FTMH +Timestamp +PP header + User
  23717                                            defined Header. Used for Ethernet
  23718                                            header. */
  23719     bcmFieldSystemHeaderProfileCount = 6 /* Always last. Not a usable value. */
  23720 } bcm_field_system_header_profile_t;
  23721 
  23722 #define BCM_FIELD_SYSTEM_HEADER_PROFILE_STRINGS \
  23723 { \
  23724     "None", \
  23725     "Ftmh", \
  23726     "FtmhPph", \
  23727     "FtmhTsh", \
  23728     "FtmhTshPph", \
  23729     "FtmhTshPphUdh"  \
  23730 }
  23731 
  23732 /* Range Qualifier Types */
  23733 typedef enum bcm_field_range_type_e {
  23734     bcmFieldRangeTypeFirst = 0,         /* Invalid Param. */
  23735     bcmFieldRangeTypeL4SrcPort = bcmFieldRangeTypeFirst, /* L4 Source Port Range Qualifier. */
  23736     bcmFieldRangeTypeL4DstPort = 1,     /*  L4 Destination Port Range Qualifier. */
  23737     bcmFieldRangeTypeOutVport = 2,      /* Egress Virtual Port Range Qualifier. */
  23738     bcmFieldRangeTypePacketHeaderSize = 3, /* Packet Header Size Range Qualifier. */
  23739     bcmFieldRangeTypeCount = 4          /* Always last. Not a usable value. */
  23740 } bcm_field_range_type_t;
  23741 
  23742 /* 
  23743  * This structure holds the info about range configuration, needed for
  23744  * bcm_field_range_set API.
  23745  */
  23746 typedef struct bcm_field_range_info_s {
  23747     bcm_field_range_type_t range_type;  /* Range type */
  23748     uint32 min_val;                     /* Minimum value of the range. */
  23749     uint32 max_val;                     /* Maximum value of the range. */
  23750 } bcm_field_range_info_t;
  23751 
  23752 #ifndef BCM_HIDE_DISPATCHABLE
  23753 
  23754 /* Set new Field Range used for range qualfier. */
  23755 extern int bcm_field_range_set(
  23756     int unit, 
  23757     uint32 flags, 
  23758     bcm_field_stage_t stage, 
  23759     bcm_field_range_t range_id, 
  23760     bcm_field_range_info_t *range_info);
  23761 
  23762 /* Get the information about a specific Range used for range qualfier */
  23763 extern int bcm_field_range_info_get(
  23764     int unit, 
  23765     bcm_field_stage_t stage, 
  23766     bcm_field_range_t *range_id, 
  23767     bcm_field_range_info_t *range_info);
  23768 
  23769 /* Get the offset of the qualifier in the key. */
  23770 extern int bcm_field_group_qualifier_offset_get(
  23771     int unit, 
  23772     uint32 flags, 
  23773     bcm_field_group_t fg_id, 
  23774     bcm_field_qualify_t qualifier, 
  23775     int *offset);
  23776 
  23777 /* Get the offset of the action in the action payload. */
  23778 extern int bcm_field_group_action_offset_get(
  23779     int unit, 
  23780     uint32 flags, 
  23781     bcm_field_group_t fg_id, 
  23782     bcm_field_action_t action, 
  23783     int *offset);
  23784 
  23785 #endif /* BCM_HIDE_DISPATCHABLE */
  23786 
  23787 /* Forwarding Layer Types. */
  23788 typedef enum bcm_field_layer_type_e {
  23789     bcmFieldLayerTypeFirst = 0, 
  23790     bcmFieldLayerTypeEth = bcmFieldLayerTypeFirst, 
  23791     bcmFieldLayerTypeIp4 = 1, 
  23792     bcmFieldLayerTypeIp6 = 2, 
  23793     bcmFieldLayerTypeMpls = 3, 
  23794     bcmFieldLayerTypeMplsUa = 4, 
  23795     bcmFieldLayerTypeArp = 5, 
  23796     bcmFieldLayerTypeFcoe = 6, 
  23797     bcmFieldLayerTypeTcp = 7, 
  23798     bcmFieldLayerTypeUdp = 8, 
  23799     bcmFieldLayerTypeBfdSingleHop = 9, 
  23800     bcmFieldLayerTypeBfdMultiHop = 10, 
  23801     bcmFieldLayerTypePtpEvent = 11, 
  23802     bcmFieldLayerTypePtpGeneral = 12, 
  23803     bcmFieldLayerTypeY1731 = 13, 
  23804     bcmFieldLayerTypeIcmp = 14, 
  23805     bcmFieldLayerTypeBierTi = 15, 
  23806     bcmFieldLayerTypeBierMpls = 16, 
  23807     bcmFieldLayerTypeRch = 17, 
  23808     bcmFieldLayerTypePppoe = 18, 
  23809     bcmFieldLayerTypeSrv6Endpoint = 19, 
  23810     bcmFieldLayerTypeSrv6Beyond = 20, 
  23811     bcmFieldLayerTypeIgmp = 21, 
  23812     bcmFieldLayerTypeIpAny = 22, 
  23813     bcmFieldLayerTypeGre = 23, 
  23814     bcmFieldLayerTypeLt2pv3 = 24, 
  23815     bcmFieldLayerTypeVxlanGpe = 25, 
  23816     bcmFieldLayerTypeVxlan = 26, 
  23817     bcmFieldLayerTypeGeneve = 27, 
  23818     bcmFieldLayerTypeIpt = 28, 
  23819     bcmFieldLayerTypeTm = 29, 
  23820     bcmFieldLayerTypeUnknown = 30, 
  23821     bcmFieldLayerTypeTmLegacy = 31, 
  23822     bcmFieldLayerTypeCount = 32         /* Always last. Not a usable value. */
  23823 } bcm_field_layer_type_t;
  23824 
  23825 #define BCM_FIELD_LAYER_TYPE_STRINGS \
  23826 { \
  23827     "Eth", \
  23828     "Ip4", \
  23829     "Ip6", \
  23830     "Mpls", \
  23831     "MplsUa", \
  23832     "Arp", \
  23833     "Fcoe", \
  23834     "Tcp", \
  23835     "Udp", \
  23836     "BfdSingleHop", \
  23837     "BfdMultiHop", \
  23838     "PtpEvent", \
  23839     "PtpGeneral", \
  23840     "Y1731", \
  23841     "Icmp", \
  23842     "BierTi", \
  23843     "BierMpls", \
  23844     "Rch", \
  23845     "Pppoe", \
  23846     "Srv6Endpoint", \
  23847     "Srv6Beyond", \
  23848     "Igmp", \
  23849     "IpAny", \
  23850     "Gre", \
  23851     "Lt2pv3", \
  23852     "VxlanGpe", \
  23853     "Vxlan", \
  23854     "Geneve", \
  23855     "Ipt", \
  23856     "Tm", \
  23857     "Unknown", \
  23858     "TmLegacy"  \
  23859 }
  23860 
  23861 /* The place of is_meter bit inside the stat profile. */
  23862 #define BCM_FILED_STAT_IS_METER_SHIFT   (0)        
  23863 
  23864 /* The place of is_lm bit inside the stat profile. */
  23865 #define BCM_FILED_STAT_IS_LM_SHIFT  (1)        
  23866 
  23867 /* The place of stat type bits inside the stat profile. */
  23868 #define BCM_FILED_STAT_TYPE_SHIFT   (2)        
  23869 
  23870 /* The place, whre the valid bit is located, inside the stat profile. */
  23871 #define BCM_FILED_STAT_VALID_SHIFT  (4)        
  23872 
  23873 /* Parameters info for Field Action. */
  23874 typedef struct bcm_field_action_params_s {
  23875     uint32 param0;      /* First Parameter to Action */
  23876     uint32 param1;      /* Second Parameter to Action */
  23877     bcm_pbmp_t pbmp;    /* Port bitmap */
  23878 } bcm_field_action_params_t;
  23879 
  23880 /* Match configuration info for Field Action. */
  23881 typedef struct bcm_field_action_match_config_s {
  23882     uint8 elephant_pkt_only;    /* To match only elephant flows */
  23883     bcm_pbmp_t egr_pbmp;        /* Match Pbmp for Egress Port */
  23884 } bcm_field_action_match_config_t;
  23885 
  23886 #ifndef BCM_HIDE_DISPATCHABLE
  23887 
  23888 /* Add an action to a field entry with a specific match criteria. */
  23889 extern int bcm_field_action_config_info_add(
  23890     int unit, 
  23891     bcm_field_entry_t entry, 
  23892     bcm_field_action_t action, 
  23893     bcm_field_action_params_t *params, 
  23894     bcm_field_action_match_config_t *match_config);
  23895 
  23896 /* Delete an action from a field entry with a specific match criteria. */
  23897 extern int bcm_field_action_config_info_get(
  23898     int unit, 
  23899     bcm_field_entry_t entry, 
  23900     bcm_field_action_t action, 
  23901     bcm_field_action_params_t *params, 
  23902     bcm_field_action_match_config_t *match_config);
  23903 
  23904 /* 
  23905  * Configure match criteria for bcmFieldQualifyRangeCheckGroup
  23906  *         qualifier from the field entry.
  23907  */
  23908 extern int bcm_field_qualify_RangeCheckGroup(
  23909     int unit, 
  23910     bcm_field_entry_t entry, 
  23911     uint8 data, 
  23912     uint8 mask);
  23913 
  23914 /* 
  23915  * Get match criteria for bcmFieldQualifyRangeCheckGroup
  23916  *                qualifier from the field entry.
  23917  */
  23918 extern int bcm_field_qualify_RangeCheckGroup_get(
  23919     int unit, 
  23920     bcm_field_entry_t entry, 
  23921     uint8 *data, 
  23922     uint8 *mask);
  23923 
  23924 /* 
  23925  * Qualifies on Flow group id assigned(bcmFieldActionFlowtrackerGroupId)
  23926  * by FlowTracker based Field Processor Stage.
  23927  */
  23928 extern int bcm_field_qualify_FlowtrackerGroupId(
  23929     int unit, 
  23930     bcm_field_entry_t entry, 
  23931     int data, 
  23932     int mask);
  23933 
  23934 /* 
  23935  * To get the qualified inputs on Flow group id assigned
  23936  * (bcmFieldActionFlowtrackerGroupId) by FlowTracker based Field
  23937  * Processor Stage.
  23938  */
  23939 extern int bcm_field_qualify_FlowtrackerGroupId_get(
  23940     int unit, 
  23941     bcm_field_entry_t entry, 
  23942     int *data, 
  23943     int *mask);
  23944 
  23945 /* Qualifies on Classifier ID from Flowtracker group */
  23946 extern int bcm_field_qualify_FlowtrackerClassId(
  23947     int unit, 
  23948     bcm_field_entry_t entry, 
  23949     int data, 
  23950     int mask);
  23951 
  23952 /* To get the qualified inputs on Classifier ID from Flowtracker group. */
  23953 extern int bcm_field_qualify_FlowtrackerClassId_get(
  23954     int unit, 
  23955     bcm_field_entry_t entry, 
  23956     int *data, 
  23957     int *mask);
  23958 
  23959 /* Qualifies on event Flowtracker group valid or not. */
  23960 extern int bcm_field_qualify_FlowtrackerGroupValid(
  23961     int unit, 
  23962     bcm_field_entry_t entry, 
  23963     uint8 data, 
  23964     uint8 mask);
  23965 
  23966 /* To get the qualified inputs on event Flowtracker group valid or not */
  23967 extern int bcm_field_qualify_FlowtrackerGroupValid_get(
  23968     int unit, 
  23969     bcm_field_entry_t entry, 
  23970     uint8 *data, 
  23971     uint8 *mask);
  23972 
  23973 /* Qualifies on event whether Flowtracker flow tracking is disabled. */
  23974 extern int bcm_field_qualify_FlowtrackerDisabled(
  23975     int unit, 
  23976     bcm_field_entry_t entry, 
  23977     uint8 data, 
  23978     uint8 mask);
  23979 
  23980 /* 
  23981  * To get the qualified inputs on event whether Flowtracker flow tracking
  23982  * is disabled.
  23983  */
  23984 extern int bcm_field_qualify_FlowtrackerDisabled_get(
  23985     int unit, 
  23986     bcm_field_entry_t entry, 
  23987     uint8 *data, 
  23988     uint8 *mask);
  23989 
  23990 /* Qualifies on event Flowtracker group valid or not. */
  23991 extern int bcm_field_qualify_FlowtrackerMeteringExceeded(
  23992     int unit, 
  23993     bcm_field_entry_t entry, 
  23994     uint8 data, 
  23995     uint8 mask);
  23996 
  23997 /* 
  23998  * To get the qualified inputs on event whether Flowtracker metering is
  23999  * exceeded.
  24000  */
  24001 extern int bcm_field_qualify_FlowtrackerMeteringExceeded_get(
  24002     int unit, 
  24003     bcm_field_entry_t entry, 
  24004     uint8 *data, 
  24005     uint8 *mask);
  24006 
  24007 /* 
  24008  * Qualifies on the event whether initial or sample copied to collector
  24009  * happened by Flowtracker.
  24010  */
  24011 extern int bcm_field_qualify_FlowtrackerCollectorCopy(
  24012     int unit, 
  24013     bcm_field_entry_t entry, 
  24014     uint8 data, 
  24015     uint8 mask);
  24016 
  24017 /* 
  24018  * To get the qualified inputs on event whether initial or sample copied
  24019  * to collector happened by Flowtracker.
  24020  */
  24021 extern int bcm_field_qualify_FlowtrackerCollectorCopy_get(
  24022     int unit, 
  24023     bcm_field_entry_t entry, 
  24024     uint8 *data, 
  24025     uint8 *mask);
  24026 
  24027 /* Qualifies on the Flowtracker event whether the flow table is full. */
  24028 extern int bcm_field_qualify_FlowtrackerFlowTableFull(
  24029     int unit, 
  24030     bcm_field_entry_t entry, 
  24031     uint8 data, 
  24032     uint8 mask);
  24033 
  24034 /* 
  24035  * To get the qualified inputs on Flowtracker event whether the flow
  24036  * table is full.
  24037  */
  24038 extern int bcm_field_qualify_FlowtrackerFlowTableFull_get(
  24039     int unit, 
  24040     bcm_field_entry_t entry, 
  24041     uint8 *data, 
  24042     uint8 *mask);
  24043 
  24044 /* Qualifies on the event whether flow limit for Flowtracker is exceeded. */
  24045 extern int bcm_field_qualify_FlowtrackerGroupFlowExceeded(
  24046     int unit, 
  24047     bcm_field_entry_t entry, 
  24048     uint8 data, 
  24049     uint8 mask);
  24050 
  24051 /* 
  24052  * To get the qualified inputs on the event  whether flow limit for
  24053  * Flowtracker is exceeded.
  24054  */
  24055 extern int bcm_field_qualify_FlowtrackerGroupFlowExceeded_get(
  24056     int unit, 
  24057     bcm_field_entry_t entry, 
  24058     uint8 *data, 
  24059     uint8 *mask);
  24060 
  24061 /* Qualifies on the event whether Flowtracker export queue is full. */
  24062 extern int bcm_field_qualify_FlowtrackerExportQueueFull(
  24063     int unit, 
  24064     bcm_field_entry_t entry, 
  24065     uint8 data, 
  24066     uint8 mask);
  24067 
  24068 /* 
  24069  * To get the qualified inputs on the event whether Flowtracker export
  24070  * queue is full.
  24071  */
  24072 extern int bcm_field_qualify_FlowtrackerExportQueueFull_get(
  24073     int unit, 
  24074     bcm_field_entry_t entry, 
  24075     uint8 *data, 
  24076     uint8 *mask);
  24077 
  24078 #endif /* BCM_HIDE_DISPATCHABLE */
  24079 
  24080 /* Initialize the bcm_field_range_info_t structure. */
  24081 extern void bcm_field_range_info_t_init(
  24082     bcm_field_range_info_t *range_info);
  24083 
  24084 #ifndef BCM_HIDE_DISPATCHABLE
  24085 
  24086 /* Qualifies on the tag type configured for opaque tags. */
  24087 extern int bcm_field_qualify_OpaqueTagType(
  24088     int unit, 
  24089     bcm_field_entry_t entry, 
  24090     uint8 data, 
  24091     uint8 mask);
  24092 
  24093 /* 
  24094  * To get the qualified inputs on the tag type configured for opaque
  24095  * tags.
  24096  */
  24097 extern int bcm_field_qualify_OpaqueTagType_get(
  24098     int unit, 
  24099     bcm_field_entry_t entry, 
  24100     uint8 *data, 
  24101     uint8 *mask);
  24102 
  24103 /* Qualifies on the higher 32 bits of opaque tag allowed in the system */
  24104 extern int bcm_field_qualify_OpaqueTagHigh(
  24105     int unit, 
  24106     bcm_field_entry_t entry, 
  24107     uint32 data, 
  24108     uint32 mask);
  24109 
  24110 /* 
  24111  * To get the qualified inputs on the higher 32 bits of opaque tag
  24112  * allowed in the system.
  24113  */
  24114 extern int bcm_field_qualify_OpaqueTagHigh_get(
  24115     int unit, 
  24116     bcm_field_entry_t entry, 
  24117     uint32 *data, 
  24118     uint32 *mask);
  24119 
  24120 /* Qualifies on the lower 32 bits of opaque tag allowed in the system */
  24121 extern int bcm_field_qualify_OpaqueTagLow(
  24122     int unit, 
  24123     bcm_field_entry_t entry, 
  24124     uint32 data, 
  24125     uint32 mask);
  24126 
  24127 /* 
  24128  * To get the qualified inputs on the lower 32 bits of opaque tag allowed
  24129  * in the system.
  24130  */
  24131 extern int bcm_field_qualify_OpaqueTagLow_get(
  24132     int unit, 
  24133     bcm_field_entry_t entry, 
  24134     uint32 *data, 
  24135     uint32 *mask);
  24136 
  24137 #endif /* BCM_HIDE_DISPATCHABLE */
  24138 
  24139 /* Dos Attack Events. */
  24140 #define BCM_FIELD_DOSATTACK_MACSA_DA_SAME   (1 << 0)   /* Dos Attack Event when
  24141                                                           Source MAC is same as
  24142                                                           Destination MAC. */
  24143 #define BCM_FIELD_DOSATTACK_IPFRAG_OFFSET   (1 << 1)   /* Dos Attack Event when
  24144                                                           Protocol field Offset
  24145                                                           in IPv4 Header is
  24146                                                           equal to 1. */
  24147 #define BCM_FIELD_DOSATTACK_V6_TYPE0_ROUTING_HDR (1 << 2)   /* Dos Attack Event when
  24148                                                           Type0 Routing
  24149                                                           Extension header is
  24150                                                           present in IPv6. */
  24151 #define BCM_FIELD_DOSATTACK_V6_NON_LAST_FRAG_LT_1280 (1 << 3)   /* Dos Attack Event when
  24152                                                           non-last fragment of
  24153                                                           IPv6 Packet is less
  24154                                                           than 1280 bytes. */
  24155 #define BCM_FIELD_DOSATTACK_FIRST_TCPIP_FRAG_SMALL (1 << 4)   /* Dos Attack Event when
  24156                                                           First Fragment of IP
  24157                                                           payload with TCP is
  24158                                                           smaller than
  24159                                                           configured value. */
  24160 #define BCM_FIELD_DOSATTACK_TCP_OFFSET      (1 << 5)   /* Dos Attack Event when
  24161                                                           L4 is TCP and IP
  24162                                                           protocol offset is
  24163                                                           equal to 1. */
  24164 #define BCM_FIELD_DOSATTACK_SYN_FRAG        (1 << 6)   /* Dos Attack Event when
  24165                                                           TCP SYN Packet with
  24166                                                           Source Port 0-1023 for
  24167                                                           non-first fragments
  24168                                                           tcp/udp port values
  24169                                                           are always zero. */
  24170 #define BCM_FIELD_DOSATTACK_FLAGZERO_SEQZERO (1 << 7)   /* Dos Attack Event when
  24171                                                           TCP Packets with
  24172                                                           control flags == 0 and
  24173                                                           sequence number == 0. */
  24174 #define BCM_FIELD_DOSATTACK_TCPFLAGS_FUP    (1 << 8)   /* Dos Attack Event when
  24175                                                           TCP Packets with
  24176                                                           FIN,URG & PSH bits set
  24177                                                           & sequence number ==
  24178                                                           0. */
  24179 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SF     (1 << 9)   /* Dos Attack Event when
  24180                                                           TCP packets with SYN
  24181                                                           and FIN set. */
  24182 #define BCM_FIELD_DOSATTACK_TCPPORTS_EQUAL  (1 << 10)  /* Dos Attack Event when
  24183                                                           TCP Source and
  24184                                                           Destination ports are
  24185                                                           same. */
  24186 #define BCM_FIELD_DOSATTACK_UDPPORTS_EQUAL  (1 << 11)  /* Dos Attack Event when
  24187                                                           UDP Source and
  24188                                                           Destination ports are
  24189                                                           same. */
  24190 #define BCM_FIELD_DOSATTACK_ICMP            (1 << 12)  /* Dos Attack Event when
  24191                                                           ICMP V4 and V6 ping
  24192                                                           packet with payload
  24193                                                           bigger than configured
  24194                                                           value. */
  24195 #define BCM_FIELD_DOSATTACK_ICMPFRAGMENTS   (1 << 13)  /* Dos Attack Event when
  24196                                                           IPv4/IPv6 fragmented
  24197                                                           ICMP packets. */
  24198 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SR     (1 << 14)  /* Dos Attack Event when
  24199                                                           TCP packets with SYN
  24200                                                           and RST set. */
  24201 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SYN_FIRSTFRAG (1 << 15)  /* Dos Attack Event when
  24202                                                           TCP with SYN set and
  24203                                                           first fragment of
  24204                                                           fragmented IP packet. */
  24205 #define BCM_FIELD_DOSATTACK_TCPFLAGS_FIN_NOACK (1 << 16)  /* Dos Attack Event when
  24206                                                           TCP packet with FIN
  24207                                                           set but ACK not set. */
  24208 #define BCM_FIELD_DOSATTACK_TCPFLAGS_RST_NOACK (1 << 17)  /* Dos Attack Event when
  24209                                                           TCP packet with RST
  24210                                                           set but ACK not set. */
  24211 #define BCM_FIELD_DOSATTACK_TCPFLAGS_NOSFRA (1 << 18)  /* Dos Attack Event when
  24212                                                           TCP packet with SYN,
  24213                                                           FIN, RST and ACK not
  24214                                                           set. */
  24215 #define BCM_FIELD_DOSATTACK_TCP_DSTPORT_ZERO (1 << 19)  /* Dos Attack Event when
  24216                                                           TCP packet with
  24217                                                           Destination port
  24218                                                           equals to 0. */
  24219 #define BCM_FIELD_DOSATTACK_TCP_SRCPORT_ZERO (1 << 20)  /* Dos Attack Event when
  24220                                                           TCP packet with Source
  24221                                                           port equals to 0. */
  24222 #define BCM_FIELD_DOSATTACK_TCP_DST_IP_BCAST (1 << 21)  /* Dos Attack Event when
  24223                                                           TCP Packet with
  24224                                                           Destination IP
  24225                                                           Broadcast. */
  24226 #define BCM_FIELD_DOSATTACK_TCPFLAGS_ZERO   (1 << 22)  /* Dos Attack Event when
  24227                                                           configured TCP flags
  24228                                                           is zero. */
  24229 #define BCM_FIELD_DOSATTACK_TCPFLAGS_RESVD_NONZERO (1 << 23)  /* Dos Attack Event when
  24230                                                           configured Reserved
  24231                                                           flags is non-zero. */
  24232 #define BCM_FIELD_DOSATTACK_TCPFLAGS_ACK    (1 << 24)  /* Dos Attack Event when
  24233                                                           TCP flag ACK is set
  24234                                                           and Acknowledge number
  24235                                                           is zero. */
  24236 #define BCM_FIELD_DOSATTACK_TCPFLAGS_URG_NOURGPTR (1 << 25)  /* Dos Attack Event when
  24237                                                           TCP Flag URG set and
  24238                                                           Urgent pointer is
  24239                                                           zero. */
  24240 #define BCM_FIELD_DOSATTACK_TCPFLAGS_NOURG_URGPTR (1 << 26)  /* Dos Attack Event when
  24241                                                           TCP Flag URG not set
  24242                                                           and Urgent pointer is
  24243                                                           not zero. */
  24244 #define BCM_FIELD_DOSATTACK_TCPFLAGS_SYNOPTION (1 << 27)  /* Dos Attack Event when
  24245                                                           TCP Flag SYN set and
  24246                                                           Option same as
  24247                                                           configured value. */
  24248 
  24249 #ifndef BCM_HIDE_DISPATCHABLE
  24250 
  24251 /* 
  24252  * Configure match criteria for bcmFieldQualifyInnerDosAttack
  24253  *         qualifier for the field entry.
  24254  */
  24255 extern int bcm_field_qualify_InnerDosAttack(
  24256     int unit, 
  24257     bcm_field_entry_t entry, 
  24258     uint8 data, 
  24259     uint8 mask);
  24260 
  24261 /* 
  24262  * Get match criteria for bcmFieldQualifyInnerDosAttack
  24263  *                qualifier from the field entry.
  24264  */
  24265 extern int bcm_field_qualify_InnerDosAttack_get(
  24266     int unit, 
  24267     bcm_field_entry_t entry, 
  24268     uint8 *data, 
  24269     uint8 *mask);
  24270 
  24271 /* 
  24272  * Configure match criteria for bcmFieldQualifyDosAttackEvents
  24273  *         qualifier for the field entry.
  24274  */
  24275 extern int bcm_field_qualify_DosAttackEvents(
  24276     int unit, 
  24277     bcm_field_entry_t entry, 
  24278     uint32 data, 
  24279     uint32 mask);
  24280 
  24281 /* 
  24282  * Get match criteria for bcmFieldQualifyDosAttackEvents
  24283  *                qualifier from the field entry.
  24284  */
  24285 extern int bcm_field_qualify_DosAttackEvents_get(
  24286     int unit, 
  24287     bcm_field_entry_t entry, 
  24288     uint32 *data, 
  24289     uint32 *mask);
  24290 
  24291 /* 
  24292  * Configure match criteria for bcmFieldQualifyInnerDosAttackEvents
  24293  *         qualifier for the field entry.
  24294  */
  24295 extern int bcm_field_qualify_InnerDosAttackEvents(
  24296     int unit, 
  24297     bcm_field_entry_t entry, 
  24298     uint32 data, 
  24299     uint32 mask);
  24300 
  24301 /* 
  24302  * Get match criteria for bcmFieldQualifyInnerDosAttackEvents
  24303  *                qualifier from the field entry.
  24304  */
  24305 extern int bcm_field_qualify_InnerDosAttackEvents_get(
  24306     int unit, 
  24307     bcm_field_entry_t entry, 
  24308     uint32 *data, 
  24309     uint32 *mask);
  24310 
  24311 #endif /* BCM_HIDE_DISPATCHABLE */
  24312 
  24313 /* Parameters for bcmFieldActionDlbEcmpMonitorEnable */
  24314 #define BCM_FIELD_DLB_ECMP_MON_DISABLE  (1 << 0)   /* Enabling Dlb Ecmp Monitor
  24315                                                       support */
  24316 #define BCM_FIELD_DLB_ECMP_MON_ENABLE   (1 << 1)   /* Disabling Dlb Ecmp Monitor
  24317                                                       support */
  24318 
  24319 #ifndef BCM_HIDE_DISPATCHABLE
  24320 
  24321 /* Set match criteria for Container qualifier. */
  24322 extern int bcm_field_qualify_Container(
  24323     int unit, 
  24324     bcm_field_entry_t entry, 
  24325     uint64 data, 
  24326     uint64 mask);
  24327 
  24328 /* Get match criteria for Container qualifier. */
  24329 extern int bcm_field_qualify_Container_get(
  24330     int unit, 
  24331     bcm_field_entry_t entry, 
  24332     uint64 *data, 
  24333     uint64 *mask);
  24334 
  24335 /* 
  24336  * To Qualify on Class identifier assigned by Egress adaptation
  24337  * forwarding tables.
  24338  */
  24339 extern int bcm_field_qualify_EgressForwardingClassId(
  24340     int unit, 
  24341     bcm_field_entry_t entry, 
  24342     int data, 
  24343     int mask);
  24344 
  24345 /* 
  24346  * To get the qualified inputs on Class identifier assigned by Egress
  24347  * adaptation forwarding tables.
  24348  */
  24349 extern int bcm_field_qualify_EgressForwardingClassId_get(
  24350     int unit, 
  24351     bcm_field_entry_t entry, 
  24352     int *data, 
  24353     int *mask);
  24354 
  24355 #endif /* BCM_HIDE_DISPATCHABLE */
  24356 
  24357 /* bcm_field_pkt_flow_type_e */
  24358 typedef enum bcm_field_pkt_flow_type_e {
  24359     bcmFieldPktFlowTypeTunnelNone = 0,  /* Type to identify non-tunnel flows
  24360                                            like access or transit flows. */
  24361     bcmFieldPktFlowTypeTunnelL2 = 1,    /* Type to identify L2 Tunnel flows. */
  24362     bcmFieldPktFlowTypeTunnelL3 = 2,    /* Type to identify L3 Tunnel flows. */
  24363     bcmFieldPktFlowTypeLastCount = 4    /* Always Last. Not a usable value. */
  24364 } bcm_field_pkt_flow_type_t;
  24365 
  24366 #define BCM_FIELD_PKT_FLOW_TYPE \
  24367 { \
  24368     "TunnelNone", \
  24369     "TunnelL2", \
  24370     "TunnelL3"  \
  24371 }
  24372 
  24373 #ifndef BCM_HIDE_DISPATCHABLE
  24374 
  24375 /* 
  24376  * Set qualification to define packet flow for a given entry. This API is
  24377  * normally used for preselectors.
  24378  */
  24379 extern int bcm_field_qualify_PktFlowType(
  24380     int unit, 
  24381     bcm_field_entry_t entry, 
  24382     bcm_field_pkt_flow_type_t type);
  24383 
  24384 /* 
  24385  * Retrieve packet flow type configured for given entry id. This API is
  24386  * normally used for preselectors.
  24387  */
  24388 extern int bcm_field_qualify_PktFlowType_get(
  24389     int unit, 
  24390     bcm_field_entry_t entry, 
  24391     bcm_field_pkt_flow_type_t *type);
  24392 
  24393 /* To Qualify on Class identifier assigned by Vlan Translate tables. */
  24394 extern int bcm_field_qualify_VlanTranslateClassId(
  24395     int unit, 
  24396     bcm_field_entry_t entry, 
  24397     uint16 data, 
  24398     uint16 mask);
  24399 
  24400 /* 
  24401  * To get the qualified inputs on Class identifier assigned by Vlan
  24402  * Translate tables.
  24403  */
  24404 extern int bcm_field_qualify_VlanTranslateClassId_get(
  24405     int unit, 
  24406     bcm_field_entry_t entry, 
  24407     uint16 *data, 
  24408     uint16 *mask);
  24409 
  24410 /* To Qualify on identifier field available in IP header. */
  24411 extern int bcm_field_qualify_IpIdentifier(
  24412     int unit, 
  24413     bcm_field_entry_t entry, 
  24414     uint16 data, 
  24415     uint16 mask);
  24416 
  24417 /* To get the qualified inputs on IP identifier. */
  24418 extern int bcm_field_qualify_IpIdentifier_get(
  24419     int unit, 
  24420     bcm_field_entry_t entry, 
  24421     uint16 *data, 
  24422     uint16 *mask);
  24423 
  24424 /* 
  24425  * Configure match criteria for bcmFieldQualifyIp4Length
  24426  *         qualifier for the field entry.
  24427  */
  24428 extern int bcm_field_qualify_Ip4Length(
  24429     int unit, 
  24430     bcm_field_entry_t entry, 
  24431     uint16 data, 
  24432     uint16 mask);
  24433 
  24434 /* 
  24435  * Get match criteria for bcmFieldQualifyIp4Length
  24436  *                qualifier from the field entry.
  24437  */
  24438 extern int bcm_field_qualify_Ip4Length_get(
  24439     int unit, 
  24440     bcm_field_entry_t entry, 
  24441     uint16 *data, 
  24442     uint16 *mask);
  24443 
  24444 /* 
  24445  * Configure match criteria for bcmFieldQualifyIp6Length
  24446  *         qualifier for the field entry.
  24447  */
  24448 extern int bcm_field_qualify_Ip6Length(
  24449     int unit, 
  24450     bcm_field_entry_t entry, 
  24451     uint16 data, 
  24452     uint16 mask);
  24453 
  24454 /* 
  24455  * Get match criteria for bcmFieldQualifyIp6Length
  24456  *                qualifier from the field entry.
  24457  */
  24458 extern int bcm_field_qualify_Ip6Length_get(
  24459     int unit, 
  24460     bcm_field_entry_t entry, 
  24461     uint16 *data, 
  24462     uint16 *mask);
  24463 
  24464 /* 
  24465  * Configure match criteria for bcmFieldQualifyTunnelPayloadIp4Length
  24466  *         qualifier for the field entry.
  24467  */
  24468 extern int bcm_field_qualify_TunnelPayloadIp4Length(
  24469     int unit, 
  24470     bcm_field_entry_t entry, 
  24471     uint16 data, 
  24472     uint16 mask);
  24473 
  24474 /* 
  24475  * Get match criteria for bcmFieldQualifyTunnelPayloadIp4Length
  24476  *                qualifier from the field entry.
  24477  */
  24478 extern int bcm_field_qualify_TunnelPayloadIp4Length_get(
  24479     int unit, 
  24480     bcm_field_entry_t entry, 
  24481     uint16 *data, 
  24482     uint16 *mask);
  24483 
  24484 /* 
  24485  * Configure match criteria for bcmFieldQualifyTunnelPayloadIp6Length
  24486  *         qualifier for the field entry.
  24487  */
  24488 extern int bcm_field_qualify_TunnelPayloadIp6Length(
  24489     int unit, 
  24490     bcm_field_entry_t entry, 
  24491     uint16 data, 
  24492     uint16 mask);
  24493 
  24494 /* 
  24495  * Get match criteria for bcmFieldQualifyTunnelPayloadIp6Length
  24496  *                qualifier from the field entry.
  24497  */
  24498 extern int bcm_field_qualify_TunnelPayloadIp6Length_get(
  24499     int unit, 
  24500     bcm_field_entry_t entry, 
  24501     uint16 *data, 
  24502     uint16 *mask);
  24503 
  24504 /* To qualify on GBP Presence. */
  24505 extern int bcm_field_qualify_GbpPresent(
  24506     int unit, 
  24507     bcm_field_entry_t entry, 
  24508     uint8 data, 
  24509     uint8 mask);
  24510 
  24511 /* To get the qualified inputs on GBP Presence. */
  24512 extern int bcm_field_qualify_GbpPresent_get(
  24513     int unit, 
  24514     bcm_field_entry_t entry, 
  24515     uint8 *data, 
  24516     uint8 *mask);
  24517 
  24518 /* To qualify on HiGig GBP Presence. */
  24519 extern int bcm_field_qualify_HiGigGbpPresent(
  24520     int unit, 
  24521     bcm_field_entry_t entry, 
  24522     uint8 data, 
  24523     uint8 mask);
  24524 
  24525 /* To get the qualified inputs on HiGig GBP Presence. */
  24526 extern int bcm_field_qualify_HiGigGbpPresent_get(
  24527     int unit, 
  24528     bcm_field_entry_t entry, 
  24529     uint8 *data, 
  24530     uint8 *mask);
  24531 
  24532 /* To qualify on GBP Source ID of the packet. */
  24533 extern int bcm_field_qualify_GbpSrcId(
  24534     int unit, 
  24535     bcm_field_entry_t entry, 
  24536     uint16 data, 
  24537     uint16 mask);
  24538 
  24539 /* To get the qualified inputs on GBP Source ID. */
  24540 extern int bcm_field_qualify_GbpSrcId_get(
  24541     int unit, 
  24542     bcm_field_entry_t entry, 
  24543     uint16 *data, 
  24544     uint16 *mask);
  24545 
  24546 /* To qualify on GBP Destination ID of the packet. */
  24547 extern int bcm_field_qualify_GbpDstId(
  24548     int unit, 
  24549     bcm_field_entry_t entry, 
  24550     uint16 data, 
  24551     uint16 mask);
  24552 
  24553 /* To get the qualified inputs on GBP Destination ID. */
  24554 extern int bcm_field_qualify_GbpDstId_get(
  24555     int unit, 
  24556     bcm_field_entry_t entry, 
  24557     uint16 *data, 
  24558     uint16 *mask);
  24559 
  24560 /* To qualify on GBP source ID of the HIGIG packet. */
  24561 extern int bcm_field_qualify_HiGigGbpSrcId(
  24562     int unit, 
  24563     bcm_field_entry_t entry, 
  24564     uint16 data, 
  24565     uint16 mask);
  24566 
  24567 /* To get the qualified inputs on GBP source ID of the HIGIG packet. */
  24568 extern int bcm_field_qualify_HiGigGbpSrcId_get(
  24569     int unit, 
  24570     bcm_field_entry_t entry, 
  24571     uint16 *data, 
  24572     uint16 *mask);
  24573 
  24574 /* To qualify on Vxlan GBP Presence flag. */
  24575 extern int bcm_field_qualify_VxlanGbpPresent(
  24576     int unit, 
  24577     bcm_field_entry_t entry, 
  24578     uint8 data, 
  24579     uint8 mask);
  24580 
  24581 /* To get the qualified inputs on Vxlan GBP Presence flag. */
  24582 extern int bcm_field_qualify_VxlanGbpPresent_get(
  24583     int unit, 
  24584     bcm_field_entry_t entry, 
  24585     uint8 *data, 
  24586     uint8 *mask);
  24587 
  24588 /* 
  24589  * To qualify on the results of Flowtracker checker events in Flow
  24590  * Tracker Module.
  24591  */
  24592 extern int bcm_field_qualify_FlowtrackerCheck(
  24593     int unit, 
  24594     bcm_field_entry_t entry, 
  24595     bcm_flowtracker_group_t flow_group_id, 
  24596     uint32 num_checks, 
  24597     bcm_field_flowtrackercheck_t *list_of_check_ids);
  24598 
  24599 /* 
  24600  * To get qualified inputs on the results of Flowtracker checker events
  24601  * in Flow Tracker Module.
  24602  */
  24603 extern int bcm_field_qualify_FlowtrackerCheck_get(
  24604     int unit, 
  24605     bcm_field_entry_t entry, 
  24606     bcm_flowtracker_group_t flow_group_id, 
  24607     uint32 num_checks, 
  24608     bcm_field_flowtrackercheck_t *list_of_check_ids, 
  24609     uint32 *actual_num_checks);
  24610 
  24611 /* Qualifies whether the packet flow is learnt by Flowtracker module. */
  24612 extern int bcm_field_qualify_FlowtrackerLearn(
  24613     int unit, 
  24614     bcm_field_entry_t entry, 
  24615     uint8 data, 
  24616     uint8 mask);
  24617 
  24618 /* 
  24619  * To get the qualified inputs on whether the packet flow is learnt by
  24620  * Flowtracker module.
  24621  */
  24622 extern int bcm_field_qualify_FlowtrackerLearn_get(
  24623     int unit, 
  24624     bcm_field_entry_t entry, 
  24625     uint8 *data, 
  24626     uint8 *mask);
  24627 
  24628 /* To Qualify on the COS Map type type of bcm_field_cos_map_select_t. */
  24629 extern int bcm_field_qualify_CosMapSelect(
  24630     int unit, 
  24631     bcm_field_entry_t entry, 
  24632     bcm_field_cos_map_select_t cos_map_select);
  24633 
  24634 /* 
  24635  * To get qualified inputs on the COS Map type type of
  24636  * bcm_field_cos_map_select_t.
  24637  */
  24638 extern int bcm_field_qualify_CosMapSelect_get(
  24639     int unit, 
  24640     bcm_field_entry_t entry, 
  24641     bcm_field_cos_map_select_t *cos_map_select);
  24642 
  24643 /* 
  24644  * To Qualify on Opaque Object1 which was assigned by Flex modules for
  24645  * example NSH, INT..etc and VFP
  24646  */
  24647 extern int bcm_field_qualify_OpaqueObject1(
  24648     int unit, 
  24649     bcm_field_entry_t entry, 
  24650     uint16 data, 
  24651     uint16 mask);
  24652 
  24653 /* 
  24654  * To get qualifed inputs on Opaque Object1 which was assigned by Flex
  24655  * modules for example NSH, INT..etc and VFP
  24656  */
  24657 extern int bcm_field_qualify_OpaqueObject1_get(
  24658     int unit, 
  24659     bcm_field_entry_t entry, 
  24660     uint16 *data, 
  24661     uint16 *mask);
  24662 
  24663 /* 
  24664  * To Qualify on Opaque Object2 which was assigned by Flex modules for
  24665  * example NSH, INT..etc and VFP
  24666  */
  24667 extern int bcm_field_qualify_OpaqueObject2(
  24668     int unit, 
  24669     bcm_field_entry_t entry, 
  24670     uint16 data, 
  24671     uint16 mask);
  24672 
  24673 /* 
  24674  * To get qualifed inputs on Opaque Object2 which was assigned by Flex
  24675  * modules for example NSH, INT..etc and VFP
  24676  */
  24677 extern int bcm_field_qualify_OpaqueObject2_get(
  24678     int unit, 
  24679     bcm_field_entry_t entry, 
  24680     uint16 *data, 
  24681     uint16 *mask);
  24682 
  24683 /* 
  24684  * To Qualify on Opaque Object3 which was assigned by Flex modules for
  24685  * example NSH, INT..etc and VFP
  24686  */
  24687 extern int bcm_field_qualify_OpaqueObject3(
  24688     int unit, 
  24689     bcm_field_entry_t entry, 
  24690     uint16 data, 
  24691     uint16 mask);
  24692 
  24693 /* 
  24694  * To get qualifed inputs on Opaque Object3 which was assigned by Flex
  24695  * modules for example NSH, INT..etc and VFP
  24696  */
  24697 extern int bcm_field_qualify_OpaqueObject3_get(
  24698     int unit, 
  24699     bcm_field_entry_t entry, 
  24700     uint16 *data, 
  24701     uint16 *mask);
  24702 
  24703 /* 
  24704  * To Qualify on Opaque Object4 which was assigned by Flex modules for
  24705  * example NSH, INT..etc and VFP
  24706  */
  24707 extern int bcm_field_qualify_OpaqueObject4(
  24708     int unit, 
  24709     bcm_field_entry_t entry, 
  24710     uint16 data, 
  24711     uint16 mask);
  24712 
  24713 /* 
  24714  * To get qualifed inputs on Opaque Object4 which was assigned by Flex
  24715  * modules for example NSH, INT..etc and VFP
  24716  */
  24717 extern int bcm_field_qualify_OpaqueObject4_get(
  24718     int unit, 
  24719     bcm_field_entry_t entry, 
  24720     uint16 *data, 
  24721     uint16 *mask);
  24722 
  24723 /* To qualify on  Incoming Outer VLAN ID of the packet */
  24724 extern int bcm_field_qualify_IncomingOuterVlanId(
  24725     int unit, 
  24726     bcm_field_entry_t entry, 
  24727     bcm_vlan_t data, 
  24728     bcm_vlan_t mask);
  24729 
  24730 /* To get the qualified inputs on Incoming Outer VLAN ID of the packet */
  24731 extern int bcm_field_qualify_IncomingOuterVlanId_get(
  24732     int unit, 
  24733     bcm_field_entry_t entry, 
  24734     bcm_vlan_t *data, 
  24735     bcm_vlan_t *mask);
  24736 
  24737 #endif /* BCM_HIDE_DISPATCHABLE */
  24738 
  24739 /* Loopback subtypes */
  24740 typedef enum bcm_field_loopback_subtype_e {
  24741     bcmFieldLoopbackSubtypeIfa = 0,     /* Loopback Subtype Inband Flow Analysis */
  24742     bcmFieldLoopbackSubtypeCount = 1    /* Always last. Not to be used. */
  24743 } bcm_field_loopback_subtype_t;
  24744 
  24745 /* Egress Flow control for bcmFieldActionEgressFlowControlEnable */
  24746 typedef enum bcm_field_egress_flow_control_e {
  24747     bcmFieldEgressFlowControlLoopbackRedirect = 0, /* Egress Flow Control for Loopback
  24748                                            Redirect */
  24749     bcmFieldEgressFlowControlAppendIncomingOuterVlan = 1, /* The incoming Outer Vlan tag will be
  24750                                            appended in the outgoing packet */
  24751     bcmFieldEgressFlowControlAppendOuterVlanNew = 2, /* New Outer Vlan tag will be appended
  24752                                            in the outgoing packet */
  24753     bcmFieldEgressFlowControlTranslateSnatSrcIpOnly = 3, /* Source IP address translation for
  24754                                            SNAT */
  24755     bcmFieldEgressFlowControlTranslateDnatSrcIpDstIp = 4, /* Source and Destination IP addresses
  24756                                            translation for DNAT */
  24757     bcmFieldEgressFlowControlTranslateSnaptSrcIpL4SrcPort = 5, /* Source IP address and L4 Source port
  24758                                            translation for SNAPT */
  24759     bcmFieldEgressFlowControlTranslateSnaptSrcIpDstIpL4SrcPortL4DstPort = 6, /* Source and Destination IP addresses
  24760                                            and L4 Source and Destination ports
  24761                                            translation for SNAPT */
  24762     bcmFieldEgressFlowControlTranslateDnatDstIpOnly = 7, /* Destination IP address translation
  24763                                            for DNAT */
  24764     bcmFieldEgressFlowControlTranslateDnaptDstIpL4DstPort = 8, /* Destination IP address and L3
  24765                                            destination port translation for
  24766                                            DNAPT */
  24767     bcmFieldEgressFlowControlTranslateDnaptSrcIpDstIpL4SrcPortL4DstPort = 9, /* Source and Destination IP addresses
  24768                                            and L4 Source and Destination ports
  24769                                            translation for DNAPT */
  24770     bcmFieldEgressFlowControlTranslateIpmc = 10, /* Multicast NAT */
  24771     bcmFieldEgressFlowControlVlanNew = 11, /* Triggers Egress Vlan Translation
  24772                                            Lookup for new VLAN */
  24773     bcmFieldEgressFlowControlSrcMacVlanNew = 12, /* Triggers Egress Vlan Translation
  24774                                            Lookup for new Source MAC and VLAN */
  24775     bcmFieldEgressFlowControlDstMacVlanNew = 13, /* Triggers Egress Vlan Translation
  24776                                            Lookup for new Destination MAC and
  24777                                            VLAN */
  24778     bcmFieldEgressFlowControlSrcMacDstMacVlanNew = 14, /* Triggers Egress Vlan Translation
  24779                                            Lookup for new Source and Destination
  24780                                            MAC and VLAN */
  24781     bcmFieldEgressFlowControlTranslateSnatSrcIpDstIp = 15, /* Source and Destination IP addresses
  24782                                            translation for SNAT */
  24783     bcmFieldEgressFlowControlCount = 16 /* Always last. Not to be used. */
  24784 } bcm_field_egress_flow_control_t;
  24785 
  24786 /* Egress Flow Encap for bcmFieldActionEgressFlowEncapEnable */
  24787 typedef enum bcm_field_egress_flow_encap_e {
  24788     bcmFieldEgressFlowEncapAppendIncomingOuterVlan = 0, /* The incoming Outer Vlan tag will be
  24789                                            appended in the outgoing packet */
  24790     bcmFieldEgressFlowEncapMacsecEncryptRxAddSvtagForControlPkt = 1, /* SV Tag will be added for MACSEC Rx
  24791                                            Control packets */
  24792     bcmFieldEgressFlowEncapMacsecEncryptTxDeleteSvtag = 2, /* SV Tag will be deleted from MACSEC Tx
  24793                                            packets */
  24794     bcmFieldEgressFlowEncapTwampOwampTxTimestamp = 3, /* Insert Timestamp for TWAMP/OWAMP
  24795                                            packet. */
  24796     bcmFieldEgressFlowEncapCount = 4    /* Always last. Not to be used. */
  24797 } bcm_field_egress_flow_encap_t;
  24798 
  24799 #ifndef BCM_HIDE_DISPATCHABLE
  24800 
  24801 /* To qualify on  Subtype of the Loopback header. */
  24802 extern int bcm_field_qualify_LoopbackSubtype(
  24803     int unit, 
  24804     bcm_field_entry_t entry, 
  24805     bcm_field_loopback_subtype_t lb_subtype);
  24806 
  24807 /* To get qualified inputs on  Subtype of the Loopback header. */
  24808 extern int bcm_field_qualify_LoopbackSubtype_get(
  24809     int unit, 
  24810     bcm_field_entry_t entry, 
  24811     bcm_field_loopback_subtype_t *lb_subtype);
  24812 
  24813 #endif /* BCM_HIDE_DISPATCHABLE */
  24814 
  24815 /* Parameters for bcmFieldActionDlbEcmpMonitorEnable */
  24816 #define BCM_FIELD_L3INGRESS_STRENGTH_HIGH   (1 << 0)   /* This prioritizes
  24817                                                           L3_TUNNEL/MPLS over
  24818                                                           VFP, Port and Vlan
  24819                                                           Mpls */
  24820 #define BCM_FIELD_L3INGRESS_STRENGTH_LOW    (1 << 1)   /* This prioritizes
  24821                                                           L3_TUNNEL/MPLS and
  24822                                                           Port over VFP and Vlan
  24823                                                           Mpls */
  24824 
  24825 /* Compare result operands between a pair of values. */
  24826 typedef enum bcm_field_compare_operand_e {
  24827     bcmFieldCompareOperandFirst = 0,    /* The first value is equal to the
  24828                                            second value. */
  24829     bcmFieldCompareOperandEqual = bcmFieldCompareOperandFirst, /* The first value is equal to the
  24830                                            second value. */
  24831     bcmFieldCompareOperandNotEqual = 1, /* The first value is not equal to the
  24832                                            second value. */
  24833     bcmFieldCompareOperandFirstKeySmaller = 2, /* The first value is smaller then the
  24834                                            second value. */
  24835     bcmFieldCompareOperandFirstKeyNotSmaller = 3, /* The first value is not smaller then
  24836                                            the second value. */
  24837     bcmFieldCompareOperandFirstKeyBigger = 4, /* The first value is bigger then the
  24838                                            second value. */
  24839     bcmFieldCompareOperandFirstKeyNotBigger = 5, /* The first value is not bigger then
  24840                                            the second value. */
  24841     bcmFieldCompareOperandCount = 6     /* Always last. Number of Base Types. */
  24842 } bcm_field_compare_operand_t;
  24843 
  24844 #define BCM_FIELD_COMPARE_OPERAND_STRINGS \
  24845 { \
  24846     "Equal", \
  24847     "NotEqual", \
  24848     "FirstKeySmaller", \
  24849     "FirstKeyNotSmaller", \
  24850     "FirstKeyBigger", \
  24851     "FirstKeyNotBigger"  \
  24852 }
  24853 
  24854 #ifndef BCM_HIDE_DISPATCHABLE
  24855 
  24856 /* 
  24857  * Gives the offset of a specific compare operand inside the 6-bit
  24858  * compare result.
  24859  */
  24860 extern int bcm_field_compare_operand_offset_get(
  24861     int unit, 
  24862     int pair_id, 
  24863     bcm_field_compare_operand_t compare_operand, 
  24864     int *offset);
  24865 
  24866 #endif /* BCM_HIDE_DISPATCHABLE */
  24867 
  24868 /* 
  24869  * Field optional flag used for flushing hit indication info for all
  24870  * entries.
  24871  */
  24872 #define BCM_FIELD_ENTRY_HIT_FLUSH_ALL   (1 << 1)   
  24873 
  24874 #ifndef BCM_HIDE_DISPATCHABLE
  24875 
  24876 /* Get hit indication info for a specific entry per core. */
  24877 extern int bcm_field_entry_hit_get(
  24878     int unit, 
  24879     uint32 flags, 
  24880     bcm_field_entry_t entry_handle, 
  24881     uint8 *entry_hit_core_bmp);
  24882 
  24883 /* 
  24884  * This function flushes hit information of an entry or all entries, from
  24885  * hardware.
  24886  */
  24887 extern int bcm_field_entry_hit_flush(
  24888     int unit, 
  24889     uint32 flags, 
  24890     bcm_field_entry_t entry_handle);
  24891 
  24892 #endif /* BCM_HIDE_DISPATCHABLE */
  24893 
  24894 /* Ace context. */
  24895 typedef enum bcm_field_ace_context_e {
  24896     bcmFieldAceContextFirst = 0,        /* First element, not in use. */
  24897     bcmFieldAceContextNull = bcmFieldAceContextFirst, /* Null ACE context. */
  24898     bcmFieldAceContextReflector = 1,    /* Ace context which is used for
  24899                                            Reflector application (ERPP Trap). */
  24900     bcmFieldAceContextForwardingCodeOverride = 2, /* Ace context which is used Forwarding
  24901                                            code override. */
  24902     bcmFieldAceContextCount = 3         /* Always last. Not a usable value. */
  24903 } bcm_field_ace_context_t;
  24904 
  24905 #define BCM_FIELD_ACE_CONTEXT_STRINGS \
  24906 { \
  24907     "Null", \
  24908     "Reflector", \
  24909     "ForwardingCodeOverride"  \
  24910 }
  24911 
  24912 #ifndef BCM_HIDE_DISPATCHABLE
  24913 
  24914 /* 
  24915  *  Set match criteria for bcmFieldQualifyInVportDataIndex
  24916  *                  qualifier in the field entry.
  24917  */
  24918 extern int bcm_field_qualify_InVportDataIndex(
  24919     int unit, 
  24920     bcm_field_entry_t entry, 
  24921     uint8 data, 
  24922     uint8 mask);
  24923 
  24924 /* 
  24925  *  Get match criteria for bcmFieldQualifyInVportDataIndex
  24926  *                  qualifier from the field entry.
  24927  */
  24928 extern int bcm_field_qualify_InVportDataIndex_get(
  24929     int unit, 
  24930     bcm_field_entry_t entry, 
  24931     uint8 *data, 
  24932     uint8 *mask);
  24933 
  24934 /* To Qualify on Underlay destination egress object ID */
  24935 extern int bcm_field_qualify_DstL3EgressUnderlay(
  24936     int unit, 
  24937     bcm_field_entry_t entry, 
  24938     bcm_if_t if_id);
  24939 
  24940 /* 
  24941  * Get match criteria for bcmFieldQualifyDstL3EgressUnderlay
  24942  *                qualifier from the field entry.
  24943  */
  24944 extern int bcm_field_qualify_DstL3EgressUnderlay_get(
  24945     int unit, 
  24946     bcm_field_entry_t entry, 
  24947     bcm_if_t *if_id);
  24948 
  24949 /* 
  24950  * Set match criteria for bcmFieldQualifyDstL3EgressNextHopsUnderlay
  24951  *                 qualifier in the field entry.
  24952  */
  24953 extern int bcm_field_qualify_DstL3EgressNextHopsUnderlay(
  24954     int unit, 
  24955     bcm_field_entry_t entry, 
  24956     uint32 data, 
  24957     uint32 mask);
  24958 
  24959 /* 
  24960  * Get match criteria for bcmFieldQualifyDstL3EgressNextHopsUnderlay
  24961  *                 qualifier from the field entry.
  24962  */
  24963 extern int bcm_field_qualify_DstL3EgressNextHopsUnderlay_get(
  24964     int unit, 
  24965     bcm_field_entry_t entry, 
  24966     uint32 *data, 
  24967     uint32 *mask);
  24968 
  24969 /* To qualify on Class ID assigned to packet based on Egress Port. */
  24970 extern int bcm_field_qualify_EgressClassPort(
  24971     int unit, 
  24972     bcm_field_entry_t entry, 
  24973     uint16 data, 
  24974     uint16 mask);
  24975 
  24976 /* 
  24977  * To retrieve qualified inputs on Class ID assgined to packet based on
  24978  * Egress Port
  24979  */
  24980 extern int bcm_field_qualify_EgressClassPort_get(
  24981     int unit, 
  24982     bcm_field_entry_t entry, 
  24983     uint16 *data, 
  24984     uint16 *mask);
  24985 
  24986 /* 
  24987  * Set match criteria for bcmFieldQualifyINTProbeMarker1 qualifier for a
  24988  * given field entry.
  24989  */
  24990 extern int bcm_field_qualify_INTProbeMarker1(
  24991     int unit, 
  24992     bcm_field_entry_t entry, 
  24993     uint32 data, 
  24994     uint32 mask);
  24995 
  24996 /* 
  24997  * Get match criteria for bcmFieldQualifyINTProbeMarker1 qualifier for a
  24998  * given field entry.
  24999  */
  25000 extern int bcm_field_qualify_INTProbeMarker1_get(
  25001     int unit, 
  25002     bcm_field_entry_t entry, 
  25003     uint32 *data, 
  25004     uint32 *mask);
  25005 
  25006 /* 
  25007  * Set match criteria for bcmFieldQualifyINTProbeMarker2 qualifier for a
  25008  * given field entry.
  25009  */
  25010 extern int bcm_field_qualify_INTProbeMarker2(
  25011     int unit, 
  25012     bcm_field_entry_t entry, 
  25013     uint32 data, 
  25014     uint32 mask);
  25015 
  25016 /* 
  25017  * Get match criteria for bcmFieldQualifyINTProbeMarker2 qualifier for a
  25018  * given field entry.
  25019  */
  25020 extern int bcm_field_qualify_INTProbeMarker2_get(
  25021     int unit, 
  25022     bcm_field_entry_t entry, 
  25023     uint32 *data, 
  25024     uint32 *mask);
  25025 
  25026 /* 
  25027  * Set match criteria for bcmFieldQualifyINTReserved4Bytes qualifier for
  25028  * a given field entry.
  25029  */
  25030 extern int bcm_field_qualify_INTReserved4Bytes(
  25031     int unit, 
  25032     bcm_field_entry_t entry, 
  25033     uint32 data, 
  25034     uint32 mask);
  25035 
  25036 /* 
  25037  * Get match criteria for bcmFieldQualifyINTReserved4Bytes qualifier for
  25038  * a given field entry.
  25039  */
  25040 extern int bcm_field_qualify_INTReserved4Bytes_get(
  25041     int unit, 
  25042     bcm_field_entry_t entry, 
  25043     uint32 *data, 
  25044     uint32 *mask);
  25045 
  25046 /* To qualify on the type of Flow control packet */
  25047 extern int bcm_field_qualify_FlowControlType(
  25048     int unit, 
  25049     bcm_field_entry_t entry, 
  25050     bcm_field_flow_control_pkt_type_t fc_type);
  25051 
  25052 /* To get qualified inputs on the type of Flow control packet */
  25053 extern int bcm_field_qualify_FlowControlType_get(
  25054     int unit, 
  25055     bcm_field_entry_t entry, 
  25056     bcm_field_flow_control_pkt_type_t *fc_type);
  25057 
  25058 /* To qualify on Tx Timestamp packet type. */
  25059 extern int bcm_field_qualify_TimeStampTxPktType(
  25060     int unit, 
  25061     bcm_field_entry_t entry, 
  25062     bcm_field_timestamp_transmit_pkt_type_t ts_pkt_type);
  25063 
  25064 /* To get qualified inputs on Tx Timestamp packet type. */
  25065 extern int bcm_field_qualify_TimeStampTxPktType_get(
  25066     int unit, 
  25067     bcm_field_entry_t entry, 
  25068     bcm_field_timestamp_transmit_pkt_type_t *ts_pkt_type);
  25069 
  25070 /* To qualify on System Header Local Destination port */
  25071 extern int bcm_field_qualify_SysHdrLocalDstport(
  25072     int unit, 
  25073     bcm_field_entry_t entry, 
  25074     bcm_port_t data, 
  25075     bcm_port_t mask);
  25076 
  25077 /* To get qualified inputs on System Header Local Destination port */
  25078 extern int bcm_field_qualify_SysHdrLocalDstport_get(
  25079     int unit, 
  25080     bcm_field_entry_t entry, 
  25081     bcm_port_t *data, 
  25082     bcm_port_t *mask);
  25083 
  25084 #endif /* BCM_HIDE_DISPATCHABLE */
  25085 
  25086 #endif /* __BCM_FIELD_H__ */