Coverage Report

Created: 2026-01-16 07:00

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/suricata7/src/decode-tcp.h
Line
Count
Source
1
/* Copyright (C) 2007-2022 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
 * \todo RAW* macro's should be returning the raw value, not the host order
23
 */
24
25
#ifndef __DECODE_TCP_H__
26
#define __DECODE_TCP_H__
27
28
8.42M
#define TCP_HEADER_LEN                       20
29
#define TCP_OPTLENMAX                        40
30
#define TCP_OPTMAX                           20 /* every opt is at least 2 bytes
31
                                                 * (type + len), except EOL and NOP */
32
33
/* TCP flags */
34
35
57.9M
#define TH_FIN                               0x01
36
123M
#define TH_SYN                               0x02
37
74.6M
#define TH_RST                               0x04
38
574k
#define TH_PUSH                              0x08
39
130M
#define TH_ACK                               0x10
40
20.0M
#define TH_URG                               0x20
41
/** Establish a new connection reducing window */
42
2.91M
#define TH_ECN                               0x40
43
/** Echo Congestion flag */
44
2.91M
#define TH_CWR                               0x80
45
46
/* tcp option codes */
47
4.61M
#define TCP_OPT_EOL                          0x00
48
4.53M
#define TCP_OPT_NOP                          0x01
49
268k
#define TCP_OPT_MSS                          0x02
50
321k
#define TCP_OPT_WS                           0x03
51
292k
#define TCP_OPT_SACKOK                       0x04
52
9.84M
#define TCP_OPT_SACK                         0x05
53
1.13M
#define TCP_OPT_TS                           0x08
54
3.90M
#define TCP_OPT_TFO                          0x22   /* TCP Fast Open */
55
1.01k
#define TCP_OPT_EXP1                         0xfd   /* Experimental, could be TFO */
56
5.27k
#define TCP_OPT_EXP2                         0xfe   /* Experimental, could be TFO */
57
1.79k
#define TCP_OPT_MD5                          0x13   /* 19: RFC 2385 TCP MD5 option */
58
874
#define TCP_OPT_AO                           0x1d   /* 29: RFC 5925 TCP AO option */
59
60
152k
#define TCP_OPT_SACKOK_LEN                   2
61
131k
#define TCP_OPT_WS_LEN                       3
62
1.13M
#define TCP_OPT_TS_LEN                       10
63
262k
#define TCP_OPT_MSS_LEN                      4
64
16.8k
#define TCP_OPT_SACK_MIN_LEN                 10 /* hdr 2, 1 pair 8 = 10 */
65
15.5k
#define TCP_OPT_SACK_MAX_LEN                 34 /* hdr 2, 4 pair 32= 34 */
66
11.1k
#define TCP_OPT_TFO_MIN_LEN                  4  /* kind, len, 2 bytes cookie: 4 */
67
9.66k
#define TCP_OPT_TFO_MAX_LEN                  18 /* kind, len, 18 */
68
69
/** Max valid wscale value. */
70
240k
#define TCP_WSCALE_MAX                       14
71
72
6.77M
#define TCP_GET_RAW_OFFSET(tcph)             (((tcph)->th_offx2 & 0xf0) >> 4)
73
0
#define TCP_GET_RAW_X2(tcph)                 (unsigned char)((tcph)->th_offx2 & 0x0f)
74
#define TCP_GET_RAW_SRC_PORT(tcph)           SCNtohs((tcph)->th_sport)
75
#define TCP_GET_RAW_DST_PORT(tcph)           SCNtohs((tcph)->th_dport)
76
77
#define TCP_SET_RAW_TCP_OFFSET(tcph, value)  ((tcph)->th_offx2 = (unsigned char)(((tcph)->th_offx2 & 0x0f) | (value << 4)))
78
#define TCP_SET_RAW_TCP_X2(tcph, value)      ((tcph)->th_offx2 = (unsigned char)(((tcph)->th_offx2 & 0xf0) | (value & 0x0f)))
79
80
34.8M
#define TCP_GET_RAW_SEQ(tcph)                SCNtohl((tcph)->th_seq)
81
38.9M
#define TCP_GET_RAW_ACK(tcph)                SCNtohl((tcph)->th_ack)
82
83
28.7M
#define TCP_GET_RAW_WINDOW(tcph)             SCNtohs((tcph)->th_win)
84
0
#define TCP_GET_RAW_URG_POINTER(tcph)        SCNtohs((tcph)->th_urp)
85
#define TCP_GET_RAW_SUM(tcph)                SCNtohs((tcph)->th_sum)
86
87
/** macro for getting the first timestamp from the packet in host order */
88
3.07M
#define TCP_GET_TSVAL(p)                    ((p)->tcpvars.ts_val)
89
90
/** macro for getting the second timestamp from the packet in host order. */
91
79.8k
#define TCP_GET_TSECR(p)                    ((p)->tcpvars.ts_ecr)
92
93
189k
#define TCP_HAS_WSCALE(p)                   ((p)->tcpvars.ws.type == TCP_OPT_WS)
94
9.83M
#define TCP_HAS_SACK(p)                     ((p)->tcpvars.sack.type == TCP_OPT_SACK)
95
140k
#define TCP_HAS_SACKOK(p)                   ((p)->tcpvars.sackok.type == TCP_OPT_SACKOK)
96
3.56M
#define TCP_HAS_TS(p)                       ((p)->tcpvars.ts_set)
97
5.69k
#define TCP_HAS_MSS(p)                      ((p)->tcpvars.mss.type == TCP_OPT_MSS)
98
7.74M
#define TCP_HAS_TFO(p)                      ((p)->tcpvars.tfo.type == TCP_OPT_TFO)
99
100
/** macro for getting the wscale from the packet. */
101
48.7k
#define TCP_GET_WSCALE(p)                    (TCP_HAS_WSCALE((p)) ? \
102
48.7k
                                                (((*(uint8_t *)(p)->tcpvars.ws.data) <= TCP_WSCALE_MAX) ? \
103
48.7k
                                                  (*(uint8_t *)((p)->tcpvars.ws.data)) : 0) : 0)
104
105
140k
#define TCP_GET_SACKOK(p)                    (TCP_HAS_SACKOK((p)) ? 1 : 0)
106
4.89M
#define TCP_GET_SACK_PTR(p)                  TCP_HAS_SACK((p)) ? (p)->tcpvars.sack.data : NULL
107
4.89M
#define TCP_GET_SACK_CNT(p)                  (TCP_HAS_SACK((p)) ? (((p)->tcpvars.sack.len - 2) / 8) : 0)
108
467
#define TCP_GET_MSS(p)                       SCNtohs(*(uint16_t *)((p)->tcpvars.mss.data))
109
110
6.77M
#define TCP_GET_OFFSET(p)                    TCP_GET_RAW_OFFSET((p)->tcph)
111
#define TCP_GET_X2(p)                        TCP_GET_RAW_X2((p)->tcph)
112
6.77M
#define TCP_GET_HLEN(p)                      ((uint8_t)(TCP_GET_OFFSET((p)) << 2))
113
#define TCP_GET_SRC_PORT(p)                  TCP_GET_RAW_SRC_PORT((p)->tcph)
114
#define TCP_GET_DST_PORT(p)                  TCP_GET_RAW_DST_PORT((p)->tcph)
115
31.0M
#define TCP_GET_SEQ(p)                       TCP_GET_RAW_SEQ((p)->tcph)
116
39.0M
#define TCP_GET_ACK(p)                       TCP_GET_RAW_ACK((p)->tcph)
117
28.7M
#define TCP_GET_WINDOW(p)                    TCP_GET_RAW_WINDOW((p)->tcph)
118
0
#define TCP_GET_URG_POINTER(p)               TCP_GET_RAW_URG_POINTER((p)->tcph)
119
#define TCP_GET_SUM(p)                       TCP_GET_RAW_SUM((p)->tcph)
120
#define TCP_GET_FLAGS(p)                     (p)->tcph->th_flags
121
122
0
#define TCP_ISSET_FLAG_FIN(p)                ((p)->tcph->th_flags & TH_FIN)
123
0
#define TCP_ISSET_FLAG_SYN(p)                ((p)->tcph->th_flags & TH_SYN)
124
0
#define TCP_ISSET_FLAG_RST(p)                ((p)->tcph->th_flags & TH_RST)
125
0
#define TCP_ISSET_FLAG_PUSH(p)               ((p)->tcph->th_flags & TH_PUSH)
126
0
#define TCP_ISSET_FLAG_ACK(p)                ((p)->tcph->th_flags & TH_ACK)
127
0
#define TCP_ISSET_FLAG_URG(p)                ((p)->tcph->th_flags & TH_URG)
128
#define TCP_ISSET_FLAG_RES2(p)               ((p)->tcph->th_flags & TH_RES2)
129
#define TCP_ISSET_FLAG_RES1(p)               ((p)->tcph->th_flags & TH_RES1)
130
131
typedef struct TCPOpt_ {
132
    uint8_t type;
133
    uint8_t len;
134
    const uint8_t *data;
135
} TCPOpt;
136
137
typedef struct TCPOptSackRecord_ {
138
    uint32_t le;        /**< left edge, network order */
139
    uint32_t re;        /**< right edge, network order */
140
} TCPOptSackRecord;
141
142
typedef struct TCPHdr_
143
{
144
    uint16_t th_sport;  /**< source port */
145
    uint16_t th_dport;  /**< destination port */
146
    uint32_t th_seq;    /**< sequence number */
147
    uint32_t th_ack;    /**< acknowledgement number */
148
    uint8_t th_offx2;   /**< offset and reserved */
149
    uint8_t th_flags;   /**< pkt flags */
150
    uint16_t th_win;    /**< pkt window */
151
    uint16_t th_sum;    /**< checksum */
152
    uint16_t th_urp;    /**< urgent pointer */
153
} __attribute__((__packed__)) TCPHdr;
154
155
typedef struct TCPVars_
156
{
157
    /* commonly used and needed opts */
158
    bool md5_option_present;
159
    bool ao_option_present;
160
    bool ts_set;
161
    uint32_t ts_val;    /* host-order */
162
    uint32_t ts_ecr;    /* host-order */
163
    uint16_t stream_pkt_flags;
164
    TCPOpt sack;
165
    TCPOpt sackok;
166
    TCPOpt ws;
167
    TCPOpt mss;
168
    TCPOpt tfo;         /* tcp fast open */
169
} TCPVars;
170
171
6.89M
#define CLEAR_TCP_PACKET(p) {   \
172
6.89M
    (p)->level4_comp_csum = -1; \
173
6.89M
    PACKET_CLEAR_L4VARS((p));   \
174
6.89M
    (p)->tcph = NULL;           \
175
6.89M
}
176
177
void DecodeTCPRegisterTests(void);
178
179
/** -------- Inline functions ------- */
180
181
/**
182
 * \brief Calculate or validate the checksum for the TCP packet
183
 *
184
 * \param shdr Pointer to source address field from the IP packet.  Used as a
185
 *             part of the pseudoheader for computing the checksum
186
 * \param pkt  Pointer to the start of the TCP packet
187
 * \param tlen Total length of the TCP packet(header + payload)
188
 * \param init The current checksum if validating, 0 if generating.
189
 *
190
 * \retval csum For validation 0 will be returned for success, for calculation
191
 *    this will be the checksum.
192
 */
193
static inline uint16_t TCPChecksum(
194
        const uint16_t *shdr, const uint16_t *pkt, uint16_t tlen, uint16_t init)
