switchlink_db_status_t switchlink_db_oifl_ref_inc(switchlink_handle_t oifl_h) { switchlink_db_oifl_obj_t *obj; obj = switchlink_db_handle_get_obj(oifl_h); if (!obj) { return SWITCHLINK_DB_STATUS_ITEM_NOT_FOUND; } assert(obj->ref_count >= 0); obj->ref_count++; return SWITCHLINK_DB_STATUS_SUCCESS; }
switchlink_db_status_t switchlink_db_ecmp_handle_get_info(switchlink_handle_t ecmp_h, switchlink_db_ecmp_info_t *ecmp_info) { switchlink_db_ecmp_obj_t * obj; obj = switchlink_db_handle_get_obj(ecmp_h); if (!obj) { return SWITCHLINK_DB_STATUS_ITEM_NOT_FOUND; } memcpy(ecmp_info, &(obj->ecmp_info), sizeof(switchlink_db_ecmp_info_t)); return SWITCHLINK_DB_STATUS_SUCCESS; }
switchlink_db_status_t switchlink_db_bridge_get_ifindex( switchlink_handle_t bridge_h, uint32_t *ifindex) { switchlink_db_bridge_obj_t *obj; obj = switchlink_db_handle_get_obj(bridge_h); if (!obj) { return SWITCHLINK_DB_STATUS_ITEM_NOT_FOUND; } *ifindex = obj->ifindex; return SWITCHLINK_DB_STATUS_SUCCESS; }
switchlink_db_status_t switchlink_db_oifl_handle_get_info( switchlink_handle_t oifl_h, switchlink_db_oifl_info_t *oifl_info) { switchlink_db_oifl_obj_t *obj; obj = switchlink_db_handle_get_obj(oifl_h); if (!obj) { return SWITCHLINK_DB_STATUS_ITEM_NOT_FOUND; } if (oifl_info) { memcpy(oifl_info, &(obj->oifl_info), sizeof(switchlink_db_oifl_info_t)); } return SWITCHLINK_DB_STATUS_SUCCESS; }
switchlink_db_status_t switchlink_db_oifl_delete(switchlink_handle_t oifl_h) { switchlink_db_oifl_obj_t *obj; obj = switchlink_db_handle_get_obj(oifl_h); if (!obj) { return SWITCHLINK_DB_STATUS_ITEM_NOT_FOUND; } assert(obj->ref_count == 0); tommy_trie_inplace_remove_existing(&switchlink_db_handle_obj_map, &obj->handle_node); tommy_list_remove_existing(&switchlink_db_oifl_obj_list, &obj->list_node); switchlink_free(obj); return SWITCHLINK_DB_STATUS_SUCCESS; }
switchlink_db_status_t switchlink_db_bridge_handle_get_info( switchlink_handle_t bridge_h, switchlink_db_bridge_info_t *bridge) { switchlink_db_bridge_obj_t *obj; obj = switchlink_db_handle_get_obj(bridge_h); if (!obj) { return SWITCHLINK_DB_STATUS_ITEM_NOT_FOUND; } if (bridge) { memcpy(bridge, &(obj->bridge), sizeof(switchlink_db_bridge_info_t)); } return SWITCHLINK_DB_STATUS_SUCCESS; }
switchlink_db_status_t switchlink_db_ecmp_ref_dec(switchlink_handle_t ecmp_h, int *ref_count) { switchlink_db_ecmp_obj_t * obj; obj = switchlink_db_handle_get_obj(ecmp_h); if (!obj) { return SWITCHLINK_DB_STATUS_ITEM_NOT_FOUND; } assert(obj->ref_count >= 0); if (obj->ref_count != 0) { obj->ref_count--; } *ref_count = obj->ref_count; return SWITCHLINK_DB_STATUS_SUCCESS; }