@@ -744,6 +744,21 @@ sai_status_t SwitchVpp::queryAttributeCapability(
744744 return SAI_STATUS_SUCCESS;
745745}
746746
747+ uint64_t SwitchVpp::getObjectTypeAvailability (
748+ _In_ sai_object_type_t object_type)
749+ {
750+ SWSS_LOG_ENTER ();
751+
752+ if (object_type == SAI_OBJECT_TYPE_MY_SID_ENTRY)
753+ {
754+ // Return available MY_SID entries (max - used)
755+ return static_cast <uint64_t >(m_maxMySidEntries - m_srv6_my_sid_count);
756+ }
757+
758+ // Return 0 for unsupported types
759+ return 0 ;
760+ }
761+
747762sai_status_t SwitchVpp::getStatsExt (
748763 _In_ sai_object_type_t object_type,
749764 _In_ sai_object_id_t object_id,
@@ -819,7 +834,13 @@ sai_status_t SwitchVpp::create(
819834
820835 if (object_type == SAI_OBJECT_TYPE_MY_SID_ENTRY)
821836 {
822- return m_tunnel_mgr_srv6.create_my_sid_entry (serializedObjectId, switch_id, attr_count, attr_list);
837+ sai_status_t status = m_tunnel_mgr_srv6.create_my_sid_entry (serializedObjectId, switch_id, attr_count, attr_list);
838+ if (status == SAI_STATUS_SUCCESS)
839+ {
840+ m_srv6_my_sid_count++;
841+ SWSS_LOG_DEBUG (" MY_SID entry created, count: %u" , m_srv6_my_sid_count);
842+ }
843+ return status;
823844 }
824845
825846 if (object_type == SAI_OBJECT_TYPE_SRV6_SIDLIST)
@@ -1056,7 +1077,16 @@ sai_status_t SwitchVpp::remove(
10561077
10571078 if (object_type == SAI_OBJECT_TYPE_MY_SID_ENTRY)
10581079 {
1059- return m_tunnel_mgr_srv6.remove_my_sid_entry (serializedObjectId);
1080+ sai_status_t status = m_tunnel_mgr_srv6.remove_my_sid_entry (serializedObjectId);
1081+ if (status == SAI_STATUS_SUCCESS)
1082+ {
1083+ if (m_srv6_my_sid_count > 0 )
1084+ {
1085+ m_srv6_my_sid_count--;
1086+ }
1087+ SWSS_LOG_DEBUG (" MY_SID entry removed, count: %u" , m_srv6_my_sid_count);
1088+ }
1089+ return status;
10601090 }
10611091
10621092 if (object_type == SAI_OBJECT_TYPE_SRV6_SIDLIST)
0 commit comments