return 1; /* success */
}
-static int command_set_module_state(rad_listen_t *listener, int argc, char *argv[])
+extern const FR_NAME_NUMBER mod_rcode_table[];
+
+static int command_set_module_status(rad_listen_t *listener, int argc, char *argv[])
{
CONF_SECTION *cs;
module_instance_t *mi;
if (strcmp(argv[1], "alive") == 0) {
- mi->dead = FALSE;
+ mi->force = FALSE;
} else if (strcmp(argv[1], "dead") == 0) {
- mi->dead = TRUE;
+ mi->code = RLM_MODULE_FAIL;
+ mi->force = TRUE;
} else {
- cprintf(listener, "ERROR: Unknown status \"%s\"\n", argv[2]);
- return 0;
+ int rcode;
+
+ rcode = fr_str2int(mod_rcode_table, argv[1], -1);
+ if (rcode < 0) {
+ cprintf(listener, "ERROR: Unknown status \"%s\"\n", argv[1]);
+ return 0;
+ }
+
+ mi->code = rcode;
+ mi->force = TRUE;
}
return 1; /* success */
"set module config <module> variable value - set configuration for <module>",
command_set_module_config, NULL },
- { "state", FR_WRITE,
- "set module state NAME [alive|dead] - set the module NAME to be alive or dead (always return \"fail\")",
- command_set_module_state, NULL },
+ { "status", FR_WRITE,
+ "set module status <module> [alive|...] - set the module status to be alive (operating normally), or force a particular code (ok,fail, etc.)",
+ command_set_module_status, NULL },
{ NULL, 0, NULL, NULL, NULL }
};
comp2str[component], sp->modinst->name,
sp->modinst->entry->name, request->number);
- if (sp->modinst->dead) {
- myresult = RLM_MODULE_FAIL;
+ if (sp->modinst->force) {
+ myresult = sp->modinst->code;
goto fail;
}