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
This commit is contained in:
parent
b5900e53d9
commit
d8e8f48636
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue