forked from osmocom/wireshark
From Josef Zila via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8408 :
Add configurable TCP and UDP ports for MEMCACHE dissector svn path=/trunk/; revision=48064
This commit is contained in:
parent
42dce2d033
commit
0efdddc61f
|
@ -54,7 +54,7 @@
|
|||
#define PSNAME "MEMCACHE"
|
||||
#define PFNAME "memcache"
|
||||
|
||||
#define MEMCACHE_PORT 11211
|
||||
#define MEMCACHE_DEFAULT_RANGE "11211"
|
||||
#define MEMCACHE_HEADER_LEN 24
|
||||
|
||||
/* Magic Byte */
|
||||
|
@ -111,6 +111,13 @@
|
|||
|
||||
static int proto_memcache = -1;
|
||||
|
||||
void proto_reg_handoff_memcache(void);
|
||||
|
||||
static range_t *memcache_tcp_port_range = NULL;
|
||||
static range_t *memcache_udp_port_range = NULL;
|
||||
static dissector_handle_t memcache_tcp_handle;
|
||||
static dissector_handle_t memcache_udp_handle;
|
||||
|
||||
static int hf_magic = -1;
|
||||
static int hf_opcode = -1;
|
||||
static int hf_extras_length = -1;
|
||||
|
@ -2121,7 +2128,7 @@ proto_register_memcache (void)
|
|||
proto_register_subtree_array (ett, array_length (ett));
|
||||
|
||||
/* Register our configuration options */
|
||||
memcache_module = prefs_register_protocol (proto_memcache, NULL);
|
||||
memcache_module = prefs_register_protocol (proto_memcache, proto_reg_handoff_memcache);
|
||||
|
||||
prefs_register_bool_preference (memcache_module, "desegment_headers",
|
||||
"Reassemble MEMCACHE headers spanning multiple TCP segments",
|
||||
|
@ -2138,20 +2145,62 @@ proto_register_memcache (void)
|
|||
" To use this option, you must also enable \"Allow subdissectors"
|
||||
" to reassemble TCP streams\" in the TCP protocol settings.",
|
||||
&memcache_desegment_body);
|
||||
|
||||
range_convert_str(&memcache_tcp_port_range, MEMCACHE_DEFAULT_RANGE, 65535);
|
||||
range_convert_str(&memcache_udp_port_range, MEMCACHE_DEFAULT_RANGE, 65535);
|
||||
|
||||
prefs_register_range_preference(memcache_module, "tcp.ports", \
|
||||
"MEMCACHE TCP Port range", \
|
||||
"MEMCACHE TCP Port range", \
|
||||
&memcache_tcp_port_range, \
|
||||
65535);
|
||||
prefs_register_range_preference(memcache_module, "udp.ports", \
|
||||
"MEMCACHE UDP Port range", \
|
||||
"MEMCACHE UDP Port range", \
|
||||
&memcache_udp_port_range, \
|
||||
65535);
|
||||
}
|
||||
|
||||
static void range_delete_tcp_port_callback(guint32 port) {
|
||||
dissector_delete_uint("tcp.port", port, memcache_tcp_handle);
|
||||
}
|
||||
|
||||
static void range_delete_udp_port_callback(guint32 port) {
|
||||
dissector_delete_uint("udp.port", port, memcache_udp_handle);
|
||||
}
|
||||
|
||||
static void range_add_tcp_port_callback(guint32 port) {
|
||||
dissector_add_uint("tcp.port", port, memcache_tcp_handle);
|
||||
}
|
||||
|
||||
static void range_add_udp_port_callback(guint32 port) {
|
||||
dissector_add_uint("udp.port", port, memcache_udp_handle);
|
||||
}
|
||||
|
||||
|
||||
/* Register the tcp and udp memcache dissectors. */
|
||||
void
|
||||
proto_reg_handoff_memcache (void)
|
||||
{
|
||||
dissector_handle_t memcache_tcp_handle;
|
||||
dissector_handle_t memcache_udp_handle;
|
||||
static range_t *orig_memcache_tcp_port_range = NULL;
|
||||
static range_t *orig_memcache_udp_port_range = NULL;
|
||||
static gboolean initialized = FALSE;
|
||||
|
||||
memcache_tcp_handle = find_dissector ("memcache.tcp");
|
||||
memcache_udp_handle = find_dissector ("memcache.udp");
|
||||
if (!initialized) {
|
||||
memcache_tcp_handle = find_dissector("memcache.tcp");
|
||||
memcache_udp_handle = find_dissector("memcache.udp");
|
||||
initialized = TRUE;
|
||||
} else {
|
||||
range_foreach(orig_memcache_tcp_port_range, range_delete_tcp_port_callback);
|
||||
range_foreach(orig_memcache_udp_port_range, range_delete_udp_port_callback);
|
||||
g_free(orig_memcache_tcp_port_range);
|
||||
g_free(orig_memcache_udp_port_range);
|
||||
}
|
||||
|
||||
dissector_add_uint ("tcp.port", MEMCACHE_PORT, memcache_tcp_handle);
|
||||
dissector_add_uint ("udp.port", MEMCACHE_PORT, memcache_udp_handle);
|
||||
orig_memcache_tcp_port_range = range_copy(memcache_tcp_port_range);
|
||||
orig_memcache_udp_port_range = range_copy(memcache_udp_port_range);
|
||||
range_foreach(orig_memcache_tcp_port_range, range_add_tcp_port_callback);
|
||||
range_foreach(orig_memcache_udp_port_range, range_add_udp_port_callback);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue