Skip to content

Commit a964026

Browse files
Prabhu SreenivasanPrabhuSreenivasan
Prabhu Sreenivasan
authored andcommitted
Switch Capability support
Signed-off-by: Prabhu Sreenivasan <[email protected]>
1 parent 620d7a4 commit a964026

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

vslib/src/SwitchStateBase.cpp

+21
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,24 @@ sai_status_t SwitchStateBase::set_switch_default_attributes()
864864
attr.id = SAI_SWITCH_ATTR_WARM_RECOVER;
865865
attr.value.booldata = false;
866866

867+
CHECK_STATUS(set(SAI_OBJECT_TYPE_SWITCH, m_switch_id, &attr));
868+
869+
// Fill this with supported SAI_OBJECT_TYPEs
870+
sai_object_type_t supported_obj_list[] = {
871+
SAI_OBJECT_TYPE_PORT,
872+
SAI_OBJECT_TYPE_LAG,
873+
SAI_OBJECT_TYPE_TAM,
874+
SAI_OBJECT_TYPE_TAM_COLLECTOR,
875+
SAI_OBJECT_TYPE_TAM_REPORT,
876+
SAI_OBJECT_TYPE_TAM_TRANSPORT,
877+
SAI_OBJECT_TYPE_TAM_TELEMETRY,
878+
SAI_OBJECT_TYPE_TAM_EVENT_THRESHOLD
879+
};
880+
881+
attr.id = SAI_SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST;
882+
attr.value.objlist.count = sizeof(supported_obj_list)/sizeof(sai_object_type_t);
883+
attr.value.objlist.list = supported_obj_list;
884+
867885
return set(SAI_OBJECT_TYPE_SWITCH, m_switch_id, &attr);
868886
}
869887

@@ -1793,6 +1811,9 @@ sai_status_t SwitchStateBase::refresh_read_only(
17931811
case SAI_SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS:
17941812
case SAI_SWITCH_ATTR_SYSTEM_PORT_LIST:
17951813
return refresh_system_port_list(meta);
1814+
1815+
case SAI_SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST:
1816+
return SAI_STATUS_SUCCESS;
17961817
}
17971818
}
17981819

vslib/src/tests.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,7 @@ void test_get_stats()
710710
sai_reinit();
711711

712712
uint32_t expected_ports = 32;
713+
uint32_t expected_num_attrs = 8;
713714

714715
sai_attribute_t attr;
715716

@@ -777,6 +778,19 @@ void test_get_stats()
777778

778779
ASSERT_TRUE(values[0] == 127);
779780
ASSERT_TRUE(values[1] == 77);
781+
782+
std::vector<sai_object_id_t> supported_obj_list;
783+
784+
supported_obj_list.resize(expected_num_attrs);
785+
786+
attr.id = SAI_SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST;
787+
attr.value.objlist.count = expected_num_attrs;
788+
attr.value.objlist.list = supported_obj_list.data();
789+
790+
SUCCESS(sai_metadata_sai_switch_api->get_switch_attribute(switch_id, 1, &attr));
791+
792+
ASSERT_TRUE(attr.value.objlist.count == expected_num_attrs);
793+
780794
}
781795

782796
int main()

0 commit comments

Comments
 (0)