/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 | | |