13 #ifndef PACKET_LBM_H_INCLUDED
14 #define PACKET_LBM_H_INCLUDED
79 #if defined(__FreeBSD__)
80 #include <sys/types.h>
81 #include <netinet/in.h>
85 #ifdef HAVE_NETINET_IN_H
86 # include <netinet/in.h>
93 typedef guint8 lbm_uint8_t;
94 typedef guint16 lbm_uint16_t;
95 typedef guint32 lbm_uint32_t;
96 typedef guint64 lbm_uint64_t;
97 #define SIZEOF(TYPE, MEMBER) (gint)(sizeof(((TYPE *)0)->MEMBER))
98 #define OFFSETOF(TYPE, MEMBER) (gint)(offsetof(TYPE, MEMBER))
99 #define STRINGIZE(a) #a
100 #define MAKESTRING(a) STRINGIZE(a)
101 #define LBM_OTID_BLOCK_SZ 32
102 #define LBM_CONTEXT_INSTANCE_BLOCK_SZ 8
103 #define LBM_HMAC_BLOCK_SZ 20
106 #define UAT_IPV4_CB_DEF(basename,field_name,rec_t) \
107 static bool basename ## _ ## field_name ## _chk_cb(void * u1 _U_, const char * strptr, unsigned len _U_, const void * u2 _U_, const void * u3 _U_, char ** err) \
110 if (!ws_inet_pton4(strptr, &addr)) \
112 *err = g_strdup("invalid address"); \
117 static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, unsigned len, const void* u1 _U_, const void* u2 _U_) \
120 char* new_buf = g_strndup(buf,len); \
121 g_free((((rec_t*)rec)->field_name)); \
122 (((rec_t*)rec)->field_name) = new_buf; \
123 ws_inet_pton4(new_buf, &addr); \
124 (((rec_t*)rec)->field_name ## _val_h) = g_ntohl(addr); \
126 static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, unsigned* out_len, const void* u1 _U_, const void* u2 _U_) \
128 if (((rec_t*)rec)->field_name ) \
130 *out_ptr = g_strdup((((rec_t*)rec)->field_name)); \
131 *out_len = (unsigned)strlen((((rec_t*)rec)->field_name)); \
135 *out_ptr = g_strdup(""); \
140 #define UAT_FLD_IPV4(basename,field_name,title,desc) \
141 {#field_name, title, PT_TXTMOD_STRING,{basename ## _ ## field_name ## _chk_cb,basename ## _ ## field_name ## _set_cb,basename ## _ ## field_name ## _tostr_cb},{0,0,0},0,desc,FLDFILL}
144 #define UAT_IPV4_MC_CB_DEF(basename,field_name,rec_t) \
145 static bool basename ## _ ## field_name ## _chk_cb(void * u1 _U_, const char * strptr, unsigned len _U_, const void * u2 _U_, const void * u3 _U_, char ** err) \
148 if (!ws_inet_pton4(strptr, &addr)) \
150 *err = g_strdup("invalid address"); \
153 if (!IN_MULTICAST(g_ntohl(addr)) && (g_ntohl(addr) != 0)) \
155 *err = g_strdup("invalid multicast address"); \
160 static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, unsigned len, const void* u1 _U_, const void* u2 _U_) \
163 char* new_buf = g_strndup(buf,len); \
164 g_free((((rec_t*)rec)->field_name)); \
165 (((rec_t*)rec)->field_name) = new_buf; \
166 ws_inet_pton4(new_buf, &addr); \
167 (((rec_t*)rec)->field_name ## _val_h) = g_ntohl(addr); \
169 static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, unsigned* out_len, const void* u1 _U_, const void* u2 _U_) \
171 if (((rec_t*)rec)->field_name ) \
173 *out_ptr = g_strdup((((rec_t*)rec)->field_name)); \
174 *out_len = (unsigned)strlen((((rec_t*)rec)->field_name)); \
178 *out_ptr = g_strdup(""); \
183 #define UAT_FLD_IPV4_MC(basename,field_name,title,desc) \
184 {#field_name, title, PT_TXTMOD_STRING,{basename ## _ ## field_name ## _chk_cb,basename ## _ ## field_name ## _set_cb,basename ## _ ## field_name ## _tostr_cb},{0,0,0},0,desc,FLDFILL}
195 guint8 ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
200 lbm_uim_instance_stream,
201 lbm_uim_domain_stream
202 } lbm_uim_stream_type_t;
206 lbm_uim_stream_type_t type;
217 guint32 substream_id;
227 gboolean retransmission;
238 gboolean retransmission;
251 guint8 source_length;
268 guint8 pattern_length;
272 #define LBMR_WILDCARD_PATTERN_TYPE_PCRE 1
273 #define LBMR_WILDCARD_PATTERN_TYPE_REGEX 2
292 #define LBM_TOPIC_OPT_EXFUNC_FFLAG_LJ 0x00000001
293 #define LBM_TOPIC_OPT_EXFUNC_FFLAG_UME 0x00000002
294 #define LBM_TOPIC_OPT_EXFUNC_FFLAG_UMQ 0x00000004
295 #define LBM_TOPIC_OPT_EXFUNC_FFLAG_ULB 0x00000008
298 #define LBTRM_PACKET_TYPE_DATA 0x00
299 #define LBTRM_PACKET_TYPE_SM 0x02
300 #define LBTRM_PACKET_TYPE_NAK 0x03
301 #define LBTRM_PACKET_TYPE_NCF 0x04
304 #define LBTRM_NCF_REASON_NO_RETRY 0x0
305 #define LBTRM_NCF_REASON_IGNORED 0x1
306 #define LBTRM_NCF_REASON_RX_DELAY 0x2
307 #define LBTRM_NCF_REASON_SHED 0x3
310 #define LBTRU_PACKET_TYPE_DATA 0x00
311 #define LBTRU_PACKET_TYPE_SM 0x02
312 #define LBTRU_PACKET_TYPE_NAK 0x03
313 #define LBTRU_PACKET_TYPE_NCF 0x04
314 #define LBTRU_PACKET_TYPE_ACK 0x05
315 #define LBTRU_PACKET_TYPE_CREQ 0x06
316 #define LBTRU_PACKET_TYPE_RST 0x07
319 #define LBTRU_NCF_REASON_NO_RETRY 0x0
320 #define LBTRU_NCF_REASON_IGNORED 0x1
321 #define LBTRU_NCF_REASON_RX_DELAY 0x2
322 #define LBTRU_NCF_REASON_SHED 0x3
325 #define LBTRU_CREQ_REQUEST_SYN 0x0
328 #define LBTRU_RST_REASON_DEFAULT 0x0
330 gboolean lbmc_test_lbmc_header(
tvbuff_t * tvb,
int offset);
332 int lbmc_get_minimum_length(
void);
333 guint16 lbmc_get_message_length(
tvbuff_t * tvb,
int offset);
334 gboolean lbmpdm_verify_payload(
tvbuff_t * tvb,
int offset,
int * encoding,
int * length);
336 int lbmpdm_get_minimum_length(
void);
341 extern const value_string lbm_wildcard_pattern_type_short[];
346 #define LBM_CHANNEL_NO_CHANNEL (~((guint64) 0))
348 #define LBM_CHANNEL_TRANSPORT_LBTTCP 0x00
349 #define LBM_CHANNEL_TRANSPORT_LBTRU 0x01
350 #define LBM_CHANNEL_TRANSPORT_LBTRM 0x02
351 #define LBM_CHANNEL_TRANSPORT_LBTIPC 0x03
352 #define LBM_CHANNEL_TRANSPORT_LBTRDMA 0x04
353 #define LBM_CHANNEL_TRANSPORT_LBTSMX 0x05
354 #define LBM_CHANNEL_STREAM_TCP 0x10
355 #define LBM_CHANNEL_TCP 0x20
357 #define LBM_CHANNEL_VALUE_MASK G_GUINT64_CONSTANT(0xfffffffffffff000)
358 #define LBM_CHANNEL_VALUE_SHIFT_COUNT 12
360 void lbm_channel_reset(
void);
361 guint64 lbm_channel_assign(guint8 channel_type);
362 gboolean lbm_channel_is_transport(guint64 channel);
363 guint8 lbm_channel_type(guint64 channel);
364 guint64 lbm_channel_assign_unknown_transport_source_lbttcp(
void);
365 guint64 lbm_channel_assign_unknown_transport_client_lbttcp(
void);
366 guint64 lbm_channel_assign_unknown_stream_tcp(
void);
367 gboolean lbm_channel_is_unknown_transport_lbttcp(guint64 channel);
368 gboolean lbm_channel_is_unknown_transport_source_lbttcp(guint64 channel);
369 gboolean lbm_channel_is_unknown_transport_client_lbttcp(guint64 channel);
370 gboolean lbm_channel_is_unknown_stream_tcp(guint64 channel);
371 gboolean lbm_channel_is_known(guint64 channel);
373 #define LBM_CHANNEL_ID(ch) ((ch & LBM_CHANNEL_VALUE_MASK) >> LBM_CHANNEL_VALUE_SHIFT_COUNT)
383 guint32 previous_frame;
384 guint32 previous_type_frame;
386 guint32 next_type_frame;
387 gboolean retransmission;
396 gboolean retransmission;
412 void lbm_topic_init(
void);
413 const char * lbm_topic_find(guint64 channel, guint32 topic_index);
414 void lbm_topic_add(guint64 channel, guint32 topic_index,
const char * name);
Definition: packet_info.h:44
Definition: value_string.h:26
Definition: wmem_tree-int.h:48
Definition: packet-lbm.h:265
Definition: packet-lbm.h:276
Definition: packet-lbm.h:286
Definition: packet-lbm.h:248
Definition: packet-lbm.h:258
Definition: packet-lbm.h:224
Definition: packet-lbm.h:235
Definition: packet-lbm.h:379
Definition: packet-lbm.h:394
Definition: packet-lbm.h:400
Definition: packet-lbm.h:194
Definition: packet-lbm.h:187
Definition: packet-lbm.h:205
Definition: packet-lbm.h:215
Definition: tvbuff-int.h:35