starter: Ensure the daemon executable exists when starting up
authorTobias Brunner <tobias@strongswan.org>
Tue, 5 May 2015 16:11:50 +0000 (18:11 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 8 May 2015 17:05:26 +0000 (19:05 +0200)
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).

src/starter/confread.c
src/starter/confread.h
src/starter/starter.c

index 3943f9a..c3a0ac0 100644 (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,
                }
        );
 
index 0eea988..457327f 100644 (file)
@@ -193,7 +193,6 @@ typedef struct starter_config starter_config_t;
 
 struct starter_config {
                struct {
-                               bool     charonstart;
                                char     *charondebug;
                                bool     uniqueids;
                                bool     cachecrls;
index 74b5b52..a192989 100644 (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))