summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-rsync.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-rsync.c')
-rw-r--r--epan/dissectors/packet-rsync.c30
1 files changed, 13 insertions, 17 deletions
diff --git a/epan/dissectors/packet-rsync.c b/epan/dissectors/packet-rsync.c
index a849ed88f7..9ca13d66c6 100644
--- a/epan/dissectors/packet-rsync.c
+++ b/epan/dissectors/packet-rsync.c
@@ -30,9 +30,11 @@
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/prefs.h>
+#include <epan/prefs-int.h>
#include <epan/proto_data.h>
void proto_register_rsync(void);
+void proto_reg_handoff_rsync(void);
#define RSYNCD_MAGIC_HEADER "@RSYNCD:"
#define RSYNCD_MAGIC_HEADER_LEN 8
@@ -306,10 +308,15 @@ dissect_rsync(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U
return dissect_rsync_encap(tvb, pinfo, tree, rsync_desegment);
}
-/* Register protocol with Wireshark. */
-
-void proto_reg_handoff_rsync(void);
+static void
+apply_rsync_prefs(void)
+{
+ /* Rsync uses the port preference to determine client/server */
+ pref_t *rsync_port = prefs_find_preference(prefs_find_module("rsync"), "tcp.port");
+ glb_rsync_tcp_port = *rsync_port->varp.uint;
+}
+/* Register protocol with Wireshark. */
void
proto_register_rsync(void)
{
@@ -334,14 +341,13 @@ proto_register_rsync(void)
int proto_rsync;
- proto_rsync = proto_register_protocol("RSYNC File Synchroniser",
- "RSYNC", "rsync");
+ proto_rsync = proto_register_protocol("RSYNC File Synchroniser", "RSYNC", "rsync");
hfi_rsync = proto_registrar_get_nth(proto_rsync);
proto_register_fields(proto_rsync, hfi, array_length(hfi));
proto_register_subtree_array(ett, array_length(ett));
- rsync_module = prefs_register_protocol(proto_rsync, proto_reg_handoff_rsync);
+ rsync_module = prefs_register_protocol(proto_rsync, apply_rsync_prefs);
prefs_register_uint_preference(rsync_module, "tcp_port",
"rsync TCP Port",
"Set the TCP port for RSYNC messages",
@@ -359,17 +365,7 @@ proto_register_rsync(void)
void
proto_reg_handoff_rsync(void)
{
- static gboolean initialized = FALSE;
- static guint saved_rsync_tcp_port;
-
- if (!initialized) {
- initialized = TRUE;
- } else {
- dissector_delete_uint("tcp.port", saved_rsync_tcp_port, rsync_handle);
- }
-
- dissector_add_uint("tcp.port", glb_rsync_tcp_port, rsync_handle);
- saved_rsync_tcp_port = glb_rsync_tcp_port;
+ dissector_add_uint_with_preference("tcp.port", TCP_PORT_RSYNC, rsync_handle);
}
/*