diff options
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-h248.c | 670 | ||||
-rw-r--r-- | epan/dissectors/packet-h248.h | 2 |
2 files changed, 552 insertions, 120 deletions
diff --git a/epan/dissectors/packet-h248.c b/epan/dissectors/packet-h248.c index 09cdb9de2a..4071ca7ccb 100644 --- a/epan/dissectors/packet-h248.c +++ b/epan/dissectors/packet-h248.c @@ -71,6 +71,9 @@ static int hf_h248_mtpaddress_pc = -1; static int hf_h248_package_name = -1; static int hf_h248_event_name = -1; static int hf_h248_signal_name = -1; +static int hf_h248_stat_name = -1; +static int hf_h248_property_name = -1; + static int hf_h248_package_bcp_BNCChar_PDU = -1; static int hf_h248_package_annex_C_media = -1; @@ -110,7 +113,22 @@ static int hf_h248_package_annex_C_atc = -1; static int hf_h248_package_annex_C_stc = -1; static int hf_h248_package_annex_C_uppc = -1; +static int hf_h248_package_annex_E_al_parameter_name = -1; +static int hf_h248_package_annex_E_al_strict = -1; +static int hf_h248_package_annex_E_al_init = -1; +static int hf_h248_package_annex_E_al_mindur = -1; +static int hf_h248_package_annex_E_al_maxdur = -1; +static int hf_h248_package_annex_E_al_freq = -1; + +static int hf_h248_package_annex_E_nt_dur = -1; +static int hf_h248_package_annex_E_nt_os = -1; +static int hf_h248_package_annex_E_nt_or = -1; +static int hf_h248_package_annex_E_rtp_ps = -1; +static int hf_h248_package_annex_E_rtp_pr = -1; +static int hf_h248_package_annex_E_rtp_pl = -1; +static int hf_h248_package_annex_E_rtp_jit = -1; +static int hf_h248_package_annex_E_rtp_delay = -1; static int hf_h248_package_3GUP_Mode = -1; static int hf_h248_package_3GUP_UPversions = -1; @@ -270,7 +288,7 @@ static int hf_h248_id = -1; /* INTEGER_0_65535 */ static int hf_h248_iASignalList = -1; /* IndAudSignal */ static int hf_h248_iASignalName = -1; /* PkgdName */ static int hf_h248_digitMapName = -1; /* DigitMapName */ -static int hf_h248_statName = -1; /* PkgdName */ +static int hf_h248_iAStatName = -1; /* PkgdName */ static int hf_h248_packageName = -1; /* Name */ static int hf_h248_packageVersion = -1; /* INTEGER_0_99 */ static int hf_h248_requestId = -1; /* RequestID */ @@ -282,8 +300,8 @@ static int hf_h248_timeNotation = -1; /* TimeNotation */ static int hf_h248_relation = -1; /* Relation */ static int hf_h248_range = -1; /* BOOLEAN */ static int hf_h248_sublist = -1; /* BOOLEAN */ -static int hf_h248_eventParameterName = -1; /* Name */ -static int hf_h248_value = -1; /* Value */ +static int hf_h248_eventParameterName = -1; /* EventOrSigParameterName */ +static int hf_h248_eventParameterValue = -1; /* EventOrSigParameterValue */ static int hf_h248_extraInfo = -1; /* ExtraInfo */ static int hf_h248_EventParameters_item = -1; /* EventParameter */ static int hf_h248_serviceChangeParms = -1; /* ServiceChangeParm */ @@ -306,7 +324,7 @@ static int hf_h248_streamMode = -1; /* StreamMode */ static int hf_h248_reserveValue = -1; /* BOOLEAN */ static int hf_h248_reserveGroup = -1; /* BOOLEAN */ static int hf_h248_propertyParms = -1; /* PropertyParms */ -static int hf_h248_propertyName = -1; /* PkgdName */ +static int hf_h248_propertyName = -1; /* PropertyName */ static int hf_h248_propertyParamValue = -1; /* SEQUENCE_OF_PropertyID */ static int hf_h248_propertyParamValue_item = -1; /* PropertyID */ static int hf_h248_PropertyParms_item = -1; /* PropertyParm */ @@ -343,7 +361,8 @@ static int hf_h248_duration = -1; /* INTEGER_0_65535 */ static int hf_h248_notifyCompletion = -1; /* NotifyCompletion */ static int hf_h248_sigParList = -1; /* SEQUENCE_OF_SigParameter */ static int hf_h248_sigParList_item = -1; /* SigParameter */ -static int hf_h248_sigParameterName = -1; /* Name */ +static int hf_h248_sigParameterName = -1; /* EventOrSigParameterName */ +static int hf_h248_sigParameterValue = -1; /* EventOrSigParameterValue */ static int hf_h248_mtl = -1; /* SEQUENCE_OF_ModemType */ static int hf_h248_mtl_item = -1; /* ModemType */ static int hf_h248_mpl = -1; /* PropertyParms */ @@ -365,7 +384,8 @@ static int hf_h248_timestamp = -1; /* TimeNotation */ static int hf_h248_profileName = -1; /* IA5String_SIZE_1_67 */ static int hf_h248_PackagesDescriptor_item = -1; /* PackagesItem */ static int hf_h248_StatisticsDescriptor_item = -1; /* StatisticsParameter */ -static int hf_h248_statValue = -1; /* Value */ +static int hf_h248_statName = -1; /* StatName */ +static int hf_h248_statValue = -1; /* StatValue */ static int hf_h248_nonStandardIdentifier = -1; /* NonStandardIdentifier */ static int hf_h248_data = -1; /* OCTET_STRING */ static int hf_h248_object = -1; /* OBJECT_IDENTIFIER */ @@ -395,7 +415,7 @@ static int hf_h248_NotifyCompletion_onInterruptByNewSignalDescr = -1; static int hf_h248_NotifyCompletion_otherReason = -1; /*--- End of included file: packet-h248-hf.c ---*/ -#line 126 "packet-h248-template.c" +#line 144 "packet-h248-template.c" /* Initialize the subtree pointers */ static gint ett_h248 = -1; @@ -543,7 +563,7 @@ static gint ett_h248_TimeNotation = -1; static gint ett_h248_Value = -1; /*--- End of included file: packet-h248-ett.c ---*/ -#line 141 "packet-h248-template.c" +#line 159 "packet-h248-template.c" static dissector_handle_t h248_term_handle; @@ -739,6 +759,43 @@ static const value_string event_name_vals[] = { { 0x00010000, "g H.248.1 Annex E" }, { 0x00010001, "g, Cause" }, { 0x00010002, "g, Signal Completion" }, + { 0x00040001, "tonedet, Start tone detected" }, + { 0x00040002, "tonedet, End tone detected" }, + { 0x00040003, "tonedet, Long tone detected" }, + { 0x00060004, "dd, DigitMap Completion Event" }, + { 0x00060010, "dd, DTMF character 0" }, + { 0x00060011, "dd, DTMF character 1" }, + { 0x00060012, "dd, DTMF character 2" }, + { 0x00060013, "dd, DTMF character 3" }, + { 0x00060014, "dd, DTMF character 4" }, + { 0x00060015, "dd, DTMF character 5" }, + { 0x00060016, "dd, DTMF character 6" }, + { 0x00060017, "dd, DTMF character 7" }, + { 0x00060018, "dd, DTMF character 8" }, + { 0x00060019, "dd, DTMF character 9" }, + { 0x0006001a, "dd, DTMF character A" }, + { 0x0006001b, "dd, DTMF character B" }, + { 0x0006001c, "dd, DTMF character C" }, + { 0x0006001d, "dd, DTMF character D" }, + { 0x00060020, "dd, DTMF character *" }, + { 0x00060021, "dd, DTMF character #" }, + { 0x00080030, "cd, Dial Tone" }, + { 0x00080031, "cd, Ringing Tone" }, + { 0x00080032, "cd, Busy Tone" }, + { 0x00080033, "cd, Congestion Tone" }, + { 0x00080034, "cd, Special Information Tone" }, + { 0x00080035, "cd, (Recording) Warning Tone" }, + { 0x00080036, "cd, Payphone Recognition Tone" }, + { 0x00080037, "cd, Call Waiting Tone" }, + { 0x00080038, "cd, Caller Waiting Tone" }, + { 0x00090004, "al, onhook" }, + { 0x00090005, "al, offhook" }, + { 0x00090006, "al, flashhook" }, + { 0x0009ffff, "al, *" }, + { 0x000a0005, "ct, Completion" }, + { 0x000b0005, "nt, network failure" }, + { 0x000b0006, "nt, quality alert" }, + { 0x000c0001, "rtp, Payload Transition" }, { 0x00210000, "Generic Bearer Connection Q.1950 Annex A" }, { 0x00210001, "GB BNC change" }, { 0x800a0000, "Nokia Bearer Characteristics Package" }, @@ -751,6 +808,36 @@ static const value_string event_name_vals[] = { static const value_string signal_name_vals[] = { { 0x00000000, "Media stream properties H.248.1 Annex C" }, { 0x00010000, "g H.248.1 Annex E" }, + { 0x00030001, "tonegen, Play tone" }, + { 0x00050010, "dg, DTMF character 0" }, + { 0x00050011, "dg, DTMF character 1" }, + { 0x00050012, "dg, DTMF character 2" }, + { 0x00050013, "dg, DTMF character 3" }, + { 0x00050014, "dg, DTMF character 4" }, + { 0x00050015, "dg, DTMF character 5" }, + { 0x00050016, "dg, DTMF character 6" }, + { 0x00050017, "dg, DTMF character 7" }, + { 0x00050018, "dg, DTMF character 8" }, + { 0x00050019, "dg, DTMF character 9" }, + { 0x0005001a, "dg, DTMF character A" }, + { 0x0005001b, "dg, DTMF character B" }, + { 0x0005001c, "dg, DTMF character C" }, + { 0x0005001d, "dg, DTMF character D" }, + { 0x00050020, "dg, DTMF character *" }, + { 0x00050021, "dg, DTMF character #" }, + { 0x00070030, "cg, Dial Tone" }, + { 0x00070031, "cg, Ringing Tone" }, + { 0x00070032, "cg, Busy Tone" }, + { 0x00070033, "cg, Congestion Tone" }, + { 0x00070034, "cg, Special Information Tone" }, + { 0x00070035, "cg, (Recording) Warning Tone" }, + { 0x00070036, "cg, Payphone Recognition Tone" }, + { 0x00070037, "cg, Call Waiting Tone" }, + { 0x00070038, "cg, Caller Waiting Tone" }, + { 0x00090002, "al, ring" }, + { 0x0009ffff, "al, *" }, + { 0x000a0003, "ct, Continuity test" }, + { 0x000a0004, "ct, Continuity respond" }, { 0x00210000, "GB Generic Bearer Connection Q.1950 Annex A" }, { 0x00210001, "GB Establish BNC" }, { 0x00210002, "GB Modify BNC" }, @@ -759,6 +846,44 @@ static const value_string signal_name_vals[] = { {0, NULL} }; +/* + * This table consist of PackageName + StatName and its's corresponding string + * + */ +static const value_string stat_name_vals[] = { + { 0x000b0001, "nt, Duration" }, + { 0x000b0002, "nt, Octets Sent" }, + { 0x000b0003, "nt, Octets Received" }, + { 0x000c0004, "rtp, Packets Sent" }, + { 0x000c0005, "rtp, Packets Received" }, + { 0x000c0006, "rtp, Packet Loss" }, + { 0x000c0007, "rtp, Jitter" }, + { 0x000c0008, "rtp, Delay" }, + {0, NULL} +}; + +/* + * This table consist of PackageName + PropertyName and its's corresponding string + * + */ +static const value_string property_name_vals[] = { + { 0x0000b001, "SDP_V, Protocol Version" }, + { 0x0000b002, "SDP_O, Owner/creator and session ID" }, + { 0x0000b003, "SDP_S, Session name" }, + { 0x0000b004, "SDP_I, Session identifier" }, + { 0x0000b005, "SDP_U, URI of descriptor" }, + { 0x0000b006, "SDP_E, email address" }, + { 0x0000b007, "SDP_P, phone number" }, + { 0x0000b008, "SDP_C, Connection information" }, + { 0x0000b009, "SDP_B, Bandwidth Information" }, + { 0x0000b00a, "SDP_Z, Time zone adjustment" }, + { 0x0000b00b, "SDP_K, Encryption Key" }, + { 0x0000b00c, "SDP_A, Zero or more session attributes" }, + { 0x0000b00d, "SDP_T, Active Session Time" }, + { 0x0000b00e, "SDP_R, Zero or more repeat times" }, + { 0x0000b00f, "SDP_M, Media type, port, transport and format" }, + {0, NULL} +}; static const value_string h248_annex_C_media_vals[] = { { 0, "Audio" }, @@ -820,8 +945,22 @@ static const value_string h248_package_annex_C_uppc_values[] = { {0,NULL} }; +static const value_string h248_package_annex_E_al_parameter_name_values[] = { + {0x0001, "strict"}, + {0x0002, "init"}, + {0x0004, "mindur"}, + {0x0005, "maxdur"}, + {0x0006, "cad"}, + {0x0007, "freq"}, + {0,NULL} +}; - +static const value_string h248_package_annex_E_al_strict_values[] = { + {0x00, "exact"}, + {0x01, "state"}, + {0x02, "failWrong"}, + {0,NULL} +}; static const true_false_string h248_tdmc_ec_vals = { "On", @@ -1083,6 +1222,46 @@ static int dissect_h248_ctx_id(gboolean implicit_tag, packet_info *pinfo, proto_ return offset; } + +static int +dissect_h248_annex_C_SDP_property(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) +{ + gint8 class; + gboolean pc; + gint32 tag; + guint32 len; + int eoffset; + guint8 *text; + + + offset = get_ber_identifier(tvb, offset, &class, &pc, &tag); + offset = get_ber_length(tree, tvb, offset, &len, NULL); + eoffset = offset + len; + + if( (class!=BER_CLASS_UNI) + ||(tag != BER_UNI_TAG_IA5String) ){ + tvb_ensure_bytes_exist(tvb, offset-2, 2); + proto_tree_add_text(tree, tvb, offset-2, 2, "BER Error: String with tag=%d expected but Class:%d PC:%d Tag:%d was unexpected", BER_UNI_TAG_IA5String, class, pc, tag); + return eoffset; + } + + text = tvb_get_string(tvb, offset, len); + + /* + Do not show the trailing CR, if present. + I've never seen it absent, but who knows. + */ + if (text[len-1] == '\r') + text[len-1] = '\0'; + + proto_tree_add_text(tree, tvb, offset, len, "%s", text); + + g_free(text); + + return eoffset; +} + + static void dissect_h248_annex_C_PDU(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint16 name_minor) { int offset = 0; @@ -1251,7 +1430,30 @@ dissect_h248_annex_C_PDU(gboolean implicit_tag, tvbuff_t *tvb, packet_info *pinf if (new_tvb) dissect_q931_bearer_capability_ie(new_tvb, 0, 3, tree); break; - default: + + + /* + * C.11 SDP equivalents + */ + case 0xB001: /* SDP_V */ + case 0xB002: /* SDP_O */ + case 0xB003: /* SDP_S */ + case 0xB004: /* SDP_I */ + case 0xB005: /* SDP_U */ + case 0xB006: /* SDC_E */ + case 0xB007: /* SDP_P */ + case 0xB008: /* SDP_C */ + case 0xB009: /* SDP_B */ + case 0xB00A: /* SDP_Z */ + case 0xB00B: /* SDP_K */ + case 0xB00C: /* SDP_A */ + case 0xB00D: /* SDP_T */ + case 0xB00E: /* SDP_R */ + case 0xB00F: /* SDP_M */ + offset = dissect_h248_annex_C_SDP_property(pinfo, tree, tvb, offset); + break; + + default: proto_tree_add_text(tree, tvb, offset, -1,"PropertyID not decoded(yet) 0x%x",name_minor); break; } @@ -1385,9 +1587,14 @@ guint offset=0; } } + + static guint32 packageandid; -static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) { + +static int dissect_h248_pkgd_and_entity_name(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index, + int hf_entity) +{ tvbuff_t *new_tvb; proto_tree *package_tree=NULL; guint16 name_major, name_minor; @@ -1402,70 +1609,49 @@ static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offse name_minor=tvb_get_ntohs(new_tvb, 2); packageandid=(name_major<<16)|name_minor; - /* do the prettification */ + /* do the prettification */ proto_item_append_text(ber_last_created_item, " %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major); if(tree){ package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename); } - proto_tree_add_uint(package_tree, hf_h248_package_name, tvb, offset-4, 2, name_major); + + if (hf_entity == hf_h248_package_name) + proto_tree_add_uint(package_tree, hf_h248_package_name, tvb, offset-4, 2, name_major); + else + proto_tree_add_uint(package_tree, hf_entity, tvb, offset-4, 4, packageandid); } return offset; } -static int -dissect_h248_EventName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) { - tvbuff_t *new_tvb; - proto_tree *package_tree=NULL; - guint16 name_major, name_minor; - int old_offset; +static int dissect_h248_PkgdName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) { + return dissect_h248_pkgd_and_entity_name(implicit_tag, tvb, offset, pinfo, tree, hf_index, hf_h248_package_name); +} - old_offset=offset; - offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb); - if (new_tvb) { - /* this field is always 4 bytes so just read it into two integers */ - name_major=tvb_get_ntohs(new_tvb, 0); - name_minor=tvb_get_ntohs(new_tvb, 2); - packageandid=(name_major<<16)|name_minor; - - /* do the prettification */ - proto_item_append_text(ber_last_created_item, " %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major); - if(tree){ - package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename); - } - proto_tree_add_uint(package_tree, hf_h248_event_name, tvb, offset-4, 4, packageandid); - } - return offset; +static int +dissect_h248_EventName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) { + return dissect_h248_pkgd_and_entity_name(implicit_tag, tvb, offset, pinfo, tree, hf_index, hf_h248_event_name); } - static int dissect_h248_SignalName(gboolean implicit_tag , tvbuff_t *tvb, int offset, packet_info *pinfo , proto_tree *tree, int hf_index) { - tvbuff_t *new_tvb; - proto_tree *package_tree=NULL; - guint16 name_major, name_minor; - int old_offset; + return dissect_h248_pkgd_and_entity_name(implicit_tag, tvb, offset, pinfo, tree, hf_index, hf_h248_signal_name); +} - old_offset=offset; - offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb); - if (new_tvb) { - /* this field is always 4 bytes so just read it into two integers */ - name_major=tvb_get_ntohs(new_tvb, 0); - name_minor=tvb_get_ntohs(new_tvb, 2); - packageandid=(name_major<<16)|name_minor; +static int +dissect_h248_StatName(gboolean implicit_tag , tvbuff_t *tvb, int offset, packet_info *pinfo , proto_tree *tree, int hf_index) { + return dissect_h248_pkgd_and_entity_name(implicit_tag, tvb, offset, pinfo, tree, hf_index, hf_h248_stat_name); +} - /* do the prettification */ - proto_item_append_text(ber_last_created_item, " %s (%04x)", val_to_str(name_major, package_name_vals, "Unknown Package"), name_major); - if(tree){ - package_tree = proto_item_add_subtree(ber_last_created_item, ett_packagename); - } - proto_tree_add_uint(package_tree, hf_h248_signal_name, tvb, offset-4, 4, packageandid); - } - return offset; + +static int dissect_h248_PropertyName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) { + return dissect_h248_pkgd_and_entity_name(implicit_tag, tvb, offset, pinfo, tree, hf_index, hf_h248_property_name); } + + static int dissect_h248_PropertyID(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index _U_) { @@ -1506,6 +1692,172 @@ dissect_h248_PropertyID(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet } +static guint16 annex_e_parameter_id; + +static int +dissect_h248_EventOrSigParameterName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + + guint16 name_major; + tvbuff_t *new_tvb; + + name_major = packageandid >> 16; + + switch (name_major){ + case 0x0009: /* H.248 Annex E.9 Analog Line Supervision Package */ + offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_h248_package_annex_E_al_parameter_name, &new_tvb); + annex_e_parameter_id = tvb_get_ntohs(new_tvb, 0); + break; + default: + offset = dissect_h248_Name(implicit_tag, tvb, offset, pinfo, tree, hf_index); + } + + return offset; +} + +static int +dissect_h248_EventOrSigParameterValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + gint8 class; + gboolean pc, ind; + gint32 tag; + guint32 len; + guint16 name_major; + int old_offset, end_offset; + tvbuff_t *next_tvb; + gboolean unsupported; + + name_major = packageandid >> 16; + + old_offset=offset; + offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag); + offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, &ind); + end_offset=offset+len; + + if( (class!=BER_CLASS_UNI) + ||(tag!=BER_UNI_TAG_OCTETSTRING) ){ + proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", class, pc, tag); + return end_offset; + } + + next_tvb = tvb_new_subset(tvb, offset , len , len ); + + unsupported = FALSE; + + switch (name_major){ + case 0x0009: /* H.248 Annex E.9 Analog Line Supervision Package */ + switch (annex_e_parameter_id){ + case 0x0001: /* strict */ + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_al_strict, NULL); + break; + case 0x0002: /* init */ + dissect_ber_boolean(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_al_init); + break; + case 0x0004: /* mindur */ + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_al_mindur, NULL); + break; + case 0x0005: /* maxdur */ + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_al_maxdur, NULL); + break; + case 0x0006: /* cad */ + /* I'm not sure how I should dissect this one. */ + unsupported = TRUE; + break; + case 0x0007: /* freq */ + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_al_freq, NULL); + break; + default: + unsupported = TRUE; + } + break; + default: + unsupported = TRUE; + } + + /* By default, just show the raw data. */ + if (unsupported) + dissect_h248_Value(implicit_tag, tvb, old_offset, pinfo, tree, hf_index); + + return end_offset; +} + + +static int +dissect_h248_StatValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + gint8 class; + gboolean pc, ind; + gint32 tag; + guint32 len; + guint16 name_major; + guint16 name_minor; + int old_offset, end_offset; + tvbuff_t *next_tvb; + gboolean unsupported; + + name_major = packageandid >> 16; + name_minor = packageandid & 0xffff; + + old_offset=offset; + offset=dissect_ber_identifier(pinfo, tree, tvb, offset, &class, &pc, &tag); + offset=dissect_ber_length(pinfo, tree, tvb, offset, &len, &ind); + end_offset=offset+len; + + if( (class!=BER_CLASS_UNI) + ||(tag!=BER_UNI_TAG_OCTETSTRING) ){ + proto_tree_add_text(tree, tvb, offset-2, 2, "H.248 BER Error: OctetString expected but Class:%d PC:%d Tag:%d was unexpected", class, pc, tag); + return end_offset; + } + + next_tvb = tvb_new_subset(tvb, offset , len , len ); + + unsupported = FALSE; + + switch (name_major){ + case 0x000b: /* H.248 Annex E.11 Network Package */ + switch (name_minor){ + case 0x0001: + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_nt_dur, NULL); + break; + case 0x0002: + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_nt_os, NULL); + break; + case 0x0003: + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_nt_or, NULL); + break; + default: + unsupported = TRUE; + } + break; + case 0x000c: /* H.248 Annex E.12 RTP Package */ + switch (name_minor){ + case 0x0004: + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_rtp_ps, NULL); + break; + case 0x0005: + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_rtp_pr, NULL); + break; + case 0x0006: + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_rtp_pl, NULL); + break; + case 0x0007: + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_rtp_jit, NULL); + break; + case 0x0008: + dissect_ber_integer(TRUE, pinfo, tree, next_tvb, offset, hf_h248_package_annex_E_rtp_delay, NULL); + break; + default: + unsupported = TRUE; + } + break; + default: + unsupported = TRUE; + } + + /* By default, just show the raw data. */ + if (unsupported) + dissect_h248_Value(implicit_tag, tvb, old_offset, pinfo, tree, hf_index); + + return end_offset; +} + static int dissect_h248_MtpAddress(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index) { @@ -2490,7 +2842,7 @@ static int dissect_serviceChangeMgcId(packet_info *pinfo, proto_tree *tree, tvbu static int dissect_h248_T_errorCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 238 "h248.cnf" +#line 255 "h248.cnf" offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_h248_error_code, &error_code); expert_add_info_format(pinfo, get_ber_last_created_item(), PI_RESPONSE_CODE, PI_WARN, "Errored Command"); @@ -2570,7 +2922,7 @@ static int dissect_lastAck_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t * static int dissect_h248_transactionId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 85 "h248.cnf" +#line 102 "h248.cnf" guint32 trx_id = 0; offset = dissect_h248_trx_id(implicit_tag, pinfo, tree, tvb, offset, &trx_id); trx = h248_trx(msg,trx_id,H248_TRX_REQUEST); @@ -2588,7 +2940,7 @@ static int dissect_transactionId_impl(packet_info *pinfo, proto_tree *tree, tvbu static int dissect_h248_contextId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 114 "h248.cnf" +#line 131 "h248.cnf" guint32 ctx_id = 0; offset = dissect_h248_ctx_id(implicit_tag, pinfo, tree, tvb, offset, &ctx_id); ctx = h248_ctx(msg,trx,ctx_id); @@ -2645,7 +2997,7 @@ static int dissect_keepActive_impl(packet_info *pinfo, proto_tree *tree, tvbuff_ static int dissect_h248_WildcardField(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 256 "h248.cnf" +#line 273 "h248.cnf" tvbuff_t* new_tvb; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb); tree = proto_item_add_subtree(get_ber_last_created_item(),ett_wildcard); @@ -2683,7 +3035,7 @@ static int dissect_wildcard_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_h248_T_terminationId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 268 "h248.cnf" +#line 285 "h248.cnf" tvbuff_t* new_tvb; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, &new_tvb); @@ -2723,7 +3075,7 @@ static const ber_sequence_t TerminationID_sequence[] = { static int dissect_h248_TerminationID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 251 "h248.cnf" +#line 268 "h248.cnf" term = ep_new0(h248_term_t); wild_term = H248_WILDCARD_NONE; @@ -2808,13 +3160,13 @@ static const ber_sequence_t T_topologyReq_sequence_of[1] = { static int dissect_h248_T_topologyReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 192 "h248.cnf" +#line 209 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_TOPOLOGY_REQ,offset); offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, T_topologyReq_sequence_of, hf_index, ett_h248_T_topologyReq); -#line 195 "h248.cnf" +#line 212 "h248.cnf" cmd = NULL; return offset; @@ -2907,12 +3259,12 @@ dissect_h248_ContextAttrAuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, i static int dissect_h248_T_contextAttrAuditReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 199 "h248.cnf" +#line 216 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_CTX_ATTR_AUDIT_REQ,offset); offset = dissect_h248_ContextAttrAuditRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index); -#line 202 "h248.cnf" +#line 219 "h248.cnf" cmd = NULL; return offset; @@ -2952,11 +3304,12 @@ static int dissect_iAEBDEventName_impl(packet_info *pinfo, proto_tree *tree, tvb static int dissect_iASignalName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_iASignalName); } -static int dissect_statName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_statName); +static int dissect_iAStatName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_iAStatName); } + static int dissect_propertyName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_h248_PkgdName(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyName); + return dissect_h248_PropertyName(TRUE, tvb, offset, pinfo, tree, hf_h248_propertyName); } static int dissect_propertyParamValue_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -3603,12 +3956,6 @@ dissect_h248_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_i static int dissect_packageName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_packageName); } -static int dissect_eventParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParameterName); -} -static int dissect_sigParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_h248_Name(TRUE, tvb, offset, pinfo, tree, hf_h248_sigParameterName); -} @@ -3713,6 +4060,13 @@ static int dissect_notifyCompletion_impl(packet_info *pinfo, proto_tree *tree, t return dissect_h248_NotifyCompletion(TRUE, tvb, offset, pinfo, tree, hf_h248_notifyCompletion); } +static int dissect_eventParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_h248_EventOrSigParameterName(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParameterName); +} +static int dissect_sigParameterName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_h248_EventOrSigParameterName(TRUE, tvb, offset, pinfo, tree, hf_h248_sigParameterName); +} + static const ber_sequence_t Value_sequence_of[1] = { { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_Value_item }, @@ -3725,20 +4079,21 @@ dissect_h248_Value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_ return offset; } -static int dissect_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_h248_Value(TRUE, tvb, offset, pinfo, tree, hf_h248_value); -} static int dissect_serviceChangeReason_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_h248_Value(TRUE, tvb, offset, pinfo, tree, hf_h248_serviceChangeReason); } -static int dissect_statValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_h248_Value(TRUE, tvb, offset, pinfo, tree, hf_h248_statValue); + +static int dissect_eventParameterValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_h248_EventOrSigParameterValue(TRUE, tvb, offset, pinfo, tree, hf_h248_eventParameterValue); +} +static int dissect_sigParameterValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_h248_EventOrSigParameterValue(TRUE, tvb, offset, pinfo, tree, hf_h248_sigParameterValue); } static const ber_sequence_t SigParameter_sequence[] = { { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_sigParameterName_impl }, - { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_sigParameterValue_impl }, { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_extraInfo }, { 0, 0, 0, NULL } }; @@ -3893,7 +4248,7 @@ static int dissect_secondaryEventAction_impl(packet_info *pinfo, proto_tree *tre static const ber_sequence_t EventParameter_sequence[] = { { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_eventParameterName_impl }, - { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_eventParameterValue_impl }, { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_extraInfo }, { 0, 0, 0, NULL } }; @@ -4467,7 +4822,7 @@ static int dissect_indauddigitMapDescriptor_impl(packet_info *pinfo, proto_tree static const ber_sequence_t IndAudStatisticsDescriptor_sequence[] = { - { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_statName_impl }, + { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_iAStatName_impl }, { 0, 0, 0, NULL } }; @@ -4647,12 +5002,12 @@ dissect_h248_AmmRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pa static int dissect_h248_T_addReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 134 "h248.cnf" +#line 151 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_ADD_REQ,offset); offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index); -#line 138 "h248.cnf" +#line 155 "h248.cnf" cmd = NULL; return offset; @@ -4665,12 +5020,12 @@ static int dissect_addReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *t static int dissect_h248_T_moveReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 142 "h248.cnf" +#line 159 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_MOVE_REQ,offset); offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index); -#line 146 "h248.cnf" +#line 163 "h248.cnf" cmd = NULL; return offset; @@ -4683,12 +5038,12 @@ static int dissect_moveReq_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t * static int dissect_h248_T_modReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 150 "h248.cnf" +#line 167 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_MOD_REQ,offset); offset = dissect_h248_AmmRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index); -#line 153 "h248.cnf" +#line 170 "h248.cnf" cmd = NULL; return offset; @@ -4716,12 +5071,12 @@ dissect_h248_SubtractRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offse static int dissect_h248_T_subtractReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 157 "h248.cnf" +#line 174 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_SUB_REQ,offset); offset = dissect_h248_SubtractRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index); -#line 160 "h248.cnf" +#line 177 "h248.cnf" cmd = NULL; return offset; @@ -4749,12 +5104,12 @@ dissect_h248_AuditRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, static int dissect_h248_T_auditCapRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 164 "h248.cnf" +#line 181 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_AUDITCAP_REQ,offset); offset = dissect_h248_AuditRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index); -#line 167 "h248.cnf" +#line 184 "h248.cnf" cmd = NULL; return offset; @@ -4767,12 +5122,12 @@ static int dissect_auditCapRequest_impl(packet_info *pinfo, proto_tree *tree, tv static int dissect_h248_T_auditValueRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 171 "h248.cnf" +#line 188 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_AUDITVAL_REQ,offset); offset = dissect_h248_AuditRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index); -#line 174 "h248.cnf" +#line 191 "h248.cnf" cmd = NULL; return offset; @@ -4879,12 +5234,12 @@ dissect_h248_NotifyRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, static int dissect_h248_T_notifyReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 178 "h248.cnf" +#line 195 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_NOTIFY_REQ,offset); offset = dissect_h248_NotifyRequest(implicit_tag, tvb, offset, pinfo, tree, hf_index); -#line 181 "h248.cnf" +#line 198 "h248.cnf" cmd = NULL; return offset; @@ -5180,6 +5535,14 @@ static int dissect_transactionPending_impl(packet_info *pinfo, proto_tree *tree, return dissect_h248_TransactionPending(TRUE, tvb, offset, pinfo, tree, hf_h248_transactionPending); } +static int dissect_statName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_h248_StatName(TRUE, tvb, offset, pinfo, tree, hf_h248_statName); +} + +static int dissect_statValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_h248_StatValue(TRUE, tvb, offset, pinfo, tree, hf_h248_statValue); +} + static const ber_sequence_t StatisticsParameter_sequence[] = { { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_statName_impl }, @@ -5331,7 +5694,7 @@ dissect_h248_AmmsReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pac static int dissect_h248_T_addReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 206 "h248.cnf" +#line 223 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_ADD_REPLY,offset); offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5346,7 +5709,7 @@ static int dissect_addReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_h248_T_moveReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 210 "h248.cnf" +#line 227 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_MOVE_REPLY,offset); offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5361,7 +5724,7 @@ static int dissect_moveReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_h248_T_modReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 214 "h248.cnf" +#line 231 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_MOD_REPLY,offset); offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5376,7 +5739,7 @@ static int dissect_modReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_h248_T_subtractReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 218 "h248.cnf" +#line 235 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_SUB_REPLY,offset); offset = dissect_h248_AmmsReply(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5433,7 +5796,7 @@ dissect_h248_AuditReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pa static int dissect_h248_T_auditCapReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 230 "h248.cnf" +#line 247 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_AUDITCAP_REPLY,offset); offset = dissect_h248_AuditReply(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5448,7 +5811,7 @@ static int dissect_auditCapReply(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_h248_T_auditValueReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 234 "h248.cnf" +#line 251 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_AUDITVAL_REPLY,offset); offset = dissect_h248_AuditReply(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5478,7 +5841,7 @@ dissect_h248_NotifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, p static int dissect_h248_T_notifyReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 222 "h248.cnf" +#line 239 "h248.cnf" cmd = h248_cmd(msg,trx,ctx,H248_CMD_NOTIFY_REPLY,offset); offset = dissect_h248_NotifyReply(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5620,7 +5983,7 @@ dissect_h248_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, p offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, ActionReply_sequence, hf_index, ett_h248_ActionReply); -#line 129 "h248.cnf" +#line 146 "h248.cnf" if (!cmd) cmd = h248_cmd(msg,trx,ctx,H248_CMD_REPLY,offset); @@ -5804,13 +6167,13 @@ static const ber_sequence_t Message_sequence[] = { static int dissect_h248_Message(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 73 "h248.cnf" +#line 90 "h248.cnf" msg = h248_msg(pinfo,TVB_RAW_OFFSET(tvb)); offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, Message_sequence, hf_index, ett_h248_Message); -#line 77 "h248.cnf" +#line 94 "h248.cnf" if (check_col(pinfo->cinfo, COL_INFO)) col_set_str(pinfo->cinfo, COL_INFO, h248_msg_to_str(msg)); @@ -5840,7 +6203,7 @@ dissect_h248_MegacoMessage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, /*--- End of included file: packet-h248-fn.c ---*/ -#line 1814 "packet-h248-template.c" +#line 2164 "packet-h248-template.c" static void dissect_h248(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) @@ -5923,7 +6286,14 @@ void proto_register_h248(void) { { &hf_h248_signal_name, { "Package and Signal name", "h248.signal_name", FT_UINT32, BASE_HEX, VALS(signal_name_vals), 0, "Package", HFILL }}, - { &hf_h248_package_bcp_BNCChar_PDU, + { &hf_h248_stat_name, { + "Package and Statistic name", "h248.stat_name", FT_UINT32, BASE_HEX, + VALS(stat_name_vals), 0, "Package", HFILL }}, + { &hf_h248_property_name, { + "Package and Property name", "h248.property_name", FT_UINT32, BASE_HEX, + VALS(property_name_vals), 0, "Package", HFILL }}, + + { &hf_h248_package_bcp_BNCChar_PDU, { "BNCChar", "h248.package_bcp.BNCChar", FT_UINT32, BASE_DEC, VALS(BNCChar_vals), 0, "BNCChar", HFILL }}, @@ -6081,8 +6451,62 @@ void proto_register_h248(void) { FT_UINT8, BASE_DEC, VALS(h248_package_annex_C_uppc_values), 0x03, "User Plane Connection Configuration", HFILL }}, - - + { &hf_h248_package_annex_E_al_parameter_name, + { "parameter name", "h248.package_annex_E.al_parameter_name", + FT_UINT16, BASE_DEC, VALS(h248_package_annex_E_al_parameter_name_values), 0, + "Event Parameter Name", HFILL }}, + { &hf_h248_package_annex_E_al_strict, + { "parameter value", "h248.package_annex_E.al_strict", + FT_UINT8, BASE_DEC, VALS(h248_package_annex_E_al_strict_values), 0, + "Event Parameter Value", HFILL }}, + { &hf_h248_package_annex_E_al_init, + { "parameter value", "h248.package_annex_E.al_init", + FT_BOOLEAN, BASE_DEC, NULL, 0, + "Event Parameter Value", HFILL }}, + { &hf_h248_package_annex_E_al_mindur, + { "parameter value", "h248.package_annex_E.al_mindur", + FT_UINT32, BASE_DEC, NULL, 0, + "Event Parameter Value", HFILL }}, + { &hf_h248_package_annex_E_al_maxdur, + { "parameter value", "h248.package_annex_E.al_maxdur", + FT_UINT32, BASE_DEC, NULL, 0, + "Event Parameter Value", HFILL }}, + { &hf_h248_package_annex_E_al_freq, + { "parameter value", "h248.package_annex_E.al_freq", + FT_UINT32, BASE_DEC, NULL, 0, + "Event Parameter Value", HFILL }}, + { &hf_h248_package_annex_E_nt_dur, + { "statValue", "h248.package_annex_E.nt_dur", + FT_UINT64, BASE_DEC, NULL, 0, + "Duration", HFILL }}, + { &hf_h248_package_annex_E_nt_os, + { "statValue", "h248.package_annex_E.nt_os", + FT_UINT64, BASE_DEC, NULL, 0, + "Octets Sent", HFILL }}, + { &hf_h248_package_annex_E_nt_or, + { "statValue", "h248.package_annex_E.nt_or", + FT_UINT64, BASE_DEC, NULL, 0, + "Octets Received", HFILL }}, + { &hf_h248_package_annex_E_rtp_ps, + { "statValue", "h248.package_annex_E.rtp_ps", + FT_UINT64, BASE_DEC, NULL, 0, + "Packets Sent", HFILL }}, + { &hf_h248_package_annex_E_rtp_pr, + { "statValue", "h248.package_annex_E.rtp_pr", + FT_UINT64, BASE_DEC, NULL, 0, + "Packets Received", HFILL }}, + { &hf_h248_package_annex_E_rtp_pl, + { "statValue", "h248.package_annex_E.rtp_pl", + FT_UINT64, BASE_DEC, NULL, 0, + "Packet Loss", HFILL }}, + { &hf_h248_package_annex_E_rtp_jit, + { "statValue", "h248.package_annex_E.rtp_jit", + FT_UINT64, BASE_DEC, NULL, 0, + "Jitter", HFILL }}, + { &hf_h248_package_annex_E_rtp_delay, + { "statValue", "h248.package_annex_E.rtp_delay", + FT_UINT64, BASE_DEC, NULL, 0, + "Delay", HFILL }}, { &hf_h248_error_code, { "errorCode", "h248.errorCode", @@ -6656,7 +7080,7 @@ void proto_register_h248(void) { { "digitMapName", "h248.digitMapName", FT_BYTES, BASE_HEX, NULL, 0, "h248.DigitMapName", HFILL }}, - { &hf_h248_statName, + { &hf_h248_iAStatName, { "statName", "h248.statName", FT_BYTES, BASE_HEX, NULL, 0, "h248.PkgdName", HFILL }}, @@ -6707,11 +7131,11 @@ void proto_register_h248(void) { { &hf_h248_eventParameterName, { "eventParameterName", "h248.eventParameterName", FT_BYTES, BASE_HEX, NULL, 0, - "h248.Name", HFILL }}, - { &hf_h248_value, + "h248.EventOrSigParameterName", HFILL }}, + { &hf_h248_eventParameterValue, { "value", "h248.value", FT_UINT32, BASE_DEC, NULL, 0, - "h248.Value", HFILL }}, + "h248.EventOrSigParameterValue", HFILL }}, { &hf_h248_extraInfo, { "extraInfo", "h248.extraInfo", FT_UINT32, BASE_DEC, VALS(h248_ExtraInfo_vals), 0, @@ -6803,7 +7227,7 @@ void proto_register_h248(void) { { &hf_h248_propertyName, { "propertyName", "h248.propertyName", FT_BYTES, BASE_HEX, NULL, 0, - "h248.PkgdName", HFILL }}, + "h248.PropertyName", HFILL }}, { &hf_h248_propertyParamValue, { "value", "h248.value", FT_UINT32, BASE_DEC, NULL, 0, @@ -6951,7 +7375,11 @@ void proto_register_h248(void) { { &hf_h248_sigParameterName, { "sigParameterName", "h248.sigParameterName", FT_BYTES, BASE_HEX, NULL, 0, - "h248.Name", HFILL }}, + "h248.EventOrSigParameterName", HFILL }}, + { &hf_h248_sigParameterValue, + { "value", "h248.value", + FT_UINT32, BASE_DEC, NULL, 0, + "h248.EventOrSigParameterValue", HFILL }}, { &hf_h248_mtl, { "mtl", "h248.mtl", FT_UINT32, BASE_DEC, NULL, 0, @@ -7036,10 +7464,14 @@ void proto_register_h248(void) { { "Item", "h248.StatisticsDescriptor_item", FT_NONE, BASE_NONE, NULL, 0, "h248.StatisticsParameter", HFILL }}, + { &hf_h248_statName, + { "statName", "h248.statName", + FT_BYTES, BASE_HEX, NULL, 0, + "h248.StatName", HFILL }}, { &hf_h248_statValue, { "statValue", "h248.statValue", FT_UINT32, BASE_DEC, NULL, 0, - "h248.Value", HFILL }}, + "h248.StatValue", HFILL }}, { &hf_h248_nonStandardIdentifier, { "nonStandardIdentifier", "h248.nonStandardIdentifier", FT_UINT32, BASE_DEC, VALS(h248_NonStandardIdentifier_vals), 0, @@ -7146,7 +7578,7 @@ void proto_register_h248(void) { "", HFILL }}, /*--- End of included file: packet-h248-hfarr.c ---*/ -#line 2079 "packet-h248-template.c" +#line 2490 "packet-h248-template.c" { &hf_h248_ctx, { "Context", "h248.ctx", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_h248_ctx_term, { "Termination", "h248.ctx.term", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, @@ -7301,7 +7733,7 @@ void proto_register_h248(void) { &ett_h248_Value, /*--- End of included file: packet-h248-ettarr.c ---*/ -#line 2101 "packet-h248-template.c" +#line 2512 "packet-h248-template.c" }; module_t *h248_module; diff --git a/epan/dissectors/packet-h248.h b/epan/dissectors/packet-h248.h index 4f501b9a56..d5e16df73d 100644 --- a/epan/dissectors/packet-h248.h +++ b/epan/dissectors/packet-h248.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ -/* ./packet-h248.h */ +/* .\packet-h248.h */ /* ../../tools/asn2wrs.py -b -e -p h248 -c h248.cnf -s packet-h248-template MEGACO.asn */ /* Input file: packet-h248-template.h */ |