traverse_server.c (178352B)
1 /* 2 * DO NOT EDIT THIS FILE! 3 * This file is auto-generated. 4 * Edits to this file will be lost when it is regenerated. 5 * 6 * 7 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 8 * 9 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 10 * 11 * File: traverse_server.c 12 * Purpose: BCM API Traverse Server routines for remote units 13 * Generator: mkdispatch 1.54 14 */ 15 16 #include <bcm/types.h> 17 #include <bcm/bregex.h> 18 #include <bcm/cosq.h> 19 #include <bcm/extender.h> 20 #include <bcm/fabric.h> 21 #include <bcm/fcoe.h> 22 #include <bcm/field.h> 23 #include <bcm/flow.h> 24 #include <bcm/flowtracker.h> 25 #include <bcm/hash.h> 26 #include <bcm/instru.h> 27 #include <bcm/ipfix.h> 28 #include <bcm/ipmc.h> 29 #include <bcm/l2.h> 30 #include <bcm/l2gre.h> 31 #include <bcm/l3.h> 32 #include <bcm/mim.h> 33 #include <bcm/mirror.h> 34 #include <bcm/mpls.h> 35 #include <bcm/multicast.h> 36 #include <bcm/nat.h> 37 #include <bcm/niv.h> 38 #include <bcm/oam.h> 39 #include <bcm/policer.h> 40 #include <bcm/port.h> 41 #include <bcm/proxy.h> 42 #include <bcm/pstats.h> 43 #include <bcm/range.h> 44 #include <bcm/sat.h> 45 #include <bcm/srv6.h> 46 #include <bcm/subport.h> 47 #include <bcm/switch.h> 48 #include <bcm/time.h> 49 #include <bcm/trill.h> 50 #include <bcm/trunk.h> 51 #include <bcm/tsn.h> 52 #include <bcm/tunnel.h> 53 #include <bcm/vlan.h> 54 #include <bcm/vswitch.h> 55 #include <bcm/vxlan.h> 56 #include <bcm/wlan.h> 57 58 #include <bcm_int/rpc/pack.h> 59 #include "traverse.h" 60 #include "traverse_key.h" 61 62 #ifdef BCM_RPC_SUPPORT 63 64 65 /* bcm_cosq_gport_traverse */ 66 67 STATIC int 68 _bcm_rlink_cosq_gport_traverse_callback( 69 int unit, 70 bcm_gport_t port, 71 int numq, 72 uint32 flags, 73 bcm_gport_t gport, 74 void * user_data) 75 { 76 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 77 int r_rv; 78 int r_size; 79 80 /* Pack reply */ 81 r_size = 16; 82 83 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 84 /* Skip unit */ 85 BCM_PACK_U32((*r_data)->tx_ptr, port); 86 BCM_PACK_U32((*r_data)->tx_ptr, numq); 87 BCM_PACK_U32((*r_data)->tx_ptr, flags); 88 BCM_PACK_U32((*r_data)->tx_ptr, gport); 89 } 90 91 return r_rv; 92 } 93 94 STATIC int 95 _bcm_rlink_cosq_gport_traverse_handler( 96 bcm_rlink_traverse_data_t **r_data) 97 { 98 int r_rv; 99 /* Skip unit */ 100 101 /* Unpack request */ 102 /* Skip unit */ 103 104 r_rv = bcm_cosq_gport_traverse((*r_data)->unit, _bcm_rlink_cosq_gport_traverse_callback, (void *)r_data); 105 106 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 107 } 108 109 /* bcm_cosq_gport_traverse_by_port */ 110 111 STATIC int 112 _bcm_rlink_cosq_gport_traverse_by_port_callback( 113 int unit, 114 bcm_gport_t port, 115 int numq, 116 uint32 flags, 117 bcm_gport_t gport, 118 void * user_data) 119 { 120 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 121 int r_rv; 122 int r_size; 123 124 /* Pack reply */ 125 r_size = 16; 126 127 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 128 /* Skip unit */ 129 BCM_PACK_U32((*r_data)->tx_ptr, port); 130 BCM_PACK_U32((*r_data)->tx_ptr, numq); 131 BCM_PACK_U32((*r_data)->tx_ptr, flags); 132 BCM_PACK_U32((*r_data)->tx_ptr, gport); 133 } 134 135 return r_rv; 136 } 137 138 STATIC int 139 _bcm_rlink_cosq_gport_traverse_by_port_handler( 140 bcm_rlink_traverse_data_t **r_data) 141 { 142 int r_rv; 143 /* Skip unit */ 144 bcm_gport_t port; 145 146 /* Unpack request */ 147 /* Skip unit */ 148 BCM_UNPACK_U32((*r_data)->rx_ptr, port); 149 150 r_rv = bcm_cosq_gport_traverse_by_port((*r_data)->unit, port, _bcm_rlink_cosq_gport_traverse_by_port_callback, (void *)r_data); 151 152 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 153 } 154 155 /* bcm_cosq_pfc_deadlock_recovery_event_register */ 156 157 STATIC int 158 _bcm_rlink_cosq_pfc_deadlock_recovery_event_register_callback( 159 int unit, 160 bcm_port_t port, 161 bcm_cos_queue_t cosq, 162 bcm_cosq_pfc_deadlock_recovery_event_t recovery_state, 163 void * userdata) 164 { 165 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)userdata; 166 int r_rv; 167 int r_size; 168 169 /* Pack reply */ 170 r_size = 12; 171 172 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 173 /* Skip unit */ 174 BCM_PACK_U32((*r_data)->tx_ptr, port); 175 BCM_PACK_U32((*r_data)->tx_ptr, cosq); 176 BCM_PACK_U32((*r_data)->tx_ptr, recovery_state); 177 } 178 179 return r_rv; 180 } 181 182 STATIC int 183 _bcm_rlink_cosq_pfc_deadlock_recovery_event_register_handler( 184 bcm_rlink_traverse_data_t **r_data) 185 { 186 int r_rv; 187 /* Skip unit */ 188 189 /* Unpack request */ 190 /* Skip unit */ 191 192 r_rv = bcm_cosq_pfc_deadlock_recovery_event_register((*r_data)->unit, _bcm_rlink_cosq_pfc_deadlock_recovery_event_register_callback, (void *)r_data); 193 194 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 195 } 196 197 /* bcm_cosq_pfc_deadlock_recovery_event_unregister */ 198 199 STATIC int 200 _bcm_rlink_cosq_pfc_deadlock_recovery_event_unregister_callback( 201 int unit, 202 bcm_port_t port, 203 bcm_cos_queue_t cosq, 204 bcm_cosq_pfc_deadlock_recovery_event_t recovery_state, 205 void * userdata) 206 { 207 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)userdata; 208 int r_rv; 209 int r_size; 210 211 /* Pack reply */ 212 r_size = 12; 213 214 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 215 /* Skip unit */ 216 BCM_PACK_U32((*r_data)->tx_ptr, port); 217 BCM_PACK_U32((*r_data)->tx_ptr, cosq); 218 BCM_PACK_U32((*r_data)->tx_ptr, recovery_state); 219 } 220 221 return r_rv; 222 } 223 224 STATIC int 225 _bcm_rlink_cosq_pfc_deadlock_recovery_event_unregister_handler( 226 bcm_rlink_traverse_data_t **r_data) 227 { 228 int r_rv; 229 /* Skip unit */ 230 231 /* Unpack request */ 232 /* Skip unit */ 233 234 r_rv = bcm_cosq_pfc_deadlock_recovery_event_unregister((*r_data)->unit, _bcm_rlink_cosq_pfc_deadlock_recovery_event_unregister_callback, (void *)r_data); 235 236 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 237 } 238 239 /* bcm_cosq_subscriber_traverse */ 240 241 STATIC int 242 _bcm_rlink_cosq_subscriber_traverse_callback( 243 int unit, 244 bcm_cosq_subscriber_map_t * map, 245 void * user_data) 246 { 247 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 248 int r_rv; 249 int r_size; 250 251 /* Pack reply */ 252 r_size = 19; 253 254 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 255 /* Skip unit */ 256 if (map == NULL) { 257 BCM_PACK_U8((*r_data)->tx_ptr, 1); 258 } else { 259 BCM_PACK_U8((*r_data)->tx_ptr, 0); 260 (*r_data)->tx_ptr = _bcm_pack_cosq_subscriber_map((*r_data)->tx_ptr, map); 261 } 262 } 263 264 return r_rv; 265 } 266 267 STATIC int 268 _bcm_rlink_cosq_subscriber_traverse_handler( 269 bcm_rlink_traverse_data_t **r_data) 270 { 271 int r_rv; 272 /* Skip unit */ 273 274 /* Unpack request */ 275 /* Skip unit */ 276 277 r_rv = bcm_cosq_subscriber_traverse((*r_data)->unit, _bcm_rlink_cosq_subscriber_traverse_callback, (void *)r_data); 278 279 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 280 } 281 282 /* bcm_cosq_tas_profile_traverse */ 283 284 STATIC int 285 _bcm_rlink_cosq_tas_profile_traverse_callback( 286 int unit, 287 bcm_gport_t port, 288 bcm_cosq_tas_profile_id_t pid, 289 void * user_data) 290 { 291 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 292 int r_rv; 293 int r_size; 294 295 /* Pack reply */ 296 r_size = 8; 297 298 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 299 /* Skip unit */ 300 BCM_PACK_U32((*r_data)->tx_ptr, port); 301 BCM_PACK_U32((*r_data)->tx_ptr, pid); 302 } 303 304 return r_rv; 305 } 306 307 STATIC int 308 _bcm_rlink_cosq_tas_profile_traverse_handler( 309 bcm_rlink_traverse_data_t **r_data) 310 { 311 int r_rv; 312 /* Skip unit */ 313 bcm_gport_t port; 314 315 /* Unpack request */ 316 /* Skip unit */ 317 BCM_UNPACK_U32((*r_data)->rx_ptr, port); 318 319 r_rv = bcm_cosq_tas_profile_traverse((*r_data)->unit, port, _bcm_rlink_cosq_tas_profile_traverse_callback, (void *)r_data); 320 321 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 322 } 323 324 #ifdef INCLUDE_L3 325 326 /* bcm_extender_encap_traverse */ 327 328 STATIC int 329 _bcm_rlink_extender_encap_traverse_callback( 330 int unit, 331 bcm_extender_encap_t * extender_encap, 332 void * user_data) 333 { 334 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 335 int r_rv; 336 int r_size; 337 338 /* Pack reply */ 339 r_size = 11; 340 341 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 342 /* Skip unit */ 343 if (extender_encap == NULL) { 344 BCM_PACK_U8((*r_data)->tx_ptr, 1); 345 } else { 346 BCM_PACK_U8((*r_data)->tx_ptr, 0); 347 (*r_data)->tx_ptr = _bcm_pack_extender_encap((*r_data)->tx_ptr, extender_encap); 348 } 349 } 350 351 return r_rv; 352 } 353 354 STATIC int 355 _bcm_rlink_extender_encap_traverse_handler( 356 bcm_rlink_traverse_data_t **r_data) 357 { 358 int r_rv; 359 /* Skip unit */ 360 361 /* Unpack request */ 362 /* Skip unit */ 363 364 r_rv = bcm_extender_encap_traverse((*r_data)->unit, _bcm_rlink_extender_encap_traverse_callback, (void *)r_data); 365 366 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 367 } 368 369 /* bcm_extender_forward_traverse */ 370 371 STATIC int 372 _bcm_rlink_extender_forward_traverse_callback( 373 int unit, 374 bcm_extender_forward_t * extender_forward_entry, 375 void * user_data) 376 { 377 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 378 int r_rv; 379 int r_size; 380 381 /* Pack reply */ 382 r_size = 25; 383 384 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 385 /* Skip unit */ 386 if (extender_forward_entry == NULL) { 387 BCM_PACK_U8((*r_data)->tx_ptr, 1); 388 } else { 389 BCM_PACK_U8((*r_data)->tx_ptr, 0); 390 (*r_data)->tx_ptr = _bcm_pack_extender_forward((*r_data)->tx_ptr, extender_forward_entry); 391 } 392 } 393 394 return r_rv; 395 } 396 397 STATIC int 398 _bcm_rlink_extender_forward_traverse_handler( 399 bcm_rlink_traverse_data_t **r_data) 400 { 401 int r_rv; 402 /* Skip unit */ 403 404 /* Unpack request */ 405 /* Skip unit */ 406 407 r_rv = bcm_extender_forward_traverse((*r_data)->unit, _bcm_rlink_extender_forward_traverse_callback, (void *)r_data); 408 409 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 410 } 411 412 /* bcm_extender_port_traverse */ 413 414 STATIC int 415 _bcm_rlink_extender_port_traverse_callback( 416 int unit, 417 bcm_extender_port_t * extender_port, 418 void * user_data) 419 { 420 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 421 int r_rv; 422 int r_size; 423 424 /* Pack reply */ 425 r_size = 61; 426 427 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 428 /* Skip unit */ 429 if (extender_port == NULL) { 430 BCM_PACK_U8((*r_data)->tx_ptr, 1); 431 } else { 432 BCM_PACK_U8((*r_data)->tx_ptr, 0); 433 (*r_data)->tx_ptr = _bcm_pack_extender_port((*r_data)->tx_ptr, extender_port); 434 } 435 } 436 437 return r_rv; 438 } 439 440 STATIC int 441 _bcm_rlink_extender_port_traverse_handler( 442 bcm_rlink_traverse_data_t **r_data) 443 { 444 int r_rv; 445 /* Skip unit */ 446 447 /* Unpack request */ 448 /* Skip unit */ 449 450 r_rv = bcm_extender_port_traverse((*r_data)->unit, _bcm_rlink_extender_port_traverse_callback, (void *)r_data); 451 452 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 453 } 454 455 #endif /* INCLUDE_L3 */ 456 457 /* bcm_fabric_action_traverse */ 458 459 STATIC int 460 _bcm_rlink_fabric_action_traverse_callback( 461 int unit, 462 bcm_fabric_action_t action_id, 463 bcm_fabric_action_info_t * action_info, 464 void * user_data) 465 { 466 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 467 int r_rv; 468 int r_size; 469 470 /* Pack reply */ 471 r_size = 125; 472 473 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 474 /* Skip unit */ 475 BCM_PACK_U32((*r_data)->tx_ptr, action_id); 476 if (action_info == NULL) { 477 BCM_PACK_U8((*r_data)->tx_ptr, 1); 478 } else { 479 BCM_PACK_U8((*r_data)->tx_ptr, 0); 480 (*r_data)->tx_ptr = _bcm_pack_fabric_action_info((*r_data)->tx_ptr, action_info); 481 } 482 } 483 484 return r_rv; 485 } 486 487 STATIC int 488 _bcm_rlink_fabric_action_traverse_handler( 489 bcm_rlink_traverse_data_t **r_data) 490 { 491 int r_rv; 492 /* Skip unit */ 493 494 /* Unpack request */ 495 /* Skip unit */ 496 497 r_rv = bcm_fabric_action_traverse((*r_data)->unit, _bcm_rlink_fabric_action_traverse_callback, (void *)r_data); 498 499 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 500 } 501 502 /* bcm_fabric_predicate_action_traverse */ 503 504 STATIC int 505 _bcm_rlink_fabric_predicate_action_traverse_callback( 506 int unit, 507 bcm_fabric_predicate_action_t predicate_action_id, 508 bcm_fabric_predicate_action_info_t * predicate_action_info, 509 void * user_data) 510 { 511 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 512 int r_rv; 513 int r_size; 514 515 /* Pack reply */ 516 r_size = 25; 517 518 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 519 /* Skip unit */ 520 BCM_PACK_U32((*r_data)->tx_ptr, predicate_action_id); 521 if (predicate_action_info == NULL) { 522 BCM_PACK_U8((*r_data)->tx_ptr, 1); 523 } else { 524 BCM_PACK_U8((*r_data)->tx_ptr, 0); 525 (*r_data)->tx_ptr = _bcm_pack_fabric_predicate_action_info((*r_data)->tx_ptr, predicate_action_info); 526 } 527 } 528 529 return r_rv; 530 } 531 532 STATIC int 533 _bcm_rlink_fabric_predicate_action_traverse_handler( 534 bcm_rlink_traverse_data_t **r_data) 535 { 536 int r_rv; 537 /* Skip unit */ 538 539 /* Unpack request */ 540 /* Skip unit */ 541 542 r_rv = bcm_fabric_predicate_action_traverse((*r_data)->unit, _bcm_rlink_fabric_predicate_action_traverse_callback, (void *)r_data); 543 544 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 545 } 546 547 /* bcm_fabric_predicate_traverse */ 548 549 STATIC int 550 _bcm_rlink_fabric_predicate_traverse_callback( 551 int unit, 552 bcm_fabric_predicate_t pred_id, 553 bcm_fabric_predicate_info_t * pred_info, 554 void * user_data) 555 { 556 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 557 int r_rv; 558 int r_size; 559 560 /* Pack reply */ 561 r_size = 33; 562 563 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 564 /* Skip unit */ 565 BCM_PACK_U32((*r_data)->tx_ptr, pred_id); 566 if (pred_info == NULL) { 567 BCM_PACK_U8((*r_data)->tx_ptr, 1); 568 } else { 569 BCM_PACK_U8((*r_data)->tx_ptr, 0); 570 (*r_data)->tx_ptr = _bcm_pack_fabric_predicate_info((*r_data)->tx_ptr, pred_info); 571 } 572 } 573 574 return r_rv; 575 } 576 577 STATIC int 578 _bcm_rlink_fabric_predicate_traverse_handler( 579 bcm_rlink_traverse_data_t **r_data) 580 { 581 int r_rv; 582 /* Skip unit */ 583 584 /* Unpack request */ 585 /* Skip unit */ 586 587 r_rv = bcm_fabric_predicate_traverse((*r_data)->unit, _bcm_rlink_fabric_predicate_traverse_callback, (void *)r_data); 588 589 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 590 } 591 592 /* bcm_fabric_qsel_entry_traverse */ 593 594 STATIC int 595 _bcm_rlink_fabric_qsel_entry_traverse_callback( 596 int unit, 597 bcm_fabric_qsel_t qsel_id, 598 int offset, 599 bcm_gport_t queue, 600 bcm_fabric_qsel_offset_t qsel_offset, 601 void * user_data) 602 { 603 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 604 int r_rv; 605 int r_size; 606 607 /* Pack reply */ 608 r_size = 16; 609 610 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 611 /* Skip unit */ 612 BCM_PACK_U32((*r_data)->tx_ptr, qsel_id); 613 BCM_PACK_U32((*r_data)->tx_ptr, offset); 614 BCM_PACK_U32((*r_data)->tx_ptr, queue); 615 BCM_PACK_U32((*r_data)->tx_ptr, qsel_offset); 616 } 617 618 return r_rv; 619 } 620 621 STATIC int 622 _bcm_rlink_fabric_qsel_entry_traverse_handler( 623 bcm_rlink_traverse_data_t **r_data) 624 { 625 int r_rv; 626 /* Skip unit */ 627 bcm_fabric_qsel_t qsel_id; 628 629 /* Unpack request */ 630 /* Skip unit */ 631 BCM_UNPACK_U32((*r_data)->rx_ptr, qsel_id); 632 633 r_rv = bcm_fabric_qsel_entry_traverse((*r_data)->unit, qsel_id, _bcm_rlink_fabric_qsel_entry_traverse_callback, (void *)r_data); 634 635 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 636 } 637 638 /* bcm_fabric_qsel_offset_entry_traverse */ 639 640 STATIC int 641 _bcm_rlink_fabric_qsel_offset_entry_traverse_callback( 642 int unit, 643 bcm_fabric_qsel_offset_t qsel_offset_id, 644 bcm_cos_t int_pri, 645 int offset, 646 void * user_data) 647 { 648 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 649 int r_rv; 650 int r_size; 651 652 /* Pack reply */ 653 r_size = 12; 654 655 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 656 /* Skip unit */ 657 BCM_PACK_U32((*r_data)->tx_ptr, qsel_offset_id); 658 BCM_PACK_U32((*r_data)->tx_ptr, int_pri); 659 BCM_PACK_U32((*r_data)->tx_ptr, offset); 660 } 661 662 return r_rv; 663 } 664 665 STATIC int 666 _bcm_rlink_fabric_qsel_offset_entry_traverse_handler( 667 bcm_rlink_traverse_data_t **r_data) 668 { 669 int r_rv; 670 /* Skip unit */ 671 bcm_fabric_qsel_offset_t qsel_offset_id; 672 673 /* Unpack request */ 674 /* Skip unit */ 675 BCM_UNPACK_U32((*r_data)->rx_ptr, qsel_offset_id); 676 677 r_rv = bcm_fabric_qsel_offset_entry_traverse((*r_data)->unit, qsel_offset_id, _bcm_rlink_fabric_qsel_offset_entry_traverse_callback, (void *)r_data); 678 679 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 680 } 681 682 /* bcm_fabric_qsel_offset_traverse */ 683 684 STATIC int 685 _bcm_rlink_fabric_qsel_offset_traverse_callback( 686 int unit, 687 bcm_fabric_qsel_offset_t qsel_offset_id, 688 uint32 flags, 689 void * user_data) 690 { 691 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 692 int r_rv; 693 int r_size; 694 695 /* Pack reply */ 696 r_size = 8; 697 698 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 699 /* Skip unit */ 700 BCM_PACK_U32((*r_data)->tx_ptr, qsel_offset_id); 701 BCM_PACK_U32((*r_data)->tx_ptr, flags); 702 } 703 704 return r_rv; 705 } 706 707 STATIC int 708 _bcm_rlink_fabric_qsel_offset_traverse_handler( 709 bcm_rlink_traverse_data_t **r_data) 710 { 711 int r_rv; 712 /* Skip unit */ 713 714 /* Unpack request */ 715 /* Skip unit */ 716 717 r_rv = bcm_fabric_qsel_offset_traverse((*r_data)->unit, _bcm_rlink_fabric_qsel_offset_traverse_callback, (void *)r_data); 718 719 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 720 } 721 722 /* bcm_fabric_qsel_traverse */ 723 724 STATIC int 725 _bcm_rlink_fabric_qsel_traverse_callback( 726 int unit, 727 bcm_fabric_qsel_t qsel_id, 728 uint32 flags, 729 int base, 730 int count, 731 void * user_data) 732 { 733 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 734 int r_rv; 735 int r_size; 736 737 /* Pack reply */ 738 r_size = 16; 739 740 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 741 /* Skip unit */ 742 BCM_PACK_U32((*r_data)->tx_ptr, qsel_id); 743 BCM_PACK_U32((*r_data)->tx_ptr, flags); 744 BCM_PACK_U32((*r_data)->tx_ptr, base); 745 BCM_PACK_U32((*r_data)->tx_ptr, count); 746 } 747 748 return r_rv; 749 } 750 751 STATIC int 752 _bcm_rlink_fabric_qsel_traverse_handler( 753 bcm_rlink_traverse_data_t **r_data) 754 { 755 int r_rv; 756 /* Skip unit */ 757 758 /* Unpack request */ 759 /* Skip unit */ 760 761 r_rv = bcm_fabric_qsel_traverse((*r_data)->unit, _bcm_rlink_fabric_qsel_traverse_callback, (void *)r_data); 762 763 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 764 } 765 766 /* bcm_fcoe_route_traverse */ 767 768 STATIC int 769 _bcm_rlink_fcoe_route_traverse_callback( 770 int unit, 771 bcm_fcoe_route_t * route, 772 void * user_data) 773 { 774 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 775 int r_rv; 776 int r_size; 777 778 /* Pack reply */ 779 r_size = 43; 780 781 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 782 /* Skip unit */ 783 if (route == NULL) { 784 BCM_PACK_U8((*r_data)->tx_ptr, 1); 785 } else { 786 BCM_PACK_U8((*r_data)->tx_ptr, 0); 787 (*r_data)->tx_ptr = _bcm_pack_fcoe_route((*r_data)->tx_ptr, route); 788 } 789 } 790 791 return r_rv; 792 } 793 794 STATIC int 795 _bcm_rlink_fcoe_route_traverse_handler( 796 bcm_rlink_traverse_data_t **r_data) 797 { 798 int r_rv; 799 /* Skip unit */ 800 uint32 flags; 801 802 /* Unpack request */ 803 /* Skip unit */ 804 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 805 806 r_rv = bcm_fcoe_route_traverse((*r_data)->unit, flags, _bcm_rlink_fcoe_route_traverse_callback, (void *)r_data); 807 808 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 809 } 810 811 /* bcm_fcoe_vsan_traverse */ 812 813 STATIC int 814 _bcm_rlink_fcoe_vsan_traverse_callback( 815 int unit, 816 bcm_fcoe_vsan_id_t vsan_id, 817 bcm_fcoe_vsan_t * vsan, 818 void * user_data) 819 { 820 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 821 int r_rv; 822 int r_size; 823 824 /* Pack reply */ 825 r_size = 17; 826 827 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 828 /* Skip unit */ 829 BCM_PACK_U32((*r_data)->tx_ptr, vsan_id); 830 if (vsan == NULL) { 831 BCM_PACK_U8((*r_data)->tx_ptr, 1); 832 } else { 833 BCM_PACK_U8((*r_data)->tx_ptr, 0); 834 (*r_data)->tx_ptr = _bcm_pack_fcoe_vsan((*r_data)->tx_ptr, vsan); 835 } 836 } 837 838 return r_rv; 839 } 840 841 STATIC int 842 _bcm_rlink_fcoe_vsan_traverse_handler( 843 bcm_rlink_traverse_data_t **r_data) 844 { 845 int r_rv; 846 /* Skip unit */ 847 uint32 flags; 848 849 /* Unpack request */ 850 /* Skip unit */ 851 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 852 853 r_rv = bcm_fcoe_vsan_traverse((*r_data)->unit, flags, _bcm_rlink_fcoe_vsan_traverse_callback, (void *)r_data); 854 855 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 856 } 857 858 /* bcm_fcoe_zone_traverse */ 859 860 STATIC int 861 _bcm_rlink_fcoe_zone_traverse_callback( 862 int unit, 863 bcm_fcoe_zone_entry_t * zone, 864 void * user_data) 865 { 866 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 867 int r_rv; 868 int r_size; 869 870 /* Pack reply */ 871 r_size = 29; 872 873 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 874 /* Skip unit */ 875 if (zone == NULL) { 876 BCM_PACK_U8((*r_data)->tx_ptr, 1); 877 } else { 878 BCM_PACK_U8((*r_data)->tx_ptr, 0); 879 (*r_data)->tx_ptr = _bcm_pack_fcoe_zone_entry((*r_data)->tx_ptr, zone); 880 } 881 } 882 883 return r_rv; 884 } 885 886 STATIC int 887 _bcm_rlink_fcoe_zone_traverse_handler( 888 bcm_rlink_traverse_data_t **r_data) 889 { 890 int r_rv; 891 /* Skip unit */ 892 uint32 flags; 893 894 /* Unpack request */ 895 /* Skip unit */ 896 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 897 898 r_rv = bcm_fcoe_zone_traverse((*r_data)->unit, flags, _bcm_rlink_fcoe_zone_traverse_callback, (void *)r_data); 899 900 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 901 } 902 903 /* bcm_field_group_traverse */ 904 905 STATIC int 906 _bcm_rlink_field_group_traverse_callback( 907 int unit, 908 bcm_field_group_t group, 909 void * user_data) 910 { 911 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 912 int r_rv; 913 int r_size; 914 915 /* Pack reply */ 916 r_size = 4; 917 918 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 919 /* Skip unit */ 920 BCM_PACK_U32((*r_data)->tx_ptr, group); 921 } 922 923 return r_rv; 924 } 925 926 STATIC int 927 _bcm_rlink_field_group_traverse_handler( 928 bcm_rlink_traverse_data_t **r_data) 929 { 930 int r_rv; 931 /* Skip unit */ 932 933 /* Unpack request */ 934 /* Skip unit */ 935 936 r_rv = bcm_field_group_traverse((*r_data)->unit, _bcm_rlink_field_group_traverse_callback, (void *)r_data); 937 938 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 939 } 940 941 #ifdef INCLUDE_L3 942 943 /* bcm_flow_encap_traverse */ 944 945 STATIC int 946 _bcm_rlink_flow_encap_traverse_callback( 947 int unit, 948 bcm_flow_encap_config_t * info, 949 uint32 num_of_fields, 950 bcm_flow_logical_field_t * field, 951 void * user_data) 952 { 953 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 954 int r_rv; 955 int r_size; 956 int r_i; 957 958 /* Pack reply */ 959 r_size = 66 + (num_of_fields*8); 960 961 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 962 /* Skip unit */ 963 if (info == NULL) { 964 BCM_PACK_U8((*r_data)->tx_ptr, 1); 965 } else { 966 BCM_PACK_U8((*r_data)->tx_ptr, 0); 967 (*r_data)->tx_ptr = _bcm_pack_flow_encap_config((*r_data)->tx_ptr, info); 968 } 969 BCM_PACK_U32((*r_data)->tx_ptr, num_of_fields); 970 if (field == NULL) { 971 BCM_PACK_U8((*r_data)->tx_ptr, 1); 972 } else { 973 BCM_PACK_U8((*r_data)->tx_ptr, 0); 974 for (r_i = 0; r_i < num_of_fields; r_i++) { 975 (*r_data)->tx_ptr = _bcm_pack_flow_logical_field((*r_data)->tx_ptr, field+r_i); 976 } 977 } 978 } 979 980 return r_rv; 981 } 982 983 STATIC int 984 _bcm_rlink_flow_encap_traverse_handler( 985 bcm_rlink_traverse_data_t **r_data) 986 { 987 int r_rv; 988 /* Skip unit */ 989 990 /* Unpack request */ 991 /* Skip unit */ 992 993 r_rv = bcm_flow_encap_traverse((*r_data)->unit, _bcm_rlink_flow_encap_traverse_callback, (void *)r_data); 994 995 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 996 } 997 998 /* bcm_flow_match_traverse */ 999 1000 STATIC int 1001 _bcm_rlink_flow_match_traverse_callback( 1002 int unit, 1003 bcm_flow_match_config_t * info, 1004 uint32 num_of_fields, 1005 bcm_flow_logical_field_t * field, 1006 void * user_data) 1007 { 1008 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1009 int r_rv; 1010 int r_size; 1011 int r_i; 1012 1013 /* Pack reply */ 1014 r_size = 138 + (num_of_fields*8); 1015 1016 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1017 /* Skip unit */ 1018 if (info == NULL) { 1019 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1020 } else { 1021 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1022 (*r_data)->tx_ptr = _bcm_pack_flow_match_config((*r_data)->tx_ptr, info); 1023 } 1024 BCM_PACK_U32((*r_data)->tx_ptr, num_of_fields); 1025 if (field == NULL) { 1026 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1027 } else { 1028 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1029 for (r_i = 0; r_i < num_of_fields; r_i++) { 1030 (*r_data)->tx_ptr = _bcm_pack_flow_logical_field((*r_data)->tx_ptr, field+r_i); 1031 } 1032 } 1033 } 1034 1035 return r_rv; 1036 } 1037 1038 STATIC int 1039 _bcm_rlink_flow_match_traverse_handler( 1040 bcm_rlink_traverse_data_t **r_data) 1041 { 1042 int r_rv; 1043 /* Skip unit */ 1044 1045 /* Unpack request */ 1046 /* Skip unit */ 1047 1048 r_rv = bcm_flow_match_traverse((*r_data)->unit, _bcm_rlink_flow_match_traverse_callback, (void *)r_data); 1049 1050 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1051 } 1052 1053 /* bcm_flow_tunnel_initiator_traverse */ 1054 1055 STATIC int 1056 _bcm_rlink_flow_tunnel_initiator_traverse_callback( 1057 int unit, 1058 bcm_flow_tunnel_initiator_t * info, 1059 uint32 num_of_fields, 1060 bcm_flow_logical_field_t * field, 1061 void * user_data) 1062 { 1063 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1064 int r_rv; 1065 int r_size; 1066 int r_i; 1067 1068 /* Pack reply */ 1069 r_size = 122 + (num_of_fields*8); 1070 1071 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1072 /* Skip unit */ 1073 if (info == NULL) { 1074 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1075 } else { 1076 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1077 (*r_data)->tx_ptr = _bcm_pack_flow_tunnel_initiator((*r_data)->tx_ptr, info); 1078 } 1079 BCM_PACK_U32((*r_data)->tx_ptr, num_of_fields); 1080 if (field == NULL) { 1081 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1082 } else { 1083 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1084 for (r_i = 0; r_i < num_of_fields; r_i++) { 1085 (*r_data)->tx_ptr = _bcm_pack_flow_logical_field((*r_data)->tx_ptr, field+r_i); 1086 } 1087 } 1088 } 1089 1090 return r_rv; 1091 } 1092 1093 STATIC int 1094 _bcm_rlink_flow_tunnel_initiator_traverse_handler( 1095 bcm_rlink_traverse_data_t **r_data) 1096 { 1097 int r_rv; 1098 /* Skip unit */ 1099 1100 /* Unpack request */ 1101 /* Skip unit */ 1102 1103 r_rv = bcm_flow_tunnel_initiator_traverse((*r_data)->unit, _bcm_rlink_flow_tunnel_initiator_traverse_callback, (void *)r_data); 1104 1105 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1106 } 1107 1108 /* bcm_flow_tunnel_terminator_traverse */ 1109 1110 STATIC int 1111 _bcm_rlink_flow_tunnel_terminator_traverse_callback( 1112 int unit, 1113 bcm_flow_tunnel_terminator_t * info, 1114 uint32 num_of_fields, 1115 bcm_flow_logical_field_t * field, 1116 void * user_data) 1117 { 1118 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1119 int r_rv; 1120 int r_size; 1121 int r_i; 1122 1123 /* Pack reply */ 1124 r_size = 128 + (num_of_fields*8); 1125 1126 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1127 /* Skip unit */ 1128 if (info == NULL) { 1129 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1130 } else { 1131 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1132 (*r_data)->tx_ptr = _bcm_pack_flow_tunnel_terminator((*r_data)->tx_ptr, info); 1133 } 1134 BCM_PACK_U32((*r_data)->tx_ptr, num_of_fields); 1135 if (field == NULL) { 1136 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1137 } else { 1138 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1139 for (r_i = 0; r_i < num_of_fields; r_i++) { 1140 (*r_data)->tx_ptr = _bcm_pack_flow_logical_field((*r_data)->tx_ptr, field+r_i); 1141 } 1142 } 1143 } 1144 1145 return r_rv; 1146 } 1147 1148 STATIC int 1149 _bcm_rlink_flow_tunnel_terminator_traverse_handler( 1150 bcm_rlink_traverse_data_t **r_data) 1151 { 1152 int r_rv; 1153 /* Skip unit */ 1154 1155 /* Unpack request */ 1156 /* Skip unit */ 1157 1158 r_rv = bcm_flow_tunnel_terminator_traverse((*r_data)->unit, _bcm_rlink_flow_tunnel_terminator_traverse_callback, (void *)r_data); 1159 1160 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1161 } 1162 1163 /* bcm_flow_vpn_traverse */ 1164 1165 STATIC int 1166 _bcm_rlink_flow_vpn_traverse_callback( 1167 int unit, 1168 bcm_vpn_t vpn, 1169 bcm_flow_vpn_config_t * info, 1170 void * user_data) 1171 { 1172 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1173 int r_rv; 1174 int r_size; 1175 1176 /* Pack reply */ 1177 r_size = 87; 1178 1179 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1180 /* Skip unit */ 1181 BCM_PACK_U16((*r_data)->tx_ptr, vpn); 1182 if (info == NULL) { 1183 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1184 } else { 1185 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1186 BCM_PACK_U32((*r_data)->tx_ptr, info->flags); 1187 BCM_PACK_U32((*r_data)->tx_ptr, info->broadcast_group); 1188 BCM_PACK_U32((*r_data)->tx_ptr, info->unknown_unicast_group); 1189 BCM_PACK_U32((*r_data)->tx_ptr, info->unknown_multicast_group); 1190 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.mmrp_action); 1191 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.srp_action); 1192 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.arp_reply_action); 1193 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.arp_request_action); 1194 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.nd_action); 1195 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.dhcp_action); 1196 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.igmp_report_leave_action); 1197 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.igmp_query_action); 1198 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.igmp_unknown_msg_action); 1199 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.mld_report_done_action); 1200 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.mld_query_action); 1201 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.ip4_rsvd_mc_action); 1202 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.ip6_rsvd_mc_action); 1203 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.ip4_mc_router_adv_action); 1204 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.ip6_mc_router_adv_action); 1205 BCM_PACK_U32((*r_data)->tx_ptr, info->protocol_pkt.flood_action_according_to_pfm); 1206 BCM_PACK_U32((*r_data)->tx_ptr, info->match_port_class); 1207 } 1208 } 1209 1210 return r_rv; 1211 } 1212 1213 STATIC int 1214 _bcm_rlink_flow_vpn_traverse_handler( 1215 bcm_rlink_traverse_data_t **r_data) 1216 { 1217 int r_rv; 1218 /* Skip unit */ 1219 1220 /* Unpack request */ 1221 /* Skip unit */ 1222 1223 r_rv = bcm_flow_vpn_traverse((*r_data)->unit, _bcm_rlink_flow_vpn_traverse_callback, (void *)r_data); 1224 1225 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1226 } 1227 1228 #endif /* INCLUDE_L3 */ 1229 1230 /* bcm_flowtracker_check_traverse */ 1231 1232 STATIC int 1233 _bcm_rlink_flowtracker_check_traverse_callback( 1234 int unit, 1235 bcm_flowtracker_check_t check_id, 1236 bcm_flowtracker_check_info_t * check_info, 1237 void * user_data) 1238 { 1239 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1240 int r_rv; 1241 int r_size; 1242 1243 /* Pack reply */ 1244 r_size = 29; 1245 1246 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1247 /* Skip unit */ 1248 BCM_PACK_U32((*r_data)->tx_ptr, check_id); 1249 if (check_info == NULL) { 1250 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1251 } else { 1252 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1253 (*r_data)->tx_ptr = _bcm_pack_flowtracker_check_info((*r_data)->tx_ptr, check_info); 1254 } 1255 } 1256 1257 return r_rv; 1258 } 1259 1260 STATIC int 1261 _bcm_rlink_flowtracker_check_traverse_handler( 1262 bcm_rlink_traverse_data_t **r_data) 1263 { 1264 int r_rv; 1265 /* Skip unit */ 1266 1267 /* Unpack request */ 1268 /* Skip unit */ 1269 1270 r_rv = bcm_flowtracker_check_traverse((*r_data)->unit, _bcm_rlink_flowtracker_check_traverse_callback, (void *)r_data); 1271 1272 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1273 } 1274 1275 /* bcm_hash_flex_bin_traverse */ 1276 1277 STATIC int 1278 _bcm_rlink_hash_flex_bin_traverse_callback( 1279 int unit, 1280 bcm_hash_flex_bin_config_t * cfg, 1281 int num_bins, 1282 bcm_hash_flex_bin_cmd_t * bin_cmd, 1283 int num_fields, 1284 bcm_hash_flex_field_t * flex_field, 1285 void * user_data) 1286 { 1287 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1288 int r_rv; 1289 int r_size; 1290 int r_i; 1291 1292 /* Pack reply */ 1293 r_size = 71 + (num_bins*14) + (num_fields*12); 1294 1295 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1296 /* Skip unit */ 1297 if (cfg == NULL) { 1298 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1299 } else { 1300 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1301 (*r_data)->tx_ptr = _bcm_pack_hash_flex_bin_config((*r_data)->tx_ptr, cfg); 1302 } 1303 BCM_PACK_U32((*r_data)->tx_ptr, num_bins); 1304 if (bin_cmd == NULL) { 1305 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1306 } else { 1307 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1308 for (r_i = 0; r_i < num_bins; r_i++) { 1309 (*r_data)->tx_ptr = _bcm_pack_hash_flex_bin_cmd((*r_data)->tx_ptr, bin_cmd+r_i); 1310 } 1311 } 1312 BCM_PACK_U32((*r_data)->tx_ptr, num_fields); 1313 if (flex_field == NULL) { 1314 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1315 } else { 1316 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1317 for (r_i = 0; r_i < num_fields; r_i++) { 1318 (*r_data)->tx_ptr = _bcm_pack_hash_flex_field((*r_data)->tx_ptr, flex_field+r_i); 1319 } 1320 } 1321 } 1322 1323 return r_rv; 1324 } 1325 1326 STATIC int 1327 _bcm_rlink_hash_flex_bin_traverse_handler( 1328 bcm_rlink_traverse_data_t **r_data) 1329 { 1330 int r_rv; 1331 /* Skip unit */ 1332 uint32 option; 1333 1334 /* Unpack request */ 1335 /* Skip unit */ 1336 BCM_UNPACK_U32((*r_data)->rx_ptr, option); 1337 1338 r_rv = bcm_hash_flex_bin_traverse((*r_data)->unit, option, _bcm_rlink_hash_flex_bin_traverse_callback, (void *)r_data); 1339 1340 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1341 } 1342 1343 /* bcm_instru_sflow_encap_traverse */ 1344 1345 STATIC int 1346 _bcm_rlink_instru_sflow_encap_traverse_callback( 1347 int unit, 1348 bcm_instru_sflow_encap_info_t * sflow_encap_info, 1349 void * user_data) 1350 { 1351 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1352 int r_rv; 1353 int r_size; 1354 1355 /* Pack reply */ 1356 r_size = 27; 1357 1358 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1359 /* Skip unit */ 1360 if (sflow_encap_info == NULL) { 1361 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1362 } else { 1363 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1364 (*r_data)->tx_ptr = _bcm_pack_instru_sflow_encap_info((*r_data)->tx_ptr, sflow_encap_info); 1365 } 1366 } 1367 1368 return r_rv; 1369 } 1370 1371 STATIC int 1372 _bcm_rlink_instru_sflow_encap_traverse_handler( 1373 bcm_rlink_traverse_data_t **r_data) 1374 { 1375 int r_rv; 1376 /* Skip unit */ 1377 1378 /* Unpack request */ 1379 /* Skip unit */ 1380 1381 r_rv = bcm_instru_sflow_encap_traverse((*r_data)->unit, _bcm_rlink_instru_sflow_encap_traverse_callback, (void *)r_data); 1382 1383 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1384 } 1385 1386 /* bcm_ipfix_rate_traverse */ 1387 1388 STATIC int 1389 _bcm_rlink_ipfix_rate_traverse_callback( 1390 int unit, 1391 bcm_ipfix_rate_t * rate_info, 1392 void * userdata) 1393 { 1394 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)userdata; 1395 int r_rv; 1396 int r_size; 1397 1398 /* Pack reply */ 1399 r_size = 34; 1400 1401 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1402 /* Skip unit */ 1403 if (rate_info == NULL) { 1404 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1405 } else { 1406 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1407 (*r_data)->tx_ptr = _bcm_pack_ipfix_rate((*r_data)->tx_ptr, rate_info); 1408 } 1409 } 1410 1411 return r_rv; 1412 } 1413 1414 STATIC int 1415 _bcm_rlink_ipfix_rate_traverse_handler( 1416 bcm_rlink_traverse_data_t **r_data) 1417 { 1418 int r_rv; 1419 /* Skip unit */ 1420 1421 /* Unpack request */ 1422 /* Skip unit */ 1423 1424 r_rv = bcm_ipfix_rate_traverse((*r_data)->unit, _bcm_rlink_ipfix_rate_traverse_callback, (void *)r_data); 1425 1426 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1427 } 1428 1429 #ifdef INCLUDE_L3 1430 1431 /* bcm_ipmc_traverse */ 1432 1433 STATIC int 1434 _bcm_rlink_ipmc_traverse_callback( 1435 int unit, 1436 bcm_ipmc_addr_t * info, 1437 void * user_data) 1438 { 1439 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1440 int r_rv; 1441 int r_size; 1442 1443 /* Pack reply */ 1444 r_size = 323; 1445 1446 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1447 /* Skip unit */ 1448 if (info == NULL) { 1449 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1450 } else { 1451 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1452 (*r_data)->tx_ptr = _bcm_pack_ipmc_addr((*r_data)->tx_ptr, info); 1453 } 1454 } 1455 1456 return r_rv; 1457 } 1458 1459 STATIC int 1460 _bcm_rlink_ipmc_traverse_handler( 1461 bcm_rlink_traverse_data_t **r_data) 1462 { 1463 int r_rv; 1464 /* Skip unit */ 1465 uint32 flags; 1466 1467 /* Unpack request */ 1468 /* Skip unit */ 1469 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 1470 1471 r_rv = bcm_ipmc_traverse((*r_data)->unit, flags, _bcm_rlink_ipmc_traverse_callback, (void *)r_data); 1472 1473 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1474 } 1475 1476 #endif /* INCLUDE_L3 */ 1477 1478 /* bcm_l2_auth_traverse */ 1479 1480 STATIC int 1481 _bcm_rlink_l2_auth_traverse_callback( 1482 int unit, 1483 bcm_l2_auth_addr_t * info, 1484 void * userdata) 1485 { 1486 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)userdata; 1487 int r_rv; 1488 int r_size; 1489 1490 /* Pack reply */ 1491 r_size = 17; 1492 1493 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1494 /* Skip unit */ 1495 if (info == NULL) { 1496 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1497 } else { 1498 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1499 (*r_data)->tx_ptr = _bcm_pack_l2_auth_addr((*r_data)->tx_ptr, info); 1500 } 1501 } 1502 1503 return r_rv; 1504 } 1505 1506 STATIC int 1507 _bcm_rlink_l2_auth_traverse_handler( 1508 bcm_rlink_traverse_data_t **r_data) 1509 { 1510 int r_rv; 1511 /* Skip unit */ 1512 1513 /* Unpack request */ 1514 /* Skip unit */ 1515 1516 r_rv = bcm_l2_auth_traverse((*r_data)->unit, _bcm_rlink_l2_auth_traverse_callback, (void *)r_data); 1517 1518 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1519 } 1520 1521 #ifdef INCLUDE_L3 1522 1523 /* bcm_l2_change_fields_traverse */ 1524 1525 STATIC int 1526 _bcm_rlink_l2_change_fields_traverse_callback( 1527 int unit, 1528 bcm_l2_change_fields_t * l2_fields_info, 1529 void * user_data) 1530 { 1531 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1532 int r_rv; 1533 int r_size; 1534 1535 /* Pack reply */ 1536 r_size = 31; 1537 1538 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1539 /* Skip unit */ 1540 if (l2_fields_info == NULL) { 1541 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1542 } else { 1543 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1544 (*r_data)->tx_ptr = _bcm_pack_l2_change_fields((*r_data)->tx_ptr, l2_fields_info); 1545 } 1546 } 1547 1548 return r_rv; 1549 } 1550 1551 STATIC int 1552 _bcm_rlink_l2_change_fields_traverse_handler( 1553 bcm_rlink_traverse_data_t **r_data) 1554 { 1555 int r_rv; 1556 /* Skip unit */ 1557 1558 /* Unpack request */ 1559 /* Skip unit */ 1560 1561 r_rv = bcm_l2_change_fields_traverse((*r_data)->unit, _bcm_rlink_l2_change_fields_traverse_callback, (void *)r_data); 1562 1563 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1564 } 1565 1566 #endif /* INCLUDE_L3 */ 1567 1568 /* bcm_l2_egress_traverse */ 1569 1570 STATIC int 1571 _bcm_rlink_l2_egress_traverse_callback( 1572 int unit, 1573 bcm_l2_egress_t * egr, 1574 void * user_data) 1575 { 1576 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1577 int r_rv; 1578 int r_size; 1579 1580 /* Pack reply */ 1581 r_size = 48; 1582 1583 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1584 /* Skip unit */ 1585 if (egr == NULL) { 1586 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1587 } else { 1588 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1589 (*r_data)->tx_ptr = _bcm_pack_l2_egress((*r_data)->tx_ptr, egr); 1590 } 1591 } 1592 1593 return r_rv; 1594 } 1595 1596 STATIC int 1597 _bcm_rlink_l2_egress_traverse_handler( 1598 bcm_rlink_traverse_data_t **r_data) 1599 { 1600 int r_rv; 1601 /* Skip unit */ 1602 1603 /* Unpack request */ 1604 /* Skip unit */ 1605 1606 r_rv = bcm_l2_egress_traverse((*r_data)->unit, _bcm_rlink_l2_egress_traverse_callback, (void *)r_data); 1607 1608 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1609 } 1610 1611 /* bcm_l2_mac_port_traverse */ 1612 1613 STATIC int 1614 _bcm_rlink_l2_mac_port_traverse_callback( 1615 int unit, 1616 bcm_l2_mac_port_t * mac_port, 1617 void * user_data) 1618 { 1619 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1620 int r_rv; 1621 int r_size; 1622 1623 /* Pack reply */ 1624 r_size = 19; 1625 1626 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1627 /* Skip unit */ 1628 if (mac_port == NULL) { 1629 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1630 } else { 1631 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1632 (*r_data)->tx_ptr = _bcm_pack_l2_mac_port((*r_data)->tx_ptr, mac_port); 1633 } 1634 } 1635 1636 return r_rv; 1637 } 1638 1639 STATIC int 1640 _bcm_rlink_l2_mac_port_traverse_handler( 1641 bcm_rlink_traverse_data_t **r_data) 1642 { 1643 int r_rv; 1644 /* Skip unit */ 1645 1646 /* Unpack request */ 1647 /* Skip unit */ 1648 1649 r_rv = bcm_l2_mac_port_traverse((*r_data)->unit, _bcm_rlink_l2_mac_port_traverse_callback, (void *)r_data); 1650 1651 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1652 } 1653 1654 /* bcm_l2_match_masked_traverse */ 1655 1656 STATIC int 1657 _bcm_rlink_l2_match_masked_traverse_callback( 1658 int unit, 1659 bcm_l2_addr_t * info, 1660 void * user_data) 1661 { 1662 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1663 int r_rv; 1664 int r_size; 1665 1666 /* Pack reply */ 1667 r_size = 311; 1668 1669 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1670 /* Skip unit */ 1671 if (info == NULL) { 1672 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1673 } else { 1674 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1675 (*r_data)->tx_ptr = _bcm_pack_l2_addr((*r_data)->tx_ptr, info); 1676 } 1677 } 1678 1679 return r_rv; 1680 } 1681 1682 STATIC int 1683 _bcm_rlink_l2_match_masked_traverse_handler( 1684 bcm_rlink_traverse_data_t **r_data) 1685 { 1686 int r_rv; 1687 /* Skip unit */ 1688 uint32 flags; 1689 bcm_l2_addr_t match_addr; 1690 bcm_l2_addr_t mask_addr; 1691 bcm_l2_addr_t * r_p_match_addr; 1692 bcm_l2_addr_t * r_p_mask_addr; 1693 1694 /* Unpack request */ 1695 /* Skip unit */ 1696 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 1697 if (*(*r_data)->rx_ptr++ == 1) { 1698 r_p_match_addr = NULL; 1699 } else { 1700 r_p_match_addr = &match_addr; 1701 (*r_data)->rx_ptr = _bcm_unpack_l2_addr((*r_data)->rx_ptr, r_p_match_addr); 1702 } 1703 if (*(*r_data)->rx_ptr++ == 1) { 1704 r_p_mask_addr = NULL; 1705 } else { 1706 r_p_mask_addr = &mask_addr; 1707 (*r_data)->rx_ptr = _bcm_unpack_l2_addr((*r_data)->rx_ptr, r_p_mask_addr); 1708 } 1709 1710 r_rv = bcm_l2_match_masked_traverse((*r_data)->unit, flags, r_p_match_addr, r_p_mask_addr, _bcm_rlink_l2_match_masked_traverse_callback, (void *)r_data); 1711 1712 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1713 } 1714 1715 /* bcm_l2_matched_traverse */ 1716 1717 STATIC int 1718 _bcm_rlink_l2_matched_traverse_callback( 1719 int unit, 1720 bcm_l2_addr_t * info, 1721 void * user_data) 1722 { 1723 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1724 int r_rv; 1725 int r_size; 1726 1727 /* Pack reply */ 1728 r_size = 311; 1729 1730 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1731 /* Skip unit */ 1732 if (info == NULL) { 1733 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1734 } else { 1735 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1736 (*r_data)->tx_ptr = _bcm_pack_l2_addr((*r_data)->tx_ptr, info); 1737 } 1738 } 1739 1740 return r_rv; 1741 } 1742 1743 STATIC int 1744 _bcm_rlink_l2_matched_traverse_handler( 1745 bcm_rlink_traverse_data_t **r_data) 1746 { 1747 int r_rv; 1748 /* Skip unit */ 1749 uint32 flags; 1750 bcm_l2_addr_t match_addr; 1751 bcm_l2_addr_t * r_p_match_addr; 1752 1753 /* Unpack request */ 1754 /* Skip unit */ 1755 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 1756 if (*(*r_data)->rx_ptr++ == 1) { 1757 r_p_match_addr = NULL; 1758 } else { 1759 r_p_match_addr = &match_addr; 1760 (*r_data)->rx_ptr = _bcm_unpack_l2_addr((*r_data)->rx_ptr, r_p_match_addr); 1761 } 1762 1763 r_rv = bcm_l2_matched_traverse((*r_data)->unit, flags, r_p_match_addr, _bcm_rlink_l2_matched_traverse_callback, (void *)r_data); 1764 1765 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1766 } 1767 1768 /* bcm_l2_station_traverse */ 1769 1770 STATIC int 1771 _bcm_rlink_l2_station_traverse_callback( 1772 int unit, 1773 bcm_l2_station_t * l2_station_addr, 1774 void * user_data) 1775 { 1776 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1777 int r_rv; 1778 int r_size; 1779 1780 /* Pack reply */ 1781 r_size = 37; 1782 1783 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1784 /* Skip unit */ 1785 if (l2_station_addr == NULL) { 1786 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1787 } else { 1788 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1789 (*r_data)->tx_ptr = _bcm_pack_l2_station((*r_data)->tx_ptr, l2_station_addr); 1790 } 1791 } 1792 1793 return r_rv; 1794 } 1795 1796 STATIC int 1797 _bcm_rlink_l2_station_traverse_handler( 1798 bcm_rlink_traverse_data_t **r_data) 1799 { 1800 int r_rv; 1801 /* Skip unit */ 1802 1803 /* Unpack request */ 1804 /* Skip unit */ 1805 1806 r_rv = bcm_l2_station_traverse((*r_data)->unit, _bcm_rlink_l2_station_traverse_callback, (void *)r_data); 1807 1808 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1809 } 1810 1811 /* bcm_l2_traverse */ 1812 1813 STATIC int 1814 _bcm_rlink_l2_traverse_callback( 1815 int unit, 1816 bcm_l2_addr_t * info, 1817 void * user_data) 1818 { 1819 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1820 int r_rv; 1821 int r_size; 1822 1823 /* Pack reply */ 1824 r_size = 311; 1825 1826 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1827 /* Skip unit */ 1828 if (info == NULL) { 1829 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1830 } else { 1831 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1832 (*r_data)->tx_ptr = _bcm_pack_l2_addr((*r_data)->tx_ptr, info); 1833 } 1834 } 1835 1836 return r_rv; 1837 } 1838 1839 STATIC int 1840 _bcm_rlink_l2_traverse_handler( 1841 bcm_rlink_traverse_data_t **r_data) 1842 { 1843 int r_rv; 1844 /* Skip unit */ 1845 1846 /* Unpack request */ 1847 /* Skip unit */ 1848 1849 r_rv = bcm_l2_traverse((*r_data)->unit, _bcm_rlink_l2_traverse_callback, (void *)r_data); 1850 1851 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1852 } 1853 1854 #ifdef INCLUDE_L3 1855 1856 /* bcm_l2gre_tunnel_initiator_traverse */ 1857 1858 STATIC int 1859 _bcm_rlink_l2gre_tunnel_initiator_traverse_callback( 1860 int unit, 1861 bcm_tunnel_initiator_t * info, 1862 void * user_data) 1863 { 1864 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1865 int r_rv; 1866 int r_size; 1867 1868 /* Pack reply */ 1869 r_size = 137; 1870 1871 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1872 /* Skip unit */ 1873 if (info == NULL) { 1874 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1875 } else { 1876 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1877 (*r_data)->tx_ptr = _bcm_pack_tunnel_initiator((*r_data)->tx_ptr, info); 1878 } 1879 } 1880 1881 return r_rv; 1882 } 1883 1884 STATIC int 1885 _bcm_rlink_l2gre_tunnel_initiator_traverse_handler( 1886 bcm_rlink_traverse_data_t **r_data) 1887 { 1888 int r_rv; 1889 /* Skip unit */ 1890 1891 /* Unpack request */ 1892 /* Skip unit */ 1893 1894 r_rv = bcm_l2gre_tunnel_initiator_traverse((*r_data)->unit, _bcm_rlink_l2gre_tunnel_initiator_traverse_callback, (void *)r_data); 1895 1896 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1897 } 1898 1899 /* bcm_l2gre_tunnel_terminator_traverse */ 1900 1901 STATIC int 1902 _bcm_rlink_l2gre_tunnel_terminator_traverse_callback( 1903 int unit, 1904 bcm_tunnel_terminator_t * info, 1905 void * user_data) 1906 { 1907 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1908 int r_rv; 1909 int r_size; 1910 1911 /* Pack reply */ 1912 r_size = 198; 1913 1914 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1915 /* Skip unit */ 1916 if (info == NULL) { 1917 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1918 } else { 1919 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1920 (*r_data)->tx_ptr = _bcm_pack_tunnel_terminator((*r_data)->tx_ptr, info); 1921 } 1922 } 1923 1924 return r_rv; 1925 } 1926 1927 STATIC int 1928 _bcm_rlink_l2gre_tunnel_terminator_traverse_handler( 1929 bcm_rlink_traverse_data_t **r_data) 1930 { 1931 int r_rv; 1932 /* Skip unit */ 1933 1934 /* Unpack request */ 1935 /* Skip unit */ 1936 1937 r_rv = bcm_l2gre_tunnel_terminator_traverse((*r_data)->unit, _bcm_rlink_l2gre_tunnel_terminator_traverse_callback, (void *)r_data); 1938 1939 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1940 } 1941 1942 /* bcm_l2gre_vpn_traverse */ 1943 1944 STATIC int 1945 _bcm_rlink_l2gre_vpn_traverse_callback( 1946 int unit, 1947 bcm_l2gre_vpn_config_t * info, 1948 void * user_data) 1949 { 1950 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1951 int r_rv; 1952 int r_size; 1953 1954 /* Pack reply */ 1955 r_size = 33; 1956 1957 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 1958 /* Skip unit */ 1959 if (info == NULL) { 1960 BCM_PACK_U8((*r_data)->tx_ptr, 1); 1961 } else { 1962 BCM_PACK_U8((*r_data)->tx_ptr, 0); 1963 (*r_data)->tx_ptr = _bcm_pack_l2gre_vpn_config((*r_data)->tx_ptr, info); 1964 } 1965 } 1966 1967 return r_rv; 1968 } 1969 1970 STATIC int 1971 _bcm_rlink_l2gre_vpn_traverse_handler( 1972 bcm_rlink_traverse_data_t **r_data) 1973 { 1974 int r_rv; 1975 /* Skip unit */ 1976 1977 /* Unpack request */ 1978 /* Skip unit */ 1979 1980 r_rv = bcm_l2gre_vpn_traverse((*r_data)->unit, _bcm_rlink_l2gre_vpn_traverse_callback, (void *)r_data); 1981 1982 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 1983 } 1984 1985 /* bcm_l3_ecmp_traverse */ 1986 1987 STATIC int 1988 _bcm_rlink_l3_ecmp_traverse_callback( 1989 int unit, 1990 bcm_l3_egress_ecmp_t * ecmp_info, 1991 int ecmp_member_count, 1992 bcm_l3_ecmp_member_t * ecmp_member_array, 1993 void * user_data) 1994 { 1995 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 1996 int r_rv; 1997 int r_size; 1998 int r_i; 1999 2000 /* Pack reply */ 2001 r_size = 66 + (ecmp_member_count*20); 2002 2003 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2004 /* Skip unit */ 2005 if (ecmp_info == NULL) { 2006 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2007 } else { 2008 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2009 (*r_data)->tx_ptr = _bcm_pack_l3_egress_ecmp((*r_data)->tx_ptr, ecmp_info); 2010 } 2011 BCM_PACK_U32((*r_data)->tx_ptr, ecmp_member_count); 2012 if (ecmp_member_array == NULL) { 2013 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2014 } else { 2015 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2016 for (r_i = 0; r_i < ecmp_member_count; r_i++) { 2017 (*r_data)->tx_ptr = _bcm_pack_l3_ecmp_member((*r_data)->tx_ptr, ecmp_member_array+r_i); 2018 } 2019 } 2020 } 2021 2022 return r_rv; 2023 } 2024 2025 STATIC int 2026 _bcm_rlink_l3_ecmp_traverse_handler( 2027 bcm_rlink_traverse_data_t **r_data) 2028 { 2029 int r_rv; 2030 /* Skip unit */ 2031 2032 /* Unpack request */ 2033 /* Skip unit */ 2034 2035 r_rv = bcm_l3_ecmp_traverse((*r_data)->unit, _bcm_rlink_l3_ecmp_traverse_callback, (void *)r_data); 2036 2037 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2038 } 2039 2040 /* bcm_l3_egress_arp_traverse */ 2041 2042 STATIC int 2043 _bcm_rlink_l3_egress_arp_traverse_callback( 2044 int unit, 2045 bcm_if_t intf, 2046 bcm_l3_egress_t * info, 2047 void * user_data) 2048 { 2049 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2050 int r_rv; 2051 int r_size; 2052 2053 /* Pack reply */ 2054 r_size = 341; 2055 2056 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2057 /* Skip unit */ 2058 BCM_PACK_U32((*r_data)->tx_ptr, intf); 2059 if (info == NULL) { 2060 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2061 } else { 2062 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2063 (*r_data)->tx_ptr = _bcm_pack_l3_egress((*r_data)->tx_ptr, info); 2064 } 2065 } 2066 2067 return r_rv; 2068 } 2069 2070 STATIC int 2071 _bcm_rlink_l3_egress_arp_traverse_handler( 2072 bcm_rlink_traverse_data_t **r_data) 2073 { 2074 int r_rv; 2075 /* Skip unit */ 2076 2077 /* Unpack request */ 2078 /* Skip unit */ 2079 2080 r_rv = bcm_l3_egress_arp_traverse((*r_data)->unit, _bcm_rlink_l3_egress_arp_traverse_callback, (void *)r_data); 2081 2082 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2083 } 2084 2085 /* bcm_l3_egress_ecmp_resilient_traverse */ 2086 2087 STATIC int 2088 _bcm_rlink_l3_egress_ecmp_resilient_traverse_callback( 2089 int unit, 2090 bcm_l3_egress_ecmp_resilient_entry_t * entry, 2091 void * user_data) 2092 { 2093 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2094 int r_rv; 2095 int r_size; 2096 2097 /* Pack reply */ 2098 r_size = 73; 2099 2100 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2101 /* Skip unit */ 2102 if (entry == NULL) { 2103 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2104 } else { 2105 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2106 (*r_data)->tx_ptr = _bcm_pack_l3_egress_ecmp_resilient_entry((*r_data)->tx_ptr, entry); 2107 } 2108 } 2109 2110 return r_rv; 2111 } 2112 2113 STATIC int 2114 _bcm_rlink_l3_egress_ecmp_resilient_traverse_handler( 2115 bcm_rlink_traverse_data_t **r_data) 2116 { 2117 int r_rv; 2118 /* Skip unit */ 2119 uint32 flags; 2120 bcm_l3_egress_ecmp_resilient_entry_t match_entry; 2121 bcm_l3_egress_ecmp_resilient_entry_t * r_p_match_entry; 2122 2123 /* Unpack request */ 2124 /* Skip unit */ 2125 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 2126 if (*(*r_data)->rx_ptr++ == 1) { 2127 r_p_match_entry = NULL; 2128 } else { 2129 r_p_match_entry = &match_entry; 2130 (*r_data)->rx_ptr = _bcm_unpack_l3_egress_ecmp_resilient_entry((*r_data)->rx_ptr, r_p_match_entry); 2131 } 2132 2133 r_rv = bcm_l3_egress_ecmp_resilient_traverse((*r_data)->unit, flags, r_p_match_entry, _bcm_rlink_l3_egress_ecmp_resilient_traverse_callback, (void *)r_data); 2134 2135 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2136 } 2137 2138 /* bcm_l3_egress_ecmp_traverse */ 2139 2140 STATIC int 2141 _bcm_rlink_l3_egress_ecmp_traverse_callback( 2142 int unit, 2143 bcm_l3_egress_ecmp_t * ecmp, 2144 int intf_count, 2145 bcm_if_t * intf_array, 2146 void * user_data) 2147 { 2148 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2149 int r_rv; 2150 int r_size; 2151 int r_i; 2152 2153 /* Pack reply */ 2154 r_size = 66 + (intf_count*4); 2155 2156 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2157 /* Skip unit */ 2158 if (ecmp == NULL) { 2159 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2160 } else { 2161 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2162 (*r_data)->tx_ptr = _bcm_pack_l3_egress_ecmp((*r_data)->tx_ptr, ecmp); 2163 } 2164 BCM_PACK_U32((*r_data)->tx_ptr, intf_count); 2165 if (intf_array == NULL) { 2166 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2167 } else { 2168 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2169 for (r_i = 0; r_i < intf_count; r_i++) { 2170 BCM_PACK_U32((*r_data)->tx_ptr, *(intf_array+r_i)); 2171 } 2172 } 2173 } 2174 2175 return r_rv; 2176 } 2177 2178 STATIC int 2179 _bcm_rlink_l3_egress_ecmp_traverse_handler( 2180 bcm_rlink_traverse_data_t **r_data) 2181 { 2182 int r_rv; 2183 /* Skip unit */ 2184 2185 /* Unpack request */ 2186 /* Skip unit */ 2187 2188 r_rv = bcm_l3_egress_ecmp_traverse((*r_data)->unit, _bcm_rlink_l3_egress_ecmp_traverse_callback, (void *)r_data); 2189 2190 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2191 } 2192 2193 /* bcm_l3_egress_multipath_traverse */ 2194 2195 STATIC int 2196 _bcm_rlink_l3_egress_multipath_traverse_callback( 2197 int unit, 2198 bcm_if_t mpintf, 2199 int intf_count, 2200 bcm_if_t * intf_array, 2201 void * user_data) 2202 { 2203 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2204 int r_rv; 2205 int r_size; 2206 int r_i; 2207 2208 /* Pack reply */ 2209 r_size = 9 + (intf_count*4); 2210 2211 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2212 /* Skip unit */ 2213 BCM_PACK_U32((*r_data)->tx_ptr, mpintf); 2214 BCM_PACK_U32((*r_data)->tx_ptr, intf_count); 2215 if (intf_array == NULL) { 2216 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2217 } else { 2218 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2219 for (r_i = 0; r_i < intf_count; r_i++) { 2220 BCM_PACK_U32((*r_data)->tx_ptr, *(intf_array+r_i)); 2221 } 2222 } 2223 } 2224 2225 return r_rv; 2226 } 2227 2228 STATIC int 2229 _bcm_rlink_l3_egress_multipath_traverse_handler( 2230 bcm_rlink_traverse_data_t **r_data) 2231 { 2232 int r_rv; 2233 /* Skip unit */ 2234 2235 /* Unpack request */ 2236 /* Skip unit */ 2237 2238 r_rv = bcm_l3_egress_multipath_traverse((*r_data)->unit, _bcm_rlink_l3_egress_multipath_traverse_callback, (void *)r_data); 2239 2240 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2241 } 2242 2243 /* bcm_l3_egress_traverse */ 2244 2245 STATIC int 2246 _bcm_rlink_l3_egress_traverse_callback( 2247 int unit, 2248 bcm_if_t intf, 2249 bcm_l3_egress_t * info, 2250 void * user_data) 2251 { 2252 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2253 int r_rv; 2254 int r_size; 2255 2256 /* Pack reply */ 2257 r_size = 341; 2258 2259 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2260 /* Skip unit */ 2261 BCM_PACK_U32((*r_data)->tx_ptr, intf); 2262 if (info == NULL) { 2263 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2264 } else { 2265 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2266 (*r_data)->tx_ptr = _bcm_pack_l3_egress((*r_data)->tx_ptr, info); 2267 } 2268 } 2269 2270 return r_rv; 2271 } 2272 2273 STATIC int 2274 _bcm_rlink_l3_egress_traverse_handler( 2275 bcm_rlink_traverse_data_t **r_data) 2276 { 2277 int r_rv; 2278 /* Skip unit */ 2279 2280 /* Unpack request */ 2281 /* Skip unit */ 2282 2283 r_rv = bcm_l3_egress_traverse((*r_data)->unit, _bcm_rlink_l3_egress_traverse_callback, (void *)r_data); 2284 2285 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2286 } 2287 2288 /* bcm_l3_host_traverse */ 2289 2290 STATIC int 2291 _bcm_rlink_l3_host_traverse_callback( 2292 int unit, 2293 int index, 2294 bcm_l3_host_t * info, 2295 void * user_data) 2296 { 2297 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2298 int r_rv; 2299 int r_size; 2300 2301 /* Pack reply */ 2302 r_size = 263; 2303 2304 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2305 /* Skip unit */ 2306 BCM_PACK_U32((*r_data)->tx_ptr, index); 2307 if (info == NULL) { 2308 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2309 } else { 2310 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2311 (*r_data)->tx_ptr = _bcm_pack_l3_host((*r_data)->tx_ptr, info); 2312 } 2313 } 2314 2315 return r_rv; 2316 } 2317 2318 STATIC int 2319 _bcm_rlink_l3_host_traverse_handler( 2320 bcm_rlink_traverse_data_t **r_data) 2321 { 2322 int r_rv; 2323 /* Skip unit */ 2324 uint32 flags; 2325 uint32 start; 2326 uint32 end; 2327 2328 /* Unpack request */ 2329 /* Skip unit */ 2330 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 2331 BCM_UNPACK_U32((*r_data)->rx_ptr, start); 2332 BCM_UNPACK_U32((*r_data)->rx_ptr, end); 2333 2334 r_rv = bcm_l3_host_traverse((*r_data)->unit, flags, start, end, _bcm_rlink_l3_host_traverse_callback, (void *)r_data); 2335 2336 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2337 } 2338 2339 /* bcm_l3_ingress_traverse */ 2340 2341 STATIC int 2342 _bcm_rlink_l3_ingress_traverse_callback( 2343 int unit, 2344 bcm_if_t intf_id, 2345 bcm_l3_ingress_t * ing_intf, 2346 void * user_data) 2347 { 2348 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2349 int r_rv; 2350 int r_size; 2351 2352 /* Pack reply */ 2353 r_size = 47; 2354 2355 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2356 /* Skip unit */ 2357 BCM_PACK_U32((*r_data)->tx_ptr, intf_id); 2358 if (ing_intf == NULL) { 2359 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2360 } else { 2361 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2362 (*r_data)->tx_ptr = _bcm_pack_l3_ingress((*r_data)->tx_ptr, ing_intf); 2363 } 2364 } 2365 2366 return r_rv; 2367 } 2368 2369 STATIC int 2370 _bcm_rlink_l3_ingress_traverse_handler( 2371 bcm_rlink_traverse_data_t **r_data) 2372 { 2373 int r_rv; 2374 /* Skip unit */ 2375 2376 /* Unpack request */ 2377 /* Skip unit */ 2378 2379 r_rv = bcm_l3_ingress_traverse((*r_data)->unit, _bcm_rlink_l3_ingress_traverse_callback, (void *)r_data); 2380 2381 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2382 } 2383 2384 /* bcm_l3_large_nat_egress_traverse */ 2385 2386 STATIC int 2387 _bcm_rlink_l3_large_nat_egress_traverse_callback( 2388 int unit, 2389 bcm_l3_large_nat_egress_t * nat_info, 2390 void * user_data) 2391 { 2392 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2393 int r_rv; 2394 int r_size; 2395 2396 /* Pack reply */ 2397 r_size = 29; 2398 2399 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2400 /* Skip unit */ 2401 if (nat_info == NULL) { 2402 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2403 } else { 2404 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2405 (*r_data)->tx_ptr = _bcm_pack_l3_large_nat_egress((*r_data)->tx_ptr, nat_info); 2406 } 2407 } 2408 2409 return r_rv; 2410 } 2411 2412 STATIC int 2413 _bcm_rlink_l3_large_nat_egress_traverse_handler( 2414 bcm_rlink_traverse_data_t **r_data) 2415 { 2416 int r_rv; 2417 /* Skip unit */ 2418 2419 /* Unpack request */ 2420 /* Skip unit */ 2421 2422 r_rv = bcm_l3_large_nat_egress_traverse((*r_data)->unit, _bcm_rlink_l3_large_nat_egress_traverse_callback, (void *)r_data); 2423 2424 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2425 } 2426 2427 /* bcm_l3_nat_egress_traverse */ 2428 2429 STATIC int 2430 _bcm_rlink_l3_nat_egress_traverse_callback( 2431 int unit, 2432 int index, 2433 bcm_l3_nat_egress_t * nat_info, 2434 void * user_data) 2435 { 2436 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2437 int r_rv; 2438 int r_size; 2439 2440 /* Pack reply */ 2441 r_size = 33; 2442 2443 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2444 /* Skip unit */ 2445 BCM_PACK_U32((*r_data)->tx_ptr, index); 2446 if (nat_info == NULL) { 2447 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2448 } else { 2449 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2450 (*r_data)->tx_ptr = _bcm_pack_l3_nat_egress((*r_data)->tx_ptr, nat_info); 2451 } 2452 } 2453 2454 return r_rv; 2455 } 2456 2457 STATIC int 2458 _bcm_rlink_l3_nat_egress_traverse_handler( 2459 bcm_rlink_traverse_data_t **r_data) 2460 { 2461 int r_rv; 2462 /* Skip unit */ 2463 uint32 flags; 2464 uint32 start; 2465 uint32 end; 2466 2467 /* Unpack request */ 2468 /* Skip unit */ 2469 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 2470 BCM_UNPACK_U32((*r_data)->rx_ptr, start); 2471 BCM_UNPACK_U32((*r_data)->rx_ptr, end); 2472 2473 r_rv = bcm_l3_nat_egress_traverse((*r_data)->unit, flags, start, end, _bcm_rlink_l3_nat_egress_traverse_callback, (void *)r_data); 2474 2475 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2476 } 2477 2478 /* bcm_l3_nat_ingress_traverse */ 2479 2480 STATIC int 2481 _bcm_rlink_l3_nat_ingress_traverse_callback( 2482 int unit, 2483 int index, 2484 bcm_l3_nat_ingress_t * nat_info, 2485 void * user_data) 2486 { 2487 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2488 int r_rv; 2489 int r_size; 2490 2491 /* Pack reply */ 2492 r_size = 36; 2493 2494 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2495 /* Skip unit */ 2496 BCM_PACK_U32((*r_data)->tx_ptr, index); 2497 if (nat_info == NULL) { 2498 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2499 } else { 2500 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2501 (*r_data)->tx_ptr = _bcm_pack_l3_nat_ingress((*r_data)->tx_ptr, nat_info); 2502 } 2503 } 2504 2505 return r_rv; 2506 } 2507 2508 STATIC int 2509 _bcm_rlink_l3_nat_ingress_traverse_handler( 2510 bcm_rlink_traverse_data_t **r_data) 2511 { 2512 int r_rv; 2513 /* Skip unit */ 2514 uint32 flags; 2515 uint32 start; 2516 uint32 end; 2517 2518 /* Unpack request */ 2519 /* Skip unit */ 2520 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 2521 BCM_UNPACK_U32((*r_data)->rx_ptr, start); 2522 BCM_UNPACK_U32((*r_data)->rx_ptr, end); 2523 2524 r_rv = bcm_l3_nat_ingress_traverse((*r_data)->unit, flags, start, end, _bcm_rlink_l3_nat_ingress_traverse_callback, (void *)r_data); 2525 2526 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2527 } 2528 2529 /* bcm_l3_route_traverse */ 2530 2531 STATIC int 2532 _bcm_rlink_l3_route_traverse_callback( 2533 int unit, 2534 int index, 2535 bcm_l3_route_t * info, 2536 void * user_data) 2537 { 2538 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2539 int r_rv; 2540 int r_size; 2541 2542 /* Pack reply */ 2543 r_size = 293; 2544 2545 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2546 /* Skip unit */ 2547 BCM_PACK_U32((*r_data)->tx_ptr, index); 2548 if (info == NULL) { 2549 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2550 } else { 2551 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2552 (*r_data)->tx_ptr = _bcm_pack_l3_route((*r_data)->tx_ptr, info); 2553 } 2554 } 2555 2556 return r_rv; 2557 } 2558 2559 STATIC int 2560 _bcm_rlink_l3_route_traverse_handler( 2561 bcm_rlink_traverse_data_t **r_data) 2562 { 2563 int r_rv; 2564 /* Skip unit */ 2565 uint32 flags; 2566 uint32 start; 2567 uint32 end; 2568 2569 /* Unpack request */ 2570 /* Skip unit */ 2571 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 2572 BCM_UNPACK_U32((*r_data)->rx_ptr, start); 2573 BCM_UNPACK_U32((*r_data)->rx_ptr, end); 2574 2575 r_rv = bcm_l3_route_traverse((*r_data)->unit, flags, start, end, _bcm_rlink_l3_route_traverse_callback, (void *)r_data); 2576 2577 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2578 } 2579 2580 /* bcm_l3_source_bind_traverse */ 2581 2582 STATIC int 2583 _bcm_rlink_l3_source_bind_traverse_callback( 2584 int unit, 2585 bcm_l3_source_bind_t * info, 2586 void * user_data) 2587 { 2588 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2589 int r_rv; 2590 int r_size; 2591 2592 /* Pack reply */ 2593 r_size = 63; 2594 2595 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2596 /* Skip unit */ 2597 if (info == NULL) { 2598 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2599 } else { 2600 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2601 (*r_data)->tx_ptr = _bcm_pack_l3_source_bind((*r_data)->tx_ptr, info); 2602 } 2603 } 2604 2605 return r_rv; 2606 } 2607 2608 STATIC int 2609 _bcm_rlink_l3_source_bind_traverse_handler( 2610 bcm_rlink_traverse_data_t **r_data) 2611 { 2612 int r_rv; 2613 /* Skip unit */ 2614 2615 /* Unpack request */ 2616 /* Skip unit */ 2617 2618 r_rv = bcm_l3_source_bind_traverse((*r_data)->unit, _bcm_rlink_l3_source_bind_traverse_callback, (void *)r_data); 2619 2620 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2621 } 2622 2623 /* bcm_l3_vpbr_traverse */ 2624 2625 STATIC int 2626 _bcm_rlink_l3_vpbr_traverse_callback( 2627 int unit, 2628 bcm_l3_vpbr_entry_t * entry, 2629 void * user_data) 2630 { 2631 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2632 int r_rv; 2633 int r_size; 2634 2635 /* Pack reply */ 2636 r_size = 135; 2637 2638 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2639 /* Skip unit */ 2640 if (entry == NULL) { 2641 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2642 } else { 2643 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2644 (*r_data)->tx_ptr = _bcm_pack_l3_vpbr_entry((*r_data)->tx_ptr, entry); 2645 } 2646 } 2647 2648 return r_rv; 2649 } 2650 2651 STATIC int 2652 _bcm_rlink_l3_vpbr_traverse_handler( 2653 bcm_rlink_traverse_data_t **r_data) 2654 { 2655 int r_rv; 2656 /* Skip unit */ 2657 uint32 flags; 2658 2659 /* Unpack request */ 2660 /* Skip unit */ 2661 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 2662 2663 r_rv = bcm_l3_vpbr_traverse((*r_data)->unit, flags, _bcm_rlink_l3_vpbr_traverse_callback, (void *)r_data); 2664 2665 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2666 } 2667 2668 /* bcm_mim_vpn_traverse */ 2669 2670 STATIC int 2671 _bcm_rlink_mim_vpn_traverse_callback( 2672 int unit, 2673 bcm_mim_vpn_config_t * info, 2674 void * user_data) 2675 { 2676 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2677 int r_rv; 2678 int r_size; 2679 2680 /* Pack reply */ 2681 r_size = 120; 2682 2683 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2684 /* Skip unit */ 2685 if (info == NULL) { 2686 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2687 } else { 2688 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2689 (*r_data)->tx_ptr = _bcm_pack_mim_vpn_config((*r_data)->tx_ptr, info); 2690 } 2691 } 2692 2693 return r_rv; 2694 } 2695 2696 STATIC int 2697 _bcm_rlink_mim_vpn_traverse_handler( 2698 bcm_rlink_traverse_data_t **r_data) 2699 { 2700 int r_rv; 2701 /* Skip unit */ 2702 2703 /* Unpack request */ 2704 /* Skip unit */ 2705 2706 r_rv = bcm_mim_vpn_traverse((*r_data)->unit, _bcm_rlink_mim_vpn_traverse_callback, (void *)r_data); 2707 2708 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2709 } 2710 2711 #endif /* INCLUDE_L3 */ 2712 2713 /* bcm_mirror_destination_traverse */ 2714 2715 STATIC int 2716 _bcm_rlink_mirror_destination_traverse_callback( 2717 int unit, 2718 bcm_mirror_destination_t * mirror_dest, 2719 void * user_data) 2720 { 2721 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2722 int r_rv; 2723 int r_size; 2724 2725 /* Pack reply */ 2726 r_size = 388; 2727 2728 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2729 /* Skip unit */ 2730 if (mirror_dest == NULL) { 2731 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2732 } else { 2733 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2734 (*r_data)->tx_ptr = _bcm_pack_mirror_destination((*r_data)->tx_ptr, mirror_dest); 2735 } 2736 } 2737 2738 return r_rv; 2739 } 2740 2741 STATIC int 2742 _bcm_rlink_mirror_destination_traverse_handler( 2743 bcm_rlink_traverse_data_t **r_data) 2744 { 2745 int r_rv; 2746 /* Skip unit */ 2747 2748 /* Unpack request */ 2749 /* Skip unit */ 2750 2751 r_rv = bcm_mirror_destination_traverse((*r_data)->unit, _bcm_rlink_mirror_destination_traverse_callback, (void *)r_data); 2752 2753 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2754 } 2755 2756 #ifdef INCLUDE_L3 2757 2758 /* bcm_mpls_entropy_identifier_traverse */ 2759 2760 STATIC int 2761 _bcm_rlink_mpls_entropy_identifier_traverse_callback( 2762 int unit, 2763 bcm_mpls_entropy_identifier_t * info, 2764 void * user_data) 2765 { 2766 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2767 int r_rv; 2768 int r_size; 2769 2770 /* Pack reply */ 2771 r_size = 17; 2772 2773 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2774 /* Skip unit */ 2775 if (info == NULL) { 2776 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2777 } else { 2778 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2779 (*r_data)->tx_ptr = _bcm_pack_mpls_entropy_identifier((*r_data)->tx_ptr, info); 2780 } 2781 } 2782 2783 return r_rv; 2784 } 2785 2786 STATIC int 2787 _bcm_rlink_mpls_entropy_identifier_traverse_handler( 2788 bcm_rlink_traverse_data_t **r_data) 2789 { 2790 int r_rv; 2791 /* Skip unit */ 2792 2793 /* Unpack request */ 2794 /* Skip unit */ 2795 2796 r_rv = bcm_mpls_entropy_identifier_traverse((*r_data)->unit, _bcm_rlink_mpls_entropy_identifier_traverse_callback, (void *)r_data); 2797 2798 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2799 } 2800 2801 /* bcm_mpls_esi_encap_traverse */ 2802 2803 STATIC int 2804 _bcm_rlink_mpls_esi_encap_traverse_callback( 2805 int unit, 2806 bcm_mpls_esi_info_t * info, 2807 void * user_data) 2808 { 2809 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2810 int r_rv; 2811 int r_size; 2812 2813 /* Pack reply */ 2814 r_size = 17; 2815 2816 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2817 /* Skip unit */ 2818 if (info == NULL) { 2819 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2820 } else { 2821 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2822 (*r_data)->tx_ptr = _bcm_pack_mpls_esi_info((*r_data)->tx_ptr, info); 2823 } 2824 } 2825 2826 return r_rv; 2827 } 2828 2829 STATIC int 2830 _bcm_rlink_mpls_esi_encap_traverse_handler( 2831 bcm_rlink_traverse_data_t **r_data) 2832 { 2833 int r_rv; 2834 /* Skip unit */ 2835 2836 /* Unpack request */ 2837 /* Skip unit */ 2838 2839 r_rv = bcm_mpls_esi_encap_traverse((*r_data)->unit, _bcm_rlink_mpls_esi_encap_traverse_callback, (void *)r_data); 2840 2841 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2842 } 2843 2844 /* bcm_mpls_port_traverse */ 2845 2846 STATIC int 2847 _bcm_rlink_mpls_port_traverse_callback( 2848 int unit, 2849 bcm_mpls_port_t * mpls_port, 2850 void * user_data) 2851 { 2852 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2853 int r_rv; 2854 int r_size; 2855 2856 /* Pack reply */ 2857 r_size = 299; 2858 2859 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2860 /* Skip unit */ 2861 if (mpls_port == NULL) { 2862 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2863 } else { 2864 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2865 (*r_data)->tx_ptr = _bcm_pack_mpls_port((*r_data)->tx_ptr, mpls_port); 2866 } 2867 } 2868 2869 return r_rv; 2870 } 2871 2872 STATIC int 2873 _bcm_rlink_mpls_port_traverse_handler( 2874 bcm_rlink_traverse_data_t **r_data) 2875 { 2876 int r_rv; 2877 /* Skip unit */ 2878 bcm_mpls_port_traverse_info_t additional_info; 2879 2880 /* Unpack request */ 2881 /* Skip unit */ 2882 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.flags); 2883 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.flags2); 2884 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.traverse_flags); 2885 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.vpn); 2886 2887 r_rv = bcm_mpls_port_traverse((*r_data)->unit, additional_info, _bcm_rlink_mpls_port_traverse_callback, (void *)r_data); 2888 2889 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2890 } 2891 2892 /* bcm_mpls_special_label_egress_traverse */ 2893 2894 STATIC int 2895 _bcm_rlink_mpls_special_label_egress_traverse_callback( 2896 int unit, 2897 bcm_mpls_special_label_type_t * label_type, 2898 bcm_mpls_special_label_t * label_info, 2899 void * user_data) 2900 { 2901 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2902 int r_rv; 2903 int r_size; 2904 2905 /* Pack reply */ 2906 r_size = 34; 2907 2908 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2909 /* Skip unit */ 2910 if (label_type == NULL) { 2911 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2912 } else { 2913 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2914 BCM_PACK_U32((*r_data)->tx_ptr, *label_type); 2915 } 2916 if (label_info == NULL) { 2917 BCM_PACK_U8((*r_data)->tx_ptr, 1); 2918 } else { 2919 BCM_PACK_U8((*r_data)->tx_ptr, 0); 2920 (*r_data)->tx_ptr = _bcm_pack_mpls_special_label((*r_data)->tx_ptr, label_info); 2921 } 2922 } 2923 2924 return r_rv; 2925 } 2926 2927 STATIC int 2928 _bcm_rlink_mpls_special_label_egress_traverse_handler( 2929 bcm_rlink_traverse_data_t **r_data) 2930 { 2931 int r_rv; 2932 /* Skip unit */ 2933 2934 /* Unpack request */ 2935 /* Skip unit */ 2936 2937 r_rv = bcm_mpls_special_label_egress_traverse((*r_data)->unit, _bcm_rlink_mpls_special_label_egress_traverse_callback, (void *)r_data); 2938 2939 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2940 } 2941 2942 /* bcm_mpls_special_label_identifier_traverse */ 2943 2944 STATIC int 2945 _bcm_rlink_mpls_special_label_identifier_traverse_callback( 2946 int unit, 2947 bcm_mpls_special_label_type_t * label_type, 2948 bcm_mpls_special_label_t * label_info, 2949 void * user_data) 2950 { 2951 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2952 int r_rv; 2953 int r_size; 2954 2955 /* Pack reply */ 2956 r_size = 34; 2957 2958 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2959 /* Skip unit */ 2960 BCM_PACK_U8((*r_data)->tx_ptr, (label_type == NULL) ? 1 : 0); 2961 BCM_PACK_U8((*r_data)->tx_ptr, (label_info == NULL) ? 1 : 0); 2962 } 2963 2964 return r_rv; 2965 } 2966 2967 STATIC int 2968 _bcm_rlink_mpls_special_label_identifier_traverse_handler( 2969 bcm_rlink_traverse_data_t **r_data) 2970 { 2971 int r_rv; 2972 /* Skip unit */ 2973 2974 /* Unpack request */ 2975 /* Skip unit */ 2976 2977 r_rv = bcm_mpls_special_label_identifier_traverse((*r_data)->unit, _bcm_rlink_mpls_special_label_identifier_traverse_callback, (void *)r_data); 2978 2979 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 2980 } 2981 2982 /* bcm_mpls_tunnel_initiator_traverse */ 2983 2984 STATIC int 2985 _bcm_rlink_mpls_tunnel_initiator_traverse_callback( 2986 int unit, 2987 int num_labels, 2988 bcm_mpls_egress_label_t * label_array, 2989 void * user_data) 2990 { 2991 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 2992 int r_rv; 2993 int r_size; 2994 2995 /* Pack reply */ 2996 r_size = 70; 2997 2998 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 2999 /* Skip unit */ 3000 BCM_PACK_U32((*r_data)->tx_ptr, num_labels); 3001 if (label_array == NULL) { 3002 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3003 } else { 3004 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3005 (*r_data)->tx_ptr = _bcm_pack_mpls_egress_label((*r_data)->tx_ptr, label_array); 3006 } 3007 } 3008 3009 return r_rv; 3010 } 3011 3012 STATIC int 3013 _bcm_rlink_mpls_tunnel_initiator_traverse_handler( 3014 bcm_rlink_traverse_data_t **r_data) 3015 { 3016 int r_rv; 3017 /* Skip unit */ 3018 bcm_mpls_tunnel_initiator_traverse_info_t additional_info; 3019 bcm_mpls_tunnel_initiator_traverse_info_t * r_p_additional_info; 3020 3021 /* Unpack request */ 3022 /* Skip unit */ 3023 if (*(*r_data)->rx_ptr++ == 1) { 3024 r_p_additional_info = NULL; 3025 } else { 3026 r_p_additional_info = &additional_info; 3027 BCM_UNPACK_U32((*r_data)->rx_ptr, r_p_additional_info->flags); 3028 } 3029 3030 r_rv = bcm_mpls_tunnel_initiator_traverse((*r_data)->unit, r_p_additional_info, _bcm_rlink_mpls_tunnel_initiator_traverse_callback, (void *)r_data); 3031 3032 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3033 } 3034 3035 /* bcm_mpls_tunnel_switch_traverse */ 3036 3037 STATIC int 3038 _bcm_rlink_mpls_tunnel_switch_traverse_callback( 3039 int unit, 3040 bcm_mpls_tunnel_switch_t * info, 3041 void * user_data) 3042 { 3043 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3044 int r_rv; 3045 int r_size; 3046 3047 /* Pack reply */ 3048 r_size = 196; 3049 3050 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3051 /* Skip unit */ 3052 if (info == NULL) { 3053 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3054 } else { 3055 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3056 (*r_data)->tx_ptr = _bcm_pack_mpls_tunnel_switch((*r_data)->tx_ptr, info); 3057 } 3058 } 3059 3060 return r_rv; 3061 } 3062 3063 STATIC int 3064 _bcm_rlink_mpls_tunnel_switch_traverse_handler( 3065 bcm_rlink_traverse_data_t **r_data) 3066 { 3067 int r_rv; 3068 /* Skip unit */ 3069 3070 /* Unpack request */ 3071 /* Skip unit */ 3072 3073 r_rv = bcm_mpls_tunnel_switch_traverse((*r_data)->unit, _bcm_rlink_mpls_tunnel_switch_traverse_callback, (void *)r_data); 3074 3075 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3076 } 3077 3078 /* bcm_mpls_vpn_traverse */ 3079 3080 STATIC int 3081 _bcm_rlink_mpls_vpn_traverse_callback( 3082 int unit, 3083 bcm_mpls_vpn_config_t * info, 3084 void * user_data) 3085 { 3086 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3087 int r_rv; 3088 int r_size; 3089 3090 /* Pack reply */ 3091 r_size = 91; 3092 3093 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3094 /* Skip unit */ 3095 if (info == NULL) { 3096 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3097 } else { 3098 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3099 (*r_data)->tx_ptr = _bcm_pack_mpls_vpn_config((*r_data)->tx_ptr, info); 3100 } 3101 } 3102 3103 return r_rv; 3104 } 3105 3106 STATIC int 3107 _bcm_rlink_mpls_vpn_traverse_handler( 3108 bcm_rlink_traverse_data_t **r_data) 3109 { 3110 int r_rv; 3111 /* Skip unit */ 3112 3113 /* Unpack request */ 3114 /* Skip unit */ 3115 3116 r_rv = bcm_mpls_vpn_traverse((*r_data)->unit, _bcm_rlink_mpls_vpn_traverse_callback, (void *)r_data); 3117 3118 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3119 } 3120 3121 #endif /* INCLUDE_L3 */ 3122 3123 /* bcm_multicast_encap_extension_traverse */ 3124 3125 STATIC int 3126 _bcm_rlink_multicast_encap_extension_traverse_callback( 3127 int unit, 3128 bcm_if_t multicast_replication_index, 3129 uint32 flags, 3130 void * user_data) 3131 { 3132 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3133 int r_rv; 3134 int r_size; 3135 3136 /* Pack reply */ 3137 r_size = 8; 3138 3139 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3140 /* Skip unit */ 3141 BCM_PACK_U32((*r_data)->tx_ptr, multicast_replication_index); 3142 BCM_PACK_U32((*r_data)->tx_ptr, flags); 3143 } 3144 3145 return r_rv; 3146 } 3147 3148 STATIC int 3149 _bcm_rlink_multicast_encap_extension_traverse_handler( 3150 bcm_rlink_traverse_data_t **r_data) 3151 { 3152 int r_rv; 3153 /* Skip unit */ 3154 3155 /* Unpack request */ 3156 /* Skip unit */ 3157 3158 r_rv = bcm_multicast_encap_extension_traverse((*r_data)->unit, _bcm_rlink_multicast_encap_extension_traverse_callback, (void *)r_data); 3159 3160 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3161 } 3162 3163 /* bcm_multicast_group_traverse */ 3164 3165 STATIC int 3166 _bcm_rlink_multicast_group_traverse_callback( 3167 int unit, 3168 bcm_multicast_t group, 3169 uint32 flags, 3170 void * user_data) 3171 { 3172 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3173 int r_rv; 3174 int r_size; 3175 3176 /* Pack reply */ 3177 r_size = 8; 3178 3179 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3180 /* Skip unit */ 3181 BCM_PACK_U32((*r_data)->tx_ptr, group); 3182 BCM_PACK_U32((*r_data)->tx_ptr, flags); 3183 } 3184 3185 return r_rv; 3186 } 3187 3188 STATIC int 3189 _bcm_rlink_multicast_group_traverse_handler( 3190 bcm_rlink_traverse_data_t **r_data) 3191 { 3192 int r_rv; 3193 /* Skip unit */ 3194 uint32 flags; 3195 3196 /* Unpack request */ 3197 /* Skip unit */ 3198 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 3199 3200 r_rv = bcm_multicast_group_traverse((*r_data)->unit, _bcm_rlink_multicast_group_traverse_callback, flags, (void *)r_data); 3201 3202 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3203 } 3204 3205 #ifdef INCLUDE_L3 3206 3207 /* bcm_niv_forward_traverse */ 3208 3209 STATIC int 3210 _bcm_rlink_niv_forward_traverse_callback( 3211 int unit, 3212 bcm_niv_forward_t * iv_fwd_entry, 3213 void * user_data) 3214 { 3215 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3216 int r_rv; 3217 int r_size; 3218 3219 /* Pack reply */ 3220 r_size = 17; 3221 3222 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3223 /* Skip unit */ 3224 if (iv_fwd_entry == NULL) { 3225 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3226 } else { 3227 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3228 (*r_data)->tx_ptr = _bcm_pack_niv_forward((*r_data)->tx_ptr, iv_fwd_entry); 3229 } 3230 } 3231 3232 return r_rv; 3233 } 3234 3235 STATIC int 3236 _bcm_rlink_niv_forward_traverse_handler( 3237 bcm_rlink_traverse_data_t **r_data) 3238 { 3239 int r_rv; 3240 /* Skip unit */ 3241 3242 /* Unpack request */ 3243 /* Skip unit */ 3244 3245 r_rv = bcm_niv_forward_traverse((*r_data)->unit, _bcm_rlink_niv_forward_traverse_callback, (void *)r_data); 3246 3247 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3248 } 3249 3250 /* bcm_niv_port_traverse */ 3251 3252 STATIC int 3253 _bcm_rlink_niv_port_traverse_callback( 3254 int unit, 3255 bcm_niv_port_t * niv_port, 3256 void * user_data) 3257 { 3258 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3259 int r_rv; 3260 int r_size; 3261 3262 /* Pack reply */ 3263 r_size = 23; 3264 3265 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3266 /* Skip unit */ 3267 if (niv_port == NULL) { 3268 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3269 } else { 3270 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3271 (*r_data)->tx_ptr = _bcm_pack_niv_port((*r_data)->tx_ptr, niv_port); 3272 } 3273 } 3274 3275 return r_rv; 3276 } 3277 3278 STATIC int 3279 _bcm_rlink_niv_port_traverse_handler( 3280 bcm_rlink_traverse_data_t **r_data) 3281 { 3282 int r_rv; 3283 /* Skip unit */ 3284 3285 /* Unpack request */ 3286 /* Skip unit */ 3287 3288 r_rv = bcm_niv_port_traverse((*r_data)->unit, _bcm_rlink_niv_port_traverse_callback, (void *)r_data); 3289 3290 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3291 } 3292 3293 #endif /* INCLUDE_L3 */ 3294 3295 /* bcm_oam_endpoint_traverse */ 3296 3297 STATIC int 3298 _bcm_rlink_oam_endpoint_traverse_callback( 3299 int unit, 3300 bcm_oam_endpoint_info_t * endpoint_info, 3301 void * user_data) 3302 { 3303 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3304 int r_rv; 3305 int r_size; 3306 3307 /* Pack reply */ 3308 r_size = 316; 3309 3310 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3311 /* Skip unit */ 3312 if (endpoint_info == NULL) { 3313 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3314 } else { 3315 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3316 (*r_data)->tx_ptr = _bcm_pack_oam_endpoint_info((*r_data)->tx_ptr, endpoint_info); 3317 } 3318 } 3319 3320 return r_rv; 3321 } 3322 3323 STATIC int 3324 _bcm_rlink_oam_endpoint_traverse_handler( 3325 bcm_rlink_traverse_data_t **r_data) 3326 { 3327 int r_rv; 3328 /* Skip unit */ 3329 bcm_oam_group_t group; 3330 3331 /* Unpack request */ 3332 /* Skip unit */ 3333 BCM_UNPACK_U32((*r_data)->rx_ptr, group); 3334 3335 r_rv = bcm_oam_endpoint_traverse((*r_data)->unit, group, _bcm_rlink_oam_endpoint_traverse_callback, (void *)r_data); 3336 3337 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3338 } 3339 3340 /* bcm_oam_group_traverse */ 3341 3342 STATIC int 3343 _bcm_rlink_oam_group_traverse_callback( 3344 int unit, 3345 bcm_oam_group_info_t * group_info, 3346 void * user_data) 3347 { 3348 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3349 int r_rv; 3350 int r_size; 3351 3352 /* Pack reply */ 3353 r_size = 125; 3354 3355 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3356 /* Skip unit */ 3357 if (group_info == NULL) { 3358 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3359 } else { 3360 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3361 (*r_data)->tx_ptr = _bcm_pack_oam_group_info((*r_data)->tx_ptr, group_info); 3362 } 3363 } 3364 3365 return r_rv; 3366 } 3367 3368 STATIC int 3369 _bcm_rlink_oam_group_traverse_handler( 3370 bcm_rlink_traverse_data_t **r_data) 3371 { 3372 int r_rv; 3373 /* Skip unit */ 3374 3375 /* Unpack request */ 3376 /* Skip unit */ 3377 3378 r_rv = bcm_oam_group_traverse((*r_data)->unit, _bcm_rlink_oam_group_traverse_callback, (void *)r_data); 3379 3380 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3381 } 3382 3383 /* bcm_oam_pm_profile_traverse */ 3384 3385 STATIC int 3386 _bcm_rlink_oam_pm_profile_traverse_callback( 3387 int unit, 3388 bcm_oam_pm_profile_info_t * profile_info, 3389 void * user_data) 3390 { 3391 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3392 int r_rv; 3393 int r_size; 3394 3395 /* Pack reply */ 3396 r_size = 37; 3397 3398 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3399 /* Skip unit */ 3400 if (profile_info == NULL) { 3401 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3402 } else { 3403 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3404 (*r_data)->tx_ptr = _bcm_pack_oam_pm_profile_info((*r_data)->tx_ptr, profile_info); 3405 } 3406 } 3407 3408 return r_rv; 3409 } 3410 3411 STATIC int 3412 _bcm_rlink_oam_pm_profile_traverse_handler( 3413 bcm_rlink_traverse_data_t **r_data) 3414 { 3415 int r_rv; 3416 /* Skip unit */ 3417 3418 /* Unpack request */ 3419 /* Skip unit */ 3420 3421 r_rv = bcm_oam_pm_profile_traverse((*r_data)->unit, _bcm_rlink_oam_pm_profile_traverse_callback, (void *)r_data); 3422 3423 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3424 } 3425 3426 /* bcm_policer_traverse */ 3427 3428 STATIC int 3429 _bcm_rlink_policer_traverse_callback( 3430 int unit, 3431 bcm_policer_t policer_id, 3432 bcm_policer_config_t * info, 3433 void * user_data) 3434 { 3435 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3436 int r_rv; 3437 int r_size; 3438 3439 /* Pack reply */ 3440 r_size = 157; 3441 3442 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3443 /* Skip unit */ 3444 BCM_PACK_U32((*r_data)->tx_ptr, policer_id); 3445 if (info == NULL) { 3446 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3447 } else { 3448 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3449 (*r_data)->tx_ptr = _bcm_pack_policer_config((*r_data)->tx_ptr, info); 3450 } 3451 } 3452 3453 return r_rv; 3454 } 3455 3456 STATIC int 3457 _bcm_rlink_policer_traverse_handler( 3458 bcm_rlink_traverse_data_t **r_data) 3459 { 3460 int r_rv; 3461 /* Skip unit */ 3462 3463 /* Unpack request */ 3464 /* Skip unit */ 3465 3466 r_rv = bcm_policer_traverse((*r_data)->unit, _bcm_rlink_policer_traverse_callback, (void *)r_data); 3467 3468 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3469 } 3470 3471 /* bcm_port_e2efc_remote_module_traverse */ 3472 3473 STATIC int 3474 _bcm_rlink_port_e2efc_remote_module_traverse_callback( 3475 int unit, 3476 bcm_module_t remote_module, 3477 bcm_port_e2efc_mode_t mode, 3478 void * user_data) 3479 { 3480 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3481 int r_rv; 3482 int r_size; 3483 3484 /* Pack reply */ 3485 r_size = 8; 3486 3487 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3488 /* Skip unit */ 3489 BCM_PACK_U32((*r_data)->tx_ptr, remote_module); 3490 BCM_PACK_U32((*r_data)->tx_ptr, mode); 3491 } 3492 3493 return r_rv; 3494 } 3495 3496 STATIC int 3497 _bcm_rlink_port_e2efc_remote_module_traverse_handler( 3498 bcm_rlink_traverse_data_t **r_data) 3499 { 3500 int r_rv; 3501 /* Skip unit */ 3502 3503 /* Unpack request */ 3504 /* Skip unit */ 3505 3506 r_rv = bcm_port_e2efc_remote_module_traverse((*r_data)->unit, _bcm_rlink_port_e2efc_remote_module_traverse_callback, (void *)r_data); 3507 3508 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3509 } 3510 3511 /* bcm_port_e2efc_remote_port_traverse */ 3512 3513 STATIC int 3514 _bcm_rlink_port_e2efc_remote_port_traverse_callback( 3515 int unit, 3516 int rport_handle_id, 3517 void * user_data) 3518 { 3519 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3520 int r_rv; 3521 int r_size; 3522 3523 /* Pack reply */ 3524 r_size = 4; 3525 3526 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3527 /* Skip unit */ 3528 BCM_PACK_U32((*r_data)->tx_ptr, rport_handle_id); 3529 } 3530 3531 return r_rv; 3532 } 3533 3534 STATIC int 3535 _bcm_rlink_port_e2efc_remote_port_traverse_handler( 3536 bcm_rlink_traverse_data_t **r_data) 3537 { 3538 int r_rv; 3539 /* Skip unit */ 3540 3541 /* Unpack request */ 3542 /* Skip unit */ 3543 3544 r_rv = bcm_port_e2efc_remote_port_traverse((*r_data)->unit, _bcm_rlink_port_e2efc_remote_port_traverse_callback, (void *)r_data); 3545 3546 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3547 } 3548 3549 /* bcm_port_resource_traverse */ 3550 3551 STATIC int 3552 _bcm_rlink_port_resource_traverse_callback( 3553 int unit, 3554 bcm_port_resource_t * resource, 3555 void * user_data) 3556 { 3557 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3558 int r_rv; 3559 int r_size; 3560 3561 /* Pack reply */ 3562 r_size = 41; 3563 3564 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3565 /* Skip unit */ 3566 if (resource == NULL) { 3567 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3568 } else { 3569 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3570 (*r_data)->tx_ptr = _bcm_pack_port_resource((*r_data)->tx_ptr, resource); 3571 } 3572 } 3573 3574 return r_rv; 3575 } 3576 3577 STATIC int 3578 _bcm_rlink_port_resource_traverse_handler( 3579 bcm_rlink_traverse_data_t **r_data) 3580 { 3581 int r_rv; 3582 /* Skip unit */ 3583 3584 /* Unpack request */ 3585 /* Skip unit */ 3586 3587 r_rv = bcm_port_resource_traverse((*r_data)->unit, _bcm_rlink_port_resource_traverse_callback, (void *)r_data); 3588 3589 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3590 } 3591 3592 #ifdef INCLUDE_L3 3593 3594 /* bcm_proxy_egress_traverse */ 3595 3596 STATIC int 3597 _bcm_rlink_proxy_egress_traverse_callback( 3598 int unit, 3599 bcm_if_t proxy_if_id, 3600 bcm_proxy_egress_t * info, 3601 void * user_data) 3602 { 3603 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3604 int r_rv; 3605 int r_size; 3606 3607 /* Pack reply */ 3608 r_size = 13; 3609 3610 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3611 /* Skip unit */ 3612 BCM_PACK_U32((*r_data)->tx_ptr, proxy_if_id); 3613 if (info == NULL) { 3614 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3615 } else { 3616 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3617 (*r_data)->tx_ptr = _bcm_pack_proxy_egress((*r_data)->tx_ptr, info); 3618 } 3619 } 3620 3621 return r_rv; 3622 } 3623 3624 STATIC int 3625 _bcm_rlink_proxy_egress_traverse_handler( 3626 bcm_rlink_traverse_data_t **r_data) 3627 { 3628 int r_rv; 3629 /* Skip unit */ 3630 3631 /* Unpack request */ 3632 /* Skip unit */ 3633 3634 r_rv = bcm_proxy_egress_traverse((*r_data)->unit, _bcm_rlink_proxy_egress_traverse_callback, (void *)r_data); 3635 3636 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3637 } 3638 3639 #endif /* INCLUDE_L3 */ 3640 #ifdef INCLUDE_PSTATS 3641 3642 /* bcm_pstats_session_traverse */ 3643 3644 STATIC int 3645 _bcm_rlink_pstats_session_traverse_callback( 3646 int unit, 3647 bcm_pstats_session_id_t session_id, 3648 int array_count, 3649 bcm_pstats_session_element_t * element_array, 3650 void * user_data) 3651 { 3652 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3653 int r_rv; 3654 int r_size; 3655 int r_i; 3656 3657 /* Pack reply */ 3658 r_size = 9 + (array_count*16); 3659 3660 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3661 /* Skip unit */ 3662 BCM_PACK_U32((*r_data)->tx_ptr, session_id); 3663 BCM_PACK_U32((*r_data)->tx_ptr, array_count); 3664 if (element_array == NULL) { 3665 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3666 } else { 3667 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3668 for (r_i = 0; r_i < array_count; r_i++) { 3669 (*r_data)->tx_ptr = _bcm_pack_pstats_session_element((*r_data)->tx_ptr, element_array+r_i); 3670 } 3671 } 3672 } 3673 3674 return r_rv; 3675 } 3676 3677 STATIC int 3678 _bcm_rlink_pstats_session_traverse_handler( 3679 bcm_rlink_traverse_data_t **r_data) 3680 { 3681 int r_rv; 3682 /* Skip unit */ 3683 3684 /* Unpack request */ 3685 /* Skip unit */ 3686 3687 r_rv = bcm_pstats_session_traverse((*r_data)->unit, _bcm_rlink_pstats_session_traverse_callback, (void *)r_data); 3688 3689 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3690 } 3691 3692 #endif /* INCLUDE_PSTATS */ 3693 3694 /* bcm_range_traverse */ 3695 3696 STATIC int 3697 _bcm_rlink_range_traverse_callback( 3698 int unit, 3699 bcm_range_config_t * range_cfg, 3700 void * user_data) 3701 { 3702 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3703 int r_rv; 3704 int r_size; 3705 3706 /* Pack reply */ 3707 r_size = 44; 3708 3709 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3710 /* Skip unit */ 3711 if (range_cfg == NULL) { 3712 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3713 } else { 3714 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3715 (*r_data)->tx_ptr = _bcm_pack_range_config((*r_data)->tx_ptr, range_cfg); 3716 } 3717 } 3718 3719 return r_rv; 3720 } 3721 3722 STATIC int 3723 _bcm_rlink_range_traverse_handler( 3724 bcm_rlink_traverse_data_t **r_data) 3725 { 3726 int r_rv; 3727 /* Skip unit */ 3728 3729 /* Unpack request */ 3730 /* Skip unit */ 3731 3732 r_rv = bcm_range_traverse((*r_data)->unit, _bcm_rlink_range_traverse_callback, (void *)r_data); 3733 3734 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3735 } 3736 3737 #ifdef INCLUDE_REGEX 3738 3739 /* bcm_regex_session_traverse */ 3740 3741 STATIC int 3742 _bcm_rlink_regex_session_traverse_callback( 3743 int unit, 3744 bcm_regex_session_key_t * session_key, 3745 bcm_regex_session_t * session_data, 3746 void * user_data) 3747 { 3748 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3749 int r_rv; 3750 int r_size; 3751 3752 /* Pack reply */ 3753 r_size = 71; 3754 3755 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3756 /* Skip unit */ 3757 if (session_key == NULL) { 3758 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3759 } else { 3760 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3761 BCM_PACK_U32((*r_data)->tx_ptr, session_key->flags); 3762 BCM_PACK_U32((*r_data)->tx_ptr, session_key->sip); 3763 BCM_PACK_U32((*r_data)->tx_ptr, session_key->dip); 3764 (*r_data)->tx_ptr = _bcm_pack_ip6((*r_data)->tx_ptr, (*session_key).sip6); 3765 (*r_data)->tx_ptr = _bcm_pack_ip6((*r_data)->tx_ptr, (*session_key).dip6); 3766 BCM_PACK_U32((*r_data)->tx_ptr, session_key->dst_port); 3767 BCM_PACK_U32((*r_data)->tx_ptr, session_key->src_port); 3768 BCM_PACK_U8((*r_data)->tx_ptr, session_key->protocol); 3769 } 3770 if (session_data == NULL) { 3771 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3772 } else { 3773 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3774 BCM_PACK_U32((*r_data)->tx_ptr, session_data->flags); 3775 BCM_PACK_U32((*r_data)->tx_ptr, session_data->policy); 3776 BCM_PACK_U32((*r_data)->tx_ptr, session_data->inactivity_timeout); 3777 BCM_PACK_U32((*r_data)->tx_ptr, session_data->timestamp); 3778 } 3779 } 3780 3781 return r_rv; 3782 } 3783 3784 STATIC int 3785 _bcm_rlink_regex_session_traverse_handler( 3786 bcm_rlink_traverse_data_t **r_data) 3787 { 3788 int r_rv; 3789 /* Skip unit */ 3790 int flags; 3791 3792 /* Unpack request */ 3793 /* Skip unit */ 3794 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 3795 3796 r_rv = bcm_regex_session_traverse((*r_data)->unit, flags, _bcm_rlink_regex_session_traverse_callback, (void *)r_data); 3797 3798 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3799 } 3800 3801 #endif /* INCLUDE_REGEX */ 3802 3803 /* bcm_sat_ctf_traverse */ 3804 3805 STATIC int 3806 _bcm_rlink_sat_ctf_traverse_callback( 3807 int unit, 3808 bcm_sat_ctf_t ctf_id, 3809 void * user_data) 3810 { 3811 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3812 int r_rv; 3813 int r_size; 3814 3815 /* Pack reply */ 3816 r_size = 4; 3817 3818 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3819 /* Skip unit */ 3820 BCM_PACK_U32((*r_data)->tx_ptr, ctf_id); 3821 } 3822 3823 return r_rv; 3824 } 3825 3826 STATIC int 3827 _bcm_rlink_sat_ctf_traverse_handler( 3828 bcm_rlink_traverse_data_t **r_data) 3829 { 3830 int r_rv; 3831 /* Skip unit */ 3832 3833 /* Unpack request */ 3834 /* Skip unit */ 3835 3836 r_rv = bcm_sat_ctf_traverse((*r_data)->unit, _bcm_rlink_sat_ctf_traverse_callback, (void *)r_data); 3837 3838 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3839 } 3840 3841 /* bcm_sat_endpoint_traverse */ 3842 3843 STATIC int 3844 _bcm_rlink_sat_endpoint_traverse_callback( 3845 int unit, 3846 bcm_sat_endpoint_info_t * endpoint_info, 3847 void * user_data) 3848 { 3849 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3850 int r_rv; 3851 int r_size; 3852 3853 /* Pack reply */ 3854 r_size = 46; 3855 3856 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3857 /* Skip unit */ 3858 if (endpoint_info == NULL) { 3859 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3860 } else { 3861 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3862 (*r_data)->tx_ptr = _bcm_pack_sat_endpoint_info((*r_data)->tx_ptr, endpoint_info); 3863 } 3864 } 3865 3866 return r_rv; 3867 } 3868 3869 STATIC int 3870 _bcm_rlink_sat_endpoint_traverse_handler( 3871 bcm_rlink_traverse_data_t **r_data) 3872 { 3873 int r_rv; 3874 /* Skip unit */ 3875 uint32 flags; 3876 3877 /* Unpack request */ 3878 /* Skip unit */ 3879 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 3880 3881 r_rv = bcm_sat_endpoint_traverse((*r_data)->unit, flags, _bcm_rlink_sat_endpoint_traverse_callback, (void *)r_data); 3882 3883 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3884 } 3885 3886 /* bcm_sat_gtf_traverse */ 3887 3888 STATIC int 3889 _bcm_rlink_sat_gtf_traverse_callback( 3890 int unit, 3891 bcm_sat_gtf_t gtf_id, 3892 void * user_data) 3893 { 3894 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3895 int r_rv; 3896 int r_size; 3897 3898 /* Pack reply */ 3899 r_size = 4; 3900 3901 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3902 /* Skip unit */ 3903 BCM_PACK_U32((*r_data)->tx_ptr, gtf_id); 3904 } 3905 3906 return r_rv; 3907 } 3908 3909 STATIC int 3910 _bcm_rlink_sat_gtf_traverse_handler( 3911 bcm_rlink_traverse_data_t **r_data) 3912 { 3913 int r_rv; 3914 /* Skip unit */ 3915 3916 /* Unpack request */ 3917 /* Skip unit */ 3918 3919 r_rv = bcm_sat_gtf_traverse((*r_data)->unit, _bcm_rlink_sat_gtf_traverse_callback, (void *)r_data); 3920 3921 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3922 } 3923 3924 /* bcm_srv6_sid_initiator_traverse */ 3925 3926 STATIC int 3927 _bcm_rlink_srv6_sid_initiator_traverse_callback( 3928 int unit, 3929 bcm_srv6_sid_initiator_info_t * info, 3930 void * user_data) 3931 { 3932 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3933 int r_rv; 3934 int r_size; 3935 3936 /* Pack reply */ 3937 r_size = 33; 3938 3939 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3940 /* Skip unit */ 3941 if (info == NULL) { 3942 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3943 } else { 3944 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3945 (*r_data)->tx_ptr = _bcm_pack_srv6_sid_initiator_info((*r_data)->tx_ptr, info); 3946 } 3947 } 3948 3949 return r_rv; 3950 } 3951 3952 STATIC int 3953 _bcm_rlink_srv6_sid_initiator_traverse_handler( 3954 bcm_rlink_traverse_data_t **r_data) 3955 { 3956 int r_rv; 3957 /* Skip unit */ 3958 bcm_srv6_sid_initiator_traverse_info_t additional_info; 3959 3960 /* Unpack request */ 3961 /* Skip unit */ 3962 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.flags); 3963 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.traverse_flags); 3964 3965 r_rv = bcm_srv6_sid_initiator_traverse((*r_data)->unit, additional_info, _bcm_rlink_srv6_sid_initiator_traverse_callback, (void *)r_data); 3966 3967 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 3968 } 3969 3970 /* bcm_srv6_srh_base_initiator_traverse */ 3971 3972 STATIC int 3973 _bcm_rlink_srv6_srh_base_initiator_traverse_callback( 3974 int unit, 3975 bcm_srv6_srh_base_initiator_info_t * info, 3976 void * user_data) 3977 { 3978 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 3979 int r_rv; 3980 int r_size; 3981 3982 /* Pack reply */ 3983 r_size = 38; 3984 3985 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 3986 /* Skip unit */ 3987 if (info == NULL) { 3988 BCM_PACK_U8((*r_data)->tx_ptr, 1); 3989 } else { 3990 BCM_PACK_U8((*r_data)->tx_ptr, 0); 3991 (*r_data)->tx_ptr = _bcm_pack_srv6_srh_base_initiator_info((*r_data)->tx_ptr, info); 3992 } 3993 } 3994 3995 return r_rv; 3996 } 3997 3998 STATIC int 3999 _bcm_rlink_srv6_srh_base_initiator_traverse_handler( 4000 bcm_rlink_traverse_data_t **r_data) 4001 { 4002 int r_rv; 4003 /* Skip unit */ 4004 bcm_srv6_srh_base_initiator_traverse_info_t additional_info; 4005 4006 /* Unpack request */ 4007 /* Skip unit */ 4008 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.flags); 4009 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.traverse_flags); 4010 4011 r_rv = bcm_srv6_srh_base_initiator_traverse((*r_data)->unit, additional_info, _bcm_rlink_srv6_srh_base_initiator_traverse_callback, (void *)r_data); 4012 4013 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4014 } 4015 4016 /* bcm_srv6_terminator_next_protocol_traverse */ 4017 4018 STATIC int 4019 _bcm_rlink_srv6_terminator_next_protocol_traverse_callback( 4020 int unit, 4021 bcm_srv6_terminator_next_protocol_mapping_t * info, 4022 void * user_data) 4023 { 4024 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4025 int r_rv; 4026 int r_size; 4027 4028 /* Pack reply */ 4029 r_size = 17; 4030 4031 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4032 /* Skip unit */ 4033 if (info == NULL) { 4034 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4035 } else { 4036 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4037 (*r_data)->tx_ptr = _bcm_pack_srv6_terminator_next_protocol_mapping((*r_data)->tx_ptr, info); 4038 } 4039 } 4040 4041 return r_rv; 4042 } 4043 4044 STATIC int 4045 _bcm_rlink_srv6_terminator_next_protocol_traverse_handler( 4046 bcm_rlink_traverse_data_t **r_data) 4047 { 4048 int r_rv; 4049 /* Skip unit */ 4050 bcm_srv6_terminator_next_protocol_traverse_info_t additional_info; 4051 4052 /* Unpack request */ 4053 /* Skip unit */ 4054 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.flags); 4055 BCM_UNPACK_U32((*r_data)->rx_ptr, additional_info.traverse_flags); 4056 4057 r_rv = bcm_srv6_terminator_next_protocol_traverse((*r_data)->unit, additional_info, _bcm_rlink_srv6_terminator_next_protocol_traverse_callback, (void *)r_data); 4058 4059 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4060 } 4061 4062 /* bcm_subport_group_traverse */ 4063 4064 STATIC int 4065 _bcm_rlink_subport_group_traverse_callback( 4066 int unit, 4067 bcm_gport_t port, 4068 bcm_subport_config_t * config, 4069 void * user_data) 4070 { 4071 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4072 int r_rv; 4073 int r_size; 4074 4075 /* Pack reply */ 4076 r_size = 43; 4077 4078 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4079 /* Skip unit */ 4080 BCM_PACK_U32((*r_data)->tx_ptr, port); 4081 if (config == NULL) { 4082 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4083 } else { 4084 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4085 (*r_data)->tx_ptr = _bcm_pack_subport_config((*r_data)->tx_ptr, config); 4086 } 4087 } 4088 4089 return r_rv; 4090 } 4091 4092 STATIC int 4093 _bcm_rlink_subport_group_traverse_handler( 4094 bcm_rlink_traverse_data_t **r_data) 4095 { 4096 int r_rv; 4097 /* Skip unit */ 4098 bcm_gport_t subport_group; 4099 4100 /* Unpack request */ 4101 /* Skip unit */ 4102 BCM_UNPACK_U32((*r_data)->rx_ptr, subport_group); 4103 4104 r_rv = bcm_subport_group_traverse((*r_data)->unit, subport_group, _bcm_rlink_subport_group_traverse_callback, (void *)r_data); 4105 4106 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4107 } 4108 4109 /* bcm_subport_port_traverse */ 4110 4111 STATIC int 4112 _bcm_rlink_subport_port_traverse_callback( 4113 int unit, 4114 bcm_gport_t port, 4115 bcm_subport_config_t * config, 4116 void * user_data) 4117 { 4118 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4119 int r_rv; 4120 int r_size; 4121 4122 /* Pack reply */ 4123 r_size = 43; 4124 4125 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4126 /* Skip unit */ 4127 BCM_PACK_U32((*r_data)->tx_ptr, port); 4128 if (config == NULL) { 4129 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4130 } else { 4131 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4132 (*r_data)->tx_ptr = _bcm_pack_subport_config((*r_data)->tx_ptr, config); 4133 } 4134 } 4135 4136 return r_rv; 4137 } 4138 4139 STATIC int 4140 _bcm_rlink_subport_port_traverse_handler( 4141 bcm_rlink_traverse_data_t **r_data) 4142 { 4143 int r_rv; 4144 /* Skip unit */ 4145 4146 /* Unpack request */ 4147 /* Skip unit */ 4148 4149 r_rv = bcm_subport_port_traverse((*r_data)->unit, _bcm_rlink_subport_port_traverse_callback, (void *)r_data); 4150 4151 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4152 } 4153 4154 /* bcm_switch_agm_traverse */ 4155 4156 STATIC int 4157 _bcm_rlink_switch_agm_traverse_callback( 4158 int unit, 4159 bcm_switch_agm_info_t * agm_info, 4160 void * user_data) 4161 { 4162 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4163 int r_rv; 4164 int r_size; 4165 4166 /* Pack reply */ 4167 r_size = 21; 4168 4169 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4170 /* Skip unit */ 4171 if (agm_info == NULL) { 4172 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4173 } else { 4174 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4175 (*r_data)->tx_ptr = _bcm_pack_switch_agm_info((*r_data)->tx_ptr, agm_info); 4176 } 4177 } 4178 4179 return r_rv; 4180 } 4181 4182 STATIC int 4183 _bcm_rlink_switch_agm_traverse_handler( 4184 bcm_rlink_traverse_data_t **r_data) 4185 { 4186 int r_rv; 4187 /* Skip unit */ 4188 int flags; 4189 4190 /* Unpack request */ 4191 /* Skip unit */ 4192 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 4193 4194 r_rv = bcm_switch_agm_traverse((*r_data)->unit, flags, _bcm_rlink_switch_agm_traverse_callback, (void *)r_data); 4195 4196 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4197 } 4198 4199 /* bcm_switch_encap_traverse */ 4200 4201 STATIC int 4202 _bcm_rlink_switch_encap_traverse_callback( 4203 int unit, 4204 bcm_if_t encap_id, 4205 bcm_switch_encap_info_t * encap_info, 4206 void * user_data) 4207 { 4208 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4209 int r_rv; 4210 int r_size; 4211 4212 /* Pack reply */ 4213 r_size = 48; 4214 4215 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4216 /* Skip unit */ 4217 BCM_PACK_U32((*r_data)->tx_ptr, encap_id); 4218 if (encap_info == NULL) { 4219 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4220 } else { 4221 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4222 (*r_data)->tx_ptr = _bcm_pack_switch_encap_info((*r_data)->tx_ptr, encap_info); 4223 } 4224 } 4225 4226 return r_rv; 4227 } 4228 4229 STATIC int 4230 _bcm_rlink_switch_encap_traverse_handler( 4231 bcm_rlink_traverse_data_t **r_data) 4232 { 4233 int r_rv; 4234 /* Skip unit */ 4235 4236 /* Unpack request */ 4237 /* Skip unit */ 4238 4239 r_rv = bcm_switch_encap_traverse((*r_data)->unit, _bcm_rlink_switch_encap_traverse_callback, (void *)r_data); 4240 4241 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4242 } 4243 4244 /* bcm_switch_hash_entry_traverse */ 4245 4246 STATIC int 4247 _bcm_rlink_switch_hash_entry_traverse_callback( 4248 int unit, 4249 int flags, 4250 bcm_hash_entry_t entry, 4251 void * user_data) 4252 { 4253 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4254 int r_rv; 4255 int r_size; 4256 4257 /* Pack reply */ 4258 r_size = 8; 4259 4260 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4261 /* Skip unit */ 4262 BCM_PACK_U32((*r_data)->tx_ptr, flags); 4263 BCM_PACK_U32((*r_data)->tx_ptr, entry); 4264 } 4265 4266 return r_rv; 4267 } 4268 4269 STATIC int 4270 _bcm_rlink_switch_hash_entry_traverse_handler( 4271 bcm_rlink_traverse_data_t **r_data) 4272 { 4273 int r_rv; 4274 /* Skip unit */ 4275 int flags; 4276 4277 /* Unpack request */ 4278 /* Skip unit */ 4279 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 4280 4281 r_rv = bcm_switch_hash_entry_traverse((*r_data)->unit, flags, _bcm_rlink_switch_hash_entry_traverse_callback, (void *)r_data); 4282 4283 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4284 } 4285 4286 /* bcm_switch_match_config_traverse */ 4287 4288 STATIC int 4289 _bcm_rlink_switch_match_config_traverse_callback( 4290 int unit, 4291 int match_id, 4292 bcm_switch_match_config_info_t * config_info, 4293 void * user_data) 4294 { 4295 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4296 int r_rv; 4297 int r_size; 4298 4299 /* Pack reply */ 4300 r_size = 39; 4301 4302 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4303 /* Skip unit */ 4304 BCM_PACK_U32((*r_data)->tx_ptr, match_id); 4305 if (config_info == NULL) { 4306 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4307 } else { 4308 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4309 (*r_data)->tx_ptr = _bcm_pack_switch_match_config_info((*r_data)->tx_ptr, config_info); 4310 } 4311 } 4312 4313 return r_rv; 4314 } 4315 4316 STATIC int 4317 _bcm_rlink_switch_match_config_traverse_handler( 4318 bcm_rlink_traverse_data_t **r_data) 4319 { 4320 int r_rv; 4321 /* Skip unit */ 4322 bcm_switch_match_service_t match_service; 4323 4324 /* Unpack request */ 4325 /* Skip unit */ 4326 BCM_UNPACK_U32((*r_data)->rx_ptr, match_service); 4327 4328 r_rv = bcm_switch_match_config_traverse((*r_data)->unit, match_service, _bcm_rlink_switch_match_config_traverse_callback, (void *)r_data); 4329 4330 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4331 } 4332 4333 /* bcm_switch_match_control_traverse */ 4334 4335 STATIC int 4336 _bcm_rlink_switch_match_control_traverse_callback( 4337 int unit, 4338 bcm_switch_match_control_type_t control_type, 4339 bcm_gport_t gport, 4340 bcm_switch_match_control_info_t * control_info, 4341 void * user_data) 4342 { 4343 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4344 int r_rv; 4345 int r_size; 4346 4347 /* Pack reply */ 4348 r_size = 17; 4349 4350 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4351 /* Skip unit */ 4352 BCM_PACK_U32((*r_data)->tx_ptr, control_type); 4353 BCM_PACK_U32((*r_data)->tx_ptr, gport); 4354 if (control_info == NULL) { 4355 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4356 } else { 4357 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4358 (*r_data)->tx_ptr = _bcm_pack_switch_match_control_info((*r_data)->tx_ptr, control_info); 4359 } 4360 } 4361 4362 return r_rv; 4363 } 4364 4365 STATIC int 4366 _bcm_rlink_switch_match_control_traverse_handler( 4367 bcm_rlink_traverse_data_t **r_data) 4368 { 4369 int r_rv; 4370 /* Skip unit */ 4371 bcm_switch_match_service_t match_service; 4372 4373 /* Unpack request */ 4374 /* Skip unit */ 4375 BCM_UNPACK_U32((*r_data)->rx_ptr, match_service); 4376 4377 r_rv = bcm_switch_match_control_traverse((*r_data)->unit, match_service, _bcm_rlink_switch_match_control_traverse_callback, (void *)r_data); 4378 4379 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4380 } 4381 4382 /* bcm_switch_olp_l2_addr_traverse */ 4383 4384 STATIC int 4385 _bcm_rlink_switch_olp_l2_addr_traverse_callback( 4386 int unit, 4387 bcm_switch_olp_l2_addr_t * l2_addr, 4388 void * user_data) 4389 { 4390 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4391 int r_rv; 4392 int r_size; 4393 4394 /* Pack reply */ 4395 r_size = 11; 4396 4397 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4398 /* Skip unit */ 4399 if (l2_addr == NULL) { 4400 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4401 } else { 4402 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4403 (*r_data)->tx_ptr = _bcm_pack_switch_olp_l2_addr((*r_data)->tx_ptr, l2_addr); 4404 } 4405 } 4406 4407 return r_rv; 4408 } 4409 4410 STATIC int 4411 _bcm_rlink_switch_olp_l2_addr_traverse_handler( 4412 bcm_rlink_traverse_data_t **r_data) 4413 { 4414 int r_rv; 4415 /* Skip unit */ 4416 4417 /* Unpack request */ 4418 /* Skip unit */ 4419 4420 r_rv = bcm_switch_olp_l2_addr_traverse((*r_data)->unit, _bcm_rlink_switch_olp_l2_addr_traverse_callback, (void *)r_data); 4421 4422 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4423 } 4424 4425 /* bcm_time_interface_traverse */ 4426 4427 STATIC int 4428 _bcm_rlink_time_interface_traverse_callback( 4429 int unit, 4430 bcm_time_interface_t * intf, 4431 void * user_data) 4432 { 4433 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4434 int r_rv; 4435 int r_size; 4436 4437 /* Pack reply */ 4438 r_size = 90; 4439 4440 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4441 /* Skip unit */ 4442 if (intf == NULL) { 4443 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4444 } else { 4445 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4446 (*r_data)->tx_ptr = _bcm_pack_time_interface((*r_data)->tx_ptr, intf); 4447 } 4448 } 4449 4450 return r_rv; 4451 } 4452 4453 STATIC int 4454 _bcm_rlink_time_interface_traverse_handler( 4455 bcm_rlink_traverse_data_t **r_data) 4456 { 4457 int r_rv; 4458 /* Skip unit */ 4459 4460 /* Unpack request */ 4461 /* Skip unit */ 4462 4463 r_rv = bcm_time_interface_traverse((*r_data)->unit, _bcm_rlink_time_interface_traverse_callback, (void *)r_data); 4464 4465 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4466 } 4467 4468 #ifdef INCLUDE_L3 4469 4470 /* bcm_trill_multicast_adjacency_traverse */ 4471 4472 STATIC int 4473 _bcm_rlink_trill_multicast_adjacency_traverse_callback( 4474 int unit, 4475 bcm_trill_multicast_adjacency_t * info, 4476 void * user_data) 4477 { 4478 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4479 int r_rv; 4480 int r_size; 4481 4482 /* Pack reply */ 4483 r_size = 13; 4484 4485 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4486 /* Skip unit */ 4487 if (info == NULL) { 4488 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4489 } else { 4490 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4491 (*r_data)->tx_ptr = _bcm_pack_trill_multicast_adjacency((*r_data)->tx_ptr, info); 4492 } 4493 } 4494 4495 return r_rv; 4496 } 4497 4498 STATIC int 4499 _bcm_rlink_trill_multicast_adjacency_traverse_handler( 4500 bcm_rlink_traverse_data_t **r_data) 4501 { 4502 int r_rv; 4503 /* Skip unit */ 4504 4505 /* Unpack request */ 4506 /* Skip unit */ 4507 4508 r_rv = bcm_trill_multicast_adjacency_traverse((*r_data)->unit, _bcm_rlink_trill_multicast_adjacency_traverse_callback, (void *)r_data); 4509 4510 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4511 } 4512 4513 /* bcm_trill_multicast_entry_traverse */ 4514 4515 STATIC int 4516 _bcm_rlink_trill_multicast_entry_traverse_callback( 4517 int unit, 4518 bcm_trill_multicast_entry_t * trill_mc_entry, 4519 void * user_data) 4520 { 4521 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4522 int r_rv; 4523 int r_size; 4524 4525 /* Pack reply */ 4526 r_size = 27; 4527 4528 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4529 /* Skip unit */ 4530 if (trill_mc_entry == NULL) { 4531 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4532 } else { 4533 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4534 (*r_data)->tx_ptr = _bcm_pack_trill_multicast_entry((*r_data)->tx_ptr, trill_mc_entry); 4535 } 4536 } 4537 4538 return r_rv; 4539 } 4540 4541 STATIC int 4542 _bcm_rlink_trill_multicast_entry_traverse_handler( 4543 bcm_rlink_traverse_data_t **r_data) 4544 { 4545 int r_rv; 4546 /* Skip unit */ 4547 4548 /* Unpack request */ 4549 /* Skip unit */ 4550 4551 r_rv = bcm_trill_multicast_entry_traverse((*r_data)->unit, _bcm_rlink_trill_multicast_entry_traverse_callback, (void *)r_data); 4552 4553 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4554 } 4555 4556 /* bcm_trill_multicast_source_traverse */ 4557 4558 STATIC int 4559 _bcm_rlink_trill_multicast_source_traverse_callback( 4560 int unit, 4561 bcm_trill_name_t root_name, 4562 bcm_trill_name_t source_rbridge_name, 4563 bcm_gport_t port, 4564 void * user_data) 4565 { 4566 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4567 int r_rv; 4568 int r_size; 4569 4570 /* Pack reply */ 4571 r_size = 12; 4572 4573 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4574 /* Skip unit */ 4575 BCM_PACK_U32((*r_data)->tx_ptr, root_name); 4576 BCM_PACK_U32((*r_data)->tx_ptr, source_rbridge_name); 4577 BCM_PACK_U32((*r_data)->tx_ptr, port); 4578 } 4579 4580 return r_rv; 4581 } 4582 4583 STATIC int 4584 _bcm_rlink_trill_multicast_source_traverse_handler( 4585 bcm_rlink_traverse_data_t **r_data) 4586 { 4587 int r_rv; 4588 /* Skip unit */ 4589 4590 /* Unpack request */ 4591 /* Skip unit */ 4592 4593 r_rv = bcm_trill_multicast_source_traverse((*r_data)->unit, _bcm_rlink_trill_multicast_source_traverse_callback, (void *)r_data); 4594 4595 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4596 } 4597 4598 /* bcm_trill_vpn_traverse */ 4599 4600 STATIC int 4601 _bcm_rlink_trill_vpn_traverse_callback( 4602 int unit, 4603 bcm_trill_vpn_config_t * info, 4604 void * user_data) 4605 { 4606 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4607 int r_rv; 4608 int r_size; 4609 4610 /* Pack reply */ 4611 r_size = 23; 4612 4613 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4614 /* Skip unit */ 4615 if (info == NULL) { 4616 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4617 } else { 4618 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4619 (*r_data)->tx_ptr = _bcm_pack_trill_vpn_config((*r_data)->tx_ptr, info); 4620 } 4621 } 4622 4623 return r_rv; 4624 } 4625 4626 STATIC int 4627 _bcm_rlink_trill_vpn_traverse_handler( 4628 bcm_rlink_traverse_data_t **r_data) 4629 { 4630 int r_rv; 4631 /* Skip unit */ 4632 4633 /* Unpack request */ 4634 /* Skip unit */ 4635 4636 r_rv = bcm_trill_vpn_traverse((*r_data)->unit, _bcm_rlink_trill_vpn_traverse_callback, (void *)r_data); 4637 4638 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4639 } 4640 4641 #endif /* INCLUDE_L3 */ 4642 4643 /* bcm_trunk_resilient_traverse */ 4644 4645 STATIC int 4646 _bcm_rlink_trunk_resilient_traverse_callback( 4647 int unit, 4648 bcm_trunk_resilient_entry_t * entry, 4649 void * user_data) 4650 { 4651 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4652 int r_rv; 4653 int r_size; 4654 4655 /* Pack reply */ 4656 r_size = 33; 4657 4658 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4659 /* Skip unit */ 4660 if (entry == NULL) { 4661 BCM_PACK_U8((*r_data)->tx_ptr, 1); 4662 } else { 4663 BCM_PACK_U8((*r_data)->tx_ptr, 0); 4664 (*r_data)->tx_ptr = _bcm_pack_trunk_resilient_entry((*r_data)->tx_ptr, entry); 4665 } 4666 } 4667 4668 return r_rv; 4669 } 4670 4671 STATIC int 4672 _bcm_rlink_trunk_resilient_traverse_handler( 4673 bcm_rlink_traverse_data_t **r_data) 4674 { 4675 int r_rv; 4676 /* Skip unit */ 4677 uint32 flags; 4678 bcm_trunk_resilient_entry_t match_entry; 4679 bcm_trunk_resilient_entry_t * r_p_match_entry; 4680 4681 /* Unpack request */ 4682 /* Skip unit */ 4683 BCM_UNPACK_U32((*r_data)->rx_ptr, flags); 4684 if (*(*r_data)->rx_ptr++ == 1) { 4685 r_p_match_entry = NULL; 4686 } else { 4687 r_p_match_entry = &match_entry; 4688 (*r_data)->rx_ptr = _bcm_unpack_trunk_resilient_entry((*r_data)->rx_ptr, r_p_match_entry); 4689 } 4690 4691 r_rv = bcm_trunk_resilient_traverse((*r_data)->unit, flags, r_p_match_entry, _bcm_rlink_trunk_resilient_traverse_callback, (void *)r_data); 4692 4693 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4694 } 4695 4696 /* bcm_tsn_flowset_traverse */ 4697 4698 STATIC int 4699 _bcm_rlink_tsn_flowset_traverse_callback( 4700 int unit, 4701 bcm_tsn_flowset_t flowset, 4702 void * user_data) 4703 { 4704 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4705 int r_rv; 4706 int r_size; 4707 4708 /* Pack reply */ 4709 r_size = 4; 4710 4711 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4712 /* Skip unit */ 4713 BCM_PACK_U32((*r_data)->tx_ptr, flowset); 4714 } 4715 4716 return r_rv; 4717 } 4718 4719 STATIC int 4720 _bcm_rlink_tsn_flowset_traverse_handler( 4721 bcm_rlink_traverse_data_t **r_data) 4722 { 4723 int r_rv; 4724 /* Skip unit */ 4725 4726 /* Unpack request */ 4727 /* Skip unit */ 4728 4729 r_rv = bcm_tsn_flowset_traverse((*r_data)->unit, _bcm_rlink_tsn_flowset_traverse_callback, (void *)r_data); 4730 4731 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4732 } 4733 4734 /* bcm_tsn_mtu_profile_traverse */ 4735 4736 STATIC int 4737 _bcm_rlink_tsn_mtu_profile_traverse_callback( 4738 int unit, 4739 int profile_id, 4740 void * user_data) 4741 { 4742 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4743 int r_rv; 4744 int r_size; 4745 4746 /* Pack reply */ 4747 r_size = 4; 4748 4749 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4750 /* Skip unit */ 4751 BCM_PACK_U32((*r_data)->tx_ptr, profile_id); 4752 } 4753 4754 return r_rv; 4755 } 4756 4757 STATIC int 4758 _bcm_rlink_tsn_mtu_profile_traverse_handler( 4759 bcm_rlink_traverse_data_t **r_data) 4760 { 4761 int r_rv; 4762 /* Skip unit */ 4763 4764 /* Unpack request */ 4765 /* Skip unit */ 4766 4767 r_rv = bcm_tsn_mtu_profile_traverse((*r_data)->unit, _bcm_rlink_tsn_mtu_profile_traverse_callback, (void *)r_data); 4768 4769 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4770 } 4771 4772 /* bcm_tsn_pri_map_traverse */ 4773 4774 STATIC int 4775 _bcm_rlink_tsn_pri_map_traverse_callback( 4776 int unit, 4777 bcm_tsn_pri_map_t map_id, 4778 void * user_data) 4779 { 4780 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4781 int r_rv; 4782 int r_size; 4783 4784 /* Pack reply */ 4785 r_size = 4; 4786 4787 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4788 /* Skip unit */ 4789 BCM_PACK_U32((*r_data)->tx_ptr, map_id); 4790 } 4791 4792 return r_rv; 4793 } 4794 4795 STATIC int 4796 _bcm_rlink_tsn_pri_map_traverse_handler( 4797 bcm_rlink_traverse_data_t **r_data) 4798 { 4799 int r_rv; 4800 /* Skip unit */ 4801 4802 /* Unpack request */ 4803 /* Skip unit */ 4804 4805 r_rv = bcm_tsn_pri_map_traverse((*r_data)->unit, _bcm_rlink_tsn_pri_map_traverse_callback, (void *)r_data); 4806 4807 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4808 } 4809 4810 /* bcm_tsn_sr_auto_learn_group_traverse */ 4811 4812 STATIC int 4813 _bcm_rlink_tsn_sr_auto_learn_group_traverse_callback( 4814 int unit, 4815 int group_id, 4816 void * user_data) 4817 { 4818 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4819 int r_rv; 4820 int r_size; 4821 4822 /* Pack reply */ 4823 r_size = 4; 4824 4825 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4826 /* Skip unit */ 4827 BCM_PACK_U32((*r_data)->tx_ptr, group_id); 4828 } 4829 4830 return r_rv; 4831 } 4832 4833 STATIC int 4834 _bcm_rlink_tsn_sr_auto_learn_group_traverse_handler( 4835 bcm_rlink_traverse_data_t **r_data) 4836 { 4837 int r_rv; 4838 /* Skip unit */ 4839 4840 /* Unpack request */ 4841 /* Skip unit */ 4842 4843 r_rv = bcm_tsn_sr_auto_learn_group_traverse((*r_data)->unit, _bcm_rlink_tsn_sr_auto_learn_group_traverse_callback, (void *)r_data); 4844 4845 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4846 } 4847 4848 /* bcm_tsn_sr_flowset_traverse */ 4849 4850 STATIC int 4851 _bcm_rlink_tsn_sr_flowset_traverse_callback( 4852 int unit, 4853 bcm_tsn_sr_flowset_t flowset, 4854 void * user_data) 4855 { 4856 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4857 int r_rv; 4858 int r_size; 4859 4860 /* Pack reply */ 4861 r_size = 4; 4862 4863 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4864 /* Skip unit */ 4865 BCM_PACK_U32((*r_data)->tx_ptr, flowset); 4866 } 4867 4868 return r_rv; 4869 } 4870 4871 STATIC int 4872 _bcm_rlink_tsn_sr_flowset_traverse_handler( 4873 bcm_rlink_traverse_data_t **r_data) 4874 { 4875 int r_rv; 4876 /* Skip unit */ 4877 int is_rx; 4878 4879 /* Unpack request */ 4880 /* Skip unit */ 4881 BCM_UNPACK_U32((*r_data)->rx_ptr, is_rx); 4882 4883 r_rv = bcm_tsn_sr_flowset_traverse((*r_data)->unit, is_rx, _bcm_rlink_tsn_sr_flowset_traverse_callback, (void *)r_data); 4884 4885 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4886 } 4887 4888 /* bcm_tsn_stat_group_traverse */ 4889 4890 STATIC int 4891 _bcm_rlink_tsn_stat_group_traverse_callback( 4892 int unit, 4893 bcm_tsn_stat_group_t id, 4894 void * user_data) 4895 { 4896 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4897 int r_rv; 4898 int r_size; 4899 4900 /* Pack reply */ 4901 r_size = 4; 4902 4903 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4904 /* Skip unit */ 4905 BCM_PACK_U32((*r_data)->tx_ptr, id); 4906 } 4907 4908 return r_rv; 4909 } 4910 4911 STATIC int 4912 _bcm_rlink_tsn_stat_group_traverse_handler( 4913 bcm_rlink_traverse_data_t **r_data) 4914 { 4915 int r_rv; 4916 /* Skip unit */ 4917 4918 /* Unpack request */ 4919 /* Skip unit */ 4920 4921 r_rv = bcm_tsn_stat_group_traverse((*r_data)->unit, _bcm_rlink_tsn_stat_group_traverse_callback, (void *)r_data); 4922 4923 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4924 } 4925 4926 /* bcm_tsn_stu_profile_traverse */ 4927 4928 STATIC int 4929 _bcm_rlink_tsn_stu_profile_traverse_callback( 4930 int unit, 4931 int profile_id, 4932 void * user_data) 4933 { 4934 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4935 int r_rv; 4936 int r_size; 4937 4938 /* Pack reply */ 4939 r_size = 4; 4940 4941 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4942 /* Skip unit */ 4943 BCM_PACK_U32((*r_data)->tx_ptr, profile_id); 4944 } 4945 4946 return r_rv; 4947 } 4948 4949 STATIC int 4950 _bcm_rlink_tsn_stu_profile_traverse_handler( 4951 bcm_rlink_traverse_data_t **r_data) 4952 { 4953 int r_rv; 4954 /* Skip unit */ 4955 4956 /* Unpack request */ 4957 /* Skip unit */ 4958 4959 r_rv = bcm_tsn_stu_profile_traverse((*r_data)->unit, _bcm_rlink_tsn_stu_profile_traverse_callback, (void *)r_data); 4960 4961 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 4962 } 4963 4964 /* bcm_tsn_taf_cosq_mapping_profile_traverse */ 4965 4966 STATIC int 4967 _bcm_rlink_tsn_taf_cosq_mapping_profile_traverse_callback( 4968 int unit, 4969 int cosq_profile, 4970 void * user_data) 4971 { 4972 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 4973 int r_rv; 4974 int r_size; 4975 4976 /* Pack reply */ 4977 r_size = 4; 4978 4979 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 4980 /* Skip unit */ 4981 BCM_PACK_U32((*r_data)->tx_ptr, cosq_profile); 4982 } 4983 4984 return r_rv; 4985 } 4986 4987 STATIC int 4988 _bcm_rlink_tsn_taf_cosq_mapping_profile_traverse_handler( 4989 bcm_rlink_traverse_data_t **r_data) 4990 { 4991 int r_rv; 4992 /* Skip unit */ 4993 4994 /* Unpack request */ 4995 /* Skip unit */ 4996 4997 r_rv = bcm_tsn_taf_cosq_mapping_profile_traverse((*r_data)->unit, _bcm_rlink_tsn_taf_cosq_mapping_profile_traverse_callback, (void *)r_data); 4998 4999 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5000 } 5001 5002 /* bcm_tsn_taf_gate_max_bytes_profile_traverse */ 5003 5004 STATIC int 5005 _bcm_rlink_tsn_taf_gate_max_bytes_profile_traverse_callback( 5006 int unit, 5007 int taf_gate_id, 5008 int profile_id, 5009 void * user_data) 5010 { 5011 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5012 int r_rv; 5013 int r_size; 5014 5015 /* Pack reply */ 5016 r_size = 8; 5017 5018 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5019 /* Skip unit */ 5020 BCM_PACK_U32((*r_data)->tx_ptr, taf_gate_id); 5021 BCM_PACK_U32((*r_data)->tx_ptr, profile_id); 5022 } 5023 5024 return r_rv; 5025 } 5026 5027 STATIC int 5028 _bcm_rlink_tsn_taf_gate_max_bytes_profile_traverse_handler( 5029 bcm_rlink_traverse_data_t **r_data) 5030 { 5031 int r_rv; 5032 /* Skip unit */ 5033 int taf_gate_id; 5034 5035 /* Unpack request */ 5036 /* Skip unit */ 5037 BCM_UNPACK_U32((*r_data)->rx_ptr, taf_gate_id); 5038 5039 r_rv = bcm_tsn_taf_gate_max_bytes_profile_traverse((*r_data)->unit, taf_gate_id, _bcm_rlink_tsn_taf_gate_max_bytes_profile_traverse_callback, (void *)r_data); 5040 5041 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5042 } 5043 5044 /* bcm_tsn_taf_gate_traverse */ 5045 5046 STATIC int 5047 _bcm_rlink_tsn_taf_gate_traverse_callback( 5048 int unit, 5049 int taf_gate, 5050 void * user_data) 5051 { 5052 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5053 int r_rv; 5054 int r_size; 5055 5056 /* Pack reply */ 5057 r_size = 4; 5058 5059 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5060 /* Skip unit */ 5061 BCM_PACK_U32((*r_data)->tx_ptr, taf_gate); 5062 } 5063 5064 return r_rv; 5065 } 5066 5067 STATIC int 5068 _bcm_rlink_tsn_taf_gate_traverse_handler( 5069 bcm_rlink_traverse_data_t **r_data) 5070 { 5071 int r_rv; 5072 /* Skip unit */ 5073 5074 /* Unpack request */ 5075 /* Skip unit */ 5076 5077 r_rv = bcm_tsn_taf_gate_traverse((*r_data)->unit, _bcm_rlink_tsn_taf_gate_traverse_callback, (void *)r_data); 5078 5079 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5080 } 5081 5082 /* bcm_tsn_taf_profile_traverse */ 5083 5084 STATIC int 5085 _bcm_rlink_tsn_taf_profile_traverse_callback( 5086 int unit, 5087 int taf_gate, 5088 bcm_tsn_taf_profile_id_t pid, 5089 void * user_data) 5090 { 5091 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5092 int r_rv; 5093 int r_size; 5094 5095 /* Pack reply */ 5096 r_size = 8; 5097 5098 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5099 /* Skip unit */ 5100 BCM_PACK_U32((*r_data)->tx_ptr, taf_gate); 5101 BCM_PACK_U32((*r_data)->tx_ptr, pid); 5102 } 5103 5104 return r_rv; 5105 } 5106 5107 STATIC int 5108 _bcm_rlink_tsn_taf_profile_traverse_handler( 5109 bcm_rlink_traverse_data_t **r_data) 5110 { 5111 int r_rv; 5112 /* Skip unit */ 5113 int taf_gate; 5114 5115 /* Unpack request */ 5116 /* Skip unit */ 5117 BCM_UNPACK_U32((*r_data)->rx_ptr, taf_gate); 5118 5119 r_rv = bcm_tsn_taf_profile_traverse((*r_data)->unit, taf_gate, _bcm_rlink_tsn_taf_profile_traverse_callback, (void *)r_data); 5120 5121 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5122 } 5123 5124 #ifdef INCLUDE_L3 5125 5126 /* bcm_tunnel_initiator_traverse */ 5127 5128 STATIC int 5129 _bcm_rlink_tunnel_initiator_traverse_callback( 5130 int unit, 5131 bcm_tunnel_initiator_t * info, 5132 void * user_data) 5133 { 5134 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5135 int r_rv; 5136 int r_size; 5137 5138 /* Pack reply */ 5139 r_size = 137; 5140 5141 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5142 /* Skip unit */ 5143 if (info == NULL) { 5144 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5145 } else { 5146 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5147 (*r_data)->tx_ptr = _bcm_pack_tunnel_initiator((*r_data)->tx_ptr, info); 5148 } 5149 } 5150 5151 return r_rv; 5152 } 5153 5154 STATIC int 5155 _bcm_rlink_tunnel_initiator_traverse_handler( 5156 bcm_rlink_traverse_data_t **r_data) 5157 { 5158 int r_rv; 5159 /* Skip unit */ 5160 5161 /* Unpack request */ 5162 /* Skip unit */ 5163 5164 r_rv = bcm_tunnel_initiator_traverse((*r_data)->unit, _bcm_rlink_tunnel_initiator_traverse_callback, (void *)r_data); 5165 5166 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5167 } 5168 5169 /* bcm_tunnel_terminator_config_traverse */ 5170 5171 STATIC int 5172 _bcm_rlink_tunnel_terminator_config_traverse_callback( 5173 int unit, 5174 bcm_tunnel_terminator_config_key_t * info, 5175 void * user_data) 5176 { 5177 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5178 int r_rv; 5179 int r_size; 5180 5181 /* Pack reply */ 5182 r_size = 55; 5183 5184 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5185 /* Skip unit */ 5186 if (info == NULL) { 5187 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5188 } else { 5189 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5190 (*r_data)->tx_ptr = _bcm_pack_tunnel_terminator_config_key((*r_data)->tx_ptr, info); 5191 } 5192 } 5193 5194 return r_rv; 5195 } 5196 5197 STATIC int 5198 _bcm_rlink_tunnel_terminator_config_traverse_handler( 5199 bcm_rlink_traverse_data_t **r_data) 5200 { 5201 int r_rv; 5202 /* Skip unit */ 5203 5204 /* Unpack request */ 5205 /* Skip unit */ 5206 5207 r_rv = bcm_tunnel_terminator_config_traverse((*r_data)->unit, _bcm_rlink_tunnel_terminator_config_traverse_callback, (void *)r_data); 5208 5209 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5210 } 5211 5212 /* bcm_tunnel_terminator_traverse */ 5213 5214 STATIC int 5215 _bcm_rlink_tunnel_terminator_traverse_callback( 5216 int unit, 5217 bcm_tunnel_terminator_t * info, 5218 void * user_data) 5219 { 5220 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5221 int r_rv; 5222 int r_size; 5223 5224 /* Pack reply */ 5225 r_size = 198; 5226 5227 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5228 /* Skip unit */ 5229 if (info == NULL) { 5230 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5231 } else { 5232 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5233 (*r_data)->tx_ptr = _bcm_pack_tunnel_terminator((*r_data)->tx_ptr, info); 5234 } 5235 } 5236 5237 return r_rv; 5238 } 5239 5240 STATIC int 5241 _bcm_rlink_tunnel_terminator_traverse_handler( 5242 bcm_rlink_traverse_data_t **r_data) 5243 { 5244 int r_rv; 5245 /* Skip unit */ 5246 5247 /* Unpack request */ 5248 /* Skip unit */ 5249 5250 r_rv = bcm_tunnel_terminator_traverse((*r_data)->unit, _bcm_rlink_tunnel_terminator_traverse_callback, (void *)r_data); 5251 5252 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5253 } 5254 5255 #endif /* INCLUDE_L3 */ 5256 5257 /* bcm_vlan_cross_connect_traverse */ 5258 5259 STATIC int 5260 _bcm_rlink_vlan_cross_connect_traverse_callback( 5261 int unit, 5262 bcm_vlan_t outer_vlan, 5263 bcm_vlan_t inner_vlan, 5264 bcm_gport_t port_1, 5265 bcm_gport_t port_2, 5266 void * user_data) 5267 { 5268 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5269 int r_rv; 5270 int r_size; 5271 5272 /* Pack reply */ 5273 r_size = 12; 5274 5275 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5276 /* Skip unit */ 5277 BCM_PACK_U16((*r_data)->tx_ptr, outer_vlan); 5278 BCM_PACK_U16((*r_data)->tx_ptr, inner_vlan); 5279 BCM_PACK_U32((*r_data)->tx_ptr, port_1); 5280 BCM_PACK_U32((*r_data)->tx_ptr, port_2); 5281 } 5282 5283 return r_rv; 5284 } 5285 5286 STATIC int 5287 _bcm_rlink_vlan_cross_connect_traverse_handler( 5288 bcm_rlink_traverse_data_t **r_data) 5289 { 5290 int r_rv; 5291 /* Skip unit */ 5292 5293 /* Unpack request */ 5294 /* Skip unit */ 5295 5296 r_rv = bcm_vlan_cross_connect_traverse((*r_data)->unit, _bcm_rlink_vlan_cross_connect_traverse_callback, (void *)r_data); 5297 5298 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5299 } 5300 5301 /* bcm_vlan_dtag_range_traverse */ 5302 5303 STATIC int 5304 _bcm_rlink_vlan_dtag_range_traverse_callback( 5305 int unit, 5306 bcm_gport_t port, 5307 bcm_vlan_t old_vlan_low, 5308 bcm_vlan_t old_vlan_high, 5309 bcm_vlan_t new_vlan, 5310 int prio, 5311 void * user_data) 5312 { 5313 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5314 int r_rv; 5315 int r_size; 5316 5317 /* Pack reply */ 5318 r_size = 14; 5319 5320 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5321 /* Skip unit */ 5322 BCM_PACK_U32((*r_data)->tx_ptr, port); 5323 BCM_PACK_U16((*r_data)->tx_ptr, old_vlan_low); 5324 BCM_PACK_U16((*r_data)->tx_ptr, old_vlan_high); 5325 BCM_PACK_U16((*r_data)->tx_ptr, new_vlan); 5326 BCM_PACK_U32((*r_data)->tx_ptr, prio); 5327 } 5328 5329 return r_rv; 5330 } 5331 5332 STATIC int 5333 _bcm_rlink_vlan_dtag_range_traverse_handler( 5334 bcm_rlink_traverse_data_t **r_data) 5335 { 5336 int r_rv; 5337 /* Skip unit */ 5338 5339 /* Unpack request */ 5340 /* Skip unit */ 5341 5342 r_rv = bcm_vlan_dtag_range_traverse((*r_data)->unit, _bcm_rlink_vlan_dtag_range_traverse_callback, (void *)r_data); 5343 5344 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5345 } 5346 5347 /* bcm_vlan_dtag_traverse */ 5348 5349 STATIC int 5350 _bcm_rlink_vlan_dtag_traverse_callback( 5351 int unit, 5352 bcm_gport_t port, 5353 bcm_vlan_t old_vlan, 5354 bcm_vlan_t new_vlan, 5355 int prio, 5356 void * user_data) 5357 { 5358 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5359 int r_rv; 5360 int r_size; 5361 5362 /* Pack reply */ 5363 r_size = 12; 5364 5365 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5366 /* Skip unit */ 5367 BCM_PACK_U32((*r_data)->tx_ptr, port); 5368 BCM_PACK_U16((*r_data)->tx_ptr, old_vlan); 5369 BCM_PACK_U16((*r_data)->tx_ptr, new_vlan); 5370 BCM_PACK_U32((*r_data)->tx_ptr, prio); 5371 } 5372 5373 return r_rv; 5374 } 5375 5376 STATIC int 5377 _bcm_rlink_vlan_dtag_traverse_handler( 5378 bcm_rlink_traverse_data_t **r_data) 5379 { 5380 int r_rv; 5381 /* Skip unit */ 5382 5383 /* Unpack request */ 5384 /* Skip unit */ 5385 5386 r_rv = bcm_vlan_dtag_traverse((*r_data)->unit, _bcm_rlink_vlan_dtag_traverse_callback, (void *)r_data); 5387 5388 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5389 } 5390 5391 /* bcm_vlan_ip_action_traverse */ 5392 5393 STATIC int 5394 _bcm_rlink_vlan_ip_action_traverse_callback( 5395 int unit, 5396 bcm_vlan_ip_t * vlan_ip, 5397 bcm_vlan_action_set_t * action, 5398 void * user_data) 5399 { 5400 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5401 int r_rv; 5402 int r_size; 5403 5404 /* Pack reply */ 5405 r_size = 207; 5406 5407 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5408 /* Skip unit */ 5409 if (vlan_ip == NULL) { 5410 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5411 } else { 5412 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5413 (*r_data)->tx_ptr = _bcm_pack_vlan_ip((*r_data)->tx_ptr, vlan_ip); 5414 } 5415 if (action == NULL) { 5416 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5417 } else { 5418 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5419 (*r_data)->tx_ptr = _bcm_pack_vlan_action_set((*r_data)->tx_ptr, action); 5420 } 5421 } 5422 5423 return r_rv; 5424 } 5425 5426 STATIC int 5427 _bcm_rlink_vlan_ip_action_traverse_handler( 5428 bcm_rlink_traverse_data_t **r_data) 5429 { 5430 int r_rv; 5431 /* Skip unit */ 5432 5433 /* Unpack request */ 5434 /* Skip unit */ 5435 5436 r_rv = bcm_vlan_ip_action_traverse((*r_data)->unit, _bcm_rlink_vlan_ip_action_traverse_callback, (void *)r_data); 5437 5438 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5439 } 5440 5441 /* bcm_vlan_mac_action_traverse */ 5442 5443 STATIC int 5444 _bcm_rlink_vlan_mac_action_traverse_callback( 5445 int unit, 5446 bcm_mac_t mac, 5447 bcm_vlan_action_set_t * action, 5448 void * user_data) 5449 { 5450 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5451 int r_rv; 5452 int r_size; 5453 5454 /* Pack reply */ 5455 r_size = 174; 5456 5457 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5458 /* Skip unit */ 5459 (*r_data)->tx_ptr = _bcm_pack_mac((*r_data)->tx_ptr, mac); 5460 if (action == NULL) { 5461 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5462 } else { 5463 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5464 (*r_data)->tx_ptr = _bcm_pack_vlan_action_set((*r_data)->tx_ptr, action); 5465 } 5466 } 5467 5468 return r_rv; 5469 } 5470 5471 STATIC int 5472 _bcm_rlink_vlan_mac_action_traverse_handler( 5473 bcm_rlink_traverse_data_t **r_data) 5474 { 5475 int r_rv; 5476 /* Skip unit */ 5477 5478 /* Unpack request */ 5479 /* Skip unit */ 5480 5481 r_rv = bcm_vlan_mac_action_traverse((*r_data)->unit, _bcm_rlink_vlan_mac_action_traverse_callback, (void *)r_data); 5482 5483 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5484 } 5485 5486 /* bcm_vlan_port_protocol_action_traverse */ 5487 5488 STATIC int 5489 _bcm_rlink_vlan_port_protocol_action_traverse_callback( 5490 int unit, 5491 bcm_port_t port, 5492 bcm_port_frametype_t frame, 5493 bcm_port_ethertype_t ether, 5494 bcm_vlan_action_set_t * action, 5495 void * user_data) 5496 { 5497 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5498 int r_rv; 5499 int r_size; 5500 5501 /* Pack reply */ 5502 r_size = 178; 5503 5504 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5505 /* Skip unit */ 5506 BCM_PACK_U32((*r_data)->tx_ptr, port); 5507 BCM_PACK_U32((*r_data)->tx_ptr, frame); 5508 BCM_PACK_U16((*r_data)->tx_ptr, ether); 5509 if (action == NULL) { 5510 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5511 } else { 5512 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5513 (*r_data)->tx_ptr = _bcm_pack_vlan_action_set((*r_data)->tx_ptr, action); 5514 } 5515 } 5516 5517 return r_rv; 5518 } 5519 5520 STATIC int 5521 _bcm_rlink_vlan_port_protocol_action_traverse_handler( 5522 bcm_rlink_traverse_data_t **r_data) 5523 { 5524 int r_rv; 5525 /* Skip unit */ 5526 5527 /* Unpack request */ 5528 /* Skip unit */ 5529 5530 r_rv = bcm_vlan_port_protocol_action_traverse((*r_data)->unit, _bcm_rlink_vlan_port_protocol_action_traverse_callback, (void *)r_data); 5531 5532 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5533 } 5534 5535 /* bcm_vlan_port_traverse */ 5536 5537 STATIC int 5538 _bcm_rlink_vlan_port_traverse_callback( 5539 int unit, 5540 bcm_vlan_port_t * vlan_port, 5541 void * user_data) 5542 { 5543 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5544 int r_rv; 5545 int r_size; 5546 5547 /* Pack reply */ 5548 r_size = 146; 5549 5550 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5551 /* Skip unit */ 5552 if (vlan_port == NULL) { 5553 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5554 } else { 5555 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5556 (*r_data)->tx_ptr = _bcm_pack_vlan_port((*r_data)->tx_ptr, vlan_port); 5557 } 5558 } 5559 5560 return r_rv; 5561 } 5562 5563 STATIC int 5564 _bcm_rlink_vlan_port_traverse_handler( 5565 bcm_rlink_traverse_data_t **r_data) 5566 { 5567 int r_rv; 5568 /* Skip unit */ 5569 bcm_vlan_port_traverse_info_t additional_info; 5570 bcm_vlan_port_traverse_info_t * r_p_additional_info; 5571 5572 /* Unpack request */ 5573 /* Skip unit */ 5574 if (*(*r_data)->rx_ptr++ == 1) { 5575 r_p_additional_info = NULL; 5576 } else { 5577 r_p_additional_info = &additional_info; 5578 BCM_UNPACK_U32((*r_data)->rx_ptr, r_p_additional_info->flags); 5579 } 5580 5581 r_rv = bcm_vlan_port_traverse((*r_data)->unit, r_p_additional_info, _bcm_rlink_vlan_port_traverse_callback, (void *)r_data); 5582 5583 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5584 } 5585 5586 /* bcm_vlan_translate_action_range_traverse */ 5587 5588 STATIC int 5589 _bcm_rlink_vlan_translate_action_range_traverse_callback( 5590 int unit, 5591 bcm_gport_t port, 5592 bcm_vlan_t outer_vlan_low, 5593 bcm_vlan_t outer_vlan_high, 5594 bcm_vlan_t inner_vlan_low, 5595 bcm_vlan_t inner_vlan_high, 5596 bcm_vlan_action_set_t * action, 5597 void * user_data) 5598 { 5599 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5600 int r_rv; 5601 int r_size; 5602 5603 /* Pack reply */ 5604 r_size = 180; 5605 5606 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5607 /* Skip unit */ 5608 BCM_PACK_U32((*r_data)->tx_ptr, port); 5609 BCM_PACK_U16((*r_data)->tx_ptr, outer_vlan_low); 5610 BCM_PACK_U16((*r_data)->tx_ptr, outer_vlan_high); 5611 BCM_PACK_U16((*r_data)->tx_ptr, inner_vlan_low); 5612 BCM_PACK_U16((*r_data)->tx_ptr, inner_vlan_high); 5613 if (action == NULL) { 5614 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5615 } else { 5616 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5617 (*r_data)->tx_ptr = _bcm_pack_vlan_action_set((*r_data)->tx_ptr, action); 5618 } 5619 } 5620 5621 return r_rv; 5622 } 5623 5624 STATIC int 5625 _bcm_rlink_vlan_translate_action_range_traverse_handler( 5626 bcm_rlink_traverse_data_t **r_data) 5627 { 5628 int r_rv; 5629 /* Skip unit */ 5630 5631 /* Unpack request */ 5632 /* Skip unit */ 5633 5634 r_rv = bcm_vlan_translate_action_range_traverse((*r_data)->unit, _bcm_rlink_vlan_translate_action_range_traverse_callback, (void *)r_data); 5635 5636 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5637 } 5638 5639 /* bcm_vlan_translate_action_traverse */ 5640 5641 STATIC int 5642 _bcm_rlink_vlan_translate_action_traverse_callback( 5643 int unit, 5644 bcm_gport_t port, 5645 bcm_vlan_translate_key_t key_type, 5646 bcm_vlan_t outer_vlan, 5647 bcm_vlan_t inner_vlan, 5648 bcm_vlan_action_set_t * action, 5649 void * user_data) 5650 { 5651 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5652 int r_rv; 5653 int r_size; 5654 5655 /* Pack reply */ 5656 r_size = 180; 5657 5658 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5659 /* Skip unit */ 5660 BCM_PACK_U32((*r_data)->tx_ptr, port); 5661 BCM_PACK_U32((*r_data)->tx_ptr, key_type); 5662 BCM_PACK_U16((*r_data)->tx_ptr, outer_vlan); 5663 BCM_PACK_U16((*r_data)->tx_ptr, inner_vlan); 5664 if (action == NULL) { 5665 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5666 } else { 5667 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5668 (*r_data)->tx_ptr = _bcm_pack_vlan_action_set((*r_data)->tx_ptr, action); 5669 } 5670 } 5671 5672 return r_rv; 5673 } 5674 5675 STATIC int 5676 _bcm_rlink_vlan_translate_action_traverse_handler( 5677 bcm_rlink_traverse_data_t **r_data) 5678 { 5679 int r_rv; 5680 /* Skip unit */ 5681 5682 /* Unpack request */ 5683 /* Skip unit */ 5684 5685 r_rv = bcm_vlan_translate_action_traverse((*r_data)->unit, _bcm_rlink_vlan_translate_action_traverse_callback, (void *)r_data); 5686 5687 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5688 } 5689 5690 /* bcm_vlan_translate_egress_action_traverse */ 5691 5692 STATIC int 5693 _bcm_rlink_vlan_translate_egress_action_traverse_callback( 5694 int unit, 5695 int port_class, 5696 bcm_vlan_t outer_vlan, 5697 bcm_vlan_t inner_vlan, 5698 bcm_vlan_action_set_t * action, 5699 void * user_data) 5700 { 5701 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5702 int r_rv; 5703 int r_size; 5704 5705 /* Pack reply */ 5706 r_size = 176; 5707 5708 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5709 /* Skip unit */ 5710 BCM_PACK_U32((*r_data)->tx_ptr, port_class); 5711 BCM_PACK_U16((*r_data)->tx_ptr, outer_vlan); 5712 BCM_PACK_U16((*r_data)->tx_ptr, inner_vlan); 5713 if (action == NULL) { 5714 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5715 } else { 5716 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5717 (*r_data)->tx_ptr = _bcm_pack_vlan_action_set((*r_data)->tx_ptr, action); 5718 } 5719 } 5720 5721 return r_rv; 5722 } 5723 5724 STATIC int 5725 _bcm_rlink_vlan_translate_egress_action_traverse_handler( 5726 bcm_rlink_traverse_data_t **r_data) 5727 { 5728 int r_rv; 5729 /* Skip unit */ 5730 5731 /* Unpack request */ 5732 /* Skip unit */ 5733 5734 r_rv = bcm_vlan_translate_egress_action_traverse((*r_data)->unit, _bcm_rlink_vlan_translate_egress_action_traverse_callback, (void *)r_data); 5735 5736 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5737 } 5738 5739 /* bcm_vlan_translate_egress_traverse */ 5740 5741 STATIC int 5742 _bcm_rlink_vlan_translate_egress_traverse_callback( 5743 int unit, 5744 bcm_gport_t port, 5745 bcm_vlan_t old_vlan, 5746 bcm_vlan_t new_vlan, 5747 int prio, 5748 void * user_data) 5749 { 5750 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5751 int r_rv; 5752 int r_size; 5753 5754 /* Pack reply */ 5755 r_size = 12; 5756 5757 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5758 /* Skip unit */ 5759 BCM_PACK_U32((*r_data)->tx_ptr, port); 5760 BCM_PACK_U16((*r_data)->tx_ptr, old_vlan); 5761 BCM_PACK_U16((*r_data)->tx_ptr, new_vlan); 5762 BCM_PACK_U32((*r_data)->tx_ptr, prio); 5763 } 5764 5765 return r_rv; 5766 } 5767 5768 STATIC int 5769 _bcm_rlink_vlan_translate_egress_traverse_handler( 5770 bcm_rlink_traverse_data_t **r_data) 5771 { 5772 int r_rv; 5773 /* Skip unit */ 5774 5775 /* Unpack request */ 5776 /* Skip unit */ 5777 5778 r_rv = bcm_vlan_translate_egress_traverse((*r_data)->unit, _bcm_rlink_vlan_translate_egress_traverse_callback, (void *)r_data); 5779 5780 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5781 } 5782 5783 /* bcm_vlan_translate_range_traverse */ 5784 5785 STATIC int 5786 _bcm_rlink_vlan_translate_range_traverse_callback( 5787 int unit, 5788 bcm_gport_t port, 5789 bcm_vlan_t old_vlan_low, 5790 bcm_vlan_t old_vlan_high, 5791 bcm_vlan_t new_vlan, 5792 int prio, 5793 void * user_data) 5794 { 5795 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5796 int r_rv; 5797 int r_size; 5798 5799 /* Pack reply */ 5800 r_size = 14; 5801 5802 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5803 /* Skip unit */ 5804 BCM_PACK_U32((*r_data)->tx_ptr, port); 5805 BCM_PACK_U16((*r_data)->tx_ptr, old_vlan_low); 5806 BCM_PACK_U16((*r_data)->tx_ptr, old_vlan_high); 5807 BCM_PACK_U16((*r_data)->tx_ptr, new_vlan); 5808 BCM_PACK_U32((*r_data)->tx_ptr, prio); 5809 } 5810 5811 return r_rv; 5812 } 5813 5814 STATIC int 5815 _bcm_rlink_vlan_translate_range_traverse_handler( 5816 bcm_rlink_traverse_data_t **r_data) 5817 { 5818 int r_rv; 5819 /* Skip unit */ 5820 5821 /* Unpack request */ 5822 /* Skip unit */ 5823 5824 r_rv = bcm_vlan_translate_range_traverse((*r_data)->unit, _bcm_rlink_vlan_translate_range_traverse_callback, (void *)r_data); 5825 5826 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5827 } 5828 5829 /* bcm_vlan_translate_traverse */ 5830 5831 STATIC int 5832 _bcm_rlink_vlan_translate_traverse_callback( 5833 int unit, 5834 bcm_gport_t port, 5835 bcm_vlan_t old_vlan, 5836 bcm_vlan_t new_vlan, 5837 int prio, 5838 void * user_data) 5839 { 5840 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5841 int r_rv; 5842 int r_size; 5843 5844 /* Pack reply */ 5845 r_size = 12; 5846 5847 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5848 /* Skip unit */ 5849 BCM_PACK_U32((*r_data)->tx_ptr, port); 5850 BCM_PACK_U16((*r_data)->tx_ptr, old_vlan); 5851 BCM_PACK_U16((*r_data)->tx_ptr, new_vlan); 5852 BCM_PACK_U32((*r_data)->tx_ptr, prio); 5853 } 5854 5855 return r_rv; 5856 } 5857 5858 STATIC int 5859 _bcm_rlink_vlan_translate_traverse_handler( 5860 bcm_rlink_traverse_data_t **r_data) 5861 { 5862 int r_rv; 5863 /* Skip unit */ 5864 5865 /* Unpack request */ 5866 /* Skip unit */ 5867 5868 r_rv = bcm_vlan_translate_traverse((*r_data)->unit, _bcm_rlink_vlan_translate_traverse_callback, (void *)r_data); 5869 5870 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5871 } 5872 5873 #ifdef INCLUDE_L3 5874 5875 /* bcm_vlan_vpn_traverse */ 5876 5877 STATIC int 5878 _bcm_rlink_vlan_vpn_traverse_callback( 5879 int unit, 5880 bcm_vlan_vpn_config_t * info, 5881 void * user_data) 5882 { 5883 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5884 int r_rv; 5885 int r_size; 5886 5887 /* Pack reply */ 5888 r_size = 19; 5889 5890 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5891 /* Skip unit */ 5892 if (info == NULL) { 5893 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5894 } else { 5895 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5896 (*r_data)->tx_ptr = _bcm_pack_vlan_vpn_config((*r_data)->tx_ptr, info); 5897 } 5898 } 5899 5900 return r_rv; 5901 } 5902 5903 STATIC int 5904 _bcm_rlink_vlan_vpn_traverse_handler( 5905 bcm_rlink_traverse_data_t **r_data) 5906 { 5907 int r_rv; 5908 /* Skip unit */ 5909 5910 /* Unpack request */ 5911 /* Skip unit */ 5912 5913 r_rv = bcm_vlan_vpn_traverse((*r_data)->unit, _bcm_rlink_vlan_vpn_traverse_callback, (void *)r_data); 5914 5915 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5916 } 5917 5918 #endif /* INCLUDE_L3 */ 5919 5920 /* bcm_vswitch_cross_connect_traverse */ 5921 5922 STATIC int 5923 _bcm_rlink_vswitch_cross_connect_traverse_callback( 5924 int unit, 5925 bcm_vswitch_cross_connect_t * gports, 5926 void * user_data) 5927 { 5928 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5929 int r_rv; 5930 int r_size; 5931 5932 /* Pack reply */ 5933 r_size = 21; 5934 5935 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5936 /* Skip unit */ 5937 if (gports == NULL) { 5938 BCM_PACK_U8((*r_data)->tx_ptr, 1); 5939 } else { 5940 BCM_PACK_U8((*r_data)->tx_ptr, 0); 5941 (*r_data)->tx_ptr = _bcm_pack_vswitch_cross_connect((*r_data)->tx_ptr, gports); 5942 } 5943 } 5944 5945 return r_rv; 5946 } 5947 5948 STATIC int 5949 _bcm_rlink_vswitch_cross_connect_traverse_handler( 5950 bcm_rlink_traverse_data_t **r_data) 5951 { 5952 int r_rv; 5953 /* Skip unit */ 5954 5955 /* Unpack request */ 5956 /* Skip unit */ 5957 5958 r_rv = bcm_vswitch_cross_connect_traverse((*r_data)->unit, _bcm_rlink_vswitch_cross_connect_traverse_callback, (void *)r_data); 5959 5960 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 5961 } 5962 5963 /* bcm_vswitch_port_traverse */ 5964 5965 STATIC int 5966 _bcm_rlink_vswitch_port_traverse_callback( 5967 int unit, 5968 bcm_vlan_t vsi, 5969 bcm_gport_t port, 5970 void * user_data) 5971 { 5972 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 5973 int r_rv; 5974 int r_size; 5975 5976 /* Pack reply */ 5977 r_size = 6; 5978 5979 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 5980 /* Skip unit */ 5981 BCM_PACK_U16((*r_data)->tx_ptr, vsi); 5982 BCM_PACK_U32((*r_data)->tx_ptr, port); 5983 } 5984 5985 return r_rv; 5986 } 5987 5988 STATIC int 5989 _bcm_rlink_vswitch_port_traverse_handler( 5990 bcm_rlink_traverse_data_t **r_data) 5991 { 5992 int r_rv; 5993 /* Skip unit */ 5994 bcm_vlan_t vsi; 5995 5996 /* Unpack request */ 5997 /* Skip unit */ 5998 BCM_UNPACK_U16((*r_data)->rx_ptr, vsi); 5999 6000 r_rv = bcm_vswitch_port_traverse((*r_data)->unit, vsi, _bcm_rlink_vswitch_port_traverse_callback, (void *)r_data); 6001 6002 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 6003 } 6004 6005 #ifdef INCLUDE_L3 6006 6007 /* bcm_vxlan_network_domain_config_traverse */ 6008 6009 STATIC int 6010 _bcm_rlink_vxlan_network_domain_config_traverse_callback( 6011 int unit, 6012 bcm_vxlan_network_domain_config_t * info, 6013 void * user_data) 6014 { 6015 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 6016 int r_rv; 6017 int r_size; 6018 6019 /* Pack reply */ 6020 r_size = 29; 6021 6022 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 6023 /* Skip unit */ 6024 if (info == NULL) { 6025 BCM_PACK_U8((*r_data)->tx_ptr, 1); 6026 } else { 6027 BCM_PACK_U8((*r_data)->tx_ptr, 0); 6028 (*r_data)->tx_ptr = _bcm_pack_vxlan_network_domain_config((*r_data)->tx_ptr, info); 6029 } 6030 } 6031 6032 return r_rv; 6033 } 6034 6035 STATIC int 6036 _bcm_rlink_vxlan_network_domain_config_traverse_handler( 6037 bcm_rlink_traverse_data_t **r_data) 6038 { 6039 int r_rv; 6040 /* Skip unit */ 6041 bcm_vxlan_network_domain_config_additional_info_t additional_info; 6042 bcm_vxlan_network_domain_config_additional_info_t * r_p_additional_info; 6043 6044 /* Unpack request */ 6045 /* Skip unit */ 6046 if (*(*r_data)->rx_ptr++ == 1) { 6047 r_p_additional_info = NULL; 6048 } else { 6049 r_p_additional_info = &additional_info; 6050 BCM_UNPACK_U32((*r_data)->rx_ptr, r_p_additional_info->flags); 6051 } 6052 6053 r_rv = bcm_vxlan_network_domain_config_traverse((*r_data)->unit, r_p_additional_info, _bcm_rlink_vxlan_network_domain_config_traverse_callback, (void *)r_data); 6054 6055 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 6056 } 6057 6058 /* bcm_vxlan_port_traverse */ 6059 6060 STATIC int 6061 _bcm_rlink_vxlan_port_traverse_callback( 6062 int unit, 6063 bcm_vxlan_port_t * info, 6064 void * user_data) 6065 { 6066 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 6067 int r_rv; 6068 int r_size; 6069 6070 /* Pack reply */ 6071 r_size = 61; 6072 6073 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 6074 /* Skip unit */ 6075 if (info == NULL) { 6076 BCM_PACK_U8((*r_data)->tx_ptr, 1); 6077 } else { 6078 BCM_PACK_U8((*r_data)->tx_ptr, 0); 6079 (*r_data)->tx_ptr = _bcm_pack_vxlan_port((*r_data)->tx_ptr, info); 6080 } 6081 } 6082 6083 return r_rv; 6084 } 6085 6086 STATIC int 6087 _bcm_rlink_vxlan_port_traverse_handler( 6088 bcm_rlink_traverse_data_t **r_data) 6089 { 6090 int r_rv; 6091 /* Skip unit */ 6092 6093 /* Unpack request */ 6094 /* Skip unit */ 6095 6096 r_rv = bcm_vxlan_port_traverse((*r_data)->unit, _bcm_rlink_vxlan_port_traverse_callback, (void *)r_data); 6097 6098 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 6099 } 6100 6101 /* bcm_vxlan_tunnel_initiator_traverse */ 6102 6103 STATIC int 6104 _bcm_rlink_vxlan_tunnel_initiator_traverse_callback( 6105 int unit, 6106 bcm_tunnel_initiator_t * info, 6107 void * user_data) 6108 { 6109 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 6110 int r_rv; 6111 int r_size; 6112 6113 /* Pack reply */ 6114 r_size = 137; 6115 6116 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 6117 /* Skip unit */ 6118 if (info == NULL) { 6119 BCM_PACK_U8((*r_data)->tx_ptr, 1); 6120 } else { 6121 BCM_PACK_U8((*r_data)->tx_ptr, 0); 6122 (*r_data)->tx_ptr = _bcm_pack_tunnel_initiator((*r_data)->tx_ptr, info); 6123 } 6124 } 6125 6126 return r_rv; 6127 } 6128 6129 STATIC int 6130 _bcm_rlink_vxlan_tunnel_initiator_traverse_handler( 6131 bcm_rlink_traverse_data_t **r_data) 6132 { 6133 int r_rv; 6134 /* Skip unit */ 6135 6136 /* Unpack request */ 6137 /* Skip unit */ 6138 6139 r_rv = bcm_vxlan_tunnel_initiator_traverse((*r_data)->unit, _bcm_rlink_vxlan_tunnel_initiator_traverse_callback, (void *)r_data); 6140 6141 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 6142 } 6143 6144 /* bcm_vxlan_tunnel_terminator_traverse */ 6145 6146 STATIC int 6147 _bcm_rlink_vxlan_tunnel_terminator_traverse_callback( 6148 int unit, 6149 bcm_tunnel_terminator_t * info, 6150 void * user_data) 6151 { 6152 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 6153 int r_rv; 6154 int r_size; 6155 6156 /* Pack reply */ 6157 r_size = 198; 6158 6159 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 6160 /* Skip unit */ 6161 if (info == NULL) { 6162 BCM_PACK_U8((*r_data)->tx_ptr, 1); 6163 } else { 6164 BCM_PACK_U8((*r_data)->tx_ptr, 0); 6165 (*r_data)->tx_ptr = _bcm_pack_tunnel_terminator((*r_data)->tx_ptr, info); 6166 } 6167 } 6168 6169 return r_rv; 6170 } 6171 6172 STATIC int 6173 _bcm_rlink_vxlan_tunnel_terminator_traverse_handler( 6174 bcm_rlink_traverse_data_t **r_data) 6175 { 6176 int r_rv; 6177 /* Skip unit */ 6178 6179 /* Unpack request */ 6180 /* Skip unit */ 6181 6182 r_rv = bcm_vxlan_tunnel_terminator_traverse((*r_data)->unit, _bcm_rlink_vxlan_tunnel_terminator_traverse_callback, (void *)r_data); 6183 6184 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 6185 } 6186 6187 /* bcm_vxlan_vpn_traverse */ 6188 6189 STATIC int 6190 _bcm_rlink_vxlan_vpn_traverse_callback( 6191 int unit, 6192 bcm_vxlan_vpn_config_t * info, 6193 void * user_data) 6194 { 6195 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 6196 int r_rv; 6197 int r_size; 6198 6199 /* Pack reply */ 6200 r_size = 101; 6201 6202 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 6203 /* Skip unit */ 6204 if (info == NULL) { 6205 BCM_PACK_U8((*r_data)->tx_ptr, 1); 6206 } else { 6207 BCM_PACK_U8((*r_data)->tx_ptr, 0); 6208 (*r_data)->tx_ptr = _bcm_pack_vxlan_vpn_config((*r_data)->tx_ptr, info); 6209 } 6210 } 6211 6212 return r_rv; 6213 } 6214 6215 STATIC int 6216 _bcm_rlink_vxlan_vpn_traverse_handler( 6217 bcm_rlink_traverse_data_t **r_data) 6218 { 6219 int r_rv; 6220 /* Skip unit */ 6221 6222 /* Unpack request */ 6223 /* Skip unit */ 6224 6225 r_rv = bcm_vxlan_vpn_traverse((*r_data)->unit, _bcm_rlink_vxlan_vpn_traverse_callback, (void *)r_data); 6226 6227 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 6228 } 6229 6230 /* bcm_wlan_client_traverse */ 6231 6232 STATIC int 6233 _bcm_rlink_wlan_client_traverse_callback( 6234 int unit, 6235 bcm_wlan_client_t * info, 6236 void * user_data) 6237 { 6238 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 6239 int r_rv; 6240 int r_size; 6241 6242 /* Pack reply */ 6243 r_size = 23; 6244 6245 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 6246 /* Skip unit */ 6247 if (info == NULL) { 6248 BCM_PACK_U8((*r_data)->tx_ptr, 1); 6249 } else { 6250 BCM_PACK_U8((*r_data)->tx_ptr, 0); 6251 (*r_data)->tx_ptr = _bcm_pack_wlan_client((*r_data)->tx_ptr, info); 6252 } 6253 } 6254 6255 return r_rv; 6256 } 6257 6258 STATIC int 6259 _bcm_rlink_wlan_client_traverse_handler( 6260 bcm_rlink_traverse_data_t **r_data) 6261 { 6262 int r_rv; 6263 /* Skip unit */ 6264 6265 /* Unpack request */ 6266 /* Skip unit */ 6267 6268 r_rv = bcm_wlan_client_traverse((*r_data)->unit, _bcm_rlink_wlan_client_traverse_callback, (void *)r_data); 6269 6270 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 6271 } 6272 6273 /* bcm_wlan_port_traverse */ 6274 6275 STATIC int 6276 _bcm_rlink_wlan_port_traverse_callback( 6277 int unit, 6278 bcm_wlan_port_t * info, 6279 void * user_data) 6280 { 6281 bcm_rlink_traverse_data_t **r_data = (bcm_rlink_traverse_data_t **)user_data; 6282 int r_rv; 6283 int r_size; 6284 6285 /* Pack reply */ 6286 r_size = 41; 6287 6288 if (BCM_SUCCESS(r_rv=bcm_rlink_traverse_reply_check(*r_data, r_size))) { 6289 /* Skip unit */ 6290 if (info == NULL) { 6291 BCM_PACK_U8((*r_data)->tx_ptr, 1); 6292 } else { 6293 BCM_PACK_U8((*r_data)->tx_ptr, 0); 6294 (*r_data)->tx_ptr = _bcm_pack_wlan_port((*r_data)->tx_ptr, info); 6295 } 6296 } 6297 6298 return r_rv; 6299 } 6300 6301 STATIC int 6302 _bcm_rlink_wlan_port_traverse_handler( 6303 bcm_rlink_traverse_data_t **r_data) 6304 { 6305 int r_rv; 6306 /* Skip unit */ 6307 6308 /* Unpack request */ 6309 /* Skip unit */ 6310 6311 r_rv = bcm_wlan_port_traverse((*r_data)->unit, _bcm_rlink_wlan_port_traverse_callback, (void *)r_data); 6312 6313 return bcm_rlink_traverse_reply_done(*r_data, r_rv); 6314 } 6315 6316 #endif /* INCLUDE_L3 */ 6317 6318 int 6319 _bcm_rlink_traverse_handler_unavail( 6320 bcm_rlink_traverse_data_t **r_data) 6321 { 6322 return bcm_rlink_traverse_reply_done(*r_data, BCM_E_UNAVAIL); 6323 } 6324 6325 #ifdef INCLUDE_L3 6326 #define BCM_TRAVERSE_IFDEF_INCLUDE_L3(_f) _f 6327 #else 6328 #define BCM_TRAVERSE_IFDEF_INCLUDE_L3(_f) _bcm_rlink_traverse_handler_unavail 6329 #endif 6330 #ifdef INCLUDE_PSTATS 6331 #define BCM_TRAVERSE_IFDEF_INCLUDE_PSTATS(_f) _f 6332 #else 6333 #define BCM_TRAVERSE_IFDEF_INCLUDE_PSTATS(_f) _bcm_rlink_traverse_handler_unavail 6334 #endif 6335 #ifdef INCLUDE_REGEX 6336 #define BCM_TRAVERSE_IFDEF_INCLUDE_REGEX(_f) _f 6337 #else 6338 #define BCM_TRAVERSE_IFDEF_INCLUDE_REGEX(_f) _bcm_rlink_traverse_handler_unavail 6339 #endif 6340 6341 _bcm_traverse_lookup_t _bcm_traverse_lookup[BCM_TRAVERSE_LOOKUP_COUNT] = { 6342 #ifndef BCM_RPC_PBMP_64 6343 { {0x0396d57d,0x166559c9,0xbdc8e080,0x7734c265,0x5142f43f}, 6344 _bcm_rlink_l2_match_masked_traverse_handler}, 6345 { {0x05e54e9f,0xdb836cfa,0xe46d5689,0x89bcfb19,0xff0ee886}, 6346 _bcm_rlink_vlan_port_protocol_action_traverse_handler}, 6347 { {0x0640d32f,0x4f1e5c31,0xcdf1e172,0xae1e6445,0x9ce22c65}, 6348 _bcm_rlink_vlan_translate_traverse_handler}, 6349 { {0x08f576a7,0x7bddad71,0xdc08b493,0x2359ce15,0x9ba1b582}, 6350 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_trill_multicast_source_traverse_handler)}, 6351 { {0x0a03a8c6,0x354d3590,0xb61e4c9d,0x23e091c7,0xcc467be9}, 6352 _bcm_rlink_cosq_pfc_deadlock_recovery_event_register_handler}, 6353 { {0x0a1e5cfa,0x9f4444e7,0xb2958c32,0x3a17c284,0x98f9394a}, 6354 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l2gre_vpn_traverse_handler)}, 6355 { {0x0a2abfad,0xb9ef458a,0xd9875a99,0x33e667b4,0xd1a36089}, 6356 _bcm_rlink_l2_station_traverse_handler}, 6357 { {0x0ac4451b,0x1b679cf5,0xc07134b4,0xf9190f9a,0x404d3762}, 6358 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_trill_multicast_adjacency_traverse_handler)}, 6359 { {0x11322c75,0x2183e25c,0xb7faf1de,0xd2fce25e,0xc650a0b5}, 6360 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_tunnel_initiator_traverse_handler)}, 6361 { {0x11f430d4,0x77be922f,0xe6ae6c0c,0x93c6aad5,0xbe032cc2}, 6362 _bcm_rlink_fcoe_route_traverse_handler}, 6363 { {0x13d58d97,0x0d995f47,0xa89f8451,0x6c40eab3,0x5d749ca9}, 6364 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_vpbr_traverse_handler)}, 6365 { {0x1639fee7,0x7ab663d0,0xaf8a309b,0xbf754839,0xb474ecaf}, 6366 _bcm_rlink_cosq_pfc_deadlock_recovery_event_unregister_handler}, 6367 { {0x167de67a,0x4556a271,0xdc2c824a,0x9422f096,0x666e0a05}, 6368 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_ingress_traverse_handler)}, 6369 { {0x180b66f7,0xe9303243,0x081b9c56,0xb35e6163,0xb6ae99df}, 6370 _bcm_rlink_tsn_mtu_profile_traverse_handler}, 6371 { {0x1d2f1ea4,0xe2d4a29a,0x5e48b834,0xf3e30cd0,0xe11a1ff4}, 6372 _bcm_rlink_fcoe_vsan_traverse_handler}, 6373 { {0x1e5b3d1b,0xf70617f9,0x6ca206fc,0xbd060cf5,0xaed7dd12}, 6374 _bcm_rlink_multicast_encap_extension_traverse_handler}, 6375 { {0x1f2a7e12,0x01c0b8f5,0x95eb51d6,0x1fa69a8e,0x1c53704a}, 6376 _bcm_rlink_switch_olp_l2_addr_traverse_handler}, 6377 { {0x1fc89dd9,0xc16c9083,0x4aeb7b35,0x1b8d0c83,0x4f104003}, 6378 _bcm_rlink_vlan_translate_range_traverse_handler}, 6379 { {0x200a12ad,0xfb7ad646,0x7aa9921e,0x58a58191,0xd601c631}, 6380 _bcm_rlink_cosq_tas_profile_traverse_handler}, 6381 { {0x220804c1,0xe673abd3,0x2cb44f01,0x617481d8,0x3592bf92}, 6382 _bcm_rlink_tsn_taf_gate_max_bytes_profile_traverse_handler}, 6383 { {0x22876dbb,0x559c93df,0x84dcc649,0x6d3fe0ae,0x14dbec70}, 6384 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_multipath_traverse_handler)}, 6385 { {0x23b0dc69,0x3a9bee91,0x30cb05d4,0x7dc2246d,0x09b7ad84}, 6386 _bcm_rlink_fabric_qsel_offset_traverse_handler}, 6387 { {0x24111cc8,0x7879b2b9,0x05585e2b,0x1611ffa2,0x92bdc4f3}, 6388 _bcm_rlink_switch_hash_entry_traverse_handler}, 6389 { {0x2428b5d0,0x909f54aa,0xf64a8cee,0x9b352323,0x7e3273ef}, 6390 _bcm_rlink_fabric_qsel_traverse_handler}, 6391 { {0x295c9feb,0x8c75e357,0x8c42628e,0x49db7cf4,0x39540b43}, 6392 _bcm_rlink_fabric_qsel_entry_traverse_handler}, 6393 { {0x2d222e96,0x2f3ca059,0x8b18e874,0xa3c14190,0xf4512a5b}, 6394 _bcm_rlink_vlan_translate_egress_traverse_handler}, 6395 { {0x31fa6e34,0xacb376f6,0xc54b4087,0xf40b84c4,0x11d6c6d8}, 6396 _bcm_rlink_vlan_translate_action_range_traverse_handler}, 6397 { {0x36115c4e,0x15b39040,0xea52c661,0x326f8213,0x13b775b1}, 6398 _bcm_rlink_subport_port_traverse_handler}, 6399 { {0x39c117c2,0x6bf312a0,0xacf86abd,0x666c2f12,0x5044bbb8}, 6400 _bcm_rlink_sat_gtf_traverse_handler}, 6401 { {0x3abb9ca2,0x9b9849d1,0x3fa6df34,0x889a975e,0xf18da8c9}, 6402 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_route_traverse_handler)}, 6403 { {0x3c49f0f4,0xc84b0c8c,0x666ee956,0xd8e60b14,0x1dfedb8f}, 6404 _bcm_rlink_cosq_gport_traverse_by_port_handler}, 6405 { {0x3e5a5367,0xd7207b54,0x4aeac8c6,0x13cc01c5,0xb2b2c801}, 6406 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_extender_forward_traverse_handler)}, 6407 { {0x3fde7d72,0x13dca9fb,0x26a6e5f6,0x808ef4a4,0x0b11388b}, 6408 _bcm_rlink_fcoe_zone_traverse_handler}, 6409 { {0x4318345d,0xb11fb2ee,0xbbb9d365,0x1654c88a,0x81e3f8b0}, 6410 _bcm_rlink_trunk_resilient_traverse_handler}, 6411 { {0x45431813,0x968e724f,0x056b3aa5,0xb5103248,0x701ce63a}, 6412 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_vpn_traverse_handler)}, 6413 { {0x46a4972e,0x92ec830b,0x9b8f6d89,0x04fc1820,0x272f503f}, 6414 _bcm_rlink_ipfix_rate_traverse_handler}, 6415 { {0x49d835d6,0xa0e649e4,0xe5ccb8a1,0x5528cc10,0x2111ef4a}, 6416 _bcm_rlink_vswitch_port_traverse_handler}, 6417 { {0x4e505a92,0x21e818f4,0x37e0072f,0xd5c79292,0x4a7a67a2}, 6418 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l2gre_tunnel_terminator_traverse_handler)}, 6419 { {0x4f0ed9d0,0xcfb08fd5,0xeb8b186d,0x18747c5a,0xd8d03ebb}, 6420 _bcm_rlink_tsn_sr_flowset_traverse_handler}, 6421 { {0x532bf474,0x5fc8a40c,0x05cfbef4,0x927b5787,0x09fc1173}, 6422 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mim_vpn_traverse_handler)}, 6423 { {0x54c718ae,0xf3af5ae9,0x5704faf4,0xc93439fc,0xfb810d3c}, 6424 _bcm_rlink_switch_match_config_traverse_handler}, 6425 { {0x5662fadf,0xfce47da3,0x34b7cd10,0xec6b5a16,0x9f0c27e7}, 6426 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_tunnel_terminator_traverse_handler)}, 6427 { {0x5930b6da,0xe0ea0015,0x7ec8c0bd,0xe95b013f,0x856bac4c}, 6428 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l2gre_tunnel_initiator_traverse_handler)}, 6429 { {0x5ab66d8d,0x122fdf0c,0x33bd285e,0x1f8c56ed,0x1ad886d3}, 6430 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_traverse_handler)}, 6431 { {0x5cff6bd0,0x7fcf8106,0x1aae4f3a,0x7923c677,0x16fe5011}, 6432 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_port_traverse_handler)}, 6433 { {0x609d585a,0x28d1d4b4,0x9dafcc73,0x0600d68f,0x56fdedd2}, 6434 _bcm_rlink_multicast_group_traverse_handler}, 6435 { {0x60a22b31,0x6ec6ca4f,0xe1b0ce78,0xee3264b2,0x1e544bd4}, 6436 _bcm_rlink_l2_traverse_handler}, 6437 { {0x6143b6b2,0xb17fc08a,0x6767beb2,0xf24d5859,0x290180ab}, 6438 _bcm_rlink_tsn_stat_group_traverse_handler}, 6439 { {0x61c3ab33,0xa8a60460,0xb2413345,0xf7c9766c,0xa8184f60}, 6440 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_ecmp_traverse_handler)}, 6441 { {0x625ac1ae,0x1e171eed,0x7c4ca017,0xb3911667,0x19dc3de2}, 6442 _bcm_rlink_port_e2efc_remote_port_traverse_handler}, 6443 { {0x6342aa9d,0x9a80546b,0x35413215,0x38d202c1,0x3a737e17}, 6444 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_tunnel_initiator_traverse_handler)}, 6445 { {0x6365cc98,0x3ed346b9,0xb1dbab1e,0x854a8e1a,0xcd7c7c72}, 6446 BCM_TRAVERSE_IFDEF_INCLUDE_PSTATS(_bcm_rlink_pstats_session_traverse_handler)}, 6447 { {0x6592817f,0x1f32e355,0x63c422f7,0x858785d7,0x09be07db}, 6448 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_encap_traverse_handler)}, 6449 { {0x65fa4078,0x7c353975,0xc28647e2,0x1d35a278,0xcbaeef5d}, 6450 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_host_traverse_handler)}, 6451 { {0x68c7882c,0xe66787f9,0xa4e9df2e,0xa8f2bbfd,0xa2ca63d0}, 6452 _bcm_rlink_tsn_stu_profile_traverse_handler}, 6453 { {0x68d48889,0x8916263e,0x15cff8b5,0x9c8d6abd,0x9c994231}, 6454 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_port_traverse_handler)}, 6455 { {0x6994f48d,0x4364f04f,0x0c31cf30,0x5487894a,0xccc734a1}, 6456 _bcm_rlink_vlan_translate_action_traverse_handler}, 6457 { {0x69af71dc,0x705dd0c4,0xc00705b8,0xdbe5a092,0xcb22060f}, 6458 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_large_nat_egress_traverse_handler)}, 6459 { {0x69e11ce7,0x630dfe6f,0x2da8206d,0x0a0a6755,0x3b399ed8}, 6460 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_trill_multicast_entry_traverse_handler)}, 6461 { {0x69fc19ed,0x68010f28,0x70232e07,0x2eeeabff,0xa011f87a}, 6462 _bcm_rlink_srv6_srh_base_initiator_traverse_handler}, 6463 { {0x6a3fbfcb,0xaac26c81,0x912cc039,0xd1e3b258,0x1bbb6998}, 6464 _bcm_rlink_tsn_flowset_traverse_handler}, 6465 { {0x6e067c6f,0xe832c80e,0x240868d6,0x83302b31,0x92c7a1e7}, 6466 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_ecmp_traverse_handler)}, 6467 { {0x6f855f85,0xc253d521,0x5ff55969,0x292ea278,0x2eaf6d1a}, 6468 _bcm_rlink_switch_agm_traverse_handler}, 6469 { {0x77e30c28,0x25d0aaae,0x75a81f9c,0x5c9b3b00,0xbe3e9473}, 6470 _bcm_rlink_port_resource_traverse_handler}, 6471 { {0x7adcf05c,0x6704b5d0,0xa4ff5095,0x94ddc9a4,0x444131f9}, 6472 _bcm_rlink_tsn_taf_profile_traverse_handler}, 6473 { {0x7e9ac770,0xd851ab92,0x9977eecf,0x07c509f4,0xe57e5cd0}, 6474 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_extender_port_traverse_handler)}, 6475 { {0x7eaa044b,0x4739ff12,0x82703193,0x8bc6a763,0x26eb7aae}, 6476 _bcm_rlink_cosq_subscriber_traverse_handler}, 6477 { {0x80bebbc6,0xcb5a54a4,0x2bc78daf,0x113e0d8a,0xd27d16de}, 6478 _bcm_rlink_switch_match_control_traverse_handler}, 6479 { {0x80c0e350,0x5cd52793,0x173df485,0x1605f02d,0x0fdbd644}, 6480 _bcm_rlink_flowtracker_check_traverse_handler}, 6481 { {0x81ba6960,0x4e9f9b8c,0x175b3bce,0x258ff077,0x15cd6d66}, 6482 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_match_traverse_handler)}, 6483 { {0x84d3139b,0x63882899,0x779a64f2,0x780bebd5,0x7c6293da}, 6484 _bcm_rlink_oam_endpoint_traverse_handler}, 6485 { {0x88111dac,0x1ce4379e,0x766185dc,0x29da72fa,0x0ca81746}, 6486 _bcm_rlink_tsn_pri_map_traverse_handler}, 6487 { {0x8df4de24,0x870eff37,0x3dbbc488,0xe796f10d,0xfed2907b}, 6488 _bcm_rlink_tsn_taf_gate_traverse_handler}, 6489 { {0x90aa59df,0x23e558c0,0x152679e9,0xbfdc8a62,0x05e3ca52}, 6490 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_tunnel_initiator_traverse_handler)}, 6491 { {0x916f158c,0xfaf8a47f,0x119d86f8,0x00e0d93d,0xb225bc67}, 6492 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vlan_vpn_traverse_handler)}, 6493 { {0x9463324c,0x9c4abd42,0xd58d3258,0x97c563e2,0xb4754ba3}, 6494 _bcm_rlink_vlan_dtag_traverse_handler}, 6495 { {0x96580783,0xa3e28103,0x555bbfc9,0x7467e2d9,0x940e4740}, 6496 _bcm_rlink_tsn_sr_auto_learn_group_traverse_handler}, 6497 { {0x97881531,0x3f638671,0x091072ca,0x638d7506,0xa71444d4}, 6498 BCM_TRAVERSE_IFDEF_INCLUDE_REGEX(_bcm_rlink_regex_session_traverse_handler)}, 6499 { {0x991de8b3,0xd507f533,0x79a88425,0x85992902,0xc42c48e8}, 6500 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_proxy_egress_traverse_handler)}, 6501 { {0x9b5315c0,0xb0c3eeb2,0x69dcd64b,0x615311d9,0x84425616}, 6502 _bcm_rlink_fabric_predicate_traverse_handler}, 6503 { {0x9b81a1e3,0x30e13ed8,0x2c88e0b6,0x806061d6,0x2d25b128}, 6504 _bcm_rlink_vlan_cross_connect_traverse_handler}, 6505 { {0x9e2f0a59,0x55f5b476,0x79588357,0x0d51da96,0x143c212f}, 6506 _bcm_rlink_vswitch_cross_connect_traverse_handler}, 6507 { {0x9ec5f6e7,0x2f479259,0xc3625b7f,0xc9630cc7,0x2b8f401f}, 6508 _bcm_rlink_l2_auth_traverse_handler}, 6509 { {0xa1121fdb,0x44050e85,0x65ebc921,0xb733a73a,0xf5017ada}, 6510 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_nat_egress_traverse_handler)}, 6511 { {0xa128eb0b,0xefa0c614,0x0584f855,0xfe95099e,0x95ad77ea}, 6512 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_wlan_client_traverse_handler)}, 6513 { {0xa3a533b9,0xba88c109,0xe886451e,0xaecc1c4b,0x8b0c3ad9}, 6514 _bcm_rlink_l2_matched_traverse_handler}, 6515 { {0xa3ed9bb5,0x865fc75a,0xa70b17e5,0x985c5995,0x70c760f8}, 6516 _bcm_rlink_vlan_mac_action_traverse_handler}, 6517 { {0xa56156d3,0xdbb5a53b,0xfe4e2003,0xd821e6e4,0x98fc5a69}, 6518 _bcm_rlink_range_traverse_handler}, 6519 { {0xa6b62e4d,0xf0357ad3,0x3eb5c1f8,0xc1112545,0xff607622}, 6520 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_vpn_traverse_handler)}, 6521 { {0xabd27cfb,0x948c6a65,0x086d4a58,0x4f1490e8,0x6e2aa45d}, 6522 _bcm_rlink_field_group_traverse_handler}, 6523 { {0xafff1cdc,0x187fb02c,0x1ad2b98b,0xdb01f81d,0x81afe9a7}, 6524 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_arp_traverse_handler)}, 6525 { {0xb00d7a12,0xfbe0dca1,0x4a6e8f4d,0xa249d050,0x792767aa}, 6526 _bcm_rlink_fabric_qsel_offset_entry_traverse_handler}, 6527 { {0xb1216e1d,0x9b30098f,0x773c692c,0x54c6ede0,0x51e7deff}, 6528 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_vpn_traverse_handler)}, 6529 { {0xb50c8de4,0x0eedad4b,0x4f656714,0x62ed3ed6,0xecbc999a}, 6530 _bcm_rlink_subport_group_traverse_handler}, 6531 { {0xb59cc366,0xe824ff05,0xe18f2431,0xb51aeeaf,0xc0300b33}, 6532 _bcm_rlink_sat_endpoint_traverse_handler}, 6533 { {0xb7ae1ea6,0x543b9c79,0x76ae9868,0x5e33c02a,0x35e1b661}, 6534 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_network_domain_config_traverse_handler)}, 6535 { {0xb7e7bce3,0xf36ec46a,0x4b1c9ac0,0x8c196613,0x6f327905}, 6536 _bcm_rlink_time_interface_traverse_handler}, 6537 { {0xb8c6c76d,0x66647c41,0xaaf33868,0x35da5d0a,0x53e675bb}, 6538 _bcm_rlink_l2_egress_traverse_handler}, 6539 { {0xb940a220,0x44e0c1bd,0x9bfd9616,0xb95430c3,0xdeef329e}, 6540 _bcm_rlink_instru_sflow_encap_traverse_handler}, 6541 { {0xbb048347,0xb06d97d6,0x2f20eb36,0x1210bd53,0x94bde811}, 6542 _bcm_rlink_port_e2efc_remote_module_traverse_handler}, 6543 { {0xbc51e59b,0x398a74d7,0x01f51080,0x586f40a7,0xd7b07863}, 6544 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_tunnel_initiator_traverse_handler)}, 6545 { {0xbf99b390,0xccf9cdce,0x076e8030,0xc9b9472f,0xa9e73130}, 6546 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_ecmp_resilient_traverse_handler)}, 6547 { {0xc038f065,0x286397f6,0x1f0e0f9f,0x14fa6f62,0x9a03a75f}, 6548 _bcm_rlink_srv6_sid_initiator_traverse_handler}, 6549 { {0xc0d84a55,0xb28f41a5,0xa3f7be33,0x6c24dde9,0x98e0eccb}, 6550 _bcm_rlink_oam_group_traverse_handler}, 6551 { {0xc13ddf2f,0xfb47b82d,0x4cda9795,0xc016496d,0xd6ec48fd}, 6552 _bcm_rlink_vlan_translate_egress_action_traverse_handler}, 6553 { {0xc5c947cb,0xcb5fa2e9,0x62b91776,0x5327848f,0x5208fc54}, 6554 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_wlan_port_traverse_handler)}, 6555 { {0xcab468f9,0x4a3c978a,0xbf3eaad3,0x341f8494,0x05609c55}, 6556 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_entropy_identifier_traverse_handler)}, 6557 { {0xcdd16376,0x9b8ac79f,0xd0b2074a,0x456f0101,0xb667687c}, 6558 _bcm_rlink_cosq_gport_traverse_handler}, 6559 { {0xd01b170f,0x66e58955,0x4064f80a,0x826a4128,0xf782776c}, 6560 _bcm_rlink_hash_flex_bin_traverse_handler}, 6561 { {0xd09547e4,0x74756cf0,0x892ce5f5,0x73a3ea6c,0xff536521}, 6562 _bcm_rlink_fabric_action_traverse_handler}, 6563 { {0xd106a109,0x33252c67,0xeffc9ac7,0xeb61d6ab,0xe1ee8754}, 6564 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_esi_encap_traverse_handler)}, 6565 { {0xd2779d49,0xa91716ef,0xd4db8d97,0x5419c650,0xceaaa2c9}, 6566 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_source_bind_traverse_handler)}, 6567 { {0xd28cc963,0xe38b1845,0xd4394a78,0xc171d148,0x12286049}, 6568 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_nat_ingress_traverse_handler)}, 6569 { {0xd7f837b9,0x3137bb6c,0x5c83172d,0xbb3e07ae,0x4819091d}, 6570 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_tunnel_terminator_config_traverse_handler)}, 6571 { {0xdc9f2dc6,0x4d998332,0x5fc5f44a,0x0e5fdb8a,0x94bfcb4f}, 6572 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_special_label_egress_traverse_handler)}, 6573 { {0xdcd8d11e,0x2fee11c8,0xfdc6b378,0x9fefee8c,0x8980f333}, 6574 _bcm_rlink_mirror_destination_traverse_handler}, 6575 { {0xde6fc490,0xd1e7d3b8,0xe1d03dce,0x19d24374,0x3045a319}, 6576 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_tunnel_terminator_traverse_handler)}, 6577 { {0xde7d15e2,0x10c7b82d,0x3bb91dba,0xbec325f2,0x41ca999f}, 6578 _bcm_rlink_oam_pm_profile_traverse_handler}, 6579 { {0xdff5e37c,0x63f8f445,0x7eb5490d,0xae8f690c,0x87f6eec7}, 6580 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_niv_forward_traverse_handler)}, 6581 { {0xe0d937aa,0xd45dd961,0xb9e1228d,0x865531fc,0x3feb0e69}, 6582 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l2_change_fields_traverse_handler)}, 6583 { {0xe34b222d,0x1face4cc,0x3db24490,0x4bba330f,0xff39899d}, 6584 _bcm_rlink_sat_ctf_traverse_handler}, 6585 { {0xe3e74fd8,0x96476661,0x8047f5a8,0x117c2bbf,0xeabeaf58}, 6586 _bcm_rlink_fabric_predicate_action_traverse_handler}, 6587 { {0xe6204f0c,0xea05a511,0xd03ba466,0xf71764f3,0xac36ba33}, 6588 _bcm_rlink_vlan_port_traverse_handler}, 6589 { {0xe62643c8,0x8af78de7,0x9b5abb3c,0x5831fc7b,0x4ef6b3bc}, 6590 _bcm_rlink_l2_mac_port_traverse_handler}, 6591 { {0xe6cd13ba,0x125638c6,0xbbe75b93,0x7e25925e,0x0d8b8c42}, 6592 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_ipmc_traverse_handler)}, 6593 { {0xe76f5992,0xa18b68ba,0xb5525608,0xd7662cc2,0xaab28c2f}, 6594 _bcm_rlink_srv6_terminator_next_protocol_traverse_handler}, 6595 { {0xe78321d1,0x5f8959d3,0x6b5dc068,0x3bd16a35,0x8fa5673f}, 6596 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_tunnel_switch_traverse_handler)}, 6597 { {0xebac6b51,0x4b5e8c2d,0xfd8326cf,0x1e467ef5,0x97a852bd}, 6598 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_tunnel_terminator_traverse_handler)}, 6599 { {0xecace45d,0x604f598a,0x2bd096c2,0x08717feb,0x18c78766}, 6600 _bcm_rlink_vlan_dtag_range_traverse_handler}, 6601 { {0xef0ba6f2,0x2f1be987,0xd6790ddb,0xc641032e,0x477b06a0}, 6602 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_trill_vpn_traverse_handler)}, 6603 { {0xefbb89d5,0x4a559662,0xde80ed51,0x4c007b8f,0x0974bb66}, 6604 _bcm_rlink_vlan_ip_action_traverse_handler}, 6605 { {0xf016ce91,0xe1f3dfdd,0xcc2bf4a3,0x8d6c6965,0x051ef3b5}, 6606 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_extender_encap_traverse_handler)}, 6607 { {0xf1700d39,0x5240c888,0x4932cc67,0xdfa88306,0x7424edf3}, 6608 _bcm_rlink_policer_traverse_handler}, 6609 { {0xf3c794d4,0xc30aaa9f,0x492a6eba,0x858f6aad,0x44f84b93}, 6610 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_special_label_identifier_traverse_handler)}, 6611 { {0xf576f989,0xe875babe,0xdc063963,0xedd55a31,0xd47ff86a}, 6612 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_niv_port_traverse_handler)}, 6613 { {0xf63a1f4c,0x0d11b393,0x15cafbf8,0x26cecae7,0x1d2c0b99}, 6614 _bcm_rlink_tsn_taf_cosq_mapping_profile_traverse_handler}, 6615 { {0xfe921663,0x6c99629c,0x9a58724c,0x95e40429,0xd6a94df4}, 6616 _bcm_rlink_switch_encap_traverse_handler}, 6617 #else /* BCM_RPC_PBMP_64 */ 6618 { {0x05e54e9f,0xdb836cfa,0xe46d5689,0x89bcfb19,0xff0ee886}, 6619 _bcm_rlink_vlan_port_protocol_action_traverse_handler}, 6620 { {0x0640d32f,0x4f1e5c31,0xcdf1e172,0xae1e6445,0x9ce22c65}, 6621 _bcm_rlink_vlan_translate_traverse_handler}, 6622 { {0x08f576a7,0x7bddad71,0xdc08b493,0x2359ce15,0x9ba1b582}, 6623 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_trill_multicast_source_traverse_handler)}, 6624 { {0x0a03a8c6,0x354d3590,0xb61e4c9d,0x23e091c7,0xcc467be9}, 6625 _bcm_rlink_cosq_pfc_deadlock_recovery_event_register_handler}, 6626 { {0x0a1e5cfa,0x9f4444e7,0xb2958c32,0x3a17c284,0x98f9394a}, 6627 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l2gre_vpn_traverse_handler)}, 6628 { {0x0a2abfad,0xb9ef458a,0xd9875a99,0x33e667b4,0xd1a36089}, 6629 _bcm_rlink_l2_station_traverse_handler}, 6630 { {0x0ac4451b,0x1b679cf5,0xc07134b4,0xf9190f9a,0x404d3762}, 6631 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_trill_multicast_adjacency_traverse_handler)}, 6632 { {0x11322c75,0x2183e25c,0xb7faf1de,0xd2fce25e,0xc650a0b5}, 6633 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_tunnel_initiator_traverse_handler)}, 6634 { {0x11f430d4,0x77be922f,0xe6ae6c0c,0x93c6aad5,0xbe032cc2}, 6635 _bcm_rlink_fcoe_route_traverse_handler}, 6636 { {0x13d58d97,0x0d995f47,0xa89f8451,0x6c40eab3,0x5d749ca9}, 6637 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_vpbr_traverse_handler)}, 6638 { {0x1639fee7,0x7ab663d0,0xaf8a309b,0xbf754839,0xb474ecaf}, 6639 _bcm_rlink_cosq_pfc_deadlock_recovery_event_unregister_handler}, 6640 { {0x167de67a,0x4556a271,0xdc2c824a,0x9422f096,0x666e0a05}, 6641 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_ingress_traverse_handler)}, 6642 { {0x180b66f7,0xe9303243,0x081b9c56,0xb35e6163,0xb6ae99df}, 6643 _bcm_rlink_tsn_mtu_profile_traverse_handler}, 6644 { {0x1d2f1ea4,0xe2d4a29a,0x5e48b834,0xf3e30cd0,0xe11a1ff4}, 6645 _bcm_rlink_fcoe_vsan_traverse_handler}, 6646 { {0x1e5b3d1b,0xf70617f9,0x6ca206fc,0xbd060cf5,0xaed7dd12}, 6647 _bcm_rlink_multicast_encap_extension_traverse_handler}, 6648 { {0x1f2a7e12,0x01c0b8f5,0x95eb51d6,0x1fa69a8e,0x1c53704a}, 6649 _bcm_rlink_switch_olp_l2_addr_traverse_handler}, 6650 { {0x1fc89dd9,0xc16c9083,0x4aeb7b35,0x1b8d0c83,0x4f104003}, 6651 _bcm_rlink_vlan_translate_range_traverse_handler}, 6652 { {0x200a12ad,0xfb7ad646,0x7aa9921e,0x58a58191,0xd601c631}, 6653 _bcm_rlink_cosq_tas_profile_traverse_handler}, 6654 { {0x220804c1,0xe673abd3,0x2cb44f01,0x617481d8,0x3592bf92}, 6655 _bcm_rlink_tsn_taf_gate_max_bytes_profile_traverse_handler}, 6656 { {0x22876dbb,0x559c93df,0x84dcc649,0x6d3fe0ae,0x14dbec70}, 6657 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_multipath_traverse_handler)}, 6658 { {0x23b0dc69,0x3a9bee91,0x30cb05d4,0x7dc2246d,0x09b7ad84}, 6659 _bcm_rlink_fabric_qsel_offset_traverse_handler}, 6660 { {0x24111cc8,0x7879b2b9,0x05585e2b,0x1611ffa2,0x92bdc4f3}, 6661 _bcm_rlink_switch_hash_entry_traverse_handler}, 6662 { {0x2428b5d0,0x909f54aa,0xf64a8cee,0x9b352323,0x7e3273ef}, 6663 _bcm_rlink_fabric_qsel_traverse_handler}, 6664 { {0x295c9feb,0x8c75e357,0x8c42628e,0x49db7cf4,0x39540b43}, 6665 _bcm_rlink_fabric_qsel_entry_traverse_handler}, 6666 { {0x2d222e96,0x2f3ca059,0x8b18e874,0xa3c14190,0xf4512a5b}, 6667 _bcm_rlink_vlan_translate_egress_traverse_handler}, 6668 { {0x31fa6e34,0xacb376f6,0xc54b4087,0xf40b84c4,0x11d6c6d8}, 6669 _bcm_rlink_vlan_translate_action_range_traverse_handler}, 6670 { {0x36115c4e,0x15b39040,0xea52c661,0x326f8213,0x13b775b1}, 6671 _bcm_rlink_subport_port_traverse_handler}, 6672 { {0x39c117c2,0x6bf312a0,0xacf86abd,0x666c2f12,0x5044bbb8}, 6673 _bcm_rlink_sat_gtf_traverse_handler}, 6674 { {0x3abb9ca2,0x9b9849d1,0x3fa6df34,0x889a975e,0xf18da8c9}, 6675 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_route_traverse_handler)}, 6676 { {0x3c49f0f4,0xc84b0c8c,0x666ee956,0xd8e60b14,0x1dfedb8f}, 6677 _bcm_rlink_cosq_gport_traverse_by_port_handler}, 6678 { {0x3e5a5367,0xd7207b54,0x4aeac8c6,0x13cc01c5,0xb2b2c801}, 6679 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_extender_forward_traverse_handler)}, 6680 { {0x3fde7d72,0x13dca9fb,0x26a6e5f6,0x808ef4a4,0x0b11388b}, 6681 _bcm_rlink_fcoe_zone_traverse_handler}, 6682 { {0x4318345d,0xb11fb2ee,0xbbb9d365,0x1654c88a,0x81e3f8b0}, 6683 _bcm_rlink_trunk_resilient_traverse_handler}, 6684 { {0x45431813,0x968e724f,0x056b3aa5,0xb5103248,0x701ce63a}, 6685 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_vpn_traverse_handler)}, 6686 { {0x46a4972e,0x92ec830b,0x9b8f6d89,0x04fc1820,0x272f503f}, 6687 _bcm_rlink_ipfix_rate_traverse_handler}, 6688 { {0x49d835d6,0xa0e649e4,0xe5ccb8a1,0x5528cc10,0x2111ef4a}, 6689 _bcm_rlink_vswitch_port_traverse_handler}, 6690 { {0x4e505a92,0x21e818f4,0x37e0072f,0xd5c79292,0x4a7a67a2}, 6691 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l2gre_tunnel_terminator_traverse_handler)}, 6692 { {0x4f0ed9d0,0xcfb08fd5,0xeb8b186d,0x18747c5a,0xd8d03ebb}, 6693 _bcm_rlink_tsn_sr_flowset_traverse_handler}, 6694 { {0x532bf474,0x5fc8a40c,0x05cfbef4,0x927b5787,0x09fc1173}, 6695 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mim_vpn_traverse_handler)}, 6696 { {0x54c718ae,0xf3af5ae9,0x5704faf4,0xc93439fc,0xfb810d3c}, 6697 _bcm_rlink_switch_match_config_traverse_handler}, 6698 { {0x5662fadf,0xfce47da3,0x34b7cd10,0xec6b5a16,0x9f0c27e7}, 6699 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_tunnel_terminator_traverse_handler)}, 6700 { {0x5930b6da,0xe0ea0015,0x7ec8c0bd,0xe95b013f,0x856bac4c}, 6701 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l2gre_tunnel_initiator_traverse_handler)}, 6702 { {0x5ab66d8d,0x122fdf0c,0x33bd285e,0x1f8c56ed,0x1ad886d3}, 6703 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_traverse_handler)}, 6704 { {0x5cff6bd0,0x7fcf8106,0x1aae4f3a,0x7923c677,0x16fe5011}, 6705 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_port_traverse_handler)}, 6706 { {0x609d585a,0x28d1d4b4,0x9dafcc73,0x0600d68f,0x56fdedd2}, 6707 _bcm_rlink_multicast_group_traverse_handler}, 6708 { {0x60a22b31,0x6ec6ca4f,0xe1b0ce78,0xee3264b2,0x1e544bd4}, 6709 _bcm_rlink_l2_traverse_handler}, 6710 { {0x6143b6b2,0xb17fc08a,0x6767beb2,0xf24d5859,0x290180ab}, 6711 _bcm_rlink_tsn_stat_group_traverse_handler}, 6712 { {0x61c3ab33,0xa8a60460,0xb2413345,0xf7c9766c,0xa8184f60}, 6713 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_ecmp_traverse_handler)}, 6714 { {0x625ac1ae,0x1e171eed,0x7c4ca017,0xb3911667,0x19dc3de2}, 6715 _bcm_rlink_port_e2efc_remote_port_traverse_handler}, 6716 { {0x6342aa9d,0x9a80546b,0x35413215,0x38d202c1,0x3a737e17}, 6717 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_tunnel_initiator_traverse_handler)}, 6718 { {0x6365cc98,0x3ed346b9,0xb1dbab1e,0x854a8e1a,0xcd7c7c72}, 6719 BCM_TRAVERSE_IFDEF_INCLUDE_PSTATS(_bcm_rlink_pstats_session_traverse_handler)}, 6720 { {0x6592817f,0x1f32e355,0x63c422f7,0x858785d7,0x09be07db}, 6721 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_encap_traverse_handler)}, 6722 { {0x65fa4078,0x7c353975,0xc28647e2,0x1d35a278,0xcbaeef5d}, 6723 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_host_traverse_handler)}, 6724 { {0x68c7882c,0xe66787f9,0xa4e9df2e,0xa8f2bbfd,0xa2ca63d0}, 6725 _bcm_rlink_tsn_stu_profile_traverse_handler}, 6726 { {0x68d48889,0x8916263e,0x15cff8b5,0x9c8d6abd,0x9c994231}, 6727 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_port_traverse_handler)}, 6728 { {0x6994f48d,0x4364f04f,0x0c31cf30,0x5487894a,0xccc734a1}, 6729 _bcm_rlink_vlan_translate_action_traverse_handler}, 6730 { {0x69af71dc,0x705dd0c4,0xc00705b8,0xdbe5a092,0xcb22060f}, 6731 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_large_nat_egress_traverse_handler)}, 6732 { {0x69e11ce7,0x630dfe6f,0x2da8206d,0x0a0a6755,0x3b399ed8}, 6733 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_trill_multicast_entry_traverse_handler)}, 6734 { {0x69fc19ed,0x68010f28,0x70232e07,0x2eeeabff,0xa011f87a}, 6735 _bcm_rlink_srv6_srh_base_initiator_traverse_handler}, 6736 { {0x6a3fbfcb,0xaac26c81,0x912cc039,0xd1e3b258,0x1bbb6998}, 6737 _bcm_rlink_tsn_flowset_traverse_handler}, 6738 { {0x6e067c6f,0xe832c80e,0x240868d6,0x83302b31,0x92c7a1e7}, 6739 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_ecmp_traverse_handler)}, 6740 { {0x6f855f85,0xc253d521,0x5ff55969,0x292ea278,0x2eaf6d1a}, 6741 _bcm_rlink_switch_agm_traverse_handler}, 6742 { {0x77e30c28,0x25d0aaae,0x75a81f9c,0x5c9b3b00,0xbe3e9473}, 6743 _bcm_rlink_port_resource_traverse_handler}, 6744 { {0x7adcf05c,0x6704b5d0,0xa4ff5095,0x94ddc9a4,0x444131f9}, 6745 _bcm_rlink_tsn_taf_profile_traverse_handler}, 6746 { {0x7e9ac770,0xd851ab92,0x9977eecf,0x07c509f4,0xe57e5cd0}, 6747 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_extender_port_traverse_handler)}, 6748 { {0x7eaa044b,0x4739ff12,0x82703193,0x8bc6a763,0x26eb7aae}, 6749 _bcm_rlink_cosq_subscriber_traverse_handler}, 6750 { {0x80bebbc6,0xcb5a54a4,0x2bc78daf,0x113e0d8a,0xd27d16de}, 6751 _bcm_rlink_switch_match_control_traverse_handler}, 6752 { {0x80c0e350,0x5cd52793,0x173df485,0x1605f02d,0x0fdbd644}, 6753 _bcm_rlink_flowtracker_check_traverse_handler}, 6754 { {0x81ba6960,0x4e9f9b8c,0x175b3bce,0x258ff077,0x15cd6d66}, 6755 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_match_traverse_handler)}, 6756 { {0x8337bf80,0xf9c0065e,0xd49ac356,0x5bf4fb73,0x07303de9}, 6757 _bcm_rlink_l2_matched_traverse_handler}, 6758 { {0x84d3139b,0x63882899,0x779a64f2,0x780bebd5,0x7c6293da}, 6759 _bcm_rlink_oam_endpoint_traverse_handler}, 6760 { {0x88111dac,0x1ce4379e,0x766185dc,0x29da72fa,0x0ca81746}, 6761 _bcm_rlink_tsn_pri_map_traverse_handler}, 6762 { {0x8df4de24,0x870eff37,0x3dbbc488,0xe796f10d,0xfed2907b}, 6763 _bcm_rlink_tsn_taf_gate_traverse_handler}, 6764 { {0x90aa59df,0x23e558c0,0x152679e9,0xbfdc8a62,0x05e3ca52}, 6765 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_tunnel_initiator_traverse_handler)}, 6766 { {0x916f158c,0xfaf8a47f,0x119d86f8,0x00e0d93d,0xb225bc67}, 6767 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vlan_vpn_traverse_handler)}, 6768 { {0x9463324c,0x9c4abd42,0xd58d3258,0x97c563e2,0xb4754ba3}, 6769 _bcm_rlink_vlan_dtag_traverse_handler}, 6770 { {0x96580783,0xa3e28103,0x555bbfc9,0x7467e2d9,0x940e4740}, 6771 _bcm_rlink_tsn_sr_auto_learn_group_traverse_handler}, 6772 { {0x97881531,0x3f638671,0x091072ca,0x638d7506,0xa71444d4}, 6773 BCM_TRAVERSE_IFDEF_INCLUDE_REGEX(_bcm_rlink_regex_session_traverse_handler)}, 6774 { {0x991de8b3,0xd507f533,0x79a88425,0x85992902,0xc42c48e8}, 6775 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_proxy_egress_traverse_handler)}, 6776 { {0x9b5315c0,0xb0c3eeb2,0x69dcd64b,0x615311d9,0x84425616}, 6777 _bcm_rlink_fabric_predicate_traverse_handler}, 6778 { {0x9b81a1e3,0x30e13ed8,0x2c88e0b6,0x806061d6,0x2d25b128}, 6779 _bcm_rlink_vlan_cross_connect_traverse_handler}, 6780 { {0x9e2f0a59,0x55f5b476,0x79588357,0x0d51da96,0x143c212f}, 6781 _bcm_rlink_vswitch_cross_connect_traverse_handler}, 6782 { {0x9ec5f6e7,0x2f479259,0xc3625b7f,0xc9630cc7,0x2b8f401f}, 6783 _bcm_rlink_l2_auth_traverse_handler}, 6784 { {0xa1121fdb,0x44050e85,0x65ebc921,0xb733a73a,0xf5017ada}, 6785 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_nat_egress_traverse_handler)}, 6786 { {0xa128eb0b,0xefa0c614,0x0584f855,0xfe95099e,0x95ad77ea}, 6787 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_wlan_client_traverse_handler)}, 6788 { {0xa3ed9bb5,0x865fc75a,0xa70b17e5,0x985c5995,0x70c760f8}, 6789 _bcm_rlink_vlan_mac_action_traverse_handler}, 6790 { {0xa56156d3,0xdbb5a53b,0xfe4e2003,0xd821e6e4,0x98fc5a69}, 6791 _bcm_rlink_range_traverse_handler}, 6792 { {0xa6b62e4d,0xf0357ad3,0x3eb5c1f8,0xc1112545,0xff607622}, 6793 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_vpn_traverse_handler)}, 6794 { {0xabd27cfb,0x948c6a65,0x086d4a58,0x4f1490e8,0x6e2aa45d}, 6795 _bcm_rlink_field_group_traverse_handler}, 6796 { {0xafff1cdc,0x187fb02c,0x1ad2b98b,0xdb01f81d,0x81afe9a7}, 6797 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_arp_traverse_handler)}, 6798 { {0xb00d7a12,0xfbe0dca1,0x4a6e8f4d,0xa249d050,0x792767aa}, 6799 _bcm_rlink_fabric_qsel_offset_entry_traverse_handler}, 6800 { {0xb1216e1d,0x9b30098f,0x773c692c,0x54c6ede0,0x51e7deff}, 6801 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_vpn_traverse_handler)}, 6802 { {0xb50c8de4,0x0eedad4b,0x4f656714,0x62ed3ed6,0xecbc999a}, 6803 _bcm_rlink_subport_group_traverse_handler}, 6804 { {0xb59cc366,0xe824ff05,0xe18f2431,0xb51aeeaf,0xc0300b33}, 6805 _bcm_rlink_sat_endpoint_traverse_handler}, 6806 { {0xb7ae1ea6,0x543b9c79,0x76ae9868,0x5e33c02a,0x35e1b661}, 6807 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_network_domain_config_traverse_handler)}, 6808 { {0xb7e7bce3,0xf36ec46a,0x4b1c9ac0,0x8c196613,0x6f327905}, 6809 _bcm_rlink_time_interface_traverse_handler}, 6810 { {0xb8c6c76d,0x66647c41,0xaaf33868,0x35da5d0a,0x53e675bb}, 6811 _bcm_rlink_l2_egress_traverse_handler}, 6812 { {0xb940a220,0x44e0c1bd,0x9bfd9616,0xb95430c3,0xdeef329e}, 6813 _bcm_rlink_instru_sflow_encap_traverse_handler}, 6814 { {0xbb048347,0xb06d97d6,0x2f20eb36,0x1210bd53,0x94bde811}, 6815 _bcm_rlink_port_e2efc_remote_module_traverse_handler}, 6816 { {0xbc51e59b,0x398a74d7,0x01f51080,0x586f40a7,0xd7b07863}, 6817 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_vxlan_tunnel_initiator_traverse_handler)}, 6818 { {0xbf99b390,0xccf9cdce,0x076e8030,0xc9b9472f,0xa9e73130}, 6819 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_egress_ecmp_resilient_traverse_handler)}, 6820 { {0xc038f065,0x286397f6,0x1f0e0f9f,0x14fa6f62,0x9a03a75f}, 6821 _bcm_rlink_srv6_sid_initiator_traverse_handler}, 6822 { {0xc0d84a55,0xb28f41a5,0xa3f7be33,0x6c24dde9,0x98e0eccb}, 6823 _bcm_rlink_oam_group_traverse_handler}, 6824 { {0xc13ddf2f,0xfb47b82d,0x4cda9795,0xc016496d,0xd6ec48fd}, 6825 _bcm_rlink_vlan_translate_egress_action_traverse_handler}, 6826 { {0xc5c947cb,0xcb5fa2e9,0x62b91776,0x5327848f,0x5208fc54}, 6827 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_wlan_port_traverse_handler)}, 6828 { {0xcab468f9,0x4a3c978a,0xbf3eaad3,0x341f8494,0x05609c55}, 6829 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_entropy_identifier_traverse_handler)}, 6830 { {0xcdd16376,0x9b8ac79f,0xd0b2074a,0x456f0101,0xb667687c}, 6831 _bcm_rlink_cosq_gport_traverse_handler}, 6832 { {0xd01b170f,0x66e58955,0x4064f80a,0x826a4128,0xf782776c}, 6833 _bcm_rlink_hash_flex_bin_traverse_handler}, 6834 { {0xd09547e4,0x74756cf0,0x892ce5f5,0x73a3ea6c,0xff536521}, 6835 _bcm_rlink_fabric_action_traverse_handler}, 6836 { {0xd106a109,0x33252c67,0xeffc9ac7,0xeb61d6ab,0xe1ee8754}, 6837 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_esi_encap_traverse_handler)}, 6838 { {0xd2779d49,0xa91716ef,0xd4db8d97,0x5419c650,0xceaaa2c9}, 6839 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_source_bind_traverse_handler)}, 6840 { {0xd28cc963,0xe38b1845,0xd4394a78,0xc171d148,0x12286049}, 6841 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l3_nat_ingress_traverse_handler)}, 6842 { {0xd7f837b9,0x3137bb6c,0x5c83172d,0xbb3e07ae,0x4819091d}, 6843 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_tunnel_terminator_config_traverse_handler)}, 6844 { {0xdc9f2dc6,0x4d998332,0x5fc5f44a,0x0e5fdb8a,0x94bfcb4f}, 6845 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_special_label_egress_traverse_handler)}, 6846 { {0xdcd8d11e,0x2fee11c8,0xfdc6b378,0x9fefee8c,0x8980f333}, 6847 _bcm_rlink_mirror_destination_traverse_handler}, 6848 { {0xde6fc490,0xd1e7d3b8,0xe1d03dce,0x19d24374,0x3045a319}, 6849 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_flow_tunnel_terminator_traverse_handler)}, 6850 { {0xde7d15e2,0x10c7b82d,0x3bb91dba,0xbec325f2,0x41ca999f}, 6851 _bcm_rlink_oam_pm_profile_traverse_handler}, 6852 { {0xdff5e37c,0x63f8f445,0x7eb5490d,0xae8f690c,0x87f6eec7}, 6853 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_niv_forward_traverse_handler)}, 6854 { {0xe0d937aa,0xd45dd961,0xb9e1228d,0x865531fc,0x3feb0e69}, 6855 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_l2_change_fields_traverse_handler)}, 6856 { {0xe34b222d,0x1face4cc,0x3db24490,0x4bba330f,0xff39899d}, 6857 _bcm_rlink_sat_ctf_traverse_handler}, 6858 { {0xe3e74fd8,0x96476661,0x8047f5a8,0x117c2bbf,0xeabeaf58}, 6859 _bcm_rlink_fabric_predicate_action_traverse_handler}, 6860 { {0xe6204f0c,0xea05a511,0xd03ba466,0xf71764f3,0xac36ba33}, 6861 _bcm_rlink_vlan_port_traverse_handler}, 6862 { {0xe62643c8,0x8af78de7,0x9b5abb3c,0x5831fc7b,0x4ef6b3bc}, 6863 _bcm_rlink_l2_mac_port_traverse_handler}, 6864 { {0xe6cd13ba,0x125638c6,0xbbe75b93,0x7e25925e,0x0d8b8c42}, 6865 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_ipmc_traverse_handler)}, 6866 { {0xe76f5992,0xa18b68ba,0xb5525608,0xd7662cc2,0xaab28c2f}, 6867 _bcm_rlink_srv6_terminator_next_protocol_traverse_handler}, 6868 { {0xe78321d1,0x5f8959d3,0x6b5dc068,0x3bd16a35,0x8fa5673f}, 6869 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_tunnel_switch_traverse_handler)}, 6870 { {0xebac6b51,0x4b5e8c2d,0xfd8326cf,0x1e467ef5,0x97a852bd}, 6871 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_tunnel_terminator_traverse_handler)}, 6872 { {0xecace45d,0x604f598a,0x2bd096c2,0x08717feb,0x18c78766}, 6873 _bcm_rlink_vlan_dtag_range_traverse_handler}, 6874 { {0xef0ba6f2,0x2f1be987,0xd6790ddb,0xc641032e,0x477b06a0}, 6875 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_trill_vpn_traverse_handler)}, 6876 { {0xefbb89d5,0x4a559662,0xde80ed51,0x4c007b8f,0x0974bb66}, 6877 _bcm_rlink_vlan_ip_action_traverse_handler}, 6878 { {0xf016ce91,0xe1f3dfdd,0xcc2bf4a3,0x8d6c6965,0x051ef3b5}, 6879 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_extender_encap_traverse_handler)}, 6880 { {0xf1700d39,0x5240c888,0x4932cc67,0xdfa88306,0x7424edf3}, 6881 _bcm_rlink_policer_traverse_handler}, 6882 { {0xf3c794d4,0xc30aaa9f,0x492a6eba,0x858f6aad,0x44f84b93}, 6883 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_mpls_special_label_identifier_traverse_handler)}, 6884 { {0xf576f989,0xe875babe,0xdc063963,0xedd55a31,0xd47ff86a}, 6885 BCM_TRAVERSE_IFDEF_INCLUDE_L3(_bcm_rlink_niv_port_traverse_handler)}, 6886 { {0xf5ec06b5,0x2dd13ba9,0x061676c1,0x619a1933,0xae2fd4d2}, 6887 _bcm_rlink_l2_match_masked_traverse_handler}, 6888 { {0xf63a1f4c,0x0d11b393,0x15cafbf8,0x26cecae7,0x1d2c0b99}, 6889 _bcm_rlink_tsn_taf_cosq_mapping_profile_traverse_handler}, 6890 { {0xfe921663,0x6c99629c,0x9a58724c,0x95e40429,0xd6a94df4}, 6891 _bcm_rlink_switch_encap_traverse_handler}, 6892 #endif /* BCM_RPC_PBMP_64 */ 6893 }; 6894 6895 #endif /* BCM_RPC_SUPPORT */