Coverage Report

Created: 2025-07-23 07:29

/src/suricata7/src/util-time.h
Line
Count
Source (jump to first uncovered line)
1
/* Copyright (C) 2007-2013 Open Information Security Foundation
2
 *
3
 * You can copy, redistribute or modify this Program under the terms of
4
 * the GNU General Public License version 2 as published by the Free
5
 * Software Foundation.
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 * GNU General Public License for more details.
11
 *
12
 * You should have received a copy of the GNU General Public License
13
 * version 2 along with this program; if not, write to the Free Software
14
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
15
 * 02110-1301, USA.
16
 */
17
18
/**
19
 * \file
20
 *
21
 * \author Victor Julien <victor@inliniac.net>
22
 */
23
24
#ifndef __UTIL_TIME_H__
25
#define __UTIL_TIME_H__
26
27
/*
28
 * The SCTime_t member is broken up as
29
 *  seconds: 44
30
 *  useconds: 20
31
 *
32
 * Over 500000 years can be represented in 44 bits of seconds:
33
 *  2^44/(365*24*60*60)
34
 *  557855.560
35
 * 1048576 microseconds can be represented in 20 bits:
36
 *  2^20
37
 *  1048576
38
 */
39
40
typedef struct {
41
    uint64_t secs : 44;
42
    uint64_t usecs : 20;
43
} SCTime_t;
44
45
#define SCTIME_INIT(t)                                                                             \
46
10.5M
    {                                                                                              \
47
10.5M
        (t).secs = 0;                                                                              \
48
10.5M
        (t).usecs = 0;                                                                             \
49
10.5M
    }
50
51
#define SCTIME_INITIALIZER                                                                         \
52
    (SCTime_t)                                                                                     \
53
    {                                                                                              \
54
        .secs = 0, .usecs = 0                                                                      \
55
    }
56
51.4M
#define SCTIME_USECS(t)          ((uint64_t)(t).usecs)
57
83.6M
#define SCTIME_SECS(t)           ((uint64_t)(t).secs)
58
0
#define SCTIME_MSECS(t)          (SCTIME_SECS(t) * 1000 + SCTIME_USECS(t) / 1000)
59
#define SCTIME_ADD_USECS(ts, us)                                                                   \
60
0
    (SCTime_t)                                                                                     \
61
0
    {                                                                                              \
62
0
        .secs = (ts).secs + ((ts).usecs + (us)) / 1000000, .usecs = ((ts).usecs + (us)) % 1000000  \
63
0
    }
64
#define SCTIME_ADD_SECS(ts, s)                                                                     \
65
1.51k
    (SCTime_t)                                                                                     \
66
1.51k
    {                                                                                              \
67
1.51k
        .secs = (ts).secs + (s), .usecs = (ts).usecs                                               \
68
1.51k
    }
69
#define SCTIME_FROM_SECS(s)                                                                        \
70
225k
    (SCTime_t)                                                                                     \
71
225k
    {                                                                                              \
72
225k
        .secs = (s), .usecs = 0                                                                    \
73
225k
    }
74
#define SCTIME_FROM_USECS(us)                                                                      \
75
    (SCTime_t)                                                                                     \
76
    {                                                                                              \
77
        .secs = 0, .usecs = (us)                                                                   \
78
    }
79
#define SCTIME_FROM_TIMEVAL(tv)                                                                    \
80
37.1M
    (SCTime_t)                                                                                     \
81
37.1M
    {                                                                                              \
82
37.1M
        .secs = (tv)->tv_sec, .usecs = (tv)->tv_usec                                               \
83
37.1M
    }
84
/** \brief variant to deal with potentially bad timestamps, like from pcap files */
85
#define SCTIME_FROM_TIMEVAL_UNTRUSTED(tv)                                                          \
86
1.06M
    (SCTime_t)                                                                                     \
87
1.06M
    {                                                                                              \
88
1.06M
        .secs = ((tv)->tv_sec > 0) ? (tv)->tv_sec : 0,                                             \
89
1.06M
        .usecs = ((tv)->tv_usec > 0) ? (tv)->tv_usec : 0                                           \
90
1.06M
    }
91
#define SCTIME_FROM_TIMESPEC(ts)                                                                   \
92
0
    (SCTime_t)                                                                                     \
93
0
    {                                                                                              \
94
0
        .secs = (ts)->tv_sec, .usecs = (ts)->tv_nsec / 1000                                        \
95
0
    }
96
97
#define SCTIME_TO_TIMEVAL(tv, t)                                                                   \
98
0
    (tv)->tv_sec = SCTIME_SECS((t));                                                               \
99
0
    (tv)->tv_usec = SCTIME_USECS((t));
100
#define SCTIME_CMP(a, b, CMP)                                                                      \
101
6.56M
    ((SCTIME_SECS(a) == SCTIME_SECS(b)) ? (SCTIME_USECS(a) CMP SCTIME_USECS(b))                    \
102
6.56M
                                        : (SCTIME_SECS(a) CMP SCTIME_SECS(b)))
