suricata
util-unittest-helper.h File Reference

Go to the source code of this file.

Functions

uint32_t UTHSetIPv4Address (const char *)
 return the uint32_t for a ipv4 address string More...
 
PacketUTHBuildPacketReal (uint8_t *, uint16_t, uint8_t ipproto, const char *, const char *, uint16_t, uint16_t)
 UTHBuildPacketReal is a function that create tcp/udp packets for unittests specifying ip and port sources and destinations. More...
 
PacketUTHBuildPacket (uint8_t *, uint16_t, uint8_t ipproto)
 UTHBuildPacket is a wrapper that build packets with default ip and port fields. More...
 
PacketUTHBuildPacketSrcDst (uint8_t *, uint16_t, uint8_t ipproto, const char *, const char *)
 UTHBuildPacketSrcDst is a wrapper that build packets specifying IPs and defaulting ports. More...
 
PacketUTHBuildPacketSrcDstPorts (uint8_t *, uint16_t, uint8_t ipproto, uint16_t, uint16_t)
 UTHBuildPacketSrcDstPorts is a wrapper that build packets specifying src and dst ports and defaulting IPs. More...
 
PacketUTHBuildPacketIPV6SrcDst (uint8_t *, uint16_t, uint8_t ipproto, const char *, const char *)
 UTHBuildPacketSrcDst is a wrapper that build packets specifying IPs and defaulting ports (IPV6) More...
 
int UTHPacketMatchSigMpm (Packet *, char *, uint16_t)
 
Packet ** UTHBuildPacketArrayFromEth (uint8_t **, int *, int)
 
PacketUTHBuildPacketFromEth (uint8_t *, uint16_t)
 UTHBuildPacketFromEth is a wrapper that build a packet for the rawbytes. More...
 
void UTHFreePacket (Packet *)
 UTHFreePacket: function to release the allocated data from UTHBuildPacket and the packet itself. More...
 
void UTHFreePackets (Packet **, int)
 UTHFreePackets: function to release the allocated data from UTHBuildPacket and the packet itself. More...
 
void UTHAssignFlow (Packet *p, Flow *f)
 
FlowUTHBuildFlow (int family, const char *src, const char *dst, Port sp, Port dp)
 
void UTHFreeFlow (Flow *flow)
 
int UTHAddStreamToFlow (Flow *f, int direction, uint8_t *data, uint32_t data_len)
 
int UTHAddSessionToFlow (Flow *f, uint32_t ts_isn, uint32_t tc_isn)
 
int UTHRemoveSessionFromFlow (Flow *f)
 
int UTHAppendSigs (DetectEngineCtx *, const char **, int)
 
int UTHMatchPackets (DetectEngineCtx *, Packet **, int)
 
int UTHPacketMatchSig (Packet *p, const char *)
 
int UTHCheckPacketMatch (Packet *, uint32_t *, uint32_t *, int)
 
int UTHCheckPacketMatchResults (Packet *, uint32_t *, uint32_t *, int)
 
int UTHMatchPacketsWithResults (DetectEngineCtx *, Packet **, int, uint32_t *, uint32_t *, int)
 
int UTHGenericTest (Packet **, int, const char **, uint32_t *, uint32_t *, int)
 
uint32_t UTHBuildPacketOfFlows (uint32_t, uint32_t, uint8_t)
 
PacketUTHBuildPacketIPV6Real (uint8_t *, uint16_t, uint8_t ipproto, const char *, const char *, uint16_t, uint16_t)
 UTHBuildPacketReal is a function that create tcp/udp packets for unittests specifying ip and port sources and destinations (IPV6) More...
 
void * UTHmemsearch (const void *big, size_t big_len, const void *little, size_t little_len)
 
int UTHParseSignature (const char *str, bool expect)
 parser a sig and see if the expected result is correct More...
 
int UTHbufferToFile (const char *name, const uint8_t *data, size_t size)
 writes the contents of a buffer into a file More...
 
void UTHRegisterTests (void)
 

Detailed Description

Function Documentation

◆ UTHAddSessionToFlow()

int UTHAddSessionToFlow ( Flow f,
uint32_t  ts_isn,
uint32_t  tc_isn 
)

◆ UTHAddStreamToFlow()

int UTHAddStreamToFlow ( Flow f,
int  direction,
uint8_t *  data,
uint32_t  data_len 
)

◆ UTHAppendSigs()

int UTHAppendSigs ( DetectEngineCtx ,
const char **  ,
int   
)

◆ UTHAssignFlow()

void UTHAssignFlow ( Packet p,
Flow f 
)

Definition at line 438 of file util-unittest-helper.c.

