diff options
author | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-11-29 21:40:49 +0000 |
---|---|---|
committer | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2010-11-29 21:40:49 +0000 |
commit | 3f116e7e4c5315071df818e1a97ad2a45ecad0f4 (patch) | |
tree | e39fec220f2bd122d6321a3b0db8d389064f80fb /epan/dissectors/packet-sip.c | |
parent | 91c6bc7c7ef7a7af565da24400a3d96ab2f8cf27 (diff) |
Change SIP TCP port preference to a range preference.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@35070 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-sip.c')
-rw-r--r-- | epan/dissectors/packet-sip.c | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c index 5e2938a342..f0133dae60 100644 --- a/epan/dissectors/packet-sip.c +++ b/epan/dissectors/packet-sip.c @@ -64,6 +64,10 @@ #define TCP_PORT_SIP 5060 #define UDP_PORT_SIP 5060 #define TLS_PORT_SIP 5061 +#define DEFAULT_SIP_PORT_RANGE "5060" + +static dissector_handle_t sip_tcp_handle; +static range_t *global_sip_tcp_port_range; static gint sip_tap = -1; static dissector_handle_t sigcomp_handle; @@ -3540,7 +3544,17 @@ guint sip_find_invite(packet_info *pinfo, return result; } +static void +tcp_range_add_callback(guint32 port) +{ + dissector_add("tcp.port", port, sip_tcp_handle); +} +static void +tcp_range_delete_callback(guint32 port) +{ + dissector_delete("tcp.port", port, sip_tcp_handle); +} /* Register the protocol with Wireshark */ void proto_register_sip(void) @@ -4552,11 +4566,14 @@ void proto_register_sip(void) proto_register_field_array(proto_raw_sip, raw_hf, array_length(raw_hf)); sip_module = prefs_register_protocol(proto_sip, proto_reg_handoff_sip); + range_convert_str(&global_sip_tcp_port_range, DEFAULT_SIP_PORT_RANGE, MAX_UDP_PORT); + + + prefs_register_range_preference(sip_module, "tcp.ports", "SIP TCP ports", + "TCP ports to be decoded as SIP (default: " + DEFAULT_SIP_PORT_RANGE ")", + &global_sip_tcp_port_range, MAX_UDP_PORT); - prefs_register_uint_preference(sip_module, "tcp.port", - "SIP TCP Port", - "SIP Server TCP Port", - 10, &sip_tcp_port); prefs_register_uint_preference(sip_module, "tls.port", "SIP TLS Port", "SIP Server TLS Port", @@ -4601,6 +4618,8 @@ void proto_register_sip(void) "Whether retransmissions are detected coming from the same source port only.", &sip_retrans_the_same_sport); + prefs_register_obsolete_preference(sip_module, "tcp.port"); + register_init_routine(&sip_init_protocol); register_heur_dissector_list("sip", &heur_subdissector_list); /* Register for tapping */ @@ -4613,8 +4632,8 @@ void proto_register_sip(void) void proto_reg_handoff_sip(void) { - static dissector_handle_t sip_tcp_handle; - static guint saved_sip_tcp_port; + static range_t *sip_tcp_port_range; + static guint saved_sip_tls_port; static gboolean sip_prefs_initialized = FALSE; @@ -4635,13 +4654,14 @@ proto_reg_handoff_sip(void) heur_dissector_add("stun", dissect_sip_heur, proto_sip); sip_prefs_initialized = TRUE; } else { - dissector_delete("tcp.port", saved_sip_tcp_port, sip_tcp_handle); + range_foreach(sip_tcp_port_range, tcp_range_delete_callback); + g_free(sip_tcp_port_range); ssl_dissector_delete(saved_sip_tls_port, "sip.tcp", TRUE); } /* Set our port number for future use */ - saved_sip_tcp_port = sip_tcp_port; + sip_tcp_port_range = range_copy(global_sip_tcp_port_range); + range_foreach(sip_tcp_port_range, tcp_range_add_callback); saved_sip_tls_port = sip_tls_port; - dissector_add("tcp.port", saved_sip_tcp_port, sip_tcp_handle); ssl_dissector_add(saved_sip_tls_port, "sip.tcp", TRUE); } |