#include <signal.h>
#include <sys/stat.h>
+#include <rpcd/exec.h>
+#include <rpcd/plugin.h>
+#include <rpcd/rc.h>
#include <rpcd/session.h>
#include <rpcd/uci.h>
-#include <rpcd/plugin.h>
-#include <rpcd/exec.h>
static struct ubus_context *ctx;
static bool respawn = false;
-int exec_timeout = RPC_EXEC_DEFAULT_TIMEOUT;
+int rpc_exec_timeout = RPC_EXEC_DEFAULT_TIMEOUT;
static void
handle_signal(int sig)
exec_self(int argc, char **argv)
{
int i;
- const char *cmd = rpc_exec_lookup(argv[0]);
- char **args = calloc(argc + 1, sizeof(char *));
+ const char *cmd;
+ char **args;
- if (!cmd || !args)
+ cmd = rpc_exec_lookup(argv[0]);
+ if (!cmd)
+ return;
+
+ args = calloc(argc + 1, sizeof(char *));
+ if (!args)
return;
for (i = 0; i < argc; i++)
break;
case 't':
- exec_timeout = strtol(optarg, NULL, 0);
+ rpc_exec_timeout = 1000 * strtol(optarg, NULL, 0);
break;
default:
}
}
- if (exec_timeout < 1 || exec_timeout > 600) {
+ if (rpc_exec_timeout < 1000 || rpc_exec_timeout > 600000) {
fprintf(stderr, "Invalid execution timeout specified\n");
return -1;
}
- exec_timeout *= 1000;
-
if (stat(RPC_UCI_DIR_PREFIX, &s))
mkdir(RPC_UCI_DIR_PREFIX, 0700);
rpc_session_api_init(ctx);
rpc_uci_api_init(ctx);
+ rpc_rc_api_init(ctx);
rpc_plugin_api_init(ctx);
hangup = getenv("RPC_HANGUP");