Wireshark 4.5.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
follow.h
Go to the documentation of this file.
1
13#ifndef __FOLLOW_H__
14#define __FOLLOW_H__
15
16#include <epan/epan.h>
17#include <epan/packet.h>
18#include <wsutil/inet_cidr.h>
19#include <epan/tap.h>
20#include <epan/wmem_scopes.h>
21#include "ws_symbol_export.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif /* __cplusplus */
26
27/* Show Stream */
28typedef enum {
29 FROM_CLIENT,
30 FROM_SERVER,
31 BOTH_HOSTS
32} show_stream_t;
33
34typedef union _stream_addr {
35 uint32_t ipv4;
36 ws_in6_addr ipv6;
38
39struct _follow_info;
40
41#define SUBSTREAM_UNUSED UINT64_C(0xFFFFFFFFFFFFFFFF)
42
43typedef struct {
44 bool is_server;
45 uint32_t packet_num;
46 uint32_t seq; /* TCP only */
48 GByteArray *data;
50
51typedef struct _follow_info {
52 show_stream_t show_stream;
53 char *filter_out_filter;
54 GList *payload; /* "follow_record_t" entries, in reverse order. */
55 unsigned bytes_written[2]; /* Index with FROM_CLIENT or FROM_SERVER for readability. */
56 uint32_t seq[2]; /* TCP only */
57 GList *fragments[2]; /* TCP only */
58 unsigned client_port;
59 unsigned server_port;
60 address client_ip;
61 address server_ip;
62 void* gui_data;
63 uint64_t substream_id;
65
66struct register_follow;
68
69typedef char* (*follow_conv_filter_func)(epan_dissect_t *edt, packet_info *pinfo, unsigned *stream, unsigned *sub_stream);
70typedef char* (*follow_index_filter_func)(unsigned stream, unsigned sub_stream);
71typedef char* (*follow_address_filter_func)(address* src_addr, address* dst_addr, int src_port, int dst_port);
72typedef char* (*follow_port_to_display_func)(wmem_allocator_t *allocator, unsigned port);
73typedef uint32_t (*follow_stream_count_func)(void);
74typedef bool (*follow_sub_stream_id_func)(unsigned stream, unsigned sub_stream, bool le, unsigned *sub_stream_out);
75
76WS_DLL_PUBLIC
77void register_follow_stream(const int proto_id, const char* tap_listener,
78 follow_conv_filter_func conv_filter, follow_index_filter_func index_filter, follow_address_filter_func address_filter,
79 follow_port_to_display_func port_to_display, tap_packet_cb tap_handler,
80 follow_stream_count_func stream_count, follow_sub_stream_id_func sub_stream_id);
81
87WS_DLL_PUBLIC int get_follow_proto_id(register_follow_t* follower);
88
94WS_DLL_PUBLIC const char* get_follow_tap_string(register_follow_t* follower);
95
101WS_DLL_PUBLIC register_follow_t* get_follow_by_name(const char* proto_short_name);
102
108WS_DLL_PUBLIC register_follow_t* get_follow_by_proto_id(const int proto_id);
109
115WS_DLL_PUBLIC follow_conv_filter_func get_follow_conv_func(register_follow_t* follower);
116
122WS_DLL_PUBLIC follow_index_filter_func get_follow_index_func(register_follow_t* follower);
123
129WS_DLL_PUBLIC follow_address_filter_func get_follow_address_func(register_follow_t* follower);
130
136WS_DLL_PUBLIC follow_port_to_display_func get_follow_port_to_display(register_follow_t* follower);
137
143WS_DLL_PUBLIC tap_packet_cb get_follow_tap_handler(register_follow_t* follower);
144
151WS_DLL_PUBLIC follow_stream_count_func get_follow_stream_count_func(register_follow_t* follower);
152
164WS_DLL_PUBLIC follow_sub_stream_id_func get_follow_sub_stream_id_func(register_follow_t* follower);
165
169WS_DLL_PUBLIC tap_packet_status
170follow_tvb_tap_listener(void *tapdata, packet_info *pinfo, epan_dissect_t *edt _U_, const void *data, tap_flags_t flags);
171
177WS_DLL_PUBLIC void follow_iterate_followers(wmem_foreach_func func, void *user_data);
178
185WS_DLL_PUBLIC char* follow_get_stat_tap_string(register_follow_t* follower);
186
195WS_DLL_PUBLIC void follow_reset_stream(follow_info_t* info);
196
202WS_DLL_PUBLIC void follow_info_free(follow_info_t* follow_info);
203
204#ifdef __cplusplus
205}
206#endif /* __cplusplus */
207
208#endif
WS_DLL_PUBLIC void follow_reset_stream(follow_info_t *info)
Definition follow.c:150
WS_DLL_PUBLIC tap_packet_cb get_follow_tap_handler(register_follow_t *follower)
Definition follow.c:104
WS_DLL_PUBLIC follow_address_filter_func get_follow_address_func(register_follow_t *follower)
Definition follow.c:94
WS_DLL_PUBLIC const char * get_follow_tap_string(register_follow_t *follower)
Definition follow.c:76
WS_DLL_PUBLIC follow_stream_count_func get_follow_stream_count_func(register_follow_t *follower)
Definition follow.c:109
WS_DLL_PUBLIC follow_conv_filter_func get_follow_conv_func(register_follow_t *follower)
Definition follow.c:84
WS_DLL_PUBLIC register_follow_t * get_follow_by_proto_id(const int proto_id)
Definition follow.c:124
WS_DLL_PUBLIC follow_sub_stream_id_func get_follow_sub_stream_id_func(register_follow_t *follower)
Definition follow.c:114
WS_DLL_PUBLIC register_follow_t * get_follow_by_name(const char *proto_short_name)
Definition follow.c:119
WS_DLL_PUBLIC follow_index_filter_func get_follow_index_func(register_follow_t *follower)
Definition follow.c:89
WS_DLL_PUBLIC char * follow_get_stat_tap_string(register_follow_t *follower)
Definition follow.c:139
WS_DLL_PUBLIC void follow_iterate_followers(wmem_foreach_func func, void *user_data)
Definition follow.c:134
WS_DLL_PUBLIC void follow_info_free(follow_info_t *follow_info)
Definition follow.c:203
WS_DLL_PUBLIC follow_port_to_display_func get_follow_port_to_display(register_follow_t *follower)
Definition follow.c:99
WS_DLL_PUBLIC int get_follow_proto_id(register_follow_t *follower)
Definition follow.c:68
WS_DLL_PUBLIC tap_packet_status follow_tvb_tap_listener(void *tapdata, packet_info *pinfo, epan_dissect_t *edt _U_, const void *data, tap_flags_t flags)
Definition follow.c:210
bool(* wmem_foreach_func)(const void *key, void *value, void *userdata)
Definition wmem_tree.h:247
Definition address.h:56
Definition follow.h:51
uint64_t substream_id
Definition follow.h:63
Definition packet_info.h:43
Definition wmem_allocator.h:27
Definition inet_addr.h:21
Definition epan_dissect.h:28
Definition follow.h:43
nstime_t abs_ts
Definition follow.h:47
Definition file-pcapng.h:57
Definition nstime.h:26
Definition follow.c:23
Definition stream.c:41
tap_packet_status
Definition tap.h:25
Definition follow.h:34