]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Use macro for terminating CONF_PARSER arrays
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 19 Aug 2015 03:57:03 +0000 (23:57 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 19 Aug 2015 04:17:31 +0000 (00:17 -0400)
Check type of terminator is -1 to catch where CONF_PARSER arrays are improperly terminated

69 files changed:
src/include/conffile.h
src/main/client.c
src/main/command.c
src/main/conffile.c
src/main/connection.c
src/main/detail.c
src/main/listen.c
src/main/mainconfig.c
src/main/radwho.c
src/main/realms.c
src/main/threads.c
src/main/tls.c
src/modules/rlm_always/rlm_always.c
src/modules/rlm_attr_filter/rlm_attr_filter.c
src/modules/rlm_cache/drivers/rlm_cache_memcached/rlm_cache_memcached.c
src/modules/rlm_cache/rlm_cache.c
src/modules/rlm_couchbase/rlm_couchbase.c
src/modules/rlm_counter/rlm_counter.c
src/modules/rlm_date/rlm_date.c
src/modules/rlm_detail/rlm_detail.c
src/modules/rlm_eap/rlm_eap.c
src/modules/rlm_eap/types/rlm_eap_gtc/rlm_eap_gtc.c
src/modules/rlm_eap/types/rlm_eap_ikev2/rlm_eap_ikev2.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_tnc/rlm_eap_tnc.c
src/modules/rlm_eap/types/rlm_eap_ttls/rlm_eap_ttls.c
src/modules/rlm_example/rlm_example.c
src/modules/rlm_exec/rlm_exec.c
src/modules/rlm_expr/rlm_expr.c
src/modules/rlm_files/rlm_files.c
src/modules/rlm_idn/rlm_idn.c
src/modules/rlm_ippool/rlm_ippool.c
src/modules/rlm_krb5/rlm_krb5.c
src/modules/rlm_ldap/rlm_ldap.c
src/modules/rlm_linelog/rlm_linelog.c
src/modules/rlm_logintime/rlm_logintime.c
src/modules/rlm_mschap/rlm_mschap.c
src/modules/rlm_otp/rlm_otp.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_perl/rlm_perl.c
src/modules/rlm_preprocess/rlm_preprocess.c
src/modules/rlm_python/rlm_python.c
src/modules/rlm_radutmp/rlm_radutmp.c
src/modules/rlm_realm/rlm_realm.c
src/modules/rlm_redis/rlm_redis.c
src/modules/rlm_rediswho/rlm_rediswho.c
src/modules/rlm_rest/rlm_rest.c
src/modules/rlm_ruby/rlm_ruby.c
src/modules/rlm_securid/rlm_securid.c
src/modules/rlm_smsotp/rlm_smsotp.c
src/modules/rlm_soh/rlm_soh.c
src/modules/rlm_sometimes/rlm_sometimes.c
src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c
src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c
src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c
src/modules/rlm_sql/rlm_sql.c
src/modules/rlm_sqlcounter/rlm_sqlcounter.c
src/modules/rlm_sqlhpwippool/rlm_sqlhpwippool.c
src/modules/rlm_sqlippool/rlm_sqlippool.c
src/modules/rlm_test/rlm_test.c
src/modules/rlm_unbound/rlm_unbound.c
src/modules/rlm_unix/rlm_unix.c
src/modules/rlm_wimax/rlm_wimax.c
src/modules/rlm_yubikey/rlm_yubikey.c

index 01a639ac360c62d81a99796a274c2215be36d823..596c20afa9763b633ab8e9503d6d4864f9f61117 100644 (file)
@@ -176,7 +176,7 @@ extern bool                         check_config;
  @code{.c}
    static CONF_PARSER module_config[] = {
        { "example", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_NOT_EMPTY, example_instance_t, example), "default_value" },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
    }
  @endcode
  *
@@ -184,7 +184,7 @@ extern bool                         check_config;
  @code{.c}
    static CONF_PARSER global_config[] = {
        { "example", FR_CONF_POINTER(PW_TYPE_STRING | PW_TYPE_NOT_EMPTY, &my_global), "default_value" },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
    }
  @endcode
  *
@@ -213,6 +213,8 @@ typedef struct CONF_PARSER {
                                                //!< the subsection.
 } CONF_PARSER;
 
+#define CONF_PARSER_TERMINATOR { NULL, -1, 0, NULL, NULL }
+
 CONF_PAIR      *cf_pair_alloc(CONF_SECTION *parent, char const *attr, char const *value,
                               FR_TOKEN op, FR_TOKEN lhs_type, FR_TOKEN rhs_type);
 CONF_PAIR      *cf_pair_dup(CONF_SECTION *parent, CONF_PAIR *cp);
