trill.h (7652B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * This file contains TRILL definitions internal to the BCM library. 8 */ 9 10 #include <bcm/types.h> 11 #include <bcm/trill.h> 12 13 #ifndef _BCM_INT_TRILL_H 14 #define _BCM_INT_TRILL_H 15 16 #ifdef INCLUDE_L3 17 18 #define BCM_MAX_NUM_TRILL_TREES 16 19 20 #define BCM_TRILL_ACCESS_PORT 0x01 21 #define BCM_TRILL_NETWORK_PORT 0x02 22 #define _BCM_TRILL_PORT_MULTIPATH (1 << 30) /* Associated Multipath Next-hop */ 23 24 typedef struct _bcm_td_trill_multicast_count_s { 25 bcm_multicast_t l3mc_group; /* TRILL Domain Multicast Group */ 26 uint16 network_port_count; /* TRILL Port count */ 27 } _bcm_td_trill_multicast_count_t; 28 29 /* 30 * Software book keeping for Trill related information 31 */ 32 typedef struct _bcm_td_trill_bookkeeping_s { 33 int initialized; /* Set to TRUE when Trill module initialized */ 34 sal_mutex_t trill_mutex; /* Protection mutex. */ 35 bcm_trill_name_t rootBridge[BCM_MAX_NUM_TRILL_TREES]; /* Root Bridge Store */ 36 bcm_trill_name_t *rBridge; /* RBridges Store */ 37 _bcm_td_trill_multicast_count_t *multicast_count; /* Multicast Store */ 38 } _bcm_td_trill_bookkeeping_t; 39 40 extern _bcm_td_trill_bookkeeping_t *_bcm_td_trill_bk_info[BCM_MAX_NUM_UNITS]; 41 42 #define L2_TRILL_MEM_CHUNKS_DEFAULT 100 43 44 typedef struct _bcm_td_trill_multicast_entry_traverse_s { 45 bcm_trill_multicast_entry_traverse_cb user_cb; /* User callback function */ 46 void *user_data; /* Data provided by the user, cookie */ 47 }_bcm_td_trill_multicast_entry_traverse_t; 48 49 /* Generic memory allocation routine. */ 50 #define BCM_TD_TRILL_ALLOC(_ptr_,_size_,_descr_) \ 51 do { \ 52 if ((NULL == (_ptr_))) { \ 53 _ptr_ = sal_alloc((_size_),(_descr_)); \ 54 } \ 55 if((_ptr_) != NULL) { \ 56 sal_memset((_ptr_), 0, (_size_)); \ 57 } \ 58 } while (0) 59 60 #ifdef BCM_WARM_BOOT_SUPPORT 61 extern int _bcm_esw_trill_sync(int unit); 62 #endif /* BCM_WARM_BOOT_SUPPORT */ 63 #ifndef BCM_SW_STATE_DUMP_DISABLE 64 extern void _bcm_td_trill_sw_dump(int unit); 65 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 66 extern int _bcm_esw_trill_trunk_member_add(int unit, bcm_trunk_t trunk_id, 67 int trunk_member_count, bcm_port_t *trunk_member_array) ; 68 extern int _bcm_esw_trill_trunk_member_delete(int unit, bcm_trunk_t trunk_id, 69 int trunk_member_count, bcm_port_t *trunk_member_array); 70 void bcm_td_trill_tree_profile_get (int unit, bcm_trill_name_t trill_name, 71 uint8 *trill_tree_profile_idx); 72 void bcm_td_trill_root_name_get (int unit, uint8 trill_tree_profile_idx, bcm_trill_name_t *trill_name); 73 74 #if (defined(BCM_TRIDENT_SUPPORT) || defined(BCM_TRIUMPH3_SUPPORT)) 75 extern int bcm_td_trill_tpid_add(int unit, bcm_gport_t port, int tpid_idx); 76 extern int bcm_td_trill_tpid_set(int unit, bcm_gport_t port, int tpid_idx); 77 extern int bcm_td_trill_tpid_get(int unit, bcm_gport_t port, int *tpid_idx); 78 extern int bcm_td_trill_tpid_delete(int unit, bcm_gport_t port, int tpid_idx); 79 #endif 80 81 #if defined(BCM_TRIUMPH3_SUPPORT) 82 extern int _bcm_tr3_trill_transit_entry_set(int unit, 83 bcm_trill_port_t *trill_port,int nh_ecmp_index); 84 extern int _bcm_tr3_trill_transit_entry_reset(int unit, int vp, 85 int nh_ecmp_idx, int ecmp); 86 extern int _bcm_tr3_trill_learn_entry_set(int unit, 87 bcm_trill_port_t *trill_port, int vp); 88 extern int _bcm_tr3_trill_learn_entry_reset(int unit, int vp); 89 extern int _bcm_tr3_trill_decap_entry_set(int unit, 90 bcm_trill_port_t *trill_port); 91 extern int bcm_tr3_trill_multicast_transit_entry_get(int unit, 92 bcm_trill_name_t root_name, bcm_multicast_t *group); 93 extern int _bcm_tr3_trill_decap_entry_reset(int unit, int vp); 94 extern int bcm_tr3_trill_multicast_transit_entry_set(int unit, uint32 flags, 95 bcm_trill_name_t root_name, int mc_index, uint8 trill_tree_id); 96 extern int bcm_tr3_trill_multicast_transit_entry_reset(int unit, 97 bcm_trill_name_t root_name); 98 extern int bcm_tr3_trill_multicast_transit_entry_reset_all (int unit, 99 uint8 tree_id); 100 extern int bcm_tr3_trill_multicast_enable(int unit, int flags, bcm_trill_name_t root_name); 101 extern int bcm_tr3_trill_multicast_disable(int unit, int flags, bcm_trill_name_t root_name); 102 extern int bcm_tr3_trill_l2_multicast_entry_add(int unit, uint32 flags, int key, 103 bcm_vlan_t vid, bcm_mac_t mac, 104 uint8 trill_tree_id, bcm_multicast_t group); 105 extern int bcm_tr3_trill_l2_multicast_entry_update(int unit, int key, 106 bcm_vlan_t vid, bcm_mac_t mac, 107 uint8 trill_tree_id, bcm_multicast_t group); 108 extern int bcm_tr3_trill_vlan_multicast_entry_modify (int unit, bcm_vlan_t vlan, int set_bit); 109 extern int bcm_tr3_trill_l2_multicast_entry_delete(int unit, int key, bcm_vlan_t vid, 110 bcm_mac_t mac, uint8 trill_tree_id); 111 extern int bcm_tr3_trill_l2_multicast_entry_delete_all (int unit, uint8 tree_id); 112 extern int bcm_tr3_trill_l2_multicast_entry_get(int unit, int key, bcm_vlan_t vid, 113 bcm_mac_t mac, uint8 trill_tree_id, bcm_multicast_t *group); 114 extern int bcm_tr3_trill_l2_network_multicast_entry_traverse (int unit, _bcm_td_trill_multicast_entry_traverse_t *trav_st); 115 extern int bcm_tr3_trill_l2_access_multicast_entry_traverse (int unit, _bcm_td_trill_multicast_entry_traverse_t *trav_st); 116 extern int bcm_tr3_trill_unpruned_entry_traverse (int unit, _bcm_td_trill_multicast_entry_traverse_t *trav_st); 117 118 #endif /* BCM_TRIUMPH3_SUPPORT */ 119 120 #if defined(BCM_TRIDENT2_SUPPORT) 121 extern int bcm_td2_trill_l2_multicast_entry_add(int unit, uint32 flags, int key, 122 bcm_vlan_t vid, bcm_mac_t mac, 123 uint8 trill_tree_id, bcm_multicast_t group); 124 extern int bcm_td2_trill_vlan_multicast_entry_modify (int unit, bcm_vlan_t vlan, int set_bit); 125 extern int bcm_td2_trill_l2_multicast_entry_update(int unit, int key, 126 bcm_vlan_t vid, bcm_mac_t mac, 127 uint8 trill_tree_id, bcm_multicast_t group); 128 extern int bcm_td2_trill_l2_multicast_entry_delete(int unit, int key, bcm_vlan_t vid, 129 bcm_mac_t mac, uint8 trill_tree_id); 130 extern int bcm_td2_trill_l2_multicast_entry_delete_all (int unit, uint8 tree_id); 131 extern int bcm_td2_trill_l2_multicast_entry_get(int unit, int key, bcm_vlan_t vid, 132 bcm_mac_t mac, uint8 trill_tree_id, bcm_multicast_t *group); 133 extern int bcm_td2_trill_l2_network_multicast_entry_traverse (int unit, _bcm_td_trill_multicast_entry_traverse_t *trav_st); 134 extern int bcm_td2_trill_l2_access_multicast_entry_traverse (int unit, _bcm_td_trill_multicast_entry_traverse_t *trav_st); 135 136 #endif /* BCM_TRIDENT2_SUPPORT */ 137 138 #endif /* INCLUDE_L3 */ 139 #endif /* !_BCM_INT_TRILL_H */