References Packet_::flags, Packet_::flow, and PKT_HAS_FLOW.

◆ UTHbufferToFile()

int UTHbufferToFile ( const char *  name,
const uint8_t *  data,
size_t  size 
)

writes the contents of a buffer into a file

Definition at line 946 of file util-unittest-helper.c.

◆ UTHBuildFlow()

Flow* UTHBuildFlow ( int  family,
const char *  src,
const char *  dst,
Port  sp,
Port  dp 
)

Definition at line 446 of file util-unittest-helper.c.

References BUG_ON, dst, FLOW_INITIALIZE, FLOW_IPV4, FLOW_IPV6, SCFree, SCMalloc, src, and unlikely.

Referenced by LLVMFuzzerTestOneInput().

Here is the caller graph for this function:

◆ UTHBuildPacket()

Packet* UTHBuildPacket ( uint8_t *  payload,
uint16_t  payload_len,
uint8_t  ipproto 
)

UTHBuildPacket is a wrapper that build packets with default ip and port fields.

Parameters
payloadpointer to the payloadd buffer
payload_lenpointer to the length of the payload
ipprotoProtocols allowed atm are IPPROTO_TCP and IPPROTO_UDP
Return values
Packetpointer to the built in packet

Definition at line 262 of file util-unittest-helper.c.

References payload_len, and UTHBuildPacketReal().

Referenced by UTHBuildPacketOfFlows().

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

◆ UTHBuildPacketArrayFromEth()

Packet** UTHBuildPacketArrayFromEth ( uint8_t **  ,
int *  ,
int   
)

◆ UTHBuildPacketFromEth()

Packet* UTHBuildPacketFromEth ( uint8_t *  raw_eth,
uint16_t  pktsize 
)

UTHBuildPacketFromEth is a wrapper that build a packet for the rawbytes.

Parameters
raw_ethpointer to the rawbytes containing an ethernet packet (and any other headers inside)
pktsizepointer to the length of the payload
Return values
Packetpointer to the built in packet; NULL if something fail

Definition at line 319 of file util-unittest-helper.c.

References DecodeEthernet(), dtv, PacketGetFromAlloc(), and unlikely.

Here is the call graph for this function:

◆ UTHBuildPacketIPV6Real()

Packet* UTHBuildPacketIPV6Real ( uint8_t *  payload,
uint16_t  payload_len,
uint8_t  ipproto,
const char *  src,
const char *  dst,
uint16_t  sport,
uint16_t  dport 
)

UTHBuildPacketReal is a function that create tcp/udp packets for unittests specifying ip and port sources and destinations (IPV6)

Parameters
payloadpointer to the payloadd buffer
payload_lenpointer to the length of the payload
ipprotoProtocols allowed atm are IPPROTO_TCP and IPPROTO_UDP
srcpointer to a string containing the ip source
dstpointer to a string containing the ip destination
sportpointer to a string containing the port source
dportpointer to a string containing the port destination
Return values
Packetpointer to the built in packet

Definition at line 81 of file util-unittest-helper.c.

References Packet_::dp, dst, Packet_::dst, Address_::family, Packet_::ip6h, PacketGetFromAlloc(), Packet_::payload, payload_len, Packet_::payload_len, Packet_::proto, SCFree, SCMalloc, SET_PKT_LEN, Packet_::sp, src, Packet_::src, Packet_::tcph, TimeGet(), Packet_::ts, and unlikely.

Referenced by UTHBuildPacketIPV6SrcDst().

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

◆ UTHBuildPacketIPV6SrcDst()

Packet* UTHBuildPacketIPV6SrcDst ( uint8_t *  payload,
uint16_t  payload_len,
uint8_t  ipproto,
const char *  src,
const char *  dst 
)

UTHBuildPacketSrcDst is a wrapper that build packets specifying IPs and defaulting ports (IPV6)

Parameters
payloadpointer to the payload buffer
payload_lenpointer to the length of the payload
ipprotoProtocols allowed atm are IPPROTO_TCP and IPPROTO_UDP
Return values
Packetpointer to the built in packet

Definition at line 361 of file util-unittest-helper.c.

References dst, payload_len, src, and UTHBuildPacketIPV6Real().

Here is the call graph for this function:

◆ UTHBuildPacketOfFlows()

uint32_t UTHBuildPacketOfFlows ( uint32_t  ,
uint32_t  ,
uint8_t   
)

Definition at line 902 of file util-unittest-helper.c.

References Packet_::dst, Packet_::flow, FlowHandlePacket(), FLOWLOCK_UNLOCK, SC_ATOMIC_RESET, Packet_::src, UTHBuildPacket(), and UTHFreePacket().

