diff options
author | Michal Labedzki <michal.labedzki@tieto.com> | 2015-03-08 14:59:32 +0100 |
---|---|---|
committer | Michal Labedzki <michal.labedzki@tieto.com> | 2015-03-14 14:26:17 +0000 |
commit | 77d9a059fe2d125a8cfe2193a09804a3e48caf06 (patch) | |
tree | 8ac172942c3af4fa689c39275d4ddbee942d25d9 /epan/decode_as.c | |
parent | 32a815be20ad0e535ef7a172017b86624f70f907 (diff) | |
download | wireshark-77d9a059fe2d125a8cfe2193a09804a3e48caf06.tar.gz |
Qt: Fix DecodeAs
Previously DecodeAs neither save its changes nor changes dissector tables.
Do that and redissect packets to refresh view.
Bug: 10553
Change-Id: Icd8453c9650f0265852f6b6b58bc483b35570a15
Reviewed-on: https://code.wireshark.org/review/7676
Petri-Dish: Michal Labedzki <michal.labedzki@tieto.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
Diffstat (limited to 'epan/decode_as.c')
-rw-r--r-- | epan/decode_as.c | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/epan/decode_as.c b/epan/decode_as.c index e54802f10f..f66f17ca19 100644 --- a/epan/decode_as.c +++ b/epan/decode_as.c @@ -77,15 +77,50 @@ void decode_as_default_populate_list(const gchar *table_name, decode_as_add_to_l gboolean decode_as_default_reset(const char *name, const gpointer pattern) { - dissector_reset_uint(name, GPOINTER_TO_UINT(pattern)); + switch (get_dissector_table_selector_type(name)) { + case FT_UINT8: + case FT_UINT16: + case FT_UINT24: + case FT_UINT32: + dissector_reset_uint(name, GPOINTER_TO_UINT(pattern)); + return TRUE; + case FT_STRING: + case FT_STRINGZ: + case FT_UINT_STRING: + case FT_STRINGZPAD: + dissector_reset_string(name, (!pattern)?"":(gchar *) pattern); + return TRUE; + default: + return FALSE; + }; + return TRUE; } gboolean decode_as_default_change(const char *name, const gpointer pattern, gpointer handle, gchar* list_name _U_) { dissector_handle_t* dissector = (dissector_handle_t*)handle; - if (dissector != NULL) - dissector_change_uint(name, GPOINTER_TO_UINT(pattern), *dissector); + if (dissector != NULL) { + switch (get_dissector_table_selector_type(name)) { + case FT_UINT8: + case FT_UINT16: + case FT_UINT24: + case FT_UINT32: + dissector_change_uint(name, GPOINTER_TO_UINT(pattern), *dissector); + return TRUE; + case FT_STRING: + case FT_STRINGZ: + case FT_UINT_STRING: + case FT_STRINGZPAD: + dissector_change_string(name, (!pattern)?"":(gchar *) pattern, *dissector); + return TRUE; + default: + return FALSE; + }; + + return FALSE; + } + return TRUE; } |