suricata
util-time.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  SCTime_t
 

Macros

#define SCTIME_INIT(t)
 
#define SCTIME_INITIALIZER
 
#define SCTIME_USECS(t)   ((t).usecs)
 
#define SCTIME_SECS(t)   ((t).secs)
 
#define SCTIME_MSECS(t)   (SCTIME_SECS(t) * 1000 + SCTIME_USECS(t) / 1000)
 
#define SCTIME_ADD_USECS(ts, us)
 
#define SCTIME_ADD_SECS(ts, s)
 
#define SCTIME_FROM_SECS(s)
 
#define SCTIME_FROM_USECS(us)
 
#define SCTIME_FROM_TIMEVAL(tv)
 
#define SCTIME_FROM_TIMEVAL_UNTRUSTED(tv)
 variant to deal with potentially bad timestamps, like from pcap files More...
 
#define SCTIME_FROM_TIMESPEC(ts)
 
#define SCTIME_TO_TIMEVAL(tv, t)
 
#define SCTIME_CMP(a, b, CMP)
 
#define SCTIME_CMP_GTE(a, b)   SCTIME_CMP((a), (b), >=)
 
#define SCTIME_CMP_GT(a, b)   SCTIME_CMP((a), (b), >)
 
#define SCTIME_CMP_LT(a, b)   SCTIME_CMP((a), (b), <)
 
#define SCTIME_CMP_LTE(a, b)   SCTIME_CMP((a), (b), <=)
 
#define SCTIME_CMP_NEQ(a, b)   SCTIME_CMP((a), (b), !=)
 
#define SCTIME_CMP_EQ(a, b)   SCTIME_CMP((a), (b), ==)
 
#define FROM_TIMEVAL(timev)   { .tv_sec = (timev).tv_sec, .tv_nsec = (timev).tv_usec * 1000 }
 initialize a 'struct timespec' from a 'struct timeval'. More...
 
#define timeradd(a, b, r)
 

Functions

void TimeInit (void)
 
void TimeDeinit (void)
 
void TimeSetByThread (const int thread_id, SCTime_t tv)
 
SCTime_t TimeGet (void)
 
void TimeSet (SCTime_t)
 
void TimeSetToCurrentTime (void)
 set the time to "gettimeofday" meant for testing More...
 
void TimeSetIncrementTime (uint32_t)
 increment the time in the engine More...
 
void SCLocalTimeCacheReset (void)
 Forget the local times cached by the calling thread, e.g. after the timezone was changed. More...
 
bool TimeModeIsReady (void)
 
void TimeModeSetLive (void)
 
void TimeModeSetOffline (void)
 
bool TimeModeIsLive (void)
 
struct tm * SCLocalTime (time_t timep, struct tm *result)
 
void CreateTimeString (const SCTime_t ts, char *str, size_t size)
 
void CreateIsoTimeString (const SCTime_t ts, char *str, size_t size)
 
void CreateUtcIsoTimeString (const SCTime_t ts, char *str, size_t size)
 
void CreateFormattedTimeString (const struct tm *t, const char *fmt, char *str, size_t size)
 
time_t SCMkTimeUtc (struct tm *tp)
 Convert broken-down time to seconds since Unix epoch. More...
 
int SCStringPatternToTime (char *string, const char **patterns, int num_patterns, struct tm *time)
 Parse a date string based on specified patterns. More...
 
int SCTimeToStringPattern (time_t epoch, const char *pattern, char *str, size_t size)
 Convert epoch time to string pattern. More...
 
uint64_t SCParseTimeSizeString (const char *str)
 Parse string containing time size (1m, 1h, etc). More...
 
uint64_t SCTimespecAsEpochMillis (const struct timespec *ts)
 
uint64_t TimeDifferenceMicros (struct timeval t0, struct timeval t1)
 
void SCTimeRegisterTests (void)
 

Detailed Description

Author
Victor Julien victo.nosp@m.r@in.nosp@m.linia.nosp@m.c.ne.nosp@m.t

Definition in file util-time.h.

Macro Definition Documentation

