@@ -667,9 +667,10 @@ std::string sinsp_with_test_input::get_field_as_string(sinsp_evt* evt,
667667 return result;
668668}
669669
670- extract_offset_t sinsp_with_test_input::get_field_offsets (sinsp_evt* evt,
670+ extract_offset_t sinsp_with_test_input::get_value_offsets (sinsp_evt* evt,
671671 std::string_view field_name,
672- filter_check_list& flist) {
672+ filter_check_list& flist,
673+ size_t val_idx) {
673674 if (evt == nullptr ) {
674675 throw sinsp_exception (" The event class is NULL" );
675676 }
@@ -688,19 +689,26 @@ extract_offset_t sinsp_with_test_input::get_field_offsets(sinsp_evt* evt,
688689 if (offsets.size () == 0 ) {
689690 throw sinsp_exception (" Unable to extract offsets for " + std::string (field_name));
690691 }
691- return offsets.at (0 );
692+ if (val_idx >= values.size ()) {
693+ throw sinsp_exception (" Offset index " + std::to_string (val_idx) + " out of range for " +
694+ std::string (field_name));
695+ }
696+
697+ return offsets.at (val_idx);
692698}
693699
694- uint32_t sinsp_with_test_input::get_field_offset_start (sinsp_evt* evt,
700+ uint32_t sinsp_with_test_input::get_value_offset_start (sinsp_evt* evt,
695701 std::string_view field_name,
696- filter_check_list& flist) {
697- return get_field_offsets (evt, field_name, flist).start ;
702+ filter_check_list& flist,
703+ size_t val_idx) {
704+ return get_value_offsets (evt, field_name, flist, val_idx).start ;
698705}
699706
700- uint32_t sinsp_with_test_input::get_field_offset_length (sinsp_evt* evt,
707+ uint32_t sinsp_with_test_input::get_value_offset_length (sinsp_evt* evt,
701708 std::string_view field_name,
702- filter_check_list& flist) {
703- return get_field_offsets (evt, field_name, flist).length ;
709+ filter_check_list& flist,
710+ size_t val_idx) {
711+ return get_value_offsets (evt, field_name, flist, val_idx).length ;
704712}
705713
706714bool sinsp_with_test_input::eval_filter (sinsp_evt* evt,
0 commit comments