103
0
#define SCTIME_CMP_GTE(a, b) SCTIME_CMP((a), (b), >=)
104
6.55M
#define SCTIME_CMP_GT(a, b)  SCTIME_CMP((a), (b), >)
105
0
#define SCTIME_CMP_LT(a, b)  SCTIME_CMP((a), (b), <)
106
1.51k
#define SCTIME_CMP_LTE(a, b) SCTIME_CMP((a), (b), <=)
107
#define SCTIME_CMP_NEQ(a, b) SCTIME_CMP((a), (b), !=)
108
109
void TimeInit(void);
110
void TimeDeinit(void);
111
112
void TimeSetByThread(const int thread_id, SCTime_t tv);
113
SCTime_t TimeGet(void);
114
115
/** \brief initialize a 'struct timespec' from a 'struct timeval'. */
116
0
#define FROM_TIMEVAL(timev) { .tv_sec = (timev).tv_sec, .tv_nsec = (timev).tv_usec * 1000 }
117
118
/** \brief compare two 'struct timeval' and return if the first is earlier than the second */
119
static inline bool TimevalEarlier(struct timeval *first, struct timeval *second)
120
0
{
121
    /* from man timercmp on Linux: "Some systems (but not Linux/glibc), have a broken timercmp()
122
     * implementation, in which CMP of >=, <=, and == do not work; portable applications can instead
123
     * use ... !timercmp(..., >) */
124
0
    return !timercmp(first, second, >);
125
0
}
Unexecuted instantiation: fuzz_applayerparserparse.c:TimevalEarlier
Unexecuted instantiation: app-layer-parser.c:TimevalEarlier
Unexecuted instantiation: app-layer-protos.c:TimevalEarlier
Unexecuted instantiation: app-layer-rdp.c:TimevalEarlier
Unexecuted instantiation: app-layer-rfb.c:TimevalEarlier
Unexecuted instantiation: app-layer-sip.c:TimevalEarlier
Unexecuted instantiation: app-layer-smb.c:TimevalEarlier
Unexecuted instantiation: app-layer-smtp.c:TimevalEarlier
Unexecuted instantiation: app-layer-snmp.c:TimevalEarlier
Unexecuted instantiation: app-layer-ssh.c:TimevalEarlier
Unexecuted instantiation: app-layer-ssl.c:TimevalEarlier
Unexecuted instantiation: app-layer-tftp.c:TimevalEarlier
Unexecuted instantiation: conf.c:TimevalEarlier
Unexecuted instantiation: conf-yaml-loader.c:TimevalEarlier
Unexecuted instantiation: detect-engine-state.c:TimevalEarlier
Unexecuted instantiation: feature.c:TimevalEarlier
Unexecuted instantiation: flow.c:TimevalEarlier
Unexecuted instantiation: flow-hash.c:TimevalEarlier
Unexecuted instantiation: flow-manager.c:TimevalEarlier
Unexecuted instantiation: flow-queue.c:TimevalEarlier
Unexecuted instantiation: flow-spare-pool.c:TimevalEarlier
Unexecuted instantiation: flow-storage.c:TimevalEarlier
Unexecuted instantiation: flow-timeout.c:TimevalEarlier
Unexecuted instantiation: flow-util.c:TimevalEarlier
Unexecuted instantiation: host-timeout.c:TimevalEarlier
Unexecuted instantiation: ippair-timeout.c:TimevalEarlier
Unexecuted instantiation: output-file.c:TimevalEarlier
Unexecuted instantiation: output-filedata.c:TimevalEarlier
Unexecuted instantiation: output-flow.c:TimevalEarlier
Unexecuted instantiation: packet.c:TimevalEarlier
Unexecuted instantiation: pkt-var.c:TimevalEarlier
Unexecuted instantiation: reputation.c:TimevalEarlier
Unexecuted instantiation: runmodes.c:TimevalEarlier
Unexecuted instantiation: runmode-unix-socket.c:TimevalEarlier
Unexecuted instantiation: runmode-windivert.c:TimevalEarlier
Unexecuted instantiation: stream-tcp.c:TimevalEarlier
Unexecuted instantiation: stream-tcp-cache.c:TimevalEarlier
Unexecuted instantiation: stream-tcp-list.c:TimevalEarlier
Unexecuted instantiation: stream-tcp-reassemble.c:TimevalEarlier
Unexecuted instantiation: stream-tcp-sack.c:TimevalEarlier
Unexecuted instantiation: suricata.c:TimevalEarlier
Unexecuted instantiation: threads.c:TimevalEarlier
Unexecuted instantiation: tm-modules.c:TimevalEarlier
Unexecuted instantiation: tmqh-flow.c:TimevalEarlier
Unexecuted instantiation: tmqh-packetpool.c:TimevalEarlier
Unexecuted instantiation: tm-queuehandlers.c:TimevalEarlier
Unexecuted instantiation: tm-queues.c:TimevalEarlier
Unexecuted instantiation: tm-threads.c:TimevalEarlier
Unexecuted instantiation: unix-manager.c:TimevalEarlier
Unexecuted instantiation: util-affinity.c:TimevalEarlier
Unexecuted instantiation: util-buffer.c:TimevalEarlier
Unexecuted instantiation: util-byte.c:TimevalEarlier
Unexecuted instantiation: util-checksum.c:TimevalEarlier
Unexecuted instantiation: util-conf.c:TimevalEarlier
Unexecuted instantiation: util-coredump-config.c:TimevalEarlier
Unexecuted instantiation: util-cpu.c:TimevalEarlier
Unexecuted instantiation: util-daemon.c:TimevalEarlier
Unexecuted instantiation: util-datalink.c:TimevalEarlier
Unexecuted instantiation: util-debug.c:TimevalEarlier
Unexecuted instantiation: util-debug-filters.c:TimevalEarlier
Unexecuted instantiation: util-decode-mime.c:TimevalEarlier
Unexecuted instantiation: util-device.c:TimevalEarlier
Unexecuted instantiation: util-dpdk.c:TimevalEarlier
Unexecuted instantiation: util-enum.c:TimevalEarlier
Unexecuted instantiation: util-error.c:TimevalEarlier
Unexecuted instantiation: util-exception-policy.c:TimevalEarlier
Unexecuted instantiation: util-file.c:TimevalEarlier
Unexecuted instantiation: util-hashlist.c:TimevalEarlier
Unexecuted instantiation: util-host-os-info.c:TimevalEarlier
Unexecuted instantiation: util-hugepages.c:TimevalEarlier
Unexecuted instantiation: util-ioctl.c:TimevalEarlier
Unexecuted instantiation: util-ip.c:TimevalEarlier
Unexecuted instantiation: util-ja3.c:TimevalEarlier
Unexecuted instantiation: util-landlock.c:TimevalEarlier
Unexecuted instantiation: util-macset.c:TimevalEarlier
Unexecuted instantiation: util-mem.c:TimevalEarlier
Unexecuted instantiation: util-misc.c:TimevalEarlier
Unexecuted instantiation: util-mpm.c:TimevalEarlier
Unexecuted instantiation: util-path.c:TimevalEarlier
Unexecuted instantiation: util-pidfile.c:TimevalEarlier
Unexecuted instantiation: util-plugin.c:TimevalEarlier
Unexecuted instantiation: util-pool-thread.c:TimevalEarlier
Unexecuted instantiation: util-prefilter.c:TimevalEarlier
Unexecuted instantiation: util-print.c:TimevalEarlier
Unexecuted instantiation: util-privs.c:TimevalEarlier
Unexecuted instantiation: util-proto-name.c:TimevalEarlier
Unexecuted instantiation: util-radix-tree.c:TimevalEarlier
Unexecuted instantiation: util-random.c:TimevalEarlier
Unexecuted instantiation: util-running-modes.c:TimevalEarlier
Unexecuted instantiation: util-signal.c:TimevalEarlier
Unexecuted instantiation: util-spm-bs.c:TimevalEarlier
Unexecuted instantiation: util-spm.c:TimevalEarlier
Unexecuted instantiation: util-storage.c:TimevalEarlier
Unexecuted instantiation: util-streaming-buffer.c:TimevalEarlier
Unexecuted instantiation: util-strlcatu.c:TimevalEarlier
Unexecuted instantiation: util-strlcpyu.c:TimevalEarlier
Unexecuted instantiation: util-syslog.c:TimevalEarlier
Unexecuted instantiation: util-thash.c:TimevalEarlier
Unexecuted instantiation: util-threshold-config.c:TimevalEarlier
Unexecuted instantiation: util-time.c:TimevalEarlier
Unexecuted instantiation: util-var.c:TimevalEarlier
Unexecuted instantiation: util-var-name.c:TimevalEarlier
Unexecuted instantiation: app-layer.c:TimevalEarlier
Unexecuted instantiation: app-layer-detect-proto.c:TimevalEarlier
Unexecuted instantiation: app-layer-dnp3.c:TimevalEarlier
Unexecuted instantiation: app-layer-dnp3-objects.c:TimevalEarlier
Unexecuted instantiation: app-layer-enip.c:TimevalEarlier
Unexecuted instantiation: app-layer-enip-common.c:TimevalEarlier
Unexecuted instantiation: app-layer-events.c:TimevalEarlier
Unexecuted instantiation: app-layer-expectation.c:TimevalEarlier
Unexecuted instantiation: app-layer-ftp.c:TimevalEarlier
Unexecuted instantiation: app-layer-frames.c:TimevalEarlier
Unexecuted instantiation: app-layer-htp.c:TimevalEarlier
Unexecuted instantiation: app-layer-htp-file.c:TimevalEarlier
Unexecuted instantiation: app-layer-htp-libhtp.c:TimevalEarlier
Unexecuted instantiation: app-layer-htp-mem.c:TimevalEarlier
Unexecuted instantiation: app-layer-htp-range.c:TimevalEarlier
Unexecuted instantiation: app-layer-http2.c:TimevalEarlier
Unexecuted instantiation: app-layer-ike.c:TimevalEarlier
Unexecuted instantiation: app-layer-krb5.c:TimevalEarlier
Unexecuted instantiation: app-layer-modbus.c:TimevalEarlier
Unexecuted instantiation: app-layer-quic.c:TimevalEarlier
Unexecuted instantiation: app-layer-mqtt.c:TimevalEarlier
Unexecuted instantiation: app-layer-nfs-tcp.c:TimevalEarlier
Unexecuted instantiation: app-layer-nfs-udp.c:TimevalEarlier
Unexecuted instantiation: app-layer-ntp.c:TimevalEarlier
Unexecuted instantiation: counters.c:TimevalEarlier
Unexecuted instantiation: datasets.c:TimevalEarlier
Unexecuted instantiation: datasets-ipv4.c:TimevalEarlier
Unexecuted instantiation: datasets-ipv6.c:TimevalEarlier
Unexecuted instantiation: datasets-md5.c:TimevalEarlier
Unexecuted instantiation: datasets-sha256.c:TimevalEarlier
Unexecuted instantiation: datasets-string.c:TimevalEarlier
Unexecuted instantiation: decode.c:TimevalEarlier
Unexecuted instantiation: decode-erspan.c:TimevalEarlier
Unexecuted instantiation: decode-ethernet.c:TimevalEarlier
Unexecuted instantiation: decode-events.c:TimevalEarlier
Unexecuted instantiation: decode-geneve.c:TimevalEarlier
Unexecuted instantiation: decode-icmpv4.c:TimevalEarlier
Unexecuted instantiation: decode-icmpv6.c:TimevalEarlier
Unexecuted instantiation: decode-ipv4.c:TimevalEarlier
Unexecuted instantiation: decode-ipv6.c:TimevalEarlier
Unexecuted instantiation: decode-mpls.c:TimevalEarlier
Unexecuted instantiation: decode-nsh.c:TimevalEarlier
Unexecuted instantiation: decode-ppp.c:TimevalEarlier
Unexecuted instantiation: decode-pppoe.c:TimevalEarlier
Unexecuted instantiation: decode-sctp.c:TimevalEarlier
Unexecuted instantiation: decode-tcp.c:TimevalEarlier
Unexecuted instantiation: decode-teredo.c:TimevalEarlier
Unexecuted instantiation: decode-udp.c:TimevalEarlier
Unexecuted instantiation: decode-vlan.c:TimevalEarlier
Unexecuted instantiation: decode-vntag.c:TimevalEarlier
Unexecuted instantiation: decode-vxlan.c:TimevalEarlier
Unexecuted instantiation: defrag.c:TimevalEarlier
Unexecuted instantiation: defrag-config.c:TimevalEarlier
Unexecuted instantiation: defrag-hash.c:TimevalEarlier
Unexecuted instantiation: defrag-queue.c:TimevalEarlier
Unexecuted instantiation: defrag-timeout.c:TimevalEarlier
Unexecuted instantiation: detect-content.c:TimevalEarlier
Unexecuted instantiation: detect-dsize.c:TimevalEarlier
Unexecuted instantiation: detect-engine-address.c:TimevalEarlier
Unexecuted instantiation: detect-engine-address-ipv4.c:TimevalEarlier
Unexecuted instantiation: detect-engine-address-ipv6.c:TimevalEarlier
Unexecuted instantiation: detect-engine-alert.c:TimevalEarlier
Unexecuted instantiation: detect-engine-build.c:TimevalEarlier
Unexecuted instantiation: detect-engine.c:TimevalEarlier
Unexecuted instantiation: detect-engine-content-inspection.c:TimevalEarlier
Unexecuted instantiation: detect-engine-frame.c:TimevalEarlier
Unexecuted instantiation: detect-engine-iponly.c:TimevalEarlier
Unexecuted instantiation: detect-engine-loader.c:TimevalEarlier
Unexecuted instantiation: detect-engine-mpm.c:TimevalEarlier
Unexecuted instantiation: detect-engine-payload.c:TimevalEarlier
Unexecuted instantiation: detect-engine-port.c:TimevalEarlier
Unexecuted instantiation: detect-engine-prefilter.c:TimevalEarlier
Unexecuted instantiation: detect-engine-prefilter-common.c:TimevalEarlier
Unexecuted instantiation: detect-engine-proto.c:TimevalEarlier
Unexecuted instantiation: detect-engine-register.c:TimevalEarlier
Unexecuted instantiation: detect-engine-siggroup.c:TimevalEarlier
Unexecuted instantiation: detect-engine-sigorder.c:TimevalEarlier
Unexecuted instantiation: detect-engine-tag.c:TimevalEarlier
Unexecuted instantiation: detect-engine-threshold.c:TimevalEarlier
Unexecuted instantiation: detect-engine-uint.c:TimevalEarlier
Unexecuted instantiation: detect-fast-pattern.c:TimevalEarlier
Unexecuted instantiation: detect-file-data.c:TimevalEarlier
Unexecuted instantiation: detect-filemagic.c:TimevalEarlier
Unexecuted instantiation: detect-filemd5.c:TimevalEarlier
Unexecuted instantiation: detect-filename.c:TimevalEarlier
Unexecuted instantiation: detect-filesha1.c:TimevalEarlier
Unexecuted instantiation: detect-filesha256.c:TimevalEarlier
Unexecuted instantiation: detect-filesize.c:TimevalEarlier
Unexecuted instantiation: detect-filestore.c:TimevalEarlier
Unexecuted instantiation: detect-flowbits.c:TimevalEarlier
Unexecuted instantiation: detect-flow.c:TimevalEarlier
Unexecuted instantiation: detect-flow-age.c:TimevalEarlier
Unexecuted instantiation: detect-flowint.c:TimevalEarlier
Unexecuted instantiation: detect-flowvar.c:TimevalEarlier
Unexecuted instantiation: detect-fragbits.c:TimevalEarlier
Unexecuted instantiation: detect-fragoffset.c:TimevalEarlier
Unexecuted instantiation: detect-frame.c:TimevalEarlier
Unexecuted instantiation: detect-ftpbounce.c:TimevalEarlier
Unexecuted instantiation: detect-ftpdata.c:TimevalEarlier
Unexecuted instantiation: detect-geoip.c:TimevalEarlier
Unexecuted instantiation: detect-gid.c:TimevalEarlier
Unexecuted instantiation: detect-hostbits.c:TimevalEarlier
Unexecuted instantiation: detect-http2.c:TimevalEarlier
Unexecuted instantiation: detect-http-client-body.c:TimevalEarlier
Unexecuted instantiation: detect-http-cookie.c:TimevalEarlier
Unexecuted instantiation: detect-http-header.c:TimevalEarlier
Unexecuted instantiation: detect-http-header-common.c:TimevalEarlier
Unexecuted instantiation: detect-http-header-names.c:TimevalEarlier
Unexecuted instantiation: detect-http-host.c:TimevalEarlier
Unexecuted instantiation: detect-http-location.c:TimevalEarlier
Unexecuted instantiation: detect-http-method.c:TimevalEarlier
Unexecuted instantiation: detect-http-protocol.c:TimevalEarlier
Unexecuted instantiation: detect-http-raw-header.c:TimevalEarlier
Unexecuted instantiation: detect-http-referer.c:TimevalEarlier
Unexecuted instantiation: detect-http-request-line.c:TimevalEarlier
Unexecuted instantiation: detect-http-response-line.c:TimevalEarlier
Unexecuted instantiation: detect-http-server-body.c:TimevalEarlier
Unexecuted instantiation: detect-http-server.c:TimevalEarlier
Unexecuted instantiation: detect-http-start.c:TimevalEarlier
Unexecuted instantiation: detect-http-stat-code.c:TimevalEarlier
Unexecuted instantiation: detect-http-stat-msg.c:TimevalEarlier
Unexecuted instantiation: detect-http-ua.c:TimevalEarlier
Unexecuted instantiation: detect-http-uri.c:TimevalEarlier
Unexecuted instantiation: detect-icmp-id.c:TimevalEarlier
Unexecuted instantiation: detect-icmp-seq.c:TimevalEarlier
Unexecuted instantiation: detect-icmpv4hdr.c:TimevalEarlier
Unexecuted instantiation: detect-icmpv6hdr.c:TimevalEarlier
Unexecuted instantiation: detect-icmpv6-mtu.c:TimevalEarlier
Unexecuted instantiation: detect-icode.c:TimevalEarlier
Unexecuted instantiation: detect-id.c:TimevalEarlier
Unexecuted instantiation: detect-ike-exch-type.c:TimevalEarlier
Unexecuted instantiation: detect-ike-spi.c:TimevalEarlier
Unexecuted instantiation: detect-ike-vendor.c:TimevalEarlier
Unexecuted instantiation: detect-ike-chosen-sa.c:TimevalEarlier
Unexecuted instantiation: detect-ike-key-exchange-payload-length.c:TimevalEarlier
Unexecuted instantiation: detect-ike-nonce-payload-length.c:TimevalEarlier
Unexecuted instantiation: detect-ike-nonce-payload.c:TimevalEarlier
Unexecuted instantiation: detect-ike-key-exchange-payload.c:TimevalEarlier
Unexecuted instantiation: detect-ipaddr.c:TimevalEarlier
Unexecuted instantiation: detect-ipopts.c:TimevalEarlier
Unexecuted instantiation: detect-ipproto.c:TimevalEarlier
Unexecuted instantiation: detect-iprep.c:TimevalEarlier
Unexecuted instantiation: detect-ipv4hdr.c:TimevalEarlier
Unexecuted instantiation: detect-ipv6hdr.c:TimevalEarlier
Unexecuted instantiation: detect-isdataat.c:TimevalEarlier
Unexecuted instantiation: detect-itype.c:TimevalEarlier
Unexecuted instantiation: detect-ja4-hash.c:TimevalEarlier
Unexecuted instantiation: detect-krb5-cname.c:TimevalEarlier
Unexecuted instantiation: detect-krb5-errcode.c:TimevalEarlier
Unexecuted instantiation: detect-krb5-msgtype.c:TimevalEarlier
Unexecuted instantiation: detect-krb5-sname.c:TimevalEarlier
Unexecuted instantiation: detect-krb5-ticket-encryption.c:TimevalEarlier
Unexecuted instantiation: detect-l3proto.c:TimevalEarlier
Unexecuted instantiation: detect-lua.c:TimevalEarlier
Unexecuted instantiation: detect-mark.c:TimevalEarlier
Unexecuted instantiation: detect-metadata.c:TimevalEarlier
Unexecuted instantiation: detect-modbus.c:TimevalEarlier
Unexecuted instantiation: detect-quic-sni.c:TimevalEarlier
Unexecuted instantiation: detect-quic-ua.c:TimevalEarlier
Unexecuted instantiation: detect-quic-version.c:TimevalEarlier
Unexecuted instantiation: detect-quic-cyu-hash.c:TimevalEarlier
Unexecuted instantiation: detect-quic-cyu-string.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-connack-sessionpresent.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-connect-clientid.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-connect-flags.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-connect-password.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-connect-username.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-connect-willmessage.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-connect-willtopic.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-flags.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-protocol-version.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-publish-message.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-publish-topic.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-qos.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-reason-code.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-subscribe-topic.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-type.c:TimevalEarlier
Unexecuted instantiation: detect-mqtt-unsubscribe-topic.c:TimevalEarlier
Unexecuted instantiation: detect-msg.c:TimevalEarlier
Unexecuted instantiation: detect-nfs-procedure.c:TimevalEarlier
Unexecuted instantiation: detect-nfs-version.c:TimevalEarlier
Unexecuted instantiation: detect-noalert.c:TimevalEarlier
Unexecuted instantiation: detect-nocase.c:TimevalEarlier
Unexecuted instantiation: detect-offset.c:TimevalEarlier
Unexecuted instantiation: detect-parse.c:TimevalEarlier
Unexecuted instantiation: detect-pcre.c:TimevalEarlier
Unexecuted instantiation: detect-pkt-data.c:TimevalEarlier
Unexecuted instantiation: detect-pktvar.c:TimevalEarlier
Unexecuted instantiation: detect-prefilter.c:TimevalEarlier
Unexecuted instantiation: detect-priority.c:TimevalEarlier
Unexecuted instantiation: detect-rawbytes.c:TimevalEarlier
Unexecuted instantiation: detect-reference.c:TimevalEarlier
Unexecuted instantiation: detect-replace.c:TimevalEarlier
Unexecuted instantiation: detect-requires.c:TimevalEarlier
Unexecuted instantiation: detect-rev.c:TimevalEarlier
Unexecuted instantiation: detect-rfb-name.c:TimevalEarlier
Unexecuted instantiation: detect-rfb-secresult.c:TimevalEarlier
Unexecuted instantiation: detect-rfb-sectype.c:TimevalEarlier
Unexecuted instantiation: detect-rpc.c:TimevalEarlier
Unexecuted instantiation: detect-sameip.c:TimevalEarlier
Unexecuted instantiation: detect-sid.c:TimevalEarlier
Unexecuted instantiation: detect-sip-method.c:TimevalEarlier
Unexecuted instantiation: detect-sip-protocol.c:TimevalEarlier
Unexecuted instantiation: detect-sip-request-line.c:TimevalEarlier
Unexecuted instantiation: detect-sip-response-line.c:TimevalEarlier
Unexecuted instantiation: detect-sip-stat-code.c:TimevalEarlier
Unexecuted instantiation: detect-sip-stat-msg.c:TimevalEarlier
Unexecuted instantiation: detect-sip-uri.c:TimevalEarlier
Unexecuted instantiation: detect-smb-ntlmssp.c:TimevalEarlier
Unexecuted instantiation: detect-smb-share.c:TimevalEarlier
Unexecuted instantiation: detect-snmp-community.c:TimevalEarlier
Unexecuted instantiation: detect-snmp-pdu_type.c:TimevalEarlier
Unexecuted instantiation: detect-snmp-usm.c:TimevalEarlier
Unexecuted instantiation: detect-snmp-version.c:TimevalEarlier
Unexecuted instantiation: detect-dhcp-leasetime.c:TimevalEarlier
Unexecuted instantiation: detect-dhcp-rebinding-time.c:TimevalEarlier
Unexecuted instantiation: detect-dhcp-renewal-time.c:TimevalEarlier
Unexecuted instantiation: detect-ssh-hassh.c:TimevalEarlier
Unexecuted instantiation: detect-ssh-hassh-server.c:TimevalEarlier
Unexecuted instantiation: detect-ssh-hassh-server-string.c:TimevalEarlier
Unexecuted instantiation: detect-ssh-hassh-string.c:TimevalEarlier
Unexecuted instantiation: detect-ssh-proto.c:TimevalEarlier
Unexecuted instantiation: detect-ssh-proto-version.c:TimevalEarlier
Unexecuted instantiation: detect-ssh-software.c:TimevalEarlier
Unexecuted instantiation: detect-ssh-software-version.c:TimevalEarlier
Unexecuted instantiation: detect-ssl-state.c:TimevalEarlier
Unexecuted instantiation: detect-ssl-version.c:TimevalEarlier
Unexecuted instantiation: detect-stream_size.c:TimevalEarlier
Unexecuted instantiation: detect-tag.c:TimevalEarlier
Unexecuted instantiation: detect-target.c:TimevalEarlier
Unexecuted instantiation: detect-tcp-ack.c:TimevalEarlier
Unexecuted instantiation: detect-tcp-flags.c:TimevalEarlier
Unexecuted instantiation: detect-tcphdr.c:TimevalEarlier
Unexecuted instantiation: detect-tcpmss.c:TimevalEarlier
Unexecuted instantiation: detect-tcp-seq.c:TimevalEarlier
Unexecuted instantiation: detect-tcp-window.c:TimevalEarlier
Unexecuted instantiation: detect-template2.c:TimevalEarlier
Unexecuted instantiation: detect-template.c:TimevalEarlier
Unexecuted instantiation: detect-template-rust-buffer.c:TimevalEarlier
Unexecuted instantiation: detect-threshold.c:TimevalEarlier
Unexecuted instantiation: detect-tls.c:TimevalEarlier
Unexecuted instantiation: detect-tls-cert-fingerprint.c:TimevalEarlier
Unexecuted instantiation: detect-tls-cert-issuer.c:TimevalEarlier
Unexecuted instantiation: detect-tls-certs.c:TimevalEarlier
Unexecuted instantiation: detect-tls-cert-serial.c:TimevalEarlier
Unexecuted instantiation: detect-tls-cert-subject.c:TimevalEarlier
Unexecuted instantiation: detect-tls-cert-validity.c:TimevalEarlier
Unexecuted instantiation: detect-tls-ja3-hash.c:TimevalEarlier
Unexecuted instantiation: detect-tls-ja3s-hash.c:TimevalEarlier
Unexecuted instantiation: detect-tls-ja3s-string.c:TimevalEarlier
Unexecuted instantiation: detect-tls-ja3-string.c:TimevalEarlier
Unexecuted instantiation: detect-tls-sni.c:TimevalEarlier
Unexecuted instantiation: detect-tls-version.c:TimevalEarlier
Unexecuted instantiation: detect-tls-random.c:TimevalEarlier
Unexecuted instantiation: detect-tos.c:TimevalEarlier
Unexecuted instantiation: detect-transform-casechange.c:TimevalEarlier
Unexecuted instantiation: detect-transform-compress-whitespace.c:TimevalEarlier
Unexecuted instantiation: detect-transform-dotprefix.c:TimevalEarlier
Unexecuted instantiation: detect-transform-header-lowercase.c:TimevalEarlier
Unexecuted instantiation: detect-transform-md5.c:TimevalEarlier
Unexecuted instantiation: detect-transform-pcrexform.c:TimevalEarlier
Unexecuted instantiation: detect-transform-sha1.c:TimevalEarlier
Unexecuted instantiation: detect-transform-sha256.c:TimevalEarlier
Unexecuted instantiation: detect-transform-strip-pseudo-headers.c:TimevalEarlier
Unexecuted instantiation: detect-transform-strip-whitespace.c:TimevalEarlier
Unexecuted instantiation: detect-transform-urldecode.c:TimevalEarlier
Unexecuted instantiation: detect-transform-xor.c:TimevalEarlier
Unexecuted instantiation: detect-ttl.c:TimevalEarlier
Unexecuted instantiation: detect-udphdr.c:TimevalEarlier
Unexecuted instantiation: detect-uricontent.c:TimevalEarlier
Unexecuted instantiation: detect-urilen.c:TimevalEarlier
Unexecuted instantiation: detect-within.c:TimevalEarlier
Unexecuted instantiation: detect-xbits.c:TimevalEarlier
Unexecuted instantiation: device-storage.c:TimevalEarlier
Unexecuted instantiation: flow-bit.c:TimevalEarlier
Unexecuted instantiation: flow-bypass.c:TimevalEarlier
Unexecuted instantiation: flow-var.c:TimevalEarlier
Unexecuted instantiation: flow-worker.c:TimevalEarlier
Unexecuted instantiation: host-bit.c:TimevalEarlier
Unexecuted instantiation: host.c:TimevalEarlier
Unexecuted instantiation: host-queue.c:TimevalEarlier
Unexecuted instantiation: host-storage.c:TimevalEarlier
Unexecuted instantiation: ippair-bit.c:TimevalEarlier
Unexecuted instantiation: ippair.c:TimevalEarlier
Unexecuted instantiation: ippair-queue.c:TimevalEarlier
Unexecuted instantiation: ippair-storage.c:TimevalEarlier
Unexecuted instantiation: output.c:TimevalEarlier
Unexecuted instantiation: output-eve-stream.c:TimevalEarlier
Unexecuted instantiation: output-filestore.c:TimevalEarlier
Unexecuted instantiation: output-json-alert.c:TimevalEarlier
Unexecuted instantiation: output-json-anomaly.c:TimevalEarlier
Unexecuted instantiation: output-json-bittorrent-dht.c:TimevalEarlier
Unexecuted instantiation: output-json.c:TimevalEarlier
Unexecuted instantiation: output-json-common.c:TimevalEarlier
Unexecuted instantiation: output-json-dcerpc.c:TimevalEarlier
Unexecuted instantiation: output-json-dhcp.c:TimevalEarlier
Unexecuted instantiation: output-json-dnp3.c:TimevalEarlier
Unexecuted instantiation: output-json-dnp3-objects.c:TimevalEarlier
Unexecuted instantiation: output-json-dns.c:TimevalEarlier
Unexecuted instantiation: output-json-drop.c:TimevalEarlier
Unexecuted instantiation: output-json-email-common.c:TimevalEarlier
Unexecuted instantiation: output-json-file.c:TimevalEarlier
Unexecuted instantiation: output-json-flow.c:TimevalEarlier
Unexecuted instantiation: output-json-frame.c:TimevalEarlier
Unexecuted instantiation: output-json-ftp.c:TimevalEarlier
Unexecuted instantiation: output-json-http2.c:TimevalEarlier
Unexecuted instantiation: output-json-http.c:TimevalEarlier
Unexecuted instantiation: output-json-ike.c:TimevalEarlier
Unexecuted instantiation: output-json-krb5.c:TimevalEarlier
Unexecuted instantiation: output-json-metadata.c:TimevalEarlier
Unexecuted instantiation: output-json-modbus.c:TimevalEarlier
Unexecuted instantiation: output-json-quic.c:TimevalEarlier
Unexecuted instantiation: output-json-mqtt.c:TimevalEarlier
Unexecuted instantiation: output-json-netflow.c:TimevalEarlier
Unexecuted instantiation: output-json-nfs.c:TimevalEarlier
Unexecuted instantiation: output-json-pgsql.c:TimevalEarlier
Unexecuted instantiation: output-json-rdp.c:TimevalEarlier
Unexecuted instantiation: output-json-rfb.c:TimevalEarlier
Unexecuted instantiation: output-json-sip.c:TimevalEarlier
Unexecuted instantiation: output-json-smb.c:TimevalEarlier
Unexecuted instantiation: output-json-smtp.c:TimevalEarlier
Unexecuted instantiation: output-json-snmp.c:TimevalEarlier
Unexecuted instantiation: output-json-ssh.c:TimevalEarlier
Unexecuted instantiation: output-json-stats.c:TimevalEarlier
Unexecuted instantiation: output-json-template.c:TimevalEarlier
Unexecuted instantiation: output-json-tftp.c:TimevalEarlier
Unexecuted instantiation: output-json-tls.c:TimevalEarlier
Unexecuted instantiation: output-eve-syslog.c:TimevalEarlier
Unexecuted instantiation: output-lua.c:TimevalEarlier
Unexecuted instantiation: output-packet.c:TimevalEarlier
Unexecuted instantiation: output-stats.c:TimevalEarlier
Unexecuted instantiation: output-streaming.c:TimevalEarlier
Unexecuted instantiation: output-tx.c:TimevalEarlier
Unexecuted instantiation: packet-queue.c:TimevalEarlier
Unexecuted instantiation: respond-reject.c:TimevalEarlier
Unexecuted instantiation: respond-reject-libnet11.c:TimevalEarlier
Unexecuted instantiation: runmode-af-packet.c:TimevalEarlier
Unexecuted instantiation: runmode-af-xdp.c:TimevalEarlier
Unexecuted instantiation: runmode-dpdk.c:TimevalEarlier
Unexecuted instantiation: runmode-erf-dag.c:TimevalEarlier
Unexecuted instantiation: runmode-erf-file.c:TimevalEarlier
Unexecuted instantiation: runmode-ipfw.c:TimevalEarlier
Unexecuted instantiation: runmode-napatech.c:TimevalEarlier
Unexecuted instantiation: runmode-netmap.c:TimevalEarlier
Unexecuted instantiation: runmode-nflog.c:TimevalEarlier
Unexecuted instantiation: runmode-nfq.c:TimevalEarlier
Unexecuted instantiation: runmode-pcap.c:TimevalEarlier
Unexecuted instantiation: runmode-pcap-file.c:TimevalEarlier
Unexecuted instantiation: runmode-pfring.c:TimevalEarlier
Unexecuted instantiation: runmode-unittests.c:TimevalEarlier
Unexecuted instantiation: rust-context.c:TimevalEarlier
Unexecuted instantiation: source-af-packet.c:TimevalEarlier
Unexecuted instantiation: source-af-xdp.c:TimevalEarlier
Unexecuted instantiation: source-dpdk.c:TimevalEarlier
Unexecuted instantiation: source-erf-dag.c:TimevalEarlier
Unexecuted instantiation: source-erf-file.c:TimevalEarlier
Unexecuted instantiation: source-ipfw.c:TimevalEarlier
Unexecuted instantiation: source-napatech.c:TimevalEarlier
Unexecuted instantiation: source-netmap.c:TimevalEarlier
Unexecuted instantiation: source-nflog.c:TimevalEarlier
Unexecuted instantiation: source-nfq.c:TimevalEarlier
Unexecuted instantiation: source-pcap.c:TimevalEarlier
Unexecuted instantiation: source-pcap-file.c:TimevalEarlier
Unexecuted instantiation: source-pcap-file-directory-helper.c:TimevalEarlier
Unexecuted instantiation: source-pcap-file-helper.c:TimevalEarlier
Unexecuted instantiation: source-pfring.c:TimevalEarlier
Unexecuted instantiation: source-windivert.c:TimevalEarlier
Unexecuted instantiation: stream-tcp-inline.c:TimevalEarlier
Unexecuted instantiation: tmqh-simple.c:TimevalEarlier
Unexecuted instantiation: util-action.c:TimevalEarlier
Unexecuted instantiation: util-base64.c:TimevalEarlier
Unexecuted instantiation: util-bpf.c:TimevalEarlier
Unexecuted instantiation: util-cidr.c:TimevalEarlier
Unexecuted instantiation: util-classification-config.c:TimevalEarlier
Unexecuted instantiation: util-detect.c:TimevalEarlier
Unexecuted instantiation: util-file-decompression.c:TimevalEarlier
Unexecuted instantiation: util-file-swf-decompression.c:TimevalEarlier
Unexecuted instantiation: util-hash.c:TimevalEarlier
Unexecuted instantiation: util-hash-string.c:TimevalEarlier
Unexecuted instantiation: util-host-info.c:TimevalEarlier
Unexecuted instantiation: util-logopenfile.c:TimevalEarlier
Unexecuted instantiation: util-mpm-ac-bs.c:TimevalEarlier
Unexecuted instantiation: util-mpm-ac.c:TimevalEarlier
Unexecuted instantiation: util-mpm-ac-ks.c:TimevalEarlier
Unexecuted instantiation: util-pages.c:TimevalEarlier
Unexecuted instantiation: util-pool.c:TimevalEarlier
Unexecuted instantiation: util-reference-config.c:TimevalEarlier
Unexecuted instantiation: util-rule-vars.c:TimevalEarlier
Unexecuted instantiation: util-runmodes.c:TimevalEarlier
Unexecuted instantiation: util-spm-bm.c:TimevalEarlier
Unexecuted instantiation: util-spm-bs2bm.c:TimevalEarlier
Unexecuted instantiation: util-port-interval-tree.c:TimevalEarlier
Unexecuted instantiation: alert-debuglog.c:TimevalEarlier
Unexecuted instantiation: alert-fastlog.c:TimevalEarlier
Unexecuted instantiation: alert-syslog.c:TimevalEarlier
Unexecuted instantiation: app-layer-htp-body.c:TimevalEarlier
Unexecuted instantiation: app-layer-htp-xff.c:TimevalEarlier
Unexecuted instantiation: app-layer-register.c:TimevalEarlier
Unexecuted instantiation: decode-chdlc.c:TimevalEarlier
Unexecuted instantiation: decode-esp.c:TimevalEarlier
Unexecuted instantiation: decode-gre.c:TimevalEarlier
Unexecuted instantiation: decode-null.c:TimevalEarlier
Unexecuted instantiation: decode-raw.c:TimevalEarlier
Unexecuted instantiation: decode-sll.c:TimevalEarlier
Unexecuted instantiation: detect-app-layer-event.c:TimevalEarlier
Unexecuted instantiation: detect-app-layer-protocol.c:TimevalEarlier
Unexecuted instantiation: detect-asn1.c:TimevalEarlier
Unexecuted instantiation: detect-base64-data.c:TimevalEarlier
Unexecuted instantiation: detect-base64-decode.c:TimevalEarlier
Unexecuted instantiation: detect-bsize.c:TimevalEarlier
Unexecuted instantiation: detect-bypass.c:TimevalEarlier
Unexecuted instantiation: detect-byte.c:TimevalEarlier
Unexecuted instantiation: detect-byte-extract.c:TimevalEarlier
Unexecuted instantiation: detect-bytejump.c:TimevalEarlier
Unexecuted instantiation: detect-bytemath.c:TimevalEarlier
Unexecuted instantiation: detect-bytetest.c:TimevalEarlier
Unexecuted instantiation: detect.c:TimevalEarlier
Unexecuted instantiation: detect-cipservice.c:TimevalEarlier
Unexecuted instantiation: detect-classtype.c:TimevalEarlier
Unexecuted instantiation: detect-config.c:TimevalEarlier
Unexecuted instantiation: detect-csum.c:TimevalEarlier
Unexecuted instantiation: detect-datarep.c:TimevalEarlier
Unexecuted instantiation: detect-dataset.c:TimevalEarlier
Unexecuted instantiation: detect-dce-iface.c:TimevalEarlier
Unexecuted instantiation: detect-dce-opnum.c:TimevalEarlier
Unexecuted instantiation: detect-dce-stub-data.c:TimevalEarlier
Unexecuted instantiation: detect-depth.c:TimevalEarlier
Unexecuted instantiation: detect-detection-filter.c:TimevalEarlier
Unexecuted instantiation: detect-distance.c:TimevalEarlier
Unexecuted instantiation: detect-dnp3.c:TimevalEarlier
Unexecuted instantiation: detect-dns-opcode.c:TimevalEarlier
Unexecuted instantiation: detect-dns-query.c:TimevalEarlier
Unexecuted instantiation: detect-engine-analyzer.c:TimevalEarlier
Unexecuted instantiation: detect-engine-enip.c:TimevalEarlier
Unexecuted instantiation: detect-engine-event.c:TimevalEarlier
Unexecuted instantiation: detect-engine-file.c:TimevalEarlier
Unexecuted instantiation: detect-file-hash-common.c:TimevalEarlier
Unexecuted instantiation: detect-http-accept.c:TimevalEarlier
Unexecuted instantiation: detect-http-accept-enc.c:TimevalEarlier
Unexecuted instantiation: detect-http-accept-lang.c:TimevalEarlier
Unexecuted instantiation: detect-http-connection.c:TimevalEarlier
Unexecuted instantiation: detect-http-content-len.c:TimevalEarlier
Unexecuted instantiation: detect-http-content-type.c:TimevalEarlier
Unexecuted instantiation: log-cf-common.c:TimevalEarlier
Unexecuted instantiation: log-httplog.c:TimevalEarlier
Unexecuted instantiation: log-pcap.c:TimevalEarlier
Unexecuted instantiation: log-stats.c:TimevalEarlier
Unexecuted instantiation: log-tcp-data.c:TimevalEarlier
Unexecuted instantiation: log-tlslog.c:TimevalEarlier
Unexecuted instantiation: log-tlsstore.c:TimevalEarlier
Unexecuted instantiation: stream.c:TimevalEarlier
Unexecuted instantiation: util-mpm-ac-queue.c:TimevalEarlier
Unexecuted instantiation: util-rohash.c:TimevalEarlier
Unexecuted instantiation: fuzz_sigpcap_aware.c:TimevalEarlier
Unexecuted instantiation: util-unittest-helper.c:TimevalEarlier
Unexecuted instantiation: fuzz_decodepcapfile.c:TimevalEarlier
Unexecuted instantiation: fuzz_mimedecparseline.c:TimevalEarlier
Unexecuted instantiation: fuzz_siginit.c:TimevalEarlier
Unexecuted instantiation: fuzz_sigpcap.c:TimevalEarlier
Unexecuted instantiation: fuzz_applayerprotodetectgetproto.c:TimevalEarlier
Unexecuted instantiation: fuzz_predefpcap_aware.c:TimevalEarlier
Unexecuted instantiation: fuzz_confyamlloadstring.c:TimevalEarlier
126
127
#ifndef timeradd
128
#define timeradd(a, b, r)                                                                          \
129
    do {                                                                                           \
130
        (r)->tv_sec = (a)->tv_sec + (b)->tv_sec;                                                   \
131
        (r)->tv_usec = (a)->tv_usec + (b)->tv_usec;                                                \
132
        if ((r)->tv_usec >= 1000000) {                                                             \
133
            (r)->tv_sec++;                                                                         \
134
            (r)->tv_usec -= 1000000;                                                               \
135
        }                                                                                          \
136
    } while (0)
