Wireshark  4.3.0
The Wireshark network protocol analyzer
column-utils.h
Go to the documentation of this file.
1 
12 #ifndef __COLUMN_UTILS_H__
13 #define __COLUMN_UTILS_H__
14 
15 #include <glib.h>
16 
17 #include "packet_info.h"
18 #include "ws_symbol_export.h"
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif /* __cplusplus */
23 
24 #define COL_MAX_LEN 2048
25 #define COL_MAX_INFO_LEN 4096
26 
27 /* A regex to split possibly multifield custom columns into components
28  *
29  * Split on operator "||" (with optional space around it) and on "or"
30  * (which must have space around it to avoid matching in the middle of
31  * a word, field in the "synphasor" protocol, etc. This is somewhat too
32  * strict, as "or" adjacent to parentheses ought to be fine so long
33  * as the filter matches the grammar, like "(tcp.port)or(udp.port)",
34  * but that's the cost of using regex instead of the real parser.)
35  * Also split on space at the beginning or end of the expression (in
36  * lieu of always stripping whitespace at the beginning and end, but it
37  * does mean that we have to ignore any empty tokens in the result.)
38  *
39  * Use negative lookahead to avoid matching "||" or "or" that are contained
40  * within parentheses. Don't match if a close parenthesis comes before an
41  * open parenthesis. The regex doesn't help with unmatched parentheses, but
42  * such an expression already won't satisfy the grammar and won't compile.
43  */
44 #define COL_CUSTOM_PRIME_REGEX "(?:^ *| *\\|\\| *| +or +| *$)(?![^(]*\\))"
45 
46 struct epan_dissect;
47 
52 struct epan_column_info;
53 typedef struct epan_column_info column_info;
54 
64 enum {
111  NUM_COL_FMTS
112 };
113 
120 WS_DLL_PUBLIC bool col_get_writable(column_info *cinfo, const int col);
121 
128 WS_DLL_PUBLIC void col_set_writable(column_info *cinfo, const int col, const bool writable);
129 
139 WS_DLL_PUBLIC void col_set_fence(column_info *cinfo, const int col);
140 
149 WS_DLL_PUBLIC void col_clear_fence(column_info *cinfo, const int col);
150 
158 WS_DLL_PUBLIC const char *col_get_text(column_info *cinfo, const int col);
159 
165 WS_DLL_PUBLIC void col_clear(column_info *cinfo, const int col);
166 
178 WS_DLL_PUBLIC void col_set_str(column_info *cinfo, const int col, const char * str);
179 
188 WS_DLL_PUBLIC void col_add_str(column_info *cinfo, const int col, const char *str);
189 
190 /* terminator argument for col_add_lstr() function */
191 #define COL_ADD_LSTR_TERMINATOR (const char *) -1
192 
193 WS_DLL_PUBLIC void col_add_lstr(column_info *cinfo, const int el, const char *str, ...);
194 
206 WS_DLL_PUBLIC void col_add_fstr(column_info *cinfo, const int col, const char *format, ...)
207  G_GNUC_PRINTF(3, 4);
208 
217 WS_DLL_PUBLIC void col_append_str(column_info *cinfo, const int col, const char *str);
218 
227 WS_DLL_PUBLIC void col_append_str_uint(column_info *cinfo, const int col, const char *abbrev, uint32_t val, const char *sep);
228 
237 WS_DLL_PUBLIC void col_append_ports(column_info *cinfo, const int col, port_type typ, uint16_t src, uint16_t dst);
238 
247 WS_DLL_PUBLIC void col_append_frame_number(packet_info *pinfo, const int col, const char *fmt_str, unsigned frame_num);
248 
249 /* Append the given strings (terminated by COL_ADD_LSTR_TERMINATOR) to a column element,
250  *
251  * Same result as col_append_str() called for every string element.
252  */
253 WS_DLL_PUBLIC void col_append_lstr(column_info *cinfo, const int el, const char *str, ...);
254 
266 WS_DLL_PUBLIC void col_append_fstr(column_info *cinfo, const int col, const char *format, ...)
267  G_GNUC_PRINTF(3, 4);
268 
278 WS_DLL_PUBLIC void col_prepend_fstr(column_info *cinfo, const int col, const char *format, ...)
279  G_GNUC_PRINTF(3, 4);
280 
292 WS_DLL_PUBLIC void col_prepend_fence_fstr(column_info *cinfo, const int col, const char *format, ...)
293  G_GNUC_PRINTF(3, 4);
294 
306 WS_DLL_PUBLIC void col_append_sep_str(column_info *cinfo, const int col, const char *sep,
307  const char *str);
308 
321 WS_DLL_PUBLIC void col_append_sep_fstr(column_info *cinfo, const int col, const char *sep,
322  const char *format, ...)
323  G_GNUC_PRINTF(4, 5);
324 
335 WS_DLL_PUBLIC void col_set_time(column_info *cinfo, const int col,
336  const nstime_t *ts, const char *fieldname);
337 
338 WS_DLL_PUBLIC void set_fd_time(const struct epan_session *epan, frame_data *fd, char *buf);
339 
340 #ifdef __cplusplus
341 }
342 #endif /* __cplusplus */
343 
344 #endif /* __COLUMN_UTILS_H__ */
WS_DLL_PUBLIC void col_clear_fence(column_info *cinfo, const int col)
Definition: column-utils.c:237
WS_DLL_PUBLIC void col_add_fstr(column_info *cinfo, const int col, const char *format,...) G_GNUC_PRINTF(3
WS_DLL_PUBLIC void col_append_ports(column_info *cinfo, const int col, port_type typ, uint16_t src, uint16_t dst)
Definition: column-utils.c:514
WS_DLL_PUBLIC void col_set_fence(column_info *cinfo, const int col)
Definition: column-utils.c:219
WS_DLL_PUBLIC void col_add_str(column_info *cinfo, const int col, const char *str)
Definition: column-utils.c:727
WS_DLL_PUBLIC void WS_DLL_PUBLIC void col_append_str(column_info *cinfo, const int col, const char *str)
Definition: column-utils.c:936
WS_DLL_PUBLIC void WS_DLL_PUBLIC void WS_DLL_PUBLIC void WS_DLL_PUBLIC void col_append_sep_str(column_info *cinfo, const int col, const char *sep, const char *str)
Definition: column-utils.c:945
WS_DLL_PUBLIC void WS_DLL_PUBLIC void WS_DLL_PUBLIC void col_prepend_fence_fstr(column_info *cinfo, const int col, const char *format,...) G_GNUC_PRINTF(3
@ COL_ABS_TIME
Definition: column-utils.h:67
@ COL_RES_DST
Definition: column-utils.h:72
@ COL_NUMBER
Definition: column-utils.h:97
@ COL_UNRES_NET_DST
Definition: column-utils.h:92
@ COL_RES_SRC
Definition: column-utils.h:103
@ COL_DEF_NET_SRC
Definition: column-utils.h:96
@ COL_INFO
Definition: column-utils.h:90
@ COL_DEF_DL_SRC
Definition: column-utils.h:82
@ COL_UNRES_DL_SRC
Definition: column-utils.h:86
@ COL_TX_RATE
Definition: column-utils.h:88
@ COL_RES_DL_DST
Definition: column-utils.h:83
@ COL_DEF_DST_PORT
Definition: column-utils.h:77
@ COL_CUSTOM
Definition: column-utils.h:69
@ COL_ABS_YMD_TIME
Definition: column-utils.h:65
@ COL_RES_DL_SRC
Definition: column-utils.h:85
@ COL_DELTA_TIME_DIS
Definition: column-utils.h:71
@ COL_FREQ_CHAN
Definition: column-utils.h:80
@ COL_DEF_DST
Definition: column-utils.h:76
@ COL_RSSI
Definition: column-utils.h:87
@ COL_DELTA_TIME
Definition: column-utils.h:70
@ COL_CLS_TIME
Definition: column-utils.h:110
@ COL_UTC_YMD_TIME
Definition: column-utils.h:107
@ COL_UNRES_SRC_PORT
Definition: column-utils.h:106
@ COL_PROTOCOL
Definition: column-utils.h:99
@ COL_IF_DIR
Definition: column-utils.h:79
@ COL_RES_NET_DST
Definition: column-utils.h:91
@ COL_UNRES_DST_PORT
Definition: column-utils.h:75
@ COL_UNRES_SRC
Definition: column-utils.h:104
@ COL_DEF_SRC_PORT
Definition: column-utils.h:102
@ COL_RES_NET_SRC
Definition: column-utils.h:93
@ COL_DEF_SRC
Definition: column-utils.h:101
@ COL_UNRES_DST
Definition: column-utils.h:73
@ COL_UTC_TIME
Definition: column-utils.h:109
@ NUM_COL_FMTS
Definition: column-utils.h:111
@ COL_RES_SRC_PORT
Definition: column-utils.h:105
@ COL_UNRES_DL_DST
Definition: column-utils.h:84
@ COL_REL_TIME
Definition: column-utils.h:100
@ COL_DEF_NET_DST
Definition: column-utils.h:95
@ COL_UNRES_NET_SRC
Definition: column-utils.h:94
@ COL_DSCP_VALUE
Definition: column-utils.h:89
@ COL_UTC_YDOY_TIME
Definition: column-utils.h:108
@ COL_PACKET_LENGTH
Definition: column-utils.h:98
@ COL_ABS_YDOY_TIME
Definition: column-utils.h:66
@ COL_DEF_DL_DST
Definition: column-utils.h:81
@ COL_EXPERT
Definition: column-utils.h:78
@ COL_CUMULATIVE_BYTES
Definition: column-utils.h:68
@ COL_RES_DST_PORT
Definition: column-utils.h:74
WS_DLL_PUBLIC void col_set_writable(column_info *cinfo, const int col, const bool writable)
Definition: column-utils.c:191
WS_DLL_PUBLIC void WS_DLL_PUBLIC void col_set_time(column_info *cinfo, const int col, const nstime_t *ts, const char *fieldname)
Definition: column-utils.c:1648
WS_DLL_PUBLIC void col_append_frame_number(packet_info *pinfo, const int col, const char *fmt_str, unsigned frame_num)
Definition: column-utils.c:524
WS_DLL_PUBLIC void col_clear(column_info *cinfo, const int col)
Definition: column-utils.c:282
WS_DLL_PUBLIC void WS_DLL_PUBLIC void col_prepend_fstr(column_info *cinfo, const int col, const char *format,...) G_GNUC_PRINTF(3
WS_DLL_PUBLIC void col_append_sep_fstr(column_info *cinfo, const int col, const char *sep, const char *format,...) G_GNUC_PRINTF(4
WS_DLL_PUBLIC void col_append_str_uint(column_info *cinfo, const int col, const char *abbrev, uint32_t val, const char *sep)
Definition: column-utils.c:492
WS_DLL_PUBLIC void col_append_fstr(column_info *cinfo, const int col, const char *format,...) G_GNUC_PRINTF(3
WS_DLL_PUBLIC bool col_get_writable(column_info *cinfo, const int col)
Definition: column-utils.c:166
WS_DLL_PUBLIC const char * col_get_text(column_info *cinfo, const int col)
Definition: column-utils.c:255
WS_DLL_PUBLIC void col_set_str(column_info *cinfo, const int col, const char *str)
Definition: column-utils.c:765
Definition: packet_info.h:44
Definition: column-info.h:63
bool writable
Definition: column-info.h:70
Definition: epan_dissect.h:28
Definition: epan.c:465
Definition: nstime.h:26