summaryrefslogtreecommitdiff
path: root/asn1/pres
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2007-05-13 20:58:29 +0000
committerAnders Broman <anders.broman@ericsson.com>2007-05-13 20:58:29 +0000
commitc01f3829742dacd6d94dc50be54537661bad0581 (patch)
treeeb3da0d69d5bc62ca587ebd999b6beacd693f168 /asn1/pres
parentb80cb43018aa49bac3e24cabca009ca0471cd579 (diff)
downloadwireshark-c01f3829742dacd6d94dc50be54537661bad0581.tar.gz
Second step in introducing asn context to BER dissectors just like in PER.
svn path=/trunk/; revision=21753
Diffstat (limited to 'asn1/pres')
-rw-r--r--asn1/pres/packet-pres-template.c24
-rw-r--r--asn1/pres/pres.cnf10
2 files changed, 19 insertions, 15 deletions
diff --git a/asn1/pres/packet-pres-template.c b/asn1/pres/packet-pres-template.c
index 2afed32f14..aede2abbba 100644
--- a/asn1/pres/packet-pres-template.c
+++ b/asn1/pres/packet-pres-template.c
@@ -36,6 +36,7 @@
#include <stdio.h>
#include <string.h>
+#include <epan/asn1.h>
#include "packet-ber.h"
#include "packet-ses.h"
#include "packet-pres.h"
@@ -158,7 +159,10 @@ dissect_ppdu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
proto_item *ti;
proto_tree *pres_tree = NULL;
guint s_type;
-/* do we have spdu type from the session dissector? */
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+
+ /* do we have spdu type from the session dissector? */
if( !pinfo->private_data ){
if(tree){
proto_tree_add_text(tree, tvb, offset, -1,
@@ -189,32 +193,32 @@ dissect_ppdu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
switch(session->spdu_type){
case SES_CONNECTION_REQUEST:
- offset = dissect_pres_CP_type(FALSE, tvb, offset, pinfo, pres_tree, hf_pres_CP_type);
+ offset = dissect_pres_CP_type(FALSE, tvb, offset, &asn1_ctx, pres_tree, hf_pres_CP_type);
break;
case SES_CONNECTION_ACCEPT:
- offset = dissect_pres_CPA_PPDU(FALSE, tvb, offset, pinfo, pres_tree, hf_pres_CPA_PPDU);
+ offset = dissect_pres_CPA_PPDU(FALSE, tvb, offset, &asn1_ctx, pres_tree, hf_pres_CPA_PPDU);
break;
case SES_ABORT:
case SES_ABORT_ACCEPT:
- offset = dissect_pres_Abort_type(FALSE, tvb, offset, pinfo, pres_tree, hf_pres_Abort_type);
+ offset = dissect_pres_Abort_type(FALSE, tvb, offset, &asn1_ctx, pres_tree, hf_pres_Abort_type);
break;
case SES_DATA_TRANSFER:
- offset = dissect_pres_CPC_type(FALSE, tvb, offset, pinfo, pres_tree, hf_pres_user_data);
+ offset = dissect_pres_CPC_type(FALSE, tvb, offset, &asn1_ctx, pres_tree, hf_pres_user_data);
break;
case SES_TYPED_DATA:
- offset = dissect_pres_Typed_data_type(FALSE, tvb, offset, pinfo, pres_tree, hf_pres_Typed_data_type);
+ offset = dissect_pres_Typed_data_type(FALSE, tvb, offset, &asn1_ctx, pres_tree, hf_pres_Typed_data_type);
break;
case SES_RESYNCHRONIZE:
- offset = dissect_pres_RS_PPDU(FALSE, tvb, offset, pinfo, pres_tree, -1);
+ offset = dissect_pres_RS_PPDU(FALSE, tvb, offset, &asn1_ctx, pres_tree, -1);
break;
case SES_RESYNCHRONIZE_ACK:
- offset = dissect_pres_RSA_PPDU(FALSE, tvb, offset, pinfo, pres_tree, -1);
+ offset = dissect_pres_RSA_PPDU(FALSE, tvb, offset, &asn1_ctx, pres_tree, -1);
break;
case SES_REFUSE:
- offset = dissect_pres_CPR_PPDU(FALSE, tvb, offset, pinfo, pres_tree, hf_pres_CPR_PPDU);
+ offset = dissect_pres_CPR_PPDU(FALSE, tvb, offset, &asn1_ctx, pres_tree, hf_pres_CPR_PPDU);
break;
default:
- offset = dissect_pres_CPC_type(FALSE, tvb, offset, pinfo, pres_tree, hf_pres_user_data);
+ offset = dissect_pres_CPC_type(FALSE, tvb, offset, &asn1_ctx, pres_tree, hf_pres_user_data);
break;
}
diff --git a/asn1/pres/pres.cnf b/asn1/pres/pres.cnf
index 303d5e49c2..96180d59ce 100644
--- a/asn1/pres/pres.cnf
+++ b/asn1/pres/pres.cnf
@@ -36,10 +36,10 @@ CPR-PPDU/normal-mode-parameters/provider-reason cPR_PPDU__provider-reason
tvbuff_t *next_tvb;
char *oid;
- oid=find_oid_by_pres_ctx_id(pinfo, presentation_context_identifier);
+ oid=find_oid_by_pres_ctx_id(actx->pinfo, presentation_context_identifier);
if(oid){
next_tvb = tvb_new_subset(tvb, offset, -1, -1);
- call_ber_oid_callback(oid, next_tvb, offset, pinfo, global_tree);
+ call_ber_oid_callback(oid, next_tvb, offset, actx->pinfo, global_tree);
} else {
proto_tree_add_text(tree, tvb, offset, -1,"dissector is not available");
%(DEFAULT_BODY)s
@@ -49,10 +49,10 @@ CPR-PPDU/normal-mode-parameters/provider-reason cPR_PPDU__provider-reason
tvbuff_t *next_tvb;
char *oid;
- oid=find_oid_by_pres_ctx_id(pinfo, presentation_context_identifier);
+ oid=find_oid_by_pres_ctx_id(actx->pinfo, presentation_context_identifier);
if(oid){
next_tvb = tvb_new_subset(tvb, offset, -1, -1);
- call_ber_oid_callback(oid, next_tvb, offset, pinfo, global_tree);
+ call_ber_oid_callback(oid, next_tvb, offset, actx->pinfo, global_tree);
} else {
proto_tree_add_text(tree, tvb, offset, -1,"dissector is not available");
%(DEFAULT_BODY)s
@@ -76,5 +76,5 @@ CPR-PPDU/normal-mode-parameters/provider-reason cPR_PPDU__provider-reason
abstract_syntax_name_oid=NULL;
#.END
#.FN_FTR Context-list/_item
- register_ctx_id_and_oid(pinfo, presentation_context_identifier, abstract_syntax_name_oid);
+ register_ctx_id_and_oid(actx->pinfo, presentation_context_identifier, abstract_syntax_name_oid);
#.END