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

oam_sw_db.h (9567B)


      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-2020 Broadcom Inc. All rights reserved.
      6  *
      7  * OAM SW DB
      8  */
      9 
     10 #ifndef _BCM_INT_DPP_OAM_SW_DB_H_
     11 #define _BCM_INT_DPP_OAM_SW_DB_H_
     12 
     13 #include <sal/types.h>
     14 #include <bcm/types.h>
     15 #include <bcm/oam.h>
     16 #include <bcm/bfd.h>
     17 #include <shared/hash_tbl.h>
     18 #include <shared/swstate/sw_state_hash_tbl.h>
     19 
     20 #include <soc/dpp/PPD/ppd_api_oam.h>
     21 #include <soc/dpp/PPC/ppc_api_oam.h>
     22 #include <soc/dpp/PPD/ppd_api_trap_mgmt.h>
     23 #include <soc/dpp/ARAD/ARAD_PP/arad_pp_dbal.h>
     24 #include <soc/dpp/ARAD/ARAD_PP/arad_pp_oam.h>
     25 
     26 
     27 #define BCMDNX_INIT_FUNC_DEFS_RMEP_INFO_DB_WITH_LOCK \
     28     BCMDNX_INIT_FUNC_DEFS;\
     29     if (sal_mutex_take(_bcm_dpp_oam_bfd_rmep_info_db_lock[unit].lock, sal_mutex_FOREVER)) { \
     30         BCMDNX_ERR_EXIT_MSG(BCM_E_INTERNAL, (_BSL_BCM_MSG("%s: sal_mutex_take failed for unit %d."), FUNCTION_NAME(), unit)); \
     31     }
     32 
     33 #define BCMDNX_FUNC_RETURN_RMEP_INFO_DB_WITH_UNLOCK   \
     34 do {\
     35     if (sal_mutex_give(_bcm_dpp_oam_bfd_rmep_info_db_lock[unit].lock)) { \
     36         BCMDNX_ERR_EXIT_MSG(BCM_E_INTERNAL, (_BSL_BCM_MSG("%s: sal_mutex_take failed for unit %d."), FUNCTION_NAME(), unit)); \
     37     } \
     38     BCMDNX_FUNC_RETURN;\
     39 }while (0) ;
     40 
     41 #define BCMDNX_INIT_FUNC_DEFS_WITH_MEP_INFO_LOCK \
     42     BCMDNX_INIT_FUNC_DEFS;\
     43     if (sal_mutex_take(_bcm_dpp_oam_bfd_mep_info_db_lock[unit].lock, sal_mutex_FOREVER)) { \
     44         BCMDNX_ERR_EXIT_MSG(BCM_E_INTERNAL, (_BSL_BCM_MSG("%s: sal_mutex_take failed for unit %d."), FUNCTION_NAME(), unit)); \
     45     }
     46 
     47 
     48 #define BCMDNX_FUNC_RETURN_WITH_MEP_INFO_UNLOCK \
     49     if (sal_mutex_give(_bcm_dpp_oam_bfd_mep_info_db_lock[unit].lock)) { \
     50         BCMDNX_ERR_EXIT_MSG(BCM_E_INTERNAL, (_BSL_BCM_MSG("%s: sal_mutex_take failed for unit %d."), FUNCTION_NAME(), unit)); \
     51     } \
     52     BCMDNX_FUNC_RETURN ;
     53 
     54 void _bcm_dpp_oam_htb_cast_key_f(sw_state_htb_key_t key, uint8 **key_bytes, uint32 *key_size);
     55 int _bcm_dpp_sw_db_hash_oam_ma_name_create(int unit);
     56 int _bcm_dpp_sw_db_hash_oam_ma_name_destroy(int unit);
     57 int _bcm_dpp_sw_db_hash_oam_ma_name_iterate(int unit, sw_state_htb_cb_t restore_cb);
     58 int _bcm_dpp_sw_db_hash_oam_ma_name_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove);
     59 int _bcm_dpp_sw_db_hash_oam_ma_name_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data);
     60 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_create(int unit);
     61 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_destroy(int unit);
     62 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_iterate(int unit, sw_state_htb_cb_t restore_cb);
     63 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove);
     64 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data);
     65 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_create(int unit);
     66 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_destroy(int unit);
     67 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_iterate(int unit, sw_state_htb_cb_t restore_cb);
     68 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data);
     69 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove);
     70 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_create(int unit);
     71 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_destroy(int unit);
     72 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_iterate(int unit, sw_state_htb_cb_t restore_cb);
     73 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove);
     74 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data);
     75 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_create(int unit);
     76 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_destroy(int unit);
     77 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_iterate(int unit, sw_state_htb_cb_t restore_cb);
     78 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove);
     79 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data);
     80 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_create(int unit);
     81 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_insert(int unit, uint32 endpoint_id, int ais_id);
     82 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_get(int unit, uint32 endpoint_id, int * ais_id, uint8 * num_found);
     83 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_delete_by_id(int unit, uint32 endpoint_id );
     84 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_destroy(int unit);
     85 int _bcm_dpp_oam_dbs_init(int unit, uint8 is_oam) ;
     86 int _bcm_dpp_oam_dbs_destroy(int unit, uint8 is_oam) ;
     87 
     88 
     89 int _bcm_dpp_oam_ma_db_delete_ma_cb(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data);
     90 int _bcm_dpp_oam_ma_db_insert(int unit, uint32 ma_index, _bcm_oam_ma_name_t * ma_name);
     91 int _bcm_dpp_oam_ma_db_get(int unit, uint32 ma_index, _bcm_oam_ma_name_t * ma_name, uint8 *found);
     92 int _bcm_dpp_oam_ma_db_delete(int unit, uint32 ma_index);
     93 int _bcm_dpp_oam_ma_to_mep_db_insert(int unit, uint32 ma_index, uint32 mep_index);
     94 int _bcm_dpp_oam_ma_to_mep_db_get(int unit, uint32 ma_index, ENDPOINT_LIST_PTR *mep_list, uint8* found);
     95 int _bcm_dpp_oam_ma_to_mep_db_mep_delete(int unit, uint32 ma_index, uint32 mep_index);
     96 
     97 int _bcm_dpp_oam_bfd_mep_info_db_insert_no_lock(int unit, uint32 mep_index, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * mep_info);
     98 int _bcm_dpp_oam_bfd_mep_info_db_insert(int unit, uint32 mep_index, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * mep_info);
     99 int _bcm_dpp_oam_bfd_mep_info_db_get(int unit, uint32 mep_index, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * mep_info, uint8 *found);
    100 int _bcm_dpp_oam_bfd_mep_info_db_delete_no_lock(int unit, uint32 mep_index);
    101 int _bcm_dpp_oam_bfd_mep_info_db_delete(int unit, uint32 mep_index);
    102 int _bcm_dpp_oam_bfd_mep_info_db_update(int unit, uint32 mep_index, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * mep_info);
    103 
    104 int _bcm_dpp_oam_bfd_mep_to_rmep_db_insert(int unit, uint32 mep_index, uint32 rmep_index);
    105 int _bcm_dpp_oam_bfd_mep_to_rmep_db_get(int unit, uint32 mep_index, ENDPOINT_LIST_PTR *rmep_list, uint8* found);
    106 int _bcm_dpp_oam_bfd_mep_to_rmep_db_mep_delete(int unit, uint32 mep_index);
    107 int _bcm_dpp_oam_bfd_mep_to_rmep_db_rmep_delete(int unit, uint32 mep_index, uint32 rmep_index);
    108 
    109 int _bcm_dpp_oam_sw_db_locks_init(int unit);
    110 int _bcm_dpp_oam_bfd_rmep_info_db_insert_no_lock(int unit, uint32 rmep_index, SOC_PPC_OAM_RMEP_INFO_DATA * rmep_info);
    111 int _bcm_dpp_oam_bfd_rmep_info_db_insert(int unit, uint32 rmep_index, SOC_PPC_OAM_RMEP_INFO_DATA * rmep_info);
    112 int _bcm_dpp_oam_bfd_rmep_info_db_get(int unit, uint32 rmep_index,  SOC_PPC_OAM_RMEP_INFO_DATA * rmep_info, uint8 *found);
    113 int _bcm_dpp_oam_bfd_rmep_info_db_delete_no_lock(int unit, uint32 rmep_index);
    114 int _bcm_dpp_oam_bfd_rmep_info_db_delete(int unit, uint32 rmep_index);
    115 int _bcm_dpp_oam_bfd_rmep_to_mep_db_update(int unit, uint32 rmep_index, SOC_PPC_OAM_RMEP_INFO_DATA * rmep_info );
    116 
    117 int _bcm_dpp_oam_sat_gtf_info_db_insert(int unit, uint32 gtf_id, SOC_PPC_OAM_SAT_GTF_ENTRY * gtf_info); 
    118 int _bcm_dpp_oam_sat_gtf_info_db_get(int unit, uint32 gtf_id, SOC_PPC_OAM_SAT_GTF_ENTRY * gtf_info, uint8 *found);
    119 int _bcm_dpp_oam_sat_gtf_info_db_delete(int unit, uint32 gtf_id); 
    120 int _bcm_dpp_oam_sat_gtf_info_db_update(int unit, uint32 gtf_id, SOC_PPC_OAM_SAT_GTF_ENTRY * gtf_info); 
    121 int _bcm_dpp_oam_sat_ctf_info_db_insert(int unit, uint32 ctf_id, SOC_PPC_OAM_SAT_CTF_ENTRY * ctf_info);
    122 int _bcm_dpp_oam_sat_ctf_info_db_get(int unit, uint32 ctf_id, SOC_PPC_OAM_SAT_CTF_ENTRY * ctf_info, uint8 *found);
    123 int _bcm_dpp_oam_sat_ctf_info_db_delete(int unit, uint32 ctf_id); 
    124 int _bcm_dpp_oam_sat_ctf_info_db_update(int unit, uint32 ctf_id, SOC_PPC_OAM_SAT_CTF_ENTRY * ctf_info);
    125 
    126 
    127 int _bcm_dpp_oam_endpoint_list_init(int unit, ENDPOINT_LIST_PTR *endpoint_list_ptr);
    128 int _bcm_dpp_oam_endpoint_list_set_member_index(int unit, ENDPOINT_LIST_MEMBER_PTR endpoint_list_member, uint32 index) ;
    129 int _bcm_dpp_oam_endpoint_list_get_member_index(int unit, ENDPOINT_LIST_MEMBER_PTR endpoint_list_member, uint32 *index_ptr) ;
    130 int _bcm_dpp_oam_endpoint_list_set_member_next(int unit, ENDPOINT_LIST_MEMBER_PTR endpoint_list_member, ENDPOINT_LIST_MEMBER_PTR next) ;
    131 int _bcm_dpp_oam_endpoint_list_get_member_next(int unit, ENDPOINT_LIST_MEMBER_PTR endpoint_list_member, ENDPOINT_LIST_MEMBER_PTR *index_ptr) ;
    132 int _bcm_dpp_oam_endpoint_list_set_first_member(int unit, ENDPOINT_LIST_PTR endpoint_list, ENDPOINT_LIST_MEMBER_PTR first_member) ;
    133 int _bcm_dpp_oam_endpoint_list_get_first_member(int unit, ENDPOINT_LIST_PTR endpoint_list, ENDPOINT_LIST_MEMBER_PTR *first_member_ptr) ;
    134 int _bcm_dpp_oam_endpoint_list_member_add(int unit, ENDPOINT_LIST_PTR endpoint_list, uint32 endpoint_index);
    135 int _bcm_dpp_oam_endpoint_list_member_add_after(
    136         int unit, ENDPOINT_LIST_PTR endpoint_list, uint32 endpoint_index,
    137         ENDPOINT_LIST_MEMBER_PTR specified_member, ENDPOINT_LIST_MEMBER_PTR *new_member_ptr) ;
    138 int _bcm_dpp_oam_endpoint_list_empty(int unit, ENDPOINT_LIST_PTR endpoint_list, int *is_empty);
    139 int _bcm_dpp_oam_endpoint_list_member_find(int unit, ENDPOINT_LIST_PTR endpoint_list, uint32 index, uint8 delete_endpoint, uint8 *found);
    140 int _bcm_dpp_oam_endpoint_list_destroy(int unit, ENDPOINT_LIST_PTR endpoint_list);
    141 int _bcm_dpp_oam_endpoint_list_deinit(int unit, ENDPOINT_LIST_PTR endpoint_list) ;
    142 
    143 int _bcm_dpp_am_template_oam_local_port_2_sys_port_entry_reserve(int unit, int local_port);
    144 int _bcm_dpp_am_template_oam_local_port_2_sys_port_entry_unreserve(int unit, int local_port);
    145 
    146 #endif /* _BCM_INT_DPP_OAM_SW_DB_H_ */
    147