diff options
author | Anders Broman <anders.broman@ericsson.com> | 2013-08-25 18:48:26 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2013-08-25 18:48:26 +0000 |
commit | d8e8f48636c5f139210eefe259fa71a02f49c71f (patch) | |
tree | 448a9d162bce0075ca915258740376c048593b68 /epan | |
parent | b5900e53d9eaf5defebf06cb2ed439e5cdeed110 (diff) |
Simplify adding and deletetion of port ranges by adding new methods.
If no one has any objection I'll edit the deocumentation later.
svn path=/trunk/; revision=51517
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-diameter.c | 32 | ||||
-rw-r--r-- | epan/packet.c | 28 | ||||
-rw-r--r-- | epan/packet.h | 9 |
3 files changed, 41 insertions, 28 deletions
diff --git a/epan/dissectors/packet-diameter.c b/epan/dissectors/packet-diameter.c index 0e18a85699..4697bc1e72 100644 --- a/epan/dissectors/packet-diameter.c +++ b/epan/dissectors/packet-diameter.c @@ -1700,30 +1700,6 @@ dictionary_load(void) return 1; } -static void -tcp_range_delete_callback(guint32 port) -{ - dissector_delete_uint("tcp.port", port, diameter_tcp_handle); -} - -static void -tcp_range_add_callback(guint32 port) -{ - dissector_add_uint("tcp.port", port, diameter_tcp_handle); -} - -static void -sctp_range_delete_callback(guint32 port) -{ - dissector_delete_uint("sctp.port", port, diameter_sctp_handle); -} - -static void -sctp_range_add_callback(guint32 port) -{ - dissector_add_uint("sctp.port", port, diameter_sctp_handle); -} - /* registration with the filtering engine */ void proto_reg_handoff_diameter(void); @@ -1989,8 +1965,8 @@ proto_reg_handoff_diameter(void) diameter_udp_port = g_diameter_udp_port; Initialized=TRUE; } else { - range_foreach(diameter_tcp_port_range, tcp_range_delete_callback); - range_foreach(diameter_sctp_port_range, sctp_range_delete_callback); + dissector_delete_uint_range("tcp.port", diameter_tcp_port_range, diameter_tcp_handle); + dissector_delete_uint_range("sctp.port", diameter_sctp_port_range, diameter_sctp_handle); g_free(diameter_tcp_port_range); g_free(diameter_sctp_port_range); dissector_delete_uint("udp.port", diameter_udp_port, diameter_udp_handle); @@ -2004,8 +1980,8 @@ proto_reg_handoff_diameter(void) /* set port for future deletes */ diameter_tcp_port_range = range_copy(global_diameter_tcp_port_range); diameter_sctp_port_range = range_copy(global_diameter_sctp_port_range); - range_foreach(diameter_tcp_port_range, tcp_range_add_callback); - range_foreach(diameter_sctp_port_range, sctp_range_add_callback); + dissector_add_uint_range("tcp.port", diameter_tcp_port_range, diameter_tcp_handle); + dissector_add_uint_range("sctp.port", diameter_sctp_port_range, diameter_sctp_handle); exported_pdu_tap = find_tap_id(EXPORT_PDU_TAP_NAME_LAYER_7); diff --git a/epan/packet.c b/epan/packet.c index 691fc95a11..adce4db166 100644 --- a/epan/packet.c +++ b/epan/packet.c @@ -834,6 +834,21 @@ dissector_add_uint(const char *name, const guint32 pattern, dissector_handle_t h dissector_add_handle(name, handle); } + + +void dissector_add_uint_range(const char *abbrev, range_t *range, + dissector_handle_t handle) +{ + guint32 i, j; + + if (range) { + for (i=0; i < range->nranges; i++) { + for (j = range->ranges[i].low; j <= range->ranges[i].high; j++) + dissector_add_uint(abbrev, j, handle); + } + } +} + /* Delete the entry for a dissector in a uint dissector table with a particular pattern. */ @@ -866,6 +881,19 @@ dissector_delete_uint(const char *name, const guint32 pattern, } } +void dissector_delete_uint_range(const char *abbrev, range_t *range, + dissector_handle_t handle) +{ + guint32 i, j; + + if (range) { + for (i=0; i < range->nranges; i++) { + for (j = range->ranges[i].low; j <= range->ranges[i].high; j++) + dissector_delete_uint(abbrev, j, handle); + } + } +} + /* Change the entry for a dissector in a uint dissector table with a particular pattern to use a new dissector handle. */ void diff --git a/epan/packet.h b/epan/packet.h index 79b07d2fbc..212b20c7d8 100644 --- a/epan/packet.h +++ b/epan/packet.h @@ -38,6 +38,7 @@ #include "epan.h" #include "tfs.h" #include "ws_symbol_export.h" +#include "range.h" #ifdef __cplusplus extern "C" { @@ -174,11 +175,19 @@ WS_DLL_PUBLIC int get_dissector_table_base(const char *name); WS_DLL_PUBLIC void dissector_add_uint(const char *abbrev, const guint32 pattern, dissector_handle_t handle); +/* Add an range of entries to a uint dissector table. */ +WS_DLL_PUBLIC void dissector_add_uint_range(const char *abbrev, range_t *range, + dissector_handle_t handle); + /* Delete the entry for a dissector in a uint dissector table with a particular pattern. */ WS_DLL_PUBLIC void dissector_delete_uint(const char *name, const guint32 pattern, dissector_handle_t handle); +/* Delete an range of entries from a uint dissector table. */ +WS_DLL_PUBLIC void dissector_delete_uint_range(const char *abbrev, range_t *range, + dissector_handle_t handle); + /* Change the entry for a dissector in a uint dissector table with a particular pattern to use a new dissector handle. */ WS_DLL_PUBLIC void dissector_change_uint(const char *abbrev, const guint32 pattern, |