diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-04-01 21:23:40 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-04-01 21:23:40 +0000 |
commit | fb1ac828aad65131fd3af20e0497e04ab4cbc62c (patch) | |
tree | 3fdf9f48ffc538dde6e39d41adb18e62f0650e27 /epan/dissectors/packet-gtp.c | |
parent | 61e984ffafd21204eee568b20ee4d4734d71f9a8 (diff) |
from Jeremy Jouglet
some GTP updates and some tips for those using cygwin
svn path=/trunk/; revision=14003
Diffstat (limited to 'epan/dissectors/packet-gtp.c')
-rw-r--r-- | epan/dissectors/packet-gtp.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/epan/dissectors/packet-gtp.c b/epan/dissectors/packet-gtp.c index a0d872bd81..bd6a614e68 100644 --- a/epan/dissectors/packet-gtp.c +++ b/epan/dissectors/packet-gtp.c @@ -205,6 +205,7 @@ static gint ett_gtp_data_resp = -1; static gint ett_gtp_priv_ext = -1; static gboolean gtp_tpdu = TRUE; +static gboolean gtp_over_tcp = TRUE; static gboolean gtp_etsi_order = FALSE; static int gtpv0_port = 0; static int gtpv1c_port = 0; @@ -4553,11 +4554,17 @@ proto_register_gtp(void) prefs_register_uint_preference(gtp_module, "v1c_port", "GTPv1 control plane (GTP-C) port", "GTPv1 control plane port (default 2123)", 10, &g_gtpv1c_port); prefs_register_uint_preference(gtp_module, "v1u_port", "GTPv1 user plane (GTP-U) port", "GTPv1 user plane port (default 2152)", 10, &g_gtpv1u_port); prefs_register_bool_preference(gtp_module, "dissect_tpdu", "Dissect T-PDU", "Dissect T-PDU", >p_tpdu); + prefs_register_obsolete_preference (gtp_module, "v0_dissect_cdr_as"); prefs_register_obsolete_preference (gtp_module, "v0_check_etsi"); prefs_register_obsolete_preference (gtp_module, "v1_check_etsi"); prefs_register_bool_preference (gtp_module, "check_etsi", "Compare GTP order with ETSI", "GTP ETSI order", >p_etsi_order); prefs_register_obsolete_preference(gtp_module, "ppp_reorder"); + + /* This preference can be used to disable the dissection of GTP over TCP. Most of the Wireless operators uses GTP over UDP. + * The preference is set to TRUE by default fo rbackward compatibility + */ + prefs_register_bool_preference(gtp_module, "dissect_gtp_over_tcp", "Dissect GTP over TCP", "Dissect GTP over TCP", >p_over_tcp); register_dissector("gtp", dissect_gtp, proto_gtp); } @@ -4574,11 +4581,15 @@ proto_reg_handoff_gtp(void) Initialized = TRUE; } else { dissector_delete ("udp.port", gtpv0_port, gtp_handle); - dissector_delete ("tcp.port", gtpv0_port, gtp_handle); dissector_delete ("udp.port", gtpv1c_port, gtp_handle); - dissector_delete ("tcp.port", gtpv1c_port, gtp_handle); dissector_delete ("udp.port", gtpv1u_port, gtp_handle); - dissector_delete ("tcp.port", gtpv1u_port, gtp_handle); + + if ( !gtp_over_tcp ) { + dissector_delete ("tcp.port", gtpv0_port, gtp_handle); + dissector_delete ("tcp.port", gtpv1c_port, gtp_handle); + dissector_delete ("tcp.port", gtpv1u_port, gtp_handle); + } + } gtpv0_port = g_gtpv0_port; @@ -4586,14 +4597,17 @@ proto_reg_handoff_gtp(void) gtpv1u_port = g_gtpv1u_port; dissector_add ("udp.port", g_gtpv0_port, gtp_handle); - dissector_add ("tcp.port", g_gtpv0_port, gtp_handle); dissector_add ("udp.port", g_gtpv1c_port, gtp_handle); - dissector_add ("tcp.port", g_gtpv1c_port, gtp_handle); dissector_add ("udp.port", g_gtpv1u_port, gtp_handle); - dissector_add ("tcp.port", g_gtpv1u_port, gtp_handle); - + + if ( gtp_over_tcp ) { + dissector_add ("tcp.port", g_gtpv0_port, gtp_handle); + dissector_add ("tcp.port", g_gtpv1c_port, gtp_handle); + dissector_add ("tcp.port", g_gtpv1u_port, gtp_handle); + } + ip_handle = find_dissector("ip"); - ipv6_handle = find_dissector("ipv6"); + ipv6_handle = find_dissector("ipv6"); ppp_handle = find_dissector("ppp"); data_handle = find_dissector("data"); gtpcdr_handle = find_dissector("gtpcdr"); |