openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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