195
278k
{
196
278k
    uint16_t pad = 0;
197
278k
    uint32_t csum = init;
198
199
278k
    csum += shdr[0] + shdr[1] + shdr[2] + shdr[3] + htons(6) + htons(tlen);
200
201
278k
    csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
202
278k
        pkt[7] + pkt[9];
203
204
278k
    tlen -= 20;
205
278k
    pkt += 10;
206
207
304k
    while (tlen >= 32) {
208
25.5k
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
209
25.5k
            pkt[7] +
210
25.5k
            pkt[8] +
211
25.5k
            pkt[9] + pkt[10] + pkt[11] + pkt[12] + pkt[13] +
212
25.5k
            pkt[14] + pkt[15];
213
25.5k
        tlen -= 32;
214
25.5k
        pkt += 16;
215
25.5k
    }
216
217
293k
    while(tlen >= 8) {
218
14.6k
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3];
219
14.6k
        tlen -= 8;
220
14.6k
        pkt += 4;
221
14.6k
    }
222
223
287k
    while(tlen >= 4) {
224
9.06k
        csum += pkt[0] + pkt[1];
225
9.06k
        tlen -= 4;
226
9.06k
        pkt += 2;
227
9.06k
    }
228
229
281k
    while (tlen > 1) {
230
2.70k
        csum += pkt[0];
231
2.70k
        pkt += 1;
232
2.70k
        tlen -= 2;
233
2.70k
    }
234
235
278k
    if (tlen == 1) {
236
4.87k
        *(uint8_t *)(&pad) = (*(uint8_t *)pkt);
237
4.87k
        csum += pad;
238
4.87k
    }
239
240
278k
    csum = (csum >> 16) + (csum & 0x0000FFFF);
241
278k
    csum += (csum >> 16);
242
243
278k
    return (uint16_t)~csum;
244
278k
}
Unexecuted instantiation: fuzz_applayerparserparse.c:TCPChecksum
Unexecuted instantiation: app-layer-parser.c:TCPChecksum
Unexecuted instantiation: app-layer-rdp.c:TCPChecksum
Unexecuted instantiation: app-layer-rfb.c:TCPChecksum
Unexecuted instantiation: app-layer-sip.c:TCPChecksum
Unexecuted instantiation: app-layer-smb.c:TCPChecksum
Unexecuted instantiation: app-layer-smtp.c:TCPChecksum
Unexecuted instantiation: app-layer-snmp.c:TCPChecksum
Unexecuted instantiation: app-layer-ssh.c:TCPChecksum
Unexecuted instantiation: app-layer-ssl.c:TCPChecksum
Unexecuted instantiation: app-layer-tftp.c:TCPChecksum
Unexecuted instantiation: detect-engine-state.c:TCPChecksum
Unexecuted instantiation: flow.c:TCPChecksum
Unexecuted instantiation: flow-hash.c:TCPChecksum
Unexecuted instantiation: flow-manager.c:TCPChecksum
Unexecuted instantiation: flow-queue.c:TCPChecksum
Unexecuted instantiation: flow-spare-pool.c:TCPChecksum
Unexecuted instantiation: flow-storage.c:TCPChecksum
flow-timeout.c:TCPChecksum
Line
Count
Source
195
264k
{
196
264k
    uint16_t pad = 0;
197
264k
    uint32_t csum = init;
198
199
264k
    csum += shdr[0] + shdr[1] + shdr[2] + shdr[3] + htons(6) + htons(tlen);
200
201
264k
    csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
202
264k
        pkt[7] + pkt[9];
203
204
264k
    tlen -= 20;
205
264k
    pkt += 10;
206
207
264k
    while (tlen >= 32) {
208
0
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
209
0
            pkt[7] +
210
0
            pkt[8] +
211
0
            pkt[9] + pkt[10] + pkt[11] + pkt[12] + pkt[13] +
212
0
            pkt[14] + pkt[15];
213
0
        tlen -= 32;
214
0
        pkt += 16;
215
0
    }
216
217
264k
    while(tlen >= 8) {
218
0
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3];
219
0
        tlen -= 8;
220
0
        pkt += 4;
221
0
    }
222
223
264k
    while(tlen >= 4) {
224
0
        csum += pkt[0] + pkt[1];
225
0
        tlen -= 4;
226
0
        pkt += 2;
227
0
    }
228
229
264k
    while (tlen > 1) {
230
0
        csum += pkt[0];
231
0
        pkt += 1;
232
0
        tlen -= 2;
233
0
    }
234
235
264k
    if (tlen == 1) {
236
0
        *(uint8_t *)(&pad) = (*(uint8_t *)pkt);
237
0
        csum += pad;
238
0
    }
239
240
264k
    csum = (csum >> 16) + (csum & 0x0000FFFF);
241
264k
    csum += (csum >> 16);
242
243
264k
    return (uint16_t)~csum;
