@@ -6686,6 +6686,84 @@ void Meta::meta_sai_on_bfd_session_state_change(
6686
6686
}
6687
6687
}
6688
6688
6689
+ void Meta::meta_sai_on_twamp_session_event_single (
6690
+ _In_ const sai_twamp_session_event_notification_data_t & data)
6691
+ {
6692
+ SWSS_LOG_ENTER ();
6693
+
6694
+ auto ot = objectTypeQuery (data.twamp_session_id );
6695
+
6696
+ bool valid = false ;
6697
+
6698
+ switch (ot)
6699
+ {
6700
+ // TODO hardcoded types, must advance SAI repository commit to get metadata for this
6701
+ case SAI_OBJECT_TYPE_TWAMP_SESSION:
6702
+
6703
+ valid = true ;
6704
+ break ;
6705
+
6706
+ default :
6707
+
6708
+ SWSS_LOG_ERROR (" data.twamp_session_id %s has unexpected type: %s, expected TWAMP_SESSION" ,
6709
+ sai_serialize_object_id (data.twamp_session_id ).c_str (),
6710
+ sai_serialize_object_type (ot).c_str ());
6711
+ break ;
6712
+ }
6713
+
6714
+ // check if all counter ids are in enum range
6715
+ for (uint32_t idx = 0 ; idx < data.session_stats .number_of_counters ; idx++)
6716
+ {
6717
+ if (!sai_metadata_get_enum_value_name (sai_metadata_enum_sai_twamp_session_stat_t , data.session_stats .counters_ids [idx]))
6718
+ {
6719
+ SWSS_LOG_ERROR (" value %d is not in range on sai_twamp_session_stat_t " , data.session_stats .counters_ids [idx]);
6720
+
6721
+ return ;
6722
+ }
6723
+ }
6724
+
6725
+ if (valid && !m_oids.objectReferenceExists (data.twamp_session_id ))
6726
+ {
6727
+ SWSS_LOG_NOTICE (" data.twamp_session_id new object spotted %s not present in local DB (snoop!)" ,
6728
+ sai_serialize_object_id (data.twamp_session_id ).c_str ());
6729
+
6730
+ sai_object_meta_key_t key = { .objecttype = (sai_object_type_t )ot, .objectkey = { .key = { .object_id = data.twamp_session_id } } };
6731
+
6732
+ m_oids.objectReferenceInsert (data.twamp_session_id );
6733
+
6734
+ if (!m_saiObjectCollection.objectExists (key))
6735
+ {
6736
+ m_saiObjectCollection.createObject (key);
6737
+ }
6738
+ }
6739
+
6740
+ if (!sai_metadata_get_enum_value_name (
6741
+ &sai_metadata_enum_sai_twamp_session_state_t ,
6742
+ data.session_state ))
6743
+ {
6744
+ SWSS_LOG_WARN (" session_state value (%d) not found sai_twamp_session_state_t" ,
6745
+ data.session_state );
6746
+ }
6747
+ }
6748
+
6749
+ void Meta::meta_sai_on_twamp_session_event (
6750
+ _In_ uint32_t count,
6751
+ _In_ const sai_twamp_session_event_notification_data_t *data)
6752
+ {
6753
+ SWSS_LOG_ENTER ();
6754
+
6755
+ if (count && data == NULL )
6756
+ {
6757
+ SWSS_LOG_ERROR (" sai_twamp_session_event_notification_data_t pointer is NULL but count is %u" , count);
6758
+ return ;
6759
+ }
6760
+
6761
+ for (uint32_t i = 0 ; i < count; ++i)
6762
+ {
6763
+ meta_sai_on_twamp_session_event_single (data[i]);
6764
+ }
6765
+ }
6766
+
6689
6767
int32_t Meta::getObjectReferenceCount (
6690
6768
_In_ sai_object_id_t oid) const
6691
6769
{
0 commit comments