index 508c3740f90ed2b21fee3fd128d35fca764857ac..9c9449b65128605ed71481ac982ef1ee35a4e833 100644 (file)
@@ -490,7 +490,7 @@ static CONF_PARSER limit_config[] = {
 
        { "idle_timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, RADCLIENT, limit.idle_timeout), "30" },
 
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 #endif
 
@@ -526,7 +526,7 @@ static const CONF_PARSER client_config[] = {
        { "rate_limit", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, RADCLIENT, rate_limit), NULL },
 #endif
 
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /** Create the linked list of clients from the new configuration type
@@ -706,7 +706,7 @@ static const CONF_PARSER dynamic_config[] = {
        { "FreeRADIUS-Client-NAS-Type",  FR_CONF_OFFSET(PW_TYPE_STRING, RADCLIENT, nas_type), NULL },
        { "FreeRADIUS-Client-Virtual-Server",  FR_CONF_OFFSET(PW_TYPE_STRING, RADCLIENT, server), NULL },
 
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /** Add a dynamic client
index 2d81ef8503b53eb997d89cb972beb0619f919097..6242ebc36077f8bf5c7d912af749dcf6108f4a0a 100644 (file)
@@ -106,7 +106,7 @@ static const CONF_PARSER command_config[] = {
        { "gid", FR_CONF_OFFSET(PW_TYPE_STRING, fr_command_socket_t, gid_name), NULL },
        { "mode", FR_CONF_OFFSET(PW_TYPE_STRING, fr_command_socket_t, mode_name), NULL },
        { "peercred", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, fr_command_socket_t, peercred), "yes" },
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static FR_NAME_NUMBER mode_names[] = {
index 49ea90739fd3afcc37f94679f41cfa48453ed858..8cdeaab3dfb8b246079297bf4e27c2531fbc4854 100644 (file)
@@ -1917,6 +1917,12 @@ int cf_section_parse(CONF_SECTION *cs, void *base, CONF_PARSER const *variables)
                }
        } /* for all variables in the configuration section */
 
+       /*
+        *      Ensure we have a proper terminator, type so we catch
+        *      missing terminators reliably
+        */
+       rad_assert(variables[i].type == -1);
+
        /*
         *      Warn about items in the configuration which weren't
         *      checked during parsing.
index 7c21dac3f96b49591b47173e4814b529997e800e..2df1619619248e89503e418c39aa66ce2949caa5 100644 (file)
@@ -163,7 +163,7 @@ static const CONF_PARSER connection_config[] = {
        { "idle_timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, fr_connection_pool_t, idle_timeout), "60" },
        { "retry_delay", FR_CONF_OFFSET(PW_TYPE_INTEGER, fr_connection_pool_t, retry_delay), "1" },
        { "spread", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, fr_connection_pool_t, spread), "no" },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /** Order connections by reserved most recently
index 64625331c8d2d0f6cb6b236418c559d0093b32dd..da522358df84ba52da6c3cd6454eaf61d60973e1 100644 (file)
@@ -1082,8 +1082,7 @@ static const CONF_PARSER detail_config[] = {
        { "retry_interval", FR_CONF_OFFSET(PW_TYPE_INTEGER, listen_detail_t, retry_interval), STRINGIFY(30) },
        { "one_shot", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, listen_detail_t, one_shot), "no" },
        { "track", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, listen_detail_t, track), "no" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index ee0851dca65b51a06f620099f928bd8edea5e24e..1fdb6266d0acd8a2abaa8e20a163b989a96ab022 100644 (file)
@@ -920,8 +920,7 @@ static CONF_PARSER performance_config[] = {
        { "synchronous", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rad_listen_t, synchronous), NULL },
 
        { "workers", FR_CONF_OFFSET(PW_TYPE_INTEGER, rad_listen_t, workers), NULL },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
@@ -933,8 +932,7 @@ static CONF_PARSER limit_config[] = {
        { "lifetime", FR_CONF_OFFSET(PW_TYPE_INTEGER, listen_socket_t, limit.lifetime), "0" },
        { "idle_timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, listen_socket_t, limit.idle_timeout), STRINGIFY(30) },
 #endif
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 2af8889723c92d2d8902212aab8271b0c348ac6e..e14208d4ca108bda988e5640582ac934113d6950 100644 (file)
@@ -105,7 +105,7 @@ static const CONF_PARSER startup_log_config[] = {
        { "logdir", FR_CONF_POINTER(PW_TYPE_STRING, &radlog_dir), "${localstatedir}/log"},
        { "file",  FR_CONF_POINTER(PW_TYPE_STRING, &main_config.log_file), "${logdir}/radius.log" },
        { "requests",  FR_CONF_POINTER(PW_TYPE_STRING | PW_TYPE_DEPRECATED, &default_log.file), NULL },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
@@ -121,7 +121,7 @@ static const CONF_PARSER startup_server_config[] = {
        { "log_file",  FR_CONF_POINTER(PW_TYPE_STRING, &main_config.log_file), NULL },
        { "log_destination", FR_CONF_POINTER(PW_TYPE_STRING, &radlog_dest), NULL },
        { "use_utc", FR_CONF_POINTER(PW_TYPE_BOOLEAN, &log_dates_utc), NULL },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
@@ -140,10 +140,8 @@ static const CONF_PARSER log_config[] = {
        { "msg_goodpass", FR_CONF_POINTER(PW_TYPE_STRING, &main_config.auth_goodpass_msg), NULL},
        { "colourise",FR_CONF_POINTER(PW_TYPE_BOOLEAN, &do_colourise), NULL },
        { "use_utc", FR_CONF_POINTER(PW_TYPE_BOOLEAN, &log_dates_utc), NULL },
-       { "msg_denied", FR_CONF_POINTER(PW_TYPE_STRING, &main_config.denied_msg),
-         "You are already logged in - access denied" },
-
-       { NULL, -1, 0, NULL, NULL }
+       { "msg_denied", FR_CONF_POINTER(PW_TYPE_STRING, &main_config.denied_msg), "You are already logged in - access denied" },
+       CONF_PARSER_TERMINATOR
 };
 
 
@@ -157,7 +155,7 @@ static const CONF_PARSER security_config[] = {
 #ifdef ENABLE_OPENSSL_VERSION_CHECK
        { "allow_vulnerable_openssl", FR_CONF_POINTER(PW_TYPE_STRING, &main_config.allow_vulnerable_openssl), "no"},
 #endif
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static const CONF_PARSER resources[] = {
@@ -167,8 +165,7 @@ static const CONF_PARSER resources[] = {
         *      it exists.
         */
        { "talloc_pool_size", FR_CONF_POINTER(PW_TYPE_INTEGER, &main_config.talloc_pool_size), NULL },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static const CONF_PARSER server_config[] = {
@@ -218,8 +215,7 @@ static const CONF_PARSER server_config[] = {
        { "log_stripped_names", FR_CONF_POINTER(PW_TYPE_BOOLEAN | PW_TYPE_DEPRECATED, &log_stripped_names), NULL },
 
        {  "security", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) security_config },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
@@ -243,8 +239,7 @@ static const CONF_PARSER bootstrap_security_config[] = {
 #endif
        { "chroot",  FR_CONF_POINTER(PW_TYPE_STRING, &chroot_dir), NULL },
        { "allow_core_dumps", FR_CONF_POINTER(PW_TYPE_BOOLEAN, &allow_core_dumps), "no" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static const CONF_PARSER bootstrap_config[] = {
@@ -266,8 +261,7 @@ static const CONF_PARSER bootstrap_config[] = {
 #endif
        { "chroot",  FR_CONF_POINTER(PW_TYPE_STRING | PW_TYPE_DEPRECATED, &chroot_dir), NULL },
        { "allow_core_dumps", FR_CONF_POINTER(PW_TYPE_BOOLEAN | PW_TYPE_DEPRECATED, &allow_core_dumps), NULL },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
index 1d012c5899a16cdb44ff360e3dd75a3ad0088ecd..29c1a34d797af2aec7b1fdb32d0cf724115caa89 100644 (file)
@@ -80,8 +80,8 @@ static struct radutmp_config_t {
 } radutmpconfig;
 
 static const CONF_PARSER module_config[] = {
-  { "filename", FR_CONF_POINTER(PW_TYPE_FILE_INPUT, &radutmpconfig.radutmp_fn), RADUTMP },
-  { NULL, -1, 0, NULL, NULL }
+       { "filename", FR_CONF_POINTER(PW_TYPE_FILE_INPUT, &radutmpconfig.radutmp_fn), RADUTMP },
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index 0a657288a6417d220686e33b2bb02d914af71ba9..71fd4a5d010fa5af9d0d3301d5372f85f970f514 100644 (file)
@@ -110,8 +110,7 @@ static const CONF_PARSER proxy_config[] = {
        { "dead_time", FR_CONF_OFFSET(PW_TYPE_INTEGER, realm_config_t, dead_time), STRINGIFY(DEAD_TIME)  },
 
        { "wake_all_if_all_dead", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, realm_config_t, wake_all_if_all_dead), "no" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 #endif
 
@@ -290,8 +289,7 @@ static CONF_PARSER limit_config[] = {
        { "max_requests", FR_CONF_OFFSET(PW_TYPE_INTEGER, home_server_t, limit.max_requests), "0" },
        { "lifetime", FR_CONF_OFFSET(PW_TYPE_INTEGER, home_server_t, limit.lifetime), "0" },
        { "idle_timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, home_server_t, limit.idle_timeout), "0" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 #ifdef WITH_COA
@@ -300,8 +298,7 @@ static CONF_PARSER home_server_coa[] = {
        { "mrt",  FR_CONF_OFFSET(PW_TYPE_INTEGER, home_server_t, coa_mrt), STRINGIFY(16) },
        { "mrc",  FR_CONF_OFFSET(PW_TYPE_INTEGER, home_server_t, coa_mrc), STRINGIFY(5) },
        { "mrd",  FR_CONF_OFFSET(PW_TYPE_INTEGER, home_server_t, coa_mrd), STRINGIFY(30) },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 #endif
 
@@ -354,7 +351,7 @@ static CONF_PARSER home_server_config[] = {
        { "coa", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) home_server_coa },
 #endif
 
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index c5600eefaff9b0f0089882aec730c26d92eb427b..58bc90803bd2a3a126405cefb842d5d072fde95c 100644 (file)
@@ -202,7 +202,7 @@ static const CONF_PARSER thread_config[] = {
        { "auto_limit_acct", FR_CONF_POINTER(PW_TYPE_BOOLEAN, &thread_pool.auto_limit_acct), NULL },
 #endif
 #endif
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 #endif
 
index 75b74d258ea293f89f3972eb6e28753cfa50338c..b5c665b8fae7379dad03bc6992df52253ee09aac 100644 (file)
@@ -954,13 +954,13 @@ static CONF_PARSER cache_config[] = {
 
        { "max_entries", FR_CONF_OFFSET(PW_TYPE_INTEGER, fr_tls_server_conf_t, session_cache_size), "255" },
        { "persist_dir", FR_CONF_OFFSET(PW_TYPE_STRING, fr_tls_server_conf_t, session_cache_path), NULL },
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static CONF_PARSER verify_config[] = {
        { "tmpdir", FR_CONF_OFFSET(PW_TYPE_STRING, fr_tls_server_conf_t, verify_tmp_dir), NULL },
        { "client", FR_CONF_OFFSET(PW_TYPE_STRING, fr_tls_server_conf_t, verify_client_cert_cmd), NULL },
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 #ifdef HAVE_OPENSSL_OCSP_H
@@ -971,7 +971,7 @@ static CONF_PARSER ocsp_config[] = {
        { "use_nonce", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, fr_tls_server_conf_t, ocsp_use_nonce), "yes" },
        { "timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, fr_tls_server_conf_t, ocsp_timeout), "yes" },
        { "softfail", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, fr_tls_server_conf_t, ocsp_softfail), "no" },
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 #endif
 
@@ -1033,8 +1033,7 @@ static CONF_PARSER tls_server_config[] = {
 #ifdef HAVE_OPENSSL_OCSP_H
        { "ocsp", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) ocsp_config },
 #endif
-
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
@@ -1076,8 +1075,7 @@ static CONF_PARSER tls_client_config[] = {
 #ifdef SSL_OP_NO_TLSv1_2
        { "disable_tlsv1_2", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, fr_tls_server_conf_t, disable_tlsv1_2), NULL },
 #endif
-
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 61830459dcb9ee0fe89e5d4ae7f0b799b2c8eb75..6a75164a89db3df1b00eabeaf95906b75043c4cd 100644 (file)
@@ -49,8 +49,7 @@ static const CONF_PARSER module_config[] = {
        { "rcode", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_always_t, rcode_str), "fail" },
        { "simulcount", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_always_t, simulcount), "0" },
        { "mpp", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_always_t, mpp), "no" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static int mod_instantiate(CONF_SECTION *conf, void *instance)
index ebaecdbb2f3a412a07d8b4dc72983e88e0fc060b..a2ffe6f9d10af1f4036fe2c4bd7154f4870b249a 100644 (file)
@@ -49,7 +49,7 @@ static const CONF_PARSER module_config[] = {
        { "filename", FR_CONF_OFFSET(PW_TYPE_FILE_INPUT | PW_TYPE_REQUIRED, rlm_attr_filter_t, filename), NULL },
        { "key", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_attr_filter_t, key), "%{Realm}" },
        { "relaxed", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_attr_filter_t, relaxed), "no" },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static void check_pair(REQUEST *request, VALUE_PAIR *check_item, VALUE_PAIR *reply_item, int *pass, int *fail)
index 65b42474d2f655b72b8321c0683dbf5ca62a284a..a8161cb3c112cabf9757845123dc372f47f36b8a 100644 (file)
@@ -40,8 +40,7 @@ typedef struct rlm_cache_memcached {
 
 static const CONF_PARSER driver_config[] = {
        { "options", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_REQUIRED, rlm_cache_memcached_t, options), "--SERVER=localhost" },
-
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 /** Free a connection handle
index 1a3f0cdcb9a580bd0ac530e826cc43bfedf93620..cdbfa38c32191bdb37d455c8952b6ccce8b8a555 100644 (file)
@@ -49,8 +49,7 @@ static const CONF_PARSER module_config[] = {
        /* Should be a type which matches time_t, @fixme before 2038 */
        { "epoch", FR_CONF_OFFSET(PW_TYPE_SIGNED, rlm_cache_t, epoch), "0" },
        { "add_stats", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_cache_t, stats), "no" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static int cache_acquire(rlm_cache_handle_t **out, rlm_cache_t *inst, REQUEST *request)
index a5365ed24a3dbbf9a041d853c0432302623a01a7..a73244c2cc9ac225971382b9f2dd65f22ad195bf 100644 (file)
@@ -42,7 +42,7 @@ RCSID("$Id$")
  */
 static const CONF_PARSER client_config[] = {
        { "view", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_couchbase_t, client_view), "_design/client/_view/by_name" },
-       {NULL, -1, 0, NULL, NULL}     /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 /**
@@ -66,7 +66,7 @@ static const CONF_PARSER module_config[] = {
        { "simul_vkey", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_couchbase_t, simul_vkey), "%{tolower:%{%{Stripped-User-Name}:-%{User-Name}}}" },
        { "verify_simul", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_couchbase_t, verify_simul), NULL }, /* NULL defaults to "no" */
 #endif
-       {NULL, -1, 0, NULL, NULL}     /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 /** Initialize the rlm_couchbase module
index 41a52b3a5bf20d60394b0dd823269ddadf8e4f53..7f19824dd301d215decf7fad2185f45103efad41 100644 (file)
@@ -135,8 +135,7 @@ static const CONF_PARSER module_config[] = {
 
        { "cache-size", FR_CONF_OFFSET(PW_TYPE_INTEGER | PW_TYPE_DEPRECATED, rlm_counter_t, cache_size), NULL },
        { "cache_size", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_counter_t, cache_size), "1000" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
index be28a7ed35bd9cd23d3e4b7566ad6f0001d4ef8a..bff40530d1ab3b0d5e16b856843c28cda89b37b7 100644 (file)
@@ -36,7 +36,7 @@ typedef struct rlm_date_t {
 
 static const CONF_PARSER module_config[] = {
        { "format", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_date_t, fmt), "%b %e %Y %H:%M:%S %Z" },
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 DIAG_OFF(format-nonliteral)
index 603129698fe344264e98baf065b567c2207cd015..6442238d8702d04a7ecab42203ac1e928d0ea4f4 100644 (file)
@@ -81,7 +81,7 @@ static const CONF_PARSER module_config[] = {
        { "locking", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_detail_t, locking), "no" },
        { "escape_filenames", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_detail_t, escape), "no" },
        { "log_packet_header", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_detail_t, log_srcdst), "no" },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
index 750f8a46733059944f462c89c1cf87bee43909d3..5afdcc3162dce58a47dad6a63ec688cdb243a009 100644 (file)
@@ -36,8 +36,7 @@ static const CONF_PARSER module_config[] = {
        { "ignore_unknown_eap_types", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_eap_t, ignore_unknown_types), "no" },
        { "cisco_accounting_username_bug", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_eap_t, mod_accounting_username_bug), "no" },
        { "max_sessions", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_eap_t, max_sessions), "2048" },
-
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index aeb7353343038befd36396396f70ddd4d0125d57..454e1e70c411e633c88fb86d7eaafb2e0de57bc1 100644 (file)
@@ -42,10 +42,8 @@ typedef struct rlm_eap_gtc_t {
 
 static CONF_PARSER module_config[] = {
        { "challenge", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_eap_gtc_t, challenge), "Password: " },
-
        { "auth_type", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_eap_gtc_t, auth_type_name), "PAP" },
-
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index ffc049f21966adf7792e55f6139dc5c935b0f23f..9733632f0d4d29e853c9eae21564a4c450ff9333 100644 (file)
@@ -95,8 +95,7 @@ CONF_PARSER module_config[] = {
 
        { "fast_dh_exchange", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_eap_ikev2_t, enable_fast_dhex), "no" },
        { "enable_fast_reauth", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_eap_ikev2_t, enable_fast_reconnect), "yes" },
-
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static int set_mppe_keys(eap_handler_t *handler)
index f086dfb5543994acb00490bd32330e26561f4f79..96660b703102f6f38aee1b352776de5c4bacb0fb 100644 (file)
@@ -40,8 +40,7 @@ static CONF_PARSER module_config[] = {
 
        { "send_error", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_eap_mschapv2_t, send_error), "no" },
        { "identity", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_eap_mschapv2_t, identity), NULL },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 07031f57b3650af810eddc17f1b61697e12572e9..d9d1930ccc648fc8bacfeecfdc32e0c7a39a2d99 100644 (file)
@@ -67,8 +67,7 @@ static CONF_PARSER module_config[] = {
        { "require_client_cert", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_eap_peap_t, req_client_cert), "no" },
 
        { "soh_virtual_server", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_eap_peap_t, soh_virtual_server), NULL },
-
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 506cc95cd4aa041bebac0d380fb4f16d0a90c767..d1813abdbb782581d4a17debcc10f9095f268b4d 100644 (file)
@@ -46,7 +46,7 @@ static CONF_PARSER pwd_module_config[] = {
        { "fragment_size", FR_CONF_OFFSET(PW_TYPE_INTEGER, eap_pwd_t, fragment_size), "1020" },
        { "server_id", FR_CONF_OFFSET(PW_TYPE_STRING, eap_pwd_t, server_id), NULL },
        { "virtual_server", FR_CONF_OFFSET(PW_TYPE_STRING, eap_pwd_t, virtual_server), NULL },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static int mod_detach (void *arg)
index 2102d6b2aa2c46018d206f0abd1802f50aeb2e55..acd2dc7606faca825c39d0ef98c4d50953446849 100644 (file)
@@ -42,10 +42,8 @@ USES_APPLE_DEPRECATED_API    /* OpenSSL API has been deprecated by Apple */
 
 static CONF_PARSER module_config[] = {
        { "tls", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_eap_tls_t, tls_conf_name), NULL },
-
        { "virtual_server", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_eap_tls_t, virtual_server), NULL },
-
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 96ec4a3b416a4ced08a0452b7d67685771029947..a1fdbc07c03b349864209217b37cd49a6e3aa3ed 100644 (file)
@@ -65,8 +65,7 @@ typedef struct rlm_eap_tnc {
 
 static CONF_PARSER module_config[] = {
        { "connection_string", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_eap_tnc_t, connection_string), "NAS Port: %{NAS-Port} NAS IP: %{NAS-IP-Address} NAS_PORT_TYPE: %{NAS-Port-Type}" },
-
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static int mod_instantiate(CONF_SECTION *cs, void **instance)
index 81fcfc67ef5b9fb6f73e81c5244494b52be13209..84de581dbe5340c2810f1659e194e8f0d4732c32 100644 (file)
@@ -82,8 +82,7 @@ static CONF_PARSER module_config[] = {
        { "virtual_server", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_eap_ttls_t, virtual_server), NULL },
        { "include_length", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_eap_ttls_t, include_length), "yes" },
        { "require_client_cert", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_eap_ttls_t, req_client_cert), "no" },
-
-       { NULL, -1, 0, NULL, NULL }        /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 89db7046dcaaea47b01363a21439e83a1bf3ebc1..3dda051d5899fcba149b9835417eb07f034c772b 100644 (file)
@@ -50,8 +50,7 @@ static const CONF_PARSER module_config[] = {
        { "boolean", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_example_t, boolean), "no" },
        { "string", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_example_t, string), NULL },
        { "ipaddr", FR_CONF_OFFSET(PW_TYPE_IPV4_ADDR, rlm_example_t, ipaddr), "*" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static int rlm_example_cmp(UNUSED void *instance, REQUEST *request, UNUSED VALUE_PAIR *thing, VALUE_PAIR *check,
index e7ce6e7970271f30bf69ec0d5b5f686356bc9a49..465bfb1664c604b75ff90cf26d15ef857b21ca77 100644 (file)
@@ -63,8 +63,7 @@ static const CONF_PARSER module_config[] = {
        { "packet_type", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_exec_t, packet_type), NULL },
        { "shell_escape", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_exec_t, shell_escape), "yes" },
        { "timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_exec_t, timeout), NULL },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static char const special[] = "\\'\"`<>|; \t\r\n()[]?#$^&*=";
index 7eda6d130cfd81c3e58cbc2c0e987c8e985cdd40..dd6e8748080bdfeee6b11f2642e210f41207d44b 100644 (file)
@@ -50,7 +50,7 @@ typedef struct rlm_expr_t {
 
 static const CONF_PARSER module_config[] = {
        { "safe_characters", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_expr_t, allowed_chars), "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /" },
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index 6ca96c9fc5222f5d7ff7fc70f3c0ebd9b6e9b217..4ca3dfd67a66be17f25c5850dd32eb68127074c4 100644 (file)
@@ -90,7 +90,7 @@ static const CONF_PARSER module_config[] = {
        { "postauth_usersfile", FR_CONF_OFFSET(PW_TYPE_FILE_INPUT, rlm_files_t, postauth_usersfile), NULL },
        { "compat", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_DEPRECATED, rlm_files_t, compat_mode), NULL },
        { "key", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_files_t, key), NULL },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
index 17f62296c3add9a07273c2362aeab2da649d7e08..c0ce4369759bd7f14c799b259ca31e276f78ff6d 100644 (file)
@@ -84,8 +84,7 @@ static const CONF_PARSER mod_config[] = {
 
        { "allow_unassigned", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_idn_t, allow_unassigned), "no" },
        { "use_std3_ascii_rules", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_idn_t, use_std3_ascii_rules), "yes" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static ssize_t xlat_idna(void *instance, REQUEST *request, char const *fmt, char *out, size_t freespace)
index dd068e6b39712af6d6fee0a7e24cd9450aae440f..7762b153e7cfc074950fb737f0fb885292e46259 100644 (file)
@@ -128,8 +128,7 @@ static const CONF_PARSER module_config[] = {
 
        { "maximum-timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER | PW_TYPE_DEPRECATED, rlm_ippool_t, max_timeout), NULL },
        { "maximum_timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_ippool_t, max_timeout), "0" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index 1c0b08716b6aed2a2dd3ca61c548fcd25a649978..c80ec25d6e3b381409f447da0ba4a6219dffe892 100644 (file)
@@ -34,7 +34,7 @@ RCSID("$Id$")
 static const CONF_PARSER module_config[] = {
        { "keytab", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_krb5_t, keytabname), NULL },
        { "service_principal", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_krb5_t, service_princ), NULL },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static int mod_detach(void *instance)
index 0aaad88c0a754831b304f6097418cde4582b56c0..13207ed1908d7c3843c494c463da9a185db9062b 100644 (file)
@@ -74,16 +74,14 @@ static CONF_PARSER sasl_mech_dynamic[] = {
        { "mech", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_TMPL | PW_TYPE_NOT_EMPTY, ldap_sasl_dynamic, mech), NULL },
        { "proxy", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_TMPL, ldap_sasl_dynamic, proxy), NULL },
        { "realm", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_TMPL, ldap_sasl_dynamic, realm), NULL },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static CONF_PARSER sasl_mech_static[] = {
        { "mech", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_NOT_EMPTY, ldap_sasl, mech), NULL },
        { "proxy", FR_CONF_OFFSET(PW_TYPE_STRING, ldap_sasl, proxy), NULL },
        { "realm", FR_CONF_OFFSET(PW_TYPE_STRING, ldap_sasl, realm), NULL },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /*
@@ -113,8 +111,7 @@ static CONF_PARSER tls_config[] = {
         */
        { "start_tls", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_ldap_t, start_tls), "no" },
        { "require_cert", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_ldap_t, tls_require_cert_str), NULL },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
@@ -122,8 +119,7 @@ static CONF_PARSER profile_config[] = {
        { "filter", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_TMPL, rlm_ldap_t, profile_filter), "(&)" }, //!< Correct filter for when the DN is known.
        { "attribute", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_ldap_t, profile_attr), NULL },
        { "default", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_TMPL, rlm_ldap_t, default_profile), NULL },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /*
@@ -140,8 +136,7 @@ static CONF_PARSER user_config[] = {
 
        /* Should be deprecated */
        { "sasl", FR_CONF_OFFSET(PW_TYPE_SUBSECTION, rlm_ldap_t, user_sasl), (void const *) sasl_mech_dynamic },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /*
@@ -158,16 +153,14 @@ static CONF_PARSER group_config[] = {
        { "cacheable_name", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_ldap_t, cacheable_group_name), "no" },
        { "cacheable_dn", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_ldap_t, cacheable_group_dn), "no" },
        { "cache_attribute", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_ldap_t, cache_attribute), NULL },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static CONF_PARSER client_config[] = {
        { "filter", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_ldap_t, clientobj_filter), NULL },
        { "scope", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_ldap_t, clientobj_scope_str), "sub" },
        { "base_dn", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_ldap_t, clientobj_base_dn), "" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /*
@@ -175,8 +168,7 @@ static CONF_PARSER client_config[] = {
  */
 static const CONF_PARSER acct_section_config[] = {
        { "reference", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, ldap_acct_section_t, reference), "." },
-
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 /*
@@ -216,8 +208,7 @@ static CONF_PARSER option_config[] = {
 #ifdef LDAP_OPT_X_KEEPALIVE_INTERVAL
        { "interval", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_ldap_t, keepalive_interval), "30" },
 #endif
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
@@ -256,8 +247,7 @@ static const CONF_PARSER module_config[] = {
        { "options", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) option_config },
 
        { "tls", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) tls_config },
-
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 static ssize_t ldapquote_xlat(UNUSED void *instance, REQUEST *request, char const *fmt, char *out, size_t freespace)
index fd6d41aff191ff888eaa45ffa6364c513fca512b..906b668715b3b33c1626538d005f709237db9569 100644 (file)
@@ -88,7 +88,7 @@ static const CONF_PARSER module_config[] = {
        { "group", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_linelog_t, group), NULL },
        { "format", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_linelog_t, line), NULL },
        { "reference", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_linelog_t, reference), NULL },
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 6e263fb57c98b733690b347474d4e8c33d518a8f..ca8249d36ab6a34ba0d20afb16f31c424fa04d20 100644 (file)
@@ -53,10 +53,9 @@ typedef struct rlm_logintime_t {
  *     buffer over-flows.
  */
 static const CONF_PARSER module_config[] = {
-  { "minimum-timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER | PW_TYPE_DEPRECATED, rlm_logintime_t, min_time), NULL },
-  { "minimum_timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_logintime_t, min_time), "60" },
-
-  { NULL, -1, 0, NULL, NULL }
+       { "minimum-timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER | PW_TYPE_DEPRECATED, rlm_logintime_t, min_time), NULL },
+       { "minimum_timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_logintime_t, min_time), "60" },
+       CONF_PARSER_TERMINATOR
 };
 
 
index 2335c8d1dc260266a52117b454e3b4c3ce4455d4..f4387019cf66d8585ef0234741275b3bf7540275 100644 (file)
@@ -539,7 +539,7 @@ static const CONF_PARSER passchange_config[] = {
        { "ntlm_auth_username", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_mschap_t, ntlm_cpw_username), NULL },
        { "ntlm_auth_domain", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_mschap_t, ntlm_cpw_domain), NULL },
        { "local_cpw", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_mschap_t, local_cpw), NULL },
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static const CONF_PARSER module_config[] = {
@@ -560,8 +560,7 @@ static const CONF_PARSER module_config[] = {
 #ifdef __APPLE__
        { "use_open_directory", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_mschap_t, open_directory), "yes" },
 #endif
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 140bb197e1850045ba0e043e88acff96fd504933..662a20298b32ceb87023115142a024cbefa815dd 100644 (file)
@@ -48,8 +48,7 @@ static const CONF_PARSER module_config[] = {
        { "mschapv2_mppe_bits", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_otp_t, mschapv2_mppe_types), "2" },
        { "mschap_mppe", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_otp_t, mschap_mppe_policy), "2" },
        { "mschap_mppe_bits", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_otp_t, mschap_mppe_types), "2" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 8ca6cc6f7875e2a2fdd3d25cb40d471e66d1be31..70d8332c511cb695d17aa305df473b27ee6569e9 100644 (file)
@@ -53,7 +53,7 @@ typedef struct rlm_pam_t {
 
 static const CONF_PARSER module_config[] = {
        { "pam_auth", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_pam_t, pam_auth_name), "radiusd" },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 typedef struct rlm_pam_data_t {
index 75afbdbe375f331590bf6ebe93831891a0b7462a..0e678ac2538f5897443eaa1d127b8b9ebc70ff1b 100644 (file)
@@ -64,7 +64,7 @@ typedef struct rlm_pap_t {
  */
 static const CONF_PARSER module_config[] = {
        { "normalise", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_pap_t, normify), "yes" },
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 
index 32e9c0e7d4fb053533e04a1815b027566d803786..e9957d23d3a56042fbabc6a73042ea4dfdf07047 100644 (file)
@@ -402,8 +402,7 @@ static const CONF_PARSER module_config[] = {
 
        { "hashsize", FR_CONF_OFFSET(PW_TYPE_INTEGER | PW_TYPE_DEPRECATED, rlm_passwd_t, hash_size), NULL },
        { "hash_size", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_passwd_t, hash_size), "100" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static int mod_instantiate(CONF_SECTION *conf, void *instance)
index 49f52f39fc643e3eac6c8baaef36b212447bd099..9a354846cd7251e7d6149a54c70ca9383948733b 100644 (file)
@@ -116,8 +116,7 @@ static const CONF_PARSER module_config[] = {
        { "func_start_accounting", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_perl_t, func_start_accounting), NULL },
 
        { "func_stop_accounting", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_perl_t, func_stop_accounting), NULL },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index bbcaf18e15e8dced65ffbb9dfc3c7bebc34a05ad..ce75ac849434a3e38f506cb4eedebe7ef53dae69 100644 (file)
@@ -57,7 +57,7 @@ static const CONF_PARSER module_config[] = {
 #if 0
        { "with_cablelabs_vsa_hack", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_preprocess_t, with_cablelabs_vsa_hack), NULL },
 #endif
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index 47ca5ec44637e42de51e82772e6f58a01e35a7a1..22456a0300ccd3b99abfcc3fbfb27b84728dd813 100644 (file)
@@ -102,8 +102,7 @@ static CONF_PARSER module_config[] = {
 #undef A
 
        { "python_path", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_python_t, python_path), NULL },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static struct {
index f30068419fe9dc95c1f6ac5a1fe21609aaa7c6c5..b542618153854a72d8e2a7432a5523c5e1c3b6cb 100644 (file)
@@ -66,7 +66,7 @@ static const CONF_PARSER module_config[] = {
        { "permissions", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_radutmp_t, permission), "0644" },
        { "callerid", FR_CONF_OFFSET(PW_TYPE_BOOLEAN | PW_TYPE_DEPRECATED, rlm_radutmp_t, caller_id_ok), NULL },
        { "caller_id", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_radutmp_t, caller_id_ok), "no" },
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index c7ab893b23eea36cc2adf8e829ad630a49c7d4ea..349809521e16dcfd9abac5cb94bbe2ceafd82b66 100644 (file)
@@ -47,19 +47,17 @@ typedef struct rlm_realm_t {
 } rlm_realm_t;
 
 static CONF_PARSER module_config[] = {
-  { "format", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t, format_string), "suffix" },
-  { "delimiter", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t, delim), "@" },
-  { "ignore_default", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_realm_t, ignore_default), "no" },
-  { "ignore_null", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_realm_t, ignore_null), "no" },
-
+       { "format", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t, format_string), "suffix" },
+       { "delimiter", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t, delim), "@" },
+       { "ignore_default", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_realm_t, ignore_default), "no" },
+       { "ignore_null", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_realm_t, ignore_null), "no" },
 #ifdef HAVE_TRUST_ROUTER_TR_DH_H
-  { "default_community", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t,default_community),  "none" },
-  { "rp_realm", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t,rp_realm),  "none" },
-  { "trust_router", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t,trust_router),  "none" },
-  { "tr_port", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_realm_t,tr_port),  "0" },
+       { "default_community", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t,default_community),  "none" },
+       { "rp_realm", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t,rp_realm),  "none" },
+       { "trust_router", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_realm_t,trust_router),  "none" },
+       { "tr_port", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_realm_t,tr_port),  "0" },
 #endif
