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 gboolean 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 gboolean 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-lbm.h:285
Definition: wmem_tree-int.h:47
Definition: packet-lbm.h:393
Definition: packet-lbm.h:275
Definition: packet-lbm.h:186
Definition: packet-lbm.h:399
Definition: packet_info.h:44
Definition: packet-lbm.h:214
Definition: tvbuff-int.h:35
Definition: packet-lbm.h:204
Definition: packet-lbm.h:193
Definition: packet-lbm.h:264
Definition: packet-lbm.h:378
Definition: value_string.h:24
Definition: packet-lbm.h:257
Definition: packet-lbm.h:247
Definition: packet-lbm.h:223
Definition: packet-lbm.h:234