diff options
-rw-r--r-- | asn1/rtse/packet-rtse-template.c | 5 | ||||
-rw-r--r-- | epan/dissectors/packet-dlsw.c | 77 | ||||
-rw-r--r-- | epan/dissectors/packet-fmp.c | 64 | ||||
-rw-r--r-- | epan/dissectors/packet-glusterfs.c | 48 | ||||
-rw-r--r-- | epan/dissectors/packet-mih.c | 246 | ||||
-rw-r--r-- | epan/dissectors/packet-msrp.c | 22 | ||||
-rw-r--r-- | epan/dissectors/packet-rtse.c | 11 | ||||
-rw-r--r-- | epan/dissectors/packet-sbus.c | 89 | ||||
-rw-r--r-- | epan/dissectors/packet-ucp.c | 89 | ||||
-rwxr-xr-x | tools/checkfiltername.pl | 1 |
10 files changed, 446 insertions, 206 deletions
diff --git a/asn1/rtse/packet-rtse-template.c b/asn1/rtse/packet-rtse-template.c index d65043a2c6..39245df991 100644 --- a/asn1/rtse/packet-rtse-template.c +++ b/asn1/rtse/packet-rtse-template.c @@ -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; diff --git a/epan/dissectors/packet-dlsw.c b/epan/dissectors/packet-dlsw.c index 2159fb0d6b..ba686f2f98 100644 --- a/epan/dissectors/packet-dlsw.c +++ b/epan/dissectors/packet-dlsw.c @@ -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; @@ -412,14 +426,20 @@ dissect_dlsw_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data } 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[] = { diff --git a/epan/dissectors/packet-fmp.c b/epan/dissectors/packet-fmp.c index f9eec7a748..aac5c4eee5 100644 --- a/epan/dissectors/packet-fmp.c +++ b/epan/dissectors/packet-fmp.c @@ -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; - - ti = proto_tree_add_text(tree, tvb, offset, 4, "Capabilities"); - - capTree = proto_item_add_subtree(ti, ett_capabilities); + static const int *capabilities[] = { + &hf_fmp_cap_revoke_handle_list, + &hf_fmp_cap_unc_names, + &hf_fmp_cap_cifsv2, + NULL + }; - 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[] = { diff --git a/epan/dissectors/packet-glusterfs.c b/epan/dissectors/packet-glusterfs.c index f2c74a35fe..a064b03910 100644 --- a/epan/dissectors/packet-glusterfs.c +++ b/epan/dissectors/packet-glusterfs.c @@ -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 */ diff --git a/epan/dissectors/packet-mih.c b/epan/dissectors/packet-mih.c index d7a31a0cdf..034c293214 100644 --- a/epan/dissectors/packet-mih.c +++ b/epan/dissectors/packet-mih.c @@ -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"); diff --git a/epan/dissectors/packet-msrp.c b/epan/dissectors/packet-msrp.c index 4e8c07b363..bac386c866 100644 --- a/epan/dissectors/packet-msrp.c +++ b/epan/dissectors/packet-msrp.c @@ -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, diff --git a/epan/dissectors/packet-rtse.c b/epan/dissectors/packet-rtse.c index c892a12384..db5a27d6ed 100644 --- a/epan/dissectors/packet-rtse.c +++ b/epan/dissectors/packet-rtse.c @@ -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; diff --git a/epan/dissectors/packet-sbus.c b/epan/dissectors/packet-sbus.c index 5594d298c4..52d65c45d8 100644 --- a/epan/dissectors/packet-sbus.c +++ b/epan/dissectors/packet-sbus.c @@ -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; diff --git a/epan/dissectors/packet-ucp.c b/epan/dissectors/packet-ucp.c index a333f43f60..8a67390ebd 100644 --- a/epan/dissectors/packet-ucp.c +++ b/epan/dissectors/packet-ucp.c @@ -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"); diff --git a/tools/checkfiltername.pl b/tools/checkfiltername.pl index ff2d49085c..56fa859500 100755 --- a/tools/checkfiltername.pl +++ b/tools/checkfiltername.pl @@ -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;} |