Here is the call graph for this function:

◆ UTHBuildPacketReal()

Packet* UTHBuildPacketReal ( uint8_t *  payload,
uint16_t  payload_len,
uint8_t  ipproto,
const char *  src,
const char *  dst,
uint16_t  sport,
uint16_t  dport 
)

UTHBuildPacketReal is a function that create tcp/udp packets for unittests specifying ip and port sources and destinations.

Parameters
payloadpointer to the payloadd buffer
payload_lenpointer to the length of the payload
ipprotoProtocols allowed atm are IPPROTO_TCP and IPPROTO_UDP
srcpointer to a string containing the ip source
dstpointer to a string containing the ip destination
sportpointer to a string containing the port source
dportpointer to a string containing the port destination
Return values
Packetpointer to the built in packet

Definition at line 167 of file util-unittest-helper.c.

References COPY_TIMESTAMP, dst, GET_PKT_DATA, PacketCopyDataOffset(), PacketGetFromAlloc(), payload_len, SCFree, SET_PKT_LEN, src, TimeGet(), tv, and unlikely.

Referenced by StreamTcpUTAddPayload(), StreamTcpUTAddSegmentWithByte(), StreamTcpUTAddSegmentWithPayload(), UTHBuildPacket(), UTHBuildPacketSrcDst(), and UTHBuildPacketSrcDstPorts().

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

◆ UTHBuildPacketSrcDst()

Packet* UTHBuildPacketSrcDst ( uint8_t *  payload,
uint16_t  payload_len,
uint8_t  ipproto,
const char *  src,
const char *  dst 
)

UTHBuildPacketSrcDst is a wrapper that build packets specifying IPs and defaulting ports.

Parameters
payloadpointer to the payloadd buffer
payload_lenpointer to the length of the payload
ipprotoProtocols allowed atm are IPPROTO_TCP and IPPROTO_UDP
Return values
Packetpointer to the built in packet

Definition at line 343 of file util-unittest-helper.c.

References dst, payload_len, src, and UTHBuildPacketReal().

Here is the call graph for this function:

◆ UTHBuildPacketSrcDstPorts()

Packet* UTHBuildPacketSrcDstPorts ( uint8_t *  payload,
uint16_t  payload_len,
uint8_t  ipproto,
uint16_t  sport,
uint16_t  dport 
)

UTHBuildPacketSrcDstPorts is a wrapper that build packets specifying src and dst ports and defaulting IPs.

Parameters
payloadpointer to the payloadd buffer
payload_lenpointer to the length of the payload
ipprotoProtocols allowed atm are IPPROTO_TCP and IPPROTO_UDP
Return values
Packetpointer to the built in packet

Definition at line 379 of file util-unittest-helper.c.

References payload_len, and UTHBuildPacketReal().

Here is the call graph for this function:

◆ UTHCheckPacketMatch()

int UTHCheckPacketMatch ( Packet ,
uint32_t *  ,
uint32_t *  ,
int   
)

◆ UTHCheckPacketMatchResults()

int UTHCheckPacketMatchResults ( Packet ,
uint32_t *  ,
uint32_t *  ,
int   
)

◆ UTHFreeFlow()

void UTHFreeFlow ( Flow flow)

Definition at line 497 of file util-unittest-helper.c.

References FlowFree().

Referenced by LLVMFuzzerTestOneInput().

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

◆ UTHFreePacket()

void UTHFreePacket ( Packet p)

UTHFreePacket: function to release the allocated data from UTHBuildPacket and the packet itself.

Parameters
ppointer to the Packet

Definition at line 410 of file util-unittest-helper.c.

References Packet_::ip4h, Packet_::proto, SCFree, Packet_::tcph, and Packet_::udph.

Referenced by StreamTcpUTAddPayload(), StreamTcpUTAddSegmentWithByte(), StreamTcpUTAddSegmentWithPayload(), UTHBuildPacketOfFlows(), and UTHFreePackets().

Here is the caller graph for this function:

◆ UTHFreePackets()

void UTHFreePackets ( Packet **  p,
int  numpkts 
)

UTHFreePackets: function to release the allocated data from UTHBuildPacket and the packet itself.

Parameters
ppointer to the Packet

Definition at line 393 of file util-unittest-helper.c.

References UTHFreePacket().

Here is the call graph for this function:

◆ UTHGenericTest()

int UTHGenericTest ( Packet **  ,
int  ,
const char **  ,
uint32_t *  ,
uint32_t *  ,
int   
)

◆ UTHMatchPackets()