-
-  { NULL, -1, 0, NULL, NULL }    /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index 561e0f365d8dda01496154ff73e9f96f2173747d..689aaff1af787064bde1ecdbfcb4a6599f22b6ae 100644 (file)
@@ -36,8 +36,7 @@ static const CONF_PARSER module_config[] = {
        { "port", FR_CONF_OFFSET(PW_TYPE_SHORT, REDIS_INST, port), "6379" },
        { "database", FR_CONF_OFFSET(PW_TYPE_INTEGER, REDIS_INST, database), "0" },
        { "password", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_SECRET, REDIS_INST, password), NULL },
-
-       { NULL, -1, 0, NULL, NULL} /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static int _mod_conn_free(REDISSOCK *dissocket)
index 0b41a613d892d50716ef3e98aed76ab3f3212e47..b8b8cc102c36dbfb12c73cea2ac380a53c0cca7c 100644 (file)
@@ -62,8 +62,7 @@ static CONF_PARSER module_config[] = {
        { "insert", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_REQUIRED | PW_TYPE_XLAT, rlm_rediswho_t, insert), NULL },
        { "trim", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_rediswho_t, trim), NULL }, /* required only if trim_count > 0 */
        { "expire", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_REQUIRED | PW_TYPE_XLAT, rlm_rediswho_t, expire), NULL },
