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

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