diff --git a/sear/irrseq00/irrseq00.hpp b/sear/irrseq00/irrseq00.hpp index 9549cba0..e6ae4c21 100644 --- a/sear/irrseq00/irrseq00.hpp +++ b/sear/irrseq00/irrseq00.hpp @@ -42,6 +42,9 @@ const uint16_t t_repeat_field_header = 0x1000; // repeat field header const uint32_t f_boolean_field = 0x80000000; // value of a boolean field const uint32_t f_output_only = 0x40000000; // output-only field +// For dataset requests +const uint32_t GENERIC_FLAG = 0x10000000; // output-only field + #pragma pack(push, 1) // Don't byte align structure members. /*************************************************************************/ diff --git a/sear/irrseq00/profile_post_processor.cpp b/sear/irrseq00/profile_post_processor.cpp index aac20d40..7ff49a07 100644 --- a/sear/irrseq00/profile_post_processor.cpp +++ b/sear/irrseq00/profile_post_processor.cpp @@ -16,6 +16,7 @@ // On z/OS these macros do nothing since "network order" and z/Architecture are // both big endian. This is only necessary for unit testing off platform. #include +#include #include "irrseq00.hpp" #include "key_map.hpp" @@ -105,6 +106,17 @@ void ProfilePostProcessor::postProcessGeneric(SecurityRequest &request) { } p_segment++; } + + if (admin_type == "dataset" || admin_type == "resource") { + // Generic checking for dataset & resource profiles isn't done through a field key + // like the rest of the data + if (ntohl(p_generic_result->flags) & GENERIC_FLAG) { + profile["profile"]["base"]["base:is_generic"] = true; + } else { + profile["profile"]["base"]["base:is_generic"] = false; + } + } + request.setIntermediateResultJSON(profile); } diff --git a/tests/irrseq00/result_samples/dataset/test_extract_dataset_result.json b/tests/irrseq00/result_samples/dataset/test_extract_dataset_result.json index 0e256f64..92b13283 100644 --- a/tests/irrseq00/result_samples/dataset/test_extract_dataset_result.json +++ b/tests/irrseq00/result_samples/dataset/test_extract_dataset_result.json @@ -10,6 +10,7 @@ "base:erase_datasets_on_delete": false, "base:global_auditing": "NONE", "base:high_level_qualifier_is_group": false, + "base:is_generic":true, "base:last_change_date": "03/19/24", "base:last_reference_date": "03/19/24", "base:level": 0, diff --git a/tests/irrseq00/result_samples/dataset/test_extract_dataset_result_csdata.json b/tests/irrseq00/result_samples/dataset/test_extract_dataset_result_csdata.json index 51d56584..6cfc88a6 100644 --- a/tests/irrseq00/result_samples/dataset/test_extract_dataset_result_csdata.json +++ b/tests/irrseq00/result_samples/dataset/test_extract_dataset_result_csdata.json @@ -10,6 +10,7 @@ "base:erase_datasets_on_delete": false, "base:global_auditing": "NONE", "base:high_level_qualifier_is_group": false, + "base:is_generic":true, "base:last_change_date": "03/10/25", "base:last_reference_date": "03/10/25", "base:level": 0, diff --git a/tests/irrseq00/result_samples/resource/test_extract_resource_result.json b/tests/irrseq00/result_samples/resource/test_extract_resource_result.json index 6b44b131..afdb9006 100644 --- a/tests/irrseq00/result_samples/resource/test_extract_resource_result.json +++ b/tests/irrseq00/result_samples/resource/test_extract_resource_result.json @@ -6,6 +6,7 @@ "base:control_access_count": 0, "base:create_date": "12/20/23", "base:global_auditing": "NONE", + "base:is_generic":false, "base:last_change_date": "12/20/23", "base:last_reference_date": "12/20/23", "base:level": "0", diff --git a/tests/irrseq00/result_samples/resource/test_extract_resource_result_csdata.json b/tests/irrseq00/result_samples/resource/test_extract_resource_result_csdata.json index 59394cda..842116f0 100644 --- a/tests/irrseq00/result_samples/resource/test_extract_resource_result_csdata.json +++ b/tests/irrseq00/result_samples/resource/test_extract_resource_result_csdata.json @@ -13,6 +13,7 @@ "base:control_access_count": 0, "base:create_date": "03/10/25", "base:global_auditing": "NONE", + "base:is_generic":false, "base:last_change_date": "03/10/25", "base:last_reference_date": "03/10/25", "base:level": "0",