int UTHMatchPackets ( DetectEngineCtx de_ctx,
Packet **  p,
int  num_packets 
)
Test:
UTHMatchPackets Match a packet or a array of packets against sigs of a de_ctx, but note that the return value doesn't mean that we have a match, we have to check it later with PacketAlertCheck()
Parameters
de_ctxpointer with the signatures loaded
ppointer to the array of packets
num_packetsnumber of packets in the array
Return values
return1 if all goes well
return0 if something fail

Definition at line 741 of file util-unittest-helper.c.

References de_ctx, DetectEngineThreadCtxDeinit(), DetectEngineThreadCtxInit(), dtv, SC_ERR_INVALID_ARGUMENT, SCLogError, SCSigOrderSignatures(), SCSigRegisterSignatureOrderingFuncs(), SCSigSignatureOrderingModuleCleanup(), SigGroupBuild(), SigGroupCleanup(), and SigMatchSignatures().

Here is the call graph for this function:

◆ UTHMatchPacketsWithResults()

int UTHMatchPacketsWithResults ( DetectEngineCtx ,
Packet **  ,
int  ,
uint32_t *  ,
uint32_t *  ,
int   
)

◆ UTHmemsearch()

void* UTHmemsearch ( const void *  big,
size_t  big_len,
const void *  little,
size_t  little_len 
)

Definition at line 1026 of file util-unittest-helper.c.

References BasicSearch().

Here is the call graph for this function:

◆ UTHPacketMatchSig()

int UTHPacketMatchSig ( Packet p,
const char *  sig 
)
Test:
Test if a packet match a signature given as string Hint: Useful for unittests with only one packet and one signature
Parameters
sigpointer to the string signature to test
sidsid number of the signature
Return values
return1 if match
return0 if not

Definition at line 853 of file util-unittest-helper.c.

References de_ctx, DE_QUIET, DetectEngineCtxFree(), DetectEngineCtxInit(), DetectEngineThreadCtxDeinit(), DetectEngineThreadCtxInit(), dtv, DetectEngineCtx_::flags, Signature_::id, PacketAlertCheck(), DetectEngineCtx_::sig_list, SigCleanSignatures(), SigGroupBuild(), SigGroupCleanup(), SigInit(), and SigMatchSignatures().

Here is the call graph for this function:

◆ UTHPacketMatchSigMpm()

int UTHPacketMatchSigMpm ( Packet p,
char *  sig,
uint16_t  mpm_type 
)
Test:
Test if a packet match a signature given as string and a mpm_type Hint: Useful for unittests with only one packet and one signature
Parameters
sigpointer to the string signature to test
sidsid number of the signature
Return values
return1 if match
return0 if not

Definition at line 792 of file util-unittest-helper.c.

References de_ctx, DE_QUIET, DetectEngineCtxFree(), DetectEngineCtxInit(), DetectEngineThreadCtxDeinit(), DetectEngineThreadCtxInit(), dtv, DetectEngineCtx_::flags, Signature_::id, DetectEngineCtx_::mpm_matcher, PacketAlertCheck(), SCEnter, SCReturnInt, DetectEngineCtx_::sig_list, SigCleanSignatures(), SigGroupBuild(), SigGroupCleanup(), SigInit(), and SigMatchSignatures().

Here is the call graph for this function:

◆ UTHParseSignature()

int UTHParseSignature ( const char *  str,
bool  expect 
)

parser a sig and see if the expected result is correct

Definition at line 929 of file util-unittest-helper.c.

References de_ctx, DE_QUIET, DetectEngineAppendSig(), DetectEngineCtxFree(), DetectEngineCtxInit(), FAIL_IF_NOT_NULL, FAIL_IF_NULL, DetectEngineCtx_::flags, PASS, and str.

Here is the call graph for this function:

◆ UTHRegisterTests()

void UTHRegisterTests ( void  )

Definition at line 1180 of file util-unittest-helper.c.

References UtRegisterTest().

Here is the call graph for this function:

◆ UTHRemoveSessionFromFlow()

int UTHRemoveSessionFromFlow ( Flow f)

Definition at line 540 of file util-unittest-helper.c.

References FAIL_IF_NOT, FAIL_IF_NULL, Flow_::proto, Flow_::protoctx, SCFree, and StreamTcpSessionCleanup().

Here is the call graph for this function:

◆ UTHSetIPv4Address()

uint32_t UTHSetIPv4Address ( const char *  str)

return the uint32_t for a ipv4 address string

Parameters
strValid ipaddress in string form (e.g. 1.2.3.4)
Return values
uintthe uin32_t representation

Definition at line 57 of file util-unittest-helper.c.

References str.