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 01a639a..596c20a 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 508c374..9c9449b 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 2d81ef8..6242ebc 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 49ea907..8cdeaab 100644 (file)
@@ -1918,6 +1918,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 7c21dac..2df1619 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 6462533..da52235 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 ee0851d..1fdb626 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 2af8889..e14208d 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 1d012c5..29c1a34 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 0a65728..71fd4a5 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 c5600ee..58bc908 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 75b74d2..b5c665b 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 6183045..6a75164 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 ebaecdb..a2ffe6f 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 65b4247..a8161cb 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 1a3f0cd..cdbfa38 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 a5365ed..a73244c 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 41a52b3..7f19824 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 be28a7e..bff4053 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 6031296..6442238 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 750f8a4..5afdcc3 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 aeb7353..454e1e7 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 ffc049f..9733632 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 f086dfb..96660b7 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 07031f5..d9d1930 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 506cc95..d1813ab 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 2102d6b..acd2dc7 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 96ec4a3..a1fdbc0 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 81fcfc6..84de581 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 89db704..3dda051 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 e7ce6e7..465bfb1 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 7eda6d1..dd6e874 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 6ca96c9..4ca3dfd 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 17f6229..c0ce436 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 dd068e6..7762b15 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 1c0b087..c80ec25 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 0aaad88..13207ed 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 fd6d41a..906b668 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 6e263fb..ca8249d 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 2335c8d..f438701 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 140bb19..662a202 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 8ca6cc6..70d8332 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 75afbdb..0e678ac 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 32e9c0e..e9957d2 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 49f52f3..9a35484 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 bbcaf18..ce75ac8 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 47ca5ec..22456a0 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 f300684..b542618 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 c7ab893..3498095 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 561e0f3..689aaff 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 0b41a61..b8b8cc1 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 0ffd071..cc5bb5c 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 fb4db44..3abc2c7 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 795be67..ddb9bba 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 9428fff..6215b03 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 62d23da..b0e0dfb 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 cddff76..1aa71b9 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 4b947e2..d37482f 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 d978a55..1c2034e 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 879df88..b442abb 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 79e40e9..e1e18c9 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 94326c2..5e9d9a0 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 56826b6..32b03bc 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 27a6a9d..c99d039 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 92ae60f..22ecb60 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 e3c6f97..9f4b6ae 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 9ada080..590e591 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 fac3052..784ae63 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 fc58363..b444b97 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";