◆ FROM_TIMEVAL

#define FROM_TIMEVAL (   timev)    { .tv_sec = (timev).tv_sec, .tv_nsec = (timev).tv_usec * 1000 }

initialize a 'struct timespec' from a 'struct timeval'.

Definition at line 125 of file util-time.h.

◆ SCTIME_ADD_SECS

#define SCTIME_ADD_SECS (   ts,
  s 
)
Value:
{ \
.secs = (ts).secs + (s), .usecs = (ts).usecs \
}

Definition at line 65 of file util-time.h.

◆ SCTIME_ADD_USECS

#define SCTIME_ADD_USECS (   ts,
  us 
)
Value:
{ \
.secs = (ts).secs + ((ts).usecs + (us)) / 1000000, .usecs = ((ts).usecs + (us)) % 1000000 \
}

Definition at line 60 of file util-time.h.

◆ SCTIME_CMP

#define SCTIME_CMP (   a,
  b,
  CMP 
)
Value:
((SCTIME_SECS(a) == SCTIME_SECS(b)) ? (SCTIME_USECS(a) CMP SCTIME_USECS(b)) \
: (SCTIME_SECS(a) CMP SCTIME_SECS(b)))

Definition at line 101 of file util-time.h.

◆ SCTIME_CMP_EQ

#define SCTIME_CMP_EQ (   a,
  b 
)    SCTIME_CMP((a), (b), ==)

Definition at line 109 of file util-time.h.

◆ SCTIME_CMP_GT

#define SCTIME_CMP_GT (   a,
  b 
)    SCTIME_CMP((a), (b), >)

Definition at line 105 of file util-time.h.

◆ SCTIME_CMP_GTE

#define SCTIME_CMP_GTE (   a,
  b 
)    SCTIME_CMP((a), (b), >=)

Definition at line 104 of file util-time.h.

◆ SCTIME_CMP_LT

#define SCTIME_CMP_LT (   a,
  b 
)    SCTIME_CMP((a), (b), <)

Definition at line 106 of file util-time.h.

◆ SCTIME_CMP_LTE

#define SCTIME_CMP_LTE (   a,
  b 
)    SCTIME_CMP((a), (b), <=)

Definition at line 107 of file util-time.h.

◆ SCTIME_CMP_NEQ

#define SCTIME_CMP_NEQ (   a,
  b 
)    SCTIME_CMP((a), (b), !=)

Definition at line 108 of file util-time.h.

◆ SCTIME_FROM_SECS

#define SCTIME_FROM_SECS (   s)
Value:
{ \
.secs = (s), .usecs = 0 \
}

Definition at line 70 of file util-time.h.

◆ SCTIME_FROM_TIMESPEC

#define SCTIME_FROM_TIMESPEC (   ts)
Value:
{ \
.secs = (ts)->tv_sec, .usecs = (ts)->tv_nsec / 1000 \
}

Definition at line 92 of file util-time.h.

◆ SCTIME_FROM_TIMEVAL

#define SCTIME_FROM_TIMEVAL (   tv)
Value:
{ \
.secs = (uint64_t)(tv)->tv_sec, .usecs = (uint32_t)(tv)->tv_usec \
}

Definition at line 80 of file util-time.h.

◆ SCTIME_FROM_TIMEVAL_UNTRUSTED

#define SCTIME_FROM_TIMEVAL_UNTRUSTED (   tv)
Value:
{ \
.secs = ((tv)->tv_sec > 0) ? (tv)->tv_sec : 0, \
.usecs = ((tv)->tv_usec > 0) ? (tv)->tv_usec : 0 \
}

variant to deal with potentially bad timestamps, like from pcap files

Definition at line 86 of file util-time.h.

◆ SCTIME_FROM_USECS

#define SCTIME_FROM_USECS (   us)
Value:
{ \
.secs = 0, .usecs = (us) \
}

Definition at line 75 of file util-time.h.

◆ SCTIME_INIT

#define SCTIME_INIT (   t)
Value:
{ \
(t).secs = 0; \
(t).usecs = 0; \
}

