From c927edea31b292ac9e99df451b21764f1bf89be6 Mon Sep 17 00:00:00 2001 From: Tomas Kukosa Date: Wed, 29 Aug 2007 11:44:49 +0000 Subject: ASN.1 parameterization handling (1st raw implementation) it is not supported in asn2wrs now, code has to be written manually svn path=/trunk/; revision=22724 --- epan/asn1.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'epan/asn1.h') diff --git a/epan/asn1.h b/epan/asn1.h index 4d081aed85..02d5a51a62 100644 --- a/epan/asn1.h +++ b/epan/asn1.h @@ -40,6 +40,35 @@ typedef enum { CB_DISSECTOR_HANDLE } asn1_cb_variant; +typedef enum { + ASN1_PAR_IRR, /* irrelevant parameter */ + /* value */ + ASN1_PAR_INTEGER, + /* type */ + ASN1_PAR_TYPE +} asn1_par_type; + +typedef struct _asn1_par_def_t { + const gchar *name; + asn1_par_type ptype; +} asn1_par_def_t; + +typedef struct _asn1_par_t { + const gchar *name; + asn1_par_type ptype; + union { + gint32 v_integer; + void *v_type; + } value; + struct _asn1_par_t *next; +} asn1_par_t; + +typedef struct _asn1_stack_frame_t { + const gchar *name; + struct _asn1_par_t *par; + struct _asn1_stack_frame_t *next; +} asn1_stack_frame_t; + #define ASN1_CTX_SIGNATURE 0x41435458 /* "ACTX" */ typedef struct _asn1_ctx_t { @@ -48,6 +77,7 @@ typedef struct _asn1_ctx_t { gboolean aligned; packet_info *pinfo; proto_item *created_item; + struct _asn1_stack_frame_t *stack; void *value_ptr; void *private_data; struct { @@ -137,6 +167,13 @@ extern gboolean asn1_ctx_check_signature(asn1_ctx_t *actx); extern void asn1_ctx_clean_external(asn1_ctx_t *actx); extern void asn1_ctx_clean_epdv(asn1_ctx_t *actx); +extern void asn1_stack_frame_push(asn1_ctx_t *actx, const gchar *name); +extern void asn1_stack_frame_pop(asn1_ctx_t *actx, const gchar *name); +extern void asn1_stack_frame_check(asn1_ctx_t *actx, const gchar *name, const asn1_par_def_t *par_def); + +extern void asn1_param_push_integer(asn1_ctx_t *actx, gint32 value); +extern gint32 asn1_param_get_integer(asn1_ctx_t *actx, const gchar *name); + extern void rose_ctx_init(rose_ctx_t *rctx); extern gboolean rose_ctx_check_signature(rose_ctx_t *rctx); extern void rose_ctx_clean_data(rose_ctx_t *rctx); -- cgit v1.2.1