aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2012-09-23 00:12:14 +0000
committerMichael Mann <mmann78@netscape.net>2012-09-23 00:12:14 +0000
commitb89a06a3e15546d177ba136bb46bfe1de97fa4fc (patch)
tree713968875728ff8e136aa9aad2a94b52872e6ac4 /epan/dissectors
parent37b6ca2ce8ba54810f54f86c5c17170315ccd0eb (diff)
replaced decode_boolean_bitfield calls with itemized filters
svn path=/trunk/; revision=45059
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-3g-a11.c95
-rw-r--r--epan/dissectors/packet-9p.c154
-rw-r--r--epan/dissectors/packet-atm.c67
-rw-r--r--epan/dissectors/packet-cast.c288
-rw-r--r--epan/dissectors/packet-clnp.c35
-rw-r--r--epan/dissectors/packet-cops.c25
-rw-r--r--epan/dissectors/packet-dlsw.c32
-rw-r--r--epan/dissectors/packet-q2931.c14
-rw-r--r--epan/dissectors/packet-vines.c646
-rw-r--r--epan/dissectors/packet-x25.c10
10 files changed, 810 insertions, 556 deletions
diff --git a/epan/dissectors/packet-3g-a11.c b/epan/dissectors/packet-3g-a11.c
index fbc0464325..ce12ac1836 100644
--- a/epan/dissectors/packet-3g-a11.c
+++ b/epan/dissectors/packet-3g-a11.c
@@ -129,10 +129,14 @@ static int hf_a11_max_num_serv_opt = -1;
/* Forward QoS Information */
static int hf_a11_fqi_srid = -1;
static int hf_a11_fqi_flags = -1;
+static int hf_a11_fqi_flags_ip_flow = -1;
+static int hf_a11_fqi_flags_dscp = -1;
+static int hf_a11_fqi_entry_flag = -1;
+static int hf_a11_fqi_entry_flag_dscp = -1;
+static int hf_a11_fqi_entry_flag_flow_state = -1;
static int hf_a11_fqi_flowcount = -1;
static int hf_a11_fqi_flowid = -1;
static int hf_a11_fqi_entrylen = -1;
-static int hf_a11_fqi_dscp = -1;
static int hf_a11_fqi_flowstate = -1;
static int hf_a11_fqi_requested_qoslen = -1;
static int hf_a11_fqi_flow_priority = -1;
@@ -149,6 +153,8 @@ static int hf_a11_rqi_srid = -1;
static int hf_a11_rqi_flowcount = -1;
static int hf_a11_rqi_flowid = -1;
static int hf_a11_rqi_entrylen = -1;
+static int hf_a11_rqi_entry_flag = -1;
+static int hf_a11_rqi_entry_flag_flow_state = -1;
static int hf_a11_rqi_flowstate = -1;
static int hf_a11_rqi_requested_qoslen = -1;
static int hf_a11_rqi_flow_priority = -1;
@@ -401,6 +407,7 @@ static const value_string a11_airlink_types[]= {
{0, NULL},
};
+static const true_false_string tfs_included_not_included = { "Included", "Not Included" };
#define A11_MSG_MSID_ELEM_LEN_MAX 8
#define A11_MSG_MSID_LEN_MAX 15
@@ -821,20 +828,13 @@ static void
dissect_fwd_qosinfo_flags(tvbuff_t *tvb, int offset, proto_tree *ext_tree, guint8 *p_dscp_included)
{
guint8 flags = tvb_get_guint8(tvb, offset);
- guint8 nbits = sizeof(flags) * 8;
-
- proto_item *ti = proto_tree_add_text(ext_tree, tvb, offset, sizeof(flags),
- "Flags: %#02x", flags);
+ proto_item *ti = proto_tree_add_item(ext_tree, hf_a11_fqi_flags, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree *flags_tree = proto_item_add_subtree(ti, ett_a11_fqi_flags);
- proto_tree_add_text(flags_tree, tvb, offset, sizeof(flags), "%s",
- decode_boolean_bitfield(flags, A11_FQI_IPFLOW_DISC_ENABLED, nbits,
- "IP Flow Discriminator Enabled", "IP Flow Discriminator Disabled"));
+ proto_tree_add_item(flags_tree, hf_a11_fqi_flags_ip_flow, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_a11_fqi_flags_dscp, tvb, offset, 1, ENC_BIG_ENDIAN);
- proto_tree_add_text(flags_tree, tvb, offset, sizeof(flags), "%s",
- decode_boolean_bitfield(flags, A11_FQI_DSCP_INCLUDED, nbits,
- "DSCP Included", "DSCP Not Included"));
if (flags & A11_FQI_DSCP_INCLUDED)
{
*p_dscp_included = 1;
@@ -844,50 +844,27 @@ dissect_fwd_qosinfo_flags(tvbuff_t *tvb, int offset, proto_tree *ext_tree, guint
}
}
-
-#define A11_FQI_DSCP 0x7E
-#define A11_FQI_FLOW_STATE 0x01
-
static void
dissect_fqi_entry_flags(tvbuff_t *tvb, int offset, proto_tree *ext_tree, guint8 dscp_enabled)
{
- guint8 dscp = tvb_get_guint8(tvb, offset);
- guint8 nbits = sizeof(dscp) * 8;
-
- proto_item *ti = proto_tree_add_text(ext_tree, tvb, offset, sizeof(dscp),
- "DSCP and Flow State: %#02x", dscp);
-
+ proto_item *ti = proto_tree_add_item(ext_tree, hf_a11_fqi_entry_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree *flags_tree = proto_item_add_subtree(ti, ett_a11_fqi_entry_flags);
if (dscp_enabled)
{
- proto_tree_add_text(flags_tree, tvb, offset, sizeof(dscp), "%s",
- decode_numeric_bitfield(dscp, A11_FQI_DSCP, nbits,
- "DSCP: %u"));
+ proto_tree_add_item(flags_tree, hf_a11_fqi_entry_flag_dscp, tvb, offset, 1, ENC_BIG_ENDIAN);
}
- proto_tree_add_text(flags_tree, tvb, offset, sizeof(dscp), "%s",
- decode_boolean_bitfield(dscp, A11_FQI_FLOW_STATE, nbits,
- "Flow State: Active", "Flow State: Inactive"));
+ proto_tree_add_item(flags_tree, hf_a11_fqi_entry_flag_flow_state, tvb, offset, 1, ENC_BIG_ENDIAN);
}
-
-#define A11_RQI_FLOW_STATE 0x01
-
static void
dissect_rqi_entry_flags(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
{
- guint8 flags = tvb_get_guint8(tvb, offset);
- guint8 nbits = sizeof(flags) * 8;
-
- proto_item *ti = proto_tree_add_text(ext_tree, tvb, offset, sizeof(flags),
- "Flags: %#02x", flags);
-
+ proto_item *ti = proto_tree_add_item(ext_tree, hf_a11_rqi_entry_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree *flags_tree = proto_item_add_subtree(ti, ett_a11_rqi_entry_flags);
- proto_tree_add_text(flags_tree, tvb, offset, sizeof(flags), "%s",
- decode_boolean_bitfield(flags, A11_RQI_FLOW_STATE, nbits,
- "Flow State: Active", "Flow State: Inactive"));
+ proto_tree_add_item(flags_tree, hf_a11_rqi_entry_flag_flow_state, tvb, offset, 1, ENC_BIG_ENDIAN);
}
/* Code to dissect Forward QoS Info */
@@ -2023,6 +2000,31 @@ proto_register_a11(void)
FT_UINT8, BASE_HEX, NULL, 0,
"Forward Flow Entry Flags", HFILL }
},
+ { &hf_a11_fqi_flags_ip_flow,
+ { "IP Flow Discriminator", "a11.ext.fqi.flags.ip_flow",
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), A11_FQI_IPFLOW_DISC_ENABLED,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_flags_dscp,
+ { "DSCP", "a11.ext.fqi.flags.dscp",
+ FT_BOOLEAN, 8, TFS(&tfs_included_not_included), A11_FQI_DSCP_INCLUDED,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_entry_flag,
+ { "DSCP and Flow State", "a11.ext.fqi.entry_flag",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_entry_flag_dscp,
+ { "DSCP", "a11.ext.fqi.entry_flag.dscp",
+ FT_UINT8, BASE_HEX, NULL, 0x7E,
+ NULL, HFILL }
+ },
+ { &hf_a11_fqi_entry_flag_flow_state,
+ { "Flow State", "a11.ext.fqi.entry_flag.flow_state",
+ FT_BOOLEAN, 8, TFS(&tfs_active_inactive), 0x01,
+ NULL, HFILL }
+ },
{ &hf_a11_fqi_flowcount,
{ "Forward Flow Count", "a11.ext.fqi.flowcount",
FT_UINT8, BASE_DEC, NULL, 0,
@@ -2038,11 +2040,6 @@ proto_register_a11(void)
FT_UINT8, BASE_DEC, NULL, 0,
"Forward Entry Length", HFILL }
},
- { &hf_a11_fqi_dscp,
- { "Forward DSCP", "a11.ext.fqi.dscp",
- FT_UINT8, BASE_HEX, NULL, 0,
- "Forward Flow DSCP", HFILL }
- },
{ &hf_a11_fqi_flowstate,
{ "Forward Flow State", "a11.ext.fqi.flowstate",
FT_UINT8, BASE_HEX, NULL, 0,
@@ -2148,6 +2145,16 @@ proto_register_a11(void)
FT_UINT8, BASE_DEC, NULL, 0,
"Reverse Flow Entry Length", HFILL }
},
+ { &hf_a11_rqi_entry_flag,
+ { "Flags", "a11.ext.rqi.entry_flag",
+ FT_UINT8, BASE_HEX, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_a11_rqi_entry_flag_flow_state,
+ { "Flow State", "a11.ext.rqi.entry_flag.flow_state",
+ FT_BOOLEAN, 8, TFS(&tfs_active_inactive), 0x01,
+ NULL, HFILL }
+ },
{ &hf_a11_rqi_flowstate,
{ "Flow State", "a11.ext.rqi.flowstate",
FT_UINT8, BASE_HEX, NULL, 0,
diff --git a/epan/dissectors/packet-9p.c b/epan/dissectors/packet-9p.c
index 32d8676acb..66e0b9f2f2 100644
--- a/epan/dissectors/packet-9p.c
+++ b/epan/dissectors/packet-9p.c
@@ -79,22 +79,6 @@ enum {
#define P9_OTRUNC 0x10
#define P9_ORCLOSE 0x40
-/* stat mode flags */
-#define DMDIR 0x80000000 /* Directory */
-#define DMAPPEND 0x40000000 /* Append only */
-#define DMEXCL 0x20000000 /* Exclusive use */
-#define DMMOUNT 0x10000000 /* Mounted channel */
-#define DMAUTH 0x08000000 /* Authentication */
-#define DMTMP 0x04000000 /* Temporary */
-
-#define QTDIR 0x80 /* Directory */
-#define QTAPPEND 0x40 /* Append only */
-#define QTEXCL 0x20 /* Exclusive use */
-#define QTMOUNT 0x10 /* Mounted channel */
-#define QTAUTH 0x08 /* Authentication */
-#define QTTMP 0x04 /* Temporary */
-#define QTFILE 0x00 /* plain file ?? */
-
/* Initialize the protocol and registered fields */
static int proto_9P = -1;
static int hf_9P_msgsz = -1;
@@ -114,8 +98,29 @@ static int hf_9P_count = -1;
static int hf_9P_offset = -1;
static int hf_9P_perm = -1;
static int hf_9P_qidtype = -1;
+static int hf_9P_qidtype_dir = -1;
+static int hf_9P_qidtype_append = -1;
+static int hf_9P_qidtype_exclusive = -1;
+static int hf_9P_qidtype_mount = -1;
+static int hf_9P_qidtype_auth_file = -1;
+static int hf_9P_qidtype_temp_file = -1;
static int hf_9P_qidvers = -1;
static int hf_9P_qidpath = -1;
+static int hf_9P_dm_dir = -1;
+static int hf_9P_dm_append = -1;
+static int hf_9P_dm_exclusive = -1;
+static int hf_9P_dm_mount = -1;
+static int hf_9P_dm_auth_file = -1;
+static int hf_9P_dm_temp_file = -1;
+static int hf_9P_dm_read_owner = -1;
+static int hf_9P_dm_write_owner = -1;
+static int hf_9P_dm_exec_owner = -1;
+static int hf_9P_dm_read_group = -1;
+static int hf_9P_dm_write_group = -1;
+static int hf_9P_dm_exec_group = -1;
+static int hf_9P_dm_read_others = -1;
+static int hf_9P_dm_write_others = -1;
+static int hf_9P_dm_exec_others = -1;
static int hf_9P_stattype = -1;
static int hf_9P_statmode = -1;
static int hf_9P_atime = -1;
@@ -606,18 +611,12 @@ static void dissect_9P_qid(tvbuff_t * tvb, proto_tree * tree,int offset)
qidtype_item = proto_tree_add_item(qid_tree, hf_9P_qidtype, tvb, offset, 1, ENC_LITTLE_ENDIAN);
qidtype_tree = proto_item_add_subtree(qidtype_item,ett_9P_qidtype);
- proto_tree_add_text(qidtype_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(type, QTDIR, 8, "Directory", "not a Directory"));
- proto_tree_add_text(qidtype_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(type, QTAPPEND, 8, "Append only", "not Append only"));
- proto_tree_add_text(qidtype_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(type, QTEXCL, 8, "Exclusive use", "not Exclusive use"));
- proto_tree_add_text(qidtype_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(type, QTMOUNT, 8, "Mounted channel", "not a Mounted channel"));
- proto_tree_add_text(qidtype_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(type, QTAUTH, 8, "Authentication file", "not an Authentication file"));
- proto_tree_add_text(qidtype_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(type, QTTMP, 8, "Temporary file (not backed up)", "not a Temporary file"));
+ proto_tree_add_item(qidtype_tree, hf_9P_qidtype_dir, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(qidtype_tree, hf_9P_qidtype_append, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(qidtype_tree, hf_9P_qidtype_exclusive, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(qidtype_tree, hf_9P_qidtype_mount, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(qidtype_tree, hf_9P_qidtype_auth_file, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(qidtype_tree, hf_9P_qidtype_temp_file, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(qid_tree, hf_9P_qidvers, tvb, offset+1, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(qid_tree, hf_9P_qidpath, tvb, offset+1+4, 8, ENC_LITTLE_ENDIAN);
@@ -635,39 +634,24 @@ static void dissect_9P_dm(tvbuff_t * tvb, proto_item * item,int offset,int iscr
if(!mode_tree)
return;
- proto_tree_add_text(mode_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(dm, DMDIR, 32, "Directory", "not a Directory"));
+ proto_tree_add_item(mode_tree, hf_9P_dm_dir, tvb, offset, 4, ENC_LITTLE_ENDIAN);
if(!iscreate) { /* Not applicable to Tcreate (?) */
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, DMAPPEND, 32, "Append only", "not Append only"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, DMEXCL, 32, "Exclusive use", "not Exclusive use"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, DMMOUNT, 32, "Mounted channel", "not a Mounted channel"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, DMAUTH, 32, "Authentication file", "not an Authentication file"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, DMTMP, 32, "Temporary file (not backed up)", "not a Temporary file"));
+ proto_tree_add_item(mode_tree, hf_9P_dm_append, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_exclusive, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_mount, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_auth_file, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_temp_file, tvb, offset, 4, ENC_LITTLE_ENDIAN);
}
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, 0400, 32, "Read permission for owner", "no Read permission for owner"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, 0200, 32, "Write permission for owner", "no Write permission for owner"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, 0100, 32, "Execute permission for owner", "no Execute permission for owner"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, 040, 32, "Read permission for group", "no Read permission for group"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, 020, 32, "Write permission for group", "no Write permission for group"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, 010, 32, "Execute permission for group", "no Execute permission for group"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, 04, 32, "Read permission for others", "no Read permission for others"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, 02, 32, "Write permission for others", "no Write permission for others"));
- proto_tree_add_text(mode_tree, tvb, offset, 4, "%s",
- decode_boolean_bitfield(dm, 01, 32, "Execute permission for others", "no Execute permission for others"));
+ proto_tree_add_item(mode_tree, hf_9P_dm_read_owner, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_write_owner, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_exec_owner, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_read_group, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_write_group, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_exec_group, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_read_others, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_write_others, tvb, offset, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(mode_tree, hf_9P_dm_exec_others, tvb, offset, 4, ENC_LITTLE_ENDIAN);
}
/* Register 9P with Wireshark */
@@ -725,12 +709,66 @@ void proto_register_9P(void)
{&hf_9P_qidpath,
{"Qid path", "9p.qidpath", FT_UINT64, BASE_DEC, NULL, 0x0,
NULL, HFILL}},
+ {&hf_9P_dm_dir,
+ {"Directory", "9p.dm.dir", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x80000000,
+ NULL, HFILL}},
+ {&hf_9P_dm_append,
+ {"Append only", "9p.dm.append", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x40000000,
+ NULL, HFILL}},
+ {&hf_9P_dm_exclusive,
+ {"Exclusive use", "9p.dm.exclusive", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x20000000,
+ NULL, HFILL}},
+ {&hf_9P_dm_mount,
+ {"Mounted channel", "9p.dm.mount", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x10000000,
+ NULL, HFILL}},
+ {&hf_9P_dm_auth_file,
+ {"Authentication file", "9p.dm.auth_file", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x08000000,
+ NULL, HFILL}},
+ {&hf_9P_dm_temp_file,
+ {"Temporary file (not backed up)", "9p.dm.temp_file", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x04000000,
+ NULL, HFILL}},
+ {&hf_9P_dm_read_owner,
+ {"Read permission for owner", "9p.dm.read_owner", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x00000400,
+ NULL, HFILL}},
+ {&hf_9P_dm_write_owner,
+ {"Write permission for owner", "9p.dm.write_owner", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x00000200,
+ NULL, HFILL}},
+ {&hf_9P_dm_exec_owner,
+ {"Execute permission for owner", "9p.dm.exec_owner", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x00000100,
+ NULL, HFILL}},
+ {&hf_9P_dm_read_others,
+ {"Read permission for others", "9p.dm.read_others", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x00000004,
+ NULL, HFILL}},
+ {&hf_9P_dm_write_others,
+ {"Write permission for others", "9p.dm.write_others", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x00000002,
+ NULL, HFILL}},
+ {&hf_9P_dm_exec_others,
+ {"Execute permission for others", "9p.dm.exec_others", FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x00000001,
+ NULL, HFILL}},
{&hf_9P_qidvers,
{"Qid version", "9p.qidvers", FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL}},
{&hf_9P_qidtype,
{"Qid type", "9p.qidtype", FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL}},
+ {&hf_9P_qidtype_dir,
+ {"Directory", "9p.qidtype.dir", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80,
+ NULL, HFILL}},
+ {&hf_9P_qidtype_append,
+ {"Append only", "9p.qidtype.append", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40,
+ NULL, HFILL}},
+ {&hf_9P_qidtype_exclusive,
+ {"Exclusive use", "9p.qidtype.exclusive", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20,
+ NULL, HFILL}},
+ {&hf_9P_qidtype_mount,
+ {"Mounted channel", "9p.qidtype.mount", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x10,
+ NULL, HFILL}},
+ {&hf_9P_qidtype_auth_file,
+ {"Authentication file", "9p.qidtype.auth_file", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x08,
+ NULL, HFILL}},
+ {&hf_9P_qidtype_temp_file,
+ {"Temporary file (not backed up)", "9p.qidtype.temp_file", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x04,
+ NULL, HFILL}},
{&hf_9P_statmode,
{"Mode", "9p.statmode", FT_UINT32, BASE_OCT, NULL, 0x0,
"File mode flags", HFILL}},
diff --git a/epan/dissectors/packet-atm.c b/epan/dissectors/packet-atm.c
index cbc4de477a..31dfde1682 100644
--- a/epan/dissectors/packet-atm.c
+++ b/epan/dissectors/packet-atm.c
@@ -49,6 +49,14 @@ static int proto_aal1 = -1;
static int proto_aal3_4 = -1;
static int proto_oamaal = -1;
+static int hf_atm_le_control_flag_v2_capable = -1;
+static int hf_atm_le_control_flag_selective_multicast = -1;
+static int hf_atm_le_control_flag_v2_required = -1;
+static int hf_atm_le_control_flag_proxy = -1;
+static int hf_atm_le_control_flag_exclude_explorer_frames = -1;
+static int hf_atm_le_control_flag_address = -1;
+static int hf_atm_le_control_topology_change = -1;
+
static gint ett_atm = -1;
static gint ett_atm_lane = -1;
static gint ett_atm_lane_lc_lan_dest = -1;
@@ -181,6 +189,8 @@ static const value_string le_control_frame_size_vals[] = {
{ 0, NULL }
};
+static const true_false_string tfs_remote_local = { "Remote", "Local" };
+
static void
dissect_le_client(tvbuff_t *tvb, proto_tree *tree)
{
@@ -554,34 +564,23 @@ dissect_le_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case LE_CONFIGURE_REQUEST:
case LE_CONFIGURE_RESPONSE:
- proto_tree_add_text(flags_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0002, 8*2,
- "V2 capable", "Not V2 capable"));
+ proto_tree_add_item(flags_tree, hf_atm_le_control_flag_v2_capable, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
dissect_le_configure_join_frame(tvb, offset, lane_tree);
break;
case LE_JOIN_REQUEST:
case LE_JOIN_RESPONSE:
- proto_tree_add_text(flags_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0002, 8*2,
- "V2 capable", "Not V2 capable"));
+ proto_tree_add_item(flags_tree, hf_atm_le_control_flag_v2_capable, tvb, offset, 2, ENC_BIG_ENDIAN);
if (opcode == LE_JOIN_REQUEST) {
- proto_tree_add_text(flags_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0004, 8*2,
- "Selective multicast", "No selective multicast"));
+ proto_tree_add_item(flags_tree, hf_atm_le_control_flag_selective_multicast, tvb, offset, 2, ENC_BIG_ENDIAN);
} else {
- proto_tree_add_text(flags_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0008, 8*2,
- "V2 required", "V2 not required"));
+ proto_tree_add_item(flags_tree, hf_atm_le_control_flag_v2_required, tvb, offset, 2, ENC_BIG_ENDIAN);
}
- proto_tree_add_text(flags_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0080, 8*2,
- "Proxy", "Not proxy"));
- proto_tree_add_text(flags_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0200, 8*2,
- "Exclude explorer frames",
- "Don't exclude explorer frames"));
+
+ proto_tree_add_item(flags_tree, hf_atm_le_control_flag_proxy, tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_atm_le_control_flag_exclude_explorer_frames, tvb, offset, 2, ENC_BIG_ENDIAN);
+
offset += 2;
dissect_le_configure_join_frame(tvb, offset, lane_tree);
break;
@@ -598,18 +597,14 @@ dissect_le_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case LE_ARP_RESPONSE:
case LE_NARP_REQUEST:
if (opcode != LE_NARP_REQUEST) {
- proto_tree_add_text(flags_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0001, 8*2,
- "Remote address", "Local address"));
+ proto_tree_add_item(flags_tree, hf_atm_le_control_flag_address, tvb, offset, 2, ENC_BIG_ENDIAN);
}
offset += 2;
dissect_le_arp_frame(tvb, offset, lane_tree);
break;
case LE_TOPOLOGY_REQUEST:
- proto_tree_add_text(flags_tree, tvb, offset, 2, "%s",
- decode_boolean_bitfield(flags, 0x0100, 8*2,
- "Topology change", "No topology change"));
+ proto_tree_add_item(flags_tree, hf_atm_le_control_topology_change, tvb, offset, 2, ENC_BIG_ENDIAN);
/* 92 reserved bytes */
break;
@@ -1946,7 +1941,29 @@ proto_register_atm(void)
{ "CID", "atm.cid", FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
+ { &hf_atm_le_control_flag_v2_capable,
+ { "V2 capable", "atm.le_control.flag.v2_capable", FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0002,
+ NULL, HFILL }},
+ { &hf_atm_le_control_flag_selective_multicast,
+ { "Selective multicast", "atm.le_control.flag.selective_multicast", FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0004,
+ NULL, HFILL }},
+ { &hf_atm_le_control_flag_v2_required,
+ { "V2 required", "atm.le_control.flag.v2_required", FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0008,
+ NULL, HFILL }},
+ { &hf_atm_le_control_flag_proxy,
+ { "Proxy", "atm.le_control.flag.flag_proxy", FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080,
+ NULL, HFILL }},
+ { &hf_atm_le_control_flag_exclude_explorer_frames,
+ { "Exclude explorer frames", "atm.le_control.flag.exclude_explorer_frames", FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0200,
+ NULL, HFILL }},
+ { &hf_atm_le_control_flag_address,
+ { "Address", "atm.le_control.flag.address", FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0001,
+ NULL, HFILL }},
+ { &hf_atm_le_control_topology_change,
+ { "Topology change", "atm.le_control.flag.topology_change", FT_BOOLEAN, 16, TFS(&tfs_remote_local), 0x0100,
+ NULL, HFILL }}
};
+
static gint *ett[] = {
&ett_atm,
&ett_ilmi,
diff --git a/epan/dissectors/packet-cast.c b/epan/dissectors/packet-cast.c
index b0053f898a..daa23b0b5a 100644
--- a/epan/dissectors/packet-cast.c
+++ b/epan/dissectors/packet-cast.c
@@ -371,6 +371,14 @@ static int hf_cast_originalCdpnRedirectReason = -1;
static int hf_cast_lastRedirectingReason = -1;
static int hf_cast_callInstance = -1;
static int hf_cast_callSecurityStatus = -1;
+static int hf_cast_partyPIRestrictionBits_CallingPartyName = -1;
+static int hf_cast_partyPIRestrictionBits_CallingPartyNumber = -1;
+static int hf_cast_partyPIRestrictionBits_CalledPartyName = -1;
+static int hf_cast_partyPIRestrictionBits_CalledPartyNumber = -1;
+static int hf_cast_partyPIRestrictionBits_OriginalCalledPartyName = -1;
+static int hf_cast_partyPIRestrictionBits_OriginalCalledPartyNumber = -1;
+static int hf_cast_partyPIRestrictionBits_LastRedirectPartyName = -1;
+static int hf_cast_partyPIRestrictionBits_LastRedirectPartyNumber = -1;
static int hf_cast_directoryNumber = -1;
static int hf_cast_requestorIpAddress = -1;
static int hf_cast_stationIpAddress = -1;
@@ -841,25 +849,16 @@ dissect_cast_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
i += 4;
proto_tree_add_item(cast_tree, hf_cast_callSecurityStatus, tvb, i, 4, ENC_LITTLE_ENDIAN);
i += 4;
- val = tvb_get_letohl( tvb, i);
ti_sub = proto_tree_add_text(cast_tree, tvb, offset, 8, "partyPIRestrictionBits");
cast_sub_tree = proto_item_add_subtree(ti_sub, ett_cast_tree);
- proto_tree_add_text(cast_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x01, 4*8, "Does RestrictCallingPartyName", "Doesn't RestrictCallingPartyName"));
- proto_tree_add_text(cast_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x02, 4*8, "Does RestrictCallingPartyNumber", "Doesn't RestrictCallingPartyNumber"));
- proto_tree_add_text(cast_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x04, 4*8, "Does RestrictCalledPartyName", "Doesn't RestrictCalledPartyName"));
- proto_tree_add_text(cast_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x08, 4*8, "Does RestrictCalledPartyNumber", "Doesn't RestrictCalledPartyNumber"));
- proto_tree_add_text(cast_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x10, 4*8, "Does RestrictOriginalCalledPartyName", "Doesn't RestrictOriginalCalledPartyName"));
- proto_tree_add_text(cast_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x20, 4*8, "Does RestrictOriginalCalledPartyNumber", "Doesn't RestrictOriginalCalledPartyNumber"));
- proto_tree_add_text(cast_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x40, 4*8, "Does RestrictLastRedirectPartyName", "Doesn't RestrictLastRedirectPartyName"));
- proto_tree_add_text(cast_sub_tree, tvb, i, 4, "%s",
- decode_boolean_bitfield( val, 0x80, 4*8, "Does RestrictLastRedirectPartyNumber", "Doesn't RestrictLastRedirectPartyNumber"));
+ proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_CallingPartyName, tvb, i, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_CallingPartyNumber, tvb, i, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_CalledPartyName, tvb, i, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_CalledPartyNumber, tvb, i, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_OriginalCalledPartyName, tvb, i, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_OriginalCalledPartyNumber, tvb, i, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_LastRedirectPartyName, tvb, i, 4, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(cast_sub_tree, hf_cast_partyPIRestrictionBits_LastRedirectPartyNumber, tvb, i, 4, ENC_LITTLE_ENDIAN);
break;
case 0x11 : /* RequestCallInfo */
@@ -1126,22 +1125,19 @@ proto_register_cast(void)
{ &hf_cast_ipAddress,
{ "IP Address", "cast.ipAddress",
FT_IPv4, BASE_NONE, NULL, 0x0,
- "An IP address",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_portNumber,
{ "Port Number", "cast.portNumber",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "A port number",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_passThruPartyID,
{ "PassThruPartyID", "cast.passThruPartyID",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "The pass thru party id",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_callIdentifier,
@@ -1154,15 +1150,13 @@ proto_register_cast(void)
{ &hf_cast_conferenceID,
{ "Conference ID", "cast.conferenceID",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "The conference ID",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_payloadType,
{ "PayloadType", "cast.payloadType",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "PayloadType.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_lineInstance,
@@ -1182,253 +1176,217 @@ proto_register_cast(void)
{ &hf_cast_isConferenceCreator,
{ "IsConferenceCreator", "cast.isConferenceCreator",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "IsConferenceCreator.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_payload_rfc_number,
{ "Payload_rfc_number", "cast.payload_rfc_number",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "Payload_rfc_number.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_videoCapCount,
{ "VideoCapCount", "cast.videoCapCount",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "VideoCapCount.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_dataCapCount,
{ "DataCapCount", "cast.dataCapCount",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "DataCapCount.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_RTPPayloadFormat,
{ "RTPPayloadFormat", "cast.RTPPayloadFormat",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "RTPPayloadFormat.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_customPictureFormatCount,
{ "CustomPictureFormatCount", "cast.customPictureFormatCount",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "CustomPictureFormatCount.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_pictureWidth,
{ "PictureWidth", "cast.pictureWidth",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "PictureWidth.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_pictureHeight,
{ "PictureHeight", "cast.pictureHeight",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "PictureHeight.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_pixelAspectRatio,
{ "PixelAspectRatio", "cast.pixelAspectRatio",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "PixelAspectRatio.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_clockConversionCode,
{ "ClockConversionCode", "cast.clockConversionCode",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "ClockConversionCode.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_clockDivisor,
{ "ClockDivisor", "cast.clockDivisor",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "Clock Divisor.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_activeStreamsOnRegistration,
{ "ActiveStreamsOnRegistration", "cast.activeStreamsOnRegistration",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "ActiveStreamsOnRegistration.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_maxBW,
{ "MaxBW", "cast.maxBW",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "MaxBW.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_serviceResourceCount,
{ "ServiceResourceCount", "cast.serviceResourceCount",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "ServiceResourceCount.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_layoutCount,
{ "LayoutCount", "cast.layoutCount",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "LayoutCount.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_layout,
{ "Layout", "cast.layout",
FT_UINT32, BASE_DEC, VALS(cast_Layouts), 0x0,
- NULL,
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_maxConferences,
{ "MaxConferences", "cast.maxConferences",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "MaxConferences.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_activeConferenceOnRegistration,
{ "ActiveConferenceOnRegistration", "cast.activeConferenceOnRegistration",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "ActiveConferenceOnRegistration.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_transmitOrReceive,
{ "TransmitOrReceive", "cast.transmitOrReceive",
FT_UINT32, BASE_DEC, VALS(cast_transmitOrReceive), 0x0,
- NULL,
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_levelPreferenceCount,
{ "LevelPreferenceCount", "cast.levelPreferenceCount",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "LevelPreferenceCount.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_transmitPreference,
{ "TransmitPreference", "cast.transmitPreference",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "TransmitPreference.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_format,
{ "Format", "cast.format",
FT_UINT32, BASE_DEC, VALS(cast_formatTypes), 0x0,
- "Format.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_maxBitRate,
{ "MaxBitRate", "cast.maxBitRate",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "MaxBitRate.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_minBitRate,
{ "MinBitRate", "cast.minBitRate",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "MinBitRate.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_MPI,
{ "MPI", "cast.MPI",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "MPI.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_serviceNumber,
{ "ServiceNumber", "cast.serviceNumber",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "ServiceNumber.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_temporalSpatialTradeOffCapability,
{ "TemporalSpatialTradeOffCapability", "cast.temporalSpatialTradeOffCapability",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "TemporalSpatialTradeOffCapability.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_stillImageTransmission,
{ "StillImageTransmission", "cast.stillImageTransmission",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "StillImageTransmission.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_h263_capability_bitfield,
{ "H263_capability_bitfield", "cast.h263_capability_bitfield",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "H263_capability_bitfield.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_annexNandWFutureUse,
{ "AnnexNandWFutureUse", "cast.annexNandWFutureUse",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "AnnexNandWFutureUse.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_modelNumber,
{ "ModelNumber", "cast.modelNumber",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "ModelNumber.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_bandwidth,
{ "Bandwidth", "cast.bandwidth",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "Bandwidth.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_protocolDependentData,
{ "ProtocolDependentData", "cast.protocolDependentData",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "ProtocolDependentData.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_DSCPValue,
{ "DSCPValue", "cast.DSCPValue",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "DSCPValue.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_serviceNum,
{ "ServiceNum", "cast.serviceNum",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "ServiceNum.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_precedenceValue,
{ "Precedence", "cast.precedenceValue",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "Precedence value",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_maxStreams,
@@ -1462,64 +1420,55 @@ proto_register_cast(void)
{ &hf_cast_pictureFormatCount,
{ "PictureFormatCount", "cast.pictureFormatCount",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "PictureFormatCount.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_confServiceNum,
{ "ConfServiceNum", "cast.confServiceNum",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "ConfServiceNum.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_miscCommandType,
{ "MiscCommandType", "cast.miscCommandType",
FT_UINT32, BASE_DEC, VALS(cast_miscCommandType), 0x0,
- NULL,
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_temporalSpatialTradeOff,
{ "TemporalSpatialTradeOff", "cast.temporalSpatialTradeOff",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "TemporalSpatialTradeOff.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_firstGOB,
{ "FirstGOB", "cast.firstGOB",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "FirstGOB.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_numberOfGOBs,
{ "NumberOfGOBs", "cast.numberOfGOBs",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "NumberOfGOBs.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_firstMB,
{ "FirstMB", "cast.firstMB",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "FirstMB.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_numberOfMBs,
{ "NumberOfMBs", "cast.numberOfMBs",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "NumberOfMBs.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_pictureNumber,
{ "PictureNumber", "cast.pictureNumber",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "PictureNumber.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_longTermPictureIndex,
@@ -1546,29 +1495,25 @@ proto_register_cast(void)
{ &hf_cast_privacy,
{ "Privacy", "cast.privacy",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "Privacy.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_precedenceLv,
{ "PrecedenceLv", "cast.precedenceLv",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "Precedence Level.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_precedenceDm,
{ "PrecedenceDm", "cast.precedenceDm",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "Precedence Domain.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_callState,
{ "CallState", "cast.callState",
FT_UINT32, BASE_DEC, VALS(cast_callStateTypes), 0x0,
- "CallState.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_callingPartyName,
@@ -1616,71 +1561,109 @@ proto_register_cast(void)
{ &hf_cast_lastRedirectingPartyName,
{ "LastRedirectingPartyName", "cast.lastRedirectingPartyName",
FT_STRING, BASE_NONE, NULL, 0x0,
- "LastRedirectingPartyName.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_lastRedirectingParty,
{ "LastRedirectingParty", "cast.lastRedirectingParty",
FT_STRING, BASE_NONE, NULL, 0x0,
- "LastRedirectingParty.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_cgpnVoiceMailbox,
{ "CgpnVoiceMailbox", "cast.cgpnVoiceMailbox",
FT_STRING, BASE_NONE, NULL, 0x0,
- "CgpnVoiceMailbox.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_cdpnVoiceMailbox,
{ "CdpnVoiceMailbox", "cast.cdpnVoiceMailbox",
FT_STRING, BASE_NONE, NULL, 0x0,
- "CdpnVoiceMailbox.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_originalCdpnVoiceMailbox,
{ "OriginalCdpnVoiceMailbox", "cast.originalCdpnVoiceMailbox",
FT_STRING, BASE_NONE, NULL, 0x0,
- "OriginalCdpnVoiceMailbox.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_lastRedirectingVoiceMailbox,
{ "LastRedirectingVoiceMailbox", "cast.lastRedirectingVoiceMailbox",
FT_STRING, BASE_NONE, NULL, 0x0,
- "LastRedirectingVoiceMailbox.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_originalCdpnRedirectReason,
{ "OriginalCdpnRedirectReason", "cast.originalCdpnRedirectReason",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "OriginalCdpnRedirectReason.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_lastRedirectingReason,
{ "LastRedirectingReason", "cast.lastRedirectingReason",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "LastRedirectingReason.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_callInstance,
{ "CallInstance", "cast.callInstance",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "CallInstance.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_callSecurityStatus,
{ "CallSecurityStatus", "cast.callSecurityStatus",
FT_UINT32, BASE_DEC, VALS(cast_callSecurityStatusTypes), 0x0,
- "CallSecurityStatus.",
- HFILL }
+ NULL, HFILL }
+ },
+
+ { &hf_cast_partyPIRestrictionBits_CallingPartyName,
+ { "RestrictCallingPartyName", "cast.partyPIRestrictionBits.CallingPartyName",
+ FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x01,
+ NULL, HFILL }
+ },
+
+ { &hf_cast_partyPIRestrictionBits_CallingPartyNumber,
+ { "RestrictCallingPartyNumber", "cast.partyPIRestrictionBits.CallingPartyNumber",
+ FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x02,
+ NULL, HFILL }
+ },
+
+ { &hf_cast_partyPIRestrictionBits_CalledPartyName,
+ { "RestrictCalledPartyName", "cast.partyPIRestrictionBits.CalledPartyName",
+ FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x04,
+ NULL, HFILL }
+ },
+
+ { &hf_cast_partyPIRestrictionBits_CalledPartyNumber,
+ { "RestrictCalledPartyNumber", "cast.partyPIRestrictionBits.CalledPartyNumber",
+ FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x08,
+ NULL, HFILL }
+ },
+
+ { &hf_cast_partyPIRestrictionBits_OriginalCalledPartyName,
+ { "RestrictOriginalCalledPartyName", "cast.partyPIRestrictionBits.OriginalCalledPartyName",
+ FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x10,
+ NULL, HFILL }
+ },
+
+ { &hf_cast_partyPIRestrictionBits_OriginalCalledPartyNumber,
+ { "RestrictOriginalCalledPartyNumber", "cast.partyPIRestrictionBits.OriginalCalledPartyNumber",
+ FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x20,
+ NULL, HFILL }
+ },
+
+ { &hf_cast_partyPIRestrictionBits_LastRedirectPartyName,
+ { "RestrictLastRedirectPartyName", "cast.partyPIRestrictionBits.LastRedirectPartyName",
+ FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x40,
+ NULL, HFILL }
+ },
+
+ { &hf_cast_partyPIRestrictionBits_LastRedirectPartyNumber,
+ { "RestrictLastRedirectPartyNumber", "cast.partyPIRestrictionBits.LastRedirectPartyNumber",
+ FT_BOOLEAN, 32, TFS(&tfs_yes_no), 0x80,
+ NULL, HFILL }
},
{ &hf_cast_directoryNumber,
@@ -1693,29 +1676,25 @@ proto_register_cast(void)
{ &hf_cast_requestorIpAddress,
{ "RequestorIpAddress", "cast.requestorIpAddress",
FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_stationIpAddress,
{ "StationIpAddress", "cast.stationIpAddress",
FT_IPv4, BASE_NONE, NULL, 0x0,
- NULL,
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_stationFriendlyName,
{ "StationFriendlyName", "cast.stationFriendlyName",
FT_STRING, BASE_NONE, NULL, 0x0,
- "StationFriendlyName.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_stationGUID,
{ "stationGUID", "cast.stationGUID",
FT_STRING, BASE_NONE, NULL, 0x0,
- "stationGUID.",
- HFILL }
+ NULL, HFILL }
},
{ &hf_cast_audio,
@@ -1728,8 +1707,7 @@ proto_register_cast(void)
{ &hf_cast_bitRate,
{ "BitRate", "cast.bitRate",
FT_UINT32, BASE_DEC, NULL, 0x0,
- "BitRate.",
- HFILL }
+ NULL, HFILL }
},
};
diff --git a/epan/dissectors/packet-clnp.c b/epan/dissectors/packet-clnp.c
index 800037e118..d6131d2e2a 100644
--- a/epan/dissectors/packet-clnp.c
+++ b/epan/dissectors/packet-clnp.c
@@ -52,6 +52,10 @@ static int hf_clnp_length = -1;
static int hf_clnp_version = -1;
static int hf_clnp_ttl = -1;
static int hf_clnp_type = -1;
+static int hf_clnp_cnf_segmentation = -1;
+static int hf_clnp_cnf_more_segments = -1;
+static int hf_clnp_cnf_report_error = -1;
+static int hf_clnp_cnf_type = -1;
static int hf_clnp_pdu_length = -1;
static int hf_clnp_checksum = -1;
static int hf_clnp_dest_length = -1;
@@ -281,21 +285,10 @@ dissect_clnp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
flag_string,
pdu_type_string);
type_tree = proto_item_add_subtree(ti, ett_clnp_type);
- proto_tree_add_text(type_tree, tvb, P_CLNP_TYPE, 1, "%s",
- decode_boolean_bitfield(cnf_type, CNF_SEG_OK, 8,
- "Segmentation permitted",
- "Segmentation not permitted"));
- proto_tree_add_text(type_tree, tvb, P_CLNP_TYPE, 1, "%s",
- decode_boolean_bitfield(cnf_type, CNF_MORE_SEGS, 8,
- "More segments",
- "Last segment"));
- proto_tree_add_text(type_tree, tvb, P_CLNP_TYPE, 1, "%s",
- decode_boolean_bitfield(cnf_type, CNF_ERR_OK, 8,
- "Report error if PDU discarded",
- "Don't report error if PDU discarded"));
- proto_tree_add_text(type_tree, tvb, P_CLNP_TYPE, 1, "%s",
- decode_enumerated_bitfield(cnf_type, CNF_TYPE, 8,
- npdu_type_vals, "%s"));
+ proto_tree_add_item(type_tree, hf_clnp_cnf_segmentation, tvb, P_CLNP_TYPE, 1, ENC_NA);
+ proto_tree_add_item(type_tree, hf_clnp_cnf_more_segments, tvb, P_CLNP_TYPE, 1, ENC_NA);
+ proto_tree_add_item(type_tree, hf_clnp_cnf_report_error, tvb, P_CLNP_TYPE, 1, ENC_NA);
+ proto_tree_add_item(type_tree, hf_clnp_cnf_type, tvb, P_CLNP_TYPE, 1, ENC_NA);
}
/* If we don't have the full header - i.e., not enough to see the
@@ -572,6 +565,18 @@ proto_register_clnp(void)
{ &hf_clnp_type,
{ "PDU Type", "clnp.type", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_clnp_cnf_segmentation,
+ { "Segmentation permitted", "clnp.cnf.segmentation", FT_BOOLEAN, 8, TFS(&tfs_yes_no), CNF_SEG_OK, NULL, HFILL }},
+
+ { &hf_clnp_cnf_more_segments,
+ { "More segments", "clnp.cnf.more_segments", FT_BOOLEAN, 8, TFS(&tfs_yes_no), CNF_MORE_SEGS, NULL, HFILL }},
+
+ { &hf_clnp_cnf_report_error,
+ { "Report error if PDU discarded", "clnp.cnf.report_error", FT_BOOLEAN, 8, TFS(&tfs_yes_no), CNF_ERR_OK, NULL, HFILL }},
+
+ { &hf_clnp_cnf_type,
+ { "Type", "clnp.cnf.type", FT_UINT8, BASE_DEC, VALS(npdu_type_vals), CNF_TYPE, NULL, HFILL }},
+
{ &hf_clnp_pdu_length,
{ "PDU length", "clnp.pdu.len", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
diff --git a/epan/dissectors/packet-cops.c b/epan/dissectors/packet-cops.c
index c915d02ffb..80586d97af 100644
--- a/epan/dissectors/packet-cops.c
+++ b/epan/dissectors/packet-cops.c
@@ -669,6 +669,8 @@ static gint hf_cops_pc_dfccc_id = -1;
static gint hf_cops_pcmm_amid_app_type = -1;
static gint hf_cops_pcmm_amid_am_tag = -1;
static gint hf_cops_pcmm_gate_spec_flags = -1;
+static gint hf_cops_pcmm_gate_spec_flags_gate = -1;
+static gint hf_cops_pcmm_gate_spec_flags_dscp_overwrite = -1;
static gint hf_cops_pcmm_gate_spec_dscp_tos_field = -1;
static gint hf_cops_pcmm_gate_spec_dscp_tos_mask = -1;
static gint hf_cops_pcmm_gate_spec_session_class_id = -1;
@@ -843,6 +845,8 @@ struct _COPS_CNV
int* hfidp;
};
+static const true_false_string tfs_upstream_downstream = { "Upstream", "Downstream" };
+
static COPS_CNV CopsCnv [] =
{
{BER_CLASS_UNI, BER_UNI_TAG_NULL, COPS_NULL, "NULL" , &hf_cops_epd_null},
@@ -2094,6 +2098,19 @@ void proto_register_cops(void)
FT_UINT8, BASE_HEX, NULL, 0,
"PacketCable Multimedia GateSpec Flags", HFILL }
},
+
+ { &hf_cops_pcmm_gate_spec_flags_gate,
+ { "Gate", "cops.pc_mm_gs_flags.gate",
+ FT_BOOLEAN, 8, TFS(&tfs_upstream_downstream), 0x1,
+ NULL, HFILL }
+ },
+
+ { &hf_cops_pcmm_gate_spec_flags_dscp_overwrite,
+ { "DSCP/TOS overwrite", "cops.pc_mm_gs_flags.dscp_overwrite",
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x2,
+ NULL, HFILL }
+ },
+
{ &hf_cops_pcmm_gate_spec_dscp_tos_field,
{ "DSCP/TOS Field", "cops.pc_mm_gs_dscp",
FT_UINT8, BASE_HEX, NULL, 0,
@@ -3208,12 +3225,8 @@ cops_mm_gate_spec(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
gs_flags = tvb_get_guint8(tvb, offset);
ti = info_to_display(tvb,stt,offset,1,"Flags",NULL,FMT_HEX,&hf_cops_pcmm_gate_spec_flags);
object_tree = proto_item_add_subtree(ti, ett_cops_subtree );
- proto_tree_add_text(object_tree, tvb, offset, 1, "%s gate",
- decode_boolean_bitfield(gs_flags, 1 << 0, 8,
- "Upstream", "Downstream"));
- proto_tree_add_text(object_tree, tvb, offset, 1, "%s DSCP/TOS overwrite",
- decode_boolean_bitfield(gs_flags, 1 << 1, 8,
- "Enable", "Disable"));
+ proto_tree_add_item(object_tree, hf_cops_pcmm_gate_spec_flags_gate, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(object_tree, hf_cops_pcmm_gate_spec_flags_dscp_overwrite, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
/* DiffServ Code Point */
diff --git a/epan/dissectors/packet-dlsw.c b/epan/dissectors/packet-dlsw.c
index 4aa81bf5b4..86022a0259 100644
--- a/epan/dissectors/packet-dlsw.c
+++ b/epan/dissectors/packet-dlsw.c
@@ -32,6 +32,9 @@
#include "packet-tcp.h"
static int proto_dlsw = -1;
+static int hf_dlsw_flow_control_indication = -1;
+static int hf_dlsw_flow_control_ack = -1;
+static int hf_dlsw_flow_control_operator = -1;
static gint ett_dlsw = -1;
static gint ett_dlsw_header = -1;
@@ -261,20 +264,11 @@ dissect_dlsw_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
flags = tvb_get_guint8(tvb,15);
ti2 = proto_tree_add_text (dlsw_header_tree, tvb, 15,1,"Flow ctrl byte = 0x%02x",flags);
dlsw_flags_tree = proto_item_add_subtree(ti2, ett_dlsw_fc);
- proto_tree_add_text (dlsw_flags_tree, tvb, 15, 1, "%s",
- decode_boolean_bitfield(flags, 0x80, 8,
- "Flow Control Indication: yes",
- "Flow Control Indication: no"));
+ proto_tree_add_item(dlsw_flags_tree, hf_dlsw_flow_control_indication, tvb, 15, 1, ENC_BIG_ENDIAN);
if (flags & 0x80)
{
- proto_tree_add_text (dlsw_flags_tree, tvb, 15, 1, "%s",
- decode_boolean_bitfield(flags, 0x40, 8,
- "Flow Control Acknowledgment: yes",
- "Flow Control Acknowledgment: no"));
- proto_tree_add_text (dlsw_flags_tree, tvb, 15, 1, "%s",
- decode_enumerated_bitfield(flags, 0x07, 8,
- dlsw_fc_cmd_vals,
- "Flow Control Operator: %s"));
+ proto_tree_add_item(dlsw_flags_tree, hf_dlsw_flow_control_ack, tvb, 15, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(dlsw_flags_tree, hf_dlsw_flow_control_operator, tvb, 15, 1, ENC_BIG_ENDIAN);
}
}
if (hlen != DLSW_INFO_HEADER)
@@ -521,6 +515,18 @@ dissect_dlsw_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
void
proto_register_dlsw(void)
{
+ static hf_register_info hf[] = {
+ {&hf_dlsw_flow_control_indication,
+ {"Flow Control Indication", "dlsw.flow_control_indication", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80,
+ NULL, HFILL}},
+ {&hf_dlsw_flow_control_ack,
+ {"Flow Control Acknowledgment", "dlsw.flow_control_ack", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40,
+ NULL, HFILL}},
+ {&hf_dlsw_flow_control_operator,
+ {"Flow Control Operator", "dlsw.flow_control_operator", FT_UINT8, BASE_DEC, VALS(dlsw_fc_cmd_vals), 0x07,
+ NULL, HFILL}},
+ };
+
static gint *ett[] = {
&ett_dlsw,
&ett_dlsw_header,
@@ -531,7 +537,7 @@ proto_register_dlsw(void)
};
proto_dlsw = proto_register_protocol("Data Link SWitching", "DLSw", "dlsw");
-/* proto_register_field_array(proto_dlsw, hf, array_length(hf)); */
+ proto_register_field_array(proto_dlsw, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
diff --git a/epan/dissectors/packet-q2931.c b/epan/dissectors/packet-q2931.c
index 680a60869c..d26f358fa2 100644
--- a/epan/dissectors/packet-q2931.c
+++ b/epan/dissectors/packet-q2931.c
@@ -53,6 +53,7 @@ static int hf_q2931_message_type_ext = -1;
static int hf_q2931_message_flag = -1;
static int hf_q2931_message_action_indicator = -1;
static int hf_q2931_message_len = -1;
+static int hf_q2931_ie_handling_instructions = -1;
static gint ett_q2931 = -1;
static gint ett_q2931_ext = -1;
@@ -248,6 +249,9 @@ static const value_string q2931_codeset_vals[] = {
{ 0x00, NULL },
};
+static const true_false_string tfs_q2931_handling_instructions = { "Follow explicit error handling instructions",
+ "Regular error handling procedures apply" };
+
static void
dissect_q2931_shift_ie(tvbuff_t *tvb, int offset, int len,
proto_tree *tree, guint8 info_element)
@@ -1990,11 +1994,7 @@ dissect_q2931_ie(tvbuff_t *tvb, int offset, int len, proto_tree *tree,
decode_enumerated_bitfield(info_element_ext,
Q2931_IE_COMPAT_CODING_STD, 8,
coding_std_vals, "Coding standard: %s"));
- proto_tree_add_text(ie_ext_tree, tvb, offset + 1, 1, "%s",
- decode_boolean_bitfield(info_element_ext,
- Q2931_IE_COMPAT_FOLLOW_INST, 8,
- "Follow explicit error handling instructions",
- "Regular error handling procedures apply"));
+ proto_tree_add_item(ie_ext_tree, hf_q2931_ie_handling_instructions, tvb, offset+1, 1, ENC_BIG_ENDIAN);
if (info_element_ext & Q2931_IE_COMPAT_FOLLOW_INST) {
proto_tree_add_text(ie_ext_tree, tvb, offset + 1, 1, "%s",
decode_enumerated_bitfield(info_element_ext,
@@ -2173,6 +2173,10 @@ proto_register_q2931(void)
{ "Message length", "q2931.message_len", FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
+ { &hf_q2931_ie_handling_instructions,
+ { "Handling Instructions", "q2931.ie_handling_instructions", FT_BOOLEAN, 8, TFS(&tfs_q2931_handling_instructions), Q2931_IE_COMPAT_FOLLOW_INST,
+ NULL, HFILL }},
+
};
static gint *ett[] = {
&ett_q2931,
diff --git a/epan/dissectors/packet-vines.c b/epan/dissectors/packet-vines.c
index 47f7a8d7f5..366b8318f5 100644
--- a/epan/dissectors/packet-vines.c
+++ b/epan/dissectors/packet-vines.c
@@ -109,6 +109,13 @@ static int proto_vines_ip = -1;
static int hf_vines_ip_protocol = -1;
static int hf_vines_ip_checksum = -1;
static int hf_vines_ip_length = -1;
+static int hf_vines_tctl = -1;
+static int hf_vines_tctl_node = -1;
+static int hf_vines_tctl_class = -1;
+static int hf_vines_tctl_forward_router = -1;
+static int hf_vines_tctl_metric = -1;
+static int hf_vines_tctl_notif_packet = -1;
+static int hf_vines_tctl_hop_count = -1;
static gint ett_vines_ip = -1;
static gint ett_vines_ip_tctl = -1;
@@ -118,11 +125,32 @@ static int proto_vines_echo = -1;
static gint ett_vines_echo = -1;
static int proto_vines_ipc = -1;
+static int hf_vines_ipc_src_port = -1;
+static int hf_vines_ipc_dest_port = -1;
+static int hf_vines_ipc_packet_type = -1;
+static int hf_vines_ipc_control = -1;
+static int hf_vines_ipc_control_ack = -1;
+static int hf_vines_ipc_control_end_msg = -1;
+static int hf_vines_ipc_control_beg_msg = -1;
+static int hf_vines_ipc_control_abort_msg = -1;
static gint ett_vines_ipc = -1;
static gint ett_vines_ipc_control = -1;
static int proto_vines_spp = -1;
+static int hf_vines_spp_src_port = -1;
+static int hf_vines_spp_dest_port = -1;
+static int hf_vines_spp_packet_type = -1;
+static int hf_vines_spp_control = -1;
+static int hf_vines_spp_control_ack = -1;
+static int hf_vines_spp_control_end_msg = -1;
+static int hf_vines_spp_control_beg_msg = -1;
+static int hf_vines_spp_control_abort_msg = -1;
+static int hf_vines_spp_local_id = -1;
+static int hf_vines_spp_remote_id = -1;
+static int hf_vines_spp_seq_num = -1;
+static int hf_vines_spp_ack_num = -1;
+static int hf_vines_spp_window = -1;
static gint ett_vines_spp = -1;
static gint ett_vines_spp_control = -1;
@@ -132,6 +160,23 @@ static int proto_vines_arp = -1;
static gint ett_vines_arp = -1;
static int proto_vines_rtp = -1;
+static int hf_vines_rtp_comp_flag = -1;
+static int hf_vines_rtp_comp_flag_neighbor_router = -1;
+static int hf_vines_rtp_comp_flag_sequence_rtp = -1;
+static int hf_vines_rtp_comp_flag_sequence_rtp_version = -1;
+static int hf_vines_rtp_control = -1;
+static int hf_vines_rtp_control_sync_broadcast = -1;
+static int hf_vines_rtp_control_topology_update = -1;
+static int hf_vines_rtp_control_specific_request = -1;
+static int hf_vines_rtp_control_end_msg = -1;
+static int hf_vines_rtp_control_beg_msg = -1;
+static int hf_vines_rtp_machine_rtp = -1;
+static int hf_vines_rtp_machine_tcpip = -1;
+static int hf_vines_rtp_machine_bus = -1;
+static int hf_vines_rtp_flag_sequence_rtp = -1;
+static int hf_vines_rtp_flag_network_p2p = -1;
+static int hf_vines_rtp_flag_data_link_p2p = -1;
+static int hf_vines_rtp_flag_broadcast_medium = -1;
static gint ett_vines_rtp = -1;
static gint ett_vines_rtp_compatibility_flags = -1;
@@ -154,15 +199,6 @@ enum {
VIP_PROTO_ICP = 6 /* Internet Control Protocol (ICP) */
};
-typedef struct _e_vip {
- guint16 vip_chksum;
- guint16 vip_pktlen;
- guint8 vip_tctl; /* Transport Control */
- guint8 vip_proto;
- guint8 vip_dst[VINES_ADDR_LEN];
- guint8 vip_src[VINES_ADDR_LEN];
-} e_vip;
-
/* VINES SPP and IPC structs and definitions */
enum {
@@ -373,10 +409,10 @@ proto_reg_handoff_vines_llc(void)
static dissector_table_t vines_ip_dissector_table;
static const value_string class_vals[] = {
- { 0x00, "Reachable regardless of cost" },
- { 0x10, "Reachable without cost" },
- { 0x20, "Reachable with low cost (>= 4800 bps)" },
- { 0x30, "Reachable via LAN" },
+ { 0x00, "Regardless of cost" },
+ { 0x10, "Without cost" },
+ { 0x20, "With low cost (>= 4800 bps)" },
+ { 0x30, "Via LAN" },
{ 0, NULL }
};
@@ -393,11 +429,18 @@ static const guint8 bcast_addr[VINES_ADDR_LEN] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
+static const true_false_string tfs_vine_tctl_router_all = { "Router nodes", "All nodes" };
+static const true_false_string tfs_vine_tctl_forward_router = { "Can handle redirect packets", "Cannot handle redirect packets" };
+static const true_false_string tfs_vine_tctl_return_not_return = { "Return", "Do not return" };
+
static void
dissect_vines_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
int offset = 0;
- e_vip viph;
+ guint16 vip_chksum;
+ guint16 vip_pktlen;
+ guint8 vip_tctl; /* Transport Control */
+ guint8 vip_proto;
proto_tree *vip_tree, *tctl_tree;
proto_item *ti;
const guint8 *dst_addr, *src_addr;
@@ -409,17 +452,16 @@ dissect_vines_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* To do: check for runts, errs, etc. */
- /* Avoids alignment problems on many architectures. */
- tvb_memcpy(tvb, (guint8 *)&viph, offset, sizeof(e_vip));
-
- viph.vip_chksum = g_ntohs(viph.vip_chksum);
- viph.vip_pktlen = g_ntohs(viph.vip_pktlen);
+ /* capture the necessary parts of the header */
+ vip_chksum = tvb_get_letohs(tvb, offset);
+ vip_pktlen = tvb_get_letohs(tvb, offset+2);
+ vip_tctl = tvb_get_guint8(tvb, offset+3);
+ vip_proto = tvb_get_guint8(tvb, offset+4);
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO, "%s (0x%02x)",
- val_to_str_const(viph.vip_proto, proto_vals,
- "Unknown VIP protocol"),
- viph.vip_proto);
+ val_to_str_const(vip_tctl, proto_vals, "Unknown VIP protocol"),
+ vip_tctl);
}
src_addr = tvb_get_ptr(tvb, offset+12, VINES_ADDR_LEN);
@@ -430,19 +472,18 @@ dissect_vines_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
SET_ADDRESS(&pinfo->dst, AT_VINES, VINES_ADDR_LEN, dst_addr);
/* helpers to transport control */
- if (memcmp(viph.vip_dst, bcast_addr, VINES_ADDR_LEN) == 0)
+ if (memcmp(dst_addr, bcast_addr, VINES_ADDR_LEN) == 0)
is_broadcast = TRUE;
/*
* Adjust the length of this tvbuff to include only the Vines IP
* datagram.
*/
- set_actual_length(tvb, viph.vip_pktlen < 18 ? 18 : viph.vip_pktlen);
+ set_actual_length(tvb, vip_pktlen < 18 ? 18 : vip_pktlen);
if (tree) {
ti = proto_tree_add_item(tree, proto_vines_ip, tvb,
- offset, viph.vip_pktlen,
- ENC_NA);
+ offset, vip_pktlen, ENC_NA);
vip_tree = proto_item_add_subtree(ti, ett_vines_ip);
proto_tree_add_item(vip_tree, hf_vines_ip_checksum,
tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -452,38 +493,29 @@ dissect_vines_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- ti = proto_tree_add_text(vip_tree, tvb, offset, 1,
- "Transport control: 0x%02x",
- viph.vip_tctl);
+ ti = proto_tree_add_item(vip_tree, hf_vines_tctl,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+
tctl_tree = proto_item_add_subtree(ti, ett_vines_ip_tctl);
/*
* XXX - bit 0x80 is "Normal" if 0; what is it if 1?
*/
if (is_broadcast) {
- proto_tree_add_text(tctl_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(viph.vip_tctl, 0x40, 1*8,
- "Router nodes",
- "All nodes"));
- proto_tree_add_text(tctl_tree, tvb, offset, 1, "%s",
- decode_enumerated_bitfield(viph.vip_tctl, 0x30, 1*8,
- class_vals, "%s"));
+ proto_tree_add_item(tctl_tree, hf_vines_tctl_node,
+ tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(tctl_tree, hf_vines_tctl_class,
+ tvb, offset, 1, ENC_NA);
} else {
- proto_tree_add_text(tctl_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(viph.vip_tctl, 0x40, 1*8,
- "Forwarding router can handle redirect packets",
- "Forwarding router cannot handle redirect packets"));
- proto_tree_add_text(tctl_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(viph.vip_tctl, 0x20, 1*8,
- "Return metric notification packet",
- "Do not return metric notification packet"));
- proto_tree_add_text(tctl_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(viph.vip_tctl, 0x10, 1*8,
- "Return exception notification packet",
- "Do not return exception notification packet"));
+ proto_tree_add_item(tctl_tree, hf_vines_tctl_forward_router,
+ tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(tctl_tree, hf_vines_tctl_metric,
+ tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(tctl_tree, hf_vines_tctl_notif_packet,
+ tvb, offset, 1, ENC_NA);
}
- proto_tree_add_text(tctl_tree, tvb, offset, 1, "%s",
- decode_numeric_bitfield(viph.vip_tctl, 0x0F, 1*8,
- "Hop count remaining = %u"));
+
+ proto_tree_add_item(tctl_tree, hf_vines_tctl_hop_count,
+ tvb, offset, 1, ENC_NA);
offset += 1;
proto_tree_add_item(vip_tree, hf_vines_ip_protocol, tvb,
@@ -505,7 +537,7 @@ dissect_vines_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset += 18;
}
next_tvb = tvb_new_subset_remaining(tvb, offset);
- if (!dissector_try_uint(vines_ip_dissector_table, viph.vip_proto,
+ if (!dissector_try_uint(vines_ip_dissector_table, vip_proto,
next_tvb, pinfo, tree))
call_dissector(data_handle, next_tvb, pinfo, tree);
}
@@ -534,6 +566,40 @@ proto_register_vines_ip(void)
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }},
+ { &hf_vines_tctl,
+ { "Transport control", "vines_ip.tctl",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_tctl_node,
+ { "Nodes", "vines_ip.tctl.node",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_tctl_router_all), 0x40,
+ NULL, HFILL }},
+
+ { &hf_vines_tctl_class,
+ { "Reachable", "vines_ip.tctl.class",
+ FT_UINT8, BASE_DEC, VALS(class_vals), 0x30,
+ NULL, HFILL }},
+
+ { &hf_vines_tctl_forward_router,
+ { "Forwarding Router", "vines_ip.tctl.forward_router",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_tctl_forward_router), 0x40,
+ NULL, HFILL }},
+
+ { &hf_vines_tctl_metric,
+ { "Metric notification packet", "vines_ip.tctl.metric",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_tctl_return_not_return), 0x20,
+ NULL, HFILL }},
+
+ { &hf_vines_tctl_notif_packet,
+ { "Exception notification packet", "vines_ip.tctl.notif_packet",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_tctl_return_not_return), 0x10,
+ NULL, HFILL }},
+
+ { &hf_vines_tctl_hop_count,
+ { "Hop count remaining", "vines_ip.tctl.hop_count",
+ FT_UINT8, BASE_DEC, NULL, 0x0F,
+ NULL, HFILL }},
};
proto_vines_ip = proto_register_protocol("Banyan Vines IP", "Vines IP",
@@ -633,6 +699,9 @@ static const value_string vipc_err_vals[] = {
{ 0, NULL }
};
+static const true_false_string tfs_vine_ipc_send_not_send = { "Send", "Do not Send" };
+static const true_false_string tfs_vine_ipc_abort_not_abort = { "Abort", "Do not abort" };
+
static void
dissect_vines_ipc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
@@ -695,59 +764,35 @@ dissect_vines_ipc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
- if (tree) {
- ti = proto_tree_add_item(tree, proto_vines_ipc, tvb, offset,
- sizeof(viph), ENC_NA);
- vipc_tree = proto_item_add_subtree(ti, ett_vines_ipc);
- proto_tree_add_text(vipc_tree, tvb, offset, 2,
- "Source port: 0x%04x", viph.vipc_sport);
- }
+ ti = proto_tree_add_item(tree, proto_vines_ipc, tvb, offset,
+ sizeof(viph), ENC_NA);
+ vipc_tree = proto_item_add_subtree(ti, ett_vines_ipc);
+
+ proto_tree_add_item(vipc_tree, hf_vines_ipc_src_port,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- if (tree) {
- proto_tree_add_text(vipc_tree, tvb, offset, 2,
- "Destination port: 0x%04x",
- viph.vipc_dport);
- }
+ proto_tree_add_item(vipc_tree, hf_vines_ipc_dest_port,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- if (tree) {
- proto_tree_add_text(vipc_tree, tvb, offset, 1,
- "Packet type: 0x%02x (%s)",
- viph.vipc_pkttype,
- val_to_str_const(viph.vipc_pkttype, pkttype_vals,
- "Unknown"));
- }
+ proto_tree_add_item(vipc_tree, hf_vines_ipc_packet_type,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
if (viph.vipc_pkttype != PKTTYPE_DGRAM) {
- if (tree) {
- ti = proto_tree_add_text(vipc_tree, tvb, offset, 1,
- "Control: 0x%02x",
- viph.vipc_control);
- control_tree = proto_item_add_subtree(ti,
- ett_vines_ipc_control);
- /*
- * XXX - do reassembly based on BOM/EOM bits.
- */
- proto_tree_add_text(control_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(viph.vipc_control, 0x80,
- 1*8,
- "Send immediate acknowledgment",
- "Do not send immediate acknowledgement"));
- proto_tree_add_text(control_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(viph.vipc_control, 0x40,
- 1*8,
- "End of message",
- "Not end of message"));
- proto_tree_add_text(control_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(viph.vipc_control, 0x20,
- 1*8,
- "Beginning of message",
- "Not beginning of message"));
- proto_tree_add_text(control_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(viph.vipc_control, 0x10,
- 1*8,
- "Abort current message",
- "Do not abort current message"));
- }
+ ti = proto_tree_add_item(vipc_tree, hf_vines_ipc_control,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+
+ control_tree = proto_item_add_subtree(ti, ett_vines_ipc_control);
+ /*
+ * XXX - do reassembly based on BOM/EOM bits.
+ */
+ proto_tree_add_item(control_tree, hf_vines_ipc_control_ack,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(control_tree, hf_vines_ipc_control_end_msg,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(control_tree, hf_vines_ipc_control_beg_msg,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(control_tree, hf_vines_ipc_control_abort_msg,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
}
offset += 1;
if (viph.vipc_pkttype != PKTTYPE_DGRAM) {
@@ -806,6 +851,48 @@ dissect_vines_ipc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void
proto_register_vines_ipc(void)
{
+ static hf_register_info hf[] = {
+ { &hf_vines_ipc_src_port,
+ { "Source port", "vines_ipc.src_port",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_ipc_dest_port,
+ { "Destination port", "vines_ipc.dest_port",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_ipc_packet_type,
+ { "Packet type", "vines_ipc.packet_type",
+ FT_UINT8, BASE_HEX, VALS(pkttype_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_ipc_control,
+ { "Control", "vines_ipc.control",
+ FT_UINT8, BASE_HEX, VALS(pkttype_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_ipc_control_ack,
+ { "Immediate acknowledgment", "vines_ipc.control.ack",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_ipc_send_not_send), 0x80,
+ NULL, HFILL }},
+
+ { &hf_vines_ipc_control_end_msg,
+ { "End of message", "vines_ipc.control.end_msg",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40,
+ NULL, HFILL }},
+
+ { &hf_vines_ipc_control_beg_msg,
+ { "Beginning of message", "vines_ipc.control.beg_msg",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20,
+ NULL, HFILL }},
+
+ { &hf_vines_ipc_control_abort_msg,
+ { "Current message", "vines_ipc.control.abort_msg",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_ipc_abort_not_abort), 0x10,
+ NULL, HFILL }}
+ };
+
static gint *ett[] = {
&ett_vines_ipc,
&ett_vines_ipc_control,
@@ -813,6 +900,7 @@ proto_register_vines_ipc(void)
proto_vines_ipc = proto_register_protocol("Banyan Vines IPC",
"Vines IPC", "vines_ipc");
+ proto_register_field_array(proto_vines_ipc, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
register_heur_dissector_list("vines_ipc",
@@ -870,51 +958,37 @@ dissect_vines_spp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ti = proto_tree_add_item(tree, proto_vines_spp, tvb, offset,
sizeof(viph), ENC_NA);
vspp_tree = proto_item_add_subtree(ti, ett_vines_spp);
- proto_tree_add_text(vspp_tree, tvb, offset, 2,
- "Source port: 0x%04x", viph.vspp_sport);
- proto_tree_add_text(vspp_tree, tvb, offset + 2, 2,
- "Destination port: 0x%04x",
- viph.vspp_dport);
- proto_tree_add_text(vspp_tree, tvb, offset + 4, 1,
- "Packet type: 0x%02x (%s)",
- viph.vspp_pkttype,
- val_to_str_const(viph.vspp_pkttype, pkttype_vals,
- "Unknown"));
- ti = proto_tree_add_text(vspp_tree, tvb, offset + 5, 1,
- "Control: 0x%02x", viph.vspp_control);
+ proto_tree_add_item(vspp_tree, hf_vines_spp_src_port,
+ tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(vspp_tree, hf_vines_spp_dest_port,
+ tvb, offset+2, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(vspp_tree, hf_vines_spp_packet_type,
+ tvb, offset+4, 1, ENC_BIG_ENDIAN);
+
+ ti = proto_tree_add_item(vspp_tree, hf_vines_spp_control,
+ tvb, offset+5, 1, ENC_BIG_ENDIAN);
control_tree = proto_item_add_subtree(ti, ett_vines_spp_control);
/*
* XXX - do reassembly based on BOM/EOM bits.
*/
- proto_tree_add_text(control_tree, tvb, offset + 5, 1, "%s",
- decode_boolean_bitfield(viph.vspp_control, 0x80, 1*8,
- "Send immediate acknowledgment",
- "Do not send immediate acknowledgement"));
- proto_tree_add_text(control_tree, tvb, offset + 5, 1, "%s",
- decode_boolean_bitfield(viph.vspp_control, 0x40, 1*8,
- "End of message",
- "Not end of message"));
- proto_tree_add_text(control_tree, tvb, offset + 5, 1, "%s",
- decode_boolean_bitfield(viph.vspp_control, 0x20, 1*8,
- "Beginning of message",
- "Not beginning of message"));
- proto_tree_add_text(control_tree, tvb, offset + 5, 1, "%s",
- decode_boolean_bitfield(viph.vspp_control, 0x10, 1*8,
- "Abort current message",
- "Do not abort current message"));
- proto_tree_add_text(vspp_tree, tvb, offset + 6, 2,
- "Local Connection ID: 0x%04x",
- viph.vspp_lclid);
- proto_tree_add_text(vspp_tree, tvb, offset + 8, 2,
- "Remote Connection ID: 0x%04x",
- viph.vspp_rmtid);
- proto_tree_add_text(vspp_tree, tvb, offset + 10, 2,
- "Sequence number: %u",
- viph.vspp_seqno);
- proto_tree_add_text(vspp_tree, tvb, offset + 12, 2,
- "Ack number: %u", viph.vspp_ack);
- proto_tree_add_text(vspp_tree, tvb, offset + 14, 2,
- "Window: %u", viph.vspp_win);
+ proto_tree_add_item(control_tree, hf_vines_spp_control_ack,
+ tvb, offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(control_tree, hf_vines_spp_control_end_msg,
+ tvb, offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(control_tree, hf_vines_spp_control_beg_msg,
+ tvb, offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(control_tree, hf_vines_spp_control_abort_msg,
+ tvb, offset+5, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(vspp_tree, hf_vines_spp_local_id,
+ tvb, offset+6, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(vspp_tree, hf_vines_spp_remote_id,
+ tvb, offset+8, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(vspp_tree, hf_vines_spp_seq_num,
+ tvb, offset+10, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(vspp_tree, hf_vines_spp_ack_num,
+ tvb, offset+12, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(vspp_tree, hf_vines_spp_window,
+ tvb, offset+14, 2, ENC_BIG_ENDIAN);
}
offset += 16; /* sizeof SPP */
@@ -933,6 +1007,73 @@ dissect_vines_spp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
void
proto_register_vines_spp(void)
{
+ static hf_register_info hf[] = {
+ { &hf_vines_spp_src_port,
+ { "Source port", "vines_spp.src_port",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_dest_port,
+ { "Destination port", "vines_spp.dest_port",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_packet_type,
+ { "Packet type", "vines_spp.packet_type",
+ FT_UINT8, BASE_HEX, VALS(pkttype_vals), 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_control,
+ { "Control", "vines_spp.control",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_control_ack,
+ { "Immediate acknowledgment", "vines_spp.control.ack",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_ipc_send_not_send), 0x80,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_control_end_msg,
+ { "End of message", "vines_spp.control.end_msg",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x40,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_control_beg_msg,
+ { "Beginning of message", "vines_spp.control.beg_msg",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x20,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_control_abort_msg,
+ { "Current message", "vines_spp.control.abort_msg",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_ipc_abort_not_abort), 0x10,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_local_id,
+ { "Local Connection ID", "vines_spp.local_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_remote_id,
+ { "Remote Connection ID", "vines_spp.remote_id",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_seq_num,
+ { "Sequence number", "vines_spp.seq_num",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_ack_num,
+ { "Ack number", "vines_spp.ack_num",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_spp_window,
+ { "Window", "vines_spp.window",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }}
+ };
+
static gint *ett[] = {
&ett_vines_spp,
&ett_vines_spp_control,
@@ -940,6 +1081,7 @@ proto_register_vines_spp(void)
proto_vines_spp = proto_register_protocol("Banyan Vines SPP",
"Vines SPP", "vines_spp");
+ proto_register_field_array(proto_vines_spp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
register_heur_dissector_list("vines_spp",
@@ -1137,6 +1279,13 @@ static const value_string vines_rtp_info_type_vals[] = {
{ 0, NULL }
};
+static const true_false_string tfs_vine_auto_config_not_auto_config = { "Auto-configured", "Not an auto-configured" };
+static const true_false_string tfs_vine_rtp_not_all_neighbor_all_neighbor = { "Not all neighbor routers support", "All neighbor routers support" };
+static const true_false_string tfs_vine_rtp_sequenced_not_sequenced = { "Sequenced", "Not Sequenced" };
+static const true_false_string tfs_part_not_part = { "Part of", "Not part of" };
+static const true_false_string tfs_fast_bus_slow_bus = { "Fast bus", "Slow bus" };
+static const true_false_string tfs_vine_rtp_no_yes = { "No", "Yes" };
+
static void rtp_show_machine_type(proto_tree *tree, tvbuff_t *tvb, int offset,
const char *tag);
static void rtp_show_flags(proto_tree *tree, tvbuff_t *tvb, int offset,
@@ -1157,12 +1306,10 @@ dissect_vines_rtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint8 operation_type;
guint8 node_type;
guint8 controller_type;
- guint8 compatibility_flags;
guint8 link_addr_length;
guint8 source_route_length;
guint8 requested_info;
guint8 info_type;
- guint8 control_flags;
guint16 metric;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "Vines RTP");
@@ -1294,30 +1441,16 @@ dissect_vines_rtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Unknown"),
node_type);
offset += 1;
- compatibility_flags = tvb_get_guint8(tvb, offset);
- ti = proto_tree_add_text(vines_rtp_tree, tvb, offset, 1,
- "Compatibility Flags: 0x%02x",
- compatibility_flags);
- subtree = proto_item_add_subtree(ti,
- ett_vines_rtp_compatibility_flags);
- proto_tree_add_text(subtree, tvb,
- offset, 1, "%s",
- decode_boolean_bitfield(compatibility_flags,
- 0x04, 1*8,
- "Auto-configured non-Vines-reachable neighbor router",
- "Not an auto-configured non-Vines-reachable neighbor router"));
- proto_tree_add_text(subtree, tvb,
- offset, 1, "%s",
- decode_boolean_bitfield(compatibility_flags,
- 0x02, 1*8,
- "Not all neighbor routers support Sequenced RTP",
- "All neighbor routers support Sequenced RTP"));
- proto_tree_add_text(subtree, tvb,
- offset, 1, "%s",
- decode_boolean_bitfield(compatibility_flags,
- 0x01, 1*8,
- "Sequenced RTP version mismatch",
- "No Sequenced RTP version mismatch"));
+ ti = proto_tree_add_item(vines_rtp_tree, hf_vines_rtp_comp_flag,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ subtree = proto_item_add_subtree(ti, ett_vines_rtp_compatibility_flags);
+
+ proto_tree_add_item(subtree, hf_vines_rtp_comp_flag_neighbor_router,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_vines_rtp_comp_flag_sequence_rtp,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_vines_rtp_comp_flag_sequence_rtp_version,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
offset += 1; /* reserved */
switch (operation_type) {
@@ -1340,44 +1473,21 @@ dissect_vines_rtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Unknown"),
info_type);
offset += 1;
- control_flags = tvb_get_guint8(tvb, offset);
- ti = proto_tree_add_text(vines_rtp_tree, tvb,
- offset, 1,
- "Control Flags: 0x%02x",
- control_flags);
+ ti = proto_tree_add_item(vines_rtp_tree, hf_vines_rtp_control,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
subtree = proto_item_add_subtree(ti,
ett_vines_rtp_control_flags);
- proto_tree_add_text(subtree, tvb,
- offset, 1, "%s",
- decode_boolean_bitfield(control_flags,
- 0x10, 1*8,
- "Part of routing table synchronization broadcast",
- "Not part of routing table synchronization broadcast"));
- proto_tree_add_text(subtree, tvb,
- offset, 1, "%s",
- decode_boolean_bitfield(control_flags,
- 0x08, 1*8,
- "Part of full topology update",
- "Not part of full topology update"));
- proto_tree_add_text(subtree, tvb,
- offset, 1, "%s",
- decode_boolean_bitfield(control_flags,
- 0x04, 1*8,
- "Contains info specifically requested or network changes",
- "Not a response to a specific request"));
+ proto_tree_add_item(subtree, hf_vines_rtp_control_sync_broadcast,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_vines_rtp_control_topology_update,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_vines_rtp_control_specific_request,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
/* XXX - need reassembly? */
- proto_tree_add_text(subtree, tvb,
- offset, 1, "%s",
- decode_boolean_bitfield(control_flags,
- 0x02, 1*8,
- "End of message",
- "Not end of message"));
- proto_tree_add_text(subtree, tvb,
- offset, 1, "%s",
- decode_boolean_bitfield(control_flags,
- 0x01, 1*8,
- "Beginning of message",
- "Not beginning of message"));
+ proto_tree_add_item(subtree, hf_vines_rtp_control_end_msg,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_vines_rtp_control_beg_msg,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_text(vines_rtp_tree, tvb,
offset, 2,
@@ -1526,18 +1636,12 @@ rtp_show_machine_type(proto_tree *tree, tvbuff_t *tvb, int offset, const char *t
tag == NULL ? "" : " ",
machine_type);
subtree = proto_item_add_subtree(ti, ett_vines_rtp_mtype);
- proto_tree_add_text(subtree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(machine_type, 0x04, 1*8,
- "Sequenced RTP supported",
- "Sequenced RTP not supported"));
- proto_tree_add_text(subtree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(machine_type, 0x02, 1*8,
- "TCP/IP supported",
- "TCP/IP not supported"));
- proto_tree_add_text(subtree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(machine_type, 0x01, 1*8,
- "Fast bus",
- "Slow bus"));
+ proto_tree_add_item(subtree, hf_vines_rtp_machine_rtp,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_vines_rtp_machine_tcpip,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(subtree, hf_vines_rtp_machine_bus,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
}
static void
@@ -1551,22 +1655,14 @@ rtp_show_flags(proto_tree *tree, tvbuff_t *tvb, int offset, const char *tag)
ti = proto_tree_add_text(tree, tvb, offset, 1, "%s Flags: 0x%02x",
tag, flags);
flags_tree = proto_item_add_subtree(ti, ett_vines_rtp_flags);
- proto_tree_add_text(flags_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(flags, 0x08, 1*8,
- "Network doesn't support Sequenced RTP",
- "Network supports Sequenced RTP"));
- proto_tree_add_text(flags_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(flags, 0x04, 1*8,
- "Network accessed point-to-point on non-Vines network",
- "Network not accessed point-to-point on non-Vines network"));
- proto_tree_add_text(flags_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(flags, 0x02, 1*8,
- "Data link to network uses point-to-point connection",
- "Data link to network doesn't use point-to-point connection"));
- proto_tree_add_text(flags_tree, tvb, offset, 1, "%s",
- decode_boolean_bitfield(flags, 0x01, 1*8,
- "Network accessed across broadcast medium",
- "Network not accessed across broadcast medium"));
+ proto_tree_add_item(flags_tree, hf_vines_rtp_flag_sequence_rtp,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_vines_rtp_flag_network_p2p,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_vines_rtp_flag_data_link_p2p,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(flags_tree, hf_vines_rtp_flag_broadcast_medium,
+ tvb, offset, 1, ENC_BIG_ENDIAN);
}
static int
@@ -1625,6 +1721,93 @@ rtp_show_gateway_info(proto_tree *tree, tvbuff_t *tvb, int offset,
void
proto_register_vines_rtp(void)
{
+ static hf_register_info hf[] = {
+ { &hf_vines_rtp_comp_flag,
+ { "Compatibility Flags", "vines_rtp.comp_flag",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_comp_flag_neighbor_router,
+ { "non-Vines-reachable neighbor router", "vines_rtp.comp_flag.neighbor_router",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_auto_config_not_auto_config), 0x04,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_comp_flag_sequence_rtp,
+ { "Sequenced RTP", "vines_rtp.comp_flag.sequence_rtp",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_rtp_not_all_neighbor_all_neighbor), 0x02,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_comp_flag_sequence_rtp_version,
+ { "RTP version mismatch", "vines_rtp.comp_flag.rtp_version",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_rtp_sequenced_not_sequenced), 0x01,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_control,
+ { "Control Flags", "vines_rtp.control",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_control_sync_broadcast,
+ { "Routing table synchronization broadcast", "vines_rtp.control.sync_broadcast",
+ FT_BOOLEAN, 8, TFS(&tfs_part_not_part), 0x10,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_control_topology_update,
+ { "Full topology update", "vines_rtp.control.topology_update",
+ FT_BOOLEAN, 8, TFS(&tfs_part_not_part), 0x08,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_control_specific_request,
+ { "Contains info specifically requested", "vines_rtp.control.specific_request",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x04,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_control_end_msg,
+ { "End of message", "vines_rtp.control.end_msg",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x02,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_control_beg_msg,
+ { "Beginning of message", "vines_rtp.control.beg_msg",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_machine_rtp,
+ { "Sequenced RTP", "vines_rtp.machine.rtp",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x04,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_machine_tcpip,
+ { "TCP/IP", "vines_rtp.machine.tcpip",
+ FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x02,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_machine_bus,
+ { "Bus", "vines_rtp.machine.bus",
+ FT_BOOLEAN, 8, TFS(&tfs_fast_bus_slow_bus), 0x01,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_flag_sequence_rtp,
+ { "Network supports Sequenced RTP", "vines_rtp.flag.sequence_rtp",
+ FT_BOOLEAN, 8, TFS(&tfs_vine_rtp_no_yes), 0x08,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_flag_network_p2p,
+ { "Network accessed point-to-point on non-Vines network", "vines_rtp.flag.network_p2p",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x04,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_flag_data_link_p2p,
+ { "Data link to network uses point-to-point connection", "vines_rtp.flag.data_link_p2p",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x02,
+ NULL, HFILL }},
+
+ { &hf_vines_rtp_flag_broadcast_medium,
+ { "Network accessed across broadcast medium", "vines_rtp.flag.broadcast_medium",
+ FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01,
+ NULL, HFILL }}
+ };
+
static gint *ett[] = {
&ett_vines_rtp,
&ett_vines_rtp_compatibility_flags,
@@ -1636,6 +1819,7 @@ proto_register_vines_rtp(void)
proto_vines_rtp = proto_register_protocol(
"Banyan Vines RTP", "Vines RTP", "vines_rtp");
+ proto_register_field_array(proto_vines_rtp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
diff --git a/epan/dissectors/packet-x25.c b/epan/dissectors/packet-x25.c
index aa0e454a60..47c296b2e4 100644
--- a/epan/dissectors/packet-x25.c
+++ b/epan/dissectors/packet-x25.c
@@ -182,6 +182,7 @@ static gint hf_x25_reassembled_length = -1;
static gint hf_x25_fast_select = -1;
static gint hf_x25_icrd = -1;
static gint hf_x25_reverse_charging = -1;
+static gint hf_x25_charging_info = -1;
static const value_string vals_modulo[] = {
{ 1, "8" },
@@ -712,10 +713,7 @@ dump_facilities(proto_tree *tree, int *offset, tvbuff_t *tvb)
byte1 = tvb_get_guint8(tvb, *offset + 1);
proto_tree_add_text(fac_subtree, tvb, *offset+1, 1,
"Parameter : %02X", byte1);
- proto_tree_add_text(fac_subtree, tvb, *offset+1, 1, "%s",
- decode_boolean_bitfield(byte1, 0x01, 1*8,
- "Charging information requested",
- "Charging information not requested"));
+ proto_tree_add_item(fac_subtree, hf_x25_charging_info, tvb, *offset+1, 1, ENC_BIG_ENDIAN);
}
break;
case X25_FAC_THROUGHPUT:
@@ -2682,6 +2680,10 @@ proto_register_x25(void)
{ &hf_x25_reverse_charging,
{ "Reverse charging", "x25.reverse_charging", FT_BOOLEAN, 8, TFS(&x25_reverse_charging_val), 0x01,
NULL, HFILL }},
+
+ { &hf_x25_charging_info,
+ { "Charging information", "x25.charging_info", FT_BOOLEAN, 8, TFS(&tfs_requested_not_requested), 0x01,
+ NULL, HFILL }},
};
static gint *ett[] = {
&ett_x25,