in fboss/agent/hw/sai/fake/FakeSaiObject.cpp [17:185]
sai_status_t sai_get_object_count(
sai_object_id_t /* switch_id */,
sai_object_type_t object_type,
uint32_t* count) {
*count = 0;
auto fs = facebook::fboss::FakeSai::getInstance();
switch (object_type) {
case SAI_OBJECT_TYPE_PORT:
// All ports excluding CPU port
*count = fs->portManager.map().size() - 1;
break;
case SAI_OBJECT_TYPE_PORT_SERDES:
*count = fs->portSerdesManager.map().size();
break;
case SAI_OBJECT_TYPE_PORT_CONNECTOR:
*count = fs->portConnectorManager.map().size();
break;
case SAI_OBJECT_TYPE_VIRTUAL_ROUTER:
*count = fs->virtualRouteManager.map().size();
break;
case SAI_OBJECT_TYPE_NEXT_HOP:
*count = fs->nextHopManager.map().size();
break;
case SAI_OBJECT_TYPE_NEXT_HOP_GROUP:
*count = fs->nextHopGroupManager.map().size();
break;
case SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER: {
for (const auto& nhg : fs->nextHopGroupManager.map()) {
*count += nhg.second.fm().map().size();
}
break;
}
case SAI_OBJECT_TYPE_ROUTER_INTERFACE:
*count = fs->routeInterfaceManager.map().size();
break;
case SAI_OBJECT_TYPE_HASH:
*count = fs->hashManager.map().size();
break;
case SAI_OBJECT_TYPE_HOSTIF_TRAP_GROUP:
*count = fs->hostifTrapGroupManager.map().size();
break;
case SAI_OBJECT_TYPE_FDB_ENTRY:
*count = fs->fdbManager.map().size();
break;
case SAI_OBJECT_TYPE_SWITCH:
*count = fs->switchManager.map().size();
break;
case SAI_OBJECT_TYPE_HOSTIF_TRAP:
*count = fs->hostIfTrapManager.map().size();
break;
case SAI_OBJECT_TYPE_NEIGHBOR_ENTRY:
*count = fs->neighborManager.map().size();
break;
case SAI_OBJECT_TYPE_ROUTE_ENTRY:
*count = fs->routeManager.map().size();
break;
case SAI_OBJECT_TYPE_VLAN:
*count = fs->vlanManager.map().size();
break;
case SAI_OBJECT_TYPE_VLAN_MEMBER: {
for (const auto& v : fs->vlanManager.map()) {
*count += v.second.fm().map().size();
}
break;
}
case SAI_OBJECT_TYPE_BRIDGE:
*count = fs->bridgeManager.map().size();
break;
case SAI_OBJECT_TYPE_BUFFER_POOL:
*count = fs->bufferPoolManager.map().size();
break;
case SAI_OBJECT_TYPE_BUFFER_PROFILE:
*count = fs->bufferProfileManager.map().size();
break;
case SAI_OBJECT_TYPE_BRIDGE_PORT: {
for (const auto& br : fs->bridgeManager.map()) {
*count += br.second.fm().map().size();
}
break;
}
case SAI_OBJECT_TYPE_QOS_MAP:
*count = fs->qosMapManager.map().size();
break;
case SAI_OBJECT_TYPE_QUEUE:
*count = fs->queueManager.map().size();
break;
case SAI_OBJECT_TYPE_SAMPLEPACKET:
*count = fs->samplePacketManager.map().size();
break;
case SAI_OBJECT_TYPE_SCHEDULER:
*count = fs->scheduleManager.map().size();
break;
case SAI_OBJECT_TYPE_INSEG_ENTRY:
*count = fs->inSegEntryManager.map().size();
break;
case SAI_OBJECT_TYPE_ACL_TABLE_GROUP:
*count = fs->aclTableGroupManager.map().size();
break;
case SAI_OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER: {
for (const auto& aclTableGroupMember : fs->aclTableGroupManager.map()) {
*count += aclTableGroupMember.second.fm().map().size();
}
break;
}
case SAI_OBJECT_TYPE_ACL_TABLE:
*count = fs->aclTableManager.map().size();
break;
case SAI_OBJECT_TYPE_ACL_ENTRY: {
*count = fs->aclEntryManager.map().size();
break;
}
case SAI_OBJECT_TYPE_ACL_COUNTER:
*count = fs->aclCounterManager.map().size();
break;
case SAI_OBJECT_TYPE_DEBUG_COUNTER:
*count = fs->debugCounterManager.map().size();
break;
case SAI_OBJECT_TYPE_WRED:
*count = fs->wredManager.map().size();
break;
case SAI_OBJECT_TYPE_TAM_REPORT:
*count = fs->tamReportManager.map().size();
break;
case SAI_OBJECT_TYPE_TAM_EVENT_ACTION:
*count = fs->tamEventActionManager.map().size();
break;
case SAI_OBJECT_TYPE_TAM_EVENT:
*count = fs->tamEventManager.map().size();
break;
case SAI_OBJECT_TYPE_TAM:
*count = fs->tamManager.map().size();
break;
case SAI_OBJECT_TYPE_MIRROR_SESSION:
*count = fs->mirrorManager.map().size();
break;
case SAI_OBJECT_TYPE_LAG:
*count = fs->lagManager.map().size();
break;
case SAI_OBJECT_TYPE_LAG_MEMBER: {
for (const auto& obj : fs->lagManager.map()) {
*count += obj.second.fm().map().size();
}
break;
}
case SAI_OBJECT_TYPE_MACSEC: {
*count = fs->macsecManager.map().size();
break;
}
case SAI_OBJECT_TYPE_MACSEC_PORT: {
*count = fs->macsecPortManager.map().size();
break;
}
case SAI_OBJECT_TYPE_MACSEC_SA: {
*count = fs->macsecSAManager.map().size();
break;
}
case SAI_OBJECT_TYPE_MACSEC_SC: {
*count = fs->macsecSCManager.map().size();
break;
}
case SAI_OBJECT_TYPE_MACSEC_FLOW: {
*count = fs->macsecFlowManager.map().size();
break;
}
default:
return SAI_STATUS_INVALID_PARAMETER;
}
return SAI_STATUS_SUCCESS;
}