]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
define and use DICT_AUTOLOAD_TERMINATOR
authorAlan T. DeKok <aland@freeradius.org>
Fri, 24 Oct 2025 19:28:15 +0000 (15:28 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 25 Oct 2025 10:10:51 +0000 (06:10 -0400)
C23 complains about { NULL } being used to initialize something.
we should either use { }, or { .field = NULL }

106 files changed:
src/bin/dhcpclient.c
src/bin/radclient-ng.c
src/bin/radclient.c
src/bin/radsniff.c
src/bin/radsnmp.c
src/bin/unit_test_map.c
src/bin/unit_test_module.c
src/lib/curl/base.c
src/lib/eap/base.c
src/lib/eap_aka_sim/base.c
src/lib/server/log.c
src/lib/server/packet.c
src/lib/server/password.c
src/lib/server/request.c
src/lib/server/snmp.c
src/lib/server/tmpl_eval.c
src/lib/server/trigger.c
src/lib/server/virtual_servers.c
src/lib/tls/base.c
src/lib/unlang/xlat_eval.c
src/lib/util/dict.h
src/lib/util/dict_util.c
src/listen/arp/proto_arp.c
src/listen/bfd/proto_bfd.c
src/listen/control/proto_control.c
src/listen/cron/cron.c
src/listen/detail/proto_detail.c
src/listen/detail/proto_detail_work.c
src/listen/dhcpv4/proto_dhcpv4.c
src/listen/dhcpv4/proto_dhcpv4_udp.c
src/listen/dhcpv6/proto_dhcpv6.c
src/listen/dhcpv6/proto_dhcpv6_udp.c
src/listen/dns/proto_dns.c
src/listen/dns/proto_dns_udp.c
src/listen/ldap_sync/proto_ldap_sync.c
src/listen/ldap_sync/proto_ldap_sync_ldap.c
src/listen/radius/proto_radius.c
src/listen/tacacs/proto_tacacs.c
src/listen/vmps/proto_vmps.c
src/modules/rlm_attr_filter/rlm_attr_filter.c
src/modules/rlm_cache/drivers/rlm_cache_redis/rlm_cache_redis.c
src/modules/rlm_cache/rlm_cache.c
src/modules/rlm_chap/rlm_chap.c
src/modules/rlm_crl/rlm_crl.c
src/modules/rlm_detail/rlm_detail.c
src/modules/rlm_dhcpv4/rlm_dhcpv4.c
src/modules/rlm_digest/rlm_digest.c
src/modules/rlm_dpsk/rlm_dpsk.c
src/modules/rlm_eap/rlm_eap.c
src/modules/rlm_eap/types/rlm_eap_fast/rlm_eap_fast.c
src/modules/rlm_eap/types/rlm_eap_gtc/rlm_eap_gtc.c
src/modules/rlm_eap/types/rlm_eap_md5/rlm_eap_md5.c
src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c
src/modules/rlm_eap/types/rlm_eap_peap/rlm_eap_peap.c
src/modules/rlm_eap/types/rlm_eap_pwd/rlm_eap_pwd.c
src/modules/rlm_eap/types/rlm_eap_tls/rlm_eap_tls.c
src/modules/rlm_eap/types/rlm_eap_ttls/rlm_eap_ttls.c
src/modules/rlm_files/rlm_files.c
src/modules/rlm_imap/rlm_imap.c
src/modules/rlm_isc_dhcp/rlm_isc_dhcp.c
src/modules/rlm_ldap/rlm_ldap.c
src/modules/rlm_logtee/rlm_logtee.c
src/modules/rlm_mschap/rlm_mschap.c
src/modules/rlm_opendirectory/rlm_opendirectory.c
src/modules/rlm_pam/rlm_pam.c
src/modules/rlm_pap/rlm_pap.c
src/modules/rlm_passwd/rlm_passwd.c
src/modules/rlm_radius/rlm_radius.c
src/modules/rlm_rediswho/rlm_rediswho.c
src/modules/rlm_rest/rlm_rest.c
src/modules/rlm_securid/rlm_securid.c
src/modules/rlm_sigtran/rlm_sigtran.c
src/modules/rlm_smtp/rlm_smtp.c
src/modules/rlm_sql/rlm_sql.c
src/modules/rlm_sqlcounter/rlm_sqlcounter.c
src/modules/rlm_stats/rlm_stats.c
src/modules/rlm_tacacs/rlm_tacacs.c
src/modules/rlm_tacacs/rlm_tacacs_tcp.c
src/modules/rlm_test/rlm_test.c
src/modules/rlm_unix/rlm_unix.c
src/modules/rlm_wimax/rlm_wimax.c
src/modules/rlm_winbind/rlm_winbind.c
src/modules/rlm_yubikey/rlm_yubikey.c
src/process/arp/base.c
src/process/bfd/base.c
src/process/control/base.c
src/process/dhcpv4/base.c
src/process/dhcpv6/base.c
src/process/dns/base.c
src/process/ldap_sync/base.c
src/process/radius/base.c
src/process/tacacs/base.c
src/process/test/base.c
src/process/tls/base.c
src/process/ttls/base.c
src/process/vmps/base.c
src/protocols/arp/base.c
src/protocols/bfd/base.c
src/protocols/der/base.c
src/protocols/dhcpv4/base.c
src/protocols/dhcpv6/base.c
src/protocols/dns/base.c
src/protocols/radius/base.c
src/protocols/tacacs/base.c
src/protocols/tftp/base.c
src/protocols/vmps/base.c

index 99524a1c9207b27cfd1cb8dcc8321fdbd92038f6..31f49372f8f2ed68e770692ddf85707dd87a3240 100644 (file)
@@ -83,7 +83,7 @@ extern fr_dict_autoload_t dhcpclient_dict[];
 fr_dict_autoload_t dhcpclient_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_dhcpv4, .proto = "dhcpv4" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -97,7 +97,7 @@ fr_dict_attr_autoload_t dhcpclient_dict_attr[] = {
        { .out = &attr_dhcp_message_type, .name = "Message-Type", .type = FR_TYPE_UINT8, .dict = &dict_dhcpv4},
        { .out = &attr_dhcp_dhcp_server_identifier, .name = "Server-Identifier", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_dhcpv4 },
        { .out = &attr_dhcp_your_ip_address, .name = "Your-IP-Address", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_dhcpv4 },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_table_num_sorted_t const request_types[] = {
index dfdb57d3f90e8b7058b223ea1c4cbe4739856cac..9dad5f97ba907772b738cda24b6ab0594414b0a7 100644 (file)
@@ -110,7 +110,7 @@ extern fr_dict_autoload_t radclient_dict[];
 fr_dict_autoload_t radclient_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_cleartext_password;
@@ -152,7 +152,7 @@ fr_dict_attr_autoload_t radclient_dict_attr[] = {
        { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static NEVER_RETURNS void usage(void)
index 898a9d2c0e26dec07161186df64f3bb4a96f2389..cf9515931e26aa5b6a4770e9bdcb8926756c8812 100644 (file)
@@ -108,7 +108,7 @@ extern fr_dict_autoload_t radclient_dict[];
 fr_dict_autoload_t radclient_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_cleartext_password;
@@ -152,7 +152,7 @@ fr_dict_attr_autoload_t radclient_dict_attr[] = {
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
        { .out = &attr_proxy_state, .name = "Proxy-State", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static NEVER_RETURNS void usage(void)
index b635c22822433b2e8543aad7980025fcb91440bd..3ceab13e63dfd2a996b1245223ead0e8cc683535 100644 (file)
@@ -97,7 +97,7 @@ extern fr_dict_autoload_t radsniff_dict[];
 fr_dict_autoload_t radsniff_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -105,7 +105,7 @@ static fr_dict_attr_t const *attr_packet_type;
 extern fr_dict_attr_autoload_t radsniff_dict_attr[];
 fr_dict_attr_autoload_t radsniff_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static NEVER_RETURNS void usage(int status);
index 61206de3c9793185cd1d8555dbe51eb2963007bd..2dee14e788ff77719bd030838a47286a1df47e76 100644 (file)
@@ -102,7 +102,7 @@ extern fr_dict_autoload_t radsnmp_dict[];
 fr_dict_autoload_t radsnmp_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_extended_attribute_1;
@@ -120,7 +120,7 @@ fr_dict_attr_autoload_t radsnmp_dict_attr[] = {
        { .out = &attr_freeradius_snmp_type, .name = "FreeRADIUS-SNMP-Type", .type = FR_TYPE_UINT8, .dict = &dict_radius },
        { .out = &attr_message_authenticator, .name = "Message-Authenticator", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
        { .out = &attr_vendor_specific, .name = "Vendor-Specific", .type = FR_TYPE_VSA, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static NEVER_RETURNS void usage(void)
index 4dc328019e1dde737efac8a93a36943c05a063af..62ad4c625eb36cf97b69ffe727e084b96348fd71 100644 (file)
@@ -52,7 +52,7 @@ extern fr_dict_autoload_t unit_test_module_dict[];
 fr_dict_autoload_t unit_test_module_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 
index ded787d602cb022159f0f90d272bc5ce89ccb7be..ce50b75d7b9d146fcc1a8070a0127d471cee1014 100644 (file)
@@ -72,7 +72,7 @@ extern fr_dict_autoload_t unit_test_module_dict[];
 fr_dict_autoload_t unit_test_module_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_protocol, .proto = "radius" }, /* hacked in-place with '-p protocol' */
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -83,7 +83,7 @@ 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 }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 6230cd5d44a72eb344f4a346fde2bf2a35fc3531..771a0a9b16b65c354e9dc29a205012aef1c4a991 100644 (file)
@@ -39,12 +39,12 @@ static fr_dict_t const *dict_freeradius; /*internal dictionary for server*/
 extern fr_dict_attr_autoload_t curl_attr[];
 fr_dict_attr_autoload_t curl_attr[] = {
        { .out = &attr_tls_certificate, .name = "TLS-Certificate", .type = FR_TYPE_TLV, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_autoload_t curl_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_table_num_sorted_t const fr_curl_sslcode_table[] = {
index a25f1c38ce8a9f1c16b7a0b12e296d3540b1dd5c..3b7302609338634da38e4bf9667bfa1b6551150f 100644 (file)
@@ -83,7 +83,7 @@ fr_dict_autoload_t eap_base_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
        { .out = &dict_tls, .proto = "tls" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_chbind_response_code;
@@ -126,7 +126,7 @@ fr_dict_attr_autoload_t eap_base_dict_attr[] = {
        { .out = &attr_tls_min_version, .name = "Min-Version", .type = FR_TYPE_FLOAT32, .dict = &dict_tls },
        { .out = &attr_tls_max_version, .name = "Max-Version", .type = FR_TYPE_FLOAT32, .dict = &dict_tls },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 void eap_packet_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *list, eap_packet_raw_t const *eap)
index 8fc2cb43c5c0c41c73b6152456e8a7c6f90c5acb..faad4433bc25455e1ac3a30d8e9097738fb3528d 100644 (file)
@@ -53,7 +53,7 @@ fr_dict_autoload_t libfreeradius_aka_sim_dict[] = {
        { .out = &dict_radius, .proto = "radius" },
        { .out = &dict_eap_aka_sim, .base_dir = "eap/aka-sim", .proto = "eap-aka-sim" },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_eap_aka_sim_ak;
@@ -179,7 +179,7 @@ fr_dict_attr_autoload_t libfreeradius_aka_sim_dict_attr[] = {
        { .out = &attr_sim_op, .name = "SIM-OP", .type = FR_TYPE_OCTETS, .dict = &dict_freeradius },
        { .out = &attr_sim_opc, .name = "SIM-OPc", .type = FR_TYPE_OCTETS, .dict = &dict_freeradius },
        { .out = &attr_sim_sqn, .name = "SIM-SQN", .type = FR_TYPE_UINT64, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_value_box_t const   *enum_eap_type_sim;
@@ -196,7 +196,7 @@ fr_dict_enum_autoload_t libfreeradius_aka_sim_dict_enum[] = {
 
        { .out = &enum_kdf_prime_with_ck_prime_ik_prime, .name = "Prime-With-CK-Prime-IK-Prime", .attr = &attr_eap_aka_sim_kdf },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** SIM AT on-the-wire format attribute sizes
index 4a77bb213a9ec46b6fdbf2757fca9ca280a3558f..1d75fcd03baf3eea974e11e0848308ab2d2eac43 100644 (file)
@@ -200,7 +200,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t log_dict[];
 fr_dict_autoload_t log_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_module_failure_message;
@@ -208,7 +208,7 @@ static fr_dict_attr_t const *attr_module_failure_message;
 extern fr_dict_attr_autoload_t log_dict_attr[];
 fr_dict_attr_autoload_t log_dict_attr[] = {
        { .out = &attr_module_failure_message, .name = "Module-Failure-Message", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct {
index c9a77b6d8e402e47b238511f8fc108ea03d6eb0a..d23eb9001e7c67c3504eb07c65c9aa29135e0e75 100644 (file)
@@ -33,7 +33,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t util_packet_dict[];
 fr_dict_autoload_t util_packet_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_net;
@@ -58,7 +58,7 @@ fr_dict_attr_autoload_t util_packet_dict_attr[] = {
        { .out = &attr_net_timestamp, .name = "Net.Timestamp", .type = FR_TYPE_DATE, .dict = &dict_freeradius },
        { .out = &attr_net_interface, .name = "Net.Interface", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static int inet2pairs(TALLOC_CTX *ctx, fr_pair_list_t *list,
index 461707e1d7994b1fd728cabe07b6ecdea3415637..a5820050e4cf7a9e47396224f5b756c5cbc32120 100644 (file)
@@ -126,7 +126,7 @@ extern fr_dict_autoload_t password_dict[];
 fr_dict_autoload_t password_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 extern fr_dict_attr_autoload_t password_dict_attr[];
@@ -174,7 +174,7 @@ fr_dict_attr_autoload_t password_dict_attr[] = {
 
        { .out = &attr_user, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef enum {
index 6d0a283701e1c804cb11c364277b8d74e1468f7d..3c45dc3a118de537badf4b1b7f968c144a63bdd1 100644 (file)
@@ -36,7 +36,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t request_dict[];
 fr_dict_autoload_t request_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *request_attr_root;
@@ -54,7 +54,7 @@ fr_dict_attr_autoload_t request_dict_attr[] = {
        { .out = &request_attr_control, .name = "control", .type = FR_TYPE_GROUP, .dict = &dict_freeradius },
        { .out = &request_attr_state, .name = "session-state", .type = FR_TYPE_GROUP, .dict = &dict_freeradius },
        { .out = &request_attr_local, .name = "local-variables", .type = FR_TYPE_GROUP, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #ifndef NDEBUG
index eda926ec56b4c1e04b26f859349bfccd2a71109c..bca60e5d63352bc3c734a5a863472beca82054f8 100644 (file)
@@ -45,7 +45,7 @@ static fr_dict_t const *dict_snmp;
 extern fr_dict_autoload_t snmp_dict[];
 fr_dict_autoload_t snmp_dict[] = {
        { .out = &dict_snmp, .proto = "snmp" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_snmp_operation;
@@ -59,7 +59,7 @@ fr_dict_attr_autoload_t snmp_dict_attr[] = {
        { .out = &attr_snmp_type, .name = "FreeRADIUS-SNMP-Type", .type = FR_TYPE_UINT8, .dict = &dict_snmp },
        { .out = &attr_snmp_failure, .name = "FreeRADIUS-SNMP-Failure", .type = FR_TYPE_UINT8, .dict = &dict_snmp },
        { .out = &attr_snmp_root, .name = "FreeRADIUS-Iso", .type = FR_TYPE_TLV, .dict = &dict_snmp },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #define FR_FREERADIUS_SNMP_TYPE_OBJECT 0
index a370b09ca66d3216c065972f7a1db8cf7140e9b4..2cd598501f1159f37e6ef42653e7a247d78db5a5 100644 (file)
@@ -46,7 +46,7 @@ extern fr_dict_autoload_t tmpl_dict[];
 fr_dict_autoload_t tmpl_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" }, /* @todo - remove RADIUS from the server core... */
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Placeholder attribute for uses of unspecified attribute references
index 94ecb4f9125e321212930fc8c694fd5a753ebf87..9df87034bdd8670b6a4f96601464b706b78f29ea 100644 (file)
@@ -61,14 +61,14 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t trigger_dict[];
 fr_dict_autoload_t trigger_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_trigger_name;
 extern fr_dict_attr_autoload_t trigger_dict_attr[];
 fr_dict_attr_autoload_t trigger_dict_attr[] = {
        { .out = &attr_trigger_name, .name = "Trigger-Name", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static void _trigger_last_fired_free(void *data)
index b2f1ef5994fa244f8bc0296d664c246150ff07e2..43bcfa77fe797d4add31d08d75ee5731add81c86 100644 (file)
@@ -80,14 +80,14 @@ static fr_dict_attr_t const *attr_auth_type;
 extern fr_dict_autoload_t virtual_server_dict_autoload[];
 fr_dict_autoload_t virtual_server_dict_autoload[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 extern fr_dict_attr_autoload_t virtual_server_dict_attr_autoload[];
 fr_dict_attr_autoload_t virtual_server_dict_attr_autoload[] = {
        { .out = &attr_auth_type, .name = "Auth-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** List of process modules we've loaded
index b6d004f11ada4ecd520649d0e374f4d3d2c03b53..e7d456b3262f43bd238475e9b7962643a7ed0bab 100644 (file)
@@ -82,7 +82,8 @@ fr_dict_autoload_t tls_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_tls, .proto = "tls" },
        { .out = &dict_der, .proto = "der" },
-       { NULL }
+
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_allow_session_resumption;
@@ -184,7 +185,7 @@ fr_dict_attr_autoload_t tls_dict_attr[] = {
 
        { .out = &attr_der_certificate, .name = "Certificate", .type = FR_TYPE_TLV, .dict = &dict_der },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
@@ -225,7 +226,8 @@ fr_dict_enum_autoload_t tls_dict_enum[] = {
 
        { .out = &enum_tls_session_resumed_stateful, .name = "stateful", .attr = &attr_tls_session_resume_type },
        { .out = &enum_tls_session_resumed_stateless, .name = "stateless", .attr = &attr_tls_session_resume_type },
-       { NULL }
+
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 4ab9017e9f758204d8d0be377e58c036dd54e27a..84a74115c2ce87dd6916bcc8f15ba6eb7c92fabf 100644 (file)
@@ -38,7 +38,7 @@ static fr_dict_t const *dict_freeradius;
 
 static fr_dict_autoload_t xlat_eval_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_expr_bool_enum; /* xlat_expr.c */
@@ -72,7 +72,7 @@ static fr_dict_attr_autoload_t xlat_eval_dict_attr[] = {
        { .out = &attr_cast_time_res_usec, .name = "Cast-Time-Res-Micro-Sec", .type = FR_TYPE_TIME_DELTA, .dict = &dict_freeradius },
        { .out = &attr_cast_time_res_nsec, .name = "Cast-Time-Res-Nano-Sec", .type = FR_TYPE_TIME_DELTA, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_table_num_sorted_t const xlat_action_table[] = {
index 88f32d57c614fa6a29bfc25be9f43cea1b660944..295dfc84276e9f1a8de2f1fb4044a93f06be5509 100644 (file)
@@ -303,6 +303,9 @@ typedef struct {
        char const              *proto;                         //!< The protocol dictionary name.
 } fr_dict_autoload_t;
 
+#define DICT_AUTOLOAD_TERMINATOR { .out = NULL }
+
+
 /** Errors returned by attribute lookup functions
  *
  */
index 5500f6236aaa5cc8967b367317b843f525e982ac..08d89994e4733f03f532bfbae44285dc5bacbbec 100644 (file)
@@ -4370,7 +4370,7 @@ fr_dict_autoload_talloc_t *_fr_dict_autoload_talloc(TALLOC_CTX *ctx, fr_dict_t c
        }
 
        dict_ref->load[0] = (fr_dict_autoload_t){ .proto = proto, .out = out};
-       dict_ref->load[1] = (fr_dict_autoload_t){ NULL };
+       dict_ref->load[1] = (fr_dict_autoload_t) DICT_AUTOLOAD_TERMINATOR;
        dict_ref->dependent = talloc_strdup(dict_ref, dependent);
        if (unlikely(dict_ref->dependent == NULL)) {
                talloc_free(dict_ref);
index e753063b1b48b3001fcd961811a62de7e00d8fff..a1bd248f314986df9cdcc75db6763379fef83314 100644 (file)
@@ -46,7 +46,7 @@ static fr_dict_t const *dict_arp;
 extern fr_dict_autoload_t proto_arp_dict[];
 fr_dict_autoload_t proto_arp_dict[] = {
        { .out = &dict_arp, .proto = "arp" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #if 0
@@ -55,7 +55,7 @@ static fr_dict_attr_t const *attr_packet_type;
 extern fr_dict_attr_autoload_t proto_arp_dict_attr[];
 fr_dict_attr_autoload_t proto_arp_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_arp},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 #endif
 
index ed276a6abdc476b371290bca56f521cdc547173f..c56bf894b02ba8190b1668a2bdde5b190bb102ea 100644 (file)
@@ -62,7 +62,7 @@ static fr_dict_t const *dict_bfd;
 extern fr_dict_autoload_t proto_bfd_dict[];
 fr_dict_autoload_t proto_bfd_dict[] = {
        { .out = &dict_bfd, .proto = "bfd" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -80,7 +80,7 @@ fr_dict_attr_autoload_t proto_bfd_dict_attr[] = {
        { .out = &attr_your_discriminator, .name = "Packet.your-discriminator", .type = FR_TYPE_UINT32, .dict = &dict_bfd},
 
        { .out = &attr_additional_data, .name = "Additional-Data", .type = FR_TYPE_GROUP, .dict = &dict_bfd},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
index 02a03b73a0767342f10dac6d38bb9c8c4730f3db..ab889eaca876acaf9a8987493e785ce8756a0222 100644 (file)
@@ -63,7 +63,7 @@ static fr_dict_t const *dict_control;
 extern fr_dict_autoload_t proto_control_dict[];
 fr_dict_autoload_t proto_control_dict[] = {
        { .out = &dict_control, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
index baeaa8eb5d2f81b8a5c7b1bf6b98571bfd2da8d6..4543efed255d4eabe62b07a81e3451690fc25a4f 100644 (file)
@@ -64,7 +64,7 @@ static fr_dict_t const *dict_cron;
 extern fr_dict_autoload_t proto_cron_dict[];
 fr_dict_autoload_t proto_cron_dict[] = {
        { .out = &dict_cron, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Translates the packet-type into a submodule name
index c30487d80787757cc8865fd2b65e6fa481432ae2..de798581e51c0bc7c01561da3b99f08ca7944e5f 100644 (file)
@@ -82,7 +82,7 @@ extern fr_dict_autoload_t proto_detail_dict[];
 fr_dict_autoload_t proto_detail_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_dst_ip_address;
@@ -99,7 +99,7 @@ fr_dict_attr_autoload_t proto_detail_dict_attr[] = {
        { .out = &attr_packet_src_ip_address, .name = "Net.Src.IP", .type = FR_TYPE_COMBO_IP_ADDR, .dict = &dict_freeradius },
        { .out = &attr_packet_src_port, .name = "Net.Src.Port", .type = FR_TYPE_UINT16, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Translates the packet-type into a submodule name
index 7fb3d736cbfc014c22cdccd362814afa56a0cb52..c9509d2ac3a09a7687b27727c60413d2c4563167 100644 (file)
@@ -98,7 +98,7 @@ extern fr_dict_autoload_t proto_detail_work_dict[];
 fr_dict_autoload_t proto_detail_work_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_transmit_counter;
@@ -106,7 +106,7 @@ static fr_dict_attr_t const *attr_packet_transmit_counter;
 extern fr_dict_attr_autoload_t proto_detail_work_dict_attr[];
 fr_dict_attr_autoload_t proto_detail_work_dict_attr[] = {
        { .out = &attr_packet_transmit_counter, .name = "Packet-Transmit-Counter", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 2cd741e68c48e1218fb64fb903e6f1d0038a39b6..d6b2a2d6efdf4811ddfabf5faf75d6f596693789 100644 (file)
@@ -97,7 +97,7 @@ static fr_dict_t const *dict_dhcpv4;
 extern fr_dict_autoload_t proto_dhcpv4_dict[];
 fr_dict_autoload_t proto_dhcpv4_dict[] = {
        { .out = &dict_dhcpv4, .proto = "dhcpv4" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_message_type;
@@ -107,7 +107,7 @@ extern fr_dict_attr_autoload_t proto_dhcpv4_dict_attr[];
 fr_dict_attr_autoload_t proto_dhcpv4_dict_attr[] = {
        { .out = &attr_message_type, .name = "Message-Type", .type = FR_TYPE_UINT8, .dict = &dict_dhcpv4},
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_dhcpv4},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Translates the packet-type into a submodule name
index 9cfb89fc4d0b7e1c26966120497a984b958ce807..a30a5a1ed265b03133f0d54ee1751a30fea7cb2c 100644 (file)
@@ -136,7 +136,7 @@ static fr_dict_t const *dict_dhcpv4;
 extern fr_dict_autoload_t proto_dhcpv4_udp_dict[];
 fr_dict_autoload_t proto_dhcpv4_udp_dict[] = {
        { .out = &dict_dhcpv4, .proto = "dhcpv4" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_message_type;
@@ -146,7 +146,7 @@ extern fr_dict_attr_autoload_t proto_dhcpv4_udp_dict_attr[];
 fr_dict_attr_autoload_t proto_dhcpv4_udp_dict_attr[] = {
        { .out = &attr_message_type, .name = "Message-Type", .type = FR_TYPE_UINT8, .dict = &dict_dhcpv4},
        { .out = &attr_dhcp_server_identifier, .name = "Server-Identifier", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_dhcpv4},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #ifdef HAVE_LIBPCAP
index b536b24e09b8ee7e72de813d6ff2bc7879f0b6a2..3acbad60f94ee304e13b13ba9a983906749651b1 100644 (file)
@@ -97,7 +97,7 @@ static fr_dict_t const *dict_dhcpv6;
 extern fr_dict_autoload_t proto_dhcpv6_dict[];
 fr_dict_autoload_t proto_dhcpv6_dict[] = {
        { .out = &dict_dhcpv6, .proto = "dhcpv6" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -107,7 +107,7 @@ extern fr_dict_attr_autoload_t proto_dhcpv6_dict_attr[];
 fr_dict_attr_autoload_t proto_dhcpv6_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_dhcpv6},
        { .out = &attr_client_id, .name = "Client-Id", .type = FR_TYPE_STRUCT, .dict = &dict_dhcpv6},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Translates the packet-type into a submodule name
index 3535e3ed31316abf714ece8ce64e77be7ee4f613..49302eed29d5481cbb942e073a150e57811ec98f 100644 (file)
@@ -113,7 +113,7 @@ static fr_dict_t const *dict_dhcpv6;
 extern fr_dict_autoload_t proto_dhcpv6_udp_dict[];
 fr_dict_autoload_t proto_dhcpv6_udp_dict[] = {
        { .out = &dict_dhcpv6, .proto = "dhcpv6" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -125,7 +125,7 @@ fr_dict_attr_autoload_t proto_dhcpv6_udp_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_dhcpv6},
        { .out = &attr_client_id, .name = "Client-ID", .type = FR_TYPE_STRUCT, .dict = &dict_dhcpv6},
        { .out = &attr_relay_message, .name = "Relay-Message", .type = FR_TYPE_GROUP, .dict = &dict_dhcpv6 },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static ssize_t mod_read(fr_listen_t *li, void **packet_ctx, fr_time_t *recv_time_p, uint8_t *buffer, size_t buffer_len,
index c47f949ccbf45b0d85813abd0107fa32e3815486..66723faddf989376859d4a43fa819ef3654c9734 100644 (file)
@@ -72,7 +72,7 @@ static fr_dict_t const *dict_dns;
 extern fr_dict_autoload_t proto_dns_dict[];
 fr_dict_autoload_t proto_dns_dict[] = {
        { .out = &dict_dns, .proto = "dns" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -80,7 +80,7 @@ static fr_dict_attr_t const *attr_packet_type;
 extern fr_dict_attr_autoload_t proto_dns_dict_attr[];
 fr_dict_attr_autoload_t proto_dns_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_dns},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Translates the packet-type into a submodule name
index 02cf550ea70601fcf670fc28da9e58d3fec15cf0..75c0a069014c2535bff9b8cb9019f3acae362a3b 100644 (file)
@@ -102,7 +102,7 @@ static fr_dict_t const *dict_dns;
 extern fr_dict_autoload_t proto_dns_udp_dict[];
 fr_dict_autoload_t proto_dns_udp_dict[] = {
        { .out = &dict_dns, .proto = "dns" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -111,7 +111,7 @@ extern fr_dict_attr_autoload_t proto_dns_udp_dict_attr[];
 fr_dict_attr_autoload_t proto_dns_udp_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_dns},
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static ssize_t mod_read(fr_listen_t *li, void **packet_ctx, fr_time_t *recv_time_p, uint8_t *buffer, size_t buffer_len,
index 68e24157df408e99de9807e0261c28dbf49b7738..b9658b95fadf5c039e716db6fea45fae1e314a6d 100644 (file)
@@ -70,7 +70,7 @@ static fr_dict_t const *dict_ldap_sync;
 extern fr_dict_autoload_t proto_ldap_sync_dict[];
 fr_dict_autoload_t proto_ldap_sync_dict[] = {
        { .out = &dict_ldap_sync, .proto = "ldap" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_ldap_sync_packet_id;
@@ -90,7 +90,7 @@ fr_dict_attr_autoload_t proto_ldap_sync_dict_attr[] = {
        { .out = &attr_ldap_sync_scope, .name = "LDAP-Sync.Scope", .type = FR_TYPE_UINT32, .dict = &dict_ldap_sync },
        { .out = &attr_ldap_sync_filter, .name = "LDAP-Sync.Filter", .type = FR_TYPE_STRING, .dict = &dict_ldap_sync },
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_ldap_sync },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Check if an attribute is in the config list and add if not present
index b8f3ba8ef18023e20e6e63edde7224aba95408fe..10db36e787c7e3609de3d6db4f462ee5b42c2873 100644 (file)
@@ -73,7 +73,7 @@ extern fr_dict_autoload_t proto_ldap_sync_ldap_dict[];
 fr_dict_autoload_t proto_ldap_sync_ldap_dict[] = {
        { .out = &dict_ldap_sync, .proto = "ldap" },
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_ldap_sync_packet_id;
@@ -95,7 +95,7 @@ fr_dict_attr_autoload_t proto_ldap_sync_ldap_dict_attr[] = {
        { .out = &attr_ldap_sync_root_dn, .name = "LDAP-Sync.Directory-Root-DN", .type = FR_TYPE_STRING, .dict = &dict_ldap_sync },
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_ldap_sync },
        { .out = &attr_ldap_sync_base_dn, .name = "LDAP-Sync-Base-DN", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 extern global_lib_autoinst_t const *proto_ldap_sync_ldap_lib[];
index bc96532161316154fa283bdcba64d5affecadf49..cbb31738c9c35feb5ff33a19cc58febdbac8e124 100644 (file)
@@ -111,7 +111,7 @@ static fr_dict_t const *dict_radius;
 extern fr_dict_autoload_t proto_radius_dict[];
 fr_dict_autoload_t proto_radius_dict[] = {
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -133,7 +133,7 @@ fr_dict_attr_autoload_t proto_radius_dict_attr[] = {
        { .out = &attr_eap_message, .name = "EAP-Message", .type = FR_TYPE_OCTETS, .dict = &dict_radius},
        { .out = &attr_packet_id, .name = "Packet.Id", .type = FR_TYPE_UINT8, .dict = &dict_radius},
        { .out = &attr_packet_authenticator, .name = "Packet.Authenticator", .type = FR_TYPE_OCTETS, .dict = &dict_radius},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Translates the packet-type into a submodule name
index a9a1e73c9a1cb648e0a9b82bb3f4c0ce2edf45a7..fb6ac99d3f95679fba6abfc147baa69b485b7275 100644 (file)
@@ -79,7 +79,7 @@ static fr_dict_t const *dict_tacacs;
 extern fr_dict_autoload_t proto_tacacs_dict[];
 fr_dict_autoload_t proto_tacacs_dict[] = {
        { .out = &dict_tacacs, .proto = "tacacs" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 
@@ -90,7 +90,7 @@ extern fr_dict_attr_autoload_t proto_tacacs_dict_attr[];
 fr_dict_attr_autoload_t proto_tacacs_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_tacacs},
        { .out = &attr_tacacs_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_tacacs },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
index 5c5d2b02f177d6a4888588d5232f234ad5d2bff2..982f06525127a70bea8777e727227e8bf592f457 100644 (file)
@@ -77,7 +77,7 @@ static fr_dict_t const *dict_vmps;
 extern fr_dict_autoload_t proto_vmps_dict[];
 fr_dict_autoload_t proto_vmps_dict[] = {
        { .out = &dict_vmps, .proto = "vmps" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -85,7 +85,7 @@ static fr_dict_attr_t const *attr_packet_type;
 extern fr_dict_attr_autoload_t proto_vmps_dict_attr[];
 fr_dict_attr_autoload_t proto_vmps_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_vmps},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Translates the packet-type into a submodule name
index 28632280953943c96312b9590c861bc504652efa..a57acfa1256ac9300d92d1a9868de19ac0a1c5e9 100644 (file)
@@ -63,7 +63,7 @@ extern fr_dict_autoload_t rlm_attr_filter_dict[];
 fr_dict_autoload_t rlm_attr_filter_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_stripped_user_name;
@@ -79,7 +79,7 @@ fr_dict_attr_autoload_t rlm_attr_filter_dict_attr[] = {
        { .out = &attr_relax_filter, .name = "Relax-Filter", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
 
        { .out = &attr_vendor_specific, .name = "Vendor-Specific", .type = FR_TYPE_VSA, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static const call_env_method_t attr_filter_env = {
index b6d04492dffd03d183423d843752b323fd2d0b93..b23fe6d077db93621741df3d9f2ddeb5e0e4823b 100644 (file)
@@ -50,7 +50,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_cache_redis_dict[];
 fr_dict_autoload_t rlm_cache_redis_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_cache_created;
@@ -60,7 +60,7 @@ extern fr_dict_attr_autoload_t rlm_cache_redis_dict_attr[];
 fr_dict_attr_autoload_t rlm_cache_redis_dict_attr[] = {
        { .out = &attr_cache_created, .name = "Cache-Created", .type = FR_TYPE_DATE, .dict = &dict_freeradius },
        { .out = &attr_cache_expires, .name = "Cache-Expires", .type = FR_TYPE_DATE, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Create a new rlm_cache_redis instance
index 6270bfb420c0983ee86b71e0e0f09270b2adee04..bbf24f007951358d2ed2a918a7b5b2c3cef9906a 100644 (file)
@@ -84,7 +84,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_cache_dict[];
 fr_dict_autoload_t rlm_cache_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_cache_merge_new;
@@ -102,7 +102,7 @@ fr_dict_attr_autoload_t rlm_cache_dict_attr[] = {
        { .out = &attr_cache_allow_insert, .name = "Cache-Allow-Insert", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
        { .out = &attr_cache_ttl, .name = "Cache-TTL", .type = FR_TYPE_INT32, .dict = &dict_freeradius },
        { .out = &attr_cache_entry_hits, .name = "Cache-Entry-Hits", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 int submodule_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
index faeabd8f39c56ee54a3e988a014d8d6da67703cc..d4793609c541c6ddb5d3e64ee71df5ab514363e7 100644 (file)
@@ -109,7 +109,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_chap_dict[];
 fr_dict_autoload_t rlm_chap_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -120,7 +120,7 @@ fr_dict_attr_autoload_t rlm_chap_dict_attr[] = {
        { .out = &attr_auth_type, .name = "Auth-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
        { .out = &attr_cleartext_password, .name = "Password.Cleartext", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static xlat_arg_parser_t const xlat_func_chap_password_args[] = {
index 60f30d0a663de84e2d391f70e8edae8fd65251a4..1e670b5d7611a4da581a3e0f213f50a7af96b004 100644 (file)
@@ -118,7 +118,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_crl_dict[];
 fr_dict_autoload_t rlm_crl_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_crl_data;
@@ -128,7 +128,7 @@ extern fr_dict_attr_autoload_t rlm_crl_dict_attr[];
 fr_dict_attr_autoload_t rlm_crl_dict_attr[] = {
        { .out = &attr_crl_data, .name = "CRL.Data", .type = FR_TYPE_OCTETS, .dict = &dict_freeradius },
        { .out = &attr_crl_cdp_url, .name = "CRL.CDP-URL", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct {
index c0928e39b4c984cbd22c26b68d5561b0409e26dd..c9507c96d10de4e59721783cdc692b86d836e4ca 100644 (file)
@@ -90,7 +90,7 @@ extern fr_dict_autoload_t rlm_detail_dict[];
 fr_dict_autoload_t rlm_detail_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_net;
@@ -107,7 +107,7 @@ fr_dict_attr_autoload_t rlm_detail_dict_attr[] = {
        { .out = &attr_net_src_address, .name = "Net.Src.IP", .type = FR_TYPE_COMBO_IP_ADDR, .dict = &dict_freeradius },
        { .out = &attr_net_src_port, .name = "Net.Src.Port", .type = FR_TYPE_UINT16, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Print one attribute and value to FP
index 86d6491cc7b4b3106314a2b1531791690bb67ac7..2ee81949f664d948b5460c831bda11768a25ff7d 100644 (file)
@@ -38,7 +38,7 @@ extern fr_dict_autoload_t rlm_dhcpv4_dict[];
 fr_dict_autoload_t rlm_dhcpv4_dict[] = {
        { .out = &dict_dhcpv4, .proto = "dhcpv4" },
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_transaction_id;
@@ -56,7 +56,7 @@ fr_dict_attr_autoload_t rlm_dhcpv4_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_dhcpv4 },
        { .out = &attr_net_dst_ip, .name = "Net.Dst.IP", .type = FR_TYPE_COMBO_IP_ADDR, .dict = &dict_freeradius },
        { .out = &attr_net_dst_port, .name = "Net.Dst.Port", .type = FR_TYPE_UINT16, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 
index 1dcf53ccac3fc55a0c2619dc8ff0e6b7ddc2bfe7..2fa2a57479e11bdac0fdd7106e7a1d10f7c89407 100644 (file)
@@ -41,7 +41,7 @@ extern fr_dict_autoload_t rlm_digest_dict[];
 fr_dict_autoload_t rlm_digest_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static const fr_dict_attr_t *attr_auth_type;
@@ -80,7 +80,7 @@ fr_dict_attr_autoload_t rlm_digest_dict_attr[] = {
        { .out = &attr_digest_uri, .name = "Digest-Attributes.Uri", .type = FR_TYPE_STRING, .dict = &dict_radius },
        { .out = &attr_digest_user_name, .name = "Digest-Attributes.User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static unlang_action_t CC_HINT(nonnull) mod_authorize(unlang_result_t *p_result, module_ctx_t const *mctx, request_t *request)
index 1f80c6de46b7458c9866d1ff76961884ec32bc1e..47dc05b5d0cb22d1b757b2511743047bcb628c4b 100644 (file)
@@ -129,7 +129,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_dpsk_dict[];
 fr_dict_autoload_t rlm_dpsk_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -138,7 +138,7 @@ extern fr_dict_attr_autoload_t rlm_dpsk_dict_attr[];
 fr_dict_attr_autoload_t rlm_dpsk_dict_attr[] = {
        { .out = &attr_auth_type, .name = "Auth-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static const conf_parser_t module_config[] = {
index 05c2ac08f1b3e2454b608f5917816f0429a27b8f..fa78a6e47aa6b70bb853b3151840f996d053fa61 100644 (file)
@@ -86,7 +86,7 @@ extern fr_dict_autoload_t rlm_eap_dict[];
 fr_dict_autoload_t rlm_eap_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -114,7 +114,7 @@ fr_dict_attr_autoload_t rlm_eap_dict_attr[] = {
        { .out = &attr_state, .name = "State", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static unlang_action_t mod_authenticate(unlang_result_t *p_result, module_ctx_t const *mctx, request_t *request) CC_HINT(nonnull);
index 756481694ebbac27c9f757c3fa5468974ba777da..299f97da54b70f93e90a22df82decd4666c2f7c4 100644 (file)
@@ -92,7 +92,7 @@ fr_dict_autoload_t rlm_eap_fast_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
        { .out = &dict_eap_fast, .base_dir = "eap/fast", .proto = "eap-fast" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_eap_emsk;
@@ -181,7 +181,7 @@ fr_dict_attr_autoload_t rlm_eap_fast_dict_attr[] = {
        { .out = &attr_eap_fast_result, .name = "Result", .type = FR_TYPE_UINT16, .dict = &dict_eap_fast },
        { .out = &attr_eap_fast_vendor_specific, .name = "Vendor-Specific", .type = FR_TYPE_OCTETS, .dict = &dict_eap_fast },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #define RANDFILL(x) do { fr_assert(sizeof(x) % sizeof(uint32_t) == 0); for (size_t i = 0; i < sizeof(x); i += sizeof(uint32_t)) *((uint32_t *)&x[i]) = fr_rand(); } while(0)
index da665bd093e7bfbb61b1fc8285df550440ecb04f..5518a2afc884c7380bcf69af0a408020e4ce8104 100644 (file)
@@ -60,7 +60,7 @@ extern fr_dict_autoload_t rlm_eap_gtc_dict[];
 fr_dict_autoload_t rlm_eap_gtc_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -70,7 +70,7 @@ extern fr_dict_attr_autoload_t rlm_eap_gtc_dict_attr[];
 fr_dict_attr_autoload_t rlm_eap_gtc_dict_attr[] = {
        { .out = &attr_auth_type, .name = "Auth-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
        { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static unlang_action_t mod_session_init(unlang_result_t *p_result, module_ctx_t const *mctx, request_t *request);
index 7c544449ac77106ace72fff636333d1d44c60c47..788c34ddb02f483f2cbc98831f2e9b925ac4a5ee 100644 (file)
@@ -35,7 +35,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_eap_md5_dict[];
 fr_dict_autoload_t rlm_eap_md5_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_cleartext_password;
@@ -43,7 +43,7 @@ static fr_dict_attr_t const *attr_cleartext_password;
 extern fr_dict_attr_autoload_t rlm_eap_md5_dict_attr[];
 fr_dict_attr_autoload_t rlm_eap_md5_dict_attr[] = {
        { .out = &attr_cleartext_password, .name = "Password.Cleartext", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 6eba0a622b1461e9f5fb5da2a9a1d51ab11609f6..1d982ee5f6a807e235d612d95257aa3030e21223 100644 (file)
@@ -63,7 +63,7 @@ extern fr_dict_autoload_t rlm_eap_mschapv2_dict[];
 fr_dict_autoload_t rlm_eap_mschapv2_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -105,7 +105,7 @@ fr_dict_attr_autoload_t rlm_eap_mschapv2_dict_attr[] = {
        { .out = &attr_ms_mppe_recv_key, .name = "Vendor-Specific.Microsoft.MPPE-Recv-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
        { .out = &attr_state, .name = "State", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static void mppe_keys_store(request_t *request, mschapv2_opaque_t *data)
index 09eed869b36e6a7d79a82824f617870c24348ccb..d879b54d9ad12ae87200886ccd5e211949cc2739 100644 (file)
@@ -96,7 +96,7 @@ extern fr_dict_autoload_t rlm_eap_peap_dict[];
 fr_dict_autoload_t rlm_eap_peap_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_auth_type;
@@ -112,7 +112,7 @@ fr_dict_attr_autoload_t rlm_eap_peap_dict_attr[] = {
 
        { .out = &attr_eap_message, .name = "EAP-Message", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 
index e6e469f6bfe363579e648a4d9279265c481867db..429f7b06c8b5ac2659f4e762f32d9052c9325528 100644 (file)
@@ -65,7 +65,7 @@ extern fr_dict_autoload_t rlm_eap_pwd_dict[];
 fr_dict_autoload_t rlm_eap_pwd_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_cleartext_password;
@@ -79,7 +79,7 @@ fr_dict_attr_autoload_t rlm_eap_pwd_dict_attr[] = {
        { .out = &attr_framed_mtu, .name = "Framed-MTU", .type = FR_TYPE_UINT32, .dict = &dict_radius },
        { .out = &attr_ms_mppe_send_key, .name = "Vendor-Specific.Microsoft.MPPE-Send-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
        { .out = &attr_ms_mppe_recv_key, .name = "Vendor-Specific.Microsoft.MPPE-Recv-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static int send_pwd_request(request_t *request, pwd_session_t *session, eap_round_t *eap_round)
index 9811b83572191c3fab8a7a81b8ca6a83aa66d713..1ac0d9c62989b3be1833501d49ee14c5e5a3f632 100644 (file)
@@ -55,7 +55,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_eap_tls_dict[];
 fr_dict_autoload_t rlm_eap_tls_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_eap_tls_require_client_cert;
@@ -63,7 +63,7 @@ static fr_dict_attr_t const *attr_eap_tls_require_client_cert;
 extern fr_dict_attr_autoload_t rlm_eap_tls_dict_attr[];
 fr_dict_attr_autoload_t rlm_eap_tls_dict_attr[] = {
        { .out = &attr_eap_tls_require_client_cert, .name = "EAP-TLS-Require-Client-Cert", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static unlang_action_t mod_handshake_done(unlang_result_t *p_result, UNUSED module_ctx_t const *mctx,
index 2df37f0e540692ac185cb0d4c079d883f5b665a5..71d4f4ebe1dac9464132143e089e76e98ffe8708 100644 (file)
@@ -88,7 +88,7 @@ extern fr_dict_autoload_t rlm_eap_ttls_dict[];
 fr_dict_autoload_t rlm_eap_ttls_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_eap_tls_require_client_cert;
@@ -116,7 +116,7 @@ fr_dict_attr_autoload_t rlm_eap_ttls_dict_attr[] = {
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
        { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
        { .out = &attr_vendor_specific, .name = "Vendor-Specific", .type = FR_TYPE_VSA, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 
index a0075ab85301fa4b6be36a8d0fa3fa6cc396bc54..0ab24c547f771bdc0abe438fa234b415fbd18ccd 100644 (file)
@@ -64,7 +64,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_files_dict[];
 fr_dict_autoload_t rlm_files_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_fall_through;
@@ -75,7 +75,7 @@ fr_dict_attr_autoload_t rlm_files_dict_attr[] = {
        { .out = &attr_fall_through, .name = "Fall-Through", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
        { .out = &attr_next_shortest_prefix, .name = "Next-Shortest-Prefix", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static const conf_parser_t module_config[] = {
index 3c2d33f3f15ecc6291d3c03ea5e5497560356a2e..5da277037732422e833bf2d74a301d0377ce34f8 100644 (file)
@@ -38,14 +38,14 @@ static fr_dict_attr_t       const           *attr_user_name;
 extern fr_dict_autoload_t rlm_imap_dict[];
 fr_dict_autoload_t rlm_imap_dict[] = {
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 extern fr_dict_attr_autoload_t rlm_imap_dict_attr[];
 fr_dict_attr_autoload_t rlm_imap_dict_attr[] = {
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
        { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL },
+       DICT_AUTOLOAD_TERMINATOR,
 };
 
 extern global_lib_autoinst_t const * const rlm_imap_lib[];
index cda22f99fec4dd30490ffcba89841cd37a50b92d..27a9df97821e2e0d8e443c5ef73ff16b39eb8840 100644 (file)
@@ -37,7 +37,7 @@ static fr_dict_t const *dict_dhcpv4;
 extern fr_dict_autoload_t rlm_isc_dhcp_dict[];
 fr_dict_autoload_t rlm_isc_dhcp_dict[] = {
        { .out = &dict_dhcpv4, .proto = "dhcpv4" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_client_hardware_address;
@@ -58,7 +58,7 @@ fr_dict_attr_autoload_t rlm_isc_dhcp_dict_attr[] = {
        { .out = &attr_server_ip_address, .name = "Server-IP-Address", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_dhcpv4},
        { .out = &attr_server_identifier, .name = "Server-Identifier", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_dhcpv4},
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct rlm_isc_dhcp_info_s rlm_isc_dhcp_info_t;
index 3b45bd3f9fce2d4bad3b452dda3c97edac3814bc..78556eb33628ba1525c4e9f47914f87c51f36e24 100644 (file)
@@ -319,7 +319,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_ldap_dict[];
 fr_dict_autoload_t rlm_ldap_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_password;
@@ -340,7 +340,7 @@ fr_dict_attr_autoload_t rlm_ldap_dict_attr[] = {
        { .out = &attr_password_with_header, .name = "Password.With-Header", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_expr_bool_enum, .name = "Expr-Bool-Enum", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 extern global_lib_autoinst_t const *rlm_ldap_lib[];
index a0ab1cf417e264b72ed31757db309aa74d9bccd0..e1830727f17f0302a9bed4ebdc10b85e2737fd05 100644 (file)
@@ -181,7 +181,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_logtee_dict[];
 fr_dict_autoload_t rlm_logtee_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_log_level;
@@ -193,7 +193,7 @@ fr_dict_attr_autoload_t rlm_logtee_dict_attr[] = {
        { .out = &attr_log_level, .name = "Log-Level", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
        { .out = &attr_log_message, .name = "Log-Message", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_log_type, .name = "Log-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static void logtee_fd_idle(rlm_logtee_thread_t *t);
index 16aacf4c3ed53cdee2c2e09e579dc4b8bb06aedd..420f8e4ddcd410c9b52ee459c481752ae7e6bd60 100644 (file)
@@ -227,7 +227,7 @@ extern fr_dict_autoload_t rlm_mschap_dict[];
 fr_dict_autoload_t rlm_mschap_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_auth_type;
@@ -256,7 +256,7 @@ fr_dict_attr_autoload_t rlm_mschap_dict_attr[] = {
        { .out = &attr_smb_account_ctrl_text, .name = "SMB-Account-Ctrl-Text", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_smb_account_ctrl, .name = "SMB-Account-Ctrl", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_pair_t *mschap_identity_find(request_t *request, fr_dict_attr_t const *attr_user_name)
index 12802c974b18aecaffe15feb4628a4893299b0d0..39d5777d04e397f74152e988ef4cbdcafced26fd 100644 (file)
@@ -67,7 +67,7 @@ extern fr_dict_autoload_t rlm_opendirectory_dict[];
 fr_dict_autoload_t rlm_opendirectory_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -79,7 +79,7 @@ fr_dict_attr_autoload_t rlm_opendirectory_dict_attr[] = {
        { .out = &attr_auth_type, .name = "Auth-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
        { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 2077e46e7cffad86543f5e0f30963291e26224d5..3036db41ade59bfa4a82daa0079f4b2a288d7f4b 100644 (file)
@@ -70,7 +70,7 @@ extern fr_dict_autoload_t rlm_pam_dict[];
 fr_dict_autoload_t rlm_pam_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_pam_auth;
@@ -82,7 +82,7 @@ fr_dict_attr_autoload_t rlm_pam_dict_attr[] = {
        { .out = &attr_pam_auth, .name = "Pam-Auth", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
        { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static int mod_instantiate(module_inst_ctx_t const *mctx)
index 2e4d15bf9609eea3229dbb0bb4769fc394e4e429..d0678626e900517feeb340d898f9d5195c0510d3 100644 (file)
@@ -103,7 +103,7 @@ static fr_dict_t const *dict_freeradius;
 
 static fr_dict_autoload_t rlm_pap_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -113,7 +113,7 @@ static fr_dict_attr_autoload_t rlm_pap_dict_attr[] = {
        { .out = &attr_auth_type, .name = "Auth-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
        { .out = &attr_root, .name = "Password", .type = FR_TYPE_TLV, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #ifdef HAVE_OPENSSL_EVP_H
index 753b0ee33dd0323f56aea3e3ba4843e889a9ab46..ee725b89858f7bd610b76691877f1edee854428b 100644 (file)
@@ -53,7 +53,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_passwd_dict[];
 fr_dict_autoload_t rlm_passwd_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #ifdef TEST
index 26120db98034064bdc1926c0e3cf9c4b82f4c585..253fa99c34a1f3a8d8b63ef9606560d2c0b12439 100644 (file)
@@ -175,7 +175,7 @@ static fr_dict_t const *dict_radius;
 extern fr_dict_autoload_t rlm_radius_dict[];
 fr_dict_autoload_t rlm_radius_dict[] = {
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_chap_challenge;
@@ -210,7 +210,7 @@ fr_dict_attr_autoload_t rlm_radius_dict_attr[] = {
        { .out = &attr_response_length, .name = "Extended-Attribute-1.Response-Length", .type = FR_TYPE_UINT32, .dict = &dict_radius },
        { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius},
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #include "bio.c"
index 1febd0008ebcd104af4364945030daee460eb54d..5e376c9246d7cd0acd77b78c0f8f37ed25060153 100644 (file)
@@ -82,7 +82,7 @@ static fr_dict_t const *dict_radius;
 extern fr_dict_autoload_t rlm_rediswho_dict[];
 fr_dict_autoload_t rlm_rediswho_dict[] = {
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_acct_status_type;
@@ -90,7 +90,7 @@ static fr_dict_attr_t const *attr_acct_status_type;
 extern fr_dict_attr_autoload_t rlm_rediswho_dict_attr[];
 fr_dict_attr_autoload_t rlm_rediswho_dict_attr[] = {
        { .out = &attr_acct_status_type, .name = "Acct-Status-Type", .type = FR_TYPE_UINT32, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 2fc59b55bc5d2395ab1042d2b6f69ed37ec36a98..b80c264aca40f31878377e26ca4444e80584cc6e 100644 (file)
@@ -249,7 +249,7 @@ fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_rest_dict[];
 fr_dict_autoload_t rlm_rest_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_rest_http_body;
@@ -261,7 +261,7 @@ fr_dict_attr_autoload_t rlm_rest_dict_attr[] = {
        { .out = &attr_rest_http_body, .name = "REST-HTTP-Body", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_rest_http_header, .name = "REST-HTTP-Header", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_rest_http_status_code, .name = "REST-HTTP-Status-Code", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 extern global_lib_autoinst_t const * const rlm_rest_lib[];
index b0373e1b273da4b06e0f67119ab5832bec5870d3..a63a969c4e619011fec79782a8c1e0a431e3b132 100644 (file)
@@ -54,7 +54,7 @@ static fr_dict_t const *dict_radius;
 extern fr_dict_autoload_t mem_dict[];
 fr_dict_autoload_t mem_dict[] = {
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_prompt;
@@ -70,7 +70,7 @@ fr_dict_attr_autoload_t mem_dict_attr[] = {
        { .out = &attr_state, .name = "State", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
        { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static SD_CHAR empty_pin[] = "";
index ad16f22d9bb98a9e0ce3f7b25b87944d15827185..9305f8d11af2a0aa23f6a63e4e4a43fb8162072c 100644 (file)
@@ -179,7 +179,7 @@ fr_dict_attr_t const *attr_eap_aka_sim_rand;
 extern fr_dict_autoload_t rlm_sigtran_dict[];
 fr_dict_autoload_t rlm_sigtran_dict[] = {
        { .out = &dict_eap_aka_sim, .base_dir = "eap/aka-sim", .proto = "eap-aka-sim" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_auth_type;
@@ -194,7 +194,7 @@ fr_dict_attr_autoload_t rlm_sigtran_dict_attr[] = {
        { .out = &attr_eap_aka_sim_sres, .name = "SRES", .type = FR_TYPE_OCTETS, .dict = &dict_eap_aka_sim },
        { .out = &attr_eap_aka_sim_xres, .name = "XRES", .type = FR_TYPE_OCTETS, .dict = &dict_eap_aka_sim },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static unlang_action_t CC_HINT(nonnull) mod_authorize(unlang_result_t *p_result, module_ctx_t const *mctx, request_t *request)
index 6cfd79a6bc24f0a3dcf105023be31afad24689c2..33183bb1aa6bd67d65ad266010757606f2a949b7 100644 (file)
@@ -41,7 +41,7 @@ static fr_dict_t const        *dict_freeradius;
 extern fr_dict_autoload_t rlm_smtp_dict[];
 fr_dict_autoload_t rlm_smtp_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius"},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const    *attr_smtp_header;
@@ -51,7 +51,7 @@ extern fr_dict_attr_autoload_t rlm_smtp_dict_attr[];
 fr_dict_attr_autoload_t rlm_smtp_dict_attr[] = {
        { .out = &attr_smtp_header, .name = "SMTP-Mail-Header", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_smtp_body, .name = "SMTP-Mail-Body", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
-       { NULL },
+       DICT_AUTOLOAD_TERMINATOR,
 };
 
 extern global_lib_autoinst_t const * const rlm_smtp_lib[];
index 158880d61a7fb7472ae7f1fbc6f2e498664c5e9d..0e37d91601d345f8617c19a5d9cbf5804e9ae891 100644 (file)
@@ -98,7 +98,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_sql_dict[];
 fr_dict_autoload_t rlm_sql_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_fall_through;
@@ -112,7 +112,7 @@ fr_dict_attr_autoload_t rlm_sql_dict_attr[] = {
        { .out = &attr_sql_user_name, .name = "SQL-User-Name", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_user_profile, .name = "User-Profile", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_expr_bool_enum, .name = "Expr-Bool-Enum", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct {
index ec4bb221f6a5236287fd68dbd055bcfe9c30d8a7..de6badf1bf1750cd2cfae839f080c381290fc989 100644 (file)
@@ -114,7 +114,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_sqlcounter_dict[];
 fr_dict_autoload_t rlm_sqlcounter_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static int find_next_reset(rlm_sqlcounter_t *inst, fr_time_t now)
index 6df195dd7550543562d760561747324322be8a28..8253d3c3a852b42ad15c511336d6c6c831d8ff0b 100644 (file)
@@ -95,7 +95,7 @@ static fr_dict_t const *dict_radius;
 extern fr_dict_autoload_t rlm_stats_dict[];
 fr_dict_autoload_t rlm_stats_dict[] = {
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_freeradius_stats4_ipv4_address;
@@ -109,7 +109,7 @@ fr_dict_attr_autoload_t rlm_stats_dict_attr[] = {
        { .out = &attr_freeradius_stats4_ipv6_address, .name = "Vendor-Specific.FreeRADIUS.Stats4.IPv6-Address", .type = FR_TYPE_IPV6_ADDR, .dict = &dict_radius },
        { .out = &attr_freeradius_stats4_type, .name = "Vendor-Specific.FreeRADIUS.Stats4.Type", .type = FR_TYPE_UINT32, .dict = &dict_radius },
        { .out = &attr_freeradius_stats4_packet_counters, .name = "Vendor-Specific.FreeRADIUS.Stats4.Packet-Counters", .type = FR_TYPE_TLV, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static void coalesce(uint64_t final_stats[FR_RADIUS_CODE_MAX], rlm_stats_thread_t *t,
index 99e1194d166e1fb3453a2d9696191ae95613a514..a295c915f7bd7deac058de135c540fd315ca6030 100644 (file)
@@ -74,7 +74,7 @@ static fr_dict_t const *dict_tacacs;
 extern fr_dict_autoload_t rlm_tacacs_dict[];
 fr_dict_autoload_t rlm_tacacs_dict[] = {
        { .out = &dict_tacacs, .proto = "tacacs" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -82,7 +82,7 @@ static fr_dict_attr_t const *attr_packet_type;
 extern fr_dict_attr_autoload_t rlm_tacacs_dict_attr[];
 fr_dict_attr_autoload_t rlm_tacacs_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_tacacs },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Set which types of packets we can parse
index 6d88be9981d121dd38e1a24c4d80a2f1164ce241..a4bd6c83708797a345ac3f1feeedf26c34a1a8c8 100644 (file)
@@ -199,7 +199,7 @@ static fr_dict_t const *dict_tacacs;
 extern fr_dict_autoload_t rlm_tacacs_tcp_dict[];
 fr_dict_autoload_t rlm_tacacs_tcp_dict[] = {
        { .out = &dict_tacacs, .proto = "tacacs" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -211,7 +211,7 @@ fr_dict_attr_autoload_t rlm_tacacs_tcp_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_tacacs },
        { .out = &attr_packet_hdr, .name = "Packet", .type = FR_TYPE_STRUCT, .dict = &dict_tacacs },
        { .out = &attr_session_id, .name = "Packet.Session-ID", .type = FR_TYPE_UINT32, .dict = &dict_tacacs },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Clear out any connection specific resources from a tcp request
index 124f2d44926270c58646b884af60ff1e7215e25b..2ca186fae37b5789a073e76e220f8a91e5852047 100644 (file)
@@ -181,7 +181,7 @@ static fr_dict_t const *dict_radius;
 extern fr_dict_autoload_t rlm_test_dict[];
 fr_dict_autoload_t rlm_test_dict[] = {
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_user_name;
@@ -189,7 +189,7 @@ static fr_dict_attr_t const *attr_user_name;
 extern fr_dict_attr_autoload_t rlm_test_dict_attr[];
 fr_dict_attr_autoload_t rlm_test_dict_attr[] = {
        { .out = &attr_user_name, .name = "User-Name", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index eacf37d34924313a20f5bb1e0012f3538568ed8d..adf0859b21233ae1dc7300ab3cc432ab67eea45f 100644 (file)
@@ -52,7 +52,7 @@ extern fr_dict_autoload_t rlm_unix_dict[];
 fr_dict_autoload_t rlm_unix_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -80,7 +80,7 @@ fr_dict_attr_autoload_t rlm_unix_dict_attr[] = {
        { .out = &attr_acct_status_type, .name = "Acct-Status-Type", .type = FR_TYPE_UINT32, .dict = &dict_radius },
        { .out = &attr_acct_delay_time, .name = "Acct-Delay-Time", .type = FR_TYPE_UINT32, .dict = &dict_radius },
        { .out = &attr_expr_bool_enum, .name = "Expr-Bool-Enum", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /** Check if the user is in the given group
index 671a4ba63de735f749d16ad1f39466d0c764d569..3a849bb49e239d61d88d0197e34ebb5b2cf84356 100644 (file)
@@ -56,7 +56,7 @@ extern fr_dict_autoload_t rlm_wimax_dict[];
 fr_dict_autoload_t rlm_wimax_dict[] = {
        { .out = &dict_radius, .proto = "radius" },
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_eap_emsk;
@@ -107,7 +107,7 @@ fr_dict_attr_autoload_t rlm_wimax_dict_attr[] = {
        { .out = &attr_ms_mppe_send_key, .name = "Vendor-Specific.Microsoft.MPPE-Send-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
        { .out = &attr_ms_mppe_recv_key, .name = "Vendor-Specific.Microsoft.MPPE-Recv-Key", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 4a6b36b490a9db764f3fdadc2c90977dad3e0589..0d62d12fe831b2d19249eb93e6aecf1e5549c8b1 100644 (file)
@@ -62,7 +62,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t rlm_winbind_dict[];
 fr_dict_autoload_t rlm_winbind_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -72,7 +72,7 @@ extern fr_dict_attr_autoload_t rlm_winbind_dict_attr[];
 fr_dict_attr_autoload_t rlm_winbind_dict_attr[] = {
        { .out = &attr_auth_type, .name = "Auth-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius },
        { .out = &attr_expr_bool_enum, .name = "Expr-Bool-Enum", .type = FR_TYPE_BOOL, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct {
index 95057be243e345f7813a0ea46b5be229c0f28126..a1e24bae53a68bae66015806aad3550980932e03 100644 (file)
@@ -57,7 +57,7 @@ extern fr_dict_autoload_t rlm_yubikey_dict[];
 fr_dict_autoload_t rlm_yubikey_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_auth_type;
@@ -81,7 +81,7 @@ fr_dict_attr_autoload_t rlm_yubikey_dict_attr[] = {
        { .out = &attr_yubikey_timestamp, .name = "Vendor-Specific.Yubico.Yubikey-Timestamp", .type = FR_TYPE_UINT32, .dict = &dict_radius },
        { .out = &attr_yubikey_random, .name = "Vendor-Specific.Yubico.Yubikey-Random", .type = FR_TYPE_UINT32, .dict = &dict_radius },
        { .out = &attr_yubikey_otp, .name = "Vendor-Specific.Yubico.Yubikey-OTP", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static char const modhextab[] = "cbdefghijklnrtuv";
index 0a24728fb710e77e157654309cd67e7c8f17ac1e..826bd49a3b2d308b41d82dbce0ce132b7847a5a3 100644 (file)
@@ -31,7 +31,7 @@ static fr_dict_t const *dict_arp;
 extern fr_dict_autoload_t process_arp_dict[];
 fr_dict_autoload_t process_arp_dict[] = {
        { .out = &dict_arp, .proto = "arp" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -39,7 +39,7 @@ static fr_dict_attr_t const *attr_packet_type;
 extern fr_dict_attr_autoload_t process_arp_dict_attr[];
 fr_dict_attr_autoload_t process_arp_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_arp},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct {
index e4704d77bb518c7ef65ca2c4083a14960d3c1207..ef2c3031d6628b528cf8f24484a2dd90a2001beb 100644 (file)
@@ -31,7 +31,7 @@ static fr_dict_t const *dict_bfd;
 extern fr_dict_autoload_t process_bfd_dict[];
 fr_dict_autoload_t process_bfd_dict[] = {
        { .out = &dict_bfd, .proto = "bfd" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -45,7 +45,7 @@ fr_dict_attr_autoload_t process_bfd_dict_attr[] = {
        { .out = &attr_bfd_packet, .name = "Packet", .type = FR_TYPE_STRUCT, .dict = &dict_bfd},
        { .out = &attr_bfd_state, .name = "Packet.state", .type = FR_TYPE_UINT8, .dict = &dict_bfd},
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #define SECTION(_x) \
index 0fed07a1ca2b8e710470ac3de32da41c7beab286..12d2d0480c5222e60fde8b2b238cee65dbab9ac5 100644 (file)
@@ -30,7 +30,7 @@ static fr_dict_t const *dict_freeradius;
 extern fr_dict_autoload_t process_control_dict[];
 fr_dict_autoload_t process_control_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_module_failure_message;
@@ -41,7 +41,7 @@ fr_dict_attr_autoload_t process_control_dict_attr[] = {
        { .out = &attr_module_failure_message, .name = "Module-Failure-Message", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
        { .out = &attr_module_success_message, .name = "Module-Success-Message", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static unlang_action_t mod_process(unlang_result_t *p_result, UNUSED module_ctx_t const *mctx, UNUSED request_t *request)
index 3739e70a168101fba92c71aa44d1d76894240148..9e39f0d83551d8af47807399742b034e76c9a83e 100644 (file)
@@ -36,7 +36,7 @@ static fr_dict_t const *dict_dhcpv4;
 extern fr_dict_autoload_t process_dhcpv4_dict[];
 fr_dict_autoload_t process_dhcpv4_dict[] = {
        { .out = &dict_dhcpv4, .proto = "dhcpv4" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_message_type;
@@ -50,7 +50,7 @@ fr_dict_attr_autoload_t process_dhcpv4_dict_attr[] = {
        { .out = &attr_yiaddr, .name = "Your-IP-Address", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_dhcpv4},
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_dhcpv4},
        { .out = &attr_dhcp_option_82, .name = "Relay-Agent-Information", .type = FR_TYPE_TLV, .dict = &dict_dhcpv4 },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 1e2f5c10fb97a3e5447f3f38b11d552462dc3796..71ac9dabfbbf6cd2084119f632c6409b75a41735 100644 (file)
@@ -122,7 +122,7 @@ extern fr_dict_autoload_t process_dhcpv6_dict[];
 fr_dict_autoload_t process_dhcpv6_dict[] = {
        { .out = &dict_dhcpv6, .proto = "dhcpv6" },
        { .out = &dict_freeradius, .proto = "freeradius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_client_id;
@@ -152,7 +152,7 @@ fr_dict_attr_autoload_t process_dhcpv6_dict_attr[] = {
        { .out = &attr_transaction_id, .name = "Transaction-Id", .type = FR_TYPE_OCTETS, .dict = &dict_dhcpv6 },
 
        { .out = &attr_module_failure_message, .name = "Module-Failure-Message", .type = FR_TYPE_STRING, .dict = &dict_freeradius },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_value_box_t const *enum_status_code_success;
@@ -166,7 +166,7 @@ fr_dict_enum_autoload_t process_dhcpv6_dict_enum[] = {
        { .out = &enum_status_code_unspec_fail, .name = "UnspecFail", .attr = &attr_status_code_value },
        { .out = &enum_status_code_not_on_link, .name = "NotOnLink", .attr = &attr_status_code_value },
        { .out = &enum_status_code_no_binding, .name = "NoBinding", .attr = &attr_status_code_value },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 #define FR_DHCPV6_PROCESS_CODE_VALID(_x) (FR_DHCPV6_PACKET_CODE_VALID(_x) || (_x == FR_DHCPV6_DO_NOT_RESPOND))
index 6245bc8c65abf682d2fd76322912d36e89d41568..557643196ba49e980b440511e263baafe7cf4bf6 100644 (file)
@@ -40,7 +40,7 @@ static fr_dict_t const *dict_dns;
 extern fr_dict_autoload_t process_dns_dict[];
 fr_dict_autoload_t process_dns_dict[] = {
        { .out = &dict_dns, .proto = "dns" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -60,7 +60,7 @@ fr_dict_attr_autoload_t process_dns_dict_attr[] = {
        { .out = &attr_response_bit, .name = "Header.Query", .type = FR_TYPE_BOOL, .dict = &dict_dns},
        { .out = &attr_rcode, .name = "Header.Rcode", .type = FR_TYPE_UINT8, .dict = &dict_dns},
        { .out = &attr_authoritative_bit, .name = "Header.Authoritative", .type = FR_TYPE_BOOL, .dict = &dict_dns},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_value_box_t const *enum_rcode_no_error;
@@ -76,7 +76,7 @@ fr_dict_enum_autoload_t process_dns_dict_enum[] = {
        { .out = &enum_rcode_server_failure, .name = "Server-Failure", .attr = &attr_rcode },           /* fail */
        { .out = &enum_rcode_name_error, .name = "Name-Error", .attr = &attr_rcode },                   /* notfound */
        { .out = &enum_rcode_refused, .name = "Refused", .attr = &attr_rcode },                         /* reject */
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct {
index edf289c8244210454a99b655fe206554e24e3728..aa87ab817d034094741c318f2eed4a65ceef9930 100644 (file)
@@ -33,7 +33,7 @@ static fr_dict_t const *dict_ldap_sync;
 extern fr_dict_autoload_t process_ldap_sync_dict[];
 fr_dict_autoload_t process_ldap_sync_dict[] = {
        { .out = &dict_ldap_sync, .proto = "ldap" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -42,7 +42,7 @@ extern fr_dict_attr_autoload_t process_ldap_sync_dict_attr[];
 fr_dict_attr_autoload_t process_ldap_sync_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type= FR_TYPE_UINT32, .dict = &dict_ldap_sync },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static char const *ldap_sync_message_types[FR_LDAP_SYNC_CODE_MAX] = {
index 24f7a568354dd3fb0b10e94b76156580eb435ebd..b99a103327071b69596ad603b121952ad2338e75 100644 (file)
@@ -50,7 +50,7 @@ extern fr_dict_autoload_t process_radius_dict[];
 fr_dict_autoload_t process_radius_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -87,7 +87,7 @@ fr_dict_attr_autoload_t process_radius_dict_attr[] = {
 
        { .out = &attr_event_timestamp, .name = "Event-Timestamp", .type = FR_TYPE_DATE, .dict = &dict_radius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_value_box_t const    *enum_auth_type_accept;
@@ -97,7 +97,7 @@ extern fr_dict_enum_autoload_t process_radius_dict_enum[];
 fr_dict_enum_autoload_t process_radius_dict_enum[] = {
        { .out = &enum_auth_type_accept, .name = "Accept", .attr = &attr_auth_type },
        { .out = &enum_auth_type_reject, .name = "Reject", .attr = &attr_auth_type },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index c4a250d7daba8b3aea7fdc0653866d20b3de025d..949d289fd6dbbfe0c91cbb495c51e3795cb4857b 100644 (file)
@@ -42,7 +42,7 @@ extern fr_dict_autoload_t process_tacacs_dict[];
 fr_dict_autoload_t process_tacacs_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_tacacs, .proto = "tacacs" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -110,7 +110,7 @@ fr_dict_attr_autoload_t process_tacacs_dict_attr[] = {
        { .out = &attr_user_password, .name = "User-Password", .type = FR_TYPE_STRING, .dict = &dict_tacacs },
        { .out = &attr_chap_password, .name = "CHAP-Password", .type = FR_TYPE_OCTETS, .dict = &dict_tacacs },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_value_box_t const    *enum_auth_type_accept;
@@ -124,7 +124,7 @@ fr_dict_enum_autoload_t process_tacacs_dict_enum[] = {
        { .out = &enum_auth_type_reject, .name = "Reject", .attr = &attr_auth_type },
        { .out = &enum_auth_flags_noecho, .name = "No-Echo", .attr = &attr_tacacs_authentication_flags },
        { .out = &enum_tacacs_auth_type_ascii, .name = "ASCII", .attr = &attr_tacacs_authentication_type },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 
index f1bc54719b4891753f43cb3f2e35c6c3a63b9578..6fbbe4e6df2534272ceedf6d553c501ee9b9e641 100644 (file)
@@ -30,7 +30,7 @@ static fr_dict_t const *dict_test;
 extern fr_dict_autoload_t process_test_dict[];
 fr_dict_autoload_t process_test_dict[] = {
        { .out = &dict_test, .proto = "test" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -38,7 +38,7 @@ static fr_dict_attr_t const *attr_packet_type;
 extern fr_dict_attr_autoload_t process_test_dict_attr[];
 fr_dict_attr_autoload_t process_test_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_test},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct {
index 88c3e204d80bbc18ccdadaee5a5acebfe7316f2f..a79e5125c1604998cf2471dad2e3a4786dac6e8b 100644 (file)
@@ -31,7 +31,7 @@ static fr_dict_t const *dict_tls;
 extern fr_dict_autoload_t process_tls_dict[];
 fr_dict_autoload_t process_tls_dict[] = {
        { .out = &dict_tls, .proto = "tls" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -39,7 +39,7 @@ static fr_dict_attr_t const *attr_packet_type;
 extern fr_dict_attr_autoload_t process_tls_dict_attr[];
 fr_dict_attr_autoload_t process_tls_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_tls},
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct {
index b4613156948c525a1f52dbc3332eb44a21873d5d..a2a619f903c109444f83d5ae966198119d553710 100644 (file)
@@ -44,7 +44,7 @@ extern fr_dict_autoload_t process_ttls_dict[];
 fr_dict_autoload_t process_ttls_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_auth_type;
@@ -82,7 +82,7 @@ fr_dict_attr_autoload_t process_ttls_dict_attr[] = {
        { .out = &attr_original_packet_code, .name = "Extended-Attribute-1.Original-Packet-Code", .type = FR_TYPE_UINT32, .dict = &dict_radius },
        { .out = &attr_error_cause, .name = "Error-Cause", .type = FR_TYPE_UINT32, .dict = &dict_radius },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_value_box_t const    *enum_auth_type_accept;
@@ -92,7 +92,7 @@ extern fr_dict_enum_autoload_t process_ttls_dict_enum[];
 fr_dict_enum_autoload_t process_ttls_dict_enum[] = {
        { .out = &enum_auth_type_accept, .name = "Accept", .attr = &attr_auth_type },
        { .out = &enum_auth_type_reject, .name = "Reject", .attr = &attr_auth_type },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 937d71ecf8edb5e68926f445f1897a47a3886f82..86db218768e2d87a9e77a697e1c7bb5c0fc952d3 100644 (file)
@@ -35,7 +35,7 @@ static fr_dict_t const *dict_vmps;
 extern fr_dict_autoload_t process_vmps_dict[];
 fr_dict_autoload_t process_vmps_dict[] = {
        { .out = &dict_vmps, .proto = "vmps" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_dict_attr_t const *attr_packet_type;
@@ -43,7 +43,7 @@ static fr_dict_attr_t const *attr_packet_type;
 extern fr_dict_attr_autoload_t process_vmps_dict_attr[];
 fr_dict_attr_autoload_t process_vmps_dict_attr[] = {
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_vmps },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 typedef struct {
index e196931c71bf7711735c30599d18b6becd96abd6..bc0b4b786c00739a3097cc36c21d13765c0ef126 100644 (file)
@@ -57,7 +57,7 @@ fr_dict_t const *dict_arp;
 extern fr_dict_autoload_t libfreeradius_arp_dict[];
 fr_dict_autoload_t libfreeradius_arp_dict[] = {
        { .out = &dict_arp, .proto = "arp" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_arp_packet;
@@ -65,7 +65,7 @@ fr_dict_attr_t const *attr_arp_packet;
 extern fr_dict_attr_autoload_t libfreeradius_arp_dict_attr[];
 fr_dict_attr_autoload_t libfreeradius_arp_dict_attr[] = {
        { .out = &attr_arp_packet, .name = "arp", .type = FR_TYPE_STRUCT, .dict = &dict_arp },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 
index 75daba373437b0ce1565c8aab7cd95d89d6f830b..84e34fe7c51a0a811b270db88818cad23f01cb8d 100644 (file)
@@ -44,7 +44,7 @@ extern fr_dict_autoload_t libfreeradius_bfd_dict[];
 fr_dict_autoload_t libfreeradius_bfd_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_bfd, .proto = "bfd" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_packet_type;
@@ -57,7 +57,7 @@ fr_dict_attr_autoload_t libfreeradius_bfd_dict_attr[] = {
        { .out = &attr_bfd_packet, .name = "Packet", .type = FR_TYPE_STRUCT, .dict = &dict_bfd },
        { .out = &attr_bfd_additional_data, .name = "Additional-Data", .type = FR_TYPE_GROUP, .dict = &dict_bfd },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 char const *fr_bfd_packet_names[FR_BFD_CODE_MAX] = {
index d454c7eb464e09b70f048bcb78657c0d7c4873aa..04b067b7413c7309880109fe634b7925e045b6cc 100644 (file)
@@ -40,12 +40,16 @@ fr_dict_t const *dict_der;
 //fr_dict_attr_t const *attr_oid_tree;
 
 extern fr_dict_autoload_t libfreeradius_der_dict[];
-fr_dict_autoload_t       libfreeradius_der_dict[] = { { .out = &dict_der, .proto = "der" }, { NULL } };
+fr_dict_autoload_t       libfreeradius_der_dict[] = {
+       { .out = &dict_der, .proto = "der" },
+
+       DICT_AUTOLOAD_TERMINATOR
+};
 
 extern fr_dict_attr_autoload_t libfreeradius_der_dict_attr[];
 fr_dict_attr_autoload_t               libfreeradius_der_dict_attr[] = {
 //     { .out = &attr_oid_tree, .name = "OID-Tree", .type = FR_TYPE_TLV, .dict = &dict_der },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 static fr_table_num_sorted_t const tag_name_to_number[] = {
index 750da09debeee8388ce4563c9d812630d123e2f0..b0c2350abb4eb3066f71b767b06eb74048419325 100644 (file)
@@ -43,7 +43,8 @@ fr_dict_t const *dict_dhcpv4;
 extern fr_dict_autoload_t dhcpv4_dict[];
 fr_dict_autoload_t dhcpv4_dict[] = {
        { .out = &dict_dhcpv4, .proto = "dhcpv4" },
-       { NULL }
+       
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_dhcp_boot_filename;
@@ -97,7 +98,8 @@ fr_dict_attr_autoload_t dhcpv4_dict_attr[] = {
        { .out = &attr_dhcp_subnet_selection_option, .name = "Subnet-Selection-Option", .type = FR_TYPE_IPV4_ADDR, .dict = &dict_dhcpv4 },
        { .out = &attr_dhcp_network_subnet, .name = "Network-Subnet", .type = FR_TYPE_IPV4_PREFIX, .dict = &dict_dhcpv4 },
        { .out = &attr_dhcp_option_82, .name = "Relay-Agent-Information", .type = FR_TYPE_TLV, .dict = &dict_dhcpv4 },
-       { NULL }
+
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index 04e6bb1e1545c2c8632419931eb73536469f0d5f..9c147b0c8d021a5955dcbd20804bdcf5b5153a7d 100644 (file)
@@ -43,7 +43,7 @@ fr_dict_t const *dict_dhcpv6;
 extern fr_dict_autoload_t libfreeradius_dhcpv6_dict[];
 fr_dict_autoload_t libfreeradius_dhcpv6_dict[] = {
        { .out = &dict_dhcpv6, .proto = "dhcpv6" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_packet_type;
@@ -63,7 +63,7 @@ fr_dict_attr_autoload_t libfreeradius_dhcpv6_dict_attr[] = {
        { .out = &attr_relay_peer_address, .name = "Relay-Peer-Address", .type = FR_TYPE_IPV6_ADDR, .dict = &dict_dhcpv6 },
        { .out = &attr_relay_message, .name = "Relay-Message", .type = FR_TYPE_GROUP, .dict = &dict_dhcpv6 },
        { .out = &attr_option_request, .name = "Option-Request", .type = FR_TYPE_ATTR, .dict = &dict_dhcpv6 },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index d44eea04063ae7d40f1c8eac3c74a7dfd5c286f7..e8306c84d8ab8946d316a370984ec0cbeafb31de 100644 (file)
@@ -45,7 +45,7 @@ static _Thread_local uint8_t          fr_dns_marker[65536];
 extern fr_dict_autoload_t dns_dict[];
 fr_dict_autoload_t dns_dict[] = {
        { .out = &dict_dns, .proto = "dns" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 //fr_dict_attr_t const *attr_dns_packet_type;
@@ -63,7 +63,7 @@ fr_dict_attr_autoload_t dns_dict_attr[] = {
        { .out = &attr_dns_rr, .name = "Resource-Record", .type = FR_TYPE_STRUCT, .dict = &dict_dns },
        { .out = &attr_dns_ns, .name = "Name-Server", .type = FR_TYPE_STRUCT, .dict = &dict_dns },
        { .out = &attr_dns_ar, .name = "Additional-Record", .type = FR_TYPE_STRUCT, .dict = &dict_dns },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
  char const *fr_dns_packet_names[FR_DNS_CODE_MAX] = {
index 61ca1c869bbc83318bd5fd6e88151eebcb425fb7..3edd26c403df7dfcdeef17694de8b9392c7bdae2 100644 (file)
@@ -48,7 +48,8 @@ extern fr_dict_autoload_t libfreeradius_radius_dict[];
 fr_dict_autoload_t libfreeradius_radius_dict[] = {
        { .out = &dict_freeradius, .proto = "freeradius" },
        { .out = &dict_radius, .proto = "radius" },
-       { NULL }
+
+       DICT_AUTOLOAD_TERMINATOR        
 };
 
 fr_dict_attr_t const *attr_packet_type;
@@ -73,7 +74,8 @@ fr_dict_attr_autoload_t libfreeradius_radius_dict_attr[] = {
        { .out = &attr_state, .name = "State", .type = FR_TYPE_OCTETS, .dict = &dict_radius },
        { .out = &attr_vendor_specific, .name = "Vendor-Specific", .type = FR_TYPE_VSA, .dict = &dict_radius },
        { .out = &attr_nas_filter_rule, .name = "NAS-Filter-Rule", .type = FR_TYPE_STRING, .dict = &dict_radius },
-       { NULL }
+
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 /*
index a35c2a766439df8db2f02e2755c7a57ec5cbaf3c..4095da6b9d6eb0fa0f5f82c12cb73ef489ce592b 100644 (file)
@@ -39,7 +39,7 @@ extern fr_dict_autoload_t libfreeradius_tacacs_dict[];
 fr_dict_autoload_t libfreeradius_tacacs_dict[] = {
        { .out = &dict_tacacs, .proto = "tacacs" },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_tacacs_accounting_flags;
@@ -114,7 +114,7 @@ fr_dict_attr_autoload_t libfreeradius_tacacs_dict_attr[] = {
        { .out = &attr_tacacs_mschap_response, .name = "MS-CHAP-Response", .type = FR_TYPE_OCTETS, .dict = &dict_tacacs },
        { .out = &attr_tacacs_mschap2_response, .name = "MS-CHAP2-Response", .type = FR_TYPE_OCTETS, .dict = &dict_tacacs },
        { .out = &attr_tacacs_mschap_challenge, .name = "MS-CHAP-Challenge", .type = FR_TYPE_OCTETS, .dict = &dict_tacacs },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 char const *fr_tacacs_packet_names[FR_TACACS_CODE_MAX] = {
index ca66b3b60cd49ac9f8018242acf907e48bf043cc..b3dbef62dea1cdc90674fb27119128effa4a7c12 100644 (file)
@@ -38,7 +38,7 @@ fr_dict_t const *dict_tftp;
 extern fr_dict_autoload_t libfreeradius_tftp[];
 fr_dict_autoload_t libfreeradius_tftp[] = {
        { .out = &dict_tftp, .proto = "tftp" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_tftp_block;
@@ -65,7 +65,7 @@ fr_dict_attr_autoload_t libfreeradius_tftp_dict_attr[] = {
 
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_tftp },
 
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 char const *fr_tftp_codes[FR_TFTP_MAX_CODE] = {
index 3204df5be810535955c8d364f54b18b03460cb5d..9221ca87e767e9c18f73c39d73ac9c86662d1be3 100644 (file)
@@ -36,7 +36,7 @@ fr_dict_t const *dict_vmps;
 extern fr_dict_autoload_t libfreeradius_vmps[];
 fr_dict_autoload_t libfreeradius_vmps[] = {
        { .out = &dict_vmps, .proto = "vmps" },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };
 
 fr_dict_attr_t const *attr_error_code;
@@ -48,7 +48,7 @@ fr_dict_attr_autoload_t libfreeradius_vmps_dict_attr[] = {
        { .out = &attr_error_code, .name = "Error-Code", .type = FR_TYPE_UINT8, .dict = &dict_vmps },
        { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_vmps },
        { .out = &attr_sequence_number, .name = "Sequence-Number", .type = FR_TYPE_UINT32, .dict = &dict_vmps },
-       { NULL }
+       DICT_AUTOLOAD_TERMINATOR
 };