13#ifndef PACKET_LBM_H_INCLUDED
14#define PACKET_LBM_H_INCLUDED
84typedef uint8_t lbm_uint8_t;
85typedef uint16_t lbm_uint16_t;
86typedef uint32_t lbm_uint32_t;
87typedef uint64_t lbm_uint64_t;
88#define SIZEOF(TYPE, MEMBER) (int)(sizeof(((TYPE *)0)->MEMBER))
89#define OFFSETOF(TYPE, MEMBER) (int)(offsetof(TYPE, MEMBER))
90#define STRINGIZE(a) #a
91#define MAKESTRING(a) STRINGIZE(a)
92#define LBM_OTID_BLOCK_SZ 32
93#define LBM_CONTEXT_INSTANCE_BLOCK_SZ 8
94#define LBM_HMAC_BLOCK_SZ 20
97#define UAT_IPV4_CB_DEF(basename,field_name,rec_t) \
98 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) \
101 if (!ws_inet_pton4(strptr, &addr)) \
103 *err = g_strdup("invalid address"); \
108 static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, unsigned len, const void* u1 _U_, const void* u2 _U_) \
111 char* new_buf = g_strndup(buf,len); \
112 g_free((((rec_t*)rec)->field_name)); \
113 (((rec_t*)rec)->field_name) = new_buf; \
114 ws_inet_pton4(new_buf, &addr); \
115 (((rec_t*)rec)->field_name ## _val_h) = g_ntohl(addr); \
117 static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, unsigned* out_len, const void* u1 _U_, const void* u2 _U_) \
119 if (((rec_t*)rec)->field_name ) \
121 *out_ptr = g_strdup((((rec_t*)rec)->field_name)); \
122 *out_len = (unsigned)strlen((((rec_t*)rec)->field_name)); \
126 *out_ptr = g_strdup(""); \
131#define UAT_FLD_IPV4(basename,field_name,title,desc) \
132 {#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}
135#define UAT_IPV4_MC_CB_DEF(basename,field_name,rec_t) \
136 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) \
139 if (!ws_inet_pton4(strptr, &addr)) \
141 *err = g_strdup("invalid address"); \
144 if (!in4_addr_is_multicast(g_ntohl(addr)) && (g_ntohl(addr) != 0)) \
146 *err = g_strdup("invalid multicast address"); \
151 static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, unsigned len, const void* u1 _U_, const void* u2 _U_) \
154 char* new_buf = g_strndup(buf,len); \
155 g_free((((rec_t*)rec)->field_name)); \
156 (((rec_t*)rec)->field_name) = new_buf; \
157 ws_inet_pton4(new_buf, &addr); \
158 (((rec_t*)rec)->field_name ## _val_h) = g_ntohl(addr); \
160 static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, unsigned* out_len, const void* u1 _U_, const void* u2 _U_) \
162 if (((rec_t*)rec)->field_name ) \
164 *out_ptr = g_strdup((((rec_t*)rec)->field_name)); \
165 *out_len = (unsigned)strlen((((rec_t*)rec)->field_name)); \
169 *out_ptr = g_strdup(""); \
174#define UAT_FLD_IPV4_MC(basename,field_name,title,desc) \
175 {#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}
186 uint8_t ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
191 lbm_uim_instance_stream,
192 lbm_uim_domain_stream
193} lbm_uim_stream_type_t;
197 lbm_uim_stream_type_t type;
209 uint32_t substream_id;
242 uint8_t topic_length;
243 uint8_t source_length;
244 uint32_t topic_index;
252 uint8_t topic_length;
260 uint8_t pattern_length;
264#define LBMR_WILDCARD_PATTERN_TYPE_PCRE 1
265#define LBMR_WILDCARD_PATTERN_TYPE_REGEX 2
271 uint8_t queue_length;
272 uint8_t topic_length;
280 uint8_t queue_length;
284#define LBM_TOPIC_OPT_EXFUNC_FFLAG_LJ 0x00000001
285#define LBM_TOPIC_OPT_EXFUNC_FFLAG_UME 0x00000002
286#define LBM_TOPIC_OPT_EXFUNC_FFLAG_UMQ 0x00000004
287#define LBM_TOPIC_OPT_EXFUNC_FFLAG_ULB 0x00000008
290#define LBTRM_PACKET_TYPE_DATA 0x00
291#define LBTRM_PACKET_TYPE_SM 0x02
292#define LBTRM_PACKET_TYPE_NAK 0x03
293#define LBTRM_PACKET_TYPE_NCF 0x04
296#define LBTRM_NCF_REASON_NO_RETRY 0x0
297#define LBTRM_NCF_REASON_IGNORED 0x1
298#define LBTRM_NCF_REASON_RX_DELAY 0x2
299#define LBTRM_NCF_REASON_SHED 0x3
302#define LBTRU_PACKET_TYPE_DATA 0x00
303#define LBTRU_PACKET_TYPE_SM 0x02
304#define LBTRU_PACKET_TYPE_NAK 0x03
305#define LBTRU_PACKET_TYPE_NCF 0x04
306#define LBTRU_PACKET_TYPE_ACK 0x05
307#define LBTRU_PACKET_TYPE_CREQ 0x06
308#define LBTRU_PACKET_TYPE_RST 0x07
311#define LBTRU_NCF_REASON_NO_RETRY 0x0
312#define LBTRU_NCF_REASON_IGNORED 0x1
313#define LBTRU_NCF_REASON_RX_DELAY 0x2
314#define LBTRU_NCF_REASON_SHED 0x3
317#define LBTRU_CREQ_REQUEST_SYN 0x0
320#define LBTRU_RST_REASON_DEFAULT 0x0
322bool lbmc_test_lbmc_header(
tvbuff_t * tvb,
unsigned offset);
323int lbmc_dissect_lbmc_packet(
tvbuff_t * tvb,
unsigned offset,
packet_info * pinfo,
proto_tree * tree,
const char * tag_name, uint64_t channel);
324int lbmc_get_minimum_length(
void);
325uint16_t lbmc_get_message_length(
tvbuff_t * tvb,
unsigned offset);
326bool lbmpdm_verify_payload(
tvbuff_t * tvb,
unsigned offset,
int * encoding, uint32_t* length);
328int lbmpdm_get_minimum_length(
void);
333extern const value_string lbm_wildcard_pattern_type_short[];
338#define LBM_CHANNEL_NO_CHANNEL (~((uint64_t) 0))
340#define LBM_CHANNEL_TRANSPORT_LBTTCP 0x00
341#define LBM_CHANNEL_TRANSPORT_LBTRU 0x01
342#define LBM_CHANNEL_TRANSPORT_LBTRM 0x02
343#define LBM_CHANNEL_TRANSPORT_LBTIPC 0x03
344#define LBM_CHANNEL_TRANSPORT_LBTRDMA 0x04
345#define LBM_CHANNEL_TRANSPORT_LBTSMX 0x05
346#define LBM_CHANNEL_STREAM_TCP 0x10
347#define LBM_CHANNEL_TCP 0x20
349#define LBM_CHANNEL_VALUE_MASK UINT64_C(0xfffffffffffff000)
350#define LBM_CHANNEL_VALUE_SHIFT_COUNT 12
352void lbm_channel_reset(
void);
353uint64_t lbm_channel_assign(uint8_t channel_type);
354bool lbm_channel_is_transport(uint64_t channel);
355uint8_t lbm_channel_type(uint64_t channel);
356uint64_t lbm_channel_assign_unknown_transport_source_lbttcp(
void);
357uint64_t lbm_channel_assign_unknown_transport_client_lbttcp(
void);
358uint64_t lbm_channel_assign_unknown_stream_tcp(
void);
359bool lbm_channel_is_unknown_transport_lbttcp(uint64_t channel);
360bool lbm_channel_is_unknown_transport_source_lbttcp(uint64_t channel);
361bool lbm_channel_is_unknown_transport_client_lbttcp(uint64_t channel);
362bool lbm_channel_is_unknown_stream_tcp(uint64_t channel);
363bool lbm_channel_is_known(uint64_t channel);
365#define LBM_CHANNEL_ID(ch) ((ch & LBM_CHANNEL_VALUE_MASK) >> LBM_CHANNEL_VALUE_SHIFT_COUNT)
375 uint32_t previous_frame;
376 uint32_t previous_type_frame;
378 uint32_t next_type_frame;
394 uint32_t frame_count;
404void lbm_topic_init(
void);
405const char * lbm_topic_find(uint64_t channel, uint32_t topic_index);
406void lbm_topic_add(uint64_t channel, uint32_t topic_index,
const char * name);
Definition packet_info.h:43
Mapping between a 32-bit integer value and its string representation.
Definition value_string.h:33
Internal representation of a wmem balanced tree.
Definition wmem_tree-int.h:81
Definition packet-lbm.h:257
Definition packet-lbm.h:268
Definition packet-lbm.h:278
Definition packet-lbm.h:240
Definition packet-lbm.h:250
Definition packet-lbm.h:216
Definition packet-lbm.h:227
Definition packet-lbm.h:371
Definition packet-lbm.h:386
Definition packet-lbm.h:392
Definition packet-lbm.h:185
Definition packet-lbm.h:178
Definition packet-lbm.h:196
Definition packet-lbm.h:207
Definition tvbuff-int.h:36