137
#endif
138
139
#ifdef UNITTESTS
140
void TimeSet(SCTime_t);
141
void TimeSetToCurrentTime(void);
142
void TimeSetIncrementTime(uint32_t);
143
#endif
144
145
bool TimeModeIsReady(void);
146
void TimeModeSetLive(void);
147
void TimeModeSetOffline (void);
148
bool TimeModeIsLive(void);
149
150
struct tm *SCLocalTime(time_t timep, struct tm *result);
151
void CreateTimeString(const SCTime_t ts, char *str, size_t size);
152
void CreateIsoTimeString(const SCTime_t ts, char *str, size_t size);
153
void CreateUtcIsoTimeString(const SCTime_t ts, char *str, size_t size);
154
void CreateFormattedTimeString(const struct tm *t, const char * fmt, char *str, size_t size);
155
time_t SCMkTimeUtc(struct tm *tp);
156
int SCStringPatternToTime(char *string, const char **patterns,
157
                           int num_patterns, struct tm *time);
158
int SCTimeToStringPattern (time_t epoch, const char *pattern, char *str,
159
                           size_t size);
160
uint64_t SCParseTimeSizeString (const char *str);
161
uint64_t SCGetSecondsUntil (const char *str, time_t epoch);
162
uint64_t SCTimespecAsEpochMillis(const struct timespec *ts);
163
uint64_t TimeDifferenceMicros(struct timeval t0, struct timeval t1);
164
165
#endif /* __UTIL_TIME_H__ */
166