Definition at line 46 of file util-time.h.

◆ SCTIME_INITIALIZER

#define SCTIME_INITIALIZER
Value:
{ \
.secs = 0, .usecs = 0 \
}

Definition at line 52 of file util-time.h.

◆ SCTIME_MSECS

#define SCTIME_MSECS (   t)    (SCTIME_SECS(t) * 1000 + SCTIME_USECS(t) / 1000)

Definition at line 59 of file util-time.h.

◆ SCTIME_SECS

#define SCTIME_SECS (   t)    ((t).secs)

Definition at line 58 of file util-time.h.

◆ SCTIME_TO_TIMEVAL

#define SCTIME_TO_TIMEVAL (   tv,
  t 
)
Value:
(tv)->tv_sec = SCTIME_SECS((t)); \
(tv)->tv_usec = SCTIME_USECS((t));

Definition at line 98 of file util-time.h.

◆ SCTIME_USECS

#define SCTIME_USECS (   t)    ((t).usecs)

Definition at line 57 of file util-time.h.

◆ timeradd

#define timeradd (   a,
  b,
  r 
)
Value:
do { \
(r)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
(r)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
if ((r)->tv_usec >= 1000000) { \
(r)->tv_sec++; \
(r)->tv_usec -= 1000000; \
} \
} while (0)

Definition at line 128 of file util-time.h.

Function Documentation

◆ CreateFormattedTimeString()

void CreateFormattedTimeString ( const struct tm *  t,
const char *  fmt,
char *  str,
size_t  size 
)

Definition at line 246 of file util-time.c.

References likely, and str.

◆ CreateIsoTimeString()

void CreateIsoTimeString ( const SCTime_t  ts,
char *  str,
size_t  size 
)

Definition at line 209 of file util-time.c.

References likely, SCLocalTime(), SCTIME_SECS, SCTIME_USECS, str, and ts.

Referenced by CreateEveHeader(), and EveAddFlow().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTimeString()

void CreateTimeString ( const SCTime_t  ts,
char *  str,
size_t  size 
)

Definition at line 272 of file util-time.c.

References likely, SCLocalTime(), SCTIME_SECS, SCTIME_USECS, str, and ts.

Referenced by AlertFastLogger().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateUtcIsoTimeString()

void CreateUtcIsoTimeString ( const SCTime_t  ts,
char *  str,
size_t  size 
)

Definition at line 230 of file util-time.c.

References likely, SCTIME_SECS, SCTIME_USECS, SCUtcTime(), str, and ts.

Here is the call graph for this function:

◆ SCLocalTime()

struct tm* SCLocalTime ( time_t  timep,
struct tm *  result 
)

Definition at line 267 of file util-time.c.

Referenced by CreateIsoTimeString(), CreateTimeString(), and SCTimeToStringPattern().

Here is the caller graph for this function:

◆ SCLocalTimeCacheReset()

void SCLocalTimeCacheReset ( void  )

Forget the local times cached by the calling thread, e.g. after the timezone was changed.

Definition at line 435 of file util-time.c.

◆ SCMkTimeUtc()

time_t SCMkTimeUtc ( struct tm *  tp)

Convert broken-down time to seconds since Unix epoch.

This function is based on: http://www.catb.org/esr/time-programming (released to the public domain).

Parameters
tpPointer to broken-down time.
Return values
Secondssince Unix epoch.

Definition at line 454 of file util-time.c.

References MONTHSPERYEAR.

◆ SCParseTimeSizeString()

uint64_t SCParseTimeSizeString ( const char *  str)

Parse string containing time size (1m, 1h, etc).

Parameters
strString to parse.
Return values
sizeon success.
0on failure.

Definition at line 588 of file util-time.c.

References str.

Referenced by SCConfLogOpenGeneric().

Here is the caller graph for this function:

◆ SCStringPatternToTime()

int SCStringPatternToTime ( char *  string,
const char **  patterns,
int  num_patterns,
struct tm *  tp 
)

Parse a date string based on specified patterns.

This function is based on GNU C library getdate.

