]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add the same shim for all modules
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 13 May 2024 15:58:13 +0000 (09:58 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 13 May 2024 15:58:13 +0000 (09:58 -0600)
src/listen/bfd/proto_bfd.c
src/listen/control/proto_control.c
src/listen/cron/proto_cron.c
src/listen/dhcpv4/proto_dhcpv4.c
src/listen/dhcpv6/proto_dhcpv6.c
src/listen/dns/proto_dns.c
src/listen/load/proto_load.c
src/listen/radius/proto_radius.c
src/listen/vmps/proto_vmps.c

index 0a38eead00a20734787ea01b13f4ce98f84cd647..e47bfe98c9f99f1cc47ca32aed3d11fdf53035f7 100644 (file)
@@ -30,6 +30,7 @@
 
 extern fr_app_t proto_bfd;
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
 static int auth_type_parse(TALLOC_CTX *ctx, void *out, UNUSED void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
 
 /** How to parse a BFD listen section
@@ -37,7 +38,7 @@ static int auth_type_parse(TALLOC_CTX *ctx, void *out, UNUSED void *parent, CONF
  */
 static conf_parser_t const proto_bfd_config[] = {
        { FR_CONF_OFFSET_TYPE_FLAGS("transport", FR_TYPE_VOID, 0, proto_bfd_t, io.submodule),
-         .func = virtual_sever_listen_transport_parse },
+         .func = transport_parse },
 
        CONF_PARSER_TERMINATOR
 };
@@ -82,6 +83,22 @@ fr_dict_attr_autoload_t proto_bfd_dict_attr[] = {
        { NULL }
 };
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
+{
+       proto_bfd_t             *inst = talloc_get_type_abort(parent, proto_bfd_t);
+       module_instance_t       *mi;
+
+       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
+               return -1;
+       }
+
+       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
+       inst->io.app_io = (fr_app_io_t const *)mi->exported;
+       inst->io.app_io_instance = mi->data;
+       inst->io.app_io_conf = mi->conf;
+
+       return 0;
+}
 /*
  *     They all have to be UDP.
  */
