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__ */