starter: Ensure the daemon executable exists when starting up

The only purpose of starter is to control the IKE daemon, so we
terminate it if the daemon executable is not found (e.g. because
DAEMON_NAME is incorrect).

This removes the charonstart setting (it was not actually configurable
anymore).
This commit is contained in:
Tobias Brunner
2015-05-08 19:05:26 +02:00
parent 5923abc6bf
commit 95faeaa7ed
3 changed files with 8 additions and 18 deletions
-16
View File
@@ -50,17 +50,6 @@ static const char firewall_defaults[] = IPSEC_SCRIPT " _updown iptables";
*/
extern kw_entry_t *in_word_set (char *str, unsigned int len);
static bool daemon_exists(char *daemon, char *path)
{
struct stat st;
if (stat(path, &st) != 0)
{
DBG1(DBG_APP, "Disabling %sstart option, '%s' not found", daemon, path);
return FALSE;
}
return TRUE;
}
/**
* Process deprecated keywords
*/
@@ -147,10 +136,6 @@ static void load_setup(starter_config_t *cfg, conf_parser_t *parser)
}
enumerator->destroy(enumerator);
dict->destroy(dict);
/* verify the executables are actually available */
cfg->setup.charonstart = cfg->setup.charonstart &&
daemon_exists(daemon_name, cmd);
}
/*
@@ -718,7 +703,6 @@ starter_config_t* confread_load(const char *file)
INIT(cfg,
.setup = {
.uniqueids = TRUE,
.charonstart = TRUE,
}
);
-1
View File
@@ -193,7 +193,6 @@ typedef struct starter_config starter_config_t;
struct starter_config {
struct {
bool charonstart;
char *charondebug;
bool uniqueids;
bool cachecrls;
+8 -1
View File
@@ -517,6 +517,13 @@ int main (int argc, char **argv)
exit(status);
}
if (stat(cmd, &stb) != 0)
{
DBG1(DBG_APP, "IKE daemon '%s' not found", cmd);
cleanup();
exit(LSB_RC_FAILURE);
}
DBG1(DBG_APP, "Starting %sSwan "VERSION" IPsec [starter]...",
lib->settings->get_bool(lib->settings,
"charon.i_dont_care_about_security_and_use_aggressive_mode_psk",
@@ -836,7 +843,7 @@ int main (int argc, char **argv)
*/
if (_action_ & FLAG_ACTION_START_CHARON)
{
if (cfg->setup.charonstart && !starter_charon_pid())
if (!starter_charon_pid())
{
DBG2(DBG_APP, "Attempting to start %s...", daemon_name);
if (starter_start_charon(cfg, no_fork, attach_gdb))