Wireshark 5.1.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
sinsp-span.h
1/* sinsp-span.h
2 *
3 * By Gerald Combs
4 * Copyright (C) 2022 Sysdig, Inc.
5 *
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <[email protected]>
8 * Copyright 1998 Gerald Combs
9 *
10 * SPDX-License-Identifier: GPL-2.0-or-later
11 */
12
13#ifndef __SINSP_SPAN_H__
14#define __SINSP_SPAN_H__
15
16#include <stdint.h>
17
18#include <epan/ftypes/ftypes.h>
19#include <wsutil/wmem/wmem.h>
20#include <wiretap/wtap.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif // __cplusplus
25
26#define FALCO_FIELD_NAME_PREFIX "falco."
27
28#define N_PROC_LINEAGE_ENTRIES 16
29#define N_PROC_LINEAGE_ENTRY_FIELDS 4
30
32typedef struct sinsp_span_t sinsp_span_t;
33
37typedef enum sinsp_field_display_format_e {
38 SFDF_UNKNOWN,
39 SFDF_DECIMAL,
40 SFDF_HEXADECIMAL,
41 SFDF_OCTAL
42} sinsp_field_display_format_e;
43
44
50typedef enum sinsp_syscall_category_e {
51 SSC_EVENT,
52 SSC_EVTARGS,
53 SSC_PROCESS,
54 SSC_PROCLINEAGE,
55 SSC_USER,
56 SSC_GROUP,
57 SSC_CONTAINER,
58 SSC_FD,
59 SSC_FS,
60/* SSC_SYSLOG, */
61 SSC_FDLIST,
62 SSC_OTHER,
63 NUM_SINSP_SYSCALL_CATEGORIES
64} sinsp_syscall_category_e;
65
66
70typedef struct sinsp_field_info_t {
71 enum ftenum type;
72 sinsp_field_display_format_e display_format;
73 char abbrev[64];
74 char display[64];
75 char description[1024];
76 bool skip;
77 bool is_info;
81
82
84#define SFE_SMALL_BUF_SIZE 8
85
93typedef struct sinsp_field_extract_t {
95 union {
96 uint8_t *bytes;
97 const char *str;
98 int32_t i32;
99 int64_t i64;
100 uint32_t u32;
101 uint64_t u64;
102 double dbl;
103 bool boolean;
104 char small_str[SFE_SMALL_BUF_SIZE];
105 uint8_t small_bytes[SFE_SMALL_BUF_SIZE];
108 uint16_t field_idx;
110
111
116#define PLUGIN_EVENT_HEADER_SIZE (26 + 4 + 4 + 4)
117
126 uint32_t field_id;
127 const char *field_name;
131
133 union {
134 uint8_t *bytes;
135 const char *str;
136 int32_t i32;
137 int64_t i64;
138 uint32_t u32;
139 uint64_t u64;
140 double dbl;
141 uint8_t ipv6[16];
142 bool boolean;
147
155sinsp_span_t *create_sinsp_span(void);
156
162void destroy_sinsp_span(sinsp_span_t *sinsp_span);
163
164// Common routines
171uint32_t get_sinsp_source_id(sinsp_source_info_t *ssi);
172
180const char *get_sinsp_source_last_error(sinsp_source_info_t *ssi);
181
188const char *get_sinsp_source_name(sinsp_source_info_t *ssi);
189
196const char *get_sinsp_source_description(sinsp_source_info_t *ssi);
197
206bool get_sinsp_source_field_info(sinsp_source_info_t *ssi, size_t field_num, sinsp_field_info_t *field);
207
208// libsinsp builtin syscall routines.
209
216void create_sinsp_syscall_source(sinsp_span_t *sinsp_span, sinsp_source_info_t **ssi_ptr);
217
233void open_sinsp_capture(sinsp_span_t *sinsp_span, struct wtap *wth,
234 const struct wtap_rec *first_event_rec);
235
248void feed_sinsp_event_block(sinsp_span_t *sinsp_span, const struct wtap_rec *rec,
249 const uint8_t *event_data, uint32_t event_data_len);
250
251//uint32_t process_syscall_capture(sinsp_span_t * sinsp_span, sinsp_source_info_t *ssi, uint32_t to_event);
252
258void close_sinsp_capture(sinsp_span_t *sinsp_span);
259
271bool extract_syscall_source_fields(sinsp_span_t *sinsp_span, sinsp_source_info_t *ssi, uint32_t frame_num, sinsp_field_extract_t **sinsp_fields, uint32_t *sinsp_field_len, void** sisnp_evt_info);
272
280sinsp_syscall_category_e get_syscall_parent_category(sinsp_source_info_t *ssi, size_t field_check_idx);
281
301bool get_extracted_syscall_source_fields(sinsp_span_t *sinsp_span, uint32_t frame_num, sinsp_field_extract_t **sinsp_fields, uint32_t *sinsp_field_len, void** sinsp_evt_info);
302
310char* get_evt_arg_name(void* sinsp_evt_info, uint32_t arg_num);
311
318bool evt_creates_fd(void* sinsp_evt_info);
319
320// Extractor plugin routines.
321// These roughly match common_plugin_info
322
331char *create_sinsp_plugin_source(sinsp_span_t *sinsp_span, const char* libname, sinsp_source_info_t **ssi_ptr);
332
339size_t get_sinsp_source_nfields(sinsp_source_info_t *ssi);
340
356bool extract_plugin_source_fields(sinsp_source_info_t *ssi, uint32_t event_num, const uint8_t *evt_data, uint32_t evt_datalen, wmem_allocator_t *pool, plugin_field_extract_t *sinsp_fields, uint32_t sinsp_field_len);
357
358
359#ifdef __cplusplus
360}
361#endif // __cplusplus
362
363#endif // __SINSP_SPAN_H__
ftenum
Fundamental field value types used throughout the Wireshark dissector framework.
Definition ftypes.h:26
struct _wmem_allocator_t wmem_allocator_t
Definition wmem_core.h:44
Holds a single field extraction request/result for a plugin event.
Definition sinsp-span.h:125
bool boolean
Definition sinsp-span.h:142
const char * str
Definition sinsp-span.h:135
uint8_t ipv6[16]
Definition sinsp-span.h:141
uint8_t * bytes
Definition sinsp-span.h:134
const char * field_name
Definition sinsp-span.h:127
enum ftenum type
Definition sinsp-span.h:128
double dbl
Definition sinsp-span.h:140
uint32_t u32
Definition sinsp-span.h:138
union plugin_field_extract_t::@316162077363334231142143302073351045021016065172 res
Extracted value; the active member is determined by type.
int32_t i32
Definition sinsp-span.h:136
uint32_t field_id
Definition sinsp-span.h:126
bool is_generated
Definition sinsp-span.h:130
bool is_present
Definition sinsp-span.h:129
uint64_t u64
Definition sinsp-span.h:139
int64_t i64
Definition sinsp-span.h:137
int data_length
Definition sinsp-span.h:145
int data_start
Definition sinsp-span.h:144
Holds a single extracted field value from a sinsp syscall event.
Definition sinsp-span.h:93
char small_str[8]
Definition sinsp-span.h:104
union sinsp_field_extract_t::@142141053035351230166051055077167036243315351113 res
Extracted value; the active member depends on the field type.
bool boolean
Definition sinsp-span.h:103
int res_len
Definition sinsp-span.h:107
const char * str
Definition sinsp-span.h:97
uint64_t u64
Definition sinsp-span.h:101
int32_t i32
Definition sinsp-span.h:98
uint32_t u32
Definition sinsp-span.h:100
uint8_t * bytes
Definition sinsp-span.h:96
double dbl
Definition sinsp-span.h:102
uint8_t small_bytes[8]
Definition sinsp-span.h:105
uint16_t field_idx
Definition sinsp-span.h:108
int64_t i64
Definition sinsp-span.h:99
Metadata describing a single sinsp filter/display field.
Definition sinsp-span.h:70
enum ftenum type
Definition sinsp-span.h:71
bool is_info
Definition sinsp-span.h:77
bool is_conversation
Definition sinsp-span.h:78
char display[64]
Definition sinsp-span.h:74
sinsp_field_display_format_e display_format
Definition sinsp-span.h:72
char abbrev[64]
Definition sinsp-span.h:73
char description[1024]
Definition sinsp-span.h:75
bool skip
Definition sinsp-span.h:76
bool is_numeric_address
Definition sinsp-span.h:79
Definition sinsp-span.cpp:56
Definition sinsp-span.cpp:75
Represents a single capture record read from or written to a capture file, regardless of record type.
Definition wtap.h:1613
Definition wtap_module.h:58