Wireshark-dev: Re: [Wireshark-dev] asn2wrs problem when value needed from tagged type
From: "Kukosa, Tomas" <tomas.kukosa@xxxxxxxxxxx>
Date: Mon, 30 Apr 2007 12:44:42 +0200
Hi Anders, you can try to use: #.FN_BODY OrigTransactionID/_untag VAL_PTR = parameter_tvb ... which should modify type inside tag. BTW When you would like to introduce ASN.1 context for BER too, please do not create new one bur use common one for all ASN.1 encodings. Regards, Tomas -----Original Message----- From: wireshark-dev-bounces@xxxxxxxxxxxxx [mailto:wireshark-dev-bounces@xxxxxxxxxxxxx] On Behalf Of Anders Broman Sent: Monday, April 30, 2007 12:36 PM To: wireshark-dev@xxxxxxxxxxxxx Subject: [Wireshark-dev] asn2wrs problem when value needed from tagged type Hi, There is a problem with the tagged type if a value needs to be returned from it. As the following example from TCAP: #.FN_BODY OrigTransactionID VAL_PTR = parameter_tvb tvbuff_t *parameter_tvb; guint8 len, i; proto_item *tid_item; proto_tree *subtree; tid_item = proto_tree_add_text(tree, tvb, offset, -1, "Source Transaction ID"); subtree = proto_item_add_subtree(tid_item, ett_otid); %(DEFAULT_BODY)s The generated code will be: static int dissect_tcap_OCTET_STRING_SIZE_1_4(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); return offset; } static int dissect_tcap_OrigTransactionID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) { #line 159 "tcap.cnf" tvbuff_t *parameter_tvb; guint8 len, i; proto_item *tid_item; proto_tree *subtree; tid_item = proto_tree_add_text(tree, tvb, offset, -1, "Source Transaction ID"); subtree = proto_item_add_subtree(tid_item, ett_otid); offset = dissect_ber_tagged_type(implicit_tag, pinfo, tree, tvb, offset, hf_index, BER_CLASS_APP, 8, TRUE, dissect_tcap_OCTET_STRING_SIZE_1_4); I think this can be solved by using typedef struct _asn1_ber_ctx_t { proto_item *created_item; void *value_ptr; void *private_data; } asn1_ber_ctx_t; In packet-ber.c similar to packet-per.c if the code above could be changed to something like the code Below only for the tagged type as a start as there is a lot of changes needed otherwise. Regards Anders static int dissect_tcap_OCTET_STRING_SIZE_1_4(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ber_ctx_t *actx, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, actx->value_ptr); return offset; } static int dissect_tcap_OrigTransactionID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) { #line 159 "tcap.cnf" tvbuff_t *parameter_tvb; guint8 len, i; proto_item *tid_item; proto_tree *subtree; tid_item = proto_tree_add_text(tree, tvb, offset, -1, "Source Transaction ID"); subtree = proto_item_add_subtree(tid_item, ett_otid); offset = dissect_ber_tagged_type(implicit_tag, pinfo, tree, tvb, offset, actx hf_index, BER_CLASS_APP, 8, TRUE, dissect_tcap_OCTET_STRING_SIZE_1_4); _______________________________________________ Wireshark-dev mailing list Wireshark-dev@xxxxxxxxxxxxx http://www.wireshark.org/mailman/listinfo/wireshark-dev
- References:
- [Wireshark-dev] asn2wrs problem when value needed from tagged type
- From: Anders Broman
- [Wireshark-dev] asn2wrs problem when value needed from tagged type
- Prev by Date: [Wireshark-dev] asn2wrs problem when value needed from tagged type
- Next by Date: Re: [Wireshark-dev] Patch Netflow v9 to decode Netflow options, and other fixes
- Previous by thread: [Wireshark-dev] asn2wrs problem when value needed from tagged type
- Next by thread: Re: [Wireshark-dev] Patch Netflow v9 to decode Netflow options, and other fixes
- Index(es):
- Get Wireshark
- Download
- Code of Conduct