#define CONFIG_FILE IPSEC_CONFDIR "/ipsec.conf"
#define SECRETS_FILE IPSEC_CONFDIR "/ipsec.secrets"
-#define CHARON_CTL_FILE IPSEC_PIDDIR "/charon.ctl"
-
extern char *daemon_name;
extern char *cmd;
+extern char *piddir;
extern char *pid_file;
-#define DYNIP_DIR IPSEC_PIDDIR "/dynip"
-
#endif /* _STARTER_FILES_H_ */
static const char* starter_pid_file_default = IPSEC_PIDDIR "/starter.pid";
char *daemon_name = NULL;
+char *piddir = NULL;
char *cmd = NULL;
char *pid_file = NULL;
char *starter_pid_file = NULL;
cmd = (char*)cmd_default;
}
- if (asprintf(&pid_file, IPSEC_PIDDIR"/%s.pid", daemon_name) < 0)
+ if (asprintf(&pid_file, "%s/%s.pid", piddir, daemon_name) < 0)
{
pid_file = (char*)pid_file_default;
}
- if (asprintf(&starter_pid_file, IPSEC_PIDDIR"/starter.%s.pid",
+ if (asprintf(&starter_pid_file, "%s/starter.%s.pid", piddir,
daemon_name) < 0)
{
starter_pid_file = (char*)starter_pid_file_default;
{
fprintf(stderr, "Usage: starter [--nofork] [--auto-update <sec>]\n"
" [--debug|--debug-more|--debug-all|--nolog]\n"
- " [--attach-gdb] [--daemon <name>]\n"
+ " [--attach-gdb] [--daemon <name>] [--piddir <dir>]\n"
" [--conf <path to ipsec.conf>]\n");
exit(LSB_RC_INVALID_ARGUMENT);
}
{
daemon_name = argv[++i];
}
+ else if (streq(argv[i], "--piddir") && i+1 < argc)
+ {
+ piddir = argv[++i];
+ }
else if (streq(argv[i], "--conf") && i+1 < argc)
{
config_file = argv[++i];
}
}
+ if (!piddir)
+ {
+ piddir = lib->settings->get_str(lib->settings,
+ "starter.piddir", IPSEC_PIDDIR);
+ }
if (!set_daemon_name())
{
DBG1(DBG_APP, "unable to set daemon name");
* for more details.
*/
+#define _GNU_SOURCE /* for asprintf() */
+#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
static int send_stroke_msg(stroke_msg_t *msg)
{
stream_t *stream;
- char *uri, buffer[64];
+ char *uri, *uri_default, buffer[64];
int count;
if (msg->length == UINT16_MAX)
/* starter is not called from commandline, and therefore absolutely silent */
msg->output_verbosity = -1;
+ if (asprintf(&uri_default, "unix://%s/charon.ctl", piddir) < 0)
+ {
+ uri_default = strdup("unix://" IPSEC_PIDDIR "/charon.ctl");
+ }
uri = lib->settings->get_str(lib->settings, "%s.plugins.stroke.socket",
- "unix://" CHARON_CTL_FILE, daemon_name);
+ uri_default, daemon_name);
stream = lib->streams->connect(lib->streams, uri);
if (!stream)
{
DBG1(DBG_APP, "failed to connect to stroke socket '%s'", uri);
+ free(uri_default);
free(msg);
return -1;
}
+ free(uri_default);
if (!stream->write_all(stream, msg, msg->length))
{