244
264k
}
Unexecuted instantiation: flow-util.c:TCPChecksum
Unexecuted instantiation: host-timeout.c:TCPChecksum
Unexecuted instantiation: ippair-timeout.c:TCPChecksum
Unexecuted instantiation: output-file.c:TCPChecksum
Unexecuted instantiation: output-filedata.c:TCPChecksum
Unexecuted instantiation: output-flow.c:TCPChecksum
Unexecuted instantiation: packet.c:TCPChecksum
Unexecuted instantiation: pkt-var.c:TCPChecksum
Unexecuted instantiation: reputation.c:TCPChecksum
Unexecuted instantiation: runmodes.c:TCPChecksum
Unexecuted instantiation: runmode-unix-socket.c:TCPChecksum
Unexecuted instantiation: runmode-windivert.c:TCPChecksum
Unexecuted instantiation: stream-tcp.c:TCPChecksum
Unexecuted instantiation: stream-tcp-list.c:TCPChecksum
Unexecuted instantiation: stream-tcp-reassemble.c:TCPChecksum
Unexecuted instantiation: stream-tcp-sack.c:TCPChecksum
Unexecuted instantiation: suricata.c:TCPChecksum
Unexecuted instantiation: tm-modules.c:TCPChecksum
Unexecuted instantiation: tmqh-flow.c:TCPChecksum
Unexecuted instantiation: tmqh-packetpool.c:TCPChecksum
Unexecuted instantiation: tm-queuehandlers.c:TCPChecksum
Unexecuted instantiation: tm-threads.c:TCPChecksum
Unexecuted instantiation: unix-manager.c:TCPChecksum
Unexecuted instantiation: util-checksum.c:TCPChecksum
Unexecuted instantiation: util-datalink.c:TCPChecksum
Unexecuted instantiation: util-debug.c:TCPChecksum
Unexecuted instantiation: util-decode-mime.c:TCPChecksum
Unexecuted instantiation: util-exception-policy.c:TCPChecksum
Unexecuted instantiation: util-file.c:TCPChecksum
Unexecuted instantiation: util-host-os-info.c:TCPChecksum
Unexecuted instantiation: util-ioctl.c:TCPChecksum
Unexecuted instantiation: util-ja3.c:TCPChecksum
Unexecuted instantiation: util-landlock.c:TCPChecksum
Unexecuted instantiation: util-macset.c:TCPChecksum
Unexecuted instantiation: util-mpm.c:TCPChecksum
Unexecuted instantiation: util-print.c:TCPChecksum
Unexecuted instantiation: util-running-modes.c:TCPChecksum
Unexecuted instantiation: util-streaming-buffer.c:TCPChecksum
Unexecuted instantiation: util-threshold-config.c:TCPChecksum
Unexecuted instantiation: util-time.c:TCPChecksum
Unexecuted instantiation: util-var.c:TCPChecksum
Unexecuted instantiation: util-var-name.c:TCPChecksum
Unexecuted instantiation: app-layer.c:TCPChecksum
Unexecuted instantiation: app-layer-detect-proto.c:TCPChecksum
Unexecuted instantiation: app-layer-dnp3.c:TCPChecksum
Unexecuted instantiation: app-layer-dnp3-objects.c:TCPChecksum
Unexecuted instantiation: app-layer-enip.c:TCPChecksum
Unexecuted instantiation: app-layer-enip-common.c:TCPChecksum
Unexecuted instantiation: app-layer-events.c:TCPChecksum
Unexecuted instantiation: app-layer-expectation.c:TCPChecksum
Unexecuted instantiation: app-layer-ftp.c:TCPChecksum
Unexecuted instantiation: app-layer-frames.c:TCPChecksum
Unexecuted instantiation: app-layer-htp.c:TCPChecksum
Unexecuted instantiation: app-layer-htp-file.c:TCPChecksum
Unexecuted instantiation: app-layer-htp-range.c:TCPChecksum
Unexecuted instantiation: app-layer-http2.c:TCPChecksum
Unexecuted instantiation: app-layer-ike.c:TCPChecksum
Unexecuted instantiation: app-layer-krb5.c:TCPChecksum
Unexecuted instantiation: app-layer-modbus.c:TCPChecksum
Unexecuted instantiation: app-layer-quic.c:TCPChecksum
Unexecuted instantiation: app-layer-mqtt.c:TCPChecksum
Unexecuted instantiation: app-layer-nfs-tcp.c:TCPChecksum
Unexecuted instantiation: app-layer-nfs-udp.c:TCPChecksum
Unexecuted instantiation: app-layer-ntp.c:TCPChecksum
Unexecuted instantiation: counters.c:TCPChecksum
Unexecuted instantiation: datasets-string.c:TCPChecksum
Unexecuted instantiation: decode.c:TCPChecksum
Unexecuted instantiation: decode-erspan.c:TCPChecksum
Unexecuted instantiation: decode-ethernet.c:TCPChecksum
Unexecuted instantiation: decode-geneve.c:TCPChecksum
Unexecuted instantiation: decode-icmpv4.c:TCPChecksum
Unexecuted instantiation: decode-icmpv6.c:TCPChecksum
Unexecuted instantiation: decode-ipv4.c:TCPChecksum
Unexecuted instantiation: decode-ipv6.c:TCPChecksum
Unexecuted instantiation: decode-mpls.c:TCPChecksum
Unexecuted instantiation: decode-nsh.c:TCPChecksum
Unexecuted instantiation: decode-ppp.c:TCPChecksum
Unexecuted instantiation: decode-pppoe.c:TCPChecksum
Unexecuted instantiation: decode-sctp.c:TCPChecksum
Unexecuted instantiation: decode-tcp.c:TCPChecksum
Unexecuted instantiation: decode-teredo.c:TCPChecksum
Unexecuted instantiation: decode-udp.c:TCPChecksum
Unexecuted instantiation: decode-vlan.c:TCPChecksum
Unexecuted instantiation: decode-vntag.c:TCPChecksum
Unexecuted instantiation: decode-vxlan.c:TCPChecksum
Unexecuted instantiation: defrag.c:TCPChecksum
Unexecuted instantiation: defrag-config.c:TCPChecksum
Unexecuted instantiation: defrag-hash.c:TCPChecksum
Unexecuted instantiation: defrag-queue.c:TCPChecksum
Unexecuted instantiation: defrag-timeout.c:TCPChecksum
Unexecuted instantiation: detect-content.c:TCPChecksum
Unexecuted instantiation: detect-dsize.c:TCPChecksum
Unexecuted instantiation: detect-engine-address.c:TCPChecksum
Unexecuted instantiation: detect-engine-address-ipv4.c:TCPChecksum
Unexecuted instantiation: detect-engine-address-ipv6.c:TCPChecksum
Unexecuted instantiation: detect-engine-alert.c:TCPChecksum
Unexecuted instantiation: detect-engine-build.c:TCPChecksum
Unexecuted instantiation: detect-engine.c:TCPChecksum
Unexecuted instantiation: detect-engine-content-inspection.c:TCPChecksum
Unexecuted instantiation: detect-engine-frame.c:TCPChecksum
Unexecuted instantiation: detect-engine-iponly.c:TCPChecksum
Unexecuted instantiation: detect-engine-loader.c:TCPChecksum
Unexecuted instantiation: detect-engine-mpm.c:TCPChecksum
Unexecuted instantiation: detect-engine-payload.c:TCPChecksum
Unexecuted instantiation: detect-engine-port.c:TCPChecksum
Unexecuted instantiation: detect-engine-prefilter.c:TCPChecksum
Unexecuted instantiation: detect-engine-prefilter-common.c:TCPChecksum
Unexecuted instantiation: detect-engine-proto.c:TCPChecksum
Unexecuted instantiation: detect-engine-register.c:TCPChecksum
Unexecuted instantiation: detect-engine-siggroup.c:TCPChecksum
Unexecuted instantiation: detect-engine-sigorder.c:TCPChecksum
Unexecuted instantiation: detect-engine-tag.c:TCPChecksum
Unexecuted instantiation: detect-engine-threshold.c:TCPChecksum
Unexecuted instantiation: detect-engine-uint.c:TCPChecksum
Unexecuted instantiation: detect-fast-pattern.c:TCPChecksum
Unexecuted instantiation: detect-file-data.c:TCPChecksum
Unexecuted instantiation: detect-filemagic.c:TCPChecksum
Unexecuted instantiation: detect-filemd5.c:TCPChecksum
Unexecuted instantiation: detect-filename.c:TCPChecksum
Unexecuted instantiation: detect-filesha1.c:TCPChecksum
Unexecuted instantiation: detect-filesha256.c:TCPChecksum
Unexecuted instantiation: detect-filesize.c:TCPChecksum
Unexecuted instantiation: detect-filestore.c:TCPChecksum
Unexecuted instantiation: detect-flowbits.c:TCPChecksum
Unexecuted instantiation: detect-flow.c:TCPChecksum
Unexecuted instantiation: detect-flow-age.c:TCPChecksum
Unexecuted instantiation: detect-flowint.c:TCPChecksum
Unexecuted instantiation: detect-flowvar.c:TCPChecksum
Unexecuted instantiation: detect-fragbits.c:TCPChecksum
Unexecuted instantiation: detect-fragoffset.c:TCPChecksum
Unexecuted instantiation: detect-frame.c:TCPChecksum
Unexecuted instantiation: detect-ftpbounce.c:TCPChecksum
Unexecuted instantiation: detect-ftpdata.c:TCPChecksum
Unexecuted instantiation: detect-geoip.c:TCPChecksum
Unexecuted instantiation: detect-gid.c:TCPChecksum
Unexecuted instantiation: detect-hostbits.c:TCPChecksum
Unexecuted instantiation: detect-http2.c:TCPChecksum
Unexecuted instantiation: detect-http-client-body.c:TCPChecksum
Unexecuted instantiation: detect-http-cookie.c:TCPChecksum
Unexecuted instantiation: detect-http-header.c:TCPChecksum
Unexecuted instantiation: detect-http-header-common.c:TCPChecksum
Unexecuted instantiation: detect-http-header-names.c:TCPChecksum
Unexecuted instantiation: detect-http-host.c:TCPChecksum
Unexecuted instantiation: detect-http-location.c:TCPChecksum
Unexecuted instantiation: detect-http-method.c:TCPChecksum
Unexecuted instantiation: detect-http-protocol.c:TCPChecksum
Unexecuted instantiation: detect-http-raw-header.c:TCPChecksum
Unexecuted instantiation: detect-http-referer.c:TCPChecksum
Unexecuted instantiation: detect-http-request-line.c:TCPChecksum
Unexecuted instantiation: detect-http-response-line.c:TCPChecksum
Unexecuted instantiation: detect-http-server-body.c:TCPChecksum
Unexecuted instantiation: detect-http-server.c:TCPChecksum
Unexecuted instantiation: detect-http-start.c:TCPChecksum
Unexecuted instantiation: detect-http-stat-code.c:TCPChecksum
Unexecuted instantiation: detect-http-stat-msg.c:TCPChecksum
Unexecuted instantiation: detect-http-ua.c:TCPChecksum
Unexecuted instantiation: detect-http-uri.c:TCPChecksum
Unexecuted instantiation: detect-icmp-id.c:TCPChecksum
Unexecuted instantiation: detect-icmp-seq.c:TCPChecksum
Unexecuted instantiation: detect-icmpv4hdr.c:TCPChecksum
Unexecuted instantiation: detect-icmpv6hdr.c:TCPChecksum
Unexecuted instantiation: detect-icmpv6-mtu.c:TCPChecksum
Unexecuted instantiation: detect-icode.c:TCPChecksum
Unexecuted instantiation: detect-id.c:TCPChecksum
Unexecuted instantiation: detect-ike-exch-type.c:TCPChecksum
Unexecuted instantiation: detect-ike-spi.c:TCPChecksum
Unexecuted instantiation: detect-ike-vendor.c:TCPChecksum
Unexecuted instantiation: detect-ike-chosen-sa.c:TCPChecksum
Unexecuted instantiation: detect-ike-key-exchange-payload-length.c:TCPChecksum
Unexecuted instantiation: detect-ike-nonce-payload-length.c:TCPChecksum
Unexecuted instantiation: detect-ike-nonce-payload.c:TCPChecksum
Unexecuted instantiation: detect-ike-key-exchange-payload.c:TCPChecksum
Unexecuted instantiation: detect-ipaddr.c:TCPChecksum
Unexecuted instantiation: detect-ipopts.c:TCPChecksum
Unexecuted instantiation: detect-ipproto.c:TCPChecksum
Unexecuted instantiation: detect-iprep.c:TCPChecksum
Unexecuted instantiation: detect-ipv4hdr.c:TCPChecksum
Unexecuted instantiation: detect-ipv6hdr.c:TCPChecksum
Unexecuted instantiation: detect-isdataat.c:TCPChecksum
Unexecuted instantiation: detect-itype.c:TCPChecksum
Unexecuted instantiation: detect-ja4-hash.c:TCPChecksum
Unexecuted instantiation: detect-krb5-cname.c:TCPChecksum
Unexecuted instantiation: detect-krb5-errcode.c:TCPChecksum
Unexecuted instantiation: detect-krb5-msgtype.c:TCPChecksum
Unexecuted instantiation: detect-krb5-sname.c:TCPChecksum
Unexecuted instantiation: detect-krb5-ticket-encryption.c:TCPChecksum
Unexecuted instantiation: detect-l3proto.c:TCPChecksum
Unexecuted instantiation: detect-lua.c:TCPChecksum
Unexecuted instantiation: detect-mark.c:TCPChecksum
Unexecuted instantiation: detect-metadata.c:TCPChecksum
Unexecuted instantiation: detect-modbus.c:TCPChecksum
Unexecuted instantiation: detect-quic-sni.c:TCPChecksum
Unexecuted instantiation: detect-quic-ua.c:TCPChecksum
Unexecuted instantiation: detect-quic-version.c:TCPChecksum
Unexecuted instantiation: detect-quic-cyu-hash.c:TCPChecksum
Unexecuted instantiation: detect-quic-cyu-string.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-connack-sessionpresent.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-connect-clientid.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-connect-flags.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-connect-password.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-connect-username.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-connect-willmessage.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-connect-willtopic.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-flags.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-protocol-version.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-publish-message.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-publish-topic.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-qos.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-reason-code.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-subscribe-topic.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-type.c:TCPChecksum
Unexecuted instantiation: detect-mqtt-unsubscribe-topic.c:TCPChecksum
Unexecuted instantiation: detect-msg.c:TCPChecksum
Unexecuted instantiation: detect-nfs-procedure.c:TCPChecksum
Unexecuted instantiation: detect-nfs-version.c:TCPChecksum
Unexecuted instantiation: detect-noalert.c:TCPChecksum
Unexecuted instantiation: detect-nocase.c:TCPChecksum
Unexecuted instantiation: detect-offset.c:TCPChecksum
Unexecuted instantiation: detect-parse.c:TCPChecksum
Unexecuted instantiation: detect-pcre.c:TCPChecksum
Unexecuted instantiation: detect-pkt-data.c:TCPChecksum
Unexecuted instantiation: detect-pktvar.c:TCPChecksum
Unexecuted instantiation: detect-prefilter.c:TCPChecksum
Unexecuted instantiation: detect-priority.c:TCPChecksum
Unexecuted instantiation: detect-rawbytes.c:TCPChecksum
Unexecuted instantiation: detect-reference.c:TCPChecksum
Unexecuted instantiation: detect-replace.c:TCPChecksum
Unexecuted instantiation: detect-requires.c:TCPChecksum
Unexecuted instantiation: detect-rev.c:TCPChecksum
Unexecuted instantiation: detect-rfb-name.c:TCPChecksum
Unexecuted instantiation: detect-rfb-secresult.c:TCPChecksum
Unexecuted instantiation: detect-rfb-sectype.c:TCPChecksum
Unexecuted instantiation: detect-rpc.c:TCPChecksum
Unexecuted instantiation: detect-sameip.c:TCPChecksum
Unexecuted instantiation: detect-sid.c:TCPChecksum
Unexecuted instantiation: detect-sip-method.c:TCPChecksum
Unexecuted instantiation: detect-sip-protocol.c:TCPChecksum
Unexecuted instantiation: detect-sip-request-line.c:TCPChecksum
Unexecuted instantiation: detect-sip-response-line.c:TCPChecksum
Unexecuted instantiation: detect-sip-stat-code.c:TCPChecksum
Unexecuted instantiation: detect-sip-stat-msg.c:TCPChecksum
Unexecuted instantiation: detect-sip-uri.c:TCPChecksum
Unexecuted instantiation: detect-smb-ntlmssp.c:TCPChecksum
Unexecuted instantiation: detect-smb-share.c:TCPChecksum
Unexecuted instantiation: detect-snmp-community.c:TCPChecksum
Unexecuted instantiation: detect-snmp-pdu_type.c:TCPChecksum
Unexecuted instantiation: detect-snmp-usm.c:TCPChecksum
Unexecuted instantiation: detect-snmp-version.c:TCPChecksum
Unexecuted instantiation: detect-dhcp-leasetime.c:TCPChecksum
Unexecuted instantiation: detect-dhcp-rebinding-time.c:TCPChecksum
Unexecuted instantiation: detect-dhcp-renewal-time.c:TCPChecksum
Unexecuted instantiation: detect-ssh-hassh.c:TCPChecksum
Unexecuted instantiation: detect-ssh-hassh-server.c:TCPChecksum
Unexecuted instantiation: detect-ssh-hassh-server-string.c:TCPChecksum
Unexecuted instantiation: detect-ssh-hassh-string.c:TCPChecksum
Unexecuted instantiation: detect-ssh-proto.c:TCPChecksum
Unexecuted instantiation: detect-ssh-proto-version.c:TCPChecksum
Unexecuted instantiation: detect-ssh-software.c:TCPChecksum
Unexecuted instantiation: detect-ssh-software-version.c:TCPChecksum
Unexecuted instantiation: detect-ssl-state.c:TCPChecksum
Unexecuted instantiation: detect-ssl-version.c:TCPChecksum
Unexecuted instantiation: detect-stream_size.c:TCPChecksum
Unexecuted instantiation: detect-tag.c:TCPChecksum
Unexecuted instantiation: detect-target.c:TCPChecksum
Unexecuted instantiation: detect-tcp-ack.c:TCPChecksum
Unexecuted instantiation: detect-tcp-flags.c:TCPChecksum
Unexecuted instantiation: detect-tcphdr.c:TCPChecksum
Unexecuted instantiation: detect-tcpmss.c:TCPChecksum
Unexecuted instantiation: detect-tcp-seq.c:TCPChecksum
Unexecuted instantiation: detect-tcp-window.c:TCPChecksum
Unexecuted instantiation: detect-template2.c:TCPChecksum
Unexecuted instantiation: detect-template.c:TCPChecksum
Unexecuted instantiation: detect-template-rust-buffer.c:TCPChecksum
Unexecuted instantiation: detect-threshold.c:TCPChecksum
Unexecuted instantiation: detect-tls.c:TCPChecksum
Unexecuted instantiation: detect-tls-cert-fingerprint.c:TCPChecksum
Unexecuted instantiation: detect-tls-cert-issuer.c:TCPChecksum
Unexecuted instantiation: detect-tls-certs.c:TCPChecksum
Unexecuted instantiation: detect-tls-cert-serial.c:TCPChecksum
Unexecuted instantiation: detect-tls-cert-subject.c:TCPChecksum
Unexecuted instantiation: detect-tls-cert-validity.c:TCPChecksum
Unexecuted instantiation: detect-tls-ja3-hash.c:TCPChecksum
Unexecuted instantiation: detect-tls-ja3s-hash.c:TCPChecksum
Unexecuted instantiation: detect-tls-ja3s-string.c:TCPChecksum
Unexecuted instantiation: detect-tls-ja3-string.c:TCPChecksum
Unexecuted instantiation: detect-tls-sni.c:TCPChecksum
Unexecuted instantiation: detect-tls-version.c:TCPChecksum
Unexecuted instantiation: detect-tls-random.c:TCPChecksum
Unexecuted instantiation: detect-tos.c:TCPChecksum
Unexecuted instantiation: detect-transform-casechange.c:TCPChecksum
Unexecuted instantiation: detect-transform-compress-whitespace.c:TCPChecksum
Unexecuted instantiation: detect-transform-dotprefix.c:TCPChecksum
Unexecuted instantiation: detect-transform-header-lowercase.c:TCPChecksum
Unexecuted instantiation: detect-transform-md5.c:TCPChecksum
Unexecuted instantiation: detect-transform-pcrexform.c:TCPChecksum
Unexecuted instantiation: detect-transform-sha1.c:TCPChecksum
Unexecuted instantiation: detect-transform-sha256.c:TCPChecksum
Unexecuted instantiation: detect-transform-strip-pseudo-headers.c:TCPChecksum
Unexecuted instantiation: detect-transform-strip-whitespace.c:TCPChecksum
Unexecuted instantiation: detect-transform-urldecode.c:TCPChecksum
Unexecuted instantiation: detect-transform-xor.c:TCPChecksum
Unexecuted instantiation: detect-ttl.c:TCPChecksum
Unexecuted instantiation: detect-udphdr.c:TCPChecksum
Unexecuted instantiation: detect-uricontent.c:TCPChecksum
Unexecuted instantiation: detect-urilen.c:TCPChecksum
Unexecuted instantiation: detect-within.c:TCPChecksum
Unexecuted instantiation: detect-xbits.c:TCPChecksum
Unexecuted instantiation: flow-bit.c:TCPChecksum
Unexecuted instantiation: flow-bypass.c:TCPChecksum
Unexecuted instantiation: flow-var.c:TCPChecksum
Unexecuted instantiation: flow-worker.c:TCPChecksum
Unexecuted instantiation: host-bit.c:TCPChecksum
Unexecuted instantiation: host.c:TCPChecksum
Unexecuted instantiation: host-queue.c:TCPChecksum
Unexecuted instantiation: host-storage.c:TCPChecksum
Unexecuted instantiation: ippair-bit.c:TCPChecksum
Unexecuted instantiation: ippair.c:TCPChecksum
Unexecuted instantiation: ippair-queue.c:TCPChecksum
Unexecuted instantiation: ippair-storage.c:TCPChecksum
Unexecuted instantiation: output.c:TCPChecksum
Unexecuted instantiation: output-eve-stream.c:TCPChecksum
Unexecuted instantiation: output-filestore.c:TCPChecksum
Unexecuted instantiation: output-json-alert.c:TCPChecksum
Unexecuted instantiation: output-json-anomaly.c:TCPChecksum
Unexecuted instantiation: output-json-bittorrent-dht.c:TCPChecksum
Unexecuted instantiation: output-json.c:TCPChecksum
Unexecuted instantiation: output-json-common.c:TCPChecksum
Unexecuted instantiation: output-json-dcerpc.c:TCPChecksum
Unexecuted instantiation: output-json-dhcp.c:TCPChecksum
Unexecuted instantiation: output-json-dnp3.c:TCPChecksum
Unexecuted instantiation: output-json-dnp3-objects.c:TCPChecksum
Unexecuted instantiation: output-json-dns.c:TCPChecksum
Unexecuted instantiation: output-json-drop.c:TCPChecksum
Unexecuted instantiation: output-json-email-common.c:TCPChecksum
Unexecuted instantiation: output-json-file.c:TCPChecksum
Unexecuted instantiation: output-json-flow.c:TCPChecksum
Unexecuted instantiation: output-json-frame.c:TCPChecksum
Unexecuted instantiation: output-json-ftp.c:TCPChecksum
Unexecuted instantiation: output-json-http2.c:TCPChecksum
Unexecuted instantiation: output-json-http.c:TCPChecksum
Unexecuted instantiation: output-json-ike.c:TCPChecksum
Unexecuted instantiation: output-json-krb5.c:TCPChecksum
Unexecuted instantiation: output-json-metadata.c:TCPChecksum
Unexecuted instantiation: output-json-modbus.c:TCPChecksum
Unexecuted instantiation: output-json-quic.c:TCPChecksum
Unexecuted instantiation: output-json-mqtt.c:TCPChecksum
Unexecuted instantiation: output-json-netflow.c:TCPChecksum
Unexecuted instantiation: output-json-nfs.c:TCPChecksum
Unexecuted instantiation: output-json-pgsql.c:TCPChecksum
Unexecuted instantiation: output-json-rdp.c:TCPChecksum
Unexecuted instantiation: output-json-rfb.c:TCPChecksum
Unexecuted instantiation: output-json-sip.c:TCPChecksum
Unexecuted instantiation: output-json-smb.c:TCPChecksum
Unexecuted instantiation: output-json-smtp.c:TCPChecksum
Unexecuted instantiation: output-json-snmp.c:TCPChecksum
Unexecuted instantiation: output-json-ssh.c:TCPChecksum
Unexecuted instantiation: output-json-stats.c:TCPChecksum
Unexecuted instantiation: output-json-template.c:TCPChecksum
Unexecuted instantiation: output-json-tftp.c:TCPChecksum
Unexecuted instantiation: output-json-tls.c:TCPChecksum
Unexecuted instantiation: output-eve-syslog.c:TCPChecksum
Unexecuted instantiation: output-eve-null.c:TCPChecksum
Unexecuted instantiation: output-packet.c:TCPChecksum
Unexecuted instantiation: output-stats.c:TCPChecksum
Unexecuted instantiation: output-streaming.c:TCPChecksum
Unexecuted instantiation: output-tx.c:TCPChecksum
Unexecuted instantiation: packet-queue.c:TCPChecksum
Unexecuted instantiation: respond-reject.c:TCPChecksum
Unexecuted instantiation: respond-reject-libnet11.c:TCPChecksum
Unexecuted instantiation: runmode-af-packet.c:TCPChecksum
Unexecuted instantiation: runmode-af-xdp.c:TCPChecksum
Unexecuted instantiation: runmode-dpdk.c:TCPChecksum
Unexecuted instantiation: runmode-erf-dag.c:TCPChecksum
Unexecuted instantiation: runmode-erf-file.c:TCPChecksum
Unexecuted instantiation: runmode-ipfw.c:TCPChecksum
Unexecuted instantiation: runmode-napatech.c:TCPChecksum
Unexecuted instantiation: runmode-netmap.c:TCPChecksum
Unexecuted instantiation: runmode-nflog.c:TCPChecksum
Unexecuted instantiation: runmode-nfq.c:TCPChecksum
Unexecuted instantiation: runmode-pcap.c:TCPChecksum
Unexecuted instantiation: runmode-pcap-file.c:TCPChecksum
Unexecuted instantiation: runmode-pfring.c:TCPChecksum
Unexecuted instantiation: rust-context.c:TCPChecksum
Unexecuted instantiation: source-af-packet.c:TCPChecksum
Unexecuted instantiation: source-af-xdp.c:TCPChecksum
Unexecuted instantiation: source-dpdk.c:TCPChecksum
Unexecuted instantiation: source-erf-dag.c:TCPChecksum
Unexecuted instantiation: source-erf-file.c:TCPChecksum
Unexecuted instantiation: source-ipfw.c:TCPChecksum
Unexecuted instantiation: source-napatech.c:TCPChecksum
Unexecuted instantiation: source-netmap.c:TCPChecksum
Unexecuted instantiation: source-nflog.c:TCPChecksum
Unexecuted instantiation: source-nfq.c:TCPChecksum
Unexecuted instantiation: source-pcap.c:TCPChecksum
Unexecuted instantiation: source-pcap-file.c:TCPChecksum
Unexecuted instantiation: source-pcap-file-directory-helper.c:TCPChecksum
Unexecuted instantiation: source-pcap-file-helper.c:TCPChecksum
Unexecuted instantiation: source-pfring.c:TCPChecksum
Unexecuted instantiation: source-windivert.c:TCPChecksum
Unexecuted instantiation: stream-tcp-inline.c:TCPChecksum
Unexecuted instantiation: tmqh-simple.c:TCPChecksum
Unexecuted instantiation: util-action.c:TCPChecksum
Unexecuted instantiation: util-classification-config.c:TCPChecksum
Unexecuted instantiation: util-detect.c:TCPChecksum
Unexecuted instantiation: util-file-decompression.c:TCPChecksum
Unexecuted instantiation: util-file-swf-decompression.c:TCPChecksum
Unexecuted instantiation: util-logopenfile.c:TCPChecksum
Unexecuted instantiation: util-mpm-ac-bs.c:TCPChecksum
Unexecuted instantiation: util-mpm-ac.c:TCPChecksum
Unexecuted instantiation: util-mpm-ac-ks.c:TCPChecksum
Unexecuted instantiation: util-reference-config.c:TCPChecksum
Unexecuted instantiation: util-rule-vars.c:TCPChecksum
Unexecuted instantiation: util-runmodes.c:TCPChecksum
Unexecuted instantiation: util-port-interval-tree.c:TCPChecksum
Unexecuted instantiation: alert-debuglog.c:TCPChecksum
Unexecuted instantiation: alert-fastlog.c:TCPChecksum
Unexecuted instantiation: alert-syslog.c:TCPChecksum
Unexecuted instantiation: app-layer-htp-body.c:TCPChecksum
Unexecuted instantiation: app-layer-htp-xff.c:TCPChecksum
Unexecuted instantiation: app-layer-register.c:TCPChecksum
Unexecuted instantiation: decode-chdlc.c:TCPChecksum
Unexecuted instantiation: decode-esp.c:TCPChecksum
Unexecuted instantiation: decode-gre.c:TCPChecksum
Unexecuted instantiation: decode-null.c:TCPChecksum
Unexecuted instantiation: decode-raw.c:TCPChecksum
Unexecuted instantiation: decode-sll.c:TCPChecksum
Unexecuted instantiation: detect-app-layer-event.c:TCPChecksum
Unexecuted instantiation: detect-app-layer-protocol.c:TCPChecksum
Unexecuted instantiation: detect-asn1.c:TCPChecksum
Unexecuted instantiation: detect-base64-data.c:TCPChecksum
Unexecuted instantiation: detect-base64-decode.c:TCPChecksum
Unexecuted instantiation: detect-bsize.c:TCPChecksum
Unexecuted instantiation: detect-bypass.c:TCPChecksum
Unexecuted instantiation: detect-byte.c:TCPChecksum
Unexecuted instantiation: detect-byte-extract.c:TCPChecksum
Unexecuted instantiation: detect-bytejump.c:TCPChecksum
Unexecuted instantiation: detect-bytemath.c:TCPChecksum
Unexecuted instantiation: detect-bytetest.c:TCPChecksum
Unexecuted instantiation: detect.c:TCPChecksum
Unexecuted instantiation: detect-cipservice.c:TCPChecksum
Unexecuted instantiation: detect-classtype.c:TCPChecksum
Unexecuted instantiation: detect-config.c:TCPChecksum
detect-csum.c:TCPChecksum
Line
Count
Source
195
13.7k
{
196
13.7k
    uint16_t pad = 0;
197
13.7k
    uint32_t csum = init;
198
199
13.7k
    csum += shdr[0] + shdr[1] + shdr[2] + shdr[3] + htons(6) + htons(tlen);
200
201
13.7k
    csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
202
13.7k
        pkt[7] + pkt[9];
203
204
13.7k
    tlen -= 20;
205
13.7k
    pkt += 10;
206
207
39.3k
    while (tlen >= 32) {
208
25.5k
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
209
25.5k
            pkt[7] +
210
25.5k
            pkt[8] +
211
25.5k
            pkt[9] + pkt[10] + pkt[11] + pkt[12] + pkt[13] +
212
25.5k
            pkt[14] + pkt[15];
213
25.5k
        tlen -= 32;
214
25.5k
        pkt += 16;
215
25.5k
    }
216
217
28.3k
    while(tlen >= 8) {
218
14.6k
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3];
219
14.6k
        tlen -= 8;
220
14.6k
        pkt += 4;
221
14.6k
    }
