From: Alan T. DeKok Date: Fri, 20 Apr 2018 17:52:40 +0000 (-0400) Subject: don't hard-code "UDP" as the transport name X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46702ed6bb366dda1fefd57cd59e354fa32ab6ce;p=thirdparty%2Ffreeradius-server.git don't hard-code "UDP" as the transport name --- diff --git a/src/modules/proto_radius/io.c b/src/modules/proto_radius/io.c index fa639422d93..b5c1990991d 100644 --- a/src/modules/proto_radius/io.c +++ b/src/modules/proto_radius/io.c @@ -235,8 +235,8 @@ static proto_radius_connection_t *proto_radius_connection_alloc(proto_radius_t * * called when the instance data is freed. */ if (!nak) { - if (dl_instance(NULL, &dl_inst, NULL, inst->dl_inst, "udp", DL_TYPE_SUBMODULE) < 0) { - DEBUG("Failed to find proto_radius_%s", "udp"); + if (dl_instance(NULL, &dl_inst, NULL, inst->dl_inst, inst->transport, DL_TYPE_SUBMODULE) < 0) { + DEBUG("Failed to find proto_radius_%s", inst->transport); return NULL; } rad_assert(dl_inst != NULL); diff --git a/src/modules/proto_radius/proto_radius.c b/src/modules/proto_radius/proto_radius.c index 52b6e0c07c0..d869d69628f 100644 --- a/src/modules/proto_radius/proto_radius.c +++ b/src/modules/proto_radius/proto_radius.c @@ -229,6 +229,7 @@ static int transport_parse(TALLOC_CTX *ctx, void *out, CONF_ITEM *ci, UNUSED CON { char const *name = cf_pair_value(cf_item_to_pair(ci)); dl_instance_t *parent_inst; + proto_radius_t *inst; CONF_SECTION *listen_cs = cf_item_to_section(cf_parent(ci)); CONF_SECTION *transport_cs; @@ -243,6 +244,13 @@ static int transport_parse(TALLOC_CTX *ctx, void *out, CONF_ITEM *ci, UNUSED CON parent_inst = cf_data_value(cf_data_find(listen_cs, dl_instance_t, "proto_radius")); rad_assert(parent_inst); + /* + * Set the allowed codes so that we can compile them as + * necessary. + */ + inst = talloc_get_type_abort(parent_inst->data, proto_radius_t); + inst->transport = name; + return dl_instance(ctx, out, transport_cs, parent_inst, name, DL_TYPE_SUBMODULE); } diff --git a/src/modules/proto_radius/proto_radius.h b/src/modules/proto_radius/proto_radius.h index 7f441297c25..92e1d224649 100644 --- a/src/modules/proto_radius/proto_radius.h +++ b/src/modules/proto_radius/proto_radius.h @@ -201,7 +201,9 @@ typedef struct proto_radius_t { ///< the I/O path. fr_schedule_t *sc; //!< the scheduler - int ipproto; //!< IP proto + int ipproto; //!< IP proto by number + char const *transport; //!< transport, typically name of IP proto + fr_event_list_t *el; //!< event list, for the master socket. fr_network_t *nr; //!< network for the master socket