-
-       { NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index 0ffd071bbc884623e05eb3fb1340fd9ab94494fb..cc5bb5cf5951b224a63025b29f7324bccd0656db 100644 (file)
@@ -43,8 +43,7 @@ static CONF_PARSER tls_config[] = {
        { "random_file", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_rest_section_t, tls_random_file), NULL },
        { "check_cert", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_rest_section_t, tls_check_cert), "yes" },
        { "check_cert_cn", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_rest_section_t, tls_check_cert_cn), "yes" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /*
@@ -75,15 +74,13 @@ static const CONF_PARSER section_config[] = {
 
        /* TLS Parameters */
        { "tls", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) tls_config },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static const CONF_PARSER module_config[] = {
        { "connect_uri", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_rest_t, connect_uri), NULL },
        { "connect_timeout", FR_CONF_OFFSET(PW_TYPE_TIMEVAL, rlm_rest_t, connect_timeout_tv), "4.0" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static int rlm_rest_perform(rlm_rest_t *instance, rlm_rest_section_t *section, void *handle, REQUEST *request,
index fb4db440f021779e4873adffc30f7b95289428ba..3abc2c70586ba9b71fbf02fc0f362af106aea49d 100644 (file)
@@ -88,7 +88,7 @@ typedef struct rlm_ruby_t {
 static const CONF_PARSER module_config[] = {
        { "filename", FR_CONF_OFFSET(PW_TYPE_FILE_INPUT | PW_TYPE_REQUIRED, struct rlm_ruby_t, filename), NULL },
        { "module", FR_CONF_OFFSET(PW_TYPE_STRING, struct rlm_ruby_t, module_name), "Radiusd" },
-       { NULL, -1, 0, NULL, NULL } /* end of module_config */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 795be67cff2b47bfda63b9ac5d33f51470e6eee8..ddb9bba1967e86a58349e2cf84212f67be70fc2b 100644 (file)
@@ -44,7 +44,7 @@ static const CONF_PARSER module_config[] = {
        { "max_sessions", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_securid_t, max_sessions), "2048" },
        { "max_trips_per_session", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_securid_t, max_trips_per_session), NULL },
        { "max_round_trips", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_securid_t, max_trips_per_session), "6" },
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index 9428fff9baac59dbde162b859d168dff6956e95c..6215b03dbdec2ac256072f39167981c08cf9b7d1 100644 (file)
@@ -39,8 +39,7 @@ static const CONF_PARSER module_config[] = {
        { "socket", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_smsotp_t, socket), "/var/run/smsotp_socket" },
        { "challenge_message", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_smsotp_t, challenge), "Enter Mobile PIN" },
        { "challenge_type", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_smsotp_t, authtype), "smsotp-reply" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static int _mod_conn_free(int *fdp)
index 62d23da7dbeaffcae6675aee01da4bb79145d246..b0e0dfb68d193e309733409520633dd760cf97c7 100644 (file)
@@ -101,8 +101,7 @@ static const CONF_PARSER module_config[] = {
         * Do SoH over DHCP?
         */
        { "dhcp", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_soh_t, dhcp), "no" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 
index cddff769b6db140badb419ba04130f848a789040..1aa71b9e26f318847220f47ee8c48485a22a4633 100644 (file)
@@ -54,8 +54,7 @@ static const CONF_PARSER module_config[] = {
        { "key", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_ATTRIBUTE, rlm_sometimes_t, key), "User-Name" },
        { "start", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_sometimes_t, start), "0" },
        { "end", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_sometimes_t, end), "127" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static int mod_instantiate(CONF_SECTION *conf, void *instance)
index 4b947e2054b52fd7411a93a66ee2ff7635d79bc4..d37482f815183b4ccdc74d0f3c3aa07732067ce5 100644 (file)
@@ -92,16 +92,14 @@ static CONF_PARSER tls_config[] = {
         *      MySQL Specific TLS attributes
         */
        { "cipher", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_sql_mysql_config_t, tls_cipher), NULL },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static const CONF_PARSER driver_config[] = {
        { "tls", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) tls_config },
 
        { "warnings", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_sql_mysql_config_t, warnings_str), "auto" },