index 4a9019c0e69ac6f52ea9d701bedf0594353bf613..079c0ff7e1ebe8c4e7bd664d5dc95654821675bf 100644 (file)
@@ -28,6 +28,8 @@
 
 extern fr_app_t proto_control;
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
+
 static conf_parser_t const limit_config[] = {
        { FR_CONF_OFFSET("idle_timeout", proto_control_t, io.idle_timeout), .dflt = "30.0" } ,
        { FR_CONF_OFFSET("nak_lifetime", proto_control_t, io.nak_lifetime), .dflt = "30.0" } ,
@@ -50,7 +52,7 @@ static conf_parser_t const limit_config[] = {
  */
 static conf_parser_t const proto_control_config[] = {
        { FR_CONF_OFFSET_TYPE_FLAGS("transport", FR_TYPE_VOID, 0, proto_control_t, io.submodule),
-         .func = virtual_sever_listen_transport_parse },
+         .func = transport_parse },
 
        { FR_CONF_POINTER("limit", 0, CONF_FLAG_SUBSECTION, NULL), .subcs = (void const *) limit_config },
        CONF_PARSER_TERMINATOR
@@ -64,6 +66,23 @@ fr_dict_autoload_t proto_control_dict[] = {
        { NULL }
 };
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
+{
+       proto_control_t         *inst = talloc_get_type_abort(parent, proto_control_t);
+       module_instance_t       *mi;
+
+       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
+               return -1;
+       }
+
+       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
+       inst->io.app_io = (fr_app_io_t const *)mi->exported;
+       inst->io.app_io_instance = mi->data;
+       inst->io.app_io_conf = mi->conf;
+
+       return 0;
+}
+
 /** Open listen sockets/connect to external event source
  *
  * @param[in] instance Ctx data for this application.
index 7b911c831f847ef8cbbf962b04c86c9fe2161283..1b7bd366ac7a7de8b392f2ed61e0a8d0895adfde 100644 (file)
@@ -31,6 +31,7 @@
 
 extern fr_app_t proto_cron;
 static int type_parse(TALLOC_CTX *ctx, void *out, UNUSED void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
 
 /** How to parse a Load listen section
  *
@@ -39,7 +40,7 @@ static conf_parser_t const proto_cron_config[] = {
        { FR_CONF_OFFSET_TYPE_FLAGS("type", FR_TYPE_VOID, CONF_FLAG_NOT_EMPTY | CONF_FLAG_REQUIRED, proto_cron_t,
                          type), .func = type_parse },
        { FR_CONF_OFFSET_TYPE_FLAGS("transport", FR_TYPE_VOID, 0, proto_cron_t, io.submodule),
-         .func = virtual_sever_listen_transport_parse, .dflt = "crontab" },
+         .func = transport_parse, .dflt = "crontab" },
 
        /*
         *      Add this as a synonym so normal humans can understand it.
@@ -57,6 +58,23 @@ static conf_parser_t const proto_cron_config[] = {
        CONF_PARSER_TERMINATOR
 };
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
+{
+       proto_cron_t            *inst = talloc_get_type_abort(parent, proto_cron_t);
+       module_instance_t       *mi;
+
+       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
+               return -1;
+       }
+
+       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
+       inst->io.app_io = (fr_app_io_t const *)mi->exported;
+       inst->io.app_io_instance = mi->data;
+       inst->io.app_io_conf = mi->conf;
+
+       return 0;
+}
+
 /** Translates the packet-type into a submodule name
  *
  * @param[in] ctx      to allocate data in (instance of proto_cron).
index 0d425f3ec0dc60924056f4034332fd226cbab1a0..1e349c0fbe9005d0f86fe81cfd1281e7674d760c 100644 (file)
@@ -31,6 +31,7 @@
 
 extern fr_app_t proto_dhcpv4;
 static int type_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
 
 static const conf_parser_t priority_config[] = {
        { FR_CONF_OFFSET("Discover", proto_dhcpv4_t, priorities[FR_DHCP_DISCOVER]),
@@ -75,7 +76,7 @@ static conf_parser_t const limit_config[] = {
 static conf_parser_t const proto_dhcpv4_config[] = {
        { FR_CONF_OFFSET_FLAGS("type", CONF_FLAG_NOT_EMPTY, proto_dhcpv4_t, allowed_types), .func = type_parse },
        { FR_CONF_OFFSET_TYPE_FLAGS("transport", FR_TYPE_VOID, 0, proto_dhcpv4_t, io.submodule),
-         .func = virtual_sever_listen_transport_parse },
+         .func = transport_parse },
 
        { FR_CONF_POINTER("limit", 0, CONF_FLAG_SUBSECTION, NULL), .subcs = (void const *) limit_config },
 
@@ -135,6 +136,23 @@ static int type_parse(UNUSED TALLOC_CTX *ctx, void *out, void *parent,
        return 0;
 }
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
+{
+       proto_dhcpv4_t          *inst = talloc_get_type_abort(parent, proto_dhcpv4_t);
+       module_instance_t       *mi;
+
+       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
+               return -1;
+       }
+
+       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
+       inst->io.app_io = (fr_app_io_t const *)mi->exported;
+       inst->io.app_io_instance = mi->data;
+       inst->io.app_io_conf = mi->conf;
+
+       return 0;
+}
+
 /** Decode the packet
  *
  */
index 172e226f423566c5204159a7294fb82458d115e6..7e2d4bc4a1308000559e7b2f7c698edbf8b39420 100644 (file)
@@ -30,6 +30,7 @@
 
 extern fr_app_t proto_dhcpv6;
 static int type_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
 
 static const conf_parser_t priority_config[] = {
        { FR_CONF_OFFSET("Solicit", proto_dhcpv6_t, priorities[FR_DHCPV6_SOLICIT]),
@@ -76,7 +77,7 @@ static conf_parser_t const limit_config[] = {
 static conf_parser_t const proto_dhcpv6_config[] = {
        { FR_CONF_OFFSET_FLAGS("type", CONF_FLAG_NOT_EMPTY, proto_dhcpv6_t, allowed_types), .func = type_parse },
        { FR_CONF_OFFSET_TYPE_FLAGS("transport", FR_TYPE_VOID, 0, proto_dhcpv6_t, io.submodule),
-         .func = virtual_sever_listen_transport_parse },
+         .func = transport_parse },
 
        { FR_CONF_POINTER("limit", 0, CONF_FLAG_SUBSECTION, NULL), .subcs = (void const *) limit_config },
 
@@ -135,6 +136,23 @@ static int type_parse(UNUSED TALLOC_CTX *ctx, void *out, void *parent,
        return 0;
 }
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
+{
+       proto_dhcpv6_t          *inst = talloc_get_type_abort(parent, proto_dhcpv6_t);
+       module_instance_t       *mi;
+
+       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
+               return -1;
+       }
+
+       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
+       inst->io.app_io = (fr_app_io_t const *)mi->exported;
+       inst->io.app_io_instance = mi->data;
+       inst->io.app_io_conf = mi->conf;
+
+       return 0;
+}
+
 /** Decode the packet
  *
  */
index b589c32b65e07681daf101bc17cf219fb96bd039..02d3f67d0a9d4a0116d4111d10c71986b87455b7 100644 (file)
@@ -30,6 +30,7 @@
 
 extern fr_app_t proto_dns;
 static int type_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
 
 static const conf_parser_t priority_config[] = {
        { FR_CONF_OFFSET_TYPE_FLAGS("query", FR_TYPE_VOID, 0, proto_dns_t, priorities[FR_DNS_QUERY]),
@@ -59,7 +60,7 @@ static conf_parser_t const limit_config[] = {
 static conf_parser_t const proto_dns_config[] = {
        { FR_CONF_OFFSET_FLAGS("type", CONF_FLAG_NOT_EMPTY, proto_dns_t, allowed_types), .func = type_parse },
        { FR_CONF_OFFSET_TYPE_FLAGS("transport", FR_TYPE_VOID, 0, proto_dns_t, io.submodule),
-         .func = virtual_sever_listen_transport_parse },
+         .func = transport_parse },
 
        { FR_CONF_POINTER("limit", 0, CONF_FLAG_SUBSECTION, NULL), .subcs = (void const *) limit_config },
 
@@ -116,6 +117,23 @@ static int type_parse(UNUSED TALLOC_CTX *ctx, void *out, void *parent,
        return 0;
 }
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
+{
+       proto_dns_t             *inst = talloc_get_type_abort(parent, proto_dns_t);
+       module_instance_t       *mi;
+
+       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
+               return -1;
+       }
+
+       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
+       inst->io.app_io = (fr_app_io_t const *)mi->exported;
+       inst->io.app_io_instance = mi->data;
+       inst->io.app_io_conf = mi->conf;
+
+       return 0;
+}
+
 /** Decode the packet
  *
  */
index 386053157aaa365b055bc16626840ee3e15a6207..cf666f26b3caa5edbab11e5f136c4aeb75dd587d 100644 (file)
@@ -31,6 +31,7 @@
 
 extern fr_app_t proto_load;
 static int type_parse(TALLOC_CTX *ctx, void *out, UNUSED void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
 
 /** How to parse a Load listen section
  *
@@ -39,7 +40,7 @@ static conf_parser_t const proto_load_config[] = {
        { FR_CONF_OFFSET_TYPE_FLAGS("type", FR_TYPE_VOID, CONF_FLAG_NOT_EMPTY | CONF_FLAG_REQUIRED, proto_load_t,
                          type), .func = type_parse },
        { FR_CONF_OFFSET_TYPE_FLAGS("transport", FR_TYPE_VOID, 0, proto_load_t, io.submodule),
-         .func = virtual_sever_listen_transport_parse, .dflt = "step" },
+         .func = transport_parse, .dflt = "step" },
 
        /*
         *      Add this as a synonym so normal humans can understand it.
@@ -104,6 +105,23 @@ static int type_parse(UNUSED TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM
        return 0;
 }
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
+{
+       proto_load_t            *inst = talloc_get_type_abort(parent, proto_load_t);
+       module_instance_t       *mi;
+
+       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
+               return -1;
+       }
+
+       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
+       inst->io.app_io = (fr_app_io_t const *)mi->exported;
+       inst->io.app_io_instance = mi->data;
+       inst->io.app_io_conf = mi->conf;
+
+       return 0;
+}
+
 /** Decode the packet, and set the request->process function
  *
  */
index e32c0729ec572904afc875df34749d250f3851a5..873e1557a59386832e0c526cbd7e9d1d848cd19c 100644 (file)
@@ -86,23 +86,6 @@ static conf_parser_t const proto_radius_config[] = {
        CONF_PARSER_TERMINATOR
 };
 
-static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
-{
-       proto_radius_t          *inst = talloc_get_type_abort(parent, proto_radius_t);
-       module_instance_t       *mi;
-
-       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
-               return -1;
-       }
-
-       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
-       inst->io.app_io = (fr_app_io_t const *)mi->exported;
-       inst->io.app_io_instance = mi->data;
-       inst->io.app_io_conf = mi->conf;
-
-       return 0;
-}
-
 static fr_dict_t const *dict_radius;
 
 extern fr_dict_autoload_t proto_radius_dict[];
@@ -159,6 +142,23 @@ static int type_parse(UNUSED TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM
        return 0;
 }
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
+{
+       proto_radius_t          *inst = talloc_get_type_abort(parent, proto_radius_t);
+       module_instance_t       *mi;
+
+       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
+               return -1;
+       }
+
+       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
+       inst->io.app_io = (fr_app_io_t const *)mi->exported;
+       inst->io.app_io_instance = mi->data;
+       inst->io.app_io_conf = mi->conf;
+
+       return 0;
+}
+
 /** Decode the packet
  *
  */
index c57663fad7f0e815afdeb280aa056d32285d20ae..3e05c7c376d758f95b45da1a932b20d95335f303 100644 (file)
@@ -30,8 +30,8 @@
 #include "proto_vmps.h"
 
 extern fr_app_t proto_vmps;
-static int type_parse(TALLOC_CTX *ctx, void *out, void *parent,
-                     CONF_ITEM *ci, conf_parser_t const *rule);
+static int type_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule);
 
 static const conf_parser_t priority_config[] = {
        { FR_CONF_OFFSET("Join-Request", proto_vmps_t, priorities[FR_PACKET_TYPE_VALUE_JOIN_REQUEST]),
@@ -64,7 +64,7 @@ static conf_parser_t const limit_config[] = {
  */
 static conf_parser_t const proto_vmps_config[] = {
        { FR_CONF_OFFSET_FLAGS("type", CONF_FLAG_NOT_EMPTY, proto_vmps_t, allowed_types), .func = type_parse },
-       { FR_CONF_OFFSET_TYPE_FLAGS("transport", FR_TYPE_VOID, 0, proto_vmps_t, io.submodule), .func = virtual_sever_listen_transport_parse },
+       { FR_CONF_OFFSET_TYPE_FLAGS("transport", FR_TYPE_VOID, 0, proto_vmps_t, io.submodule), .func = transport_parse },
 
        { FR_CONF_POINTER("limit", 0, CONF_FLAG_SUBSECTION, NULL), .subcs = (void const *) limit_config },
        { FR_CONF_POINTER("priority", 0, CONF_FLAG_SUBSECTION, NULL), .subcs = (void const *) priority_config },
@@ -121,6 +121,23 @@ static int type_parse(UNUSED TALLOC_CTX *ctx, void *out, void *parent,
        return 0;
 }
 
+static int transport_parse(TALLOC_CTX *ctx, void *out, void *parent, CONF_ITEM *ci, conf_parser_t const *rule)
+{
+       proto_vmps_t            *inst = talloc_get_type_abort(parent, proto_vmps_t);
+       module_instance_t       *mi;
+
+       if (unlikely(virtual_sever_listen_transport_parse(ctx, out, parent, ci, rule) < 0)) {
+               return -1;
+       }
+
+       mi = talloc_get_type_abort(*(void **)out, module_instance_t);
+       inst->io.app_io = (fr_app_io_t const *)mi->exported;
+       inst->io.app_io_instance = mi->data;
+       inst->io.app_io_conf = mi->conf;
+
+       return 0;
+}
+
 /** Decode the packet
  *
  */