222
223
22.8k
    while(tlen >= 4) {
224
9.06k
        csum += pkt[0] + pkt[1];
225
9.06k
        tlen -= 4;
226
9.06k
        pkt += 2;
227
9.06k
    }
228
229
16.4k
    while (tlen > 1) {
230
2.70k
        csum += pkt[0];
231
2.70k
        pkt += 1;
232
2.70k
        tlen -= 2;
233
2.70k
    }
234
235
13.7k
    if (tlen == 1) {
236
4.87k
        *(uint8_t *)(&pad) = (*(uint8_t *)pkt);
237
4.87k
        csum += pad;
238
4.87k
    }
239
240
13.7k
    csum = (csum >> 16) + (csum & 0x0000FFFF);
241
13.7k
    csum += (csum >> 16);
242
243
13.7k
    return (uint16_t)~csum;
244
13.7k
}
Unexecuted instantiation: detect-datarep.c:TCPChecksum
Unexecuted instantiation: detect-dataset.c:TCPChecksum
Unexecuted instantiation: detect-dce-iface.c:TCPChecksum
Unexecuted instantiation: detect-dce-opnum.c:TCPChecksum
Unexecuted instantiation: detect-dce-stub-data.c:TCPChecksum
Unexecuted instantiation: detect-depth.c:TCPChecksum
Unexecuted instantiation: detect-detection-filter.c:TCPChecksum
Unexecuted instantiation: detect-distance.c:TCPChecksum
Unexecuted instantiation: detect-dnp3.c:TCPChecksum
Unexecuted instantiation: detect-dns-opcode.c:TCPChecksum
Unexecuted instantiation: detect-dns-query.c:TCPChecksum
Unexecuted instantiation: detect-engine-analyzer.c:TCPChecksum
Unexecuted instantiation: detect-engine-enip.c:TCPChecksum
Unexecuted instantiation: detect-engine-event.c:TCPChecksum
Unexecuted instantiation: detect-engine-file.c:TCPChecksum
Unexecuted instantiation: detect-file-hash-common.c:TCPChecksum
Unexecuted instantiation: detect-http-accept.c:TCPChecksum
Unexecuted instantiation: detect-http-accept-enc.c:TCPChecksum
Unexecuted instantiation: detect-http-accept-lang.c:TCPChecksum
Unexecuted instantiation: detect-http-connection.c:TCPChecksum
Unexecuted instantiation: detect-http-content-len.c:TCPChecksum
Unexecuted instantiation: detect-http-content-type.c:TCPChecksum
Unexecuted instantiation: log-httplog.c:TCPChecksum
Unexecuted instantiation: log-pcap.c:TCPChecksum
Unexecuted instantiation: log-stats.c:TCPChecksum
Unexecuted instantiation: log-tcp-data.c:TCPChecksum
Unexecuted instantiation: log-tlslog.c:TCPChecksum
Unexecuted instantiation: log-tlsstore.c:TCPChecksum
Unexecuted instantiation: stream.c:TCPChecksum
Unexecuted instantiation: fuzz_sigpcap_aware.c:TCPChecksum
Unexecuted instantiation: util-unittest-helper.c:TCPChecksum
Unexecuted instantiation: fuzz_decodepcapfile.c:TCPChecksum
Unexecuted instantiation: fuzz_mimedecparseline.c:TCPChecksum
Unexecuted instantiation: fuzz_siginit.c:TCPChecksum
Unexecuted instantiation: fuzz_sigpcap.c:TCPChecksum
Unexecuted instantiation: fuzz_applayerprotodetectgetproto.c:TCPChecksum
Unexecuted instantiation: fuzz_predefpcap_aware.c:TCPChecksum
245
246
/**
247
 * \brief Calculate or validate the checksum for the TCP packet
248
 *
249
 * \param shdr Pointer to source address field from the IPV6 packet.  Used as a
250
 *             part of the psuedoheader for computing the checksum
251
 * \param pkt  Pointer to the start of the TCP packet
252
 * \param tlen Total length of the TCP packet(header + payload)
253
 * \param init The current checksum if validating, 0 if generating.
254
 *
255
 * \retval csum For validation 0 will be returned for success, for calculation
256
 *    this will be the checksum.
257
 */
