return FR_IO_REPLY;
}
-static int acct_compile_section(CONF_SECTION *server_cs, char const *name1, char const *name2, rlm_components_t component)
-{
- CONF_SECTION *cs;
-
- cs = cf_section_find(server_cs, name1, name2);
- if (!cs) return 0;
-
- cf_log_debug(cs, "Loading %s %s {...}", name1, name2);
-
- if (unlang_compile(cs, component) < 0) {
- cf_log_err(cs, "Failed compiling '%s %s { ... }' section", name1, name2);
- return -1;
- }
-
- return 1;
-}
static int mod_instantiate(UNUSED void *instance, CONF_SECTION *listen_cs)
{
server_cs = cf_item_to_section(cf_parent(listen_cs));
rad_assert(strcmp(cf_section_name1(server_cs), "server") == 0);
- rcode = acct_compile_section(server_cs, "recv", "Accounting-Request", MOD_PREACCT);
+ rcode = unlang_compile_subsection(server_cs, "recv", "Accounting-Request", MOD_PREACCT);
if (rcode < 0) return rcode;
if (rcode == 0) {
- rcode = acct_compile_section(server_cs, "recv", "*", MOD_PREACCT);
+ rcode = unlang_compile_subsection(server_cs, "recv", "*", MOD_PREACCT);
if (rcode < 0) return rcode;
}
return -1;
}
- rcode = acct_compile_section(server_cs, "send", "Accounting-Response", MOD_ACCOUNTING);
+ rcode = unlang_compile_subsection(server_cs, "send", "Accounting-Response", MOD_ACCOUNTING);
if (rcode < 0) return rcode;
if (rcode == 0) {
- rcode = acct_compile_section(server_cs, "send", "*", MOD_ACCOUNTING);
+ rcode = unlang_compile_subsection(server_cs, "send", "*", MOD_ACCOUNTING);
if (rcode < 0) return rcode;
}
}
-static int auth_compile_section(CONF_SECTION *server_cs, char const *name1, char const *name2, rlm_components_t component)
-{
- CONF_SECTION *cs;
-
- cs = cf_section_find(server_cs, name1, name2);
- if (!cs) return 0;
-
- cf_log_debug(cs, "Loading %s %s {...}", name1, name2);
-
- if (unlang_compile(cs, component) < 0) {
- cf_log_err(cs, "Failed compiling '%s %s { ... }' section", name1, name2);
- return -1;
- }
-
- return 1;
-}
-
/*
* Ensure that the "radius" section is compiled.
*/
int rcode;
CONF_SECTION *subcs = NULL;
- rcode = auth_compile_section(server_cs, "recv", "Access-Request", MOD_AUTHORIZE);
+ rcode = unlang_compile_subsection(server_cs, "recv", "Access-Request", MOD_AUTHORIZE);
if (rcode < 0) return rcode;
if (rcode == 0) {
return -1;
}
- rcode = auth_compile_section(server_cs, "send", "Access-Accept", MOD_POST_AUTH);
+ rcode = unlang_compile_subsection(server_cs, "send", "Access-Accept", MOD_POST_AUTH);
if (rcode < 0) return rcode;
if (rcode == 0) {
cf_log_err(server_cs, "Failed finding 'send Access-Accept { ... }' section of virtual server %s",
return -1;
}
- rcode = auth_compile_section(server_cs, "send", "Access-Reject", MOD_POST_AUTH);
+ rcode = unlang_compile_subsection(server_cs, "send", "Access-Reject", MOD_POST_AUTH);
if (rcode < 0) return rcode;
if (rcode == 0) {
cf_log_err(server_cs, "Failed finding 'send Access-Reject { ... }' section of virtual server %s",
/*
* It's OK to not have an Access-Challenge section.
*/
- rcode = auth_compile_section(server_cs, "send", "Access-Challenge", MOD_POST_AUTH);
+ rcode = unlang_compile_subsection(server_cs, "send", "Access-Challenge", MOD_POST_AUTH);
if (rcode < 0) return rcode;
while ((subcs = cf_section_find_next(server_cs, subcs, "authenticate", NULL))) {
return -1;
}
- rcode = auth_compile_section(server_cs, "authenticate", name2, MOD_AUTHENTICATE);
+ rcode = unlang_compile_subsection(server_cs, "authenticate", name2, MOD_AUTHENTICATE);
if (rcode < 0) {
cf_log_err(subcs, "Failed compiling 'authenticate %s { ... }' section", name2);
return -1;
return FR_IO_REPLY;
}
-static int coa_compile_section(CONF_SECTION *server_cs, char const *name1, char const *name2, rlm_components_t component)
-{
- CONF_SECTION *cs;
-
- cs = cf_section_find(server_cs, name1, name2);
- if (!cs) return 0;
-
- cf_log_debug(cs, "Loading %s %s {...}", name1, name2);
-
- if (unlang_compile(cs, component) < 0) {
- cf_log_err(cs, "Failed compiling '%s %s { ... }' section", name1, name2);
- return -1;
- }
-
- return 1;
-}
static int mod_instantiate(UNUSED void *instance, CONF_SECTION *listen_cs)
{
server_cs = cf_item_to_section(cf_parent(listen_cs));
rad_assert(strcmp(cf_section_name1(server_cs), "server") == 0);
- rcode = coa_compile_section(server_cs, "recv", "CoA-Request", MOD_RECV_COA);
+ rcode = unlang_compile_subsection(server_cs, "recv", "CoA-Request", MOD_RECV_COA);
if (rcode < 0) return rcode;
if (rcode == 1) coa_found = true;
- rcode = coa_compile_section(server_cs, "recv", "Disconnect-Request", MOD_RECV_COA);
+ rcode = unlang_compile_subsection(server_cs, "recv", "Disconnect-Request", MOD_RECV_COA);
if (rcode < 0) return rcode;
if (rcode == 1) dm_found = true;
if (!coa_found || !dm_found) {
- rcode = coa_compile_section(server_cs, "recv", "*", MOD_RECV_COA);
+ rcode = unlang_compile_subsection(server_cs, "recv", "*", MOD_RECV_COA);
if (rcode < 0) return rcode;
if (rcode == 1) coa_found = dm_found = true;
}
}
if (coa_found) {
- rcode = coa_compile_section(server_cs, "send", "CoA-ACK", MOD_SEND_COA);
+ rcode = unlang_compile_subsection(server_cs, "send", "CoA-ACK", MOD_SEND_COA);
if (rcode < 0) return rcode;
- rcode = coa_compile_section(server_cs, "send", "CoA-NAK", MOD_SEND_COA);
+ rcode = unlang_compile_subsection(server_cs, "send", "CoA-NAK", MOD_SEND_COA);
if (rcode < 0) return rcode;
}
if (dm_found) {
- rcode = coa_compile_section(server_cs, "send", "Disconnect-ACK", MOD_SEND_COA);
+ rcode = unlang_compile_subsection(server_cs, "send", "Disconnect-ACK", MOD_SEND_COA);
if (rcode < 0) return rcode;
- rcode = coa_compile_section(server_cs, "send", "Disconnect-NAK", MOD_SEND_COA);
+ rcode = unlang_compile_subsection(server_cs, "send", "Disconnect-NAK", MOD_SEND_COA);
if (rcode < 0) return rcode;
}
- rcode = coa_compile_section(server_cs, "send", "*", MOD_PREACCT);
+ rcode = unlang_compile_subsection(server_cs, "send", "*", MOD_PREACCT);
if (rcode < 0) return rcode;
return 0;
return FR_IO_REPLY;
}
-static int mod_compile_section(CONF_SECTION *server_cs, char const *name1, char const *name2, rlm_components_t component)
-{
- CONF_SECTION *cs;
-
- cs = cf_section_find(server_cs, name1, name2);
- if (!cs) return 0;
-
- cf_log_debug(cs, "Compiling policies - %s %s {...}", name1, name2);
-
- /*
- * FIXME: check if it's already compiled?
- *
- * What happens when we have Access-Accept in response to Status-Server,
- * versus Access-Accept in response to Access-Request?
- *
- * Damn...
- */
-
- if (unlang_compile(cs, component) < 0) {
- cf_log_err(cs, "Failed compiling '%s %s { ... }' section", name1, name2);
- return -1;
- }
-
- return 1;
-}
/*
- * Ensure that the "radius" section is compiled.
+ * Ensure that the "recv foo" etc. sections are compiled.
*/
static int mod_instantiate(UNUSED void *instance, CONF_SECTION *listen_cs)
{
server_cs = cf_item_to_section(cf_parent(listen_cs));
rad_assert(strcmp(cf_section_name1(server_cs), "server") == 0);
- rcode = mod_compile_section(server_cs, "recv", "Status-Server", MOD_AUTHORIZE);
+ rcode = unlang_compile_subsection(server_cs, "recv", "Status-Server", MOD_AUTHORIZE);
if (rcode < 0) return rcode;
if (rcode == 0) {
cf_log_err(server_cs, "Failed finding 'recv Status-Server { ... }' section of virtual server %s",
return -1;
}
- rcode = mod_compile_section(server_cs, "send", "Access-Accept", MOD_POST_AUTH);
+ rcode = unlang_compile_subsection(server_cs, "send", "Access-Accept", MOD_POST_AUTH);
if (rcode < 0) return rcode;
if (rcode == 0) {
cf_log_err(server_cs, "Failed finding 'send Access-Accept { ... }' section of virtual server %s",
return -1;
}
- rcode = mod_compile_section(server_cs, "send", "Access-Reject", MOD_POST_AUTH);
+ rcode = unlang_compile_subsection(server_cs, "send", "Access-Reject", MOD_POST_AUTH);
if (rcode < 0) return rcode;
if (rcode == 0) {
cf_log_err(server_cs, "Failed finding 'send Access-Reject { ... }' section of virtual server %s",