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
*/
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
};
{ 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.
*/
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" } ,
*/
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
{ 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.
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
*
{ 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.
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).
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]),
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 },
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
*
*/
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]),
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 },
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
*
*/
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]),
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 },
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
*
*/
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
*
{ 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.
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
*
*/
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[];
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
*
*/
#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]),
*/
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 },
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
*
*/