summaryrefslogtreecommitdiff
path: root/epan/decode_as.c
diff options
context:
space:
mode:
authorMichal Labedzki <michal.labedzki@tieto.com>2015-03-08 14:59:32 +0100
committerMichal Labedzki <michal.labedzki@tieto.com>2015-03-14 14:26:17 +0000
commit77d9a059fe2d125a8cfe2193a09804a3e48caf06 (patch)
tree8ac172942c3af4fa689c39275d4ddbee942d25d9 /epan/decode_as.c
parent32a815be20ad0e535ef7a172017b86624f70f907 (diff)
downloadwireshark-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.c41
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;
}