starter: Make daemon name configurable

A daemon can be specified using the '--daemon' command line parameter. This
tells starter to invoke a daemon other than 'charon'.

Additionally the ipsec script uses the environment variable DAEMON_NAME to tell
the starter which daemon to use.
This commit is contained in:
Adrian-Ken Rueegsegger
2013-03-19 15:23:45 +01:00
committed by Tobias Brunner
parent 0aa5a46669
commit 4dc3ef94a1
5 changed files with 126 additions and 38 deletions
+20 -17
View File
@@ -46,22 +46,22 @@ void starter_charon_sigchild(pid_t pid, int status)
if (status == SS_RC_LIBSTRONGSWAN_INTEGRITY ||
status == SS_RC_DAEMON_INTEGRITY)
{
DBG1(DBG_APP, "charon has quit: integrity test of %s failed",
(status == 64) ? "libstrongswan" : "charon");
DBG1(DBG_APP, "%s has quit: integrity test of %s failed",
daemon_name, (status == 64) ? "libstrongswan" : daemon_name);
_stop_requested = 1;
}
else if (status == SS_RC_INITIALIZATION_FAILED)
{
DBG1(DBG_APP, "charon has quit: initialization failed");
DBG1(DBG_APP, "%s has quit: initialization failed", daemon_name);
_stop_requested = 1;
}
if (!_stop_requested)
{
DBG1(DBG_APP, "charon has died -- restart scheduled (%dsec)",
CHARON_RESTART_DELAY);
DBG1(DBG_APP, "%s has died -- restart scheduled (%dsec)",
daemon_name, CHARON_RESTART_DELAY);
alarm(CHARON_RESTART_DELAY); // restart in 5 sec
}
unlink(CHARON_PID_FILE);
unlink(pid_file);
}
}
@@ -88,7 +88,8 @@ int starter_stop_charon (void)
else if (i == 40)
{
kill(pid, SIGKILL);
DBG1(DBG_APP, "starter_stop_charon(): charon does not respond, sending KILL");
DBG1(DBG_APP, "starter_stop_charon(): %s does not respond, sending KILL",
daemon_name);
}
else
{
@@ -98,15 +99,15 @@ int starter_stop_charon (void)
}
if (_charon_pid == 0)
{
DBG1(DBG_APP, "charon stopped after %d ms", 200*i);
DBG1(DBG_APP, "%s stopped after %d ms", daemon_name, 200*i);
return 0;
}
DBG1(DBG_APP, "starter_stop_charon(): can't stop charon !!!");
DBG1(DBG_APP, "starter_stop_charon(): can't stop %s !!!", daemon_name);
return -1;
}
else
{
DBG1(DBG_APP, "stater_stop_charon(): charon was not started...");
DBG1(DBG_APP, "stater_stop_charon(): %s was not started...", daemon_name);
}
return -1;
}
@@ -119,7 +120,7 @@ int starter_start_charon (starter_config_t *cfg, bool no_fork, bool attach_gdb)
char buffer[BUF_LEN];
int argc = 1;
char *arg[] = {
CHARON_CMD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
cmd, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
@@ -130,7 +131,7 @@ int starter_start_charon (starter_config_t *cfg, bool no_fork, bool attach_gdb)
argc = 0;
arg[argc++] = "/usr/bin/gdb";
arg[argc++] = "--args";
arg[argc++] = CHARON_CMD;
arg[argc++] = cmd;
}
if (!no_fork)
{
@@ -172,7 +173,8 @@ int starter_start_charon (starter_config_t *cfg, bool no_fork, bool attach_gdb)
if (_charon_pid)
{
DBG1(DBG_APP, "starter_start_charon(): charon already started...");
DBG1(DBG_APP, "starter_start_charon(): %s already started...",
daemon_name);
return -1;
}
else
@@ -203,9 +205,9 @@ int starter_start_charon (starter_config_t *cfg, bool no_fork, bool attach_gdb)
{
/* wait for charon for a maximum of 500 x 20 ms = 10 s */
usleep(20000);
if (stat(CHARON_PID_FILE, &stb) == 0)
if (stat(pid_file, &stb) == 0)
{
DBG1(DBG_APP, "charon (%d) started after %d ms",
DBG1(DBG_APP, "%s (%d) started after %d ms", daemon_name,
_charon_pid, 20*(i+1));
return 0;
}
@@ -213,7 +215,8 @@ int starter_start_charon (starter_config_t *cfg, bool no_fork, bool attach_gdb)
if (_charon_pid)
{
/* If charon is started but with no ctl file, stop it */
DBG1(DBG_APP, "charon too long to start... - kill kill");
DBG1(DBG_APP, "%s too long to start... - kill kill",
daemon_name);
for (i = 0; i < 20 && (pid = _charon_pid) != 0; i++)
{
if (i == 0)
@@ -233,7 +236,7 @@ int starter_start_charon (starter_config_t *cfg, bool no_fork, bool attach_gdb)
}
else
{
DBG1(DBG_APP, "charon refused to be started");
DBG1(DBG_APP, "%s refused to be started", daemon_name);
}
return -1;
}