Remove proto_tree_add_text from some dissectors.

Change-Id: Id7ef95a56d9d8cc01f9a1a4556ad056b8bb7f8bc
Reviewed-on: https://code.wireshark.org/review/8654
Reviewed-by: Michael Mann <mmann78@netscape.net>
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Michael Mann 2015-05-25 14:58:05 -04:00 committed by Anders Broman
parent c6b0a61ab3
commit a25c46bc7b
10 changed files with 446 additions and 206 deletions

View File

@ -62,6 +62,7 @@ static gint ett_rtse = -1;
static expert_field ei_rtse_dissector_oid_not_implemented = EI_INIT;
static expert_field ei_rtse_unknown_rtse_pdu = EI_INIT;
static expert_field ei_rtse_abstract_syntax = EI_INIT;
static dissector_table_t rtse_oid_dissector_table=NULL;
static GHashTable *oid_table=NULL;
@ -175,7 +176,8 @@ call_rtse_external_type_callback(gboolean implicit_tag _U_, tvbuff_t *tvb, int o
oid = (const char *)find_oid_by_pres_ctx_id(actx->pinfo, actx->external.indirect_reference);
if(!oid)
proto_tree_add_text(tree, tvb, offset, tvb_captured_length_remaining(tvb, offset), "Unable to determine abstract syntax for indirect reference: %d.", actx->external.indirect_reference);
proto_tree_add_expert_format(tree, actx->pinfo, &ei_rtse_abstract_syntax, tvb, offset, tvb_captured_length_remaining(tvb, offset),
"Unable to determine abstract syntax for indirect reference: %d.", actx->external.indirect_reference);
} else if (actx->external.direct_ref_present) {
oid = actx->external.direct_reference;
}
@ -367,6 +369,7 @@ void proto_register_rtse(void) {
static ei_register_info ei[] = {
{ &ei_rtse_dissector_oid_not_implemented, { "rtse.dissector_oid_not_implemented", PI_UNDECODED, PI_WARN, "RTSE: Dissector for OID not implemented", EXPFILL }},
{ &ei_rtse_unknown_rtse_pdu, { "rtse.unknown_rtse_pdu", PI_UNDECODED, PI_WARN, "Unknown RTSE PDU", EXPFILL }},
{ &ei_rtse_abstract_syntax, { "rtse.bad_abstract_syntax", PI_PROTOCOL, PI_WARN, "Unable to determine abstract syntax for indirect reference", EXPFILL }},
};
expert_module_t* expert_rtse;

View File

@ -77,8 +77,9 @@ static int hf_dlsw_message_length = -1;
static int hf_dlsw_remote_dlc_pid = -1;
static int hf_dlsw_vendor_oui = -1;
static int hf_dlsw_flow_ctrl_byte = -1;
static int hf_dlsw_version_string = -1;
static int hf_dlsw_version = -1;
static int hf_dlsw_version_string = -1;
static int hf_dlsw_dlsw_version = -1;
static int hf_dlsw_remote_dlc = -1;
static int hf_dlsw_origin_dlc = -1;
static int hf_dlsw_origin_transport_id = -1;
@ -91,6 +92,18 @@ static int hf_dlsw_reserved = -1;
static int hf_dlsw_data = -1;
static int hf_dlsw_vector_data = -1;
static int hf_dlsw_unknown_data = -1;
static int hf_dlsw_mac_address_exclusivity = -1;
static int hf_dlsw_netbios_name_exclusivity = -1;
static int hf_dlsw_gds_id = -1;
static int hf_dlsw_sap_list_support = -1;
static int hf_dlsw_sap_list_support_x0 = -1;
static int hf_dlsw_sap_list_support_x2 = -1;
static int hf_dlsw_sap_list_support_x4 = -1;
static int hf_dlsw_sap_list_support_x6 = -1;
static int hf_dlsw_sap_list_support_x8 = -1;
static int hf_dlsw_sap_list_support_xA = -1;
static int hf_dlsw_sap_list_support_xC = -1;
static int hf_dlsw_sap_list_support_xE = -1;
static gint ett_dlsw = -1;
static gint ett_dlsw_header = -1;
@ -98,6 +111,7 @@ static gint ett_dlsw_fc = -1;
static gint ett_dlsw_sspflags = -1;
static gint ett_dlsw_data = -1;
static gint ett_dlsw_vector = -1;
static gint ett_dlsw_sap_list_support = -1;
static expert_field ei_dlsw_dlc_header_length = EI_INIT;
static expert_field ei_dlsw_not_used_for_capex = EI_INIT;
@ -411,15 +425,21 @@ dissect_dlsw_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
return tvb_length(tvb);
}
static void
dlsw_fmt_version( gchar *result, guint32 revision )
{
g_snprintf( result, ITEM_LABEL_LENGTH, "%d.%02d", (guint8)(( revision & 0xFF00 ) >> 8), (guint8)(revision & 0xFF) );
}
static void
dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti2)
{
int mlen,vlen,vtype,offset=4,gdsid,sap,i=0;
int vlen,vtype,i=0;
guint8 tmp8;
guint32 gdsid, mlen,offset=4;
proto_tree *dlsw_vector_tree;
mlen=tvb_get_ntohs(tvb,0);
gdsid=tvb_get_ntohs(tvb,2);
proto_tree_add_item(tree, hf_dlsw_capabilities_length, tvb, 0, 2, ENC_BIG_ENDIAN);
proto_tree_add_text (tree,tvb,2,2,"%s",val_to_str_const( gdsid, dlsw_gds_vals, "Invalid GDS ID"));
proto_tree_add_item_ret_uint(tree, hf_dlsw_capabilities_length, tvb, 0, 2, ENC_BIG_ENDIAN, &mlen);
proto_tree_add_item_ret_uint(tree, hf_dlsw_gds_id, tvb, 2, 2, ENC_BIG_ENDIAN, &gdsid);
proto_item_append_text(ti2," - %s",val_to_str_const( gdsid, dlsw_gds_vals, "Invalid GDS ID"));
switch (gdsid) {
case DLSW_GDSID_ACK:
@ -442,8 +462,7 @@ dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti2)
proto_tree_add_item(dlsw_vector_tree, hf_dlsw_oui, tvb, offset+2, vlen-2, ENC_BIG_ENDIAN);
break;
case 0x82:
proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
"DLSw Version = %d.%d",tvb_get_guint8(tvb,offset+2),tvb_get_guint8(tvb,offset+3));
proto_tree_add_item(dlsw_vector_tree, hf_dlsw_dlsw_version, tvb, offset+2, 2, ENC_BIG_ENDIAN);
break;
case 0x83:
proto_tree_add_item(dlsw_vector_tree, hf_dlsw_initial_pacing_window, tvb, offset+2, vlen-2, ENC_BIG_ENDIAN);
@ -452,17 +471,26 @@ dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti2)
proto_tree_add_item(dlsw_vector_tree, hf_dlsw_version_string, tvb, offset+2, vlen-2, ENC_NA|ENC_ASCII);
break;
case 0x85:
proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
"MAC Address Exclusivity = %s",tvb_get_guint8(tvb,offset+2)==1?"On":"Off");
tmp8 = tvb_get_guint8(tvb,offset+2);
proto_tree_add_uint_format_value(dlsw_vector_tree, hf_dlsw_mac_address_exclusivity, tvb,offset+2, 1,
tmp8, "%s",tmp8==1?"On":"Off");
break;
case 0x86:
while (i<vlen-2)
{
sap=tvb_get_guint8(tvb,offset+2+i);
proto_tree_add_text (dlsw_vector_tree,tvb,offset+2+i,1,
"SAP List Support = 0x%x0=%s 0x%x2=%s 0x%x4=%s 0x%x6=%s 0x%x8=%s 0x%xa=%s 0x%xc=%s 0x%xe=%s",
i,sap&0x80?"on ":"off",i,sap&0x40?"on ":"off",i,sap&0x20?"on ":"off",i,sap&0x10?"on ":"off",
i,sap&0x08?"on ":"off",i,sap&0x04?"on ":"off",i,sap&0x02?"on ":"off",i,sap&0x01?"on ":"off");
static const int * flags[] = {
&hf_dlsw_sap_list_support_x0,
&hf_dlsw_sap_list_support_x2,
&hf_dlsw_sap_list_support_x4,
&hf_dlsw_sap_list_support_x6,
&hf_dlsw_sap_list_support_x8,
&hf_dlsw_sap_list_support_xA,
&hf_dlsw_sap_list_support_xC,
&hf_dlsw_sap_list_support_xE,
NULL
};
proto_tree_add_bitmask_with_flags(dlsw_vector_tree, tvb, offset+2+i, hf_dlsw_sap_list_support, ett_dlsw_sap_list_support, flags, ENC_NA, BMT_NO_FALSE);
i++;
}
break;
@ -470,8 +498,9 @@ dissect_dlsw_capex(tvbuff_t *tvb, proto_tree *tree, proto_tree *ti2)
proto_tree_add_item(dlsw_vector_tree, hf_dlsw_tcp_connections, tvb, offset+2, vlen-2, ENC_BIG_ENDIAN);
break;
case 0x88:
proto_tree_add_text (dlsw_vector_tree,tvb,offset+2,vlen-2,
"NetBIOS Name Exclusivity = %s",tvb_get_guint8(tvb,offset+2)==1?"On":"Off");
tmp8 = tvb_get_guint8(tvb,offset+2);
proto_tree_add_uint_format_value(dlsw_vector_tree, hf_dlsw_netbios_name_exclusivity, tvb,offset+2,1,
tmp8, "%s", tmp8==1?"On":"Off");
break;
case 0x89:
proto_tree_add_item(dlsw_vector_tree, hf_dlsw_mac_address_list, tvb, offset+2, 6, ENC_NA);
@ -602,6 +631,7 @@ proto_register_dlsw(void)
{ &hf_dlsw_vector_type, { "Vector Type", "dlsw.vector_type", FT_UINT8, BASE_HEX, VALS(dlsw_vector_vals), 0x0, NULL, HFILL }},
{ &hf_dlsw_oui, { "OUI", "dlsw.oui", FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_initial_pacing_window, { "Initial Pacing Window", "dlsw.initial_pacing_window", FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_dlsw_version, { "DLSw Version", "dlsw.dlsw_version", FT_UINT16, BASE_CUSTOM, CF_FUNC(dlsw_fmt_version), 0x0, NULL, HFILL }},
{ &hf_dlsw_version_string, { "Version String", "dlsw.version_string", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_tcp_connections, { "TCP connections", "dlsw.tcp_connections", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_mac_address_list, { "MAC Address List", "dlsw.mac_address_list", FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }},
@ -612,6 +642,18 @@ proto_register_dlsw(void)
{ &hf_dlsw_data, { "Data", "dlsw.data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_vector_data, { "Data", "dlsw.vector_data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_unknown_data, { "Data", "dlsw.unknown_data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_mac_address_exclusivity, { "MAC Address Exclusivity", "dlsw.mac_address_exclusivity", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_netbios_name_exclusivity, { "NetBIOS Name Exclusivity", "dlsw.netbios_name_exclusivity", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_gds_id, { "GDS ID", "dlsw.gds_id", FT_UINT16, BASE_DEC, VALS(dlsw_gds_vals), 0x0, NULL, HFILL }},
{ &hf_dlsw_sap_list_support, { "SAP List Support", "dlsw.sap_list_support", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_dlsw_sap_list_support_x0, { "x0", "dlsw.sap_list_support.x0", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x80, NULL, HFILL }},
{ &hf_dlsw_sap_list_support_x2, { "x0", "dlsw.sap_list_support.x2", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x40, NULL, HFILL }},
{ &hf_dlsw_sap_list_support_x4, { "x0", "dlsw.sap_list_support.x4", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x20, NULL, HFILL }},
{ &hf_dlsw_sap_list_support_x6, { "x0", "dlsw.sap_list_support.x6", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x10, NULL, HFILL }},
{ &hf_dlsw_sap_list_support_x8, { "x0", "dlsw.sap_list_support.x8", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x08, NULL, HFILL }},
{ &hf_dlsw_sap_list_support_xA, { "x0", "dlsw.sap_list_support.xA", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x04, NULL, HFILL }},
{ &hf_dlsw_sap_list_support_xC, { "x0", "dlsw.sap_list_support.xC", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x02, NULL, HFILL }},
{ &hf_dlsw_sap_list_support_xE, { "x0", "dlsw.sap_list_support.xE", FT_BOOLEAN, 8, TFS(&tfs_on_off), 0x01, NULL, HFILL }},
};
static gint *ett[] = {
@ -621,6 +663,7 @@ proto_register_dlsw(void)
&ett_dlsw_sspflags,
&ett_dlsw_data,
&ett_dlsw_vector,
&ett_dlsw_sap_list_support,
};
static ei_register_info ei[] = {

View File

@ -99,6 +99,7 @@ static int hf_fmp_volume_mgmt_type = -1;
static int hf_fmp_notify_protocol = -1;
static int hf_fmp_client_error_number = -1;
/* Generated from convert_proto_tree_add_text.pl */
static int hf_fmp_cap = -1;
static int hf_fmp_cap_revoke_handle_list = -1;
static int hf_fmp_length_of_volume_list = -1;
static int hf_fmp_cap_unc_names = -1;
@ -112,6 +113,11 @@ static int hf_fmp_cifsport = -1;
static int hf_fmp_blockindex = -1;
static int hf_fmp_number_of_disk = -1;
static int hf_fmp_cap_cifsv2 = -1;
static int hf_fmp_mtime = -1;
static int hf_fmp_atime = -1;
static int hf_fmp_ctime = -1;
static int hf_fmp_heartbeat_interval = -1;
static int hf_fmp_volindex = -1;
static gint ett_fmp = -1;
static gint ett_fmp_timeval = -1;
@ -422,7 +428,7 @@ dissect_fmp_flushCmd(tvbuff_t *tvb, int offset, proto_tree *tree)
g_strlcpy(msg, "No command specified", MAX_MSG_SIZE);
}
proto_tree_add_text(tree, tvb, offset, 4, "Cmd: %s", msg);
proto_tree_add_uint_format_value(tree, hf_fmp_cmd, tvb, offset, 4, cmd, "%s", msg);
}
offset += 4;
return offset;
@ -495,12 +501,7 @@ static int
dissect_fmp_heartBeatIntv(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree)
{
if (tree) {
proto_tree_add_text(tree, tvb, offset, 8,
"Heart Beat Interval: %d.%d seconds",
tvb_get_ntohl(tvb, offset),
tvb_get_ntohl(tvb, offset+4));
}
proto_tree_add_item(tree, hf_fmp_heartbeat_interval, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
return offset;
}
@ -725,7 +726,6 @@ dissect_fmp_vmInfo(tvbuff_t *tvb, int offset, packet_info *pinfo,
{
int vmType;
guint32 phyVolList_len;
guint32 volIndex;
vmType = tvb_get_ntohl(tvb, offset);
proto_tree_add_item(tree, hf_fmp_volume_mgmt_type, tvb, offset, 4, ENC_BIG_ENDIAN);
@ -743,11 +743,8 @@ dissect_fmp_vmInfo(tvbuff_t *tvb, int offset, packet_info *pinfo,
* structures.
*/
while (phyVolList_len) {
offset =
dissect_fmp_devSerial(tvb, offset, pinfo, tree);
volIndex = tvb_get_ntohl(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 4, "0x%x",
volIndex);
offset = dissect_fmp_devSerial(tvb, offset, pinfo, tree);
proto_tree_add_item(tree, hf_fmp_volindex, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
phyVolList_len--;
}
@ -799,16 +796,15 @@ dissect_fmp_notifyProtocol(tvbuff_t *tvb, int offset, proto_tree *tree)
static int
dissect_fmp_capabilities(tvbuff_t *tvb, int offset, proto_tree *tree)
{
proto_tree *capTree;
proto_item *ti;
static const int *capabilities[] = {
&hf_fmp_cap_revoke_handle_list,
&hf_fmp_cap_unc_names,
&hf_fmp_cap_cifsv2,
NULL
};
ti = proto_tree_add_text(tree, tvb, offset, 4, "Capabilities");
capTree = proto_item_add_subtree(ti, ett_capabilities);
proto_tree_add_item(capTree, hf_fmp_cap_revoke_handle_list, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(capTree, hf_fmp_cap_unc_names, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(capTree, hf_fmp_cap_cifsv2, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_fmp_cap, ett_capabilities,
capabilities, ENC_BIG_ENDIAN, BMT_NO_APPEND);
return (offset+4);
}
@ -845,14 +841,11 @@ dissect_fmp_attrs(tvbuff_t *tvb, int offset, proto_tree *tree)
offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_rdev, offset);
offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_fsid, offset);
offset = dissect_rpc_uint64(tvb, attrsTree, hf_fmp_nfsv3Attr_fileid, offset);
proto_tree_add_text(tree, tvb, offset, 8,"atime: %d.%d seconds",
tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
proto_tree_add_item(tree, hf_fmp_atime, tvb, offset, 8, ENC_BIG_ENDIAN);
offset +=8;
proto_tree_add_text(tree, tvb, offset, 8,"mtime: %d.%d seconds",
tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
proto_tree_add_item(tree, hf_fmp_mtime, tvb, offset, 8, ENC_BIG_ENDIAN);
offset +=8;
proto_tree_add_text(tree, tvb, offset, 8,"ctime: %d.%d seconds",
tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
proto_tree_add_item(tree, hf_fmp_ctime, tvb, offset, 8, ENC_BIG_ENDIAN);
offset +=8;
return offset;
}
@ -1397,8 +1390,7 @@ dissect_FMP_FlushGetAttr_request(tvbuff_t *tvb, int offset,
offset = dissect_rpc_uint32(tvb, tree, hf_fmp_cmd, offset);
offset = dissect_rpc_uint64(tvb,tree, hf_fmp_eof, offset);
proto_tree_add_text(tree, tvb, offset, 8,"mtime: %d.%d seconds",
tvb_get_ntohl(tvb, offset),tvb_get_ntohl(tvb, offset+4));
proto_tree_add_item(tree, hf_fmp_mtime, tvb, offset, 8, ENC_BIG_ENDIAN);
offset += 8;
offset = dissect_fmp_extentList(tvb, offset, pinfo, tree);
@ -2238,9 +2230,15 @@ proto_register_fmp(void)
{ &hf_fmp_sigoffset, { "sigOffset", "fmp.sigoffset", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_fmp_length_of_volume_list, { "Length of volume List", "fmp.length_of_volume_list", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_fmp_blockindex, { "blockIndex", "fmp.blockindex", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_fmp_cap_revoke_handle_list, { "CAP_REVOKE_HANDLE_LIST", "fmp.cap_revoke_handle_list", FT_BOOLEAN, 32, TFS(&tfs_yes_no), FMP_CAP_REVOKE_HANDLE_LIST, NULL, HFILL }},
{ &hf_fmp_cap_unc_names, { "CAP_UNC_NAMES", "fmp.cap_unc_names", FT_BOOLEAN, 32, TFS(&tfs_yes_no), FMP_CAP_UNC_NAMES, NULL, HFILL }},
{ &hf_fmp_cap_cifsv2, { "CAP_CIFSV2", "fmp.cap_cifsv2", FT_BOOLEAN, 32, TFS(&tfs_yes_no), FMP_CAP_CIFSV2, NULL, HFILL }},
{ &hf_fmp_cap, { "Capabilities", "fmp.cap", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{ &hf_fmp_cap_revoke_handle_list, { "CAP_REVOKE_HANDLE_LIST", "fmp.cap.revoke_handle_list", FT_BOOLEAN, 32, TFS(&tfs_yes_no), FMP_CAP_REVOKE_HANDLE_LIST, NULL, HFILL }},
{ &hf_fmp_cap_unc_names, { "CAP_UNC_NAMES", "fmp.cap.unc_names", FT_BOOLEAN, 32, TFS(&tfs_yes_no), FMP_CAP_UNC_NAMES, NULL, HFILL }},
{ &hf_fmp_cap_cifsv2, { "CAP_CIFSV2", "fmp.cap.cifsv2", FT_BOOLEAN, 32, TFS(&tfs_yes_no), FMP_CAP_CIFSV2, NULL, HFILL }},
{ &hf_fmp_mtime, { "mtime", "fmp.mtime", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_fmp_atime, { "atime", "fmp.atime", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_fmp_ctime, { "ctime", "fmp.ctime", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_fmp_heartbeat_interval, { "Heartbeat interval", "fmp.heartbeat_interval", FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_fmp_volindex, { "volIndex", "fmp.volindex", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
};
static gint *ett[] = {

View File

@ -196,6 +196,13 @@ static gint hf_glusterfs_fsync_flag_unknown = -1;
/* for entrylk */
static gint hf_glusterfs_entrylk_namelen = -1;
static gint hf_gluster_dict_size = -1;
static gint hf_gluster_num_dict_items = -1;
static gint hf_gluster_rpc_roundup_bytes = -1;
static gint hf_gluster_trusted_afr_key = -1;
static gint hf_gluster_dict_value = -1;
/* Initialize the subtree pointers */
static gint ett_glusterfs = -1;
static gint ett_glusterfs_flags = -1;
@ -478,10 +485,11 @@ gluster_rpc_dissect_dict(proto_tree *tree, tvbuff_t *tvb, int hfindex, int offse
{
gchar *key, *value;
const gchar *name;
gint items, i, len, roundup, value_len, key_len;
gint roundup, value_len, key_len;
guint32 i, items, len;
int start_offset, start_offset2;
proto_item *subtree_item;
proto_item *subtree_item, *ti;
proto_tree *subtree;
proto_item *dict_item = NULL;
@ -498,7 +506,9 @@ gluster_rpc_dissect_dict(proto_tree *tree, tvbuff_t *tvb, int hfindex, int offse
len = tvb_get_ntohl(tvb, offset);
roundup = rpc_roundup(len) - len;
proto_tree_add_text(subtree, tvb, offset, 4, "[Size: %d (%d bytes inc. RPC-roundup)]", len, rpc_roundup(len));
ti = proto_tree_add_item_ret_uint(subtree, hf_gluster_dict_size, tvb, offset, 4, ENC_BIG_ENDIAN, &len);
proto_item_append_text(ti, " (%d bytes inc. RPC-roundup)", rpc_roundup(len));
PROTO_ITEM_SET_GENERATED(ti);
offset += 4;
if (len == 0)
@ -511,7 +521,7 @@ gluster_rpc_dissect_dict(proto_tree *tree, tvbuff_t *tvb, int hfindex, int offse
if (len == 0)
return offset;
proto_tree_add_text(subtree, tvb, offset, 4, "Items: %d", items);
proto_tree_add_uint(subtree, hf_gluster_num_dict_items, tvb, offset, 4, items);
offset += 4;
for (i = 0; i < items; i++) {
@ -544,14 +554,14 @@ gluster_rpc_dissect_dict(proto_tree *tree, tvbuff_t *tvb, int hfindex, int offse
"%s: %s", key, gfid_s);
/* this is a changelog in binary format */
} else if (value_len == 12 && !strncmp("trusted.afr.", key, 12)) {
dict_item = proto_tree_add_text(subtree, tvb, offset, -1,
"%s: 0x%.8x%.8x%.8x", key,
dict_item = proto_tree_add_bytes_format(subtree, hf_gluster_trusted_afr_key, tvb, offset, 12,
NULL, "%s: 0x%.8x%.8x%.8x", key,
tvb_get_letohl(tvb, offset + 0),
tvb_get_letohl(tvb, offset + 4),
tvb_get_letohl(tvb, offset + 8));
} else {
value = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, value_len, ENC_ASCII);
dict_item = proto_tree_add_text(subtree, tvb, offset, -1, "%s: %s",
dict_item = proto_tree_add_string_format(subtree, hf_gluster_dict_value, tvb, offset, value_len, value, "%s: %s",
key, value);
}
}
@ -561,8 +571,8 @@ gluster_rpc_dissect_dict(proto_tree *tree, tvbuff_t *tvb, int hfindex, int offse
}
if (roundup) {
if (tree)
proto_tree_add_text(subtree, tvb, offset, -1, "[RPC-roundup bytes: %d]", roundup);
ti = proto_tree_add_item(subtree, hf_gluster_rpc_roundup_bytes, tvb, offset, -1, ENC_NA);
PROTO_ITEM_SET_GENERATED(ti);
offset += roundup;
}
@ -2650,6 +2660,26 @@ proto_register_glusterfs(void)
{ "File Descriptor", "glusterfs.entrylk.namelen", FT_UINT64, BASE_DEC,
NULL, 0, NULL, HFILL }
},
{ &hf_gluster_dict_size,
{ "Size", "glusterfs.dict_size", FT_UINT32, BASE_DEC,
NULL, 0, NULL, HFILL }
},
{ &hf_gluster_num_dict_items,
{ "Items", "glusterfs.num_dict_items", FT_UINT32, BASE_DEC,
NULL, 0, NULL, HFILL }
},
{ &hf_gluster_rpc_roundup_bytes,
{ "RPC-roundup bytes", "glusterfs.rpc_roundup_bytes", FT_BYTES, BASE_NONE,
NULL, 0, NULL, HFILL }
},
{ &hf_gluster_trusted_afr_key,
{ "Key", "glusterfs.trusted_afr_key", FT_BYTES, BASE_NONE,
NULL, 0, NULL, HFILL }
},
{ &hf_gluster_dict_value,
{ "Value", "glusterfs.dict_value", FT_STRING, BASE_NONE,
NULL, 0, NULL, HFILL }
},
};
/* Setup protocol subtree array */

View File

@ -213,7 +213,10 @@ static int hf_mihf_id_mac = -1;
static int hf_mihf_id_ipv4 = -1;
static int hf_mihf_id_ipv6 = -1;
static int hf_status = -1;
static int hf_boolean = -1;
static int hf_ip_methods_supported = -1;
static int hf_ip_dhcp_services = -1;
static int hf_fn_agent = -1;
static int hf_access_router = -1;
static int hf_link_type = -1;
static int hf_link_type_ext = -1;
static int hf_ipv4_addr = -1;
@ -280,6 +283,11 @@ static int hf_rdf_sch = -1;
static int hf_rdf_sch_url = -1;
static int hf_ir_bin_data = -1;
static int hf_iq_bin_data_x = -1;
static int hf_vendor_specific_tlv = -1;
static int hf_reserved_tlv = -1;
static int hf_experimental_tlv = -1;
static int hf_unknown_tlv = -1;
static int hf_fragmented_tlv = -1;
/*header fields for event list */
static int hf_event_list = -1;
@ -442,6 +450,17 @@ static gint ett_subtype_ieee80211_bitmap = -1;
static gint ett_subtype_umts_bitmap = -1;
static gint ett_subtype_cdma2000_bitmap = -1;
static gint ett_subtype_ieee80216_bitmap = -1;
static gint ett_min_pk_tx_delay = -1;
static gint ett_avg_pk_tx_delay = -1;
static gint ett_max_pk_tx_delay = -1;
static gint ett_pk_delay_jitter = -1;
static gint ett_pk_loss_rate = -1;
static gint ett_list_prefer_link = -1;
static gint ett_ip_dhcp_server = -1;
static gint ett_fn_agent = -1;
static gint ett_access_router = -1;
static gint ett_link_states_req = -1;
static gint ett_link_desc_req = -1;
/*field definitions of evt, cmd, mob mgmt, ip cfg, iq type */
static const int *event_fields[] = {
@ -1037,18 +1056,20 @@ static gint16 dissect_iq_rdf_data(tvbuff_t *tvb, gint16 offset, proto_tree *tlv_
static gint16 dissect_qos_list(tvbuff_t *tvb, gint16 offset, proto_tree *tlv_tree)
{
proto_tree *subtree;
proto_tree_add_item(tlv_tree, hf_num_cos, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_text(tlv_tree, tvb, offset, 1, "MIN_PK_TX_DELAY- ");
offset = dissect_mih_list(tvb, offset, tlv_tree, dissect_qos_val);
proto_tree_add_text(tlv_tree, tvb, offset, 1, "AVG_PK_TX_DELAY- ");
offset = dissect_mih_list(tvb, offset, tlv_tree, dissect_qos_val);
proto_tree_add_text(tlv_tree, tvb, offset, 1, "MAX_PK_TX_DELAY- ");
offset = dissect_mih_list(tvb, offset, tlv_tree, dissect_qos_val);
proto_tree_add_text(tlv_tree, tvb, offset, 1, "PK_DELAY_JITTER - ");
offset = dissect_mih_list(tvb, offset, tlv_tree, dissect_qos_val);
proto_tree_add_text(tlv_tree, tvb, offset, 1, "PK_LOSS_RATE- ");
offset = dissect_mih_list(tvb, offset, tlv_tree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 1, ett_min_pk_tx_delay, NULL, "MIN_PK_TX_DELAY");
offset = dissect_mih_list(tvb, offset, subtree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 1, ett_avg_pk_tx_delay, NULL, "AVG_PK_TX_DELAY");
offset = dissect_mih_list(tvb, offset, subtree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 1, ett_max_pk_tx_delay, NULL, "MAX_PK_TX_DELAY");
offset = dissect_mih_list(tvb, offset, subtree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 1, ett_pk_delay_jitter, NULL, "PK_DELAY_JITTER");
offset = dissect_mih_list(tvb, offset, subtree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 1, ett_pk_loss_rate, NULL, "PK_LOSS_RATE");
offset = dissect_mih_list(tvb, offset, subtree, dissect_qos_val);
return (offset);
}
@ -1198,53 +1219,53 @@ static gint16 dissect_link_poa(tvbuff_t *tvb, gint16 offset, proto_tree *tlv_tre
static gint16 dissect_rq_result(tvbuff_t *tvb, gint16 offset, proto_tree *tlv_tree)
{
proto_tree *temp = NULL;
temp = proto_tree_add_text(tlv_tree, tvb, offset, 1, "List of preffered links:");
offset = dissect_link_poa(tvb, offset, temp);
proto_tree *subtree;
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 1, ett_list_prefer_link, NULL, "List of preffered links");
offset = dissect_link_poa(tvb, offset, subtree);
offset = dissect_qos_list(tvb, offset, tlv_tree);
offset++;
switch(tvb_get_guint8(tvb, offset-1))
{
case 1: proto_tree_add_text(tlv_tree, tvb, offset, 1, "IP methods supported: ");
proto_tree_add_item(tlv_tree, hf_boolean, tvb, offset, 1, ENC_BIG_ENDIAN);
case 1:
proto_tree_add_item(tlv_tree, hf_ip_methods_supported, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
break;
case 2: temp = proto_tree_add_text(tlv_tree, tvb, offset, 2, "ip configuration methods- ");
proto_tree_add_bitmask(temp, tvb, offset, hf_cfg_mthds, ett_cfg_mtd_bitmap, cfg_fields, ENC_BIG_ENDIAN);
case 2:
proto_tree_add_bitmask(tlv_tree, tvb, offset, hf_cfg_mthds, ett_cfg_mtd_bitmap, cfg_fields, ENC_BIG_ENDIAN);
offset += 2;
break;
}
offset++;
switch(tvb_get_guint8(tvb, offset-1))
{
case 1: proto_tree_add_text(tlv_tree, tvb, offset, 1, "IP DHCP services: ");
proto_tree_add_item(tlv_tree, hf_boolean, tvb, offset, 1, ENC_BIG_ENDIAN);
case 1:
proto_tree_add_item(tlv_tree, hf_ip_dhcp_services, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
break;
case 2: proto_tree_add_text(tlv_tree, tvb, offset, 1, "IP DHCP server: ");
offset = dissect_ip_addr(tvb, offset, tlv_tree);
case 2: subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 1, ett_ip_dhcp_server, NULL, "IP DHCP server");
offset = dissect_ip_addr(tvb, offset, subtree);
break;
}
offset++;
switch(tvb_get_guint8(tvb, offset-1))
{
case 1: proto_tree_add_text(tlv_tree, tvb, offset, 1, "FN Agent ");
proto_tree_add_item(tlv_tree, hf_boolean, tvb, offset, 1, ENC_BIG_ENDIAN);
case 1:
proto_tree_add_item(tlv_tree, hf_fn_agent, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
break;
case 2: proto_tree_add_text(tlv_tree, tvb, offset, 1, "FN Agent: ");
offset = dissect_ip_addr(tvb, offset, tlv_tree);
case 2: subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 1, ett_fn_agent, NULL, "FN Agent");
offset = dissect_ip_addr(tvb, offset, subtree);
break;
}
offset++;
switch(tvb_get_guint8(tvb, offset-1))
{
case 1: proto_tree_add_text(tlv_tree, tvb, offset, 1, "Access Router ");
proto_tree_add_item(tlv_tree, hf_boolean, tvb, offset, 1, ENC_BIG_ENDIAN);
case 1:
proto_tree_add_item(tlv_tree, hf_access_router, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
break;
case 2: proto_tree_add_text(tlv_tree, tvb, offset, 1, "Access Router: ");
offset = dissect_ip_addr(tvb, offset, tlv_tree);
case 2: subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 1, ett_access_router, NULL, "Access Router");
offset = dissect_ip_addr(tvb, offset, subtree);
break;
}
return (offset+1);
@ -1407,20 +1428,20 @@ static gint16 dissect_link_param_type(tvbuff_t *tvb, gint16 offset, proto_tree *
static void dissect_link_status_req(tvbuff_t *tvb, gint16 offset, proto_tree *tlv_tree)
{
proto_tree *tree_temp;
proto_tree *subtree;
/*LINK_STATES_REQ*/
guint16 temp = tvb_get_ntohs(tvb, offset);
if(!temp)
{
tree_temp = proto_tree_add_text(tlv_tree, tvb, offset, 3, "LINK_STATES_REQ: ");
proto_tree_add_item(tree_temp, hf_op_mode, tvb, offset+2, 1, ENC_BIG_ENDIAN);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 3, ett_link_states_req, NULL, "LINK_STATES_REQ: ");
proto_tree_add_item(subtree, hf_op_mode, tvb, offset+2, 1, ENC_BIG_ENDIAN);
offset+=3;
}
else
{
tree_temp = proto_tree_add_text(tlv_tree, tvb, offset, 4, "LINK_STATES_REQ: ");
proto_tree_add_item(tree_temp, hf_channel_id, tvb, offset+2, 2, ENC_BIG_ENDIAN);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 4, ett_link_states_req, NULL, "LINK_STATES_REQ: ");
proto_tree_add_item(subtree, hf_channel_id, tvb, offset+2, 2, ENC_BIG_ENDIAN);
offset+=4;
}
@ -1429,13 +1450,12 @@ static void dissect_link_status_req(tvbuff_t *tvb, gint16 offset, proto_tree *tl
/*LINK_DESC_REQ*/
temp = tvb_get_ntohs(tvb, offset);
tree_temp = proto_tree_add_text(tlv_tree, tvb, offset, 3, "LINK_DESC_REQ: ");
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset, 3, ett_link_desc_req, NULL, "LINK_DESC_REQ");
offset+=2;
if(!temp)
proto_tree_add_item(tree_temp, hf_num_cos, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(subtree, hf_num_cos, tvb, offset, 1, ENC_BIG_ENDIAN);
else
proto_tree_add_item(tree_temp, hf_num_queue, tvb, offset, 1, ENC_BIG_ENDIAN);
return ;
proto_tree_add_item(subtree, hf_num_queue, tvb, offset, 1, ENC_BIG_ENDIAN);
}
static gint16 dissect_link_cfg_status(tvbuff_t *tvb, gint16 offset, proto_tree *tlv_tree)
@ -1462,6 +1482,7 @@ static gint16 dissect_link_param(tvbuff_t *tvb, gint16 offset, proto_tree *tlv_t
}
else
{
proto_tree *subtree;
offset ++;
/*QOS_PARAM_VALUE*/
switch(tvb_get_guint8(tvb, offset))
@ -1471,24 +1492,24 @@ static gint16 dissect_link_param(tvbuff_t *tvb, gint16 offset, proto_tree *tlv_t
offset += 2;
break;
case 1:
proto_tree_add_text(tlv_tree, tvb, offset+1, 1, "MIN_PK_TX_DELAY- ");
offset = dissect_mih_list(tvb, offset+1, tlv_tree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset+1, 1, ett_min_pk_tx_delay, NULL, "MIN_PK_TX_DELAY");
offset = dissect_mih_list(tvb, offset+1, subtree, dissect_qos_val);
break;
case 2:
proto_tree_add_text(tlv_tree, tvb, offset+1, 1, "AVG_PK_TX_DELAY- ");
offset = dissect_mih_list(tvb, offset+1, tlv_tree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset+1, 1, ett_avg_pk_tx_delay, NULL, "AVG_PK_TX_DELAY");
offset = dissect_mih_list(tvb, offset+1, subtree, dissect_qos_val);
break;
case 3:
proto_tree_add_text(tlv_tree, tvb, offset+1, 1, "MAX_PK_TX_DELAY- ");
offset = dissect_mih_list(tvb, offset+1, tlv_tree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset+1, 1, ett_max_pk_tx_delay, NULL, "MAX_PK_TX_DELAY");
offset = dissect_mih_list(tvb, offset+1, subtree, dissect_qos_val);
break;
case 4:
proto_tree_add_text(tlv_tree, tvb, offset+1, 1, "PK_DELAY_JITTER - ");
offset = dissect_mih_list(tvb, offset+1, tlv_tree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset+1, 1, ett_pk_delay_jitter, NULL, "PK_DELAY_JITTER");
offset = dissect_mih_list(tvb, offset+1, subtree, dissect_qos_val);
break;
case 5:
proto_tree_add_text(tlv_tree, tvb, offset+1, 1, "PK_LOSS_RATE- ");
offset = dissect_mih_list(tvb, offset+1, tlv_tree, dissect_qos_val);
subtree = proto_tree_add_subtree(tlv_tree, tvb, offset+1, 1, ett_pk_loss_rate, NULL, "PK_LOSS_RATE");
offset = dissect_mih_list(tvb, offset+1, subtree, dissect_qos_val);
break;
}
}
@ -1944,7 +1965,7 @@ static void dissect_mih_tlv(tvbuff_t *tvb,int offset, proto_tree *tlv_tree, guin
case VEND_SPECIFIC_TLV :
/*Vendor specific tlv*/
proto_tree_add_text(tlv_tree, tvb, offset, length, "Vendor Specific TLV :%s", tvb_get_string_enc(wmem_packet_scope(), tvb, offset, length, ENC_ASCII));
proto_tree_add_item(tlv_tree, hf_vendor_specific_tlv, tvb, offset, length, ENC_ASCII|ENC_NA);
break;
default :/*did not match type*/
@ -1952,15 +1973,15 @@ static void dissect_mih_tlv(tvbuff_t *tvb,int offset, proto_tree *tlv_tree, guin
/*RESERVED TLVs*/
if(type > 63 && type < 100)
proto_tree_add_text(tlv_tree, tvb, offset, length, "Reserved TLV :%s", tvb_get_string_enc(wmem_packet_scope(), tvb, offset, length, ENC_ASCII));
proto_tree_add_item(tlv_tree, hf_reserved_tlv, tvb, offset, length, ENC_ASCII|ENC_NA);
/*EXPERIMENTAL TLVs*/
else if(type > 100 && type < 255)
proto_tree_add_text(tlv_tree, tvb, offset, length, "Experimental TLV :%s", tvb_get_string_enc(wmem_packet_scope(), tvb, offset, length, ENC_ASCII));
proto_tree_add_item(tlv_tree, hf_experimental_tlv, tvb, offset, length, ENC_ASCII|ENC_NA);
/*UNKNOWN TLVs*/
else
proto_tree_add_text(tlv_tree, tvb, offset, length, "UNKNOWN TLV :%s", tvb_get_string_enc(wmem_packet_scope(), tvb, offset, length, ENC_ASCII));
proto_tree_add_item(tlv_tree, hf_unknown_tlv, tvb, offset, length, ENC_ASCII|ENC_NA);
}
return;
}
@ -2175,12 +2196,12 @@ static void dissect_mih(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
else
{
proto_tree_add_text(mih_tree, tvb, offset, -1, "FRAGMENTED TLV");
proto_tree_add_item(mih_tree, hf_fragmented_tlv, tvb, offset, -1, ENC_NA);
payload_length = 0;
}
}
if(fragment!=0)
proto_tree_add_text(mih_tree, tvb, offset, -1, "FRAGMENTED TLV");
proto_tree_add_item(mih_tree, hf_fragmented_tlv, tvb, offset, -1, ENC_NA);
}
/*dissector initialistaion*/
@ -2465,10 +2486,46 @@ void proto_register_mih(void)
}
},
{
&hf_boolean,
&hf_ip_methods_supported,
{
"flag",
"mih.bool",
"IP methods supported",
"mih.ip_methods_supported",
FT_UINT8,
BASE_DEC,
VALS(boolean_types),
0x0,
NULL, HFILL
}
},
{
&hf_ip_dhcp_services,
{
"IP DHCP services",
"mih.ip_dhcp_services",
FT_UINT8,
BASE_DEC,
VALS(boolean_types),
0x0,
NULL, HFILL
}
},
{
&hf_fn_agent,
{
"FN Agent",
"mih.fn_agent",
FT_UINT8,
BASE_DEC,
VALS(boolean_types),
0x0,
NULL, HFILL
}
},
{
&hf_access_router,
{
"Access Router",
"mih.access_router",
FT_UINT8,
BASE_DEC,
VALS(boolean_types),
@ -3652,6 +3709,66 @@ void proto_register_mih(void)
NULL, HFILL
}
},
{
&hf_vendor_specific_tlv,
{
"Vendor Specific TLV",
"mih.vendor_specific_tlv",
FT_STRING,
BASE_NONE,
NULL,
0x0,
NULL, HFILL
}
},
{
&hf_reserved_tlv,
{
"Reserved TLV",
"mih.reserved_tlv",
FT_STRING,
BASE_NONE,
NULL,
0x0,
NULL, HFILL
}
},
{
&hf_experimental_tlv,
{
"Experimental TLV",
"mih.experimental_tlv",
FT_STRING,
BASE_NONE,
NULL,
0x0,
NULL, HFILL
}
},
{
&hf_unknown_tlv,
{
"UNKNOWN TLV",
"mih.unknown_tlv",
FT_STRING,
BASE_NONE,
NULL,
0x0,
NULL, HFILL
}
},
{
&hf_fragmented_tlv,
{
"FRAGMENTED TLV",
"mih.fragmented_tlv",
FT_BYTES,
BASE_NONE,
NULL,
0x0,
NULL, HFILL
}
},
/*event related hf fields*/
{
@ -4729,7 +4846,18 @@ void proto_register_mih(void)
&ett_subtype_ieee80211_bitmap,
&ett_subtype_umts_bitmap,
&ett_subtype_cdma2000_bitmap,
&ett_subtype_ieee80216_bitmap
&ett_subtype_ieee80216_bitmap,
&ett_min_pk_tx_delay,
&ett_avg_pk_tx_delay,
&ett_max_pk_tx_delay,
&ett_pk_delay_jitter,
&ett_pk_loss_rate,
&ett_list_prefer_link,
&ett_ip_dhcp_server,
&ett_fn_agent,
&ett_access_router,
&ett_link_states_req,
&ett_link_desc_req,
};
proto_mih = proto_register_protocol("Media-Independent Handover", "MIH", "mih");

View File

@ -60,6 +60,7 @@ static int hf_msrp_request_line = -1;
static int hf_msrp_transactionID = -1;
static int hf_msrp_method = -1;
static int hf_msrp_status_code = -1;
static int hf_msrp_hdr = -1;
static int hf_msrp_msg_hdr = -1;
static int hf_msrp_end_line = -1;
static int hf_msrp_cnt_flg = -1;
@ -472,6 +473,7 @@ dissect_msrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
tvbuff_t *next_tvb;
gint parameter_offset;
gint semi_colon_offset;
gchar* hdr_str;
if ( !check_msrp_header(tvb)){
return 0;
@ -531,9 +533,6 @@ dissect_msrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
col_append_fstr(pinfo->cinfo, COL_INFO, "Transaction ID: %s",
tvb_format_text(tvb, token_2_start, token_2_len));
}else{
proto_tree_add_text(tree, tvb, token_3_start, token_3_len,
"Col %s L=%u", tvb_format_text(tvb, token_3_start, token_3_len),token_3_len);
col_add_fstr(pinfo->cinfo, COL_INFO, "Request: %s ",
tvb_format_text(tvb, token_3_start, token_3_len));
@ -601,17 +600,17 @@ dissect_msrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
/*
* Malformed header - no colon after the name.
*/
proto_tree_add_text(msrp_hdr_tree, tvb, offset,
next_offset - offset, "%s",
tvb_format_text(tvb, offset, linelen));
hdr_str = tvb_format_text(tvb, offset, linelen);
proto_tree_add_string_format(msrp_hdr_tree, hf_msrp_hdr, tvb, offset,
next_offset - offset, hdr_str, "%s", hdr_str);
} else {
header_len = colon_offset - offset;
hf_index = msrp_is_known_msrp_header(tvb, offset, header_len);
if (hf_index == -1) {
proto_tree_add_text(msrp_hdr_tree, tvb,
offset, next_offset - offset, "%s",
tvb_format_text(tvb, offset, linelen));
hdr_str = tvb_format_text(tvb, offset, linelen);
proto_tree_add_string_format(msrp_hdr_tree, hf_msrp_hdr, tvb,
offset, next_offset - offset, hdr_str, "%s", hdr_str);
} else {
/*
* Skip whitespace after the colon.
@ -768,6 +767,11 @@ proto_register_msrp(void)
FT_UINT16, BASE_DEC,NULL,0x0,
NULL, HFILL }
},
{ &hf_msrp_hdr,
{ "Header", "msrp.hdr",
FT_STRING, BASE_NONE,NULL,0x0,
NULL, HFILL }
},
{ &hf_msrp_msg_hdr,
{ "Message Header", "msrp.msg.hdr",
FT_NONE, BASE_NONE,NULL,0x0,

View File

@ -112,6 +112,7 @@ static gint ett_rtse_CallingSSuserReference = -1;
static expert_field ei_rtse_dissector_oid_not_implemented = EI_INIT;
static expert_field ei_rtse_unknown_rtse_pdu = EI_INIT;
static expert_field ei_rtse_abstract_syntax = EI_INIT;
static dissector_table_t rtse_oid_dissector_table=NULL;
static GHashTable *oid_table=NULL;
@ -225,7 +226,8 @@ call_rtse_external_type_callback(gboolean implicit_tag _U_, tvbuff_t *tvb, int o
oid = (const char *)find_oid_by_pres_ctx_id(actx->pinfo, actx->external.indirect_reference);
if(!oid)
proto_tree_add_text(tree, tvb, offset, tvb_captured_length_remaining(tvb, offset), "Unable to determine abstract syntax for indirect reference: %d.", actx->external.indirect_reference);
proto_tree_add_expert_format(tree, actx->pinfo, &ei_rtse_abstract_syntax, tvb, offset, tvb_captured_length_remaining(tvb, offset),
"Unable to determine abstract syntax for indirect reference: %d.", actx->external.indirect_reference);
} else if (actx->external.direct_ref_present) {
oid = actx->external.direct_reference;
}
@ -733,7 +735,7 @@ dissect_rtse_RTSE_apdus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
/*--- End of included file: packet-rtse-fn.c ---*/
#line 190 "../../asn1/rtse/packet-rtse-template.c"
#line 192 "../../asn1/rtse/packet-rtse-template.c"
/*
* Dissect RTSE PDUs inside a PPDU.
@ -1000,7 +1002,7 @@ void proto_register_rtse(void) {
NULL, HFILL }},
/*--- End of included file: packet-rtse-hfarr.c ---*/
#line 356 "../../asn1/rtse/packet-rtse-template.c"
#line 358 "../../asn1/rtse/packet-rtse-template.c"
};
/* List of subtrees */
@ -1022,12 +1024,13 @@ void proto_register_rtse(void) {
&ett_rtse_CallingSSuserReference,
/*--- End of included file: packet-rtse-ettarr.c ---*/
#line 365 "../../asn1/rtse/packet-rtse-template.c"
#line 367 "../../asn1/rtse/packet-rtse-template.c"
};
static ei_register_info ei[] = {
{ &ei_rtse_dissector_oid_not_implemented, { "rtse.dissector_oid_not_implemented", PI_UNDECODED, PI_WARN, "RTSE: Dissector for OID not implemented", EXPFILL }},
{ &ei_rtse_unknown_rtse_pdu, { "rtse.unknown_rtse_pdu", PI_UNDECODED, PI_WARN, "Unknown RTSE PDU", EXPFILL }},
{ &ei_rtse_abstract_syntax, { "rtse.bad_abstract_syntax", PI_PROTOCOL, PI_WARN, "Unable to determine abstract syntax for indirect reference", EXPFILL }},
};
expert_module_t* expert_rtse;

View File

@ -274,6 +274,8 @@ static gint ett_sbus_data = -1;
static expert_field ei_sbus_retry = EI_INIT;
static expert_field ei_sbus_telegram_not_acked = EI_INIT;
static expert_field ei_sbus_crc_bad = EI_INIT;
static expert_field ei_sbus_telegram_not_implemented = EI_INIT;
static expert_field ei_sbus_no_request_telegram = EI_INIT;
/* True/False strings*/
static const true_false_string tfs_sbus_flags= {
@ -1045,32 +1047,29 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
/* Request: Write Real time clock*/
case SBUS_WR_RTC:
sbus_helper = tvb_get_guint8(tvb, (offset +5)); /*hours*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +6)); /*minutes*/
sbus_helper2 = tvb_get_guint8(tvb, (offset +7)); /*seconds*/
proto_tree_add_text(sbus_tree, tvb, (offset +5), 3,
"Time (HH:MM:SS): %02x:%02x:%02x", sbus_helper, sbus_helper1, sbus_helper2);
sbus_helper = tvb_get_guint8(tvb, (offset +2)); /*year*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +3)); /*month*/
sbus_helper2 = tvb_get_guint8(tvb, (offset +4)); /*day*/
proto_tree_add_text(sbus_tree, tvb, (offset +2), 3,
"Date (YY/MM/DD): %02x/%02x/%02x", sbus_helper, sbus_helper1, sbus_helper2);
sbus_helper = tvb_get_guint8(tvb, (offset)); /*year-week*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +1)); /*week-day*/
proto_tree_add_text(sbus_tree, tvb, offset, 2,
"Calendar week: %x, Week day: %x", sbus_helper, sbus_helper1);
/*Add subtree for Data*/
sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset,
8, ett_sbus_data, NULL, "Clock data");
proto_tree_add_item(sbusdata_tree,
hf_sbus_week_day, tvb, offset, 2, ENC_BIG_ENDIAN);
sbus_helper = tvb_get_guint8(tvb, (offset)); /*year-week*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +1)); /*week-day*/
proto_tree_add_uint_format_value(sbusdata_tree,
hf_sbus_week_day, tvb, offset, 2, tvb_get_ntohs(tvb, offset),
"%x, Week day: %x", sbus_helper, sbus_helper1);
offset += 2;
proto_tree_add_item(sbusdata_tree,
hf_sbus_date, tvb, offset, 3, ENC_BIG_ENDIAN);
sbus_helper = tvb_get_guint8(tvb, (offset)); /*year*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +1)); /*month*/
sbus_helper2 = tvb_get_guint8(tvb, (offset +2)); /*day*/
proto_tree_add_uint_format_value(sbusdata_tree,
hf_sbus_date, tvb, offset, 3, tvb_get_ntoh24(tvb, offset),
"%02x/%02x/%02x", sbus_helper, sbus_helper1, sbus_helper2);
offset += 3;
proto_tree_add_item(sbusdata_tree,
hf_sbus_time, tvb, offset, 3, ENC_BIG_ENDIAN);
sbus_helper = tvb_get_guint8(tvb, (offset)); /*hours*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +1)); /*minutes*/
sbus_helper2 = tvb_get_guint8(tvb, (offset +2)); /*seconds*/
proto_tree_add_uint_format_value(sbusdata_tree,
hf_sbus_time, tvb, offset, 3, tvb_get_ntoh24(tvb, offset),
"%02x:%02x:%02x", sbus_helper, sbus_helper1, sbus_helper2);
offset += 3;
break;
@ -1470,8 +1469,7 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
default:
if (sbus_eth_len > 13) { /*13 bytes is the minimal length of a request telegram...*/
sbus_helper = sbus_eth_len - (offset + 2);
proto_tree_add_text(sbus_tree, tvb, offset, sbus_helper,
"This telegram isn't implemented in the dissector.");
proto_tree_add_expert(sbus_tree, pinfo, &ei_sbus_telegram_not_implemented, tvb, offset, sbus_helper);
offset = offset + sbus_helper;
}
break;
@ -1544,32 +1542,29 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
/* Response: Real time clock value*/
case SBUS_RD_RTC:
sbus_helper = tvb_get_guint8(tvb, (offset +5)); /*hours*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +6)); /*minutes*/
sbus_helper2 = tvb_get_guint8(tvb, (offset +7)); /*seconds*/
proto_tree_add_text(sbus_tree, tvb, (offset +5), 3,
"Time (HH:MM:SS): %02x:%02x:%02x", sbus_helper, sbus_helper1, sbus_helper2);
sbus_helper = tvb_get_guint8(tvb, (offset +2)); /*year*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +3)); /*month*/
sbus_helper2 = tvb_get_guint8(tvb, (offset +4)); /*day*/
proto_tree_add_text(sbus_tree, tvb, (offset +2), 3,
"Date (YY/MM/DD): %02x/%02x/%02x", sbus_helper, sbus_helper1, sbus_helper2);
sbus_helper = tvb_get_guint8(tvb, (offset)); /*year-week*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +1)); /*week-day*/
proto_tree_add_text(sbus_tree, tvb, offset, 2,
"Calendar week: %x, Week day: %x", sbus_helper, sbus_helper1);
/*Add subtree for Data*/
sbusdata_tree = proto_tree_add_subtree(sbus_tree, tvb, offset,
8, ett_sbus_data, NULL, "Clock data");
proto_tree_add_item(sbusdata_tree,
hf_sbus_week_day, tvb, offset, 2, ENC_BIG_ENDIAN);
sbus_helper = tvb_get_guint8(tvb, (offset)); /*year-week*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +1)); /*week-day*/
proto_tree_add_uint_format_value(sbusdata_tree,
hf_sbus_week_day, tvb, offset, 2, tvb_get_ntohs(tvb, offset),
"%x, Week day: %x", sbus_helper, sbus_helper1);
offset += 2;
proto_tree_add_item(sbusdata_tree,
hf_sbus_date, tvb, offset, 3, ENC_BIG_ENDIAN);
sbus_helper = tvb_get_guint8(tvb, (offset)); /*year*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +1)); /*month*/
sbus_helper2 = tvb_get_guint8(tvb, (offset +2)); /*day*/
proto_tree_add_uint_format_value(sbusdata_tree,
hf_sbus_date, tvb, offset, 3, tvb_get_ntoh24(tvb, offset),
"%02x/%02x/%02x", sbus_helper, sbus_helper1, sbus_helper2);
offset += 3;
proto_tree_add_item(sbusdata_tree,
hf_sbus_time, tvb, offset, 3, ENC_BIG_ENDIAN);
sbus_helper = tvb_get_guint8(tvb, (offset)); /*hours*/
sbus_helper1 = tvb_get_guint8(tvb, (offset +1)); /*minutes*/
sbus_helper2 = tvb_get_guint8(tvb, (offset +2)); /*seconds*/
proto_tree_add_uint_format_value(sbusdata_tree,
hf_sbus_time, tvb, offset, 3, tvb_get_ntoh24(tvb, offset),
"%02x:%02x:%02x", sbus_helper, sbus_helper1, sbus_helper2);
offset += 3;
break;
@ -1829,8 +1824,7 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
/*Inform that response was not dissected and add remaining length*/
default:
sbus_helper = sbus_eth_len - (offset + 2);
proto_tree_add_text(sbus_tree, tvb, offset, sbus_helper,
"This telegram isn't implemented in the dissector.");
proto_tree_add_expert(sbus_tree, pinfo, &ei_sbus_telegram_not_implemented, tvb, offset, sbus_helper);
offset = offset + sbus_helper;
break;
}
@ -1838,8 +1832,7 @@ dissect_sbus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_
/*calculate the offset in case the request telegram was not found or was broadcasted*/
sbus_eth_len = tvb_get_ntohl(tvb,0);
sbus_helper = sbus_eth_len - 11;
proto_tree_add_text(sbus_tree, tvb, offset, sbus_helper,
"Not dissected, could not find request telegram");
proto_tree_add_expert(sbus_tree, pinfo, &ei_sbus_no_request_telegram, tvb, offset, sbus_helper);
offset = sbus_eth_len - 2;
}
@ -2145,7 +2138,7 @@ proto_register_sbus(void)
},
{ &hf_sbus_week_day,
{ "RTC calendar week and week day", "sbus.rtc.week_day",
{ "Calendar week", "sbus.rtc.week_day",
FT_UINT16, BASE_HEX, NULL, 0,
"Calendar week and week day number of the real time clock", HFILL }
},
@ -2313,6 +2306,8 @@ proto_register_sbus(void)
{ &ei_sbus_retry, { "sbus.retry", PI_SEQUENCE, PI_NOTE, "Repeated telegram (due to timeout?)", EXPFILL }},
{ &ei_sbus_telegram_not_acked, { "sbus.telegram_not_acked", PI_RESPONSE_CODE, PI_CHAT, "Telegram not acknowledged by PCD", EXPFILL }},
{ &ei_sbus_crc_bad, { "sbus.crc_bad.expert", PI_CHECKSUM, PI_ERROR, "Bad checksum", EXPFILL }},
{ &ei_sbus_telegram_not_implemented, { "sbus.telegram_not_implemented", PI_UNDECODED, PI_WARN, "This telegram isn't implemented in the dissector", EXPFILL }},
{ &ei_sbus_no_request_telegram, { "sbus.no_request_telegram", PI_UNDECODED, PI_WARN, "Not dissected, could not find request telegram", EXPFILL }},
};
expert_module_t* expert_sbus;

View File

@ -38,6 +38,7 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/expert.h>
#include <epan/stats_tree.h>
#include "packet-tcp.h"
@ -165,7 +166,6 @@ static int hf_ucp_parm_REQ_OT = -1;
static int hf_ucp_parm_SSTAT = -1;
static int hf_ucp_parm_LMN = -1;
static int hf_ucp_parm_NMESS = -1;
static int hf_ucp_parm_NMESS_str = -1;
static int hf_ucp_parm_NAdC = -1;
static int hf_ucp_parm_NT = -1;
static int hf_ucp_parm_NPID = -1;
@ -213,6 +213,11 @@ static int hf_ucp_parm_RES2 = -1;
static int hf_ucp_parm_MVP = -1;
static int hf_ucp_parm_EC = -1;
static int hf_ucp_parm_SM = -1;
static int hf_ucp_not_subscribed = -1;
static int hf_ucp_ga_roaming = -1;
static int hf_ucp_call_barring = -1;
static int hf_ucp_deferred_delivery = -1;
static int hf_ucp_diversion = -1;
static int hf_ucp_parm_XSer = -1;
static int hf_xser_service = -1;
@ -224,6 +229,9 @@ static gint ett_ucp = -1;
static gint ett_sub = -1;
static gint ett_XSer = -1;
static expert_field ei_ucp_stx_missing = EI_INIT;
/* Tap */
static int ucp_tap = -1;
@ -1507,11 +1515,9 @@ add_24R(proto_tree *tree, tvbuff_t *tvb, ucp_tap_rec_t *tap_rec)
intval = UcpHandleByte(hf_ucp_parm_ACK);
if (intval == 'A') {
if ((intval = tvb_get_guint8(tvb, offset++)) != '/') {
proto_tree_add_text(tree, tvb, offset - 1, 1,
"GA roaming definitions");
proto_tree_add_item(tree, hf_ucp_ga_roaming, tvb, offset - 1, 1, ENC_NA);
if (intval == 'N') {
proto_tree_add_text(tree, tvb, offset -1, 1,
"Not subscribed/not allowed");
proto_tree_add_item(tree, hf_ucp_not_subscribed, tvb, offset -1, 1, ENC_NA);
offset++;
} else {
--offset;
@ -1521,11 +1527,9 @@ add_24R(proto_tree *tree, tvbuff_t *tvb, ucp_tap_rec_t *tap_rec)
}
}
if ((intval = tvb_get_guint8(tvb, offset++)) != '/') {
proto_tree_add_text(tree, tvb, offset - 1, 1,
"Call barring definitions");
proto_tree_add_item(tree, hf_ucp_call_barring, tvb, offset - 1, 1, ENC_NA);
if (intval == 'N') {
proto_tree_add_text(tree, tvb, offset -1, 1,
"Not subscribed/not allowed");
proto_tree_add_item(tree, hf_ucp_not_subscribed, tvb, offset -1, 1, ENC_NA);
offset++;
} else {
--offset;
@ -1535,11 +1539,9 @@ add_24R(proto_tree *tree, tvbuff_t *tvb, ucp_tap_rec_t *tap_rec)
}
}
if ((intval = tvb_get_guint8(tvb, offset++)) != '/') {
proto_tree_add_text(tree, tvb, offset - 1, 1,
"Deferred delivery definitions");
proto_tree_add_item(tree, hf_ucp_deferred_delivery, tvb, offset - 1, 1, ENC_NA);
if (intval == 'N') {
proto_tree_add_text(tree, tvb, offset -1, 1,
"Not subscribed/not allowed");
proto_tree_add_item(tree, hf_ucp_not_subscribed, tvb, offset -1, 1, ENC_NA);
offset++;
} else {
--offset;
@ -1549,11 +1551,9 @@ add_24R(proto_tree *tree, tvbuff_t *tvb, ucp_tap_rec_t *tap_rec)
}
}
if ((intval = tvb_get_guint8(tvb, offset++)) != '/') {
proto_tree_add_text(tree, tvb, offset - 1, 1,
"Diversion definitions");
proto_tree_add_item(tree, hf_ucp_diversion, tvb, offset - 1, 1, ENC_NA);
if (intval == 'N') {
proto_tree_add_text(tree, tvb, offset -1, 1,
"Not subscribed/not allowed");
proto_tree_add_item(tree, hf_ucp_not_subscribed, tvb, offset -1, 1, ENC_NA);
offset++;
} else {
--offset;
@ -1565,8 +1565,7 @@ add_24R(proto_tree *tree, tvbuff_t *tvb, ucp_tap_rec_t *tap_rec)
UcpHandleInt(hf_ucp_parm_LMN);
if ((intval = tvb_get_guint8(tvb, offset++)) != '/') {
if (intval == 'N') {
proto_tree_add_string(tree, hf_ucp_parm_NMESS_str, tvb,
offset -1, 1, "Not subscribed/not allowed");
proto_tree_add_item(tree, hf_ucp_not_subscribed, tvb, offset -1, 1, ENC_NA);
offset++;
} else {
--offset;
@ -1778,7 +1777,7 @@ dissect_ucp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da
col_clear(pinfo->cinfo, COL_INFO);
if (tvb_get_guint8(tvb, 0) != UCP_STX){
proto_tree_add_text(tree, tvb, 0, -1,"UCP_STX missing, this is not a new packet");
proto_tree_add_expert(tree, pinfo, &ei_ucp_stx_missing, tvb, 0, -1);
return tvb_length(tvb);
}
@ -2397,13 +2396,6 @@ proto_register_ucp(void)
HFILL
}
},
{ &hf_ucp_parm_NMESS_str,
{ "NMESS_str", "ucp.parm.NMESS_str",
FT_STRING, BASE_NONE, NULL, 0x00,
"Number of stored messages.",
HFILL
}
},
{ &hf_ucp_parm_NPID,
{ "NPID", "ucp.parm.NPID",
FT_UINT16, BASE_DEC, VALS(vals_parm_PID), 0x00,
@ -2726,6 +2718,41 @@ proto_register_ucp(void)
HFILL
}
},
{ &hf_ucp_ga_roaming,
{ "GA roaming definitions", "ucp.parm.ga_roaming",
FT_NONE, BASE_NONE, NULL, 0x00,
NULL,
HFILL
}
},
{ &hf_ucp_call_barring,
{ "Call barring definitions", "ucp.parm.call_barring",
FT_NONE, BASE_NONE, NULL, 0x00,
NULL,
HFILL
}
},
{ &hf_ucp_deferred_delivery,
{ "Deferred delivery definitions", "ucp.parm.deferred_delivery",
FT_NONE, BASE_NONE, NULL, 0x00,
NULL,
HFILL
}
},
{ &hf_ucp_diversion,
{ "Diversion definitions", "ucp.parm.diversion",
FT_NONE, BASE_NONE, NULL, 0x00,
NULL,
HFILL
}
},
{ &hf_ucp_not_subscribed,
{ "Not subscribed/not allowed", "ucp.parm.not_subscribed",
FT_NONE, BASE_NONE, NULL, 0x00,
NULL,
HFILL
}
},
{ &hf_xser_service,
{ "Type of service", "ucp.xser.service",
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &vals_xser_service_ext, 0x00,
@ -2754,7 +2781,13 @@ proto_register_ucp(void)
&ett_sub,
&ett_XSer
};
static ei_register_info ei[] = {
{ &ei_ucp_stx_missing, { "ucp.stx_missing", PI_MALFORMED, PI_ERROR, "UCP_STX missing, this is not a new packet", EXPFILL }},
};
module_t *ucp_module;
expert_module_t* expert_ucp;
/* Register the protocol name and description */
proto_ucp = proto_register_protocol("Universal Computer Protocol",
@ -2763,6 +2796,8 @@ proto_register_ucp(void)
/* Required function calls to register header fields and subtrees used */
proto_register_field_array(proto_ucp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
expert_ucp = expert_register_protocol(proto_ucp);
expert_register_field_array(expert_ucp, ei, array_length(ei));
/* Register for tapping */
ucp_tap = register_tap("ucp");

View File

@ -340,6 +340,7 @@ sub is_proto_dup_whitelist {
if (($_[0] eq "amqp") && (index($_[1], "amqp") >= 0)) {return 1;}
if (($_[0] eq "bat") && (index($_[1], "batman") >= 0)) {return 1;}
if (($_[0] eq "browser") && (index($_[1], "browser_") >= 0)) {return 1;}
if (($_[0] eq "dlsw") && (index($_[1], "dlsw_version") >= 0)) {return 1;}
if (($_[0] eq "dns") && (index($_[1], "dnskey") >= 0)) {return 1;}
if (($_[0] eq "exported_pdu") && (index($_[1], "exported_pdu") >= 0)) {return 1;}
if (($_[0] eq "fc") && (index($_[1], "fctl") >= 0)) {return 1;}