Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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;
}
Example #6
0
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;
}
Example #7
0
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;
}