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