aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-lbmc.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-04-07 16:33:51 -0400
committerMichael Mann <mmann78@netscape.net>2014-04-07 23:28:46 +0000
commit2f4ca9c8d979029e7893f2843045f516e3d0b844 (patch)
tree8ab3b4690900c968884a899e3813cbc8ec44fbfa /epan/dissectors/packet-lbmc.c
parent8c7fae2da22371ff06a35d1aab28837d2db5a8ff (diff)
Initial checkin of LBM aka 29West dissectors. See Bug 9718.
Change-Id: If8fcfe1971c8863f370e440f64c36eb7566f6852 Reviewed-on: https://code.wireshark.org/review/113 Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-lbmc.c')
-rw-r--r--epan/dissectors/packet-lbmc.c14178
1 files changed, 14178 insertions, 0 deletions
diff --git a/epan/dissectors/packet-lbmc.c b/epan/dissectors/packet-lbmc.c
new file mode 100644
index 0000000000..bd3cfcf7ed
--- /dev/null
+++ b/epan/dissectors/packet-lbmc.c
@@ -0,0 +1,14178 @@
+/* packet-lbmc.c
+ * Routines for LBMC Packet dissection
+ *
+ * Copyright (c) 2005-2014 Informatica Corporation. All Rights Reserved.
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "config.h"
+#if HAVE_NETINET_IN_H
+ #include <netinet/in.h>
+#else
+typedef unsigned int in_addr_t;
+#endif
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/proto.h>
+#include <epan/expert.h>
+#include <epan/tap.h>
+#include <epan/tfs.h>
+#include <epan/value_string.h>
+#include <epan/wmem/wmem.h>
+#include <epan/to_str.h>
+#include "packet-lbm.h"
+#include "packet-lbttcp.h"
+
+/*----------------------------------------------------------------------------*/
+/* Stream management. */
+/*----------------------------------------------------------------------------*/
+
+/* Instance stream structures. */
+struct lbm_istream_entry_t_stct;
+typedef struct lbm_istream_entry_t_stct lbm_istream_entry_t;
+struct lbm_istream_substream_entry_t_stct;
+typedef struct lbm_istream_substream_entry_t_stct lbm_istream_substream_entry_t;
+
+struct lbm_istream_substream_entry_t_stct
+{
+ address src_addr;
+ guint16 src_port;
+ address dst_addr;
+ guint16 dst_port;
+ guint32 lbm_stream_id;
+ lbm_istream_entry_t * parent;
+ guint32 substream_id;
+ guint32 first_frame;
+ guint32 last_frame;
+ guint32 messages;
+ guint32 bytes;
+};
+
+struct lbm_istream_entry_t_stct
+{
+ guint8 ctxinst_1[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+ guint8 ctxinst_2[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+ guint64 channel;
+ guint32 next_substream_id;
+ guint32 first_frame;
+ guint32 last_frame;
+ guint32 messages;
+ guint32 bytes;
+ wmem_tree_t * substream_list;
+};
+
+/* Domain stream structures */
+struct lbm_dstream_entry_t_stct;
+typedef struct lbm_dstream_entry_t_stct lbm_dstream_entry_t;
+struct lbm_dstream_substream_entry_t_stct;
+typedef struct lbm_dstream_substream_entry_t_stct lbm_dstream_substream_entry_t;
+
+struct lbm_dstream_substream_entry_t_stct
+{
+ address src_addr;
+ guint16 src_port;
+ address dst_addr;
+ guint16 dst_port;
+ guint32 lbm_stream_id;
+ lbm_dstream_entry_t * parent;
+ guint32 substream_id;
+ guint32 first_frame;
+ guint32 last_frame;
+ guint32 messages;
+ guint32 bytes;
+};
+
+struct lbm_dstream_entry_t_stct
+{
+ guint32 domain_1;
+ address addr_1;
+ guint32 domain_2;
+ address addr_2;
+ guint16 port_1;
+ guint16 port_2;
+ guint64 channel;
+ guint32 next_substream_id;
+ guint32 first_frame;
+ guint32 last_frame;
+ guint32 messages;
+ guint32 bytes;
+ wmem_tree_t * substream_list;
+};
+
+/* Instance stream variables */
+#define LBM_ISTREAM_STREAM_KEY_ELEMENT_COUNT 4
+#define LBM_ISTREAM_STREAM_KEY_ELEMENT_CTXINST1_HIGH 0
+#define LBM_ISTREAM_STREAM_KEY_ELEMENT_CTXINST1_LOW 1
+#define LBM_ISTREAM_STREAM_KEY_ELEMENT_CTXINST2_HIGH 2
+#define LBM_ISTREAM_STREAM_KEY_ELEMENT_CTXINST2_LOW 3
+
+#define LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_COUNT 5
+#define LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_SRC_ADDR 0
+#define LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_SRC_PORT 1
+#define LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_DST_ADDR 2
+#define LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_DST_PORT 3
+#define LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_LBM_STREAM_ID 4
+
+static wmem_tree_t * instance_stream_table = NULL;
+
+/* Domain stream variables */
+#define LBM_DSTREAM_STREAM_KEY_ELEMENT_COUNT 6
+#define LBM_DSTREAM_STREAM_KEY_ELEMENT_DOMAIN_1 0
+#define LBM_DSTREAM_STREAM_KEY_ELEMENT_ADDR_1 1
+#define LBM_DSTREAM_STREAM_KEY_ELEMENT_DOMAIN_2 2
+#define LBM_DSTREAM_STREAM_KEY_ELEMENT_ADDR_2 3
+#define LBM_DSTREAM_STREAM_KEY_ELEMENT_PORT_1 4
+#define LBM_DSTREAM_STREAM_KEY_ELEMENT_PORT_2 5
+
+#define LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_COUNT 5
+#define LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_SRC_ADDR 0
+#define LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_SRC_PORT 1
+#define LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_DST_ADDR 2
+#define LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_DST_PORT 3
+#define LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_LBM_STREAM_ID 4
+
+static wmem_tree_t * domain_stream_table = NULL;
+
+static void lbm_stream_init(void)
+{
+ instance_stream_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+ domain_stream_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+}
+
+static void lbm_istream_stream_build_key(guint32 * key_value, wmem_tree_key_t * key, const lbm_istream_entry_t * stream)
+{
+ guint32 val;
+
+ /* Note: ctxinst_1 and ctxinst_2 are 8-byte blocks, not guaranteed to be aligned. So we memcpy them 4 bytes
+ at a time to an intermediate variable, to prevent any alignment issues with assigning to a 32-bit unsigned int
+ on certain platforms.
+ */
+ memcpy((void *) &val, (void *) stream->ctxinst_1, sizeof(guint32));
+ key_value[LBM_ISTREAM_STREAM_KEY_ELEMENT_CTXINST1_HIGH] = val;
+ memcpy((void *) &val, (void *) (stream->ctxinst_1 + sizeof(guint32)), sizeof(guint32));
+ key_value[LBM_ISTREAM_STREAM_KEY_ELEMENT_CTXINST1_LOW] = val;
+ memcpy((void *) &val, (void *) stream->ctxinst_2, sizeof(guint32));
+ key_value[LBM_ISTREAM_STREAM_KEY_ELEMENT_CTXINST2_HIGH] = val;
+ memcpy((void *) &val, (void *) (stream->ctxinst_2 + sizeof(guint32)), sizeof(guint32));
+ key_value[LBM_ISTREAM_STREAM_KEY_ELEMENT_CTXINST2_LOW] = val;
+ key[0].length = LBM_ISTREAM_STREAM_KEY_ELEMENT_COUNT;
+ key[0].key = key_value;
+ key[1].length = 0;
+ key[1].key = NULL;
+}
+
+static void lbm_stream_order_istream_key(lbm_istream_entry_t * stream)
+{
+ guint8 ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+
+ if (memcmp((void *)stream->ctxinst_1, (void *)stream->ctxinst_2, LBM_CONTEXT_INSTANCE_BLOCK_SZ) > 0)
+ {
+ memcpy((void *)ctxinst, (void *)stream->ctxinst_1, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ memcpy((void *)stream->ctxinst_1, (void *)stream->ctxinst_2, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ memcpy((void *)stream->ctxinst_2, (void *)ctxinst, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ }
+}
+
+static lbm_istream_entry_t * lbm_stream_istream_find(const guint8 * instance1, const guint8 * instance2)
+{
+ lbm_istream_entry_t key;
+ lbm_istream_entry_t * entry = NULL;
+ guint32 keyval[LBM_ISTREAM_STREAM_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ memset((void *)&key, 0, sizeof(lbm_istream_entry_t));
+ memcpy((void *)key.ctxinst_1, (void *)instance1, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ memcpy((void *)key.ctxinst_2, (void *)instance2, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ lbm_stream_order_istream_key(&key);
+ lbm_istream_stream_build_key(keyval, tkey, &key);
+ entry = (lbm_istream_entry_t *) wmem_tree_lookup32_array(instance_stream_table, tkey);
+ return (entry);
+}
+
+static lbm_istream_entry_t * lbm_stream_istream_add(const guint8 * instance1, const guint8 * instance2)
+{
+ lbm_istream_entry_t * entry;
+ guint32 keyval[LBM_ISTREAM_STREAM_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ entry = lbm_stream_istream_find(instance1, instance2);
+ if (entry != NULL)
+ {
+ return (entry);
+ }
+ entry = wmem_new(wmem_file_scope(), lbm_istream_entry_t);
+ memcpy((void *)entry->ctxinst_1, (void *)instance1, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ memcpy((void *)entry->ctxinst_2, (void *)instance2, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ lbm_stream_order_istream_key(entry);
+ entry->channel = lbm_channel_assign(LBM_CHANNEL_STREAM_TCP);
+ entry->next_substream_id = 1;
+ entry->first_frame = ~((guint32)0);
+ entry->last_frame = 0;
+ entry->messages = 0;
+ entry->bytes = 0;
+ entry->substream_list = wmem_tree_new(wmem_file_scope());
+ lbm_istream_stream_build_key(keyval, tkey, entry);
+ wmem_tree_insert32_array(instance_stream_table, tkey, (void *) entry);
+ return (entry);
+}
+
+static void lbm_istream_substream_build_key(guint32 * key_value, wmem_tree_key_t * key, const lbm_istream_substream_entry_t * substream)
+{
+ guint32 val;
+
+ /* Note: for the time being we only support IPv4 addresses (currently enforced in the dissectors), so
+ assume it's an IPv4 address. memcpy to an intermediate value (don't know for sure the address.data field
+ has any particular alignment) to prevent any alignment issues with assigning to a 32-bit unsigned int
+ on certain platforms.
+ */
+ memcpy((void *) &val, (void *) substream->src_addr.data, sizeof(guint32));
+ key_value[LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_SRC_ADDR] = val;
+ key_value[LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_SRC_PORT] = (guint32) substream->src_port;
+ memcpy((void *) &val, (void *) substream->dst_addr.data, sizeof(guint32));
+ key_value[LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_DST_ADDR] = val;
+ key_value[LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_DST_PORT] = (guint32) substream->dst_port;
+ key_value[LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_LBM_STREAM_ID] = substream->lbm_stream_id;
+ key[0].length = LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_COUNT;
+ key[0].key = key_value;
+ key[1].length = 0;
+ key[1].key = NULL;
+}
+
+static lbm_istream_substream_entry_t * lbm_stream_istream_substream_find(lbm_istream_entry_t * stream, const address * src_addr, guint16 src_port, const address * dst_addr, guint16 dst_port, guint32 stream_id)
+{
+ lbm_istream_substream_entry_t key;
+ lbm_istream_substream_entry_t * entry = NULL;
+ guint32 keyval[LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ memset((void *)&key, 0, sizeof(lbm_istream_substream_entry_t));
+ COPY_ADDRESS_SHALLOW(&(key.src_addr), src_addr);
+ key.src_port = src_port;
+ COPY_ADDRESS_SHALLOW(&(key.dst_addr), dst_addr);
+ key.dst_port = dst_port;
+ key.lbm_stream_id = stream_id;
+ lbm_istream_substream_build_key(keyval, tkey, &key);
+ entry = (lbm_istream_substream_entry_t *) wmem_tree_lookup32_array(stream->substream_list, tkey);
+ return (entry);
+}
+
+static lbm_istream_substream_entry_t * lbm_stream_istream_substream_add(lbm_istream_entry_t * stream, const address * src_addr, guint16 src_port, const address * dst_addr, guint16 dst_port, guint32 stream_id)
+{
+ lbm_istream_substream_entry_t * entry;
+ guint32 keyval[LBM_ISTREAM_SUBSTREAM_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ entry = lbm_stream_istream_substream_find(stream, src_addr, src_port, dst_addr, dst_port, stream_id);
+ if (entry != NULL)
+ {
+ return (entry);
+ }
+ entry = wmem_new(wmem_file_scope(), lbm_istream_substream_entry_t);
+ SE_COPY_ADDRESS(&(entry->src_addr), src_addr);
+ entry->src_port = src_port;
+ SE_COPY_ADDRESS(&(entry->dst_addr), dst_addr);
+ entry->dst_port = dst_port;
+ entry->lbm_stream_id = stream_id;
+ entry->parent = stream;
+ entry->substream_id = stream->next_substream_id++;
+ entry->first_frame = ~((guint32)0);
+ entry->last_frame = 0;
+ entry->messages = 0;
+ entry->bytes = 0;
+ lbm_istream_substream_build_key(keyval, tkey, entry);
+ wmem_tree_insert32_array(stream->substream_list, tkey, (void *) entry);
+ return (entry);
+}
+
+static void lbm_stream_istream_substream_update(lbm_istream_substream_entry_t * substream, guint16 length, guint32 frame)
+{
+ substream->messages++;
+ substream->parent->messages++;
+ substream->bytes += (guint32)length;
+ substream->parent->bytes += (guint32)length;
+ if (frame < substream->first_frame)
+ {
+ substream->first_frame = frame;
+ }
+ if (frame < substream->parent->first_frame)
+ {
+ substream->parent->first_frame = frame;
+ }
+ if (frame > substream->last_frame)
+ {
+ substream->last_frame = frame;
+ }
+ if (frame > substream->parent->last_frame)
+ {
+ substream->parent->last_frame = frame;
+ }
+}
+
+static void lbm_dstream_stream_build_key(guint32 * key_value, wmem_tree_key_t * key, const lbm_dstream_entry_t * stream)
+{
+ guint32 val;
+
+ /* Note: for the time being we only support IPv4 addresses (currently enforced in the dissectors), so
+ assume it's an IPv4 address. memcpy to an intermediate value (don't know for sure the address.data field
+ has any particular alignment) to prevent any alignment issues with assigning to a 32-bit unsigned int
+ on certain platforms.
+ */
+ key_value[LBM_DSTREAM_STREAM_KEY_ELEMENT_DOMAIN_1] = stream->domain_1;
+ memcpy((void *) &val, (void *) (stream->addr_1.data), sizeof(guint32));
+ key_value[LBM_DSTREAM_STREAM_KEY_ELEMENT_ADDR_1] = val;
+ key_value[LBM_DSTREAM_STREAM_KEY_ELEMENT_DOMAIN_2] = stream->domain_2;
+ memcpy((void *) &val, (void *) (stream->addr_2.data), sizeof(guint32));
+ key_value[LBM_DSTREAM_STREAM_KEY_ELEMENT_ADDR_2] = val;
+ key_value[LBM_DSTREAM_STREAM_KEY_ELEMENT_PORT_1] = (guint32) stream->port_1;
+ key_value[LBM_DSTREAM_STREAM_KEY_ELEMENT_PORT_2] = (guint32) stream->port_2;
+ key[0].length = LBM_DSTREAM_STREAM_KEY_ELEMENT_COUNT;
+ key[0].key = key_value;
+ key[1].length = 0;
+ key[1].key = NULL;
+}
+
+static void lbm_stream_order_dstream_key(lbm_dstream_entry_t * stream)
+{
+ gboolean swap_items = FALSE;
+ address addr;
+ guint32 domain;
+ guint16 port;
+
+ if (stream->domain_1 > stream->domain_2)
+ {
+ swap_items = TRUE;
+ }
+ else if (stream->domain_1 == stream->domain_2)
+ {
+ int compare;
+
+ compare = CMP_ADDRESS(&(stream->addr_1), &(stream->addr_2));
+ if (compare > 0)
+ {
+ swap_items = TRUE;
+ }
+ else if (compare == 0)
+ {
+ if (stream->port_1 > stream->port_2)
+ {
+ swap_items = TRUE;
+ }
+ }
+ }
+ if (swap_items)
+ {
+ domain = stream->domain_1;
+ COPY_ADDRESS_SHALLOW(&addr, &(stream->addr_1));
+ port = stream->port_1;
+
+ stream->domain_1 = stream->domain_2;
+ COPY_ADDRESS_SHALLOW(&(stream->addr_1), &(stream->addr_2));
+ stream->port_1 = stream->port_2;
+
+ stream->domain_2 = domain;
+ COPY_ADDRESS_SHALLOW(&(stream->addr_2), &addr);
+ stream->port_2 = port;
+ }
+}
+
+static lbm_dstream_entry_t * lbm_stream_dstream_find(const lbm_uim_stream_destination_t * endpoint_a, const lbm_uim_stream_destination_t * endpoint_b)
+{
+ lbm_dstream_entry_t key;
+ lbm_dstream_entry_t * entry = NULL;
+ guint32 keyval[LBM_DSTREAM_STREAM_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ key.domain_1 = endpoint_a->domain;
+ COPY_ADDRESS_SHALLOW(&(key.addr_1), &(endpoint_a->addr));
+ key.port_1 = endpoint_a->port;
+ key.domain_2 = endpoint_b->domain;
+ COPY_ADDRESS_SHALLOW(&(key.addr_2), &(endpoint_b->addr));
+ key.port_2 = endpoint_b->port;
+ lbm_stream_order_dstream_key(&key);
+ lbm_dstream_stream_build_key(keyval, tkey, &key);
+ entry = (lbm_dstream_entry_t *) wmem_tree_lookup32_array(domain_stream_table, tkey);
+ return (entry);
+}
+
+static lbm_dstream_entry_t * lbm_stream_dstream_add(const lbm_uim_stream_destination_t * endpoint_a, const lbm_uim_stream_destination_t * endpoint_b)
+{
+ lbm_dstream_entry_t * entry;
+ guint32 keyval[LBM_DSTREAM_STREAM_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ entry = lbm_stream_dstream_find(endpoint_a, endpoint_b);
+ if (entry != NULL)
+ {
+ return (entry);
+ }
+ entry = wmem_new(wmem_file_scope(), lbm_dstream_entry_t);
+ entry->domain_1 = endpoint_a->domain;
+ SE_COPY_ADDRESS(&(entry->addr_1), &(endpoint_a->addr));
+ entry->port_1 = endpoint_a->port;
+ entry->domain_2 = endpoint_b->domain;
+ SE_COPY_ADDRESS(&(entry->addr_2), &(endpoint_b->addr));
+ entry->port_2 = endpoint_b->port;
+ lbm_stream_order_dstream_key(entry);
+ entry->channel = lbm_channel_assign(LBM_CHANNEL_STREAM_TCP);
+ entry->next_substream_id = 1;
+ entry->first_frame = ~((guint32)0);
+ entry->last_frame = 0;
+ entry->messages = 0;
+ entry->bytes = 0;
+ entry->substream_list = wmem_tree_new(wmem_file_scope());
+ lbm_dstream_stream_build_key(keyval, tkey, entry);
+ wmem_tree_insert32_array(domain_stream_table, tkey, (void *) entry);
+ return (entry);
+}
+
+static void lbm_dstream_substream_build_key(guint32 * key_value, wmem_tree_key_t * key, const lbm_dstream_substream_entry_t * substream)
+{
+ guint32 val;
+
+ /* Note: for the time being we only support IPv4 addresses (currently enforced in the dissectors), so
+ assume it's an IPv4 address. memcpy to an intermediate value (don't know for sure the address.data field
+ has any particular alignment) to prevent any alignment issues with assigning to a 32-bit unsigned int
+ on certain platforms.
+ */
+ memcpy((void *) &val, (void *) substream->src_addr.data, sizeof(guint32));
+ key_value[LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_SRC_ADDR] = val;
+ key_value[LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_SRC_PORT] = (guint32) substream->src_port;
+ memcpy((void *) &val, (void *) substream->dst_addr.data, sizeof(guint32));
+ key_value[LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_DST_ADDR] = val;
+ key_value[LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_DST_PORT] = (guint32) substream->dst_port;
+ key_value[LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_LBM_STREAM_ID] = substream->lbm_stream_id;
+ key[0].length = LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_COUNT;
+ key[0].key = key_value;
+ key[1].length = 0;
+ key[1].key = NULL;
+}
+
+static lbm_dstream_substream_entry_t * lbm_stream_dstream_substream_find(lbm_dstream_entry_t * stream, const address * src_addr, guint16 src_port, const address * dst_addr, guint16 dst_port, guint32 stream_id)
+{
+ lbm_dstream_substream_entry_t key;
+ lbm_dstream_substream_entry_t * entry = NULL;
+ guint32 keyval[LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ memset((void *)&key, 0, sizeof(lbm_dstream_substream_entry_t));
+ COPY_ADDRESS_SHALLOW(&(key.src_addr), src_addr);
+ key.src_port = src_port;
+ COPY_ADDRESS_SHALLOW(&(key.dst_addr), dst_addr);
+ key.dst_port = dst_port;
+ key.lbm_stream_id = stream_id;
+ lbm_dstream_substream_build_key(keyval, tkey, &key);
+ entry = (lbm_dstream_substream_entry_t *) wmem_tree_lookup32_array(stream->substream_list, tkey);
+ return (entry);
+}
+
+static lbm_dstream_substream_entry_t * lbm_stream_dstream_substream_add(lbm_dstream_entry_t * stream, const address * src_addr, guint16 src_port, const address * dst_addr, guint16 dst_port, guint32 stream_id)
+{
+ lbm_dstream_substream_entry_t * entry;
+ guint32 keyval[LBM_DSTREAM_SUBSTREAM_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ entry = lbm_stream_dstream_substream_find(stream, src_addr, src_port, dst_addr, dst_port, stream_id);
+ if (entry != NULL)
+ {
+ return (entry);
+ }
+ entry = wmem_new(wmem_file_scope(), lbm_dstream_substream_entry_t);
+ SE_COPY_ADDRESS(&(entry->src_addr), src_addr);
+ entry->src_port = src_port;
+ SE_COPY_ADDRESS(&(entry->dst_addr), dst_addr);
+ entry->dst_port = dst_port;
+ entry->lbm_stream_id = stream_id;
+ entry->parent = stream;
+ entry->substream_id = stream->next_substream_id++;
+ entry->first_frame = ~((guint32)0);
+ entry->last_frame = 0;
+ entry->messages = 0;
+ entry->bytes = 0;
+ lbm_dstream_substream_build_key(keyval, tkey, entry);
+ wmem_tree_insert32_array(stream->substream_list, tkey, (void *) entry);
+ return (entry);
+}
+
+static void lbm_stream_dstream_substream_update(lbm_dstream_substream_entry_t * substream, guint16 length, guint32 frame)
+{
+ substream->messages++;
+ substream->parent->messages++;
+ substream->bytes += (guint32)length;
+ substream->parent->bytes += (guint32)length;
+ if (frame < substream->first_frame)
+ {
+ substream->first_frame = frame;
+ }
+ if (frame < substream->parent->first_frame)
+ {
+ substream->parent->first_frame = frame;
+ }
+ if (frame > substream->last_frame)
+ {
+ substream->last_frame = frame;
+ }
+ if (frame > substream->parent->last_frame)
+ {
+ substream->parent->last_frame = frame;
+ }
+}
+
+/*----------------------------------------------------------------------------*/
+/* Packet layouts. */
+/*----------------------------------------------------------------------------*/
+
+/* LBMC header */
+typedef struct
+{
+ lbm_uint8_t ver_type;
+ lbm_uint8_t next_hdr;
+ lbm_uint16_t msglen;
+ lbm_uint32_t tidx;
+ lbm_uint32_t sqn;
+} lbmc_hdr_t;
+#define O_LBMC_HDR_T_VER_TYPE OFFSETOF(lbmc_hdr_t, ver_type)
+#define L_LBMC_HDR_T_VER_TYPE SIZEOF(lbmc_hdr_t, ver_type)
+#define O_LBMC_HDR_T_NEXT_HDR OFFSETOF(lbmc_hdr_t, next_hdr)
+#define L_LBMC_HDR_T_NEXT_HDR SIZEOF(lbmc_hdr_t, next_hdr)
+#define O_LBMC_HDR_T_MSGLEN OFFSETOF(lbmc_hdr_t, msglen)
+#define L_LBMC_HDR_T_MSGLEN SIZEOF(lbmc_hdr_t, msglen)
+#define O_LBMC_HDR_T_TIDX OFFSETOF(lbmc_hdr_t, tidx)
+#define L_LBMC_HDR_T_TIDX SIZEOF(lbmc_hdr_t, tidx)
+#define O_LBMC_HDR_T_SQN OFFSETOF(lbmc_hdr_t, sqn)
+#define L_LBMC_HDR_T_SQN SIZEOF(lbmc_hdr_t, sqn)
+#define L_LBMC_HDR_T (gint) sizeof(lbmc_hdr_t)
+
+/* LBMC control header */
+typedef struct
+{
+ lbm_uint8_t ver_type;
+ lbm_uint8_t next_hdr;
+ lbm_uint16_t msglen;
+} lbmc_cntl_hdr_t;
+#define O_LBMC_CNTL_HDR_T_VER_TYPE OFFSETOF(lbmc_cntl_hdr_t, ver_type)
+#define L_LBMC_CNTL_HDR_T_VER_TYPE SIZEOF(lbmc_cntl_hdr_t, ver_type)
+#define O_LBMC_CNTL_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_hdr_t, next_hdr)
+#define L_LBMC_CNTL_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_hdr_t, next_hdr)
+#define O_LBMC_CNTL_HDR_T_MSGLEN OFFSETOF(lbmc_cntl_hdr_t, msglen)
+#define L_LBMC_CNTL_HDR_T_MSGLEN SIZEOF(lbmc_cntl_hdr_t, msglen)
+#define L_LBMC_CNTL_HDR_T (gint) sizeof(lbmc_cntl_hdr_t)
+
+#define LBMC_HDR_VER_TYPE_VER_MASK 0xF0
+#define LBMC_HDR_VER_TYPE_TYPE_MASK 0x0F
+
+/* Minimal LBMC header */
+typedef struct
+{
+ lbm_uint8_t ver_type;
+ lbm_uint8_t next_hdr;
+ lbm_uint16_t msglen;
+} lbmc_minimal_hdr_t;
+#define O_LBMC_MINIMAL_HDR_T_VER_TYPE OFFSETOF(lbmc_minimal_hdr_t, ver_type)
+#define L_LBMC_MINIMAL_HDR_T_VER_TYPE SIZEOF(lbmc_minimal_hdr_t, ver_type)
+#define O_LBMC_MINIMAL_HDR_T_NEXT_HDR OFFSETOF(lbmc_minimal_hdr_t, next_hdr)
+#define L_LBMC_MINIMAL_HDR_T_NEXT_HDR SIZEOF(lbmc_minimal_hdr_t, next_hdr)
+#define O_LBMC_MINIMAL_HDR_T_MSGLEN OFFSETOF(lbmc_minimal_hdr_t, msglen)
+#define L_LBMC_MINIMAL_HDR_T_MSGLEN SIZEOF(lbmc_minimal_hdr_t, msglen)
+#define L_LBMC_MINIMAL_HDR_T (gint) sizeof(lbmc_minimal_hdr_t)
+
+#define LBMC_HDR_VER(x) (x >> 4)
+#define LBMC_HDR_TYPE(x) (x & 0xF)
+
+/* LBMC basic header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t res;
+} lbmc_basic_hdr_t;
+#define O_LBMC_BASIC_HDR_T_NEXT_HDR OFFSETOF(lbmc_basic_hdr_t, next_hdr)
+#define L_LBMC_BASIC_HDR_T_NEXT_HDR SIZEOF(lbmc_basic_hdr_t, next_hdr)
+#define O_LBMC_BASIC_HDR_T_HDR_LEN OFFSETOF(lbmc_basic_hdr_t, hdr_len)
+#define L_LBMC_BASIC_HDR_T_HDR_LEN SIZEOF(lbmc_basic_hdr_t, hdr_len)
+#define O_LBMC_BASIC_HDR_T_RES OFFSETOF(lbmc_basic_hdr_t, res)
+#define L_LBMC_BASIC_HDR_T_RES SIZEOF(lbmc_basic_hdr_t, res)
+#define L_LBMC_BASIC_HDR_T (gint) sizeof(lbmc_basic_hdr_t)
+
+/* LBMC fragment header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t first_sqn;
+ lbm_uint32_t offset;
+ lbm_uint32_t len;
+} lbmc_frag_hdr_t;
+#define O_LBMC_FRAG_HDR_T_NEXT_HDR OFFSETOF(lbmc_frag_hdr_t, next_hdr)
+#define L_LBMC_FRAG_HDR_T_NEXT_HDR SIZEOF(lbmc_frag_hdr_t, next_hdr)
+#define O_LBMC_FRAG_HDR_T_HDR_LEN OFFSETOF(lbmc_frag_hdr_t, hdr_len)
+#define L_LBMC_FRAG_HDR_T_HDR_LEN SIZEOF(lbmc_frag_hdr_t, hdr_len)
+#define O_LBMC_FRAG_HDR_T_FLAGS OFFSETOF(lbmc_frag_hdr_t, flags)
+#define L_LBMC_FRAG_HDR_T_FLAGS SIZEOF(lbmc_frag_hdr_t, flags)
+#define O_LBMC_FRAG_HDR_T_FIRST_SQN OFFSETOF(lbmc_frag_hdr_t, first_sqn)
+#define L_LBMC_FRAG_HDR_T_FIRST_SQN SIZEOF(lbmc_frag_hdr_t, first_sqn)
+#define O_LBMC_FRAG_HDR_T_OFFSET OFFSETOF(lbmc_frag_hdr_t, offset)
+#define L_LBMC_FRAG_HDR_T_OFFSET SIZEOF(lbmc_frag_hdr_t, offset)
+#define O_LBMC_FRAG_HDR_T_LEN OFFSETOF(lbmc_frag_hdr_t, len)
+#define L_LBMC_FRAG_HDR_T_LEN SIZEOF(lbmc_frag_hdr_t, len)
+#define L_LBMC_FRAG_HDR_T (gint) sizeof(lbmc_frag_hdr_t)
+
+/* LBMC batch header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+} lbmc_batch_hdr_t;
+#define O_LBMC_BATCH_HDR_T_NEXT_HDR OFFSETOF(lbmc_batch_hdr_t, next_hdr)
+#define L_LBMC_BATCH_HDR_T_NEXT_HDR SIZEOF(lbmc_batch_hdr_t, next_hdr)
+#define O_LBMC_BATCH_HDR_T_HDR_LEN OFFSETOF(lbmc_batch_hdr_t, hdr_len)
+#define L_LBMC_BATCH_HDR_T_HDR_LEN SIZEOF(lbmc_batch_hdr_t, hdr_len)
+#define O_LBMC_BATCH_HDR_T_FLAGS OFFSETOF(lbmc_batch_hdr_t, flags)
+#define L_LBMC_BATCH_HDR_T_FLAGS SIZEOF(lbmc_batch_hdr_t, flags)
+#define L_LBMC_BATCH_HDR_T (gint) sizeof(lbmc_batch_hdr_t)
+
+/* LBMC TCP request header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t res;
+ lbm_uint8_t transport;
+ lbm_uint32_t qidx;
+ lbm_uint16_t port;
+ lbm_uint16_t reserved;
+ lbm_uint32_t ipaddr;
+} lbmc_tcp_request_hdr_t;
+#define O_LBMC_TCP_REQUEST_HDR_T_NEXT_HDR OFFSETOF(lbmc_tcp_request_hdr_t, next_hdr)
+#define L_LBMC_TCP_REQUEST_HDR_T_NEXT_HDR SIZEOF(lbmc_tcp_request_hdr_t, next_hdr)
+#define O_LBMC_TCP_REQUEST_HDR_T_HDR_LEN OFFSETOF(lbmc_tcp_request_hdr_t, hdr_len)
+#define L_LBMC_TCP_REQUEST_HDR_T_HDR_LEN SIZEOF(lbmc_tcp_request_hdr_t, hdr_len)
+#define O_LBMC_TCP_REQUEST_HDR_T_FLAGS OFFSETOF(lbmc_tcp_request_hdr_t, res)
+#define L_LBMC_TCP_REQUEST_HDR_T_FLAGS SIZEOF(lbmc_tcp_request_hdr_t, res)
+#define O_LBMC_TCP_REQUEST_HDR_T_TRANSPORT OFFSETOF(lbmc_tcp_request_hdr_t, transport)
+#define L_LBMC_TCP_REQUEST_HDR_T_TRANSPORT SIZEOF(lbmc_tcp_request_hdr_t, transport)
+#define O_LBMC_TCP_REQUEST_HDR_T_QIDX OFFSETOF(lbmc_tcp_request_hdr_t, qidx)
+#define L_LBMC_TCP_REQUEST_HDR_T_QIDX SIZEOF(lbmc_tcp_request_hdr_t, qidx)
+#define O_LBMC_TCP_REQUEST_HDR_T_PORT OFFSETOF(lbmc_tcp_request_hdr_t, port)
+#define L_LBMC_TCP_REQUEST_HDR_T_PORT SIZEOF(lbmc_tcp_request_hdr_t, port)
+#define O_LBMC_TCP_REQUEST_HDR_T_RESERVED OFFSETOF(lbmc_tcp_request_hdr_t, reserved)
+#define L_LBMC_TCP_REQUEST_HDR_T_RESERVED SIZEOF(lbmc_tcp_request_hdr_t, reserved)
+#define O_LBMC_TCP_REQUEST_HDR_T_IPADDR OFFSETOF(lbmc_tcp_request_hdr_t, ipaddr)
+#define L_LBMC_TCP_REQUEST_HDR_T_IPADDR SIZEOF(lbmc_tcp_request_hdr_t, ipaddr)
+#define L_LBMC_TCP_REQUEST_HDR_T (gint) sizeof(lbmc_tcp_request_hdr_t)
+
+/* LBMC topicname header (an extension to lbmc_basic_hdr_t) */
+#define O_LBMC_TOPICNAME_HDR_T_NEXT_HDR OFFSETOF(lbmc_basic_hdr_t, next_hdr)
+#define L_LBMC_TOPICNAME_HDR_T_NEXT_HDR SIZEOF(lbmc_basic_hdr_t, next_hdr)
+#define O_LBMC_TOPICNAME_HDR_T_HDR_LEN OFFSETOF(lbmc_basic_hdr_t, hdr_len)
+#define L_LBMC_TOPICNAME_HDR_T_HDR_LEN SIZEOF(lbmc_basic_hdr_t, hdr_len)
+#define O_LBMC_TOPICNAME_HDR_T_FLAGS OFFSETOF(lbmc_basic_hdr_t, res)
+#define L_LBMC_TOPICNAME_HDR_T_FLAGS SIZEOF(lbmc_basic_hdr_t, res)
+#define O_LBMC_TOPICNAME_HDR_T_TOPIC (OFFSETOF(lbmc_basic_hdr_t, res) + SIZEOF(lbmc_basic_hdr_t, res))
+
+/* LBMC appheader header. */
+#define O_LBMC_APPHDR_HDR_T_NEXT_HDR OFFSETOF(lbmc_basic_hdr_t, next_hdr)
+#define L_LBMC_APPHDR_HDR_T_NEXT_HDR SIZEOF(lbmc_basic_hdr_t, next_hdr)
+#define O_LBMC_APPHDR_HDR_T_HDR_LEN OFFSETOF(lbmc_basic_hdr_t, hdr_len)
+#define L_LBMC_APPHDR_HDR_T_HDR_LEN SIZEOF(lbmc_basic_hdr_t, hdr_len)
+#define O_LBMC_APPHDR_HDR_T_CODE OFFSETOF(lbmc_basic_hdr_t, res)
+#define L_LBMC_APPHDR_HDR_T_CODE SIZEOF(lbmc_basic_hdr_t, res)
+#define O_LBMC_APPHDR_HDR_T_DATA (OFFSETOF(lbmc_basic_hdr_t, res) + SIZEOF(lbmc_basic_hdr_t, res))
+
+#define LBMC_APPHDR_CODE_MASK 0x7fff
+
+/* LBMC appheader chain element */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t res;
+} lbmc_apphdr_chain_element_t;
+#define O_LBMC_APPHDR_CHAIN_ELEMENT_T_NEXT_HDR OFFSETOF(lbmc_apphdr_chain_element_t, next_hdr)
+#define L_LBMC_APPHDR_CHAIN_ELEMENT_T_NEXT_HDR SIZEOF(lbmc_apphdr_chain_element_t, next_hdr)
+#define O_LBMC_APPHDR_CHAIN_ELEMENT_T_HDR_LEN OFFSETOF(lbmc_apphdr_chain_element_t, hdr_len)
+#define L_LBMC_APPHDR_CHAIN_ELEMENT_T_HDR_LEN SIZEOF(lbmc_apphdr_chain_element_t, hdr_len)
+#define O_LBMC_APPHDR_CHAIN_ELEMENT_T_RES OFFSETOF(lbmc_apphdr_chain_element_t, res)
+#define L_LBMC_APPHDR_CHAIN_ELEMENT_T_RES SIZEOF(lbmc_apphdr_chain_element_t, res)
+#define L_LBMC_APPHDR_CHAIN_ELEMENT_T_MIN (gint) sizeof(lbmc_apphdr_chain_element_t)
+
+/* LBMC appheader chain message properties element */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t res;
+ lbm_uint32_t len;
+} lbmc_apphdr_chain_msgprop_element_t;
+#define O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_NEXT_HDR OFFSETOF(lbmc_apphdr_chain_msgprop_element_t, next_hdr)
+#define L_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_NEXT_HDR SIZEOF(lbmc_apphdr_chain_msgprop_element_t, next_hdr)
+#define O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_HDR_LEN OFFSETOF(lbmc_apphdr_chain_msgprop_element_t, hdr_len)
+#define L_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_HDR_LEN SIZEOF(lbmc_apphdr_chain_msgprop_element_t, hdr_len)
+#define O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_RES OFFSETOF(lbmc_apphdr_chain_msgprop_element_t, res)
+#define L_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_RES SIZEOF(lbmc_apphdr_chain_msgprop_element_t, res)
+#define O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_LEN OFFSETOF(lbmc_apphdr_chain_msgprop_element_t, len)
+#define L_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_LEN SIZEOF(lbmc_apphdr_chain_msgprop_element_t, len)
+#define L_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T (gint) sizeof(lbmc_apphdr_chain_msgprop_element_t)
+
+/* LBMC appheader chain header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t res;
+ lbm_uint8_t first_chain_hdr;
+} lbmc_apphdr_chain_hdr_t;
+#define O_LBMC_APPHDR_CHAIN_HDR_T_NEXT_HDR OFFSETOF(lbmc_apphdr_chain_hdr_t, next_hdr)
+#define L_LBMC_APPHDR_CHAIN_HDR_T_NEXT_HDR SIZEOF(lbmc_apphdr_chain_hdr_t, next_hdr)
+#define O_LBMC_APPHDR_CHAIN_HDR_T_HDR_LEN OFFSETOF(lbmc_apphdr_chain_hdr_t, hdr_len)
+#define L_LBMC_APPHDR_CHAIN_HDR_T_HDR_LEN SIZEOF(lbmc_apphdr_chain_hdr_t, hdr_len)
+#define O_LBMC_APPHDR_CHAIN_HDR_T_RES OFFSETOF(lbmc_apphdr_chain_hdr_t, res)
+#define L_LBMC_APPHDR_CHAIN_HDR_T_RES SIZEOF(lbmc_apphdr_chain_hdr_t, res)
+#define O_LBMC_APPHDR_CHAIN_HDR_T_FIRST_CHAIN_HDR OFFSETOF(lbmc_apphdr_chain_hdr_t, first_chain_hdr)
+#define L_LBMC_APPHDR_CHAIN_HDR_T_FIRST_CHAIN_HDR SIZEOF(lbmc_apphdr_chain_hdr_t, first_chain_hdr)
+#define L_LBMC_APPHDR_CHAIN_HDR_T (gint) sizeof(lbmc_apphdr_chain_hdr_t)
+
+/* LBMC UMQ Message ID header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint8_t msgid_regid[8];
+ lbm_uint8_t msgid_stamp[8];
+} lbmc_umq_msgid_hdr_t;
+#define O_LBMC_UMQ_MSGID_HDR_T_NEXT_HDR OFFSETOF(lbmc_umq_msgid_hdr_t, next_hdr)
+#define L_LBMC_UMQ_MSGID_HDR_T_NEXT_HDR SIZEOF(lbmc_umq_msgid_hdr_t, next_hdr)
+#define O_LBMC_UMQ_MSGID_HDR_T_HDR_LEN OFFSETOF(lbmc_umq_msgid_hdr_t, hdr_len)
+#define L_LBMC_UMQ_MSGID_HDR_T_HDR_LEN SIZEOF(lbmc_umq_msgid_hdr_t, hdr_len)
+#define O_LBMC_UMQ_MSGID_HDR_T_FLAGS OFFSETOF(lbmc_umq_msgid_hdr_t, flags)
+#define L_LBMC_UMQ_MSGID_HDR_T_FLAGS SIZEOF(lbmc_umq_msgid_hdr_t, flags)
+#define O_LBMC_UMQ_MSGID_HDR_T_MSGID_REGID OFFSETOF(lbmc_umq_msgid_hdr_t, msgid_regid)
+#define L_LBMC_UMQ_MSGID_HDR_T_MSGID_REGID SIZEOF(lbmc_umq_msgid_hdr_t, msgid_regid)
+#define O_LBMC_UMQ_MSGID_HDR_T_MSGID_STAMP OFFSETOF(lbmc_umq_msgid_hdr_t, msgid_stamp)
+#define L_LBMC_UMQ_MSGID_HDR_T_MSGID_STAMP SIZEOF(lbmc_umq_msgid_hdr_t, msgid_stamp)
+#define L_LBMC_UMQ_MSGID_HDR_T (gint) sizeof(lbmc_umq_msgid_hdr_t)
+
+/* LBMC UMQ SQD receive header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t queue_id;
+ lbm_uint32_t queue_ver;
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_umq_sqd_rcv_hdr_t;
+#define O_LBMC_UMQ_SQD_RCV_HDR_T_NEXT_HDR OFFSETOF(lbmc_umq_sqd_rcv_hdr_t, next_hdr)
+#define L_LBMC_UMQ_SQD_RCV_HDR_T_NEXT_HDR SIZEOF(lbmc_umq_sqd_rcv_hdr_t, next_hdr)
+#define O_LBMC_UMQ_SQD_RCV_HDR_T_HDR_LEN OFFSETOF(lbmc_umq_sqd_rcv_hdr_t, hdr_len)
+#define L_LBMC_UMQ_SQD_RCV_HDR_T_HDR_LEN SIZEOF(lbmc_umq_sqd_rcv_hdr_t, hdr_len)
+#define O_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS OFFSETOF(lbmc_umq_sqd_rcv_hdr_t, flags)
+#define L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS SIZEOF(lbmc_umq_sqd_rcv_hdr_t, flags)
+#define O_LBMC_UMQ_SQD_RCV_HDR_T_QUEUE_ID OFFSETOF(lbmc_umq_sqd_rcv_hdr_t, queue_id)
+#define L_LBMC_UMQ_SQD_RCV_HDR_T_QUEUE_ID SIZEOF(lbmc_umq_sqd_rcv_hdr_t, queue_id)
+#define O_LBMC_UMQ_SQD_RCV_HDR_T_QUEUE_VER OFFSETOF(lbmc_umq_sqd_rcv_hdr_t, queue_ver)
+#define L_LBMC_UMQ_SQD_RCV_HDR_T_QUEUE_VER SIZEOF(lbmc_umq_sqd_rcv_hdr_t, queue_ver)
+#define O_LBMC_UMQ_SQD_RCV_HDR_T_RCR_IDX OFFSETOF(lbmc_umq_sqd_rcv_hdr_t, rcr_idx)
+#define L_LBMC_UMQ_SQD_RCV_HDR_T_RCR_IDX SIZEOF(lbmc_umq_sqd_rcv_hdr_t, rcr_idx)
+#define O_LBMC_UMQ_SQD_RCV_HDR_T_ASSIGN_ID OFFSETOF(lbmc_umq_sqd_rcv_hdr_t, assign_id)
+#define L_LBMC_UMQ_SQD_RCV_HDR_T_ASSIGN_ID SIZEOF(lbmc_umq_sqd_rcv_hdr_t, assign_id)
+#define L_LBMC_UMQ_SQD_RCV_HDR_T (gint) sizeof(lbmc_umq_sqd_rcv_hdr_t)
+
+/* LBMC UMQ resubmission header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t resp_ip;
+ lbm_uint16_t resp_port;
+ lbm_uint16_t appset_idx;
+} lbmc_umq_resub_hdr_t;
+#define O_LBMC_UMQ_RESUB_HDR_T_NEXT_HDR OFFSETOF(lbmc_umq_resub_hdr_t, next_hdr)
+#define L_LBMC_UMQ_RESUB_HDR_T_NEXT_HDR SIZEOF(lbmc_umq_resub_hdr_t, next_hdr)
+#define O_LBMC_UMQ_RESUB_HDR_T_HDR_LEN OFFSETOF(lbmc_umq_resub_hdr_t, hdr_len)
+#define L_LBMC_UMQ_RESUB_HDR_T_HDR_LEN SIZEOF(lbmc_umq_resub_hdr_t, hdr_len)
+#define O_LBMC_UMQ_RESUB_HDR_T_FLAGS OFFSETOF(lbmc_umq_resub_hdr_t, flags)
+#define L_LBMC_UMQ_RESUB_HDR_T_FLAGS SIZEOF(lbmc_umq_resub_hdr_t, flags)
+#define O_LBMC_UMQ_RESUB_HDR_T_RCR_IDX OFFSETOF(lbmc_umq_resub_hdr_t, rcr_idx)
+#define L_LBMC_UMQ_RESUB_HDR_T_RCR_IDX SIZEOF(lbmc_umq_resub_hdr_t, rcr_idx)
+#define O_LBMC_UMQ_RESUB_HDR_T_RESP_IP OFFSETOF(lbmc_umq_resub_hdr_t, resp_ip)
+#define L_LBMC_UMQ_RESUB_HDR_T_RESP_IP SIZEOF(lbmc_umq_resub_hdr_t, resp_ip)
+#define O_LBMC_UMQ_RESUB_HDR_T_RESP_PORT OFFSETOF(lbmc_umq_resub_hdr_t, resp_port)
+#define L_LBMC_UMQ_RESUB_HDR_T_RESP_PORT SIZEOF(lbmc_umq_resub_hdr_t, resp_port)
+#define O_LBMC_UMQ_RESUB_HDR_T_APPSET_IDX OFFSETOF(lbmc_umq_resub_hdr_t, appset_idx)
+#define L_LBMC_UMQ_RESUB_HDR_T_APPSET_IDX SIZEOF(lbmc_umq_resub_hdr_t, appset_idx)
+#define L_LBMC_UMQ_RESUB_HDR_T (gint) sizeof(lbmc_umq_resub_hdr_t)
+
+/* LBMC originating transport ID header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint8_t otid[LBM_OTID_BLOCK_SZ];
+} lbmc_otid_hdr_t;
+#define O_LBMC_OTID_HDR_T_NEXT_HDR OFFSETOF(lbmc_otid_hdr_t, next_hdr)
+#define L_LBMC_OTID_HDR_T_NEXT_HDR SIZEOF(lbmc_otid_hdr_t, next_hdr)
+#define O_LBMC_OTID_HDR_T_HDR_LEN OFFSETOF(lbmc_otid_hdr_t, hdr_len)
+#define L_LBMC_OTID_HDR_T_HDR_LEN SIZEOF(lbmc_otid_hdr_t, hdr_len)
+#define O_LBMC_OTID_HDR_T_FLAGS OFFSETOF(lbmc_otid_hdr_t, flags)
+#define L_LBMC_OTID_HDR_T_FLAGS SIZEOF(lbmc_otid_hdr_t, flags)
+#define O_LBMC_OTID_HDR_T_OTID OFFSETOF(lbmc_otid_hdr_t, otid)
+#define L_LBMC_OTID_HDR_T_OTID SIZEOF(lbmc_otid_hdr_t, otid)
+#define L_LBMC_OTID_HDR_T (gint) sizeof(lbmc_otid_hdr_t)
+
+/* LBMC context instance header(s) */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint8_t ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+} lbmc_ctxinst_hdr_t;
+#define O_LBMC_CTXINST_HDR_T_NEXT_HDR OFFSETOF(lbmc_ctxinst_hdr_t, next_hdr)
+#define L_LBMC_CTXINST_HDR_T_NEXT_HDR SIZEOF(lbmc_ctxinst_hdr_t, next_hdr)
+#define O_LBMC_CTXINST_HDR_T_HDR_LEN OFFSETOF(lbmc_ctxinst_hdr_t, hdr_len)
+#define L_LBMC_CTXINST_HDR_T_HDR_LEN SIZEOF(lbmc_ctxinst_hdr_t, hdr_len)
+#define O_LBMC_CTXINST_HDR_T_FLAGS OFFSETOF(lbmc_ctxinst_hdr_t, flags)
+#define L_LBMC_CTXINST_HDR_T_FLAGS SIZEOF(lbmc_ctxinst_hdr_t, flags)
+#define O_LBMC_CTXINST_HDR_T_CTXINST OFFSETOF(lbmc_ctxinst_hdr_t, ctxinst)
+#define L_LBMC_CTXINST_HDR_T_CTXINST SIZEOF(lbmc_ctxinst_hdr_t, ctxinst)
+#define L_LBMC_CTXINST_HDR_T (gint) sizeof(lbmc_ctxinst_hdr_t)
+
+/* LBMC source index header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ char srcidx[8];
+} lbmc_srcidx_hdr_t;
+#define O_LBMC_SRCIDX_HDR_T_NEXT_HDR OFFSETOF(lbmc_srcidx_hdr_t, next_hdr)
+#define L_LBMC_SRCIDX_HDR_T_NEXT_HDR SIZEOF(lbmc_srcidx_hdr_t, next_hdr)
+#define O_LBMC_SRCIDX_HDR_T_HDR_LEN OFFSETOF(lbmc_srcidx_hdr_t, hdr_len)
+#define L_LBMC_SRCIDX_HDR_T_HDR_LEN SIZEOF(lbmc_srcidx_hdr_t, hdr_len)
+#define O_LBMC_SRCIDX_HDR_T_FLAGS OFFSETOF(lbmc_srcidx_hdr_t, flags)
+#define L_LBMC_SRCIDX_HDR_T_FLAGS SIZEOF(lbmc_srcidx_hdr_t, flags)
+#define O_LBMC_SRCIDX_HDR_T_SRCIDX OFFSETOF(lbmc_srcidx_hdr_t, srcidx)
+#define L_LBMC_SRCIDX_HDR_T_SRCIDX SIZEOF(lbmc_srcidx_hdr_t, srcidx)
+#define L_LBMC_SRCIDX_HDR_T (gint) sizeof(lbmc_srcidx_hdr_t)
+
+/* LBMC UMQ ULB message header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t queue_id;
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t num_ras;
+} lbmc_umq_ulb_msg_hdr_t;
+#define O_LBMC_UMQ_ULB_MSG_HDR_T_NEXT_HDR OFFSETOF(lbmc_umq_ulb_msg_hdr_t, next_hdr)
+#define L_LBMC_UMQ_ULB_MSG_HDR_T_NEXT_HDR SIZEOF(lbmc_umq_ulb_msg_hdr_t, next_hdr)
+#define O_LBMC_UMQ_ULB_MSG_HDR_T_HDR_LEN OFFSETOF(lbmc_umq_ulb_msg_hdr_t, hdr_len)
+#define L_LBMC_UMQ_ULB_MSG_HDR_T_HDR_LEN SIZEOF(lbmc_umq_ulb_msg_hdr_t, hdr_len)
+#define O_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS OFFSETOF(lbmc_umq_ulb_msg_hdr_t, flags)
+#define L_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS SIZEOF(lbmc_umq_ulb_msg_hdr_t, flags)
+#define O_LBMC_UMQ_ULB_MSG_HDR_T_QUEUE_ID OFFSETOF(lbmc_umq_ulb_msg_hdr_t, queue_id)
+#define L_LBMC_UMQ_ULB_MSG_HDR_T_QUEUE_ID SIZEOF(lbmc_umq_ulb_msg_hdr_t, queue_id)
+#define O_LBMC_UMQ_ULB_MSG_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_umq_ulb_msg_hdr_t, ulb_src_id)
+#define L_LBMC_UMQ_ULB_MSG_HDR_T_ULB_SRC_ID SIZEOF(lbmc_umq_ulb_msg_hdr_t, ulb_src_id)
+#define O_LBMC_UMQ_ULB_MSG_HDR_T_ASSIGN_ID OFFSETOF(lbmc_umq_ulb_msg_hdr_t, assign_id)
+#define L_LBMC_UMQ_ULB_MSG_HDR_T_ASSIGN_ID SIZEOF(lbmc_umq_ulb_msg_hdr_t, assign_id)
+#define O_LBMC_UMQ_ULB_MSG_HDR_T_APPSET_IDX OFFSETOF(lbmc_umq_ulb_msg_hdr_t, appset_idx)
+#define L_LBMC_UMQ_ULB_MSG_HDR_T_APPSET_IDX SIZEOF(lbmc_umq_ulb_msg_hdr_t, appset_idx)
+#define O_LBMC_UMQ_ULB_MSG_HDR_T_NUM_RAS OFFSETOF(lbmc_umq_ulb_msg_hdr_t, num_ras)
+#define L_LBMC_UMQ_ULB_MSG_HDR_T_NUM_RAS SIZEOF(lbmc_umq_ulb_msg_hdr_t, num_ras)
+#define L_LBMC_UMQ_ULB_MSG_HDR_T (gint) sizeof(lbmc_umq_ulb_msg_hdr_t)
+
+/* LBMC control source-side filtering initialization header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t transport;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t client_idx;
+ lbm_uint16_t ssf_port;
+ lbm_uint16_t res;
+ lbm_uint32_t ssf_ip;
+} lbmc_cntl_ssf_init_hdr_t;
+#define O_LBMC_CNTL_SSF_INIT_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ssf_init_hdr_t, next_hdr)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ssf_init_hdr_t, next_hdr)
+#define O_LBMC_CNTL_SSF_INIT_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ssf_init_hdr_t, hdr_len)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ssf_init_hdr_t, hdr_len)
+#define O_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ssf_init_hdr_t, flags)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS SIZEOF(lbmc_cntl_ssf_init_hdr_t, flags)
+#define O_LBMC_CNTL_SSF_INIT_HDR_T_TRANSPORT OFFSETOF(lbmc_cntl_ssf_init_hdr_t, transport)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T_TRANSPORT SIZEOF(lbmc_cntl_ssf_init_hdr_t, transport)
+#define O_LBMC_CNTL_SSF_INIT_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_ssf_init_hdr_t, transport_idx)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_ssf_init_hdr_t, transport_idx)
+#define O_LBMC_CNTL_SSF_INIT_HDR_T_CLIENT_IDX OFFSETOF(lbmc_cntl_ssf_init_hdr_t, client_idx)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T_CLIENT_IDX SIZEOF(lbmc_cntl_ssf_init_hdr_t, client_idx)
+#define O_LBMC_CNTL_SSF_INIT_HDR_T_SSF_PORT OFFSETOF(lbmc_cntl_ssf_init_hdr_t, ssf_port)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T_SSF_PORT SIZEOF(lbmc_cntl_ssf_init_hdr_t, ssf_port)
+#define O_LBMC_CNTL_SSF_INIT_HDR_T_RES OFFSETOF(lbmc_cntl_ssf_init_hdr_t, res)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T_RES SIZEOF(lbmc_cntl_ssf_init_hdr_t, res)
+#define O_LBMC_CNTL_SSF_INIT_HDR_T_SSF_IP OFFSETOF(lbmc_cntl_ssf_init_hdr_t, ssf_ip)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T_SSF_IP SIZEOF(lbmc_cntl_ssf_init_hdr_t, ssf_ip)
+#define L_LBMC_CNTL_SSF_INIT_HDR_T (gint) sizeof(lbmc_cntl_ssf_init_hdr_t)
+
+/* LBMC control source-side filtering control request header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t res;
+ lbm_uint8_t mode;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+ lbm_uint32_t client_idx;
+} lbmc_cntl_ssf_creq_hdr_t;
+#define O_LBMC_CNTL_SSF_CREQ_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ssf_creq_hdr_t, next_hdr)
+#define L_LBMC_CNTL_SSF_CREQ_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ssf_creq_hdr_t, next_hdr)
+#define O_LBMC_CNTL_SSF_CREQ_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ssf_creq_hdr_t, hdr_len)
+#define L_LBMC_CNTL_SSF_CREQ_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ssf_creq_hdr_t, hdr_len)
+#define O_LBMC_CNTL_SSF_CREQ_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ssf_creq_hdr_t, res)
+#define L_LBMC_CNTL_SSF_CREQ_HDR_T_FLAGS SIZEOF(lbmc_cntl_ssf_creq_hdr_t, res)
+#define O_LBMC_CNTL_SSF_CREQ_HDR_T_MODE OFFSETOF(lbmc_cntl_ssf_creq_hdr_t, mode)
+#define L_LBMC_CNTL_SSF_CREQ_HDR_T_MODE SIZEOF(lbmc_cntl_ssf_creq_hdr_t, mode)
+#define O_LBMC_CNTL_SSF_CREQ_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_ssf_creq_hdr_t, transport_idx)
+#define L_LBMC_CNTL_SSF_CREQ_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_ssf_creq_hdr_t, transport_idx)
+#define O_LBMC_CNTL_SSF_CREQ_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_ssf_creq_hdr_t, topic_idx)
+#define L_LBMC_CNTL_SSF_CREQ_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_ssf_creq_hdr_t, topic_idx)
+#define O_LBMC_CNTL_SSF_CREQ_HDR_T_CLIENT_IDX OFFSETOF(lbmc_cntl_ssf_creq_hdr_t, client_idx)
+#define L_LBMC_CNTL_SSF_CREQ_HDR_T_CLIENT_IDX SIZEOF(lbmc_cntl_ssf_creq_hdr_t, client_idx)
+#define L_LBMC_CNTL_SSF_CREQ_HDR_T (gint) sizeof(lbmc_cntl_ssf_creq_hdr_t)
+
+/* LBMC control UME presistent registration header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t marker;
+ lbm_uint32_t reg_id;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+ lbm_uint32_t src_reg_id;
+ lbm_uint16_t resp_port;
+ lbm_uint16_t res2;
+ lbm_uint32_t resp_ip;
+} lbmc_cntl_ume_preg_hdr_t;
+#define O_LBMC_CNTL_UME_PREG_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_preg_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_preg_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_preg_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_preg_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_preg_hdr_t, flags)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_preg_hdr_t, flags)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_MARKER OFFSETOF(lbmc_cntl_ume_preg_hdr_t, marker)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_MARKER SIZEOF(lbmc_cntl_ume_preg_hdr_t, marker)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_REG_ID OFFSETOF(lbmc_cntl_ume_preg_hdr_t, reg_id)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_REG_ID SIZEOF(lbmc_cntl_ume_preg_hdr_t, reg_id)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_ume_preg_hdr_t, transport_idx)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_ume_preg_hdr_t, transport_idx)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_ume_preg_hdr_t, topic_idx)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_ume_preg_hdr_t, topic_idx)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_SRC_REG_ID OFFSETOF(lbmc_cntl_ume_preg_hdr_t, src_reg_id)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_SRC_REG_ID SIZEOF(lbmc_cntl_ume_preg_hdr_t, src_reg_id)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_RESP_PORT OFFSETOF(lbmc_cntl_ume_preg_hdr_t, resp_port)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_RESP_PORT SIZEOF(lbmc_cntl_ume_preg_hdr_t, resp_port)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_RES2 OFFSETOF(lbmc_cntl_ume_preg_hdr_t, res2)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_RES2 SIZEOF(lbmc_cntl_ume_preg_hdr_t, res2)
+#define O_LBMC_CNTL_UME_PREG_HDR_T_RESP_IP OFFSETOF(lbmc_cntl_ume_preg_hdr_t, resp_ip)
+#define L_LBMC_CNTL_UME_PREG_HDR_T_RESP_IP SIZEOF(lbmc_cntl_ume_preg_hdr_t, resp_ip)
+#define L_LBMC_CNTL_UME_PREG_HDR_T (gint) sizeof(lbmc_cntl_ume_preg_hdr_t)
+
+#define LBMC_CNTL_UME_PREG_MARKER(x) (x & 0x7F)
+#define LBMC_CNTL_UME_PREG_MARKER_MASK 0x7F
+
+/* LBMC control UME persistent registration response header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t code;
+ lbm_uint8_t marker;
+ lbm_uint32_t reg_id;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+ lbm_uint32_t low_seqnum;
+ lbm_uint32_t high_seqnum;
+} lbmc_cntl_ume_preg_resp_hdr_t;
+#define O_LBMC_CNTL_UME_PREG_RESP_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_preg_resp_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_preg_resp_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_PREG_RESP_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_preg_resp_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_preg_resp_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE OFFSETOF(lbmc_cntl_ume_preg_resp_hdr_t, code)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE SIZEOF(lbmc_cntl_ume_preg_resp_hdr_t, code)
+#define O_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER OFFSETOF(lbmc_cntl_ume_preg_resp_hdr_t, marker)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER SIZEOF(lbmc_cntl_ume_preg_resp_hdr_t, marker)
+#define O_LBMC_CNTL_UME_PREG_RESP_HDR_T_REG_ID OFFSETOF(lbmc_cntl_ume_preg_resp_hdr_t, reg_id)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T_REG_ID SIZEOF(lbmc_cntl_ume_preg_resp_hdr_t, reg_id)
+#define O_LBMC_CNTL_UME_PREG_RESP_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_ume_preg_resp_hdr_t, transport_idx)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_ume_preg_resp_hdr_t, transport_idx)
+#define O_LBMC_CNTL_UME_PREG_RESP_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_ume_preg_resp_hdr_t, topic_idx)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_ume_preg_resp_hdr_t, topic_idx)
+#define O_LBMC_CNTL_UME_PREG_RESP_HDR_T_LOW_SEQNUM OFFSETOF(lbmc_cntl_ume_preg_resp_hdr_t, low_seqnum)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T_LOW_SEQNUM SIZEOF(lbmc_cntl_ume_preg_resp_hdr_t, low_seqnum)
+#define O_LBMC_CNTL_UME_PREG_RESP_HDR_T_HIGH_SEQNUM OFFSETOF(lbmc_cntl_ume_preg_resp_hdr_t, high_seqnum)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T_HIGH_SEQNUM SIZEOF(lbmc_cntl_ume_preg_resp_hdr_t, high_seqnum)
+#define L_LBMC_CNTL_UME_PREG_RESP_HDR_T (gint) sizeof(lbmc_cntl_ume_preg_resp_hdr_t)
+
+#define LBMC_CNTL_UME_PREG_RESP_CODE(x) (x & 0x0F)
+#define LBMC_CNTL_UME_PREG_RESP_CODE_MASK 0x0F
+
+/* LBMC control UME acknowledgement header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t type;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t id_2;
+ lbm_uint32_t rcv_reg_id;
+ lbm_uint32_t seqnum;
+} lbmc_cntl_ume_ack_hdr_t;
+#define O_LBMC_CNTL_UME_ACK_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_ack_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_ACK_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_ack_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_ACK_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_ack_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_ACK_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_ack_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_ACK_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_ack_hdr_t, flags)
+#define L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_ack_hdr_t, flags)
+#define O_LBMC_CNTL_UME_ACK_HDR_T_TYPE OFFSETOF(lbmc_cntl_ume_ack_hdr_t, type)
+#define L_LBMC_CNTL_UME_ACK_HDR_T_TYPE SIZEOF(lbmc_cntl_ume_ack_hdr_t, type)
+#define O_LBMC_CNTL_UME_ACK_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_ume_ack_hdr_t, transport_idx)
+#define L_LBMC_CNTL_UME_ACK_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_ume_ack_hdr_t, transport_idx)
+#define O_LBMC_CNTL_UME_ACK_HDR_T_ID_2 OFFSETOF(lbmc_cntl_ume_ack_hdr_t, id_2)
+#define L_LBMC_CNTL_UME_ACK_HDR_T_ID_2 SIZEOF(lbmc_cntl_ume_ack_hdr_t, id_2)
+#define O_LBMC_CNTL_UME_ACK_HDR_T_RCV_REG_ID OFFSETOF(lbmc_cntl_ume_ack_hdr_t, rcv_reg_id)
+#define L_LBMC_CNTL_UME_ACK_HDR_T_RCV_REG_ID SIZEOF(lbmc_cntl_ume_ack_hdr_t, rcv_reg_id)
+#define O_LBMC_CNTL_UME_ACK_HDR_T_SEQNUM OFFSETOF(lbmc_cntl_ume_ack_hdr_t, seqnum)
+#define L_LBMC_CNTL_UME_ACK_HDR_T_SEQNUM SIZEOF(lbmc_cntl_ume_ack_hdr_t, seqnum)
+#define L_LBMC_CNTL_UME_ACK_HDR_T (gint) sizeof(lbmc_cntl_ume_ack_hdr_t)
+
+/* LBMC control UME ranged acknowledgement header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t first_seqnum;
+ lbm_uint32_t last_seqnum;
+} lbmc_cntl_ume_ranged_ack_hdr_t;
+#define O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_ranged_ack_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_ranged_ack_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_ranged_ack_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_ranged_ack_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_ranged_ack_hdr_t, flags)
+#define L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_ranged_ack_hdr_t, flags)
+#define O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FIRST_SEQNUM OFFSETOF(lbmc_cntl_ume_ranged_ack_hdr_t, first_seqnum)
+#define L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FIRST_SEQNUM SIZEOF(lbmc_cntl_ume_ranged_ack_hdr_t, first_seqnum)
+#define O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_LAST_SEQNUM OFFSETOF(lbmc_cntl_ume_ranged_ack_hdr_t, last_seqnum)
+#define L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_LAST_SEQNUM SIZEOF(lbmc_cntl_ume_ranged_ack_hdr_t, last_seqnum)
+#define L_LBMC_CNTL_UME_RANGED_ACK_HDR_T (gint) sizeof(lbmc_cntl_ume_ranged_ack_hdr_t)
+
+/* LBMC control UME acknowledgement ID header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t id;
+} lbmc_cntl_ume_ack_id_hdr_t;
+#define O_LBMC_CNTL_UME_ACK_ID_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_ack_id_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_ACK_ID_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_ack_id_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_ACK_ID_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_ack_id_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_ACK_ID_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_ack_id_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_ACK_ID_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_ack_id_hdr_t, flags)
+#define L_LBMC_CNTL_UME_ACK_ID_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_ack_id_hdr_t, flags)
+#define O_LBMC_CNTL_UME_ACK_ID_HDR_T_ID OFFSETOF(lbmc_cntl_ume_ack_id_hdr_t, id)
+#define L_LBMC_CNTL_UME_ACK_ID_HDR_T_ID SIZEOF(lbmc_cntl_ume_ack_id_hdr_t, id)
+#define L_LBMC_CNTL_UME_ACK_ID_HDR_T (gint) sizeof(lbmc_cntl_ume_ack_id_hdr_t)
+
+/* LBMC control UME retransmision request header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t request_idx;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t id_2;
+ lbm_uint32_t seqnum;
+ lbm_uint16_t rx_port;
+ lbm_uint16_t res;
+ lbm_uint32_t rx_ip;
+} lbmc_cntl_ume_rxreq_hdr_t;
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, flags)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, flags)
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_REQUEST_IDX OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, request_idx)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_REQUEST_IDX SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, request_idx)
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, transport_idx)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, transport_idx)
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_ID_2 OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, id_2)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_ID_2 SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, id_2)
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_SEQNUM OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, seqnum)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_SEQNUM SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, seqnum)
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_RX_PORT OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, rx_port)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_RX_PORT SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, rx_port)
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_RES OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, res)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_RES SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, res)
+#define O_LBMC_CNTL_UME_RXREQ_HDR_T_RX_IP OFFSETOF(lbmc_cntl_ume_rxreq_hdr_t, rx_ip)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T_RX_IP SIZEOF(lbmc_cntl_ume_rxreq_hdr_t, rx_ip)
+#define L_LBMC_CNTL_UME_RXREQ_HDR_T (gint) sizeof(lbmc_cntl_ume_rxreq_hdr_t)
+
+/* LBMC control late join initiation request */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t request_idx;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+ lbm_uint32_t req_ip;
+ lbm_uint16_t req_port;
+ lbm_uint16_t res;
+ lbm_uint32_t tx_low_sqn;
+ lbm_uint32_t rx_req_max;
+ lbm_uint32_t rx_req_outstanding_max;
+} lbmc_cntl_lji_req_hdr_t;
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_lji_req_hdr_t, next_hdr)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_lji_req_hdr_t, next_hdr)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_lji_req_hdr_t, hdr_len)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_lji_req_hdr_t, hdr_len)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS OFFSETOF(lbmc_cntl_lji_req_hdr_t, flags)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS SIZEOF(lbmc_cntl_lji_req_hdr_t, flags)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_REQUEST_IDX OFFSETOF(lbmc_cntl_lji_req_hdr_t, request_idx)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_REQUEST_IDX SIZEOF(lbmc_cntl_lji_req_hdr_t, request_idx)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_lji_req_hdr_t, transport_idx)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_lji_req_hdr_t, transport_idx)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_lji_req_hdr_t, topic_idx)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_lji_req_hdr_t, topic_idx)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_REQ_IP OFFSETOF(lbmc_cntl_lji_req_hdr_t, req_ip)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_REQ_IP SIZEOF(lbmc_cntl_lji_req_hdr_t, req_ip)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_REQ_PORT OFFSETOF(lbmc_cntl_lji_req_hdr_t, req_port)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_REQ_PORT SIZEOF(lbmc_cntl_lji_req_hdr_t, req_port)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_RES OFFSETOF(lbmc_cntl_lji_req_hdr_t, res)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_RES SIZEOF(lbmc_cntl_lji_req_hdr_t, res)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_TX_LOW_SQN OFFSETOF(lbmc_cntl_lji_req_hdr_t, tx_low_sqn)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_TX_LOW_SQN SIZEOF(lbmc_cntl_lji_req_hdr_t, tx_low_sqn)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_RX_REQ_MAX OFFSETOF(lbmc_cntl_lji_req_hdr_t, rx_req_max)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_RX_REQ_MAX SIZEOF(lbmc_cntl_lji_req_hdr_t, rx_req_max)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_RX_REQ_OUTSTANDING_MAX OFFSETOF(lbmc_cntl_lji_req_hdr_t, rx_req_outstanding_max)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_RX_REQ_OUTSTANDING_MAX SIZEOF(lbmc_cntl_lji_req_hdr_t, rx_req_outstanding_max)
+#define O_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS OFFSETOF(lbmc_cntl_lji_req_hdr_t, flags)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS SIZEOF(lbmc_cntl_lji_req_hdr_t, flags)
+#define L_LBMC_CNTL_LJI_REQ_HDR_T (gint) sizeof(lbmc_cntl_lji_req_hdr_t)
+
+/* LBMC control UME keepalive header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t type;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+ lbm_uint32_t reg_id;
+} lbmc_cntl_ume_keepalive_hdr_t;
+#define O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_keepalive_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_keepalive_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_keepalive_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_keepalive_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_keepalive_hdr_t, flags)
+#define L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_keepalive_hdr_t, flags)
+#define O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TYPE OFFSETOF(lbmc_cntl_ume_keepalive_hdr_t, type)
+#define L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TYPE SIZEOF(lbmc_cntl_ume_keepalive_hdr_t, type)
+#define O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_ume_keepalive_hdr_t, transport_idx)
+#define L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_ume_keepalive_hdr_t, transport_idx)
+#define O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_ume_keepalive_hdr_t, topic_idx)
+#define L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_ume_keepalive_hdr_t, topic_idx)
+#define O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_REG_ID OFFSETOF(lbmc_cntl_ume_keepalive_hdr_t, reg_id)
+#define L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_REG_ID SIZEOF(lbmc_cntl_ume_keepalive_hdr_t, reg_id)
+#define L_LBMC_CNTL_UME_KEEPALIVE_HDR_T (gint) sizeof(lbmc_cntl_ume_keepalive_hdr_t)
+
+/* LBMC control UME store ID header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t store_id;
+} lbmc_cntl_ume_storeid_hdr_t;
+#define O_LBMC_CNTL_UME_STOREID_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_storeid_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_STOREID_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_storeid_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_STOREID_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_storeid_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_STOREID_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_storeid_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID OFFSETOF(lbmc_cntl_ume_storeid_hdr_t, store_id)
+#define L_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID SIZEOF(lbmc_cntl_ume_storeid_hdr_t, store_id)
+#define L_LBMC_CNTL_UME_STOREID_HDR_T (gint) sizeof(lbmc_cntl_ume_storeid_hdr_t)
+
+#define LBMC_CNTL_UME_STOREID_STOREID(x) (x & 0x7FFF)
+#define LBMC_CNTL_UME_STOREID_STOREID_MASK 0x7FFF
+
+/* LBMC control UME capability header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+} lbmc_cntl_ume_capability_hdr_t;
+#define O_LBMC_CNTL_UME_CAPABILITY_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_capability_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_CAPABILITY_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_capability_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_CAPABILITY_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_capability_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_CAPABILITY_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_capability_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_capability_hdr_t, flags)
+#define L_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_capability_hdr_t, flags)
+#define L_LBMC_CNTL_UME_CAPABILITY_HDR_T (gint) sizeof(lbmc_cntl_ume_capability_hdr_t)
+
+/* LBMC control UME Proxy Source header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+} lbmc_cntl_ume_proxy_src_hdr_t;
+#define O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_proxy_src_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_proxy_src_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_proxy_src_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_proxy_src_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_proxy_src_hdr_t, flags)
+#define L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_proxy_src_hdr_t, flags)
+#define L_LBMC_CNTL_UME_PROXY_SRC_HDR_T (gint) sizeof(lbmc_cntl_ume_proxy_src_hdr_t)
+
+/* LBMC control UME Store header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t grp_idx;
+ lbm_uint16_t store_tcp_port;
+ lbm_uint16_t store_idx;
+ lbm_uint32_t store_ip_addr;
+ lbm_uint32_t src_reg_id;
+} lbmc_cntl_ume_store_hdr_t;
+#define O_LBMC_CNTL_UME_STORE_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_store_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_STORE_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_store_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_STORE_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_store_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_STORE_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_store_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_STORE_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_store_hdr_t, flags)
+#define L_LBMC_CNTL_UME_STORE_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_store_hdr_t, flags)
+#define O_LBMC_CNTL_UME_STORE_HDR_T_GRP_IDX OFFSETOF(lbmc_cntl_ume_store_hdr_t, grp_idx)
+#define L_LBMC_CNTL_UME_STORE_HDR_T_GRP_IDX SIZEOF(lbmc_cntl_ume_store_hdr_t, grp_idx)
+#define O_LBMC_CNTL_UME_STORE_HDR_T_STORE_TCP_PORT OFFSETOF(lbmc_cntl_ume_store_hdr_t, store_tcp_port)
+#define L_LBMC_CNTL_UME_STORE_HDR_T_STORE_TCP_PORT SIZEOF(lbmc_cntl_ume_store_hdr_t, store_tcp_port)
+#define O_LBMC_CNTL_UME_STORE_HDR_T_STORE_IDX OFFSETOF(lbmc_cntl_ume_store_hdr_t, store_idx)
+#define L_LBMC_CNTL_UME_STORE_HDR_T_STORE_IDX SIZEOF(lbmc_cntl_ume_store_hdr_t, store_idx)
+#define O_LBMC_CNTL_UME_STORE_HDR_T_STORE_IP_ADDR OFFSETOF(lbmc_cntl_ume_store_hdr_t, store_ip_addr)
+#define L_LBMC_CNTL_UME_STORE_HDR_T_STORE_IP_ADDR SIZEOF(lbmc_cntl_ume_store_hdr_t, store_ip_addr)
+#define O_LBMC_CNTL_UME_STORE_HDR_T_SRC_REG_ID OFFSETOF(lbmc_cntl_ume_store_hdr_t, src_reg_id)
+#define L_LBMC_CNTL_UME_STORE_HDR_T_SRC_REG_ID SIZEOF(lbmc_cntl_ume_store_hdr_t, src_reg_id)
+#define L_LBMC_CNTL_UME_STORE_HDR_T (gint) sizeof(lbmc_cntl_ume_store_hdr_t)
+
+/* LBMC control UME Store Extended header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t grp_idx;
+ lbm_uint16_t store_tcp_port;
+ lbm_uint16_t store_idx;
+ lbm_uint32_t store_ip_addr;
+ lbm_uint32_t src_reg_id;
+ lbm_uint32_t domain_id;
+ lbm_uint32_t version;
+} lbmc_cntl_ume_store_ext_hdr_t;
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, flags)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, flags)
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_GRP_IDX OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, grp_idx)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_GRP_IDX SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, grp_idx)
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_TCP_PORT OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, store_tcp_port)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_TCP_PORT SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, store_tcp_port)
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_IDX OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, store_idx)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_IDX SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, store_idx)
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_IP_ADDR OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, store_ip_addr)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_IP_ADDR SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, store_ip_addr)
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_SRC_REG_ID OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, src_reg_id)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_SRC_REG_ID SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, src_reg_id)
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_DOMAIN_ID OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, domain_id)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_DOMAIN_ID SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, domain_id)
+#define O_LBMC_CNTL_UME_STORE_EXT_HDR_T_VERSION OFFSETOF(lbmc_cntl_ume_store_ext_hdr_t, version)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T_VERSION SIZEOF(lbmc_cntl_ume_store_ext_hdr_t, version)
+#define L_LBMC_CNTL_UME_STORE_EXT_HDR_T (gint) sizeof(lbmc_cntl_ume_store_ext_hdr_t)
+
+/* LBMC control UME Late Join info header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t low_seqnum;
+ lbm_uint32_t high_seqnum;
+ lbm_uint32_t qidx;
+} lbmc_cntl_ume_lj_info_hdr_t;
+#define O_LBMC_CNTL_UME_LJ_INFO_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_lj_info_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_LJ_INFO_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_lj_info_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_LJ_INFO_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_lj_info_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_LJ_INFO_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_lj_info_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_LJ_INFO_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_lj_info_hdr_t, flags)
+#define L_LBMC_CNTL_UME_LJ_INFO_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_lj_info_hdr_t, flags)
+#define O_LBMC_CNTL_UME_LJ_INFO_HDR_T_LOW_SEQNUM OFFSETOF(lbmc_cntl_ume_lj_info_hdr_t, low_seqnum)
+#define L_LBMC_CNTL_UME_LJ_INFO_HDR_T_LOW_SEQNUM SIZEOF(lbmc_cntl_ume_lj_info_hdr_t, low_seqnum)
+#define O_LBMC_CNTL_UME_LJ_INFO_HDR_T_HIGH_SEQNUM OFFSETOF(lbmc_cntl_ume_lj_info_hdr_t, high_seqnum)
+#define L_LBMC_CNTL_UME_LJ_INFO_HDR_T_HIGH_SEQNUM SIZEOF(lbmc_cntl_ume_lj_info_hdr_t, high_seqnum)
+#define O_LBMC_CNTL_UME_LJ_INFO_HDR_T_QIDX OFFSETOF(lbmc_cntl_ume_lj_info_hdr_t, qidx)
+#define L_LBMC_CNTL_UME_LJ_INFO_HDR_T_QIDX SIZEOF(lbmc_cntl_ume_lj_info_hdr_t, qidx)
+#define L_LBMC_CNTL_UME_LJ_INFO_HDR_T (gint) sizeof(lbmc_cntl_ume_lj_info_hdr_t)
+
+/* LBMC control UME Store Group header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t grp_idx;
+ lbm_uint16_t grp_sz;
+ lbm_uint16_t res1;
+} lbmc_cntl_ume_store_group_hdr_t;
+#define O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_store_group_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_store_group_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_store_group_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_store_group_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_store_group_hdr_t, flags)
+#define L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_store_group_hdr_t, flags)
+#define O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_GRP_IDX OFFSETOF(lbmc_cntl_ume_store_group_hdr_t, grp_idx)
+#define L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_GRP_IDX SIZEOF(lbmc_cntl_ume_store_group_hdr_t, grp_idx)
+#define O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_GRP_SZ OFFSETOF(lbmc_cntl_ume_store_group_hdr_t, grp_sz)
+#define L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_GRP_SZ SIZEOF(lbmc_cntl_ume_store_group_hdr_t, grp_sz)
+#define O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_RES1 OFFSETOF(lbmc_cntl_ume_store_group_hdr_t, res1)
+#define L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_RES1 SIZEOF(lbmc_cntl_ume_store_group_hdr_t, res1)
+#define L_LBMC_CNTL_UME_STORE_GROUP_HDR_T (gint) sizeof(lbmc_cntl_ume_store_group_hdr_t)
+
+/* LBMC control TSNI header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t num_recs;
+} lbmc_cntl_tsni_hdr_t;
+#define O_LBMC_CNTL_TSNI_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_tsni_hdr_t, next_hdr)
+#define L_LBMC_CNTL_TSNI_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_tsni_hdr_t, next_hdr)
+#define O_LBMC_CNTL_TSNI_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_tsni_hdr_t, hdr_len)
+#define L_LBMC_CNTL_TSNI_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_tsni_hdr_t, hdr_len)
+#define O_LBMC_CNTL_TSNI_HDR_T_NUM_RECS OFFSETOF(lbmc_cntl_tsni_hdr_t, num_recs)
+#define L_LBMC_CNTL_TSNI_HDR_T_NUM_RECS SIZEOF(lbmc_cntl_tsni_hdr_t, num_recs)
+#define L_LBMC_CNTL_TSNI_HDR_T (gint) sizeof(lbmc_cntl_tsni_hdr_t)
+
+#define LBMC_CNTL_TSNI_NUM_RECS_MASK 0x7fff
+
+typedef struct
+{
+ lbm_uint32_t tidx;
+ lbm_uint32_t sqn;
+} lbmc_cntl_tsni_rec_hdr_t;
+#define O_LBMC_CNTL_TSNI_REC_HDR_T_TIDX OFFSETOF(lbmc_cntl_tsni_rec_hdr_t, tidx)
+#define L_LBMC_CNTL_TSNI_REC_HDR_T_TIDX SIZEOF(lbmc_cntl_tsni_rec_hdr_t, tidx)
+#define O_LBMC_CNTL_TSNI_REC_HDR_T_SQN OFFSETOF(lbmc_cntl_tsni_rec_hdr_t, sqn)
+#define L_LBMC_CNTL_TSNI_REC_HDR_T_SQN SIZEOF(lbmc_cntl_tsni_rec_hdr_t, sqn)
+#define L_LBMC_CNTL_TSNI_REC_HDR_T (gint) sizeof(lbmc_cntl_tsni_rec_hdr_t)
+
+/* LBMC control UMQ registration header(s) */
+typedef struct
+{
+ lbm_uint16_t port;
+ lbm_uint16_t reserved;
+ lbm_uint32_t ip;
+ lbm_uint32_t capabilities;
+} lbmc_cntl_umq_reg_ctx_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_CTX_HDR_T_PORT OFFSETOF(lbmc_cntl_umq_reg_ctx_hdr_t, port)
+#define L_LBMC_CNTL_UMQ_REG_CTX_HDR_T_PORT SIZEOF(lbmc_cntl_umq_reg_ctx_hdr_t, port)
+#define O_LBMC_CNTL_UMQ_REG_CTX_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_reg_ctx_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_REG_CTX_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_reg_ctx_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_REG_CTX_HDR_T_IP OFFSETOF(lbmc_cntl_umq_reg_ctx_hdr_t, ip)
+#define L_LBMC_CNTL_UMQ_REG_CTX_HDR_T_IP SIZEOF(lbmc_cntl_umq_reg_ctx_hdr_t, ip)
+#define O_LBMC_CNTL_UMQ_REG_CTX_HDR_T_CAPABILITIES OFFSETOF(lbmc_cntl_umq_reg_ctx_hdr_t, capabilities)
+#define L_LBMC_CNTL_UMQ_REG_CTX_HDR_T_CAPABILITIES SIZEOF(lbmc_cntl_umq_reg_ctx_hdr_t, capabilities)
+#define L_LBMC_CNTL_UMQ_REG_CTX_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_ctx_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+} lbmc_cntl_umq_reg_src_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_SRC_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_umq_reg_src_hdr_t, transport_idx)
+#define L_LBMC_CNTL_UMQ_REG_SRC_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_umq_reg_src_hdr_t, transport_idx)
+#define O_LBMC_CNTL_UMQ_REG_SRC_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_umq_reg_src_hdr_t, topic_idx)
+#define L_LBMC_CNTL_UMQ_REG_SRC_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_umq_reg_src_hdr_t, topic_idx)
+#define L_LBMC_CNTL_UMQ_REG_SRC_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_src_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t assign_id;
+ lbm_uint32_t rcv_type_id;
+ lbm_uint32_t last_topic_rcr_tsp;
+} lbmc_cntl_umq_reg_rcv_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_RCV_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_reg_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_REG_RCV_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_reg_rcv_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_REG_RCV_HDR_T_RCV_TYPE_ID OFFSETOF(lbmc_cntl_umq_reg_rcv_hdr_t, rcv_type_id)
+#define L_LBMC_CNTL_UMQ_REG_RCV_HDR_T_RCV_TYPE_ID SIZEOF(lbmc_cntl_umq_reg_rcv_hdr_t, rcv_type_id)
+#define O_LBMC_CNTL_UMQ_REG_RCV_HDR_T_LAST_TOPIC_RCR_TSP OFFSETOF(lbmc_cntl_umq_reg_rcv_hdr_t, last_topic_rcr_tsp)
+#define L_LBMC_CNTL_UMQ_REG_RCV_HDR_T_LAST_TOPIC_RCR_TSP SIZEOF(lbmc_cntl_umq_reg_rcv_hdr_t, last_topic_rcr_tsp)
+#define L_LBMC_CNTL_UMQ_REG_RCV_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_rcv_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_rcv_dereg_hdr_t;
+#define O_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_rcv_dereg_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_rcv_dereg_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rcv_dereg_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rcv_dereg_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T (gint) sizeof(lbmc_cntl_umq_rcv_dereg_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint32_t rcv_type_id;
+ lbm_uint16_t port;
+ lbm_uint16_t reserved;
+ lbm_uint32_t ip;
+ lbm_uint32_t capabilities;
+} lbmc_cntl_umq_reg_ulb_rcv_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_RCV_TYPE_ID OFFSETOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, rcv_type_id)
+#define L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_RCV_TYPE_ID SIZEOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, rcv_type_id)
+#define O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_PORT OFFSETOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, port)
+#define L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_PORT SIZEOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, port)
+#define O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_IP OFFSETOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, ip)
+#define L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_IP SIZEOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, ip)
+#define O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_CAPABILITIES OFFSETOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, capabilities)
+#define L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_CAPABILITIES SIZEOF(lbmc_cntl_umq_reg_ulb_rcv_hdr_t, capabilities)
+#define L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_ulb_rcv_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_ulb_rcv_dereg_hdr_t;
+#define O_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_ulb_rcv_dereg_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_ulb_rcv_dereg_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ulb_rcv_dereg_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ulb_rcv_dereg_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T (gint) sizeof(lbmc_cntl_umq_ulb_rcv_dereg_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t assign_id;
+ lbm_uint32_t rcv_type_id;
+ lbm_uint32_t last_topic_rcr_tsp;
+} lbmc_cntl_umq_reg_observer_rcv_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_reg_observer_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_reg_observer_rcv_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_RCV_TYPE_ID OFFSETOF(lbmc_cntl_umq_reg_observer_rcv_hdr_t, rcv_type_id)
+#define L_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_RCV_TYPE_ID SIZEOF(lbmc_cntl_umq_reg_observer_rcv_hdr_t, rcv_type_id)
+#define O_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_LAST_TOPIC_RCR_TSP OFFSETOF(lbmc_cntl_umq_reg_observer_rcv_hdr_t, last_topic_rcr_tsp)
+#define L_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_LAST_TOPIC_RCR_TSP SIZEOF(lbmc_cntl_umq_reg_observer_rcv_hdr_t, last_topic_rcr_tsp)
+#define L_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_observer_rcv_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_observer_rcv_dereg_hdr_t;
+#define O_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_observer_rcv_dereg_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_observer_rcv_dereg_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_observer_rcv_dereg_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_observer_rcv_dereg_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T (gint) sizeof(lbmc_cntl_umq_observer_rcv_dereg_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t reg_type;
+ lbm_uint32_t queue_id;
+ lbm_uint16_t cmd_id;
+ lbm_uint16_t inst_idx;
+ lbm_uint8_t regid[8];
+} lbmc_cntl_umq_reg_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_reg_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_REG_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_reg_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_REG_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_reg_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_REG_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_reg_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_reg_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_reg_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_REG_HDR_T_REG_TYPE OFFSETOF(lbmc_cntl_umq_reg_hdr_t, reg_type)
+#define L_LBMC_CNTL_UMQ_REG_HDR_T_REG_TYPE SIZEOF(lbmc_cntl_umq_reg_hdr_t, reg_type)
+#define O_LBMC_CNTL_UMQ_REG_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_reg_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_REG_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_reg_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_REG_HDR_T_CMD_ID OFFSETOF(lbmc_cntl_umq_reg_hdr_t, cmd_id)
+#define L_LBMC_CNTL_UMQ_REG_HDR_T_CMD_ID SIZEOF(lbmc_cntl_umq_reg_hdr_t, cmd_id)
+#define O_LBMC_CNTL_UMQ_REG_HDR_T_INST_IDX OFFSETOF(lbmc_cntl_umq_reg_hdr_t, inst_idx)
+#define L_LBMC_CNTL_UMQ_REG_HDR_T_INST_IDX SIZEOF(lbmc_cntl_umq_reg_hdr_t, inst_idx)
+#define O_LBMC_CNTL_UMQ_REG_HDR_T_REGID OFFSETOF(lbmc_cntl_umq_reg_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_REG_HDR_T_REGID SIZEOF(lbmc_cntl_umq_reg_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_REG_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_hdr_t)
+
+/* LBMC control UMQ registration response header(s) */
+typedef struct
+{
+ lbm_uint32_t capabilities;
+} lbmc_cntl_umq_reg_resp_ctx_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_RESP_CTX_HDR_T_CAPABILITIES OFFSETOF(lbmc_cntl_umq_reg_resp_ctx_hdr_t, capabilities)
+#define L_LBMC_CNTL_UMQ_REG_RESP_CTX_HDR_T_CAPABILITIES SIZEOF(lbmc_cntl_umq_reg_resp_ctx_hdr_t, capabilities)
+#define L_LBMC_CNTL_UMQ_REG_RESP_CTX_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_resp_ctx_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t capabilities;
+ lbm_uint16_t reserved;
+ lbm_uint16_t flags;
+ lbm_uint8_t stamp[8];
+} lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_CAPABILITIES OFFSETOF(lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t, capabilities)
+#define L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_CAPABILITIES SIZEOF(lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t, capabilities)
+#define O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_STAMP OFFSETOF(lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t, stamp)
+#define L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_STAMP SIZEOF(lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t, stamp)
+#define L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_resp_ctx_ex_hdr_t)
+
+typedef struct
+{
+ lbm_uint16_t reserved;
+ lbm_uint16_t code;
+} lbmc_cntl_umq_reg_resp_err_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_reg_resp_err_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_reg_resp_err_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T_CODE OFFSETOF(lbmc_cntl_umq_reg_resp_err_hdr_t, code)
+#define L_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T_CODE SIZEOF(lbmc_cntl_umq_reg_resp_err_hdr_t, code)
+#define L_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_resp_err_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+} lbmc_cntl_umq_reg_resp_src_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_RESP_SRC_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_reg_resp_src_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_REG_RESP_SRC_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_reg_resp_src_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_REG_RESP_SRC_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_resp_src_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_reg_resp_rcv_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_reg_resp_rcv_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_reg_resp_rcv_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_reg_resp_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_reg_resp_rcv_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_reg_resp_rcv_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_reg_resp_rcv_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_reg_resp_rcv_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_reg_resp_rcv_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_resp_rcv_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_rcv_dereg_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_rcv_dereg_resp_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_rcv_dereg_resp_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rcv_dereg_resp_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rcv_dereg_resp_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_rcv_dereg_resp_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+ lbm_uint32_t capabilities;
+} lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_CAPABILITIES OFFSETOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, capabilities)
+#define L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_CAPABILITIES SIZEOF(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t, capabilities)
+#define L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_resp_ulb_rcv_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_ulb_rcv_dereg_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_ulb_rcv_dereg_resp_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_ulb_rcv_dereg_resp_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ulb_rcv_dereg_resp_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ulb_rcv_dereg_resp_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_ulb_rcv_dereg_resp_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_resp_observer_rcv_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_observer_rcv_dereg_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_observer_rcv_dereg_resp_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_observer_rcv_dereg_resp_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_observer_rcv_dereg_resp_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_observer_rcv_dereg_resp_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_observer_rcv_dereg_resp_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t resp_type;
+ lbm_uint32_t queue_id;
+ lbm_uint16_t cmd_id;
+ lbm_uint16_t inst_idx;
+ lbm_uint8_t regid[8];
+} lbmc_cntl_umq_reg_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_reg_resp_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_reg_resp_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_reg_resp_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_reg_resp_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_reg_resp_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_reg_resp_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_REG_RESP_TYPE OFFSETOF(lbmc_cntl_umq_reg_resp_hdr_t, resp_type)
+#define L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_REG_RESP_TYPE SIZEOF(lbmc_cntl_umq_reg_resp_hdr_t, resp_type)
+#define O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_reg_resp_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_reg_resp_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_CMD_ID OFFSETOF(lbmc_cntl_umq_reg_resp_hdr_t, cmd_id)
+#define L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_CMD_ID SIZEOF(lbmc_cntl_umq_reg_resp_hdr_t, cmd_id)
+#define O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_INST_IDX OFFSETOF(lbmc_cntl_umq_reg_resp_hdr_t, inst_idx)
+#define L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_INST_IDX SIZEOF(lbmc_cntl_umq_reg_resp_hdr_t, inst_idx)
+#define O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_REG_RESPID OFFSETOF(lbmc_cntl_umq_reg_resp_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_REG_RESPID SIZEOF(lbmc_cntl_umq_reg_resp_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_REG_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_reg_resp_hdr_t)
+
+/* LBMC control UMQ ACK header(s) */
+typedef struct
+{
+ lbm_uint8_t regid[8];
+ lbm_uint8_t stamp[8];
+} lbmc_cntl_umq_ack_msgid_hdr_t;
+#define O_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T_REGID OFFSETOF(lbmc_cntl_umq_ack_msgid_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T_REGID SIZEOF(lbmc_cntl_umq_ack_msgid_hdr_t, regid)
+#define O_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T_STAMP OFFSETOF(lbmc_cntl_umq_ack_msgid_hdr_t, stamp)
+#define L_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T_STAMP SIZEOF(lbmc_cntl_umq_ack_msgid_hdr_t, stamp)
+#define L_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T (gint) sizeof(lbmc_cntl_umq_ack_msgid_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t queue_id;
+ lbm_uint16_t inst_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_ack_stable_hdr_t;
+#define O_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_ack_stable_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_ack_stable_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_INST_IDX OFFSETOF(lbmc_cntl_umq_ack_stable_hdr_t, inst_idx)
+#define L_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_INST_IDX SIZEOF(lbmc_cntl_umq_ack_stable_hdr_t, inst_idx)
+#define O_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_ack_stable_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_ack_stable_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T (gint) sizeof(lbmc_cntl_umq_ack_stable_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_ack_cr_hdr_t;
+#define O_LBMC_CNTL_UMQ_ACK_CR_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_ack_cr_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_ACK_CR_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_ack_cr_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_ACK_CR_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ack_cr_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ACK_CR_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ack_cr_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_ACK_CR_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_ack_cr_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_ACK_CR_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_ack_cr_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_ACK_CR_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_ack_cr_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ACK_CR_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_ack_cr_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ACK_CR_HDR_T (gint) sizeof(lbmc_cntl_umq_ack_cr_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_ack_ulb_cr_hdr_t;
+#define O_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_ack_ulb_cr_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_ack_ulb_cr_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ack_ulb_cr_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ack_ulb_cr_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_ack_ulb_cr_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_ack_ulb_cr_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_ack_ulb_cr_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_ack_ulb_cr_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T (gint) sizeof(lbmc_cntl_umq_ack_ulb_cr_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t msgs;
+ lbm_uint8_t ack_type;
+} lbmc_cntl_umq_ack_hdr_t;
+#define O_LBMC_CNTL_UMQ_ACK_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_ack_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_ACK_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_ack_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_ACK_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_ack_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_ACK_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_ack_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS OFFSETOF(lbmc_cntl_umq_ack_hdr_t, msgs)
+#define L_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS SIZEOF(lbmc_cntl_umq_ack_hdr_t, msgs)
+#define O_LBMC_CNTL_UMQ_ACK_HDR_T_ACK_TYPE OFFSETOF(lbmc_cntl_umq_ack_hdr_t, ack_type)
+#define L_LBMC_CNTL_UMQ_ACK_HDR_T_ACK_TYPE SIZEOF(lbmc_cntl_umq_ack_hdr_t, ack_type)
+#define L_LBMC_CNTL_UMQ_ACK_HDR_T (gint) sizeof(lbmc_cntl_umq_ack_hdr_t)
+
+/* UMQ control receiver control record header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t queue_id;
+ lbm_uint32_t rcr_idx;
+ lbm_uint8_t msgid_regid[8];
+ lbm_uint8_t msgid_stamp[8];
+ lbm_uint32_t topic_tsp;
+ lbm_uint32_t q_tsp;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t num_ras;
+ lbm_uint32_t queue_ver;
+} lbmc_cntl_umq_rcr_hdr_t;
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_rcr_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_rcr_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_rcr_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_rcr_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_rcr_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_MSGID_REGID OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, msgid_regid)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_MSGID_REGID SIZEOF(lbmc_cntl_umq_rcr_hdr_t, msgid_regid)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_MSGID_STAMP OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_MSGID_STAMP SIZEOF(lbmc_cntl_umq_rcr_hdr_t, msgid_stamp)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_TOPIC_TSP OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, topic_tsp)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_TOPIC_TSP SIZEOF(lbmc_cntl_umq_rcr_hdr_t, topic_tsp)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_Q_TSP OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, q_tsp)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_Q_TSP SIZEOF(lbmc_cntl_umq_rcr_hdr_t, q_tsp)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rcr_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_rcr_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_NUM_RAS OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, num_ras)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_NUM_RAS SIZEOF(lbmc_cntl_umq_rcr_hdr_t, num_ras)
+#define O_LBMC_CNTL_UMQ_RCR_HDR_T_QUEUE_VER OFFSETOF(lbmc_cntl_umq_rcr_hdr_t, queue_ver)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T_QUEUE_VER SIZEOF(lbmc_cntl_umq_rcr_hdr_t, queue_ver)
+#define L_LBMC_CNTL_UMQ_RCR_HDR_T (gint) sizeof(lbmc_cntl_umq_rcr_hdr_t)
+
+/* LBMC control UMQ keepalive header(s) */
+typedef struct
+{
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+} lbmc_cntl_umq_ka_src_hdr_t;
+#define O_LBMC_CNTL_UMQ_KA_SRC_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_umq_ka_src_hdr_t, transport_idx)
+#define L_LBMC_CNTL_UMQ_KA_SRC_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_umq_ka_src_hdr_t, transport_idx)
+#define O_LBMC_CNTL_UMQ_KA_SRC_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_umq_ka_src_hdr_t, topic_idx)
+#define L_LBMC_CNTL_UMQ_KA_SRC_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_umq_ka_src_hdr_t, topic_idx)
+#define L_LBMC_CNTL_UMQ_KA_SRC_HDR_T (gint) sizeof(lbmc_cntl_umq_ka_src_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_ka_rcv_hdr_t;
+#define O_LBMC_CNTL_UMQ_KA_RCV_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_ka_rcv_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_KA_RCV_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_ka_rcv_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_KA_RCV_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ka_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_KA_RCV_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ka_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_KA_RCV_HDR_T (gint) sizeof(lbmc_cntl_umq_ka_rcv_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_ka_ulb_rcv_hdr_t;
+#define O_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_ka_ulb_rcv_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_ka_ulb_rcv_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ka_ulb_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ka_ulb_rcv_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T (gint) sizeof(lbmc_cntl_umq_ka_ulb_rcv_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_ka_ulb_rcv_resp_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t ka_type;
+ lbm_uint32_t queue_id;
+ lbm_uint8_t regid[8];
+ lbm_uint16_t inst_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_ka_hdr_t;
+#define O_LBMC_CNTL_UMQ_KA_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_ka_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_KA_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_ka_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_KA_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_ka_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_KA_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_ka_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_ka_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_ka_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_KA_HDR_T_KA_TYPE OFFSETOF(lbmc_cntl_umq_ka_hdr_t, ka_type)
+#define L_LBMC_CNTL_UMQ_KA_HDR_T_KA_TYPE SIZEOF(lbmc_cntl_umq_ka_hdr_t, ka_type)
+#define O_LBMC_CNTL_UMQ_KA_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_ka_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_KA_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_ka_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_KA_HDR_T_REGID OFFSETOF(lbmc_cntl_umq_ka_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_KA_HDR_T_REGID SIZEOF(lbmc_cntl_umq_ka_hdr_t, regid)
+#define O_LBMC_CNTL_UMQ_KA_HDR_T_INST_IDX OFFSETOF(lbmc_cntl_umq_ka_hdr_t, inst_idx)
+#define L_LBMC_CNTL_UMQ_KA_HDR_T_INST_IDX SIZEOF(lbmc_cntl_umq_ka_hdr_t, inst_idx)
+#define O_LBMC_CNTL_UMQ_KA_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_ka_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_KA_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_ka_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_KA_HDR_T (gint) sizeof(lbmc_cntl_umq_ka_hdr_t)
+
+/* LBMC control UMQ retransmission request header(s) */
+typedef struct
+{
+ lbm_uint8_t regid[8];
+} lbmc_cntl_umq_rxreq_regid_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_REGID_RESP_HDR_T_REGID OFFSETOF(lbmc_cntl_umq_rxreq_regid_resp_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_RXREQ_REGID_RESP_HDR_T_REGID SIZEOF(lbmc_cntl_umq_rxreq_regid_resp_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_RXREQ_REGID_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_regid_resp_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ip;
+ lbm_uint16_t port;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_rxreq_addr_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_IP OFFSETOF(lbmc_cntl_umq_rxreq_addr_resp_hdr_t, ip)
+#define L_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_IP SIZEOF(lbmc_cntl_umq_rxreq_addr_resp_hdr_t, ip)
+#define O_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_PORT OFFSETOF(lbmc_cntl_umq_rxreq_addr_resp_hdr_t, port)
+#define L_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_PORT SIZEOF(lbmc_cntl_umq_rxreq_addr_resp_hdr_t, port)
+#define O_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_rxreq_addr_resp_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_rxreq_addr_resp_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_addr_resp_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t assign_id;
+ lbm_uint8_t msgid_regid[8];
+ lbm_uint8_t msgid_stamp[8];
+} lbmc_cntl_umq_rxreq_mr_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rxreq_mr_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rxreq_mr_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_MSGID_REGID OFFSETOF(lbmc_cntl_umq_rxreq_mr_hdr_t, msgid_regid)
+#define L_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_MSGID_REGID SIZEOF(lbmc_cntl_umq_rxreq_mr_hdr_t, msgid_regid)
+#define O_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_MSGID_STAMP OFFSETOF(lbmc_cntl_umq_rxreq_mr_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_MSGID_STAMP SIZEOF(lbmc_cntl_umq_rxreq_mr_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_mr_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+ lbm_uint8_t msgid_regid[8];
+ lbm_uint8_t msgid_stamp[8];
+} lbmc_cntl_umq_rxreq_ulb_mr_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_MSGID_REGID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, msgid_regid)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_MSGID_REGID SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, msgid_regid)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_MSGID_STAMP OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_MSGID_STAMP SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_ulb_mr_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint8_t msgid_regid[8];
+ lbm_uint8_t msgid_stamp[8];
+} lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_MSGID_REGID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t, msgid_regid)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_MSGID_REGID SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t, msgid_regid)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_MSGID_STAMP OFFSETOF(lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_MSGID_STAMP SIZEOF(lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_ulb_mr_abort_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t tsp;
+} lbmc_cntl_umq_rxreq_qrcrr_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_QRCRR_HDR_T_TSP OFFSETOF(lbmc_cntl_umq_rxreq_qrcrr_hdr_t, tsp)
+#define L_LBMC_CNTL_UMQ_RXREQ_QRCRR_HDR_T_TSP SIZEOF(lbmc_cntl_umq_rxreq_qrcrr_hdr_t, tsp)
+#define L_LBMC_CNTL_UMQ_RXREQ_QRCRR_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_qrcrr_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t tsp;
+} lbmc_cntl_umq_rxreq_trcrr_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_rxreq_trcrr_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_rxreq_trcrr_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T_TSP OFFSETOF(lbmc_cntl_umq_rxreq_trcrr_hdr_t, tsp)
+#define L_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T_TSP SIZEOF(lbmc_cntl_umq_rxreq_trcrr_hdr_t, tsp)
+#define L_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_trcrr_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint32_t tsp;
+} lbmc_cntl_umq_rxreq_ulb_trcrr_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_trcrr_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_rxreq_ulb_trcrr_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_trcrr_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rxreq_ulb_trcrr_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_TSP OFFSETOF(lbmc_cntl_umq_rxreq_ulb_trcrr_hdr_t, tsp)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_TSP SIZEOF(lbmc_cntl_umq_rxreq_ulb_trcrr_hdr_t, tsp)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_ulb_trcrr_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t ulb_src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint32_t tsp;
+} lbmc_cntl_umq_rxreq_ulb_trcrr_abort_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_trcrr_abort_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_rxreq_ulb_trcrr_abort_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rxreq_ulb_trcrr_abort_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rxreq_ulb_trcrr_abort_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_TSP OFFSETOF(lbmc_cntl_umq_rxreq_ulb_trcrr_abort_hdr_t, tsp)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_TSP SIZEOF(lbmc_cntl_umq_rxreq_ulb_trcrr_abort_hdr_t, tsp)
+#define L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_ulb_trcrr_abort_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t rxreq_type;
+} lbmc_cntl_umq_rxreq_hdr_t;
+#define O_LBMC_CNTL_UMQ_RXREQ_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_rxreq_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_RXREQ_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_rxreq_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_RXREQ_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_rxreq_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_RXREQ_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_rxreq_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_rxreq_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_rxreq_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_RXREQ_HDR_T_RXREQ_TYPE OFFSETOF(lbmc_cntl_umq_rxreq_hdr_t, rxreq_type)
+#define L_LBMC_CNTL_UMQ_RXREQ_HDR_T_RXREQ_TYPE SIZEOF(lbmc_cntl_umq_rxreq_hdr_t, rxreq_type)
+#define L_LBMC_CNTL_UMQ_RXREQ_HDR_T (gint) sizeof(lbmc_cntl_umq_rxreq_hdr_t)
+
+/* LBMC control UMQ queue management header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+} lbmc_cntl_umq_qmgmt_hdr_t;
+#define O_LBMC_CNTL_UMQ_QMGMT_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_qmgmt_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_QMGMT_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_qmgmt_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_QMGMT_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_qmgmt_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_QMGMT_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_qmgmt_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_QMGMT_HDR_T (gint) sizeof(lbmc_cntl_umq_qmgmt_hdr_t)
+
+/* LBMC control UMQ resubmission request header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint8_t msgid_regid[8];
+ lbm_uint8_t msgid_stamp[8];
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t resp_ip;
+ lbm_uint16_t resp_port;
+ lbm_uint16_t appset_idx;
+} lbmc_cntl_umq_resub_req_hdr_t;
+#define O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_resub_req_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_resub_req_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_resub_req_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_resub_req_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_resub_req_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_resub_req_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_MSGID_REGID OFFSETOF(lbmc_cntl_umq_resub_req_hdr_t, msgid_regid)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_MSGID_REGID SIZEOF(lbmc_cntl_umq_resub_req_hdr_t, msgid_regid)
+#define O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_MSGID_STAMP OFFSETOF(lbmc_cntl_umq_resub_req_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_MSGID_STAMP SIZEOF(lbmc_cntl_umq_resub_req_hdr_t, msgid_stamp)
+#define O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_resub_req_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_resub_req_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RESP_IP OFFSETOF(lbmc_cntl_umq_resub_req_hdr_t, resp_ip)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RESP_IP SIZEOF(lbmc_cntl_umq_resub_req_hdr_t, resp_ip)
+#define O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RESP_PORT OFFSETOF(lbmc_cntl_umq_resub_req_hdr_t, resp_port)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RESP_PORT SIZEOF(lbmc_cntl_umq_resub_req_hdr_t, resp_port)
+#define O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_resub_req_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_resub_req_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T (gint) sizeof(lbmc_cntl_umq_resub_req_hdr_t)
+
+/* LBMC control UMQ resubmission response header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t code;
+ lbm_uint8_t msgid_regid[8];
+ lbm_uint8_t msgid_stamp[8];
+ lbm_uint32_t rcr_idx;
+ lbm_uint16_t reserved;
+ lbm_uint16_t appset_idx;
+} lbmc_cntl_umq_resub_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_resub_resp_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_resub_resp_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_resub_resp_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_resub_resp_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_resub_resp_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_resub_resp_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_CODE OFFSETOF(lbmc_cntl_umq_resub_resp_hdr_t, code)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_CODE SIZEOF(lbmc_cntl_umq_resub_resp_hdr_t, code)
+#define O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_MSGID_REGID OFFSETOF(lbmc_cntl_umq_resub_resp_hdr_t, msgid_regid)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_MSGID_REGID SIZEOF(lbmc_cntl_umq_resub_resp_hdr_t, msgid_regid)
+#define O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_MSGID_STAMP OFFSETOF(lbmc_cntl_umq_resub_resp_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_MSGID_STAMP SIZEOF(lbmc_cntl_umq_resub_resp_hdr_t, msgid_stamp)
+#define O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_resub_resp_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_resub_resp_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_resub_resp_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_resub_resp_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_resub_resp_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_resub_resp_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_resub_resp_hdr_t)
+
+/* LBMC control topic interest header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t domain_id;
+} lbmc_cntl_topic_interest_hdr_t;
+#define O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_topic_interest_hdr_t, next_hdr)
+#define L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_topic_interest_hdr_t, next_hdr)
+#define O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_topic_interest_hdr_t, hdr_len)
+#define L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_topic_interest_hdr_t, hdr_len)
+#define O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS OFFSETOF(lbmc_cntl_topic_interest_hdr_t, flags)
+#define L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS SIZEOF(lbmc_cntl_topic_interest_hdr_t, flags)
+#define O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_DOMAIN_ID OFFSETOF(lbmc_cntl_topic_interest_hdr_t, domain_id)
+#define L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_DOMAIN_ID SIZEOF(lbmc_cntl_topic_interest_hdr_t, domain_id)
+#define L_LBMC_CNTL_TOPIC_INTEREST_HDR_T (gint) sizeof(lbmc_cntl_topic_interest_hdr_t)
+
+/* LBMC control pattern interest header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t type;
+ lbm_uint32_t domain_id;
+ lbm_uint8_t index[8];
+} lbmc_cntl_pattern_interest_hdr_t;
+#define O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_pattern_interest_hdr_t, next_hdr)
+#define L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_pattern_interest_hdr_t, next_hdr)
+#define O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_pattern_interest_hdr_t, hdr_len)
+#define L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_pattern_interest_hdr_t, hdr_len)
+#define O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS OFFSETOF(lbmc_cntl_pattern_interest_hdr_t, flags)
+#define L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS SIZEOF(lbmc_cntl_pattern_interest_hdr_t, flags)
+#define O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_TYPE OFFSETOF(lbmc_cntl_pattern_interest_hdr_t, type)
+#define L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_TYPE SIZEOF(lbmc_cntl_pattern_interest_hdr_t, type)
+#define O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_DOMAIN_ID OFFSETOF(lbmc_cntl_pattern_interest_hdr_t, domain_id)
+#define L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_DOMAIN_ID SIZEOF(lbmc_cntl_pattern_interest_hdr_t, domain_id)
+#define O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_INDEX OFFSETOF(lbmc_cntl_pattern_interest_hdr_t, index)
+#define L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_INDEX SIZEOF(lbmc_cntl_pattern_interest_hdr_t, index)
+#define L_LBMC_CNTL_PATTERN_INTEREST_HDR_T (gint) sizeof(lbmc_cntl_pattern_interest_hdr_t)
+
+/* LBMC control advertisement header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t hop_count;
+ lbm_uint32_t ad_flags;
+ lbm_uint32_t cost;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+ lbm_uint32_t low_seqno;
+ lbm_uint32_t high_seqno;
+ lbm_uint32_t domain_id;
+ lbm_uint8_t pat_idx[8];
+ lbm_uint8_t ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+} lbmc_cntl_advertisement_hdr_t;
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_advertisement_hdr_t, next_hdr)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_advertisement_hdr_t, next_hdr)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_advertisement_hdr_t, hdr_len)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_advertisement_hdr_t, hdr_len)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS OFFSETOF(lbmc_cntl_advertisement_hdr_t, flags)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS SIZEOF(lbmc_cntl_advertisement_hdr_t, flags)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_HOP_COUNT OFFSETOF(lbmc_cntl_advertisement_hdr_t, hop_count)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_HOP_COUNT SIZEOF(lbmc_cntl_advertisement_hdr_t, hop_count)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS OFFSETOF(lbmc_cntl_advertisement_hdr_t, ad_flags)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS SIZEOF(lbmc_cntl_advertisement_hdr_t, ad_flags)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_COST OFFSETOF(lbmc_cntl_advertisement_hdr_t, cost)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_COST SIZEOF(lbmc_cntl_advertisement_hdr_t, cost)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_advertisement_hdr_t, transport_idx)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_advertisement_hdr_t, transport_idx)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_advertisement_hdr_t, topic_idx)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_advertisement_hdr_t, topic_idx)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_LOW_SEQNO OFFSETOF(lbmc_cntl_advertisement_hdr_t, low_seqno)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_LOW_SEQNO SIZEOF(lbmc_cntl_advertisement_hdr_t, low_seqno)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_HIGH_SEQNO OFFSETOF(lbmc_cntl_advertisement_hdr_t, high_seqno)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_HIGH_SEQNO SIZEOF(lbmc_cntl_advertisement_hdr_t, high_seqno)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_DOMAIN_ID OFFSETOF(lbmc_cntl_advertisement_hdr_t, domain_id)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_DOMAIN_ID SIZEOF(lbmc_cntl_advertisement_hdr_t, domain_id)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_PAT_IDX OFFSETOF(lbmc_cntl_advertisement_hdr_t, pat_idx)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_PAT_IDX SIZEOF(lbmc_cntl_advertisement_hdr_t, pat_idx)
+#define O_LBMC_CNTL_ADVERTISEMENT_HDR_T_CTXINST OFFSETOF(lbmc_cntl_advertisement_hdr_t, ctxinst)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T_CTXINST SIZEOF(lbmc_cntl_advertisement_hdr_t, ctxinst)
+#define L_LBMC_CNTL_ADVERTISEMENT_HDR_T (gint) sizeof(lbmc_cntl_advertisement_hdr_t)
+
+/* LBMC control UME storename header. */
+#define O_LBMC_UME_STORENAME_HDR_T_NEXT_HDR OFFSETOF(lbmc_basic_hdr_t, next_hdr)
+#define L_LBMC_UME_STORENAME_HDR_T_NEXT_HDR SIZEOF(lbmc_basic_hdr_t, next_hdr)
+#define O_LBMC_UME_STORENAME_HDR_T_HDR_LEN OFFSETOF(lbmc_basic_hdr_t, hdr_len)
+#define L_LBMC_UME_STORENAME_HDR_T_HDR_LEN SIZEOF(lbmc_basic_hdr_t, hdr_len)
+#define O_LBMC_UME_STORENAME_HDR_T_FLAGS OFFSETOF(lbmc_basic_hdr_t, res)
+#define L_LBMC_UME_STORENAME_HDR_T_FLAGS SIZEOF(lbmc_basic_hdr_t, res)
+#define O_LBMC_UME_STORENAME_HDR_T_STORE (OFFSETOF(lbmc_basic_hdr_t, res) + SIZEOF(lbmc_basic_hdr_t, res))
+
+/* UMQ control ULB receiver control record header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t queue_id;
+ lbm_uint32_t ulb_src_id;
+ lbm_uint8_t msgid_regid[8];
+ lbm_uint8_t msgid_stamp[8];
+ lbm_uint32_t topic_tsp;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t num_ras;
+} lbmc_cntl_umq_ulb_rcr_hdr_t;
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_ULB_SRC_ID OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, ulb_src_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_ULB_SRC_ID SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, ulb_src_id)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_MSGID_REGID OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, msgid_regid)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_MSGID_REGID SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, msgid_regid)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_MSGID_STAMP OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, msgid_stamp)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_MSGID_STAMP SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, msgid_stamp)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_TOPIC_TSP OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, topic_tsp)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_TOPIC_TSP SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, topic_tsp)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_NUM_RAS OFFSETOF(lbmc_cntl_umq_ulb_rcr_hdr_t, num_ras)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_NUM_RAS SIZEOF(lbmc_cntl_umq_ulb_rcr_hdr_t, num_ras)
+#define L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T (gint) sizeof(lbmc_cntl_umq_ulb_rcr_hdr_t)
+
+/* LBMC control UMQ load factor header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t type;
+ lbm_uint16_t num_srcs;
+ lbm_uint16_t lf;
+} lbmc_cntl_umq_lf_hdr_t;
+#define O_LBMC_CNTL_UMQ_LF_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_lf_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_LF_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_lf_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_LF_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_lf_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_LF_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_lf_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_LF_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_lf_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_LF_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_lf_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_LF_HDR_T_TYPE OFFSETOF(lbmc_cntl_umq_lf_hdr_t, type)
+#define L_LBMC_CNTL_UMQ_LF_HDR_T_TYPE SIZEOF(lbmc_cntl_umq_lf_hdr_t, type)
+#define O_LBMC_CNTL_UMQ_LF_HDR_T_NUM_SRCS OFFSETOF(lbmc_cntl_umq_lf_hdr_t, num_srcs)
+#define L_LBMC_CNTL_UMQ_LF_HDR_T_NUM_SRCS SIZEOF(lbmc_cntl_umq_lf_hdr_t, num_srcs)
+#define O_LBMC_CNTL_UMQ_LF_HDR_T_LF OFFSETOF(lbmc_cntl_umq_lf_hdr_t, lf)
+#define L_LBMC_CNTL_UMQ_LF_HDR_T_LF SIZEOF(lbmc_cntl_umq_lf_hdr_t, lf)
+#define L_LBMC_CNTL_UMQ_LF_HDR_T (gint) sizeof(lbmc_cntl_umq_lf_hdr_t)
+
+/* LBMC control context information header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint8_t reserved;
+ lbm_uint8_t hop_count;
+ lbm_uint16_t port;
+ lbm_uint32_t addr;
+ lbm_uint32_t domain_id;
+ lbm_uint8_t ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+} lbmc_cntl_ctxinfo_hdr_t;
+#define O_LBMC_CNTL_CTXINFO_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ctxinfo_hdr_t, next_hdr)
+#define L_LBMC_CNTL_CTXINFO_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ctxinfo_hdr_t, next_hdr)
+#define O_LBMC_CNTL_CTXINFO_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ctxinfo_hdr_t, hdr_len)
+#define L_LBMC_CNTL_CTXINFO_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ctxinfo_hdr_t, hdr_len)
+#define O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ctxinfo_hdr_t, flags)
+#define L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS SIZEOF(lbmc_cntl_ctxinfo_hdr_t, flags)
+#define O_LBMC_CNTL_CTXINFO_HDR_T_RESERVED OFFSETOF(lbmc_cntl_ctxinfo_hdr_t, reserved)
+#define L_LBMC_CNTL_CTXINFO_HDR_T_RESERVED SIZEOF(lbmc_cntl_ctxinfo_hdr_t, reserved)
+#define O_LBMC_CNTL_CTXINFO_HDR_T_HOP_COUNT OFFSETOF(lbmc_cntl_ctxinfo_hdr_t, hop_count)
+#define L_LBMC_CNTL_CTXINFO_HDR_T_HOP_COUNT SIZEOF(lbmc_cntl_ctxinfo_hdr_t, hop_count)
+#define O_LBMC_CNTL_CTXINFO_HDR_T_PORT OFFSETOF(lbmc_cntl_ctxinfo_hdr_t, port)
+#define L_LBMC_CNTL_CTXINFO_HDR_T_PORT SIZEOF(lbmc_cntl_ctxinfo_hdr_t, port)
+#define O_LBMC_CNTL_CTXINFO_HDR_T_ADDR OFFSETOF(lbmc_cntl_ctxinfo_hdr_t, addr)
+#define L_LBMC_CNTL_CTXINFO_HDR_T_ADDR SIZEOF(lbmc_cntl_ctxinfo_hdr_t, addr)
+#define O_LBMC_CNTL_CTXINFO_HDR_T_DOMAIN_ID OFFSETOF(lbmc_cntl_ctxinfo_hdr_t, domain_id)
+#define L_LBMC_CNTL_CTXINFO_HDR_T_DOMAIN_ID SIZEOF(lbmc_cntl_ctxinfo_hdr_t, domain_id)
+#define O_LBMC_CNTL_CTXINFO_HDR_T_CTXINST OFFSETOF(lbmc_cntl_ctxinfo_hdr_t, ctxinst)
+#define L_LBMC_CNTL_CTXINFO_HDR_T_CTXINST SIZEOF(lbmc_cntl_ctxinfo_hdr_t, ctxinst)
+#define L_LBMC_CNTL_CTXINFO_HDR_T (gint) sizeof(lbmc_cntl_ctxinfo_hdr_t)
+
+/* LBMC control UME proxy source election header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t source_ip;
+ lbm_uint32_t store_ip;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+ lbm_uint16_t source_port;
+ lbm_uint16_t store_port;
+ lbm_uint8_t source_ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+ lbm_uint8_t store_ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+} lbmc_cntl_ume_pser_hdr_t;
+#define O_LBMC_CNTL_UME_PSER_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_pser_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_pser_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_pser_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_pser_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_pser_hdr_t, flags)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_pser_hdr_t, flags)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_IP OFFSETOF(lbmc_cntl_ume_pser_hdr_t, source_ip)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_IP SIZEOF(lbmc_cntl_ume_pser_hdr_t, source_ip)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_STORE_IP OFFSETOF(lbmc_cntl_ume_pser_hdr_t, store_ip)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_STORE_IP SIZEOF(lbmc_cntl_ume_pser_hdr_t, store_ip)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_ume_pser_hdr_t, transport_idx)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_ume_pser_hdr_t, transport_idx)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_ume_pser_hdr_t, topic_idx)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_ume_pser_hdr_t, topic_idx)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_PORT OFFSETOF(lbmc_cntl_ume_pser_hdr_t, source_port)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_PORT SIZEOF(lbmc_cntl_ume_pser_hdr_t, source_port)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_STORE_PORT OFFSETOF(lbmc_cntl_ume_pser_hdr_t, store_port)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_STORE_PORT SIZEOF(lbmc_cntl_ume_pser_hdr_t, store_port)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_CTXINST OFFSETOF(lbmc_cntl_ume_pser_hdr_t, source_ctxinst)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_CTXINST SIZEOF(lbmc_cntl_ume_pser_hdr_t, source_ctxinst)
+#define O_LBMC_CNTL_UME_PSER_HDR_T_STORE_CTXINST OFFSETOF(lbmc_cntl_ume_pser_hdr_t, store_ctxinst)
+#define L_LBMC_CNTL_UME_PSER_HDR_T_STORE_CTXINST SIZEOF(lbmc_cntl_ume_pser_hdr_t, store_ctxinst)
+#define L_LBMC_CNTL_UME_PSER_HDR_T (gint) sizeof(lbmc_cntl_ume_pser_hdr_t)
+
+/* LBMC domain header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t domain;
+} lbmc_domain_hdr_t;
+#define O_LBMC_DOMAIN_HDR_T_NEXT_HDR OFFSETOF(lbmc_domain_hdr_t, next_hdr)
+#define L_LBMC_DOMAIN_HDR_T_NEXT_HDR SIZEOF(lbmc_domain_hdr_t, next_hdr)
+#define O_LBMC_DOMAIN_HDR_T_HDR_LEN OFFSETOF(lbmc_domain_hdr_t, hdr_len)
+#define L_LBMC_DOMAIN_HDR_T_HDR_LEN SIZEOF(lbmc_domain_hdr_t, hdr_len)
+#define O_LBMC_DOMAIN_HDR_T_FLAGS OFFSETOF(lbmc_domain_hdr_t, flags)
+#define L_LBMC_DOMAIN_HDR_T_FLAGS SIZEOF(lbmc_domain_hdr_t, flags)
+#define O_LBMC_DOMAIN_HDR_T_DOMAIN OFFSETOF(lbmc_domain_hdr_t, domain)
+#define L_LBMC_DOMAIN_HDR_T_DOMAIN SIZEOF(lbmc_domain_hdr_t, domain)
+#define L_LBMC_DOMAIN_HDR_T (gint) sizeof(lbmc_domain_hdr_t)
+
+/* LBMC control TNWG capabilities header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t capabilities1;
+ lbm_uint32_t capabilities2;
+ lbm_uint32_t capabilities3;
+ lbm_uint32_t capabilities4;
+} lbmc_cntl_tnwg_capabilities_hdr_t;
+
+#define O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_tnwg_capabilities_hdr_t, next_hdr)
+#define L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_tnwg_capabilities_hdr_t, next_hdr)
+#define O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_tnwg_capabilities_hdr_t, hdr_len)
+#define L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_tnwg_capabilities_hdr_t, hdr_len)
+#define O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS OFFSETOF(lbmc_cntl_tnwg_capabilities_hdr_t, flags)
+#define L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS SIZEOF(lbmc_cntl_tnwg_capabilities_hdr_t, flags)
+#define O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1 OFFSETOF(lbmc_cntl_tnwg_capabilities_hdr_t, capabilities1)
+#define L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1 SIZEOF(lbmc_cntl_tnwg_capabilities_hdr_t, capabilities1)
+#define O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES2 OFFSETOF(lbmc_cntl_tnwg_capabilities_hdr_t, capabilities2)
+#define L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES2 SIZEOF(lbmc_cntl_tnwg_capabilities_hdr_t, capabilities2)
+#define O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3 OFFSETOF(lbmc_cntl_tnwg_capabilities_hdr_t, capabilities3)
+#define L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3 SIZEOF(lbmc_cntl_tnwg_capabilities_hdr_t, capabilities3)
+#define O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES4 OFFSETOF(lbmc_cntl_tnwg_capabilities_hdr_t, capabilities4)
+#define L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES4 SIZEOF(lbmc_cntl_tnwg_capabilities_hdr_t, capabilities4)
+#define L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T (gint) sizeof(lbmc_cntl_tnwg_capabilities_hdr_t)
+
+/* LBMC pattern index header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ char patidx[8];
+} lbmc_patidx_hdr_t;
+#define O_LBMC_PATIDX_HDR_T_NEXT_HDR OFFSETOF(lbmc_patidx_hdr_t, next_hdr)
+#define L_LBMC_PATIDX_HDR_T_NEXT_HDR SIZEOF(lbmc_patidx_hdr_t, next_hdr)
+#define O_LBMC_PATIDX_HDR_T_HDR_LEN OFFSETOF(lbmc_patidx_hdr_t, hdr_len)
+#define L_LBMC_PATIDX_HDR_T_HDR_LEN SIZEOF(lbmc_patidx_hdr_t, hdr_len)
+#define O_LBMC_PATIDX_HDR_T_FLAGS OFFSETOF(lbmc_patidx_hdr_t, flags)
+#define L_LBMC_PATIDX_HDR_T_FLAGS SIZEOF(lbmc_patidx_hdr_t, flags)
+#define O_LBMC_PATIDX_HDR_T_PATIDX OFFSETOF(lbmc_patidx_hdr_t, patidx)
+#define L_LBMC_PATIDX_HDR_T_PATIDX SIZEOF(lbmc_patidx_hdr_t, patidx)
+#define L_LBMC_PATIDX_HDR_T (gint) sizeof(lbmc_patidx_hdr_t)
+
+/* LBMC control UME client lifetime header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t activity_tmo;
+ lbm_uint32_t lifetime;
+ lbm_uint32_t ttl;
+} lbmc_cntl_ume_client_lifetime_hdr_t;
+#define O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_client_lifetime_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_client_lifetime_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_client_lifetime_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_client_lifetime_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_client_lifetime_hdr_t, flags)
+#define L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_client_lifetime_hdr_t, flags)
+#define O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_ACTIVITY_TMO OFFSETOF(lbmc_cntl_ume_client_lifetime_hdr_t, activity_tmo)
+#define L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_ACTIVITY_TMO SIZEOF(lbmc_cntl_ume_client_lifetime_hdr_t, activity_tmo)
+#define O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_LIFETIME OFFSETOF(lbmc_cntl_ume_client_lifetime_hdr_t, lifetime)
+#define L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_LIFETIME SIZEOF(lbmc_cntl_ume_client_lifetime_hdr_t, lifetime)
+#define O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_TTL OFFSETOF(lbmc_cntl_ume_client_lifetime_hdr_t, ttl)
+#define L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_TTL SIZEOF(lbmc_cntl_ume_client_lifetime_hdr_t, ttl)
+#define L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T (gint) sizeof(lbmc_cntl_ume_client_lifetime_hdr_t)
+
+/* LBMC control UME session ID header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint8_t sid[8];
+} lbmc_cntl_ume_sid_hdr_t;
+#define O_LBMC_CNTL_UME_SID_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_sid_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_SID_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_sid_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_SID_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_sid_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_SID_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_sid_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_SID_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_sid_hdr_t, flags)
+#define L_LBMC_CNTL_UME_SID_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_sid_hdr_t, flags)
+#define O_LBMC_CNTL_UME_SID_HDR_T_SID OFFSETOF(lbmc_cntl_ume_sid_hdr_t, sid)
+#define L_LBMC_CNTL_UME_SID_HDR_T_SID SIZEOF(lbmc_cntl_ume_sid_hdr_t, sid)
+#define L_LBMC_CNTL_UME_SID_HDR_T (gint) sizeof(lbmc_cntl_ume_sid_hdr_t)
+
+/* LBMC control UMQ index command header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t cmd_type;
+ lbm_uint32_t queue_id;
+ lbm_uint16_t cmd_id;
+ lbm_uint16_t inst_idx;
+ lbm_uint8_t regid[8];
+} lbmc_cntl_umq_idx_cmd_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_idx_cmd_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_idx_cmd_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_idx_cmd_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_idx_cmd_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_idx_cmd_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_idx_cmd_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_CMD_TYPE OFFSETOF(lbmc_cntl_umq_idx_cmd_hdr_t, cmd_type)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_CMD_TYPE SIZEOF(lbmc_cntl_umq_idx_cmd_hdr_t, cmd_type)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_idx_cmd_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_CMD_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_hdr_t, cmd_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_CMD_ID SIZEOF(lbmc_cntl_umq_idx_cmd_hdr_t, cmd_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_INST_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_hdr_t, inst_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_INST_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_hdr_t, inst_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_REGID OFFSETOF(lbmc_cntl_umq_idx_cmd_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_REGID SIZEOF(lbmc_cntl_umq_idx_cmd_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_rcv_stop_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_rcv_stop_idx_assign_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_rcv_stop_idx_assign_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rcv_stop_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rcv_stop_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_rcv_stop_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_rcv_start_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_rcv_start_idx_assign_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_rcv_start_idx_assign_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rcv_start_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rcv_start_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_rcv_start_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+ lbm_uint32_t flags;
+ lbm_uint8_t index_len;
+ lbm_uint8_t reserved[3];
+} lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX_LEN OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, index_len)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX_LEN SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, index_len)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED + L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_rcv_release_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_SRC_ID OFFSETOF(lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t, src_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_SRC_ID SIZEOF(lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t, src_id)
+#define O_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_ulb_rcv_stop_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_SRC_ID OFFSETOF(lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t, src_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_SRC_ID SIZEOF(lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t, src_id)
+#define O_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_ulb_rcv_start_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint32_t flags;
+ lbm_uint16_t appset_idx;
+ lbm_uint8_t index_len;
+ lbm_uint8_t reserved[1];
+} lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_SRC_ID OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, src_id)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_SRC_ID SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, src_id)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX_LEN OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, index_len)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX_LEN SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, index_len)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED + L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_ulb_idx_cmd_rcv_release_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+ lbm_uint32_t flags;
+ lbm_uint8_t index_len;
+ lbm_uint8_t reserved[3];
+} lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, index_len)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, index_len)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED + L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_rcv_reserve_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint32_t flags;
+ lbm_uint16_t appset_idx;
+ lbm_uint8_t index_len;
+ lbm_uint8_t reserved[1];
+} lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_SRC_ID OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, src_id)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_SRC_ID SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, src_id)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, index_len)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, index_len)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED + L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED
+#define L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_ulb_idx_cmd_rcv_reserve_idx_assign_hdr_t)
+
+/* LBMC control UMQ index command response header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t resp_type;
+ lbm_uint32_t queue_id;
+ lbm_uint16_t cmd_id;
+ lbm_uint16_t inst_idx;
+ lbm_uint8_t regid[8];
+} lbmc_cntl_umq_idx_cmd_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_RESP_TYPE OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, resp_type)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_RESP_TYPE SIZEOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, resp_type)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_CMD_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, cmd_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_CMD_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, cmd_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_INST_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, inst_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_INST_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, inst_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_REGID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_REGID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_hdr_t)
+
+typedef struct
+{
+ lbm_uint16_t reserved;
+ lbm_uint16_t code;
+} lbmc_cntl_umq_idx_cmd_resp_err_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_err_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_resp_err_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T_CODE OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_err_hdr_t, code)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T_CODE SIZEOF(lbmc_cntl_umq_idx_cmd_resp_err_hdr_t, code)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_err_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_idx_cmd_resp_rcv_stop_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_stop_idx_assign_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_stop_idx_assign_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_stop_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_stop_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_rcv_stop_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_rcv_start_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_rcv_release_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_SRC_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t, src_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_SRC_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t, src_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_stop_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_SRC_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t, src_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_SRC_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t, src_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_start_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t appset_idx;
+ lbm_uint16_t reserved;
+} lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_SRC_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t, src_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_SRC_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t, src_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_release_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+ lbm_uint32_t flags;
+ lbm_uint16_t appset_idx;
+ lbm_uint8_t index_len;
+ lbm_uint8_t reserved[1];
+} lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, index_len)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, index_len)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED + L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_rcv_reserve_idx_assign_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t src_id;
+ lbm_uint32_t assign_id;
+ lbm_uint32_t flags;
+ lbm_uint16_t appset_idx;
+ lbm_uint8_t index_len;
+ lbm_uint8_t reserved[1];
+} lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t;
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_SRC_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, src_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_SRC_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, src_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, index_len)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, index_len)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED + L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED
+#define L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T (gint) sizeof(lbmc_cntl_umq_idx_cmd_resp_ulb_rcv_reserve_idx_assign_hdr_t)
+
+/* LBMC originating domain header (same as lbmc_domain_hdr_t) */
+#define O_LBMC_ODOMAIN_HDR_T_NEXT_HDR OFFSETOF(lbmc_domain_hdr_t, next_hdr)
+#define L_LBMC_ODOMAIN_HDR_T_NEXT_HDR SIZEOF(lbmc_domain_hdr_t, next_hdr)
+#define O_LBMC_ODOMAIN_HDR_T_HDR_LEN OFFSETOF(lbmc_domain_hdr_t, hdr_len)
+#define L_LBMC_ODOMAIN_HDR_T_HDR_LEN SIZEOF(lbmc_domain_hdr_t, hdr_len)
+#define O_LBMC_ODOMAIN_HDR_T_FLAGS OFFSETOF(lbmc_domain_hdr_t, flags)
+#define L_LBMC_ODOMAIN_HDR_T_FLAGS SIZEOF(lbmc_domain_hdr_t, flags)
+#define O_LBMC_ODOMAIN_HDR_T_ODOMAIN OFFSETOF(lbmc_domain_hdr_t, domain)
+#define L_LBMC_ODOMAIN_HDR_T_ODOMAIN SIZEOF(lbmc_domain_hdr_t, domain)
+#define L_LBMC_ODOMAIN_HDR_T (gint) sizeof(lbmc_domain_hdr_t)
+
+/* LBMC stream header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t stream_id;
+ lbm_uint32_t sqn;
+ lbm_uint8_t ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+} lbmc_stream_hdr_t;
+#define O_LBMC_STREAM_HDR_T_NEXT_HDR OFFSETOF(lbmc_stream_hdr_t, next_hdr)
+#define L_LBMC_STREAM_HDR_T_NEXT_HDR SIZEOF(lbmc_stream_hdr_t, next_hdr)
+#define O_LBMC_STREAM_HDR_T_HDR_LEN OFFSETOF(lbmc_stream_hdr_t, hdr_len)
+#define L_LBMC_STREAM_HDR_T_HDR_LEN SIZEOF(lbmc_stream_hdr_t, hdr_len)
+#define O_LBMC_STREAM_HDR_T_FLAGS OFFSETOF(lbmc_stream_hdr_t, flags)
+#define L_LBMC_STREAM_HDR_T_FLAGS SIZEOF(lbmc_stream_hdr_t, flags)
+#define O_LBMC_STREAM_HDR_T_STREAM_ID OFFSETOF(lbmc_stream_hdr_t, stream_id)
+#define L_LBMC_STREAM_HDR_T_STREAM_ID SIZEOF(lbmc_stream_hdr_t, stream_id)
+#define O_LBMC_STREAM_HDR_T_SQN OFFSETOF(lbmc_stream_hdr_t, sqn)
+#define L_LBMC_STREAM_HDR_T_SQN SIZEOF(lbmc_stream_hdr_t, sqn)
+#define O_LBMC_STREAM_HDR_T_CTXINST OFFSETOF(lbmc_stream_hdr_t, ctxinst)
+#define L_LBMC_STREAM_HDR_T_CTXINST SIZEOF(lbmc_stream_hdr_t, ctxinst)
+#define L_LBMC_STREAM_HDR_T (gint) sizeof(lbmc_stream_hdr_t)
+
+/* LBMC control topic multi-domain interest header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint16_t domain_count;
+ lbm_uint16_t res1;
+} lbmc_cntl_topic_md_interest_hdr_t;
+#define O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_topic_md_interest_hdr_t, next_hdr)
+#define L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_topic_md_interest_hdr_t, next_hdr)
+#define O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_topic_md_interest_hdr_t, hdr_len)
+#define L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_topic_md_interest_hdr_t, hdr_len)
+#define O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS OFFSETOF(lbmc_cntl_topic_md_interest_hdr_t, flags)
+#define L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS SIZEOF(lbmc_cntl_topic_md_interest_hdr_t, flags)
+#define O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_DOMAIN_COUNT OFFSETOF(lbmc_cntl_topic_md_interest_hdr_t, domain_count)
+#define L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_DOMAIN_COUNT SIZEOF(lbmc_cntl_topic_md_interest_hdr_t, domain_count)
+#define O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_RES1 OFFSETOF(lbmc_cntl_topic_md_interest_hdr_t, res1)
+#define L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_RES1 SIZEOF(lbmc_cntl_topic_md_interest_hdr_t, res1)
+#define L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T (gint) sizeof(lbmc_cntl_topic_md_interest_hdr_t)
+
+/* LBMC control pattern multi-domain interest header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t type;
+ lbm_uint16_t domain_count;
+ lbm_uint16_t res1;
+ lbm_uint8_t index[8];
+} lbmc_cntl_pattern_md_interest_hdr_t;
+#define O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_pattern_md_interest_hdr_t, next_hdr)
+#define L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_pattern_md_interest_hdr_t, next_hdr)
+#define O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_pattern_md_interest_hdr_t, hdr_len)
+#define L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_pattern_md_interest_hdr_t, hdr_len)
+#define O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS OFFSETOF(lbmc_cntl_pattern_md_interest_hdr_t, flags)
+#define L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS SIZEOF(lbmc_cntl_pattern_md_interest_hdr_t, flags)
+#define O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_TYPE OFFSETOF(lbmc_cntl_pattern_md_interest_hdr_t, type)
+#define L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_TYPE SIZEOF(lbmc_cntl_pattern_md_interest_hdr_t, type)
+#define O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_DOMAIN_COUNT OFFSETOF(lbmc_cntl_pattern_md_interest_hdr_t, domain_count)
+#define L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_DOMAIN_COUNT SIZEOF(lbmc_cntl_pattern_md_interest_hdr_t, domain_count)
+#define O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_RES1 OFFSETOF(lbmc_cntl_pattern_md_interest_hdr_t, res1)
+#define L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_RES1 SIZEOF(lbmc_cntl_pattern_md_interest_hdr_t, res1)
+#define O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_INDEX OFFSETOF(lbmc_cntl_pattern_md_interest_hdr_t, index)
+#define L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_INDEX SIZEOF(lbmc_cntl_pattern_md_interest_hdr_t, index)
+#define L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T (gint) sizeof(lbmc_cntl_pattern_md_interest_hdr_t)
+
+/* LBMC control TNWG keepalive header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t index;
+ lbm_uint8_t ts_seconds[8];
+ lbm_uint32_t ts_microseconds;
+ lbm_uint32_t reserved_1;
+ lbm_uint8_t reserved_2[8];
+ lbm_uint8_t reserved_3[8];
+ lbm_uint8_t reserved_4[8];
+ lbm_uint8_t reserved_5[8];
+ lbm_uint8_t reserved_6[8];
+} lbmc_cntl_tnwg_ka_hdr_t;
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, next_hdr)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, next_hdr)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, hdr_len)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, hdr_len)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, flags)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, flags)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_INDEX OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, index)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_INDEX SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, index)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_TS_SECONDS OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, ts_seconds)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_TS_SECONDS SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, ts_seconds)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_TS_MICROSECONDS OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, ts_microseconds)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_TS_MICROSECONDS SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, ts_microseconds)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_1 OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_1)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_1 SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_1)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_2 OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_2)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_2 SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_2)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_3 OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_3)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_3 SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_3)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_4 OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_4)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_4 SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_4)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_5 OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_5)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_5 SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_5)
+#define O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_6 OFFSETOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_6)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_6 SIZEOF(lbmc_cntl_tnwg_ka_hdr_t, reserved_6)
+#define L_LBMC_CNTL_TNWG_KA_HDR_T (gint) sizeof(lbmc_cntl_tnwg_ka_hdr_t)
+
+/* LBMC control UME receiver keepalive header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t rcv_regid;
+ lbm_uint64_t session_id;
+ lbm_uint8_t ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+} lbmc_cntl_ume_receiver_keepalive_hdr_t;
+#define O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, flags)
+#define L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, flags)
+#define O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_RCV_REGID OFFSETOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, rcv_regid)
+#define L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_RCV_REGID SIZEOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, rcv_regid)
+#define O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_SESSION_ID OFFSETOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, session_id)
+#define L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_SESSION_ID SIZEOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, session_id)
+#define O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_CTXINST OFFSETOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, ctxinst)
+#define L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_CTXINST SIZEOF(lbmc_cntl_ume_receiver_keepalive_hdr_t, ctxinst)
+#define L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T (gint) sizeof(lbmc_cntl_ume_receiver_keepalive_hdr_t)
+
+/* LBMC control UMQ command header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t cmd_type;
+ lbm_uint32_t queue_id;
+ lbm_uint16_t cmd_id;
+ lbm_uint16_t inst_idx;
+ lbm_uint8_t regid[8];
+} lbmc_cntl_umq_cmd_hdr_t;
+#define O_LBMC_CNTL_UMQ_CMD_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_cmd_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_CMD_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_cmd_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_CMD_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_cmd_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_CMD_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_cmd_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_CMD_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_cmd_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_CMD_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_cmd_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_CMD_HDR_T_CMD_TYPE OFFSETOF(lbmc_cntl_umq_cmd_hdr_t, cmd_type)
+#define L_LBMC_CNTL_UMQ_CMD_HDR_T_CMD_TYPE SIZEOF(lbmc_cntl_umq_cmd_hdr_t, cmd_type)
+#define O_LBMC_CNTL_UMQ_CMD_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_cmd_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_CMD_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_cmd_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_CMD_HDR_T_CMD_ID OFFSETOF(lbmc_cntl_umq_cmd_hdr_t, cmd_id)
+#define L_LBMC_CNTL_UMQ_CMD_HDR_T_CMD_ID SIZEOF(lbmc_cntl_umq_cmd_hdr_t, cmd_id)
+#define O_LBMC_CNTL_UMQ_CMD_HDR_T_INST_IDX OFFSETOF(lbmc_cntl_umq_cmd_hdr_t, inst_idx)
+#define L_LBMC_CNTL_UMQ_CMD_HDR_T_INST_IDX SIZEOF(lbmc_cntl_umq_cmd_hdr_t, inst_idx)
+#define O_LBMC_CNTL_UMQ_CMD_HDR_T_REGID OFFSETOF(lbmc_cntl_umq_cmd_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_CMD_HDR_T_REGID SIZEOF(lbmc_cntl_umq_cmd_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_CMD_HDR_T (gint) sizeof(lbmc_cntl_umq_cmd_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t serial_num[8];
+} lbmc_cntl_umq_ctx_queue_topic_list_hdr_t;
+#define O_LBMC_CNTL_UMQ_CTX_QUEUE_TOPIC_LIST_HDR_T_SERIAL_NUM OFFSETOF(lbmc_cntl_umq_ctx_queue_topic_list_hdr_t, serial_num)
+#define L_LBMC_CNTL_UMQ_CTX_QUEUE_TOPIC_LIST_HDR_T_SERIAL_NUM SIZEOF(lbmc_cntl_umq_ctx_queue_topic_list_hdr_t, serial_num)
+#define L_LBMC_CNTL_UMQ_CTX_QUEUE_TOPIC_LIST_HDR_T (gint) sizeof(lbmc_cntl_umq_ctx_queue_topic_list_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+ lbm_uint16_t info_only;
+ lbm_uint8_t num_msgids;
+ lbm_uint8_t flags;
+} lbmc_cntl_umq_rcv_msg_retrieve_hdr_t;
+#define O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, assign_id)
+#define O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_INFO_ONLY OFFSETOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, info_only)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_INFO_ONLY SIZEOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, info_only)
+#define O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGIDS OFFSETOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, num_msgids)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGIDS SIZEOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, num_msgids)
+#define O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T (gint) sizeof(lbmc_cntl_umq_rcv_msg_retrieve_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t regid[8];
+ lbm_uint8_t stamp[8];
+} lbmc_cntl_umq_rcv_msg_retrieve_entry_hdr_t;
+#define O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T_REGID OFFSETOF(lbmc_cntl_umq_rcv_msg_retrieve_entry_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T_REGID SIZEOF(lbmc_cntl_umq_rcv_msg_retrieve_entry_hdr_t, regid)
+#define O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STAMP OFFSETOF(lbmc_cntl_umq_rcv_msg_retrieve_entry_hdr_t, stamp)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STAMP SIZEOF(lbmc_cntl_umq_rcv_msg_retrieve_entry_hdr_t, stamp)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T (gint) sizeof(lbmc_cntl_umq_rcv_msg_retrieve_entry_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_rcv_msg_list_hdr_t;
+#define O_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_rcv_msg_list_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_rcv_msg_list_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_rcv_msg_list_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_rcv_msg_list_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T (gint) sizeof(lbmc_cntl_umq_rcv_msg_list_hdr_t)
+
+/* LBMC control UMQ command response header */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t resp_type;
+ lbm_uint32_t queue_id;
+ lbm_uint16_t cmd_id;
+ lbm_uint16_t inst_idx;
+ lbm_uint8_t regid[8];
+} lbmc_cntl_umq_cmd_resp_hdr_t;
+#define O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_cmd_resp_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_cmd_resp_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_cmd_resp_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_cmd_resp_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_cmd_resp_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_cmd_resp_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_RESP_TYPE OFFSETOF(lbmc_cntl_umq_cmd_resp_hdr_t, resp_type)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_RESP_TYPE SIZEOF(lbmc_cntl_umq_cmd_resp_hdr_t, resp_type)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_QUEUE_ID OFFSETOF(lbmc_cntl_umq_cmd_resp_hdr_t, queue_id)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_QUEUE_ID SIZEOF(lbmc_cntl_umq_cmd_resp_hdr_t, queue_id)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_CMD_ID OFFSETOF(lbmc_cntl_umq_cmd_resp_hdr_t, cmd_id)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_CMD_ID SIZEOF(lbmc_cntl_umq_cmd_resp_hdr_t, cmd_id)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_INST_IDX OFFSETOF(lbmc_cntl_umq_cmd_resp_hdr_t, inst_idx)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_INST_IDX SIZEOF(lbmc_cntl_umq_cmd_resp_hdr_t, inst_idx)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_REGID OFFSETOF(lbmc_cntl_umq_cmd_resp_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_REGID SIZEOF(lbmc_cntl_umq_cmd_resp_hdr_t, regid)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T (gint) sizeof(lbmc_cntl_umq_cmd_resp_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t;
+#define O_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T (gint) sizeof(lbmc_cntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t num_msgs;
+ lbm_uint8_t flags;
+ lbm_uint16_t reserved;
+} lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t;
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGS OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, num_msgs)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGS SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, num_msgs)
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_FLAGS OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, flags)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_FLAGS SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, flags)
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_RESERVED OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, reserved)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_RESERVED SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t, reserved)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T (gint) sizeof(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t regid[8];
+ lbm_uint8_t stamp[8];
+ lbm_uint32_t assign_id;
+ lbm_uint16_t num_ras;
+ lbm_uint8_t status;
+ lbm_uint8_t reserved;
+} lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t;
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_REGID OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, regid)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_REGID SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, regid)
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STAMP OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, stamp)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STAMP SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, stamp)
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_ASSIGN_ID OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, assign_id)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_ASSIGN_ID SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, assign_id)
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_NUM_RAS OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, num_ras)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_NUM_RAS SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, num_ras)
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STATUS OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, status)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STATUS SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, status)
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_RESERVED OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, reserved)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_RESERVED SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t, reserved)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T (gint) sizeof(lbmc_xcntl_umq_cmd_resp_rcv_msg_retrieve_entry_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint32_t assign_id;
+} lbmc_cntl_umq_cmd_resp_rcv_msg_list_hdr_t;
+#define O_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_cmd_resp_rcv_msg_list_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_cmd_resp_rcv_msg_list_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_ASSIGN_ID OFFSETOF(lbmc_cntl_umq_cmd_resp_rcv_msg_list_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_ASSIGN_ID SIZEOF(lbmc_cntl_umq_cmd_resp_rcv_msg_list_hdr_t, assign_id)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T (gint) sizeof(lbmc_cntl_umq_cmd_resp_rcv_msg_list_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t num_msgs[8];
+} lbmc_xcntl_umq_cmd_resp_rcv_msg_list_hdr_t;
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_NUM_MSGS OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_list_hdr_t, num_msgs)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_NUM_MSGS SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_list_hdr_t, num_msgs)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T (gint) sizeof(lbmc_xcntl_umq_cmd_resp_rcv_msg_list_hdr_t)
+
+typedef struct
+{
+ lbm_uint8_t regid[8];
+ lbm_uint8_t stamp[8];
+} lbmc_xcntl_umq_cmd_resp_rcv_msg_list_msg_entry_hdr_t;
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T_REGID OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_list_msg_entry_hdr_t, regid)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T_REGID SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_list_msg_entry_hdr_t, regid)
+#define O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T_STAMP OFFSETOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_list_msg_entry_hdr_t, stamp)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T_STAMP SIZEOF(lbmc_xcntl_umq_cmd_resp_rcv_msg_list_msg_entry_hdr_t, stamp)
+#define L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T (gint) sizeof(lbmc_xcntl_umq_cmd_resp_rcv_msg_list_msg_entry_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t num_topics;
+} lbmc_cntl_umq_cmd_resp_ctx_topic_list_hdr_t;
+#define O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_HDR_T_NUM_TOPICS OFFSETOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_hdr_t, num_topics)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_HDR_T_NUM_TOPICS SIZEOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_hdr_t, num_topics)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_HDR_T (gint) sizeof(lbmc_cntl_umq_cmd_resp_ctx_topic_list_hdr_t)
+
+typedef struct
+{
+ lbm_uint16_t num_receiver_type_ids;
+ lbm_uint16_t appset_idx;
+ lbm_uint8_t appset_name_len;
+ lbm_uint8_t reserved[3];
+} lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t;
+#define O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_NUM_RECEIVER_TYPE_IDS OFFSETOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t, num_receiver_type_ids)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_NUM_RECEIVER_TYPE_IDS SIZEOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t, num_receiver_type_ids)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_APPSET_IDX OFFSETOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t, appset_idx)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_APPSET_IDX SIZEOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t, appset_idx)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_APPSET_NAME_LEN OFFSETOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t, appset_name_len)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_APPSET_NAME_LEN SIZEOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t, appset_name_len)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T (gint) sizeof(lbmc_cntl_umq_cmd_resp_ctx_topic_list_appset_entry_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t rcr_idx;
+ lbm_uint16_t num_appsets;
+ lbm_uint8_t topic_len;
+ lbm_uint8_t reserved;
+} lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t;
+#define O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_RCR_IDX OFFSETOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t, rcr_idx)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_RCR_IDX SIZEOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t, rcr_idx)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_NUM_APPSETS OFFSETOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t, num_appsets)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_NUM_APPSETS SIZEOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t, num_appsets)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_TOPIC_LEN OFFSETOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t, topic_len)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_TOPIC_LEN SIZEOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t, topic_len)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T (gint) sizeof(lbmc_cntl_umq_cmd_resp_ctx_topic_list_topic_entry_hdr_t)
+
+typedef struct
+{
+ lbm_uint16_t reserved;
+ lbm_uint16_t code;
+} lbmc_cntl_umq_cmd_resp_err_hdr_t;
+#define O_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T_RESERVED OFFSETOF(lbmc_cntl_umq_cmd_resp_err_hdr_t, reserved)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T_RESERVED SIZEOF(lbmc_cntl_umq_cmd_resp_err_hdr_t, reserved)
+#define O_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T_CODE OFFSETOF(lbmc_cntl_umq_cmd_resp_err_hdr_t, code)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T_CODE SIZEOF(lbmc_cntl_umq_cmd_resp_err_hdr_t, code)
+#define L_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T (gint) sizeof(lbmc_cntl_umq_cmd_resp_err_hdr_t)
+
+/* LBMC control source registration information request header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t transport_idx;
+ lbm_uint32_t topic_idx;
+} lbmc_cntl_sri_req_hdr_t;
+#define O_LBMC_CNTL_SRI_REQ_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_sri_req_hdr_t, next_hdr)
+#define L_LBMC_CNTL_SRI_REQ_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_sri_req_hdr_t, next_hdr)
+#define O_LBMC_CNTL_SRI_REQ_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_sri_req_hdr_t, hdr_len)
+#define L_LBMC_CNTL_SRI_REQ_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_sri_req_hdr_t, hdr_len)
+#define O_LBMC_CNTL_SRI_REQ_HDR_T_FLAGS OFFSETOF(lbmc_cntl_sri_req_hdr_t, flags)
+#define L_LBMC_CNTL_SRI_REQ_HDR_T_FLAGS SIZEOF(lbmc_cntl_sri_req_hdr_t, flags)
+#define O_LBMC_CNTL_SRI_REQ_HDR_T_TRANSPORT_IDX OFFSETOF(lbmc_cntl_sri_req_hdr_t, transport_idx)
+#define L_LBMC_CNTL_SRI_REQ_HDR_T_TRANSPORT_IDX SIZEOF(lbmc_cntl_sri_req_hdr_t, transport_idx)
+#define O_LBMC_CNTL_SRI_REQ_HDR_T_TOPIC_IDX OFFSETOF(lbmc_cntl_sri_req_hdr_t, topic_idx)
+#define L_LBMC_CNTL_SRI_REQ_HDR_T_TOPIC_IDX SIZEOF(lbmc_cntl_sri_req_hdr_t, topic_idx)
+#define L_LBMC_CNTL_SRI_REQ_HDR_T (gint) sizeof(lbmc_cntl_sri_req_hdr_t)
+
+/* LBMC control UME store domain header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t domain;
+} lbmc_cntl_ume_store_domain_hdr_t;
+#define O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_store_domain_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_store_domain_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_store_domain_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_store_domain_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_store_domain_hdr_t, flags)
+#define L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_store_domain_hdr_t, flags)
+#define O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_DOMAIN OFFSETOF(lbmc_cntl_ume_store_domain_hdr_t, domain)
+#define L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_DOMAIN SIZEOF(lbmc_cntl_ume_store_domain_hdr_t, domain)
+#define L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T (gint) sizeof(lbmc_cntl_ume_store_domain_hdr_t)
+
+/* LBMC control source registration information header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t version;
+ lbm_uint32_t low_sqn;
+ lbm_uint32_t high_sqn;
+} lbmc_cntl_sri_hdr_t;
+#define O_LBMC_CNTL_SRI_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_sri_hdr_t, next_hdr)
+#define L_LBMC_CNTL_SRI_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_sri_hdr_t, next_hdr)
+#define O_LBMC_CNTL_SRI_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_sri_hdr_t, hdr_len)
+#define L_LBMC_CNTL_SRI_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_sri_hdr_t, hdr_len)
+#define O_LBMC_CNTL_SRI_HDR_T_FLAGS OFFSETOF(lbmc_cntl_sri_hdr_t, flags)
+#define L_LBMC_CNTL_SRI_HDR_T_FLAGS SIZEOF(lbmc_cntl_sri_hdr_t, flags)
+#define O_LBMC_CNTL_SRI_HDR_T_VERSION OFFSETOF(lbmc_cntl_sri_hdr_t, version)
+#define L_LBMC_CNTL_SRI_HDR_T_VERSION SIZEOF(lbmc_cntl_sri_hdr_t, version)
+#define O_LBMC_CNTL_SRI_HDR_T_LOW_SQN OFFSETOF(lbmc_cntl_sri_hdr_t, low_sqn)
+#define L_LBMC_CNTL_SRI_HDR_T_LOW_SQN SIZEOF(lbmc_cntl_sri_hdr_t, low_sqn)
+#define O_LBMC_CNTL_SRI_HDR_T_HIGH_SQN OFFSETOF(lbmc_cntl_sri_hdr_t, high_sqn)
+#define L_LBMC_CNTL_SRI_HDR_T_HIGH_SQN SIZEOF(lbmc_cntl_sri_hdr_t, high_sqn)
+#define L_LBMC_CNTL_SRI_HDR_T (gint) sizeof(lbmc_cntl_sri_hdr_t)
+
+/* LBMC control route information header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t gateway_version;
+ lbm_uint32_t configuration_signature;
+ lbm_uint8_t node_id[8];
+ lbm_uint32_t topology;
+ lbm_uint16_t vers;
+ lbm_uint16_t sqn;
+ lbm_uint8_t ttl;
+ lbm_uint8_t reserved1;
+ lbm_uint16_t reserved2;
+} lbmc_cntl_route_info_hdr_t;
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_route_info_hdr_t, next_hdr)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_route_info_hdr_t, next_hdr)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_route_info_hdr_t, hdr_len)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_route_info_hdr_t, hdr_len)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_FLAGS OFFSETOF(lbmc_cntl_route_info_hdr_t, flags)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_FLAGS SIZEOF(lbmc_cntl_route_info_hdr_t, flags)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_GATEWAY_VERSION OFFSETOF(lbmc_cntl_route_info_hdr_t, gateway_version)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_GATEWAY_VERSION SIZEOF(lbmc_cntl_route_info_hdr_t, gateway_version)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_CONFIGURATION_SIGNATURE OFFSETOF(lbmc_cntl_route_info_hdr_t, configuration_signature)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_CONFIGURATION_SIGNATURE SIZEOF(lbmc_cntl_route_info_hdr_t, configuration_signature)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_NODE_ID OFFSETOF(lbmc_cntl_route_info_hdr_t, node_id)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_NODE_ID SIZEOF(lbmc_cntl_route_info_hdr_t, node_id)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_TOPOLOGY OFFSETOF(lbmc_cntl_route_info_hdr_t, topology)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_TOPOLOGY SIZEOF(lbmc_cntl_route_info_hdr_t, topology)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_VERS OFFSETOF(lbmc_cntl_route_info_hdr_t, vers)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_VERS SIZEOF(lbmc_cntl_route_info_hdr_t, vers)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_SQN OFFSETOF(lbmc_cntl_route_info_hdr_t, sqn)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_SQN SIZEOF(lbmc_cntl_route_info_hdr_t, sqn)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_TTL OFFSETOF(lbmc_cntl_route_info_hdr_t, ttl)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_TTL SIZEOF(lbmc_cntl_route_info_hdr_t, ttl)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_RESERVED1 OFFSETOF(lbmc_cntl_route_info_hdr_t, reserved1)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_RESERVED1 SIZEOF(lbmc_cntl_route_info_hdr_t, reserved1)
+#define O_LBMC_CNTL_ROUTE_INFO_HDR_T_RESERVED2 OFFSETOF(lbmc_cntl_route_info_hdr_t, reserved2)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T_RESERVED2 SIZEOF(lbmc_cntl_route_info_hdr_t, reserved2)
+#define L_LBMC_CNTL_ROUTE_INFO_HDR_T (gint) sizeof(lbmc_cntl_route_info_hdr_t)
+
+/* LBMC control route information neighbor header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint8_t node_id[8];
+ lbm_uint32_t ingress_cost;
+ lbm_uint32_t egress_cost;
+} lbmc_cntl_route_info_neighbor_hdr_t;
+#define O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_route_info_neighbor_hdr_t, next_hdr)
+#define L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_route_info_neighbor_hdr_t, next_hdr)
+#define O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_route_info_neighbor_hdr_t, hdr_len)
+#define L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_route_info_neighbor_hdr_t, hdr_len)
+#define O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_FLAGS OFFSETOF(lbmc_cntl_route_info_neighbor_hdr_t, flags)
+#define L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_FLAGS SIZEOF(lbmc_cntl_route_info_neighbor_hdr_t, flags)
+#define O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_NODE_ID OFFSETOF(lbmc_cntl_route_info_neighbor_hdr_t, node_id)
+#define L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_NODE_ID SIZEOF(lbmc_cntl_route_info_neighbor_hdr_t, node_id)
+#define O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_INGRESS_COST OFFSETOF(lbmc_cntl_route_info_neighbor_hdr_t, ingress_cost)
+#define L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_INGRESS_COST SIZEOF(lbmc_cntl_route_info_neighbor_hdr_t, ingress_cost)
+#define O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_EGRESS_COST OFFSETOF(lbmc_cntl_route_info_neighbor_hdr_t, egress_cost)
+#define L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_EGRESS_COST SIZEOF(lbmc_cntl_route_info_neighbor_hdr_t, egress_cost)
+#define L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T (gint) sizeof(lbmc_cntl_route_info_neighbor_hdr_t)
+
+/* LBMC control gateway name header. */
+#define O_LBMC_CNTL_GATEWAY_NAME_HDR_T_NEXT_HDR OFFSETOF(lbmc_basic_hdr_t, next_hdr)
+#define L_LBMC_CNTL_GATEWAY_NAME_HDR_T_NEXT_HDR SIZEOF(lbmc_basic_hdr_t, next_hdr)
+#define O_LBMC_CNTL_GATEWAY_NAME_HDR_T_HDR_LEN OFFSETOF(lbmc_basic_hdr_t, hdr_len)
+#define L_LBMC_CNTL_GATEWAY_NAME_HDR_T_HDR_LEN SIZEOF(lbmc_basic_hdr_t, hdr_len)
+#define O_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS OFFSETOF(lbmc_basic_hdr_t, res)
+#define L_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS SIZEOF(lbmc_basic_hdr_t, res)
+#define O_LBMC_CNTL_GATEWAY_NAME_HDR_T_NAME (OFFSETOF(lbmc_basic_hdr_t, res) + SIZEOF(lbmc_basic_hdr_t, res))
+
+/* LBMC control generic authentication header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t opid;
+} lbmc_cntl_auth_generic_hdr_t;
+#define O_LBMC_CNTL_AUTH_GENERIC_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_auth_generic_hdr_t, next_hdr)
+#define L_LBMC_CNTL_AUTH_GENERIC_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_auth_generic_hdr_t, next_hdr)
+#define O_LBMC_CNTL_AUTH_GENERIC_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_auth_generic_hdr_t, hdr_len)
+#define L_LBMC_CNTL_AUTH_GENERIC_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_auth_generic_hdr_t, hdr_len)
+#define O_LBMC_CNTL_AUTH_GENERIC_HDR_T_FLAGS OFFSETOF(lbmc_cntl_auth_generic_hdr_t, flags)
+#define L_LBMC_CNTL_AUTH_GENERIC_HDR_T_FLAGS SIZEOF(lbmc_cntl_auth_generic_hdr_t, flags)
+#define O_LBMC_CNTL_AUTH_GENERIC_HDR_T_OPID OFFSETOF(lbmc_cntl_auth_generic_hdr_t, opid)
+#define L_LBMC_CNTL_AUTH_GENERIC_HDR_T_OPID SIZEOF(lbmc_cntl_auth_generic_hdr_t, opid)
+#define L_LBMC_CNTL_AUTH_GENERIC_HDR_T (gint) sizeof(lbmc_cntl_auth_generic_hdr_t)
+
+/* LBMC control authentication request header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t opid;
+ lbm_uint8_t user_len;
+} lbmc_cntl_auth_request_hdr_t;
+#define O_LBMC_CNTL_AUTH_REQUEST_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_auth_request_hdr_t, next_hdr)
+#define L_LBMC_CNTL_AUTH_REQUEST_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_auth_request_hdr_t, next_hdr)
+#define O_LBMC_CNTL_AUTH_REQUEST_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_auth_request_hdr_t, hdr_len)
+#define L_LBMC_CNTL_AUTH_REQUEST_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_auth_request_hdr_t, hdr_len)
+#define O_LBMC_CNTL_AUTH_REQUEST_HDR_T_FLAGS OFFSETOF(lbmc_cntl_auth_request_hdr_t, flags)
+#define L_LBMC_CNTL_AUTH_REQUEST_HDR_T_FLAGS SIZEOF(lbmc_cntl_auth_request_hdr_t, flags)
+#define O_LBMC_CNTL_AUTH_REQUEST_HDR_T_OPID OFFSETOF(lbmc_cntl_auth_request_hdr_t, opid)
+#define L_LBMC_CNTL_AUTH_REQUEST_HDR_T_OPID SIZEOF(lbmc_cntl_auth_request_hdr_t, opid)
+#define O_LBMC_CNTL_AUTH_REQUEST_HDR_T_USER_LEN OFFSETOF(lbmc_cntl_auth_request_hdr_t, user_len)
+#define L_LBMC_CNTL_AUTH_REQUEST_HDR_T_USER_LEN SIZEOF(lbmc_cntl_auth_request_hdr_t, user_len)
+#define L_LBMC_CNTL_AUTH_REQUEST_HDR_T (gint) sizeof(lbmc_cntl_auth_request_hdr_t)
+
+/* LBMC control authentication challenge header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t opid;
+ lbm_uint8_t mod_len;
+ lbm_uint8_t gen_len;
+ lbm_uint8_t salt_len;
+ lbm_uint8_t pubkey_len;
+} lbmc_cntl_auth_challenge_hdr_t;
+#define O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_auth_challenge_hdr_t, next_hdr)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_auth_challenge_hdr_t, next_hdr)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_auth_challenge_hdr_t, hdr_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_auth_challenge_hdr_t, hdr_len)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_FLAGS OFFSETOF(lbmc_cntl_auth_challenge_hdr_t, flags)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_FLAGS SIZEOF(lbmc_cntl_auth_challenge_hdr_t, flags)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_OPID OFFSETOF(lbmc_cntl_auth_challenge_hdr_t, opid)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_OPID SIZEOF(lbmc_cntl_auth_challenge_hdr_t, opid)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_MOD_LEN OFFSETOF(lbmc_cntl_auth_challenge_hdr_t, mod_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_MOD_LEN SIZEOF(lbmc_cntl_auth_challenge_hdr_t, mod_len)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_GEN_LEN OFFSETOF(lbmc_cntl_auth_challenge_hdr_t, gen_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_GEN_LEN SIZEOF(lbmc_cntl_auth_challenge_hdr_t, gen_len)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_SALT_LEN OFFSETOF(lbmc_cntl_auth_challenge_hdr_t, salt_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_SALT_LEN SIZEOF(lbmc_cntl_auth_challenge_hdr_t, salt_len)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_PUBKEY_LEN OFFSETOF(lbmc_cntl_auth_challenge_hdr_t, pubkey_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_PUBKEY_LEN SIZEOF(lbmc_cntl_auth_challenge_hdr_t, pubkey_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T (gint) sizeof(lbmc_cntl_auth_challenge_hdr_t)
+
+/* LBMC control authentication challenge response header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t opid;
+ lbm_uint8_t pubkey_len;
+ lbm_uint8_t evidence_len;
+} lbmc_cntl_auth_challenge_rsp_hdr_t;
+#define O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_auth_challenge_rsp_hdr_t, next_hdr)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_auth_challenge_rsp_hdr_t, next_hdr)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_auth_challenge_rsp_hdr_t, hdr_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_auth_challenge_rsp_hdr_t, hdr_len)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_FLAGS OFFSETOF(lbmc_cntl_auth_challenge_rsp_hdr_t, flags)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_FLAGS SIZEOF(lbmc_cntl_auth_challenge_rsp_hdr_t, flags)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_OPID OFFSETOF(lbmc_cntl_auth_challenge_rsp_hdr_t, opid)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_OPID SIZEOF(lbmc_cntl_auth_challenge_rsp_hdr_t, opid)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_PUBKEY_LEN OFFSETOF(lbmc_cntl_auth_challenge_rsp_hdr_t, pubkey_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_PUBKEY_LEN SIZEOF(lbmc_cntl_auth_challenge_rsp_hdr_t, pubkey_len)
+#define O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_EVIDENCE_LEN OFFSETOF(lbmc_cntl_auth_challenge_rsp_hdr_t, evidence_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_EVIDENCE_LEN SIZEOF(lbmc_cntl_auth_challenge_rsp_hdr_t, evidence_len)
+#define L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T (gint) sizeof(lbmc_cntl_auth_challenge_rsp_hdr_t)
+
+/* LBMC control authentication result header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t opid;
+ lbm_uint8_t result;
+} lbmc_cntl_auth_result_hdr_t;
+#define O_LBMC_CNTL_AUTH_RESULT_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_auth_result_hdr_t, next_hdr)
+#define L_LBMC_CNTL_AUTH_RESULT_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_auth_result_hdr_t, next_hdr)
+#define O_LBMC_CNTL_AUTH_RESULT_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_auth_result_hdr_t, hdr_len)
+#define L_LBMC_CNTL_AUTH_RESULT_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_auth_result_hdr_t, hdr_len)
+#define O_LBMC_CNTL_AUTH_RESULT_HDR_T_FLAGS OFFSETOF(lbmc_cntl_auth_result_hdr_t, flags)
+#define L_LBMC_CNTL_AUTH_RESULT_HDR_T_FLAGS SIZEOF(lbmc_cntl_auth_result_hdr_t, flags)
+#define O_LBMC_CNTL_AUTH_RESULT_HDR_T_OPID OFFSETOF(lbmc_cntl_auth_result_hdr_t, opid)
+#define L_LBMC_CNTL_AUTH_RESULT_HDR_T_OPID SIZEOF(lbmc_cntl_auth_result_hdr_t, opid)
+#define O_LBMC_CNTL_AUTH_RESULT_HDR_T_RESULT OFFSETOF(lbmc_cntl_auth_result_hdr_t, result)
+#define L_LBMC_CNTL_AUTH_RESULT_HDR_T_RESULT SIZEOF(lbmc_cntl_auth_result_hdr_t, result)
+#define L_LBMC_CNTL_AUTH_RESULT_HDR_T (gint) sizeof(lbmc_cntl_auth_result_hdr_t)
+
+/* LBMC control HMAC header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t padding;
+ lbm_uint8_t data[LBM_HMAC_BLOCK_SZ];
+} lbmc_cntl_hmac_hdr_t;
+#define O_LBMC_CNTL_HMAC_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_hmac_hdr_t, next_hdr)
+#define L_LBMC_CNTL_HMAC_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_hmac_hdr_t, next_hdr)
+#define O_LBMC_CNTL_HMAC_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_hmac_hdr_t, hdr_len)
+#define L_LBMC_CNTL_HMAC_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_hmac_hdr_t, hdr_len)
+#define O_LBMC_CNTL_HMAC_HDR_T_FLAGS OFFSETOF(lbmc_cntl_hmac_hdr_t, flags)
+#define L_LBMC_CNTL_HMAC_HDR_T_FLAGS SIZEOF(lbmc_cntl_hmac_hdr_t, flags)
+#define O_LBMC_CNTL_HMAC_HDR_T_PADDING OFFSETOF(lbmc_cntl_hmac_hdr_t, padding)
+#define L_LBMC_CNTL_HMAC_HDR_T_PADDING SIZEOF(lbmc_cntl_hmac_hdr_t, padding)
+#define O_LBMC_CNTL_HMAC_HDR_T_DATA OFFSETOF(lbmc_cntl_hmac_hdr_t, data)
+#define L_LBMC_CNTL_HMAC_HDR_T_DATA SIZEOF(lbmc_cntl_hmac_hdr_t, data)
+#define L_LBMC_CNTL_HMAC_HDR_T (gint) sizeof(lbmc_cntl_hmac_hdr_t)
+
+/* LBMC control UMQ session ID header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t key;
+ lbm_uint8_t sid[8];
+} lbmc_cntl_umq_sid_hdr_t;
+#define O_LBMC_CNTL_UMQ_SID_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_umq_sid_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UMQ_SID_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_umq_sid_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UMQ_SID_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_umq_sid_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UMQ_SID_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_umq_sid_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UMQ_SID_HDR_T_FLAGS OFFSETOF(lbmc_cntl_umq_sid_hdr_t, flags)
+#define L_LBMC_CNTL_UMQ_SID_HDR_T_FLAGS SIZEOF(lbmc_cntl_umq_sid_hdr_t, flags)
+#define O_LBMC_CNTL_UMQ_SID_HDR_T_KEY OFFSETOF(lbmc_cntl_umq_sid_hdr_t, key)
+#define L_LBMC_CNTL_UMQ_SID_HDR_T_KEY SIZEOF(lbmc_cntl_umq_sid_hdr_t, key)
+#define O_LBMC_CNTL_UMQ_SID_HDR_T_SID OFFSETOF(lbmc_cntl_umq_sid_hdr_t, sid)
+#define L_LBMC_CNTL_UMQ_SID_HDR_T_SID SIZEOF(lbmc_cntl_umq_sid_hdr_t, sid)
+#define L_LBMC_CNTL_UMQ_SID_HDR_T (gint) sizeof(lbmc_cntl_umq_sid_hdr_t)
+
+/* LBMC destination header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t domain_id;
+ lbm_uint32_t ipaddr;
+ lbm_uint16_t port;
+ lbm_uint16_t hops_taken;
+ lbm_uint32_t orig_domain_id;
+ lbm_uint32_t orig_ipaddr;
+ lbm_uint16_t orig_port;
+ lbm_uint16_t reserved;
+} lbmc_destination_hdr_t;
+#define O_LBMC_DESTINATION_HDR_T_NEXT_HDR OFFSETOF(lbmc_destination_hdr_t, next_hdr)
+#define L_LBMC_DESTINATION_HDR_T_NEXT_HDR SIZEOF(lbmc_destination_hdr_t, next_hdr)
+#define O_LBMC_DESTINATION_HDR_T_HDR_LEN OFFSETOF(lbmc_destination_hdr_t, hdr_len)
+#define L_LBMC_DESTINATION_HDR_T_HDR_LEN SIZEOF(lbmc_destination_hdr_t, hdr_len)
+#define O_LBMC_DESTINATION_HDR_T_FLAGS OFFSETOF(lbmc_destination_hdr_t, flags)
+#define L_LBMC_DESTINATION_HDR_T_FLAGS SIZEOF(lbmc_destination_hdr_t, flags)
+#define O_LBMC_DESTINATION_HDR_T_DOMAIN_ID OFFSETOF(lbmc_destination_hdr_t, domain_id)
+#define L_LBMC_DESTINATION_HDR_T_DOMAIN_ID SIZEOF(lbmc_destination_hdr_t, domain_id)
+#define O_LBMC_DESTINATION_HDR_T_IPADDR OFFSETOF(lbmc_destination_hdr_t, ipaddr)
+#define L_LBMC_DESTINATION_HDR_T_IPADDR SIZEOF(lbmc_destination_hdr_t, ipaddr)
+#define O_LBMC_DESTINATION_HDR_T_PORT OFFSETOF(lbmc_destination_hdr_t, port)
+#define L_LBMC_DESTINATION_HDR_T_PORT SIZEOF(lbmc_destination_hdr_t, port)
+#define O_LBMC_DESTINATION_HDR_T_HOPS_TAKEN OFFSETOF(lbmc_destination_hdr_t, hops_taken)
+#define L_LBMC_DESTINATION_HDR_T_HOPS_TAKEN SIZEOF(lbmc_destination_hdr_t, hops_taken)
+#define O_LBMC_DESTINATION_HDR_T_ORIG_DOMAIN_ID OFFSETOF(lbmc_destination_hdr_t, orig_domain_id)
+#define L_LBMC_DESTINATION_HDR_T_ORIG_DOMAIN_ID SIZEOF(lbmc_destination_hdr_t, orig_domain_id)
+#define O_LBMC_DESTINATION_HDR_T_ORIG_IPADDR OFFSETOF(lbmc_destination_hdr_t, orig_ipaddr)
+#define L_LBMC_DESTINATION_HDR_T_ORIG_IPADDR SIZEOF(lbmc_destination_hdr_t, orig_ipaddr)
+#define O_LBMC_DESTINATION_HDR_T_ORIG_PORT OFFSETOF(lbmc_destination_hdr_t, orig_port)
+#define L_LBMC_DESTINATION_HDR_T_ORIG_PORT SIZEOF(lbmc_destination_hdr_t, orig_port)
+#define O_LBMC_DESTINATION_HDR_T_RESERVED OFFSETOF(lbmc_destination_hdr_t, reserved)
+#define L_LBMC_DESTINATION_HDR_T_RESERVED SIZEOF(lbmc_destination_hdr_t, reserved)
+#define L_LBMC_DESTINATION_HDR_T (gint) sizeof(lbmc_destination_hdr_t)
+
+/* LBMC topic index header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t tidx;
+} lbmc_topic_idx_hdr_t;
+#define O_LBMC_TOPIC_IDX_HDR_T_NEXT_HDR OFFSETOF(lbmc_topic_idx_hdr_t, next_hdr)
+#define L_LBMC_TOPIC_IDX_HDR_T_NEXT_HDR SIZEOF(lbmc_topic_idx_hdr_t, next_hdr)
+#define O_LBMC_TOPIC_IDX_HDR_T_HDR_LEN OFFSETOF(lbmc_topic_idx_hdr_t, hdr_len)
+#define L_LBMC_TOPIC_IDX_HDR_T_HDR_LEN SIZEOF(lbmc_topic_idx_hdr_t, hdr_len)
+#define O_LBMC_TOPIC_IDX_HDR_T_FLAGS OFFSETOF(lbmc_topic_idx_hdr_t, flags)
+#define L_LBMC_TOPIC_IDX_HDR_T_FLAGS SIZEOF(lbmc_topic_idx_hdr_t, flags)
+#define O_LBMC_TOPIC_IDX_HDR_T_TIDX OFFSETOF(lbmc_topic_idx_hdr_t, tidx)
+#define L_LBMC_TOPIC_IDX_HDR_T_TIDX SIZEOF(lbmc_topic_idx_hdr_t, tidx)
+#define L_LBMC_TOPIC_IDX_HDR_T (gint) sizeof(lbmc_topic_idx_hdr_t)
+
+/* LBMC control topic source header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t domain_id;
+} lbmc_cntl_topic_source_hdr_t;
+#define O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_topic_source_hdr_t, next_hdr)
+#define L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_topic_source_hdr_t, next_hdr)
+#define O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_topic_source_hdr_t, hdr_len)
+#define L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_topic_source_hdr_t, hdr_len)
+#define O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS OFFSETOF(lbmc_cntl_topic_source_hdr_t, flags)
+#define L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS SIZEOF(lbmc_cntl_topic_source_hdr_t, flags)
+#define O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_DOMAIN_ID OFFSETOF(lbmc_cntl_topic_source_hdr_t, domain_id)
+#define L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_DOMAIN_ID SIZEOF(lbmc_cntl_topic_source_hdr_t, domain_id)
+#define L_LBMC_CNTL_TOPIC_SOURCE_HDR_T (gint) sizeof(lbmc_cntl_topic_source_hdr_t)
+
+/* LBMC control topic source extended functionality header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t src_ip;
+ lbm_uint16_t src_port;
+ lbm_uint16_t unused;
+ lbm_uint32_t functionality_flags;
+} lbmc_cntl_topic_source_exfunc_hdr_t;
+#define O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_topic_source_exfunc_hdr_t, next_hdr)
+#define L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_topic_source_exfunc_hdr_t, next_hdr)
+#define O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_topic_source_exfunc_hdr_t, hdr_len)
+#define L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_topic_source_exfunc_hdr_t, hdr_len)
+#define O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FLAGS OFFSETOF(lbmc_cntl_topic_source_exfunc_hdr_t, flags)
+#define L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FLAGS SIZEOF(lbmc_cntl_topic_source_exfunc_hdr_t, flags)
+#define O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_SRC_IP OFFSETOF(lbmc_cntl_topic_source_exfunc_hdr_t, src_ip)
+#define L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_SRC_IP SIZEOF(lbmc_cntl_topic_source_exfunc_hdr_t, src_ip)
+#define O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_SRC_PORT OFFSETOF(lbmc_cntl_topic_source_exfunc_hdr_t, src_port)
+#define L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_SRC_PORT SIZEOF(lbmc_cntl_topic_source_exfunc_hdr_t, src_port)
+#define O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_UNUSED OFFSETOF(lbmc_cntl_topic_source_exfunc_hdr_t, unused)
+#define L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_UNUSED SIZEOF(lbmc_cntl_topic_source_exfunc_hdr_t, unused)
+#define O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS OFFSETOF(lbmc_cntl_topic_source_exfunc_hdr_t, functionality_flags)
+#define L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS SIZEOF(lbmc_cntl_topic_source_exfunc_hdr_t, functionality_flags)
+#define L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T (gint) sizeof(lbmc_cntl_topic_source_exfunc_hdr_t)
+
+/* LBM control UME proxy source election token header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t store_index;
+ lbm_uint32_t token;
+} lbmc_cntl_ume_psrc_election_token_hdr_t;
+#define O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_ume_psrc_election_token_hdr_t, next_hdr)
+#define L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_ume_psrc_election_token_hdr_t, next_hdr)
+#define O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_ume_psrc_election_token_hdr_t, hdr_len)
+#define L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_ume_psrc_election_token_hdr_t, hdr_len)
+#define O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_FLAGS OFFSETOF(lbmc_cntl_ume_psrc_election_token_hdr_t, flags)
+#define L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_FLAGS SIZEOF(lbmc_cntl_ume_psrc_election_token_hdr_t, flags)
+#define O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_STORE_INDEX OFFSETOF(lbmc_cntl_ume_psrc_election_token_hdr_t, store_index)
+#define L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_STORE_INDEX SIZEOF(lbmc_cntl_ume_psrc_election_token_hdr_t, store_index)
+#define O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_TOKEN OFFSETOF(lbmc_cntl_ume_psrc_election_token_hdr_t, token)
+#define L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_TOKEN SIZEOF(lbmc_cntl_ume_psrc_election_token_hdr_t, token)
+#define L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T (gint) sizeof(lbmc_cntl_ume_psrc_election_token_hdr_t)
+
+/* LBM control TCP session ID header. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint16_t flags;
+ lbm_uint32_t sid;
+} lbmc_cntl_tcp_sid_hdr_t;
+#define O_LBMC_CNTL_TCP_SID_HDR_T_NEXT_HDR OFFSETOF(lbmc_cntl_tcp_sid_hdr_t, next_hdr)
+#define L_LBMC_CNTL_TCP_SID_HDR_T_NEXT_HDR SIZEOF(lbmc_cntl_tcp_sid_hdr_t, next_hdr)
+#define O_LBMC_CNTL_TCP_SID_HDR_T_HDR_LEN OFFSETOF(lbmc_cntl_tcp_sid_hdr_t, hdr_len)
+#define L_LBMC_CNTL_TCP_SID_HDR_T_HDR_LEN SIZEOF(lbmc_cntl_tcp_sid_hdr_t, hdr_len)
+#define O_LBMC_CNTL_TCP_SID_HDR_T_FLAGS OFFSETOF(lbmc_cntl_tcp_sid_hdr_t, flags)
+#define L_LBMC_CNTL_TCP_SID_HDR_T_FLAGS SIZEOF(lbmc_cntl_tcp_sid_hdr_t, flags)
+#define O_LBMC_CNTL_TCP_SID_HDR_T_SID OFFSETOF(lbmc_cntl_tcp_sid_hdr_t, sid)
+#define L_LBMC_CNTL_TCP_SID_HDR_T_SID SIZEOF(lbmc_cntl_tcp_sid_hdr_t, sid)
+#define L_LBMC_CNTL_TCP_SID_HDR_T (gint) sizeof(lbmc_cntl_tcp_sid_hdr_t)
+
+/* LBMC extended configuration option. */
+typedef struct
+{
+ lbm_uint8_t scope;
+ lbm_uint8_t parent;
+} lbmc_extopt_cfgopt_hdr_t;
+#define O_LBMC_EXTOPT_CFGOPT_HDR_T_SCOPE OFFSETOF(lbmc_extopt_cfgopt_hdr_t, scope)
+#define L_LBMC_EXTOPT_CFGOPT_HDR_T_SCOPE SIZEOF(lbmc_extopt_cfgopt_hdr_t, scope)
+#define O_LBMC_EXTOPT_CFGOPT_HDR_T_PARENT OFFSETOF(lbmc_extopt_cfgopt_hdr_t, scope)
+#define L_LBMC_EXTOPT_CFGOPT_HDR_T_PARENT SIZEOF(lbmc_extopt_cfgopt_hdr_t, scope)
+#define L_LBMC_EXTOPT_CFGOPT_HDR_T (gint) sizeof(lbmc_extopt_cfgopt_hdr_t)
+
+/* LBMC extended option. */
+typedef struct
+{
+ lbm_uint8_t next_hdr;
+ lbm_uint8_t hdr_len;
+ lbm_uint8_t flags;
+ lbm_uint8_t id;
+ lbm_uint16_t subtype;
+ lbm_uint16_t fragment_offset;
+} lbmc_extopt_hdr_t;
+#define O_LBMC_EXTOPT_HDR_T_NEXT_HDR OFFSETOF(lbmc_extopt_hdr_t, next_hdr)
+#define L_LBMC_EXTOPT_HDR_T_NEXT_HDR SIZEOF(lbmc_extopt_hdr_t, next_hdr)
+#define O_LBMC_EXTOPT_HDR_T_HDR_LEN OFFSETOF(lbmc_extopt_hdr_t, hdr_len)
+#define L_LBMC_EXTOPT_HDR_T_HDR_LEN SIZEOF(lbmc_extopt_hdr_t, hdr_len)
+#define O_LBMC_EXTOPT_HDR_T_FLAGS OFFSETOF(lbmc_extopt_hdr_t, flags)
+#define L_LBMC_EXTOPT_HDR_T_FLAGS SIZEOF(lbmc_extopt_hdr_t, flags)
+#define O_LBMC_EXTOPT_HDR_T_ID OFFSETOF(lbmc_extopt_hdr_t, id)
+#define L_LBMC_EXTOPT_HDR_T_ID SIZEOF(lbmc_extopt_hdr_t, id)
+#define O_LBMC_EXTOPT_HDR_T_SUBTYPE OFFSETOF(lbmc_extopt_hdr_t, subtype)
+#define L_LBMC_EXTOPT_HDR_T_SUBTYPE SIZEOF(lbmc_extopt_hdr_t, subtype)
+#define O_LBMC_EXTOPT_HDR_T_FRAGMENT_OFFSET OFFSETOF(lbmc_extopt_hdr_t, fragment_offset)
+#define L_LBMC_EXTOPT_HDR_T_FRAGMENT_OFFSET SIZEOF(lbmc_extopt_hdr_t, fragment_offset)
+#define L_LBMC_EXTOPT_HDR_T (gint) sizeof(lbmc_extopt_hdr_t)
+
+/* LBMC message properties. */
+typedef struct
+{
+ lbm_uint32_t key_offset;
+ lbm_uint32_t value_offset;
+ lbm_uint32_t hash;
+ lbm_uint32_t type;
+} lbm_msg_properties_hdr_t;
+#define O_LBM_MSG_PROPERTIES_HDR_T_KEY_OFFSET OFFSETOF(lbm_msg_properties_hdr_t, key_offset)
+#define L_LBM_MSG_PROPERTIES_HDR_T_KEY_OFFSET SIZEOF(lbm_msg_properties_hdr_t, key_offset)
+#define O_LBM_MSG_PROPERTIES_HDR_T_VALUE_OFFSET OFFSETOF(lbm_msg_properties_hdr_t, value_offset)
+#define L_LBM_MSG_PROPERTIES_HDR_T_VALUE_OFFSET SIZEOF(lbm_msg_properties_hdr_t, value_offset)
+#define O_LBM_MSG_PROPERTIES_HDR_T_HASH OFFSETOF(lbm_msg_properties_hdr_t, hash)
+#define L_LBM_MSG_PROPERTIES_HDR_T_HASH SIZEOF(lbm_msg_properties_hdr_t, hash)
+#define O_LBM_MSG_PROPERTIES_HDR_T_TYPE OFFSETOF(lbm_msg_properties_hdr_t, type)
+#define L_LBM_MSG_PROPERTIES_HDR_T_TYPE SIZEOF(lbm_msg_properties_hdr_t, type)
+#define L_LBM_MSG_PROPERTIES_HDR_T (gint) sizeof(lbm_msg_properties_hdr_t)
+
+typedef struct
+{
+ lbm_uint32_t magic;
+ lbm_uint16_t num_fields;
+ lbm_uint8_t vertype;
+ lbm_uint8_t res;
+} lbm_msg_properties_data_t;
+#define O_LBM_MSG_PROPERTIES_DATA_T_MAGIC OFFSETOF(lbm_msg_properties_data_t, magic)
+#define L_LBM_MSG_PROPERTIES_DATA_T_MAGIC SIZEOF(lbm_msg_properties_data_t, magic)
+#define O_LBM_MSG_PROPERTIES_DATA_T_NUM_FIELDS OFFSETOF(lbm_msg_properties_data_t, num_fields)
+#define L_LBM_MSG_PROPERTIES_DATA_T_NUM_FIELDS SIZEOF(lbm_msg_properties_data_t, num_fields)
+#define O_LBM_MSG_PROPERTIES_DATA_T_VERTYPE OFFSETOF(lbm_msg_properties_data_t, vertype)
+#define L_LBM_MSG_PROPERTIES_DATA_T_VERTYPE SIZEOF(lbm_msg_properties_data_t, vertype)
+#define O_LBM_MSG_PROPERTIES_DATA_T_RES OFFSETOF(lbm_msg_properties_data_t, res)
+#define L_LBM_MSG_PROPERTIES_DATA_T_RES SIZEOF(lbm_msg_properties_data_t, res)
+#define L_LBM_MSG_PROPERTIES_DATA_T (gint) sizeof(lbm_msg_properties_data_t)
+
+/* Unhandled header. */
+#define O_LBMC_UNHANDLED_HDR_T_NEXT_HDR OFFSETOF(lbmc_basic_hdr_t, next_hdr)
+#define L_LBMC_UNHANDLED_HDR_T_NEXT_HDR SIZEOF(lbmc_basic_hdr_t, next_hdr)
+#define O_LBMC_UNHANDLED_HDR_T_HDR_LEN OFFSETOF(lbmc_basic_hdr_t, hdr_len)
+#define L_LBMC_UNHANDLED_HDR_T_HDR_LEN SIZEOF(lbmc_basic_hdr_t, hdr_len)
+
+/* End of LBMC header definitions. */
+
+#define LBMC_VERSION 0x0
+
+#define LBMC_TYPE_MESSAGE 0x00
+#define LBMC_TYPE_EOT 0x01
+#define LBMC_TYPE_PRORX 0x02
+#define LBMC_TYPE_CONTROL 0x08
+#define LBMC_TYPE_RETRANS 0x0A
+
+#define LBMC_NHDR_DATA 0x00
+#define LBMC_NHDR_FRAG 0x01
+#define LBMC_NHDR_BATCH 0x02
+#define LBMC_NHDR_TGIDX 0x03
+#define LBMC_NHDR_REQUEST 0x04
+#define LBMC_NHDR_TOPICNAME 0x05
+#define LBMC_NHDR_APPHDR 0x06
+#define LBMC_NHDR_APPHDR_CHAIN 0x07
+#define LBMC_NHDR_UMQ_MSGID 0x08
+#define LBMC_NHDR_UMQ_SQD_RCV 0x09
+#define LBMC_NHDR_UMQ_RESUB 0x0A
+#define LBMC_NHDR_OTID 0x0B
+#define LBMC_NHDR_CTXINSTD 0x0C
+#define LBMC_NHDR_CTXINSTR 0x0D
+#define LBMC_NHDR_SRCIDX 0x0E
+#define LBMC_NHDR_UMQ_ULB_MSG 0x0F
+#define LBMC_NHDR_SSF_INIT 0x10
+#define LBMC_NHDR_SSF_CREQ 0x11
+#define LBMC_NHDR_UME_PREG 0x12
+#define LBMC_NHDR_UME_PREG_RESP 0x13
+#define LBMC_NHDR_UME_ACK 0x14
+#define LBMC_NHDR_UME_RXREQ 0x15
+#define LBMC_NHDR_UME_KEEPALIVE 0x16
+#define LBMC_NHDR_UME_STOREID 0x17
+#define LBMC_NHDR_UME_RANGED_ACK 0x18
+#define LBMC_NHDR_UME_ACK_ID 0x19
+#define LBMC_NHDR_UME_CAPABILITY 0x1A
+#define LBMC_NHDR_UME_PROXY_SRC 0x1B
+#define LBMC_NHDR_UME_STORE_GROUP 0x1C
+#define LBMC_NHDR_UME_STORE_INFO 0x1D
+#define LBMC_NHDR_UME_LJ_INFO 0x1E
+#define LBMC_NHDR_TSNI 0x20
+#define LBMC_NHDR_UMQ_REG 0x30
+#define LBMC_NHDR_UMQ_REG_RESP 0x31
+#define LBMC_NHDR_UMQ_ACK 0x32
+#define LBMC_NHDR_UMQ_RCR 0x33
+#define LBMC_NHDR_UMQ_KA 0x34
+#define LBMC_NHDR_UMQ_RXREQ 0x35
+#define LBMC_NHDR_UMQ_QMGMT 0x36
+#define LBMC_NHDR_UMQ_RESUB_REQ 0x37
+#define LBMC_NHDR_UMQ_RESUB_RESP 0x38
+#define LBMC_NHDR_TOPIC_INTEREST 0x39
+#define LBMC_NHDR_PATTERN_INTEREST 0x3A
+#define LBMC_NHDR_ADVERTISEMENT 0x3B
+#define LBMC_NHDR_UME_CTXINSTS 0x3C
+#define LBMC_NHDR_UME_STORENAME 0x3D
+#define LBMC_NHDR_UMQ_ULB_RCR 0x3E
+#define LBMC_NHDR_UMQ_LF 0x3F
+#define LBMC_NHDR_CTXINFO 0x40
+#define LBMC_NHDR_UME_PSER 0x41
+#define LBMC_NHDR_CTXINST 0x42
+#define LBMC_NHDR_DOMAIN 0x43
+#define LBMC_NHDR_TNWG_CAPABILITIES 0x44
+#define LBMC_NHDR_PATIDX 0x45
+#define LBMC_NHDR_UME_CLIENT_LIFETIME 0x46
+#define LBMC_NHDR_UME_SID 0x47
+#define LBMC_NHDR_UMQ_IDX_CMD 0x48
+#define LBMC_NHDR_UMQ_IDX_CMD_RESP 0x49
+#define LBMC_NHDR_ODOMAIN 0x4a
+#define LBMC_NHDR_STREAM 0x4b
+#define LBMC_NHDR_TOPIC_MD_INTEREST 0x4c
+#define LBMC_NHDR_PATTERN_MD_INTEREST 0x4d
+#define LBMC_NHDR_LJI_REQ 0x4e
+#define LBMC_NHDR_TNWG_KA 0x4f
+#define LBMC_NHDR_UME_RCV_KEEPALIVE 0x50
+#define LBMC_NHDR_UMQ_CMD 0x51
+#define LBMC_NHDR_UMQ_CMD_RESP 0x52
+#define LBMC_NHDR_SRI_REQ 0x53
+#define LBMC_NHDR_UME_STORE_DOMAIN 0x54
+#define LBMC_NHDR_SRI 0x55
+#define LBMC_NHDR_ROUTE_INFO 0x56
+#define LBMC_NHDR_ROUTE_INFO_NEIGHBOR 0x57
+#define LBMC_NHDR_GATEWAY_NAME 0x58
+#define LBMC_NHDR_AUTHENTICATION 0x60
+#define LBMC_NHDR_HMAC 0x62
+#define LBMC_NHDR_UMQ_SID 0x63
+#define LBMC_NHDR_DESTINATION 0x64
+#define LBMC_NHDR_TOPIC_IDX 0x65
+#define LBMC_NHDR_TOPIC_SOURCE 0x67
+#define LBMC_NHDR_TOPIC_SOURCE_EXFUNC 0x68
+#define LBMC_NHDR_UME_STORE_INFO_EXT 0x69
+#define LBMC_NHDR_UME_PSRC_ELECTION_TOKEN 0x6A
+#define LBMC_NHDR_TCP_SID 0x6B
+
+#define LBMC_NHDR_EXTOPT 0xFE
+
+#define LBMC_NHDR_NONE 0xFF
+
+#define LBMC_OPT_IGNORE 0x8000
+#define LBMC_OPT_IGNORE_CHAR 0x80
+#define LBMC_BATCH_START 0x0002
+#define LBMC_BATCH_END 0x0001
+
+#define LBMC_CNTL_SSF_INIT_DEFAULT_INC 0x40
+#define LBMC_CNTL_SSF_INIT_DEFAULT_EXC 0x20
+
+#define LBMC_CNTL_SSF_CREQ_MODE_INCLUDE 0x00
+#define LBMC_CNTL_SSF_CREQ_MODE_EXCLUDE 0x01
+
+#define LBMC_REQUEST_TRANSPORT_TCP 0x00
+#define LBMC_CNTL_SSF_INIT_TRANSPORT_TCP 0x00
+
+#define LBMC_UME_PREG_S_FLAG 0x80
+#define LBMC_UME_PREG_F_FLAG 0x40
+#define LBMC_UME_PREG_P_FLAG 0x20
+#define LBMC_UME_PREG_W_FLAG 0x10
+#define LBMC_UME_PREG_D_FLAG 0x08
+#define LBMC_UME_PREG_MARKER_PRI 0x01
+#define LBMC_UME_PREG_MARKER_SEC 0x02
+#define LBMC_UME_PREG_MARKER_TER 0x03
+#define LBMC_UME_PREG_RESP_O_FLAG 0x40
+#define LBMC_UME_PREG_RESP_E_FLAG 0x20
+#define LBMC_UME_PREG_RESP_S_FLAG 0x80
+#define LBMC_UME_PREG_RESP_W_FLAG 0x02
+#define LBMC_UME_PREG_RESP_D_FLAG 0x01
+#define LBMC_UME_PREG_RESP_ERRCODE_ENOERROR 0x00
+#define LBMC_UME_PREG_RESP_ERRCODE_ENOPATTERN 0x01
+#define LBMC_UME_PREG_RESP_ERRCODE_ESRCREGID 0x02
+#define LBMC_UME_PREG_RESP_ERRCODE_EREGID 0x03
+#define LBMC_UME_PREG_RESP_ERRCODE_ETOPICNAME 0x04
+#define LBMC_UME_PREG_RESP_ERRCODE_EACTIVE 0x05
+#define LBMC_UME_PREG_RESP_ERRCODE_ECONFIG 0x06
+#define LBMC_UME_PREG_RESP_CODE_NOACKS_FLAG 0x10
+#define LBMC_UME_PREG_RESP_CODE_NOCACHE_FLAG 0x10
+#define LBMC_UME_ACK_O_FLAG 0x40
+#define LBMC_UME_ACK_F_FLAG 0x20
+#define LBMC_UME_ACK_U_FLAG 0x10
+#define LBMC_UME_ACK_E_FLAG 0x08
+#define LBMC_UME_ACK_TYPE_CDELV 0x00
+#define LBMC_UME_ACK_TYPE_STABLE 0x01
+#define LBMC_UME_KEEPALIVE_R_FLAG 0x40
+#define LBMC_UME_KEEPALIVE_T_FLAG 0x20
+#define LBMC_UME_KEEPALIVE_TYPE_SRC 0x2
+#define LBMC_UME_KEEPALIVE_TYPE_RCV 0x1
+#define LBMC_UME_KEEPALIVE_TYPE_STORE 0x0
+#define LBMC_UME_STOREID_MAX_STOREID 0x7FFF
+#define LBMC_UME_CAPABILITY_QC_FLAG 0x4000
+#define LBMC_UME_CAPABILITY_CLIENT_LIFETIME_FLAG 0x2000
+#define LBMC_UME_PROXY_SRC_E_FLAG 0x4000
+#define LBMC_UME_PROXY_SRC_C_FLAG 0x2000
+#define LBMC_UME_RXREQ_T_FLAG 0x4000
+#define LBMC_LJI_REQ_L_FLAG 0x0001
+#define LBMC_LJI_REQ_M_FLAG 0x0002
+#define LBMC_LJI_REQ_O_FLAG 0x0004
+#define LBMC_SRI_A_FLAG 0x0001
+#define LBMC_SRI_INITIAL_SQN_KNOWN_FLAG 0x0002
+#define LBMC_UMQ_REG_CTX_TYPE 0x1
+#define LBMC_UMQ_REG_SRC_TYPE 0x2
+#define LBMC_UMQ_REG_RCV_TYPE 0x3
+#define LBMC_UMQ_REG_RCV_DEREG_TYPE 0x4
+#define LBMC_UMQ_REG_ULB_RCV_TYPE 0x5
+#define LBMC_UMQ_REG_ULB_RCV_DEREG_TYPE 0x6
+#define LBMC_UMQ_REG_OBSERVER_RCV_TYPE 0x7
+#define LBMC_UMQ_REG_OBSERVER_RCV_DEREG_TYPE 0x8
+#define LBMC_UMQ_REG_R_FLAG 0x40
+#define LBMC_UMQ_REG_T_FLAG 0x20
+#define LBMC_UMQ_REG_I_FLAG 0x10
+#define LBMC_UMQ_REG_MSG_SEL_FLAG 0x08
+#define LBMC_UMQ_REG_RESP_CTX_TYPE 0x1
+#define LBMC_UMQ_REG_RESP_SRC_TYPE 0x2
+#define LBMC_UMQ_REG_RESP_RCV_TYPE 0x3
+#define LBMC_UMQ_REG_RESP_RCV_DEREG_TYPE 0x4
+#define LBMC_UMQ_REG_RESP_ULB_RCV_TYPE 0x5
+#define LBMC_UMQ_REG_RESP_ULB_RCV_DEREG_TYPE 0x6
+#define LBMC_UMQ_REG_RESP_OBSERVER_RCV_TYPE 0x7
+#define LBMC_UMQ_REG_RESP_OBSERVER_RCV_DEREG_TYPE 0x8
+#define LBMC_UMQ_REG_RESP_CTX_EX_TYPE 0x9
+#define LBMC_UMQ_REG_RESP_ERR_TYPE 0xFF
+#define LBMC_UMQ_REG_RESP_R_FLAG 0x40
+#define LBMC_UMQ_REG_RESP_ERR_L_FLAG 0x20
+#define LBMC_UMQ_REG_RESP_SRC_S_FLAG 0x20
+#define LBMC_UMQ_REG_RESP_SRC_D_FLAG 0x10
+#define LBMC_UMQ_REG_RESP_CTX_EX_FLAG_FIRSTMSG 0x1
+
+#define LBMC_UMQ_ACK_STABLE_TYPE 0x1
+#define LBMC_UMQ_ACK_CR_TYPE 0x2
+#define LBMC_UMQ_ACK_ULB_CR_TYPE 0x3
+#define LBMC_UMQ_ACK_T_FLAG 0x40
+#define LBMC_UMQ_ACK_D_FLAG 0x20
+#define LBMC_UMQ_ACK_NUMIDS_MASK 0x0F
+#define LBMC_UMQ_RCR_BOI_FLAG 0x100
+#define LBMC_UMQ_RCR_R_FLAG 0x4000
+#define LBMC_UMQ_RCR_D_FLAG 0x2000
+#define LBMC_UMQ_RCR_S_FLAG 0x1000
+#define LBMC_UMQ_RCR_EOI_FLAG 0x200
+#define LBMC_UMQ_RCR_BOI_FLAG 0x100
+#define LBMC_UMQ_ULB_RCR_R_FLAG 0x4000
+#define LBMC_UMQ_ULB_RCR_D_FLAG 0x2000
+#define LBMC_UMQ_ULB_RCR_EOI_FLAG 0x200
+#define LBMC_UMQ_ULB_RCR_BOI_FLAG 0x100
+#define LBMC_UMQ_SQD_RCV_R_FLAG 0x4000
+#define LBMC_UMQ_SQD_RCV_S_FLAG 0x2000
+#define LBMC_UMQ_SQD_RCV_RE_FLAG 0x800
+#define LBMC_UMQ_SQD_RCV_EOI_FLAG 0x200
+#define LBMC_UMQ_SQD_RCV_BOI_FLAG 0x100
+#define LBMC_UMQ_RESUB_Q_FLAG 0x4000
+#define LBMC_UMQ_ULB_MSG_A_FLAG 0x4000
+#define LBMC_UMQ_ULB_MSG_R_FLAG 0x2000
+#define LBMC_UMQ_KA_CTX_TYPE 0x00
+#define LBMC_UMQ_KA_SRC_TYPE 0x01
+#define LBMC_UMQ_KA_RCV_TYPE 0x02
+#define LBMC_UMQ_KA_ULB_RCV_TYPE 0x03
+#define LBMC_UMQ_KA_CTX_RESP_TYPE 0x10
+#define LBMC_UMQ_KA_SRC_RESP_TYPE 0x11
+#define LBMC_UMQ_KA_RCV_RESP_TYPE 0x12
+#define LBMC_UMQ_KA_ULB_RCV_RESP_TYPE 0x13
+#define LBMC_UMQ_KA_R_FLAG 0x40
+#define LBMC_UMQ_RXREQ_MR_TYPE 0x1
+#define LBMC_UMQ_RXREQ_QRCRR_TYPE 0x2
+#define LBMC_UMQ_RXREQ_TRCRR_TYPE 0x3
+#define LBMC_UMQ_RXREQ_ULB_MR_TYPE 0x4
+#define LBMC_UMQ_RXREQ_ULB_TRCRR_TYPE 0x5
+#define LBMC_UMQ_RXREQ_ULB_MR_ABORT_TYPE 0x6
+#define LBMC_UMQ_RXREQ_ULB_TRCRR_ABORT_TYPE 0x7
+#define LBMC_UMQ_RXREQ_R_FLAG 0x40
+#define LBMC_UMQ_RESUB_RESP_ENQUEUED_CODE 0x1
+#define LBMC_UMQ_RESUB_RESP_CONSUMED_CODE 0x2
+#define LBMC_UMQ_RESUB_RESP_OUTSTANDING_CODE 0x3
+#define LBMC_UMQ_RESUB_RESP_RESUBALLOWED_CODE 0x4
+#define LBMC_UMQ_RESUB_RESP_RESUBDONE_CODE 0x5
+#define LBMC_UMQ_LF_SRC_TYPE 0x01
+#define LBMC_UMQ_LF_RCV_TYPE 0x02
+#define LBMC_UMQ_LF_U_FLAG 0x40
+#define LBMC_UMQ_IDX_CMD_RCV_STOP_IDX_ASSIGN_TYPE 0x1
+#define LBMC_UMQ_IDX_CMD_RCV_START_IDX_ASSIGN_TYPE 0x2
+#define LBMC_UMQ_IDX_CMD_ULB_RCV_STOP_IDX_ASSIGN_TYPE 0x3
+#define LBMC_UMQ_IDX_CMD_ULB_RCV_START_IDX_ASSIGN_TYPE 0x4
+#define LBMC_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_TYPE 0x5
+#define LBMC_UMQ_IDX_CMD_ULB_RCV_RELEASE_IDX_ASSIGN_TYPE 0x6
+#define LBMC_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_TYPE 0x7
+#define LBMC_UMQ_IDX_CMD_ULB_RCV_RESERVE_IDX_ASSIGN_TYPE 0x8
+#define LBMC_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_TYPE 0x1
+#define LBMC_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_TYPE 0x2
+#define LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_TYPE 0x3
+#define LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_TYPE 0x4
+#define LBMC_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_TYPE 0x5
+#define LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_TYPE 0x6
+#define LBMC_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_TYPE 0x7
+#define LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_TYPE 0x8
+
+#define LBMC_UMQ_IDX_CMD_RESP_ERR_TYPE 0xFF
+#define LBMC_UMQ_IDX_CMD_RESP_ERR_L_FLAG 0x20
+#define LBM_UMQ_INDEX_FLAG_NUMERIC 0x1
+
+#define LBMC_TOPIC_INTEREST_CANCEL_FLAG 0x4000
+#define LBMC_TOPIC_INTEREST_REFRESH_FLAG 0x2000
+#define LBMC_PATTERN_INTEREST_CANCEL_FLAG 0x40
+#define LBMC_PATTERN_INTEREST_REFRESH_FLAG 0x20
+#define LBMC_ADVERTISEMENT_EOS_FLAG 0x40
+#define LBMC_ADVERTISEMENT_PATTERN_FLAG 0x20
+#define LBMC_ADVERTISEMENT_CHANGE_FLAG 0x10
+#define LBMC_ADVERTISEMENT_CTXINST_FLAG 0x08
+#define LBMC_TOPIC_SOURCE_EOS_FLAG 0x4000
+#define LBMC_ADVERTISEMENT_AD_LJ_FLAG 0x80000000
+#define LBMC_ADVERTISEMENT_AD_UME_FLAG 0x40000000
+#define LBMC_ADVERTISEMENT_AD_ACKTOSRC_FLAG 0x20000000
+#define LBMC_ADVERTISEMENT_AD_QUEUE_FLAG 0x10000000
+#define LBMC_ADVERTISEMENT_AD_ULB_FLAG 0x08000000
+#define LBMC_CTXINFO_QUERY_FLAG 0x4000
+#define LBMC_CTXINFO_ADDR_FLAG 0x2000
+#define LBMC_CTXINFO_CTXINST_FLAG 0x1000
+#define LBMC_CTXINFO_NAME_FLAG 0x0800
+#define LBMC_CTXINFO_TNWGSRC_FLAG 0x0400
+#define LBMC_CTXINFO_TNWGRCV_FLAG 0x0200
+#define LBMC_CTXINFO_PROXY_FLAG 0x0100
+#define LBMC_UME_PSER_SOURCE_CTXINST_FLAG 0x4000
+#define LBMC_UME_PSER_STORE_CTXINST_FLAG 0x2000
+#define LBMC_UME_PSER_REELECT_FLAG 0x1000
+#define LBMC_DOMAIN_ACTIVE_FLAG 0x4000
+#define LBMC_CNTL_TNWG_CAPABILITIES_VERSION_MASK 0x7fff
+#define LBMC_CNTL_TNWG_CAPABILITIES1_UME_FLAG 0x80000000
+#define LBMC_CNTL_TNWG_CAPABILITIES1_UMQ_FLAG 0x40000000
+#define LBMC_CNTL_TNWG_CAPABILITIES3_PCRE_FLAG 0x80000000
+#define LBMC_CNTL_TNWG_CAPABILITIES3_REGEX_FLAG 0x40000000
+
+#define LBM_CHAIN_ELEM_CHANNEL_NUMBER 0x1
+#define LBM_CHAIN_ELEM_HF_SQN 0x2
+#define LBM_CHAIN_ELEM_GW_INFO 0x3
+#define LBM_CHAIN_ELEM_APPHDR 0x4
+#define LBM_CHAIN_ELEM_USER_DATA 0x5
+#define LBM_CHAIN_ELEM_PROPERTIES_LENGTH 0x6
+#define LBM_CHAIN_ELEM_NONE 0xff
+
+#define LBMC_CNTL_TNWG_KA_Q_FLAG 0x4000
+#define LBMC_CNTL_TNWG_KA_R_FLAG 0x2000
+
+#define LBMC_UMQ_CMD_TYPE_TOPIC_LIST 1
+#define LBMC_UMQ_CMD_TYPE_RCV_MSG_RETRIEVE 2
+#define LBMC_UMQ_CMD_TYPE_RCV_MSG_LIST 3
+
+#define LBMC_UMQ_CMD_RESP_TYPE_CTX_TOPIC_LIST 1
+#define LBMC_UMQ_CMD_RESP_TYPE_RCV_MSG_RETRIEVE 2
+#define LBMC_UMQ_CMD_RESP_TYPE_RCV_MSG_LIST 3
+#define LBMC_UMQ_CMD_RESP_TYPE_ERROR 4
+
+#define AUTH_OP_REQ 0x01
+#define AUTH_OP_CHALLENGE 0x02
+#define AUTH_OP_CHALLENGE_RSP 0x03
+#define AUTH_OP_RESULT 0x04
+
+#define LBMC_UMQ_CMD_RESP_ERROR_AUTHFAIL 0x11
+#define LBMC_UMQ_CMD_RESP_ERROR_NOHMAC 0x12
+#define LBMC_UMQ_CMD_RESP_ERROR_NOAUTHOR 0x13
+
+#define LBMC_EXTOPT_FLAG_IGNORE 0x80
+#define LBMC_EXTOPT_FLAG_IGNORE_SUBTYPE 0x40
+#define LBMC_EXTOPT_FLAG_MORE_FRAGMENT 0x20
+
+#define LBMC_EXT_NHDR_CFGOPT 0x0100
+#define LBMC_EXT_NHDR_MSGSEL 0x0101
+
+#define LBM_MSG_PROPERTIES_HDR_VER(vt) ((vt & 0xF0) >> 4)
+#define LBM_MSG_PROPERTIES_HDR_TYPE(vt) (vt & 0xF)
+#define LBM_MSG_PROPERTIES_HDR_VER_MASK 0xF0
+#define LBM_MSG_PROPERTIES_HDR_TYPE_MASK 0x0F
+
+#define LBM_MSG_PROPERTIES_VER 0x0
+
+#define LBM_MSG_PROPERTIES_TYPE_NORMAL 0x0
+
+#define LBM_MSG_PROPERTIES_MAGIC 0xABACDABA
+#define LBM_MSG_PROPERTIES_ANTIMAGIC 0xBADAACAB
+
+#define LBM_MSG_PROPERTY_NONE 0x0
+#define LBM_MSG_PROPERTY_BOOLEAN 0x1
+#define LBM_MSG_PROPERTY_BYTE 0x2
+#define LBM_MSG_PROPERTY_SHORT 0x3
+#define LBM_MSG_PROPERTY_INT 0x4
+#define LBM_MSG_PROPERTY_LONG 0x5
+#define LBM_MSG_PROPERTY_FLOAT 0x6
+#define LBM_MSG_PROPERTY_DOUBLE 0x7
+#define LBM_MSG_PROPERTY_STRING 0x8
+
+#define LBM_UMQ_QUEUE_MSG_STATUS_UNKNOWN 0
+#define LBM_UMQ_QUEUE_MSG_STATUS_UNASSIGNED 1
+#define LBM_UMQ_QUEUE_MSG_STATUS_ASSIGNED 2
+#define LBM_UMQ_QUEUE_MSG_STATUS_REASSIGNING 3
+#define LBM_UMQ_QUEUE_MSG_STATUS_CONSUMED 4
+#define LBM_UMQ_QUEUE_MSG_STATUS_COMPLETE 5
+
+#define LBMC_CNTL_CONFIG_OPT_SCOPE_SOURCE 0x1
+#define LBMC_CNTL_CONFIG_OPT_SCOPE_RECEIVER 0x2
+#define LBMC_CNTL_CONFIG_OPT_SCOPE_CONTEXT 0x3
+#define LBMC_CNTL_CONFIG_OPT_SCOPE_WILDCARD_RECEIVER 0x4
+#define LBMC_CNTL_CONFIG_OPT_SCOPE_EVENT_QUEUE 0x5
+#define LBMC_CNTL_CONFIG_OPT_SCOPE_CONNECTION_FACTORY 0x6
+#define LBMC_CNTL_CONFIG_OPT_SCOPE_DESTINATION 0x7
+#define LBMC_CNTL_CONFIG_OPT_SCOPE_HFX 0x8
+
+/*----------------------------------------------------------------------------*/
+/* Value translation tables. */
+/*----------------------------------------------------------------------------*/
+
+static const value_string lbmc_message_type[] =
+{
+ { LBMC_TYPE_MESSAGE, "Message" },
+ { LBMC_TYPE_PRORX, "Proactive Retransmission" },
+ { LBMC_TYPE_RETRANS, "Retransmission" },
+ { LBMC_TYPE_CONTROL, "Control" },
+ { LBMC_TYPE_EOT, "EOT" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_next_header[] =
+{
+ { LBMC_NHDR_DATA, "Data" },
+ { LBMC_NHDR_FRAG, "Fragment" },
+ { LBMC_NHDR_BATCH, "Batch" },
+ { LBMC_NHDR_TGIDX, "Unknown" },
+ { LBMC_NHDR_REQUEST, "Request" },
+ { LBMC_NHDR_TOPICNAME, "Topic name" },
+ { LBMC_NHDR_APPHDR, "Application header" },
+ { LBMC_NHDR_APPHDR_CHAIN, "Application header chain" },
+ { LBMC_NHDR_UMQ_MSGID, "UMQ message ID" },
+ { LBMC_NHDR_UMQ_SQD_RCV, "UMQ SQD rcv" },
+ { LBMC_NHDR_UMQ_RESUB, "UMQ resub" },
+ { LBMC_NHDR_OTID, "OTID" },
+ { LBMC_NHDR_CTXINSTD, "Context instance destination" },
+ { LBMC_NHDR_CTXINSTR, "Context instance return" },
+ { LBMC_NHDR_SRCIDX, "Source index" },
+ { LBMC_NHDR_UMQ_ULB_MSG, "UMQ ULB Message" },
+ { LBMC_NHDR_SSF_INIT, "Source-side filtering init" },
+ { LBMC_NHDR_SSF_CREQ, "Source-side filtering control request" },
+ { LBMC_NHDR_UME_PREG, "UME persistent registration" },
+ { LBMC_NHDR_UME_PREG_RESP, "UME persistent registration response" },
+ { LBMC_NHDR_UME_ACK, "UME acknowledgement" },
+ { LBMC_NHDR_UME_RXREQ, "UME retransmission request" },
+ { LBMC_NHDR_UME_KEEPALIVE, "UME keepalive" },
+ { LBMC_NHDR_UME_STOREID, "UME store ID" },
+ { LBMC_NHDR_UME_RANGED_ACK, "UME ranged ACK" },
+ { LBMC_NHDR_UME_ACK_ID, "UME ACK" },
+ { LBMC_NHDR_UME_CAPABILITY, "UME capability" },
+ { LBMC_NHDR_UME_PROXY_SRC, "Proxy source" },
+ { LBMC_NHDR_UME_STORE_GROUP, "Store group" },
+ { LBMC_NHDR_UME_STORE_INFO, "Store info" },
+ { LBMC_NHDR_UME_LJ_INFO, "UME late-join info" },
+ { LBMC_NHDR_TSNI, "Topic sequence info" },
+ { LBMC_NHDR_UMQ_REG, "UMQ registration" },
+ { LBMC_NHDR_UMQ_REG_RESP, "UMQ registration response" },
+ { LBMC_NHDR_UMQ_ACK, "UMQ ACK" },
+ { LBMC_NHDR_UMQ_RCR, "UMQ receiver control record" },
+ { LBMC_NHDR_UMQ_KA, "UMQ keepalive" },
+ { LBMC_NHDR_UMQ_RXREQ, "UME retransmission request" },
+ { LBMC_NHDR_UMQ_QMGMT, "UMQ queue management" },
+ { LBMC_NHDR_UMQ_RESUB_REQ, "UMQ resubmission request" },
+ { LBMC_NHDR_UMQ_RESUB_RESP, "UMQ resubmission response" },
+ { LBMC_NHDR_TOPIC_INTEREST, "Topic interest" },
+ { LBMC_NHDR_PATTERN_INTEREST, "Pattern interest" },
+ { LBMC_NHDR_ADVERTISEMENT, "Advertisement" },
+ { LBMC_NHDR_UME_CTXINSTS, "Store context instance" },
+ { LBMC_NHDR_UME_STORENAME, "Store name" },
+ { LBMC_NHDR_UMQ_ULB_RCR, "UMQ ULB RCR" },
+ { LBMC_NHDR_UMQ_LF, "UMQ load factor" },
+ { LBMC_NHDR_CTXINFO, "Context information" },
+ { LBMC_NHDR_UME_PSER, "UME proxy source election" },
+ { LBMC_NHDR_CTXINST, "Context instance" },
+ { LBMC_NHDR_DOMAIN, "Domain" },
+ { LBMC_NHDR_TNWG_CAPABILITIES, "TNWG Capabilities" },
+ { LBMC_NHDR_PATIDX, "Pattern index" },
+ { LBMC_NHDR_UME_CLIENT_LIFETIME, "UME client lifetime" },
+ { LBMC_NHDR_UME_SID, "UME session ID" },
+ { LBMC_NHDR_UMQ_IDX_CMD, "UMQ index command" },
+ { LBMC_NHDR_UMQ_IDX_CMD_RESP, "UMQ index command response" },
+ { LBMC_NHDR_ODOMAIN, "Originating Domain" },
+ { LBMC_NHDR_STREAM, "Stream" },
+ { LBMC_NHDR_TOPIC_MD_INTEREST, "Topic multi-domain interest" },
+ { LBMC_NHDR_PATTERN_MD_INTEREST, "Pattern multi-domain interest" },
+ { LBMC_NHDR_LJI_REQ, "Late Join information request" },
+ { LBMC_NHDR_TNWG_KA, "Gateway peer keepalive" },
+ { LBMC_NHDR_UME_RCV_KEEPALIVE, "UME receiver keepalive" },
+ { LBMC_NHDR_UMQ_CMD, "UMQ command" },
+ { LBMC_NHDR_UMQ_CMD_RESP, "UMQ command response" },
+ { LBMC_NHDR_SRI_REQ, "Source registration information request" },
+ { LBMC_NHDR_UME_STORE_DOMAIN, "Store domain" },
+ { LBMC_NHDR_SRI, "Source registration information" },
+ { LBMC_NHDR_ROUTE_INFO, "Route information" },
+ { LBMC_NHDR_ROUTE_INFO_NEIGHBOR, "Route information neighbor" },
+ { LBMC_NHDR_GATEWAY_NAME, "Gateway name" },
+ { LBMC_NHDR_AUTHENTICATION, "Authentication" },
+ { LBMC_NHDR_HMAC, "HMAC" },
+ { LBMC_NHDR_UMQ_SID, "UMQ session ID" },
+ { LBMC_NHDR_DESTINATION, "Destination" },
+ { LBMC_NHDR_TOPIC_IDX, "Topic index" },
+ { LBMC_NHDR_TOPIC_SOURCE, "Topic source" },
+ { LBMC_NHDR_TOPIC_SOURCE_EXFUNC, "Topic source extended functionality" },
+ { LBMC_NHDR_EXTOPT, "Extended option" },
+ { LBMC_NHDR_UME_STORE_INFO_EXT, "Store extended information" },
+ { LBMC_NHDR_UME_PSRC_ELECTION_TOKEN, "Proxy source election token" },
+ { LBMC_NHDR_NONE, "None" },
+ { LBMC_NHDR_TCP_SID, "TCP session ID" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_req_transport_type[] =
+{
+ { LBMC_REQUEST_TRANSPORT_TCP, "TCP" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_ssf_transport_type[] =
+{
+ { LBMC_CNTL_SSF_INIT_TRANSPORT_TCP, "TCP" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_ssf_creq_mode[] =
+{
+ { LBMC_CNTL_SSF_CREQ_MODE_INCLUDE, "Include" },
+ { LBMC_CNTL_SSF_CREQ_MODE_EXCLUDE, "Exclude" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_ume_preg_resp_error_code[] =
+{
+ { LBMC_UME_PREG_RESP_ERRCODE_ENOERROR, "No error" },
+ { LBMC_UME_PREG_RESP_ERRCODE_ENOPATTERN, "Store has no matching pattern" },
+ { LBMC_UME_PREG_RESP_ERRCODE_ESRCREGID, "Source RegID not found" },
+ { LBMC_UME_PREG_RESP_ERRCODE_EREGID, "RegID is in use by a receiver" },
+ { LBMC_UME_PREG_RESP_ERRCODE_ETOPICNAME, "Topic name does not match previous registration" },
+ { LBMC_UME_PREG_RESP_ERRCODE_EACTIVE, "RegID is in use by a different source" },
+ { LBMC_UME_PREG_RESP_ERRCODE_ECONFIG, "Source and store configuration values are incompatible" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_ume_ack_type[] =
+{
+ { LBMC_UME_ACK_TYPE_CDELV, "CDELV" },
+ { LBMC_UME_ACK_TYPE_STABLE, "Stable" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_ume_ka_type[] =
+{
+ { LBMC_UME_KEEPALIVE_TYPE_SRC, "Source" },
+ { LBMC_UME_KEEPALIVE_TYPE_RCV, "Receiver" },
+ { LBMC_UME_KEEPALIVE_TYPE_STORE, "Store" },
+ { 0x0, NULL }
+};
+
+static const true_false_string lbmc_ume_s_flag =
+{
+ "Source registration",
+ "Receiver registration"
+};
+
+static const true_false_string lbmc_ume_f_flag =
+{
+ "Do not forward ACKs",
+ "Forward ACKs"
+};
+
+static const true_false_string lbmc_ume_o_flag =
+{
+ "Old/returning client",
+ "New client"
+};
+
+static const true_false_string lbmc_ume_error_flag =
+{
+ "Error (see code)",
+ "No error"
+};
+
+static const true_false_string lbmc_ume_n_flag =
+{
+ "No cache (store) or no ACKs (receiver)",
+ "Cache (store) or ACKs (receiver)"
+};
+
+static const true_false_string lbmc_ume_r_flag =
+{
+ "Store requests a response",
+ "No response requested"
+};
+
+static const true_false_string lbmc_ume_t_flag =
+{
+ "Store has not seen a TIR for the topic",
+ "Store has seen a TIR for the topic"
+};
+
+static const value_string lbmc_apphdr_chain_type[] =
+{
+ { LBM_CHAIN_ELEM_CHANNEL_NUMBER, "Channel" },
+ { LBM_CHAIN_ELEM_HF_SQN, "Hot failover sequence number" },
+ { LBM_CHAIN_ELEM_GW_INFO, "Gateway info" },
+ { LBM_CHAIN_ELEM_APPHDR, "Non-chained apphdr" },
+ { LBM_CHAIN_ELEM_USER_DATA, "User data" },
+ { LBM_CHAIN_ELEM_PROPERTIES_LENGTH, "Message properties length" },
+ { LBM_CHAIN_ELEM_NONE, "None" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_reg_type[] =
+{
+ { LBMC_UMQ_REG_CTX_TYPE, "Context" },
+ { LBMC_UMQ_REG_SRC_TYPE, "Source" },
+ { LBMC_UMQ_REG_RCV_TYPE, "Receiver" },
+ { LBMC_UMQ_REG_RCV_DEREG_TYPE, "Receiver deregistration" },
+ { LBMC_UMQ_REG_ULB_RCV_TYPE, "ULB Receiver" },
+ { LBMC_UMQ_REG_ULB_RCV_DEREG_TYPE, "ULB Receiver deregistration" },
+ { LBMC_UMQ_REG_OBSERVER_RCV_TYPE, "Observer receiver registration" },
+ { LBMC_UMQ_REG_OBSERVER_RCV_DEREG_TYPE, "Observer receiver deregistration" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_reg_response_type[] =
+{
+ { LBMC_UMQ_REG_RESP_CTX_TYPE, "Context" },
+ { LBMC_UMQ_REG_RESP_SRC_TYPE, "Source" },
+ { LBMC_UMQ_REG_RESP_RCV_TYPE, "Receiver" },
+ { LBMC_UMQ_REG_RESP_RCV_DEREG_TYPE, "Receiver deregistration" },
+ { LBMC_UMQ_REG_RESP_ERR_TYPE, "Error" },
+ { LBMC_UMQ_REG_RESP_ULB_RCV_TYPE, "ULB Receiver" },
+ { LBMC_UMQ_REG_RESP_ULB_RCV_DEREG_TYPE, "ULB Receiver deregistration" },
+ { LBMC_UMQ_REG_RESP_OBSERVER_RCV_TYPE, "Observer receiver registration" },
+ { LBMC_UMQ_REG_RESP_OBSERVER_RCV_DEREG_TYPE, "Observer receiver deregistration" },
+ { LBMC_UMQ_REG_RESP_CTX_EX_TYPE, "Extended context registration" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_ack_type[] =
+{
+ { LBMC_UMQ_ACK_STABLE_TYPE, "Stable" },
+ { LBMC_UMQ_ACK_CR_TYPE, "CR" },
+ { LBMC_UMQ_ACK_ULB_CR_TYPE, "ULB CR" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_ka_type[] =
+{
+ { LBMC_UMQ_KA_CTX_TYPE, "Context" },
+ { LBMC_UMQ_KA_SRC_TYPE, "Source" },
+ { LBMC_UMQ_KA_RCV_TYPE, "Receiver" },
+ { LBMC_UMQ_KA_ULB_RCV_TYPE, "ULB Receiver" },
+ { LBMC_UMQ_KA_CTX_RESP_TYPE, "Context response" },
+ { LBMC_UMQ_KA_SRC_RESP_TYPE, "Source response" },
+ { LBMC_UMQ_KA_RCV_RESP_TYPE, "Receiver response" },
+ { LBMC_UMQ_KA_ULB_RCV_RESP_TYPE, "ULB Receiver response" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_rxreq_type[] =
+{
+ { LBMC_UMQ_RXREQ_MR_TYPE, "MR" },
+ { LBMC_UMQ_RXREQ_QRCRR_TYPE, "QRCRR" },
+ { LBMC_UMQ_RXREQ_TRCRR_TYPE, "TRCRR" },
+ { LBMC_UMQ_RXREQ_ULB_MR_TYPE, "ULB MR" },
+ { LBMC_UMQ_RXREQ_ULB_MR_ABORT_TYPE, "ULB MR Abort" },
+ { LBMC_UMQ_RXREQ_ULB_TRCRR_TYPE, "ULB TRCRR" },
+ { LBMC_UMQ_RXREQ_ULB_TRCRR_ABORT_TYPE, "ULB TRCRR Abort" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_resub_response_code[] =
+{
+ { LBMC_UMQ_RESUB_RESP_ENQUEUED_CODE, "Enqueued" },
+ { LBMC_UMQ_RESUB_RESP_CONSUMED_CODE, "Consumed" },
+ { LBMC_UMQ_RESUB_RESP_OUTSTANDING_CODE, "Outstanding" },
+ { LBMC_UMQ_RESUB_RESP_RESUBALLOWED_CODE, "Resubmission allowed" },
+ { LBMC_UMQ_RESUB_RESP_RESUBDONE_CODE, "Resubmission done" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_lf_type[] =
+{
+ { LBMC_UMQ_LF_SRC_TYPE, "Source" },
+ { LBMC_UMQ_LF_RCV_TYPE, "Receiver" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_index_cmd_type[] =
+{
+ { LBMC_UMQ_IDX_CMD_RCV_STOP_IDX_ASSIGN_TYPE, "Stop receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RCV_START_IDX_ASSIGN_TYPE, "Start receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_ULB_RCV_STOP_IDX_ASSIGN_TYPE, "Stop ULB receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_ULB_RCV_START_IDX_ASSIGN_TYPE, "Start ULB receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_TYPE, "Release receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_ULB_RCV_RELEASE_IDX_ASSIGN_TYPE, "Release ULB receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_TYPE, "Reserve receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_ULB_RCV_RESERVE_IDX_ASSIGN_TYPE, "Reserve ULB receiver index assignment" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_index_cmd_response_type[] =
+{
+ { LBMC_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_TYPE, "Stop receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_TYPE, "Start receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_TYPE, "Stop ULB receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_TYPE, "Start ULB receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_TYPE, "Release receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_TYPE, "Release ULB receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_TYPE, "Reserve receiver index assignment" },
+ { LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_TYPE, "Reserve ULB receiver index assignment" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_index_cmd_response_error_type[] =
+{
+ { LBMC_UMQ_IDX_CMD_RESP_ERR_TYPE, "Error" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_cmd_type[] =
+{
+ { LBMC_UMQ_CMD_TYPE_TOPIC_LIST, "Topic list" },
+ { LBMC_UMQ_CMD_TYPE_RCV_MSG_RETRIEVE, "Retrieve message" },
+ { LBMC_UMQ_CMD_TYPE_RCV_MSG_LIST, "List message" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_cmd_response_type[] =
+{
+ { LBMC_UMQ_CMD_RESP_TYPE_CTX_TOPIC_LIST, "Topic list" },
+ { LBMC_UMQ_CMD_RESP_TYPE_RCV_MSG_RETRIEVE, "Retrieve message" },
+ { LBMC_UMQ_CMD_RESP_TYPE_RCV_MSG_LIST, "List message" },
+ { LBMC_UMQ_CMD_RESP_TYPE_ERROR, "Error" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_cmd_response_error_code[] =
+{
+ { LBMC_UMQ_CMD_RESP_ERROR_AUTHFAIL, "Authentication failed" },
+ { LBMC_UMQ_CMD_RESP_ERROR_NOHMAC, "HMAC failed" },
+ { LBMC_UMQ_CMD_RESP_ERROR_NOAUTHOR, "Not authorized" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_auth_operation_id_type[] =
+{
+ { AUTH_OP_REQ, "Request" },
+ { AUTH_OP_CHALLENGE, "Challenge" },
+ { AUTH_OP_CHALLENGE_RSP, "Challenge response" },
+ { AUTH_OP_RESULT, "Result" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_extopt_subtype[] =
+{
+ { LBMC_EXT_NHDR_CFGOPT, "Configuration option" },
+ { LBMC_EXT_NHDR_MSGSEL, "Message selector" },
+ { 0x0, NULL }
+};
+
+static const value_string lbm_msg_prop_header_type[] =
+{
+ { LBM_MSG_PROPERTIES_TYPE_NORMAL, "Normal" },
+ { 0x0, NULL }
+};
+
+static const value_string lbm_msg_prop_magic_type[] =
+{
+ { LBM_MSG_PROPERTIES_MAGIC, "MAGIC" },
+ { LBM_MSG_PROPERTIES_ANTIMAGIC, "ANTI-MAGIC" },
+ { 0x0, NULL }
+};
+
+static const value_string lbm_msg_prop_field_type[] =
+{
+ { LBM_MSG_PROPERTY_NONE, "None" },
+ { LBM_MSG_PROPERTY_BOOLEAN, "Boolean" },
+ { LBM_MSG_PROPERTY_BYTE, "Byte" },
+ { LBM_MSG_PROPERTY_SHORT, "Short" },
+ { LBM_MSG_PROPERTY_INT, "Integer" },
+ { LBM_MSG_PROPERTY_LONG, "Long" },
+ { LBM_MSG_PROPERTY_FLOAT, "Float" },
+ { LBM_MSG_PROPERTY_DOUBLE, "Double" },
+ { LBM_MSG_PROPERTY_STRING, "String" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_umq_msg_status_code[] =
+{
+ { LBM_UMQ_QUEUE_MSG_STATUS_UNKNOWN, "Unknown" },
+ { LBM_UMQ_QUEUE_MSG_STATUS_UNASSIGNED, "Unassigned" },
+ { LBM_UMQ_QUEUE_MSG_STATUS_ASSIGNED, "Assigned" },
+ { LBM_UMQ_QUEUE_MSG_STATUS_REASSIGNING, "Reassigning" },
+ { LBM_UMQ_QUEUE_MSG_STATUS_CONSUMED, "Consumed" },
+ { LBM_UMQ_QUEUE_MSG_STATUS_COMPLETE, "Complete" },
+ { 0x0, NULL }
+};
+
+static const value_string lbmc_extopt_config_option_scope[] =
+{
+ { LBMC_CNTL_CONFIG_OPT_SCOPE_SOURCE, "Source" },
+ { LBMC_CNTL_CONFIG_OPT_SCOPE_RECEIVER, "Receiver" },
+ { LBMC_CNTL_CONFIG_OPT_SCOPE_CONTEXT, "Context" },
+ { LBMC_CNTL_CONFIG_OPT_SCOPE_WILDCARD_RECEIVER, "Wildcard receiver" },
+ { LBMC_CNTL_CONFIG_OPT_SCOPE_EVENT_QUEUE, "Event queue" },
+ { LBMC_CNTL_CONFIG_OPT_SCOPE_CONNECTION_FACTORY, "Connection factory" },
+ { LBMC_CNTL_CONFIG_OPT_SCOPE_DESTINATION, "Destination" },
+ { LBMC_CNTL_CONFIG_OPT_SCOPE_HFX, "HFX" },
+ { 0x0, NULL }
+};
+
+static const true_false_string lbmc_umq_r_flag =
+{
+ "Queue requests a response",
+ "No response requested"
+};
+
+/*----------------------------------------------------------------------------*/
+/* Preferences. */
+/*----------------------------------------------------------------------------*/
+
+static gboolean lbmc_use_heuristic_subdissectors = TRUE;
+static gboolean lbmc_reassemble_fragments = FALSE;
+static gboolean lbmc_dissect_lbmpdm = FALSE;
+static heur_dissector_list_t lbmc_heuristic_subdissector_list;
+static dissector_handle_t lbmc_data_dissector_handle;
+
+/*----------------------------------------------------------------------------*/
+/* Handles of all types. */
+/*----------------------------------------------------------------------------*/
+
+static int proto_lbmc = -1;
+static int tnw_protocol_handle = -1;
+static int lbmc_uim_tap_handle = -1;
+static int lbmc_stream_tap_handle = -1;
+static int hf_lbmc_tag = -1;
+static int hf_lbmc_topic = -1;
+static int hf_lbmc_ver_type = -1;
+static int hf_lbmc_ver_type_version = -1;
+static int hf_lbmc_ver_type_type = -1;
+static int hf_lbmc_next_hdr = -1;
+static int hf_lbmc_msglen = -1;
+static int hf_lbmc_tidx = -1;
+static int hf_lbmc_sqn = -1;
+static int hf_lbmc_frag = -1;
+static int hf_lbmc_frag_next_hdr = -1;
+static int hf_lbmc_frag_hdr_len = -1;
+static int hf_lbmc_frag_flags = -1;
+static int hf_lbmc_frag_flags_ignore = -1;
+static int hf_lbmc_frag_first_sqn = -1;
+static int hf_lbmc_frag_offset = -1;
+static int hf_lbmc_frag_len = -1;
+static int hf_lbmc_batch = -1;
+static int hf_lbmc_batch_next_hdr = -1;
+static int hf_lbmc_batch_hdr_len = -1;
+static int hf_lbmc_batch_flags = -1;
+static int hf_lbmc_batch_flags_ignore = -1;
+static int hf_lbmc_batch_flags_batch_start = -1;
+static int hf_lbmc_batch_flags_batch_end = -1;
+static int hf_lbmc_tcp_request = -1;
+static int hf_lbmc_tcp_request_next_hdr = -1;
+static int hf_lbmc_tcp_request_hdr_len = -1;
+static int hf_lbmc_tcp_request_flags = -1;
+static int hf_lbmc_tcp_request_flags_ignore = -1;
+static int hf_lbmc_tcp_request_transport = -1;
+static int hf_lbmc_tcp_request_qidx = -1;
+static int hf_lbmc_tcp_request_port = -1;
+static int hf_lbmc_tcp_request_reserved = -1;
+static int hf_lbmc_tcp_request_ipaddr = -1;
+static int hf_lbmc_topicname = -1;
+static int hf_lbmc_topicname_next_hdr = -1;
+static int hf_lbmc_topicname_hdr_len = -1;
+static int hf_lbmc_topicname_flags = -1;
+static int hf_lbmc_topicname_flags_ignore = -1;
+static int hf_lbmc_topicname_topicname = -1;
+static int hf_lbmc_apphdr = -1;
+static int hf_lbmc_apphdr_next_hdr = -1;
+static int hf_lbmc_apphdr_hdr_len = -1;
+static int hf_lbmc_apphdr_code = -1;
+static int hf_lbmc_apphdr_code_ignore = -1;
+static int hf_lbmc_apphdr_code_code = -1;
+static int hf_lbmc_apphdr_data = -1;
+static int hf_lbmc_apphdr_chain = -1;
+static int hf_lbmc_apphdr_chain_next_hdr = -1;
+static int hf_lbmc_apphdr_chain_hdr_len = -1;
+static int hf_lbmc_apphdr_chain_res = -1;
+static int hf_lbmc_apphdr_chain_first_chain_hdr = -1;
+static int hf_lbmc_apphdr_chain_element = -1;
+static int hf_lbmc_apphdr_chain_element_next_hdr = -1;
+static int hf_lbmc_apphdr_chain_element_hdr_len = -1;
+static int hf_lbmc_apphdr_chain_element_res = -1;
+static int hf_lbmc_apphdr_chain_element_data = -1;
+static int hf_lbmc_apphdr_chain_msgprop = -1;
+static int hf_lbmc_apphdr_chain_msgprop_next_hdr = -1;
+static int hf_lbmc_apphdr_chain_msgprop_hdr_len = -1;
+static int hf_lbmc_apphdr_chain_msgprop_res = -1;
+static int hf_lbmc_apphdr_chain_msgprop_len = -1;
+static int hf_lbmc_umq_msgid = -1;
+static int hf_lbmc_umq_msgid_next_hdr = -1;
+static int hf_lbmc_umq_msgid_hdr_len = -1;
+static int hf_lbmc_umq_msgid_flags = -1;
+static int hf_lbmc_umq_msgid_flags_ignore = -1;
+static int hf_lbmc_umq_msgid_msgid_regid = -1;
+static int hf_lbmc_umq_msgid_msgid_stamp = -1;
+static int hf_lbmc_umq_sqd_rcv = -1;
+static int hf_lbmc_umq_sqd_rcv_next_hdr = -1;
+static int hf_lbmc_umq_sqd_rcv_hdr_len = -1;
+static int hf_lbmc_umq_sqd_rcv_flags = -1;
+static int hf_lbmc_umq_sqd_rcv_flags_ignore = -1;
+static int hf_lbmc_umq_sqd_rcv_flags_r_flag = -1;
+static int hf_lbmc_umq_sqd_rcv_flags_s_flag = -1;
+static int hf_lbmc_umq_sqd_rcv_flags_re_flag = -1;
+static int hf_lbmc_umq_sqd_rcv_flags_eoi_flag = -1;
+static int hf_lbmc_umq_sqd_rcv_flags_boi_flag = -1;
+static int hf_lbmc_umq_sqd_rcv_queue_id = -1;
+static int hf_lbmc_umq_sqd_rcv_queue_ver = -1;
+static int hf_lbmc_umq_sqd_rcv_rcr_idx = -1;
+static int hf_lbmc_umq_sqd_rcv_assign_id = -1;
+static int hf_lbmc_umq_resub = -1;
+static int hf_lbmc_umq_resub_next_hdr = -1;
+static int hf_lbmc_umq_resub_hdr_len = -1;
+static int hf_lbmc_umq_resub_flags = -1;
+static int hf_lbmc_umq_resub_flags_ignore = -1;
+static int hf_lbmc_umq_resub_flags_q_flag = -1;
+static int hf_lbmc_umq_resub_rcr_idx = -1;
+static int hf_lbmc_umq_resub_resp_ip = -1;
+static int hf_lbmc_umq_resub_resp_port = -1;
+static int hf_lbmc_umq_resub_appset_idx = -1;
+static int hf_lbmc_otid = -1;
+static int hf_lbmc_otid_next_hdr = -1;
+static int hf_lbmc_otid_hdr_len = -1;
+static int hf_lbmc_otid_flags = -1;
+static int hf_lbmc_otid_flags_ignore = -1;
+static int hf_lbmc_otid_otid = -1;
+static int hf_lbmc_ctxinst = -1;
+static int hf_lbmc_ctxinst_next_hdr = -1;
+static int hf_lbmc_ctxinst_hdr_len = -1;
+static int hf_lbmc_ctxinst_flags = -1;
+static int hf_lbmc_ctxinst_flags_ignore = -1;
+static int hf_lbmc_ctxinst_ctxinst = -1;
+static int hf_lbmc_ctxinstd = -1;
+static int hf_lbmc_ctxinstr = -1;
+static int hf_lbmc_srcidx = -1;
+static int hf_lbmc_srcidx_next_hdr = -1;
+static int hf_lbmc_srcidx_hdr_len = -1;
+static int hf_lbmc_srcidx_flags = -1;
+static int hf_lbmc_srcidx_flags_ignore = -1;
+static int hf_lbmc_srcidx_srcidx = -1;
+static int hf_lbmc_umq_ulb_msg = -1;
+static int hf_lbmc_umq_ulb_msg_next_hdr = -1;
+static int hf_lbmc_umq_ulb_msg_hdr_len = -1;
+static int hf_lbmc_umq_ulb_msg_flags = -1;
+static int hf_lbmc_umq_ulb_msg_flags_ignore = -1;
+static int hf_lbmc_umq_ulb_msg_flags_a_flag = -1;
+static int hf_lbmc_umq_ulb_msg_flags_r_flag = -1;
+static int hf_lbmc_umq_ulb_msg_queue_id = -1;
+static int hf_lbmc_umq_ulb_msg_ulb_src_id = -1;
+static int hf_lbmc_umq_ulb_msg_assign_id = -1;
+static int hf_lbmc_umq_ulb_msg_appset_idx = -1;
+static int hf_lbmc_umq_ulb_msg_num_ras = -1;
+static int hf_lbmc_ssf_init = -1;
+static int hf_lbmc_ssf_init_next_hdr = -1;
+static int hf_lbmc_ssf_init_hdr_len = -1;
+static int hf_lbmc_ssf_init_transport = -1;
+static int hf_lbmc_ssf_init_flags = -1;
+static int hf_lbmc_ssf_init_flags_ignore = -1;
+static int hf_lbmc_ssf_init_flags_default_inclusions = -1;
+static int hf_lbmc_ssf_init_flags_default_exclusions = -1;
+static int hf_lbmc_ssf_init_transport_idx = -1;
+static int hf_lbmc_ssf_init_client_idx = -1;
+static int hf_lbmc_ssf_init_ssf_port = -1;
+static int hf_lbmc_ssf_init_res = -1;
+static int hf_lbmc_ssf_init_ssf_ip = -1;
+static int hf_lbmc_ssf_creq = -1;
+static int hf_lbmc_ssf_creq_next_hdr = -1;
+static int hf_lbmc_ssf_creq_hdr_len = -1;
+static int hf_lbmc_ssf_creq_flags = -1;
+static int hf_lbmc_ssf_creq_flags_ignore = -1;
+static int hf_lbmc_ssf_creq_mode = -1;
+static int hf_lbmc_ssf_creq_transport_idx = -1;
+static int hf_lbmc_ssf_creq_topic_idx = -1;
+static int hf_lbmc_ssf_creq_client_idx = -1;
+static int hf_lbmc_ume_preg = -1;
+static int hf_lbmc_ume_preg_next_hdr = -1;
+static int hf_lbmc_ume_preg_hdr_len = -1;
+static int hf_lbmc_ume_preg_flags = -1;
+static int hf_lbmc_ume_preg_flags_ignore = -1;
+static int hf_lbmc_ume_preg_flags_f_flag = -1;
+static int hf_lbmc_ume_preg_flags_p_flag = -1;
+static int hf_lbmc_ume_preg_flags_w_flag = -1;
+static int hf_lbmc_ume_preg_flags_d_flag = -1;
+static int hf_lbmc_ume_preg_marker = -1;
+static int hf_lbmc_ume_preg_marker_s_flag = -1;
+static int hf_lbmc_ume_preg_marker_marker = -1;
+static int hf_lbmc_ume_preg_reg_id = -1;
+static int hf_lbmc_ume_preg_transport_idx = -1;
+static int hf_lbmc_ume_preg_topic_idx = -1;
+static int hf_lbmc_ume_preg_src_reg_id = -1;
+static int hf_lbmc_ume_preg_resp_port = -1;
+static int hf_lbmc_ume_preg_res2 = -1;
+static int hf_lbmc_ume_preg_resp_ip = -1;
+static int hf_lbmc_ume_preg_resp = -1;
+static int hf_lbmc_ume_preg_resp_next_hdr = -1;
+static int hf_lbmc_ume_preg_resp_hdr_len = -1;
+static int hf_lbmc_ume_preg_resp_code = -1;
+static int hf_lbmc_ume_preg_resp_code_ignore = -1;
+static int hf_lbmc_ume_preg_resp_code_e_flag = -1;
+static int hf_lbmc_ume_preg_resp_code_o_flag = -1;
+static int hf_lbmc_ume_preg_resp_code_n_flag = -1;
+static int hf_lbmc_ume_preg_resp_code_w_flag = -1;
+static int hf_lbmc_ume_preg_resp_code_d_flag = -1;
+static int hf_lbmc_ume_preg_resp_code_code = -1;
+static int hf_lbmc_ume_preg_resp_marker = -1;
+static int hf_lbmc_ume_preg_resp_marker_s_flag = -1;
+static int hf_lbmc_ume_preg_resp_marker_marker = -1;
+static int hf_lbmc_ume_preg_resp_reg_id = -1;
+static int hf_lbmc_ume_preg_resp_transport_idx = -1;
+static int hf_lbmc_ume_preg_resp_topic_idx = -1;
+static int hf_lbmc_ume_preg_resp_low_seqnum = -1;
+static int hf_lbmc_ume_preg_resp_high_seqnum = -1;
+static int hf_lbmc_ume_ack = -1;
+static int hf_lbmc_ume_ack_next_hdr = -1;
+static int hf_lbmc_ume_ack_hdr_len = -1;
+static int hf_lbmc_ume_ack_flags = -1;
+static int hf_lbmc_ume_ack_flags_ignore = -1;
+static int hf_lbmc_ume_ack_flags_o_flag = -1;
+static int hf_lbmc_ume_ack_flags_f_flag = -1;
+static int hf_lbmc_ume_ack_flags_u_flag = -1;
+static int hf_lbmc_ume_ack_flags_e_flag = -1;
+static int hf_lbmc_ume_ack_type = -1;
+static int hf_lbmc_ume_ack_transport_idx = -1;
+static int hf_lbmc_ume_ack_id_2 = -1;
+static int hf_lbmc_ume_ack_rcv_reg_id = -1;
+static int hf_lbmc_ume_ack_seqnum = -1;
+static int hf_lbmc_ume_rxreq = -1;
+static int hf_lbmc_ume_rxreq_next_hdr = -1;
+static int hf_lbmc_ume_rxreq_hdr_len = -1;
+static int hf_lbmc_ume_rxreq_flags = -1;
+static int hf_lbmc_ume_rxreq_flags_ignore = -1;
+static int hf_lbmc_ume_rxreq_flags_tsni_req = -1;
+static int hf_lbmc_ume_rxreq_request_idx = -1;
+static int hf_lbmc_ume_rxreq_transport_idx = -1;
+static int hf_lbmc_ume_rxreq_id_2 = -1;
+static int hf_lbmc_ume_rxreq_seqnum = -1;
+static int hf_lbmc_ume_rxreq_rx_port = -1;
+static int hf_lbmc_ume_rxreq_res = -1;
+static int hf_lbmc_ume_rxreq_rx_ip = -1;
+static int hf_lbmc_ume_keepalive = -1;
+static int hf_lbmc_ume_keepalive_next_hdr = -1;
+static int hf_lbmc_ume_keepalive_hdr_len = -1;
+static int hf_lbmc_ume_keepalive_flags = -1;
+static int hf_lbmc_ume_keepalive_flags_ignore = -1;
+static int hf_lbmc_ume_keepalive_flags_r_flag = -1;
+static int hf_lbmc_ume_keepalive_flags_t_flag = -1;
+static int hf_lbmc_ume_keepalive_type = -1;
+static int hf_lbmc_ume_keepalive_transport_idx = -1;
+static int hf_lbmc_ume_keepalive_topic_idx = -1;
+static int hf_lbmc_ume_keepalive_reg_id = -1;
+static int hf_lbmc_ume_storeid = -1;
+static int hf_lbmc_ume_storeid_next_hdr = -1;
+static int hf_lbmc_ume_storeid_hdr_len = -1;
+static int hf_lbmc_ume_storeid_store_id = -1;
+static int hf_lbmc_ume_storeid_store_id_ignore = -1;
+static int hf_lbmc_ume_storeid_store_id_store_id = -1;
+static int hf_lbmc_ume_ranged_ack = -1;
+static int hf_lbmc_ume_ranged_ack_next_hdr = -1;
+static int hf_lbmc_ume_ranged_ack_hdr_len = -1;
+static int hf_lbmc_ume_ranged_ack_flags = -1;
+static int hf_lbmc_ume_ranged_ack_flags_ignore = -1;
+static int hf_lbmc_ume_ranged_ack_first_seqnum = -1;
+static int hf_lbmc_ume_ranged_ack_last_seqnum = -1;
+static int hf_lbmc_ume_ack_id = -1;
+static int hf_lbmc_ume_ack_id_next_hdr = -1;
+static int hf_lbmc_ume_ack_id_hdr_len = -1;
+static int hf_lbmc_ume_ack_id_flags = -1;
+static int hf_lbmc_ume_ack_id_flags_ignore = -1;
+static int hf_lbmc_ume_ack_id_id = -1;
+static int hf_lbmc_ume_capability = -1;
+static int hf_lbmc_ume_capability_next_hdr = -1;
+static int hf_lbmc_ume_capability_hdr_len = -1;
+static int hf_lbmc_ume_capability_flags = -1;
+static int hf_lbmc_ume_capability_flags_ignore = -1;
+static int hf_lbmc_ume_capability_flags_qc_flag = -1;
+static int hf_lbmc_ume_capability_flags_client_lifetime_flag = -1;
+static int hf_lbmc_ume_proxy_src = -1;
+static int hf_lbmc_ume_proxy_src_next_hdr = -1;
+static int hf_lbmc_ume_proxy_src_hdr_len = -1;
+static int hf_lbmc_ume_proxy_src_flags = -1;
+static int hf_lbmc_ume_proxy_src_flags_ignore = -1;
+static int hf_lbmc_ume_proxy_src_flags_enable = -1;
+static int hf_lbmc_ume_proxy_src_flags_compatibility = -1;
+static int hf_lbmc_ume_store_group = -1;
+static int hf_lbmc_ume_store_group_next_hdr = -1;
+static int hf_lbmc_ume_store_group_hdr_len = -1;
+static int hf_lbmc_ume_store_group_flags = -1;
+static int hf_lbmc_ume_store_group_flags_ignore = -1;
+static int hf_lbmc_ume_store_group_grp_idx = -1;
+static int hf_lbmc_ume_store_group_grp_sz = -1;
+static int hf_lbmc_ume_store_group_res1 = -1;
+static int hf_lbmc_ume_store = -1;
+static int hf_lbmc_ume_store_next_hdr = -1;
+static int hf_lbmc_ume_store_hdr_len = -1;
+static int hf_lbmc_ume_store_flags = -1;
+static int hf_lbmc_ume_store_flags_ignore = -1;
+static int hf_lbmc_ume_store_grp_idx = -1;
+static int hf_lbmc_ume_store_store_tcp_port = -1;
+static int hf_lbmc_ume_store_store_idx = -1;
+static int hf_lbmc_ume_store_store_ip_addr = -1;
+static int hf_lbmc_ume_store_src_reg_id = -1;
+static int hf_lbmc_ume_lj_info = -1;
+static int hf_lbmc_ume_lj_info_next_hdr = -1;
+static int hf_lbmc_ume_lj_info_hdr_len = -1;
+static int hf_lbmc_ume_lj_info_flags = -1;
+static int hf_lbmc_ume_lj_info_flags_ignore = -1;
+static int hf_lbmc_ume_lj_info_low_seqnum = -1;
+static int hf_lbmc_ume_lj_info_high_seqnum = -1;
+static int hf_lbmc_ume_lj_info_qidx = -1;
+static int hf_lbmc_tsni = -1;
+static int hf_lbmc_tsni_next_hdr = -1;
+static int hf_lbmc_tsni_hdr_len = -1;
+static int hf_lbmc_tsni_num_recs = -1;
+static int hf_lbmc_tsni_num_recs_ignore = -1;
+static int hf_lbmc_tsni_num_recs_num_recs = -1;
+static int hf_lbmc_tsni_rec = -1;
+static int hf_lbmc_tsni_rec_tidx = -1;
+static int hf_lbmc_tsni_rec_sqn = -1;
+static int hf_lbmc_umq_reg = -1;
+static int hf_lbmc_umq_reg_next_hdr = -1;
+static int hf_lbmc_umq_reg_hdr_len = -1;
+static int hf_lbmc_umq_reg_flags = -1;
+static int hf_lbmc_umq_reg_flags_ignore = -1;
+static int hf_lbmc_umq_reg_flags_r_flag = -1;
+static int hf_lbmc_umq_reg_flags_t_flag = -1;
+static int hf_lbmc_umq_reg_flags_i_flag = -1;
+static int hf_lbmc_umq_reg_flags_msg_sel_flag = -1;
+static int hf_lbmc_umq_reg_reg_type = -1;
+static int hf_lbmc_umq_reg_queue_id = -1;
+static int hf_lbmc_umq_reg_cmd_id = -1;
+static int hf_lbmc_umq_reg_inst_idx = -1;
+static int hf_lbmc_umq_reg_regid = -1;
+static int hf_lbmc_umq_reg_reg_ctx = -1;
+static int hf_lbmc_umq_reg_reg_ctx_port = -1;
+static int hf_lbmc_umq_reg_reg_ctx_reserved = -1;
+static int hf_lbmc_umq_reg_reg_ctx_ip = -1;
+static int hf_lbmc_umq_reg_reg_ctx_capabilities = -1;
+static int hf_lbmc_umq_reg_reg_src = -1;
+static int hf_lbmc_umq_reg_reg_src_transport_idx = -1;
+static int hf_lbmc_umq_reg_reg_src_topic_idx = -1;
+static int hf_lbmc_umq_reg_reg_rcv = -1;
+static int hf_lbmc_umq_reg_reg_rcv_assign_id = -1;
+static int hf_lbmc_umq_reg_reg_rcv_rcv_type_id = -1;
+static int hf_lbmc_umq_reg_reg_rcv_last_topic_rcr_tsp = -1;
+static int hf_lbmc_umq_reg_rcv_dereg = -1;
+static int hf_lbmc_umq_reg_rcv_dereg_rcr_idx = -1;
+static int hf_lbmc_umq_reg_rcv_dereg_assign_id = -1;
+static int hf_lbmc_umq_reg_reg_ulb_rcv = -1;
+static int hf_lbmc_umq_reg_reg_ulb_rcv_ulb_src_id = -1;
+static int hf_lbmc_umq_reg_reg_ulb_rcv_assign_id = -1;
+static int hf_lbmc_umq_reg_reg_ulb_rcv_rcv_type_id = -1;
+static int hf_lbmc_umq_reg_reg_ulb_rcv_port = -1;
+static int hf_lbmc_umq_reg_reg_ulb_rcv_reserved = -1;
+static int hf_lbmc_umq_reg_reg_ulb_rcv_ip = -1;
+static int hf_lbmc_umq_reg_reg_ulb_rcv_capabilities = -1;
+static int hf_lbmc_umq_reg_ulb_rcv_dereg = -1;
+static int hf_lbmc_umq_reg_ulb_rcv_dereg_ulb_src_id = -1;
+static int hf_lbmc_umq_reg_ulb_rcv_dereg_assign_id = -1;
+static int hf_lbmc_umq_reg_reg_observer_rcv = -1;
+static int hf_lbmc_umq_reg_reg_observer_rcv_assign_id = -1;
+static int hf_lbmc_umq_reg_reg_observer_rcv_rcv_type_id = -1;
+static int hf_lbmc_umq_reg_reg_observer_rcv_last_topic_rcr_tsp = -1;
+static int hf_lbmc_umq_reg_observer_rcv_dereg = -1;
+static int hf_lbmc_umq_reg_observer_rcv_dereg_rcr_idx = -1;
+static int hf_lbmc_umq_reg_observer_rcv_dereg_assign_id = -1;
+static int hf_lbmc_umq_reg_resp = -1;
+static int hf_lbmc_umq_reg_resp_next_hdr = -1;
+static int hf_lbmc_umq_reg_resp_hdr_len = -1;
+static int hf_lbmc_umq_reg_resp_flags = -1;
+static int hf_lbmc_umq_reg_resp_flags_ignore = -1;
+static int hf_lbmc_umq_reg_resp_flags_r_flag = -1;
+static int hf_lbmc_umq_reg_resp_flags_l_flag = -1;
+static int hf_lbmc_umq_reg_resp_flags_src_s_flag = -1;
+static int hf_lbmc_umq_reg_resp_flags_src_d_flag = -1;
+static int hf_lbmc_umq_reg_resp_resp_type = -1;
+static int hf_lbmc_umq_reg_resp_queue_id = -1;
+static int hf_lbmc_umq_reg_resp_cmd_id = -1;
+static int hf_lbmc_umq_reg_resp_inst_idx = -1;
+static int hf_lbmc_umq_reg_resp_regid = -1;
+static int hf_lbmc_umq_reg_resp_reg_ctx = -1;
+static int hf_lbmc_umq_reg_resp_reg_ctx_capabilities = -1;
+static int hf_lbmc_umq_reg_resp_reg_ctx_ex = -1;
+static int hf_lbmc_umq_reg_resp_reg_ctx_ex_capabilities = -1;
+static int hf_lbmc_umq_reg_resp_reg_ctx_ex_reserved = -1;
+static int hf_lbmc_umq_reg_resp_reg_ctx_ex_flags = -1;
+static int hf_lbmc_umq_reg_resp_reg_ctx_ex_flags_firstmsg = -1;
+static int hf_lbmc_umq_reg_resp_reg_ctx_ex_stamp = -1;
+static int hf_lbmc_umq_reg_resp_err = -1;
+static int hf_lbmc_umq_reg_resp_err_reserved = -1;
+static int hf_lbmc_umq_reg_resp_err_code = -1;
+static int hf_lbmc_umq_reg_resp_reg_src = -1;
+static int hf_lbmc_umq_reg_resp_reg_src_rcr_idx = -1;
+static int hf_lbmc_umq_reg_resp_reg_rcv = -1;
+static int hf_lbmc_umq_reg_resp_reg_rcv_rcr_idx = -1;
+static int hf_lbmc_umq_reg_resp_reg_rcv_assign_id = -1;
+static int hf_lbmc_umq_reg_resp_reg_rcv_appset_idx = -1;
+static int hf_lbmc_umq_reg_resp_reg_rcv_reserved = -1;
+static int hf_lbmc_umq_reg_resp_rcv_dereg = -1;
+static int hf_lbmc_umq_reg_resp_rcv_dereg_rcr_idx = -1;
+static int hf_lbmc_umq_reg_resp_rcv_dereg_assign_id = -1;
+static int hf_lbmc_umq_reg_resp_reg_ulb_rcv = -1;
+static int hf_lbmc_umq_reg_resp_reg_ulb_rcv_ulb_src_id = -1;
+static int hf_lbmc_umq_reg_resp_reg_ulb_rcv_assign_id = -1;
+static int hf_lbmc_umq_reg_resp_reg_ulb_rcv_appset_idx = -1;
+static int hf_lbmc_umq_reg_resp_reg_ulb_rcv_reserved = -1;
+static int hf_lbmc_umq_reg_resp_reg_ulb_rcv_capabilities = -1;
+static int hf_lbmc_umq_reg_resp_ulb_rcv_dereg = -1;
+static int hf_lbmc_umq_reg_resp_ulb_rcv_dereg_ulb_src_id = -1;
+static int hf_lbmc_umq_reg_resp_ulb_rcv_dereg_assign_id = -1;
+static int hf_lbmc_umq_reg_resp_reg_observer_rcv = -1;
+static int hf_lbmc_umq_reg_resp_reg_observer_rcv_rcr_idx = -1;
+static int hf_lbmc_umq_reg_resp_reg_observer_rcv_assign_id = -1;
+static int hf_lbmc_umq_reg_resp_reg_observer_rcv_appset_idx = -1;
+static int hf_lbmc_umq_reg_resp_reg_observer_rcv_reserved = -1;
+static int hf_lbmc_umq_reg_resp_observer_rcv_dereg = -1;
+static int hf_lbmc_umq_reg_resp_observer_rcv_dereg_rcr_idx = -1;
+static int hf_lbmc_umq_reg_resp_observer_rcv_dereg_assign_id = -1;
+static int hf_lbmc_umq_ack = -1;
+static int hf_lbmc_umq_ack_next_hdr = -1;
+static int hf_lbmc_umq_ack_hdr_len = -1;
+static int hf_lbmc_umq_ack_msgs = -1;
+static int hf_lbmc_umq_ack_msgs_ignore = -1;
+static int hf_lbmc_umq_ack_msgs_t_flag = -1;
+static int hf_lbmc_umq_ack_msgs_d_flag = -1;
+static int hf_lbmc_umq_ack_msgs_numids = -1;
+static int hf_lbmc_umq_ack_ack_type = -1;
+static int hf_lbmc_umq_ack_msgid = -1;
+static int hf_lbmc_umq_ack_msgid_regid = -1;
+static int hf_lbmc_umq_ack_msgid_stamp = -1;
+static int hf_lbmc_umq_ack_stable = -1;
+static int hf_lbmc_umq_ack_stable_queue_id = -1;
+static int hf_lbmc_umq_ack_stable_inst_idx = -1;
+static int hf_lbmc_umq_ack_stable_reserved = -1;
+static int hf_lbmc_umq_ack_cr = -1;
+static int hf_lbmc_umq_ack_cr_rcr_idx = -1;
+static int hf_lbmc_umq_ack_cr_assign_id = -1;
+static int hf_lbmc_umq_ack_cr_appset_idx = -1;
+static int hf_lbmc_umq_ack_cr_reserved = -1;
+static int hf_lbmc_umq_ack_ulb_cr = -1;
+static int hf_lbmc_umq_ack_ulb_cr_ulb_src_id = -1;
+static int hf_lbmc_umq_ack_ulb_cr_assign_id = -1;
+static int hf_lbmc_umq_ack_ulb_cr_appset_idx = -1;
+static int hf_lbmc_umq_ack_ulb_cr_reserved = -1;
+static int hf_lbmc_umq_rcr = -1;
+static int hf_lbmc_umq_rcr_next_hdr = -1;
+static int hf_lbmc_umq_rcr_hdr_len = -1;
+static int hf_lbmc_umq_rcr_flags = -1;
+static int hf_lbmc_umq_rcr_flags_ignore = -1;
+static int hf_lbmc_umq_rcr_flags_r_flag = -1;
+static int hf_lbmc_umq_rcr_flags_d_flag = -1;
+static int hf_lbmc_umq_rcr_flags_s_flag = -1;
+static int hf_lbmc_umq_rcr_flags_eoi_flag = -1;
+static int hf_lbmc_umq_rcr_flags_boi_flag = -1;
+static int hf_lbmc_umq_rcr_queue_id = -1;
+static int hf_lbmc_umq_rcr_rcr_idx = -1;
+static int hf_lbmc_umq_rcr_msgid_regid = -1;
+static int hf_lbmc_umq_rcr_msgid_stamp = -1;
+static int hf_lbmc_umq_rcr_topic_tsp = -1;
+static int hf_lbmc_umq_rcr_q_tsp = -1;
+static int hf_lbmc_umq_rcr_assign_id = -1;
+static int hf_lbmc_umq_rcr_appset_idx = -1;
+static int hf_lbmc_umq_rcr_num_ras = -1;
+static int hf_lbmc_umq_rcr_queue_ver = -1;
+static int hf_lbmc_cntl_umq_ka = -1;
+static int hf_lbmc_cntl_umq_ka_next_hdr = -1;
+static int hf_lbmc_cntl_umq_ka_hdr_len = -1;
+static int hf_lbmc_cntl_umq_ka_flags = -1;
+static int hf_lbmc_cntl_umq_ka_flags_ignore = -1;
+static int hf_lbmc_cntl_umq_ka_flags_r_flag = -1;
+static int hf_lbmc_cntl_umq_ka_ka_type = -1;
+static int hf_lbmc_cntl_umq_ka_queue_id = -1;
+static int hf_lbmc_cntl_umq_ka_regid = -1;
+static int hf_lbmc_cntl_umq_ka_inst_idx = -1;
+static int hf_lbmc_cntl_umq_ka_reserved = -1;
+static int hf_lbmc_umq_ka_src = -1;
+static int hf_lbmc_umq_ka_src_transport_idx = -1;
+static int hf_lbmc_umq_ka_src_topic_idx = -1;
+static int hf_lbmc_umq_ka_rcv = -1;
+static int hf_lbmc_umq_ka_rcv_rcr_idx = -1;
+static int hf_lbmc_umq_ka_rcv_assign_id = -1;
+static int hf_lbmc_umq_ka_ulb_rcv = -1;
+static int hf_lbmc_umq_ka_ulb_rcv_ulb_src_id = -1;
+static int hf_lbmc_umq_ka_ulb_rcv_assign_id = -1;
+static int hf_lbmc_umq_ka_ulb_rcv_resp = -1;
+static int hf_lbmc_umq_ka_ulb_rcv_resp_ulb_src_id = -1;
+static int hf_lbmc_umq_ka_ulb_rcv_resp_assign_id = -1;
+static int hf_lbmc_umq_ka_ulb_rcv_resp_appset_idx = -1;
+static int hf_lbmc_umq_ka_ulb_rcv_resp_reserved = -1;
+static int hf_lbmc_umq_rxreq = -1;
+static int hf_lbmc_umq_rxreq_next_hdr = -1;
+static int hf_lbmc_umq_rxreq_hdr_len = -1;
+static int hf_lbmc_umq_rxreq_flags = -1;
+static int hf_lbmc_umq_rxreq_flags_ignore = -1;
+static int hf_lbmc_umq_rxreq_flags_r_flag = -1;
+static int hf_lbmc_umq_rxreq_rxreq_type = -1;
+static int hf_lbmc_umq_rxreq_regid_resp = -1;
+static int hf_lbmc_umq_rxreq_regid_resp_regid = -1;
+static int hf_lbmc_umq_rxreq_addr_resp = -1;
+static int hf_lbmc_umq_rxreq_addr_resp_ip = -1;
+static int hf_lbmc_umq_rxreq_addr_resp_port = -1;
+static int hf_lbmc_umq_rxreq_addr_resp_reserved = -1;
+static int hf_lbmc_umq_rxreq_mr = -1;
+static int hf_lbmc_umq_rxreq_mr_assign_id = -1;
+static int hf_lbmc_umq_rxreq_mr_msgid_regid = -1;
+static int hf_lbmc_umq_rxreq_mr_msgid_stamp = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_ulb_src_id = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_assign_id = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_appset_idx = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_reserved = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_msgid_regid = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_msgid_stamp = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_abort = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_abort_ulb_src_id = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_abort_assign_id = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_abort_msgid_regid = -1;
+static int hf_lbmc_umq_rxreq_ulb_mr_abort_msgid_stamp = -1;
+static int hf_lbmc_umq_rxreq_qrcrr = -1;
+static int hf_lbmc_umq_rxreq_qrcrr_tsp = -1;
+static int hf_lbmc_umq_rxreq_trcrr = -1;
+static int hf_lbmc_umq_rxreq_trcrr_rcr_idx = -1;
+static int hf_lbmc_umq_rxreq_trcrr_tsp = -1;
+static int hf_lbmc_umq_rxreq_ulb_trcrr = -1;
+static int hf_lbmc_umq_rxreq_ulb_trcrr_ulb_src_id = -1;
+static int hf_lbmc_umq_rxreq_ulb_trcrr_assign_id = -1;
+static int hf_lbmc_umq_rxreq_ulb_trcrr_tsp = -1;
+static int hf_lbmc_umq_rxreq_ulb_trcrr_abort = -1;
+static int hf_lbmc_umq_rxreq_ulb_trcrr_abort_ulb_src_id = -1;
+static int hf_lbmc_umq_rxreq_ulb_trcrr_abort_assign_id = -1;
+static int hf_lbmc_umq_rxreq_ulb_trcrr_abort_tsp = -1;
+static int hf_lbmc_umq_qmgmt = -1;
+static int hf_lbmc_umq_qmgmt_next_hdr = -1;
+static int hf_lbmc_umq_qmgmt_hdr_len = -1;
+static int hf_lbmc_umq_resub_req = -1;
+static int hf_lbmc_umq_resub_req_next_hdr = -1;
+static int hf_lbmc_umq_resub_req_hdr_len = -1;
+static int hf_lbmc_umq_resub_req_flags = -1;
+static int hf_lbmc_umq_resub_req_flags_ignore = -1;
+static int hf_lbmc_umq_resub_req_msgid_regid = -1;
+static int hf_lbmc_umq_resub_req_msgid_stamp = -1;
+static int hf_lbmc_umq_resub_req_rcr_idx = -1;
+static int hf_lbmc_umq_resub_req_resp_ip = -1;
+static int hf_lbmc_umq_resub_req_resp_port = -1;
+static int hf_lbmc_umq_resub_req_appset_idx = -1;
+static int hf_lbmc_umq_resub_resp = -1;
+static int hf_lbmc_umq_resub_resp_next_hdr = -1;
+static int hf_lbmc_umq_resub_resp_hdr_len = -1;
+static int hf_lbmc_umq_resub_resp_flags = -1;
+static int hf_lbmc_umq_resub_resp_flags_ignore = -1;
+static int hf_lbmc_umq_resub_resp_code = -1;
+static int hf_lbmc_umq_resub_resp_msgid_regid = -1;
+static int hf_lbmc_umq_resub_resp_msgid_stamp = -1;
+static int hf_lbmc_umq_resub_resp_rcr_idx = -1;
+static int hf_lbmc_umq_resub_resp_reserved = -1;
+static int hf_lbmc_umq_resub_resp_appset_idx = -1;
+static int hf_lbmc_topic_interest = -1;
+static int hf_lbmc_topic_interest_next_hdr = -1;
+static int hf_lbmc_topic_interest_hdr_len = -1;
+static int hf_lbmc_topic_interest_flags = -1;
+static int hf_lbmc_topic_interest_flags_ignore = -1;
+static int hf_lbmc_topic_interest_flags_cancel = -1;
+static int hf_lbmc_topic_interest_flags_refresh = -1;
+static int hf_lbmc_topic_interest_domain_id = -1;
+static int hf_lbmc_pattern_interest = -1;
+static int hf_lbmc_pattern_interest_next_hdr = -1;
+static int hf_lbmc_pattern_interest_hdr_len = -1;
+static int hf_lbmc_pattern_interest_flags = -1;
+static int hf_lbmc_pattern_interest_flags_ignore = -1;
+static int hf_lbmc_pattern_interest_flags_cancel = -1;
+static int hf_lbmc_pattern_interest_flags_refresh = -1;
+static int hf_lbmc_pattern_interest_type = -1;
+static int hf_lbmc_pattern_interest_domain_id = -1;
+static int hf_lbmc_pattern_interest_index = -1;
+static int hf_lbmc_advertisement = -1;
+static int hf_lbmc_advertisement_next_hdr = -1;
+static int hf_lbmc_advertisement_hdr_len = -1;
+static int hf_lbmc_advertisement_flags = -1;
+static int hf_lbmc_advertisement_flags_ignore = -1;
+static int hf_lbmc_advertisement_flags_eos = -1;
+static int hf_lbmc_advertisement_flags_pattern = -1;
+static int hf_lbmc_advertisement_flags_change = -1;
+static int hf_lbmc_advertisement_flags_ctxinst = -1;
+static int hf_lbmc_advertisement_hop_count = -1;
+static int hf_lbmc_advertisement_ad_flags = -1;
+static int hf_lbmc_advertisement_ad_flags_lj = -1;
+static int hf_lbmc_advertisement_ad_flags_ume = -1;
+static int hf_lbmc_advertisement_ad_flags_acktosrc = -1;
+static int hf_lbmc_advertisement_ad_flags_queue = -1;
+static int hf_lbmc_advertisement_ad_flags_ulb = -1;
+static int hf_lbmc_advertisement_cost = -1;
+static int hf_lbmc_advertisement_transport_idx = -1;
+static int hf_lbmc_advertisement_topic_idx = -1;
+static int hf_lbmc_advertisement_low_seqno = -1;
+static int hf_lbmc_advertisement_high_seqno = -1;
+static int hf_lbmc_advertisement_domain_id = -1;
+static int hf_lbmc_advertisement_pat_idx = -1;
+static int hf_lbmc_advertisement_ctxinst = -1;
+static int hf_lbmc_ume_storename = -1;
+static int hf_lbmc_ume_storename_next_hdr = -1;
+static int hf_lbmc_ume_storename_hdr_len = -1;
+static int hf_lbmc_ume_storename_flags = -1;
+static int hf_lbmc_ume_storename_flags_ignore = -1;
+static int hf_lbmc_ume_storename_store = -1;
+static int hf_lbmc_umq_ulb_rcr = -1;
+static int hf_lbmc_umq_ulb_rcr_next_hdr = -1;
+static int hf_lbmc_umq_ulb_rcr_hdr_len = -1;
+static int hf_lbmc_umq_ulb_rcr_flags = -1;
+static int hf_lbmc_umq_ulb_rcr_flags_ignore = -1;
+static int hf_lbmc_umq_ulb_rcr_flags_r_flag = -1;
+static int hf_lbmc_umq_ulb_rcr_flags_d_flag = -1;
+static int hf_lbmc_umq_ulb_rcr_flags_eoi_flag = -1;
+static int hf_lbmc_umq_ulb_rcr_flags_boi_flag = -1;
+static int hf_lbmc_umq_ulb_rcr_queue_id = -1;
+static int hf_lbmc_umq_ulb_rcr_ulb_src_id = -1;
+static int hf_lbmc_umq_ulb_rcr_msgid_regid = -1;
+static int hf_lbmc_umq_ulb_rcr_msgid_stamp = -1;
+static int hf_lbmc_umq_ulb_rcr_topic_tsp = -1;
+static int hf_lbmc_umq_ulb_rcr_assign_id = -1;
+static int hf_lbmc_umq_ulb_rcr_appset_idx = -1;
+static int hf_lbmc_umq_ulb_rcr_num_ras = -1;
+static int hf_lbmc_umq_lf = -1;
+static int hf_lbmc_umq_lf_next_hdr = -1;
+static int hf_lbmc_umq_lf_hdr_len = -1;
+static int hf_lbmc_umq_lf_flags = -1;
+static int hf_lbmc_umq_lf_flags_ignore = -1;
+static int hf_lbmc_umq_lf_type = -1;
+static int hf_lbmc_umq_lf_num_srcs = -1;
+static int hf_lbmc_umq_lf_lf = -1;
+static int hf_lbmc_ctxinfo = -1;
+static int hf_lbmc_ctxinfo_next_hdr = -1;
+static int hf_lbmc_ctxinfo_hdr_len = -1;
+static int hf_lbmc_ctxinfo_flags = -1;
+static int hf_lbmc_ctxinfo_flags_ignore = -1;
+static int hf_lbmc_ctxinfo_flags_query = -1;
+static int hf_lbmc_ctxinfo_flags_addr = -1;
+static int hf_lbmc_ctxinfo_flags_ctxinst = -1;
+static int hf_lbmc_ctxinfo_flags_name = -1;
+static int hf_lbmc_ctxinfo_flags_tnwgsrc = -1;
+static int hf_lbmc_ctxinfo_flags_tnwgrcv = -1;
+static int hf_lbmc_ctxinfo_flags_proxy = -1;
+static int hf_lbmc_ctxinfo_reserved = -1;
+static int hf_lbmc_ctxinfo_hop_count = -1;
+static int hf_lbmc_ctxinfo_port = -1;
+static int hf_lbmc_ctxinfo_addr = -1;
+static int hf_lbmc_ctxinfo_domain_id = -1;
+static int hf_lbmc_ctxinfo_ctxinst = -1;
+static int hf_lbmc_ctxinfo_name = -1;
+static int hf_lbmc_ume_pser = -1;
+static int hf_lbmc_ume_pser_next_hdr = -1;
+static int hf_lbmc_ume_pser_hdr_len = -1;
+static int hf_lbmc_ume_pser_flags = -1;
+static int hf_lbmc_ume_pser_flags_ignore = -1;
+static int hf_lbmc_ume_pser_flags_source_ctxinst = -1;
+static int hf_lbmc_ume_pser_flags_store_ctxinst = -1;
+static int hf_lbmc_ume_pser_flags_reelect = -1;
+static int hf_lbmc_ume_pser_source_ip = -1;
+static int hf_lbmc_ume_pser_store_ip = -1;
+static int hf_lbmc_ume_pser_transport_idx = -1;
+static int hf_lbmc_ume_pser_topic_idx = -1;
+static int hf_lbmc_ume_pser_source_port = -1;
+static int hf_lbmc_ume_pser_store_port = -1;
+static int hf_lbmc_ume_pser_source_ctxinst = -1;
+static int hf_lbmc_ume_pser_store_ctxinst = -1;
+static int hf_lbmc_domain = -1;
+static int hf_lbmc_domain_next_hdr = -1;
+static int hf_lbmc_domain_hdr_len = -1;
+static int hf_lbmc_domain_flags = -1;
+static int hf_lbmc_domain_flags_ignore = -1;
+static int hf_lbmc_domain_flags_active = -1;
+static int hf_lbmc_domain_domain = -1;
+static int hf_lbmc_tnwg_capabilities = -1;
+static int hf_lbmc_tnwg_capabilities_next_hdr = -1;
+static int hf_lbmc_tnwg_capabilities_hdr_len = -1;
+static int hf_lbmc_tnwg_capabilities_flags = -1;
+static int hf_lbmc_tnwg_capabilities_flags_ignore = -1;
+static int hf_lbmc_tnwg_capabilities_flags_version = -1;
+static int hf_lbmc_tnwg_capabilities_capabilities1 = -1;
+static int hf_lbmc_tnwg_capabilities_capabilities1_ume = -1;
+static int hf_lbmc_tnwg_capabilities_capabilities1_umq = -1;
+static int hf_lbmc_tnwg_capabilities_capabilities2 = -1;
+static int hf_lbmc_tnwg_capabilities_capabilities3 = -1;
+static int hf_lbmc_tnwg_capabilities_capabilities3_pcre = -1;
+static int hf_lbmc_tnwg_capabilities_capabilities3_regex = -1;
+static int hf_lbmc_tnwg_capabilities_capabilities4 = -1;
+static int hf_lbmc_patidx = -1;
+static int hf_lbmc_patidx_next_hdr = -1;
+static int hf_lbmc_patidx_hdr_len = -1;
+static int hf_lbmc_patidx_flags = -1;
+static int hf_lbmc_patidx_flags_ignore = -1;
+static int hf_lbmc_patidx_patidx = -1;
+static int hf_lbmc_ume_client_lifetime = -1;
+static int hf_lbmc_ume_client_lifetime_next_hdr = -1;
+static int hf_lbmc_ume_client_lifetime_hdr_len = -1;
+static int hf_lbmc_ume_client_lifetime_flags = -1;
+static int hf_lbmc_ume_client_lifetime_flags_ignore = -1;
+static int hf_lbmc_ume_client_lifetime_activity_tmo = -1;
+static int hf_lbmc_ume_client_lifetime_lifetime = -1;
+static int hf_lbmc_ume_client_lifetime_ttl = -1;
+static int hf_lbmc_ume_sid = -1;
+static int hf_lbmc_ume_sid_next_hdr = -1;
+static int hf_lbmc_ume_sid_hdr_len = -1;
+static int hf_lbmc_ume_sid_flags = -1;
+static int hf_lbmc_ume_sid_flags_ignore = -1;
+static int hf_lbmc_ume_sid_sid = -1;
+static int hf_lbmc_umq_idx_cmd = -1;
+static int hf_lbmc_umq_idx_cmd_next_hdr = -1;
+static int hf_lbmc_umq_idx_cmd_hdr_len = -1;
+static int hf_lbmc_umq_idx_cmd_flags = -1;
+static int hf_lbmc_umq_idx_cmd_flags_ignore = -1;
+static int hf_lbmc_umq_idx_cmd_cmd_type = -1;
+static int hf_lbmc_umq_idx_cmd_queue_id = -1;
+static int hf_lbmc_umq_idx_cmd_cmd_id = -1;
+static int hf_lbmc_umq_idx_cmd_inst_idx = -1;
+static int hf_lbmc_umq_idx_cmd_regid = -1;
+static int hf_lbmc_umq_idx_cmd_stop_assign = -1;
+static int hf_lbmc_umq_idx_cmd_stop_assign_rcr_idx = -1;
+static int hf_lbmc_umq_idx_cmd_stop_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_start_assign = -1;
+static int hf_lbmc_umq_idx_cmd_start_assign_rcr_idx = -1;
+static int hf_lbmc_umq_idx_cmd_start_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_release_assign = -1;
+static int hf_lbmc_umq_idx_cmd_release_assign_rcr_idx = -1;
+static int hf_lbmc_umq_idx_cmd_release_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_release_assign_flags = -1;
+static int hf_lbmc_umq_idx_cmd_release_assign_flags_numeric = -1;
+static int hf_lbmc_umq_idx_cmd_release_assign_index_len = -1;
+static int hf_lbmc_umq_idx_cmd_release_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_release_assign_numeric_index = -1;
+static int hf_lbmc_umq_idx_cmd_release_assign_string_index = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_stop_assign = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_stop_assign_src_id = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_stop_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_stop_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_stop_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_start_assign = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_start_assign_src_id = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_start_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_start_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_start_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign_src_id = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign_flags = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign_flags_numeric = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign_index_len = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign_numeric_index = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_release_assign_string_index = -1;
+static int hf_lbmc_umq_idx_cmd_reserve_assign = -1;
+static int hf_lbmc_umq_idx_cmd_reserve_assign_rcr_idx = -1;
+static int hf_lbmc_umq_idx_cmd_reserve_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_reserve_assign_flags = -1;
+static int hf_lbmc_umq_idx_cmd_reserve_assign_flags_numeric = -1;
+static int hf_lbmc_umq_idx_cmd_reserve_assign_index_len = -1;
+static int hf_lbmc_umq_idx_cmd_reserve_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_reserve_assign_numeric_index = -1;
+static int hf_lbmc_umq_idx_cmd_reserve_assign_string_index = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign_src_id = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign_flags = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign_flags_numeric = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign_index_len = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign_numeric_index = -1;
+static int hf_lbmc_umq_idx_cmd_ulb_reserve_assign_string_index = -1;
+static int hf_lbmc_umq_idx_cmd_resp = -1;
+static int hf_lbmc_umq_idx_cmd_resp_next_hdr = -1;
+static int hf_lbmc_umq_idx_cmd_resp_hdr_len = -1;
+static int hf_lbmc_umq_idx_cmd_resp_flags = -1;
+static int hf_lbmc_umq_idx_cmd_resp_flags_ignore = -1;
+static int hf_lbmc_umq_idx_cmd_resp_flags_ulb = -1;
+static int hf_lbmc_umq_idx_cmd_resp_resp_type = -1;
+static int hf_lbmc_umq_idx_cmd_resp_queue_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_cmd_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_inst_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_regid = -1;
+static int hf_lbmc_umq_idx_cmd_resp_err = -1;
+static int hf_lbmc_umq_idx_cmd_resp_err_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_resp_err_code = -1;
+static int hf_lbmc_umq_idx_cmd_resp_err_error_string = -1;
+static int hf_lbmc_umq_idx_cmd_resp_stop_assign = -1;
+static int hf_lbmc_umq_idx_cmd_resp_stop_assign_rcr_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_stop_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_start_assign = -1;
+static int hf_lbmc_umq_idx_cmd_resp_start_assign_rcr_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_start_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_start_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_start_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_resp_release_assign = -1;
+static int hf_lbmc_umq_idx_cmd_resp_release_assign_rcr_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_release_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_release_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_release_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_src_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_start_assign = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_src_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_release_assign = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_src_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign_rcr_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign_flags = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign_flags_numeric = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign_index_len = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign_numeric_index = -1;
+static int hf_lbmc_umq_idx_cmd_resp_reserve_assign_string_index = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_src_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_assign_id = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_flags = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_flags_numeric = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_appset_idx = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_index_len = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_reserved = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_numeric_index = -1;
+static int hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_string_index = -1;
+static int hf_lbmc_odomain = -1;
+static int hf_lbmc_odomain_next_hdr = -1;
+static int hf_lbmc_odomain_hdr_len = -1;
+static int hf_lbmc_odomain_flags = -1;
+static int hf_lbmc_odomain_flags_ignore = -1;
+static int hf_lbmc_odomain_domain = -1;
+static int hf_lbmc_stream = -1;
+static int hf_lbmc_stream_next_hdr = -1;
+static int hf_lbmc_stream_hdr_len = -1;
+static int hf_lbmc_stream_flags = -1;
+static int hf_lbmc_stream_flags_ignore = -1;
+static int hf_lbmc_stream_stream_id = -1;
+static int hf_lbmc_stream_sqn = -1;
+static int hf_lbmc_stream_ctxinst = -1;
+static int hf_lbmc_topic_md_interest = -1;
+static int hf_lbmc_topic_md_interest_next_hdr = -1;
+static int hf_lbmc_topic_md_interest_hdr_len = -1;
+static int hf_lbmc_topic_md_interest_flags = -1;
+static int hf_lbmc_topic_md_interest_flags_ignore = -1;
+static int hf_lbmc_topic_md_interest_flags_cancel = -1;
+static int hf_lbmc_topic_md_interest_flags_refresh = -1;
+static int hf_lbmc_topic_md_interest_domain_count = -1;
+static int hf_lbmc_topic_md_interest_res1 = -1;
+static int hf_lbmc_topic_md_interest_domain_id = -1;
+static int hf_lbmc_pattern_md_interest = -1;
+static int hf_lbmc_pattern_md_interest_next_hdr = -1;
+static int hf_lbmc_pattern_md_interest_hdr_len = -1;
+static int hf_lbmc_pattern_md_interest_flags = -1;
+static int hf_lbmc_pattern_md_interest_flags_ignore = -1;
+static int hf_lbmc_pattern_md_interest_flags_cancel = -1;
+static int hf_lbmc_pattern_md_interest_flags_refresh = -1;
+static int hf_lbmc_pattern_md_interest_type = -1;
+static int hf_lbmc_pattern_md_interest_domain_count = -1;
+static int hf_lbmc_pattern_md_interest_res1 = -1;
+static int hf_lbmc_pattern_md_interest_index = -1;
+static int hf_lbmc_pattern_md_interest_domain_id = -1;
+static int hf_lbmc_lji_req = -1;
+static int hf_lbmc_lji_req_next_hdr = -1;
+static int hf_lbmc_lji_req_hdr_len = -1;
+static int hf_lbmc_lji_req_flags = -1;
+static int hf_lbmc_lji_req_flags_ignore = -1;
+static int hf_lbmc_lji_req_flags_l_flag = -1;
+static int hf_lbmc_lji_req_flags_m_flag = -1;
+static int hf_lbmc_lji_req_flags_o_flag = -1;
+static int hf_lbmc_lji_req_request_idx = -1;
+static int hf_lbmc_lji_req_transport_idx = -1;
+static int hf_lbmc_lji_req_topic_idx = -1;
+static int hf_lbmc_lji_req_req_ip = -1;
+static int hf_lbmc_lji_req_req_port = -1;
+static int hf_lbmc_lji_req_res = -1;
+static int hf_lbmc_lji_req_tx_low_sqn = -1;
+static int hf_lbmc_lji_req_rx_req_max = -1;
+static int hf_lbmc_lji_req_rx_req_outstanding_max = -1;
+static int hf_lbmc_tnwg_ka = -1;
+static int hf_lbmc_tnwg_ka_next_hdr = -1;
+static int hf_lbmc_tnwg_ka_hdr_len = -1;
+static int hf_lbmc_tnwg_ka_flags = -1;
+static int hf_lbmc_tnwg_ka_flags_ignore = -1;
+static int hf_lbmc_tnwg_ka_flags_q_flag = -1;
+static int hf_lbmc_tnwg_ka_flags_r_flag = -1;
+static int hf_lbmc_tnwg_ka_index = -1;
+static int hf_lbmc_tnwg_ka_ts_seconds = -1;
+static int hf_lbmc_tnwg_ka_ts_microseconds = -1;
+static int hf_lbmc_tnwg_ka_reserved_1 = -1;
+static int hf_lbmc_tnwg_ka_reserved_2 = -1;
+static int hf_lbmc_tnwg_ka_reserved_3 = -1;
+static int hf_lbmc_tnwg_ka_reserved_4 = -1;
+static int hf_lbmc_tnwg_ka_reserved_5 = -1;
+static int hf_lbmc_tnwg_ka_reserved_6 = -1;
+static int hf_lbmc_ume_receiver_keepalive = -1;
+static int hf_lbmc_ume_receiver_keepalive_next_hdr = -1;
+static int hf_lbmc_ume_receiver_keepalive_hdr_len = -1;
+static int hf_lbmc_ume_receiver_keepalive_flags = -1;
+static int hf_lbmc_ume_receiver_keepalive_flags_ignore = -1;
+static int hf_lbmc_ume_receiver_keepalive_rcv_regid = -1;
+static int hf_lbmc_ume_receiver_keepalive_session_id = -1;
+static int hf_lbmc_ume_receiver_keepalive_ctxinst = -1;
+static int hf_lbmc_umq_cmd = -1;
+static int hf_lbmc_umq_cmd_next_hdr = -1;
+static int hf_lbmc_umq_cmd_hdr_len = -1;
+static int hf_lbmc_umq_cmd_flags = -1;
+static int hf_lbmc_umq_cmd_flags_ignore = -1;
+static int hf_lbmc_umq_cmd_cmd_type = -1;
+static int hf_lbmc_umq_cmd_queue_id = -1;
+static int hf_lbmc_umq_cmd_cmd_id = -1;
+static int hf_lbmc_umq_cmd_inst_idx = -1;
+static int hf_lbmc_umq_cmd_regid = -1;
+static int hf_lbmc_umq_cmd_topic_list = -1;
+static int hf_lbmc_umq_cmd_topic_list_serial_num = -1;
+static int hf_lbmc_umq_cmd_msg_retrieve = -1;
+static int hf_lbmc_umq_cmd_msg_retrieve_rcr_idx = -1;
+static int hf_lbmc_umq_cmd_msg_retrieve_assign_id = -1;
+static int hf_lbmc_umq_cmd_msg_retrieve_info_only = -1;
+static int hf_lbmc_umq_cmd_msg_retrieve_num_msgids = -1;
+static int hf_lbmc_umq_cmd_msg_retrieve_flags = -1;
+static int hf_lbmc_umq_cmd_msg_retrieve_entry = -1;
+static int hf_lbmc_umq_cmd_msg_retrieve_entry_regid = -1;
+static int hf_lbmc_umq_cmd_msg_retrieve_entry_stamp = -1;
+static int hf_lbmc_umq_cmd_msg_list = -1;
+static int hf_lbmc_umq_cmd_msg_list_rcr_idx = -1;
+static int hf_lbmc_umq_cmd_msg_list_assign_id = -1;
+static int hf_lbmc_umq_cmd_resp = -1;
+static int hf_lbmc_umq_cmd_resp_next_hdr = -1;
+static int hf_lbmc_umq_cmd_resp_hdr_len = -1;
+static int hf_lbmc_umq_cmd_resp_flags = -1;
+static int hf_lbmc_umq_cmd_resp_flags_ignore = -1;
+static int hf_lbmc_umq_cmd_resp_resp_type = -1;
+static int hf_lbmc_umq_cmd_resp_queue_id = -1;
+static int hf_lbmc_umq_cmd_resp_cmd_id = -1;
+static int hf_lbmc_umq_cmd_resp_inst_idx = -1;
+static int hf_lbmc_umq_cmd_resp_regid = -1;
+static int hf_lbmc_umq_cmd_resp_msg_retrieve = -1;
+static int hf_lbmc_umq_cmd_resp_msg_retrieve_rcr_idx = -1;
+static int hf_lbmc_umq_cmd_resp_msg_retrieve_assign_id = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_num_msgs = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_flags = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_reserved = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_regid = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_stamp = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_assign_id = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_num_ras = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_status = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_reserved = -1;
+static int hf_lbmc_umq_cmd_resp_msg_list = -1;
+static int hf_lbmc_umq_cmd_resp_msg_list_rcr_idx = -1;
+static int hf_lbmc_umq_cmd_resp_msg_list_assign_id = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_list = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_list_num_msgs = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_list_entry = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_list_entry_regid = -1;
+static int hf_lbmc_umq_cmd_resp_xmsg_list_entry_stamp = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_num_topics = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_rcr_idx = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_num_appsets = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_topic_len = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_reserved = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_topic = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_num_receiver_type_ids = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_appset_idx = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_appset_name_len = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_reserved = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_name = -1;
+static int hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_receiver_type_id = -1;
+static int hf_lbmc_umq_cmd_resp_err = -1;
+static int hf_lbmc_umq_cmd_resp_err_reserved = -1;
+static int hf_lbmc_umq_cmd_resp_err_code = -1;
+static int hf_lbmc_umq_cmd_resp_err_errmsg = -1;
+static int hf_lbmc_sri_req = -1;
+static int hf_lbmc_sri_req_next_hdr = -1;
+static int hf_lbmc_sri_req_hdr_len = -1;
+static int hf_lbmc_sri_req_flags = -1;
+static int hf_lbmc_sri_req_flags_ignore = -1;
+static int hf_lbmc_sri_req_transport_idx = -1;
+static int hf_lbmc_sri_req_topic_idx = -1;
+static int hf_lbmc_ume_store_domain = -1;
+static int hf_lbmc_ume_store_domain_next_hdr = -1;
+static int hf_lbmc_ume_store_domain_hdr_len = -1;
+static int hf_lbmc_ume_store_domain_flags = -1;
+static int hf_lbmc_ume_store_domain_flags_ignore = -1;
+static int hf_lbmc_ume_store_domain_domain = -1;
+static int hf_lbmc_sri = -1;
+static int hf_lbmc_sri_next_hdr = -1;
+static int hf_lbmc_sri_hdr_len = -1;
+static int hf_lbmc_sri_flags = -1;
+static int hf_lbmc_sri_flags_ignore = -1;
+static int hf_lbmc_sri_flags_acktosrc = -1;
+static int hf_lbmc_sri_flags_initial_sqn_known = -1;
+static int hf_lbmc_sri_version = -1;
+static int hf_lbmc_sri_low_sqn = -1;
+static int hf_lbmc_sri_high_sqn = -1;
+static int hf_lbmc_route_info = -1;
+static int hf_lbmc_route_info_next_hdr = -1;
+static int hf_lbmc_route_info_hdr_len = -1;
+static int hf_lbmc_route_info_flags = -1;
+static int hf_lbmc_route_info_flags_ignore = -1;
+static int hf_lbmc_route_info_gateway_version = -1;
+static int hf_lbmc_route_info_configuration_signature = -1;
+static int hf_lbmc_route_info_node_id = -1;
+static int hf_lbmc_route_info_topology = -1;
+static int hf_lbmc_route_info_vers = -1;
+static int hf_lbmc_route_info_sqn = -1;
+static int hf_lbmc_route_info_ttl = -1;
+static int hf_lbmc_route_info_reserved1 = -1;
+static int hf_lbmc_route_info_reserved2 = -1;
+static int hf_lbmc_route_info_neighbor = -1;
+static int hf_lbmc_route_info_neighbor_next_hdr = -1;
+static int hf_lbmc_route_info_neighbor_hdr_len = -1;
+static int hf_lbmc_route_info_neighbor_flags = -1;
+static int hf_lbmc_route_info_neighbor_flags_ignore = -1;
+static int hf_lbmc_route_info_neighbor_node_id = -1;
+static int hf_lbmc_route_info_neighbor_ingress_cost = -1;
+static int hf_lbmc_route_info_neighbor_egress_cost = -1;
+static int hf_lbmc_gateway_name = -1;
+static int hf_lbmc_gateway_name_next_hdr = -1;
+static int hf_lbmc_gateway_name_hdr_len = -1;
+static int hf_lbmc_gateway_name_flags = -1;
+static int hf_lbmc_gateway_name_flags_ignore = -1;
+static int hf_lbmc_gateway_name_gateway_name = -1;
+static int hf_lbmc_auth_request = -1;
+static int hf_lbmc_auth_request_next_hdr = -1;
+static int hf_lbmc_auth_request_hdr_len = -1;
+static int hf_lbmc_auth_request_flags = -1;
+static int hf_lbmc_auth_request_flags_ignore = -1;
+static int hf_lbmc_auth_request_opid = -1;
+static int hf_lbmc_auth_request_user_len = -1;
+static int hf_lbmc_auth_request_user_name = -1;
+static int hf_lbmc_auth_challenge = -1;
+static int hf_lbmc_auth_challenge_next_hdr = -1;
+static int hf_lbmc_auth_challenge_hdr_len = -1;
+static int hf_lbmc_auth_challenge_flags = -1;
+static int hf_lbmc_auth_challenge_flags_ignore = -1;
+static int hf_lbmc_auth_challenge_opid = -1;
+static int hf_lbmc_auth_challenge_mod_len = -1;
+static int hf_lbmc_auth_challenge_gen_len = -1;
+static int hf_lbmc_auth_challenge_salt_len = -1;
+static int hf_lbmc_auth_challenge_pubkey_len = -1;
+static int hf_lbmc_auth_challenge_mod = -1;
+static int hf_lbmc_auth_challenge_gen = -1;
+static int hf_lbmc_auth_challenge_salt = -1;
+static int hf_lbmc_auth_challenge_pubkey = -1;
+static int hf_lbmc_auth_challenge_rsp = -1;
+static int hf_lbmc_auth_challenge_rsp_next_hdr = -1;
+static int hf_lbmc_auth_challenge_rsp_hdr_len = -1;
+static int hf_lbmc_auth_challenge_rsp_flags = -1;
+static int hf_lbmc_auth_challenge_rsp_flags_ignore = -1;
+static int hf_lbmc_auth_challenge_rsp_opid = -1;
+static int hf_lbmc_auth_challenge_rsp_pubkey_len = -1;
+static int hf_lbmc_auth_challenge_rsp_evidence_len = -1;
+static int hf_lbmc_auth_challenge_rsp_pubkey = -1;
+static int hf_lbmc_auth_challenge_rsp_evidence = -1;
+static int hf_lbmc_auth_result = -1;
+static int hf_lbmc_auth_result_next_hdr = -1;
+static int hf_lbmc_auth_result_hdr_len = -1;
+static int hf_lbmc_auth_result_flags = -1;
+static int hf_lbmc_auth_result_flags_ignore = -1;
+static int hf_lbmc_auth_result_opid = -1;
+static int hf_lbmc_auth_result_result = -1;
+static int hf_lbmc_auth_unknown = -1;
+static int hf_lbmc_auth_unknown_next_hdr = -1;
+static int hf_lbmc_auth_unknown_hdr_len = -1;
+static int hf_lbmc_auth_unknown_flags = -1;
+static int hf_lbmc_auth_unknown_opid = -1;
+static int hf_lbmc_auth_unknown_data = -1;
+static int hf_lbmc_hmac = -1;
+static int hf_lbmc_hmac_next_hdr = -1;
+static int hf_lbmc_hmac_hdr_len = -1;
+static int hf_lbmc_hmac_flags = -1;
+static int hf_lbmc_hmac_flags_ignore = -1;
+static int hf_lbmc_hmac_padding = -1;
+static int hf_lbmc_hmac_data = -1;
+static int hf_lbmc_umq_sid = -1;
+static int hf_lbmc_umq_sid_next_hdr = -1;
+static int hf_lbmc_umq_sid_hdr_len = -1;
+static int hf_lbmc_umq_sid_flags = -1;
+static int hf_lbmc_umq_sid_flags_ignore = -1;
+static int hf_lbmc_umq_sid_key = -1;
+static int hf_lbmc_umq_sid_sid = -1;
+static int hf_lbmc_destination = -1;
+static int hf_lbmc_destination_next_hdr = -1;
+static int hf_lbmc_destination_hdr_len = -1;
+static int hf_lbmc_destination_flags = -1;
+static int hf_lbmc_destination_flags_ignore = -1;
+static int hf_lbmc_destination_domain_id = -1;
+static int hf_lbmc_destination_ipaddr = -1;
+static int hf_lbmc_destination_port = -1;
+static int hf_lbmc_destination_hops_taken = -1;
+static int hf_lbmc_destination_orig_domain_id = -1;
+static int hf_lbmc_destination_orig_ipaddr = -1;
+static int hf_lbmc_destination_orig_port = -1;
+static int hf_lbmc_destination_reserved = -1;
+static int hf_lbmc_topic_idx = -1;
+static int hf_lbmc_topic_idx_next_hdr = -1;
+static int hf_lbmc_topic_idx_hdr_len = -1;
+static int hf_lbmc_topic_idx_flags = -1;
+static int hf_lbmc_topic_idx_flags_ignore = -1;
+static int hf_lbmc_topic_idx_tidx = -1;
+static int hf_lbmc_topic_source = -1;
+static int hf_lbmc_topic_source_next_hdr = -1;
+static int hf_lbmc_topic_source_hdr_len = -1;
+static int hf_lbmc_topic_source_flags = -1;
+static int hf_lbmc_topic_source_flags_ignore = -1;
+static int hf_lbmc_topic_source_flags_eos = -1;
+static int hf_lbmc_topic_source_domain_id = -1;
+static int hf_lbmc_topic_source_exfunc = -1;
+static int hf_lbmc_topic_source_exfunc_next_hdr = -1;
+static int hf_lbmc_topic_source_exfunc_hdr_len = -1;
+static int hf_lbmc_topic_source_exfunc_flags = -1;
+static int hf_lbmc_topic_source_exfunc_flags_ignore = -1;
+static int hf_lbmc_topic_source_exfunc_src_ip = -1;
+static int hf_lbmc_topic_source_exfunc_src_port = -1;
+static int hf_lbmc_topic_source_exfunc_unused = -1;
+static int hf_lbmc_topic_source_exfunc_functionality_flags = -1;
+static int hf_lbmc_topic_source_exfunc_functionality_flags_ulb = -1;
+static int hf_lbmc_topic_source_exfunc_functionality_flags_umq = -1;
+static int hf_lbmc_topic_source_exfunc_functionality_flags_ume = -1;
+static int hf_lbmc_topic_source_exfunc_functionality_flags_lj = -1;
+static int hf_lbmc_ume_store_ext = -1;
+static int hf_lbmc_ume_store_ext_next_hdr = -1;
+static int hf_lbmc_ume_store_ext_hdr_len = -1;
+static int hf_lbmc_ume_store_ext_flags = -1;
+static int hf_lbmc_ume_store_ext_flags_ignore = -1;
+static int hf_lbmc_ume_store_ext_grp_idx = -1;
+static int hf_lbmc_ume_store_ext_store_tcp_port = -1;
+static int hf_lbmc_ume_store_ext_store_idx = -1;
+static int hf_lbmc_ume_store_ext_store_ip_addr = -1;
+static int hf_lbmc_ume_store_ext_src_reg_id = -1;
+static int hf_lbmc_ume_store_ext_domain_id = -1;
+static int hf_lbmc_ume_store_ext_version = -1;
+static int hf_lbmc_ume_psrc_election_token = -1;
+static int hf_lbmc_ume_psrc_election_token_next_hdr = -1;
+static int hf_lbmc_ume_psrc_election_token_hdr_len = -1;
+static int hf_lbmc_ume_psrc_election_token_flags = -1;
+static int hf_lbmc_ume_psrc_election_token_flags_ignore = -1;
+static int hf_lbmc_ume_psrc_election_token_store_index = -1;
+static int hf_lbmc_ume_psrc_election_token_token = -1;
+static int hf_lbmc_tcp_sid = -1;
+static int hf_lbmc_tcp_sid_next_hdr = -1;
+static int hf_lbmc_tcp_sid_hdr_len = -1;
+static int hf_lbmc_tcp_sid_flags = -1;
+static int hf_lbmc_tcp_sid_flags_ignore = -1;
+static int hf_lbmc_tcp_sid_sid = -1;
+static int hf_lbmc_extopt = -1;
+static int hf_lbmc_extopt_next_hdr = -1;
+static int hf_lbmc_extopt_hdr_len = -1;
+static int hf_lbmc_extopt_flags = -1;
+static int hf_lbmc_extopt_flags_ignore = -1;
+static int hf_lbmc_extopt_flags_ignore_subtype = -1;
+static int hf_lbmc_extopt_flags_more_fragments = -1;
+static int hf_lbmc_extopt_id = -1;
+static int hf_lbmc_extopt_subtype = -1;
+static int hf_lbmc_extopt_fragment_offset = -1;
+static int hf_lbmc_extopt_data = -1;
+static int hf_lbmc_extopt_cfgopt = -1;
+static int hf_lbmc_extopt_cfgopt_scope = -1;
+static int hf_lbmc_extopt_cfgopt_parent = -1;
+static int hf_lbmc_extopt_cfgopt_name = -1;
+static int hf_lbmc_extopt_cfgopt_value = -1;
+static int hf_lbmc_extopt_msgsel = -1;
+static int hf_lbmc_extopt_reassembled_data = -1;
+static int hf_lbmc_extopt_reassembled_data_subtype = -1;
+static int hf_lbmc_extopt_reassembled_data_len = -1;
+static int hf_lbmc_extopt_reassembled_data_data = -1;
+static int hf_lbmc_extopt_reassembled_data_msgsel = -1;
+static int hf_lbm_msg_properties = -1;
+static int hf_lbm_msg_properties_data = -1;
+static int hf_lbm_msg_properties_data_magic = -1;
+static int hf_lbm_msg_properties_data_num_fields = -1;
+static int hf_lbm_msg_properties_data_vertype = -1;
+static int hf_lbm_msg_properties_data_vertype_version = -1;
+static int hf_lbm_msg_properties_data_vertype_type = -1;
+static int hf_lbm_msg_properties_data_res = -1;
+static int hf_lbm_msg_properties_hdr = -1;
+static int hf_lbm_msg_properties_hdr_key_offset = -1;
+static int hf_lbm_msg_properties_hdr_value_offset = -1;
+static int hf_lbm_msg_properties_hdr_hash = -1;
+static int hf_lbm_msg_properties_hdr_type = -1;
+static int hf_lbm_msg_properties_hdr_key = -1;
+static int hf_lbm_msg_properties_hdr_boolean_value = -1;
+static int hf_lbm_msg_properties_hdr_byte_value = -1;
+static int hf_lbm_msg_properties_hdr_short_value = -1;
+static int hf_lbm_msg_properties_hdr_int_value = -1;
+static int hf_lbm_msg_properties_hdr_float_value = -1;
+static int hf_lbm_msg_properties_hdr_long_value = -1;
+static int hf_lbm_msg_properties_hdr_double_value = -1;
+static int hf_lbm_msg_properties_hdr_string_value = -1;
+static int hf_lbm_msg_properties_hdr_unknown_value = -1;
+static int hf_lbmc_unhandled = -1;
+static int hf_lbmc_unhandled_next_hdr = -1;
+static int hf_lbmc_unhandled_hdr_len = -1;
+static int hf_lbmc_unhandled_data = -1;
+static int hf_lbm_stream = -1;
+static int hf_lbm_stream_stream_id = -1;
+static int hf_lbm_stream_substream_id = -1;
+static int hf_lbmc_reassembly = -1;
+static int hf_lbmc_reassembly_fragment = -1;
+static int hf_reassembly_frame = -1;
+
+/* Protocol trees */
+static gint ett_lbmc = -1;
+static gint ett_lbmc_ver_type = -1;
+static gint ett_lbmc_frag = -1;
+static gint ett_lbmc_frag_flags = -1;
+static gint ett_lbmc_batch = -1;
+static gint ett_lbmc_batch_flags = -1;
+static gint ett_lbmc_tcp_request = -1;
+static gint ett_lbmc_tcp_request_flags = -1;
+static gint ett_lbmc_topicname = -1;
+static gint ett_lbmc_topicname_flags = -1;
+static gint ett_lbmc_apphdr = -1;
+static gint ett_lbmc_apphdr_code = -1;
+static gint ett_lbmc_apphdr_chain = -1;
+static gint ett_lbmc_apphdr_chain_element = -1;
+static gint ett_lbmc_apphdr_chain_msgprop = -1;
+static gint ett_lbmc_umq_msgid = -1;
+static gint ett_lbmc_umq_msgid_flags = -1;
+static gint ett_lbmc_umq_sqd_rcv = -1;
+static gint ett_lbmc_umq_sqd_rcv_flags = -1;
+static gint ett_lbmc_umq_resub = -1;
+static gint ett_lbmc_umq_resub_flags = -1;
+static gint ett_lbmc_otid = -1;
+static gint ett_lbmc_otid_flags = -1;
+static gint ett_lbmc_ctxinst = -1;
+static gint ett_lbmc_ctxinst_flags = -1;
+static gint ett_lbmc_ctxinstd = -1;
+static gint ett_lbmc_ctxinstr = -1;
+static gint ett_lbmc_srcidx = -1;
+static gint ett_lbmc_srcidx_flags = -1;
+static gint ett_lbmc_umq_ulb_msg = -1;
+static gint ett_lbmc_umq_ulb_msg_flags = -1;
+static gint ett_lbmc_ssf_init = -1;
+static gint ett_lbmc_ssf_init_flags = -1;
+static gint ett_lbmc_ssf_creq = -1;
+static gint ett_lbmc_ssf_creq_flags = -1;
+static gint ett_lbmc_ume_preg = -1;
+static gint ett_lbmc_ume_preg_flags = -1;
+static gint ett_lbmc_ume_preg_marker = -1;
+static gint ett_lbmc_ume_preg_resp = -1;
+static gint ett_lbmc_ume_preg_resp_code = -1;
+static gint ett_lbmc_ume_preg_resp_marker = -1;
+static gint ett_lbmc_ume_ack = -1;
+static gint ett_lbmc_ume_ack_flags = -1;
+static gint ett_lbmc_ume_rxreq = -1;
+static gint ett_lbmc_ume_rxreq_flags = -1;
+static gint ett_lbmc_ume_keepalive = -1;
+static gint ett_lbmc_ume_keepalive_flags = -1;
+static gint ett_lbmc_ume_storeid = -1;
+static gint ett_lbmc_ume_storeid_store_id = -1;
+static gint ett_lbmc_ume_ranged_ack = -1;
+static gint ett_lbmc_ume_ranged_ack_flags = -1;
+static gint ett_lbmc_ume_ack_id = -1;
+static gint ett_lbmc_ume_ack_id_flags = -1;
+static gint ett_lbmc_ume_capability = -1;
+static gint ett_lbmc_ume_capability_flags = -1;
+static gint ett_lbmc_ume_proxy_src = -1;
+static gint ett_lbmc_ume_proxy_src_flags = -1;
+static gint ett_lbmc_ume_store_group = -1;
+static gint ett_lbmc_ume_store_group_flags = -1;
+static gint ett_lbmc_ume_store = -1;
+static gint ett_lbmc_ume_store_flags = -1;
+static gint ett_lbmc_ume_lj_info = -1;
+static gint ett_lbmc_ume_lj_info_flags = -1;
+static gint ett_lbmc_tsni = -1;
+static gint ett_lbmc_tsni_num_recs = -1;
+static gint ett_lbmc_tsni_rec = -1;
+static gint ett_lbmc_umq_reg = -1;
+static gint ett_lbmc_umq_reg_flags = -1;
+static gint ett_lbmc_umq_reg_reg_ctx = -1;
+static gint ett_lbmc_umq_reg_reg_src = -1;
+static gint ett_lbmc_umq_reg_reg_rcv = -1;
+static gint ett_lbmc_umq_reg_rcv_dereg = -1;
+static gint ett_lbmc_umq_reg_reg_ulb_rcv = -1;
+static gint ett_lbmc_umq_reg_ulb_rcv_dereg = -1;
+static gint ett_lbmc_umq_reg_reg_observer_rcv = -1;
+static gint ett_lbmc_umq_reg_observer_rcv_dereg = -1;
+static gint ett_lbmc_umq_reg_resp = -1;
+static gint ett_lbmc_umq_reg_resp_flags = -1;
+static gint ett_lbmc_umq_reg_resp_reg_ctx = -1;
+static gint ett_lbmc_umq_reg_resp_reg_ctx_ex = -1;
+static gint ett_lbmc_umq_reg_resp_reg_ctx_ex_flags = -1;
+static gint ett_lbmc_umq_reg_resp_err = -1;
+static gint ett_lbmc_umq_reg_resp_reg_src = -1;
+static gint ett_lbmc_umq_reg_resp_reg_rcv = -1;
+static gint ett_lbmc_umq_reg_resp_rcv_dereg = -1;
+static gint ett_lbmc_umq_reg_resp_reg_ulb_rcv = -1;
+static gint ett_lbmc_umq_reg_resp_ulb_rcv_dereg = -1;
+static gint ett_lbmc_umq_reg_resp_reg_observer_rcv = -1;
+static gint ett_lbmc_umq_reg_resp_observer_rcv_dereg = -1;
+static gint ett_lbmc_umq_ack = -1;
+static gint ett_lbmc_umq_ack_msgs = -1;
+static gint ett_lbmc_umq_ack_msgid = -1;
+static gint ett_lbmc_umq_ack_stable = -1;
+static gint ett_lbmc_umq_ack_cr = -1;
+static gint ett_lbmc_umq_ack_ulb_cr = -1;
+static gint ett_lbmc_umq_rcr = -1;
+static gint ett_lbmc_umq_rcr_flags = -1;
+static gint ett_lbmc_umq_ka = -1;
+static gint ett_lbmc_umq_ka_flags = -1;
+static gint ett_lbmc_umq_ka_src = -1;
+static gint ett_lbmc_umq_ka_rcv = -1;
+static gint ett_lbmc_umq_ka_ulb_rcv = -1;
+static gint ett_lbmc_umq_ka_ulb_rcv_resp = -1;
+static gint ett_lbmc_umq_rxreq = -1;
+static gint ett_lbmc_umq_rxreq_flags = -1;
+static gint ett_lbmc_umq_rxreq_regid_resp = -1;
+static gint ett_lbmc_umq_rxreq_addr_resp = -1;
+static gint ett_lbmc_umq_rxreq_mr = -1;
+static gint ett_lbmc_umq_rxreq_ulb_mr = -1;
+static gint ett_lbmc_umq_rxreq_ulb_mr_abort = -1;
+static gint ett_lbmc_umq_rxreq_qrcrr = -1;
+static gint ett_lbmc_umq_rxreq_trcrr = -1;
+static gint ett_lbmc_umq_rxreq_ulb_trcrr = -1;
+static gint ett_lbmc_umq_rxreq_ulb_trcrr_abort = -1;
+static gint ett_lbmc_umq_qmgmt = -1;
+static gint ett_lbmc_umq_resub_req = -1;
+static gint ett_lbmc_umq_resub_req_flags = -1;
+static gint ett_lbmc_umq_resub_resp = -1;
+static gint ett_lbmc_umq_resub_resp_flags = -1;
+static gint ett_lbmc_topic_interest = -1;
+static gint ett_lbmc_topic_interest_flags = -1;
+static gint ett_lbmc_pattern_interest = -1;
+static gint ett_lbmc_pattern_interest_flags = -1;
+static gint ett_lbmc_advertisement = -1;
+static gint ett_lbmc_advertisement_flags = -1;
+static gint ett_lbmc_advertisement_ad_flags = -1;
+static gint ett_lbmc_ume_storename = -1;
+static gint ett_lbmc_ume_storename_flags = -1;
+static gint ett_lbmc_umq_ulb_rcr = -1;
+static gint ett_lbmc_umq_ulb_rcr_flags = -1;
+static gint ett_lbmc_umq_lf = -1;
+static gint ett_lbmc_umq_lf_flags = -1;
+static gint ett_lbmc_ctxinfo = -1;
+static gint ett_lbmc_ctxinfo_flags = -1;
+static gint ett_lbmc_ume_pser = -1;
+static gint ett_lbmc_ume_pser_flags = -1;
+static gint ett_lbmc_domain = -1;
+static gint ett_lbmc_domain_flags = -1;
+static gint ett_lbmc_tnwg_capabilities = -1;
+static gint ett_lbmc_tnwg_capabilities_flags = -1;
+static gint ett_lbmc_tnwg_capabilities_capabilities1 = -1;
+static gint ett_lbmc_tnwg_capabilities_capabilities3 = -1;
+static gint ett_lbmc_patidx = -1;
+static gint ett_lbmc_patidx_flags = -1;
+static gint ett_lbmc_ume_client_lifetime = -1;
+static gint ett_lbmc_ume_client_lifetime_flags = -1;
+static gint ett_lbmc_ume_sid = -1;
+static gint ett_lbmc_ume_sid_flags = -1;
+static gint ett_lbmc_umq_idx_cmd = -1;
+static gint ett_lbmc_umq_idx_cmd_flags = -1;
+static gint ett_lbmc_umq_idx_cmd_stop_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_start_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_release_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_release_assign_flags = -1;
+static gint ett_lbmc_umq_idx_cmd_ulb_stop_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_ulb_start_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_ulb_release_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_ulb_release_assign_flags = -1;
+static gint ett_lbmc_umq_idx_cmd_reserve_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_reserve_assign_flags = -1;
+static gint ett_lbmc_umq_idx_cmd_ulb_reserve_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_ulb_reserve_assign_flags = -1;
+static gint ett_lbmc_umq_idx_cmd_resp = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_flags = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_err = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_stop_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_start_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_release_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_ulb_stop_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_ulb_start_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_ulb_release_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_reserve_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_reserve_assign_flags = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_ulb_reserve_assign = -1;
+static gint ett_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_flags = -1;
+static gint ett_lbmc_odomain = -1;
+static gint ett_lbmc_odomain_flags = -1;
+static gint ett_lbmc_stream = -1;
+static gint ett_lbmc_stream_flags = -1;
+static gint ett_lbmc_topic_md_interest = -1;
+static gint ett_lbmc_topic_md_interest_flags = -1;
+static gint ett_lbmc_pattern_md_interest = -1;
+static gint ett_lbmc_pattern_md_interest_flags = -1;
+static gint ett_lbmc_lji_req = -1;
+static gint ett_lbmc_lji_req_flags = -1;
+static gint ett_lbmc_tnwg_ka = -1;
+static gint ett_lbmc_tnwg_ka_flags = -1;
+static gint ett_lbmc_ume_receiver_keepalive = -1;
+static gint ett_lbmc_ume_receiver_keepalive_flags = -1;
+static gint ett_lbmc_umq_cmd = -1;
+static gint ett_lbmc_umq_cmd_flags = -1;
+static gint ett_lbmc_umq_cmd_topic_list = -1;
+static gint ett_lbmc_umq_cmd_msg_retrieve = -1;
+static gint ett_lbmc_umq_cmd_msg_retrieve_entry = -1;
+static gint ett_lbmc_umq_cmd_msg_list = -1;
+static gint ett_lbmc_umq_cmd_resp = -1;
+static gint ett_lbmc_umq_cmd_resp_flags = -1;
+static gint ett_lbmc_umq_cmd_resp_msg_retrieve = -1;
+static gint ett_lbmc_umq_cmd_resp_xmsg_retrieve = -1;
+static gint ett_lbmc_umq_cmd_resp_xmsg_retrieve_entry = -1;
+static gint ett_lbmc_umq_cmd_resp_msg_list = -1;
+static gint ett_lbmc_umq_cmd_resp_xmsg_list = -1;
+static gint ett_lbmc_umq_cmd_resp_xmsg_list_entry = -1;
+static gint ett_lbmc_umq_cmd_resp_topic_list = -1;
+static gint ett_lbmc_umq_cmd_resp_topic_list_topic_entry = -1;
+static gint ett_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry = -1;
+static gint ett_lbmc_umq_cmd_resp_err = -1;
+static gint ett_lbmc_sri_req = -1;
+static gint ett_lbmc_sri_req_flags = -1;
+static gint ett_lbmc_ume_store_domain = -1;
+static gint ett_lbmc_ume_store_domain_flags = -1;
+static gint ett_lbmc_sri = -1;
+static gint ett_lbmc_sri_flags = -1;
+static gint ett_lbmc_route_info = -1;
+static gint ett_lbmc_route_info_flags = -1;
+static gint ett_lbmc_route_info_neighbor = -1;
+static gint ett_lbmc_route_info_neighbor_flags = -1;
+static gint ett_lbmc_gateway_name = -1;
+static gint ett_lbmc_gateway_name_flags = -1;
+static gint ett_lbmc_auth_request = -1;
+static gint ett_lbmc_auth_request_flags = -1;
+static gint ett_lbmc_auth_challenge = -1;
+static gint ett_lbmc_auth_challenge_flags = -1;
+static gint ett_lbmc_auth_challenge_rsp = -1;
+static gint ett_lbmc_auth_challenge_rsp_flags = -1;
+static gint ett_lbmc_auth_result = -1;
+static gint ett_lbmc_auth_result_flags = -1;
+static gint ett_lbmc_auth_unknown = -1;
+static gint ett_lbmc_hmac = -1;
+static gint ett_lbmc_hmac_flags = -1;
+static gint ett_lbmc_umq_sid = -1;
+static gint ett_lbmc_umq_sid_flags = -1;
+static gint ett_lbmc_destination = -1;
+static gint ett_lbmc_destination_flags = -1;
+static gint ett_lbmc_topic_idx = -1;
+static gint ett_lbmc_topic_idx_flags = -1;
+static gint ett_lbmc_topic_source = -1;
+static gint ett_lbmc_topic_source_flags = -1;
+static gint ett_lbmc_topic_source_exfunc = -1;
+static gint ett_lbmc_topic_source_exfunc_flags = -1;
+static gint ett_lbmc_topic_source_exfunc_functionality_flags = -1;
+static gint ett_lbmc_ume_store_ext = -1;
+static gint ett_lbmc_ume_store_ext_flags = -1;
+static gint ett_lbmc_ume_psrc_election_token = -1;
+static gint ett_lbmc_ume_psrc_election_token_flags = -1;
+static gint ett_lbmc_tcp_sid = -1;
+static gint ett_lbmc_tcp_sid_flags = -1;
+static gint ett_lbmc_extopt = -1;
+static gint ett_lbmc_extopt_flags = -1;
+static gint ett_lbmc_extopt_cfgopt = -1;
+static gint ett_lbmc_extopt_reassembled_data = -1;
+static gint ett_lbmc_extopt_reassembled_data_cfgopt = -1;
+static gint ett_lbm_msg_properties = -1;
+static gint ett_lbm_msg_properties_data = -1;
+static gint ett_lbm_msg_properties_data_vertype = -1;
+static gint ett_lbm_msg_properties_hdr = -1;
+static gint ett_lbmc_unhandled_hdr = -1;
+static gint ett_lbm_stream = -1;
+static gint ett_lbmc_reassembly = -1;
+static gint ett_unknown = -1;
+static gint ett_msg_data = -1;
+static gint ett_msgprop_data = -1;
+
+/* Expert info handles */
+static expert_field ei_lbmc_analysis_length_incorrect = EI_INIT;
+static expert_field ei_lbmc_analysis_zero_length = EI_INIT;
+static expert_field ei_lbmc_analysis_tsni = EI_INIT;
+static expert_field ei_lbmc_analysis_invalid_value = EI_INIT;
+static expert_field ei_lbmc_analysis_no_reassembly = EI_INIT;
+static expert_field ei_lbmc_analysis_invalid_offset = EI_INIT;
+static expert_field ei_lbmc_analysis_missing_reassembly_frame = EI_INIT;
+static expert_field ei_lbmc_analysis_invalid_fragment = EI_INIT;
+
+/* Extended option reassembly structures. */
+#define LBMC_EXTOPT_REASSEMBLED_DATA_MAX_LEN 65536
+typedef struct
+{
+ gboolean reassembly_in_progress;
+ guint16 subtype;
+ int len;
+ gchar data[LBMC_EXTOPT_REASSEMBLED_DATA_MAX_LEN];
+} lbmc_extopt_reassembled_data_t;
+
+/* Stream structures. */
+typedef struct
+{
+ gboolean set;
+ guint32 stream_id;
+ guint32 sqn;
+ gchar ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+} lbmc_stream_info_t;
+
+typedef struct
+{
+ gboolean set;
+ gchar ctxinst[LBM_CONTEXT_INSTANCE_BLOCK_SZ];
+} lbmc_ctxinst_info_t;
+
+typedef struct
+{
+ gboolean set;
+ lbm_uim_stream_destination_t endpoint_a;
+ lbm_uim_stream_destination_t endpoint_b;
+} lbmc_destination_info_t;
+
+/* TCP session ID structures. */
+typedef struct
+{
+ gboolean set;
+ guint32 session_id;
+} lbmc_tcp_sid_info_t;
+
+/*----------------------------------------------------------------------------*/
+/* Message reassembly. */
+/*----------------------------------------------------------------------------*/
+#define LBMC_MESSAGE_KEY_ELEMENT_COUNT 5
+#define LBMC_MESSAGE_KEY_ELEMENT_CHANNEL_HIGH 0
+#define LBMC_MESSAGE_KEY_ELEMENT_CHANNEL_LOW 1
+#define LBMC_MESSAGE_KEY_ELEMENT_ADDR 2
+#define LBMC_MESSAGE_KEY_ELEMENT_PORT 3
+#define LBMC_MESSAGE_KEY_ELEMENT_FIRST_SQN 4
+
+static wmem_tree_t * lbmc_message_table = NULL;
+
+typedef struct
+{
+ int fragment_found;
+ guint32 first_sqn;
+ guint32 offset;
+ guint32 len;
+} lbmc_fragment_info_t;
+
+struct lbmc_fragment_entry_t_stct;
+typedef struct lbmc_fragment_entry_t_stct lbmc_fragment_entry_t;
+struct lbmc_fragment_entry_t_stct
+{
+ lbmc_fragment_entry_t * prev;
+ lbmc_fragment_entry_t * next;
+ guint32 fragment_start;
+ guint32 fragment_len;
+ guint32 frame;
+ int frame_offset;
+ gchar * data;
+};
+
+typedef struct
+{
+ guint64 channel;
+ address addr;
+ guint16 port;
+ guint32 first_sqn;
+ guint32 fragment_count;
+ guint32 total_len;
+ guint32 accumulated_len;
+ guint32 msgprop_len;
+ gboolean data_is_umq_cmd_resp;
+ lbmc_fragment_entry_t * entry;
+ guint32 reassembled_frame;
+ tvbuff_t * reassembled_data;
+ tvbuff_t * data;
+ tvbuff_t * msgprop;
+} lbmc_message_entry_t;
+
+static void lbmc_message_build_key(guint32 * key_value, wmem_tree_key_t * key, const lbmc_message_entry_t * message)
+{
+ guint32 val;
+
+ key_value[LBMC_MESSAGE_KEY_ELEMENT_CHANNEL_HIGH] = (guint32) ((message->channel >> 32) & 0xffffffff);
+ key_value[LBMC_MESSAGE_KEY_ELEMENT_CHANNEL_LOW] = (guint32) ((message->channel & 0xffffffff) >> 32);
+ memcpy((void *) &val, (void *) message->addr.data, sizeof(guint32));
+ key_value[LBMC_MESSAGE_KEY_ELEMENT_ADDR] = val;
+ key_value[LBMC_MESSAGE_KEY_ELEMENT_PORT] = (guint32) message->port;
+ key_value[LBMC_MESSAGE_KEY_ELEMENT_FIRST_SQN] = message->first_sqn;
+ key[0].length = LBMC_MESSAGE_KEY_ELEMENT_COUNT;
+ key[0].key = key_value;
+ key[1].length = 0;
+ key[1].key = NULL;
+}
+
+static lbmc_message_entry_t * lbmc_message_find(guint64 channel, const address * dest_address, guint16 port, lbmc_fragment_info_t * info)
+{
+ lbmc_message_entry_t key;
+ lbmc_message_entry_t * entry = NULL;
+ guint32 keyval[LBMC_MESSAGE_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ memset((void *)&key, 0, sizeof(lbmc_message_entry_t));
+ key.channel = channel;
+ COPY_ADDRESS_SHALLOW(&(key.addr), dest_address);
+ key.port = port;
+ key.first_sqn = info->first_sqn;
+ lbmc_message_build_key(keyval, tkey, &key);
+ entry = (lbmc_message_entry_t *) wmem_tree_lookup32_array(lbmc_message_table, tkey);
+ return (entry);
+}
+
+static lbmc_message_entry_t * lbmc_message_create(guint64 channel, const address * dest_address, guint16 port, lbmc_fragment_info_t * info, guint32 msgprop_length)
+{
+ lbmc_message_entry_t * entry = NULL;
+ guint32 keyval[LBMC_MESSAGE_KEY_ELEMENT_COUNT];
+ wmem_tree_key_t tkey[2];
+
+ entry = lbmc_message_find(channel, dest_address, port, info);
+ if (entry != NULL)
+ {
+ return (entry);
+ }
+ entry = wmem_new(wmem_file_scope(), lbmc_message_entry_t);
+ entry->channel = channel;
+ SE_COPY_ADDRESS(&(entry->addr), dest_address);
+ entry->port = port;
+ entry->first_sqn = info->first_sqn;
+ entry->fragment_count = 0;
+ entry->total_len = info->len;
+ entry->accumulated_len = 0;
+ entry->msgprop_len = msgprop_length;
+ entry->data_is_umq_cmd_resp = FALSE;
+ entry->entry = NULL;
+ entry->reassembled_frame = 0;
+ entry->reassembled_data = NULL;
+ entry->data = NULL;
+ entry->msgprop = NULL;
+ lbmc_message_build_key(keyval, tkey, entry);
+ wmem_tree_insert32_array(lbmc_message_table, tkey, (void *) entry);
+ return (entry);
+}
+
+static void lbmc_message_add_fragment(lbmc_message_entry_t * message, tvbuff_t * tvb, int data_offset, lbmc_fragment_info_t * info, guint32 frame)
+{
+ lbmc_fragment_entry_t * frag = NULL;
+ lbmc_fragment_entry_t * cur = NULL;
+
+ if ((tvb == NULL) || (info == NULL) || (message == NULL))
+ {
+ return;
+ }
+ if (message->entry == NULL)
+ {
+ frag = wmem_new(wmem_file_scope(), lbmc_fragment_entry_t);
+ if (frag == NULL)
+ {
+ return;
+ }
+ frag->prev = NULL;
+ frag->next = NULL;
+ message->entry = frag;
+ }
+ else
+ {
+ cur = message->entry;
+ while (cur != NULL)
+ {
+ if (info->offset == cur->fragment_start)
+ {
+ /* Already have this fragment */
+ return;
+ }
+ if (info->offset < cur->fragment_start)
+ {
+ /* Fragment goes after cur->prev */
+ cur = cur->prev;
+ break;
+ }
+ if (cur->next == NULL)
+ {
+ /* Fragment goes after cur */
+ break;
+ }
+ cur = cur->next;
+ }
+ frag = wmem_new(wmem_file_scope(), lbmc_fragment_entry_t);
+ if (frag == NULL)
+ {
+ return;
+ }
+ if (cur == NULL)
+ {
+ frag->prev = NULL;
+ frag->next = message->entry;
+ message->entry->prev = frag;
+ message->entry = frag;
+ }
+ else
+ {
+ frag->prev = cur;
+ frag->next = cur->next;
+ cur->next = frag;
+ if (frag->next != NULL)
+ {
+ frag->next->prev = frag;
+ }
+ }
+ }
+ frag->fragment_start = info->offset;
+ frag->fragment_len = tvb_reported_length_remaining(tvb, data_offset);
+ frag->data = (gchar *) tvb_memdup(wmem_file_scope(), tvb, data_offset, frag->fragment_len);
+ frag->frame = frame;
+ frag->frame_offset = data_offset;
+ message->accumulated_len += frag->fragment_len;
+ message->fragment_count++;
+}
+
+/*----------------------------------------------------------------------------*/
+/* Message table/reassembly functions. */
+/*----------------------------------------------------------------------------*/
+static void lbmc_init_extopt_reassembled_data(lbmc_extopt_reassembled_data_t * reassembly)
+{
+ reassembly->reassembly_in_progress = FALSE;
+ reassembly->subtype = 0;
+ reassembly->len = 0;
+ memset((void *)&(reassembly->data), 0, sizeof(reassembly->data));
+}
+
+/*----------------------------------------------------------------------------*/
+/* Dissection functions. */
+/*----------------------------------------------------------------------------*/
+static int dissect_nhdr_frag(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, lbmc_fragment_info_t * frag_info)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_frag, tvb, offset, L_LBMC_FRAG_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_frag);
+ proto_tree_add_item(subtree, hf_lbmc_frag_next_hdr, tvb, offset + O_LBMC_FRAG_HDR_T_NEXT_HDR, L_LBMC_FRAG_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_frag_hdr_len, tvb, offset + O_LBMC_FRAG_HDR_T_HDR_LEN, L_LBMC_FRAG_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_FRAG_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_frag_flags, tvb, offset + O_LBMC_FRAG_HDR_T_FLAGS, L_LBMC_FRAG_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_frag);
+ proto_tree_add_item(flags_tree, hf_lbmc_frag_flags_ignore, tvb, offset + O_LBMC_FRAG_HDR_T_FLAGS, L_LBMC_FRAG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_frag_first_sqn, tvb, offset + O_LBMC_FRAG_HDR_T_FIRST_SQN, L_LBMC_FRAG_HDR_T_FIRST_SQN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_frag_offset, tvb, offset + O_LBMC_FRAG_HDR_T_OFFSET, L_LBMC_FRAG_HDR_T_OFFSET, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_frag_len, tvb, offset + O_LBMC_FRAG_HDR_T_LEN, L_LBMC_FRAG_HDR_T_LEN, ENC_BIG_ENDIAN);
+ if (frag_info != NULL)
+ {
+ frag_info->fragment_found = 1;
+ frag_info->first_sqn = tvb_get_ntohl(tvb, offset + O_LBMC_FRAG_HDR_T_FIRST_SQN);
+ frag_info->offset = tvb_get_ntohl(tvb, offset + O_LBMC_FRAG_HDR_T_OFFSET);
+ frag_info->len = tvb_get_ntohl(tvb, offset + O_LBMC_FRAG_HDR_T_LEN);
+ }
+ return (L_LBMC_FRAG_HDR_T);
+}
+
+static int dissect_nhdr_batch(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_batch, tvb, offset, L_LBMC_BATCH_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_batch);
+ proto_tree_add_item(subtree, hf_lbmc_batch_next_hdr, tvb, offset + O_LBMC_BATCH_HDR_T_NEXT_HDR, L_LBMC_BATCH_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_batch_hdr_len, tvb, offset + O_LBMC_BATCH_HDR_T_HDR_LEN, L_LBMC_BATCH_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_BATCH_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_batch_flags, tvb, offset + O_LBMC_BATCH_HDR_T_FLAGS, L_LBMC_BATCH_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_batch_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_batch_flags_ignore, tvb, offset + O_LBMC_BATCH_HDR_T_FLAGS, L_LBMC_BATCH_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_batch_flags_batch_start, tvb, offset + O_LBMC_BATCH_HDR_T_FLAGS, L_LBMC_BATCH_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_batch_flags_batch_end, tvb, offset + O_LBMC_BATCH_HDR_T_FLAGS, L_LBMC_BATCH_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ return (L_LBMC_BATCH_HDR_T);
+}
+
+static int dissect_nhdr_request(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_tcp_request, tvb, offset, L_LBMC_TCP_REQUEST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_tcp_request);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_request_next_hdr, tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_NEXT_HDR, L_LBMC_TCP_REQUEST_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_request_hdr_len, tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_HDR_LEN, L_LBMC_TCP_REQUEST_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_tcp_request_flags, tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_FLAGS, L_LBMC_TCP_REQUEST_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_tcp_request_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_tcp_request_flags_ignore, tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_FLAGS, L_LBMC_TCP_REQUEST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_request_transport, tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_TRANSPORT, L_LBMC_TCP_REQUEST_HDR_T_TRANSPORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_request_qidx, tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_QIDX, L_LBMC_TCP_REQUEST_HDR_T_QIDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_request_port, tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_PORT, L_LBMC_TCP_REQUEST_HDR_T_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_request_reserved, tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_RESERVED, L_LBMC_TCP_REQUEST_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_request_ipaddr, tvb, offset + O_LBMC_TCP_REQUEST_HDR_T_IPADDR, L_LBMC_TCP_REQUEST_HDR_T_IPADDR, ENC_BIG_ENDIAN);
+ return (L_LBMC_TCP_REQUEST_HDR_T);
+}
+
+static int dissect_nhdr_topicname(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_TOPICNAME_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_topicname, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_topicname);
+ proto_tree_add_item(subtree, hf_lbmc_topicname_next_hdr, tvb, offset + O_LBMC_TOPICNAME_HDR_T_NEXT_HDR, L_LBMC_TOPICNAME_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topicname_hdr_len, tvb, offset + O_LBMC_TOPICNAME_HDR_T_HDR_LEN, L_LBMC_TOPICNAME_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_TOPICNAME_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_topicname_flags, tvb, offset + O_LBMC_TOPICNAME_HDR_T_FLAGS, L_LBMC_TOPICNAME_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_topicname_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_topicname_flags_ignore, tvb, offset + O_LBMC_TOPICNAME_HDR_T_FLAGS, L_LBMC_TOPICNAME_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topicname_topicname, tvb, offset + O_LBMC_TOPICNAME_HDR_T_FLAGS + L_LBMC_TOPICNAME_HDR_T_FLAGS, (gint)(hdrlen - L_LBMC_BASIC_HDR_T), ENC_ASCII|ENC_NA);
+ return ((int)hdrlen);
+}
+
+static int dissect_nhdr_apphdr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint8 datalen = 0;
+ proto_item * code_item = NULL;
+ proto_tree * code_tree = NULL;
+ guint16 code = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_APPHDR_HDR_T_HDR_LEN);
+ datalen = hdrlen - (O_LBMC_APPHDR_HDR_T_CODE + L_LBMC_APPHDR_HDR_T_CODE);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_apphdr, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_apphdr);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_next_hdr, tvb, offset + O_LBMC_APPHDR_HDR_T_NEXT_HDR, L_LBMC_APPHDR_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_hdr_len, tvb, offset + O_LBMC_APPHDR_HDR_T_HDR_LEN, L_LBMC_APPHDR_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ code = tvb_get_ntohs(tvb, offset + O_LBMC_APPHDR_HDR_T_CODE);
+ code_item = proto_tree_add_none_format(subtree, hf_lbmc_apphdr_code, tvb, offset + O_LBMC_APPHDR_HDR_T_CODE, L_LBMC_APPHDR_HDR_T_CODE, "Code: 0x%04x", code);
+ code_tree = proto_item_add_subtree(code_item, ett_lbmc_apphdr_code);
+ proto_tree_add_item(code_tree, hf_lbmc_apphdr_code_ignore, tvb, offset + O_LBMC_APPHDR_HDR_T_CODE, L_LBMC_APPHDR_HDR_T_CODE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(code_tree, hf_lbmc_apphdr_code_code, tvb, offset + O_LBMC_APPHDR_HDR_T_CODE, L_LBMC_APPHDR_HDR_T_CODE, ENC_BIG_ENDIAN);
+ proto_tree_add_none_format(subtree, hf_lbmc_apphdr_data, tvb, O_LBMC_APPHDR_HDR_T_CODE + L_LBMC_APPHDR_HDR_T_CODE, datalen, "Data (%u bytes)", datalen);
+ return ((int)hdrlen);
+}
+
+static int dissect_nhdr_apphdr_chain_element(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, guint8 element)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint8 datalen = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_APPHDR_CHAIN_ELEMENT_T_HDR_LEN);
+ datalen = hdrlen - L_LBMC_APPHDR_CHAIN_ELEMENT_T_MIN;
+ subtree_item = proto_tree_add_none_format(tree, hf_lbmc_apphdr_chain_element, tvb, offset, (gint)hdrlen, "%s element", val_to_str(element, lbmc_apphdr_chain_type, "Unknown (0x%02x)"));
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_apphdr_chain_element);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_element_next_hdr, tvb, offset + O_LBMC_APPHDR_CHAIN_ELEMENT_T_NEXT_HDR, L_LBMC_APPHDR_CHAIN_ELEMENT_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_element_hdr_len, tvb, offset + O_LBMC_APPHDR_CHAIN_ELEMENT_T_HDR_LEN, L_LBMC_APPHDR_CHAIN_ELEMENT_T_HDR_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_element_res, tvb, offset + O_LBMC_APPHDR_CHAIN_ELEMENT_T_RES, L_LBMC_APPHDR_CHAIN_ELEMENT_T_RES, ENC_BIG_ENDIAN);
+ if (datalen > 0)
+ {
+ proto_tree_add_none_format(subtree, hf_lbmc_apphdr_chain_element_data, tvb, offset + O_LBMC_APPHDR_CHAIN_ELEMENT_T_RES + L_LBMC_APPHDR_CHAIN_ELEMENT_T_RES, datalen, "Data (%u bytes)", datalen);
+ }
+ return ((int)hdrlen);
+}
+
+static int dissect_nhdr_apphdr_chain_msgprop_element(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, guint8 element, guint32 * msg_prop_len)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint32 len;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_HDR_LEN);
+ subtree_item = proto_tree_add_none_format(tree, hf_lbmc_apphdr_chain_msgprop, tvb, offset, (gint)hdrlen, "%s element", val_to_str(element, lbmc_apphdr_chain_type, "Unknown (0x%02x)"));
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_apphdr_chain_msgprop);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_msgprop_next_hdr, tvb, offset + O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_NEXT_HDR, L_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_msgprop_hdr_len, tvb, offset + O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_HDR_LEN, L_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_HDR_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_msgprop_res, tvb, offset + O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_RES, L_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_RES, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_msgprop_len, tvb, offset + O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_LEN, L_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_LEN, ENC_BIG_ENDIAN);
+ len = tvb_get_ntohl(tvb, offset + O_LBMC_APPHDR_CHAIN_MSGPROP_ELEMENT_T_LEN);
+ *msg_prop_len += len;
+ return ((int)hdrlen);
+}
+
+static int dissect_nhdr_apphdr_chain(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, guint32 * msg_prop_len)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint8 datalen = 0;
+ int elem_offset = 0;
+ int elem_len = 0;
+ guint8 elem = 0;
+ int len_dissected = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_APPHDR_CHAIN_HDR_T_HDR_LEN);
+ datalen = hdrlen - L_LBMC_APPHDR_CHAIN_HDR_T;
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_apphdr_chain, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_apphdr_chain);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_next_hdr, tvb, offset + O_LBMC_APPHDR_CHAIN_HDR_T_NEXT_HDR, L_LBMC_APPHDR_CHAIN_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_hdr_len, tvb, offset + O_LBMC_APPHDR_CHAIN_HDR_T_HDR_LEN, L_LBMC_APPHDR_CHAIN_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_res, tvb, offset + O_LBMC_APPHDR_CHAIN_HDR_T_RES, L_LBMC_APPHDR_CHAIN_HDR_T_RES, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_apphdr_chain_first_chain_hdr, tvb, offset + O_LBMC_APPHDR_CHAIN_HDR_T_FIRST_CHAIN_HDR, L_LBMC_APPHDR_CHAIN_HDR_T_FIRST_CHAIN_HDR, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_APPHDR_CHAIN_HDR_T;
+ elem_offset = offset + L_LBMC_APPHDR_CHAIN_HDR_T;
+ elem = tvb_get_guint8(tvb, offset + O_LBMC_APPHDR_CHAIN_HDR_T_FIRST_CHAIN_HDR);
+ while (datalen > 0)
+ {
+ switch (elem)
+ {
+ case LBM_CHAIN_ELEM_PROPERTIES_LENGTH:
+ elem_len = dissect_nhdr_apphdr_chain_msgprop_element(tvb, elem_offset, pinfo, subtree, elem, msg_prop_len);
+ break;
+ default:
+ elem_len = dissect_nhdr_apphdr_chain_element(tvb, elem_offset, pinfo, subtree, elem);
+ break;
+ }
+ elem_offset += elem_len;
+ datalen -= elem_len;
+ len_dissected += elem_len;
+ if (datalen >= L_LBMC_APPHDR_CHAIN_ELEMENT_T_MIN)
+ {
+ elem = tvb_get_guint8(tvb, elem_offset + O_LBMC_APPHDR_CHAIN_ELEMENT_T_NEXT_HDR);
+ }
+ }
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_msgid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_msgid, tvb, offset, L_LBMC_UMQ_MSGID_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_msgid);
+ proto_tree_add_item(subtree, hf_lbmc_umq_msgid_next_hdr, tvb, offset + O_LBMC_UMQ_MSGID_HDR_T_NEXT_HDR, L_LBMC_UMQ_MSGID_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_msgid_hdr_len, tvb, offset + O_LBMC_UMQ_MSGID_HDR_T_HDR_LEN, L_LBMC_UMQ_MSGID_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_UMQ_MSGID_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_msgid_flags, tvb, offset + O_LBMC_UMQ_MSGID_HDR_T_FLAGS, L_LBMC_UMQ_MSGID_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_msgid_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_msgid_flags_ignore, tvb, offset + O_LBMC_UMQ_MSGID_HDR_T_FLAGS, L_LBMC_UMQ_MSGID_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_msgid_msgid_regid, tvb, offset + O_LBMC_UMQ_MSGID_HDR_T_MSGID_REGID, L_LBMC_UMQ_MSGID_HDR_T_MSGID_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_msgid_msgid_stamp, tvb, offset + O_LBMC_UMQ_MSGID_HDR_T_MSGID_STAMP, L_LBMC_UMQ_MSGID_HDR_T_MSGID_STAMP, ENC_BIG_ENDIAN);
+ return (L_LBMC_UMQ_MSGID_HDR_T);
+}
+
+static int dissect_nhdr_umq_sqd_rcv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, gboolean * data_is_response)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_sqd_rcv, tvb, offset, L_LBMC_UMQ_SQD_RCV_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_sqd_rcv);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sqd_rcv_next_hdr, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_NEXT_HDR, L_LBMC_UMQ_SQD_RCV_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sqd_rcv_hdr_len, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_HDR_LEN, L_LBMC_UMQ_SQD_RCV_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_sqd_rcv_flags, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_sqd_rcv_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_sqd_rcv_flags_ignore, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_sqd_rcv_flags_r_flag, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_sqd_rcv_flags_s_flag, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_sqd_rcv_flags_re_flag, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_sqd_rcv_flags_eoi_flag, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_sqd_rcv_flags_boi_flag, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sqd_rcv_queue_id, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_QUEUE_ID, L_LBMC_UMQ_SQD_RCV_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sqd_rcv_queue_ver, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_QUEUE_VER, L_LBMC_UMQ_SQD_RCV_HDR_T_QUEUE_VER, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sqd_rcv_rcr_idx, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_RCR_IDX, L_LBMC_UMQ_SQD_RCV_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sqd_rcv_assign_id, tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_ASSIGN_ID, L_LBMC_UMQ_SQD_RCV_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ if (data_is_response != NULL)
+ {
+ guint32 rcr_index;
+
+ rcr_index = tvb_get_ntohl(tvb, offset + O_LBMC_UMQ_SQD_RCV_HDR_T_RCR_IDX);
+ if (rcr_index == 0)
+ {
+ *data_is_response = TRUE;
+ }
+ else
+ {
+ *data_is_response = FALSE;
+ }
+ }
+ return (L_LBMC_UMQ_SQD_RCV_HDR_T);
+}
+
+static int dissect_nhdr_umq_resub(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_resub, tvb, offset, L_LBMC_UMQ_RESUB_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_resub);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_next_hdr, tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_NEXT_HDR, L_LBMC_UMQ_RESUB_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_hdr_len, tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_HDR_LEN, L_LBMC_UMQ_RESUB_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_resub_flags, tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_FLAGS, L_LBMC_UMQ_RESUB_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_resub_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_resub_flags_ignore, tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_FLAGS, L_LBMC_UMQ_RESUB_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_resub_flags_q_flag, tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_FLAGS, L_LBMC_UMQ_RESUB_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_rcr_idx, tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_RCR_IDX, L_LBMC_UMQ_RESUB_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_ip, tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_RESP_IP, L_LBMC_UMQ_RESUB_HDR_T_RESP_IP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_port, tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_RESP_PORT, L_LBMC_UMQ_RESUB_HDR_T_RESP_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_appset_idx, tvb, offset + O_LBMC_UMQ_RESUB_HDR_T_APPSET_IDX, L_LBMC_UMQ_RESUB_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_UMQ_RESUB_HDR_T);
+}
+
+static int dissect_nhdr_otid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_otid, tvb, offset, L_LBMC_OTID_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_otid);
+ proto_tree_add_item(subtree, hf_lbmc_otid_next_hdr, tvb, offset + O_LBMC_OTID_HDR_T_NEXT_HDR, L_LBMC_OTID_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_otid_hdr_len, tvb, offset + O_LBMC_OTID_HDR_T_HDR_LEN, L_LBMC_OTID_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_OTID_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_otid_flags, tvb, offset + O_LBMC_OTID_HDR_T_FLAGS, L_LBMC_OTID_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_otid_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_otid_flags_ignore, tvb, offset + O_LBMC_OTID_HDR_T_FLAGS, L_LBMC_OTID_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_otid_otid, tvb, offset + O_LBMC_OTID_HDR_T_OTID, L_LBMC_OTID_HDR_T_OTID, ENC_NA);
+ return (L_LBMC_OTID_HDR_T);
+}
+
+static void dissect_ctxinst(tvbuff_t * tvb, int offset, proto_tree * tree, lbmc_ctxinst_info_t * info)
+{
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ proto_tree_add_item(tree, hf_lbmc_ctxinst_next_hdr, tvb, offset + O_LBMC_CTXINST_HDR_T_NEXT_HDR, L_LBMC_CTXINST_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_lbmc_ctxinst_hdr_len, tvb, offset + O_LBMC_CTXINST_HDR_T_HDR_LEN, L_LBMC_CTXINST_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CTXINST_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(tree, hf_lbmc_ctxinst_flags, tvb, offset + O_LBMC_CTXINST_HDR_T_FLAGS, L_LBMC_CTXINST_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ctxinst_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ctxinst_flags_ignore, tvb, offset + O_LBMC_CTXINST_HDR_T_FLAGS, L_LBMC_CTXINST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_lbmc_ctxinst_ctxinst, tvb, offset + O_LBMC_CTXINST_HDR_T_CTXINST, L_LBMC_CTXINST_HDR_T_CTXINST, ENC_NA);
+ if (info != NULL)
+ {
+ info->set = TRUE;
+ tvb_memcpy(tvb, (void *)&(info->ctxinst), offset + O_LBMC_CTXINST_HDR_T_CTXINST, L_LBMC_CTXINST_HDR_T_CTXINST);
+ }
+}
+
+static int dissect_nhdr_ctxinstd(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, lbmc_ctxinst_info_t * info)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ctxinstd, tvb, offset, L_LBMC_CTXINST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ctxinstd);
+ dissect_ctxinst(tvb, offset, subtree, info);
+ return (L_LBMC_CTXINST_HDR_T);
+}
+
+static int dissect_nhdr_ctxinstr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, lbmc_ctxinst_info_t * info)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ctxinstr, tvb, offset, L_LBMC_CTXINST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ctxinstr);
+ dissect_ctxinst(tvb, offset, subtree, info);
+ return (L_LBMC_CTXINST_HDR_T);
+}
+
+static int dissect_nhdr_ctxinst(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, lbmc_ctxinst_info_t * info)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ctxinst, tvb, offset, L_LBMC_CTXINST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ctxinst);
+ dissect_ctxinst(tvb, offset, subtree, info);
+ return (L_LBMC_CTXINST_HDR_T);
+}
+
+static int dissect_nhdr_srcidx(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_srcidx, tvb, offset, L_LBMC_SRCIDX_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_srcidx);
+ proto_tree_add_item(subtree, hf_lbmc_srcidx_next_hdr, tvb, offset + O_LBMC_SRCIDX_HDR_T_NEXT_HDR, L_LBMC_SRCIDX_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_srcidx_hdr_len, tvb, offset + O_LBMC_SRCIDX_HDR_T_HDR_LEN, L_LBMC_SRCIDX_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_SRCIDX_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_srcidx_flags, tvb, offset + O_LBMC_SRCIDX_HDR_T_FLAGS, L_LBMC_SRCIDX_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_srcidx_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_srcidx_flags_ignore, tvb, offset + O_LBMC_SRCIDX_HDR_T_FLAGS, L_LBMC_SRCIDX_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_srcidx_srcidx, tvb, offset + O_LBMC_SRCIDX_HDR_T_SRCIDX, L_LBMC_SRCIDX_HDR_T_SRCIDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_SRCIDX_HDR_T);
+}
+
+static int dissect_nhdr_umq_ulb_msg(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ulb_msg, tvb, offset, L_LBMC_UMQ_ULB_MSG_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ulb_msg);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_msg_next_hdr, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_NEXT_HDR, L_LBMC_UMQ_ULB_MSG_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_msg_hdr_len, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_HDR_LEN, L_LBMC_UMQ_ULB_MSG_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_ulb_msg_flags, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS, L_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_ulb_msg);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_ulb_msg_flags_ignore, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS, L_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_ulb_msg_flags_a_flag, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS, L_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_ulb_msg_flags_r_flag, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS, L_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_msg_queue_id, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_QUEUE_ID, L_LBMC_UMQ_ULB_MSG_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_msg_ulb_src_id, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_ULB_SRC_ID, L_LBMC_UMQ_ULB_MSG_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_msg_assign_id, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_ASSIGN_ID, L_LBMC_UMQ_ULB_MSG_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_msg_appset_idx, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_APPSET_IDX, L_LBMC_UMQ_ULB_MSG_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_msg_num_ras, tvb, offset + O_LBMC_UMQ_ULB_MSG_HDR_T_NUM_RAS, L_LBMC_UMQ_ULB_MSG_HDR_T_NUM_RAS, ENC_BIG_ENDIAN);
+ return (L_LBMC_UMQ_ULB_MSG_HDR_T);
+}
+
+static int dissect_nhdr_ssf_init(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ssf_init, tvb, offset, L_LBMC_CNTL_SSF_INIT_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ssf_init);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_init_next_hdr, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_NEXT_HDR, L_LBMC_CNTL_SSF_INIT_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_init_hdr_len, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_HDR_LEN, L_LBMC_CNTL_SSF_INIT_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ssf_init_flags, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS, L_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ssf_init);
+ proto_tree_add_item(flags_tree, hf_lbmc_ssf_init_flags_ignore, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS, L_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ssf_init_flags_default_exclusions, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS, L_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ssf_init_flags_default_inclusions, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS, L_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_init_transport, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_TRANSPORT, L_LBMC_CNTL_SSF_INIT_HDR_T_TRANSPORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_init_transport_idx, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_SSF_INIT_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_init_client_idx, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_CLIENT_IDX, L_LBMC_CNTL_SSF_INIT_HDR_T_CLIENT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_init_ssf_port, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_SSF_PORT, L_LBMC_CNTL_SSF_INIT_HDR_T_SSF_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_init_res, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_RES, L_LBMC_CNTL_SSF_INIT_HDR_T_RES, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_init_ssf_ip, tvb, offset + O_LBMC_CNTL_SSF_INIT_HDR_T_SSF_IP, L_LBMC_CNTL_SSF_INIT_HDR_T_SSF_IP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_SSF_INIT_HDR_T);
+}
+
+static int dissect_nhdr_ssf_creq(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ssf_creq, tvb, offset, L_LBMC_CNTL_SSF_CREQ_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ssf_creq);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_creq_next_hdr, tvb, offset + O_LBMC_CNTL_SSF_CREQ_HDR_T_NEXT_HDR, L_LBMC_CNTL_SSF_CREQ_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_creq_hdr_len, tvb, offset + O_LBMC_CNTL_SSF_CREQ_HDR_T_HDR_LEN, L_LBMC_CNTL_SSF_CREQ_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_SSF_CREQ_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ssf_creq_flags, tvb, offset + O_LBMC_CNTL_SSF_CREQ_HDR_T_FLAGS, L_LBMC_CNTL_SSF_CREQ_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ssf_creq);
+ proto_tree_add_item(flags_tree, hf_lbmc_ssf_creq_flags_ignore, tvb, offset + O_LBMC_CNTL_SSF_CREQ_HDR_T_FLAGS, L_LBMC_CNTL_SSF_CREQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_creq_mode, tvb, offset + O_LBMC_CNTL_SSF_CREQ_HDR_T_MODE, L_LBMC_CNTL_SSF_CREQ_HDR_T_MODE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_creq_transport_idx, tvb, offset + O_LBMC_CNTL_SSF_CREQ_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_SSF_CREQ_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_creq_topic_idx, tvb, offset + O_LBMC_CNTL_SSF_CREQ_HDR_T_TOPIC_IDX, L_LBMC_CNTL_SSF_CREQ_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ssf_creq_client_idx, tvb, offset + O_LBMC_CNTL_SSF_CREQ_HDR_T_CLIENT_IDX, L_LBMC_CNTL_SSF_CREQ_HDR_T_CLIENT_IDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_SSF_CREQ_HDR_T);
+}
+
+static int dissect_nhdr_ume_preg(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ proto_item * marker_item = NULL;
+ proto_tree * marker_tree = NULL;
+ guint8 flags = 0;
+ guint8 marker = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_preg, tvb, offset, L_LBMC_CNTL_UME_PREG_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_preg);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_next_hdr, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_PREG_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_hdr_len, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_PREG_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_preg_flags, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_preg_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_preg_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_preg_flags_f_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_preg_flags_p_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_preg_flags_w_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_preg_flags_d_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ marker = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_MARKER);
+ marker_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_preg_marker, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_MARKER, L_LBMC_CNTL_UME_PREG_HDR_T_MARKER, "Marker: 0x%02x", marker);
+ marker_tree = proto_item_add_subtree(marker_item, ett_lbmc_ume_preg_marker);
+ proto_tree_add_item(marker_tree, hf_lbmc_ume_preg_marker_s_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_MARKER, L_LBMC_CNTL_UME_PREG_HDR_T_MARKER, ENC_BIG_ENDIAN);
+ proto_tree_add_item(marker_tree, hf_lbmc_ume_preg_marker_marker, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_MARKER, L_LBMC_CNTL_UME_PREG_HDR_T_MARKER, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_reg_id, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_REG_ID, L_LBMC_CNTL_UME_PREG_HDR_T_REG_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_transport_idx, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_UME_PREG_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_topic_idx, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_TOPIC_IDX, L_LBMC_CNTL_UME_PREG_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_src_reg_id, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_SRC_REG_ID, L_LBMC_CNTL_UME_PREG_HDR_T_SRC_REG_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_resp_port, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_RESP_PORT, L_LBMC_CNTL_UME_PREG_HDR_T_RESP_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_res2, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_RES2, L_LBMC_CNTL_UME_PREG_HDR_T_RES2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_resp_ip, tvb, offset + O_LBMC_CNTL_UME_PREG_HDR_T_RESP_IP, L_LBMC_CNTL_UME_PREG_HDR_T_RESP_IP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_PREG_HDR_T);
+}
+
+static int dissect_nhdr_ume_preg_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * code_item = NULL;
+ proto_tree * code_tree = NULL;
+ proto_item * marker_item = NULL;
+ proto_tree * marker_tree = NULL;
+ guint8 code = 0;
+ guint8 marker = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_preg_resp, tvb, offset, L_LBMC_CNTL_UME_PREG_RESP_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_preg_resp);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_resp_next_hdr, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_resp_hdr_len, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ code = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE);
+ code_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_preg_resp_code, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, "Code: 0x%02x", code);
+ code_tree = proto_item_add_subtree(code_item, ett_lbmc_ume_preg_resp_code);
+ proto_tree_add_item(code_tree, hf_lbmc_ume_preg_resp_code_ignore, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(code_tree, hf_lbmc_ume_preg_resp_code_o_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(code_tree, hf_lbmc_ume_preg_resp_code_e_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, ENC_BIG_ENDIAN);
+ if ((code & LBMC_UME_PREG_RESP_E_FLAG) == 0)
+ {
+ proto_tree_add_item(code_tree, hf_lbmc_ume_preg_resp_code_n_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(code_tree, hf_lbmc_ume_preg_resp_code_w_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(code_tree, hf_lbmc_ume_preg_resp_code_d_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ proto_tree_add_item(code_tree, hf_lbmc_ume_preg_resp_code_code, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE, ENC_BIG_ENDIAN);
+ }
+ marker = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER);
+ marker_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_preg_resp_marker, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER, "Marker: 0x%02x", marker);
+ marker_tree = proto_item_add_subtree(marker_item, ett_lbmc_ume_preg_resp_marker);
+ proto_tree_add_item(marker_tree, hf_lbmc_ume_preg_resp_marker_s_flag, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER, ENC_BIG_ENDIAN);
+ proto_tree_add_item(marker_tree, hf_lbmc_ume_preg_resp_marker_marker, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_resp_reg_id, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_REG_ID, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_REG_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_resp_transport_idx, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_resp_topic_idx, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_TOPIC_IDX, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_resp_low_seqnum, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_LOW_SEQNUM, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_LOW_SEQNUM, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_preg_resp_high_seqnum, tvb, offset + O_LBMC_CNTL_UME_PREG_RESP_HDR_T_HIGH_SEQNUM, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_HIGH_SEQNUM, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_PREG_RESP_HDR_T);
+}
+
+static int dissect_nhdr_ume_ack(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_ack, tvb, offset, L_LBMC_CNTL_UME_ACK_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_ack);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_next_hdr, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_ACK_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_hdr_len, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_ACK_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_ack_flags, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_ack_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_ack_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_ack_flags_o_flag, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_ack_flags_f_flag, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_ack_flags_u_flag, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_ack_flags_e_flag, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_type, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_TYPE, L_LBMC_CNTL_UME_ACK_HDR_T_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_transport_idx, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_UME_ACK_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_id_2, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_ID_2, L_LBMC_CNTL_UME_ACK_HDR_T_ID_2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_rcv_reg_id, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_RCV_REG_ID, L_LBMC_CNTL_UME_ACK_HDR_T_RCV_REG_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_seqnum, tvb, offset + O_LBMC_CNTL_UME_ACK_HDR_T_SEQNUM, L_LBMC_CNTL_UME_ACK_HDR_T_SEQNUM, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_ACK_HDR_T);
+}
+
+static int dissect_nhdr_ume_rxreq(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_rxreq, tvb, offset, L_LBMC_CNTL_UME_RXREQ_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_rxreq);
+ proto_tree_add_item(subtree, hf_lbmc_ume_rxreq_next_hdr, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_RXREQ_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_rxreq_hdr_len, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_RXREQ_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_rxreq_flags, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS, L_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_rxreq_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_rxreq_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS, L_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_rxreq_flags_tsni_req, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS, L_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_rxreq_request_idx, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_REQUEST_IDX, L_LBMC_CNTL_UME_RXREQ_HDR_T_REQUEST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_rxreq_transport_idx, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_UME_RXREQ_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_rxreq_id_2, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_ID_2, L_LBMC_CNTL_UME_RXREQ_HDR_T_ID_2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_rxreq_seqnum, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_SEQNUM, L_LBMC_CNTL_UME_RXREQ_HDR_T_SEQNUM, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_rxreq_rx_port, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_RX_PORT, L_LBMC_CNTL_UME_RXREQ_HDR_T_RX_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_rxreq_res, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_RES, L_LBMC_CNTL_UME_RXREQ_HDR_T_RES, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_rxreq_rx_ip, tvb, offset + O_LBMC_CNTL_UME_RXREQ_HDR_T_RX_IP, L_LBMC_CNTL_UME_RXREQ_HDR_T_RX_IP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_RXREQ_HDR_T);
+}
+
+static int dissect_nhdr_ume_keepalive(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_keepalive, tvb, offset, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_keepalive);
+ proto_tree_add_item(subtree, hf_lbmc_ume_keepalive_next_hdr, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_keepalive_hdr_len, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_keepalive_flags, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_keepalive_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_keepalive_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_keepalive_flags_r_flag, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_keepalive_flags_t_flag, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_keepalive_type, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TYPE, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_keepalive_transport_idx, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_keepalive_topic_idx, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TOPIC_IDX, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_keepalive_reg_id, tvb, offset + O_LBMC_CNTL_UME_KEEPALIVE_HDR_T_REG_ID, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_REG_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_KEEPALIVE_HDR_T);
+}
+
+static int dissect_nhdr_ume_storeid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * storeid_item = NULL;
+ proto_tree * storeid_tree = NULL;
+ guint16 store_id = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_storeid, tvb, offset, L_LBMC_CNTL_UME_STOREID_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_storeid);
+ proto_tree_add_item(subtree, hf_lbmc_ume_storeid_next_hdr, tvb, offset + O_LBMC_CNTL_UME_STOREID_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_STOREID_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_storeid_hdr_len, tvb, offset + O_LBMC_CNTL_UME_STOREID_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_STOREID_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ store_id = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID);
+ storeid_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_storeid_store_id, tvb, offset + O_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID, L_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID, "Store ID: 0x%04x", store_id);
+ storeid_tree = proto_item_add_subtree(storeid_item, ett_lbmc_ume_storeid_store_id);
+ proto_tree_add_item(storeid_tree, hf_lbmc_ume_storeid_store_id_ignore, tvb, offset + O_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID, L_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(storeid_tree, hf_lbmc_ume_storeid_store_id_store_id, tvb, offset + O_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID, L_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_STOREID_HDR_T);
+}
+
+static int dissect_nhdr_ume_ranged_ack(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_ranged_ack, tvb, offset, L_LBMC_CNTL_UME_RANGED_ACK_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_ranged_ack);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ranged_ack_next_hdr, tvb, offset + O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ranged_ack_hdr_len, tvb, offset + O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_ranged_ack_flags, tvb, offset + O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FLAGS, L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_ranged_ack_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_ranged_ack_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FLAGS, L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ranged_ack_first_seqnum, tvb, offset + O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FIRST_SEQNUM, L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FIRST_SEQNUM, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ranged_ack_last_seqnum, tvb, offset + O_LBMC_CNTL_UME_RANGED_ACK_HDR_T_LAST_SEQNUM, L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_LAST_SEQNUM, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_RANGED_ACK_HDR_T);
+}
+
+static int dissect_nhdr_ume_ack_id(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_ack_id, tvb, offset, L_LBMC_CNTL_UME_ACK_ID_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_ack_id);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_id_next_hdr, tvb, offset + O_LBMC_CNTL_UME_ACK_ID_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_ACK_ID_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_id_hdr_len, tvb, offset + O_LBMC_CNTL_UME_ACK_ID_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_ACK_ID_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_ACK_ID_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_ack_id_flags, tvb, offset + O_LBMC_CNTL_UME_ACK_ID_HDR_T_FLAGS, L_LBMC_CNTL_UME_ACK_ID_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_ack_id_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_ack_id_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_ACK_ID_HDR_T_FLAGS, L_LBMC_CNTL_UME_ACK_ID_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_ack_id_id, tvb, offset + O_LBMC_CNTL_UME_ACK_ID_HDR_T_ID, L_LBMC_CNTL_UME_ACK_ID_HDR_T_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_ACK_ID_HDR_T);
+}
+
+static int dissect_nhdr_ume_capability(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_capability, tvb, offset, L_LBMC_CNTL_UME_CAPABILITY_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_capability);
+ proto_tree_add_item(subtree, hf_lbmc_ume_capability_next_hdr, tvb, offset + O_LBMC_CNTL_UME_CAPABILITY_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_CAPABILITY_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_capability_hdr_len, tvb, offset + O_LBMC_CNTL_UME_CAPABILITY_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_CAPABILITY_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_capability_flags, tvb, offset + O_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS, L_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_capability_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_capability_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS, L_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_capability_flags_qc_flag, tvb, offset + O_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS, L_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_capability_flags_client_lifetime_flag, tvb, offset + O_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS, L_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_CAPABILITY_HDR_T);
+}
+
+static int dissect_nhdr_ume_proxy_src(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_proxy_src, tvb, offset, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_proxy_src);
+ proto_tree_add_item(subtree, hf_lbmc_ume_proxy_src_next_hdr, tvb, offset + O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_proxy_src_hdr_len, tvb, offset + O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_proxy_src_flags, tvb, offset + O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_proxy_src_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_proxy_src_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_proxy_src_flags_enable, tvb, offset + O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_proxy_src_flags_compatibility, tvb, offset + O_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_PROXY_SRC_HDR_T);
+}
+
+static int dissect_nhdr_ume_store_group(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_store_group, tvb, offset, L_LBMC_CNTL_UME_STORE_GROUP_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_store_group);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_group_next_hdr, tvb, offset + O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_group_hdr_len, tvb, offset + O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_store_group_flags, tvb, offset + O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_FLAGS, L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_store_group_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_store_group_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_FLAGS, L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_group_grp_idx, tvb, offset + O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_GRP_IDX, L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_GRP_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_group_grp_sz, tvb, offset + O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_GRP_SZ, L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_GRP_SZ, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_group_res1, tvb, offset + O_LBMC_CNTL_UME_STORE_GROUP_HDR_T_RES1, L_LBMC_CNTL_UME_STORE_GROUP_HDR_T_RES1, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_STORE_GROUP_HDR_T);
+}
+
+static int dissect_nhdr_ume_store(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_store, tvb, offset, L_LBMC_CNTL_UME_STORE_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_store);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_next_hdr, tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_STORE_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_hdr_len, tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_STORE_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_store_flags, tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_FLAGS, L_LBMC_CNTL_UME_STORE_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_store_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_store_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_FLAGS, L_LBMC_CNTL_UME_STORE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_grp_idx, tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_GRP_IDX, L_LBMC_CNTL_UME_STORE_HDR_T_GRP_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_store_tcp_port, tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_STORE_TCP_PORT, L_LBMC_CNTL_UME_STORE_HDR_T_STORE_TCP_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_store_idx, tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_STORE_IDX, L_LBMC_CNTL_UME_STORE_HDR_T_STORE_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_store_ip_addr, tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_STORE_IP_ADDR, L_LBMC_CNTL_UME_STORE_HDR_T_STORE_IP_ADDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_src_reg_id, tvb, offset + O_LBMC_CNTL_UME_STORE_HDR_T_SRC_REG_ID, L_LBMC_CNTL_UME_STORE_HDR_T_SRC_REG_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_STORE_HDR_T);
+}
+
+static int dissect_nhdr_ume_lj_info(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_lj_info, tvb, offset, L_LBMC_CNTL_UME_LJ_INFO_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_lj_info);
+ proto_tree_add_item(subtree, hf_lbmc_ume_lj_info_next_hdr, tvb, offset + O_LBMC_CNTL_UME_LJ_INFO_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_LJ_INFO_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_lj_info_hdr_len, tvb, offset + O_LBMC_CNTL_UME_LJ_INFO_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_LJ_INFO_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_LJ_INFO_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_lj_info_flags, tvb, offset + O_LBMC_CNTL_UME_LJ_INFO_HDR_T_FLAGS, L_LBMC_CNTL_UME_LJ_INFO_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_lj_info_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_lj_info_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_LJ_INFO_HDR_T_FLAGS, L_LBMC_CNTL_UME_LJ_INFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_lj_info_low_seqnum, tvb, offset + O_LBMC_CNTL_UME_LJ_INFO_HDR_T_LOW_SEQNUM, L_LBMC_CNTL_UME_LJ_INFO_HDR_T_LOW_SEQNUM, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_lj_info_high_seqnum, tvb, offset + O_LBMC_CNTL_UME_LJ_INFO_HDR_T_HIGH_SEQNUM, L_LBMC_CNTL_UME_LJ_INFO_HDR_T_HIGH_SEQNUM, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_lj_info_qidx, tvb, offset + O_LBMC_CNTL_UME_LJ_INFO_HDR_T_QIDX, L_LBMC_CNTL_UME_LJ_INFO_HDR_T_QIDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_LJ_INFO_HDR_T);
+}
+
+static int dissect_nhdr_tsni_rec(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * sqn_item = NULL;
+ guint32 sqn = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_tsni_rec, tvb, offset, L_LBMC_CNTL_TSNI_REC_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_tsni_rec);
+ proto_tree_add_item(subtree, hf_lbmc_tsni_rec_tidx, tvb, offset + O_LBMC_CNTL_TSNI_REC_HDR_T_TIDX, L_LBMC_CNTL_TSNI_REC_HDR_T_TIDX, ENC_BIG_ENDIAN);
+ sqn_item = proto_tree_add_item(subtree, hf_lbmc_tsni_rec_sqn, tvb, offset + O_LBMC_CNTL_TSNI_REC_HDR_T_SQN, L_LBMC_CNTL_TSNI_REC_HDR_T_SQN, ENC_BIG_ENDIAN);
+ sqn = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_TSNI_REC_HDR_T_SQN);
+ expert_add_info_format(pinfo, sqn_item, &ei_lbmc_analysis_tsni, "TSNI Sqn 0x%08x", sqn);
+ return (L_LBMC_CNTL_TSNI_REC_HDR_T);
+}
+
+static int dissect_nhdr_tsni(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint8 hdrlen_remaining;
+ int rec_offset = 0;
+ proto_item * num_recs_subtree_item = NULL;
+ proto_tree * num_recs_subtree = NULL;
+ int len_dissected = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_TSNI_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_tsni, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_tsni);
+ proto_tree_add_item(subtree, hf_lbmc_tsni_next_hdr, tvb, offset + O_LBMC_CNTL_TSNI_HDR_T_NEXT_HDR, L_LBMC_CNTL_TSNI_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tsni_hdr_len, tvb, offset + O_LBMC_CNTL_TSNI_HDR_T_HDR_LEN, L_LBMC_CNTL_TSNI_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ num_recs_subtree_item = proto_tree_add_item(subtree, hf_lbmc_tsni_num_recs, tvb, offset + O_LBMC_CNTL_TSNI_HDR_T_NUM_RECS, L_LBMC_CNTL_TSNI_HDR_T_NUM_RECS, ENC_NA);
+ num_recs_subtree = proto_item_add_subtree(num_recs_subtree_item, ett_lbmc_tsni_num_recs);
+ proto_tree_add_item(num_recs_subtree, hf_lbmc_tsni_num_recs_ignore, tvb, offset + O_LBMC_CNTL_TSNI_HDR_T_NUM_RECS, L_LBMC_CNTL_TSNI_HDR_T_NUM_RECS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(num_recs_subtree, hf_lbmc_tsni_num_recs_num_recs, tvb, offset + O_LBMC_CNTL_TSNI_HDR_T_NUM_RECS, L_LBMC_CNTL_TSNI_HDR_T_NUM_RECS, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_TSNI_HDR_T;
+ hdrlen_remaining = hdrlen - L_LBMC_CNTL_TSNI_HDR_T;
+ rec_offset = L_LBMC_CNTL_TSNI_HDR_T;
+ while (hdrlen_remaining >= L_LBMC_CNTL_TSNI_REC_HDR_T)
+ {
+ int reclen;
+
+ reclen = dissect_nhdr_tsni_rec(tvb, offset + rec_offset, pinfo, subtree);
+ hdrlen_remaining -= reclen;
+ rec_offset += reclen;
+ len_dissected += reclen;
+ if (reclen == 0)
+ {
+ break;
+ }
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_reg_ctx(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_reg_ctx, tvb, offset, L_LBMC_CNTL_UMQ_REG_CTX_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_reg_ctx);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ctx_port, tvb, offset + O_LBMC_CNTL_UMQ_REG_CTX_HDR_T_PORT, L_LBMC_CNTL_UMQ_REG_CTX_HDR_T_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ctx_reserved, tvb, offset + O_LBMC_CNTL_UMQ_REG_CTX_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_REG_CTX_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ctx_ip, tvb, offset + O_LBMC_CNTL_UMQ_REG_CTX_HDR_T_IP, L_LBMC_CNTL_UMQ_REG_CTX_HDR_T_IP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ctx_capabilities, tvb, offset + O_LBMC_CNTL_UMQ_REG_CTX_HDR_T_CAPABILITIES, L_LBMC_CNTL_UMQ_REG_CTX_HDR_T_CAPABILITIES, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_CTX_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_src(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_reg_src, tvb, offset, L_LBMC_CNTL_UMQ_REG_SRC_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_reg_src);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_src_transport_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_SRC_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_UMQ_REG_SRC_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_src_topic_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_SRC_HDR_T_TOPIC_IDX, L_LBMC_CNTL_UMQ_REG_SRC_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_SRC_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_rcv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_reg_rcv, tvb, offset, L_LBMC_CNTL_UMQ_REG_RCV_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_reg_rcv);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_rcv_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_RCV_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_REG_RCV_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_rcv_rcv_type_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_RCV_HDR_T_RCV_TYPE_ID, L_LBMC_CNTL_UMQ_REG_RCV_HDR_T_RCV_TYPE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_rcv_last_topic_rcr_tsp, tvb, offset + O_LBMC_CNTL_UMQ_REG_RCV_HDR_T_LAST_TOPIC_RCR_TSP, L_LBMC_CNTL_UMQ_REG_RCV_HDR_T_LAST_TOPIC_RCR_TSP, ENC_BIG_ENDIAN);
+ return ((int)L_LBMC_CNTL_UMQ_REG_RCV_HDR_T);
+}
+
+static int dissect_nhdr_umq_rcv_dereg(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_rcv_dereg, tvb, offset, L_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_rcv_dereg);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_rcv_dereg_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_rcv_dereg_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return ((int)L_LBMC_CNTL_UMQ_RCV_DEREG_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_ulb_rcv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_reg_ulb_rcv, tvb, offset, L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_reg_ulb_rcv);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ulb_rcv_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ulb_rcv_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ulb_rcv_rcv_type_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_RCV_TYPE_ID, L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_RCV_TYPE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ulb_rcv_port, tvb, offset + O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_PORT, L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ulb_rcv_reserved, tvb, offset + O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ulb_rcv_ip, tvb, offset + O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_IP, L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_IP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_ulb_rcv_capabilities, tvb, offset + O_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_CAPABILITIES, L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T_CAPABILITIES, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_ULB_RCV_HDR_T);
+}
+
+static int dissect_nhdr_umq_ulb_rcv_dereg(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_ulb_rcv_dereg, tvb, offset, L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_ulb_rcv_dereg);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_ulb_rcv_dereg_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_ulb_rcv_dereg_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return ((int)L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_observer_rcv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_reg_observer_rcv, tvb, offset, L_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_reg_observer_rcv);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_observer_rcv_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_observer_rcv_rcv_type_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_RCV_TYPE_ID, L_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_RCV_TYPE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_observer_rcv_last_topic_rcr_tsp, tvb, offset + O_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_LAST_TOPIC_RCR_TSP, L_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T_LAST_TOPIC_RCR_TSP, ENC_BIG_ENDIAN);
+ return ((int)L_LBMC_CNTL_UMQ_REG_OBSERVER_RCV_HDR_T);
+}
+
+static int dissect_nhdr_umq_observer_rcv_dereg(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_observer_rcv_dereg, tvb, offset, L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_observer_rcv_dereg);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_observer_rcv_dereg_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_observer_rcv_dereg_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint8 reg_type = 0;
+ int len_dissected = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags;
+ int len = 0;
+ proto_item * reg_type_item = NULL;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_REG_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_REG_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_reg_flags, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_reg_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_flags_r_flag, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_flags_t_flag, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_flags_i_flag, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_flags_msg_sel_flag, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ reg_type_item = proto_tree_add_item(subtree, hf_lbmc_umq_reg_reg_type, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_REG_TYPE, L_LBMC_CNTL_UMQ_REG_HDR_T_REG_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_REG_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_cmd_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_CMD_ID, L_LBMC_CNTL_UMQ_REG_HDR_T_CMD_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_inst_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_INST_IDX, L_LBMC_CNTL_UMQ_REG_HDR_T_INST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_regid, tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_REGID, L_LBMC_CNTL_UMQ_REG_HDR_T_REGID, ENC_BIG_ENDIAN);
+
+ len_dissected = L_LBMC_CNTL_UMQ_REG_HDR_T;
+ reg_type = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_REG_HDR_T_REG_TYPE);
+ switch (reg_type)
+ {
+ case LBMC_UMQ_REG_CTX_TYPE:
+ len = dissect_nhdr_umq_reg_ctx(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_SRC_TYPE:
+ len = dissect_nhdr_umq_reg_src(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RCV_TYPE:
+ len = dissect_nhdr_umq_reg_rcv(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RCV_DEREG_TYPE:
+ len = dissect_nhdr_umq_rcv_dereg(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_ULB_RCV_TYPE:
+ len = dissect_nhdr_umq_reg_ulb_rcv(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_ULB_RCV_DEREG_TYPE:
+ len = dissect_nhdr_umq_ulb_rcv_dereg(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_OBSERVER_RCV_TYPE:
+ len = dissect_nhdr_umq_reg_observer_rcv(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_OBSERVER_RCV_DEREG_TYPE:
+ len = dissect_nhdr_umq_observer_rcv_dereg(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ default:
+ expert_add_info_format(pinfo, reg_type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC UMQ REG type 0x%02x", reg_type);
+ len = 0;
+ break;
+ }
+ len_dissected += len;
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_reg_resp_ctx(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_reg_ctx, tvb, offset, L_LBMC_CNTL_UMQ_REG_RESP_CTX_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_reg_ctx);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_ctx_capabilities, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_CTX_HDR_T_CAPABILITIES, L_LBMC_CNTL_UMQ_REG_RESP_CTX_HDR_T_CAPABILITIES, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_RESP_CTX_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_resp_ctx_ex(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_reg_ctx_ex, tvb, offset, L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_reg_ctx_ex);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_ctx_ex_capabilities, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_CAPABILITIES, L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_CAPABILITIES, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_ctx_ex_reserved, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_reg_resp_reg_ctx_ex_flags, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_reg_resp_reg_ctx_ex_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_resp_reg_ctx_ex_flags_firstmsg, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_ctx_ex_stamp, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_STAMP, L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_STAMP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_resp_err(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_err, tvb, offset, L_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_err);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_err_reserved, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_err_code, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T_CODE, L_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T_CODE, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_RESP_ERR_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_resp_src(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_reg_src, tvb, offset, L_LBMC_CNTL_UMQ_REG_RESP_SRC_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_reg_src);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_src_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_SRC_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_REG_RESP_SRC_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_RESP_SRC_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_resp_rcv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_reg_rcv, tvb, offset, L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_reg_rcv);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_rcv_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_rcv_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_rcv_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_rcv_reserved, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_RESP_RCV_HDR_T);
+}
+
+static int dissect_nhdr_umq_rcv_dereg_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_rcv_dereg, tvb, offset, L_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_rcv_dereg);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_rcv_dereg_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_rcv_dereg_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RCV_DEREG_RESP_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_resp_ulb_rcv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_reg_ulb_rcv, tvb, offset, L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_reg_ulb_rcv);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_ulb_rcv_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_ulb_rcv_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_ulb_rcv_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_ulb_rcv_reserved, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_ulb_rcv_capabilities, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_CAPABILITIES, L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T_CAPABILITIES, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_RESP_ULB_RCV_HDR_T);
+}
+
+static int dissect_nhdr_umq_ulb_rcv_dereg_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_ulb_rcv_dereg, tvb, offset, L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_ulb_rcv_dereg);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_ulb_rcv_dereg_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_ulb_rcv_dereg_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_ULB_RCV_DEREG_RESP_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_resp_observer_rcv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_reg_observer_rcv, tvb, offset, L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_reg_observer_rcv);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_observer_rcv_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_observer_rcv_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_observer_rcv_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_reg_observer_rcv_reserved, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_REG_RESP_OBSERVER_RCV_HDR_T);
+}
+
+static int dissect_nhdr_umq_observer_rcv_dereg_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp_observer_rcv_dereg, tvb, offset, L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp_observer_rcv_dereg);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_observer_rcv_dereg_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_observer_rcv_dereg_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_OBSERVER_RCV_DEREG_RESP_HDR_T);
+}
+
+static int dissect_nhdr_umq_reg_resp(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint8 resp_type = 0;
+ int len_dissected = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags;
+ int len = 0;
+ proto_item * resp_type_item = NULL;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_HDR_LEN);
+ resp_type = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_REG_RESP_TYPE);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_reg_resp, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_reg_resp);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_reg_resp_flags, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_reg_resp_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_resp_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_resp_flags_r_flag, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ switch (resp_type)
+ {
+ case LBMC_UMQ_REG_RESP_CTX_TYPE:
+ break;
+ case LBMC_UMQ_REG_RESP_CTX_EX_TYPE:
+ break;
+ case LBMC_UMQ_REG_RESP_ERR_TYPE:
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_resp_flags_l_flag, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ break;
+ case LBMC_UMQ_REG_RESP_SRC_TYPE:
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_resp_flags_src_s_flag, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_reg_resp_flags_src_d_flag, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ break;
+ case LBMC_UMQ_REG_RESP_RCV_TYPE:
+ break;
+ case LBMC_UMQ_REG_RESP_OBSERVER_RCV_TYPE:
+ break;
+ case LBMC_UMQ_REG_RESP_RCV_DEREG_TYPE:
+ break;
+ case LBMC_UMQ_REG_RESP_OBSERVER_RCV_DEREG_TYPE:
+ break;
+ case LBMC_UMQ_REG_RESP_ULB_RCV_TYPE:
+ break;
+ case LBMC_UMQ_REG_RESP_ULB_RCV_DEREG_TYPE:
+ break;
+ default:
+ break;
+ }
+ resp_type_item = proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_resp_type, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_REG_RESP_TYPE, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_REG_RESP_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_cmd_id, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_CMD_ID, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_CMD_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_inst_idx, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_INST_IDX, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_INST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_reg_resp_regid, tvb, offset + O_LBMC_CNTL_UMQ_REG_RESP_HDR_T_REG_RESPID, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_REG_RESPID, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_REG_RESP_HDR_T;
+ switch (resp_type)
+ {
+ case LBMC_UMQ_REG_RESP_CTX_TYPE:
+ len = dissect_nhdr_umq_reg_resp_ctx(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RESP_CTX_EX_TYPE:
+ len = dissect_nhdr_umq_reg_resp_ctx_ex(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RESP_ERR_TYPE:
+ len = dissect_nhdr_umq_reg_resp_err(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RESP_SRC_TYPE:
+ len = dissect_nhdr_umq_reg_resp_src(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RESP_RCV_TYPE:
+ len = dissect_nhdr_umq_reg_resp_rcv(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RESP_RCV_DEREG_TYPE:
+ len = dissect_nhdr_umq_rcv_dereg_resp(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RESP_ULB_RCV_TYPE:
+ len = dissect_nhdr_umq_reg_resp_ulb_rcv(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RESP_ULB_RCV_DEREG_TYPE:
+ len = dissect_nhdr_umq_ulb_rcv_dereg_resp(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RESP_OBSERVER_RCV_TYPE:
+ len = dissect_nhdr_umq_reg_resp_observer_rcv(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_REG_RESP_OBSERVER_RCV_DEREG_TYPE:
+ len = dissect_nhdr_umq_observer_rcv_dereg_resp(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ default:
+ expert_add_info_format(pinfo, resp_type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC UMQ REG RESP type 0x%02x", resp_type);
+ len = 0;
+ break;
+ }
+ len_dissected += len;
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_ack_msgid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ack_msgid, tvb, offset, L_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ack_msgid);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_msgid_regid, tvb, offset + O_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T_REGID, L_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_msgid_stamp, tvb, offset + O_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T_STAMP, L_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T_STAMP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_ACK_MSGID_HDR_T);
+}
+
+static int dissect_nhdr_umq_ack_stable(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ack_stable, tvb, offset, L_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ack_stable);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_stable_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_stable_inst_idx, tvb, offset + O_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_INST_IDX, L_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_INST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_stable_reserved, tvb, offset + O_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_ACK_STABLE_HDR_T);
+}
+
+static int dissect_nhdr_umq_ack_cr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ack_cr, tvb, offset, L_LBMC_CNTL_UMQ_ACK_CR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ack_cr);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_cr_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_ACK_CR_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_ACK_CR_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_cr_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ACK_CR_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ACK_CR_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_cr_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_ACK_CR_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_ACK_CR_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_cr_reserved, tvb, offset + O_LBMC_CNTL_UMQ_ACK_CR_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_ACK_CR_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_ACK_CR_HDR_T);
+}
+
+static int dissect_nhdr_umq_ack_ulb_cr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ack_ulb_cr, tvb, offset, L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ack_ulb_cr);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_ulb_cr_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_ulb_cr_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_ulb_cr_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_ulb_cr_reserved, tvb, offset + O_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_ACK_ULB_CR_HDR_T);
+}
+
+static int dissect_nhdr_umq_ack(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint8 ack_type = 0;
+ guint8 num_ids = 0;
+ guint8 idx;
+ int len_dissected = 0;
+ proto_item * msgs_item = NULL;
+ proto_tree * msgs_tree = NULL;
+ guint8 msgs;
+ int len;
+ int packet_len = 0;
+ proto_item * ack_type_item = NULL;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ack, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ack);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_ACK_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ack_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_ACK_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ msgs = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS);
+ msgs_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_ack_msgs, tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, L_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, "Messages: 0x%02x", msgs);
+ msgs_tree = proto_item_add_subtree(msgs_item, ett_lbmc_umq_ack_msgs);
+ proto_tree_add_item(msgs_tree, hf_lbmc_umq_ack_msgs_ignore, tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, L_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(msgs_tree, hf_lbmc_umq_ack_msgs_t_flag, tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, L_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(msgs_tree, hf_lbmc_umq_ack_msgs_d_flag, tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, L_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(msgs_tree, hf_lbmc_umq_ack_msgs_numids, tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, L_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS, ENC_BIG_ENDIAN);
+ ack_type_item = proto_tree_add_item(subtree, hf_lbmc_umq_ack_ack_type, tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_ACK_TYPE, L_LBMC_CNTL_UMQ_ACK_HDR_T_ACK_TYPE, ENC_BIG_ENDIAN);
+ packet_len = tvb_reported_length_remaining(tvb, offset);
+ len_dissected = L_LBMC_CNTL_UMQ_ACK_HDR_T;
+ num_ids = msgs & LBMC_UMQ_ACK_NUMIDS_MASK;
+ for (idx = 0; (idx < num_ids) && (len_dissected < packet_len); idx++)
+ {
+ len = dissect_nhdr_umq_ack_msgid(tvb, offset + len_dissected, pinfo, subtree);
+ len_dissected += len;
+ }
+ ack_type = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_ACK_HDR_T_ACK_TYPE);
+ switch (ack_type)
+ {
+ case LBMC_UMQ_ACK_STABLE_TYPE:
+ len = dissect_nhdr_umq_ack_stable(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_ACK_CR_TYPE:
+ len = dissect_nhdr_umq_ack_cr(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_ACK_ULB_CR_TYPE:
+ len = dissect_nhdr_umq_ack_ulb_cr(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ default:
+ expert_add_info_format(pinfo, ack_type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC UMQ ACK type 0x%02x", ack_type);
+ len = 0;
+ break;
+ }
+ len_dissected += len;
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_rcr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint16 flags;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rcr, tvb, offset, L_LBMC_CNTL_UMQ_RCR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rcr);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_RCR_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_RCR_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_rcr_flags, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_rcr_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_rcr_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_rcr_flags_r_flag, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_rcr_flags_d_flag, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_rcr_flags_s_flag, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_rcr_flags_eoi_flag, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_rcr_flags_boi_flag, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_RCR_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RCR_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_msgid_regid, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_MSGID_REGID, L_LBMC_CNTL_UMQ_RCR_HDR_T_MSGID_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_msgid_stamp, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_MSGID_STAMP, L_LBMC_CNTL_UMQ_RCR_HDR_T_MSGID_STAMP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_topic_tsp, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_TOPIC_TSP, L_LBMC_CNTL_UMQ_RCR_HDR_T_TOPIC_TSP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_q_tsp, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_Q_TSP, L_LBMC_CNTL_UMQ_RCR_HDR_T_Q_TSP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RCR_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_RCR_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_num_ras, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_NUM_RAS, L_LBMC_CNTL_UMQ_RCR_HDR_T_NUM_RAS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rcr_queue_ver, tvb, offset + O_LBMC_CNTL_UMQ_RCR_HDR_T_QUEUE_VER, L_LBMC_CNTL_UMQ_RCR_HDR_T_QUEUE_VER, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RCR_HDR_T);
+}
+
+static int dissect_nhdr_umq_ka_src(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ka_src, tvb, offset, L_LBMC_CNTL_UMQ_KA_SRC_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ka_src);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_src_transport_idx, tvb, offset + O_LBMC_CNTL_UMQ_KA_SRC_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_UMQ_KA_SRC_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_src_topic_idx, tvb, offset + O_LBMC_CNTL_UMQ_KA_SRC_HDR_T_TOPIC_IDX, L_LBMC_CNTL_UMQ_KA_SRC_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_KA_SRC_HDR_T);
+}
+
+static int dissect_nhdr_umq_ka_rcv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ka_rcv, tvb, offset, L_LBMC_CNTL_UMQ_KA_RCV_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ka_rcv);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_rcv_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_KA_RCV_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_KA_RCV_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_rcv_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_KA_RCV_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_KA_RCV_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_KA_RCV_HDR_T);
+}
+
+static int dissect_nhdr_umq_ka_ulb_rcv(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ka_ulb_rcv, tvb, offset, L_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ka_ulb_rcv);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_ulb_rcv_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_ulb_rcv_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_KA_ULB_RCV_HDR_T);
+}
+
+static int dissect_nhdr_umq_ka_ulb_rcv_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ka_ulb_rcv_resp, tvb, offset, L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ka_ulb_rcv_resp);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_ulb_rcv_resp_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_ulb_rcv_resp_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_ulb_rcv_resp_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ka_ulb_rcv_resp_reserved, tvb, offset + O_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_KA_ULB_RCV_RESP_HDR_T);
+}
+
+static int dissect_nhdr_umq_ka(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint8 flags;
+ guint8 type;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ int len_dissected = 0;
+ int len;
+ proto_item * ka_type_item = NULL;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_cntl_umq_ka, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ka);
+ proto_tree_add_item(subtree, hf_lbmc_cntl_umq_ka_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_KA_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_cntl_umq_ka_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_KA_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_cntl_umq_ka_flags, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_ka_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_cntl_umq_ka_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_cntl_umq_ka_flags_r_flag, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ ka_type_item = proto_tree_add_item(subtree, hf_lbmc_cntl_umq_ka_ka_type, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_KA_TYPE, L_LBMC_CNTL_UMQ_KA_HDR_T_KA_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_cntl_umq_ka_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_KA_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_cntl_umq_ka_regid, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_REGID, L_LBMC_CNTL_UMQ_KA_HDR_T_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_cntl_umq_ka_inst_idx, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_INST_IDX, L_LBMC_CNTL_UMQ_KA_HDR_T_INST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_cntl_umq_ka_reserved, tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_KA_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_KA_HDR_T;
+ type = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_KA_HDR_T_KA_TYPE);
+ switch (type)
+ {
+ case LBMC_UMQ_KA_SRC_TYPE:
+ case LBMC_UMQ_KA_SRC_RESP_TYPE:
+ len = dissect_nhdr_umq_ka_src(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_KA_RCV_TYPE:
+ case LBMC_UMQ_KA_RCV_RESP_TYPE:
+ len = dissect_nhdr_umq_ka_rcv(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_KA_ULB_RCV_TYPE:
+ len = dissect_nhdr_umq_ka_ulb_rcv(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_KA_ULB_RCV_RESP_TYPE:
+ len = dissect_nhdr_umq_ka_ulb_rcv_resp(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_KA_CTX_TYPE:
+ case LBMC_UMQ_KA_CTX_RESP_TYPE:
+ len = 0;
+ break;
+ default:
+ expert_add_info_format(pinfo, ka_type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC UMQ KA type 0x%02x", type);
+ len = 0;
+ break;
+ }
+ len_dissected += len;
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_rxreq_regid_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq_regid_resp, tvb, offset, L_LBMC_CNTL_UMQ_RXREQ_REGID_RESP_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq_regid_resp);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_regid_resp_regid, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_REGID_RESP_HDR_T_REGID, L_LBMC_CNTL_UMQ_RXREQ_REGID_RESP_HDR_T_REGID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RXREQ_REGID_RESP_HDR_T);
+}
+
+static int dissect_nhdr_umq_rxreq_addr_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq_addr_resp, tvb, offset, L_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq_addr_resp);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_addr_resp_ip, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_IP, L_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_IP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_addr_resp_port, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_PORT, L_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_addr_resp_reserved, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RXREQ_ADDR_RESP_HDR_T);
+}
+
+static int dissect_nhdr_umq_rxreq_mr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq_mr, tvb, offset, L_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq_mr);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_mr_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_mr_msgid_regid, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_MSGID_REGID, L_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_MSGID_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_mr_msgid_stamp, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_MSGID_STAMP, L_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T_MSGID_STAMP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RXREQ_MR_HDR_T);
+}
+
+static int dissect_nhdr_umq_rxreq_ulb_mr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq_ulb_mr, tvb, offset, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq_ulb_mr);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_reserved, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_msgid_regid, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_MSGID_REGID, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_MSGID_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_msgid_stamp, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_MSGID_STAMP, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T_MSGID_STAMP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_HDR_T);
+}
+
+static int dissect_nhdr_umq_rxreq_ulb_mr_abort(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq_ulb_mr_abort, tvb, offset, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq_ulb_mr_abort);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_abort_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_abort_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_abort_msgid_regid, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_MSGID_REGID, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_MSGID_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_mr_abort_msgid_stamp, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_MSGID_STAMP, L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T_MSGID_STAMP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RXREQ_ULB_MR_ABORT_HDR_T);
+}
+
+static int dissect_nhdr_umq_rxreq_qrcrr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq_qrcrr, tvb, offset, L_LBMC_CNTL_UMQ_RXREQ_QRCRR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq_qrcrr);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_qrcrr_tsp, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_QRCRR_HDR_T_TSP, L_LBMC_CNTL_UMQ_RXREQ_QRCRR_HDR_T_TSP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RXREQ_QRCRR_HDR_T);
+}
+
+static int dissect_nhdr_umq_rxreq_trcrr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq_trcrr, tvb, offset, L_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq_trcrr);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_trcrr_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_trcrr_tsp, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T_TSP, L_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T_TSP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RXREQ_TRCRR_HDR_T);
+}
+
+static int dissect_nhdr_umq_rxreq_ulb_trcrr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq_ulb_trcrr, tvb, offset, L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq_ulb_trcrr);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_trcrr_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_trcrr_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_trcrr_tsp, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_TSP, L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T_TSP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_HDR_T);
+}
+
+static int dissect_nhdr_umq_rxreq_ulb_trcrr_abort(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq_ulb_trcrr_abort, tvb, offset, L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq_ulb_trcrr_abort);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_trcrr_abort_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_trcrr_abort_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_ulb_trcrr_abort_tsp, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_TSP, L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T_TSP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RXREQ_ULB_TRCRR_ABORT_HDR_T);
+}
+
+static int dissect_nhdr_umq_rxreq(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ guint8 flags;
+ guint8 type;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ int len_dissected = 0;
+ int len = 0;
+ proto_item * rxreq_type_item = NULL;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_rxreq, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_rxreq);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_RXREQ_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_RXREQ_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_rxreq_flags, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_rxreq_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_rxreq_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_rxreq_flags_r_flag, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ rxreq_type_item = proto_tree_add_item(subtree, hf_lbmc_umq_rxreq_rxreq_type, tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_HDR_T_RXREQ_TYPE, L_LBMC_CNTL_UMQ_RXREQ_HDR_T_RXREQ_TYPE, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_RXREQ_HDR_T;
+ if ((flags & LBMC_UMQ_RXREQ_R_FLAG) != 0)
+ {
+ len = dissect_nhdr_umq_rxreq_regid_resp(tvb, offset + len_dissected, pinfo, subtree);
+ }
+ else
+ {
+ len = dissect_nhdr_umq_rxreq_addr_resp(tvb, offset + len_dissected, pinfo, subtree);
+ }
+ len_dissected += len;
+ type = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_RXREQ_HDR_T_RXREQ_TYPE);
+ switch (type)
+ {
+ case LBMC_UMQ_RXREQ_MR_TYPE:
+ len = dissect_nhdr_umq_rxreq_mr(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_RXREQ_ULB_MR_TYPE:
+ len = dissect_nhdr_umq_rxreq_ulb_mr(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_RXREQ_ULB_MR_ABORT_TYPE:
+ len = dissect_nhdr_umq_rxreq_ulb_mr_abort(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_RXREQ_QRCRR_TYPE:
+ len = dissect_nhdr_umq_rxreq_qrcrr(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_RXREQ_TRCRR_TYPE:
+ len = dissect_nhdr_umq_rxreq_trcrr(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_RXREQ_ULB_TRCRR_TYPE:
+ len = dissect_nhdr_umq_rxreq_ulb_trcrr(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_RXREQ_ULB_TRCRR_ABORT_TYPE:
+ len = dissect_nhdr_umq_rxreq_ulb_trcrr_abort(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ default:
+ expert_add_info_format(pinfo, rxreq_type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC UMQ RXREQ type 0x%02x", type);
+ len = 0;
+ break;
+ }
+ len_dissected += len;
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_qmgmt(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ int len_dissected = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_QMGMT_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_qmgmt, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_qmgmt);
+ proto_tree_add_item(subtree, hf_lbmc_umq_qmgmt_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_QMGMT_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_QMGMT_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_qmgmt_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_QMGMT_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_QMGMT_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ len_dissected = lbmr_dissect_umq_qmgmt(tvb, (offset + L_LBMC_CNTL_UMQ_QMGMT_HDR_T) - 2, pinfo, subtree);
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_resub_req(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint16 flags;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_resub_req, tvb, offset, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_resub_req);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_req_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_req_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_resub_req_flags, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_resub_req_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_resub_req_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_req_msgid_regid, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_MSGID_REGID, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_MSGID_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_req_msgid_stamp, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_MSGID_STAMP, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_MSGID_STAMP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_req_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_req_resp_ip, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RESP_IP, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RESP_IP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_req_resp_port, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RESP_PORT, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_RESP_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_req_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T);
+}
+
+static int dissect_nhdr_umq_resub_resp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 flags;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_resub_resp, tvb, offset, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_resub_resp);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_resub_resp_flags, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_resub_resp_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_resub_resp_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_code, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_CODE, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_CODE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_msgid_regid, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_MSGID_REGID, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_MSGID_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_msgid_stamp, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_MSGID_STAMP, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_MSGID_STAMP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_reserved, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_resub_resp_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T);
+}
+
+static int dissect_nhdr_topic_interest(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_topic_interest, tvb, offset, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_topic_interest);
+ proto_tree_add_item(subtree, hf_lbmc_topic_interest_next_hdr, tvb, offset + O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_NEXT_HDR, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_interest_hdr_len, tvb, offset + O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_HDR_LEN, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_topic_interest_flags, tvb, offset + O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_topic_interest_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_interest_flags_ignore, tvb, offset + O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_interest_flags_cancel, tvb, offset + O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_interest_flags_refresh, tvb, offset + O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_interest_domain_id, tvb, offset + O_LBMC_CNTL_TOPIC_INTEREST_HDR_T_DOMAIN_ID, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_DOMAIN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_TOPIC_INTEREST_HDR_T);
+}
+
+static int dissect_nhdr_pattern_interest(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_pattern_interest, tvb, offset, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_pattern_interest);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_interest_next_hdr, tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_NEXT_HDR, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_interest_hdr_len, tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_HDR_LEN, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_pattern_interest_flags, tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_pattern_interest_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_pattern_interest_flags_ignore, tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_pattern_interest_flags_cancel, tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_pattern_interest_flags_refresh, tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_interest_type, tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_TYPE, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_interest_domain_id, tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_DOMAIN_ID, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_DOMAIN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_interest_index, tvb, offset + O_LBMC_CNTL_PATTERN_INTEREST_HDR_T_INDEX, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_INDEX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_PATTERN_INTEREST_HDR_T);
+}
+
+static int dissect_nhdr_advertisement(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ proto_item * ad_flags_item = NULL;
+ proto_tree * ad_flags_tree = NULL;
+ guint8 flags = 0;
+ guint32 ad_flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_advertisement, tvb, offset, L_LBMC_CNTL_ADVERTISEMENT_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_advertisement);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_next_hdr, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_NEXT_HDR, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_hdr_len, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_HDR_LEN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_advertisement_flags, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_advertisement_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_advertisement_flags_ignore, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_advertisement_flags_eos, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_advertisement_flags_pattern, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_advertisement_flags_change, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_advertisement_flags_ctxinst, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ ad_flags = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS);
+ ad_flags_item = proto_tree_add_none_format(subtree, hf_lbmc_advertisement_ad_flags, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, "Ad Flags: 0x%08x", ad_flags);
+ ad_flags_tree = proto_item_add_subtree(ad_flags_item, ett_lbmc_advertisement_ad_flags);
+ proto_tree_add_item(ad_flags_tree, hf_lbmc_advertisement_ad_flags_lj, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_flags_tree, hf_lbmc_advertisement_ad_flags_ume, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_flags_tree, hf_lbmc_advertisement_ad_flags_acktosrc, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_flags_tree, hf_lbmc_advertisement_ad_flags_queue, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(ad_flags_tree, hf_lbmc_advertisement_ad_flags_ulb, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_hop_count, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_HOP_COUNT, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_HOP_COUNT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_cost, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_COST, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_COST, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_transport_idx, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_topic_idx, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_TOPIC_IDX, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_low_seqno, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_LOW_SEQNO, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_LOW_SEQNO, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_high_seqno, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_HIGH_SEQNO, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_HIGH_SEQNO, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_domain_id, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_DOMAIN_ID, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_DOMAIN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_pat_idx, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_PAT_IDX, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_PAT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_advertisement_ctxinst, tvb, offset + O_LBMC_CNTL_ADVERTISEMENT_HDR_T_CTXINST, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_CTXINST, ENC_NA);
+ return (L_LBMC_CNTL_ADVERTISEMENT_HDR_T);
+}
+
+static int dissect_nhdr_storename(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_UME_STORENAME_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_storename, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_storename);
+ proto_tree_add_item(subtree, hf_lbmc_ume_storename_next_hdr, tvb, offset + O_LBMC_UME_STORENAME_HDR_T_NEXT_HDR, L_LBMC_UME_STORENAME_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_storename_hdr_len, tvb, offset + O_LBMC_UME_STORENAME_HDR_T_HDR_LEN, L_LBMC_UME_STORENAME_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_UME_STORENAME_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_storename_flags, tvb, offset + O_LBMC_UME_STORENAME_HDR_T_FLAGS, L_LBMC_UME_STORENAME_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_storename_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_storename_flags_ignore, tvb, offset + O_LBMC_UME_STORENAME_HDR_T_FLAGS, L_LBMC_UME_STORENAME_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_storename_store, tvb, offset + O_LBMC_UME_STORENAME_HDR_T_FLAGS + L_LBMC_UME_STORENAME_HDR_T_FLAGS, (gint)(hdrlen - L_LBMC_BASIC_HDR_T), ENC_ASCII|ENC_NA);
+ return ((int)hdrlen);
+}
+
+static int dissect_nhdr_umq_ulb_rcr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint16 flags;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_ulb_rcr, tvb, offset, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_ulb_rcr);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_ulb_rcr_flags, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_ulb_rcr_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_ulb_rcr_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_ulb_rcr_flags_r_flag, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_ulb_rcr_flags_d_flag, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_ulb_rcr_flags_eoi_flag, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_ulb_rcr_flags_boi_flag, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_ulb_src_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_ULB_SRC_ID, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_ULB_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_msgid_regid, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_MSGID_REGID, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_MSGID_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_msgid_stamp, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_MSGID_STAMP, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_MSGID_STAMP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_topic_tsp, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_TOPIC_TSP, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_TOPIC_TSP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_ulb_rcr_num_ras, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_NUM_RAS, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_NUM_RAS, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T);
+}
+
+static int dissect_nhdr_umq_lf(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 flags;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_lf, tvb, offset, L_LBMC_CNTL_UMQ_LF_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_lf);
+ proto_tree_add_item(subtree, hf_lbmc_umq_lf_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_LF_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_LF_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_lf_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_LF_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_LF_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_LF_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_lf_flags, tvb, offset + O_LBMC_CNTL_UMQ_LF_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_LF_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_lf_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_lf_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_LF_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_LF_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_lf_type, tvb, offset + O_LBMC_CNTL_UMQ_LF_HDR_T_TYPE, L_LBMC_CNTL_UMQ_LF_HDR_T_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_lf_num_srcs, tvb, offset + O_LBMC_CNTL_UMQ_LF_HDR_T_NUM_SRCS, L_LBMC_CNTL_UMQ_LF_HDR_T_NUM_SRCS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_lf_lf, tvb, offset + O_LBMC_CNTL_UMQ_LF_HDR_T_LF, L_LBMC_CNTL_UMQ_LF_HDR_T_LF, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_LF_HDR_T);
+}
+
+static int dissect_nhdr_ctxinfo(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+ wmem_strbuf_t * flagbuf;
+ const char * sep = "";
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ctxinfo, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ctxinfo);
+ proto_tree_add_item(subtree, hf_lbmc_ctxinfo_next_hdr, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_NEXT_HDR, L_LBMC_CNTL_CTXINFO_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ctxinfo_hdr_len, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_HDR_LEN, L_LBMC_CNTL_CTXINFO_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS);
+ flagbuf = wmem_strbuf_new_label(wmem_packet_scope());
+ if ((flags & LBMC_CTXINFO_PROXY_FLAG) != 0)
+ {
+ wmem_strbuf_append(flagbuf, sep);
+ wmem_strbuf_append(flagbuf, "Proxy");
+ sep = ", ";
+ }
+ if ((flags & LBMC_CTXINFO_TNWGRCV_FLAG) != 0)
+ {
+ wmem_strbuf_append(flagbuf, sep);
+ wmem_strbuf_append(flagbuf, "GW Rcv");
+ sep = ", ";
+ }
+ if ((flags & LBMC_CTXINFO_TNWGSRC_FLAG) != 0)
+ {
+ wmem_strbuf_append(flagbuf, sep);
+ wmem_strbuf_append(flagbuf, "GW Src");
+ sep = ", ";
+ }
+ if ((flags & LBMC_CTXINFO_NAME_FLAG) != 0)
+ {
+ wmem_strbuf_append(flagbuf, sep);
+ wmem_strbuf_append(flagbuf, "Name");
+ sep = ", ";
+ }
+ if ((flags & LBMC_CTXINFO_CTXINST_FLAG) != 0)
+ {
+ wmem_strbuf_append(flagbuf, sep);
+ wmem_strbuf_append(flagbuf, "CtxInst");
+ sep = ", ";
+ }
+ if ((flags & LBMC_CTXINFO_ADDR_FLAG) != 0)
+ {
+ wmem_strbuf_append(flagbuf, sep);
+ wmem_strbuf_append(flagbuf, "IP");
+ sep = ", ";
+ }
+ if ((flags & LBMC_CTXINFO_QUERY_FLAG) != 0)
+ {
+ wmem_strbuf_append(flagbuf, sep);
+ wmem_strbuf_append(flagbuf, "Query");
+ }
+ if (flags != LBMC_OPT_IGNORE)
+ {
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ctxinfo_flags, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, "Flags: 0x%04x (%s)", flags, (char *)wmem_strbuf_get_str(flagbuf));
+ }
+ else
+ {
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ctxinfo_flags, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ }
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ctxinfo_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ctxinfo_flags_ignore, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ctxinfo_flags_query, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ctxinfo_flags_addr, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ctxinfo_flags_ctxinst, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ctxinfo_flags_name, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ctxinfo_flags_tnwgsrc, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ctxinfo_flags_tnwgrcv, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ctxinfo_flags_proxy, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ctxinfo_reserved, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_RESERVED, L_LBMC_CNTL_CTXINFO_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ctxinfo_hop_count, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_HOP_COUNT, L_LBMC_CNTL_CTXINFO_HDR_T_HOP_COUNT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ctxinfo_port, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_PORT, L_LBMC_CNTL_CTXINFO_HDR_T_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ctxinfo_addr, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_ADDR, L_LBMC_CNTL_CTXINFO_HDR_T_ADDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ctxinfo_domain_id, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_DOMAIN_ID, L_LBMC_CNTL_CTXINFO_HDR_T_DOMAIN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ctxinfo_ctxinst, tvb, offset + O_LBMC_CNTL_CTXINFO_HDR_T_CTXINST, L_LBMC_CNTL_CTXINFO_HDR_T_CTXINST, ENC_NA);
+ if ((flags & LBMC_CTXINFO_NAME_FLAG) != 0)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_ctxinfo_name, tvb, offset + L_LBMC_CNTL_CTXINFO_HDR_T, hdrlen - L_LBMC_CNTL_CTXINFO_HDR_T, ENC_ASCII|ENC_NA);
+ }
+ return ((int)hdrlen);
+}
+
+static int dissect_nhdr_ume_pser(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_pser, tvb, offset, L_LBMC_CNTL_UME_PSER_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_pser);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_next_hdr, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_PSER_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_hdr_len, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_PSER_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_pser_flags, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_pser_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_pser_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_pser_flags_source_ctxinst, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_pser_flags_store_ctxinst, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_pser_flags_reelect, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_source_ip, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_IP, L_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_IP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_store_ip, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_STORE_IP, L_LBMC_CNTL_UME_PSER_HDR_T_STORE_IP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_transport_idx, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_UME_PSER_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_topic_idx, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_TOPIC_IDX, L_LBMC_CNTL_UME_PSER_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_source_port, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_PORT, L_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_store_port, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_STORE_PORT, L_LBMC_CNTL_UME_PSER_HDR_T_STORE_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_source_ctxinst, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_CTXINST, L_LBMC_CNTL_UME_PSER_HDR_T_SOURCE_CTXINST, ENC_NA);
+ proto_tree_add_item(subtree, hf_lbmc_ume_pser_store_ctxinst, tvb, offset + O_LBMC_CNTL_UME_PSER_HDR_T_STORE_CTXINST, L_LBMC_CNTL_UME_PSER_HDR_T_STORE_CTXINST, ENC_NA);
+ return (L_LBMC_CNTL_UME_PSER_HDR_T);
+}
+
+static int dissect_nhdr_domain(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_domain, tvb, offset, L_LBMC_DOMAIN_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_domain);
+ proto_tree_add_item(subtree, hf_lbmc_domain_next_hdr, tvb, offset + O_LBMC_DOMAIN_HDR_T_NEXT_HDR, L_LBMC_DOMAIN_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_domain_hdr_len, tvb, offset + O_LBMC_DOMAIN_HDR_T_HDR_LEN, L_LBMC_DOMAIN_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_DOMAIN_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_domain_flags, tvb, offset + O_LBMC_DOMAIN_HDR_T_FLAGS, L_LBMC_DOMAIN_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_domain_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_domain_flags_ignore, tvb, offset + O_LBMC_DOMAIN_HDR_T_FLAGS, L_LBMC_DOMAIN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_domain_flags_active, tvb, offset + O_LBMC_DOMAIN_HDR_T_FLAGS, L_LBMC_DOMAIN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_domain_domain, tvb, offset + O_LBMC_DOMAIN_HDR_T_DOMAIN, L_LBMC_DOMAIN_HDR_T_DOMAIN, ENC_BIG_ENDIAN);
+ return (L_LBMC_DOMAIN_HDR_T);
+}
+
+static int dissect_nhdr_tnwg_capabilities(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+ proto_item * cap1_item = NULL;
+ proto_tree * cap1_tree = NULL;
+ guint32 cap1 = 0;
+ proto_item * cap3_item = NULL;
+ proto_tree * cap3_tree = NULL;
+ guint32 cap3 = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_tnwg_capabilities, tvb, offset, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_tnwg_capabilities);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_capabilities_next_hdr, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_NEXT_HDR, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_capabilities_hdr_len, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_HDR_LEN, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_tnwg_capabilities_flags, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_tnwg_capabilities_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_tnwg_capabilities_flags_ignore, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_tnwg_capabilities_flags_version, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ cap1 = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1);
+ cap1_item = proto_tree_add_none_format(subtree, hf_lbmc_tnwg_capabilities_capabilities1, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1, "Capabilities1: 0x%08x", cap1);
+ cap1_tree = proto_item_add_subtree(cap1_item, ett_lbmc_tnwg_capabilities_capabilities1);
+ proto_tree_add_item(cap1_tree, hf_lbmc_tnwg_capabilities_capabilities1_ume, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(cap1_tree, hf_lbmc_tnwg_capabilities_capabilities1_umq, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_capabilities_capabilities2, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES2, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES2, ENC_BIG_ENDIAN);
+ cap3 = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3);
+ cap3_item = proto_tree_add_none_format(subtree, hf_lbmc_tnwg_capabilities_capabilities3, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3, "Capabilities3: 0x%08x", cap3);
+ cap3_tree = proto_item_add_subtree(cap3_item, ett_lbmc_tnwg_capabilities_capabilities3);
+ proto_tree_add_item(cap3_tree, hf_lbmc_tnwg_capabilities_capabilities3_pcre, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(cap3_tree, hf_lbmc_tnwg_capabilities_capabilities3_regex, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_capabilities_capabilities4, tvb, offset + O_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES4, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES4, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T);
+}
+
+static int dissect_nhdr_patidx(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_patidx, tvb, offset, L_LBMC_PATIDX_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_patidx);
+ proto_tree_add_item(subtree, hf_lbmc_patidx_next_hdr, tvb, offset + O_LBMC_PATIDX_HDR_T_NEXT_HDR, L_LBMC_PATIDX_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_patidx_hdr_len, tvb, offset + O_LBMC_PATIDX_HDR_T_HDR_LEN, L_LBMC_PATIDX_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_PATIDX_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_patidx_flags, tvb, offset + O_LBMC_PATIDX_HDR_T_FLAGS, L_LBMC_PATIDX_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_patidx_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_patidx_flags_ignore, tvb, offset + O_LBMC_PATIDX_HDR_T_FLAGS, L_LBMC_PATIDX_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_patidx_patidx, tvb, offset + O_LBMC_PATIDX_HDR_T_PATIDX, L_LBMC_PATIDX_HDR_T_PATIDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_PATIDX_HDR_T);
+}
+
+static int dissect_nhdr_ume_client_lifetime(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_client_lifetime, tvb, offset, L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_client_lifetime);
+ proto_tree_add_item(subtree, hf_lbmc_ume_client_lifetime_next_hdr, tvb, offset + O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_client_lifetime_hdr_len, tvb, offset + O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_client_lifetime_flags, tvb, offset + O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_FLAGS, L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_client_lifetime_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_client_lifetime_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_FLAGS, L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_client_lifetime_activity_tmo, tvb, offset + O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_ACTIVITY_TMO, L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_ACTIVITY_TMO, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_client_lifetime_lifetime, tvb, offset + O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_LIFETIME, L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_LIFETIME, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_client_lifetime_ttl, tvb, offset + O_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_TTL, L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_TTL, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T);
+}
+
+static int dissect_nhdr_ume_sid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_sid, tvb, offset, L_LBMC_CNTL_UME_SID_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_sid);
+ proto_tree_add_item(subtree, hf_lbmc_ume_sid_next_hdr, tvb, offset + O_LBMC_CNTL_UME_SID_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_SID_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_sid_hdr_len, tvb, offset + O_LBMC_CNTL_UME_SID_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_SID_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_SID_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_sid_flags, tvb, offset + O_LBMC_CNTL_UME_SID_HDR_T_FLAGS, L_LBMC_CNTL_UME_SID_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_sid_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_sid_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_SID_HDR_T_FLAGS, L_LBMC_CNTL_UME_SID_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_sid_sid, tvb, offset + O_LBMC_CNTL_UME_SID_HDR_T_SID, L_LBMC_CNTL_UME_SID_HDR_T_SID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_SID_HDR_T);
+}
+
+static int dissect_nhdr_umq_idx_cmd(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+ guint8 cmd_type = 0;
+ proto_item * opt_subtree_item = NULL;
+ proto_tree * opt_subtree = NULL;
+ guint32 opt_flags = 0;
+ proto_item * opt_flags_item = NULL;
+ proto_tree * opt_flags_tree = NULL;
+ guint8 index_len = 0;
+ int opt_len = 0;
+ int len_dissected = 0;
+ proto_item * cmd_type_item = NULL;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_idx_cmd, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_idx_cmd);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_idx_cmd_flags, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_idx_cmd_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_idx_cmd_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ cmd_type = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_CMD_TYPE);
+ cmd_type_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_cmd_type, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_CMD_TYPE, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_CMD_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_cmd_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_CMD_ID, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_CMD_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_inst_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_INST_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_INST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_regid, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_REGID, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_REGID, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T;
+ offset += L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T;
+ switch (cmd_type)
+ {
+ case LBMC_UMQ_IDX_CMD_RCV_STOP_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_stop_assign, tvb, offset, L_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_stop_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_stop_assign_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_stop_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_RCV_STOP_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_RCV_START_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_start_assign, tvb, offset, L_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_start_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_start_assign_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_start_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_RCV_START_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_ULB_RCV_STOP_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_ulb_stop_assign, tvb, offset, L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_ulb_stop_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_stop_assign_src_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_SRC_ID, L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_stop_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_stop_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_stop_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_ULB_RCV_STOP_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_ULB_RCV_START_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_ulb_start_assign, tvb, offset, L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_ulb_start_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_start_assign_src_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_SRC_ID, L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_start_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_start_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_start_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_ULB_RCV_START_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_release_assign, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T + index_len, ENC_NA);
+ index_len = opt_len - L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T;
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_release_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_release_assign_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_release_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ opt_flags = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS);
+ opt_flags_item = proto_tree_add_none_format(opt_subtree, hf_lbmc_umq_idx_cmd_release_assign_flags, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS, "Flags: 0x%08x", opt_flags);
+ opt_flags_tree = proto_item_add_subtree(opt_flags_item, ett_lbmc_umq_idx_cmd_release_assign_flags);
+ proto_tree_add_item(opt_flags_tree, hf_lbmc_umq_idx_cmd_release_assign_flags_numeric, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_release_assign_index_len, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX_LEN, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_release_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED, ENC_NA);
+ if ((opt_flags & LBM_UMQ_INDEX_FLAG_NUMERIC) != 0)
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_release_assign_numeric_index, tvb, offset + L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_release_assign_string_index, tvb, offset + L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_ASCII|ENC_NA);
+ }
+ len_dissected += L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T + index_len;
+ break;
+ case LBMC_UMQ_IDX_CMD_ULB_RCV_RELEASE_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_ulb_release_assign, tvb, offset, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T + index_len, ENC_NA);
+ index_len = opt_len - L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T;
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_ulb_release_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_release_assign_src_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_SRC_ID, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_release_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ opt_flags = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS);
+ opt_flags_item = proto_tree_add_none_format(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_release_assign_flags, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS, "Flags: 0x%08x", opt_flags);
+ opt_flags_tree = proto_item_add_subtree(opt_flags_item, ett_lbmc_umq_idx_cmd_ulb_release_assign_flags);
+ proto_tree_add_item(opt_flags_tree, hf_lbmc_umq_idx_cmd_ulb_release_assign_flags_numeric, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_release_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_release_assign_index_len, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX_LEN, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_INDEX_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_release_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED, ENC_NA);
+ if ((opt_flags & LBM_UMQ_INDEX_FLAG_NUMERIC) != 0)
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_release_assign_numeric_index, tvb, offset + L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_release_assign_string_index, tvb, offset + L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_ASCII|ENC_NA);
+ }
+ len_dissected += L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T + index_len;
+ break;
+ case LBMC_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_reserve_assign, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T + index_len, ENC_NA);
+ index_len = opt_len - L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T;
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_reserve_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_reserve_assign_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_reserve_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ opt_flags = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS);
+ opt_flags_item = proto_tree_add_none_format(opt_subtree, hf_lbmc_umq_idx_cmd_reserve_assign_flags, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, "Flags: 0x%08x", opt_flags);
+ opt_flags_tree = proto_item_add_subtree(opt_flags_item, ett_lbmc_umq_idx_cmd_reserve_assign_flags);
+ proto_tree_add_item(opt_flags_tree, hf_lbmc_umq_idx_cmd_reserve_assign_flags_numeric, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_reserve_assign_index_len, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_reserve_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED, ENC_NA);
+ if ((opt_flags & LBM_UMQ_INDEX_FLAG_NUMERIC) != 0)
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_reserve_assign_numeric_index, tvb, offset + L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_reserve_assign_string_index, tvb, offset + L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_ASCII|ENC_NA);
+ }
+ len_dissected += L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T + index_len;
+ break;
+ case LBMC_UMQ_IDX_CMD_ULB_RCV_RESERVE_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign, tvb, offset, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T + index_len, ENC_NA);
+ index_len = opt_len - L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T;
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_ulb_reserve_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign_src_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_SRC_ID, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ opt_flags = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS);
+ opt_flags_item = proto_tree_add_none_format(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign_flags, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, "Flags: 0x%08x", opt_flags);
+ opt_flags_tree = proto_item_add_subtree(opt_flags_item, ett_lbmc_umq_idx_cmd_ulb_reserve_assign_flags);
+ proto_tree_add_item(opt_flags_tree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign_flags_numeric, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign_index_len, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED, ENC_NA);
+ if ((opt_flags & LBM_UMQ_INDEX_FLAG_NUMERIC) != 0)
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign_numeric_index, tvb, offset + L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_ulb_reserve_assign_string_index, tvb, offset + L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_ASCII|ENC_NA);
+ }
+ len_dissected += L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T + index_len;
+ break;
+ default:
+ expert_add_info_format(pinfo, cmd_type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC UMQ IDX CMD type 0x%02x", cmd_type);
+ break;
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_idx_cmd_resp(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+ guint8 resp_type = 0;
+ proto_item * opt_subtree_item = NULL;
+ proto_tree * opt_subtree = NULL;
+ int string_len = 0;
+ int len_dissected = 0;
+ guint32 opt_flags = 0;
+ proto_item * opt_flags_item = NULL;
+ proto_tree * opt_flags_tree = NULL;
+ guint8 index_len = 0;
+ proto_item * resp_type_item = NULL;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_idx_cmd_resp, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_idx_cmd_resp);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_idx_cmd_resp_flags, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_idx_cmd_resp_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_idx_cmd_resp_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_idx_cmd_resp_flags_ulb, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ resp_type = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_RESP_TYPE);
+ resp_type_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_resp_type, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_RESP_TYPE, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_RESP_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_cmd_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_CMD_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_CMD_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_inst_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_INST_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_INST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_regid, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_REGID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_REGID, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T;
+ offset += L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T;
+ switch (resp_type)
+ {
+ case LBMC_UMQ_IDX_CMD_RESP_ERR_TYPE:
+ string_len = hdrlen - (L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T + L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T);
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_err, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T + string_len, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_resp_err);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_err_reserved, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_err_code, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T_CODE, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T_CODE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_err_error_string, tvb, offset + L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T, string_len, ENC_ASCII|ENC_NA);
+ len_dissected += (L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ERR_HDR_T + string_len);
+ break;
+ case LBMC_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_stop_assign, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_resp_stop_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_stop_assign_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_stop_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_STOP_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_start_assign, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_resp_start_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_start_assign_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_start_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_start_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_start_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_START_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_resp_ulb_stop_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_src_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_SRC_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_STOP_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_ulb_start_assign, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_resp_ulb_start_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_src_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_SRC_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_START_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_release_assign, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_resp_release_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_release_assign_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_release_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_release_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_release_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RELEASE_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_TYPE:
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_ulb_release_assign, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_resp_ulb_release_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_src_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_SRC_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected += L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RELEASE_IDX_ASSIGN_HDR_T;
+ break;
+ case LBMC_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_TYPE:
+ index_len = hdrlen - (L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T + L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T);
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_reserve_assign, tvb, offset, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T + index_len, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_resp_reserve_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_reserve_assign_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_reserve_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ opt_flags = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS);
+ opt_flags_item = proto_tree_add_none_format(opt_subtree, hf_lbmc_umq_idx_cmd_resp_reserve_assign_flags, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, "Flags: 0x%08x", opt_flags);
+ opt_flags_tree = proto_item_add_subtree(opt_flags_item, ett_lbmc_umq_idx_cmd_resp_reserve_assign_flags);
+ proto_tree_add_item(opt_flags_tree, hf_lbmc_umq_idx_cmd_resp_reserve_assign_flags_numeric, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_reserve_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_reserve_assign_index_len, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_reserve_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED, ENC_NA);
+ if ((opt_flags & LBM_UMQ_INDEX_FLAG_NUMERIC) != 0)
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_reserve_assign_numeric_index, tvb, offset + L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_reserve_assign_string_index, tvb, offset + L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_ASCII|ENC_NA);
+ }
+ len_dissected += (L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T + index_len);
+ break;
+ case LBMC_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_TYPE:
+ index_len = hdrlen - (L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T + L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T);
+ opt_subtree_item = proto_tree_add_item(subtree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign, tvb, offset, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T + index_len, ENC_NA);
+ opt_subtree = proto_item_add_subtree(opt_subtree_item, ett_lbmc_umq_idx_cmd_resp_ulb_reserve_assign);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_src_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_SRC_ID, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_SRC_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ opt_flags = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS);
+ opt_flags_item = proto_tree_add_none_format(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_flags, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, "Flags: 0x%08x", opt_flags);
+ opt_flags_tree = proto_item_add_subtree(opt_flags_item, ett_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_flags);
+ proto_tree_add_item(opt_flags_tree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_flags_numeric, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_index_len, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_INDEX_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_reserved, tvb, offset + O_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_RESERVED, ENC_NA);
+ if ((opt_flags & LBM_UMQ_INDEX_FLAG_NUMERIC) != 0)
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_numeric_index, tvb, offset + L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ proto_tree_add_item(opt_subtree, hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_string_index, tvb, offset + L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T, (gint)index_len, ENC_ASCII|ENC_NA);
+ }
+ len_dissected += (L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T + index_len);
+ break;
+ default:
+ expert_add_info_format(pinfo, resp_type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC UMQ IDX CMD RESP type 0x%02x", resp_type);
+ break;
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_odomain(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_odomain, tvb, offset, L_LBMC_ODOMAIN_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_odomain);
+ proto_tree_add_item(subtree, hf_lbmc_odomain_next_hdr, tvb, offset + O_LBMC_ODOMAIN_HDR_T_NEXT_HDR, L_LBMC_ODOMAIN_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_odomain_hdr_len, tvb, offset + O_LBMC_ODOMAIN_HDR_T_HDR_LEN, L_LBMC_ODOMAIN_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_ODOMAIN_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_odomain_flags, tvb, offset + O_LBMC_ODOMAIN_HDR_T_FLAGS, L_LBMC_ODOMAIN_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_odomain_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_odomain_flags_ignore, tvb, offset + O_LBMC_ODOMAIN_HDR_T_FLAGS, L_LBMC_ODOMAIN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_odomain_domain, tvb, offset + O_LBMC_ODOMAIN_HDR_T_ODOMAIN, L_LBMC_ODOMAIN_HDR_T_ODOMAIN, ENC_BIG_ENDIAN);
+ return (L_LBMC_ODOMAIN_HDR_T);
+}
+
+static int dissect_nhdr_stream(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, lbmc_stream_info_t * info)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_stream, tvb, offset, L_LBMC_STREAM_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_stream);
+ proto_tree_add_item(subtree, hf_lbmc_stream_next_hdr, tvb, offset + O_LBMC_STREAM_HDR_T_NEXT_HDR, L_LBMC_STREAM_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_stream_hdr_len, tvb, offset + O_LBMC_STREAM_HDR_T_HDR_LEN, L_LBMC_STREAM_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_STREAM_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_stream_flags, tvb, offset + O_LBMC_STREAM_HDR_T_FLAGS, L_LBMC_STREAM_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_stream_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_stream_flags_ignore, tvb, offset + O_LBMC_STREAM_HDR_T_FLAGS, L_LBMC_STREAM_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_stream_stream_id, tvb, offset + O_LBMC_STREAM_HDR_T_STREAM_ID, L_LBMC_STREAM_HDR_T_STREAM_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_stream_sqn, tvb, offset + O_LBMC_STREAM_HDR_T_SQN, L_LBMC_STREAM_HDR_T_SQN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_stream_ctxinst, tvb, offset + O_LBMC_STREAM_HDR_T_CTXINST, L_LBMC_STREAM_HDR_T_CTXINST, ENC_NA);
+ if (info != NULL)
+ {
+ info->set = TRUE;
+ info->stream_id = tvb_get_ntohl(tvb, offset + O_LBMC_STREAM_HDR_T_STREAM_ID);
+ info->sqn = tvb_get_ntohl(tvb, offset + O_LBMC_STREAM_HDR_T_SQN);
+ tvb_memcpy(tvb, (void *)&(info->ctxinst), offset + O_LBMC_STREAM_HDR_T_CTXINST, L_LBMC_STREAM_HDR_T_CTXINST);
+ }
+ return (L_LBMC_STREAM_HDR_T);
+}
+
+static int dissect_nhdr_topic_md_interest(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+ guint16 dom_count = 0;
+ int idx = 0;
+ int len_dissected = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_topic_md_interest, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_topic_md_interest);
+ proto_tree_add_item(subtree, hf_lbmc_topic_md_interest_next_hdr, tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_NEXT_HDR, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_md_interest_hdr_len, tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_HDR_LEN, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_topic_md_interest_flags, tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_topic_md_interest_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_md_interest_flags_ignore, tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_md_interest_flags_cancel, tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_md_interest_flags_refresh, tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_md_interest_domain_count, tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_DOMAIN_COUNT, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_DOMAIN_COUNT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_md_interest_res1, tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_RES1, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_RES1, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T;
+ dom_count = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_DOMAIN_COUNT);
+ offset += L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T;
+ for (idx = 0; idx < dom_count; ++idx)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_topic_md_interest_domain_id, tvb, offset, (gint)sizeof(lbm_uint32_t), ENC_BIG_ENDIAN);
+ offset += (int)sizeof(lbm_uint32_t);
+ len_dissected += (int)sizeof(lbm_uint32_t);
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_pattern_md_interest(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+ guint16 dom_count = 0;
+ int idx = 0;
+ int len_dissected = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_pattern_md_interest, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_pattern_md_interest);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_md_interest_next_hdr, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_NEXT_HDR, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_md_interest_hdr_len, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_HDR_LEN, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_pattern_md_interest_flags, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_pattern_md_interest_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_pattern_md_interest_flags_ignore, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_pattern_md_interest_flags_cancel, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_pattern_md_interest_flags_refresh, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_md_interest_type, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_TYPE, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_md_interest_domain_count, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_DOMAIN_COUNT, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_DOMAIN_COUNT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_md_interest_res1, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_RES1, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_RES1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_pattern_md_interest_index, tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_INDEX, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_INDEX, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T;
+ dom_count = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_DOMAIN_COUNT);
+ offset += L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T;
+ for (idx = 0; idx < dom_count; ++idx)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_pattern_md_interest_domain_id, tvb, offset, (gint)sizeof(lbm_uint32_t), ENC_BIG_ENDIAN);
+ offset += (int)sizeof(lbm_uint32_t);
+ len_dissected += (int)sizeof(lbm_uint32_t);
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_lji_req(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_lji_req, tvb, offset, L_LBMC_CNTL_LJI_REQ_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_lji_req);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_next_hdr, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_NEXT_HDR, L_LBMC_CNTL_LJI_REQ_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_hdr_len, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_HDR_LEN, L_LBMC_CNTL_LJI_REQ_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_lji_req_flags, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_lji_req_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_lji_req_flags_ignore, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_lji_req_flags_l_flag, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_lji_req_flags_m_flag, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_lji_req_flags_o_flag, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_request_idx, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_REQUEST_IDX, L_LBMC_CNTL_LJI_REQ_HDR_T_REQUEST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_transport_idx, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_LJI_REQ_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_topic_idx, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_TOPIC_IDX, L_LBMC_CNTL_LJI_REQ_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_req_ip, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_REQ_IP, L_LBMC_CNTL_LJI_REQ_HDR_T_REQ_IP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_req_port, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_REQ_PORT, L_LBMC_CNTL_LJI_REQ_HDR_T_REQ_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_res, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_RES, L_LBMC_CNTL_LJI_REQ_HDR_T_RES, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_tx_low_sqn, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_TX_LOW_SQN, L_LBMC_CNTL_LJI_REQ_HDR_T_TX_LOW_SQN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_rx_req_max, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_RX_REQ_MAX, L_LBMC_CNTL_LJI_REQ_HDR_T_RX_REQ_MAX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_lji_req_rx_req_outstanding_max, tvb, offset + O_LBMC_CNTL_LJI_REQ_HDR_T_RX_REQ_OUTSTANDING_MAX, L_LBMC_CNTL_LJI_REQ_HDR_T_RX_REQ_OUTSTANDING_MAX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_LJI_REQ_HDR_T);
+}
+
+static int dissect_nhdr_tnwg_ka(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_tnwg_ka, tvb, offset, L_LBMC_CNTL_TNWG_KA_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_tnwg_ka);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_next_hdr, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_NEXT_HDR, L_LBMC_CNTL_TNWG_KA_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_hdr_len, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_HDR_LEN, L_LBMC_CNTL_TNWG_KA_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_tnwg_ka_flags, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS, L_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_tnwg_ka_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_tnwg_ka_flags_ignore, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS, L_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_tnwg_ka_flags_q_flag, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS, L_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_tnwg_ka_flags_r_flag, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS, L_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_index, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_INDEX, L_LBMC_CNTL_TNWG_KA_HDR_T_INDEX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_ts_seconds, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_TS_SECONDS, L_LBMC_CNTL_TNWG_KA_HDR_T_TS_SECONDS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_ts_microseconds, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_TS_MICROSECONDS, L_LBMC_CNTL_TNWG_KA_HDR_T_TS_MICROSECONDS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_reserved_1, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_1, L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_reserved_2, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_2, L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_reserved_3, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_3, L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_reserved_4, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_4, L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_reserved_5, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_5, L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_5, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tnwg_ka_reserved_6, tvb, offset + O_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_6, L_LBMC_CNTL_TNWG_KA_HDR_T_RESERVED_6, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_TNWG_KA_HDR_T);
+}
+
+static int dissect_nhdr_ume_receiver_keepalive(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_receiver_keepalive, tvb, offset, L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_receiver_keepalive);
+ proto_tree_add_item(subtree, hf_lbmc_ume_receiver_keepalive_next_hdr, tvb, offset + O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_receiver_keepalive_hdr_len, tvb, offset + O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_receiver_keepalive_flags, tvb, offset + O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_FLAGS, L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_receiver_keepalive_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_receiver_keepalive_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_FLAGS, L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_receiver_keepalive_rcv_regid, tvb, offset + O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_RCV_REGID, L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_RCV_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_receiver_keepalive_session_id, tvb, offset + O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_SESSION_ID, L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_SESSION_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_receiver_keepalive_ctxinst, tvb, offset + O_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_CTXINST, L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_CTXINST, ENC_NA);
+ return (L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T);
+}
+
+static int dissect_nhdr_umq_ctx_queue_topic_list(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_topic_list, tvb, offset, L_LBMC_CNTL_UMQ_CTX_QUEUE_TOPIC_LIST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_topic_list);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_topic_list_serial_num, tvb, offset + O_LBMC_CNTL_UMQ_CTX_QUEUE_TOPIC_LIST_HDR_T_SERIAL_NUM, L_LBMC_CNTL_UMQ_CTX_QUEUE_TOPIC_LIST_HDR_T_SERIAL_NUM, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_CTX_QUEUE_TOPIC_LIST_HDR_T);
+}
+
+static int dissect_nhdr_umq_rcv_msg_retrieve_entry(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_msg_retrieve_entry, tvb, offset, L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_msg_retrieve_entry);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_msg_retrieve_entry_regid, tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T_REGID, L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_msg_retrieve_entry_stamp, tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STAMP, L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STAMP, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_ENTRY_HDR_T);
+}
+
+static int dissect_nhdr_umq_rcv_msg_retrieve(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ int len = 0;
+ int dissected_len = 0;
+ guint8 num_msgids;
+ guint8 idx;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_msg_retrieve, tvb, offset, L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_msg_retrieve);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_msg_retrieve_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_msg_retrieve_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_msg_retrieve_info_only, tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_INFO_ONLY, L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_INFO_ONLY, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_msg_retrieve_num_msgids, tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGIDS, L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGIDS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_msg_retrieve_flags, tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+
+ dissected_len = L_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T;
+ num_msgids = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGIDS);
+ for (idx = 0; idx < num_msgids; ++idx)
+ {
+ len = dissect_nhdr_umq_rcv_msg_retrieve_entry(tvb, offset + dissected_len, pinfo, subtree);
+ dissected_len += len;
+ }
+ proto_item_set_len(subtree_item, dissected_len);
+ return (dissected_len);
+}
+
+static int dissect_nhdr_umq_rcv_msg_list(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_msg_list, tvb, offset, L_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_msg_list);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_msg_list_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_msg_list_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_RCV_MSG_LIST_HDR_T);
+}
+
+static int dissect_nhdr_umq_cmd(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+ int len_dissected = 0;
+ guint8 cmd_type = 0;
+ proto_item * cmd_type_item = NULL;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_CMD_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_CMD_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_cmd_flags, tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_CMD_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_cmd_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_cmd_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_CMD_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ cmd_type_item = proto_tree_add_item(subtree, hf_lbmc_umq_cmd_cmd_type, tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_CMD_TYPE, L_LBMC_CNTL_UMQ_CMD_HDR_T_CMD_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_CMD_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_cmd_id, tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_CMD_ID, L_LBMC_CNTL_UMQ_CMD_HDR_T_CMD_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_inst_idx, tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_INST_IDX, L_LBMC_CNTL_UMQ_CMD_HDR_T_INST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_regid, tvb, offset + O_LBMC_CNTL_UMQ_CMD_HDR_T_REGID, L_LBMC_CNTL_UMQ_CMD_HDR_T_REGID, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_CMD_HDR_T;
+ cmd_type = tvb_get_guint8(tvb, O_LBMC_CNTL_UMQ_CMD_HDR_T_CMD_TYPE);
+ switch (cmd_type)
+ {
+ case LBMC_UMQ_CMD_TYPE_TOPIC_LIST:
+ len_dissected += dissect_nhdr_umq_ctx_queue_topic_list(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_CMD_TYPE_RCV_MSG_RETRIEVE:
+ len_dissected += dissect_nhdr_umq_rcv_msg_retrieve(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_CMD_TYPE_RCV_MSG_LIST:
+ len_dissected += dissect_nhdr_umq_rcv_msg_list(tvb, offset + len_dissected, pinfo, subtree);
+ break;
+ default:
+ expert_add_info_format(pinfo, cmd_type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC UMQ CMD cmd_type 0x%02x", cmd_type);
+ break;
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_cmd_resp_rcv_msg_retrieve(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_resp_msg_retrieve, tvb, offset, L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_resp_msg_retrieve);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_msg_retrieve_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_msg_retrieve_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T);
+}
+
+static int dissect_nhdr_umq_cmd_resp_rcv_xmsg_retrieve(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ int len_dissected;
+ int num_msgs;
+ int entry_offset;
+ proto_item * entry_item = NULL;
+ proto_tree * entry_tree = NULL;
+ int idx;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_resp_xmsg_retrieve, tvb, offset, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_resp_xmsg_retrieve);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_num_msgs, tvb, offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGS, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_flags, tvb, offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_FLAGS, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_reserved, tvb, offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_RESERVED, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T;
+ entry_offset = offset + len_dissected;
+ num_msgs = (int)tvb_get_guint8(tvb, offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_HDR_T_NUM_MSGS);
+ for (idx = 0; idx < num_msgs; ++idx)
+ {
+ entry_item = proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry, tvb, entry_offset, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T, ENC_NA);
+ entry_tree = proto_item_add_subtree(entry_item, ett_lbmc_umq_cmd_resp_xmsg_retrieve_entry);
+ proto_tree_add_item(entry_tree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_regid, tvb, entry_offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_REGID, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(entry_tree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_stamp, tvb, entry_offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STAMP, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STAMP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(entry_tree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_assign_id, tvb, entry_offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_ASSIGN_ID, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(entry_tree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_num_ras, tvb, entry_offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_NUM_RAS, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_NUM_RAS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(entry_tree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_status, tvb, entry_offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STATUS, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_STATUS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(entry_tree, hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_reserved, tvb, entry_offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_RESERVED, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ entry_offset += L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T;
+ len_dissected += L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_RETRIEVE_ENTRY_HDR_T;
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_cmd_resp_rcv_msg_list(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_resp_msg_list, tvb, offset, L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_resp_msg_list);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_msg_list_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_msg_list_assign_id, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_ASSIGN_ID, L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_ASSIGN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T);
+}
+
+static int dissect_nhdr_umq_cmd_resp_rcv_xmsg_list(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ int len_dissected = 0;
+ guint64 num_msgs = 0;
+ int entry_offset = 0;
+ proto_item * entry_item = NULL;
+ proto_tree * entry_tree = NULL;
+ guint64 idx;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_resp_xmsg_list, tvb, offset, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_resp_xmsg_list);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_xmsg_list_num_msgs, tvb, offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_NUM_MSGS, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_NUM_MSGS, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T;
+ entry_offset = offset + len_dissected;
+ num_msgs = tvb_get_ntoh64(tvb, offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_HDR_T_NUM_MSGS);
+ for (idx = 0; idx < num_msgs; ++idx)
+ {
+ entry_item = proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_xmsg_list_entry, tvb, entry_offset, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T, ENC_NA);
+ entry_tree = proto_item_add_subtree(entry_item, ett_lbmc_umq_cmd_resp_xmsg_list_entry);
+ proto_tree_add_item(entry_tree, hf_lbmc_umq_cmd_resp_xmsg_list_entry_regid, tvb, entry_offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T_REGID, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T_REGID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(entry_tree, hf_lbmc_umq_cmd_resp_xmsg_list_entry_stamp, tvb, entry_offset + O_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T_STAMP, L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T_STAMP, ENC_BIG_ENDIAN);
+ entry_offset += L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T;
+ len_dissected += L_LBMC_XCNTL_UMQ_CMD_RESP_RCV_MSG_LIST_MSG_ENTRY_HDR_T;
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_cmd_resp_ctx_topic_list_appset_entry(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ int len_dissected = 0;
+ guint8 appset_name_len;
+ guint16 num_receiver_type_ids;
+ guint16 idx;
+ int receiver_type_id_offset;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry, tvb, offset, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_num_receiver_type_ids, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_NUM_RECEIVER_TYPE_IDS, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_NUM_RECEIVER_TYPE_IDS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_appset_idx, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_APPSET_IDX, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_APPSET_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_appset_name_len, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_APPSET_NAME_LEN, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_APPSET_NAME_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_reserved, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_RESERVED, ENC_NA);
+ len_dissected = L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T;
+ appset_name_len = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_APPSET_NAME_LEN);
+ len_dissected += (int)appset_name_len;
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_name, tvb, offset + L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T, (int)appset_name_len, ENC_ASCII|ENC_NA);
+ num_receiver_type_ids = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_APPSET_ENTRY_HDR_T_NUM_RECEIVER_TYPE_IDS);
+ if (num_receiver_type_ids > 0)
+ {
+ receiver_type_id_offset = offset + len_dissected;
+ for (idx = 0; idx < num_receiver_type_ids; ++idx)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_receiver_type_id, tvb, receiver_type_id_offset, sizeof(lbm_uint32_t), ENC_BIG_ENDIAN);
+ len_dissected += (int)sizeof(lbm_uint32_t);
+ receiver_type_id_offset += (int)sizeof(lbm_uint32_t);
+ }
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_cmd_resp_ctx_topic_list_topic_entry(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ int len_dissected = 0;
+ guint8 topic_len;
+ guint16 num_appsets;
+ guint16 idx;
+ int appset_offset;
+ int len;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry, tvb, offset, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_resp_topic_list_topic_entry);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_rcr_idx, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_RCR_IDX, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_RCR_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_num_appsets, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_NUM_APPSETS, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_NUM_APPSETS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_topic_len, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_TOPIC_LEN, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_TOPIC_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_reserved, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T;
+ topic_len = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_TOPIC_LEN);
+ len_dissected += (int)topic_len;
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_topic_entry_topic, tvb, offset + L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T, (int)topic_len, ENC_ASCII|ENC_NA);
+ num_appsets = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_TOPIC_ENTRY_HDR_T_NUM_APPSETS);
+ if (num_appsets > 0)
+ {
+ appset_offset = offset + len_dissected;
+ for (idx = 0; idx < num_appsets; ++idx)
+ {
+ len = dissect_nhdr_umq_cmd_resp_ctx_topic_list_appset_entry(tvb, appset_offset, pinfo, subtree);
+ appset_offset += len;
+ len_dissected += len;
+ }
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_cmd_resp_ctx_topic_list(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ int len_dissected = 0;
+ int len;
+ guint32 num_topics;
+ guint32 idx;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_resp_topic_list, tvb, offset, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_resp_topic_list);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_topic_list_num_topics, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_HDR_T_NUM_TOPICS, L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_HDR_T_NUM_TOPICS, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_HDR_T;
+ num_topics = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_CTX_TOPIC_LIST_HDR_T_NUM_TOPICS);
+ for (idx = 0; idx < num_topics; ++idx)
+ {
+ len = dissect_nhdr_umq_cmd_resp_ctx_topic_list_topic_entry(tvb, offset + len_dissected, pinfo, subtree);
+ len_dissected += len;
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_cmd_resp_err(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ int len_dissected = 0;
+ int errmsg_len;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_resp_err, tvb, offset, L_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_resp_err);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_err_reserved, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T_RESERVED, L_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_err_code, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T_CODE, L_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T_CODE, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T;
+ errmsg_len = tvb_reported_length_remaining(tvb, offset + L_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_err_errmsg, tvb, offset + L_LBMC_CNTL_UMQ_CMD_RESP_ERR_HDR_T, errmsg_len, ENC_ASCII|ENC_NA);
+ len_dissected += errmsg_len;
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_umq_cmd_resp(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, gboolean data_msg)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+ int len_dissected = 0;
+ int len;
+ guint8 resp_type;
+ proto_item * resp_type_item = NULL;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_cmd_resp, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_cmd_resp);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_cmd_resp_flags, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_cmd_resp_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_cmd_resp_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ resp_type_item = proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_resp_type, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_RESP_TYPE, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_RESP_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_queue_id, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_QUEUE_ID, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_QUEUE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_cmd_id, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_CMD_ID, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_CMD_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_inst_idx, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_INST_IDX, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_INST_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_cmd_resp_regid, tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_REGID, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_REGID, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T;
+ resp_type = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_RESP_TYPE);
+ if (tvb_length_remaining(tvb, offset + L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T) > 0)
+ {
+ switch (resp_type)
+ {
+ case LBMC_UMQ_CMD_RESP_TYPE_CTX_TOPIC_LIST:
+ len = dissect_nhdr_umq_cmd_resp_ctx_topic_list(tvb, len_dissected, pinfo, subtree);
+ break;
+ case LBMC_UMQ_CMD_RESP_TYPE_RCV_MSG_RETRIEVE:
+ if (data_msg)
+ {
+ len = dissect_nhdr_umq_cmd_resp_rcv_xmsg_retrieve(tvb, len_dissected, pinfo, subtree);
+ }
+ else
+ {
+ len = dissect_nhdr_umq_cmd_resp_rcv_msg_retrieve(tvb, len_dissected, pinfo, subtree);
+ }
+ break;
+ case LBMC_UMQ_CMD_RESP_TYPE_RCV_MSG_LIST:
+ if (data_msg)
+ {
+ len = dissect_nhdr_umq_cmd_resp_rcv_xmsg_list(tvb, len_dissected, pinfo, subtree);
+ }
+ else
+ {
+ len = dissect_nhdr_umq_cmd_resp_rcv_msg_list(tvb, len_dissected, pinfo, subtree);
+ }
+ break;
+ case LBMC_UMQ_CMD_RESP_TYPE_ERROR:
+ len = dissect_nhdr_umq_cmd_resp_err(tvb, len_dissected, pinfo, subtree);
+ break;
+ default:
+ expert_add_info_format(pinfo, resp_type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC UMQ CMD_RESP cmd_type 0x%02x", resp_type);
+ len = 0;
+ break;
+ }
+ }
+ else
+ {
+ len = 0;
+ }
+ len_dissected += len;
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_sri_req(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_sri_req, tvb, offset, L_LBMC_CNTL_SRI_REQ_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_sri_req);
+ proto_tree_add_item(subtree, hf_lbmc_sri_req_next_hdr, tvb, offset + O_LBMC_CNTL_SRI_REQ_HDR_T_NEXT_HDR, L_LBMC_CNTL_SRI_REQ_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_sri_req_hdr_len, tvb, offset + O_LBMC_CNTL_SRI_REQ_HDR_T_HDR_LEN, L_LBMC_CNTL_SRI_REQ_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_SRI_REQ_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_sri_req_flags, tvb, offset + O_LBMC_CNTL_SRI_REQ_HDR_T_FLAGS, L_LBMC_CNTL_SRI_REQ_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_sri_req_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_sri_req_flags_ignore, tvb, offset + O_LBMC_CNTL_SRI_REQ_HDR_T_FLAGS, L_LBMC_CNTL_SRI_REQ_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_sri_req_transport_idx, tvb, offset + O_LBMC_CNTL_SRI_REQ_HDR_T_TRANSPORT_IDX, L_LBMC_CNTL_SRI_REQ_HDR_T_TRANSPORT_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_sri_req_topic_idx, tvb, offset + O_LBMC_CNTL_SRI_REQ_HDR_T_TOPIC_IDX, L_LBMC_CNTL_SRI_REQ_HDR_T_TOPIC_IDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_SRI_REQ_HDR_T);
+}
+
+static int dissect_nhdr_ume_store_domain(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_store_domain, tvb, offset, L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_store_domain);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_domain_next_hdr, tvb, offset + O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_domain_hdr_len, tvb, offset + O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_store_domain_flags, tvb, offset + O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_FLAGS, L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_store_domain_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_store_domain_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_FLAGS, L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_domain_domain, tvb, offset + O_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_DOMAIN, L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_DOMAIN, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T);
+}
+
+static int dissect_nhdr_sri(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_sri, tvb, offset, L_LBMC_CNTL_SRI_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_sri);
+ proto_tree_add_item(subtree, hf_lbmc_sri_next_hdr, tvb, offset + O_LBMC_CNTL_SRI_HDR_T_NEXT_HDR, L_LBMC_CNTL_SRI_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_sri_hdr_len, tvb, offset + O_LBMC_CNTL_SRI_HDR_T_HDR_LEN, L_LBMC_CNTL_SRI_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_SRI_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_sri_flags, tvb, offset + O_LBMC_CNTL_SRI_HDR_T_FLAGS, L_LBMC_CNTL_SRI_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_sri_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_sri_flags_ignore, tvb, offset + O_LBMC_CNTL_SRI_HDR_T_FLAGS, L_LBMC_CNTL_SRI_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_sri_flags_acktosrc, tvb, offset + O_LBMC_CNTL_SRI_HDR_T_FLAGS, L_LBMC_CNTL_SRI_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_sri_flags_initial_sqn_known, tvb, offset + O_LBMC_CNTL_SRI_HDR_T_FLAGS, L_LBMC_CNTL_SRI_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_sri_version, tvb, offset + O_LBMC_CNTL_SRI_HDR_T_VERSION, L_LBMC_CNTL_SRI_HDR_T_VERSION, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_sri_low_sqn, tvb, offset + O_LBMC_CNTL_SRI_HDR_T_LOW_SQN, L_LBMC_CNTL_SRI_HDR_T_LOW_SQN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_sri_high_sqn, tvb, offset + O_LBMC_CNTL_SRI_HDR_T_HIGH_SQN, L_LBMC_CNTL_SRI_HDR_T_HIGH_SQN, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_SRI_HDR_T);
+}
+
+static int dissect_nhdr_route_info(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_route_info, tvb, offset, L_LBMC_CNTL_ROUTE_INFO_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_route_info);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_next_hdr, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_NEXT_HDR, L_LBMC_CNTL_ROUTE_INFO_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_hdr_len, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_HDR_LEN, L_LBMC_CNTL_ROUTE_INFO_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_route_info_flags, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_FLAGS, L_LBMC_CNTL_ROUTE_INFO_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_route_info_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_route_info_flags_ignore, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_FLAGS, L_LBMC_CNTL_ROUTE_INFO_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_gateway_version, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_GATEWAY_VERSION, L_LBMC_CNTL_ROUTE_INFO_HDR_T_GATEWAY_VERSION, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_configuration_signature, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_CONFIGURATION_SIGNATURE, L_LBMC_CNTL_ROUTE_INFO_HDR_T_CONFIGURATION_SIGNATURE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_node_id, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_NODE_ID, L_LBMC_CNTL_ROUTE_INFO_HDR_T_NODE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_topology, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_TOPOLOGY, L_LBMC_CNTL_ROUTE_INFO_HDR_T_TOPOLOGY, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_vers, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_VERS, L_LBMC_CNTL_ROUTE_INFO_HDR_T_VERS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_sqn, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_SQN, L_LBMC_CNTL_ROUTE_INFO_HDR_T_SQN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_ttl, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_TTL, L_LBMC_CNTL_ROUTE_INFO_HDR_T_TTL, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_reserved1, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_RESERVED1, L_LBMC_CNTL_ROUTE_INFO_HDR_T_RESERVED1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_reserved2, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_HDR_T_RESERVED2, L_LBMC_CNTL_ROUTE_INFO_HDR_T_RESERVED2, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_ROUTE_INFO_HDR_T);
+}
+
+static int dissect_nhdr_route_info_neighbor(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_route_info_neighbor, tvb, offset, L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_route_info_neighbor);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_neighbor_next_hdr, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_NEXT_HDR, L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_neighbor_hdr_len, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_HDR_LEN, L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_route_info_neighbor_flags, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_FLAGS, L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_route_info_neighbor_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_route_info_neighbor_flags_ignore, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_FLAGS, L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_neighbor_node_id, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_NODE_ID, L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_NODE_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_neighbor_ingress_cost, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_INGRESS_COST, L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_INGRESS_COST, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_route_info_neighbor_egress_cost, tvb, offset + O_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_EGRESS_COST, L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_EGRESS_COST, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T);
+}
+
+static int dissect_nhdr_gateway_name(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_GATEWAY_NAME_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_gateway_name, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_gateway_name);
+ proto_tree_add_item(subtree, hf_lbmc_gateway_name_next_hdr, tvb, offset + O_LBMC_CNTL_GATEWAY_NAME_HDR_T_NEXT_HDR, L_LBMC_CNTL_GATEWAY_NAME_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_gateway_name_hdr_len, tvb, offset + O_LBMC_CNTL_GATEWAY_NAME_HDR_T_HDR_LEN, L_LBMC_CNTL_GATEWAY_NAME_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_gateway_name_flags, tvb, offset + O_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS, L_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_gateway_name_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_gateway_name_flags_ignore, tvb, offset + O_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS, L_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_gateway_name_gateway_name, tvb, offset + O_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS + L_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS, (gint)(hdrlen - L_LBMC_BASIC_HDR_T), ENC_ASCII|ENC_NA);
+ return ((int)hdrlen);
+}
+
+static int dissect_nhdr_auth_request(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+ int len_dissected = 0;
+ guint8 user_len;
+ int data_offset;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_REQUEST_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_auth_request, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_auth_request);
+ proto_tree_add_item(subtree, hf_lbmc_auth_request_next_hdr, tvb, offset + O_LBMC_CNTL_AUTH_REQUEST_HDR_T_NEXT_HDR, L_LBMC_CNTL_AUTH_REQUEST_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_request_hdr_len, tvb, offset + O_LBMC_CNTL_AUTH_REQUEST_HDR_T_HDR_LEN, L_LBMC_CNTL_AUTH_REQUEST_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_REQUEST_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_auth_request_flags, tvb, offset + O_LBMC_CNTL_AUTH_REQUEST_HDR_T_FLAGS, L_LBMC_CNTL_AUTH_REQUEST_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_auth_request_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_auth_request_flags_ignore, tvb, offset + O_LBMC_CNTL_AUTH_REQUEST_HDR_T_FLAGS, L_LBMC_CNTL_AUTH_REQUEST_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_request_opid, tvb, offset + O_LBMC_CNTL_AUTH_REQUEST_HDR_T_OPID, L_LBMC_CNTL_AUTH_REQUEST_HDR_T_OPID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_request_user_len, tvb, offset + O_LBMC_CNTL_AUTH_REQUEST_HDR_T_USER_LEN, L_LBMC_CNTL_AUTH_REQUEST_HDR_T_USER_LEN, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_AUTH_REQUEST_HDR_T;
+ data_offset = offset + len_dissected;
+ user_len = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_REQUEST_HDR_T_USER_LEN);
+ if (user_len > 0)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_auth_request_user_name, tvb, data_offset, (int)user_len, ENC_ASCII|ENC_NA);
+ len_dissected += (int)user_len;
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_auth_challenge(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+ int len_dissected = 0;
+ guint8 mod_len;
+ guint8 gen_len;
+ guint8 salt_len;
+ guint8 pubkey_len;
+ int data_offset;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_auth_challenge, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_auth_challenge);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_next_hdr, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_NEXT_HDR, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_hdr_len, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_HDR_LEN, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_auth_challenge_flags, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_FLAGS, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_auth_challenge_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_auth_challenge_flags_ignore, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_FLAGS, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_opid, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_OPID, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_OPID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_mod_len, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_MOD_LEN, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_MOD_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_gen_len, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_GEN_LEN, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_GEN_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_salt_len, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_SALT_LEN, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_SALT_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_pubkey_len, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_PUBKEY_LEN, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_PUBKEY_LEN, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T;
+ data_offset = offset + len_dissected;
+ mod_len = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_MOD_LEN);
+ if (mod_len > 0)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_mod, tvb, data_offset, (int)mod_len, ENC_NA);
+ len_dissected += (int)mod_len;
+ data_offset += (int)mod_len;
+ }
+ gen_len = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_GEN_LEN);
+ if (gen_len > 0)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_gen, tvb, data_offset, (int)gen_len, ENC_NA);
+ len_dissected += (int)gen_len;
+ data_offset += (int)gen_len;
+ }
+ salt_len = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_SALT_LEN);
+ if (salt_len > 0)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_salt, tvb, data_offset, (int)salt_len, ENC_NA);
+ len_dissected += (int)salt_len;
+ data_offset += (int)salt_len;
+ }
+ pubkey_len = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_PUBKEY_LEN);
+ if (pubkey_len > 0)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_pubkey, tvb, data_offset, (int)pubkey_len, ENC_NA);
+ len_dissected += (int)pubkey_len;
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_auth_challenge_rsp(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+ int len_dissected = 0;
+ guint8 pubkey_len;
+ guint8 evidence_len;
+ int data_offset;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_auth_challenge_rsp, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_auth_challenge_rsp);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_rsp_next_hdr, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_NEXT_HDR, L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_rsp_hdr_len, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_HDR_LEN, L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_auth_challenge_rsp_flags, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_FLAGS, L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_auth_challenge_rsp_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_auth_challenge_rsp_flags_ignore, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_FLAGS, L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_rsp_opid, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_OPID, L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_OPID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_rsp_pubkey_len, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_PUBKEY_LEN, L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_PUBKEY_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_rsp_evidence_len, tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_EVIDENCE_LEN, L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_EVIDENCE_LEN, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T;
+ data_offset = offset + len_dissected;
+ pubkey_len = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_PUBKEY_LEN);
+ if (pubkey_len > 0)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_rsp_pubkey, tvb, data_offset, (int)pubkey_len, ENC_NA);
+ len_dissected += (int)pubkey_len;
+ data_offset += (int)pubkey_len;
+ }
+ evidence_len = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_EVIDENCE_LEN);
+ if (evidence_len > 0)
+ {
+ proto_tree_add_item(subtree, hf_lbmc_auth_challenge_rsp_evidence, tvb, data_offset, (int)evidence_len, ENC_NA);
+ len_dissected += (int)evidence_len;
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_auth_result(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_auth_result, tvb, offset, L_LBMC_CNTL_AUTH_RESULT_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_auth_result);
+ proto_tree_add_item(subtree, hf_lbmc_auth_result_next_hdr, tvb, offset + O_LBMC_CNTL_AUTH_RESULT_HDR_T_NEXT_HDR, L_LBMC_CNTL_AUTH_RESULT_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_result_hdr_len, tvb, offset + O_LBMC_CNTL_AUTH_RESULT_HDR_T_HDR_LEN, L_LBMC_CNTL_AUTH_RESULT_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_RESULT_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_auth_result_flags, tvb, offset + O_LBMC_CNTL_AUTH_RESULT_HDR_T_FLAGS, L_LBMC_CNTL_AUTH_RESULT_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_auth_result_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_auth_result_flags_ignore, tvb, offset + O_LBMC_CNTL_AUTH_RESULT_HDR_T_FLAGS, L_LBMC_CNTL_AUTH_RESULT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_result_opid, tvb, offset + O_LBMC_CNTL_AUTH_RESULT_HDR_T_OPID, L_LBMC_CNTL_AUTH_RESULT_HDR_T_OPID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_result_result, tvb, offset + O_LBMC_CNTL_AUTH_RESULT_HDR_T_RESULT, L_LBMC_CNTL_AUTH_RESULT_HDR_T_RESULT, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_AUTH_RESULT_HDR_T);
+}
+
+static int dissect_nhdr_auth_unknown(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * opid_item = NULL;
+ guint8 opid;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_GENERIC_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_auth_unknown, tvb, offset, (int) hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_auth_unknown);
+ proto_tree_add_item(subtree, hf_lbmc_auth_unknown_next_hdr, tvb, offset + O_LBMC_CNTL_AUTH_GENERIC_HDR_T_NEXT_HDR, L_LBMC_CNTL_AUTH_GENERIC_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_unknown_hdr_len, tvb, offset + O_LBMC_CNTL_AUTH_GENERIC_HDR_T_HDR_LEN, L_LBMC_CNTL_AUTH_GENERIC_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_auth_unknown_flags, tvb, offset + O_LBMC_CNTL_AUTH_GENERIC_HDR_T_FLAGS, L_LBMC_CNTL_AUTH_GENERIC_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ opid_item = proto_tree_add_item(subtree, hf_lbmc_auth_unknown_opid, tvb, offset + O_LBMC_CNTL_AUTH_GENERIC_HDR_T_OPID, L_LBMC_CNTL_AUTH_GENERIC_HDR_T_OPID, ENC_BIG_ENDIAN);
+ opid = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_AUTH_GENERIC_HDR_T_OPID);
+ expert_add_info_format(pinfo, opid_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC AUTH OPID 0x%02x", opid);
+ proto_tree_add_item(subtree, hf_lbmc_auth_unknown_data, tvb, offset + L_LBMC_CNTL_AUTH_GENERIC_HDR_T, (int) hdrlen - L_LBMC_CNTL_AUTH_GENERIC_HDR_T, ENC_NA);
+ return ((int) hdrlen);
+}
+
+static int dissect_nhdr_hmac(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_hmac, tvb, offset, L_LBMC_CNTL_HMAC_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_hmac);
+ proto_tree_add_item(subtree, hf_lbmc_hmac_next_hdr, tvb, offset + O_LBMC_CNTL_HMAC_HDR_T_NEXT_HDR, L_LBMC_CNTL_HMAC_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_hmac_hdr_len, tvb, offset + O_LBMC_CNTL_HMAC_HDR_T_HDR_LEN, L_LBMC_CNTL_HMAC_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_HMAC_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_hmac_flags, tvb, offset + O_LBMC_CNTL_HMAC_HDR_T_FLAGS, L_LBMC_CNTL_HMAC_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_hmac_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_hmac_flags_ignore, tvb, offset + O_LBMC_CNTL_HMAC_HDR_T_FLAGS, L_LBMC_CNTL_HMAC_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_hmac_padding, tvb, offset + O_LBMC_CNTL_HMAC_HDR_T_PADDING, L_LBMC_CNTL_HMAC_HDR_T_PADDING, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_hmac_data, tvb, offset + O_LBMC_CNTL_HMAC_HDR_T_DATA, L_LBMC_CNTL_HMAC_HDR_T_DATA, ENC_NA);
+ return (L_LBMC_CNTL_HMAC_HDR_T);
+}
+
+static int dissect_nhdr_umq_sid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_umq_sid, tvb, offset, L_LBMC_CNTL_UMQ_SID_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_umq_sid);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sid_next_hdr, tvb, offset + O_LBMC_CNTL_UMQ_SID_HDR_T_NEXT_HDR, L_LBMC_CNTL_UMQ_SID_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sid_hdr_len, tvb, offset + O_LBMC_CNTL_UMQ_SID_HDR_T_HDR_LEN, L_LBMC_CNTL_UMQ_SID_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_CNTL_UMQ_SID_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_umq_sid_flags, tvb, offset + O_LBMC_CNTL_UMQ_SID_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_SID_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_umq_sid_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_umq_sid_flags_ignore, tvb, offset + O_LBMC_CNTL_UMQ_SID_HDR_T_FLAGS, L_LBMC_CNTL_UMQ_SID_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sid_key, tvb, offset + O_LBMC_CNTL_UMQ_SID_HDR_T_KEY, L_LBMC_CNTL_UMQ_SID_HDR_T_KEY, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_umq_sid_sid, tvb, offset + O_LBMC_CNTL_UMQ_SID_HDR_T_SID, L_LBMC_CNTL_UMQ_SID_HDR_T_SID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UMQ_SID_HDR_T);
+}
+
+static int dissect_nhdr_destination(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, lbmc_destination_info_t * info)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_destination, tvb, offset, L_LBMC_DESTINATION_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_destination);
+ proto_tree_add_item(subtree, hf_lbmc_destination_next_hdr, tvb, offset + O_LBMC_DESTINATION_HDR_T_NEXT_HDR, L_LBMC_DESTINATION_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_destination_hdr_len, tvb, offset + O_LBMC_DESTINATION_HDR_T_HDR_LEN, L_LBMC_DESTINATION_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_DESTINATION_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_destination_flags, tvb, offset + O_LBMC_DESTINATION_HDR_T_FLAGS, L_LBMC_DESTINATION_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_destination_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_destination_flags_ignore, tvb, offset + O_LBMC_DESTINATION_HDR_T_FLAGS, L_LBMC_DESTINATION_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_destination_domain_id, tvb, offset + O_LBMC_DESTINATION_HDR_T_DOMAIN_ID, L_LBMC_DESTINATION_HDR_T_DOMAIN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_destination_ipaddr, tvb, offset + O_LBMC_DESTINATION_HDR_T_IPADDR, L_LBMC_DESTINATION_HDR_T_IPADDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_destination_port, tvb, offset + O_LBMC_DESTINATION_HDR_T_PORT, L_LBMC_DESTINATION_HDR_T_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_destination_hops_taken, tvb, offset + O_LBMC_DESTINATION_HDR_T_HOPS_TAKEN, L_LBMC_DESTINATION_HDR_T_HOPS_TAKEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_destination_orig_domain_id, tvb, offset + O_LBMC_DESTINATION_HDR_T_ORIG_DOMAIN_ID, L_LBMC_DESTINATION_HDR_T_ORIG_DOMAIN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_destination_orig_ipaddr, tvb, offset + O_LBMC_DESTINATION_HDR_T_ORIG_IPADDR, L_LBMC_DESTINATION_HDR_T_ORIG_IPADDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_destination_orig_port, tvb, offset + O_LBMC_DESTINATION_HDR_T_ORIG_PORT, L_LBMC_DESTINATION_HDR_T_ORIG_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_destination_reserved, tvb, offset + O_LBMC_DESTINATION_HDR_T_RESERVED, L_LBMC_DESTINATION_HDR_T_RESERVED, ENC_BIG_ENDIAN);
+ if (info != NULL)
+ {
+ info->set = TRUE;
+ info->endpoint_a.domain = tvb_get_ntohl(tvb, offset + O_LBMC_DESTINATION_HDR_T_DOMAIN_ID);
+ TVB_SET_ADDRESS(&(info->endpoint_a.addr), AT_IPv4, tvb, offset + O_LBMC_DESTINATION_HDR_T_IPADDR, L_LBMC_DESTINATION_HDR_T_IPADDR);
+ info->endpoint_a.port = tvb_get_ntohs(tvb, offset + O_LBMC_DESTINATION_HDR_T_PORT);
+ info->endpoint_b.domain = tvb_get_ntohl(tvb, offset + O_LBMC_DESTINATION_HDR_T_ORIG_DOMAIN_ID);
+ TVB_SET_ADDRESS(&(info->endpoint_b.addr), AT_IPv4, tvb, offset + O_LBMC_DESTINATION_HDR_T_ORIG_IPADDR, L_LBMC_DESTINATION_HDR_T_ORIG_IPADDR);
+ info->endpoint_b.port = tvb_get_ntohs(tvb, offset + O_LBMC_DESTINATION_HDR_T_ORIG_PORT);
+ }
+ return (L_LBMC_DESTINATION_HDR_T);
+}
+
+static int dissect_nhdr_topic_idx(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint8 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_topic_idx, tvb, offset, L_LBMC_TOPIC_IDX_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_topic_idx);
+ proto_tree_add_item(subtree, hf_lbmc_topic_idx_next_hdr, tvb, offset + O_LBMC_TOPIC_IDX_HDR_T_NEXT_HDR, L_LBMC_TOPIC_IDX_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_idx_hdr_len, tvb, offset + O_LBMC_TOPIC_IDX_HDR_T_HDR_LEN, L_LBMC_TOPIC_IDX_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_TOPIC_IDX_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_topic_idx_flags, tvb, offset + O_LBMC_TOPIC_IDX_HDR_T_FLAGS, L_LBMC_TOPIC_IDX_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_topic_idx_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_idx_flags_ignore, tvb, offset + O_LBMC_TOPIC_IDX_HDR_T_FLAGS, L_LBMC_TOPIC_IDX_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_idx_tidx, tvb, offset + O_LBMC_TOPIC_IDX_HDR_T_TIDX, L_LBMC_TOPIC_IDX_HDR_T_TIDX, ENC_BIG_ENDIAN);
+ return (L_LBMC_TOPIC_IDX_HDR_T);
+}
+
+static int dissect_nhdr_topic_source(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_topic_source, tvb, offset, L_LBMC_CNTL_TOPIC_SOURCE_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_topic_source);
+ proto_tree_add_item(subtree, hf_lbmc_topic_source_next_hdr, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_NEXT_HDR, L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_source_hdr_len, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_HDR_LEN, L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_topic_source_flags, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_topic_source_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_source_flags_ignore, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_source_flags_eos, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_source_domain_id, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_HDR_T_DOMAIN_ID, L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_DOMAIN_ID, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_TOPIC_SOURCE_HDR_T);
+}
+
+static int dissect_nhdr_topic_source_exfunc(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+ proto_item * functionality_flags_item = NULL;
+ proto_tree * functionality_flags_tree = NULL;
+ guint32 functionality_flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_topic_source_exfunc, tvb, offset, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_topic_source_exfunc);
+ proto_tree_add_item(subtree, hf_lbmc_topic_source_exfunc_next_hdr, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_NEXT_HDR, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_source_exfunc_hdr_len, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_HDR_LEN, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_topic_source_exfunc_flags, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_topic_source_exfunc_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_topic_source_exfunc_flags_ignore, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_source_exfunc_src_ip, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_SRC_IP, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_SRC_IP, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_source_exfunc_src_port, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_SRC_PORT, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_SRC_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_topic_source_exfunc_unused, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_UNUSED, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_UNUSED, ENC_BIG_ENDIAN);
+ functionality_flags = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS);
+ functionality_flags_item = proto_tree_add_none_format(subtree, hf_lbmc_topic_source_exfunc_functionality_flags, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, "Flags: 0x%08x", functionality_flags);
+ functionality_flags_tree = proto_item_add_subtree(functionality_flags_item, ett_lbmc_topic_source_exfunc_functionality_flags);
+ proto_tree_add_item(functionality_flags_tree, hf_lbmc_topic_source_exfunc_functionality_flags_lj, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(functionality_flags_tree, hf_lbmc_topic_source_exfunc_functionality_flags_ume, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(functionality_flags_tree, hf_lbmc_topic_source_exfunc_functionality_flags_umq, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(functionality_flags_tree, hf_lbmc_topic_source_exfunc_functionality_flags_ulb, tvb, offset + O_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T);
+}
+
+static int dissect_nhdr_ume_store_ext(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_store_ext, tvb, offset, L_LBMC_CNTL_UME_STORE_EXT_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_store_ext);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_ext_next_hdr, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_ext_hdr_len, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_store_ext_flags, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_FLAGS, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_store_ext_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_store_ext_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_FLAGS, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_ext_grp_idx, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_GRP_IDX, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_GRP_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_ext_store_tcp_port, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_TCP_PORT, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_TCP_PORT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_ext_store_idx, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_IDX, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_IDX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_ext_store_ip_addr, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_IP_ADDR, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_STORE_IP_ADDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_ext_src_reg_id, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_SRC_REG_ID, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_SRC_REG_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_ext_domain_id, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_DOMAIN_ID, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_DOMAIN_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_store_ext_version, tvb, offset + O_LBMC_CNTL_UME_STORE_EXT_HDR_T_VERSION, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_VERSION, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_STORE_EXT_HDR_T);
+}
+
+static int dissect_nhdr_ume_psrc_election_token(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_ume_psrc_election_token, tvb, offset, L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_ume_psrc_election_token);
+ proto_tree_add_item(subtree, hf_lbmc_ume_psrc_election_token_next_hdr, tvb, offset + O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_NEXT_HDR, L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_psrc_election_token_hdr_len, tvb, offset + O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_HDR_LEN, L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_ume_psrc_election_token_flags, tvb, offset + O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_FLAGS, L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_ume_psrc_election_token_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_ume_psrc_election_token_flags_ignore, tvb, offset + O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_FLAGS, L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_psrc_election_token_store_index, tvb, offset + O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_STORE_INDEX, L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_STORE_INDEX, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_ume_psrc_election_token_token, tvb, offset + O_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_TOKEN, L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_TOKEN, ENC_BIG_ENDIAN);
+ return (L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T);
+}
+
+static int dissect_nhdr_tcp_sid(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree, lbmc_tcp_sid_info_t * info)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ guint16 flags = 0;
+
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_tcp_sid, tvb, offset, L_LBMC_CNTL_TCP_SID_HDR_T, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_tcp_sid);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_sid_next_hdr, tvb, offset + O_LBMC_CNTL_TCP_SID_HDR_T_NEXT_HDR, L_LBMC_CNTL_TCP_SID_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_sid_hdr_len, tvb, offset + O_LBMC_CNTL_TCP_SID_HDR_T_HDR_LEN, L_LBMC_CNTL_TCP_SID_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags = tvb_get_ntohs(tvb, offset + O_LBMC_CNTL_TCP_SID_HDR_T_FLAGS);
+ flags_item = proto_tree_add_none_format(subtree, hf_lbmc_tcp_sid_flags, tvb, offset + O_LBMC_CNTL_TCP_SID_HDR_T_FLAGS, L_LBMC_CNTL_TCP_SID_HDR_T_FLAGS, "Flags: 0x%04x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_tcp_sid_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_tcp_sid_flags_ignore, tvb, offset + O_LBMC_CNTL_TCP_SID_HDR_T_FLAGS, L_LBMC_CNTL_TCP_SID_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_tcp_sid_sid, tvb, offset + O_LBMC_CNTL_TCP_SID_HDR_T_SID, L_LBMC_CNTL_TCP_SID_HDR_T_SID, ENC_BIG_ENDIAN);
+ if (info != NULL)
+ {
+ info->set = TRUE;
+ info->session_id = tvb_get_ntohl(tvb, offset + O_LBMC_CNTL_TCP_SID_HDR_T_SID);
+ }
+ return (L_LBMC_CNTL_TCP_SID_HDR_T);
+}
+
+static int dissect_nhdr_extopt_cfgopt(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_tree * tree)
+{
+ /*
+ Returns number of bytes dissected (>=0), or -1 if an error occurs. In either case, *bytes_dissected
+ will contain the number of bytes successfully dissected.
+ */
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ int curr_offset = offset;
+ int len_dissected = 0;
+
+ while (tvb_reported_length_remaining(tvb, curr_offset) > L_LBMC_EXTOPT_CFGOPT_HDR_T)
+ {
+ int name_offset = 0;
+ int name_len = 0;
+ int value_offset = 0;
+ int value_len = 0;
+ int optlen = L_LBMC_EXTOPT_CFGOPT_HDR_T;
+
+ name_offset = curr_offset + L_LBMC_EXTOPT_CFGOPT_HDR_T;
+ name_len = tvb_strsize(tvb, name_offset);
+ optlen += name_len;
+ value_offset = name_offset + name_len;
+ value_len = tvb_strsize(tvb, value_offset);
+ optlen += value_len;
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_extopt_cfgopt, tvb, curr_offset, optlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_extopt_cfgopt);
+ proto_tree_add_item(subtree, hf_lbmc_extopt_cfgopt_scope, tvb, curr_offset + O_LBMC_EXTOPT_CFGOPT_HDR_T_SCOPE, L_LBMC_EXTOPT_CFGOPT_HDR_T_SCOPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_extopt_cfgopt_parent, tvb, curr_offset + O_LBMC_EXTOPT_CFGOPT_HDR_T_PARENT, L_LBMC_EXTOPT_CFGOPT_HDR_T_PARENT, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_extopt_cfgopt_name, tvb, name_offset, name_len, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(subtree, hf_lbmc_extopt_cfgopt_value, tvb, value_offset, value_len, ENC_ASCII|ENC_NA);
+ curr_offset += optlen;
+ len_dissected += optlen;
+ }
+ return (len_dissected);
+}
+
+static int dissect_nhdr_extopt(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, lbmc_extopt_reassembled_data_t * reassembly)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+ proto_item * flags_item = NULL;
+ proto_tree * flags_tree = NULL;
+ proto_item * ritem = NULL;
+ proto_tree * rtree = NULL;
+ guint8 flags = 0;
+ int len_dissected = 0;
+ int data_len = 0;
+ guint16 subtype;
+ guint16 fragment_offset;
+ int data_offset;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_EXTOPT_HDR_T_HDR_LEN);
+ flags = tvb_get_guint8(tvb, offset + O_LBMC_EXTOPT_HDR_T_FLAGS);
+ subtype = tvb_get_ntohs(tvb, offset + O_LBMC_EXTOPT_HDR_T_SUBTYPE);
+ fragment_offset = tvb_get_ntohs(tvb, offset + O_LBMC_EXTOPT_HDR_T_FRAGMENT_OFFSET);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_extopt, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_extopt);
+ proto_tree_add_item(subtree, hf_lbmc_extopt_next_hdr, tvb, offset + O_LBMC_EXTOPT_HDR_T_NEXT_HDR, L_LBMC_EXTOPT_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_extopt_hdr_len, tvb, offset + O_LBMC_EXTOPT_HDR_T_HDR_LEN, L_LBMC_EXTOPT_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ flags_item = proto_tree_add_none_format(subtree,
+ hf_lbmc_extopt_flags, tvb, offset + O_LBMC_EXTOPT_HDR_T_FLAGS, L_LBMC_EXTOPT_HDR_T_FLAGS, "Flags: 0x%02x", flags);
+ flags_tree = proto_item_add_subtree(flags_item, ett_lbmc_extopt_flags);
+ proto_tree_add_item(flags_tree, hf_lbmc_extopt_flags_ignore, tvb, offset + O_LBMC_EXTOPT_HDR_T_FLAGS, L_LBMC_EXTOPT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_extopt_flags_ignore_subtype, tvb, offset + O_LBMC_EXTOPT_HDR_T_FLAGS, L_LBMC_EXTOPT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_lbmc_extopt_flags_more_fragments, tvb, offset + O_LBMC_EXTOPT_HDR_T_FLAGS, L_LBMC_EXTOPT_HDR_T_FLAGS, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_extopt_id, tvb, offset + O_LBMC_EXTOPT_HDR_T_ID, L_LBMC_EXTOPT_HDR_T_ID, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_extopt_subtype, tvb, offset + O_LBMC_EXTOPT_HDR_T_SUBTYPE, L_LBMC_EXTOPT_HDR_T_SUBTYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_extopt_fragment_offset, tvb, offset + O_LBMC_EXTOPT_HDR_T_FRAGMENT_OFFSET, L_LBMC_EXTOPT_HDR_T_FRAGMENT_OFFSET, ENC_BIG_ENDIAN);
+ len_dissected = L_LBMC_EXTOPT_HDR_T;
+ data_len = (int)hdrlen - len_dissected;
+ data_offset = offset + len_dissected;
+ len_dissected += data_len;
+ if ((flags & LBMC_EXTOPT_FLAG_MORE_FRAGMENT) == 0)
+ {
+ /* No more fragments. Do we have a reassembly already started? */
+ if (reassembly->reassembly_in_progress)
+ {
+ tvbuff_t * reassembly_tvb;
+ gchar * buf;
+ proto_item * pi = NULL;
+
+ tvb_memcpy(tvb, reassembly->data + fragment_offset, data_offset, data_len);
+ reassembly->len += data_len;
+ buf = (gchar *) wmem_memdup(wmem_file_scope(), reassembly->data, reassembly->len);
+ reassembly_tvb = tvb_new_real_data(buf, reassembly->len, reassembly->len);
+ add_new_data_source(pinfo, reassembly_tvb, "Reassembled EXTOPT fragment data");
+ proto_tree_add_item(subtree, hf_lbmc_extopt_data, tvb, data_offset, data_len, ENC_NA);
+ ritem = proto_tree_add_item(tree, hf_lbmc_extopt_reassembled_data, reassembly_tvb, 0, reassembly->len, ENC_NA);
+ rtree = proto_item_add_subtree(ritem, ett_lbmc_extopt_reassembled_data);
+ pi = proto_tree_add_uint(rtree, hf_lbmc_extopt_reassembled_data_subtype, reassembly_tvb, 0, 0, reassembly->subtype);
+ PROTO_ITEM_SET_GENERATED(pi);
+ pi = proto_tree_add_uint(rtree, hf_lbmc_extopt_reassembled_data_len, reassembly_tvb, 0, 0, (guint32)reassembly->len);
+ PROTO_ITEM_SET_GENERATED(pi);
+ switch (reassembly->subtype)
+ {
+ case LBMC_EXT_NHDR_MSGSEL:
+ proto_tree_add_item(rtree, hf_lbmc_extopt_reassembled_data_msgsel, reassembly_tvb, 0, reassembly->len, ENC_ASCII|ENC_NA);
+ break;
+ case LBMC_EXT_NHDR_CFGOPT:
+ len_dissected += dissect_nhdr_extopt_cfgopt(reassembly_tvb, 0, pinfo, rtree);
+ break;
+ default:
+ proto_tree_add_item(rtree, hf_lbmc_extopt_reassembled_data_data, reassembly_tvb, 0, reassembly->len, ENC_NA);
+ break;
+ }
+ lbmc_init_extopt_reassembled_data(reassembly);
+ }
+ else
+ {
+ switch (subtype)
+ {
+ case LBMC_EXT_NHDR_MSGSEL:
+ proto_tree_add_item(subtree, hf_lbmc_extopt_msgsel, tvb, data_offset, data_len, ENC_ASCII|ENC_NA);
+ break;
+ case LBMC_EXT_NHDR_CFGOPT:
+ len_dissected += dissect_nhdr_extopt_cfgopt(tvb, data_offset, pinfo, subtree);
+ break;
+ default:
+ proto_tree_add_item(subtree, hf_lbmc_extopt_data, tvb, data_offset, data_len, ENC_NA);
+ break;
+ }
+ }
+ }
+ else
+ {
+ /* Self-contained extended option. */
+ if (reassembly->reassembly_in_progress)
+ {
+ tvb_memcpy(tvb, reassembly->data + fragment_offset, data_offset, data_len);
+ reassembly->len += data_len;
+ proto_tree_add_item(subtree, hf_lbmc_extopt_data, tvb, offset + len_dissected, data_len, ENC_NA);
+ }
+ else
+ {
+ reassembly->reassembly_in_progress = TRUE;
+ reassembly->subtype = subtype;
+ reassembly->len = 0;
+ if (fragment_offset != 0)
+ {
+ expert_add_info_format(pinfo, NULL, &ei_lbmc_analysis_no_reassembly, "LBMC EXTOPT: reassembly not in progress but fragment_offset not zero (%" G_GUINT16_FORMAT ")", fragment_offset);
+ }
+ else
+ {
+ tvb_memcpy(tvb, reassembly->data + fragment_offset, data_offset, data_len);
+ reassembly->len += data_len;
+ }
+ proto_tree_add_item(subtree, hf_lbmc_extopt_data, tvb, data_offset, data_len, ENC_NA);
+ }
+ }
+ proto_item_set_len(subtree_item, len_dissected);
+ return (len_dissected);
+}
+
+static int dissect_nhdr_unhandled(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, guint8 next_hdr)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 hdrlen = 0;
+
+ hdrlen = tvb_get_guint8(tvb, offset + O_LBMC_BASIC_HDR_T_HDR_LEN);
+ subtree_item = proto_tree_add_item(tree, hf_lbmc_unhandled, tvb, offset, (gint)hdrlen, ENC_NA);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc_unhandled_hdr);
+ expert_add_info_format(pinfo, subtree_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC header type 0x%02x", next_hdr);
+ proto_tree_add_item(subtree, hf_lbmc_unhandled_next_hdr, tvb, offset + O_LBMC_UNHANDLED_HDR_T_NEXT_HDR, L_LBMC_UNHANDLED_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_unhandled_hdr_len, tvb, offset + O_LBMC_UNHANDLED_HDR_T_HDR_LEN, L_LBMC_UNHANDLED_HDR_T_HDR_LEN, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_unhandled_data, tvb, offset + O_LBMC_UNHANDLED_HDR_T_HDR_LEN + L_LBMC_UNHANDLED_HDR_T_HDR_LEN, hdrlen - (L_LBMC_UNHANDLED_HDR_T_NEXT_HDR + L_LBMC_UNHANDLED_HDR_T_HDR_LEN), ENC_NA);
+ return ((int)hdrlen);
+}
+
+static int dissect_msg_properties(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ proto_item * data_item = NULL;
+ proto_tree * data_tree = NULL;
+ proto_item * field_item = NULL;
+ proto_tree * field_tree = NULL;
+ proto_item * vertype_item = NULL;
+ proto_tree * vertype_tree = NULL;
+ guint32 magic;
+ guint32 * magic_ptr = NULL;
+ char magic_char[4];
+ guint16 num_fields;
+ guint16 idx;
+ guint encoding;
+ int field_offset;
+ int data_length;
+ proto_item * magic_item = NULL;
+
+ tvb_memcpy(tvb, (void *)magic_char, offset + O_LBM_MSG_PROPERTIES_DATA_T_MAGIC, 4);
+ magic_ptr = (guint32 *)magic_char;
+ magic = *magic_ptr;
+ encoding = ENC_LITTLE_ENDIAN;
+ if (magic == LBM_MSG_PROPERTIES_MAGIC)
+ {
+ encoding = ENC_LITTLE_ENDIAN;
+ }
+ else if (magic == LBM_MSG_PROPERTIES_ANTIMAGIC)
+ {
+ encoding = ENC_BIG_ENDIAN;
+ }
+ else
+ {
+ magic = 0xffffffff;
+ }
+ data_length = tvb_reported_length_remaining(tvb, offset);
+ subtree_item = proto_tree_add_item(tree, hf_lbm_msg_properties, tvb, offset, data_length, encoding);
+ subtree = proto_item_add_subtree(subtree_item, ett_lbm_msg_properties);
+ data_item = proto_tree_add_item(subtree, hf_lbm_msg_properties_data, tvb, offset + O_LBM_MSG_PROPERTIES_DATA_T_MAGIC, L_LBM_MSG_PROPERTIES_DATA_T, encoding);
+ data_tree = proto_item_add_subtree(data_item, ett_lbm_msg_properties_data);
+ magic_item = proto_tree_add_item(data_tree, hf_lbm_msg_properties_data_magic, tvb, offset + O_LBM_MSG_PROPERTIES_DATA_T_MAGIC, L_LBM_MSG_PROPERTIES_DATA_T_MAGIC, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(data_tree, hf_lbm_msg_properties_data_num_fields, tvb, offset + O_LBM_MSG_PROPERTIES_DATA_T_NUM_FIELDS, L_LBM_MSG_PROPERTIES_DATA_T_NUM_FIELDS, encoding);
+ vertype_item = proto_tree_add_item(data_tree, hf_lbm_msg_properties_data_vertype, tvb, offset + O_LBM_MSG_PROPERTIES_DATA_T_VERTYPE, L_LBM_MSG_PROPERTIES_DATA_T_VERTYPE, encoding);
+ vertype_tree = proto_item_add_subtree(vertype_item, ett_lbm_msg_properties_data_vertype);
+ proto_tree_add_item(vertype_tree, hf_lbm_msg_properties_data_vertype_version, tvb, offset + O_LBM_MSG_PROPERTIES_DATA_T_VERTYPE, L_LBM_MSG_PROPERTIES_DATA_T_VERTYPE, encoding);
+ proto_tree_add_item(vertype_tree, hf_lbm_msg_properties_data_vertype_type, tvb, offset + O_LBM_MSG_PROPERTIES_DATA_T_VERTYPE, L_LBM_MSG_PROPERTIES_DATA_T_VERTYPE, encoding);
+ proto_tree_add_item(data_tree, hf_lbm_msg_properties_data_res, tvb, offset + O_LBM_MSG_PROPERTIES_DATA_T_RES, L_LBM_MSG_PROPERTIES_DATA_T_RES, encoding);
+ if ((magic != LBM_MSG_PROPERTIES_MAGIC) && (magic != LBM_MSG_PROPERTIES_ANTIMAGIC))
+ {
+ expert_add_info_format(pinfo, magic_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC Message Properties MAGIC value");
+ return (L_LBM_MSG_PROPERTIES_DATA_T);
+ }
+ if (encoding == ENC_LITTLE_ENDIAN)
+ {
+ num_fields = tvb_get_letohs(tvb, offset + O_LBM_MSG_PROPERTIES_DATA_T_NUM_FIELDS);
+ }
+ else
+ {
+ num_fields = tvb_get_ntohs(tvb, offset + O_LBM_MSG_PROPERTIES_DATA_T_NUM_FIELDS);
+ }
+ field_offset = offset + L_LBM_MSG_PROPERTIES_DATA_T;
+ for (idx = 0; idx < num_fields; ++idx)
+ {
+ guint32 key_offset;
+ guint32 value_offset;
+ guint32 type;
+ int actual_key_offset;
+ int actual_value_offset;
+ int key_len;
+ int value_len;
+ proto_item * type_item = NULL;
+
+ if (encoding == ENC_LITTLE_ENDIAN)
+ {
+ key_offset = tvb_get_letohl(tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_KEY_OFFSET);
+ value_offset = tvb_get_letohl(tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_VALUE_OFFSET);
+ type = tvb_get_letohl(tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_TYPE);
+ }
+ else
+ {
+ key_offset = tvb_get_ntohl(tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_KEY_OFFSET);
+ value_offset = tvb_get_ntohl(tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_VALUE_OFFSET);
+ type = tvb_get_ntohl(tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_TYPE);
+ }
+ actual_key_offset = (int) key_offset;
+ actual_value_offset = (int) value_offset;
+ field_item = proto_tree_add_item(subtree, hf_lbm_msg_properties_hdr, tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_KEY_OFFSET, L_LBM_MSG_PROPERTIES_HDR_T, encoding);
+ field_tree = proto_item_add_subtree(field_item, ett_lbm_msg_properties_hdr);
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_key_offset, tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_KEY_OFFSET, L_LBM_MSG_PROPERTIES_HDR_T_KEY_OFFSET, encoding);
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_value_offset, tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_VALUE_OFFSET, L_LBM_MSG_PROPERTIES_HDR_T_VALUE_OFFSET, encoding);
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_hash, tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_HASH, L_LBM_MSG_PROPERTIES_HDR_T_HASH, encoding);
+ type_item = proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_type, tvb, field_offset + O_LBM_MSG_PROPERTIES_HDR_T_TYPE, L_LBM_MSG_PROPERTIES_HDR_T_TYPE, encoding);
+ switch (type)
+ {
+ case LBM_MSG_PROPERTY_BOOLEAN:
+ case LBM_MSG_PROPERTY_BYTE:
+ value_len = 1;
+ break;
+ case LBM_MSG_PROPERTY_SHORT:
+ value_len = 2;
+ break;
+ case LBM_MSG_PROPERTY_INT:
+ case LBM_MSG_PROPERTY_FLOAT:
+ value_len = 4;
+ break;
+ case LBM_MSG_PROPERTY_LONG:
+ case LBM_MSG_PROPERTY_DOUBLE:
+ value_len = 8;
+ break;
+ case LBM_MSG_PROPERTY_STRING:
+ value_len = (int)tvb_strsize(tvb, actual_value_offset);
+ break;
+ default:
+ expert_add_info_format(pinfo, type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC Message Properties type 0x%08x", type);
+ value_len = 4;
+ break;
+ }
+ key_len = (int)tvb_strsize(tvb, actual_key_offset);
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_key, tvb, offset + actual_key_offset, key_len, encoding);
+ switch (type)
+ {
+ case LBM_MSG_PROPERTY_BOOLEAN:
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_boolean_value, tvb, offset + actual_value_offset, value_len, encoding);
+ break;
+ case LBM_MSG_PROPERTY_BYTE:
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_byte_value, tvb, offset + actual_value_offset, value_len, encoding);
+ break;
+ case LBM_MSG_PROPERTY_SHORT:
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_short_value, tvb, offset + actual_value_offset, value_len, encoding);
+ break;
+ case LBM_MSG_PROPERTY_INT:
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_int_value, tvb, offset + actual_value_offset, value_len, encoding);
+ break;
+ case LBM_MSG_PROPERTY_FLOAT:
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_float_value, tvb, offset + actual_value_offset, value_len, encoding);
+ break;
+ case LBM_MSG_PROPERTY_LONG:
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_long_value, tvb, offset + actual_value_offset, value_len, encoding);
+ break;
+ case LBM_MSG_PROPERTY_DOUBLE:
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_double_value, tvb, offset + actual_value_offset, value_len, encoding);
+ break;
+ case LBM_MSG_PROPERTY_STRING:
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_string_value, tvb, offset + actual_value_offset, value_len, encoding);
+ break;
+ default:
+ proto_tree_add_item(field_tree, hf_lbm_msg_properties_hdr_unknown_value, tvb, offset + actual_value_offset, value_len, encoding);
+ break;
+ }
+ field_offset += L_LBM_MSG_PROPERTIES_HDR_T;
+ }
+ return (data_length);
+}
+
+/*----------------------------------------------------------------------------*/
+/* Miscellaneous functions. */
+/*----------------------------------------------------------------------------*/
+static const gchar * lbmc_determine_msg_type(const guint8 * header_array)
+{
+ if (header_array[LBMC_NHDR_SSF_INIT] != 0)
+ {
+ return ((gchar *)"SSF-INIT");
+ }
+ else if (header_array[LBMC_NHDR_SSF_CREQ] != 0)
+ {
+ return ((gchar *)"SSF-CREQ");
+ }
+ else if (header_array[LBMC_NHDR_UME_PREG] != 0)
+ {
+ return ((gchar *)"PREG");
+ }
+ else if (header_array[LBMC_NHDR_UME_PREG_RESP] != 0)
+ {
+ return ((gchar *)"PREG-RESP");
+ }
+ else if (header_array[LBMC_NHDR_UME_ACK] != 0)
+ {
+ return ((gchar *)"ACK");
+ }
+ else if (header_array[LBMC_NHDR_UME_RXREQ] != 0)
+ {
+ return ((gchar *)"RXREQ");
+ }
+ else if (header_array[LBMC_NHDR_UME_KEEPALIVE] != 0)
+ {
+ return ((gchar *)"UME-KA");
+ }
+ else if (header_array[LBMC_NHDR_UME_CAPABILITY] != 0)
+ {
+ return ((gchar *)"UME-CAP");
+ }
+ else if (header_array[LBMC_NHDR_TSNI] != 0)
+ {
+ return ((gchar *)"TSNI");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_REG] != 0)
+ {
+ return ((gchar *)"UMQ-REG");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_REG_RESP] != 0)
+ {
+ return ((gchar *)"UMQ-REG-RSP");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_ACK] != 0)
+ {
+ return ((gchar *)"UMQ-ACK");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_KA] != 0)
+ {
+ return ((gchar *)"UMQ-KA");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_RCR] != 0)
+ {
+ return ((gchar *)"UMQ-RCR");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_RXREQ] != 0)
+ {
+ return ((gchar *)"UMQ-RXREQ");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_QMGMT] != 0)
+ {
+ return ((gchar *)"UMQ-QMGMT");
+ }
+ else if (header_array[LBMC_NHDR_UME_LJ_INFO] != 0)
+ {
+ return ((gchar *)"LJINFO");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_RESUB_REQ] != 0)
+ {
+ return ((gchar *)"UMQ-RESUB-REQ");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_RESUB_RESP] != 0)
+ {
+ return ((gchar *)"UMQ-RESUB-RESP");
+ }
+ else if (header_array[LBMC_NHDR_TOPIC_INTEREST] != 0)
+ {
+ return ((gchar *)"TOPIC-INT");
+ }
+ else if (header_array[LBMC_NHDR_PATTERN_INTEREST] != 0)
+ {
+ return ((gchar *)"PAT-INT");
+ }
+ else if (header_array[LBMC_NHDR_ADVERTISEMENT] != 0)
+ {
+ return ((gchar *)"AD");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_ULB_RCR] != 0)
+ {
+ return ((gchar *)"UMQ-ULB-RCR");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_LF] != 0)
+ {
+ return ((gchar *)"UMQ-LF");
+ }
+ else if (header_array[LBMC_NHDR_CTXINFO] != 0)
+ {
+ return ((gchar *)"CTXINFO");
+ }
+ else if (header_array[LBMC_NHDR_UME_PSER] != 0)
+ {
+ return ((gchar *)"PSER");
+ }
+ else if (header_array[LBMC_NHDR_DOMAIN] != 0)
+ {
+ return ((gchar *)"DOMAIN");
+ }
+ else if (header_array[LBMC_NHDR_TNWG_CAPABILITIES] != 0)
+ {
+ return ((gchar *)"TNWG_CAP");
+ }
+ else if (header_array[LBMC_NHDR_PATIDX] != 0)
+ {
+ return ((gchar *)"PATIDX");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_IDX_CMD] != 0)
+ {
+ return ((gchar *)"UMQ-IDX-CMD");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_IDX_CMD_RESP] != 0)
+ {
+ return ((gchar *)"UMQ-IDX-CMD-RESP");
+ }
+ else if (header_array[LBMC_NHDR_TOPIC_MD_INTEREST] != 0)
+ {
+ return ((gchar *)"TOPIC-MD-INT");
+ }
+ else if (header_array[LBMC_NHDR_PATTERN_MD_INTEREST] != 0)
+ {
+ return ((gchar *)"PAT-MD-INT");
+ }
+ else if (header_array[LBMC_NHDR_LJI_REQ] != 0)
+ {
+ return ((gchar *)"LJI-REQ");
+ }
+ else if (header_array[LBMC_NHDR_TNWG_KA] != 0)
+ {
+ return ((gchar *)"TNWG-KA");
+ }
+ else if (header_array[LBMC_NHDR_AUTHENTICATION] != 0)
+ {
+ return ((gchar *)"AUTH");
+ }
+ else if (header_array[LBMC_NHDR_UME_RCV_KEEPALIVE] != 0)
+ {
+ return ((gchar *)"UME-RCV-KA");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_CMD] != 0)
+ {
+ return ((gchar *)"UMQ-CMD");
+ }
+ else if (header_array[LBMC_NHDR_UMQ_CMD_RESP] != 0)
+ {
+ return ((gchar *)"UMQ-CMD-RESP");
+ }
+ else if (header_array[LBMC_NHDR_EXTOPT] != 0)
+ {
+ return ((gchar *)"EXTOPT");
+ }
+ else if (header_array[LBMC_NHDR_HMAC] != 0)
+ {
+ return ((gchar *)"HMAC");
+ }
+ else if (header_array[LBMC_NHDR_SRI_REQ] != 0)
+ {
+ return ((gchar *)"SRI-REQ");
+ }
+ else if (header_array[LBMC_NHDR_SRI] != 0)
+ {
+ return ((gchar *)"SRI");
+ }
+ else if (header_array[LBMC_NHDR_UME_PSRC_ELECTION_TOKEN] != 0)
+ {
+ return ((gchar *)"PSRC-ETOK");
+ }
+ else if (header_array[LBMC_NHDR_TOPIC_SOURCE_EXFUNC] != 0)
+ {
+ return ((gchar *)"TOPIC-SRC-EX");
+ }
+ else if (header_array[LBMC_NHDR_ROUTE_INFO] != 0)
+ {
+ return ((gchar *)"RTE-INFO");
+ }
+ else if (header_array[LBMC_NHDR_TCP_SID] != 0)
+ {
+ return ((gchar *)"TCP-SID");
+ }
+ return (NULL);
+}
+
+static lbm_uim_stream_info_t * lbmc_dup_stream_info(const lbm_uim_stream_info_t * info)
+{
+ lbm_uim_stream_info_t * ptr = NULL;
+
+ ptr = wmem_new(wmem_file_scope(), lbm_uim_stream_info_t);
+ ptr->channel = info->channel;
+ ptr->sqn = info->sqn;
+ ptr->endpoint_a.type = info->endpoint_a.type;
+ if (ptr->endpoint_a.type == lbm_uim_instance_stream)
+ {
+ memcpy((void *)ptr->endpoint_a.stream_info.ctxinst.ctxinst, (void *)info->endpoint_a.stream_info.ctxinst.ctxinst, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ }
+ else
+ {
+ ptr->endpoint_a.stream_info.dest = info->endpoint_a.stream_info.dest;
+ }
+ ptr->endpoint_b.type = info->endpoint_b.type;
+ if (ptr->endpoint_b.type == lbm_uim_instance_stream)
+ {
+ memcpy((void *)ptr->endpoint_b.stream_info.ctxinst.ctxinst, (void *)info->endpoint_b.stream_info.ctxinst.ctxinst, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ }
+ else
+ {
+ ptr->endpoint_b.stream_info.dest = info->endpoint_b.stream_info.dest;
+ }
+ ptr->description = wmem_strdup(wmem_file_scope(), info->description);
+ return (ptr);
+}
+
+gboolean lbmc_test_lbmc_header(tvbuff_t * tvb, int offset)
+{
+ guint8 type;
+ guint8 version;
+ guint8 ver_type;
+ guint8 next_header;
+ guint16 msglen;
+
+ if (tvb_reported_length_remaining(tvb, offset) < (O_LBMC_HDR_T_MSGLEN + L_LBMC_HDR_T_MSGLEN))
+ {
+ return (FALSE);
+ }
+ ver_type = tvb_get_guint8(tvb, offset + O_LBMC_HDR_T_VER_TYPE);
+ version = LBMC_HDR_VER(ver_type);
+ type = LBMC_HDR_TYPE(ver_type);
+ if (version != LBMC_VERSION)
+ {
+ return (FALSE);
+ }
+ switch (type)
+ {
+ case LBMC_TYPE_MESSAGE:
+ case LBMC_TYPE_PRORX:
+ case LBMC_TYPE_EOT:
+ case LBMC_TYPE_CONTROL:
+ case LBMC_TYPE_RETRANS:
+ break;
+ default:
+ return (FALSE);
+ }
+ next_header = tvb_get_guint8(tvb, offset + O_LBMC_HDR_T_NEXT_HDR);
+ switch (next_header)
+ {
+ case LBMC_NHDR_DATA:
+ case LBMC_NHDR_FRAG:
+ case LBMC_NHDR_BATCH:
+ case LBMC_NHDR_TGIDX:
+ case LBMC_NHDR_REQUEST:
+ case LBMC_NHDR_TOPICNAME:
+ case LBMC_NHDR_APPHDR:
+ case LBMC_NHDR_APPHDR_CHAIN:
+ case LBMC_NHDR_UMQ_MSGID:
+ case LBMC_NHDR_UMQ_SQD_RCV:
+ case LBMC_NHDR_UMQ_RESUB:
+ case LBMC_NHDR_OTID:
+ case LBMC_NHDR_CTXINSTD:
+ case LBMC_NHDR_CTXINSTR:
+ case LBMC_NHDR_SRCIDX:
+ case LBMC_NHDR_UMQ_ULB_MSG:
+ case LBMC_NHDR_SSF_INIT:
+ case LBMC_NHDR_SSF_CREQ:
+ case LBMC_NHDR_UME_PREG:
+ case LBMC_NHDR_UME_PREG_RESP:
+ case LBMC_NHDR_UME_ACK:
+ case LBMC_NHDR_UME_RXREQ:
+ case LBMC_NHDR_UME_KEEPALIVE:
+ case LBMC_NHDR_UME_STOREID:
+ case LBMC_NHDR_UME_RANGED_ACK:
+ case LBMC_NHDR_UME_ACK_ID:
+ case LBMC_NHDR_UME_CAPABILITY:
+ case LBMC_NHDR_UME_PROXY_SRC:
+ case LBMC_NHDR_UME_STORE_GROUP:
+ case LBMC_NHDR_UME_STORE_INFO:
+ case LBMC_NHDR_UME_LJ_INFO:
+ case LBMC_NHDR_TSNI:
+ case LBMC_NHDR_UMQ_REG:
+ case LBMC_NHDR_UMQ_REG_RESP:
+ case LBMC_NHDR_UMQ_ACK:
+ case LBMC_NHDR_UMQ_RCR:
+ case LBMC_NHDR_UMQ_KA:
+ case LBMC_NHDR_UMQ_RXREQ:
+ case LBMC_NHDR_UMQ_QMGMT:
+ case LBMC_NHDR_UMQ_RESUB_REQ:
+ case LBMC_NHDR_UMQ_RESUB_RESP:
+ case LBMC_NHDR_TOPIC_INTEREST:
+ case LBMC_NHDR_PATTERN_INTEREST:
+ case LBMC_NHDR_ADVERTISEMENT:
+ case LBMC_NHDR_UME_CTXINSTS:
+ case LBMC_NHDR_UME_STORENAME:
+ case LBMC_NHDR_UMQ_ULB_RCR:
+ case LBMC_NHDR_UMQ_LF:
+ case LBMC_NHDR_CTXINFO:
+ case LBMC_NHDR_UME_PSER:
+ case LBMC_NHDR_CTXINST:
+ case LBMC_NHDR_DOMAIN:
+ case LBMC_NHDR_TNWG_CAPABILITIES:
+ case LBMC_NHDR_PATIDX:
+ case LBMC_NHDR_UME_CLIENT_LIFETIME:
+ case LBMC_NHDR_UME_SID:
+ case LBMC_NHDR_UMQ_IDX_CMD:
+ case LBMC_NHDR_UMQ_IDX_CMD_RESP:
+ case LBMC_NHDR_ODOMAIN:
+ case LBMC_NHDR_STREAM:
+ case LBMC_NHDR_TOPIC_MD_INTEREST:
+ case LBMC_NHDR_PATTERN_MD_INTEREST:
+ case LBMC_NHDR_LJI_REQ:
+ case LBMC_NHDR_TNWG_KA:
+ case LBMC_NHDR_UME_RCV_KEEPALIVE:
+ case LBMC_NHDR_UMQ_CMD:
+ case LBMC_NHDR_UMQ_CMD_RESP:
+ case LBMC_NHDR_SRI_REQ:
+ case LBMC_NHDR_UME_STORE_DOMAIN:
+ case LBMC_NHDR_SRI:
+ case LBMC_NHDR_ROUTE_INFO:
+ case LBMC_NHDR_ROUTE_INFO_NEIGHBOR:
+ case LBMC_NHDR_GATEWAY_NAME:
+ case LBMC_NHDR_AUTHENTICATION:
+ case LBMC_NHDR_HMAC:
+ case LBMC_NHDR_UMQ_SID:
+ case LBMC_NHDR_DESTINATION:
+ case LBMC_NHDR_TOPIC_IDX:
+ case LBMC_NHDR_TOPIC_SOURCE:
+ case LBMC_NHDR_TOPIC_SOURCE_EXFUNC:
+ case LBMC_NHDR_UME_STORE_INFO_EXT:
+ case LBMC_NHDR_UME_PSRC_ELECTION_TOKEN:
+ case LBMC_NHDR_TCP_SID:
+ case LBMC_NHDR_EXTOPT:
+ break;
+ default:
+ return (FALSE);
+ }
+ msglen = tvb_get_ntohs(tvb, offset + O_LBMC_HDR_T_MSGLEN);
+ if (msglen == 0)
+ {
+ return (FALSE);
+ }
+ return (TRUE);
+}
+
+int lbmc_dissect_lbmc_packet(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, const char * tag_name, guint64 channel)
+{
+ proto_item * subtree_item = NULL;
+ proto_tree * subtree = NULL;
+ guint8 type;
+ guint8 version;
+ guint8 ver_type;
+ guint8 next_hdr;
+ guint16 msglen = 0;
+ int pkt_offset = 0;
+ lbmc_basic_hdr_t bhdr;
+ tvbuff_t * lbmc_tvb = NULL;
+ int tvb_lbmc_offset = offset;
+ const char * topic_name = NULL;
+ guint32 topic_index = 0;
+ int len_dissected = 0;
+ int lbmc_hdr_len;
+ proto_item * ver_type_item = NULL;
+ proto_tree * ver_type_tree = NULL;
+ guint32 msgprop_len = 0;
+ lbmc_fragment_info_t frag_info;
+ lbmc_extopt_reassembled_data_t reassembly;
+ gboolean data_is_umq_cmd_resp;
+ gboolean packet_is_data;
+ lbmc_stream_info_t stream_info;
+ lbmc_ctxinst_info_t ctxinstd_info;
+ lbmc_ctxinst_info_t ctxinstr_info;
+ lbmc_destination_info_t destination_info;
+ lbm_istream_entry_t * inst_stream;
+ lbm_istream_substream_entry_t * inst_substream;
+ lbm_dstream_entry_t * dom_stream;
+ lbm_dstream_substream_entry_t * dom_substream;
+ proto_item * last_initial_item = NULL;
+ guint8 found_header[256];
+ lbm_uim_stream_info_t uim_stream_info;
+ lbm_uim_stream_info_t * puim_stream_info = NULL;
+ lbmc_tcp_sid_info_t tcp_sid_info;
+ gboolean has_source_index;
+ address tcp_addr;
+ guint16 tcp_port = 0;
+ guint64 actual_channel = channel;
+
+ while (tvb_reported_length_remaining(tvb, tvb_lbmc_offset) >= L_LBMC_MINIMAL_HDR_T)
+ {
+ proto_item * type_item = NULL;
+
+ /* Get the version and type. */
+ ver_type = tvb_get_guint8(tvb, tvb_lbmc_offset + O_LBMC_HDR_T_VER_TYPE);
+ version = LBMC_HDR_VER(ver_type);
+ type = LBMC_HDR_TYPE(ver_type);
+ /* Get the message length. */
+ msglen = tvb_get_ntohs(tvb, tvb_lbmc_offset + O_LBMC_MINIMAL_HDR_T_MSGLEN);
+ if (msglen == 0)
+ {
+ expert_add_info_format(pinfo, NULL, &ei_lbmc_analysis_zero_length, "LBMC packet header length is zero");
+ return (len_dissected);
+ }
+ /* Create a new tvb for just this LBMC message. */
+ lbmc_tvb = tvb_new_subset(tvb, tvb_lbmc_offset, (gint)msglen, (gint)msglen);
+ if ((type == LBMC_TYPE_MESSAGE) || (type == LBMC_TYPE_RETRANS) || (type == LBMC_TYPE_PRORX))
+ {
+ topic_index = tvb_get_ntohl(lbmc_tvb, O_LBMC_HDR_T_TIDX);
+ if (lbm_channel_is_transport(channel) && lbm_channel_is_known(channel))
+ {
+ topic_name = lbm_topic_find(channel, topic_index);
+ }
+ lbmc_hdr_len = L_LBMC_HDR_T;
+ }
+ else
+ {
+ lbmc_hdr_len = L_LBMC_CNTL_HDR_T;
+ }
+
+ if (topic_name == NULL)
+ {
+ if (tag_name == NULL)
+ {
+ subtree_item = proto_tree_add_protocol_format(tree, proto_lbmc, lbmc_tvb, 0, tvb_reported_length_remaining(tvb, 0), "LBMC Protocol");
+ }
+ else
+ {
+ subtree_item = proto_tree_add_protocol_format(tree, proto_lbmc, lbmc_tvb, 0, tvb_reported_length_remaining(tvb, 0), "LBMC Protocol (Tag: %s)", tag_name);
+ }
+ }
+ else
+ {
+ if (tag_name == NULL)
+ {
+ subtree_item = proto_tree_add_protocol_format(tree, proto_lbmc, lbmc_tvb, 0, tvb_reported_length_remaining(tvb, 0), "LBMC Protocol for topic [%s]", topic_name);
+ }
+ else
+ {
+ subtree_item = proto_tree_add_protocol_format(tree, proto_lbmc, lbmc_tvb, 0, tvb_reported_length_remaining(tvb, 0), "LBMC Protocol (Tag: %s) for topic [%s]", tag_name, topic_name);
+ }
+ }
+ subtree = proto_item_add_subtree(subtree_item, ett_lbmc);
+ if (tag_name != NULL)
+ {
+ proto_item * pi = NULL;
+
+ pi = proto_tree_add_string(subtree, hf_lbmc_tag, tvb, 0, 0, tag_name);
+ PROTO_ITEM_SET_GENERATED(pi);
+ }
+ if (topic_name != NULL)
+ {
+ proto_item * pi = NULL;
+
+ pi = proto_tree_add_string(subtree, hf_lbmc_topic, tvb, 0, 0, topic_name);
+ PROTO_ITEM_SET_GENERATED(pi);
+ }
+ ver_type_item = proto_tree_add_none_format(subtree,
+ hf_lbmc_ver_type,
+ lbmc_tvb,
+ O_LBMC_HDR_T_VER_TYPE,
+ L_LBMC_HDR_T_VER_TYPE,
+ "Version/Type: 0x%02x (Version:%u, Type:%s)",
+ ver_type,
+ version,
+ val_to_str(type, lbmc_message_type, "Unknown (0x%02x)"));
+ ver_type_tree = proto_item_add_subtree(ver_type_item, ett_lbmc_ver_type);
+ proto_tree_add_item(ver_type_tree, hf_lbmc_ver_type_version, lbmc_tvb, O_LBMC_HDR_T_VER_TYPE, L_LBMC_HDR_T_VER_TYPE, ENC_BIG_ENDIAN);
+ type_item = proto_tree_add_item(ver_type_tree, hf_lbmc_ver_type_type, lbmc_tvb, O_LBMC_HDR_T_VER_TYPE, L_LBMC_HDR_T_VER_TYPE, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_lbmc_next_hdr, lbmc_tvb, O_LBMC_HDR_T_NEXT_HDR, L_LBMC_HDR_T_NEXT_HDR, ENC_BIG_ENDIAN);
+ last_initial_item = proto_tree_add_item(subtree, hf_lbmc_msglen, lbmc_tvb, O_LBMC_HDR_T_MSGLEN, L_LBMC_HDR_T_MSGLEN, ENC_BIG_ENDIAN);
+ len_dissected += (L_LBMC_HDR_T_VER_TYPE + L_LBMC_HDR_T_NEXT_HDR + L_LBMC_HDR_T_MSGLEN);
+ switch (type)
+ {
+ case LBMC_TYPE_EOT:
+ case LBMC_TYPE_CONTROL:
+ packet_is_data = FALSE;
+ break;
+ case LBMC_TYPE_MESSAGE:
+ case LBMC_TYPE_RETRANS:
+ case LBMC_TYPE_PRORX:
+ packet_is_data = TRUE;
+ break;
+ default:
+ expert_add_info_format(pinfo, type_item, &ei_lbmc_analysis_invalid_value, "Invalid LBMC type 0x%02x", type);
+ tvb_lbmc_offset += msglen;
+ len_dissected += (msglen - (L_LBMC_HDR_T_VER_TYPE + L_LBMC_HDR_T_NEXT_HDR + L_LBMC_HDR_T_MSGLEN));
+ continue;
+ break;
+ }
+ next_hdr = tvb_get_guint8(lbmc_tvb, O_LBMC_HDR_T_NEXT_HDR);
+ pkt_offset = lbmc_hdr_len;
+ if ((type == LBMC_TYPE_MESSAGE) || (type == LBMC_TYPE_RETRANS) || (type == LBMC_TYPE_PRORX))
+ {
+ proto_tree_add_item(subtree, hf_lbmc_tidx, lbmc_tvb, O_LBMC_HDR_T_TIDX, L_LBMC_HDR_T_TIDX, ENC_BIG_ENDIAN);
+ last_initial_item = proto_tree_add_item(subtree, hf_lbmc_sqn, lbmc_tvb, O_LBMC_HDR_T_SQN, L_LBMC_HDR_T_SQN, ENC_BIG_ENDIAN);
+ }
+ frag_info.fragment_found = 0;
+ frag_info.first_sqn = 0;
+ frag_info.offset = 0;
+ frag_info.len = 0;
+ msgprop_len = 0;
+ lbmc_init_extopt_reassembled_data(&reassembly);
+ data_is_umq_cmd_resp = FALSE;
+ stream_info.set = FALSE;
+ ctxinstd_info.set = FALSE;
+ ctxinstr_info.set = FALSE;
+ destination_info.set = FALSE;
+ inst_stream = NULL;
+ inst_substream = NULL;
+ dom_stream = NULL;
+ dom_substream = NULL;
+ memset((void *)found_header, 0, sizeof(found_header));
+ puim_stream_info = NULL;
+ tcp_sid_info.set = FALSE;
+ has_source_index = FALSE;
+ while ((tvb_reported_length_remaining(lbmc_tvb, pkt_offset) >= L_LBMC_BASIC_HDR_T) && (next_hdr != LBMC_NHDR_DATA) && (next_hdr != LBMC_NHDR_NONE))
+ {
+ tvbuff_t * hdr_tvb = NULL;
+ int dissected_hdr_len;
+ guint8 opid;
+
+ bhdr.next_hdr = tvb_get_guint8(lbmc_tvb, pkt_offset + O_LBMC_BASIC_HDR_T_NEXT_HDR);
+ bhdr.hdr_len = tvb_get_guint8(lbmc_tvb, pkt_offset + O_LBMC_BASIC_HDR_T_HDR_LEN);
+ if (bhdr.hdr_len == 0)
+ {
+ expert_add_info_format(pinfo, NULL, &ei_lbmc_analysis_zero_length, "LBMC header length is zeror");
+ return (len_dissected);
+ }
+ hdr_tvb = tvb_new_subset(lbmc_tvb, pkt_offset, (gint)bhdr.hdr_len, (gint)bhdr.hdr_len);
+ found_header[next_hdr] = 1;
+ switch (next_hdr)
+ {
+ case LBMC_NHDR_FRAG:
+ dissected_hdr_len = dissect_nhdr_frag(hdr_tvb, 0, pinfo, subtree, &frag_info);
+ break;
+ case LBMC_NHDR_BATCH:
+ dissected_hdr_len = dissect_nhdr_batch(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_TGIDX:
+ /* Not implemented */
+ dissected_hdr_len = dissect_nhdr_unhandled(hdr_tvb, 0, pinfo, subtree, next_hdr);
+ break;
+ case LBMC_NHDR_REQUEST:
+ dissected_hdr_len = dissect_nhdr_request(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_TOPICNAME:
+ dissected_hdr_len = dissect_nhdr_topicname(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_APPHDR:
+ dissected_hdr_len = dissect_nhdr_apphdr(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_APPHDR_CHAIN:
+ dissected_hdr_len = dissect_nhdr_apphdr_chain(hdr_tvb, 0, pinfo, subtree, &msgprop_len);
+ break;
+ case LBMC_NHDR_UMQ_MSGID:
+ dissected_hdr_len = dissect_nhdr_umq_msgid(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_SQD_RCV:
+ dissected_hdr_len = dissect_nhdr_umq_sqd_rcv(hdr_tvb, 0, pinfo, subtree, &data_is_umq_cmd_resp);
+ break;
+ case LBMC_NHDR_UMQ_RESUB:
+ dissected_hdr_len = dissect_nhdr_umq_resub(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_OTID:
+ dissected_hdr_len = dissect_nhdr_otid(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_CTXINSTD:
+ dissected_hdr_len = dissect_nhdr_ctxinstd(hdr_tvb, 0, pinfo, subtree, &ctxinstd_info);
+ break;
+ case LBMC_NHDR_CTXINSTR:
+ dissected_hdr_len = dissect_nhdr_ctxinstr(hdr_tvb, 0, pinfo, subtree, &ctxinstr_info);
+ break;
+ case LBMC_NHDR_SRCIDX:
+ dissected_hdr_len = dissect_nhdr_srcidx(hdr_tvb, 0, pinfo, subtree);
+ has_source_index = TRUE;
+ break;
+ case LBMC_NHDR_UMQ_ULB_MSG:
+ dissected_hdr_len = dissect_nhdr_umq_ulb_msg(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_SSF_INIT:
+ dissected_hdr_len = dissect_nhdr_ssf_init(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_SSF_CREQ:
+ dissected_hdr_len = dissect_nhdr_ssf_creq(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_PREG:
+ dissected_hdr_len = dissect_nhdr_ume_preg(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_PREG_RESP:
+ dissected_hdr_len = dissect_nhdr_ume_preg_resp(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_ACK:
+ dissected_hdr_len = dissect_nhdr_ume_ack(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_RXREQ:
+ dissected_hdr_len = dissect_nhdr_ume_rxreq(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_KEEPALIVE:
+ dissected_hdr_len = dissect_nhdr_ume_keepalive(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_STOREID:
+ dissected_hdr_len = dissect_nhdr_ume_storeid(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_RANGED_ACK:
+ dissected_hdr_len = dissect_nhdr_ume_ranged_ack(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_ACK_ID:
+ dissected_hdr_len = dissect_nhdr_ume_ack_id(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_CAPABILITY:
+ dissected_hdr_len = dissect_nhdr_ume_capability(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_PROXY_SRC:
+ dissected_hdr_len = dissect_nhdr_ume_proxy_src(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_STORE_GROUP:
+ dissected_hdr_len = dissect_nhdr_ume_store_group(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_STORE_INFO:
+ dissected_hdr_len = dissect_nhdr_ume_store(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_LJ_INFO:
+ dissected_hdr_len = dissect_nhdr_ume_lj_info(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_TSNI:
+ dissected_hdr_len = dissect_nhdr_tsni(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_REG:
+ dissected_hdr_len = dissect_nhdr_umq_reg(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_REG_RESP:
+ dissected_hdr_len = dissect_nhdr_umq_reg_resp(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_ACK:
+ dissected_hdr_len = dissect_nhdr_umq_ack(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_RCR:
+ dissected_hdr_len = dissect_nhdr_umq_rcr(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_KA:
+ dissected_hdr_len = dissect_nhdr_umq_ka(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_RXREQ:
+ dissected_hdr_len = dissect_nhdr_umq_rxreq(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_QMGMT:
+ dissected_hdr_len = dissect_nhdr_umq_qmgmt(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_RESUB_REQ:
+ dissected_hdr_len = dissect_nhdr_umq_resub_req(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_RESUB_RESP:
+ dissected_hdr_len = dissect_nhdr_umq_resub_resp(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_TOPIC_INTEREST:
+ dissected_hdr_len = dissect_nhdr_topic_interest(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_PATTERN_INTEREST:
+ dissected_hdr_len = dissect_nhdr_pattern_interest(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_ADVERTISEMENT:
+ dissected_hdr_len = dissect_nhdr_advertisement(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_CTXINSTS:
+ dissected_hdr_len = dissect_nhdr_ctxinst(hdr_tvb, 0, pinfo, subtree, NULL);
+ break;
+ case LBMC_NHDR_UME_STORENAME:
+ dissected_hdr_len = dissect_nhdr_storename(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_ULB_RCR:
+ dissected_hdr_len = dissect_nhdr_umq_ulb_rcr(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_LF:
+ dissected_hdr_len = dissect_nhdr_umq_lf(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_CTXINFO:
+ dissected_hdr_len = dissect_nhdr_ctxinfo(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_PSER:
+ dissected_hdr_len = dissect_nhdr_ume_pser(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_CTXINST:
+ dissected_hdr_len = dissect_nhdr_ctxinst(hdr_tvb, 0, pinfo, subtree, NULL);
+ break;
+ case LBMC_NHDR_DOMAIN:
+ dissected_hdr_len = dissect_nhdr_domain(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_TNWG_CAPABILITIES:
+ dissected_hdr_len = dissect_nhdr_tnwg_capabilities(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_PATIDX:
+ dissected_hdr_len = dissect_nhdr_patidx(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_CLIENT_LIFETIME:
+ dissected_hdr_len = dissect_nhdr_ume_client_lifetime(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_SID:
+ dissected_hdr_len = dissect_nhdr_ume_sid(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_IDX_CMD:
+ dissected_hdr_len = dissect_nhdr_umq_idx_cmd(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_IDX_CMD_RESP:
+ dissected_hdr_len = dissect_nhdr_umq_idx_cmd_resp(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_ODOMAIN:
+ dissected_hdr_len = dissect_nhdr_odomain(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_STREAM:
+ dissected_hdr_len = dissect_nhdr_stream(hdr_tvb, 0, pinfo, subtree, &stream_info);
+ break;
+ case LBMC_NHDR_TOPIC_MD_INTEREST:
+ dissected_hdr_len = dissect_nhdr_topic_md_interest(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_PATTERN_MD_INTEREST:
+ dissected_hdr_len = dissect_nhdr_pattern_md_interest(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_LJI_REQ:
+ dissected_hdr_len = dissect_nhdr_lji_req(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_TNWG_KA:
+ dissected_hdr_len = dissect_nhdr_tnwg_ka(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_RCV_KEEPALIVE:
+ dissected_hdr_len = dissect_nhdr_ume_receiver_keepalive(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_CMD:
+ dissected_hdr_len = dissect_nhdr_umq_cmd(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_CMD_RESP:
+ dissected_hdr_len = dissect_nhdr_umq_cmd_resp(hdr_tvb, 0, pinfo, subtree, packet_is_data);
+ break;
+ case LBMC_NHDR_SRI_REQ:
+ dissected_hdr_len = dissect_nhdr_sri_req(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_STORE_DOMAIN:
+ dissected_hdr_len = dissect_nhdr_ume_store_domain(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_SRI:
+ dissected_hdr_len = dissect_nhdr_sri(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_ROUTE_INFO:
+ dissected_hdr_len = dissect_nhdr_route_info(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_ROUTE_INFO_NEIGHBOR:
+ dissected_hdr_len = dissect_nhdr_route_info_neighbor(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_GATEWAY_NAME:
+ dissected_hdr_len = dissect_nhdr_gateway_name(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_AUTHENTICATION:
+ opid = tvb_get_guint8(hdr_tvb, O_LBMC_CNTL_AUTH_GENERIC_HDR_T_OPID);
+ switch (opid)
+ {
+ case AUTH_OP_REQ:
+ dissected_hdr_len = dissect_nhdr_auth_request(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case AUTH_OP_CHALLENGE:
+ dissected_hdr_len = dissect_nhdr_auth_challenge(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case AUTH_OP_CHALLENGE_RSP:
+ dissected_hdr_len = dissect_nhdr_auth_challenge_rsp(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case AUTH_OP_RESULT:
+ dissected_hdr_len = dissect_nhdr_auth_result(hdr_tvb, 0, pinfo, subtree);
+ break;
+ default:
+ dissected_hdr_len = dissect_nhdr_auth_unknown(hdr_tvb, 0, pinfo, subtree);
+ break;
+ }
+ break;
+ case LBMC_NHDR_HMAC:
+ dissected_hdr_len = dissect_nhdr_hmac(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UMQ_SID:
+ dissected_hdr_len = dissect_nhdr_umq_sid(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_DESTINATION:
+ dissected_hdr_len = dissect_nhdr_destination(hdr_tvb, 0, pinfo, subtree, &destination_info);
+ break;
+ case LBMC_NHDR_TOPIC_IDX:
+ dissected_hdr_len = dissect_nhdr_topic_idx(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_TOPIC_SOURCE:
+ dissected_hdr_len = dissect_nhdr_topic_source(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_TOPIC_SOURCE_EXFUNC:
+ dissected_hdr_len = dissect_nhdr_topic_source_exfunc(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_STORE_INFO_EXT:
+ dissected_hdr_len = dissect_nhdr_ume_store_ext(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_UME_PSRC_ELECTION_TOKEN:
+ dissected_hdr_len = dissect_nhdr_ume_psrc_election_token(hdr_tvb, 0, pinfo, subtree);
+ break;
+ case LBMC_NHDR_TCP_SID:
+ dissected_hdr_len = dissect_nhdr_tcp_sid(hdr_tvb, 0, pinfo, subtree, &tcp_sid_info);
+ break;
+ case LBMC_NHDR_EXTOPT:
+ dissected_hdr_len = dissect_nhdr_extopt(hdr_tvb, 0, pinfo, subtree, &reassembly);
+ break;
+ /* Headers that are not implemented. */
+ case LBMC_NHDR_NONE:
+ default:
+ dissected_hdr_len = dissect_nhdr_unhandled(hdr_tvb, 0, pinfo, subtree, next_hdr);
+ break;
+ }
+ len_dissected += dissected_hdr_len;
+ next_hdr = bhdr.next_hdr;
+ pkt_offset += bhdr.hdr_len;
+ }
+ /* If transport is TCP and we got a TCP SID header, process it. */
+ if (lbm_channel_is_unknown_transport_source_lbttcp(channel))
+ {
+ COPY_ADDRESS_SHALLOW(&tcp_addr, &(pinfo->src));
+ tcp_port = (guint16)pinfo->srcport;
+ }
+ else if (lbm_channel_is_unknown_transport_client_lbttcp(channel))
+ {
+ COPY_ADDRESS_SHALLOW(&tcp_addr, &(pinfo->dst));
+ tcp_port = (guint16)pinfo->destport;
+ }
+ if ((pinfo->fd->flags.visited == 0) && (tcp_sid_info.set) && !lbm_channel_is_known(channel))
+ {
+ lbttcp_transport_sid_add(&tcp_addr, tcp_port, pinfo->fd->num, tcp_sid_info.session_id);
+ }
+ /* Try to determine the TCP transport channel. */
+ if (lbm_channel_type(channel) == LBM_CHANNEL_TRANSPORT_LBTTCP)
+ {
+ if (lbm_channel_is_known(channel))
+ {
+ if (topic_name != NULL)
+ {
+ topic_name = lbm_topic_find(channel, topic_index);
+ }
+ }
+ else
+ {
+ guint32 tcp_session_id = 0;
+
+ if (lbttcp_transport_sid_find(&tcp_addr, tcp_port, pinfo->fd->num, &tcp_session_id))
+ {
+ lbttcp_transport_t * tcp_transport = NULL;
+
+ tcp_transport = lbttcp_transport_find(&tcp_addr, tcp_port, tcp_session_id, pinfo->fd->num);
+ if (tcp_transport != NULL)
+ {
+ actual_channel = tcp_transport->channel;
+ topic_name = lbm_topic_find(actual_channel, topic_index);
+ }
+ }
+ }
+ if (topic_name != NULL)
+ {
+ if (tag_name == NULL)
+ {
+ proto_item_set_text(subtree_item, "LBMC Protocol for topic [%s]", topic_name);
+ }
+ else
+ {
+ proto_item_set_text(subtree_item, "LBMC Protocol (Tag: %s) for topic [%s]", tag_name, topic_name);
+ }
+ }
+ }
+
+ /* If TCP, handle stream info. */
+ if (pinfo->ptype == PT_TCP)
+ {
+ if (stream_info.set && ctxinstd_info.set && !destination_info.set)
+ {
+ inst_stream = lbm_stream_istream_find(stream_info.ctxinst, ctxinstd_info.ctxinst);
+ if (inst_stream == NULL)
+ {
+ inst_stream = lbm_stream_istream_add(stream_info.ctxinst, ctxinstd_info.ctxinst);
+ }
+ if (inst_stream != NULL)
+ {
+ inst_substream = lbm_stream_istream_substream_find(inst_stream, &(pinfo->src), pinfo->srcport, &(pinfo->dst), pinfo->destport, stream_info.stream_id);
+ if (inst_substream == NULL)
+ {
+ inst_substream = lbm_stream_istream_substream_add(inst_stream, &(pinfo->src), pinfo->srcport, &(pinfo->dst), pinfo->destport, stream_info.stream_id);
+ }
+ if (inst_substream != NULL)
+ {
+ proto_item * stream_item = NULL;
+ proto_tree * stream_tree = NULL;
+ proto_item * pi = NULL;
+ lbm_uim_stream_tap_info_t * stream_tap_info = NULL;
+
+ lbm_stream_istream_substream_update(inst_substream, msglen, pinfo->fd->num);
+ stream_item = proto_tree_add_item(subtree, hf_lbm_stream, tvb, 0, 0, ENC_NA);
+ PROTO_ITEM_SET_GENERATED(stream_item);
+ stream_tree = proto_item_add_subtree(stream_item, ett_lbm_stream);
+ pi = proto_tree_add_uint64(stream_tree, hf_lbm_stream_stream_id, tvb, 0, 0, inst_stream->channel);
+ PROTO_ITEM_SET_GENERATED(pi);
+ pi = proto_tree_add_uint(stream_tree, hf_lbm_stream_substream_id, tvb, 0, 0, inst_substream->substream_id);
+ PROTO_ITEM_SET_GENERATED(pi);
+ proto_tree_move_item(subtree, last_initial_item, stream_item);
+
+ stream_tap_info = wmem_new(wmem_file_scope(), lbm_uim_stream_tap_info_t);
+ stream_tap_info->channel = inst_stream->channel;
+ stream_tap_info->substream_id = inst_substream->substream_id;
+ stream_tap_info->bytes = msglen;
+ stream_tap_info->endpoint_a.type = lbm_uim_instance_stream;
+ memcpy((void *)stream_tap_info->endpoint_a.stream_info.ctxinst.ctxinst, (void *)stream_info.ctxinst, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ stream_tap_info->endpoint_b.type = lbm_uim_instance_stream;
+ memcpy((void *)stream_tap_info->endpoint_b.stream_info.ctxinst.ctxinst, (void *)ctxinstd_info.ctxinst, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ tap_queue_packet(lbmc_stream_tap_handle, pinfo, (void *)stream_tap_info);
+ }
+ uim_stream_info.channel = inst_stream->channel;
+ uim_stream_info.sqn = stream_info.sqn;
+ uim_stream_info.endpoint_a.type = lbm_uim_instance_stream;
+ memcpy((void *)uim_stream_info.endpoint_a.stream_info.ctxinst.ctxinst, (void *)stream_info.ctxinst, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ uim_stream_info.endpoint_b.type = lbm_uim_instance_stream;
+ memcpy((void *)uim_stream_info.endpoint_b.stream_info.ctxinst.ctxinst, (void *)ctxinstd_info.ctxinst, LBM_CONTEXT_INSTANCE_BLOCK_SZ);
+ puim_stream_info = &uim_stream_info;
+ }
+ }
+ else if (stream_info.set && destination_info.set)
+ {
+ dom_stream = lbm_stream_dstream_find(&(destination_info.endpoint_a), &(destination_info.endpoint_b));
+ if (dom_stream == NULL)
+ {
+ dom_stream = lbm_stream_dstream_add(&(destination_info.endpoint_a), &(destination_info.endpoint_b));
+ }
+ if (dom_stream != NULL)
+ {
+ dom_substream = lbm_stream_dstream_substream_find(dom_stream, &(pinfo->src), pinfo->srcport, &(pinfo->dst), pinfo->destport, stream_info.stream_id);
+ if (dom_substream == NULL)
+ {
+ dom_substream = lbm_stream_dstream_substream_add(dom_stream, &(pinfo->src), pinfo->srcport, &(pinfo->dst), pinfo->destport, stream_info.stream_id);
+ }
+ if (dom_substream != NULL)
+ {
+ proto_item * stream_item = NULL;
+ proto_tree * stream_tree = NULL;
+ proto_item * pi = NULL;
+ lbm_uim_stream_tap_info_t * stream_tap_info = NULL;
+
+ lbm_stream_dstream_substream_update(dom_substream, msglen, pinfo->fd->num);
+ stream_item = proto_tree_add_item(subtree, hf_lbm_stream, tvb, 0, 0, ENC_NA);
+ PROTO_ITEM_SET_GENERATED(stream_item);
+ stream_tree = proto_item_add_subtree(stream_item, ett_lbm_stream);
+ pi = proto_tree_add_uint64(stream_tree, hf_lbm_stream_stream_id, tvb, 0, 0, dom_stream->channel);
+ PROTO_ITEM_SET_GENERATED(pi);
+ pi = proto_tree_add_uint(stream_tree, hf_lbm_stream_substream_id, tvb, 0, 0, dom_substream->substream_id);
+ PROTO_ITEM_SET_GENERATED(pi);
+ proto_tree_move_item(subtree, last_initial_item, stream_item);
+
+ stream_tap_info = wmem_new(wmem_file_scope(), lbm_uim_stream_tap_info_t);
+ stream_tap_info->channel = dom_stream->channel;
+ stream_tap_info->substream_id = dom_substream->substream_id;
+ stream_tap_info->bytes = msglen;
+ stream_tap_info->endpoint_a.type = lbm_uim_domain_stream;
+ stream_tap_info->endpoint_a.stream_info.dest = destination_info.endpoint_a;
+ stream_tap_info->endpoint_b.type = lbm_uim_domain_stream;
+ stream_tap_info->endpoint_b.stream_info.dest = destination_info.endpoint_b;
+ tap_queue_packet(lbmc_stream_tap_handle, pinfo, (void *)stream_tap_info);
+ }
+ uim_stream_info.channel = dom_stream->channel;
+ uim_stream_info.sqn = stream_info.sqn;
+ uim_stream_info.endpoint_a.type = lbm_uim_domain_stream;
+ uim_stream_info.endpoint_a.stream_info.dest = destination_info.endpoint_a;
+ uim_stream_info.endpoint_b.type = lbm_uim_domain_stream;
+ uim_stream_info.endpoint_b.stream_info.dest = destination_info.endpoint_b;
+ puim_stream_info = &uim_stream_info;
+ }
+ }
+ }
+ if (next_hdr == LBMC_NHDR_DATA)
+ {
+ int actual_data_len = 0;
+ int msgprop_offset = 0;
+ tvbuff_t * data_tvb = NULL;
+ tvbuff_t * msgprop_tvb = NULL;
+ gboolean msg_complete = TRUE;
+ gboolean msg_reassembled = FALSE;
+ lbmc_message_entry_t * msg = NULL;
+ gboolean dissector_found = FALSE;
+
+ if (frag_info.fragment_found == 0)
+ {
+ /* No fragment info */
+ if (msgprop_len > 0)
+ {
+ /* Has message properties */
+ actual_data_len = tvb_reported_length_remaining(lbmc_tvb, pkt_offset) - msgprop_len;
+ msgprop_offset = pkt_offset + actual_data_len;
+ data_tvb = tvb_new_subset(lbmc_tvb, pkt_offset, actual_data_len, actual_data_len);
+ msgprop_tvb = tvb_new_subset(lbmc_tvb, msgprop_offset, msgprop_len, msgprop_len);
+ }
+ else
+ {
+ actual_data_len = tvb_reported_length_remaining(lbmc_tvb, pkt_offset);
+ data_tvb = tvb_new_subset(lbmc_tvb, pkt_offset, actual_data_len, actual_data_len);
+ msgprop_tvb = NULL;
+ }
+ msg_complete = TRUE;
+ msg_reassembled = FALSE;
+ }
+ else
+ {
+ /* Fragment info is present */
+ if (!lbmc_reassemble_fragments)
+ {
+ /* But don't reassemble them */
+ actual_data_len = tvb_reported_length_remaining(lbmc_tvb, pkt_offset);
+ data_tvb = tvb_new_subset(lbmc_tvb, pkt_offset, actual_data_len, actual_data_len);
+ msgprop_tvb = NULL;
+ msg_complete = TRUE;
+ }
+ else
+ {
+ /* Fragment info is present and we should reassemble */
+ guint32 port;
+
+ port = (guint32)pinfo->destport;
+ msg = lbmc_message_find(actual_channel, &(pinfo->dst), port, &frag_info);
+ if (msg == NULL)
+ {
+ msg = lbmc_message_create(actual_channel, &(pinfo->dst), port, &frag_info, msgprop_len);
+ }
+ if (msg != NULL)
+ {
+ /* Check fragment against message */
+ int frag_len = tvb_reported_length_remaining(lbmc_tvb, pkt_offset);
+ if ((frag_info.offset + (guint32) frag_len) > msg->total_len)
+ {
+ /* Indicate a malformed packet */
+ expert_add_info_format(pinfo, NULL, &ei_lbmc_analysis_invalid_fragment,
+ "Invalid fragment for message (msglen=%" G_GUINT32_FORMAT ", frag offset=%" G_GUINT32_FORMAT ", frag len=%d",
+ msg->total_len, frag_info.offset, frag_len);
+ }
+ else
+ {
+ (void)lbmc_message_add_fragment(msg, lbmc_tvb, pkt_offset, &frag_info, pinfo->fd->num);
+ if (data_is_umq_cmd_resp)
+ {
+ msg->data_is_umq_cmd_resp = TRUE;
+ }
+ if ((msg->total_len == msg->accumulated_len) && (msg->reassembled_frame == 0))
+ {
+ /* Store the frame number in which the message will be reassembled */
+ msg->reassembled_frame = pinfo->fd->num;
+ actual_data_len = tvb_reported_length_remaining(lbmc_tvb, pkt_offset);
+ data_tvb = tvb_new_subset(lbmc_tvb, pkt_offset, actual_data_len, actual_data_len);
+ msgprop_tvb = NULL;
+ msg_reassembled = TRUE;
+ msg_complete = TRUE;
+ }
+ else
+ {
+ /* This is not the last fragment of the message. */
+ actual_data_len = tvb_reported_length_remaining(lbmc_tvb, pkt_offset);
+ data_tvb = tvb_new_subset(lbmc_tvb, pkt_offset, actual_data_len, actual_data_len);
+ msgprop_tvb = NULL;
+ msg_reassembled = TRUE;
+ msg_complete = FALSE;
+ }
+ }
+ }
+ }
+ }
+
+ /* Note:
+ - Data to be dissected is in data_tvb
+ - Message properties to be dissected is in msgprop_tvb
+ */
+ /* For reassembled messages, show the frame or reassembly information. */
+ if (msg_reassembled)
+ {
+ if (msg->reassembled_frame == pinfo->fd->num)
+ {
+ proto_tree * frag_tree = NULL;
+ proto_item * frag_item = NULL;
+ proto_item * pi = NULL;
+ gboolean first_item = TRUE;
+ lbmc_fragment_entry_t * cur = NULL;
+ gchar * buf = NULL;
+
+ /* Create a new real data tvb of the reassembled data. */
+ buf = (gchar *)wmem_alloc(wmem_file_scope(), (size_t)msg->total_len);
+ cur = msg->entry;
+ while (cur != NULL)
+ {
+ memcpy(buf + cur->fragment_start, cur->data, cur->fragment_len);
+ cur = cur->next;
+ }
+ msg->reassembled_data = tvb_new_real_data(buf, msg->total_len, msg->total_len);
+ msg_complete = TRUE;
+ /* Create separate data and msgprop tvbs */
+ msg->data = tvb_new_subset(msg->reassembled_data, 0, msg->total_len - msg->msgprop_len, msg->total_len - msg->msgprop_len);
+ if (msg->msgprop_len > 0)
+ {
+ msg->msgprop = tvb_new_subset(msg->reassembled_data, msg->total_len - msg->msgprop_len, msg->msgprop_len, msg->msgprop_len);
+ }
+ add_new_data_source(pinfo, msg->reassembled_data, "Reassembled Data");
+ if (msg->data == NULL)
+ {
+ msg->data = tvb_new_subset(msg->reassembled_data, 0, msg->total_len - msg->msgprop_len, msg->total_len - msg->msgprop_len);
+ }
+ if (msg->msgprop == NULL)
+ {
+ if (msg->msgprop_len > 0)
+ {
+ msg->msgprop = tvb_new_subset(msg->reassembled_data, msg->total_len - msg->msgprop_len, msg->msgprop_len, msg->msgprop_len);
+ }
+ }
+ data_tvb = msg->data;
+ msgprop_tvb = msg->msgprop;
+ data_is_umq_cmd_resp = msg->data_is_umq_cmd_resp;
+
+ frag_item = proto_tree_add_none_format(subtree,
+ hf_lbmc_reassembly,
+ data_tvb,
+ 0,
+ tvb_reported_length_remaining(data_tvb, 0),
+ "%" G_GUINT32_FORMAT " Reassembled Fragments (%" G_GUINT32_FORMAT " bytes):",
+ msg->fragment_count,
+ msg->total_len);
+ frag_tree = proto_item_add_subtree(frag_item, ett_lbmc_reassembly);
+ cur = msg->entry;
+ first_item = TRUE;
+ while (cur != NULL)
+ {
+ pi = proto_tree_add_uint_format_value(frag_tree,
+ hf_lbmc_reassembly_fragment,
+ msg->reassembled_data,
+ cur->fragment_start,
+ cur->fragment_len,
+ cur->frame,
+ "Frame: %" G_GUINT32_FORMAT ", payload: %" G_GUINT32_FORMAT "-%" G_GUINT32_FORMAT " (%" G_GUINT32_FORMAT " bytes)",
+ cur->frame,
+ cur->fragment_start,
+ (cur->fragment_start + cur->fragment_len) - 1,
+ cur->fragment_len);
+ PROTO_ITEM_SET_GENERATED(pi);
+ if (first_item)
+ {
+ proto_item_append_text(frag_item, " #%" G_GUINT32_FORMAT "(%" G_GUINT32_FORMAT ")", cur->frame, cur->fragment_len);
+ }
+ else
+ {
+ proto_item_append_text(frag_item, ", #%" G_GUINT32_FORMAT "(%" G_GUINT32_FORMAT ")", cur->frame, cur->fragment_len);
+ }
+ first_item = FALSE;
+ cur = cur->next;
+ }
+ PROTO_ITEM_SET_GENERATED(frag_item);
+ }
+ else
+ {
+ proto_item * pi = NULL;
+
+ if (msg->reassembled_frame == 0)
+ {
+ expert_add_info(pinfo, NULL, &ei_lbmc_analysis_missing_reassembly_frame);
+ pi = proto_tree_add_text(subtree, data_tvb, 0, tvb_reported_length_remaining(data_tvb, 0),
+ "Message not reassembled - reassembly data missing from capture");
+ }
+ else
+ {
+ pi = proto_tree_add_uint(subtree, hf_reassembly_frame, data_tvb, 0, tvb_reported_length_remaining(data_tvb, 0), msg->reassembled_frame);
+ }
+ PROTO_ITEM_SET_GENERATED(pi);
+ }
+ }
+
+ if (data_is_umq_cmd_resp && msg_complete)
+ {
+ (void)dissect_nhdr_umq_cmd_resp(data_tvb, 0, pinfo, subtree, TRUE);
+ col_append_sep_str(pinfo->cinfo, COL_INFO, " ", "UMQ-CMD-RESP");
+ }
+ else
+ {
+ if ((!lbm_channel_is_transport(channel)) && (!has_source_index))
+ {
+ col_append_sep_str(pinfo->cinfo, COL_INFO, " ", "RX-DATA");
+ }
+ else
+ {
+ col_append_sep_str(pinfo->cinfo, COL_INFO, " ", "DATA");
+ }
+ if (lbmc_use_heuristic_subdissectors)
+ {
+ dissector_found = dissector_try_heuristic(lbmc_heuristic_subdissector_list, data_tvb, pinfo, subtree, NULL);
+ }
+ if (!dissector_found)
+ {
+ if (lbmc_dissect_lbmpdm)
+ {
+ int encoding;
+ int pdmlen;
+
+ dissector_found = lbmpdm_verify_payload(data_tvb, 0, &encoding, &pdmlen);
+ }
+ if (dissector_found)
+ {
+ lbmpdm_dissect_lbmpdm_payload(data_tvb, 0, pinfo, subtree, actual_channel);
+ }
+ else
+ {
+ call_dissector(lbmc_data_dissector_handle, data_tvb, pinfo, subtree);
+ }
+ }
+ }
+ if (msgprop_tvb != NULL)
+ {
+ dissect_msg_properties(msgprop_tvb, 0, pinfo, subtree);
+ }
+ if (msg_complete)
+ {
+ if (puim_stream_info != NULL)
+ {
+ lbm_uim_stream_info_t * msg_info;
+
+ if ((!lbm_channel_is_transport(actual_channel)) && (!has_source_index))
+ {
+ puim_stream_info->description = "RX-DATA";
+ }
+ else
+ {
+ puim_stream_info->description = "DATA";
+ }
+ msg_info = lbmc_dup_stream_info(puim_stream_info);
+ tap_queue_packet(lbmc_uim_tap_handle, pinfo, (void *)msg_info);
+ }
+ }
+ len_dissected += tvb_reported_length_remaining(lbmc_tvb, pkt_offset);
+ }
+ else
+ {
+ const gchar * msg_type = NULL;
+ msg_type = lbmc_determine_msg_type(found_header);
+
+ if (msg_type != NULL)
+ {
+ col_append_sep_str(pinfo->cinfo, COL_INFO, " ", msg_type);
+ if (puim_stream_info != NULL)
+ {
+ lbm_uim_stream_info_t * msg_info;
+
+ puim_stream_info->description = msg_type;
+ msg_info = lbmc_dup_stream_info(puim_stream_info);
+ tap_queue_packet(lbmc_uim_tap_handle, pinfo, (void *)msg_info);
+ }
+ }
+ }
+ tvb_lbmc_offset += msglen;
+ }
+ return (len_dissected);
+}
+
+/* The registration hand-off routine */
+void proto_reg_handoff_lbmc(void)
+{
+ static gboolean already_registered = FALSE;
+
+ if (!already_registered)
+ {
+ lbmc_data_dissector_handle = find_dissector("data");
+ lbmc_uim_tap_handle = register_tap("lbm_uim");
+ lbmc_stream_tap_handle = register_tap("lbm_stream");
+ }
+
+ already_registered = TRUE;
+}
+
+/* Register all the bits needed with the filtering engine */
+void proto_register_lbmc(void)
+{
+ static hf_register_info hf[] =
+ {
+ { &hf_lbmc_tag,
+ { "Tag", "lbmc.tag", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic,
+ { "Topic", "lbmc.topic", FT_STRING, BASE_NONE, NULL, 0x0, "Topic string", HFILL } },
+ { &hf_lbmc_ver_type,
+ { "Version/Type", "lbmc.ver_type", FT_NONE, BASE_NONE, NULL, 0x0, "Version/Type information", HFILL } },
+ { &hf_lbmc_ver_type_version,
+ { "Version", "lbmc.ver_type.version", FT_UINT8, BASE_DEC, NULL, LBMC_HDR_VER_TYPE_VER_MASK, "LBMC protocol version", HFILL } },
+ { &hf_lbmc_ver_type_type,
+ { "Type", "lbmc.ver_type.type", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_message_type), LBMC_HDR_VER_TYPE_TYPE_MASK, "LBMC packet type", HFILL } },
+ { &hf_lbmc_next_hdr,
+ { "Next Header", "lbmc.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_msglen,
+ { "Message Length", "lbmc.msglen", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tidx,
+ { "Topic Index", "lbmc.tidx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sqn,
+ { "Sequence Number", "lbmc.sqn", FT_UINT32, BASE_DEC, NULL, 0x0, "Topic sequence number", HFILL } },
+ { &hf_lbmc_frag,
+ { "Fragment", "lbmc.frag", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_frag_next_hdr,
+ { "Next Header", "lbmc.frag.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_frag_hdr_len,
+ { "Header Length", "lbmc.frag.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_frag_flags,
+ { "Flags", "lbmc.frag.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_frag_flags_ignore,
+ { "Ignore", "lbmc.frag.flags.ignore", FT_BOOLEAN, L_LBMC_FRAG_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_frag_first_sqn,
+ { "First Sequence Number", "lbmc.frag.first_sqn", FT_UINT32, BASE_DEC, NULL, 0x0, "First sqn of fragment for this message", HFILL } },
+ { &hf_lbmc_frag_offset,
+ { "Offset", "lbmc.frag.offset", FT_UINT32, BASE_DEC, NULL, 0x0, "Offset of this fragment within message", HFILL } },
+ { &hf_lbmc_frag_len,
+ { "Length", "lbmc.frag.len", FT_UINT32, BASE_DEC, NULL, 0x0, "Total length of message", HFILL } },
+ { &hf_lbmc_batch,
+ { "Batch", "lbmc.batch", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_batch_next_hdr,
+ { "Next Header", "lbmc.batch.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_batch_hdr_len,
+ { "Header Length", "lbmc.batch.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_batch_flags,
+ { "Flags", "lbmc.batch.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_batch_flags_ignore,
+ { "Ignore", "lbmc.batch.flags.ignore", FT_BOOLEAN, L_LBMC_BATCH_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_batch_flags_batch_start,
+ { "Batch Start", "lbmc.batch.flags.batch_start", FT_BOOLEAN, L_LBMC_BATCH_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_BATCH_START, "If set, indicates the start of an explicit batch", HFILL } },
+ { &hf_lbmc_batch_flags_batch_end,
+ { "Batch End", "lbmc.batch.flags.batch_end", FT_BOOLEAN, L_LBMC_BATCH_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_BATCH_END, "If set, indicate the end of an explicit batch", HFILL } },
+ { &hf_lbmc_tcp_request,
+ { "Request", "lbmc.tcp_request", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_request_next_hdr,
+ { "Next Header", "lbmc.tcp_request.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_request_hdr_len,
+ { "Header Length", "lbmc.tcp_request.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_request_flags,
+ { "Flags", "lbmc.tcp_request.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_request_flags_ignore,
+ { "Ignore", "lbmc.tcp_request_flags.ignore", FT_BOOLEAN, L_LBMC_TCP_REQUEST_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_tcp_request_transport,
+ { "Transport", "lbmc.tcp_request.transport", FT_UINT8, BASE_HEX, VALS(lbmc_req_transport_type), 0x0, "Transport type", HFILL } },
+ { &hf_lbmc_tcp_request_qidx,
+ { "Request Index", "lbmc.tcp_request.qidx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_request_port,
+ { "Port", "lbmc.tcp_request.port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_request_reserved,
+ { "Reserved", "lbmc.tcp_request.reserved", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_request_ipaddr,
+ { "Requester IP Address", "lbmc.tcp_request.ipaddr", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topicname,
+ { "Topicname", "lbmc.topicname", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topicname_next_hdr,
+ { "Next Header", "lbmc.topicname.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_topicname_hdr_len,
+ { "Header Length", "lbmc.topicname.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topicname_flags,
+ { "Flags", "lbmc.topicname.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topicname_flags_ignore,
+ { "Ignore", "lbmc.topicname.flags.ignore", FT_BOOLEAN, L_LBMC_TOPICNAME_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_topicname_topicname,
+ { "Topic", "lbmc.topicname.topic", FT_STRING, BASE_NONE, NULL, 0x0, "Topic name", HFILL } },
+ { &hf_lbmc_apphdr,
+ { "AppHeader", "lbmc.apphdr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_next_hdr,
+ { "Next Header", "lbmc.apphdr.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_hdr_len,
+ { "Header Length", "lbmc.apphdr.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_code,
+ { "Code", "lbmc.apphdr.code", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_code_ignore,
+ { "Ignore", "lbmc.apphdr.code.ignore", FT_BOOLEAN, L_LBMC_APPHDR_HDR_T_CODE * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_apphdr_code_code,
+ { "Application Code", "lbmc.apphdr.code.code", FT_UINT16, BASE_DEC_HEX, NULL, LBMC_APPHDR_CODE_MASK, "Application header code", HFILL } },
+ { &hf_lbmc_apphdr_data,
+ { "Data", "lbmc.apphdr.data", FT_NONE, BASE_NONE, NULL, 0x0, "Application header data", HFILL } },
+ { &hf_lbmc_apphdr_chain,
+ { "AppHeader Chain", "lbmc.apphdr_chain", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_next_hdr,
+ { "Next Header", "lbmc.apphdr_chain.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_hdr_len,
+ { "Header Length", "lbmc.apphdr_chain.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_res,
+ { "Reserved", "lbmc.apphdr_chain.res", FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_first_chain_hdr,
+ { "First chain hdr", "lbmc.apphdr_chain.first_chain_hdr", FT_UINT8, BASE_HEX_DEC, VALS(lbmc_apphdr_chain_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_element,
+ { "AppHeader Chain Element", "lbmc.apphdr_chain.element", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_element_next_hdr,
+ { "Next Header", "lbmc.apphdr_chain.element.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_apphdr_chain_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_element_hdr_len,
+ { "Header Length", "lbmc.apphdr_chain.element.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_element_res,
+ { "Reserved", "lbmc.apphdr_chain.element.res", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_element_data,
+ { "Data", "lbmc.apphdr_chain.element.data", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_msgprop,
+ { "AppHeader Chain Message Properties Element", "lbmc.apphdr_chain.msgprop", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_msgprop_next_hdr,
+ { "Next Header", "lbmc.apphdr_chain.msgprop.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_apphdr_chain_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_msgprop_hdr_len,
+ { "Header Length", "lbmc.apphdr_chain.msgprop.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_msgprop_res,
+ { "Reserved", "lbmc.apphdr_chain.msgprop.res", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_apphdr_chain_msgprop_len,
+ { "Properties Length", "lbmc.apphdr_chain.msgprop.proplen", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_msgid,
+ { "UMQ MessageID", "lbmc.umq_msgid", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_msgid_next_hdr,
+ { "Next Header", "lbmc.umq_msgid.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_msgid_hdr_len,
+ { "Header Length", "lbmc.umq_msgid.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_msgid_flags,
+ { "Flags", "lbmc.umq_msgid.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_msgid_flags_ignore,
+ { "Ignore", "lbmc.umq_msgid.flags.ignore", FT_BOOLEAN, L_LBMC_UMQ_MSGID_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_umq_msgid_msgid_regid,
+ { "Message ID RegID", "lbmc.umq_msgid.msgid_regid", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, "Message ID registration ID", HFILL } },
+ { &hf_lbmc_umq_msgid_msgid_stamp,
+ { "MessageID Stamp", "lbmc.umq_msgid.msgid_stamp", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, "Message ID stamp", HFILL } },
+ { &hf_lbmc_umq_sqd_rcv,
+ { "UMQ SQD Receiver", "lbmc.umq_sqd_rcv", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_next_hdr,
+ { "Next Header", "lbmc.umq_sqd_rcv.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_hdr_len,
+ { "Header Length", "lbmc.umq_sqd_rcv.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_flags,
+ { "Flags", "lbmc.umq_sqd_rcv.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_flags_ignore,
+ { "Ignore", "lbmc.umq_sqd_rcv.flags.ignore", FT_BOOLEAN, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_flags_r_flag,
+ { "Reassign", "lbmc.umq_sqd_rcv.flags.r_flag", FT_BOOLEAN, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_SQD_RCV_R_FLAG, "Set if this is a reassignment", HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_flags_s_flag,
+ { "Resubmit", "lbmc.umq_sqd_rcv.flags.s_flag", FT_BOOLEAN, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_SQD_RCV_S_FLAG, "Set if this is a resubmission", HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_flags_re_flag,
+ { "Redelivered", "lbmc.umq_sqd_rcv.flags.re_flag", FT_BOOLEAN, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_SQD_RCV_RE_FLAG, "Set if this is a redelivery", HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_flags_eoi_flag,
+ { "End of Index", "lbmc.umq_sqd_rcv.flags.eoi_flag", FT_BOOLEAN, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_SQD_RCV_BOI_FLAG, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_flags_boi_flag,
+ { "Beginning of Index", "lbmc.umq_sqd_rcv.flags.boi_flag", FT_BOOLEAN, L_LBMC_UMQ_SQD_RCV_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_SQD_RCV_EOI_FLAG, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_queue_id,
+ { "Queue ID", "lbmc.umq_sqd_rcv.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_queue_ver,
+ { "Queue Version", "lbmc.umq_sqd_rcv.queue_ver", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_rcr_idx,
+ { "RCR Index", "lbmc.umq_sqd_rcv.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sqd_rcv_assign_id,
+ { "Assignment ID", "lbmc.umq_sqd_rcv.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub,
+ { "UMQ Resubmission", "lbmc.umq_resub", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_next_hdr,
+ { "Next Header", "lbmc.umq_resub.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_hdr_len,
+ { "Header Length", "lbmc.umq_resub.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_flags,
+ { "Flags", "lbmc.umq_resub.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_flags_ignore,
+ { "Ignore", "lbmc.umq_resub.flags.ignore", FT_BOOLEAN, L_LBMC_UMQ_RESUB_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_flags_q_flag,
+ { "Queue", "lbmc.umq_resub.flags.q_flag", FT_BOOLEAN, L_LBMC_UMQ_RESUB_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_RESUB_Q_FLAG, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_rcr_idx,
+ { "RCR Index", "lbmc.umq_resub.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, "Receiver control record index", HFILL } },
+ { &hf_lbmc_umq_resub_resp_ip,
+ { "Response IP Address", "lbmc.umq_resub.resp_ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_port,
+ { "Response Port", "lbmc.umq_resub.resp_port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_appset_idx,
+ { "AppSet Index", "lbmc.umq_resub.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_otid,
+ { "OTID", "lbmc.otid", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_otid_next_hdr,
+ { "Next Header", "lbmc.otid.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_otid_hdr_len,
+ { "Header Length", "lbmc.otid.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_otid_flags,
+ { "Flags", "lbmc.otid.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_otid_flags_ignore,
+ { "Ignore", "lbmc.otid.flags.ignore", FT_BOOLEAN, L_LBMC_OTID_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_otid_otid,
+ { "OTID", "lbmc.otid.otid", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinst,
+ { "Context Instance", "lbmc.ctxinst", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinst_next_hdr,
+ { "Next Header", "lbmc.ctxinst.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinst_hdr_len,
+ { "Header Length", "lbmc.ctxinst.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinst_flags,
+ { "Flags", "lbmc.ctxinst.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinst_flags_ignore,
+ { "Ignore", "lbmc.ctxinst_flags.ignore", FT_BOOLEAN, L_LBMC_CTXINST_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ctxinst_ctxinst,
+ { "Context Instance", "lbmc.ctxinst.ctxinst", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinstd,
+ { "Context Instance Destination", "lbmc.ctxinstd", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinstr,
+ { "Context Instance Return", "lbmc.ctxinstr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_srcidx,
+ { "Source Index", "lbmc.srcidx", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_srcidx_next_hdr,
+ { "Next Header", "lbmc.srcidx.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_srcidx_hdr_len,
+ { "Header Length", "lbmc.srcidx.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_srcidx_flags,
+ { "Flags", "lbmc.srcidx.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_srcidx_flags_ignore,
+ { "Ignore", "lbmc.srcidx.flags.ignore", FT_BOOLEAN, L_LBMC_SRCIDX_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_srcidx_srcidx,
+ { "Source Index", "lbmc.srcidx.srcidx", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg,
+ { "UMQ ULB Message", "lbmc.umq_ulb_msg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_next_hdr,
+ { "Next Header", "lbmc.umq_ulb_msg.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_hdr_len,
+ { "Header Length", "lbmc.umq_ulb_msg.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_flags,
+ { "Flags", "lbmc.umq_ulb_msg.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_flags_ignore,
+ { "Ignore", "lbmc.umq_ulb_msg.flags.ignore", FT_BOOLEAN, L_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_flags_a_flag,
+ { "Assigned", "lbmc.umq_ulb_msg.flags.a", FT_BOOLEAN, L_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_ULB_MSG_A_FLAG, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_flags_r_flag,
+ { "Reassigned", "lbmc.umq_ulb_msg.flags.r", FT_BOOLEAN, L_LBMC_UMQ_ULB_MSG_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_ULB_MSG_R_FLAG, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_queue_id,
+ { "Queue ID", "lbmc.umq_ulb_msg.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_ulb_msg.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_assign_id,
+ { "Assignment ID", "lbmc.umq_ulb_msg.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_appset_idx,
+ { "AppSet Index", "lbmc.umq_ulb_msg.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_msg_num_ras,
+ { "Number of RAs", "lbmc.umq_ulb_msg.num_ras", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, "Number of reassignments", HFILL } },
+ { &hf_lbmc_ssf_init,
+ { "SSF Init", "lbmc.ssf_init", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_next_hdr,
+ { "Next Header", "lbmc.ssf_init.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_hdr_len,
+ { "Header Length", "lbmc.ssf_init.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_transport,
+ { "Transport", "lbmc.ssf_init.transport", FT_UINT8, BASE_DEC, VALS(lbmc_ssf_transport_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_flags,
+ { "Flags", "lbmc.ssf_init.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_flags_ignore,
+ { "Ignore", "lbmc.ssf_init.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_flags_default_inclusions,
+ { "Default Inclusions", "lbmc.ssf_init.flags.default_inclusions", FT_BOOLEAN, L_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CNTL_SSF_INIT_DEFAULT_INC, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_flags_default_exclusions,
+ { "Default Exclusions", "lbmc.ssf_init.flags.default_exclusions", FT_BOOLEAN, L_LBMC_CNTL_SSF_INIT_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CNTL_SSF_INIT_DEFAULT_EXC, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_transport_idx,
+ { "Transport Index", "lbmc.ssf_init.transport_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_client_idx,
+ { "Client Index", "lbmc.ssf_init.client_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_ssf_port,
+ { "SSF Port", "lbmc.ssf_init.ssf_port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_res,
+ { "Reserved", "lbmc.ssf_init.res", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_init_ssf_ip,
+ { "SSF IP Address", "lbmc.ssf_init.ssf_ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_creq,
+ { "SSF CReq", "lbmc.ssf_creq", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_creq_next_hdr,
+ { "Next Header", "lbmc.ssf_creq.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_creq_hdr_len,
+ { "Header Length", "lbmc.ssf_creq.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_creq_flags,
+ { "Flags", "lbmc.ssf_creq.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_creq_flags_ignore,
+ { "Ignore", "lbmc.ssf_creq.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_SSF_CREQ_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_ssf_creq_mode,
+ { "Mode", "lbmc.ssf_creq.mode", FT_UINT8, BASE_HEX, VALS(lbmc_ssf_creq_mode), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_creq_transport_idx,
+ { "Transport Index", "lbmc.ssf_creq.transport_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_creq_topic_idx,
+ { "Topic Index", "lbmc.ssf_creq.topic_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ssf_creq_client_idx,
+ { "Client Index", "lbmc.ssf_creq.client_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg,
+ { "UME PReg", "lbmc.ume_preg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_next_hdr,
+ { "Next Header", "lbmc.ume_preg.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_hdr_len,
+ { "Header Length", "lbmc.ume_preg.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_flags,
+ { "Flags", "lbmc.ume_preg.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_flags_ignore,
+ { "Ignore", "lbmc.ume_preg.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_flags_f_flag,
+ { "Do Not Forward ACKs", "lbmc.ume_preg.flags.f_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS * 8, TFS(&lbmc_ume_f_flag), LBMC_UME_PREG_F_FLAG, "Set if ACKs are to be forwarded", HFILL } },
+ { &hf_lbmc_ume_preg_flags_p_flag,
+ { "Proxy Source", "lbmc.ume_preg.flags.p_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_PREG_P_FLAG, "Set if this source is a proxy source", HFILL } },
+ { &hf_lbmc_ume_preg_flags_w_flag,
+ { "Receiver Paced Persistence", "lbmc.ume_preg.flags.w_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_PREG_W_FLAG, "Set if receiver paced persistence is used", HFILL } },
+ { &hf_lbmc_ume_preg_flags_d_flag,
+ { "Deregister", "lbmc.ume_preg.flags.d_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_PREG_D_FLAG, "Set if this is a de-registration", HFILL } },
+ { &hf_lbmc_ume_preg_marker,
+ { "Marker", "lbmc.ume_preg.marker", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_marker_s_flag,
+ { "Source Registration", "lbmc.ume_preg.marker.s_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_HDR_T_MARKER * 8, TFS(&lbmc_ume_s_flag), LBMC_UME_PREG_S_FLAG, "Set if this is a source registration", HFILL } },
+ { &hf_lbmc_ume_preg_marker_marker,
+ { "Marker", "lbmc.ume_preg.marker.marker", FT_UINT8, BASE_DEC_HEX, NULL, LBMC_CNTL_UME_PREG_MARKER_MASK, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_reg_id,
+ { "Registration ID", "lbmc.ume_preg.reg_id", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_transport_idx,
+ { "Transport Index", "lbmc.ume_preg.transport_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_topic_idx,
+ { "Topic Index", "lbmc.ume_preg.topic_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_src_reg_id,
+ { "Source Registration ID", "lbmc.ume_preg.src_reg_id", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_port,
+ { "Response Port", "lbmc.ume_preg.resp_port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_res2,
+ { "Reserved2", "lbmc.ume_preg.res2", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_ip,
+ { "Response IP Address", "lbmc.ume_preg.resp_ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp,
+ { "UME PReg Resp", "lbmc.ume_preg_resp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_next_hdr,
+ { "Next Header", "lbmc.ume_preg_resp.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_hdr_len,
+ { "Header Length", "lbmc.ume_preg_resp.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_code,
+ { "Code", "lbmc.ume_preg_resp.code", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_code_ignore,
+ { "Ignore", "lbmc.ume_preg_resp.code.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_code_e_flag,
+ { "Error Indicator", "lbmc.ume_preg_resp.code.e_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE * 8, TFS(&lbmc_ume_error_flag), LBMC_UME_PREG_RESP_E_FLAG, "Set if an error occurred", HFILL } },
+ { &hf_lbmc_ume_preg_resp_code_o_flag,
+ { "Old Client", "lbmc.ume_preg_resp.code.o_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE * 8, TFS(&lbmc_ume_o_flag), LBMC_UME_PREG_RESP_O_FLAG, "Set if an old client was detected", HFILL } },
+ { &hf_lbmc_ume_preg_resp_code_n_flag,
+ { "No ACKs/No Cache", "lbmc.ume_preg_resp.code.n_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE * 8, TFS(&lbmc_ume_n_flag), LBMC_UME_PREG_RESP_CODE_NOACKS_FLAG, "Set if not ACKing or not caching", HFILL } },
+ { &hf_lbmc_ume_preg_resp_code_w_flag,
+ { "Receiver Paced Persistence", "lbmc.ume_preg_resp.code.w_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE * 8, TFS(&tfs_set_notset), LBMC_UME_PREG_RESP_W_FLAG, "Set if receiver paced persistence", HFILL } },
+ { &hf_lbmc_ume_preg_resp_code_d_flag,
+ { "Deregister", "lbmc.ume_preg_resp.code.d_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_CODE * 8, TFS(&tfs_set_notset), LBMC_UME_PREG_RESP_D_FLAG, "Set if deregistration", HFILL } },
+ { &hf_lbmc_ume_preg_resp_code_code,
+ { "Error Code", "lbmc.ume_preg_resp.code.code", FT_UINT8, BASE_HEX, VALS(lbmc_ume_preg_resp_error_code), LBMC_CNTL_UME_PREG_RESP_CODE_MASK, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_marker,
+ { "Marker", "lbmc.ume_preg_resp.marker", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_marker_s_flag,
+ { "Source Registration", "lbmc.ume_preg_resp.marker.s_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_PREG_RESP_HDR_T_MARKER * 8, TFS(&lbmc_ume_s_flag), LBMC_UME_PREG_S_FLAG, "Set if source registration", HFILL } },
+ { &hf_lbmc_ume_preg_resp_marker_marker,
+ { "Marker", "lbmc.ume_preg_resp.marker.marker", FT_UINT8, BASE_DEC_HEX, NULL, LBMC_CNTL_UME_PREG_MARKER_MASK, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_reg_id,
+ { "Registration ID", "lbmc.ume_preg_resp.reg_id", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_transport_idx,
+ { "Transport Index", "lbmc.ume_preg_resp.transport_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_topic_idx,
+ { "Topic Index", "lbmc.ume_preg_resp.topic_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_low_seqnum,
+ { "Low Sequence Number", "lbmc.ume_preg_resp.low_seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_preg_resp_high_seqnum,
+ { "High Sequence Number", "lbmc.ume_preg_resp.high_seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack,
+ { "UME ACK", "lbmc.ume_ack", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_next_hdr,
+ { "Next Header", "lbmc.ume_ack.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_hdr_len,
+ { "Header Length", "lbmc.ume_ack.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_flags,
+ { "Flags", "lbmc.ume_ack.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_flags_ignore,
+ { "Ignore", "lbmc.ume_ack.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_flags_o_flag,
+ { "Receiver Arrival-Order Delivery", "lbmc.ume_ack.flags.o_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_ACK_O_FLAG, "Set if receiver specified arrival-order delivery", HFILL } },
+ { &hf_lbmc_ume_ack_flags_f_flag,
+ { "Do Not Forward ACKs", "lbmc.ume_ack.flags.f_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS * 8, TFS(&lbmc_ume_f_flag), LBMC_UME_ACK_F_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_flags_u_flag,
+ { "User-Specified Receiver Registration ID", "lbmc.ume_ack.flags.u_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_ACK_U_FLAG, "Set if receiver registration ID was set by the user", HFILL } },
+ { &hf_lbmc_ume_ack_flags_e_flag,
+ { "Explicit ACK", "lbmc.ume_ack.flags.e_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_ACK_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_ACK_E_FLAG, "Set if an explicit ACK", HFILL } },
+ { &hf_lbmc_ume_ack_type,
+ { "Type", "lbmc.ume_ack.type", FT_UINT8, BASE_HEX, VALS(lbmc_ume_ack_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_transport_idx,
+ { "Transport Index", "lbmc.ume_ack.transport_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_id_2,
+ { "Topic Index/Registration ID", "lbmc.ume_ack.id_2", FT_UINT32, BASE_DEC, NULL, 0x0, "Topic index (from store) or Registration ID (from receiver)", HFILL } },
+ { &hf_lbmc_ume_ack_rcv_reg_id,
+ { "Receiver Registration ID", "lbmc.ume_ack.rcv_reg_id", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_seqnum,
+ { "Sequence Number", "lbmc.ume_ack.seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq,
+ { "UME RX Request", "lbmc.ume_rxreq", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_next_hdr,
+ { "Next Header", "lbmc.ume_rxreq.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_hdr_len,
+ { "Header Length", "lbmc.ume_rxreq.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_flags,
+ { "Flags", "lbmc.ume_rxreq.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_flags_ignore,
+ { "Ignore", "lbmc.ume_rxreq.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_flags_tsni_req,
+ { "TSNI Request", "lbmc.ume_rxreq.flags.t", FT_BOOLEAN, L_LBMC_CNTL_UME_RXREQ_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_RXREQ_T_FLAG, "Set if TSNI request", HFILL } },
+ { &hf_lbmc_ume_rxreq_request_idx,
+ { "Request Index", "lbmc.ume_rxreq.request_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_transport_idx,
+ { "Transport Index", "lbmc.ume_rxreq.transport_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_id_2,
+ { "Topic Index/Registration ID", "lbmc.ume_rxreq.id_2", FT_UINT32, BASE_DEC, NULL, 0x0, "Topic index (from store) or Registration ID (from receiver)", HFILL } },
+ { &hf_lbmc_ume_rxreq_seqnum,
+ { "Sequence Number", "lbmc.ume_rxreq.seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_rx_port,
+ { "Retransmission Port", "lbmc.ume_rxreq.rx_port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_res,
+ { "Reserved", "lbmc.ume_rxreq.res", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_rxreq_rx_ip,
+ { "Retransmission IP Address", "lbmc.ume_rxreq.rx_ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_keepalive,
+ { "UME Keepalive", "lbmc.ume_keepalive", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_keepalive_next_hdr,
+ { "Next Header", "lbmc.ume_keepalive.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_keepalive_hdr_len,
+ { "Header Length", "lbmc.ume_keepalive.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_keepalive_flags,
+ { "Flags", "lbmc.ume_keepalive.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_keepalive_flags_ignore,
+ { "Ignore", "lbmc.ume_keepalive.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_ume_keepalive_flags_r_flag,
+ { "Response Requested", "lbmc.ume_keepalive.flags.r_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS * 8, TFS(&lbmc_ume_r_flag), LBMC_UME_KEEPALIVE_R_FLAG, "Set if response requested", HFILL } },
+ { &hf_lbmc_ume_keepalive_flags_t_flag,
+ { "No TIR Seen", "lbmc.ume_keepalive.flags.t_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_KEEPALIVE_HDR_T_FLAGS * 8, TFS(&lbmc_ume_t_flag), LBMC_UME_KEEPALIVE_T_FLAG, "Set if no TIR seen", HFILL } },
+ { &hf_lbmc_ume_keepalive_type,
+ { "Type", "lbmc.ume_keepalive.type", FT_UINT8, BASE_HEX, VALS(lbmc_ume_ka_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_keepalive_transport_idx,
+ { "Transport Index", "lbmc.ume_keepalive.transport_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_keepalive_topic_idx,
+ { "Topic Index", "lbmc.ume_keepalive.topic_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_keepalive_reg_id,
+ { "Registration ID", "lbmc.ume_keepalive.reg_id", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storeid,
+ { "UME Store ID", "lbmc.ume_storeid", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storeid_next_hdr,
+ { "Next Header", "lbmc.ume_storeid.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storeid_hdr_len,
+ { "Header Length", "lbmc.ume_storeid.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storeid_store_id,
+ { "Store ID", "lbmc.ume_storeid.storeid", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storeid_store_id_ignore,
+ { "Ignore", "lbmc.ume_storeid.storeid.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_STOREID_HDR_T_STORE_ID * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_storeid_store_id_store_id,
+ { "Store ID", "lbmc.ume_storeid.storeid.store_id", FT_UINT16, BASE_DEC_HEX, NULL, LBMC_CNTL_UME_STOREID_STOREID_MASK, NULL, HFILL } },
+ { &hf_lbmc_ume_ranged_ack,
+ { "UME Ranged ACK", "lbmc.ume_ranged_ack", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ranged_ack_next_hdr,
+ { "Next Header", "lbmc.ume_ranged_ack.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ranged_ack_hdr_len,
+ { "Header Length", "lbmc.ume_ranged_ack.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ranged_ack_flags,
+ { "Flags", "lbmc.ume_ranged_ack.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ranged_ack_flags_ignore,
+ { "Ignore", "lbmc.ume_ranged_ack.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_RANGED_ACK_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_ranged_ack_first_seqnum,
+ { "First Sequence Number", "lbmc.ume_ranged_ack.first_seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ranged_ack_last_seqnum,
+ { "Last Sequence Number", "lbmc.ume_ranged_ack.last_seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_id,
+ { "UME ACK ID", "lbmc.ume_ack_id", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_id_next_hdr,
+ { "Next Header", "lbmc.ume_ack_id.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_id_hdr_len,
+ { "Header Length", "lbmc.ume_ack_id.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_id_flags,
+ { "Flags", "lbmc.ume_ack_id.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_id_flags_ignore,
+ { "Ignore", "lbmc.ume_ack_id.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_ACK_ID_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_ack_id_id,
+ { "Acknowledgement ID", "lbmc.ume_ack_id.id", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_capability,
+ { "UME Capability", "lbmc.ume_capability", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_capability_next_hdr,
+ { "Next Header", "lbmc.ume_capability.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_capability_hdr_len,
+ { "Header Length", "lbmc.ume_capability.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_capability_flags,
+ { "Flags", "lbmc.ume_capability.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_capability_flags_ignore,
+ { "Ignore", "lbmc.ume_capability.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_capability_flags_qc_flag,
+ { "Quorum/Consensus Capabilities", "lbmc.ume_capability.flags.qc_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_CAPABILITY_QC_FLAG, "Set if quorum/consensus supported", HFILL } },
+ { &hf_lbmc_ume_capability_flags_client_lifetime_flag,
+ { "Client Lifetime Capabilities", "lbmc.ume_capability.flags.client_lifetime_flag", FT_BOOLEAN, L_LBMC_CNTL_UME_CAPABILITY_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_CAPABILITY_CLIENT_LIFETIME_FLAG, "Set if client lifetime enabled", HFILL } },
+ { &hf_lbmc_ume_proxy_src,
+ { "UME Proxy Source", "lbmc.ume_proxy_src", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_proxy_src_next_hdr,
+ { "Next Header", "lbmc.ume_proxy_src.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_proxy_src_hdr_len,
+ { "Header Length", "lbmc.ume_proxy_src.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_proxy_src_flags,
+ { "Flags", "lbmc.ume_proxy_src.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_proxy_src_flags_ignore,
+ { "Ignore", "lbmc.ume_proxy_src.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_proxy_src_flags_enable,
+ { "Enable Proxy Source", "lbmc.ume_proxy_src.flags.enable", FT_BOOLEAN, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_PROXY_SRC_E_FLAG, "Set if proxy source is enabled", HFILL } },
+ { &hf_lbmc_ume_proxy_src_flags_compatibility,
+ { "Enable Pre-6.0 Compatibility", "lbmc.ume_proxy_src.flags.compatibility", FT_BOOLEAN, L_LBMC_CNTL_UME_PROXY_SRC_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_PROXY_SRC_C_FLAG, "Set if pre-6.0 compatibility for created proxy source is enabled", HFILL } },
+ { &hf_lbmc_ume_store_group,
+ { "UME Store Group", "lbmc.ume_store_group", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_group_next_hdr,
+ { "Next Header", "lbmc.ume_store_group.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_group_hdr_len,
+ { "Header Length", "lbmc.ume_store_group.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_group_flags,
+ { "Flags", "lbmc.ume_store_group.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_group_flags_ignore,
+ { "Ignore", "lbmc.ume_store_group.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_STORE_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_store_group_grp_idx,
+ { "Group Index", "lbmc.ume_store_group.grp_idx", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_group_grp_sz,
+ { "Group Size", "lbmc.ume_store_group.grp_sz", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_group_res1,
+ { "Reserved", "lbmc.ume_store_group.res1", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store,
+ { "UME Store", "lbmc.ume_store", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_next_hdr,
+ { "Next Header", "lbmc.ume_store.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_hdr_len,
+ { "Header Length", "lbmc.ume_store.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_flags,
+ { "Flags", "lbmc.ume_store.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_flags_ignore,
+ { "Ignore", "lbmc.ume_store.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_STORE_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_store_grp_idx,
+ { "Group Index", "lbmc.ume_store.grp_idx", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_store_tcp_port,
+ { "Store TCP Port", "lbmc.ume_store.store_tcp_port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_store_idx,
+ { "Store Index", "lbmc.ume_store.store_idx", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_store_ip_addr,
+ { "Store IP Address", "lbmc.ume_store.store_ip_addr", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_src_reg_id,
+ { "Source RegID", "lbmc.ume_store.src_reg_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_lj_info,
+ { "UME Late Join", "lbmc.ume_lj_info", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_lj_info_next_hdr,
+ { "Next Header", "lbmc.ume_lj_info.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_lj_info_hdr_len,
+ { "Header Length", "lbmc.ume_lj_info.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_lj_info_flags,
+ { "Flags", "lbmc.ume_lj_info.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_lj_info_flags_ignore,
+ { "Ignore", "lbmc.ume_lj_info.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_LJ_INFO_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_lj_info_low_seqnum,
+ { "Low sequence", "lbmc.ume_lj_info.low_seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_lj_info_high_seqnum,
+ { "High sequence", "lbmc.ume_lj_info.high_seqnum", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_lj_info_qidx,
+ { "Request index", "lbmc.ume_lj_info.qidx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tsni,
+ { "TSNI", "lbmc.tsni", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tsni_next_hdr,
+ { "Next Header", "lbmc.tsni.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_tsni_hdr_len,
+ { "Header Length", "lbmc.tsni.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tsni_num_recs,
+ { "Num Recs", "lbmc.tsni.num_recs", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tsni_num_recs_ignore,
+ { "Ignore", "lbmc.tsni.num_recs.ignore", FT_BOOLEAN, L_LBMC_CNTL_TSNI_HDR_T_NUM_RECS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_tsni_num_recs_num_recs,
+ { "Num Recs", "lbmc.tsni.num_recs.num_recs", FT_UINT16, BASE_DEC_HEX, NULL, LBMC_CNTL_TSNI_NUM_RECS_MASK, NULL, HFILL } },
+ { &hf_lbmc_tsni_rec,
+ { "TSNIs", "lbmc.tsni.tsni_rec", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tsni_rec_tidx,
+ { "Topic Index", "lbmc.tsni.tsni_rec.tidx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tsni_rec_sqn,
+ { "Sequence Number", "lbmc.tsni.tsni_rec.sqn", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg,
+ { "UMQ Registration", "lbmc.umq_reg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_next_hdr,
+ { "Next Header", "lbmc.umq_reg.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_hdr_len,
+ { "Header Length", "lbmc.umq_reg.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_flags,
+ { "Flags", "lbmc.umq_reg.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_flags_ignore,
+ { "Ignore", "lbmc.umq_reg.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_flags_r_flag,
+ { "R Flag", "lbmc.umq_reg.flags.r_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_REG_R_FLAG, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_flags_t_flag,
+ { "TSP Present", "lbmc.umq_reg.flags.t_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_REG_T_FLAG, "Sst if TSP is present", HFILL } },
+ { &hf_lbmc_umq_reg_flags_i_flag,
+ { "Index Assign Eligible", "lbmc.umq_reg.flags.i_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_REG_I_FLAG, "Set if index assign eligible", HFILL } },
+ { &hf_lbmc_umq_reg_flags_msg_sel_flag,
+ { "Message Selector", "lbmc.umq_reg.flags.msg_sel_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_REG_MSG_SEL_FLAG, "Set if message selector present", HFILL } },
+ { &hf_lbmc_umq_reg_reg_type,
+ { "Registration Type", "lbmc.umq_reg.reg_type", FT_UINT8, BASE_DEC, VALS(lbmc_umq_reg_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_queue_id,
+ { "Queue ID", "lbmc.umq_reg.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_cmd_id,
+ { "Command ID", "lbmc.umq_reg.cmd_id", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_inst_idx,
+ { "Instance Index", "lbmc.umq_reg.inst_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_regid,
+ { "Registration ID", "lbmc.umq_reg.regid", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ctx,
+ { "Context Registration", "lbmc.umq_reg.reg_ctx", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ctx_port,
+ { "Port", "lbmc.umq_reg.reg_ctx.port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ctx_reserved,
+ { "Reserved", "lbmc.umq_reg.reg_ctx.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ctx_ip,
+ { "IP Address", "lbmc.umq_reg.reg_ctx.ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ctx_capabilities,
+ { "Capabilities", "lbmc.umq_reg.reg_ctx.capabilities", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_src,
+ { "Source Registration", "lbmc.umq_reg.reg_src", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_src_transport_idx,
+ { "Transport Index", "lbmc.umq_reg.reg_src.transport_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_src_topic_idx,
+ { "Topic Index", "lbmc.umq_reg.reg_src.topic_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_rcv,
+ { "Receiver Registration", "lbmc.umq_reg.reg_rcv", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_rcv_assign_id,
+ { "Assignment ID", "lbmc.umq_reg.reg_rcv.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_rcv_rcv_type_id,
+ { "Receiver Type ID", "lbmc.umq_reg.reg_rcv.rcv_type_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_rcv_last_topic_rcr_tsp,
+ { "Last Topic RCR TSP", "lbmc.umq_reg.reg_rcv.last_topic_rcr_tsp", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_rcv_dereg,
+ { "Receiver deregistration", "lbmc.umq_reg.rcv_dereg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_rcv_dereg_rcr_idx,
+ { "RCR Index", "lbmc.umq_reg.rcv_dereg.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_rcv_dereg_assign_id,
+ { "Assignment ID", "lbmc.umq_reg.rcv_dereg.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ulb_rcv,
+ { "ULB Receiver registration", "lbmc.umq_reg.reg_ulb_rcv", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ulb_rcv_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_reg.reg_ulb_rcv.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ulb_rcv_assign_id,
+ { "Assignment ID", "lbmc.umq_reg.reg_ulb_rcv.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ulb_rcv_rcv_type_id,
+ { "Receiver Type ID", "lbmc.umq_reg.reg_ulb_rcv.rcv_type_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ulb_rcv_port,
+ { "Port", "lbmc.umq_reg.reg_ulb_rcv.port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ulb_rcv_reserved,
+ { "Reserved", "lbmc.umq_reg.reg_ulb_rcv.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ulb_rcv_ip,
+ { "IP Address", "lbmc.umq_reg.reg_ulb_rcv.ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_ulb_rcv_capabilities,
+ { "Capabilities", "lbmc.umq_reg.reg_ulb_rcv.capabilities", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_ulb_rcv_dereg,
+ { "ULB Receiver Deregistration", "lbmc.umq_reg.ulb_rcv_dereg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_ulb_rcv_dereg_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_reg.ulb_rcv_dereg.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_ulb_rcv_dereg_assign_id,
+ { "Assignment ID", "lbmc.umq_reg.ulb_rcv_dereg.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_observer_rcv,
+ { "Observer Receiver Registration", "lbmc.umq_reg.reg_observer_rcv", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_observer_rcv_assign_id,
+ { "Assignment ID", "lbmc.umq_reg.reg_observer_rcv.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_observer_rcv_rcv_type_id,
+ { "Receiver Type ID", "lbmc.umq_reg.reg_observer_rcv.rcv_type_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_reg_observer_rcv_last_topic_rcr_tsp,
+ { "Last Topic RCR TSP", "lbmc.umq_reg.reg_observer_rcv.last_topic_rcr_tsp", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_observer_rcv_dereg,
+ { "Observer Receiver Deregistration", "lbmc.umq_reg.observer_rcv_dereg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_observer_rcv_dereg_rcr_idx,
+ { "RCR Index", "lbmc.umq_reg.observer_rcv_dereg.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_observer_rcv_dereg_assign_id,
+ { "Assignment ID", "lbmc.umq_reg.observer_rcv_dereg.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp,
+ { "UMQ Registration Response", "lbmc.umq_reg_resp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_next_hdr,
+ { "Next Header", "lbmc.umq_reg_resp.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_hdr_len,
+ { "Header Length", "lbmc.umq_reg_resp.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_flags,
+ { "Flags", "lbmc.umq_reg_resp.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_flags_ignore,
+ { "Ignore", "lbmc.umq_reg_resp.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_flags_r_flag,
+ { "R Flag", "lbmc.umq_reg_resp.flags.r", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_REG_RESP_R_FLAG, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_flags_l_flag,
+ { "ULB Error", "lbmc.umq_reg_resp.flags.l", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_REG_RESP_ERR_L_FLAG, "Set if ULB error occurred", HFILL } },
+ { &hf_lbmc_umq_reg_resp_flags_src_s_flag,
+ { "Source Dissemination", "lbmc.umq_reg_resp.flags.src_s", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_REG_RESP_SRC_S_FLAG, "Set if source dissemination model", HFILL } },
+ { &hf_lbmc_umq_reg_resp_flags_src_d_flag,
+ { "RCR Index Present", "lbmc.umq_reg_resp.flags.src_d", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_RESP_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_REG_RESP_SRC_D_FLAG, "Set if RCR index present", HFILL } },
+ { &hf_lbmc_umq_reg_resp_resp_type,
+ { "Registration Response Type", "lbmc.umq_reg_resp.resp_type", FT_UINT8, BASE_DEC, VALS(lbmc_umq_reg_response_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_queue_id,
+ { "Queue ID", "lbmc.umq_reg_resp.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_cmd_id,
+ { "Command ID", "lbmc.umq_reg_resp.cmd_id", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_inst_idx,
+ { "Instance Index", "lbmc.umq_reg_resp.inst_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_regid,
+ { "Registration ID", "lbmc.umq_reg_resp.regid", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ctx,
+ { "Context Registration Response", "lbmc.umq_reg_resp.reg_ctx", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ctx_capabilities,
+ { "Capabilities", "lbmc.umq_reg_resp.reg_ctx.capabilities", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ctx_ex,
+ { "Extended Context Registration Response", "lbmc.umq_reg_resp.reg_ctx_ex", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ctx_ex_capabilities,
+ { "Capabilities", "lbmc.umq_reg_resp.reg_ctx_ex.capabilities", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ctx_ex_reserved,
+ { "Reserved", "lbmc.umq_reg_resp.reg_ctx_ex.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ctx_ex_flags,
+ { "Flags", "lbmc.umq_reg_resp.reg_ctx_ex.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ctx_ex_flags_firstmsg,
+ { "First Message", "lbmc.umq_reg_resp.reg_ctx_ex.flags.firstmsg", FT_BOOLEAN, L_LBMC_CNTL_UMQ_REG_RESP_CTX_EX_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_REG_RESP_CTX_EX_FLAG_FIRSTMSG, "Set if first message", HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ctx_ex_stamp,
+ { "Stamp", "lbmc.umq_reg_resp.reg_ctx_ex.stamp", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_err,
+ { "Registration Error Response", "lbmc.umq_reg_resp.err", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_err_reserved,
+ { "Reserved", "lbmc.umq_reg_resp.err.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_err_code,
+ { "Code", "lbmc.umq_reg_resp.err.code", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_src,
+ { "Source Registration Response", "lbmc.umq_reg_resp.reg_src", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_src_rcr_idx,
+ { "RCR Index", "lbmc.umq_reg_resp.reg_src.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_rcv,
+ { "Receiver Registration Response", "lbmc.umq_reg_resp.reg_rcv", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_rcv_rcr_idx,
+ { "RCR Index", "lbmc.umq_reg_resp.reg_rcv.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_rcv_assign_id,
+ { "Assignment ID", "lbmc.umq_reg_resp.reg_rcv.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_rcv_appset_idx,
+ { "Application Set Index", "lbmc.umq_reg_resp.reg_rcv.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_rcv_reserved,
+ { "Reserved", "lbmc.umq_reg_resp.reg_rcv.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_rcv_dereg,
+ { "Receiver Deregistration Response", "lbmc.umq_reg_resp.rcv_dereg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_rcv_dereg_rcr_idx,
+ { "RCR Index", "lbmc.umq_reg_resp.rcv_dereg.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_rcv_dereg_assign_id,
+ { "Assignment ID", "lbmc.umq_reg_resp.rcv_dereg.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ulb_rcv,
+ { "ULB Receiver Registration Response", "lbmc.umq_reg_resp.reg_ulb_rcv", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ulb_rcv_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_reg_resp.reg_ulb_rcv.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ulb_rcv_assign_id,
+ { "Assignment ID", "lbmc.umq_reg_resp.reg_ulb_rcv.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ulb_rcv_appset_idx,
+ { "Application Set Index", "lbmc.umq_reg_resp.reg_ulb_rcv.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ulb_rcv_reserved,
+ { "Reserved", "lbmc.umq_reg_resp.reg_ulb_rcv.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_ulb_rcv_capabilities,
+ { "Capabilities", "lbmc.umq_reg_resp.reg_ulb_rcv.capabilities", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_ulb_rcv_dereg,
+ { "ULB Receiver Deregistration Response", "lbmc.umq_reg_resp.ulb_rcv_dereg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_ulb_rcv_dereg_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_reg_resp.ulb_rcv_dereg.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_ulb_rcv_dereg_assign_id,
+ { "Assignment ID", "lbmc.umq_reg_resp.ulb_rcv_dereg.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_observer_rcv,
+ { "Observer Receiver Registration Response", "lbmc.umq_reg_resp.reg_observer_rcv", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_observer_rcv_rcr_idx,
+ { "RCR Index", "lbmc.umq_reg_resp.reg_observer_rcv.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_observer_rcv_assign_id,
+ { "Assignment ID", "lbmc.umq_reg_resp.reg_observer_rcv.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_observer_rcv_appset_idx,
+ { "Application Set Index", "lbmc.umq_reg_resp.reg_observer_rcv.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_reg_observer_rcv_reserved,
+ { "Reserved", "lbmc.umq_reg_resp.reg_observer_rcv.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_observer_rcv_dereg,
+ { "Observer Receiver Deregistration Response", "lbmc.umq_reg_resp.observer_rcv_dereg", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_observer_rcv_dereg_rcr_idx,
+ { "RCR Index", "lbmc.umq_reg_resp.observer_rcv_dereg.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_reg_resp_observer_rcv_dereg_assign_id,
+ { "Assignment ID", "lbmc.umq_reg_resp.observer_rcv_dereg.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack,
+ { "UMQ ACK", "lbmc.umq_ack", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_next_hdr,
+ { "Next Header", "lbmc.umq_ack.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_hdr_len,
+ { "Header Length", "lbmc.umq_ack.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_msgs,
+ { "Msgs", "lbmc.umq_ack.msgs", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_msgs_ignore,
+ { "Ignore", "lbmc.umq_ack.msgs.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_msgs_t_flag,
+ { "T Flag", "lbmc.umq_ack.msgs.t_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_ACK_T_FLAG, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_msgs_d_flag,
+ { "D Flag", "lbmc.umq_ack.msgs.d_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ACK_HDR_T_MSGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_ACK_D_FLAG, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_msgs_numids,
+ { "Number of Message IDs", "lbmc.umq_ack.msgs.num_ids", FT_UINT8, BASE_DEC_HEX, NULL, LBMC_UMQ_ACK_NUMIDS_MASK, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_ack_type,
+ { "ACK Type", "lbmc.umq_ack.ack_type", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_umq_ack_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_msgid,
+ { "Message ID", "lbmc.umq_ack.msgid", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_msgid_regid,
+ { "Registration ID", "lbmc.umq_ack.msgid.regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_msgid_stamp,
+ { "Stamp", "lbmc.umq_ack.msgid.stamp", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_stable,
+ { "Stable", "lbmc.umq_ack.stable", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_stable_queue_id,
+ { "Queue ID", "lbmc.umq_ack.stable.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_stable_inst_idx,
+ { "Instance Index", "lbmc.umq_ack.stable.inst_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_stable_reserved,
+ { "Reserved", "lbmc.umq_ack.stable.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_cr,
+ { "Consumption Report", "lbmc.umq_ack.cr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_cr_rcr_idx,
+ { "RCR Index", "lbmc.umq_ack.cr.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_cr_assign_id,
+ { "Assignment ID", "lbmc.umq_ack.cr.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_cr_appset_idx,
+ { "Application Set Index", "lbmc.umq_ack.cr.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_cr_reserved,
+ { "Reserved", "lbmc.umq_ack.cr.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_ulb_cr,
+ { "ULB Consumption Report", "lbmc.umq_ack.ulb_cr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_ulb_cr_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_ack.ulb_cr.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_ulb_cr_assign_id,
+ { "Assignment ID", "lbmc.umq_ack.ulb_cr.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_ulb_cr_appset_idx,
+ { "Application Set Index", "lbmc.umq_ack.ulb_cr.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ack_ulb_cr_reserved,
+ { "Reserved", "lbmc.umq_ack.ulb_cr.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr,
+ { "UMQ Receiver Control Record", "lbmc.umq_rcr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_next_hdr,
+ { "Next Header", "lbmc.umq_rcr.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_hdr_len,
+ { "Header Length", "lbmc.umq_rcr.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_flags,
+ { "Flags", "lbmc.umq_rcr.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_flags_ignore,
+ { "Ignore", "lbmc.umq_rcr.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_flags_r_flag,
+ { "Reassign", "lbmc.umq_rcr.flags.r_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_RCR_R_FLAG, "Set if reassignment", HFILL } },
+ { &hf_lbmc_umq_rcr_flags_d_flag,
+ { "Receiver Deregister", "lbmc.umq_rcr.flags.d_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_RCR_D_FLAG, "Set if receiver deregistration", HFILL } },
+ { &hf_lbmc_umq_rcr_flags_s_flag,
+ { "Resubmit", "lbmc.umq_rcr.flags.s_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_RCR_S_FLAG, "Set if resubmission", HFILL } },
+ { &hf_lbmc_umq_rcr_flags_eoi_flag,
+ { "End of Index", "lbmc.umq_rcr.flags.eoi_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_RCR_EOI_FLAG, "Set if end of index", HFILL } },
+ { &hf_lbmc_umq_rcr_flags_boi_flag,
+ { "Beginning of Index", "lbmc.umq_rcr.flags.boi_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RCR_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_RCR_BOI_FLAG, "Set if beginning of index", HFILL } },
+ { &hf_lbmc_umq_rcr_queue_id,
+ { "Queue ID", "lbmc.umq_rcr.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_rcr_idx,
+ { "RCR Index", "lbmc.umq_rcr.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_msgid_regid,
+ { "Message ID Registration ID", "lbmc.umq_rcr.msgid_regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_msgid_stamp,
+ { "Message ID Stamp", "lbmc.umq_rcr.msgid_regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_topic_tsp,
+ { "Topic TSP", "lbmc.umq_rcr.topic_tsp", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_q_tsp,
+ { "Queue TSP", "lbmc.umq_rcr.q_tsp", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_assign_id,
+ { "Assignment ID", "lbmc.umq_rcr.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_appset_idx,
+ { "Application Set Index", "lbmc.umq_rcr.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_num_ras,
+ { "Number of Reassigns", "lbmc.umq_rcr.num_ras", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rcr_queue_ver,
+ { "Queue Version", "lbmc.umq_rcr.queue_ver", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka,
+ { "UMQ Keepalive", "lbmc.umq_ka", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka_next_hdr,
+ { "Next Header", "lbmc.umq_ka.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka_hdr_len,
+ { "Header Length", "lbmc.umq_ka.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka_flags,
+ { "Flags", "lbmc.umq_ka.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka_flags_ignore,
+ { "Ignore", "lbmc.umq_ka.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka_flags_r_flag,
+ { "Response Requested", "lbmc.umq_ka.flags.r", FT_BOOLEAN, L_LBMC_CNTL_UMQ_KA_HDR_T_FLAGS * 8, TFS(&lbmc_umq_r_flag), LBMC_UMQ_KA_R_FLAG, "Set if response requested", HFILL } },
+ { &hf_lbmc_cntl_umq_ka_ka_type,
+ { "Keepalive Type", "lbmc.umq_ka.ka_type", FT_UINT8, BASE_HEX_DEC, VALS(lbmc_umq_ka_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka_queue_id,
+ { "Queue ID", "lbmc.umq_ka.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka_regid,
+ { "Registration ID", "lbmc.umq_ka.regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka_inst_idx,
+ { "Instance Index", "lbmc.umq_ka.inst_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_cntl_umq_ka_reserved,
+ { "Reserved", "lbmc.umq_ka.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_src,
+ { "Source", "lbmc.umq_ka.src", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_src_transport_idx,
+ { "Transport Index", "lbmc.umq_ka.src.transport_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_src_topic_idx,
+ { "Topic Index", "lbmc.umq_ka.src.topic_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_rcv,
+ { "Receiver", "lbmc.umq_ka.rcv", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_rcv_rcr_idx,
+ { "RCR Index", "lbmc.umq_ka.rcv.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_rcv_assign_id,
+ { "Assignment ID", "lbmc.umq_ka.rcv.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_ulb_rcv,
+ { "ULB Receiver", "lbmc.umq_ka.ulb_rcv", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_ulb_rcv_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_ka.ulb_rcv.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_ulb_rcv_assign_id,
+ { "Assignment ID", "lbmc.umq_ka.ulb_rcv.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_ulb_rcv_resp,
+ { "ULB Receiver Response", "lbmc.umq_ka.ulb_rcv_resp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_ulb_rcv_resp_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_ka.ulb_rcv_resp.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_ulb_rcv_resp_assign_id,
+ { "Assignment ID", "lbmc.umq_ka.ulb_rcv_resp.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_ulb_rcv_resp_appset_idx,
+ { "Application Set Index", "lbmc.umq_ka.ulb_rcv_resp.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ka_ulb_rcv_resp_reserved,
+ { "Reserved", "lbmc.umq_ka.ulb_rcv_resp.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq,
+ { "UMQ Retransmission Request", "lbmc.umq_rxreq", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_next_hdr,
+ { "Next Header", "lbmc.umq_rxreq.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_hdr_len,
+ { "Header Length", "lbmc.umq_rxreq.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_flags,
+ { "Flags", "lbmc.umq_rxreq.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_flags_ignore,
+ { "Ignore", "lbmc.umq_rxreq.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_flags_r_flag,
+ { "RegID Present", "lbmc.umq_rxreq.flags.r", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RXREQ_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_RXREQ_R_FLAG, "Set if registration ID is present", HFILL } },
+ { &hf_lbmc_umq_rxreq_rxreq_type,
+ { "Retransmission Request Type", "lbmc.umq_rxreq.rxreq_type", FT_UINT8, BASE_HEX_DEC, VALS(lbmc_umq_rxreq_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_regid_resp,
+ { "RegID Response", "lbmc.umq_rxreq.regid_resp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_regid_resp_regid,
+ { "Registration ID", "lbmc.umq_rxreq.regid_resp.regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_addr_resp,
+ { "Address Response", "lbmc.umq_rxreq.addr_resp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_addr_resp_ip,
+ { "IP Address", "lbmc.umq_rxreq.addr_resp.ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_addr_resp_port,
+ { "Port", "lbmc.umq_rxreq.addr_resp.port", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_addr_resp_reserved,
+ { "Reserved", "lbmc.umq_rxreq.addr_resp.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_mr,
+ { "Message Request", "lbmc.umq_rxreq.mr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_mr_assign_id,
+ { "Assignment ID", "lbmc.umq_rxreq.mr.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_mr_msgid_regid,
+ { "Message ID Registration ID", "lbmc.umq_rxreq.mr.msgid_regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_mr_msgid_stamp,
+ { "Message ID Stamp", "lbmc.umq_rxreq.mr.msgid_stamp", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr,
+ { "ULB MR", "lbmc.umq_rxreq.ulb_mr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_rxreq.ulb_mr.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_assign_id,
+ { "Assignment ID", "lbmc.umq_rxreq.ulb_mr.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_appset_idx,
+ { "Application Set Index", "lbmc.umq_rxreq.ulb_mr.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_reserved,
+ { "Reserved", "lbmc.umq_rxreq.ulb_mr.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_msgid_regid,
+ { "Message ID Registration ID", "lbmc.umq_rxreq.ulb_mr.msgid_regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_msgid_stamp,
+ { "Message ID Stamp", "lbmc.umq_rxreq.ulb_mr.msgid_stamp", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_abort,
+ { "ULB MR Abort", "lbmc.umq_rxreq.ulb_mr_abort", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_abort_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_rxreq.ulb_mr_abort.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_abort_assign_id,
+ { "Assignment ID", "lbmc.umq_rxreq.ulb_mr_abort.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_abort_msgid_regid,
+ { "Message ID Registration ID", "lbmc.umq_rxreq.ulb_mr_abort.msgid_regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_mr_abort_msgid_stamp,
+ { "Message ID Stamp", "lbmc.umq_rxreq.ulb_mr_abort.msgid_stamp", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_qrcrr,
+ { "Queue RCR Request", "lbmc.umq_rxreq.qrrcr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_qrcrr_tsp,
+ { "TSP", "lbmc.umq_rxreq.qrrcr.tsp", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_trcrr,
+ { "Topic RCR Request", "lbmc.umq_rxreq.trcrr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_trcrr_rcr_idx,
+ { "RCR Index", "lbmc.umq_rxreq.trcrr.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_trcrr_tsp,
+ { "TSP", "lbmc.umq_rxreq.trcrr.tsp", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_trcrr,
+ { "ULB Topic RCR Request", "lbmc.umq_rxreq.ulb_trcrr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_trcrr_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_rxreq.ulb_trcrr.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_trcrr_assign_id,
+ { "Assignment ID", "lbmc.umq_rxreq.ulb_trcrr.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_trcrr_tsp,
+ { "TSP", "lbmc.umq_rxreq.ulb_trcrr.tsp", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_trcrr_abort,
+ { "ULB TRCRR Abort", "lbmc.umq_rxreq.ulb_trcrr_abort", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_trcrr_abort_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_rxreq.ulb_trcrr_abort.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_trcrr_abort_assign_id,
+ { "Assignment ID", "lbmc.umq_rxreq.ulb_trcrr_abort.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_rxreq_ulb_trcrr_abort_tsp,
+ { "TSP", "lbmc.umq_rxreq.ulb_trcrr_abort.tsp", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_qmgmt,
+ { "Queue Management", "lbmc.umq_qmgmt", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_qmgmt_next_hdr,
+ { "Next Header", "lbmc.umq_qmgmt.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_qmgmt_hdr_len,
+ { "Header Length", "lbmc.umq_qmgmt.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req,
+ { "UMQ Resubmission Request", "lbmc.umq_resub_req", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_next_hdr,
+ { "Next Header", "lbmc.umq_resub_req.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_hdr_len,
+ { "Header Length", "lbmc.umq_resub_req.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_flags,
+ { "Flags", "lbmc.umq_resub_req.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_flags_ignore,
+ { "Ignore", "lbmc.umq_resub_req.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RESUB_REQ_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_msgid_regid,
+ { "Message ID Registration ID", "lbmc.umq_resub_req.msgid_regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_msgid_stamp,
+ { "Message ID Stamp", "lbmc.umq_resub_req.msgid_stamp", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_rcr_idx,
+ { "RCR Index", "lbmc.umq_resub_req.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_resp_ip,
+ { "Response IP Address", "lbmc.umq_resub_req.resp_ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_resp_port,
+ { "Response Port", "lbmc.umq_resub_req.resp_port", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_req_appset_idx,
+ { "Application Set Index", "lbmc.umq_resub_req.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp,
+ { "UMQ Resubmission Response", "lbmc.umq_resub_resp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_next_hdr,
+ { "Next Header", "lbmc.umq_resub_resp.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_hdr_len,
+ { "Header Length", "lbmc.umq_resub_resp.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_flags,
+ { "Flags", "lbmc.umq_resub_resp.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_flags_ignore,
+ { "Ignore", "lbmc.umq_resub_resp.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_RESUB_RESP_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_code,
+ { "Code", "lbmc.umq_resub_resp.code", FT_UINT8, BASE_HEX_DEC, VALS(lbmc_umq_resub_response_code), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_msgid_regid,
+ { "Message ID Registration ID", "lbmc.umq_resub_resp.msgid_regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_msgid_stamp,
+ { "Message ID Stamp", "lbmc.umq_resub_resp.msgid_stamp", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_rcr_idx,
+ { "RCR Index", "lbmc.umq_resub_resp.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_reserved,
+ { "Reserved", "lbmc.umq_resub_resp.resp_ip", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_resub_resp_appset_idx,
+ { "Application Set Index", "lbmc.umq_resub_resp.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_interest,
+ { "Topic Interest", "lbmc.topic_interest", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_interest_next_hdr,
+ { "Next Header", "lbmc.topic_interest.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_interest_hdr_len,
+ { "Header Length", "lbmc.topic_interest.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_interest_flags,
+ { "Flags", "lbmc.topic_interest.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_interest_flags_ignore,
+ { "Ignore", "lbmc.topic_interest.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_topic_interest_flags_cancel,
+ { "Cancel", "lbmc.topic_interest.flags.cancel", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_TOPIC_INTEREST_CANCEL_FLAG, "Set if cancelling interest", HFILL } },
+ { &hf_lbmc_topic_interest_flags_refresh,
+ { "Refresh", "lbmc.topic_interest.flags.refresh", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_INTEREST_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_TOPIC_INTEREST_REFRESH_FLAG, "Set if refreshing interest", HFILL } },
+ { &hf_lbmc_topic_interest_domain_id,
+ { "Domain ID", "lbmc.topic_interest.domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_interest,
+ { "Pattern Interest", "lbmc.pattern_interest", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_interest_next_hdr,
+ { "Next Header", "lbmc.pattern_interest.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_interest_hdr_len,
+ { "Header Length", "lbmc.pattern_interest.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_interest_flags,
+ { "Flags", "lbmc.pattern_interest.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_interest_flags_ignore,
+ { "Ignore", "lbmc.pattern_interest.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_pattern_interest_flags_cancel,
+ { "Cancel", "lbmc.pattern_interest.flags.cancel", FT_BOOLEAN, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_PATTERN_INTEREST_CANCEL_FLAG, "Set if cancelling interest", HFILL } },
+ { &hf_lbmc_pattern_interest_flags_refresh,
+ { "Refresh", "lbmc.pattern_interest.flags.refresh", FT_BOOLEAN, L_LBMC_CNTL_PATTERN_INTEREST_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_PATTERN_INTEREST_REFRESH_FLAG, "Set if refreshing interest", HFILL } },
+ { &hf_lbmc_pattern_interest_type,
+ { "Type", "lbmc.pattern_interest.type", FT_UINT8, BASE_DEC_HEX, VALS(lbm_wildcard_pattern_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_interest_domain_id,
+ { "Domain ID", "lbmc.pattern_interest.domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_interest_index,
+ { "Index", "lbmc.pattern_interest.index", FT_INT64, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement,
+ { "Advertisement", "lbmc.advertisement", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_next_hdr,
+ { "Next Header", "lbmc.advertisement.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_hdr_len,
+ { "Header Length", "lbmc.advertisement.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_flags,
+ { "Flags", "lbmc.advertisement.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_flags_ignore,
+ { "Ignore", "lbmc.advertisement.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_advertisement_flags_eos,
+ { "EOS", "lbmc.advertisement.flags.eos", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_ADVERTISEMENT_EOS_FLAG, "Set if source EOS is being advertised", HFILL } },
+ { &hf_lbmc_advertisement_flags_pattern,
+ { "Pattern", "lbmc.advertisement.flags.pattern", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_ADVERTISEMENT_PATTERN_FLAG, "Set if the topic being advertised matched a pattern", HFILL } },
+ { &hf_lbmc_advertisement_flags_change,
+ { "Change", "lbmc.advertisement.flags.change", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_ADVERTISEMENT_CHANGE_FLAG, "Set if the advertisement indicates a change", HFILL } },
+ { &hf_lbmc_advertisement_flags_ctxinst,
+ { "Context Instance", "lbmc.advertisement.flags.ctxinst", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_ADVERTISEMENT_CTXINST_FLAG, NULL, HFILL } },
+ { &hf_lbmc_advertisement_hop_count,
+ { "Hop Count", "lbmc.advertisement.hop_count", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_ad_flags,
+ { "Ad Flags", "lbmc.advertisement.ad_flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_ad_flags_lj,
+ { "Late Join", "lbmc.advertisement.ad_flags.lj", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS * 8, TFS(&tfs_set_notset), LBMC_ADVERTISEMENT_AD_LJ_FLAG, "Set if source provides late join", HFILL } },
+ { &hf_lbmc_advertisement_ad_flags_ume,
+ { "UME", "lbmc.advertisement.ad_flags.ume", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS * 8, TFS(&tfs_set_notset), LBMC_ADVERTISEMENT_AD_UME_FLAG, "Set if a UME source", HFILL } },
+ { &hf_lbmc_advertisement_ad_flags_acktosrc,
+ { "ACK To Source", "lbmc.advertisement.ad_flags.acktosrc", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS * 8, TFS(&tfs_set_notset), LBMC_ADVERTISEMENT_AD_ACKTOSRC_FLAG, "Set if ACKs are sent to source", HFILL } },
+ { &hf_lbmc_advertisement_ad_flags_queue,
+ { "Queue", "lbmc.advertisement.ad_flags.queue", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS * 8, TFS(&tfs_set_notset), LBMC_ADVERTISEMENT_AD_QUEUE_FLAG, "Set if a queue", HFILL } },
+ { &hf_lbmc_advertisement_ad_flags_ulb,
+ { "ULB", "lbmc.advertisement.ad_flags.ulb", FT_BOOLEAN, L_LBMC_CNTL_ADVERTISEMENT_HDR_T_AD_FLAGS * 8, TFS(&tfs_set_notset), LBMC_ADVERTISEMENT_AD_ULB_FLAG, "Set if a ULB source", HFILL } },
+ { &hf_lbmc_advertisement_cost,
+ { "Cost", "lbmc.advertisement.cost", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_transport_idx,
+ { "Transport Index", "lbmc.advertisement.transport_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_topic_idx,
+ { "Topic Index", "lbmc.advertisement.topic_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_low_seqno,
+ { "Low Sequence Number", "lbmc.advertisement.low_seqno", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_high_seqno,
+ { "High Sequence Number", "lbmc.advertisement.high_seqno", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_domain_id,
+ { "Domain ID", "lbmc.advertisement.domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_pat_idx,
+ { "Pattern Index", "lbmc.advertisement.pat_idx", FT_INT64, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_advertisement_ctxinst,
+ { "Context Instance", "lbmc.advertisement.ctxinst", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storename,
+ { "Store Name", "lbmc.ume_storename", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storename_next_hdr,
+ { "Next Header", "lbmc.ume_storename.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storename_hdr_len,
+ { "Header Length", "lbmc.ume_storename.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storename_flags,
+ { "Flags", "lbmc.ume_storename.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_storename_flags_ignore,
+ { "Ignore", "lbmc.ume_storename.flags.ignore", FT_BOOLEAN, L_LBMC_UME_STORENAME_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_storename_store,
+ { "Store Name", "lbmc.ume_storename.store", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr,
+ { "UMQ ULB Receiver Control Record", "lbmc.umq_ulb_rcr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_next_hdr,
+ { "Next Header", "lbmc.umq_ulb_rcr.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_hdr_len,
+ { "Header Length", "lbmc.umq_ulb_rcr.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_flags,
+ { "Flags", "lbmc.umq_ulb_rcr.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_flags_ignore,
+ { "Ignore", "lbmc.umq_ulb_rcr.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_flags_r_flag,
+ { "Reassign", "lbmc.umq_ulb_rcr.flags.r_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_ULB_RCR_R_FLAG, "Reassign", HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_flags_d_flag,
+ { "Receiver Deregister", "lbmc.umq_ulb_rcr.flags.d_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_ULB_RCR_D_FLAG, "Receiver deregister", HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_flags_eoi_flag,
+ { "End of Index", "lbmc.umq_ulb_rcr.flags.eoi_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_ULB_RCR_EOI_FLAG, "End of index", HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_flags_boi_flag,
+ { "Beginning of Index", "lbmc.umq_ulb_rcr.flags.boi_flag", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ULB_RCR_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_ULB_RCR_BOI_FLAG, "Beginning of index", HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_queue_id,
+ { "Queue ID", "lbmc.umq_ulb_rcr.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_ulb_src_id,
+ { "ULB Source ID", "lbmc.umq_ulb_rcr.ulb_src_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_msgid_regid,
+ { "Message ID Registration ID", "lbmc.umq_ulb_rcr.msgid_regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_msgid_stamp,
+ { "Message ID Stamp", "lbmc.umq_ulb_rcr.msgid_regid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_topic_tsp,
+ { "Topic TSP", "lbmc.umq_ulb_rcr.topic_tsp", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_assign_id,
+ { "Assignment ID", "lbmc.umq_ulb_rcr.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_appset_idx,
+ { "Application Set Index", "lbmc.umq_ulb_rcr.appset_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_ulb_rcr_num_ras,
+ { "Number of RAs", "lbmc.umq_ulb_rcr.num_ras", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_lf,
+ { "UMQ Load Factor", "lbmc.umq_lf", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_lf_next_hdr,
+ { "Next Header", "lbmc.umq_lf.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_lf_hdr_len,
+ { "Header Length", "lbmc.umq_lf.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_lf_flags,
+ { "Flags", "lbmc.umq_lf.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_lf_flags_ignore,
+ { "Ignore", "lbmc.umq_lf.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_LF_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_lf_type,
+ { "Type", "lbmc.umq_lf.type", FT_UINT8, BASE_HEX_DEC, VALS(lbmc_umq_lf_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_lf_num_srcs,
+ { "Number of Sources", "lbmc.umq_lf.resp_ip", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_lf_lf,
+ { "Load Factor", "lbmc.umq_lf.lf", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo,
+ { "Context Information", "lbmc.ctxinfo", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_next_hdr,
+ { "Next Header", "lbmc.ctxinfo.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_hdr_len,
+ { "Header Length", "lbmc.ctxinfo.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_flags,
+ { "Flags", "lbmc.ctxinfo.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_flags_ignore,
+ { "Ignore", "lbmc.ctxinfo.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_flags_query,
+ { "Query", "lbmc.ctxinfo.flags.query", FT_BOOLEAN, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CTXINFO_QUERY_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_flags_addr,
+ { "Address", "lbmc.ctxinfo.flags.addr", FT_BOOLEAN, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CTXINFO_ADDR_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_flags_ctxinst,
+ { "Context Instance", "lbmc.ctxinfo.flags.ctxinst", FT_BOOLEAN, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CTXINFO_CTXINST_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_flags_name,
+ { "Name", "lbmc.ctxinfo.flags.name", FT_BOOLEAN, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CTXINFO_NAME_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_flags_tnwgsrc,
+ { "Gateway Source", "lbmc.ctxinfo.flags.tnwgsrc", FT_BOOLEAN, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CTXINFO_TNWGSRC_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_flags_tnwgrcv,
+ { "Gateway Receive", "lbmc.ctxinfo.flags.tnwgrcv", FT_BOOLEAN, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CTXINFO_TNWGRCV_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_flags_proxy,
+ { "Proxy", "lbmc.ctxinfo.flags.proxy", FT_BOOLEAN, L_LBMC_CNTL_CTXINFO_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CTXINFO_PROXY_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_reserved,
+ { "Reserved", "lbmc.ctxinfo.reserved", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_hop_count,
+ { "Hop Count", "lbmc.ctxinfo.hop_count", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_port,
+ { "Port", "lbmc.ctxinfo.port", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_addr,
+ { "Address", "lbmc.ctxinfo.addr", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_domain_id,
+ { "Domain ID", "lbmc.ctxinfo.domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_ctxinst,
+ { "Context Instance", "lbmc.ctxinfo.ctxinst", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ctxinfo_name,
+ { "Name", "lbmc.ctxinfo.name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser,
+ { "UME Proxy Source Election Record", "lbmc.ume_pser", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_next_hdr,
+ { "Next Header", "lbmc.ume_pser.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_hdr_len,
+ { "Header Length", "lbmc.ume_pser.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_flags,
+ { "Flags", "lbmc.ume_pser.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_flags_ignore,
+ { "Ignore", "lbmc.ume_pser.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_flags_source_ctxinst,
+ { "Source Context Instance", "lbmc.ume_pser.flags.source_ctxinst", FT_BOOLEAN, L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_PSER_SOURCE_CTXINST_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_flags_store_ctxinst,
+ { "Store Context Instance", "lbmc.ume_pser.flags.store_ctxinst", FT_BOOLEAN, L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_PSER_STORE_CTXINST_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_flags_reelect,
+ { "Reelection", "lbmc.ume_pser.flags.reelect", FT_BOOLEAN, L_LBMC_CNTL_UME_PSER_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UME_PSER_REELECT_FLAG, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_source_ip,
+ { "Source Address", "lbmc.ume_pser.source_ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_store_ip,
+ { "Store Address", "lbmc.ume_pser.store_ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_transport_idx,
+ { "Transport Index", "lbmc.ume_pser.transport_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_topic_idx,
+ { "Topic Index", "lbmc.ume_pser.topic_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_source_port,
+ { "Source Port", "lbmc.ume_pser.source_port", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_store_port,
+ { "Store Port", "lbmc.ume_pser.store_port", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_source_ctxinst,
+ { "Source Context Instance", "lbmc.ume_pser.source_ctxinst", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_pser_store_ctxinst,
+ { "Store Context Instance", "lbmc.ume_pser.store_ctxinst", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_domain,
+ { "Domain", "lbmc.domain", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_domain_next_hdr,
+ { "Next Header", "lbmc.domain.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_domain_hdr_len,
+ { "Header Length", "lbmc.domain.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_domain_flags,
+ { "Flags", "lbmc.domain.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_domain_flags_ignore,
+ { "Ignore", "lbmc.domain.flags.ignore", FT_BOOLEAN, L_LBMC_DOMAIN_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_domain_flags_active,
+ { "Active", "lbmc.domain.flags.active", FT_BOOLEAN, L_LBMC_DOMAIN_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_DOMAIN_ACTIVE_FLAG, NULL, HFILL } },
+ { &hf_lbmc_domain_domain,
+ { "Domain ID", "lbmc.domain.domain", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities,
+ { "TNWG Capabilities", "lbmc.tnwg_capabilities", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities_next_hdr,
+ { "Next Header", "lbmc.tnwg_capabilities.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities_hdr_len,
+ { "Header Length", "lbmc.tnwg_capabilities.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities_flags,
+ { "Flags", "lbmc.tnwg_capabilities.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities_flags_ignore,
+ { "Ignore", "lbmc.tnwg_capabilities.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities_flags_version,
+ { "Version", "lbmc.tnwg_capabilities.flags.version", FT_UINT16, BASE_DEC, NULL, LBMC_CNTL_TNWG_CAPABILITIES_VERSION_MASK, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities_capabilities1,
+ { "Capabilities1", "lbmc.tnwg_capabilities.capabilities1", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities_capabilities1_ume,
+ { "UME", "lbmc.tnwg_capabilities.capabilities1.ume", FT_BOOLEAN, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1 * 8, TFS(&tfs_set_notset), LBMC_CNTL_TNWG_CAPABILITIES1_UME_FLAG, "Set if UME is supported", HFILL } },
+ { &hf_lbmc_tnwg_capabilities_capabilities1_umq,
+ { "UMQ", "lbmc.tnwg_capabilities.capabilities1.umq", FT_BOOLEAN, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES1 * 8, TFS(&tfs_set_notset), LBMC_CNTL_TNWG_CAPABILITIES1_UMQ_FLAG, "Set if UMQ is supported", HFILL } },
+ { &hf_lbmc_tnwg_capabilities_capabilities2,
+ { "Capabilities2", "lbmc.tnwg_capabilities.capabilities2", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities_capabilities3,
+ { "Capabilities3", "lbmc.tnwg_capabilities.capabilities3", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_capabilities_capabilities3_pcre,
+ { "PCRE", "lbmc.tnwg_capabilities.capabilities3.pcre", FT_BOOLEAN, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3 * 8, TFS(&tfs_set_notset), LBMC_CNTL_TNWG_CAPABILITIES3_PCRE_FLAG, "Set if PCRE patterns are supported", HFILL } },
+ { &hf_lbmc_tnwg_capabilities_capabilities3_regex,
+ { "Regex", "lbmc.tnwg_capabilities.capabilities3.regex", FT_BOOLEAN, L_LBMC_CNTL_TNWG_CAPABILITIES_HDR_T_CAPABILITIES3 * 8, TFS(&tfs_set_notset), LBMC_CNTL_TNWG_CAPABILITIES3_REGEX_FLAG, "Set if Regex patters are supported", HFILL } },
+ { &hf_lbmc_tnwg_capabilities_capabilities4,
+ { "Capabilities4", "lbmc.tnwg_capabilities.capabilities4", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_patidx,
+ { "Pattern Index", "lbmc.patidx", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_patidx_next_hdr,
+ { "Next Header", "lbmc.patidx.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_patidx_hdr_len,
+ { "Header Length", "lbmc.patidx.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_patidx_flags,
+ { "Flags", "lbmc.patidx.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_patidx_flags_ignore,
+ { "Ignore", "lbmc.patidx.flags.ignore", FT_BOOLEAN, L_LBMC_PATIDX_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_patidx_patidx,
+ { "Source Index", "lbmc.patidx.patidx", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_client_lifetime,
+ { "UME Client Lifetime", "lbmc.ume_client_lifetime", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_client_lifetime_next_hdr,
+ { "Next Header", "lbmc.ume_client_lifetime.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_client_lifetime_hdr_len,
+ { "Header Length", "lbmc.ume_client_lifetime.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_client_lifetime_flags,
+ { "Flags", "lbmc.ume_client_lifetime.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_client_lifetime_flags_ignore,
+ { "Ignore", "lbmc.ume_client_lifetime.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_CLIENT_LIFETIME_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_client_lifetime_activity_tmo,
+ { "Activity Timeout", "lbmc.ume_client_lifetime.activity_tmo", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_client_lifetime_lifetime,
+ { "Lifetime", "lbmc.ume_client_lifetime.lifetime", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_client_lifetime_ttl,
+ { "Time to Live", "lbmc.ume_client_lifetime.ttl", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_sid,
+ { "UME Session ID", "lbmc.ume_sid", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_sid_next_hdr,
+ { "Next Header", "lbmc.ume_sid.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_sid_hdr_len,
+ { "Header Length", "lbmc.ume_sid.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_sid_flags,
+ { "Flags", "lbmc.ume_sid.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_sid_flags_ignore,
+ { "Ignore", "lbmc.ume_sid.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_SID_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_sid_sid,
+ { "Session ID", "lbmc.ume_sid.sid", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd,
+ { "UMQ Index Command", "lbmc.umq_idx_cmd", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_next_hdr,
+ { "Next Header", "lbmc.umq_idx_cmd.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_hdr_len,
+ { "Header Length", "lbmc.umq_idx_cmd.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_flags,
+ { "Flags", "lbmc.umq_idx_cmd.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_flags_ignore,
+ { "Ignore", "lbmc.umq_idx_cmd.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_IDX_CMD_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_cmd_type,
+ { "Command Type", "lbmc.umq_idx_cmd.cmd_type", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_umq_index_cmd_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_queue_id,
+ { "Queue ID", "lbmc.umq_idx_cmd.queue_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_cmd_id,
+ { "Command ID", "lbmc.umq_idx_cmd.cmd_id", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_inst_idx,
+ { "Instance Index", "lbmc.umq_idx_cmd.inst_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_regid,
+ { "RegID", "lbmc.umq_idx_cmd.regid", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_stop_assign,
+ { "Stop Assign", "lbmc.umq_idx_cmd.stop_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_stop_assign_rcr_idx,
+ { "RCR Index", "lbmc.umq_idx_cmd.stop_assign.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_stop_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd.stop_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_start_assign,
+ { "Start Assign", "lbmc.umq_idx_cmd.start_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_start_assign_rcr_idx,
+ { "RCR Index", "lbmc.umq_idx_cmd.start_assign.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_start_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd.start_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_release_assign,
+ { "Release Assign", "lbmc.umq_idx_cmd.release_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_release_assign_rcr_idx,
+ { "RCR Index", "lbmc.umq_idx_cmd.release_assign.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_release_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd.release_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_release_assign_flags,
+ { "Flags", "lbmc.umq_idx_cmd.release_assign.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_release_assign_flags_numeric,
+ { "Numeric", "lbmc.umq_idx_cmd.release_assign.flags.numeric", FT_BOOLEAN, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBM_UMQ_INDEX_FLAG_NUMERIC, "Set if index is numeric", HFILL } },
+ { &hf_lbmc_umq_idx_cmd_release_assign_index_len,
+ { "Index Length", "lbmc.umq_idx_cmd.release_assign.index_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_release_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd.release_assign.reserved", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_release_assign_numeric_index,
+ { "Index", "lbmc.umq_idx_cmd.release_assign.numeric_index", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_release_assign_string_index,
+ { "Index", "lbmc.umq_idx_cmd.release_assign.string_index", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_stop_assign,
+ { "ULB Stop Assign", "lbmc.umq_idx_cmd.ulb_stop_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_stop_assign_src_id,
+ { "Source ID", "lbmc.umq_idx_cmd.ulb_stop_assign.src_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_stop_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd.ulb_stop_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_stop_assign_appset_idx,
+ { "Application Set Index", "lbmc.umq_idx_cmd.ulb_stop_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_stop_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd.ulb_stop_assign.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_start_assign,
+ { "ULB Start Assign", "lbmc.umq_idx_cmd.ulb_start_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_start_assign_src_id,
+ { "Source ID", "lbmc.umq_idx_cmd.ulb_start_assign.src_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_start_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd.ulb_start_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_start_assign_appset_idx,
+ { "Application Set Index", "lbmc.umq_idx_cmd.ulb_start_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_start_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd.ulb_start_assign.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign,
+ { "ULB Release Assign", "lbmc.umq_idx_cmd.ulb_release_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign_src_id,
+ { "Source ID", "lbmc.umq_idx_cmd.ulb_release_assign.src_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd.ulb_release_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign_flags,
+ { "Flags", "lbmc.umq_idx_cmd.ulb_release_assign.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign_flags_numeric,
+ { "Numeric", "lbmc.umq_idx_cmd.ulb_release_assign.flags.numeric", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RELEASE_IDX_ASSIGN_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBM_UMQ_INDEX_FLAG_NUMERIC, "Set if index is numeric", HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign_appset_idx,
+ { "Application Set Index", "lbmc.umq_idx_cmd.ulb_release_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign_index_len,
+ { "Index Length", "lbmc.umq_idx_cmd.ulb_release_assign.index_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd.ulb_release_assign.reserved", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign_numeric_index,
+ { "Index", "lbmc.umq_idx_cmd.ulb_release_assign.numeric_index", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_release_assign_string_index,
+ { "Index", "lbmc.umq_idx_cmd.ulb_release_assign.string_index", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_reserve_assign,
+ { "Reserve Assign", "lbmc.umq_idx_cmd.reserve_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_reserve_assign_rcr_idx,
+ { "RCR Index", "lbmc.umq_idx_cmd.reserve_assign.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_reserve_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd.reserve_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_reserve_assign_flags,
+ { "Flags", "lbmc.umq_idx_cmd.reserve_assign.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_reserve_assign_flags_numeric,
+ { "Numeric", "lbmc.umq_idx_cmd.reserve_assign.flags.numeric", FT_BOOLEAN, L_LBMC_CNTL_UMQ_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBM_UMQ_INDEX_FLAG_NUMERIC, "Set if index is numeric", HFILL } },
+ { &hf_lbmc_umq_idx_cmd_reserve_assign_index_len,
+ { "Index Length", "lbmc.umq_idx_cmd.reserve_assign.index_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_reserve_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd.reserve_assign.reserved", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_reserve_assign_numeric_index,
+ { "Index", "lbmc.umq_idx_cmd.reserve_assign.numeric_index", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_reserve_assign_string_index,
+ { "Index", "lbmc.umq_idx_cmd.reserve_assign.string_index", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign,
+ { "ULB Reserve Assign", "lbmc.umq_idx_cmd.ulb_reserve_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign_src_id,
+ { "Source ID", "lbmc.umq_idx_cmd.ulb_reserve_assign.src_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd.ulb_reserve_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign_flags,
+ { "Flags", "lbmc.umq_idx_cmd.ulb_reserve_assign.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign_flags_numeric,
+ { "Numeric", "lbmc.umq_idx_cmd.ulb_reserve_assign.flags.numeric", FT_BOOLEAN, L_LBMC_CNTL_UMQ_ULB_IDX_CMD_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBM_UMQ_INDEX_FLAG_NUMERIC, "Set if index is numeric", HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign_appset_idx,
+ { "Application Set Index", "lbmc.umq_idx_cmd.ulb_reserve_assign.index_len", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign_index_len,
+ { "Index Length", "lbmc.umq_idx_cmd.ulb_reserve_assign.index_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd.ulb_reserve_assign.reserved", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign_numeric_index,
+ { "Index", "lbmc.umq_idx_cmd.ulb_reserve_assign.numeric_index", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_ulb_reserve_assign_string_index,
+ { "Index", "lbmc.umq_idx_cmd.ulb_reserve_assign.string_index", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp,
+ { "UMQ Index Command Response", "lbmc.umq_idx_cmd_resp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_next_hdr,
+ { "Next Header", "lbmc.umq_idx_cmd_resp.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_hdr_len,
+ { "Header Length", "lbmc.umq_idx_cmd_resp.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_flags,
+ { "Flags", "lbmc.umq_idx_cmd_resp.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_flags_ignore,
+ { "Ignore", "lbmc.umq_idx_cmd_resp.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_flags_ulb,
+ { "ULB", "lbmc.umq_idx_cmd_resp.flags.ulb", FT_BOOLEAN, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_UMQ_IDX_CMD_RESP_ERR_L_FLAG, "Set if ULB", HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_resp_type,
+ { "Response Type", "lbmc.umq_idx_cmd_resp.resp_type", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_umq_index_cmd_response_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_queue_id,
+ { "Queue ID", "lbmc.umq_idx_cmd_resp.queue_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_cmd_id,
+ { "Command ID", "lbmc.umq_idx_cmd_resp.cmd_id", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_inst_idx,
+ { "Instance Index", "lbmc.umq_idx_cmd_resp.inst_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_regid,
+ { "RegID", "lbmc.umq_idx_cmd_resp.regid", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_err,
+ { "Error", "lbmc.umq_idx_cmd_resp.err", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_err_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd_resp.err.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_err_code,
+ { "Code", "lbmc.umq_idx_cmd_resp.err.code", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_err_error_string,
+ { "Error String", "lbmc.umq_idx_cmd_resp.err.error_string", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_stop_assign,
+ { "Stop Assign", "lbmc.umq_idx_cmd_resp.stop_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_stop_assign_rcr_idx,
+ { "RCR Index", "lbmc.umq_idx_cmd_resp.stop_assign.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_stop_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd_resp.stop_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_start_assign,
+ { "Start Assign", "lbmc.umq_idx_cmd_resp.start_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_start_assign_rcr_idx,
+ { "RCR Index", "lbmc.umq_idx_cmd_resp.start_assign.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_start_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd_resp.start_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_start_assign_appset_idx,
+ { "Application Set Index", "lbmc.umq_idx_cmd_resp.start_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_start_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd_resp.start_assign.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_release_assign,
+ { "Release Assign", "lbmc.umq_idx_cmd_resp.release_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_release_assign_rcr_idx,
+ { "RCR Index", "lbmc.umq_idx_cmd_resp.release_assign.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_release_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd_resp.release_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_release_assign_appset_idx,
+ { "Application Set Index", "lbmc.umq_idx_cmd_resp.release_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_release_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd_resp.release_assign.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign,
+ { "ULB Stop Assign", "lbmc.umq_idx_cmd_resp.ulb_stop_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_src_id,
+ { "Source ID", "lbmc.umq_idx_cmd_resp.ulb_stop_assign.src_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd_resp.ulb_stop_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_appset_idx,
+ { "Application Set Index", "lbmc.umq_idx_cmd_resp.ulb_stop_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_stop_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd_resp.ulb_stop_assign.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_start_assign,
+ { "ULB Start Assign", "lbmc.umq_idx_cmd_resp.ulb_start_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_src_id,
+ { "Source ID", "lbmc.umq_idx_cmd_resp.ulb_start_assign.src_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd_resp.ulb_start_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_appset_idx,
+ { "Application Set Index", "lbmc.umq_idx_cmd_resp.ulb_start_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_start_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd_resp.ulb_start_assign.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_release_assign,
+ { "ULB Release Assign", "lbmc.umq_idx_cmd_resp.ulb_release_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_src_id,
+ { "Source ID", "lbmc.umq_idx_cmd_resp.ulb_release_assign.src_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd_resp.ulb_release_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_appset_idx,
+ { "Application Set Index", "lbmc.umq_idx_cmd_resp.ulb_release_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_release_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd_resp.ulb_release_assign.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign,
+ { "Reserve Assign", "lbmc.umq_idx_cmd_resp.reserve_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign_rcr_idx,
+ { "RCR Index", "lbmc.umq_idx_cmd_resp.reserve_assign.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd_resp.reserve_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign_flags,
+ { "Flags", "lbmc.umq_idx_cmd_resp.reserve_assign.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign_flags_numeric,
+ { "Numeric", "lbmc.umq_idx_cmd_resp.reserve_assign.flags.numeric", FT_BOOLEAN, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBM_UMQ_INDEX_FLAG_NUMERIC, "Set if index is numeric", HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign_appset_idx,
+ { "AppSet Index", "lbmc.umq_idx_cmd_resp.reserve_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign_index_len,
+ { "Index Length", "lbmc.umq_idx_cmd_resp.reserve_assign.index_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd_resp.reserve_assign.reserved", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign_numeric_index,
+ { "Index", "lbmc.umq_idx_cmd_resp.reserve_assign.numeric_index", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_reserve_assign_string_index,
+ { "Index", "lbmc.umq_idx_cmd_resp.reserve_assign.string_index", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign,
+ { "ULB Reserve Assign", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_src_id,
+ { "Source ID", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign.src_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_assign_id,
+ { "Assignment ID", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_flags,
+ { "Flags", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_flags_numeric,
+ { "Numeric", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign.flags.numeric", FT_BOOLEAN, L_LBMC_CNTL_UMQ_IDX_CMD_RESP_ULB_RCV_RESERVE_IDX_ASSIGN_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBM_UMQ_INDEX_FLAG_NUMERIC, "Set if index is numeric", HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_appset_idx,
+ { "AppSet Index", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_index_len,
+ { "Index Length", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign.index_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_reserved,
+ { "Reserved", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign.reserved", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_numeric_index,
+ { "Index", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign.numeric_index", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_string_index,
+ { "Index", "lbmc.umq_idx_cmd_resp.ulb_reserve_assign.string_index", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_odomain,
+ { "Originating Domain", "lbmc.odomain", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_odomain_next_hdr,
+ { "Next Header", "lbmc.odomain.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_odomain_hdr_len,
+ { "Header Length", "lbmc.odomain.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_odomain_flags,
+ { "Flags", "lbmc.odomain.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_odomain_flags_ignore,
+ { "Ignore", "lbmc.odomain.flags.ignore", FT_BOOLEAN, L_LBMC_ODOMAIN_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_odomain_domain,
+ { "Domain ID", "lbmc.odomain.domain", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_stream,
+ { "Stream", "lbmc.stream", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_stream_next_hdr,
+ { "Next Header", "lbmc.stream.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_stream_hdr_len,
+ { "Header Length", "lbmc.stream.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_stream_flags,
+ { "Flags", "lbmc.stream.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_stream_flags_ignore,
+ { "Ignore", "lbmc.stream.flags.ignore", FT_BOOLEAN, L_LBMC_STREAM_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_stream_stream_id,
+ { "Stream ID", "lbmc.stream.stream_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_stream_sqn,
+ { "Sequence Number", "lbmc.stream.sqn", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_stream_ctxinst,
+ { "Context Instance", "lbmc.stream.ctxinst", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_md_interest,
+ { "Topic Multi-Domain Interest", "lbmc.topic_md_interest", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_md_interest_next_hdr,
+ { "Next Header", "lbmc.topic_md_interest.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_md_interest_hdr_len,
+ { "Header Length", "lbmc.topic_md_interest.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_md_interest_flags,
+ { "Flags", "lbmc.topic_md_interest.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_md_interest_flags_ignore,
+ { "Ignore", "lbmc.topic_md_interest.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_topic_md_interest_flags_cancel,
+ { "Cancel", "lbmc.topic_md_interest.flags.cancel", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_TOPIC_INTEREST_CANCEL_FLAG, "Set if cancelling interest", HFILL } },
+ { &hf_lbmc_topic_md_interest_flags_refresh,
+ { "Refresh", "lbmc.topic_md_interest.flags.refresh", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_MD_INTEREST_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_TOPIC_INTEREST_REFRESH_FLAG, "Set if refreshing interest", HFILL } },
+ { &hf_lbmc_topic_md_interest_domain_count,
+ { "Domain Count", "lbmc.topic_md_interest.domain_count", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_md_interest_res1,
+ { "Reserved", "lbmc.topic_md_interest.res1", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_md_interest_domain_id,
+ { "Domain ID", "lbmc.topic_md_interest.domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest,
+ { "Pattern Multi-Domain Interest", "lbmc.pattern_md_interest", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest_next_hdr,
+ { "Next Header", "lbmc.pattern_md_interest.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest_hdr_len,
+ { "Header Length", "lbmc.pattern_md_interest.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest_flags,
+ { "Flags", "lbmc.pattern_md_interest.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest_flags_ignore,
+ { "Ignore", "lbmc.pattern_md_interest.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest_flags_cancel,
+ { "Cancel", "lbmc.pattern_md_interest.flags.cancel", FT_BOOLEAN, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_PATTERN_INTEREST_CANCEL_FLAG, "Set if cancelling interest", HFILL } },
+ { &hf_lbmc_pattern_md_interest_flags_refresh,
+ { "Refresh", "lbmc.pattern_md_interest.flags.refresh", FT_BOOLEAN, L_LBMC_CNTL_PATTERN_MD_INTEREST_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_PATTERN_INTEREST_REFRESH_FLAG, "Set if refreshing interest", HFILL } },
+ { &hf_lbmc_pattern_md_interest_type,
+ { "Type", "lbmc.pattern_md_interest.type", FT_UINT8, BASE_DEC_HEX, VALS(lbm_wildcard_pattern_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest_domain_count,
+ { "Domain Count", "lbmc.pattern_md_interest.domain_count", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest_res1,
+ { "Reserved", "lbmc.pattern_md_interest.res1", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest_index,
+ { "Index", "lbmc.pattern_md_interest.index", FT_INT64, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_pattern_md_interest_domain_id,
+ { "Domain ID", "lbmc.pattern_md_interest.domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req,
+ { "Late Join Information Request", "lbmc.lji_req", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_next_hdr,
+ { "Next Header", "lbmc.lji_req.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_hdr_len,
+ { "Header Length", "lbmc.lji_req.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_flags,
+ { "Flags", "lbmc.lji_req.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_flags_ignore,
+ { "Ignore", "lbmc.lji_req.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_lji_req_flags_l_flag,
+ { "Low SQN Present", "lbmc.lji_req.flags.l_flag", FT_BOOLEAN, L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_LJI_REQ_L_FLAG, "Set if low SQN present", HFILL } },
+ { &hf_lbmc_lji_req_flags_m_flag,
+ { "RX Request Max Present", "lbmc.lji_req.flags.m_flag", FT_BOOLEAN, L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_LJI_REQ_M_FLAG, "Set if RX request max present", HFILL } },
+ { &hf_lbmc_lji_req_flags_o_flag,
+ { "RX Request Outstanding Max Present", "lbmc.lji_req.flags.o_flag", FT_BOOLEAN, L_LBMC_CNTL_LJI_REQ_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_LJI_REQ_O_FLAG, "Set if outstanding RX request max present", HFILL } },
+ { &hf_lbmc_lji_req_request_idx,
+ { "Request Index", "lbmc.lji_req.request_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_transport_idx,
+ { "Transport Index", "lbmc.lji_req.transport_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_topic_idx,
+ { "Topic Index", "lbmc.lji_req.topic_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_req_ip,
+ { "Request IP", "lbmc.lji_req.req_ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_req_port,
+ { "Request Port", "lbmc.lji_req.req_port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_res,
+ { "Reserved", "lbmc.lji_req.res", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_tx_low_sqn,
+ { "Transmitted Low SQN", "lbmc.lji_req.tx_low_sqn", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_rx_req_max,
+ { "Maximum RX Requests", "lbmc.lji_req.rx_req_max", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_lji_req_rx_req_outstanding_max,
+ { "Maximum Outstanding RX Requests", "lbmc.lji_req.rx_req_outstanding_max", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka,
+ { "TNWG Keepalive", "lbmc.tnwg_ka", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_next_hdr,
+ { "Next Header", "lbmc.tnwg_ka.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_hdr_len,
+ { "Header Length", "lbmc.tnwg_ka.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_flags,
+ { "Flags", "lbmc.tnwg_ka.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_flags_ignore,
+ { "Ignore", "lbmc.tnwg_ka.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_flags_q_flag,
+ { "Query", "lbmc.tnwg_ka.flags.q_flag", FT_BOOLEAN, L_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CNTL_TNWG_KA_Q_FLAG, "Set if a keepalive query", HFILL } },
+ { &hf_lbmc_tnwg_ka_flags_r_flag,
+ { "Response", "lbmc.tnwg_ka.flags.r_flag", FT_BOOLEAN, L_LBMC_CNTL_TNWG_KA_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_CNTL_TNWG_KA_R_FLAG, "Set if a keepalive response", HFILL } },
+ { &hf_lbmc_tnwg_ka_index,
+ { "Index", "lbmc.tnwg_ka.index", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_ts_seconds,
+ { "TS Seconds", "lbmc.tnwg_ka.ts_seconds", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_ts_microseconds,
+ { "TS Microseconds", "lbmc.tnwg_ka.ts_microseconds", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_reserved_1,
+ { "Reserved 1", "lbmc.tnwg_ka.reserved_1", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_reserved_2,
+ { "Reserved 2", "lbmc.tnwg_ka.reserved_2", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_reserved_3,
+ { "Reserved 3", "lbmc.tnwg_ka.reserved_3", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_reserved_4,
+ { "Reserved 4", "lbmc.tnwg_ka.reserved_4", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_reserved_5,
+ { "Reserved 5", "lbmc.tnwg_ka.reserved_5", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tnwg_ka_reserved_6,
+ { "Reserved 6", "lbmc.tnwg_ka.reserved_6", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_receiver_keepalive,
+ { "UME Receiver Keepalive", "lbmc.ume_receiver_keepalive", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_receiver_keepalive_next_hdr,
+ { "Next Header", "lbmc.ume_receiver_keepalive.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_receiver_keepalive_hdr_len,
+ { "Header Length", "lbmc.ume_receiver_keepalive.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_receiver_keepalive_flags,
+ { "Flags", "lbmc.ume_receiver_keepalive.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_receiver_keepalive_flags_ignore,
+ { "Ignore", "lbmc.ume_receiver_keepalive.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_RECEIVER_KEEPALIVE_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_receiver_keepalive_rcv_regid,
+ { "Receiver RegID", "lbmc.ume_receiver_keepalive.rcv_regid", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_receiver_keepalive_session_id,
+ { "Session ID", "lbmc.ume_receiver_keepalive.session_id", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_receiver_keepalive_ctxinst,
+ { "Context Instance", "lbmc.ume_receiver_keepalive.ctxinst", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd,
+ { "UMQ Command", "lbmc.umq_cmd", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_next_hdr,
+ { "Next Header", "lbmc.umq_cmd.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_hdr_len,
+ { "Header Length", "lbmc.umq_cmd.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_flags,
+ { "Flags", "lbmc.umq_cmd.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_flags_ignore,
+ { "Ignore", "lbmc.umq_cmd.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_CMD_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_cmd_type,
+ { "Command", "lbmc.umq_cmd.cmd_type", FT_UINT8, BASE_DEC, VALS(lbmc_umq_cmd_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_queue_id,
+ { "Queue ID", "lbmc.umq_cmd.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_cmd_id,
+ { "Command ID", "lbmc.umq_cmd.cmd_id", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_inst_idx,
+ { "Instance index", "lbmc.umq_cmd.inst_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_regid,
+ { "Reg ID", "lbmc.umq_cmd.regid", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_topic_list,
+ { "Topic List", "lbmc.umq_cmd.topic_list", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_topic_list_serial_num,
+ { "Serial number", "lbmc.umq_cmd.topic_list.serial_num", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_retrieve,
+ { "Message Retrieve", "lbmc.umq_cmd.msg_retrieve", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_retrieve_rcr_idx,
+ { "RCR Index", "lbmc.umq_cmd.msg_retrieve.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_retrieve_assign_id,
+ { "Assignment ID", "lbmc.umq_cmd.msg_retrieve.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_retrieve_info_only,
+ { "Info Only", "lbmc.umq_cmd.msg_retrieve.info_only", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_retrieve_num_msgids,
+ { "Number of Message IDs", "lbmc.umq_cmd.msg_retrieve.num_msgids", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_retrieve_flags,
+ { "Flags", "lbmc.umq_cmd.msg_retrieve.flags", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_retrieve_entry,
+ { "Message Retrieve Entry", "lbmc.umq_cmd.msg_retrieve.entry", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_retrieve_entry_regid,
+ { "Reg ID", "lbmc.umq_cmd.msg_retrieve.entry.regid", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_retrieve_entry_stamp,
+ { "Stamp", "lbmc.umq_cmd.msg_retrieve.entry.stamp", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_list,
+ { "Message List", "lbmc.umq_cmd.msg_list", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_list_rcr_idx,
+ { "RCR Index", "lbmc.umq_cmd.msg_list.rcr_idx", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_msg_list_assign_id,
+ { "Assign ID", "lbmc.umq_cmd.msg_list.assign_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp,
+ { "UMQ Command Response", "lbmc.umq_cmd_resp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_next_hdr,
+ { "Next Header", "lbmc.umq_cmd_resp.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_hdr_len,
+ { "Header Length", "lbmc.umq_cmd_resp.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_flags,
+ { "Flags", "lbmc.umq_cmd_resp.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_flags_ignore,
+ { "Ignore", "lbmc.umq_cmd_resp.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_CMD_RESP_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_resp_type,
+ { "Response", "lbmc.umq_cmd_resp.resp_type", FT_UINT8, BASE_DEC, VALS(lbmc_umq_cmd_response_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_queue_id,
+ { "Queue ID", "lbmc.umq_cmd_resp.queue_id", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_cmd_id,
+ { "Command ID", "lbmc.umq_cmd_resp.cmd_id", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_inst_idx,
+ { "Instance index", "lbmc.umq_cmd_resp.inst_idx", FT_UINT16, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_regid,
+ { "Reg ID", "lbmc.umq_cmd_resp.regid", FT_UINT64, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_msg_retrieve,
+ { "Message Retrieve", "lbmc.umq_cmd_resp.msg_retrieve", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_msg_retrieve_rcr_idx,
+ { "RCR Index", "lbmc.umq_cmd_resp.msg_retrieve.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_msg_retrieve_assign_id,
+ { "Assignment ID", "lbmc.umq_cmd_resp.msg_retrieve.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve,
+ { "Message Retrieve", "lbmc.umq_cmd_resp.xmsg_retrieve", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_num_msgs,
+ { "Number of Messages", "lbmc.umq_cmd_resp.xmsg_retrieve.num_msgs", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_flags,
+ { "Flags", "lbmc.umq_cmd_resp.xmsg_retrieve.flags", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_reserved,
+ { "Reserved", "lbmc.umq_cmd_resp.xmsg_retrieve.reserved", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry,
+ { "Message", "lbmc.umq_cmd_resp.xmsg_retrieve.entry", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_regid,
+ { "Reg ID", "lbmc.umq_cmd_resp.xmsg_retrieve.entry.regid", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_stamp,
+ { "Stamp", "lbmc.umq_cmd_resp.xmsg_retrieve.entry.stamp", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_assign_id,
+ { "Assignment ID", "lbmc.umq_cmd_resp.xmsg_retrieve.entry.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_num_ras,
+ { "Number of Reassignments", "lbmc.umq_cmd_resp.xmsg_retrieve.entry.num_ras", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_status,
+ { "Status", "lbmc.umq_cmd_resp.xmsg_retrieve.entry.status", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_umq_msg_status_code), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_retrieve_entry_reserved,
+ { "Reserved", "lbmc.umq_cmd_resp.xmsg_retrieve.entry.reserved", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_msg_list,
+ { "Message List", "lbmc.umq_cmd_resp.msg_list", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_msg_list_rcr_idx,
+ { "RCR Index", "lbmc.umq_cmd_resp.msg_list.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_msg_list_assign_id,
+ { "Assignment ID", "lbmc.umq_cmd_resp.msg_list.assign_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_list,
+ { "Message List", "lbmc.umq_cmd_resp.xmsg_list", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_list_num_msgs,
+ { "Number of Messages", "lbmc.umq_cmd_resp.xmsg_list.num_msgs", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_list_entry,
+ { "Message", "lbmc.umq_cmd_resp.xmsg_list.entry", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_list_entry_regid,
+ { "Reg ID", "lbmc.umq_cmd_resp.xmsg_list.entry.regid", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_xmsg_list_entry_stamp,
+ { "Stamp", "lbmc.umq_cmd_resp.xmsg_list.entry.stamp", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list,
+ { "Topic List", "lbmc.umq_cmd_resp.topic_list", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_num_topics,
+ { "Number of Topics", "lbmc.umq_cmd_resp.topic_list.num_topics", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry,
+ { "Topic List Entry", "lbmc.umq_cmd_resp.topic_list.topic_entry", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_rcr_idx,
+ { "RCR Index", "lbmc.umq_cmd_resp.topic_list.topic_entry.rcr_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_num_appsets,
+ { "Number of AppSets", "lbmc.umq_cmd_resp.topic_list.topic_entry.num_appsets", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_topic_len,
+ { "Topic Length", "lbmc.umq_cmd_resp.topic_list.topic_entry.topic_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_reserved,
+ { "Reserved", "lbmc.umq_cmd_resp.topic_list.topic_entry.reserved", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_topic,
+ { "Topic", "lbmc.umq_cmd_resp.topic_list.topic_entry.topic", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry,
+ { "Appset Entry", "lbmc.umq_cmd_resp.topic_list.topic_entry.appset_entry", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_num_receiver_type_ids,
+ { "Number of Receiver Type IDs", "lbmc.umq_cmd_resp.topic_list.topic_entry.appset_entry.num_receiver_type_ids", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_appset_idx,
+ { "AppSet Index", "lbmc.umq_cmd_resp.topic_list.topic_entry.appset_entry.appset_idx", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_appset_name_len,
+ { "AppSet Name Length", "lbmc.umq_cmd_resp.topic_list.topic_entry.appset_entry.appset_name_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_reserved,
+ { "Reserved", "lbmc.umq_cmd_resp.topic_list.topic_entry.appset_entry.reserved", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_name,
+ { "AppSet Name", "lbmc.umq_cmd_resp.topic_list.topic_entry.appset_entry.name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry_receiver_type_id,
+ { "Receiver Type ID", "lbmc.umq_cmd_resp.topic_list.topic_entry.appset_entry.receiver_type_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_err,
+ { "Error", "lbmc.umq_cmd_resp.error", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_err_reserved,
+ { "Reserved", "lbmc.umq_cmd_resp.error.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_err_code,
+ { "Code", "lbmc.umq_cmd_resp.error.code", FT_UINT16, BASE_DEC_HEX, VALS(lbmc_umq_cmd_response_error_code), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_cmd_resp_err_errmsg,
+ { "Error Message", "lbmc.umq_cmd_resp.error.errmsg", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_req,
+ { "Source Registration Information Request", "lbmc.sri_req", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_req_next_hdr,
+ { "Next Header", "lbmc.sri_req.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_req_hdr_len,
+ { "Header Length", "lbmc.sri_req.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_req_flags,
+ { "Flags", "lbmc.sri_req.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_req_flags_ignore,
+ { "Ignore", "lbmc.sri_req.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_SRI_REQ_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_sri_req_transport_idx,
+ { "Transport Index", "lbmc.sri_req.transport_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_req_topic_idx,
+ { "Topic Index", "lbmc.sri_req.topic_idx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_domain,
+ { "UME Store Domain", "lbmc.ume_store_domain", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_domain_next_hdr,
+ { "Next Header", "lbmc.ume_store_domain.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_domain_hdr_len,
+ { "Header Length", "lbmc.ume_store_domain.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_domain_flags,
+ { "Flags", "lbmc.ume_store_domain.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_domain_flags_ignore,
+ { "Ignore", "lbmc.ume_store_domain.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_STORE_DOMAIN_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_store_domain_domain,
+ { "Domain ID", "lbmc.ume_store_domain.domain", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri,
+ { "Source Registration Information", "lbmc.sri", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_next_hdr,
+ { "Next Header", "lbmc.sri.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_hdr_len,
+ { "Header Length", "lbmc.sri.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_flags,
+ { "Flags", "lbmc.sri.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_flags_ignore,
+ { "Ignore", "lbmc.sri.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_SRI_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_sri_flags_acktosrc,
+ { "ACK to Source", "lbmc.sri.flags.acktosrc", FT_BOOLEAN, L_LBMC_CNTL_SRI_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_SRI_A_FLAG, "If set ACKs are sent to source", HFILL } },
+ { &hf_lbmc_sri_flags_initial_sqn_known,
+ { "Initial SQN Known", "lbmc.sri.flags.initial_sqn_known", FT_BOOLEAN, L_LBMC_CNTL_SRI_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_SRI_INITIAL_SQN_KNOWN_FLAG, "If set, initial SQN is known", HFILL } },
+ { &hf_lbmc_sri_version,
+ { "Version", "lbmc.sri.version", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_low_sqn,
+ { "Low Sequence Number", "lbmc.sri.low_sqn", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_sri_high_sqn,
+ { "High Sequence Number", "lbmc.sri.high_sqn", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info,
+ { "Route Information", "lbmc.route_info", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_next_hdr,
+ { "Next Header", "lbmc.route_info.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_hdr_len,
+ { "Header Length", "lbmc.route_info.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_flags,
+ { "Flags", "lbmc.route_info.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_flags_ignore,
+ { "Ignore", "lbmc.route_info.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_ROUTE_INFO_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_route_info_gateway_version,
+ { "Gateway Version", "lbmc.route_info.gateway_version", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_configuration_signature,
+ { "Configuration Signature", "lbmc.route_info.configuration_signature", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_node_id,
+ { "Node ID", "lbmc.route_info.node_id", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_topology,
+ { "Topology", "lbmc.route_info.topology", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_vers,
+ { "Version", "lbmc.route_info.vers", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_sqn,
+ { "SQN", "lbmc.route_info.sqn", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_ttl,
+ { "TTL", "lbmc.route_info.ttl", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_reserved1,
+ { "Reserved1", "lbmc.route_info.reserved1", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_reserved2,
+ { "Reserved2", "lbmc.route_info.reserved2", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_neighbor,
+ { "Route Information Neighbor", "lbmc.route_info_neighbor", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_neighbor_next_hdr,
+ { "Next Header", "lbmc.route_info_neighbor.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_neighbor_hdr_len,
+ { "Header Length", "lbmc.route_info_neighbor.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_neighbor_flags,
+ { "Flags", "lbmc.route_info_neighbor.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_neighbor_flags_ignore,
+ { "Ignore", "lbmc.route_info_neighbor.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_ROUTE_INFO_NEIGHBOR_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_route_info_neighbor_node_id,
+ { "Node ID", "lbmc.route_info_neighbor.node_id", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_neighbor_ingress_cost,
+ { "Ingress Cost", "lbmc.route_info_neighbor.ingress_cost", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_route_info_neighbor_egress_cost,
+ { "Egress Cost", "lbmc.route_info_neighbor.egress_cost", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_gateway_name,
+ { "Gateway Name", "lbmc.gateway_name", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_gateway_name_next_hdr,
+ { "Next Header", "lbmc.gateway_name.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_gateway_name_hdr_len,
+ { "Header Length", "lbmc.gateway_name.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_gateway_name_flags,
+ { "Flags", "lbmc.gateway_name.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_gateway_name_flags_ignore,
+ { "Ignore", "lbmc.gateway_name.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_GATEWAY_NAME_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_gateway_name_gateway_name,
+ { "Gateway Name", "lbmc.gateway_name.gateway_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_request,
+ { "Authentication Request", "lbmc.auth_request", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_request_next_hdr,
+ { "Next Header", "lbmc.auth_request.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_request_hdr_len,
+ { "Header Length", "lbmc.auth_request.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_request_flags,
+ { "Flags", "lbmc.auth_request.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_request_flags_ignore,
+ { "Ignore", "lbmc.auth_request.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_AUTH_REQUEST_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_auth_request_opid,
+ { "Operation ID", "lbmc.auth_request.opid", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_auth_operation_id_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_request_user_len,
+ { "User Length", "lbmc.auth_request.user_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_request_user_name,
+ { "User Name", "lbmc.auth_request.user_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge,
+ { "Authentication Challenge", "lbmc.auth_challenge", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_next_hdr,
+ { "Next Header", "lbmc.auth_challenge.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_hdr_len,
+ { "Header Length", "lbmc.auth_challenge.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_flags,
+ { "Flags", "lbmc.auth_challenge.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_flags_ignore,
+ { "Ignore", "lbmc.auth_challenge.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_AUTH_CHALLENGE_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_opid,
+ { "Operation ID", "lbmc.auth_challenge.opid", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_auth_operation_id_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_mod_len,
+ { "Mod Length", "lbmc.auth_challenge.mod_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_gen_len,
+ { "Gen Length", "lbmc.auth_challenge.gen_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_salt_len,
+ { "Salt Length", "lbmc.auth_challenge.salt_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_pubkey_len,
+ { "Pubkey Length", "lbmc.auth_challenge.pubkey_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_mod,
+ { "Mod", "lbmc.auth_challenge.mod", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_gen,
+ { "Gen", "lbmc.auth_challenge.gen", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_salt,
+ { "Salt", "lbmc.auth_challenge.salt", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_pubkey,
+ { "Pubkey", "lbmc.auth_challenge.pubkey", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp,
+ { "Authentication Challenge Response", "lbmc.auth_challenge_rsp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp_next_hdr,
+ { "Next Header", "lbmc.auth_challenge_rsp.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp_hdr_len,
+ { "Header Length", "lbmc.auth_challenge_rsp.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp_flags,
+ { "Flags", "lbmc.auth_challenge_rsp.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp_flags_ignore,
+ { "Ignore", "lbmc.auth_challenge_rsp.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_AUTH_CHALLENGE_RSP_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp_opid,
+ { "Operation ID", "lbmc.auth_challenge_rsp.opid", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_auth_operation_id_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp_pubkey_len,
+ { "Pubkey Length", "lbmc.auth_challenge_rsp.pubkey_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp_evidence_len,
+ { "Evidence Length", "lbmc.auth_challenge_rsp.evidence_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp_pubkey,
+ { "Pubkey", "lbmc.auth_challenge_rsp.pubkey", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_challenge_rsp_evidence,
+ { "Evidence", "lbmc.auth_challenge_rsp.evidence", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_result,
+ { "Authentication Result", "lbmc.auth_result", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_result_next_hdr,
+ { "Next Header", "lbmc.auth_result.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_result_hdr_len,
+ { "Header Length", "lbmc.auth_result.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_result_flags,
+ { "Flags", "lbmc.auth_result.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_result_flags_ignore,
+ { "Ignore", "lbmc.auth_result.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_AUTH_RESULT_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_auth_result_opid,
+ { "Operation ID", "lbmc.auth_result.opid", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_auth_operation_id_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_result_result,
+ { "Result", "lbmc.auth_result.result", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_unknown,
+ { "Unknown Authentication Header", "lbmc.auth_unknown", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_unknown_next_hdr,
+ { "Next Header", "lbmc.auth_unknown.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_unknown_hdr_len,
+ { "Header Length", "lbmc.auth_unknown.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_unknown_flags,
+ { "Flags", "lbmc.auth_unknown.flags", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_unknown_opid,
+ { "Operation ID", "lbmc.auth_unknown.opid", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_auth_operation_id_type), 0x0, NULL, HFILL } },
+ { &hf_lbmc_auth_unknown_data,
+ { "Data", "lbmc.auth_unknown.data", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_hmac,
+ { "HMAC", "lbmc.hmac", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_hmac_next_hdr,
+ { "Next Header", "lbmc.hmac.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_hmac_hdr_len,
+ { "Header Length", "lbmc.hmac.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_hmac_flags,
+ { "Flags", "lbmc.hmac.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_hmac_flags_ignore,
+ { "Ignore", "lbmc.hmac.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_HMAC_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_hmac_padding,
+ { "Padding", "lbmc.hmac.padding", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_hmac_data,
+ { "Data", "lbmc.hmac.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sid,
+ { "UMQ Session ID", "lbmc.umq_sid", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sid_next_hdr,
+ { "Next Header", "lbmc.umq_sid.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sid_hdr_len,
+ { "Header Length", "lbmc.umq_sid.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sid_flags,
+ { "Flags", "lbmc.umq_sid.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sid_flags_ignore,
+ { "Ignore", "lbmc.umq_sid.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UMQ_SID_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE_CHAR, NULL, HFILL } },
+ { &hf_lbmc_umq_sid_key,
+ { "Key", "lbmc.umq_sid.key", FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_umq_sid_sid,
+ { "SID", "lbmc.umq_sid.sid", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination,
+ { "Destination", "lbmc.destination", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_next_hdr,
+ { "Next Header", "lbmc.destination.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_hdr_len,
+ { "Header Length", "lbmc.destination.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_flags,
+ { "Flags", "lbmc.destination.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_flags_ignore,
+ { "Ignore", "lbmc.destination.flags.ignore", FT_BOOLEAN, L_LBMC_DESTINATION_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_destination_domain_id,
+ { "Domain ID", "lbmc.destination.domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_ipaddr,
+ { "IP Address", "lbmc.destination.ipaddr", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_port,
+ { "Port", "lbmc.destination.port", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_hops_taken,
+ { "Hops Taken", "lbmc.destination.hops_taken", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_orig_domain_id,
+ { "Originating Domain ID", "lbmc.destination.orig_domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_orig_ipaddr,
+ { "Originating IP Address", "lbmc.destination.orig_ipaddr", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_orig_port,
+ { "Originating Port", "lbmc.destination.orig_port", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_destination_reserved,
+ { "Reserved", "lbmc.destination.reserved", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_idx,
+ { "Topic Index", "lbmc.topic_idx", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_idx_next_hdr,
+ { "Next Header", "lbmc.topic_idx.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_idx_hdr_len,
+ { "Header Length", "lbmc.topic_idx.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_idx_flags,
+ { "Flags", "lbmc.topic_idx.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_idx_flags_ignore,
+ { "Ignore", "lbmc.topic_idx.flags.ignore", FT_BOOLEAN, L_LBMC_TOPIC_IDX_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_topic_idx_tidx,
+ { "Topic Index", "lbmc.topic_idx.tidx", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source,
+ { "Topic Source", "lbmc.topic_source", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_next_hdr,
+ { "Next Header", "lbmc.topic_source.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_hdr_len,
+ { "Header Length", "lbmc.topic_source.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_flags,
+ { "Flags", "lbmc.topic_source.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_flags_ignore,
+ { "Ignore", "lbmc.topic_source.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_topic_source_flags_eos,
+ { "End of Stream", "lbmc.topic_source.flags.eos", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_SOURCE_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_TOPIC_SOURCE_EOS_FLAG, NULL, HFILL } },
+ { &hf_lbmc_topic_source_domain_id,
+ { "Domain ID", "lbmc.topic_source.domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc,
+ { "Topic Source Extended Functionality", "lbmc.topic_source_exfunc", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_next_hdr,
+ { "Next Header", "lbmc.topic_source_exfunc.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_hdr_len,
+ { "Header Length", "lbmc.topic_source_exfunc.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_flags,
+ { "Flags", "lbmc.topic_source_exfunc.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_flags_ignore,
+ { "Ignore", "lbmc.topic_source_exfunc.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_src_ip,
+ { "Source Address", "lbmc.topic_source_exfunc.src_ip", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_src_port,
+ { "Source Port", "lbmc.topic_source_exfunc.src_port", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_unused,
+ { "Unused", "lbmc.topic_source_exfunc.unused", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_functionality_flags,
+ { "Functionality Flags", "lbmc.topic_source_exfunc.functionality_flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_functionality_flags_ulb,
+ { "ULB", "lbmc.topic_source_exfunc.functionality_flags.ulb", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS * 8, TFS(&tfs_capable_not_capable), LBM_TOPIC_OPT_EXFUNC_FFLAG_ULB, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_functionality_flags_umq,
+ { "UMQ", "lbmc.topic_source_exfunc.functionality_flags.umq", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS * 8, TFS(&tfs_capable_not_capable), LBM_TOPIC_OPT_EXFUNC_FFLAG_UMQ, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_functionality_flags_ume,
+ { "UME", "lbmc.topic_source_exfunc.functionality_flags.ume", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS * 8, TFS(&tfs_capable_not_capable), LBM_TOPIC_OPT_EXFUNC_FFLAG_UME, NULL, HFILL } },
+ { &hf_lbmc_topic_source_exfunc_functionality_flags_lj,
+ { "Late Join", "lbmc.topic_source_exfunc.functionality_flags.lj", FT_BOOLEAN, L_LBMC_CNTL_TOPIC_SOURCE_EXFUNC_HDR_T_FUNCTIONALITY_FLAGS * 8, TFS(&tfs_capable_not_capable), LBM_TOPIC_OPT_EXFUNC_FFLAG_LJ, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext,
+ { "UME Store Extended", "lbmc.ume_store_ext", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_next_hdr,
+ { "Next Header", "lbmc.ume_store_ext.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_hdr_len,
+ { "Header Length", "lbmc.ume_store_ext.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_flags,
+ { "Flags", "lbmc.ume_store_ext.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_flags_ignore,
+ { "Ignore", "lbmc.ume_store_ext.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_STORE_EXT_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_grp_idx,
+ { "Group Index", "lbmc.ume_store_ext.grp_idx", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_store_tcp_port,
+ { "Store TCP Port", "lbmc.ume_store_ext.store_tcp_port", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_store_idx,
+ { "Store Index", "lbmc.ume_store_ext.store_idx", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_store_ip_addr,
+ { "Store IP Address", "lbmc.ume_store_ext.store_ip_addr", FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_src_reg_id,
+ { "Source RegID", "lbmc.ume_store_ext.src_reg_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_domain_id,
+ { "Domain ID", "lbmc.ume_store_ext.domain_id", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_store_ext_version,
+ { "Version", "lbmc.ume_store_ext.version", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_psrc_election_token,
+ { "UME Proxy Source Election Token", "lbmc.ume_psrc_election_token", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_psrc_election_token_next_hdr,
+ { "Next Header", "lbmc.ume_psrc_election_token.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_psrc_election_token_hdr_len,
+ { "Header Length", "lbmc.ume_psrc_election_token.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_psrc_election_token_flags,
+ { "Flags", "lbmc.ume_psrc_election_token.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_psrc_election_token_flags_ignore,
+ { "Ignore", "lbmc.ume_psrc_election_token.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_UME_PSRC_ELECTION_TOKEN_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_ume_psrc_election_token_store_index,
+ { "Store Index", "lbmc.ume_psrc_election_token.store_index", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_ume_psrc_election_token_token,
+ { "Token", "lbmc.ume_psrc_election_token.token", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_sid,
+ { "TCP Session ID", "lbmc.tcp_sid", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_sid_next_hdr,
+ { "Next Header", "lbmc.tcp_sid.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_sid_hdr_len,
+ { "Header Length", "lbmc.tcp_sid.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_sid_flags,
+ { "Flags", "lbmc.tcp_sid.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_tcp_sid_flags_ignore,
+ { "Ignore", "lbmc.tcp_sid.flags.ignore", FT_BOOLEAN, L_LBMC_CNTL_TCP_SID_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_OPT_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_tcp_sid_sid,
+ { "Session ID", "lbmc.tcp_sid.sid", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt,
+ { "Extended Option", "lbmc.extopt", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_next_hdr,
+ { "Next Header", "lbmc.extopt.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_hdr_len,
+ { "Header Length", "lbmc.extopt.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_flags,
+ { "Flags", "lbmc.extopt.flags", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_flags_ignore,
+ { "Ignore", "lbmc.extopt.flags.ignore", FT_BOOLEAN, L_LBMC_EXTOPT_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_EXTOPT_FLAG_IGNORE, NULL, HFILL } },
+ { &hf_lbmc_extopt_flags_ignore_subtype,
+ { "Ignore Subtype", "lbmc.extopt.flags.ignore_subtype", FT_BOOLEAN, L_LBMC_EXTOPT_HDR_T_FLAGS * 8, TFS(&lbm_ignore_flag), LBMC_EXTOPT_FLAG_IGNORE_SUBTYPE, NULL, HFILL } },
+ { &hf_lbmc_extopt_flags_more_fragments,
+ { "More Fragments", "lbmc.extopt.flags.more_fragments", FT_BOOLEAN, L_LBMC_EXTOPT_HDR_T_FLAGS * 8, TFS(&tfs_set_notset), LBMC_EXTOPT_FLAG_MORE_FRAGMENT, "Set if there are more fragments", HFILL } },
+ { &hf_lbmc_extopt_id,
+ { "ID", "lbmc.extopt.id", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_subtype,
+ { "Subtype", "lbmc.extopt.subtype", FT_UINT16, BASE_DEC_HEX, VALS(lbmc_extopt_subtype), 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_fragment_offset,
+ { "Fragment offset", "lbmc.extopt.fragment_offset", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_data,
+ { "Data", "lbmc.extopt.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_cfgopt,
+ { "Configuration Option", "lbmc.extopt.cfgopt", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_cfgopt_scope,
+ { "Scope", "lbmc.extopt.cfgopt.scope", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_extopt_config_option_scope), 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_cfgopt_parent,
+ { "Parent", "lbmc.extopt.cfgopt.parent", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_cfgopt_name,
+ { "Name", "lbmc.extopt.cfgopt.name", FT_STRING, FT_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_cfgopt_value,
+ { "Value", "lbmc.extopt.cfgopt.value", FT_STRING, FT_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_msgsel,
+ { "Message Selector", "lbmc.extopt.msgsel", FT_STRING, FT_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_reassembled_data,
+ { "EXTOPT Reassembled Data", "lbmc.extopt.reassembled_data", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_reassembled_data_subtype,
+ { "Subtype", "lbmc.extopt.reassembled_data.subtype", FT_UINT16, BASE_DEC_HEX, VALS(lbmc_extopt_subtype), 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_reassembled_data_len,
+ { "Length", "lbmc.extopt.reassembled_data.length", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_reassembled_data_data,
+ { "Data", "lbmc.extopt.reassembled_data.data", FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_extopt_reassembled_data_msgsel,
+ { "Message Selector", "lbmc.extopt.reassembled_data.msgsel", FT_STRING, FT_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties,
+ { "Message Properties", "lbmc.lbm_msg_properties", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_data,
+ { "Message Properties Data", "lbmc.lbm_msg_properties.data", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_data_magic,
+ { "Magic", "lbmc.lbm_msg_properties.data.magic", FT_UINT32, BASE_HEX, VALS(lbm_msg_prop_magic_type), 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_data_num_fields,
+ { "Number of Fields", "lbmc.lbm_msg_properties.data.num_fields", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_data_vertype,
+ { "Version/Type", "lbmc.lbm_msg_properties.data.vertype", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_data_vertype_version,
+ { "Version", "lbmc.lbm_msg_properties.data.vertype.version", FT_UINT8, BASE_DEC, NULL, LBM_MSG_PROPERTIES_HDR_VER_MASK, NULL, HFILL } },
+ { &hf_lbm_msg_properties_data_vertype_type,
+ { "Type", "lbmc.lbm_msg_properties.data.vertype.type", FT_UINT8, BASE_DEC_HEX, VALS(lbm_msg_prop_header_type), LBM_MSG_PROPERTIES_HDR_VER_MASK, NULL, HFILL } },
+ { &hf_lbm_msg_properties_data_res,
+ { "Reserved", "lbmc.lbm_msg_properties.data.res", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr,
+ { "Message Properties", "lbmc.lbm_msg_properties.hdr", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_key_offset,
+ { "Key offset", "lbmc.lbm_msg_properties.hdr.key_offset", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_value_offset,
+ { "Value offset", "lbmc.lbm_msg_properties.hdr.value_offset", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_hash,
+ { "Hash", "lbmc.lbm_msg_properties.hdr.hash", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_type,
+ { "Type", "lbmc.lbm_msg_properties.hdr.type", FT_UINT32, BASE_DEC_HEX, VALS(lbm_msg_prop_field_type), 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_key,
+ { "Key", "lbmc.lbm_msg_properties.hdr.key", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_boolean_value,
+ { "Boolean Value", "lbmc.lbm_msg_properties.hdr.boolean_value", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_byte_value,
+ { "Byte Value", "lbmc.lbm_msg_properties.hdr.byte_value", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_short_value,
+ { "Short Value", "lbmc.lbm_msg_properties.hdr.short_value", FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_int_value,
+ { "Int Value", "lbmc.lbm_msg_properties.hdr.int_value", FT_UINT32, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_float_value,
+ { "Float Value", "lbmc.lbm_msg_properties.hdr.float_value", FT_FLOAT, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_long_value,
+ { "Long Value", "lbmc.lbm_msg_properties.hdr.long_value", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_double_value,
+ { "Double Value", "lbmc.lbm_msg_properties.hdr.double_value", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_string_value,
+ { "String Value", "lbmc.lbm_msg_properties.hdr.string_value", FT_STRINGZ, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_msg_properties_hdr_unknown_value,
+ { "Unknown Value", "lbmc.lbm_msg_properties.hdr.unknown_value", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_unhandled,
+ { "Unhandled", "lbmc.unhandled", FT_NONE, BASE_NONE, NULL, 0x0, "Unrecognized/unhandled header", HFILL } },
+ { &hf_lbmc_unhandled_next_hdr,
+ { "Next Header", "lbmc.unhandled.next_hdr", FT_UINT8, BASE_DEC_HEX, VALS(lbmc_next_header), 0x0, NULL, HFILL } },
+ { &hf_lbmc_unhandled_hdr_len,
+ { "Header Length", "lbmc.unhandled.hdr_len", FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_unhandled_data,
+ { "Data", "lbmc.unhandled.data", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_stream,
+ { "LBM Stream", "lbmc.lbm_stream", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_stream_stream_id,
+ { "Stream ID", "lbmc.lbm_stream.stream_id", FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbm_stream_substream_id,
+ { "Substream ID", "lbmc.lbm_stream.substream_id", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_reassembly,
+ { "Reassembled Fragments", "lbmc.reassembly", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_lbmc_reassembly_fragment,
+ { "Fragment", "lbmc.reassembly.fragment", FT_FRAMENUM, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_reassembly_frame,
+ { "Reassembled message in frame", "lbmc.reassembly_frame", FT_FRAMENUM, BASE_NONE, NULL, 0x0, "Frame in which reassembled message appears", HFILL } },
+ };
+
+ static gint * ett[] =
+ {
+ &ett_lbmc,
+ &ett_lbmc_ver_type,
+ &ett_lbmc_frag,
+ &ett_lbmc_frag_flags,
+ &ett_lbmc_batch,
+ &ett_lbmc_batch_flags,
+ &ett_lbmc_tcp_request,
+ &ett_lbmc_tcp_request_flags,
+ &ett_lbmc_topicname,
+ &ett_lbmc_topicname_flags,
+ &ett_lbmc_apphdr,
+ &ett_lbmc_apphdr_code,
+ &ett_lbmc_apphdr_chain,
+ &ett_lbmc_apphdr_chain_element,
+ &ett_lbmc_apphdr_chain_msgprop,
+ &ett_lbmc_umq_msgid,
+ &ett_lbmc_umq_msgid_flags,
+ &ett_lbmc_umq_sqd_rcv,
+ &ett_lbmc_umq_sqd_rcv_flags,
+ &ett_lbmc_umq_resub,
+ &ett_lbmc_umq_resub_flags,
+ &ett_lbmc_otid,
+ &ett_lbmc_otid_flags,
+ &ett_lbmc_ctxinst,
+ &ett_lbmc_ctxinst_flags,
+ &ett_lbmc_ctxinstd,
+ &ett_lbmc_ctxinstr,
+ &ett_lbmc_srcidx,
+ &ett_lbmc_srcidx_flags,
+ &ett_lbmc_umq_ulb_msg,
+ &ett_lbmc_umq_ulb_msg_flags,
+ &ett_lbmc_ssf_init,
+ &ett_lbmc_ssf_init_flags,
+ &ett_lbmc_ssf_creq,
+ &ett_lbmc_ssf_creq_flags,
+ &ett_lbmc_ume_preg,
+ &ett_lbmc_ume_preg_flags,
+ &ett_lbmc_ume_preg_marker,
+ &ett_lbmc_ume_preg_resp,
+ &ett_lbmc_ume_preg_resp_code,
+ &ett_lbmc_ume_preg_resp_marker,
+ &ett_lbmc_ume_ack,
+ &ett_lbmc_ume_ack_flags,
+ &ett_lbmc_ume_rxreq,
+ &ett_lbmc_ume_rxreq_flags,
+ &ett_lbmc_ume_keepalive,
+ &ett_lbmc_ume_keepalive_flags,
+ &ett_lbmc_ume_storeid,
+ &ett_lbmc_ume_storeid_store_id,
+ &ett_lbmc_ume_ranged_ack,
+ &ett_lbmc_ume_ranged_ack_flags,
+ &ett_lbmc_ume_ack_id,
+ &ett_lbmc_ume_ack_id_flags,
+ &ett_lbmc_ume_capability,
+ &ett_lbmc_ume_capability_flags,
+ &ett_lbmc_ume_proxy_src,
+ &ett_lbmc_ume_proxy_src_flags,
+ &ett_lbmc_ume_store_group,
+ &ett_lbmc_ume_store_group_flags,
+ &ett_lbmc_ume_store,
+ &ett_lbmc_ume_store_flags,
+ &ett_lbmc_ume_lj_info,
+ &ett_lbmc_ume_lj_info_flags,
+ &ett_lbmc_tsni,
+ &ett_lbmc_tsni_num_recs,
+ &ett_lbmc_tsni_rec,
+ &ett_lbmc_umq_reg,
+ &ett_lbmc_umq_reg_flags,
+ &ett_lbmc_umq_reg_reg_ctx,
+ &ett_lbmc_umq_reg_reg_src,
+ &ett_lbmc_umq_reg_reg_rcv,
+ &ett_lbmc_umq_reg_rcv_dereg,
+ &ett_lbmc_umq_reg_reg_ulb_rcv,
+ &ett_lbmc_umq_reg_ulb_rcv_dereg,
+ &ett_lbmc_umq_reg_reg_observer_rcv,
+ &ett_lbmc_umq_reg_observer_rcv_dereg,
+ &ett_lbmc_umq_reg_resp,
+ &ett_lbmc_umq_reg_resp_flags,
+ &ett_lbmc_umq_reg_resp_reg_ctx,
+ &ett_lbmc_umq_reg_resp_reg_ctx_ex,
+ &ett_lbmc_umq_reg_resp_reg_ctx_ex_flags,
+ &ett_lbmc_umq_reg_resp_err,
+ &ett_lbmc_umq_reg_resp_reg_src,
+ &ett_lbmc_umq_reg_resp_reg_rcv,
+ &ett_lbmc_umq_reg_resp_rcv_dereg,
+ &ett_lbmc_umq_reg_resp_reg_ulb_rcv,
+ &ett_lbmc_umq_reg_resp_ulb_rcv_dereg,
+ &ett_lbmc_umq_reg_resp_reg_observer_rcv,
+ &ett_lbmc_umq_reg_resp_observer_rcv_dereg,
+ &ett_lbmc_umq_ack,
+ &ett_lbmc_umq_ack_msgs,
+ &ett_lbmc_umq_ack_msgid,
+ &ett_lbmc_umq_ack_stable,
+ &ett_lbmc_umq_ack_cr,
+ &ett_lbmc_umq_ack_ulb_cr,
+ &ett_lbmc_umq_rcr,
+ &ett_lbmc_umq_rcr_flags,
+ &ett_lbmc_umq_ka,
+ &ett_lbmc_umq_ka_flags,
+ &ett_lbmc_umq_ka_src,
+ &ett_lbmc_umq_ka_rcv,
+ &ett_lbmc_umq_ka_ulb_rcv,
+ &ett_lbmc_umq_ka_ulb_rcv_resp,
+ &ett_lbmc_umq_rxreq,
+ &ett_lbmc_umq_rxreq_flags,
+ &ett_lbmc_umq_rxreq_regid_resp,
+ &ett_lbmc_umq_rxreq_addr_resp,
+ &ett_lbmc_umq_rxreq_mr,
+ &ett_lbmc_umq_rxreq_ulb_mr,
+ &ett_lbmc_umq_rxreq_ulb_mr_abort,
+ &ett_lbmc_umq_rxreq_qrcrr,
+ &ett_lbmc_umq_rxreq_trcrr,
+ &ett_lbmc_umq_rxreq_ulb_trcrr,
+ &ett_lbmc_umq_rxreq_ulb_trcrr_abort,
+ &ett_lbmc_umq_qmgmt,
+ &ett_lbmc_umq_resub_req,
+ &ett_lbmc_umq_resub_req_flags,
+ &ett_lbmc_umq_resub_resp,
+ &ett_lbmc_umq_resub_resp_flags,
+ &ett_lbmc_topic_interest,
+ &ett_lbmc_topic_interest_flags,
+ &ett_lbmc_pattern_interest,
+ &ett_lbmc_pattern_interest_flags,
+ &ett_lbmc_advertisement,
+ &ett_lbmc_advertisement_flags,
+ &ett_lbmc_advertisement_ad_flags,
+ &ett_lbmc_ume_storename,
+ &ett_lbmc_ume_storename_flags,
+ &ett_lbmc_umq_ulb_rcr,
+ &ett_lbmc_umq_ulb_rcr_flags,
+ &ett_lbmc_umq_lf,
+ &ett_lbmc_umq_lf_flags,
+ &ett_lbmc_ctxinfo,
+ &ett_lbmc_ctxinfo_flags,
+ &ett_lbmc_ume_pser,
+ &ett_lbmc_ume_pser_flags,
+ &ett_lbmc_domain,
+ &ett_lbmc_domain_flags,
+ &ett_lbmc_tnwg_capabilities,
+ &ett_lbmc_tnwg_capabilities_flags,
+ &ett_lbmc_tnwg_capabilities_capabilities1,
+ &ett_lbmc_tnwg_capabilities_capabilities3,
+ &ett_lbmc_patidx,
+ &ett_lbmc_patidx_flags,
+ &ett_lbmc_ume_client_lifetime,
+ &ett_lbmc_ume_client_lifetime_flags,
+ &ett_lbmc_ume_sid,
+ &ett_lbmc_ume_sid_flags,
+ &ett_lbmc_umq_idx_cmd,
+ &ett_lbmc_umq_idx_cmd_flags,
+ &ett_lbmc_umq_idx_cmd_stop_assign,
+ &ett_lbmc_umq_idx_cmd_start_assign,
+ &ett_lbmc_umq_idx_cmd_release_assign,
+ &ett_lbmc_umq_idx_cmd_release_assign_flags,
+ &ett_lbmc_umq_idx_cmd_ulb_stop_assign,
+ &ett_lbmc_umq_idx_cmd_ulb_start_assign,
+ &ett_lbmc_umq_idx_cmd_ulb_release_assign,
+ &ett_lbmc_umq_idx_cmd_ulb_release_assign_flags,
+ &ett_lbmc_umq_idx_cmd_reserve_assign,
+ &ett_lbmc_umq_idx_cmd_reserve_assign_flags,
+ &ett_lbmc_umq_idx_cmd_ulb_reserve_assign,
+ &ett_lbmc_umq_idx_cmd_ulb_reserve_assign_flags,
+ &ett_lbmc_umq_idx_cmd_resp,
+ &ett_lbmc_umq_idx_cmd_resp_flags,
+ &ett_lbmc_umq_idx_cmd_resp_err,
+ &ett_lbmc_umq_idx_cmd_resp_stop_assign,
+ &ett_lbmc_umq_idx_cmd_resp_start_assign,
+ &ett_lbmc_umq_idx_cmd_resp_release_assign,
+ &ett_lbmc_umq_idx_cmd_resp_ulb_stop_assign,
+ &ett_lbmc_umq_idx_cmd_resp_ulb_start_assign,
+ &ett_lbmc_umq_idx_cmd_resp_ulb_release_assign,
+ &ett_lbmc_umq_idx_cmd_resp_reserve_assign,
+ &ett_lbmc_umq_idx_cmd_resp_reserve_assign_flags,
+ &ett_lbmc_umq_idx_cmd_resp_ulb_reserve_assign,
+ &ett_lbmc_umq_idx_cmd_resp_ulb_reserve_assign_flags,
+ &ett_lbmc_odomain,
+ &ett_lbmc_odomain_flags,
+ &ett_lbmc_stream,
+ &ett_lbmc_stream_flags,
+ &ett_lbmc_topic_md_interest,
+ &ett_lbmc_topic_md_interest_flags,
+ &ett_lbmc_pattern_md_interest,
+ &ett_lbmc_pattern_md_interest_flags,
+ &ett_lbmc_lji_req,
+ &ett_lbmc_lji_req_flags,
+ &ett_lbmc_tnwg_ka,
+ &ett_lbmc_tnwg_ka_flags,
+ &ett_lbmc_ume_receiver_keepalive,
+ &ett_lbmc_ume_receiver_keepalive_flags,
+ &ett_lbmc_umq_cmd,
+ &ett_lbmc_umq_cmd_flags,
+ &ett_lbmc_umq_cmd_topic_list,
+ &ett_lbmc_umq_cmd_msg_retrieve,
+ &ett_lbmc_umq_cmd_msg_retrieve_entry,
+ &ett_lbmc_umq_cmd_msg_list,
+ &ett_lbmc_umq_cmd_resp,
+ &ett_lbmc_umq_cmd_resp_flags,
+ &ett_lbmc_umq_cmd_resp_msg_retrieve,
+ &ett_lbmc_umq_cmd_resp_xmsg_retrieve,
+ &ett_lbmc_umq_cmd_resp_xmsg_retrieve_entry,
+ &ett_lbmc_umq_cmd_resp_msg_list,
+ &ett_lbmc_umq_cmd_resp_xmsg_list,
+ &ett_lbmc_umq_cmd_resp_xmsg_list_entry,
+ &ett_lbmc_umq_cmd_resp_topic_list,
+ &ett_lbmc_umq_cmd_resp_topic_list_topic_entry,
+ &ett_lbmc_umq_cmd_resp_topic_list_topic_entry_appset_entry,
+ &ett_lbmc_umq_cmd_resp_err,
+ &ett_lbmc_sri_req,
+ &ett_lbmc_sri_req_flags,
+ &ett_lbmc_ume_store_domain,
+ &ett_lbmc_ume_store_domain_flags,
+ &ett_lbmc_sri,
+ &ett_lbmc_sri_flags,
+ &ett_lbmc_route_info,
+ &ett_lbmc_route_info_flags,
+ &ett_lbmc_route_info_neighbor,
+ &ett_lbmc_route_info_neighbor_flags,
+ &ett_lbmc_gateway_name,
+ &ett_lbmc_gateway_name_flags,
+ &ett_lbmc_auth_request,
+ &ett_lbmc_auth_request_flags,
+ &ett_lbmc_auth_challenge,
+ &ett_lbmc_auth_challenge_flags,
+ &ett_lbmc_auth_challenge_rsp,
+ &ett_lbmc_auth_challenge_rsp_flags,
+ &ett_lbmc_auth_result,
+ &ett_lbmc_auth_result_flags,
+ &ett_lbmc_auth_unknown,
+ &ett_lbmc_hmac,
+ &ett_lbmc_hmac_flags,
+ &ett_lbmc_umq_sid,
+ &ett_lbmc_umq_sid_flags,
+ &ett_lbmc_destination,
+ &ett_lbmc_destination_flags,
+ &ett_lbmc_topic_idx,
+ &ett_lbmc_topic_idx_flags,
+ &ett_lbmc_topic_source,
+ &ett_lbmc_topic_source_flags,
+ &ett_lbmc_topic_source_exfunc,
+ &ett_lbmc_topic_source_exfunc_flags,
+ &ett_lbmc_topic_source_exfunc_functionality_flags,
+ &ett_lbmc_ume_store_ext,
+ &ett_lbmc_ume_store_ext_flags,
+ &ett_lbmc_ume_psrc_election_token,
+ &ett_lbmc_ume_psrc_election_token_flags,
+ &ett_lbmc_tcp_sid,
+ &ett_lbmc_tcp_sid_flags,
+ &ett_lbmc_extopt,
+ &ett_lbmc_extopt_flags,
+ &ett_lbmc_extopt_cfgopt,
+ &ett_lbmc_extopt_reassembled_data,
+ &ett_lbmc_extopt_reassembled_data_cfgopt,
+ &ett_lbm_msg_properties,
+ &ett_lbm_msg_properties_data,
+ &ett_lbm_msg_properties_data_vertype,
+ &ett_lbm_msg_properties_hdr,
+ &ett_lbmc_unhandled_hdr,
+ &ett_lbm_stream,
+ &ett_lbmc_reassembly,
+ &ett_unknown,
+ &ett_msg_data,
+ &ett_msgprop_data
+ };
+ static ei_register_info ei[] =
+ {
+ { &ei_lbmc_analysis_length_incorrect, { "lbmc.analysis.length_incorrect", PI_PROTOCOL, PI_ERROR, "Header length incorrect", EXPFILL } },
+ { &ei_lbmc_analysis_zero_length, { "lbmc.analysis.zero_length", PI_MALFORMED, PI_ERROR, "Length dissected is zero", EXPFILL } },
+ { &ei_lbmc_analysis_tsni, { "lbmc.analysis.tsni", PI_SEQUENCE, PI_NOTE, "TSNI Sqn", EXPFILL } },
+ { &ei_lbmc_analysis_invalid_value, { "lbmc.analysis.invalid_value", PI_MALFORMED, PI_ERROR, "Invalid value", EXPFILL } },
+ { &ei_lbmc_analysis_no_reassembly, { "lbmc.analysis.no_reassembly", PI_PROTOCOL, PI_ERROR, "Reassembly not in progress but fragment_offset not zero", EXPFILL } },
+ { &ei_lbmc_analysis_invalid_offset, { "lbmc.analysis.invalid_offset", PI_MALFORMED, PI_ERROR, "Message property offset exceeds data length", EXPFILL } },
+ { &ei_lbmc_analysis_missing_reassembly_frame, { "lbmc.analysis.missing_reassembly_frame", PI_UNDECODED, PI_WARN, "Reassembly frame not found - perhaps missing packets?", EXPFILL } },
+ { &ei_lbmc_analysis_invalid_fragment, { "lbmc.analysis.invalid_fragment", PI_MALFORMED, PI_ERROR, "Invalid fragment", EXPFILL } },
+ };
+ module_t * lbmc_module = NULL;
+ expert_module_t * expert_lbmc;
+
+ tnw_protocol_handle = proto_register_protocol("29West Protocol", "29West", "29west");
+ proto_lbmc = proto_register_protocol("LBMC Protocol", "LBMC", "lbmc");
+
+ proto_register_field_array(proto_lbmc, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ expert_lbmc = expert_register_protocol(proto_lbmc);
+ expert_register_field_array(expert_lbmc, ei, array_length(ei));
+
+ register_heur_dissector_list("29westdata", &lbmc_heuristic_subdissector_list);
+
+ prefs_register_protocol(tnw_protocol_handle, NULL);
+ lbmc_module = prefs_register_protocol_subtree("29West", proto_lbmc, proto_reg_handoff_lbmc);
+ prefs_register_bool_preference(lbmc_module,
+ "use_heuristic_subdissectors",
+ "Use heuristic sub-dissectors",
+ "Use a registered heuristic sub-dissector to decode the data payload",
+ &lbmc_use_heuristic_subdissectors);
+ prefs_register_bool_preference(lbmc_module,
+ "reassemble_fragments",
+ "Reassemble fragmented data",
+ "Reassemble data message fragments",
+ &lbmc_reassemble_fragments);
+ prefs_register_bool_preference(lbmc_module,
+ "dissect_lbmpdm",
+ "Dissect LBMPDM payload",
+ "Recognize and dissect payloads containing LBMPDM messages (requires reassembly to be enabled)",
+ &lbmc_dissect_lbmpdm);
+ lbm_stream_init();
+ lbmc_message_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+}
+
+int lbmc_get_minimum_length(void)
+{
+ return (O_LBMC_HDR_T_MSGLEN + L_LBMC_HDR_T_MSGLEN);
+}
+
+guint16 lbmc_get_message_length(tvbuff_t * tvb, int offset)
+{
+ return (tvb_get_ntohs(tvb, offset + O_LBMC_HDR_T_MSGLEN));
+}
+
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=4 expandtab:
+ * :indentSize=4:tabSize=4:noTabs=true:
+ */