aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/decode_as_dlg.c
diff options
context:
space:
mode:
authorGraeme Lunt <graeme.lunt@smhs.co.uk>2007-01-13 12:59:27 +0000
committerGraeme Lunt <graeme.lunt@smhs.co.uk>2007-01-13 12:59:27 +0000
commit2fd7d2c62078813f44e78f0b4b9f8b0e6e5928fb (patch)
tree8bc3e25bd6afc1b8eeb5ae59ab92988c18a6dcc8 /gtk/decode_as_dlg.c
parent13a095e055798295514d723c15f72e8f2cd89a3e (diff)
New "decode as ..." feature for BER-encoded files (WTAP_FILE_BER).
A BER-encoded file can be dissected as one of a number of registered syntaxes (registered using register_ber_syntax_dissector()). Syntaxes may also be associated with OIDs (or other strings) using register_ber_oid_syntax(). A default syntax with which to dissect a BER-encoded file is determined from its filename (extension). For example, ".cer" and ".crt" files will be dissected as "Certificate". svn path=/trunk/; revision=20414
Diffstat (limited to 'gtk/decode_as_dlg.c')
-rw-r--r--gtk/decode_as_dlg.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/gtk/decode_as_dlg.c b/gtk/decode_as_dlg.c
index 7d58887e0c..462061d720 100644
--- a/gtk/decode_as_dlg.c
+++ b/gtk/decode_as_dlg.c
@@ -39,6 +39,7 @@
#include <epan/epan_dissect.h>
#include "compat_macros.h"
#include "decode_as_dcerpc.h"
+#include "decode_as_ber.h"
#include "help_dlg.h"
#undef DEBUG
@@ -71,6 +72,8 @@ enum srcdst_type {
#define E_PAGE_DPORT "dport"
#define E_PAGE_SPORT "sport"
#define E_PAGE_PPID "ppid"
+#define E_PAGE_ASN1 "asn1"
+
/*
* Columns for a "Display" list
@@ -1770,7 +1773,8 @@ gboolean
decode_as_ok(void)
{
return cfile.edt->pi.ethertype || cfile.edt->pi.ipproto ||
- cfile.edt->pi.ptype == PT_TCP || cfile.edt->pi.ptype == PT_UDP;
+ cfile.edt->pi.ptype == PT_TCP || cfile.edt->pi.ptype == PT_UDP ||
+ cfile.cd_t == WTAP_FILE_BER;
}
@@ -1844,6 +1848,13 @@ decode_add_notebook (GtkWidget *format_hb)
OBJECT_SET_DATA(decode_w, E_PAGE_DCERPC, page);
}
+ if(cfile.cd_t == WTAP_FILE_BER) {
+ page = decode_ber_add_page(&cfile.edt->pi);
+ label = gtk_label_new("ASN.1");
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page, label);
+ OBJECT_SET_DATA(decode_w, E_PAGE_ASN1, page);
+ }
+
/* Select the last added page (selects first by default) */
/* Notebook must be visible for set_page to work. */
gtk_widget_show_all(notebook);