suricata
detect-csum.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  DetectCsumData_
 

Macros

#define DETECT_CSUM_VALID   "valid"
 
#define DETECT_CSUM_INVALID   "invalid"
 

Typedefs

typedef struct DetectCsumData_ DetectCsumData
 

Functions

void DetectCsumRegister (void)
 Registers handlers for all the checksum keywords. The checksum keywords that are registered are ipv4-sum, tcpv4-csum, tcpv6-csum, udpv4-csum, udpv6-csum, icmpv4-csum and icmpv6-csum. More...
 

Detailed Description

Macro Definition Documentation

#define DETECT_CSUM_INVALID   "invalid"

Definition at line 28 of file detect-csum.h.

Referenced by DetectCsumRegister().

#define DETECT_CSUM_VALID   "valid"

Definition at line 27 of file detect-csum.h.

Referenced by DetectCsumRegister().

Typedef Documentation

Function Documentation

void DetectCsumRegister ( void  )

Registers handlers for all the checksum keywords. The checksum keywords that are registered are ipv4-sum, tcpv4-csum, tcpv6-csum, udpv4-csum, udpv6-csum, icmpv4-csum and icmpv6-csum.

Each of the checksum keywords implemented here takes 2 arguments - "valid" or "invalid". If the rule keyword in the signature is specified as "valid", the Match function would return TRUE if the checksum for that particular packet and protocol is valid. Similarly for "invalid".

The Setup functions takes 4 arguments -

DetectEngineCtx * (de_ctx) - A pointer to the detection engine context Signature *(s) - Pointer to signature for the current Signature being parsed from the rules SigMatchCtx * (m) - Pointer to the head of the SigMatchs added to the current Signature being parsed char * (csum_str) - Pointer to a string holding the keyword value

The Setup function returns 0 if it successfully parses the keyword value, and -1 otherwise.

The Match function takes 5 arguments -

ThreadVars * (t) - Pointer to the tv for the detection module instance DetectEngineThreadCtx * (det_ctx) - Pointer to the detection engine thread context Packet * (p) - Pointer to the Packet currently being handled Signature * (s) - Pointer to the Signature, the packet is being currently matched with SigMatchCtx * (m) - Pointer to the keyword structure from the above Signature, the Packet is being currently matched with

The Match function returns 1 if the Packet contents match the keyword, and 0 otherwise

The Free function takes a single argument -

void * (ptr) - Pointer to the DetectCsumData for a keyword

Definition at line 128 of file detect-csum.c.

References ICMPV6Hdr_::csum, SigMatch_::ctx, DETECT_CSUM_INVALID, DETECT_CSUM_VALID, DETECT_ICMPV4_CSUM, DETECT_ICMPV6_CSUM, DETECT_IPV4_CSUM, DETECT_SM_LIST_MATCH, DETECT_TCPV4_CSUM, DETECT_TCPV6_CSUM, DETECT_UDPV4_CSUM, DETECT_UDPV6_CSUM, Packet_::flags, SigTableElmt_::Free, GET_PKT_DATA, GET_PKT_LEN, Packet_::icmpv4h, Packet_::icmpv6h, Packet_::ip4h, Packet_::ip6h, IPV4Hdr_::ip_csum, IPV4_GET_HLEN, IPV4_GET_RAW_HLEN, IPV4_GET_RAW_IPLEN, IPV6_GET_RAW_PLEN, IPV6_HEADER_LEN, len, Packet_::level3_comp_csum, Packet_::level4_comp_csum, SigTableElmt_::Match, SigTableElmt_::name, Packet_::payload_len, PKT_IGNORE_CHECKSUM, PKT_IS_PSEUDOPKT, Packet_::proto, SigTableElmt_::RegisterTests, SCFree, SCMalloc, SCNtohs, SCStrdup, SigTableElmt_::Setup, sigmatch_table, SigMatchAlloc(), SigMatchAppendSMToList(), str, TCP_GET_HLEN, Packet_::tcph, SigMatch_::type, UDP_HEADER_LEN, Packet_::udph, unlikely, and DetectCsumData_::valid.

Referenced by SigTableSetup().

Here is the call graph for this function:

Here is the caller graph for this function: