]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
meta: skip -T for hour and date format
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 6 Sep 2021 08:31:19 +0000 (10:31 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 8 Sep 2021 23:13:40 +0000 (01:13 +0200)
If -T is used:

- meta hour displays the hours in seconds based on your timezone.
- meta time displays the UNIX time since 1970 in nanoseconds.

Better, skip -T for these two datatypes and use the formatted output
instead, ie.

- meta hour "00:00:20"
- meta time "1970-01-01 01:00:01"

Fixes: f8f32deda31d ("meta: Introduce new conditions 'time', 'day' and 'hour'")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/meta.c

index fdbeba26291a99acb38e2db3bfae2d72ab9c8f58..bdd10269569d23980e012955c675865110c4c0eb 100644 (file)
@@ -388,27 +388,17 @@ static void date_type_print(const struct expr *expr, struct output_ctx *octx)
        /* Convert from nanoseconds to seconds */
        tstamp /= 1000000000L;
 
-       if (!nft_output_seconds(octx)) {
-               /* Obtain current tm, to add tm_gmtoff to the timestamp */
-               cur_tm = localtime((time_t *) &tstamp);
+       /* Obtain current tm, to add tm_gmtoff to the timestamp */
+       cur_tm = localtime((time_t *) &tstamp);
 
-               if (cur_tm)
-                       tstamp += cur_tm->tm_gmtoff;
-
-               if ((tm = gmtime((time_t *) &tstamp)) != NULL &&
-                       strftime(timestr, sizeof(timestr) - 1, "%F %T", tm))
-                       nft_print(octx, "\"%s\"", timestr);
-               else
-                       nft_print(octx, "Error converting timestamp to printed time");
-
-               return;
-       }
+       if (cur_tm)
+               tstamp += cur_tm->tm_gmtoff;
 
-       /*
-        * Do our own printing. The default print function will print in
-        * nanoseconds, which is ugly.
-        */
-       nft_print(octx, "%" PRIu64, tstamp);
+       if ((tm = gmtime((time_t *) &tstamp)) != NULL &&
+            strftime(timestr, sizeof(timestr) - 1, "%F %T", tm))
+               nft_print(octx, "\"%s\"", timestr);
+       else
+               nft_print(octx, "Error converting timestamp to printed time");
 }
 
 static time_t parse_iso_date(const char *sym)
@@ -498,11 +488,6 @@ static void hour_type_print(const struct expr *expr, struct output_ctx *octx)
        struct tm *cur_tm;
        time_t ts;
 
-       if (nft_output_seconds(octx)) {
-               expr_basetype(expr)->print(expr, octx);
-               return;
-       }
-
        /* Obtain current tm, so that we can add tm_gmtoff */
        ts = time(NULL);
        cur_tm = localtime(&ts);