]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
pool: Make pool timeout configurable in other units than hours
authorTobias Brunner <tobias@strongswan.org>
Thu, 17 Aug 2017 13:21:19 +0000 (15:21 +0200)
committerTobias Brunner <tobias@strongswan.org>
Thu, 2 Nov 2017 09:04:03 +0000 (10:04 +0100)
src/pool/pool.c
src/pool/pool_usage.c

index cd9fb62933e40f8bdf2ffc5fdd97af045114841d..c0d855b73de5ce3e64e2a1bd154a9f879f9a9b5a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011-2016 Tobias Brunner
+ * Copyright (C) 2011-2017 Tobias Brunner
  * Copyright (C) 2008 Martin Willi
  * HSR Hochschule fuer Technik Rapperswil
  *
@@ -56,7 +56,7 @@ static void do_args(int argc, char *argv[]);
 /**
  * Create or replace a pool by name
  */
-static u_int create_pool(char *name, chunk_t start, chunk_t end, int timeout)
+static u_int create_pool(char *name, chunk_t start, chunk_t end, u_int timeout)
 {
        enumerator_t *e;
        int pool;
@@ -77,7 +77,7 @@ static u_int create_pool(char *name, chunk_t start, chunk_t end, int timeout)
        if (db->execute(db, &pool,
                        "INSERT INTO pools (name, start, end, timeout) VALUES (?, ?, ?, ?)",
                        DB_TEXT, name, DB_BLOB, start, DB_BLOB, end,
-                       DB_INT, timeout*3600) != 1)
+                       DB_UINT, timeout) != 1)
        {
                fprintf(stderr, "creating pool failed.\n");
                exit(EXIT_FAILURE);
@@ -258,7 +258,18 @@ static void status(void)
                        }
                        if (timeout)
                        {
-                               printf("%7dh ", timeout/3600);
+                               if (timeout >= 60 * 300)
+                               {
+                                       printf("%7dh ", timeout/3600);
+                               }
+                               else if (timeout >= 300)
+                               {
+                                       printf("%7dm ", timeout/60);
+                               }
+                               else
+                               {
+                                       printf("%7ds ", timeout);
+                               }
                        }
                        else
                        {
@@ -318,7 +329,7 @@ next_pool:
 /**
  * ipsec pool --add - add a new pool
  */
-static void add(char *name, host_t *start, host_t *end, int timeout)
+static void add(char *name, host_t *start, host_t *end, u_int timeout)
 {
        chunk_t start_addr, end_addr, cur_addr;
        u_int id, count;
@@ -407,7 +418,7 @@ static bool add_address(u_int pool_id, char *address_str, int *family)
        return TRUE;
 }
 
-static void add_addresses(char *pool, char *path, int timeout)
+static void add_addresses(char *pool, char *path, u_int timeout)
 {
        u_int pool_id, count = 0;
        int family = AF_UNSPEC;
@@ -941,7 +952,7 @@ static void do_args(int argc, char *argv[])
        char *name = "", *value = "", *filter = "";
        char *pool = NULL, *identity = NULL, *addresses = NULL;
        value_type_t value_type = VALUE_NONE;
-       int timeout = 0;
+       time_t timeout = 0;
        bool utc = FALSE, hexout = FALSE;
 
        enum {
@@ -1088,8 +1099,7 @@ static void do_args(int argc, char *argv[])
                                }
                                continue;
                        case 't':
-                               timeout = atoi(optarg);
-                               if (timeout == 0 && strcmp(optarg, "0") != 0)
+                               if (!timespan_from_string(optarg, "h", &timeout))
                                {
                                        fprintf(stderr, "invalid timeout '%s'.\n", optarg);
                                        usage();
index 7622cfa86f2e54d36e40b6a46a6d9b6b0b20f347..94cc041b59825cf34d4e516cd539de1dcf3190a0 100644 (file)
@@ -44,7 +44,9 @@ Usage:\n\
       name:    Name of the pool, as used in ipsec.conf rightsourceip=%%name\n\
       start:   Start address of the pool\n\
       end:     End address of the pool\n\
-      timeout: Lease time in hours, 0 for static leases\n\
+      timeout: Lease time in hours (use 'd', 'm', or 's' to alternatively\n\
+               configure the time in days, minutes or seconds, respectively),\n\
+               0 for static leases\n\
   \n\
   ipsec pool --add <name> --addresses <file> [--timeout <timeout>]\n\
   ipsec pool --replace <name> --addresses <file> [--timeout <timeout>]\n\
@@ -57,7 +59,9 @@ Usage:\n\
                are read from STDIN. Reading addresses stops at the end of file\n\
                or an empty line. Pools created with this command can not be\n\
                resized.\n\
-      timeout: Lease time in hours, 0 for static leases\n\
+      timeout: Lease time in hours (use 'd', 'm', or 's' to alternatively\n\
+               configure the time in days, minutes or seconds, respectively),\n\
+               0 for static leases\n\
   \n\
   ipsec pool --addattr <type> [--pool <name> [--identity <id>]]\n\
              --addr|--mask|--server|--subnet|--string|--hex <value>\n\