]> git.ipfire.org Git - people/ms/suricata.git/blame - src/source-pcap-file-helper.h
core: Remove unneeded consts
[people/ms/suricata.git] / src / source-pcap-file-helper.h
CommitLineData
ae413793 1/* Copyright (C) 2007-2020 Open Information Security Foundation
3ab91208
DH
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 Danny Browning <danny.browning@protectwise.com>
22 */
23
24#include "suricata-common.h"
25#include "tm-threads.h"
26
27#ifndef __SOURCE_PCAP_FILE_HELPER_H__
28#define __SOURCE_PCAP_FILE_HELPER_H__
29
30typedef struct PcapFileGlobalVars_ {
31 uint64_t cnt; /** packet counter */
32 ChecksumValidationMode conf_checksum_mode;
33 ChecksumValidationMode checksum_mode;
34 SC_ATOMIC_DECLARE(unsigned int, invalid_checksums);
35} PcapFileGlobalVars;
36
37/**
38 * Data that is shared amongst File, Directory, and Thread level vars
39 */
40typedef struct PcapFileSharedVars_
41{
42 char *bpf_string;
43
44 uint32_t tenant_id;
45
46 struct timespec last_processed;
47
2dc6b6ee
DB
48 bool should_delete;
49
3ab91208
DH
50 ThreadVars *tv;
51 TmSlot *slot;
52
53 /* counters */
54 uint64_t pkts;
55 uint64_t bytes;
56 uint64_t files;
57
58 uint8_t done;
59 uint32_t errs;
60
61 /** callback result -- set if one of the thread module failed. */
62 int cb_result;
63} PcapFileSharedVars;
64
65/**
66 * Data specific to a single pcap file
67 */
68typedef struct PcapFileFileVars_
69{
70 char *filename;
71 pcap_t *pcap_handle;
72
73 int datalink;
74 struct bpf_program filter;
75
76 PcapFileSharedVars *shared;
ae413793 77
f6c77dcd 78 /* fields used to get the first packet's timestamp early,
ae413793
VJ
79 * so it can be used to setup the time subsys. */
80 const u_char *first_pkt_data;
81 struct pcap_pkthdr *first_pkt_hdr;
82 struct timeval first_pkt_ts;
3ab91208
DH
83} PcapFileFileVars;
84
3ab91208
DH
85/**
86 * Dispatch a file for processing, where the information necessary to process that
87 * file is as PcapFileFileVars object.
88 * @param ptv PcapFileFileVars object to be processed
89 * @return
90 */
91TmEcode PcapFileDispatch(PcapFileFileVars *ptv);
92
93/**
94 * From a PcapFileFileVars, prepare the filename for processing by setting
95 * pcap_handle, datalink, and filter
96 * @param pfv PcapFileFileVars object to populate
97 * @return
98 */
99TmEcode InitPcapFile(PcapFileFileVars *pfv);
100
101/**
102 * Cleanup resources associated with a PcapFileFileVars object.
103 * @param pfv Object to be cleaned up
104 */
105void CleanupPcapFileFileVars(PcapFileFileVars *pfv);
106
107/**
108 * Determine if a datalink type is valid, setting a decoder function if valid.
109 * @param datalink Datalink type to validate
110 * @param decoder Pointer to decoder to set if valid
111 * @return TM_ECODE_OK if valid datalink type and decoder has been set.
112 */
579cc9f0 113TmEcode ValidateLinkType(int datalink, DecoderFunc *decoder);
3ab91208
DH
114
115#endif /* __SOURCE_PCAP_FILE_HELPER_H__ */