258
static inline uint16_t TCPV6Checksum(
259
        const uint16_t *shdr, const uint16_t *pkt, uint16_t tlen, uint16_t init)
260
111
{
261
111
    uint16_t pad = 0;
262
111
    uint32_t csum = init;
263
264
111
    csum += shdr[0] + shdr[1] + shdr[2] + shdr[3] + shdr[4] + shdr[5] +
265
111
        shdr[6] +  shdr[7] + shdr[8] + shdr[9] + shdr[10] + shdr[11] +
266
111
        shdr[12] + shdr[13] + shdr[14] + shdr[15] + htons(6) + htons(tlen);
267
268
111
    csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
269
111
        pkt[7] + pkt[9];
270
271
111
    tlen -= 20;
272
111
    pkt += 10;
273
274
1.37k
    while (tlen >= 32) {
275
1.26k
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
276
1.26k
            pkt[7] + pkt[8] + pkt[9] + pkt[10] + pkt[11] + pkt[12] + pkt[13] +
277
1.26k
            pkt[14] + pkt[15];
278
1.26k
        tlen -= 32;
279
1.26k
        pkt += 16;
280
1.26k
    }
281
282
276
    while(tlen >= 8) {
283
165
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3];
284
165
        tlen -= 8;
285
165
        pkt += 4;
286
165
    }
287
288
185
    while(tlen >= 4) {
289
74
        csum += pkt[0] + pkt[1];
290
74
        tlen -= 4;
291
74
        pkt += 2;
292
74
    }
293
294
130
    while (tlen > 1) {
295
19
        csum += pkt[0];
296
19
        pkt += 1;
297
19
        tlen -= 2;
298
19
    }
299
300
111
    if (tlen == 1) {
301
20
        *(uint8_t *)(&pad) = (*(uint8_t *)pkt);
302
20
        csum += pad;
303
20
    }
304
305
111
    csum = (csum >> 16) + (csum & 0x0000FFFF);
306
111
    csum += (csum >> 16);
307
308
111
    return (uint16_t)~csum;
