aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-qsig.c
diff options
context:
space:
mode:
authorkukosa <kukosa@f5534014-38df-0310-8fa8-9805f1628bb7>2011-03-01 13:01:26 +0000
committerkukosa <kukosa@f5534014-38df-0310-8fa8-9805f1628bb7>2011-03-01 13:01:26 +0000
commit3f0a9d8b1586908457f552f524776a15141ad4b3 (patch)
tree4f98062fcdec5a3b0b5e464529ac55bb46767745 /epan/dissectors/packet-qsig.c
parente6ffc87452a45f796e74e52a0c0648b113792b8c (diff)
QSIG: decoding of PSS1InformationElement
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@36108 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-qsig.c')
-rw-r--r--epan/dissectors/packet-qsig.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/epan/dissectors/packet-qsig.c b/epan/dissectors/packet-qsig.c
index 9e9ffb2b0b..8bc1119222 100644
--- a/epan/dissectors/packet-qsig.c
+++ b/epan/dissectors/packet-qsig.c
@@ -2018,9 +2018,13 @@ static gint ett_qsig_mid_SEQUENCE_OF_Extension = -1;
/*--- End of included file: packet-qsig-ett.c ---*/
#line 310 "packet-qsig-template.c"
+static gint ett_cnq_PSS1InformationElement = -1;
/* Preferences */
+/* Subdissectors */
+static dissector_handle_t q931_ie_handle = NULL;
+
/* Global variables */
static const char *extension_oid = NULL;
static GHashTable *qsig_opcode2oid_hashtable = NULL;
@@ -2090,9 +2094,18 @@ dissect_qsig_Extension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
-dissect_qsig_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_qsig_PSS1InformationElement_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 168 "qsig.cnf"
+ tvbuff_t *out_tvb = NULL;
+ proto_tree *data_tree;
+
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
- NULL);
+ &out_tvb);
+
+ data_tree = proto_item_add_subtree(actx->created_item, ett_cnq_PSS1InformationElement);
+ if (out_tvb && (tvb_length(out_tvb) > 0) && q931_ie_handle)
+ call_dissector(q931_ie_handle, out_tvb, actx->pinfo, data_tree);
+
return offset;
}
@@ -2102,7 +2115,7 @@ dissect_qsig_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static int
dissect_qsig_PSS1InformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
- hf_index, BER_CLASS_APP, 0, TRUE, dissect_qsig_OCTET_STRING);
+ hf_index, BER_CLASS_APP, 0, TRUE, dissect_qsig_PSS1InformationElement_U);
return offset;
}
@@ -11896,7 +11909,7 @@ static int dissect_qsig_mid_Extension_PDU(tvbuff_t *tvb _U_, packet_info *pinfo
/*--- End of included file: packet-qsig-fn.c ---*/
-#line 322 "packet-qsig-template.c"
+#line 326 "packet-qsig-template.c"
typedef struct _qsig_op_t {
gint32 opcode;
@@ -12114,7 +12127,7 @@ static const qsig_op_t qsig_op_tab[] = {
/* mIDMailboxID */ { 120, dissect_qsig_mid_MIDMailboxIDArg_PDU, dissect_qsig_mid_MIDDummyRes_PDU },
/*--- End of included file: packet-qsig-table11.c ---*/
-#line 331 "packet-qsig-template.c"
+#line 335 "packet-qsig-template.c"
};
typedef struct _qsig_err_t {
@@ -12295,7 +12308,7 @@ static const qsig_err_t qsig_err_tab[] = {
/* unspecified */ { 1008, dissect_qsig_mid_Extension_PDU },
/*--- End of included file: packet-qsig-table21.c ---*/
-#line 340 "packet-qsig-template.c"
+#line 344 "packet-qsig-template.c"
};
static const qsig_op_t *get_op(gint32 opcode) {
@@ -15841,7 +15854,7 @@ void proto_register_qsig(void) {
NULL, HFILL }},
/*--- End of included file: packet-qsig-hfarr.c ---*/
-#line 648 "packet-qsig-template.c"
+#line 652 "packet-qsig-template.c"
};
/* List of subtrees */
@@ -16292,7 +16305,8 @@ void proto_register_qsig(void) {
&ett_qsig_mid_SEQUENCE_OF_Extension,
/*--- End of included file: packet-qsig-ettarr.c ---*/
-#line 656 "packet-qsig-template.c"
+#line 660 "packet-qsig-template.c"
+ &ett_cnq_PSS1InformationElement,
};
/* Register protocol and dissector */
@@ -16321,6 +16335,7 @@ void proto_reg_handoff_qsig(void) {
dissector_handle_t qsig_ie_handle;
q931_handle = find_dissector("q931");
+ q931_ie_handle = find_dissector("q931.ie");
qsig_arg_handle = new_create_dissector_handle(dissect_qsig_arg, proto_qsig);
qsig_res_handle = new_create_dissector_handle(dissect_qsig_res, proto_qsig);