From: Alan T. DeKok Date: Wed, 25 Nov 2020 14:14:26 +0000 (-0500) Subject: remove radius from src/lib/util/base.h X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db67a23fa2fef7b1715e0cdaeb4ceb8addf0939f;p=thirdparty%2Ffreeradius-server.git remove radius from src/lib/util/base.h and fix up everything which needs it. --- diff --git a/src/bin/radsniff.h b/src/bin/radsniff.h index ff163d1b39e..56ed293a16a 100644 --- a/src/bin/radsniff.h +++ b/src/bin/radsniff.h @@ -32,6 +32,7 @@ RCSIDH(radsniff_h, "$Id$") #include #include #include +#include #ifdef HAVE_COLLECTDC_H # include diff --git a/src/bin/radsnmp.c b/src/bin/radsnmp.c index f2a5435297e..2ba965ebfc0 100644 --- a/src/bin/radsnmp.c +++ b/src/bin/radsnmp.c @@ -30,7 +30,9 @@ RCSID("$Id$") #include #include #include +#include #include + #include #include #include diff --git a/src/bin/unit_test_module.c b/src/bin/unit_test_module.c index 740ff1f41fc..d832993f16e 100644 --- a/src/bin/unit_test_module.c +++ b/src/bin/unit_test_module.c @@ -37,6 +37,7 @@ RCSID("$Id$") #include #include +#include #ifdef HAVE_GETOPT_H # include diff --git a/src/include/all.mk b/src/include/all.mk index 0306ed1592e..f7b5ce15912 100644 --- a/src/include/all.mk +++ b/src/include/all.mk @@ -61,8 +61,8 @@ src/include/$(1): $(2) ${Q}test -e $$@ || mkdir -p $$(dir $$@) ${Q}echo "#pragma once" > $$@ ${Q}grep ^PROTOCOL $$< | ${NORMALIZE} | awk '{print "#define FR_PROTOCOL_"$$$$2" " $$$$3 " //!< AUTOGENERATED PROTOCOL NUMBER DEFINITION"}' >> $$@ - ${Q}grep ^ATTRIBUTE $$< | ${NORMALIZE} | awk '{print "#define FR_"$$$$2 " " $$$$3 " //!< AUTOGENERATED ATTRIBUTE DEFINITION"}' >> $$@ - ${Q}grep ^STRUCT $$< | ${NORMALIZE} | awk '{print "#define FR_"$$$$2 " " $$$$3 " //!< AUTOGENERATED ATTRIBUTE DEFINITION"}' >> $$@ + ${Q}grep ^ATTRIBUTE $$< | ${NORMALIZE} | awk '{print "#define FR_"$$$$2 " " $$$$3 " //!< AUTOGENERATED ATTRIBUTE DEFINITION"}' >> $$@ + ${Q}grep ^STRUCT $$< | ${NORMALIZE} | awk '{print "#define FR_"$$$$2 " " $$$$3 " //!< AUTOGENERATED ATTRIBUTE DEFINITION"}' >> $$@ ${Q}grep ^VALUE $$< | ${NORMALIZE} | awk '{print "#define FR_"$$$$2"_VALUE_"$$$$3 " " $$$$4 " //!< AUTOGENERATED VALUE DEFINITION"}' >> $$@ endef $(foreach x,$(DICT),$(eval $(call DICT_TO_HEADER,$(addsuffix .h,$(subst dictionary.,,$(patsubst share/dictionary/%,protocol/%,$(x)))),$(x)))) diff --git a/src/lib/eap/chbind.c b/src/lib/eap/chbind.c index 4fcb259840f..6bdde077d6a 100644 --- a/src/lib/eap/chbind.c +++ b/src/lib/eap/chbind.c @@ -25,6 +25,9 @@ RCSID("$Id$") +#include +#include + #include #include "chbind.h" #include "attrs.h" diff --git a/src/lib/eap/chbind.h b/src/lib/eap/chbind.h index 933c606f7d4..0c5c997eca4 100644 --- a/src/lib/eap/chbind.h +++ b/src/lib/eap/chbind.h @@ -33,6 +33,8 @@ RCSIDH(lib_eap_chbind_h, "$Id$") #include #include +#include +#include /* Structure to represent eap channel binding packet format */ typedef struct { diff --git a/src/lib/ldap/control.c b/src/lib/ldap/control.c index e82440ab742..e723f313bfb 100644 --- a/src/lib/ldap/control.c +++ b/src/lib/ldap/control.c @@ -27,6 +27,9 @@ RCSID("$Id$") USES_APPLE_DEPRECATED_API #include +#ifdef LDAP_CONTROL_X_SESSION_TRACKING +#include +#endif /** Merge connection and call specific client and server controls * @@ -190,6 +193,9 @@ int fr_ldap_control_add_session_tracking(fr_ldap_connection_t *conn, request_t * memcpy(&hostname, main_config->name, sizeof(hostname)); /* const / non-const issues */ + /* + * @todo - MULTI_PROTOCOL - switch to auto-loaded dictionaries. + */ for (vp = fr_cursor_init(&cursor, &request->request_pairs); vp; vp = fr_cursor_next(&cursor)) { diff --git a/src/lib/server/cond_tokenize.c b/src/lib/server/cond_tokenize.c index 01a1b6f266c..08d9af237bf 100644 --- a/src/lib/server/cond_tokenize.c +++ b/src/lib/server/cond_tokenize.c @@ -28,6 +28,7 @@ RCSID("$Id$") #include #include #include +#include #include diff --git a/src/lib/server/exfile.c b/src/lib/server/exfile.c index 11435c6fb92..921a1e095fb 100644 --- a/src/lib/server/exfile.c +++ b/src/lib/server/exfile.c @@ -26,6 +26,7 @@ #include #include #include +#include #include diff --git a/src/lib/server/request.c b/src/lib/server/request.c index 633ea3a06b8..ef438d134a4 100644 --- a/src/lib/server/request.c +++ b/src/lib/server/request.c @@ -552,10 +552,16 @@ void request_verify(char const *file, int line, request_t const *request) if (request->packet) { packet_verify(file, line, request, request->packet, "request"); +#if 0 + /* + * @todo - a multi-protocol server shouldn't have + * hard-coded RADIUS. + */ if ((request->packet->code == FR_CODE_ACCESS_REQUEST) && (request->reply && !request->reply->code)) { fr_assert(request->state_ctx != NULL); } +#endif } if (request->reply) packet_verify(file, line, request, request->reply, "reply"); diff --git a/src/lib/server/tmpl_tokenize.c b/src/lib/server/tmpl_tokenize.c index 4d80080f1a1..fa1d9392360 100644 --- a/src/lib/server/tmpl_tokenize.c +++ b/src/lib/server/tmpl_tokenize.c @@ -30,6 +30,7 @@ RCSID("$Id$") #include #include +#include #include #include diff --git a/src/lib/server/trigger.c b/src/lib/server/trigger.c index 35f75c1bc57..66b36712d43 100644 --- a/src/lib/server/trigger.c +++ b/src/lib/server/trigger.c @@ -29,6 +29,7 @@ RCSID("$Id$") #include #include #include +#include /* * Public "thunk" API so that the various binaries can link to diff --git a/src/lib/server/virtual_servers.c b/src/lib/server/virtual_servers.c index 5a107c70b0e..0d23ca27f47 100644 --- a/src/lib/server/virtual_servers.c +++ b/src/lib/server/virtual_servers.c @@ -34,6 +34,7 @@ RCSID("$Id$") #include #include #include +#include #include #include diff --git a/src/lib/unlang/compile.c b/src/lib/unlang/compile.c index e4d11803feb..f8083c135cb 100644 --- a/src/lib/unlang/compile.c +++ b/src/lib/unlang/compile.c @@ -28,6 +28,7 @@ RCSID("$Id$") #include #include #include +#include #include "call_priv.h" #include "caller_priv.h" diff --git a/src/lib/util/base.h b/src/lib/util/base.h index 994ef27e428..0b95eabc726 100644 --- a/src/lib/util/base.h +++ b/src/lib/util/base.h @@ -32,9 +32,6 @@ RCSIDH(libradius_h, "$Id$") #include -#include -#include - #include #include #include diff --git a/src/modules/proto_dhcpv4/dhcpclient.c b/src/modules/proto_dhcpv4/dhcpclient.c index 77baa26b73b..ac2c1339fd4 100644 --- a/src/modules/proto_dhcpv4/dhcpclient.c +++ b/src/modules/proto_dhcpv4/dhcpclient.c @@ -110,9 +110,9 @@ fr_dict_attr_autoload_t dhcpclient_dict_attr[] = { }; static fr_table_num_sorted_t const request_types[] = { - { L("auto"), FR_CODE_UNDEFINED }, + { L("auto"), 0 }, { L("decline"), FR_DHCP_DECLINE }, - { L("discover"), FR_DHCP_DISCOVER }, + { L("discover"), FR_DHCP_DISCOVER }, { L("inform"), FR_DHCP_INFORM }, { L("lease_query"), FR_DHCP_LEASE_QUERY }, { L("release"), FR_DHCP_RELEASE }, diff --git a/src/modules/proto_vmps/proto_vmps.c b/src/modules/proto_vmps/proto_vmps.c index 151c82431d1..7360bb07173 100644 --- a/src/modules/proto_vmps/proto_vmps.c +++ b/src/modules/proto_vmps/proto_vmps.c @@ -172,7 +172,7 @@ static int mod_decode(void const *instance, request_t *request, uint8_t *const d fr_radius_packet_t *packet = request->packet; fr_cursor_t cursor; - fr_assert(data[0] < FR_RADIUS_MAX_PACKET_CODE); + fr_assert(data[0] < FR_VQP_MAX_CODE); RHEXDUMP3(data, data_len, "proto_vmps decode packet"); @@ -247,7 +247,7 @@ static ssize_t mod_encode(void const *instance, request_t *request, uint8_t *buf * "Do not respond" */ if ((request->reply->code == FR_CODE_DO_NOT_RESPOND) || - (request->reply->code == 0) || (request->reply->code >= FR_RADIUS_MAX_PACKET_CODE)) { + (request->reply->code >= FR_VQP_MAX_CODE)) { *buffer = false; return 1; } diff --git a/src/modules/proto_vmps/proto_vmps_udp.c b/src/modules/proto_vmps/proto_vmps_udp.c index 13f7382acd9..f36692d74b9 100644 --- a/src/modules/proto_vmps/proto_vmps_udp.c +++ b/src/modules/proto_vmps/proto_vmps_udp.c @@ -256,14 +256,6 @@ static ssize_t mod_write(fr_listen_t *li, void *packet_ctx, UNUSED fr_time_t req */ if (data_size <= 0) return data_size; - /* - * Root through the reply to determine any - * connection-level negotiation data. - */ - if (track->packet[0] == FR_CODE_STATUS_SERVER) { -// status_check_reply(inst, buffer, buffer_len); - } - return data_size; } diff --git a/src/modules/rlm_cache/rlm_cache.h b/src/modules/rlm_cache/rlm_cache.h index bd15d67c183..d62c6af09c0 100644 --- a/src/modules/rlm_cache/rlm_cache.h +++ b/src/modules/rlm_cache/rlm_cache.h @@ -28,6 +28,7 @@ RCSIDH(cache_h, "$Id$") #include #include #include +#include typedef struct rlm_cache_driver_s rlm_cache_driver_t; diff --git a/src/modules/rlm_chap/rlm_chap.c b/src/modules/rlm_chap/rlm_chap.c index 0f4a8ee00a7..65e50037fc9 100644 --- a/src/modules/rlm_chap/rlm_chap.c +++ b/src/modules/rlm_chap/rlm_chap.c @@ -29,6 +29,7 @@ RCSID("$Id$") #include #include #include +#include typedef struct { char const *name; //!< Auth-Type value for this module instance. diff --git a/src/modules/rlm_eap/rlm_eap.h b/src/modules/rlm_eap/rlm_eap.h index 3d77cac94e7..b4c4af6e266 100644 --- a/src/modules/rlm_eap/rlm_eap.h +++ b/src/modules/rlm_eap/rlm_eap.h @@ -28,6 +28,7 @@ RCSIDH(rlm_eap_h, "$Id$") #include #include +#include #include #include diff --git a/src/modules/rlm_eap/types/rlm_eap_fast/eap_fast.h b/src/modules/rlm_eap/types/rlm_eap_fast/eap_fast.h index 17d9b6fcf8f..ff01ad7486e 100644 --- a/src/modules/rlm_eap/types/rlm_eap_fast/eap_fast.h +++ b/src/modules/rlm_eap/types/rlm_eap_fast/eap_fast.h @@ -28,6 +28,7 @@ RCSIDH(eap_fast_h, "$Id$") #include +#include #define EAP_FAST_VERSION 1 diff --git a/src/modules/rlm_eap/types/rlm_eap_peap/peap.c b/src/modules/rlm_eap/types/rlm_eap_peap/peap.c index 9613246d81f..3cc6ceaa0bf 100644 --- a/src/modules/rlm_eap/types/rlm_eap_peap/peap.c +++ b/src/modules/rlm_eap/types/rlm_eap_peap/peap.c @@ -25,6 +25,9 @@ RCSID("$Id$") USES_APPLE_DEPRECATED_API /* OpenSSL API has been deprecated by Apple */ #include +#include +#include + #include "eap_peap.h" static int setup_fake_request(request_t *request, request_t *fake, peap_tunnel_t *t); diff --git a/src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h b/src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h index a47012a22bf..3862fc876e0 100644 --- a/src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h +++ b/src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h @@ -26,6 +26,8 @@ RCSIDH(eap_ttls_h, "$Id$") #include +#include +#include extern fr_dict_attr_t const *attr_eap_tls_require_client_cert; extern fr_dict_attr_t const *attr_proxy_to_realm; diff --git a/src/modules/rlm_mschap/rlm_mschap.c b/src/modules/rlm_mschap/rlm_mschap.c index d9a4975071d..d2fd1d160af 100644 --- a/src/modules/rlm_mschap/rlm_mschap.c +++ b/src/modules/rlm_mschap/rlm_mschap.c @@ -32,6 +32,7 @@ RCSID("$Id$") #include #include #include +#include #include #include diff --git a/src/modules/rlm_perl/rlm_perl.c b/src/modules/rlm_perl/rlm_perl.c index 50941e454cb..f842338771a 100644 --- a/src/modules/rlm_perl/rlm_perl.c +++ b/src/modules/rlm_perl/rlm_perl.c @@ -29,6 +29,7 @@ RCSID("$Id$") #include #include #include +#include #ifdef INADDR_ANY # undef INADDR_ANY diff --git a/src/modules/rlm_radius/rlm_radius.h b/src/modules/rlm_radius/rlm_radius.h index ac53908d48a..cdc6d7f3b7d 100644 --- a/src/modules/rlm_radius/rlm_radius.h +++ b/src/modules/rlm_radius/rlm_radius.h @@ -22,6 +22,7 @@ #include #include #include +#include /* * $Id$ diff --git a/src/modules/rlm_radutmp/rlm_radutmp.c b/src/modules/rlm_radutmp/rlm_radutmp.c index 9b90907fa11..bf0c18ced43 100644 --- a/src/modules/rlm_radutmp/rlm_radutmp.c +++ b/src/modules/rlm_radutmp/rlm_radutmp.c @@ -27,6 +27,7 @@ RCSID("$Id$") #include #include #include +#include #include @@ -196,6 +197,8 @@ static unlang_action_t CC_HINT(nonnull) mod_accounting(rlm_rcode_t *p_result, mo char *filename = NULL; char *expanded = NULL; + if (request->dict != dict_radius) RETURN_MODULE_NOOP; + if (request->packet->socket.inet.src_ipaddr.af != AF_INET) { RDEBUG2("IPv6 not supported!"); RETURN_MODULE_NOOP; diff --git a/src/modules/rlm_redis_ippool/rlm_redis_ippool.c b/src/modules/rlm_redis_ippool/rlm_redis_ippool.c index 8e181826539..c25af2791b0 100644 --- a/src/modules/rlm_redis_ippool/rlm_redis_ippool.c +++ b/src/modules/rlm_redis_ippool/rlm_redis_ippool.c @@ -48,6 +48,8 @@ RCSID("$Id$") #include #include +#include + #include #include #include "redis_ippool.h" diff --git a/src/modules/rlm_soh/rlm_soh.c b/src/modules/rlm_soh/rlm_soh.c index f138af9f62c..8c83c903210 100644 --- a/src/modules/rlm_soh/rlm_soh.c +++ b/src/modules/rlm_soh/rlm_soh.c @@ -26,6 +26,7 @@ RCSID("$Id$") #include #include #include +#include #include typedef struct { diff --git a/src/modules/rlm_sometimes/rlm_sometimes.c b/src/modules/rlm_sometimes/rlm_sometimes.c index 612a7b99543..9a0dba23ded 100644 --- a/src/modules/rlm_sometimes/rlm_sometimes.c +++ b/src/modules/rlm_sometimes/rlm_sometimes.c @@ -25,6 +25,7 @@ RCSID("$Id$") #include #include +#include #include /* @@ -112,6 +113,8 @@ static unlang_action_t sometimes_return(rlm_rcode_t *p_result, void const *insta /* * If we're returning "handled", then set the packet * code in the reply, so that the server responds. + * + * @todo - MULTI_PROTOCOL - make this protocol agnostic */ if ((inst->rcode == RLM_MODULE_HANDLED) && reply) { switch (packet->code) { diff --git a/src/modules/rlm_sqlippool/rlm_sqlippool.c b/src/modules/rlm_sqlippool/rlm_sqlippool.c index 389082e69b7..0ef5be21fe7 100644 --- a/src/modules/rlm_sqlippool/rlm_sqlippool.c +++ b/src/modules/rlm_sqlippool/rlm_sqlippool.c @@ -30,6 +30,7 @@ RCSID("$Id$") #include #include +#include #include @@ -816,7 +817,6 @@ static unlang_action_t CC_HINT(nonnull) mod_accounting(rlm_rcode_t *p_result, mo } acct_status_type = vp->vp_uint32; - switch (acct_status_type) { case FR_STATUS_START: case FR_STATUS_ALIVE: diff --git a/src/modules/rlm_stats/rlm_stats.c b/src/modules/rlm_stats/rlm_stats.c index a737096474f..89406bc6133 100644 --- a/src/modules/rlm_stats/rlm_stats.c +++ b/src/modules/rlm_stats/rlm_stats.c @@ -28,6 +28,7 @@ RCSID("$Id$") #include #include #include +#include #include @@ -40,6 +41,11 @@ RCSID("$Id$") #include +/* + * @todo - MULTI_PROTOCOL - make this protocol agnostic. + * Perhaps keep stats in a hash table by (request->dict, request->code) ? + */ + typedef struct { pthread_mutex_t mutex; fr_dict_attr_t const *type_da; //!< FreeRADIUS-Stats4-Type diff --git a/src/modules/rlm_unix/rlm_unix.c b/src/modules/rlm_unix/rlm_unix.c index 99081591c2c..8d405dcdc3a 100644 --- a/src/modules/rlm_unix/rlm_unix.c +++ b/src/modules/rlm_unix/rlm_unix.c @@ -36,6 +36,7 @@ USES_APPLE_DEPRECATED_API #include #include #include +#include #include #include @@ -379,7 +380,7 @@ static unlang_action_t CC_HINT(nonnull) mod_accounting(rlm_rcode_t *p_result, mo status = vp->vp_uint32; /* - * FIXME: handle FR_STATUS_ALIVE like 1.5.4.3 did. + * Maybe handle ALIVE, too? */ if (status != FR_STATUS_START && status != FR_STATUS_STOP) diff --git a/src/modules/rlm_yubikey/rlm_yubikey.c b/src/modules/rlm_yubikey/rlm_yubikey.c index c193dddb273..73673462c5e 100644 --- a/src/modules/rlm_yubikey/rlm_yubikey.c +++ b/src/modules/rlm_yubikey/rlm_yubikey.c @@ -25,6 +25,7 @@ */ RCSID("$Id$") +#include #include "rlm_yubikey.h" #ifdef HAVE_YKCLIENT @@ -263,7 +264,7 @@ static unlang_action_t CC_HINT(nonnull) mod_authorize(rlm_rcode_t *p_result, mod * Don't print out debugging messages if we know * they're useless. */ - if (request->packet->code != FR_CODE_ACCESS_CHALLENGE) { + if ((request->dict == dict_radius) && request->packet->code != FR_CODE_ACCESS_CHALLENGE) { RDEBUG2("No cleartext password in the request. Can't do Yubikey authentication"); } diff --git a/src/protocols/radius/list.c b/src/protocols/radius/list.c index 57d0b4e5dbf..afbffb228a0 100644 --- a/src/protocols/radius/list.c +++ b/src/protocols/radius/list.c @@ -25,6 +25,7 @@ RCSID("$Id$") +#include "radius.h" #include "list.h" #include diff --git a/src/protocols/vmps/vmps.h b/src/protocols/vmps/vmps.h index 23f042811cf..60b806e97c2 100644 --- a/src/protocols/vmps/vmps.h +++ b/src/protocols/vmps/vmps.h @@ -32,6 +32,7 @@ extern "C" { #endif #define FR_VQP_MAX_CODE (5) +#define FR_CODE_DO_NOT_RESPOND (0) #define FR_VQP_HDR_LEN (8) #define FR_VQP_VERSION (1)