309
111
}
Unexecuted instantiation: fuzz_applayerparserparse.c:TCPV6Checksum
Unexecuted instantiation: app-layer-parser.c:TCPV6Checksum
Unexecuted instantiation: app-layer-rdp.c:TCPV6Checksum
Unexecuted instantiation: app-layer-rfb.c:TCPV6Checksum
Unexecuted instantiation: app-layer-sip.c:TCPV6Checksum
Unexecuted instantiation: app-layer-smb.c:TCPV6Checksum
Unexecuted instantiation: app-layer-smtp.c:TCPV6Checksum
Unexecuted instantiation: app-layer-snmp.c:TCPV6Checksum
Unexecuted instantiation: app-layer-ssh.c:TCPV6Checksum
Unexecuted instantiation: app-layer-ssl.c:TCPV6Checksum
Unexecuted instantiation: app-layer-tftp.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-state.c:TCPV6Checksum
Unexecuted instantiation: flow.c:TCPV6Checksum
Unexecuted instantiation: flow-hash.c:TCPV6Checksum
Unexecuted instantiation: flow-manager.c:TCPV6Checksum
Unexecuted instantiation: flow-queue.c:TCPV6Checksum
Unexecuted instantiation: flow-spare-pool.c:TCPV6Checksum
Unexecuted instantiation: flow-storage.c:TCPV6Checksum
Unexecuted instantiation: flow-timeout.c:TCPV6Checksum
Unexecuted instantiation: flow-util.c:TCPV6Checksum
Unexecuted instantiation: host-timeout.c:TCPV6Checksum
Unexecuted instantiation: ippair-timeout.c:TCPV6Checksum
Unexecuted instantiation: output-file.c:TCPV6Checksum
Unexecuted instantiation: output-filedata.c:TCPV6Checksum
Unexecuted instantiation: output-flow.c:TCPV6Checksum
Unexecuted instantiation: packet.c:TCPV6Checksum
Unexecuted instantiation: pkt-var.c:TCPV6Checksum
Unexecuted instantiation: reputation.c:TCPV6Checksum
Unexecuted instantiation: runmodes.c:TCPV6Checksum
Unexecuted instantiation: runmode-unix-socket.c:TCPV6Checksum
Unexecuted instantiation: runmode-windivert.c:TCPV6Checksum
Unexecuted instantiation: stream-tcp.c:TCPV6Checksum
Unexecuted instantiation: stream-tcp-list.c:TCPV6Checksum
Unexecuted instantiation: stream-tcp-reassemble.c:TCPV6Checksum
Unexecuted instantiation: stream-tcp-sack.c:TCPV6Checksum
Unexecuted instantiation: suricata.c:TCPV6Checksum
Unexecuted instantiation: tm-modules.c:TCPV6Checksum
Unexecuted instantiation: tmqh-flow.c:TCPV6Checksum
Unexecuted instantiation: tmqh-packetpool.c:TCPV6Checksum
Unexecuted instantiation: tm-queuehandlers.c:TCPV6Checksum
Unexecuted instantiation: tm-threads.c:TCPV6Checksum
Unexecuted instantiation: unix-manager.c:TCPV6Checksum
Unexecuted instantiation: util-checksum.c:TCPV6Checksum
Unexecuted instantiation: util-datalink.c:TCPV6Checksum
Unexecuted instantiation: util-debug.c:TCPV6Checksum
Unexecuted instantiation: util-decode-mime.c:TCPV6Checksum
Unexecuted instantiation: util-exception-policy.c:TCPV6Checksum
Unexecuted instantiation: util-file.c:TCPV6Checksum
Unexecuted instantiation: util-host-os-info.c:TCPV6Checksum
Unexecuted instantiation: util-ioctl.c:TCPV6Checksum
Unexecuted instantiation: util-ja3.c:TCPV6Checksum
Unexecuted instantiation: util-landlock.c:TCPV6Checksum
Unexecuted instantiation: util-macset.c:TCPV6Checksum
Unexecuted instantiation: util-mpm.c:TCPV6Checksum
Unexecuted instantiation: util-print.c:TCPV6Checksum
Unexecuted instantiation: util-running-modes.c:TCPV6Checksum
Unexecuted instantiation: util-streaming-buffer.c:TCPV6Checksum
Unexecuted instantiation: util-threshold-config.c:TCPV6Checksum
Unexecuted instantiation: util-time.c:TCPV6Checksum
Unexecuted instantiation: util-var.c:TCPV6Checksum
Unexecuted instantiation: util-var-name.c:TCPV6Checksum
Unexecuted instantiation: app-layer.c:TCPV6Checksum
Unexecuted instantiation: app-layer-detect-proto.c:TCPV6Checksum
Unexecuted instantiation: app-layer-dnp3.c:TCPV6Checksum
Unexecuted instantiation: app-layer-dnp3-objects.c:TCPV6Checksum
Unexecuted instantiation: app-layer-enip.c:TCPV6Checksum
Unexecuted instantiation: app-layer-enip-common.c:TCPV6Checksum
Unexecuted instantiation: app-layer-events.c:TCPV6Checksum
Unexecuted instantiation: app-layer-expectation.c:TCPV6Checksum
Unexecuted instantiation: app-layer-ftp.c:TCPV6Checksum
Unexecuted instantiation: app-layer-frames.c:TCPV6Checksum
Unexecuted instantiation: app-layer-htp.c:TCPV6Checksum
Unexecuted instantiation: app-layer-htp-file.c:TCPV6Checksum
Unexecuted instantiation: app-layer-htp-range.c:TCPV6Checksum
Unexecuted instantiation: app-layer-http2.c:TCPV6Checksum
Unexecuted instantiation: app-layer-ike.c:TCPV6Checksum
Unexecuted instantiation: app-layer-krb5.c:TCPV6Checksum
Unexecuted instantiation: app-layer-modbus.c:TCPV6Checksum
Unexecuted instantiation: app-layer-quic.c:TCPV6Checksum
Unexecuted instantiation: app-layer-mqtt.c:TCPV6Checksum
Unexecuted instantiation: app-layer-nfs-tcp.c:TCPV6Checksum
Unexecuted instantiation: app-layer-nfs-udp.c:TCPV6Checksum
Unexecuted instantiation: app-layer-ntp.c:TCPV6Checksum
Unexecuted instantiation: counters.c:TCPV6Checksum
Unexecuted instantiation: datasets-string.c:TCPV6Checksum
Unexecuted instantiation: decode.c:TCPV6Checksum
Unexecuted instantiation: decode-erspan.c:TCPV6Checksum
Unexecuted instantiation: decode-ethernet.c:TCPV6Checksum
Unexecuted instantiation: decode-geneve.c:TCPV6Checksum
Unexecuted instantiation: decode-icmpv4.c:TCPV6Checksum
Unexecuted instantiation: decode-icmpv6.c:TCPV6Checksum
Unexecuted instantiation: decode-ipv4.c:TCPV6Checksum
Unexecuted instantiation: decode-ipv6.c:TCPV6Checksum
Unexecuted instantiation: decode-mpls.c:TCPV6Checksum
Unexecuted instantiation: decode-nsh.c:TCPV6Checksum
Unexecuted instantiation: decode-ppp.c:TCPV6Checksum
Unexecuted instantiation: decode-pppoe.c:TCPV6Checksum
Unexecuted instantiation: decode-sctp.c:TCPV6Checksum
Unexecuted instantiation: decode-tcp.c:TCPV6Checksum
Unexecuted instantiation: decode-teredo.c:TCPV6Checksum
Unexecuted instantiation: decode-udp.c:TCPV6Checksum
Unexecuted instantiation: decode-vlan.c:TCPV6Checksum
Unexecuted instantiation: decode-vntag.c:TCPV6Checksum
Unexecuted instantiation: decode-vxlan.c:TCPV6Checksum
Unexecuted instantiation: defrag.c:TCPV6Checksum
Unexecuted instantiation: defrag-config.c:TCPV6Checksum
Unexecuted instantiation: defrag-hash.c:TCPV6Checksum
Unexecuted instantiation: defrag-queue.c:TCPV6Checksum
Unexecuted instantiation: defrag-timeout.c:TCPV6Checksum
Unexecuted instantiation: detect-content.c:TCPV6Checksum
Unexecuted instantiation: detect-dsize.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-address.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-address-ipv4.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-address-ipv6.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-alert.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-build.c:TCPV6Checksum
Unexecuted instantiation: detect-engine.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-content-inspection.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-frame.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-iponly.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-loader.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-mpm.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-payload.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-port.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-prefilter.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-prefilter-common.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-proto.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-register.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-siggroup.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-sigorder.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-tag.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-threshold.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-uint.c:TCPV6Checksum
Unexecuted instantiation: detect-fast-pattern.c:TCPV6Checksum
Unexecuted instantiation: detect-file-data.c:TCPV6Checksum
Unexecuted instantiation: detect-filemagic.c:TCPV6Checksum
Unexecuted instantiation: detect-filemd5.c:TCPV6Checksum
Unexecuted instantiation: detect-filename.c:TCPV6Checksum
Unexecuted instantiation: detect-filesha1.c:TCPV6Checksum
Unexecuted instantiation: detect-filesha256.c:TCPV6Checksum
Unexecuted instantiation: detect-filesize.c:TCPV6Checksum
Unexecuted instantiation: detect-filestore.c:TCPV6Checksum
Unexecuted instantiation: detect-flowbits.c:TCPV6Checksum
Unexecuted instantiation: detect-flow.c:TCPV6Checksum
Unexecuted instantiation: detect-flow-age.c:TCPV6Checksum
Unexecuted instantiation: detect-flowint.c:TCPV6Checksum
Unexecuted instantiation: detect-flowvar.c:TCPV6Checksum
Unexecuted instantiation: detect-fragbits.c:TCPV6Checksum
Unexecuted instantiation: detect-fragoffset.c:TCPV6Checksum
Unexecuted instantiation: detect-frame.c:TCPV6Checksum
Unexecuted instantiation: detect-ftpbounce.c:TCPV6Checksum
Unexecuted instantiation: detect-ftpdata.c:TCPV6Checksum
Unexecuted instantiation: detect-geoip.c:TCPV6Checksum
Unexecuted instantiation: detect-gid.c:TCPV6Checksum
Unexecuted instantiation: detect-hostbits.c:TCPV6Checksum
Unexecuted instantiation: detect-http2.c:TCPV6Checksum
Unexecuted instantiation: detect-http-client-body.c:TCPV6Checksum
Unexecuted instantiation: detect-http-cookie.c:TCPV6Checksum
Unexecuted instantiation: detect-http-header.c:TCPV6Checksum
Unexecuted instantiation: detect-http-header-common.c:TCPV6Checksum
Unexecuted instantiation: detect-http-header-names.c:TCPV6Checksum
Unexecuted instantiation: detect-http-host.c:TCPV6Checksum
Unexecuted instantiation: detect-http-location.c:TCPV6Checksum
Unexecuted instantiation: detect-http-method.c:TCPV6Checksum
Unexecuted instantiation: detect-http-protocol.c:TCPV6Checksum
Unexecuted instantiation: detect-http-raw-header.c:TCPV6Checksum
Unexecuted instantiation: detect-http-referer.c:TCPV6Checksum
Unexecuted instantiation: detect-http-request-line.c:TCPV6Checksum
Unexecuted instantiation: detect-http-response-line.c:TCPV6Checksum
Unexecuted instantiation: detect-http-server-body.c:TCPV6Checksum
Unexecuted instantiation: detect-http-server.c:TCPV6Checksum
Unexecuted instantiation: detect-http-start.c:TCPV6Checksum
Unexecuted instantiation: detect-http-stat-code.c:TCPV6Checksum
Unexecuted instantiation: detect-http-stat-msg.c:TCPV6Checksum
Unexecuted instantiation: detect-http-ua.c:TCPV6Checksum
Unexecuted instantiation: detect-http-uri.c:TCPV6Checksum
Unexecuted instantiation: detect-icmp-id.c:TCPV6Checksum
Unexecuted instantiation: detect-icmp-seq.c:TCPV6Checksum
Unexecuted instantiation: detect-icmpv4hdr.c:TCPV6Checksum
Unexecuted instantiation: detect-icmpv6hdr.c:TCPV6Checksum
Unexecuted instantiation: detect-icmpv6-mtu.c:TCPV6Checksum
Unexecuted instantiation: detect-icode.c:TCPV6Checksum
Unexecuted instantiation: detect-id.c:TCPV6Checksum
Unexecuted instantiation: detect-ike-exch-type.c:TCPV6Checksum
Unexecuted instantiation: detect-ike-spi.c:TCPV6Checksum
Unexecuted instantiation: detect-ike-vendor.c:TCPV6Checksum
Unexecuted instantiation: detect-ike-chosen-sa.c:TCPV6Checksum
Unexecuted instantiation: detect-ike-key-exchange-payload-length.c:TCPV6Checksum
Unexecuted instantiation: detect-ike-nonce-payload-length.c:TCPV6Checksum
Unexecuted instantiation: detect-ike-nonce-payload.c:TCPV6Checksum
Unexecuted instantiation: detect-ike-key-exchange-payload.c:TCPV6Checksum
Unexecuted instantiation: detect-ipaddr.c:TCPV6Checksum
Unexecuted instantiation: detect-ipopts.c:TCPV6Checksum
Unexecuted instantiation: detect-ipproto.c:TCPV6Checksum
Unexecuted instantiation: detect-iprep.c:TCPV6Checksum
Unexecuted instantiation: detect-ipv4hdr.c:TCPV6Checksum
Unexecuted instantiation: detect-ipv6hdr.c:TCPV6Checksum
Unexecuted instantiation: detect-isdataat.c:TCPV6Checksum
Unexecuted instantiation: detect-itype.c:TCPV6Checksum
Unexecuted instantiation: detect-ja4-hash.c:TCPV6Checksum
Unexecuted instantiation: detect-krb5-cname.c:TCPV6Checksum
Unexecuted instantiation: detect-krb5-errcode.c:TCPV6Checksum
Unexecuted instantiation: detect-krb5-msgtype.c:TCPV6Checksum
Unexecuted instantiation: detect-krb5-sname.c:TCPV6Checksum
Unexecuted instantiation: detect-krb5-ticket-encryption.c:TCPV6Checksum
Unexecuted instantiation: detect-l3proto.c:TCPV6Checksum
Unexecuted instantiation: detect-lua.c:TCPV6Checksum
Unexecuted instantiation: detect-mark.c:TCPV6Checksum
Unexecuted instantiation: detect-metadata.c:TCPV6Checksum
Unexecuted instantiation: detect-modbus.c:TCPV6Checksum
Unexecuted instantiation: detect-quic-sni.c:TCPV6Checksum
Unexecuted instantiation: detect-quic-ua.c:TCPV6Checksum
Unexecuted instantiation: detect-quic-version.c:TCPV6Checksum
Unexecuted instantiation: detect-quic-cyu-hash.c:TCPV6Checksum
Unexecuted instantiation: detect-quic-cyu-string.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-connack-sessionpresent.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-connect-clientid.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-connect-flags.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-connect-password.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-connect-username.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-connect-willmessage.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-connect-willtopic.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-flags.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-protocol-version.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-publish-message.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-publish-topic.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-qos.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-reason-code.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-subscribe-topic.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-type.c:TCPV6Checksum
Unexecuted instantiation: detect-mqtt-unsubscribe-topic.c:TCPV6Checksum
Unexecuted instantiation: detect-msg.c:TCPV6Checksum
Unexecuted instantiation: detect-nfs-procedure.c:TCPV6Checksum
Unexecuted instantiation: detect-nfs-version.c:TCPV6Checksum
Unexecuted instantiation: detect-noalert.c:TCPV6Checksum
Unexecuted instantiation: detect-nocase.c:TCPV6Checksum
Unexecuted instantiation: detect-offset.c:TCPV6Checksum
Unexecuted instantiation: detect-parse.c:TCPV6Checksum
Unexecuted instantiation: detect-pcre.c:TCPV6Checksum
Unexecuted instantiation: detect-pkt-data.c:TCPV6Checksum
Unexecuted instantiation: detect-pktvar.c:TCPV6Checksum
Unexecuted instantiation: detect-prefilter.c:TCPV6Checksum
Unexecuted instantiation: detect-priority.c:TCPV6Checksum
Unexecuted instantiation: detect-rawbytes.c:TCPV6Checksum
Unexecuted instantiation: detect-reference.c:TCPV6Checksum
Unexecuted instantiation: detect-replace.c:TCPV6Checksum
Unexecuted instantiation: detect-requires.c:TCPV6Checksum
Unexecuted instantiation: detect-rev.c:TCPV6Checksum
Unexecuted instantiation: detect-rfb-name.c:TCPV6Checksum
Unexecuted instantiation: detect-rfb-secresult.c:TCPV6Checksum
Unexecuted instantiation: detect-rfb-sectype.c:TCPV6Checksum
Unexecuted instantiation: detect-rpc.c:TCPV6Checksum
Unexecuted instantiation: detect-sameip.c:TCPV6Checksum
Unexecuted instantiation: detect-sid.c:TCPV6Checksum
Unexecuted instantiation: detect-sip-method.c:TCPV6Checksum
Unexecuted instantiation: detect-sip-protocol.c:TCPV6Checksum
Unexecuted instantiation: detect-sip-request-line.c:TCPV6Checksum
Unexecuted instantiation: detect-sip-response-line.c:TCPV6Checksum
Unexecuted instantiation: detect-sip-stat-code.c:TCPV6Checksum
Unexecuted instantiation: detect-sip-stat-msg.c:TCPV6Checksum
Unexecuted instantiation: detect-sip-uri.c:TCPV6Checksum
Unexecuted instantiation: detect-smb-ntlmssp.c:TCPV6Checksum
Unexecuted instantiation: detect-smb-share.c:TCPV6Checksum
Unexecuted instantiation: detect-snmp-community.c:TCPV6Checksum
Unexecuted instantiation: detect-snmp-pdu_type.c:TCPV6Checksum
Unexecuted instantiation: detect-snmp-usm.c:TCPV6Checksum
Unexecuted instantiation: detect-snmp-version.c:TCPV6Checksum
Unexecuted instantiation: detect-dhcp-leasetime.c:TCPV6Checksum
Unexecuted instantiation: detect-dhcp-rebinding-time.c:TCPV6Checksum
Unexecuted instantiation: detect-dhcp-renewal-time.c:TCPV6Checksum
Unexecuted instantiation: detect-ssh-hassh.c:TCPV6Checksum
Unexecuted instantiation: detect-ssh-hassh-server.c:TCPV6Checksum
Unexecuted instantiation: detect-ssh-hassh-server-string.c:TCPV6Checksum
Unexecuted instantiation: detect-ssh-hassh-string.c:TCPV6Checksum
Unexecuted instantiation: detect-ssh-proto.c:TCPV6Checksum
Unexecuted instantiation: detect-ssh-proto-version.c:TCPV6Checksum
Unexecuted instantiation: detect-ssh-software.c:TCPV6Checksum
Unexecuted instantiation: detect-ssh-software-version.c:TCPV6Checksum
Unexecuted instantiation: detect-ssl-state.c:TCPV6Checksum
Unexecuted instantiation: detect-ssl-version.c:TCPV6Checksum
Unexecuted instantiation: detect-stream_size.c:TCPV6Checksum
Unexecuted instantiation: detect-tag.c:TCPV6Checksum
Unexecuted instantiation: detect-target.c:TCPV6Checksum
Unexecuted instantiation: detect-tcp-ack.c:TCPV6Checksum
Unexecuted instantiation: detect-tcp-flags.c:TCPV6Checksum
Unexecuted instantiation: detect-tcphdr.c:TCPV6Checksum
Unexecuted instantiation: detect-tcpmss.c:TCPV6Checksum
Unexecuted instantiation: detect-tcp-seq.c:TCPV6Checksum
Unexecuted instantiation: detect-tcp-window.c:TCPV6Checksum
Unexecuted instantiation: detect-template2.c:TCPV6Checksum
Unexecuted instantiation: detect-template.c:TCPV6Checksum
Unexecuted instantiation: detect-template-rust-buffer.c:TCPV6Checksum
Unexecuted instantiation: detect-threshold.c:TCPV6Checksum
Unexecuted instantiation: detect-tls.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-cert-fingerprint.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-cert-issuer.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-certs.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-cert-serial.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-cert-subject.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-cert-validity.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-ja3-hash.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-ja3s-hash.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-ja3s-string.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-ja3-string.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-sni.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-version.c:TCPV6Checksum
Unexecuted instantiation: detect-tls-random.c:TCPV6Checksum
Unexecuted instantiation: detect-tos.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-casechange.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-compress-whitespace.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-dotprefix.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-header-lowercase.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-md5.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-pcrexform.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-sha1.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-sha256.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-strip-pseudo-headers.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-strip-whitespace.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-urldecode.c:TCPV6Checksum
Unexecuted instantiation: detect-transform-xor.c:TCPV6Checksum
Unexecuted instantiation: detect-ttl.c:TCPV6Checksum
Unexecuted instantiation: detect-udphdr.c:TCPV6Checksum
Unexecuted instantiation: detect-uricontent.c:TCPV6Checksum
Unexecuted instantiation: detect-urilen.c:TCPV6Checksum
Unexecuted instantiation: detect-within.c:TCPV6Checksum
Unexecuted instantiation: detect-xbits.c:TCPV6Checksum
Unexecuted instantiation: flow-bit.c:TCPV6Checksum
Unexecuted instantiation: flow-bypass.c:TCPV6Checksum
Unexecuted instantiation: flow-var.c:TCPV6Checksum
Unexecuted instantiation: flow-worker.c:TCPV6Checksum
Unexecuted instantiation: host-bit.c:TCPV6Checksum
Unexecuted instantiation: host.c:TCPV6Checksum
Unexecuted instantiation: host-queue.c:TCPV6Checksum
Unexecuted instantiation: host-storage.c:TCPV6Checksum
Unexecuted instantiation: ippair-bit.c:TCPV6Checksum
Unexecuted instantiation: ippair.c:TCPV6Checksum
Unexecuted instantiation: ippair-queue.c:TCPV6Checksum
Unexecuted instantiation: ippair-storage.c:TCPV6Checksum
Unexecuted instantiation: output.c:TCPV6Checksum
Unexecuted instantiation: output-eve-stream.c:TCPV6Checksum
Unexecuted instantiation: output-filestore.c:TCPV6Checksum
Unexecuted instantiation: output-json-alert.c:TCPV6Checksum
Unexecuted instantiation: output-json-anomaly.c:TCPV6Checksum
Unexecuted instantiation: output-json-bittorrent-dht.c:TCPV6Checksum
Unexecuted instantiation: output-json.c:TCPV6Checksum
Unexecuted instantiation: output-json-common.c:TCPV6Checksum
Unexecuted instantiation: output-json-dcerpc.c:TCPV6Checksum
Unexecuted instantiation: output-json-dhcp.c:TCPV6Checksum
Unexecuted instantiation: output-json-dnp3.c:TCPV6Checksum
Unexecuted instantiation: output-json-dnp3-objects.c:TCPV6Checksum
Unexecuted instantiation: output-json-dns.c:TCPV6Checksum
Unexecuted instantiation: output-json-drop.c:TCPV6Checksum
Unexecuted instantiation: output-json-email-common.c:TCPV6Checksum
Unexecuted instantiation: output-json-file.c:TCPV6Checksum
Unexecuted instantiation: output-json-flow.c:TCPV6Checksum
Unexecuted instantiation: output-json-frame.c:TCPV6Checksum
Unexecuted instantiation: output-json-ftp.c:TCPV6Checksum
Unexecuted instantiation: output-json-http2.c:TCPV6Checksum
Unexecuted instantiation: output-json-http.c:TCPV6Checksum
Unexecuted instantiation: output-json-ike.c:TCPV6Checksum
Unexecuted instantiation: output-json-krb5.c:TCPV6Checksum
Unexecuted instantiation: output-json-metadata.c:TCPV6Checksum
Unexecuted instantiation: output-json-modbus.c:TCPV6Checksum
Unexecuted instantiation: output-json-quic.c:TCPV6Checksum
Unexecuted instantiation: output-json-mqtt.c:TCPV6Checksum
Unexecuted instantiation: output-json-netflow.c:TCPV6Checksum
Unexecuted instantiation: output-json-nfs.c:TCPV6Checksum
Unexecuted instantiation: output-json-pgsql.c:TCPV6Checksum
Unexecuted instantiation: output-json-rdp.c:TCPV6Checksum
Unexecuted instantiation: output-json-rfb.c:TCPV6Checksum
Unexecuted instantiation: output-json-sip.c:TCPV6Checksum
Unexecuted instantiation: output-json-smb.c:TCPV6Checksum
Unexecuted instantiation: output-json-smtp.c:TCPV6Checksum
Unexecuted instantiation: output-json-snmp.c:TCPV6Checksum
Unexecuted instantiation: output-json-ssh.c:TCPV6Checksum
Unexecuted instantiation: output-json-stats.c:TCPV6Checksum
Unexecuted instantiation: output-json-template.c:TCPV6Checksum
Unexecuted instantiation: output-json-tftp.c:TCPV6Checksum
Unexecuted instantiation: output-json-tls.c:TCPV6Checksum
Unexecuted instantiation: output-eve-syslog.c:TCPV6Checksum
Unexecuted instantiation: output-eve-null.c:TCPV6Checksum
Unexecuted instantiation: output-packet.c:TCPV6Checksum
Unexecuted instantiation: output-stats.c:TCPV6Checksum
Unexecuted instantiation: output-streaming.c:TCPV6Checksum
Unexecuted instantiation: output-tx.c:TCPV6Checksum
Unexecuted instantiation: packet-queue.c:TCPV6Checksum
Unexecuted instantiation: respond-reject.c:TCPV6Checksum
Unexecuted instantiation: respond-reject-libnet11.c:TCPV6Checksum
Unexecuted instantiation: runmode-af-packet.c:TCPV6Checksum
Unexecuted instantiation: runmode-af-xdp.c:TCPV6Checksum
Unexecuted instantiation: runmode-dpdk.c:TCPV6Checksum
Unexecuted instantiation: runmode-erf-dag.c:TCPV6Checksum
Unexecuted instantiation: runmode-erf-file.c:TCPV6Checksum
Unexecuted instantiation: runmode-ipfw.c:TCPV6Checksum
Unexecuted instantiation: runmode-napatech.c:TCPV6Checksum
Unexecuted instantiation: runmode-netmap.c:TCPV6Checksum
Unexecuted instantiation: runmode-nflog.c:TCPV6Checksum
Unexecuted instantiation: runmode-nfq.c:TCPV6Checksum
Unexecuted instantiation: runmode-pcap.c:TCPV6Checksum
Unexecuted instantiation: runmode-pcap-file.c:TCPV6Checksum
Unexecuted instantiation: runmode-pfring.c:TCPV6Checksum
Unexecuted instantiation: rust-context.c:TCPV6Checksum
Unexecuted instantiation: source-af-packet.c:TCPV6Checksum
Unexecuted instantiation: source-af-xdp.c:TCPV6Checksum
Unexecuted instantiation: source-dpdk.c:TCPV6Checksum
Unexecuted instantiation: source-erf-dag.c:TCPV6Checksum
Unexecuted instantiation: source-erf-file.c:TCPV6Checksum
Unexecuted instantiation: source-ipfw.c:TCPV6Checksum
Unexecuted instantiation: source-napatech.c:TCPV6Checksum
Unexecuted instantiation: source-netmap.c:TCPV6Checksum
Unexecuted instantiation: source-nflog.c:TCPV6Checksum
Unexecuted instantiation: source-nfq.c:TCPV6Checksum
Unexecuted instantiation: source-pcap.c:TCPV6Checksum
Unexecuted instantiation: source-pcap-file.c:TCPV6Checksum
Unexecuted instantiation: source-pcap-file-directory-helper.c:TCPV6Checksum
Unexecuted instantiation: source-pcap-file-helper.c:TCPV6Checksum
Unexecuted instantiation: source-pfring.c:TCPV6Checksum
Unexecuted instantiation: source-windivert.c:TCPV6Checksum
Unexecuted instantiation: stream-tcp-inline.c:TCPV6Checksum
Unexecuted instantiation: tmqh-simple.c:TCPV6Checksum
Unexecuted instantiation: util-action.c:TCPV6Checksum
Unexecuted instantiation: util-classification-config.c:TCPV6Checksum
Unexecuted instantiation: util-detect.c:TCPV6Checksum
Unexecuted instantiation: util-file-decompression.c:TCPV6Checksum
Unexecuted instantiation: util-file-swf-decompression.c:TCPV6Checksum
Unexecuted instantiation: util-logopenfile.c:TCPV6Checksum
Unexecuted instantiation: util-mpm-ac-bs.c:TCPV6Checksum
Unexecuted instantiation: util-mpm-ac.c:TCPV6Checksum
Unexecuted instantiation: util-mpm-ac-ks.c:TCPV6Checksum
Unexecuted instantiation: util-reference-config.c:TCPV6Checksum
Unexecuted instantiation: util-rule-vars.c:TCPV6Checksum
Unexecuted instantiation: util-runmodes.c:TCPV6Checksum
Unexecuted instantiation: util-port-interval-tree.c:TCPV6Checksum
Unexecuted instantiation: alert-debuglog.c:TCPV6Checksum
Unexecuted instantiation: alert-fastlog.c:TCPV6Checksum
Unexecuted instantiation: alert-syslog.c:TCPV6Checksum
Unexecuted instantiation: app-layer-htp-body.c:TCPV6Checksum
Unexecuted instantiation: app-layer-htp-xff.c:TCPV6Checksum
Unexecuted instantiation: app-layer-register.c:TCPV6Checksum
Unexecuted instantiation: decode-chdlc.c:TCPV6Checksum
Unexecuted instantiation: decode-esp.c:TCPV6Checksum
Unexecuted instantiation: decode-gre.c:TCPV6Checksum
Unexecuted instantiation: decode-null.c:TCPV6Checksum
Unexecuted instantiation: decode-raw.c:TCPV6Checksum
Unexecuted instantiation: decode-sll.c:TCPV6Checksum
Unexecuted instantiation: detect-app-layer-event.c:TCPV6Checksum
Unexecuted instantiation: detect-app-layer-protocol.c:TCPV6Checksum
Unexecuted instantiation: detect-asn1.c:TCPV6Checksum
Unexecuted instantiation: detect-base64-data.c:TCPV6Checksum
Unexecuted instantiation: detect-base64-decode.c:TCPV6Checksum
Unexecuted instantiation: detect-bsize.c:TCPV6Checksum
Unexecuted instantiation: detect-bypass.c:TCPV6Checksum
Unexecuted instantiation: detect-byte.c:TCPV6Checksum
Unexecuted instantiation: detect-byte-extract.c:TCPV6Checksum
Unexecuted instantiation: detect-bytejump.c:TCPV6Checksum
Unexecuted instantiation: detect-bytemath.c:TCPV6Checksum
Unexecuted instantiation: detect-bytetest.c:TCPV6Checksum
Unexecuted instantiation: detect.c:TCPV6Checksum
Unexecuted instantiation: detect-cipservice.c:TCPV6Checksum
Unexecuted instantiation: detect-classtype.c:TCPV6Checksum
Unexecuted instantiation: detect-config.c:TCPV6Checksum
detect-csum.c:TCPV6Checksum
Line
Count
Source
260
111
{
261
111
    uint16_t pad = 0;
262
111
    uint32_t csum = init;
263
264
111
    csum += shdr[0] + shdr[1] + shdr[2] + shdr[3] + shdr[4] + shdr[5] +
265
111
        shdr[6] +  shdr[7] + shdr[8] + shdr[9] + shdr[10] + shdr[11] +
266
111
        shdr[12] + shdr[13] + shdr[14] + shdr[15] + htons(6) + htons(tlen);
267
268
111
    csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
269
111
        pkt[7] + pkt[9];
270
271
111
    tlen -= 20;
272
111
    pkt += 10;
273
274
1.37k
    while (tlen >= 32) {
275
1.26k
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3] + pkt[4] + pkt[5] + pkt[6] +
276
1.26k
            pkt[7] + pkt[8] + pkt[9] + pkt[10] + pkt[11] + pkt[12] + pkt[13] +
277
1.26k
            pkt[14] + pkt[15];
278
1.26k
        tlen -= 32;
279
1.26k
        pkt += 16;
280
1.26k
    }
