diff options
author | Graeme Lunt <graeme.lunt@smhs.co.uk> | 2007-01-13 12:59:27 +0000 |
---|---|---|
committer | Graeme Lunt <graeme.lunt@smhs.co.uk> | 2007-01-13 12:59:27 +0000 |
commit | 2fd7d2c62078813f44e78f0b4b9f8b0e6e5928fb (patch) | |
tree | 8bc3e25bd6afc1b8eeb5ae59ab92988c18a6dcc8 /gtk/decode_as_dlg.c | |
parent | 13a095e055798295514d723c15f72e8f2cd89a3e (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.c | 13 |
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); |