Parameters
stringDate string to parse.
patternsString array containing patterns.
num_patternsNumber of patterns to check.
tpPointer to broken-down time.
Return values
0on success.
1on failure.

Definition at line 497 of file util-time.c.

References strptime().

Here is the call graph for this function:

◆ SCTimeRegisterTests()

void SCTimeRegisterTests ( void  )

Definition at line 673 of file util-time.c.

References UtRegisterTest().

Here is the call graph for this function:

◆ SCTimespecAsEpochMillis()

uint64_t SCTimespecAsEpochMillis ( const struct timespec *  ts)

Definition at line 631 of file util-time.c.

References ts.

◆ SCTimeToStringPattern()

int SCTimeToStringPattern ( time_t  epoch,
const char *  pattern,
char *  str,
size_t  size 
)

Convert epoch time to string pattern.

This function converts epoch time to a string based on a pattern.

Parameters
epochEpoch time.
patternString pattern.
strFormated string.
sizeSize of allocated string.
Return values
0on success.
1on failure.

Definition at line 559 of file util-time.c.

References SCLocalTime(), str, strlcpy(), and unlikely.

Here is the call graph for this function:

◆ TimeDeinit()

void TimeDeinit ( void  )

Definition at line 87 of file util-time.c.

References SCSpinDestroy.

Referenced by GlobalsDestroy().

Here is the caller graph for this function:

◆ TimeDifferenceMicros()

uint64_t TimeDifferenceMicros ( struct timeval  t0,
struct timeval  t1 
)

Definition at line 636 of file util-time.c.

◆ TimeGet()

SCTime_t TimeGet ( void  )

Definition at line 152 of file util-time.c.

References tv.

Referenced by TimeSetIncrementTime(), UTHBuildPacketIPV6Real(), and UTHBuildPacketReal().

Here is the caller graph for this function:

◆ TimeInit()

void TimeInit ( void  )

Definition at line 79 of file util-time.c.

References SCSpinInit.

Referenced by GlobalsInitPreConfig().

Here is the caller graph for this function:

◆ TimeModeIsLive()

bool TimeModeIsLive ( void  )

Definition at line 111 of file util-time.c.

◆ TimeModeIsReady()

bool TimeModeIsReady ( void  )

Definition at line 92 of file util-time.c.

◆ TimeModeSetLive()

◆ TimeModeSetOffline()

void TimeModeSetOffline ( void  )

Definition at line 105 of file util-time.c.

Referenced by RunModeErfFileAutoFp(), RunModeErfFileSingle(), RunModeFilePcapAutoFp(), and RunModeFilePcapSingle().

Here is the caller graph for this function:

◆ TimeSet()

void TimeSet ( SCTime_t  )

Definition at line 125 of file util-time.c.

Referenced by TimeSetIncrementTime(), and TimeSetToCurrentTime().

Here is the caller graph for this function:

◆ TimeSetByThread()

void TimeSetByThread ( const int  thread_id,
SCTime_t  tv 
)

Definition at line 116 of file util-time.c.

◆ TimeSetIncrementTime()

void TimeSetIncrementTime ( uint32_t  tv_sec)

increment the time in the engine

Parameters
tv_secseconds to increment the time with

Definition at line 180 of file util-time.c.

References SCTIME_ADD_SECS, TimeGet(), TimeSet(), and ts.

Here is the call graph for this function:

◆ TimeSetToCurrentTime()

void TimeSetToCurrentTime ( void  )

set the time to "gettimeofday" meant for testing

Definition at line 140 of file util-time.c.

References SCTIME_FROM_TIMEVAL, TimeSet(), ts, and tv.

Here is the call graph for this function:
ts
uint64_t ts
Definition: source-erf-file.c:68
SCTime_t
Definition: util-time.h:40
SCTIME_SECS
#define SCTIME_SECS(t)
Definition: util-time.h:57
tv
ThreadVars * tv
Definition: fuzz_decodepcapfile.c:34
SCTIME_USECS
#define SCTIME_USECS(t)
Definition: util-time.h:56