diff options
author | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-08-29 11:44:49 +0000 |
---|---|---|
committer | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-08-29 11:44:49 +0000 |
commit | c927edea31b292ac9e99df451b21764f1bf89be6 (patch) | |
tree | 657e28bb501fde42aa550230f09d2832bbfb4fde /epan/asn1.h | |
parent | f832aaf3b6ab681d15feee18c9c79d0fe52690a8 (diff) |
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
Diffstat (limited to 'epan/asn1.h')
-rw-r--r-- | epan/asn1.h | 37 |
1 files changed, 37 insertions, 0 deletions
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); |