support of plutostderrlog keyword
[strongswan.git] / src / starter / invokepluto.c
index 240d983..d68db56 100644 (file)
@@ -11,7 +11,7 @@
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * for more details.
  *
- * RCSID $Id: invokepluto.c,v 1.12 2006/02/17 21:41:50 as Exp $
+ * RCSID $Id$
  */
 
 #include <sys/types.h>
@@ -104,10 +104,10 @@ starter_stop_pluto (void)
        }
 
 int
-starter_start_pluto (starter_config_t *cfg, bool debug)
+starter_start_pluto (starter_config_t *cfg, bool no_fork)
 {
-    int i;
     struct stat stb;
+    int i;
     pid_t pid;
     char **l;
     int argc = 2;
@@ -121,7 +121,7 @@ starter_start_pluto (starter_config_t *cfg, bool debug)
 
     printf ("starter_start_pluto entered\n");
 
-    if (debug)
+    if (cfg->setup.plutostderrlog || no_fork)
     {
        arg[argc++] = "--stderrlog";
     }
@@ -167,6 +167,10 @@ starter_start_pluto (starter_config_t *cfg, bool debug)
     {
        arg[argc++] = "--nat_traversal";
     }
+    if (cfg->setup.force_keepalive)
+    {
+       arg[argc++] = "--force_keepalive";
+    }
     if (cfg->setup.keep_alive)
     {
        static char buf2[15];
@@ -187,6 +191,11 @@ starter_start_pluto (starter_config_t *cfg, bool debug)
        arg[argc++] = "--pkcs11module";
        arg[argc++] = cfg->setup.pkcs11module;
     }
+    if (cfg->setup.pkcs11initargs)
+    {
+       arg[argc++] = "--pkcs11initargs";
+       arg[argc++] = cfg->setup.pkcs11initargs;
+    }
     if (cfg->setup.pkcs11keepstate)
     {
        arg[argc++] = "--pkcs11keepstate";
@@ -209,34 +218,6 @@ starter_start_pluto (starter_config_t *cfg, bool debug)
        if (cfg->setup.prepluto)
            system(cfg->setup.prepluto);
 
-       /* if ipsec.secrets file is missing then generate RSA default key pair */
-       if (stat(SECRETS_FILE, &stb) != 0)
-       {
-           mode_t oldmask;
-           FILE *f;
-
-           plog("no %s file, generating RSA key", SECRETS_FILE);
-           seteuid(IPSEC_UID);
-           setegid(IPSEC_GID);
-           system("ipsec scepclient --out pkcs1 --out cert-self --quiet");
-           seteuid(0);
-           setegid(0);
-
-           /* ipsec.secrets is root readable only */
-           oldmask = umask(0066);
-
-           f = fopen(SECRETS_FILE, "w");
-           if (f)
-           {
-               fprintf(f, "# /etc/ipsec.secrets - strongSwan IPsec secrets file\n");
-               fprintf(f, "\n");
-               fprintf(f, ": RSA myKey.der\n");
-               fclose(f);
-           }
-           chown(SECRETS_FILE, IPSEC_UID, IPSEC_GID);
-           umask(oldmask);
-       }
-
        pid = fork();
        switch (pid)
        {