aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-h248.c670
-rw-r--r--epan/dissectors/packet-h248.h2
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 */