281
282
276
    while(tlen >= 8) {
283
165
        csum += pkt[0] + pkt[1] + pkt[2] + pkt[3];
284
165
        tlen -= 8;
285
165
        pkt += 4;
286
165
    }
287
288
185
    while(tlen >= 4) {
289
74
        csum += pkt[0] + pkt[1];
290
74
        tlen -= 4;
291
74
        pkt += 2;
292
74
    }
293
294
130
    while (tlen > 1) {
295
19
        csum += pkt[0];
296
19
        pkt += 1;
297
19
        tlen -= 2;
298
19
    }
299
300
111
    if (tlen == 1) {
301
20
        *(uint8_t *)(&pad) = (*(uint8_t *)pkt);
302
20
        csum += pad;
303
20
    }
304
305
111
    csum = (csum >> 16) + (csum & 0x0000FFFF);
306
111
    csum += (csum >> 16);
307
308
111
    return (uint16_t)~csum;
309
111
}
Unexecuted instantiation: detect-datarep.c:TCPV6Checksum
Unexecuted instantiation: detect-dataset.c:TCPV6Checksum
Unexecuted instantiation: detect-dce-iface.c:TCPV6Checksum
Unexecuted instantiation: detect-dce-opnum.c:TCPV6Checksum
Unexecuted instantiation: detect-dce-stub-data.c:TCPV6Checksum
Unexecuted instantiation: detect-depth.c:TCPV6Checksum
Unexecuted instantiation: detect-detection-filter.c:TCPV6Checksum
Unexecuted instantiation: detect-distance.c:TCPV6Checksum
Unexecuted instantiation: detect-dnp3.c:TCPV6Checksum
Unexecuted instantiation: detect-dns-opcode.c:TCPV6Checksum
Unexecuted instantiation: detect-dns-query.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-analyzer.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-enip.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-event.c:TCPV6Checksum
Unexecuted instantiation: detect-engine-file.c:TCPV6Checksum
Unexecuted instantiation: detect-file-hash-common.c:TCPV6Checksum
Unexecuted instantiation: detect-http-accept.c:TCPV6Checksum
Unexecuted instantiation: detect-http-accept-enc.c:TCPV6Checksum
Unexecuted instantiation: detect-http-accept-lang.c:TCPV6Checksum
Unexecuted instantiation: detect-http-connection.c:TCPV6Checksum
Unexecuted instantiation: detect-http-content-len.c:TCPV6Checksum
Unexecuted instantiation: detect-http-content-type.c:TCPV6Checksum
Unexecuted instantiation: log-httplog.c:TCPV6Checksum
Unexecuted instantiation: log-pcap.c:TCPV6Checksum
Unexecuted instantiation: log-stats.c:TCPV6Checksum
Unexecuted instantiation: log-tcp-data.c:TCPV6Checksum
Unexecuted instantiation: log-tlslog.c:TCPV6Checksum
Unexecuted instantiation: log-tlsstore.c:TCPV6Checksum
Unexecuted instantiation: stream.c:TCPV6Checksum
Unexecuted instantiation: fuzz_sigpcap_aware.c:TCPV6Checksum
Unexecuted instantiation: util-unittest-helper.c:TCPV6Checksum
Unexecuted instantiation: fuzz_decodepcapfile.c:TCPV6Checksum
Unexecuted instantiation: fuzz_mimedecparseline.c:TCPV6Checksum
Unexecuted instantiation: fuzz_siginit.c:TCPV6Checksum
Unexecuted instantiation: fuzz_sigpcap.c:TCPV6Checksum
Unexecuted instantiation: fuzz_applayerprotodetectgetproto.c:TCPV6Checksum
Unexecuted instantiation: fuzz_predefpcap_aware.c:TCPV6Checksum
310
311
#endif /* __DECODE_TCP_H__ */