]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
don't hard-code "UDP" as the transport name
authorAlan T. DeKok <aland@freeradius.org>
Fri, 20 Apr 2018 17:52:40 +0000 (13:52 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 20 Apr 2018 17:53:01 +0000 (13:53 -0400)
src/modules/proto_radius/io.c
src/modules/proto_radius/proto_radius.c
src/modules/proto_radius/proto_radius.h

index fa639422d93a396e7187bb8481af7a44fb5e6464..b5c1990991da2a35fc742be34c68c9fb35458231 100644 (file)
@@ -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);
index 52b6e0c07c01c41462ead05fac58a0eee8550452..d869d69628f6fb910da14d6164e66c9b59a23853 100644 (file)
@@ -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);
 }
 
index 7f441297c25080ea50099b22cad853355a65e8fd..92e1d224649c58960ee2934aa49cd41ffd99ebb2 100644 (file)
@@ -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