diff options
Diffstat (limited to 'asn1')
-rw-r--r-- | asn1/h248/h248.cnf | 10 | ||||
-rw-r--r-- | asn1/h248/h248v1support.asn | 10 | ||||
-rw-r--r-- | asn1/h248/packet-h248-template.c | 28 |
3 files changed, 43 insertions, 5 deletions
diff --git a/asn1/h248/h248.cnf b/asn1/h248/h248.cnf index 2c5d941102..1cb5105190 100644 --- a/asn1/h248/h248.cnf +++ b/asn1/h248/h248.cnf @@ -21,6 +21,8 @@ EventName EventParameterName EventParamValue ContextID +EventParamValueV1 +#SigParamValueV1 #.TYPE_RENAME IndAudMediaDescriptor/streams IndAudMediaDescriptorStreams @@ -81,6 +83,12 @@ TransactionRequest/transactionId transactionId SegmentReply/transactionId seg_rep_transactionId TransactionReply/transactionId trep_transactionId TransactionPending/transactionId tpend_transactionId +PropertyParmV1/values prop_param_values +EventParameterV1/value event_param_value +SigParameterV1/value sig_param_value +PropertyParmV1/value prop_parm_value +AuditReplyV1/auditResult audit_result +PropertyParmV1/extraInfo extra_info #.FN_HDR Message curr_info.msg = gcp_msg(actx->pinfo,tvb_raw_offset(tvb),keep_persistent_data); @@ -395,7 +403,7 @@ TransactionPending/transactionId tpend_transactionId #.FN_BODY EventParameter /* H248 v1 support */ - if (h248_version >1) { + if (h248_version > 1) { %(DEFAULT_BODY)s } else { offset = dissect_h248_EventParameterV1( implicit_tag, tvb, offset, actx, tree, hf_index); diff --git a/asn1/h248/h248v1support.asn b/asn1/h248/h248v1support.asn index 2ab54f000d..a7b103682b 100644 --- a/asn1/h248/h248v1support.asn +++ b/asn1/h248/h248v1support.asn @@ -26,8 +26,8 @@ BEGIN -- V1 EventParameterV1 ::= SEQUENCE { - eventParamterName [0] Name, - value [1] ValueV1 + eventParamterName [0] EventParameterName, + value [1] EventParamValueV1 } -- V1 @@ -47,10 +47,12 @@ BEGIN -- V1 SigParameterV1 ::= SEQUENCE { - sigParameterName [0] Name, - value [1] ValueV1 + sigParameterName [0] SigParameterName, + value [1] SigParamValueV1 } ValueV1 ::= OCTET STRING + EventParamValueV1 ::= OCTET STRING + SigParamValueV1 ::= OCTET STRING END
\ No newline at end of file diff --git a/asn1/h248/packet-h248-template.c b/asn1/h248/packet-h248-template.c index 932817f9dd..8845d2c08b 100644 --- a/asn1/h248/packet-h248-template.c +++ b/asn1/h248/packet-h248-template.c @@ -1291,6 +1291,34 @@ static int dissect_h248_EventParamValue(gboolean implicit_tag _U_, tvbuff_t *tvb return end_offset; } +static int dissect_h248_EventParamValueV1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index _U_) { + tvbuff_t *next_tvb; + int end_offset; + gint8 class; + gboolean pc, ind; + gint32 tag; + guint32 len; + + offset=dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag); + offset=dissect_ber_length(actx->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); + + if ( curr_info.par && curr_info.par->dissector) { + curr_info.par->dissector(tree, next_tvb, actx->pinfo, *(curr_info.par->hfid), &curr_info, curr_info.par->data); + } + + return end_offset; +} + static int dissect_h248_MtpAddress(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) { tvbuff_t *new_tvb; proto_tree *mtp_tree=NULL; |