summaryrefslogtreecommitdiff
path: root/epan/asn1.h
diff options
context:
space:
mode:
authorTomas Kukosa <tomas.kukosa@siemens.com>2007-08-29 11:44:49 +0000
committerTomas Kukosa <tomas.kukosa@siemens.com>2007-08-29 11:44:49 +0000
commitc927edea31b292ac9e99df451b21764f1bf89be6 (patch)
tree657e28bb501fde42aa550230f09d2832bbfb4fde /epan/asn1.h
parentf832aaf3b6ab681d15feee18c9c79d0fe52690a8 (diff)
downloadwireshark-c927edea31b292ac9e99df451b21764f1bf89be6.tar.gz
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.h37
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);