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

macsec.h (19152B)


      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_MACSEC_H__
     14 #define __BCM_MACSEC_H__
     15 
     16 #if defined(INCLUDE_MACSEC)
     17 
     18 #include <bcm/types.h>
     19 #include <bmacsec.h>
     20 
     21 typedef bmacsec_dev_addr_t bcm_macsec_dev_addr_t;
     22 
     23 typedef enum bcm_macsec_packet_format_e {
     24     BCM_MACSEC_PACKET_FORMAT_ETH_II = BMACSEC_PACKET_FORMAT_ETH_II, 
     25     BCM_MACSEC_PACKET_FORMAT_802_3 = BMACSEC_PACKET_FORMAT_802_3, 
     26     BCM_MACSEC_PACKET_FORMAT_SNAP = BMACSEC_PACKET_FORMAT_SNAP, 
     27     BCM_MACSEC_PACKET_FORMAT_LLC = BMACSEC_PACKET_FORMAT_LLC, 
     28     BCM_MACSEC_PACKET_FORMAT__COUNT = BMACSEC_PACKET_FORMAT__COUNT 
     29 } bcm_macsec_packet_format_t;
     30 
     31 typedef enum bcm_macsec_dir_e {
     32     BCM_MACSEC_DIR_EGRESS = BMACSEC_DIR_EGRESS, 
     33     BCM_MACSEC_DIR_INGRESS = BMACSEC_DIR_INGRESS 
     34 } bcm_macsec_dir_t;
     35 
     36 typedef enum bcm_macsec_core_e {
     37     BCM_MACSEC_CORE_UNKNOWN = BMACSEC_CORE_UNKNOWN, 
     38     BCM_MACSEC_CORE_OCTAL_GIG = BMACSEC_CORE_OCTAL_GIG, 
     39     BCM_MACSEC_CORE_BCM5458X = BMACSEC_CORE_BCM5458X, 
     40     BCM_MACSEC_CORE_BCM5458X_B0 = BMACSEC_CORE_BCM5458X_B0, 
     41     BCM_MACSEC_CORE_BCM8729 = BMACSEC_CORE_BCM8729, 
     42     BCM_MACSEC_CORE_BCM8483X = BMACSEC_CORE_BCM8483X, 
     43     BCM_MACSEC_CORE_BCM8433X = BMACSEC_CORE_BCM8433X, 
     44     BCM_MACSEC_CORE_BCM8484X = BMACSEC_CORE_BCM8484X, 
     45     BCM_MACSEC_CORE_BCM5438X = BMACSEC_CORE_BCM5438X, 
     46     BCM_MACSEC_CORE_BCM84756 = BMACSEC_CORE_BCM84756, 
     47     BCM_MACSEC_CORE_BCM84756_C0 = BMACSEC_CORE_BCM84756_C0, 
     48     BCM_MACSEC_CORE_BCM53084 = BMACSEC_CORE_BCM53084, 
     49     BCM_MACSEC_CORE_BCM84749 = BMACSEC_CORE_BCM84749, 
     50     BCM_MACSEC_CORE_BCM53020 = BMACSEC_CORE_BCM53020 
     51 } bcm_macsec_core_t;
     52 
     53 typedef bmacsec_dev_io_f bcm_macsec_dev_io_t;
     54 
     55 #define BCM_MACSEC_PORT_ENABLE  BMACSEC_PORT_ENABLE 
     56 
     57 #define BCM_MACSEC_PORT_SINGLE_CHANNEL  BMACSEC_PORT_SINGLE_CHANNEL 
     58 
     59 #define BCM_MACSEC_PORT_INGRESS_STORE_FORWARD BMACSEC_PORT_INGRESS_STORE_FORWARD 
     60 
     61 #define BCM_MACSEC_PORT_INGRESS_SECTAG_MISSING_FORWARD BMACSEC_PORT_INGRESS_SECTAG_MISSING_FORWARD 
     62 
     63 #define BCM_MACSEC_PORT_INGRESS_SECTAG_INVALID_FORWARD BMACSEC_PORT_INGRESS_SECTAG_INVALID_FORWARD 
     64 
     65 #define BCM_MACSEC_PORT_INGRESS_SECTAG_PRESERVE BMACSEC_PORT_INGRESS_SECTAG_PRESERVE 
     66 
     67 #define BCM_MACSEC_PORT_INGRESS_SECTAG_REPLACE_VLANID BMACSEC_PORT_INGRESS_SECTAG_REPLACE_VLANID 
     68 
     69 #define BCM_MACSEC_PORT_INGRESS_SECTAG_REPLACE_PN BMACSEC_PORT_INGRESS_SECTAG_REPLACE_PN 
     70 
     71 #define BCM_MACSEC_PORT_EGRESS_SECTAG_MISSING_UNCONTROLLED BMACSEC_PORT_EGRESS_SECTAG_MISSING_UNCONTROLLED 
     72 
     73 #define BCM_MACSEC_PORT_EGRESS_ENCRYPT_DISABLE BMACSEC_PORT_EGRESS_ENCRYPT_DISABLE 
     74 
     75 #define BCM_MACSEC_PORT_SECURE_ASSOC_4  BMACSEC_PORT_SECURE_ASSOC_4 
     76 
     77 #define BCM_MACSEC_PORT_EGRESS_PN_MATCH_ENABLE BMACSEC_PORT_EGRESS_PN_MATCH_ENABLE 
     78 
     79 typedef bmacsec_port_config_t bcm_macsec_port_config_t;
     80 
     81 #ifndef BCM_HIDE_DISPATCHABLE
     82 
     83 /*  Set MACSEC Port configuration. */
     84 extern int bcm_macsec_port_config_set(
     85     int unit, 
     86     bcm_port_t port, 
     87     bcm_macsec_port_config_t *cfg);
     88 
     89 /*  Get current MACSEC Port configuration. */
     90 extern int bcm_macsec_port_config_get(
     91     int unit, 
     92     bcm_port_t port, 
     93     bcm_macsec_port_config_t *cfg);
     94 
     95 #endif /* BCM_HIDE_DISPATCHABLE */
     96 
     97 #define BCM_MACSEC_CAPABILITY_FORMAT_FLOW_MATCH BMACSEC_CAPABILITY_FORMAT_FLOW_MATCH 
     98 
     99 #define BCM_MACSEC_CAPABILITY_PRE_EXPIRE_PN BMACSEC_CAPABILITY_PRE_EXPIRE_PN 
    100 
    101 #define BCM_MACSEC_CAPABILITY_PN_HIGH_MATCH BMACSEC_CAPABILITY_PN_HIGH_MATCH 
    102 
    103 typedef bmacsec_port_capability_t bcm_macsec_port_capability_t;
    104 
    105 #ifndef BCM_HIDE_DISPATCHABLE
    106 
    107 /*  Get MACSEC Port capability. */
    108 extern int bcm_macsec_port_capability_get(
    109     int unit, 
    110     bcm_port_t port, 
    111     bcm_macsec_port_capability_t *cap);
    112 
    113 #endif /* BCM_HIDE_DISPATCHABLE */
    114 
    115 /*  Prototype for Port interation callback function. */
    116 typedef int (*bcm_macsec_port_traverse_cb)(
    117     int unit, 
    118     bcm_port_t port, 
    119     bcm_macsec_core_t dev_core, 
    120     bcm_macsec_dev_addr_t dev_addr, 
    121     int dev_port, 
    122     bcm_macsec_dev_io_t devio_f, 
    123     void *user_data);
    124 
    125 #ifndef BCM_HIDE_DISPATCHABLE
    126 
    127 /* 
    128  *  Iterates over all the MACSEC ports and calls user provided callback
    129  * function for each port.
    130  */
    131 extern int bcm_macsec_port_traverse(
    132     int unit, 
    133     bcm_macsec_port_traverse_cb callbk, 
    134     void *user_data);
    135 
    136 #endif /* BCM_HIDE_DISPATCHABLE */
    137 
    138 #define BCM_MACSEC_SECURE_WITH_ID   BMACSEC_SECURE_WITH_ID 
    139 
    140 #define BCM_MACSEC_SECURE_REPLACE   BMACSEC_SECURE_REPLACE 
    141 
    142 #define BCM_MACSEC_SECURE_CONFIDENTIAL  BMACSEC_SECURE_CONFIDENTIAL 
    143 
    144 #define BCM_MACSEC_SECURE_SECTAG_TX_SCI BMACSEC_SECURE_SECTAG_TX_SCI 
    145 
    146 #define BCM_MACSEC_SECURE_SECTAG_ES BMACSEC_SECURE_SECTAG_ES 
    147 
    148 #define BCM_MACSEC_SECURE_SECTAG_SCB    BMACSEC_SECURE_SECTAG_SCB 
    149 
    150 #define BCM_MACSEC_SECURE_CHAN_INGRESS  BMACSEC_SECURE_CHAN_INGRESS 
    151 
    152 #define BCM_MACSEC_SECURE_AUTO_ACTIVATE BMACSEC_SECURE_AUTO_ACTIVATE 
    153 
    154 #define BCM_MACSEC_SECURE_CHANNEL_MATCH_SCI BMACSEC_SECURE_CHANNEL_MATCH_SCI 
    155 
    156 #define BCM_MACSEC_SECURE_CHANNEL_MATCH_MAC_DA BMACSEC_SECURE_CHANNEL_MATCH_MAC_DA 
    157 
    158 #define BCM_MACSEC_SECURE_CHANNEL_MATCH_MAC_SA BMACSEC_SECURE_CHANNEL_MATCH_MAC_SA 
    159 
    160 #define BCM_MACSEC_SECURE_CHANNEL_MATCH_ETHERTYPE BMACSEC_SECURE_CHANNEL_MATCH_ETHERTYPE 
    161 
    162 #define BCM_MACSEC_SECURE_CHANNEL_MATCH_SECTAG_TCI BMACSEC_SECURE_CHANNEL_MATCH_SECTAG_TCI 
    163 
    164 typedef bmacsec_secure_chan_t bcm_macsec_secure_chan_t;
    165 
    166 #ifndef BCM_HIDE_DISPATCHABLE
    167 
    168 /*  Create a Secure channel. */
    169 extern int bcm_macsec_secure_chan_create(
    170     int unit, 
    171     bcm_port_t port, 
    172     uint32 flags, 
    173     bcm_macsec_secure_chan_t *chan, 
    174     int *chanId);
    175 
    176 /* 
    177  *  Return MACSEC secure channel structure corresponding to  channel
    178  * identified by ID chanId.
    179  */
    180 extern int bcm_macsec_secure_chan_get(
    181     int unit, 
    182     bcm_port_t port, 
    183     int chanId, 
    184     bcm_macsec_secure_chan_t *chan);
    185 
    186 /*  Destroy MACSEC channel identified by channel ID. */
    187 extern int bcm_macsec_secure_chan_destroy(
    188     int unit, 
    189     bcm_port_t port, 
    190     int chanId);
    191 
    192 #endif /* BCM_HIDE_DISPATCHABLE */
    193 
    194 /*  MACSEC secure channel traverse callback prototype. */
    195 typedef int (*bcm_macsec_chan_traverse_cb)(
    196     int unit, 
    197     bcm_port_t port, 
    198     bcm_macsec_secure_chan_t *chan, 
    199     int chanId, 
    200     void *user_data);
    201 
    202 #ifndef BCM_HIDE_DISPATCHABLE
    203 
    204 /* 
    205  *  This function will iterate over all the secure channels for the
    206  * specified port and will call the user provide callback function for
    207  * each of the secure channel.
    208  */
    209 extern int bcm_macsec_secure_chan_traverse(
    210     int unit, 
    211     bcm_port_t port, 
    212     bcm_macsec_chan_traverse_cb calback, 
    213     void *user_data);
    214 
    215 #endif /* BCM_HIDE_DISPATCHABLE */
    216 
    217 typedef enum bcm_macsec_crypto_e {
    218     BCM_MACSEC_CRYPTO_NONE = BMACSEC_CRYPTO_NONE, 
    219     BCM_MACSEC_CRYPTO_AES_128_GCM = BMACSEC_CRYPTO_AES_128_GCM 
    220 } bcm_macsec_crypto_t;
    221 
    222 #define BCM_MACSEC_CRYPTO_AES128GCM_KEY_SIZE BMACSEC_CRYPTO_AES128GCM_KEY_SIZE 
    223 
    224 typedef bmacsec_crypto_aes128_gcm_t bcm_macsec_crypto_aes128_gcm_t;
    225 
    226 typedef enum bcm_macsec_secure_assoc_num_e {
    227     BCM_MACSEC_SECURE_ASSOC_NUM_0 = BMACSEC_SECURE_ASSOC_NUM_0, 
    228     BCM_MACSEC_SECURE_ASSOC_NUM_1 = BMACSEC_SECURE_ASSOC_NUM_1, 
    229     BCM_MACSEC_SECURE_ASSOC_NUM_2 = BMACSEC_SECURE_ASSOC_NUM_2, 
    230     BCM_MACSEC_SECURE_ASSOC_NUM_3 = BMACSEC_SECURE_ASSOC_NUM_3, 
    231     BCM_MACSEC_SECURE_ASSOC_NUM__COUNT = BMACSEC_SECURE_ASSOC_NUM__COUNT 
    232 } bcm_macsec_secure_assoc_num_t;
    233 
    234 #define BCM_MACSEC_ASSOC_ACTIVE BMACSEC_ASSOC_ACTIVE 
    235 
    236 #define BCM_MACSEC_ASSOC_ROLLOVER   BMACSEC_ASSOC_ROLLOVER 
    237 
    238 #define BCM_MACSEC_ASSOC_ENCAP_REDIRECT BMACSEC_ASSOC_ENCAP_REDIRECT 
    239 
    240 #define BCM_MACSEC_ASSOC_SET_NEXT_PN    BMACSEC_ASSOC_SET_NEXT_PN 
    241 
    242 #define BCM_MACSEC_ASSOC_REPLAY_PROTECT BMACSEC_ASSOC_REPLAY_PROTECT 
    243 
    244 typedef bmacsec_secure_assoc_t bcm_macsec_secure_assoc_t;
    245 
    246 #ifndef BCM_HIDE_DISPATCHABLE
    247 
    248 /*  Create a secure association bound to channel chanId. */
    249 extern int bcm_macsec_secure_assoc_create(
    250     int unit, 
    251     bcm_port_t port, 
    252     uint32 flags, 
    253     int chanId, 
    254     bcm_macsec_secure_assoc_t *assoc, 
    255     int *assocId);
    256 
    257 /* 
    258  *  Return secure association information for the assoc identified by 
    259  * assocId.
    260  */
    261 extern int bcm_macsec_secure_assoc_get(
    262     int unit, 
    263     bcm_port_t port, 
    264     int assocId, 
    265     bcm_macsec_secure_assoc_t *assoc, 
    266     int *chanId);
    267 
    268 /*  Destroy MACSEC secure association. */
    269 extern int bcm_macsec_secure_assoc_destroy(
    270     int unit, 
    271     bcm_port_t port, 
    272     int assocId);
    273 
    274 #endif /* BCM_HIDE_DISPATCHABLE */
    275 
    276 /*  Secure assoc traverse callback prototype. */
    277 typedef int (*bcm_macsec_secure_assoc_traverse_cb)(
    278     int unit, 
    279     bcm_port_t port, 
    280     bcm_macsec_secure_assoc_t *chan, 
    281     int chanId, 
    282     int assocId, 
    283     void *user_data);
    284 
    285 #ifndef BCM_HIDE_DISPATCHABLE
    286 
    287 /* 
    288  *  MACSEC secure assoc traverse. This function will traverse all the
    289  * secure assoc for the specified secure channel and call the user
    290  * provided callback function.
    291  */
    292 extern int bcm_macsec_secure_assoc_traverse(
    293     int unit, 
    294     bcm_port_t port, 
    295     int chanId, 
    296     bcm_macsec_secure_assoc_traverse_cb cb, 
    297     void *user_data);
    298 
    299 #endif /* BCM_HIDE_DISPATCHABLE */
    300 
    301 typedef bmacsec_flow_match_t bcm_macsec_flow_match_t;
    302 
    303 #define BCM_MACSEC_FLOW_MATCH_UNCONTROLLED  BMACSEC_FLOW_MATCH_UNCONTROLLED 
    304 
    305 #define BCM_MACSEC_FLOW_MATCH_CONTROLLED    BMACSEC_FLOW_MATCH_CONTROLLED 
    306 
    307 #define BCM_MACSEC_FLOW_MATCH_MACSA BMACSEC_FLOW_MATCH_MACSA 
    308 
    309 #define BCM_MACSEC_FLOW_MATCH_MACDA BMACSEC_FLOW_MATCH_MACDA 
    310 
    311 #define BCM_MACSEC_FLOW_MATCH_ETHTYPE   BMACSEC_FLOW_MATCH_ETHTYPE 
    312 
    313 #define BCM_MACSEC_FLOW_MATCH_OUTER_TPID    BMACSEC_FLOW_MATCH_OUTER_TPID 
    314 
    315 #define BCM_MACSEC_FLOW_MATCH_OUTER_VLAN    BMACSEC_FLOW_MATCH_OUTER_VLAN 
    316 
    317 #define BCM_MACSEC_FLOW_MATCH_OUTER_PKT_PRIO BMACSEC_FLOW_MATCH_OUTER_PKT_PRIO 
    318 
    319 #define BCM_MACSEC_FLOW_MATCH_OUTER_PKT_CFI BMACSEC_FLOW_MATCH_OUTER_PKT_CFI 
    320 
    321 #define BCM_MACSEC_FLOW_MATCH_INNER_TPID    BMACSEC_FLOW_MATCH_INNER_TPID 
    322 
    323 #define BCM_MACSEC_FLOW_MATCH_INNER_VLAN    BMACSEC_FLOW_MATCH_INNER_VLAN 
    324 
    325 #define BCM_MACSEC_FLOW_MATCH_INNER_PKT_PRIO BMACSEC_FLOW_MATCH_INNER_PKT_PRIO 
    326 
    327 #define BCM_MACSEC_FLOW_MATCH_INNER_PKT_CFI BMACSEC_FLOW_MATCH_INNER_PKT_CFI 
    328 
    329 #define BCM_MACSEC_FLOW_MATCH_LLC_HEADER    BMACSEC_FLOW_MATCH_LLC_HEADER 
    330 
    331 #define BCM_MACSEC_FLOW_MATCH_SNAP_HEADER   BMACSEC_FLOW_MATCH_SNAP_HEADER 
    332 
    333 #define BCM_MACSEC_FLOW_MATCH_SECTAG_C0 BMACSEC_FLOW_MATCH_SECTAG_C0 
    334 
    335 #define BCM_MACSEC_FLOW_MATCH_SECTAG_C1 BMACSEC_FLOW_MATCH_SECTAG_C1 
    336 
    337 #define BCM_MACSEC_FLOW_MATCH_SECTAG_E0 BMACSEC_FLOW_MATCH_SECTAG_E0 
    338 
    339 #define BCM_MACSEC_FLOW_MATCH_SECTAG_E1 BMACSEC_FLOW_MATCH_SECTAG_E1 
    340 
    341 #define BCM_MACSEC_FLOW_MATCH_DATA  BMACSEC_FLOW_MATCH_DATA 
    342 
    343 #define BCM_MACSEC_FLOW_MATCH_NOT_SHAREABLE BMACSEC_FLOW_MATCH_NOT_SHAREABLE 
    344 
    345 #define BCM_MACSEC_FLOW_MATCH_ERROR_ASSOC_MISS BMACSEC_FLOW_MATCH_ERROR_ASSOC_MISS 
    346 
    347 #define BCM_MACSEC_FLOW_MATCH_ERROR_CHANNEL_MISS BMACSEC_FLOW_MATCH_ERROR_CHANNEL_MISS 
    348 
    349 #define BCM_MACSEC_FLOW_MATCH_ERROR_SECTAG  BMACSEC_FLOW_MATCH_ERROR_SECTAG 
    350 
    351 #define BCM_MACSEC_FLOW_MATCH_ERROR_REPLAY  BMACSEC_FLOW_MATCH_ERROR_REPLAY 
    352 
    353 #define BCM_MACSEC_FLOW_MATCH_SECURE_CHANNEL BMACSEC_FLOW_MATCH_SECURE_CHANNEL 
    354 
    355 #define BCM_MACSEC_FLOW_MATCH_SECTAG_SCI    BMACSEC_FLOW_MATCH_SECTAG_SCI 
    356 
    357 #define BCM_MACSEC_FLOW_MATCH_SECTAG_TCI    BMACSEC_FLOW_MATCH_SECTAG_TCI 
    358 
    359 #define BCM_MACSEC_FLOW_MATCH_SECTAG_SCI_PRESET BMACSEC_FLOW_MATCH_SECTAG_SCI_PRESET 
    360 
    361 typedef bmacsec_flow_action_t bcm_macsec_flow_action_t;
    362 
    363 #define BCM_MACSEC_FLOW_ACTION_DROP BMACSEC_FLOW_ACTION_DROP 
    364 
    365 #define BCM_MACSEC_FLOW_ACTION_UNCONTROLLED_FORWARD BMACSEC_FLOW_ACTION_UNCONTROLLED_FORWARD 
    366 
    367 #define BCM_MACSEC_FLOW_ACTION_CONTROLLED_FORWARD BMACSEC_FLOW_ACTION_CONTROLLED_FORWARD 
    368 
    369 #define BCM_MACSEC_FLOW_ACTION_SECTAG_E_VALUE_0 BMACSEC_FLOW_ACTION_SECTAG_E_VALUE_0 
    370 
    371 #define BCM_MACSEC_FLOW_ACTION_SECTAG_E_VALUE_1 BMACSEC_FLOW_ACTION_SECTAG_E_VALUE_1 
    372 
    373 #define BCM_MACSEC_FLOW_ACTION_SECTAG_C_VALUE_0 BMACSEC_FLOW_ACTION_SECTAG_C_VALUE_0 
    374 
    375 #define BCM_MACSEC_FLOW_ACTION_SECTAG_C_VALUE_1 BMACSEC_FLOW_ACTION_SECTAG_C_VALUE_1 
    376 
    377 #define BCM_MACSEC_FLOW_ACTION_SECTAG_V_VALUE_0 BMACSEC_FLOW_ACTION_SECTAG_V_VALUE_0 
    378 
    379 #define BCM_MACSEC_FLOW_ACTION_SECTAG_V_VALUE_1 BMACSEC_FLOW_ACTION_SECTAG_V_VALUE_1 
    380 
    381 #define BCM_MACSEC_FLOW_ACTION_MAP_SECTAG_CE_BITS BMACSEC_FLOW_ACTION_MAP_SECTAG_CE_BITS 
    382 
    383 #define BCM_MACSEC_FLOW_ACTION_MAP_SPECIALHDR_CE_BITS BMACSEC_FLOW_ACTION_MAP_SPECIALHDR_CE_BITS 
    384 
    385 #define BCM_MACSEC_FLOW_ACTION_MAP_SECTAG_SC_BITS BMACSEC_FLOW_ACTION_MAP_SECTAG_SC_BITS 
    386 
    387 #define BCM_MACSEC_FLOW_ACTION_REMOVE_SPECIALHDR BMACSEC_FLOW_ACTION_REMOVE_SPECIALHDR 
    388 
    389 #define BCM_MACSEC_FLOW_ACTION_SECURE_CHECK_FAIL_DROP BMACSEC_FLOW_ACTION_SECURE_CHECK_FAIL_DROP 
    390 
    391 #define BCM_MACSEC_FLOW_ACTION_SECURE_CHECK_FAIL_FORWARD BMACSEC_FLOW_ACTION_SECURE_CHECK_FAIL_FORWARD 
    392 
    393 #define BCM_MACSEC_FLOW_ACTION_ENCAP_REDIRECT BMACSEC_FLOW_ACTION_ENCAP_REDIRECT 
    394 
    395 #define BCM_MACSEC_FLOW_ACTION_SECURE_CHECK_FAIL_REDIRECT BMACSEC_FLOW_ACTION_SECURE_CHECK_FAIL_REDIRECT 
    396 
    397 #define BCM_MACSEC_FLOW_ACTION_ADD_SPECIALHDR BMACSEC_FLOW_ACTION_ADD_SPECIALHDR 
    398 
    399 #define BCM_MACSEC_FLOW_ACTION_SET_HIT_COUNT BMACSEC_FLOW_ACTION_SET_HIT_COUNT 
    400 
    401 #ifndef BCM_HIDE_DISPATCHABLE
    402 
    403 /* 
    404  *  Create/Update a macsec flow and assign/update the actions for the
    405  * flow.
    406  */
    407 extern int bcm_macsec_flow_create(
    408     int unit, 
    409     bcm_port_t port, 
    410     uint32 flags, 
    411     bcm_macsec_flow_match_t *flow, 
    412     bcm_macsec_flow_action_t *action, 
    413     int *flowId);
    414 
    415 /*  Destroy the flow with ID flowId. */
    416 extern int bcm_macsec_flow_destroy(
    417     int unit, 
    418     bcm_port_t port, 
    419     int flowId);
    420 
    421 /*  Return the flow information and its action for the flow flowId. */
    422 extern int bcm_macsec_flow_get(
    423     int unit, 
    424     bcm_port_t port, 
    425     int flowId, 
    426     bcm_macsec_flow_match_t *flow, 
    427     bcm_macsec_flow_action_t *a);
    428 
    429 #endif /* BCM_HIDE_DISPATCHABLE */
    430 
    431 /*  Flow traverse callback prototype. */
    432 typedef int (*bcm_macsec_flow_traverse_cb)(
    433     int unit, 
    434     bcm_port_t port, 
    435     bcm_macsec_flow_match_t *flow, 
    436     bcm_macsec_flow_action_t *action, 
    437     int flowId, 
    438     void *user_data);
    439 
    440 #ifndef BCM_HIDE_DISPATCHABLE
    441 
    442 /* 
    443  *  Traverse all the flow and call user provided callback function for
    444  * each flow.
    445  */
    446 extern int bcm_macsec_flow_traverse(
    447     int unit, 
    448     bcm_port_t port, 
    449     bcm_macsec_flow_traverse_cb callbk, 
    450     void *user_data);
    451 
    452 #endif /* BCM_HIDE_DISPATCHABLE */
    453 
    454 typedef enum bcm_macsec_event_e {
    455     BCM_MACSEC_EVENT_PRE_KEY_EXPIRE = BMACSEC_EVENT_PRE_KEY_EXPIRE, 
    456     BCM_MACSEC_EVENT_KEY_EXPIRED = BMACSEC_EVENT_KEY_EXPIRED, 
    457     BCM_MACSEC_EVENT_KEY_RENEWED = BMACSEC_EVENT_KEY_RENEWED, 
    458     BCM_MACSEC_EVENT_HW_FAILURE = BMACSEC_EVENT_HW_FAILURE, 
    459     BCM_MACSEC_EVENT__COUNT = BMACSEC_EVENT__COUNT 
    460 } bcm_macsec_event_t;
    461 
    462 /*  Prototype for the event callback function. */
    463 typedef int (*bcm_macsec_event_cb)(
    464     int unit, 
    465     bcm_port_t port, 
    466     bcm_macsec_event_t event, 
    467     int chanId, 
    468     int assocId, 
    469     void *user_data);
    470 
    471 #ifndef BCM_HIDE_DISPATCHABLE
    472 
    473 /*  Register user event handler callback function. */
    474 extern int bcm_macsec_event_register(
    475     int unit, 
    476     bcm_macsec_event_cb cb, 
    477     void *user_data);
    478 
    479 /*  Unregister user event handler callabck function. */
    480 extern int bcm_macsec_event_unregister(
    481     int unit, 
    482     bcm_macsec_event_cb cb);
    483 
    484 /*  Enables/Diable handling of the MACSEC event. */
    485 extern int bcm_macsec_event_enable_set(
    486     int unit, 
    487     bcm_macsec_event_t t, 
    488     int enable);
    489 
    490 /*  Return the current event hanler status for specified event. */
    491 extern int bcm_macsec_event_enable_get(
    492     int unit, 
    493     bcm_macsec_event_t t, 
    494     int *enable);
    495 
    496 #endif /* BCM_HIDE_DISPATCHABLE */
    497 
    498 typedef enum bcm_macsec_stat_e {
    499     bcm_rxBytes = rxBytes, 
    500     bcm_rxUnicastPkts = rxUnicastPkts, 
    501     bcm_rxMulticastPkts = rxMulticastPkts, 
    502     bcm_rxBroadcastPkts = rxBroadcastPkts, 
    503     bcm_rxDiscardPkts = rxDiscardPkts, 
    504     bcm_rxErrorPkts = rxErrorPkts, 
    505     bcm_rxUntagPkts = rxUntagPkts, 
    506     bcm_rxNotagPkts = rxNotagPkts, 
    507     bcm_rxBadtagPkts = rxBadtagPkts, 
    508     bcm_rxUnknownsciPkts = rxUnknownsciPkts, 
    509     bcm_rxNosciPkts = rxNosciPkts, 
    510     bcm_rxOvErrOverrunPkts = rxOvErrOverrunPkts, 
    511     bcm_rxSAUnusedPkts = rxSAUnusedPkts, 
    512     bcm_rxSANotusingPkts = rxSANotusingPkts, 
    513     bcm_rxSANotValidPkts = rxSANotValidPkts, 
    514     bcm_rxSAInvalidPkts = rxSAInvalidPkts, 
    515     bcm_rxSAOkPkts = rxSAOkPkts, 
    516     bcm_rxSCUnusedPkts = rxSCUnusedPkts, 
    517     bcm_rxNotusinSCPkts = rxNotusinSCPkts, 
    518     bcm_rxSCLatePkts = rxSCLatePkts, 
    519     bcm_rxSCNotValidPkts = rxSCNotValidPkts, 
    520     bcm_rxSCInvalidPkts = rxSCInvalidPkts, 
    521     bcm_rxSCDelayedPkts = rxSCDelayedPkts, 
    522     bcm_rxSCUncheckedPkts = rxSCUncheckedPkts, 
    523     bcm_rxSCOkPkts = rxSCOkPkts, 
    524     bcm_rxSCvalidtBytes = rxSCvalidtBytes, 
    525     bcm_rxSCDCryptoBytes = rxSCDCryptoBytes, 
    526     bcm_txControlledBytes = txControlledBytes, 
    527     bcm_txControlledUnicastPkts = txControlledUnicastPkts, 
    528     bcm_txControlledMulticastPkts = txControlledMulticastPkts, 
    529     bcm_txControlledBroadcastPkts = txControlledBroadcastPkts, 
    530     bcm_txControlledErrorPkts = txControlledErrorPkts, 
    531     bcm_txUncontrolledBytes = txUncontrolledBytes, 
    532     bcm_txUncontrolledUnicastPkts = txUncontrolledUnicastPkts, 
    533     bcm_txUncontrolledMulticastPkts = txUncontrolledMulticastPkts, 
    534     bcm_txUncontrolledBroadcastPkts = txUncontrolledBroadcastPkts, 
    535     bcm_txUncontrolledErrorPkts = txUncontrolledErrorPkts, 
    536     bcm_txUntagPkts = txUntagPkts, 
    537     bcm_txTooLongPkts = txTooLongPkts, 
    538     bcm_txSAProtectedPkts = txSAProtectedPkts, 
    539     bcm_txSACryptoPkts = txSACryptoPkts, 
    540     bcm_txSCProtectedPkts = txSCProtectedPkts, 
    541     bcm_txSCCryptoPkts = txSCCryptoPkts, 
    542     bcm_txSCProtectedBytes = txSCProtectedBytes, 
    543     bcm_txSCCryptoBytes = txSCCryptoBytes, 
    544     bcm_txSAavailablePkts = txSAavailablePkts, 
    545     bcm_rxSAavailablePkts = rxSAavailablePkts, 
    546     bcm_macsec_stat__count = bmacsec_stat__count 
    547 } bcm_macsec_stat_t;
    548 
    549 #ifndef BCM_HIDE_DISPATCHABLE
    550 
    551 /*  Crear all the stats for the specified port. */
    552 extern int bcm_macsec_stat_clear(
    553     int unit, 
    554     bcm_port_t port);
    555 
    556 /*  Return the current statistics for the specified counter. */
    557 extern int bcm_macsec_stat_get(
    558     int unit, 
    559     bcm_port_t port, 
    560     bcm_macsec_stat_t stat, 
    561     int chanId, 
    562     int assocId, 
    563     uint64 *val);
    564 
    565 /*  Return the current statistics for the specified counter. */
    566 extern int bcm_macsec_stat_get32(
    567     int unit, 
    568     bcm_port_t port, 
    569     bcm_macsec_stat_t stat, 
    570     int chanId, 
    571     int assocId, 
    572     uint32 *val);
    573 
    574 /*  Sets the current statistics for the specified counter. */
    575 extern int bcm_macsec_stat_set(
    576     int unit, 
    577     bcm_port_t port, 
    578     bcm_macsec_stat_t stat, 
    579     int chanId, 
    580     int assocId, 
    581     uint64 val);
    582 
    583 /*  Sets the current statistics for the specified counter. */
    584 extern int bcm_macsec_stat_set32(
    585     int unit, 
    586     bcm_port_t port, 
    587     bcm_macsec_stat_t stat, 
    588     int chanId, 
    589     int assocId, 
    590     uint32 val);
    591 
    592 #endif /* defined(INCLUDE_MACSEC) */
    593 
    594 #endif /* BCM_HIDE_DISPATCHABLE */
    595 
    596 #endif /* __BCM_MACSEC_H__ */