From: Alan T. DeKok Date: Sat, 2 Sep 2023 14:14:40 +0000 (-0400) Subject: make Net.* mutable for tests, and delete them in json.encode X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb3f16a3f9bbd926542d52bb8de3b28f8b8e64f2;p=thirdparty%2Ffreeradius-server.git make Net.* mutable for tests, and delete them in json.encode --- diff --git a/src/bin/unit_test_module.c b/src/bin/unit_test_module.c index df4ea16b996..490af139f66 100644 --- a/src/bin/unit_test_module.c +++ b/src/bin/unit_test_module.c @@ -76,10 +76,12 @@ fr_dict_autoload_t unit_test_module_dict[] = { }; static fr_dict_attr_t const *attr_packet_type; +static fr_dict_attr_t const *attr_net; extern fr_dict_attr_autoload_t unit_test_module_dict_attr[]; fr_dict_attr_autoload_t unit_test_module_dict_attr[] = { { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_protocol }, + { .out = &attr_net, .name = "Net", .type = FR_TYPE_TLV, .dict = &dict_freeradius }, { NULL } }; @@ -231,7 +233,17 @@ static request_t *request_from_file(TALLOC_CTX *ctx, FILE *fp, fr_client_t *clie if (fr_packet_pairs_from_packet(request->request_ctx, &request->request_pairs, request->packet) < 0) { fr_strerror_const("Failed converting packet IPs to attributes"); goto error; - } + } + + /* + * For lazines in the tests, allow the Net.* to be mutable + */ + for (vp = fr_pair_dcursor_by_ancestor_init(&cursor, &request->request_pairs, attr_net); + vp != NULL; + vp = fr_dcursor_next(&cursor)) { + if (!fr_type_is_leaf(vp->vp_type)) continue; + vp->data.immutable = false; + } if (fr_debug_lvl) { for (vp = fr_pair_dcursor_init(&cursor, &request->request_pairs); diff --git a/src/tests/modules/json/encode.unlang b/src/tests/modules/json/encode.unlang index d04d54cf98f..f2c5b82a7d0 100644 --- a/src/tests/modules/json/encode.unlang +++ b/src/tests/modules/json/encode.unlang @@ -3,6 +3,19 @@ # &request -= &Packet-Type[*] +# +# HACK: the edit code does not currently support deleted by parent +# when doing &request -= &Net[*] +# or even &request -= &Net.[*] +# which returns an error? +# +&request -= &Net.Src.IP +&request -= &Net.Src.Port +&request -= &Net.Dst.IP +&request -= &Net.Dst.Port +&request -= &Net.Timestamp +&request -= &Net[*] + # 0. Check basic xlat parsing &control.Tmp-String-1 := "%{json.encode:&request.[*]}" &control.Tmp-String-2 := "%{json.encode:&request.[*] }"