in fboss/agent/hw/sai/fake/FakeSai.cpp [106:237]
sai_status_t sai_api_query(sai_api_t sai_api_id, void** api_method_table) {
auto fs = FakeSai::getInstance();
if (!fs->initialized) {
return SAI_STATUS_FAILURE;
}
sai_status_t res;
switch (sai_api_id) {
case SAI_API_ACL:
facebook::fboss::populate_acl_api((sai_acl_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_BRIDGE:
facebook::fboss::populate_bridge_api(
(sai_bridge_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_BUFFER:
facebook::fboss::populate_buffer_api(
(sai_buffer_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_DEBUG_COUNTER:
facebook::fboss::populate_debug_counter_api(
(sai_debug_counter_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_FDB:
facebook::fboss::populate_fdb_api((sai_fdb_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_HASH:
facebook::fboss::populate_hash_api((sai_hash_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_HOSTIF:
facebook::fboss::populate_hostif_api(
(sai_hostif_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_LAG:
facebook::fboss::populate_lag_api((sai_lag_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_MIRROR:
facebook::fboss::populate_mirror_api(
(sai_mirror_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_MPLS:
facebook::fboss::populate_mpls_api((sai_mpls_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_NEIGHBOR:
facebook::fboss::populate_neighbor_api(
(sai_neighbor_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_NEXT_HOP:
facebook::fboss::populate_next_hop_api(
(sai_next_hop_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_NEXT_HOP_GROUP:
facebook::fboss::populate_next_hop_group_api(
(sai_next_hop_group_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_PORT:
facebook::fboss::populate_port_api((sai_port_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_QOS_MAP:
facebook::fboss::populate_qos_map_api(
(sai_qos_map_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_QUEUE:
facebook::fboss::populate_queue_api((sai_queue_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_ROUTE:
facebook::fboss::populate_route_api((sai_route_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_ROUTER_INTERFACE:
facebook::fboss::populate_router_interface_api(
(sai_router_interface_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_SAMPLEPACKET:
facebook::fboss::populate_samplepacket_api(
(sai_samplepacket_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_SCHEDULER:
facebook::fboss::populate_scheduler_api(
(sai_scheduler_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_SWITCH:
facebook::fboss::populate_switch_api(
(sai_switch_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_VIRTUAL_ROUTER:
facebook::fboss::populate_virtual_router_api(
(sai_virtual_router_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_VLAN:
facebook::fboss::populate_vlan_api((sai_vlan_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_WRED:
facebook::fboss::populate_wred_api((sai_wred_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_TAM:
facebook::fboss::populate_tam_api((sai_tam_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
case SAI_API_MACSEC:
facebook::fboss::populate_macsec_api(
(sai_macsec_api_t**)api_method_table);
res = SAI_STATUS_SUCCESS;
break;
default:
res = SAI_STATUS_INVALID_PARAMETER;
break;
}
return res;
}