-
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 /* Prototypes */
index d978a55e27039edd6cae21419b4a6c0e76d3d697..1c2034ef1e0a5783c4bfa160c976cb17c01dba56 100644 (file)
@@ -71,8 +71,7 @@ typedef struct rlm_sql_postgres_conn {
 
 static CONF_PARSER driver_config[] = {
        { "send_application_name", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_sql_postgres_config_t, send_application_name), "no" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static int mod_instantiate(CONF_SECTION *conf, rlm_sql_config_t *config)
index 879df888db738d93f2971de9c6f6b786c3eca18a..b442abbd817dd4baa8a0e04fff90b6d65702578d 100644 (file)
@@ -62,7 +62,7 @@ typedef struct rlm_sql_sqlite_config {
 static const CONF_PARSER driver_config[] = {
        { "filename", FR_CONF_OFFSET(PW_TYPE_FILE_OUTPUT | PW_TYPE_REQUIRED, rlm_sql_sqlite_config_t, filename), NULL },
        { "busy_timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_sql_sqlite_config_t, busy_timeout), "200" },
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 /** Convert an sqlite status code to an sql_rcode_t
index 79e40e92fef9e5df57b20aa104271a6be5f4da5e..e1e18c9c31cd00b18351aee7dd6dafc6fd31cce5 100644 (file)
@@ -44,7 +44,7 @@ RCSID("$Id$")
 static const CONF_PARSER query_config[] = {
        { "query", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT | PW_TYPE_MULTI, rlm_sql_config_t, accounting.query), NULL },
 
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 /*
@@ -58,7 +58,7 @@ static const CONF_PARSER type_config[] = {
        { "interim-update", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) query_config },
        { "stop", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) query_config },
 
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 static const CONF_PARSER acct_config[] = {
@@ -67,7 +67,7 @@ static const CONF_PARSER acct_config[] = {
 
        { "type", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) type_config },
 
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 static const CONF_PARSER postauth_config[] = {
@@ -75,8 +75,7 @@ static const CONF_PARSER postauth_config[] = {
        { "logfile", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_sql_config_t, postauth.logfile), NULL },
 
        { "query", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT | PW_TYPE_MULTI, rlm_sql_config_t, postauth.query), NULL },
-
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 static const CONF_PARSER module_config[] = {
@@ -120,8 +119,7 @@ static const CONF_PARSER module_config[] = {
        { "accounting", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) acct_config },
 
        { "post-auth", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) postauth_config },
-
-       {NULL, -1, 0, NULL, NULL}
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index 94326c205122bf0fc179a7b617c147ce3051a3b4..5e9d9a03e6440b41dfc3ed3c88b47392f6178eeb 100644 (file)
@@ -100,8 +100,7 @@ static const CONF_PARSER module_config[] = {
 
        { "reply-name", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_DEPRECATED, rlm_sqlcounter_t, reply_name), NULL },
        { "reply_name", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_ATTRIBUTE, rlm_sqlcounter_t, reply_name), "Session-Timeout" },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 static int find_next_reset(rlm_sqlcounter_t *inst, time_t timeval)
index 56826b6a32653dbd239f95e524251a1a13165cac..32b03bcb440972759f515a98ce2faba91ad91b04 100644 (file)
@@ -77,7 +77,7 @@ static CONF_PARSER module_config[] = {
        { "no_free_fail", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_sqlhpwippool_t, no_free_fail), "yes" },
        { "free_after", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_sqlhpwippool_t, free_after), "300" },
        { "sync_after", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_sqlhpwippool_t, sync_after), "25" },
-       { NULL, -1, 0, NULL, NULL } /* end */
+       CONF_PARSER_TERMINATOR
 };
 
 int nvp_log(unsigned int line, rlm_sqlhpwippool_t *data, int lvl, char const *fmt, ...) CC_HINT(format (printf, 4, 5));
index 27a6a9dea1fe85be4e0738ab5df9b6bd6576583a..c99d039a04e2794bdc7ddef87aea18f2c05e6e07 100644 (file)
@@ -100,8 +100,7 @@ static CONF_PARSER message_config[] = {
        { "clear", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_sqlippool_t, log_clear), NULL },
        { "failed", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_sqlippool_t, log_failed), NULL },
        { "nopool", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_sqlippool_t, log_nopool), NULL },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /*
@@ -199,8 +198,7 @@ static CONF_PARSER module_config[] = {
        { "off_commit", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_XLAT, rlm_sqlippool_t, off_commit), "COMMIT" },
 
        { "messages", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) message_config },
-
-       { NULL, -1, 0, NULL, NULL }
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index 92ae60f41bad130a536310e293623814bbc2837e..22ecb60558797f758ae0ffbea056b5d015d50c4c 100644 (file)
@@ -50,8 +50,7 @@ static const CONF_PARSER module_config[] = {
        { "boolean", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_test_t, boolean), "no" },
        { "string", FR_CONF_OFFSET(PW_TYPE_STRING, rlm_test_t, string), NULL },
        { "ipaddr", FR_CONF_OFFSET(PW_TYPE_IPV4_ADDR, rlm_test_t, ipaddr), "*" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static int rlm_test_cmp(UNUSED void *instance, REQUEST *request, UNUSED VALUE_PAIR *thing, VALUE_PAIR *check,
index e3c6f97d2fce7eef3407c2c606f4265009a0d06f..9f4b6ae06a0c75db0fe4146e9dca01ef29abab32 100644 (file)
@@ -57,7 +57,7 @@ typedef struct rlm_unbound_t {
 static const CONF_PARSER module_config[] = {
        { "filename", FR_CONF_OFFSET(PW_TYPE_FILE_INPUT | PW_TYPE_REQUIRED, rlm_unbound_t, filename), "${modconfdir}/unbound/default.conf"  },
        { "timeout", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_unbound_t, timeout), "3000" },
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index 9ada080b1c476a96056638e72e5bd3afa11bb32d..590e59198ed7a07a12de8185be117443dbcef889 100644 (file)
@@ -65,8 +65,7 @@ typedef struct rlm_unix {
 
 static const CONF_PARSER module_config[] = {
        { "radwtmp", FR_CONF_OFFSET(PW_TYPE_FILE_OUTPUT | PW_TYPE_REQUIRED, rlm_unix_t, radwtmp), "NULL" },
-
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index fac3052cb935e6498615643ce7df8758b247bd12..784ae635e9b3ee83e1985a1e8193b4e860155f0c 100644 (file)
@@ -49,9 +49,8 @@ typedef struct rlm_wimax_t {
  *     buffer over-flows.
  */
 static const CONF_PARSER module_config[] = {
-  { "delete_mppe_keys", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_wimax_t, delete_mppe_keys), "no" },
-
-  { NULL, -1, 0, NULL, NULL }          /* end the list */
+       { "delete_mppe_keys", FR_CONF_OFFSET(PW_TYPE_BOOLEAN, rlm_wimax_t, delete_mppe_keys), "no" },
+       CONF_PARSER_TERMINATOR
 };
 
 /*
index fc58363a55ddb600524100b146a1a19548f1acdc..b444b972fa6a6e8133b5e2c6753757237e9100c6 100644 (file)
@@ -41,7 +41,7 @@ RCSID("$Id$")
 static const CONF_PARSER validation_config[] = {
        { "client_id", FR_CONF_OFFSET(PW_TYPE_INTEGER, rlm_yubikey_t, client_id), 0 },
        { "api_key", FR_CONF_OFFSET(PW_TYPE_STRING | PW_TYPE_SECRET, rlm_yubikey_t, api_key), NULL },
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 #endif
 
@@ -53,7 +53,7 @@ static const CONF_PARSER module_config[] = {
 #ifdef HAVE_YKCLIENT
        { "validation", FR_CONF_POINTER(PW_TYPE_SUBSECTION, NULL), (void const *) validation_config },
 #endif
-       { NULL, -1, 0, NULL, NULL }             /* end the list */
+       CONF_PARSER_TERMINATOR
 };
 
 static char const modhextab[] = "cbdefghijklnrtuv";