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:
committed by
Tobias Brunner
parent
0aa5a46669
commit
4dc3ef94a1
+20
-17
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user