diff --git a/epan/dissectors/asn1/c1222/packet-c1222-template.c b/epan/dissectors/asn1/c1222/packet-c1222-template.c index c177ca6b18..1c8b5ae40a 100644 --- a/epan/dissectors/asn1/c1222/packet-c1222-template.c +++ b/epan/dissectors/asn1/c1222/packet-c1222-template.c @@ -191,7 +191,6 @@ static expert_field ei_c1222_epsem_field_length_error = EI_INIT; static expert_field ei_c1222_mac_missing = EI_INIT; /* Preferences */ -static int global_c1222_port = C1222_PORT; static gboolean c1222_desegment = TRUE; #ifdef HAVE_LIBGCRYPT static gboolean c1222_decrypt = TRUE; @@ -1419,7 +1418,7 @@ proto_reg_handoff_c1222(void) c1222_handle = create_dissector_handle(dissect_c1222, proto_c1222); c1222_udp_handle = create_dissector_handle(dissect_c1222_common, proto_c1222); dissector_add_uint_with_preference("tcp.port", C1222_PORT, c1222_handle); - dissector_add_uint("udp.port", global_c1222_port, c1222_udp_handle); + dissector_add_uint_with_preference("udp.port", C1222_PORT, c1222_udp_handle); initialized = TRUE; } if (c1222_baseoid_str && (c1222_baseoid_str[0] != '\0') && diff --git a/epan/dissectors/asn1/h225/packet-h225-template.c b/epan/dissectors/asn1/h225/packet-h225-template.c index 4180bd2d06..6ff87cfb41 100644 --- a/epan/dissectors/asn1/h225/packet-h225-template.c +++ b/epan/dissectors/asn1/h225/packet-h225-template.c @@ -57,8 +57,7 @@ #define PSNAME "H.225.0" #define PFNAME "h225" -#define UDP_PORT_RAS1 1718 -#define UDP_PORT_RAS2 1719 +#define UDP_PORT_RAS_RANGE "1718-1719" #define TCP_PORT_CS 1720 #define TLS_PORT_CS 1300 @@ -936,8 +935,7 @@ proto_reg_handoff_h225(void) static guint saved_h225_tls_port; if (!h225_prefs_initialized) { - dissector_add_uint("udp.port", UDP_PORT_RAS1, h225ras_handle); - dissector_add_uint("udp.port", UDP_PORT_RAS2, h225ras_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_RAS_RANGE, h225ras_handle); h245_handle = find_dissector("h245"); h245dg_handle = find_dissector("h245dg"); diff --git a/epan/dissectors/asn1/h245/packet-h245-template.c b/epan/dissectors/asn1/h245/packet-h245-template.c index ce66688a6b..a8cad58d47 100644 --- a/epan/dissectors/asn1/h245/packet-h245-template.c +++ b/epan/dissectors/asn1/h245/packet-h245-template.c @@ -611,7 +611,7 @@ void proto_reg_handoff_h245(void) { dissector_add_for_decode_as_with_preference("tcp.port", h245_handle); - dissector_add_for_decode_as("udp.port", MultimediaSystemControlMessage_handle); + dissector_add_for_decode_as_with_preference("udp.port", MultimediaSystemControlMessage_handle); } static void init_h245_packet_info(h245_packet_info *pi) diff --git a/epan/dissectors/asn1/h248/packet-h248-template.c b/epan/dissectors/asn1/h248/packet-h248-template.c index abe81546fb..3dbc8940a4 100644 --- a/epan/dissectors/asn1/h248/packet-h248-template.c +++ b/epan/dissectors/asn1/h248/packet-h248-template.c @@ -835,9 +835,8 @@ void gcp_analyze_msg(proto_tree* gcp_tree, packet_info* pinfo, tvbuff_t* gcp_tvb /* END Gateway Control Protocol -- Context Tracking */ +#define H248_PORT 2945 static gboolean keep_persistent_data = FALSE; -static guint global_udp_port = 2945; -#define H248_TCP_PORT 2945 static gboolean h248_desegment = TRUE; @@ -2373,16 +2372,11 @@ void proto_register_h248(void) { subdissector_table = register_dissector_table("h248.magic_num", "H248 Magic Num", proto_h248, FT_UINT32, BASE_HEX); - h248_module = prefs_register_protocol(proto_h248, proto_reg_handoff_h248); + h248_module = prefs_register_protocol(proto_h248, NULL); prefs_register_bool_preference(h248_module, "ctx_info", "Track Context", "Maintain relationships between transactions and contexts and display an extra tree showing context data", &keep_persistent_data); - prefs_register_uint_preference(h248_module, "udp_port", - "UDP port", - "Port to be decoded as h248", - 10, - &global_udp_port); prefs_register_bool_preference(h248_module, "desegment", "Desegment H.248 over TCP", "Desegment H.248 messages that span more TCP segments", @@ -2399,24 +2393,10 @@ void proto_register_h248(void) { /*--- proto_reg_handoff_h248 -------------------------------------------*/ void proto_reg_handoff_h248(void) { - static gboolean initialized = FALSE; - static guint32 udp_port; - - if (!initialized) { - dissector_add_uint("mtp3.service_indicator", MTP_SI_GCP, h248_handle); - h248_term_handle = find_dissector_add_dependency("h248term", proto_h248); - dissector_add_uint_with_preference("tcp.port", H248_TCP_PORT, h248_tpkt_handle); - initialized = TRUE; - } else { - if (udp_port != 0) - dissector_delete_uint("udp.port", udp_port, h248_handle); - } - - udp_port = global_udp_port; - - if (udp_port != 0) { - dissector_add_uint("udp.port", udp_port, h248_handle); - } + dissector_add_uint("mtp3.service_indicator", MTP_SI_GCP, h248_handle); + h248_term_handle = find_dissector_add_dependency("h248term", proto_h248); + dissector_add_uint_with_preference("tcp.port", H248_PORT, h248_tpkt_handle); + dissector_add_uint_with_preference("udp.port", H248_PORT, h248_handle); ss7pc_address_type = address_type_get_by_name("AT_SS7PC"); exported_pdu_tap = find_tap_id(EXPORT_PDU_TAP_NAME_LAYER_7); diff --git a/epan/dissectors/asn1/h283/packet-h283-template.c b/epan/dissectors/asn1/h283/packet-h283-template.c index 14f2818ab2..1c4c8503fc 100644 --- a/epan/dissectors/asn1/h283/packet-h283-template.c +++ b/epan/dissectors/asn1/h283/packet-h283-template.c @@ -99,7 +99,7 @@ void proto_register_h283(void) { /*--- proto_reg_handoff_h283 -------------------------------------------*/ void proto_reg_handoff_h283(void) { - dissector_add_for_decode_as("udp.port", h283_udp_handle); + dissector_add_for_decode_as_with_preference("udp.port", h283_udp_handle); rdc_pdu_handle = find_dissector_add_dependency("rdc", proto_h283); rdc_device_list_handle = find_dissector_add_dependency("rdc.device_list", proto_h283); diff --git a/epan/dissectors/asn1/h501/packet-h501-template.c b/epan/dissectors/asn1/h501/packet-h501-template.c index ab7538d1d5..d7f0969c96 100644 --- a/epan/dissectors/asn1/h501/packet-h501-template.c +++ b/epan/dissectors/asn1/h501/packet-h501-template.c @@ -51,8 +51,7 @@ static int ett_h501 = -1; static dissector_handle_t h501_pdu_handle; /* Preferences */ -#define H501_TCP_PORT 2099 -static guint h501_udp_port = 2099; +#define H501_PORT 2099 static gboolean h501_desegment_tcp = TRUE; void proto_reg_handoff_h501(void); @@ -111,11 +110,7 @@ void proto_register_h501(void) { h501_pdu_handle = register_dissector(PFNAME, dissect_h501_pdu, proto_h501); - h501_module = prefs_register_protocol(proto_h501, proto_reg_handoff_h501); - prefs_register_uint_preference(h501_module, "udp.port", - "UDP port", - "Port to be decoded as h501", - 10, &h501_udp_port); + h501_module = prefs_register_protocol(proto_h501, NULL); prefs_register_bool_preference(h501_module, "desegment", "Desegment H.501 over TCP", "Desegment H.501 messages that span more TCP segments", @@ -126,23 +121,12 @@ void proto_register_h501(void) { /*--- proto_reg_handoff_h501 -------------------------------------------*/ void proto_reg_handoff_h501(void) { - static gboolean h501_prefs_initialized = FALSE; - static dissector_handle_t h501_udp_handle; - static dissector_handle_t h501_tcp_handle; - static guint saved_h501_udp_port; - - if (!h501_prefs_initialized) { - h501_udp_handle = create_dissector_handle(dissect_h501_udp, proto_h501); - h501_tcp_handle = create_dissector_handle(dissect_h501_tcp, proto_h501); - dissector_add_uint_with_preference("tcp.port", H501_TCP_PORT, h501_tcp_handle); - h501_prefs_initialized = TRUE; - } else { - dissector_delete_uint("udp.port", saved_h501_udp_port, h501_udp_handle); - } - - /* Set our port number for future use */ - saved_h501_udp_port = h501_udp_port; - dissector_add_uint("udp.port", saved_h501_udp_port, h501_udp_handle); + dissector_handle_t h501_udp_handle; + dissector_handle_t h501_tcp_handle; + h501_udp_handle = create_dissector_handle(dissect_h501_udp, proto_h501); + h501_tcp_handle = create_dissector_handle(dissect_h501_tcp, proto_h501); + dissector_add_uint_with_preference("tcp.port", H501_PORT, h501_tcp_handle); + dissector_add_uint_with_preference("udp.port", H501_PORT, h501_udp_handle); } diff --git a/epan/dissectors/asn1/kerberos/packet-kerberos-template.c b/epan/dissectors/asn1/kerberos/packet-kerberos-template.c index 7a8a4ab335..c1e3796401 100644 --- a/epan/dissectors/asn1/kerberos/packet-kerberos-template.c +++ b/epan/dissectors/asn1/kerberos/packet-kerberos-template.c @@ -2338,7 +2338,7 @@ proto_reg_handoff_kerberos(void) kerberos_handle_tcp = create_dissector_handle(dissect_kerberos_tcp, proto_kerberos); - dissector_add_uint("udp.port", UDP_PORT_KERBEROS, kerberos_handle_udp); + dissector_add_uint_with_preference("udp.port", UDP_PORT_KERBEROS, kerberos_handle_udp); dissector_add_uint_with_preference("tcp.port", TCP_PORT_KERBEROS, kerberos_handle_tcp); register_dcerpc_auth_subdissector(DCE_C_AUTHN_LEVEL_CONNECT, diff --git a/epan/dissectors/asn1/ldap/packet-ldap-template.c b/epan/dissectors/asn1/ldap/packet-ldap-template.c index d65c7c6ca3..9298e21377 100644 --- a/epan/dissectors/asn1/ldap/packet-ldap-template.c +++ b/epan/dissectors/asn1/ldap/packet-ldap-template.c @@ -2246,7 +2246,7 @@ proto_reg_handoff_ldap(void) dissector_handle_t cldap_handle; cldap_handle = create_dissector_handle(dissect_mscldap, proto_cldap); - dissector_add_uint("udp.port", UDP_PORT_CLDAP, cldap_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_CLDAP, cldap_handle); gssapi_handle = find_dissector_add_dependency("gssapi", proto_ldap); gssapi_wrap_handle = find_dissector_add_dependency("gssapi_verf", proto_ldap); diff --git a/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c b/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c index 1f6d0f6845..5d10f6cbd3 100644 --- a/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c +++ b/epan/dissectors/asn1/lte-rrc/packet-lte-rrc-template.c @@ -4023,7 +4023,7 @@ proto_reg_handoff_lte_rrc(void) static dissector_handle_t lte_rrc_dl_ccch_handle; lte_rrc_dl_ccch_handle = find_dissector("lte_rrc.dl_ccch"); - dissector_add_for_decode_as("udp.port", lte_rrc_dl_ccch_handle); + dissector_add_for_decode_as_with_preference("udp.port", lte_rrc_dl_ccch_handle); nas_eps_handle = find_dissector("nas-eps"); rrc_irat_ho_to_utran_cmd_handle = find_dissector("rrc.irat.ho_to_utran_cmd"); rrc_sys_info_cont_handle = find_dissector("rrc.sysinfo.cont"); diff --git a/epan/dissectors/asn1/sabp/packet-sabp-template.c b/epan/dissectors/asn1/sabp/packet-sabp-template.c index 5f68453dbd..f0058442a6 100644 --- a/epan/dissectors/asn1/sabp/packet-sabp-template.c +++ b/epan/dissectors/asn1/sabp/packet-sabp-template.c @@ -288,7 +288,7 @@ void proto_register_sabp(void) { void proto_reg_handoff_sabp(void) { - dissector_add_uint("udp.port", SABP_PORT, sabp_handle); + dissector_add_uint_with_preference("udp.port", SABP_PORT, sabp_handle); dissector_add_uint_with_preference("tcp.port", SABP_PORT, sabp_tcp_handle); dissector_add_uint("sctp.ppi", SABP_PAYLOAD_PROTOCOL_ID, sabp_handle); diff --git a/epan/dissectors/asn1/snmp/packet-snmp-template.c b/epan/dissectors/asn1/snmp/packet-snmp-template.c index a10b26415d..3b3cfb70a1 100644 --- a/epan/dissectors/asn1/snmp/packet-snmp-template.c +++ b/epan/dissectors/asn1/snmp/packet-snmp-template.c @@ -2579,9 +2579,7 @@ void proto_register_snmp(void) { void proto_reg_handoff_snmp(void) { dissector_handle_t snmp_tcp_handle; - dissector_add_uint("udp.port", UDP_PORT_SNMP, snmp_handle); - dissector_add_uint("udp.port", UDP_PORT_SNMP_TRAP, snmp_handle); - dissector_add_uint("udp.port", UDP_PORT_SNMP_PATROL, snmp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_SNMP, snmp_handle); dissector_add_uint("ethertype", ETHERTYPE_SNMP, snmp_handle); dissector_add_uint("ipx.socket", IPX_SOCKET_SNMP_AGENT, snmp_handle); dissector_add_uint("ipx.socket", IPX_SOCKET_SNMP_SINK, snmp_handle); @@ -2593,6 +2591,8 @@ void proto_reg_handoff_snmp(void) { the "trap" port doesn't really need a separate preference. Just register normally */ dissector_add_uint("tcp.port", TCP_PORT_SNMP_TRAP, snmp_tcp_handle); + dissector_add_uint("udp.port", UDP_PORT_SNMP_TRAP, snmp_handle); + dissector_add_uint("udp.port", UDP_PORT_SNMP_PATROL, snmp_handle); data_handle = find_dissector("data"); diff --git a/epan/dissectors/asn1/t38/packet-t38-template.c b/epan/dissectors/asn1/t38/packet-t38-template.c index 51f41b93e9..bdf42f645e 100644 --- a/epan/dissectors/asn1/t38/packet-t38-template.c +++ b/epan/dissectors/asn1/t38/packet-t38-template.c @@ -739,7 +739,6 @@ proto_register_t38(void) "be dissected as RTP packet or T.38 packet. If enabled there is a risk that T.38 UDPTL " "packets with sequence number higher than 32767 may be dissected as RTP.", &dissect_possible_rtpv2_packets_as_rtp); - prefs_register_obsolete_preference(t38_module, "udp.port"); prefs_register_bool_preference(t38_module, "reassembly", "Reassemble T.38 PDUs over TPKT over TCP", "Whether the dissector should reassemble T.38 PDUs spanning multiple TCP segments " diff --git a/epan/dissectors/asn1/tetra/packet-tetra-template.c b/epan/dissectors/asn1/tetra/packet-tetra-template.c index fbff495526..c04c5f6d22 100644 --- a/epan/dissectors/asn1/tetra/packet-tetra-template.c +++ b/epan/dissectors/asn1/tetra/packet-tetra-template.c @@ -48,7 +48,7 @@ static int proto_tetra = -1; static dissector_handle_t tetra_handle; -static int global_tetra_port = 7074; +#define TETRA_UDP_PORT 7074 /* Not IANA assigned */ /* Whether the capture data include carrier numbers */ static gboolean include_carrier_number = TRUE; @@ -546,13 +546,8 @@ dissect_tetra(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U void proto_reg_handoff_tetra(void) { - static gboolean initialized=FALSE; - - if (!initialized) { - tetra_handle = create_dissector_handle(dissect_tetra, proto_tetra); - dissector_add_uint("udp.port", global_tetra_port, tetra_handle); - } - + tetra_handle = create_dissector_handle(dissect_tetra, proto_tetra); + dissector_add_uint_with_preference("udp.port", TETRA_UDP_PORT, tetra_handle); } diff --git a/epan/dissectors/asn1/ulp/packet-ulp-template.c b/epan/dissectors/asn1/ulp/packet-ulp-template.c index 4861779d73..669f8dd1d1 100644 --- a/epan/dissectors/asn1/ulp/packet-ulp-template.c +++ b/epan/dissectors/asn1/ulp/packet-ulp-template.c @@ -52,7 +52,6 @@ static dissector_handle_t lpp_handle; * oma-ulp 7275/udp OMA UserPlane Location */ #define ULP_PORT 7275 -static guint gbl_ulp_udp_port = ULP_PORT; /* Initialize the protocol and registered fields */ static int proto_ulp = -1; @@ -419,21 +418,13 @@ void proto_register_ulp(void) { proto_register_field_array(proto_ulp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - ulp_module = prefs_register_protocol(proto_ulp,proto_reg_handoff_ulp); + ulp_module = prefs_register_protocol(proto_ulp, NULL); prefs_register_bool_preference(ulp_module, "desegment_ulp_messages", "Reassemble ULP messages spanning multiple TCP segments", "Whether the ULP dissector should reassemble messages spanning multiple TCP segments." " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.", &ulp_desegment); - - /* Register a configuration option for port */ - prefs_register_uint_preference(ulp_module, "udp.port", - "ULP UDP Port", - "Set the UDP port for ULP messages (IANA registered port is 7275)", - 10, - &gbl_ulp_udp_port); - } @@ -441,23 +432,15 @@ void proto_register_ulp(void) { void proto_reg_handoff_ulp(void) { - static gboolean initialized = FALSE; - static dissector_handle_t ulp_udp_handle; - static guint local_ulp_udp_port; + dissector_handle_t ulp_udp_handle; - if (!initialized) { dissector_add_string("media_type","application/oma-supl-ulp", ulp_tcp_handle); dissector_add_string("media_type","application/vnd.omaloc-supl-init", ulp_tcp_handle); ulp_udp_handle = create_dissector_handle(dissect_ULP_PDU_PDU, proto_ulp); rrlp_handle = find_dissector_add_dependency("rrlp", proto_ulp); lpp_handle = find_dissector_add_dependency("lpp", proto_ulp); - dissector_add_uint_with_preference("tcp.port", ULP_PORT, ulp_tcp_handle); - initialized = TRUE; - } else { - dissector_delete_uint("udp.port", local_ulp_udp_port, ulp_udp_handle); - } - local_ulp_udp_port = gbl_ulp_udp_port; - dissector_add_uint("udp.port", gbl_ulp_udp_port, ulp_udp_handle); + dissector_add_uint_with_preference("tcp.port", ULP_PORT, ulp_tcp_handle); + dissector_add_uint_with_preference("udp.port", ULP_PORT, ulp_udp_handle); } diff --git a/epan/dissectors/packet-3com-njack.c b/epan/dissectors/packet-3com-njack.c index b51673c356..26207c07c5 100644 --- a/epan/dissectors/packet-3com-njack.c +++ b/epan/dissectors/packet-3com-njack.c @@ -97,6 +97,7 @@ static int hf_njack_getresp_unknown1 = -1; #define PROTO_SHORT_NAME "NJACK" #define PROTO_LONG_NAME "3com Network Jack" +#define NJACK_PORT_RANGE "5264-5265" #define PORT_NJACK_PC 5264 #define PORT_NJACK_SWITCH 5265 @@ -784,9 +785,8 @@ proto_reg_handoff_njack(void) dissector_handle_t njack_handle; njack_handle = create_dissector_handle(dissect_njack_static, proto_njack); - dissector_add_uint("udp.port", PORT_NJACK_PC, njack_handle); + dissector_add_uint_range_with_preference("udp.port", NJACK_PORT_RANGE, njack_handle); /* dissector_add_uint_with_preference("tcp.port", PORT_NJACK_PC, njack_handle); */ - dissector_add_uint("udp.port", PORT_NJACK_SWITCH, njack_handle); /* dissector_add_uint_with_preference("tcp.port", PORT_NJACK_SWITCH, njack_handle); */ heur_dissector_add("udp", dissect_njack_heur, "NJACK over UDP", "njack_udp", proto_njack, HEURISTIC_ENABLE); diff --git a/epan/dissectors/packet-3g-a11.c b/epan/dissectors/packet-3g-a11.c index e065ab781a..a1e9205890 100644 --- a/epan/dissectors/packet-3g-a11.c +++ b/epan/dissectors/packet-3g-a11.c @@ -224,7 +224,7 @@ static expert_field ei_a11_entry_data_not_dissected = EI_INIT; static expert_field ei_a11_session_data_not_dissected = EI_INIT; /* Port used for Mobile IP based Tunneling Protocol (A11) */ -#define UDP_PORT_3GA11 699 +#define UDP_PORT_3GA11 699 /* Not IANA registered */ typedef enum { REGISTRATION_REQUEST = 1, @@ -2739,7 +2739,7 @@ proto_reg_handoff_a11(void) dissector_handle_t a11_handle; a11_handle = find_dissector("a11"); - dissector_add_uint("udp.port", UDP_PORT_3GA11, a11_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_3GA11, a11_handle); /* 3GPP2-Service-Option-Profile(74) */ radius_register_avp_dissector(VENDOR_THE3GPP2, 74, dissect_3gpp2_service_option_profile); diff --git a/epan/dissectors/packet-a21.c b/epan/dissectors/packet-a21.c index bcb8e8ff1d..4ca1fc4ab4 100644 --- a/epan/dissectors/packet-a21.c +++ b/epan/dissectors/packet-a21.c @@ -27,7 +27,6 @@ #include "config.h" #include -#include #include #include "packet-e212.h" @@ -36,11 +35,7 @@ void proto_register_a21(void); void proto_reg_handoff_a21(void); -/* Preferences */ #define A21_PORT 23272 -/* Default the port to zero */ -static guint a21_udp_port = 0; - static dissector_handle_t gcsna_handle = NULL; static int proto_a21 = -1; @@ -931,7 +926,6 @@ void proto_register_a21(void) &ett_a21_record_content }; - module_t *a21_module; expert_module_t *expert_a21; static ei_register_info ei[] = { @@ -945,37 +939,15 @@ void proto_register_a21(void) proto_register_subtree_array(ett_a21_array, array_length(ett_a21_array)); expert_a21 = expert_register_protocol(proto_a21); expert_register_field_array(expert_a21, ei, array_length(ei)); - - a21_module = prefs_register_protocol(proto_a21, proto_reg_handoff_a21); - - prefs_register_uint_preference(a21_module, "udp.port", - "A21 UDP Port", - "UDP port used by A21, usually 23272", - 10, &a21_udp_port); - } void proto_reg_handoff_a21(void) { - static dissector_handle_t a21_handle; - static gboolean a21_prefs_initialized = FALSE; - static guint saved_a21_udp_port; - - - if (!a21_prefs_initialized) { - a21_handle = create_dissector_handle(dissect_a21, proto_a21); - gcsna_handle = find_dissector_add_dependency("gcsna", proto_a21); - dissector_add_uint("udp.port", a21_udp_port, a21_handle); - a21_prefs_initialized = TRUE; - } else { - dissector_delete_uint("udp.port", saved_a21_udp_port, a21_handle); - } - - saved_a21_udp_port = a21_udp_port; - if (a21_udp_port != 0) { - dissector_add_uint("udp.port", a21_udp_port, a21_handle); - } + dissector_handle_t a21_handle; + a21_handle = create_dissector_handle(dissect_a21, proto_a21); + gcsna_handle = find_dissector_add_dependency("gcsna", proto_a21); + dissector_add_uint_with_preference("udp.port", A21_PORT, a21_handle); } /* diff --git a/epan/dissectors/packet-acn.c b/epan/dissectors/packet-acn.c index 86037f419c..3553452e5b 100644 --- a/epan/dissectors/packet-acn.c +++ b/epan/dissectors/packet-acn.c @@ -3266,7 +3266,7 @@ proto_reg_handoff_acn(void) { /* dissector_handle_t acn_handle; */ /* acn_handle = create_dissector_handle(dissect_acn, proto_acn); */ - /* dissector_add_for_decode_as("udp.port", acn_handle); */ + /* dissector_add_for_decode_as_with_preference("udp.port", acn_handle); */ heur_dissector_add("udp", dissect_acn_heur, "ACN over UDP", "acn_udp", proto_acn, HEURISTIC_DISABLE); } diff --git a/epan/dissectors/packet-actrace.c b/epan/dissectors/packet-actrace.c index 48207bebdc..dad7c63857 100644 --- a/epan/dissectors/packet-actrace.c +++ b/epan/dissectors/packet-actrace.c @@ -28,7 +28,7 @@ #include #include #include "packet-actrace.h" -#define UDP_PORT_ACTRACE 2428 +#define UDP_PORT_ACTRACE 2428 /* Not IANA registered */ #define NOT_ACTRACE 0 #define ACTRACE_CAS 1 @@ -426,12 +426,6 @@ static int ett_actrace = -1; static int actrace_tap = -1; static actrace_info_t *actrace_pi; -/* - * Here are the global variables associated with - * the user definable characteristics of the dissection - */ -static guint global_actrace_udp_port = UDP_PORT_ACTRACE; - /* Some basic utility functions that are specific to this dissector */ static int is_actrace(tvbuff_t *tvb, gint offset); @@ -794,13 +788,7 @@ void proto_register_actrace(void) proto_register_subtree_array(ett, array_length(ett)); /* Register our configuration options */ - actrace_module = prefs_register_protocol(proto_actrace, proto_reg_handoff_actrace); - - prefs_register_uint_preference(actrace_module, "udp_port", - "AudioCodes Trunk Trace UDP port", - "Set the UDP port for AudioCodes Trunk Traces." - "Use http://x.x.x.x/TrunkTraces to enable the traces in the Blade", - 10, &global_actrace_udp_port); + actrace_module = prefs_register_protocol(proto_actrace, NULL); prefs_register_obsolete_preference(actrace_module, "display_dissect_tree"); @@ -810,26 +798,13 @@ void proto_register_actrace(void) /* The registration hand-off routine */ void proto_reg_handoff_actrace(void) { - static gboolean actrace_prefs_initialized = FALSE; - static dissector_handle_t actrace_handle; - static guint actrace_udp_port; + dissector_handle_t actrace_handle; - if (!actrace_prefs_initialized) - { - actrace_handle = create_dissector_handle(dissect_actrace, proto_actrace); - /* Get a handle for the lapd dissector. */ - lapd_handle = find_dissector_add_dependency("lapd", proto_actrace); - actrace_prefs_initialized = TRUE; - } - else - { - dissector_delete_uint("udp.port", actrace_udp_port, actrace_handle); - } + /* Get a handle for the lapd dissector. */ + lapd_handle = find_dissector_add_dependency("lapd", proto_actrace); - /* Set our port number for future use */ - actrace_udp_port = global_actrace_udp_port; - - dissector_add_uint("udp.port", global_actrace_udp_port, actrace_handle); + actrace_handle = create_dissector_handle(dissect_actrace, proto_actrace); + dissector_add_uint_with_preference("udp.port", UDP_PORT_ACTRACE, actrace_handle); } /* diff --git a/epan/dissectors/packet-adwin.c b/epan/dissectors/packet-adwin.c index 033d1ff66e..18f839dfb2 100644 --- a/epan/dissectors/packet-adwin.c +++ b/epan/dissectors/packet-adwin.c @@ -30,8 +30,7 @@ void proto_reg_handoff_adwin(void); void proto_register_adwin(void); -/* This is registered to a different protocol */ -#define ADWIN_COMM_PORT 6543 +#define ADWIN_COMM_PORT 6543 /* Not IANA registered */ /* lengths of valid packet structures */ #define UDPH1_OLD_LENGTH 52 @@ -442,7 +441,6 @@ static value_string_ext packet_type_mapping_ext = VALUE_STRING_EXT_INIT(packet_t /* Initialize the protocol and registered fields */ static int proto_adwin = -1; -static unsigned int global_adwin_udp_port = ADWIN_COMM_PORT; static int global_adwin_dissect_data = 1; static int hf_adwin_address = -1; @@ -1162,19 +1160,10 @@ dissect_adwin(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U void proto_reg_handoff_adwin(void) { - static int adwin_prefs_initialized = FALSE; - static dissector_handle_t adwin_handle; - static unsigned int udp_port; + dissector_handle_t adwin_handle; - if (! adwin_prefs_initialized) { - adwin_handle = create_dissector_handle(dissect_adwin, proto_adwin); - adwin_prefs_initialized = TRUE; - } else { - dissector_delete_uint("udp.port", udp_port, adwin_handle); - } - - udp_port = global_adwin_udp_port; - dissector_add_uint("udp.port", global_adwin_udp_port, adwin_handle); + adwin_handle = create_dissector_handle(dissect_adwin, proto_adwin); + dissector_add_uint_with_preference("udp.port", ADWIN_COMM_PORT, adwin_handle); } void @@ -1439,14 +1428,8 @@ proto_register_adwin(void) proto_register_field_array(proto_adwin, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - /* Register our configuration options for ADwin, particularly - our port */ - adwin_module = prefs_register_protocol(proto_adwin, proto_reg_handoff_adwin); - - prefs_register_uint_preference(adwin_module, "udp.port", "ADwin UDP Port", - "Set the UDP port for ADwin packets (if other" - " than the default of 6543)", - 10, &global_adwin_udp_port); + /* Register our configuration options for ADwin */ + adwin_module = prefs_register_protocol(proto_adwin, NULL); prefs_register_bool_preference(adwin_module, "dissect_data", "Dissect Data sections", diff --git a/epan/dissectors/packet-aeron.c b/epan/dissectors/packet-aeron.c index 5f263a0141..ffb7417d90 100644 --- a/epan/dissectors/packet-aeron.c +++ b/epan/dissectors/packet-aeron.c @@ -3132,7 +3132,7 @@ void proto_register_aeron(void) void proto_reg_handoff_aeron(void) { aeron_dissector_handle = create_dissector_handle(dissect_aeron, proto_aeron); - dissector_add_for_decode_as("udp.port", aeron_dissector_handle); + dissector_add_for_decode_as_with_preference("udp.port", aeron_dissector_handle); heur_dissector_add("udp", test_aeron_packet, "Aeron over UDP", "aeron_udp", proto_aeron, HEURISTIC_DISABLE); } diff --git a/epan/dissectors/packet-alljoyn.c b/epan/dissectors/packet-alljoyn.c index 19fdf407ca..fd9b1dd93e 100644 --- a/epan/dissectors/packet-alljoyn.c +++ b/epan/dissectors/packet-alljoyn.c @@ -3027,23 +3027,19 @@ proto_register_AllJoyn(void) void proto_reg_handoff_AllJoyn(void) { - static gboolean initialized = FALSE; - static dissector_handle_t alljoyn_handle_ns; - static dissector_handle_t alljoyn_handle_ardp; + dissector_handle_t alljoyn_handle_ns; + dissector_handle_t alljoyn_handle_ardp; - if(!initialized) { - alljoyn_handle_ns = create_dissector_handle(dissect_AllJoyn_name_server, proto_AllJoyn_ns); - alljoyn_handle_ardp = create_dissector_handle(dissect_AllJoyn_ardp, proto_AllJoyn_ardp); - dissector_add_uint_with_preference("tcp.port", ALLJOYN_NAME_SERVER_PORT, alljoyn_handle_ns); - dissector_add_uint_with_preference("tcp.port", ALLJOYN_MESSAGE_PORT, alljoyn_handle_ardp); - initialized = TRUE; - } + alljoyn_handle_ns = create_dissector_handle(dissect_AllJoyn_name_server, proto_AllJoyn_ns); + alljoyn_handle_ardp = create_dissector_handle(dissect_AllJoyn_ardp, proto_AllJoyn_ardp); + dissector_add_uint_with_preference("tcp.port", ALLJOYN_NAME_SERVER_PORT, alljoyn_handle_ns); + dissector_add_uint_with_preference("tcp.port", ALLJOYN_MESSAGE_PORT, alljoyn_handle_ardp); - dissector_add_uint("udp.port", ALLJOYN_NAME_SERVER_PORT, alljoyn_handle_ns); + dissector_add_uint_with_preference("udp.port", ALLJOYN_NAME_SERVER_PORT, alljoyn_handle_ns); /* The ARDP dissector will directly call the AllJoyn message dissector if needed. * This includes the case where there is no ARDP data. */ - dissector_add_uint("udp.port", ALLJOYN_MESSAGE_PORT, alljoyn_handle_ardp); + dissector_add_uint_with_preference("udp.port", ALLJOYN_MESSAGE_PORT, alljoyn_handle_ardp); } /* diff --git a/epan/dissectors/packet-amr.c b/epan/dissectors/packet-amr.c index c09712c406..db48e94e6a 100644 --- a/epan/dissectors/packet-amr.c +++ b/epan/dissectors/packet-amr.c @@ -850,7 +850,7 @@ proto_reg_handoff_amr(void) create_dissector_handle(ftr->content_pdu, proto_amr)); } /* Activate the next line for testing with the randpkt tool - dissector_add_uint("udp.port", 55555, amr_handle); + dissector_add_uint_with_preference("udp.port", 55555, amr_handle); */ amr_prefs_initialized = TRUE; } else { diff --git a/epan/dissectors/packet-aodv.c b/epan/dissectors/packet-aodv.c index 28e8d2148c..8d2576f19a 100644 --- a/epan/dissectors/packet-aodv.c +++ b/epan/dissectors/packet-aodv.c @@ -927,7 +927,7 @@ proto_reg_handoff_aodv(void) aodv_handle = create_dissector_handle(dissect_aodv, proto_aodv); - dissector_add_uint("udp.port", UDP_PORT_AODV, aodv_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_AODV, aodv_handle); } /* diff --git a/epan/dissectors/packet-ar_drone.c b/epan/dissectors/packet-ar_drone.c index b98a4ba20d..aa9655a887 100644 --- a/epan/dissectors/packet-ar_drone.c +++ b/epan/dissectors/packet-ar_drone.c @@ -27,14 +27,11 @@ #include "config.h" #include -#include #include void proto_register_ar_drone(void); void proto_reg_handoff_ar_drone(void); -static guint ar_drone_port = 0; - /* ************************************************ */ /* Begin static variable declaration/initialization */ /* ************************************************ */ @@ -761,59 +758,27 @@ proto_register_ar_drone(void) { &ei_NO_CR, { "ar_drone.no_cr", PI_MALFORMED, PI_ERROR, "Carriage return delimiter (0x0d) not found", EXPFILL }}, }; - module_t *drone_module; expert_module_t* expert_drone; /* Setup protocol info */ - proto_ar_drone = proto_register_protocol ( - "AR Drone Packet", /* name */ - "AR Drone", /* short name */ - "ar_drone" /* abbrev */ - ); + proto_ar_drone = proto_register_protocol("AR Drone Packet", "AR Drone", "ar_drone"); proto_register_field_array(proto_ar_drone, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_drone = expert_register_protocol(proto_ar_drone); expert_register_field_array(expert_drone, ei, array_length(ei)); - - drone_module = prefs_register_protocol(proto_ar_drone, NULL); - - prefs_register_uint_preference(drone_module, "udp.port", - "AR Drone UDP Port", - "AR Drone UDP port", - 10, - &ar_drone_port); } void proto_reg_handoff_ar_drone(void) { - static dissector_handle_t ar_drone_handle; - static guint old_port = 0; - static gboolean initialized = FALSE; + dissector_handle_t ar_drone_handle; - if (initialized == FALSE) - { - ar_drone_handle = create_dissector_handle(dissect_ar_drone, proto_ar_drone); + ar_drone_handle = create_dissector_handle(dissect_ar_drone, proto_ar_drone); - heur_dissector_add("udp", dissect_ar_drone, "AR Drone over UDP", "ar_drone_udp", proto_ar_drone, HEURISTIC_ENABLE); - - initialized = TRUE; - } - - /* Register UDP port for dissection */ - if (old_port != 0 && old_port != ar_drone_port) - { - dissector_delete_uint("udp.port", old_port, ar_drone_handle); - } - - if (ar_drone_port != 0 && old_port != ar_drone_port) - { - dissector_add_uint("udp.port", ar_drone_port, ar_drone_handle); - } - - old_port = ar_drone_port; + heur_dissector_add("udp", dissect_ar_drone, "AR Drone over UDP", "ar_drone_udp", proto_ar_drone, HEURISTIC_ENABLE); + dissector_add_for_decode_as_with_preference("udp.port", ar_drone_handle); } /* diff --git a/epan/dissectors/packet-armagetronad.c b/epan/dissectors/packet-armagetronad.c index 0ae37def07..733152e1c1 100644 --- a/epan/dissectors/packet-armagetronad.c +++ b/epan/dissectors/packet-armagetronad.c @@ -40,8 +40,7 @@ static int hf_armagetronad_msg_subtree = -1; static gint ett_armagetronad = -1; static gint ett_message = -1; -#define UDP_PORT_ARMAGETRONAD 4534 -#define UDP_PORT_MASTER 4533 +#define ARMAGETRONAD_UDP_PORT_RANGE "4533-4534" /* 4533 is not IANA registered, 4534 is */ /* * The ACK packet is so common that we treat it @@ -322,8 +321,7 @@ void proto_reg_handoff_armagetronad(void) armagetronad_handle = find_dissector("armagetronad"); - dissector_add_uint("udp.port", UDP_PORT_ARMAGETRONAD, armagetronad_handle); - dissector_add_uint("udp.port", UDP_PORT_MASTER, armagetronad_handle); + dissector_add_uint_range_with_preference("udp.port", ARMAGETRONAD_UDP_PORT_RANGE, armagetronad_handle); } /* diff --git a/epan/dissectors/packet-artnet.c b/epan/dissectors/packet-artnet.c index 3f4f3f01e6..db244a43ce 100644 --- a/epan/dissectors/packet-artnet.c +++ b/epan/dissectors/packet-artnet.c @@ -5368,7 +5368,7 @@ proto_reg_handoff_artnet(void) { dissector_handle_t artnet_handle; artnet_handle = create_dissector_handle(dissect_artnet, proto_artnet); - dissector_add_for_decode_as("udp.port", artnet_handle); + dissector_add_for_decode_as_with_preference("udp.port", artnet_handle); rdm_handle = find_dissector_add_dependency("rdm", proto_artnet); dmx_chan_handle = find_dissector_add_dependency("dmx-chan", proto_artnet); diff --git a/epan/dissectors/packet-aruba-adp.c b/epan/dissectors/packet-aruba-adp.c index 3b30ffce78..5fb9589ac7 100644 --- a/epan/dissectors/packet-aruba-adp.c +++ b/epan/dissectors/packet-aruba-adp.c @@ -27,7 +27,7 @@ #include #include -#define UDP_PORT_ADP 8200 +#define UDP_PORT_ADP 8200 /* Not IANA registered */ #define ADP_REQUEST 1 #define ADP_RESPONSE 2 @@ -148,7 +148,7 @@ proto_reg_handoff_aruba_adp(void) dissector_handle_t adp_handle; adp_handle = create_dissector_handle(dissect_aruba_adp, proto_aruba_adp); - dissector_add_uint("udp.port", UDP_PORT_ADP, adp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_ADP, adp_handle); } /* diff --git a/epan/dissectors/packet-aruba-erm.c b/epan/dissectors/packet-aruba-erm.c index b58b8adcb2..d751838b40 100644 --- a/epan/dissectors/packet-aruba-erm.c +++ b/epan/dissectors/packet-aruba-erm.c @@ -122,7 +122,6 @@ void proto_register_aruba_erm(void); void proto_reg_handoff_aruba_erm(void); void proto_reg_handoff_aruba_erm_radio(void); -static range_t *global_aruba_erm_port_range; #if 0 static gint aruba_erm_type = 0; #endif @@ -435,15 +434,8 @@ proto_register_aruba_erm(void) proto_aruba_erm_type4 = proto_register_protocol("Aruba Networks encapsulated remote mirroring - PPI (Type 4)", "ARUBA ERM PPI (Type 4)", "aruba_erm_type4"); proto_aruba_erm_type5 = proto_register_protocol("Aruba Networks encapsulated remote mirroring - PEEK (Type 5)", "ARUBA ERM PEEK-NG (type 5)", "aruba_erm_type5"); - range_convert_str (&global_aruba_erm_port_range, "0", MAX_UDP_PORT); + aruba_erm_module = prefs_register_protocol(proto_aruba_erm, NULL); - aruba_erm_module = prefs_register_protocol(proto_aruba_erm, proto_reg_handoff_aruba_erm); - - prefs_register_range_preference(aruba_erm_module, "udp.ports", "ARUBA_ERM UDP Port numbers", - "Set the UDP port numbers (typically the range 5555 to 5560) used for Aruba Networks" - " encapsulated remote mirroring frames;\n" - "0 (default) means that the ARUBA_ERM dissector is not active\n", - &global_aruba_erm_port_range, MAX_UDP_PORT); #if 0 /* Obso...*/ prefs_register_enum_preference(aruba_erm_module, "type.captured", @@ -470,32 +462,19 @@ proto_register_aruba_erm(void) void proto_reg_handoff_aruba_erm(void) { - static range_t *aruba_erm_port_range; - static range_t *aruba_erm_radio_port_range; - static gboolean initialized = FALSE; + wlan_radio_handle = find_dissector_add_dependency("wlan_radio", proto_aruba_erm); + wlan_withfcs_handle = find_dissector_add_dependency("wlan_withfcs", proto_aruba_erm); + ppi_handle = find_dissector_add_dependency("ppi", proto_aruba_erm); + peek_handle = find_dissector_add_dependency("peekremote", proto_aruba_erm); + aruba_erm_handle = create_dissector_handle(dissect_aruba_erm, proto_aruba_erm); + aruba_erm_handle_type0 = create_dissector_handle(dissect_aruba_erm_type0, proto_aruba_erm_type0); + aruba_erm_handle_type1 = create_dissector_handle(dissect_aruba_erm_type1, proto_aruba_erm_type1); + aruba_erm_handle_type2 = create_dissector_handle(dissect_aruba_erm_type2, proto_aruba_erm_type2); + aruba_erm_handle_type3 = create_dissector_handle(dissect_aruba_erm_type3, proto_aruba_erm_type3); + aruba_erm_handle_type4 = create_dissector_handle(dissect_aruba_erm_type4, proto_aruba_erm_type4); + aruba_erm_handle_type5 = create_dissector_handle(dissect_aruba_erm_type5, proto_aruba_erm_type5); - if (!initialized) { - wlan_radio_handle = find_dissector_add_dependency("wlan_radio", proto_aruba_erm); - wlan_withfcs_handle = find_dissector_add_dependency("wlan_withfcs", proto_aruba_erm); - ppi_handle = find_dissector_add_dependency("ppi", proto_aruba_erm); - peek_handle = find_dissector_add_dependency("peekremote", proto_aruba_erm); - aruba_erm_handle = create_dissector_handle(dissect_aruba_erm, proto_aruba_erm); - aruba_erm_handle_type0 = create_dissector_handle(dissect_aruba_erm_type0, proto_aruba_erm_type0); - aruba_erm_handle_type1 = create_dissector_handle(dissect_aruba_erm_type1, proto_aruba_erm_type1); - aruba_erm_handle_type2 = create_dissector_handle(dissect_aruba_erm_type2, proto_aruba_erm_type2); - aruba_erm_handle_type3 = create_dissector_handle(dissect_aruba_erm_type3, proto_aruba_erm_type3); - aruba_erm_handle_type4 = create_dissector_handle(dissect_aruba_erm_type4, proto_aruba_erm_type4); - aruba_erm_handle_type5 = create_dissector_handle(dissect_aruba_erm_type5, proto_aruba_erm_type5); - initialized = TRUE; - } else { - dissector_delete_uint_range("udp.port", aruba_erm_port_range, aruba_erm_handle); - g_free(aruba_erm_port_range); - g_free(aruba_erm_radio_port_range); - } - - aruba_erm_port_range = range_copy(global_aruba_erm_port_range); - - dissector_add_uint_range("udp.port", aruba_erm_port_range, aruba_erm_handle); + dissector_add_uint_range_with_preference("udp.port", "", aruba_erm_handle); dissector_add_for_decode_as("aruba_erm.type", aruba_erm_handle_type0); dissector_add_for_decode_as("aruba_erm.type", aruba_erm_handle_type1); dissector_add_for_decode_as("aruba_erm.type", aruba_erm_handle_type2); diff --git a/epan/dissectors/packet-aruba-papi.c b/epan/dissectors/packet-aruba-papi.c index 3293bf1e98..b0247cb107 100644 --- a/epan/dissectors/packet-aruba-papi.c +++ b/epan/dissectors/packet-aruba-papi.c @@ -662,7 +662,7 @@ proto_reg_handoff_papi(void) dissector_handle_t papi_handle; papi_handle = create_dissector_handle(dissect_papi, proto_papi); - dissector_add_uint("udp.port", UDP_PORT_PAPI, papi_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_PAPI, papi_handle); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-asap.c b/epan/dissectors/packet-asap.c index 170a1e1db6..4079ef5d2b 100644 --- a/epan/dissectors/packet-asap.c +++ b/epan/dissectors/packet-asap.c @@ -923,7 +923,7 @@ proto_reg_handoff_asap(void) asap_handle = create_dissector_handle(dissect_asap, proto_asap); dissector_add_uint("sctp.ppi", ASAP_PAYLOAD_PROTOCOL_ID, asap_handle); - dissector_add_uint("udp.port", ASAP_UDP_PORT, asap_handle); + dissector_add_uint_with_preference("udp.port", ASAP_UDP_PORT, asap_handle); dissector_add_uint_with_preference("tcp.port", ASAP_TCP_PORT, asap_handle); dissector_add_uint("sctp.port", ASAP_SCTP_PORT, asap_handle); } diff --git a/epan/dissectors/packet-asterix.c b/epan/dissectors/packet-asterix.c index 8dd80594bf..e0bb56f61b 100644 --- a/epan/dissectors/packet-asterix.c +++ b/epan/dissectors/packet-asterix.c @@ -11431,7 +11431,7 @@ void proto_register_asterix (void) void proto_reg_handoff_asterix (void) { - dissector_add_uint ("udp.port", ASTERIX_PORT, asterix_handle); + dissector_add_uint_with_preference("udp.port", ASTERIX_PORT, asterix_handle); } /* diff --git a/epan/dissectors/packet-atalk.c b/epan/dissectors/packet-atalk.c index 5d4d64e133..d8fc4454ce 100644 --- a/epan/dissectors/packet-atalk.c +++ b/epan/dissectors/packet-atalk.c @@ -2058,7 +2058,7 @@ proto_reg_handoff_atalk(void) nbp_handle = create_dissector_handle(dissect_nbp, proto_nbp); dissector_add_uint("ddp.type", DDP_NBP, nbp_handle); - dissector_add_for_decode_as("udp.port", nbp_handle); + dissector_add_for_decode_as_with_preference("udp.port", nbp_handle); atp_handle = create_dissector_handle(dissect_atp, proto_atp); dissector_add_uint("ddp.type", DDP_ATP, atp_handle); diff --git a/epan/dissectors/packet-ath.c b/epan/dissectors/packet-ath.c index 55983c703b..292f1698f9 100644 --- a/epan/dissectors/packet-ath.c +++ b/epan/dissectors/packet-ath.c @@ -48,7 +48,7 @@ void proto_reg_handoff_ath(void); * */ -#define ATH_PORT 45564 +#define ATH_PORT 45564 /* Not IANA registered */ static int proto_ath = -1; @@ -438,10 +438,10 @@ proto_register_ath(void) void proto_reg_handoff_ath(void) { - static dissector_handle_t ath_handle; + dissector_handle_t ath_handle; ath_handle = create_dissector_handle(dissect_ath, proto_ath); - dissector_add_uint("udp.port", ATH_PORT, ath_handle); + dissector_add_uint_with_preference("udp.port", ATH_PORT, ath_handle); } /* diff --git a/epan/dissectors/packet-auto_rp.c b/epan/dissectors/packet-auto_rp.c index 74c83f1c16..f761644051 100644 --- a/epan/dissectors/packet-auto_rp.c +++ b/epan/dissectors/packet-auto_rp.c @@ -284,12 +284,9 @@ void proto_register_auto_rp(void) &ett_auto_rp_group }; - proto_auto_rp = proto_register_protocol("Cisco Auto-RP", - "Auto-RP", "auto_rp"); + proto_auto_rp = proto_register_protocol("Cisco Auto-RP", "Auto-RP", "auto_rp"); proto_register_field_array(proto_auto_rp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - return; } void @@ -297,9 +294,8 @@ proto_reg_handoff_auto_rp(void) { dissector_handle_t auto_rp_handle; - auto_rp_handle = create_dissector_handle(dissect_auto_rp, - proto_auto_rp); - dissector_add_uint("udp.port", UDP_PORT_PIM_RP_DISC, auto_rp_handle); + auto_rp_handle = create_dissector_handle(dissect_auto_rp, proto_auto_rp); + dissector_add_uint_with_preference("udp.port", UDP_PORT_PIM_RP_DISC, auto_rp_handle); } /* diff --git a/epan/dissectors/packet-ax4000.c b/epan/dissectors/packet-ax4000.c index 6855a35a0d..8b2f35c72e 100644 --- a/epan/dissectors/packet-ax4000.c +++ b/epan/dissectors/packet-ax4000.c @@ -163,11 +163,11 @@ proto_reg_handoff_ax4000(void) { dissector_handle_t ax4000_handle; - ax4000_handle = create_dissector_handle(dissect_ax4000, - proto_ax4000); + ax4000_handle = create_dissector_handle(dissect_ax4000, proto_ax4000); + dissector_add_uint("ip.proto", IP_PROTO_AX4000, ax4000_handle); dissector_add_uint_with_preference("tcp.port", AX4000_TCP_PORT, ax4000_handle); - dissector_add_uint("udp.port", AX4000_UDP_PORT, ax4000_handle); + dissector_add_uint_with_preference("udp.port", AX4000_UDP_PORT, ax4000_handle); } /* diff --git a/epan/dissectors/packet-ayiya.c b/epan/dissectors/packet-ayiya.c index 4f9dccfa70..6f237e2752 100644 --- a/epan/dissectors/packet-ayiya.c +++ b/epan/dissectors/packet-ayiya.c @@ -208,7 +208,7 @@ proto_reg_handoff_ayiya(void) dissector_handle_t ayiya_handle; ayiya_handle = find_dissector("ayiya"); - dissector_add_uint("udp.port", UDP_PORT_AYIYA, ayiya_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_AYIYA, ayiya_handle); ip_dissector_table = find_dissector_table("ip.proto"); } diff --git a/epan/dissectors/packet-babel.c b/epan/dissectors/packet-babel.c index 3b4b805b33..9c0d0cb46a 100644 --- a/epan/dissectors/packet-babel.c +++ b/epan/dissectors/packet-babel.c @@ -54,8 +54,7 @@ static int hf_babel_message_hopcount = -1; static gint ett_subtree = -1; -#define UDP_PORT_BABEL 6696 -#define UDP_PORT_BABEL_OLD 6697 +#define UDP_PORT_RANGE_BABEL "6696-6697" /* 6697 Not IANA registered, 6696 is */ #define MESSAGE_PAD1 0 #define MESSAGE_PADN 1 @@ -527,8 +526,7 @@ proto_reg_handoff_babel(void) dissector_handle_t babel_handle; babel_handle = create_dissector_handle(dissect_babel, proto_babel); - dissector_add_uint("udp.port", UDP_PORT_BABEL, babel_handle); - dissector_add_uint("udp.port", UDP_PORT_BABEL_OLD, babel_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_RANGE_BABEL, babel_handle); } /* diff --git a/epan/dissectors/packet-bat.c b/epan/dissectors/packet-bat.c index bf9143922b..02b424355b 100644 --- a/epan/dissectors/packet-bat.c +++ b/epan/dissectors/packet-bat.c @@ -24,16 +24,14 @@ #include "config.h" #include -#include #include #include void proto_register_bat(void); void proto_reg_handoff_bat(void); -/* Start content from packet-bat.h */ #define BAT_BATMAN_PORT 4305 -#define BAT_GW_PORT 4306 -#define BAT_VIS_PORT 4307 +#define BAT_GW_PORT 4306 /* Not IANA registered */ +#define BAT_VIS_PORT 4307 /* Not IANA registered */ #define UNIDIRECTIONAL 0x80 #define DIRECTLINK 0x40 @@ -179,13 +177,6 @@ static int proto_bat_vis = -1; static int bat_tap = -1; static int bat_follow_tap = -1; -/* values changed by preferences */ -static guint global_bat_batman_udp_port = BAT_BATMAN_PORT; -static guint global_bat_gw_udp_port = BAT_GW_PORT; -static guint global_bat_vis_udp_port = BAT_VIS_PORT; - - - static int dissect_bat_batman(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { guint8 version; @@ -690,8 +681,6 @@ static void dissect_vis_entry_v23(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t void proto_register_bat(void) { - module_t *bat_module; - static hf_register_info hf[] = { { &hf_bat_batman_version, { "Version", "bat.batman.version", @@ -850,59 +839,28 @@ void proto_register_bat(void) proto_bat_gw = proto_register_protocol("B.A.T.M.A.N. GW", "BAT GW", "bat.gw"); proto_bat_vis = proto_register_protocol("B.A.T.M.A.N. Vis", "BAT VIS", "bat.vis"); - /* Register our configuration options for B.A.T.M.A.N. */ - bat_module = prefs_register_protocol(proto_bat_plugin, proto_reg_handoff_bat); - proto_register_field_array(proto_bat_plugin, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - prefs_register_uint_preference(bat_module, "batman.bat.port", "BAT UDP Port", - "Set the port for B.A.T.M.A.N. BAT " - "messages (if other than the default of 4305)", - 10, &global_bat_batman_udp_port); - prefs_register_uint_preference(bat_module, "batman.gw.port", "GW UDP Port", - "Set the port for B.A.T.M.A.N. Gateway " - "messages (if other than the default of 4306)", - 10, &global_bat_gw_udp_port); - prefs_register_uint_preference(bat_module, "batman.vis.port", "VIS UDP Port", - "Set the port for B.A.T.M.A.N. VIS " - "messages (if other than the default of 4307)", - 10, &global_bat_vis_udp_port); } void proto_reg_handoff_bat(void) { - static gboolean inited = FALSE; - static dissector_handle_t batman_handle; - static dissector_handle_t gw_handle; - static dissector_handle_t vis_handle; - static guint batman_udp_port; - static guint gw_udp_port; - static guint vis_udp_port; + dissector_handle_t batman_handle; + dissector_handle_t gw_handle; + dissector_handle_t vis_handle; - if (!inited) { - bat_tap = register_tap("batman"); - bat_follow_tap = register_tap("batman_follow"); + bat_tap = register_tap("batman"); + bat_follow_tap = register_tap("batman_follow"); - batman_handle = create_dissector_handle(dissect_bat_batman, proto_bat_plugin); - gw_handle = create_dissector_handle(dissect_bat_gw, proto_bat_gw); - vis_handle = create_dissector_handle(dissect_bat_vis, proto_bat_vis); + batman_handle = create_dissector_handle(dissect_bat_batman, proto_bat_plugin); + gw_handle = create_dissector_handle(dissect_bat_gw, proto_bat_gw); + vis_handle = create_dissector_handle(dissect_bat_vis, proto_bat_vis); - ip_handle = find_dissector_add_dependency("ip", proto_bat_gw); + ip_handle = find_dissector_add_dependency("ip", proto_bat_gw); - inited = TRUE; - } else { - dissector_delete_uint("udp.port", batman_udp_port, batman_handle); - dissector_delete_uint("udp.port", gw_udp_port, gw_handle); - dissector_delete_uint("udp.port", vis_udp_port, vis_handle); - } - - batman_udp_port = global_bat_batman_udp_port; - gw_udp_port = global_bat_gw_udp_port; - vis_udp_port = global_bat_vis_udp_port; - dissector_add_uint("udp.port", batman_udp_port, batman_handle); - dissector_add_uint("udp.port", gw_udp_port, gw_handle); - dissector_add_uint("udp.port", vis_udp_port, vis_handle); + dissector_add_uint_with_preference("udp.port", BAT_BATMAN_PORT, batman_handle); + dissector_add_uint_with_preference("udp.port", BAT_GW_PORT, gw_handle); + dissector_add_uint_with_preference("udp.port", BAT_VIS_PORT, vis_handle); } /* diff --git a/epan/dissectors/packet-bfcp.c b/epan/dissectors/packet-bfcp.c index c4ea596970..925ba6e89e 100644 --- a/epan/dissectors/packet-bfcp.c +++ b/epan/dissectors/packet-bfcp.c @@ -713,7 +713,7 @@ void proto_reg_handoff_bfcp(void) heur_dissector_add("tcp", dissect_bfcp_heur, "BFCP over TCP", "bfcp_tcp", proto_bfcp, HEURISTIC_DISABLE); heur_dissector_add("udp", dissect_bfcp_heur, "BFCP over UDP", "bfcp_udp", proto_bfcp, HEURISTIC_DISABLE); dissector_add_for_decode_as_with_preference("tcp.port", bfcp_handle); - dissector_add_for_decode_as("udp.port", bfcp_handle); + dissector_add_for_decode_as_with_preference("udp.port", bfcp_handle); } /* diff --git a/epan/dissectors/packet-bfd.c b/epan/dissectors/packet-bfd.c index df8289fb49..8658e4c28d 100644 --- a/epan/dissectors/packet-bfd.c +++ b/epan/dissectors/packet-bfd.c @@ -43,8 +43,7 @@ void proto_register_bfd(void); void proto_reg_handoff_bfd(void); -#define UDP_PORT_BFD_1HOP_CONTROL 3784 /* draft-katz-ward-bfd-v4v6-1hop-00.txt */ -#define UDP_PORT_BFD_MULTIHOP_CONTROL 4784 /* draft-ietf-bfd-multihop-05.txt */ +#define UDP_PORT_RANGE_BFD "3784,4784" /* draft-katz-ward-bfd-v4v6-1hop-00.txt */ /* draft-ietf-bfd-multihop-05.txt */ /* As per RFC 6428 : http://tools.ietf.org/html/rfc6428 Section: 3.5 */ @@ -869,8 +868,7 @@ proto_reg_handoff_bfd(void) dissector_handle_t bfd_control_handle; bfd_control_handle = find_dissector("bfd"); - dissector_add_uint("udp.port", UDP_PORT_BFD_1HOP_CONTROL, bfd_control_handle); - dissector_add_uint("udp.port", UDP_PORT_BFD_MULTIHOP_CONTROL, bfd_control_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_RANGE_BFD, bfd_control_handle); dissector_add_uint("pwach.channel_type", ACH_TYPE_BFD_CC, bfd_control_handle); dissector_add_uint("pwach.channel_type", ACH_TYPE_BFD_CV, bfd_control_handle); diff --git a/epan/dissectors/packet-bjnp.c b/epan/dissectors/packet-bjnp.c index c63d27dd82..953ec39c4e 100644 --- a/epan/dissectors/packet-bjnp.c +++ b/epan/dissectors/packet-bjnp.c @@ -29,10 +29,7 @@ #define PSNAME "BJNP" #define PFNAME "bjnp" -#define BJNP_PORT1 8611 -#define BJNP_PORT2 8612 -#define BJNP_PORT3 8613 -#define BJNP_PORT4 8614 +#define BJNP_PORT_RANGE "8611-8614" /* dev_type */ #define PRINTER_COMMAND 0x01 @@ -180,10 +177,7 @@ void proto_register_bjnp (void) void proto_reg_handoff_bjnp (void) { - dissector_add_uint ("udp.port", BJNP_PORT1, bjnp_handle); - dissector_add_uint ("udp.port", BJNP_PORT2, bjnp_handle); - dissector_add_uint ("udp.port", BJNP_PORT3, bjnp_handle); - dissector_add_uint ("udp.port", BJNP_PORT4, bjnp_handle); + dissector_add_uint_range_with_preference("udp.port", BJNP_PORT_RANGE, bjnp_handle); } /* diff --git a/epan/dissectors/packet-bootp.c b/epan/dissectors/packet-bootp.c index c005eb4e6b..e793accff0 100644 --- a/epan/dissectors/packet-bootp.c +++ b/epan/dissectors/packet-bootp.c @@ -843,8 +843,7 @@ static const enum_val_t bootp_uuid_endian_vals[] = { { NULL, NULL, 0 } }; -#define UDP_PORT_BOOTPS 67 -#define UDP_PORT_BOOTPC 68 +#define BOOTP_UDP_PORT_RANGE "67-68" #define BOOTP_BC 0x8000 #define BOOTP_MBZ 0x7FFF @@ -8683,8 +8682,7 @@ proto_register_bootp(void) void proto_reg_handoff_bootp(void) { - dissector_add_uint("udp.port", UDP_PORT_BOOTPS, bootp_handle); - dissector_add_uint("udp.port", UDP_PORT_BOOTPC, bootp_handle); + dissector_add_uint_range_with_preference("udp.port", BOOTP_UDP_PORT_RANGE, bootp_handle); } /* diff --git a/epan/dissectors/packet-brp.c b/epan/dissectors/packet-brp.c index a0430bd812..e641f65c78 100644 --- a/epan/dissectors/packet-brp.c +++ b/epan/dissectors/packet-brp.c @@ -30,7 +30,6 @@ #include #include -#include /* Forward declaration we need below */ void proto_register_brp(void); @@ -43,8 +42,6 @@ static int proto_brp = -1; static dissector_handle_t brp_handle; -/*static int global_brp_port = 1958; *//* The port is registered for another protocol */ - static const value_string brp_packettype_names[] = { { 0, "BRP" }, { 1, "Setup Request - BRC -> BRS" }, @@ -127,9 +124,6 @@ static gint ett_brp_fltype = -1; static expert_field ei_brp_type_unknown = EI_INIT; -/* Preferences */ -static guint global_brp_port = 0; - static int dissect_brp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { @@ -324,7 +318,6 @@ return offset; /*--- proto_register_brp ----------------------------------------------*/ void proto_register_brp (void) { - module_t *brp_module; expert_module_t* expert_brp; /* A data field is something you can search/filter on. @@ -402,38 +395,13 @@ void proto_register_brp (void) expert_brp = expert_register_protocol(proto_brp); expert_register_field_array(expert_brp, ei, array_length(ei)); - /* Register preferences module */ - brp_module = prefs_register_protocol(proto_brp, proto_reg_handoff_brp); - - /* Register preferences */ - prefs_register_uint_preference(brp_module, "port", - "BRP Port", - "Set the UDP port for BRP messages", - 10, &global_brp_port); - brp_handle = register_dissector("brp", dissect_brp, proto_brp); } /*--- proto_reg_handoff_brp -------------------------------------------*/ void proto_reg_handoff_brp(void) { - static gboolean initialized = FALSE; - static guint saved_brp_port; - - if (!initialized) { - dissector_add_for_decode_as("udp.port", brp_handle); - initialized = TRUE; - } else { - if (saved_brp_port != 0) { - dissector_delete_uint("udp.port", saved_brp_port, brp_handle); - } - } - - /* Set the port number */ - if (global_brp_port != 0) { - dissector_add_uint("udp.port", global_brp_port, brp_handle); - } - saved_brp_port = global_brp_port; + dissector_add_for_decode_as_with_preference("udp.port", brp_handle); } /* diff --git a/epan/dissectors/packet-bt-dht.c b/epan/dissectors/packet-bt-dht.c index c5da3e349c..19bf16eaa0 100644 --- a/epan/dissectors/packet-bt-dht.c +++ b/epan/dissectors/packet-bt-dht.c @@ -567,13 +567,9 @@ proto_register_bt_dht(void) module_t *bt_dht_module; - proto_bt_dht = proto_register_protocol ( - "BitTorrent DHT Protocol", /* name */ - "BT-DHT", /* short name */ - "bt-dht" /* abbrev */ - ); + proto_bt_dht = proto_register_protocol ("BitTorrent DHT Protocol", "BT-DHT", "bt-dht"); - bt_dht_module = prefs_register_protocol(proto_bt_dht, proto_reg_handoff_bt_dht); + bt_dht_module = prefs_register_protocol(proto_bt_dht, NULL); prefs_register_obsolete_preference(bt_dht_module, "enable"); proto_register_field_array(proto_bt_dht, hf, array_length(hf)); @@ -583,20 +579,14 @@ proto_register_bt_dht(void) void proto_reg_handoff_bt_dht(void) { - static gboolean prefs_initialized = FALSE; - /* "Decode As" is always available; * Heuristic dissection in disabled by default since the heuristic is quite weak. * XXX - Still too weak? */ - if (!prefs_initialized) { - heur_dissector_add("udp", dissect_bt_dht_heur, "BitTorrent DHT over UDP", "bittorrent_dht_udp", proto_bt_dht, HEURISTIC_DISABLE); + heur_dissector_add("udp", dissect_bt_dht_heur, "BitTorrent DHT over UDP", "bittorrent_dht_udp", proto_bt_dht, HEURISTIC_DISABLE); - bt_dht_handle = create_dissector_handle(dissect_bt_dht, proto_bt_dht); - dissector_add_for_decode_as("udp.port", bt_dht_handle); - - prefs_initialized = TRUE; - } + bt_dht_handle = create_dissector_handle(dissect_bt_dht, proto_bt_dht); + dissector_add_for_decode_as_with_preference("udp.port", bt_dht_handle); } /* diff --git a/epan/dissectors/packet-bt-utp.c b/epan/dissectors/packet-bt-utp.c index adf19effdb..b1ff2b1403 100644 --- a/epan/dissectors/packet-bt-utp.c +++ b/epan/dissectors/packet-bt-utp.c @@ -466,13 +466,9 @@ proto_register_bt_utp(void) module_t *bt_utp_module; /* Register protocol */ - proto_bt_utp = proto_register_protocol ( - "uTorrent Transport Protocol", /* name */ - "BT-uTP", /* short name */ - "bt-utp" /* abbrev */ - ); + proto_bt_utp = proto_register_protocol ("uTorrent Transport Protocol", "BT-uTP", "bt-utp"); - bt_utp_module = prefs_register_protocol(proto_bt_utp, proto_reg_handoff_bt_utp); + bt_utp_module = prefs_register_protocol(proto_bt_utp, NULL); prefs_register_obsolete_preference(bt_utp_module, "enable"); proto_register_field_array(proto_bt_utp, hf, array_length(hf)); @@ -482,17 +478,11 @@ proto_register_bt_utp(void) void proto_reg_handoff_bt_utp(void) { - static gboolean prefs_initialized = FALSE; + /* disabled by default since heuristic is weak */ + heur_dissector_add("udp", dissect_bt_utp, "BitTorrent UTP over UDP", "bt_utp_udp", proto_bt_utp, HEURISTIC_DISABLE); - if (!prefs_initialized) { - /* disabled by default since heuristic is weak */ - heur_dissector_add("udp", dissect_bt_utp, "BitTorrent UTP over UDP", "bt_utp_udp", proto_bt_utp, HEURISTIC_DISABLE); - - bt_utp_handle = create_dissector_handle(dissect_bt_utp, proto_bt_utp); - dissector_add_for_decode_as("udp.port", bt_utp_handle); - - prefs_initialized = TRUE; - } + bt_utp_handle = create_dissector_handle(dissect_bt_utp, proto_bt_utp); + dissector_add_for_decode_as_with_preference("udp.port", bt_utp_handle); } /* diff --git a/epan/dissectors/packet-bvlc.c b/epan/dissectors/packet-bvlc.c index a3bf4e409d..68fe08248e 100644 --- a/epan/dissectors/packet-bvlc.c +++ b/epan/dissectors/packet-bvlc.c @@ -26,21 +26,11 @@ #include "config.h" #include -#include void proto_register_bvlc(void); void proto_reg_handoff_bvlc(void); -/* Taken from add-135a (BACnet-IP-standard paper): - * - * The default UDP port for both directed messages and broadcasts shall - * be X'BAC0' and all B/IP devices shall support it. In some cases, - * e.g., a situation where it is desirable for two groups of BACnet devices - * to coexist independently on the same IP subnet, the UDP port may be - * configured locally to a different value without it being considered - * a violation of this protocol. - */ -static guint global_additional_bvlc_udp_port = 0; +#define BVLC_UDP_PORT 0xBAC0 static int proto_bvlc = -1; static int hf_bvlc_type = -1; @@ -389,20 +379,12 @@ proto_register_bvlc(void) &ett_fdt, }; - module_t *bvlc_module; - proto_bvlc = proto_register_protocol("BACnet Virtual Link Control", - "BVLC", "bvlc"); + proto_bvlc = proto_register_protocol("BACnet Virtual Link Control", "BVLC", "bvlc"); proto_register_field_array(proto_bvlc, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - bvlc_module = prefs_register_protocol(proto_bvlc, proto_reg_handoff_bvlc); - prefs_register_uint_preference(bvlc_module, "additional_udp_port", - "Additional UDP port", "Set an additional UDP port, " - "besides the standard X'BAC0' (47808) port.", - 10, &global_additional_bvlc_udp_port); - register_dissector("bvlc", dissect_bvlc, proto_bvlc); bvlc_dissector_table = register_dissector_table("bvlc.function", @@ -412,27 +394,10 @@ proto_register_bvlc(void) void proto_reg_handoff_bvlc(void) { - static gboolean bvlc_initialized = FALSE; - static dissector_handle_t bvlc_handle; - static guint additional_bvlc_udp_port; + dissector_handle_t bvlc_handle; - if (!bvlc_initialized) - { - bvlc_handle = find_dissector("bvlc"); - dissector_add_uint("udp.port", 0xBAC0, bvlc_handle); - bvlc_initialized = TRUE; - } - else - { - if (additional_bvlc_udp_port != 0) { - dissector_delete_uint("udp.port", additional_bvlc_udp_port, bvlc_handle); - } - } - - if (global_additional_bvlc_udp_port != 0) { - dissector_add_uint("udp.port", global_additional_bvlc_udp_port, bvlc_handle); - } - additional_bvlc_udp_port = global_additional_bvlc_udp_port; + bvlc_handle = find_dissector("bvlc"); + dissector_add_uint_with_preference("udp.port", BVLC_UDP_PORT, bvlc_handle); } /* diff --git a/epan/dissectors/packet-c1222.c b/epan/dissectors/packet-c1222.c index a68da36555..e463cd9988 100644 --- a/epan/dissectors/packet-c1222.c +++ b/epan/dissectors/packet-c1222.c @@ -242,7 +242,6 @@ static expert_field ei_c1222_epsem_field_length_error = EI_INIT; static expert_field ei_c1222_mac_missing = EI_INIT; /* Preferences */ -static int global_c1222_port = C1222_PORT; static gboolean c1222_desegment = TRUE; #ifdef HAVE_LIBGCRYPT static gboolean c1222_decrypt = TRUE; @@ -2059,7 +2058,7 @@ proto_reg_handoff_c1222(void) c1222_handle = create_dissector_handle(dissect_c1222, proto_c1222); c1222_udp_handle = create_dissector_handle(dissect_c1222_common, proto_c1222); dissector_add_uint_with_preference("tcp.port", C1222_PORT, c1222_handle); - dissector_add_uint("udp.port", global_c1222_port, c1222_udp_handle); + dissector_add_uint_with_preference("udp.port", C1222_PORT, c1222_udp_handle); initialized = TRUE; } if (c1222_baseoid_str && (c1222_baseoid_str[0] != '\0') && diff --git a/epan/dissectors/packet-capwap.c b/epan/dissectors/packet-capwap.c index 0eed93d43f..bf7bcfd087 100644 --- a/epan/dissectors/packet-capwap.c +++ b/epan/dissectors/packet-capwap.c @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -37,7 +38,6 @@ void proto_reg_handoff_capwap(void); #define UDP_PORT_CAPWAP_CONTROL 5246 #define UDP_PORT_CAPWAP_DATA 5247 -static guint global_capwap_control_udp_port = UDP_PORT_CAPWAP_CONTROL; static guint global_capwap_data_udp_port = UDP_PORT_CAPWAP_DATA; static gboolean global_capwap_draft_8_cisco = FALSE; static gboolean global_capwap_reassemble = TRUE; @@ -3395,6 +3395,13 @@ dissect_capwap_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d return tvb_captured_length(tvb); } +static void +apply_capwap_prefs(void) +{ + pref_t *control_port = prefs_find_preference(prefs_find_module("capwap.data"), "udp.port"); + global_capwap_data_udp_port = *control_port->varp.uint; +} + void proto_register_capwap_control(void) { @@ -5764,15 +5771,9 @@ proto_register_capwap_control(void) register_init_routine(&capwap_reassemble_init); register_cleanup_routine(&capwap_reassemble_cleanup); - capwap_module = prefs_register_protocol(proto_capwap_control, proto_reg_handoff_capwap); - - prefs_register_uint_preference(capwap_module, "udp.port.control", "CAPWAP Control UDP Port", - "Set the port for CAPWAP Control messages (if other than the default of 5246)", - 10, &global_capwap_control_udp_port); - - prefs_register_uint_preference(capwap_module, "udp.port.data", "CAPWAP Data UDP Port", - "Set the port for CAPWAP Data messages (if other than the default of 5247)", - 10, &global_capwap_data_udp_port); + capwap_module = prefs_register_protocol(proto_capwap_control, NULL); + /* Need to create a placeholder for "port" preferences so there is a callback */ + prefs_register_protocol(proto_capwap_data, apply_capwap_prefs); prefs_register_bool_preference(capwap_module, "draft_8_cisco", "Cisco Wireless Controller Support", "Enable support of Cisco Wireless Controller (based on old 8 draft revision).", @@ -5791,29 +5792,18 @@ proto_register_capwap_control(void) void proto_reg_handoff_capwap(void) { - static gboolean inited = FALSE; - static dissector_handle_t capwap_control_handle, capwap_data_handle; - static guint capwap_control_udp_port, capwap_data_udp_port; + dissector_handle_t capwap_control_handle, capwap_data_handle; - if (!inited) { - capwap_control_handle = create_dissector_handle(dissect_capwap_control, proto_capwap_control); - capwap_data_handle = create_dissector_handle(dissect_capwap_data, proto_capwap_data); - dtls_handle = find_dissector_add_dependency("dtls", proto_capwap_control); - find_dissector_add_dependency("dtls", proto_capwap_data); - ieee8023_handle = find_dissector_add_dependency("eth_withoutfcs", proto_capwap_data); - ieee80211_handle = find_dissector_add_dependency("wlan_withoutfcs", proto_capwap_data); - ieee80211_bsfc_handle = find_dissector_add_dependency("wlan_bsfc", proto_capwap_data); + capwap_control_handle = create_dissector_handle(dissect_capwap_control, proto_capwap_control); + capwap_data_handle = create_dissector_handle(dissect_capwap_data, proto_capwap_data); + dtls_handle = find_dissector_add_dependency("dtls", proto_capwap_control); + find_dissector_add_dependency("dtls", proto_capwap_data); + ieee8023_handle = find_dissector_add_dependency("eth_withoutfcs", proto_capwap_data); + ieee80211_handle = find_dissector_add_dependency("wlan_withoutfcs", proto_capwap_data); + ieee80211_bsfc_handle = find_dissector_add_dependency("wlan_bsfc", proto_capwap_data); - inited = TRUE; - } else { - dissector_delete_uint("udp.port", capwap_control_udp_port, capwap_control_handle); - dissector_delete_uint("udp.port", capwap_data_udp_port, capwap_data_handle); - } - dissector_add_uint("udp.port", global_capwap_control_udp_port, capwap_control_handle); - dissector_add_uint("udp.port", global_capwap_data_udp_port, capwap_data_handle); - - capwap_control_udp_port = global_capwap_control_udp_port; - capwap_data_udp_port = global_capwap_data_udp_port; + dissector_add_uint_with_preference("udp.port", UDP_PORT_CAPWAP_CONTROL, capwap_control_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_CAPWAP_DATA, capwap_data_handle); } /* * Editor modelines diff --git a/epan/dissectors/packet-cattp.c b/epan/dissectors/packet-cattp.c index 9237e5a4f5..9e293f4002 100644 --- a/epan/dissectors/packet-cattp.c +++ b/epan/dissectors/packet-cattp.c @@ -560,7 +560,7 @@ proto_register_cattp(void) expert_cattp = expert_register_protocol(proto_cattp); expert_register_field_array(expert_cattp, ei, array_length(ei)); - cattp_module = prefs_register_protocol(proto_cattp, proto_reg_handoff_cattp); + cattp_module = prefs_register_protocol(proto_cattp, NULL); prefs_register_bool_preference(cattp_module, "checksum", "Validate checksum of all messages", "Whether the checksum of all messages should be validated or not", @@ -573,18 +573,13 @@ proto_register_cattp(void) void proto_reg_handoff_cattp(void) { - static gboolean initialized = FALSE; + dissector_handle_t cattp_handle; - if (!initialized) { - dissector_handle_t cattp_handle; + /* Create dissector handle */ + cattp_handle = create_dissector_handle(dissect_cattp, proto_cattp); - /* Create dissector handle */ - cattp_handle = create_dissector_handle(dissect_cattp, proto_cattp); - - heur_dissector_add("udp", dissect_cattp_heur, "CAT-TP over UDP", "cattp_udp", proto_cattp, HEURISTIC_ENABLE); - dissector_add_for_decode_as("udp.port", cattp_handle); - initialized = TRUE; - } + heur_dissector_add("udp", dissect_cattp_heur, "CAT-TP over UDP", "cattp_udp", proto_cattp, HEURISTIC_ENABLE); + dissector_add_for_decode_as_with_preference("udp.port", cattp_handle); } /* diff --git a/epan/dissectors/packet-ccsds.c b/epan/dissectors/packet-ccsds.c index fd6b27f98d..1180ea06ea 100644 --- a/epan/dissectors/packet-ccsds.c +++ b/epan/dissectors/packet-ccsds.c @@ -722,7 +722,7 @@ proto_register_ccsds(void) void proto_reg_handoff_ccsds(void) { - dissector_add_for_decode_as ( "udp.port", find_dissector("ccsds") ); + dissector_add_for_decode_as_with_preference( "udp.port", find_dissector("ccsds") ); } /* diff --git a/epan/dissectors/packet-cfdp.c b/epan/dissectors/packet-cfdp.c index 82ee1512fd..a9b24a081a 100644 --- a/epan/dissectors/packet-cfdp.c +++ b/epan/dissectors/packet-cfdp.c @@ -1631,7 +1631,7 @@ void proto_reg_handoff_cfdp(void) { dissector_add_uint("ccsds.apid", CFDP_APID, cfdp_handle); - dissector_add_for_decode_as("udp.port", cfdp_handle); + dissector_add_for_decode_as_with_preference("udp.port", cfdp_handle); } /* diff --git a/epan/dissectors/packet-chargen.c b/epan/dissectors/packet-chargen.c index c800655a7a..dd27f68e24 100644 --- a/epan/dissectors/packet-chargen.c +++ b/epan/dissectors/packet-chargen.c @@ -93,7 +93,7 @@ proto_reg_handoff_chargen(void) dissector_handle_t chargen_handle; chargen_handle = create_dissector_handle(dissect_chargen, proto_chargen); - dissector_add_uint("udp.port", CHARGEN_PORT_UDP, chargen_handle); + dissector_add_uint_with_preference("udp.port", CHARGEN_PORT_UDP, chargen_handle); dissector_add_uint_with_preference("tcp.port", CHARGEN_PORT_TCP, chargen_handle); } diff --git a/epan/dissectors/packet-cigi.c b/epan/dissectors/packet-cigi.c index 1a23ce0b2c..c08f4e7c19 100644 --- a/epan/dissectors/packet-cigi.c +++ b/epan/dissectors/packet-cigi.c @@ -12040,7 +12040,7 @@ proto_reg_handoff_cigi(void) if( !inited ) { cigi_handle = create_dissector_handle(dissect_cigi, proto_cigi); - dissector_add_for_decode_as("udp.port", cigi_handle); + dissector_add_for_decode_as_with_preference("udp.port", cigi_handle); dissector_add_for_decode_as_with_preference("tcp.port", cigi_handle); heur_dissector_add("udp", dissect_cigi_heur, "CIGI over UDP", "cigi_udp", proto_cigi, HEURISTIC_ENABLE); diff --git a/epan/dissectors/packet-cisco-marker.c b/epan/dissectors/packet-cisco-marker.c index 4d2fda2809..b3dd887792 100644 --- a/epan/dissectors/packet-cisco-marker.c +++ b/epan/dissectors/packet-cisco-marker.c @@ -209,7 +209,7 @@ proto_register_erpsan_marker(void) void proto_reg_handoff_erspan_marker(void) { - dissector_add_for_decode_as("udp.port", marker_handle); + dissector_add_for_decode_as_with_preference("udp.port", marker_handle); } /* diff --git a/epan/dissectors/packet-cisco-wids.c b/epan/dissectors/packet-cisco-wids.c index fd26ecf606..7199c05727 100644 --- a/epan/dissectors/packet-cisco-wids.c +++ b/epan/dissectors/packet-cisco-wids.c @@ -50,11 +50,8 @@ #include #include #include -#include #include -static guint global_udp_port = 0; - static int proto_cwids = -1; static int hf_cwids_version = -1; static int hf_cwids_timestamp = -1; @@ -179,7 +176,6 @@ proto_register_cwids(void) { &ie_ieee80211_subpacket, { "cwids.ieee80211_malformed", PI_MALFORMED, PI_ERROR, "Malformed or short IEEE80211 subpacket", EXPFILL }}, }; - module_t *cwids_module; expert_module_t* expert_cwids; proto_cwids = proto_register_protocol("Cisco Wireless IDS Captures", "CWIDS", "cwids"); @@ -187,36 +183,16 @@ proto_register_cwids(void) proto_register_subtree_array(ett, array_length(ett)); expert_cwids = expert_register_protocol(proto_cwids); expert_register_field_array(expert_cwids, ei, array_length(ei)); - - cwids_module = prefs_register_protocol(proto_cwids, proto_reg_handoff_cwids); - prefs_register_uint_preference(cwids_module, "udp.port", - "CWIDS port", - "Set the destination UDP port Cisco wireless IDS messages", - 10, &global_udp_port); - } void proto_reg_handoff_cwids(void) { - static dissector_handle_t cwids_handle; - static guint saved_udp_port; - static gboolean initialized = FALSE; + dissector_handle_t cwids_handle; - if (!initialized) { - cwids_handle = create_dissector_handle(dissect_cwids, proto_cwids); - dissector_add_for_decode_as("udp.port", cwids_handle); - ieee80211_radio_handle = find_dissector_add_dependency("wlan_noqos_radio", proto_cwids); - initialized = TRUE; - } else { - if (saved_udp_port != 0) { - dissector_delete_uint("udp.port", saved_udp_port, cwids_handle); - } - } - if (global_udp_port != 0) { - dissector_add_uint("udp.port", global_udp_port, cwids_handle); - } - saved_udp_port = global_udp_port; + cwids_handle = create_dissector_handle(dissect_cwids, proto_cwids); + dissector_add_for_decode_as_with_preference("udp.port", cwids_handle); + ieee80211_radio_handle = find_dissector_add_dependency("wlan_noqos_radio", proto_cwids); } /* diff --git a/epan/dissectors/packet-classicstun.c b/epan/dissectors/packet-classicstun.c index 23f1c532ae..c0d9e5e7ef 100644 --- a/epan/dissectors/packet-classicstun.c +++ b/epan/dissectors/packet-classicstun.c @@ -705,7 +705,7 @@ proto_reg_handoff_classicstun(void) classicstun_handle = find_dissector("classicstun"); dissector_add_uint_with_preference("tcp.port", TCP_PORT_STUN, classicstun_handle); - dissector_add_uint("udp.port", UDP_PORT_STUN, classicstun_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_STUN, classicstun_handle); #endif heur_dissector_add("udp", dissect_classicstun_heur, "Classic STUN over UDP", "classicstun_udp", proto_classicstun, HEURISTIC_ENABLE); heur_dissector_add("tcp", dissect_classicstun_heur, "Classic STUN over TCP", "classicstun_tcp", proto_classicstun, HEURISTIC_ENABLE); diff --git a/epan/dissectors/packet-cnip.c b/epan/dissectors/packet-cnip.c index 0b94e29474..17a80ef8b1 100644 --- a/epan/dissectors/packet-cnip.c +++ b/epan/dissectors/packet-cnip.c @@ -29,6 +29,8 @@ #define DATA_PACKET 0x01 +#define CNIP_UDP_PORT_RANGE "1628-1629" /* Not IANA registered */ + static const value_string type_tuple[]= { {0x01, "Data Packet"}, @@ -243,8 +245,7 @@ void proto_reg_handoff_cnip(void) cnip_handle = create_dissector_handle(dissect_cnip, proto_cnip); - dissector_add_uint ("udp.port", 1628, cnip_handle); - dissector_add_uint ("udp.port", 1629, cnip_handle); + dissector_add_uint_range_with_preference("udp.port", CNIP_UDP_PORT_RANGE, cnip_handle); } /* diff --git a/epan/dissectors/packet-coap.c b/epan/dissectors/packet-coap.c index 639f06c5e1..0246de8214 100644 --- a/epan/dissectors/packet-coap.c +++ b/epan/dissectors/packet-coap.c @@ -33,7 +33,6 @@ #include #include -#include #include #include @@ -97,8 +96,6 @@ static expert_field ei_coap_option_length_bad = EI_INIT; #define DEFAULT_COAP_CTYPE_VALUE ~0U #define DEFAULT_COAP_BLOCK_NUMBER ~0U -static guint global_coap_port_number = DEFAULT_COAP_PORT; - static const gchar *coap_ctype_str = NULL; static guint coap_ctype_value = DEFAULT_COAP_CTYPE_VALUE; static guint coap_block_number = DEFAULT_COAP_BLOCK_NUMBER; @@ -1244,7 +1241,6 @@ proto_register_coap(void) { "coap.option_length_bad", PI_MALFORMED, PI_WARN, "Option length bad", EXPFILL }}, }; - module_t *coap_module; expert_module_t *expert_coap; proto_coap = proto_register_protocol("Constrained Application Protocol", "CoAP", "coap"); @@ -1254,34 +1250,17 @@ proto_register_coap(void) expert_register_field_array(expert_coap, ei, array_length(ei)); register_dissector("coap", dissect_coap, proto_coap); - - /* Register our configuration options */ - coap_module = prefs_register_protocol (proto_coap, proto_reg_handoff_coap); - - prefs_register_uint_preference (coap_module, "udp_port", - "CoAP port number", - "Port number used for CoAP traffic", - 10, &global_coap_port_number); } void proto_reg_handoff_coap(void) { - static gboolean coap_prefs_initialized = FALSE; - static dissector_handle_t coap_handle; - static guint coap_port_number; + dissector_handle_t coap_handle; - if (!coap_prefs_initialized) { - coap_handle = find_dissector("coap"); - media_type_dissector_table = find_dissector_table("media_type"); - dissector_add_uint_with_preference("tcp.port", DEFAULT_COAP_PORT, coap_handle); - coap_prefs_initialized = TRUE; - } else { - dissector_delete_uint("udp.port", coap_port_number, coap_handle); - } - - coap_port_number = global_coap_port_number; - dissector_add_uint("udp.port", coap_port_number, coap_handle); + coap_handle = find_dissector("coap"); + media_type_dissector_table = find_dissector_table("media_type"); + dissector_add_uint_with_preference("tcp.port", DEFAULT_COAP_PORT, coap_handle); + dissector_add_uint_with_preference("udp.port", DEFAULT_COAP_PORT, coap_handle); } /* diff --git a/epan/dissectors/packet-collectd.c b/epan/dissectors/packet-collectd.c index fafccdc63d..417bde5d05 100644 --- a/epan/dissectors/packet-collectd.c +++ b/epan/dissectors/packet-collectd.c @@ -26,7 +26,6 @@ #include "config.h" #include -#include #include #include #include @@ -144,8 +143,7 @@ static const val64_string severity_names[] = { { 0, NULL } }; -#define UDP_PORT_COLLECTD 25826 -static guint collectd_udp_port = UDP_PORT_COLLECTD; +#define UDP_PORT_COLLECTD 25826 /* Not IANA registered */ static gint proto_collectd = -1; static gint tap_collectd = -1; @@ -1348,7 +1346,6 @@ dissect_collectd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* dat void proto_register_collectd(void) { - module_t *collectd_module; expert_module_t* expert_collectd; /* Setup list of header fields */ @@ -1484,43 +1481,16 @@ void proto_register_collectd(void) expert_register_field_array(expert_collectd, ei, array_length(ei)); tap_collectd = register_tap ("collectd"); - - /* - * Create an unsigned integer preference to allow the user to specify the - * UDP port on which to capture DIS packets. - */ - collectd_module = prefs_register_protocol (proto_collectd, - proto_reg_handoff_collectd); - - prefs_register_uint_preference (collectd_module, "udp.port", - "collectd UDP port", - "Set the UDP port for collectd messages", - 10, &collectd_udp_port); -} /* void proto_register_collectd */ +} void proto_reg_handoff_collectd (void) { - static gboolean first_run = TRUE; - static gint registered_udp_port = -1; - static dissector_handle_t collectd_handle; + dissector_handle_t collectd_handle; - if (first_run) - collectd_handle = create_dissector_handle (dissect_collectd, - proto_collectd); + collectd_handle = create_dissector_handle(dissect_collectd, proto_collectd); + dissector_add_uint_with_preference("udp.port", UDP_PORT_COLLECTD, collectd_handle); - /* Change the dissector registration if the preferences have been - * changed. */ - if (registered_udp_port != -1) - dissector_delete_uint ("udp.port", registered_udp_port, - collectd_handle); - - dissector_add_uint ("udp.port", collectd_udp_port, collectd_handle); - registered_udp_port = collectd_udp_port; - - if (first_run) - collectd_stats_tree_register (); - - first_run = FALSE; + collectd_stats_tree_register (); } /* void proto_reg_handoff_collectd */ /* diff --git a/epan/dissectors/packet-componentstatus.c b/epan/dissectors/packet-componentstatus.c index 0a964b5204..1a4040bebb 100644 --- a/epan/dissectors/packet-componentstatus.c +++ b/epan/dissectors/packet-componentstatus.c @@ -75,7 +75,7 @@ static gint ett_message_flags = -1; static gint ett_association = -1; -#define COMPONENTSTATUSPROTOCOL_PORT 2960 +#define COMPONENTSTATUSPROTOCOL_PORT 2960 /* Not IANA registered */ #define COMPONENTSTATUSPROTOCOL_VERSION 0x0200 @@ -292,7 +292,7 @@ proto_reg_handoff_componentstatusprotocol(void) dissector_handle_t componentstatusprotocol_handle; componentstatusprotocol_handle = create_dissector_handle(dissect_componentstatusprotocol, proto_componentstatusprotocol); - dissector_add_uint("udp.port", COMPONENTSTATUSPROTOCOL_PORT, componentstatusprotocol_handle); + dissector_add_uint_with_preference("udp.port", COMPONENTSTATUSPROTOCOL_PORT, componentstatusprotocol_handle); } /* diff --git a/epan/dissectors/packet-corosync-totemnet.c b/epan/dissectors/packet-corosync-totemnet.c index 2a21c733f2..afaf8f6a68 100644 --- a/epan/dissectors/packet-corosync-totemnet.c +++ b/epan/dissectors/packet-corosync-totemnet.c @@ -40,7 +40,7 @@ static dissector_handle_t corosync_totemsrp_handle; * Dissector body */ -#define PORT_COROSYNC_TOTEMNET 5405 +#define PORT_COROSYNC_TOTEMNET_RANGE "5404-5405" /* Not IANA registered */ /* Forward declaration we need below */ void proto_register_corosync_totemnet(void); @@ -56,7 +56,6 @@ static int hf_corosync_totemnet_security_crypto_type = -1; static int hf_corosync_totemnet_security_crypto_key = -1; /* configurable parameters */ -static guint corosync_totemnet_port = PORT_COROSYNC_TOTEMNET; static gchar* corosync_totemnet_private_keys = NULL; static gchar** corosync_totemnet_private_keys_list = NULL; @@ -455,11 +454,6 @@ proto_register_corosync_totemnet(void) corosync_totemnet_module = prefs_register_protocol(proto_corosync_totemnet, proto_reg_handoff_corosync_totemnet); - prefs_register_uint_preference(corosync_totemnet_module, "udp.port", - "UDP Port", - "Set the UDP port for totem ring protocol implemented in corosync cluster engine", - 10, - &corosync_totemnet_port); prefs_register_string_preference(corosync_totemnet_module, "private_keys", "Private keys", "Semicolon-separated list of keys for decryption(e.g. key1;key2;..." , (const gchar **)&corosync_totemnet_private_keys); @@ -470,33 +464,22 @@ proto_reg_handoff_corosync_totemnet(void) { static gboolean initialized = FALSE; static dissector_handle_t corosync_totemnet_handle; - static int port = 0; - if (initialized) - { - dissector_delete_uint("udp.port", port, corosync_totemnet_handle); - dissector_delete_uint("udp.port", port - 1, corosync_totemnet_handle); - } - else - { - corosync_totemnet_handle = create_dissector_handle(dissect_corosynec_totemnet, - proto_corosync_totemnet); - corosync_totemsrp_handle = find_dissector_add_dependency("corosync_totemsrp", proto_corosync_totemnet); + if (!initialized) + { + corosync_totemnet_handle = create_dissector_handle(dissect_corosynec_totemnet, proto_corosync_totemnet); + corosync_totemsrp_handle = find_dissector_add_dependency("corosync_totemsrp", proto_corosync_totemnet); - initialized = TRUE; - } + dissector_add_uint_range_with_preference("udp.port", PORT_COROSYNC_TOTEMNET_RANGE, corosync_totemnet_handle); + initialized = TRUE; + } if (corosync_totemnet_private_keys_list) { g_strfreev(corosync_totemnet_private_keys_list); corosync_totemnet_private_keys_list = NULL; } - corosync_totemnet_private_keys_list = g_strsplit(corosync_totemnet_private_keys, - ";", - 0); - port = corosync_totemnet_port; - dissector_add_uint("udp.port", port, corosync_totemnet_handle); - dissector_add_uint("udp.port", port - 1, corosync_totemnet_handle); + corosync_totemnet_private_keys_list = g_strsplit(corosync_totemnet_private_keys, ";", 0); } /* diff --git a/epan/dissectors/packet-cpfi.c b/epan/dissectors/packet-cpfi.c index 68665772c0..671febe62d 100644 --- a/epan/dissectors/packet-cpfi.c +++ b/epan/dissectors/packet-cpfi.c @@ -36,8 +36,8 @@ void proto_register_cpfi(void); void proto_reg_handoff_cpfi(void); -#define CPFI_DEFAULT_UDP_PORT 5000 -#define CPFI_DEFAULT_TTOT_UDP_PORT 5001 +#define CPFI_DEFAULT_UDP_PORT 5000 /* Not IANA registered */ +#define CPFI_DEFAULT_TTOT_UDP_PORT 5001 /* Not IANA registered */ #define FIRST_TIO_CARD_ADDRESS 0x380 @@ -59,7 +59,6 @@ void proto_reg_handoff_cpfi(void); #define CPFI_EOF_ERROR_MASK 0x7FE00000 /* configurable parameters */ -static guint gbl_cpfi_udp_port = CPFI_DEFAULT_UDP_PORT; static guint gbl_cpfi_ttot_udp_port = CPFI_DEFAULT_TTOT_UDP_PORT; static gboolean cpfi_arrow_moves = TRUE; @@ -506,10 +505,6 @@ proto_register_cpfi(void) /* Register our configuration options for CPFI */ cpfi_module = prefs_register_protocol(proto_cpfi, proto_reg_handoff_cpfi); - prefs_register_uint_preference(cpfi_module, "udp.port", "CPFI UDP Port", - "Set the port for CPFI messages (if other" - " than the default of 5000)", - 10, &gbl_cpfi_udp_port); prefs_register_uint_preference(cpfi_module, "udp.port2", "InstanceToInstance UDP Port", "Set the port for InstanceToInstance messages (if other" " than the default of 5001)", @@ -530,25 +525,24 @@ proto_reg_handoff_cpfi(void) { static gboolean cpfi_init_complete = FALSE; static dissector_handle_t cpfi_handle; - static guint cpfi_udp_port; static guint cpfi_ttot_udp_port; if ( !cpfi_init_complete ) { fc_handle = find_dissector_add_dependency("fc", proto_cpfi); cpfi_handle = create_dissector_handle(dissect_cpfi, proto_cpfi); + dissector_add_uint_with_preference("udp.port", CPFI_DEFAULT_UDP_PORT, cpfi_handle); cpfi_init_complete = TRUE; } else { - dissector_delete_uint("udp.port", cpfi_udp_port, cpfi_handle); dissector_delete_uint("udp.port", cpfi_ttot_udp_port, cpfi_handle); } - cpfi_udp_port = gbl_cpfi_udp_port; cpfi_ttot_udp_port = gbl_cpfi_ttot_udp_port; - dissector_add_uint("udp.port", cpfi_udp_port, cpfi_handle); + /* Port preference has a specific enough name to not use + the "auto" preference */ dissector_add_uint("udp.port", cpfi_ttot_udp_port, cpfi_handle); } diff --git a/epan/dissectors/packet-cpha.c b/epan/dissectors/packet-cpha.c index 2e07d77089..d401212bdb 100644 --- a/epan/dissectors/packet-cpha.c +++ b/epan/dissectors/packet-cpha.c @@ -522,8 +522,7 @@ proto_register_cpha(void) &ett_cphap, }; - proto_cphap = proto_register_protocol("Check Point High Availability Protocol", - "CPHA", "cpha"); + proto_cphap = proto_register_protocol("Check Point High Availability Protocol", "CPHA", "cpha"); proto_register_field_array(proto_cphap, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } @@ -534,7 +533,7 @@ proto_reg_handoff_cpha(void) dissector_handle_t cpha_handle; cpha_handle = create_dissector_handle(dissect_cpha, proto_cphap); - dissector_add_uint("udp.port", UDP_PORT_CPHA, cpha_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_CPHA, cpha_handle); } /* * Editor modelines diff --git a/epan/dissectors/packet-cups.c b/epan/dissectors/packet-cups.c index 1367d35f67..d4b472b79f 100644 --- a/epan/dissectors/packet-cups.c +++ b/epan/dissectors/packet-cups.c @@ -389,9 +389,7 @@ proto_register_cups(void) &ett_cups_ptype }; - proto_cups = proto_register_protocol( - "Common Unix Printing System (CUPS) Browsing Protocol", - "CUPS", "cups"); + proto_cups = proto_register_protocol("Common Unix Printing System (CUPS) Browsing Protocol", "CUPS", "cups"); proto_register_field_array(proto_cups, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -405,7 +403,7 @@ proto_reg_handoff_cups(void) dissector_handle_t cups_handle; cups_handle = create_dissector_handle(dissect_cups, proto_cups); - dissector_add_uint("udp.port", UDP_PORT_CUPS, cups_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_CUPS, cups_handle); } /* diff --git a/epan/dissectors/packet-daytime.c b/epan/dissectors/packet-daytime.c index a0b73df852..ddeb25edef 100644 --- a/epan/dissectors/packet-daytime.c +++ b/epan/dissectors/packet-daytime.c @@ -105,7 +105,7 @@ proto_register_daytime(void) void proto_reg_handoff_daytime(void) { - dissector_add_uint("udp.port", DAYTIME_PORT, daytime_handle); + dissector_add_uint_with_preference("udp.port", DAYTIME_PORT, daytime_handle); dissector_add_uint_with_preference("tcp.port", DAYTIME_PORT, daytime_handle); } diff --git a/epan/dissectors/packet-db-lsp.c b/epan/dissectors/packet-db-lsp.c index cab92beb7a..14ec08f8fa 100644 --- a/epan/dissectors/packet-db-lsp.c +++ b/epan/dissectors/packet-db-lsp.c @@ -272,7 +272,7 @@ proto_reg_handoff_db_lsp (void) db_lsp_udp_handle = find_dissector ("db-lsp.udp"); dissector_add_uint_with_preference("tcp.port", DB_LSP_PORT, db_lsp_tcp_handle); - dissector_add_uint ("udp.port", DB_LSP_PORT, db_lsp_udp_handle); + dissector_add_uint_with_preference("udp.port", DB_LSP_PORT, db_lsp_udp_handle); } /* diff --git a/epan/dissectors/packet-ddtp.c b/epan/dissectors/packet-ddtp.c index f303ea9d6e..8cad915bda 100644 --- a/epan/dissectors/packet-ddtp.c +++ b/epan/dissectors/packet-ddtp.c @@ -210,8 +210,7 @@ proto_register_ddtp(void) expert_module_t* expert_ddtp; - proto_ddtp = proto_register_protocol("Dynamic DNS Tools Protocol", - "DDTP", "ddtp"); + proto_ddtp = proto_register_protocol("Dynamic DNS Tools Protocol", "DDTP", "ddtp"); proto_register_field_array(proto_ddtp, hf_ddtp, array_length(hf_ddtp)); proto_register_subtree_array(ett, array_length(ett)); expert_ddtp = expert_register_protocol(proto_ddtp); @@ -224,7 +223,7 @@ proto_reg_handoff_ddtp(void) dissector_handle_t ddtp_handle; ddtp_handle = create_dissector_handle(dissect_ddtp, proto_ddtp); - dissector_add_uint("udp.port", UDP_PORT_DDTP, ddtp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_DDTP, ddtp_handle); } /* diff --git a/epan/dissectors/packet-dhcpv6.c b/epan/dissectors/packet-dhcpv6.c index 703689f5b4..95c58c0b87 100644 --- a/epan/dissectors/packet-dhcpv6.c +++ b/epan/dissectors/packet-dhcpv6.c @@ -228,8 +228,8 @@ static expert_field ei_dhcpv6_bulk_leasequery_bad_msg_type = EI_INIT; static dissector_handle_t dhcpv6_handle; -#define UDP_PORT_DHCPV6_DOWNSTREAM 546 -#define UDP_PORT_DHCPV6_UPSTREAM 547 +#define TCP_PORT_DHCPV6_UPSTREAM 547 +#define UDP_PORT_DHCPV6_RANGE "546-547" /* Downstream + Upstream */ #define DHCPV6_LEASEDURATION_INFINITY 0xffffffff #define HOP_COUNT_LIMIT 32 @@ -2459,12 +2459,11 @@ proto_reg_handoff_dhcpv6(void) { dissector_handle_t dhcpv6_bulkquery_handle; - dissector_add_uint("udp.port", UDP_PORT_DHCPV6_DOWNSTREAM, dhcpv6_handle); - dissector_add_uint("udp.port", UDP_PORT_DHCPV6_UPSTREAM, dhcpv6_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_DHCPV6_RANGE, dhcpv6_handle); dhcpv6_bulkquery_handle = create_dissector_handle(dissect_dhcpv6_bulk_leasequery, proto_dhcpv6_bulk_leasequery); - dissector_add_uint_with_preference("tcp.port", UDP_PORT_DHCPV6_UPSTREAM, dhcpv6_bulkquery_handle); + dissector_add_uint_with_preference("tcp.port", TCP_PORT_DHCPV6_UPSTREAM, dhcpv6_bulkquery_handle); } /* diff --git a/epan/dissectors/packet-diameter.c b/epan/dissectors/packet-diameter.c index 161bc93c23..706bf05bfa 100644 --- a/epan/dissectors/packet-diameter.c +++ b/epan/dissectors/packet-diameter.c @@ -303,7 +303,6 @@ static dissector_handle_t diameter_udp_handle; static dissector_handle_t diameter_tcp_handle; static dissector_handle_t diameter_sctp_handle; static range_t *global_diameter_sctp_port_range; -static range_t *global_diameter_udp_port_range; /* This is used for TCP and SCTP */ #define DEFAULT_DIAMETER_PORT_RANGE "3868" @@ -2334,11 +2333,9 @@ proto_register_diameter(void) /* Set default TCP ports */ range_convert_str(&global_diameter_sctp_port_range, DEFAULT_DIAMETER_PORT_RANGE, MAX_SCTP_PORT); - range_convert_str(&global_diameter_udp_port_range, "", MAX_UDP_PORT); /* Register configuration options for ports */ - diameter_module = prefs_register_protocol(proto_diameter, - proto_reg_handoff_diameter); + diameter_module = prefs_register_protocol(proto_diameter, proto_reg_handoff_diameter); prefs_register_range_preference(diameter_module, "sctp.ports", "Diameter SCTP Ports", @@ -2353,11 +2350,6 @@ proto_register_diameter(void) " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.", &gbl_diameter_desegment); - prefs_register_range_preference(diameter_module, "udp.ports", "Diameter UDP ports", - "UDP ports to be decoded as Diameter (default: 0 as Diameter over UDP is nonstandard)", - &global_diameter_udp_port_range, MAX_UDP_PORT); - - /* Register some preferences we no longer support, so we can report * them as obsolete rather than just illegal. */ @@ -2381,7 +2373,6 @@ proto_reg_handoff_diameter(void) { static gboolean Initialized=FALSE; static range_t *diameter_sctp_port_range; - static range_t *diameter_udp_port_range; if (!Initialized) { diameter_sctp_handle = find_dissector("diameter"); @@ -2424,20 +2415,18 @@ proto_reg_handoff_diameter(void) /* Register dissector for Experimental result code, with 3GPP2's vendor Id */ dissector_add_uint("diameter.vnd_exp_res", VENDOR_THE3GPP2, create_dissector_handle(dissect_diameter_3gpp2_exp_res, proto_diameter)); + dissector_add_uint_range_with_preference("tcp.port", DEFAULT_DIAMETER_PORT_RANGE, diameter_tcp_handle); + dissector_add_uint_range_with_preference("udp.port", "", diameter_udp_handle); + Initialized=TRUE; } else { dissector_delete_uint_range("sctp.port", diameter_sctp_port_range, diameter_sctp_handle); - dissector_delete_uint_range("udp.port", diameter_udp_port_range, diameter_udp_handle); g_free(diameter_sctp_port_range); - g_free(diameter_udp_port_range); } /* set port for future deletes */ diameter_sctp_port_range = range_copy(global_diameter_sctp_port_range); - diameter_udp_port_range = range_copy(global_diameter_udp_port_range); - dissector_add_uint_range_with_preference("tcp.port", DEFAULT_DIAMETER_PORT_RANGE, diameter_tcp_handle); dissector_add_uint_range("sctp.port", diameter_sctp_port_range, diameter_sctp_handle); - dissector_add_uint_range("udp.port", diameter_udp_port_range, diameter_udp_handle); exported_pdu_tap = find_tap_id(EXPORT_PDU_TAP_NAME_LAYER_7); diff --git a/epan/dissectors/packet-dis.c b/epan/dissectors/packet-dis.c index dcfab75624..c467da365f 100644 --- a/epan/dissectors/packet-dis.c +++ b/epan/dissectors/packet-dis.c @@ -33,10 +33,9 @@ #include "config.h" #include -#include #include "packet-link16.h" -#define DEFAULT_DIS_UDP_PORT 3000 +#define DEFAULT_DIS_UDP_PORT 3000 /* Not IANA registered */ /* Encoding type the last 14 bits */ #define DIS_ENCODING_TYPE(word) ((word) & 0x3FFF) @@ -7009,8 +7008,6 @@ static const true_false_string dis_time_hopping_value = { "Time hopping modulation not used" }; -static guint dis_udp_port = DEFAULT_DIS_UDP_PORT; - typedef struct dis_header { guint8 version; @@ -9653,22 +9650,9 @@ void proto_register_dis(void) &ett_iff_parameter_6, }; - module_t *dis_module; - proto_dis = proto_register_protocol("Distributed Interactive Simulation", "DIS", "dis"); proto_register_field_array(proto_dis, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - dis_module = prefs_register_protocol(proto_dis, proto_reg_handoff_dis); - - /* Create an unsigned integer preference to allow the user to specify the - * UDP port on which to capture DIS packets. - */ - prefs_register_uint_preference(dis_module, "udp.port", - "DIS UDP Port", - "Set the UDP port for DIS messages", - 10, &dis_udp_port); - } /* Register handoff routine for DIS dissector. This will be invoked initially @@ -9677,23 +9661,12 @@ void proto_register_dis(void) */ void proto_reg_handoff_dis(void) { - static gboolean dis_prefs_initialized = FALSE; - static dissector_handle_t dis_dissector_handle; - static guint saved_dis_udp_port; + dissector_handle_t dis_dissector_handle; - if (!dis_prefs_initialized) - { - dis_dissector_handle = create_dissector_handle(dissect_dis, proto_dis); - link16_handle = find_dissector_add_dependency("link16", proto_dis); - dis_prefs_initialized = TRUE; - } - else - { - dissector_delete_uint("udp.port", saved_dis_udp_port, dis_dissector_handle); - } + dis_dissector_handle = create_dissector_handle(dissect_dis, proto_dis); + dissector_add_uint_with_preference("udp.port", DEFAULT_DIS_UDP_PORT, dis_dissector_handle); - dissector_add_uint("udp.port", dis_udp_port, dis_dissector_handle); - saved_dis_udp_port = dis_udp_port; + link16_handle = find_dissector_add_dependency("link16", proto_dis); } /* diff --git a/epan/dissectors/packet-dlsw.c b/epan/dissectors/packet-dlsw.c index daf2896193..ff68a08843 100644 --- a/epan/dissectors/packet-dlsw.c +++ b/epan/dissectors/packet-dlsw.c @@ -686,7 +686,7 @@ proto_reg_handoff_dlsw(void) dissector_handle_t dlsw_udp_handle, dlsw_tcp_handle; dlsw_udp_handle = create_dissector_handle(dissect_dlsw_udp, proto_dlsw); - dissector_add_uint("udp.port", UDP_PORT_DLSW, dlsw_udp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_DLSW, dlsw_udp_handle); dlsw_tcp_handle = create_dissector_handle(dissect_dlsw_tcp, proto_dlsw); dissector_add_uint_with_preference("tcp.port", TCP_PORT_DLSW, dlsw_tcp_handle); diff --git a/epan/dissectors/packet-dmp.c b/epan/dissectors/packet-dmp.c index 5b77aaae84..fccb32083a 100644 --- a/epan/dissectors/packet-dmp.c +++ b/epan/dissectors/packet-dmp.c @@ -532,7 +532,6 @@ static struct dmp_data { } dmp; /* User definable values */ -static range_t *global_dmp_port_range; static gint dmp_nat_decode = NAT_DECODE_DMP; static gint dmp_local_nation = 0; static gboolean use_seq_ack_analysis = TRUE; @@ -4922,23 +4921,15 @@ void proto_register_dmp (void) register_init_routine (&dmp_init_routine); register_cleanup_routine (&dmp_cleanup_routine); - /* Set default UDP ports */ - range_convert_str (&global_dmp_port_range, DEFAULT_DMP_PORT_RANGE, - MAX_UDP_PORT); - /* Build national values */ build_national_strings (); /* Register our configuration options */ - dmp_module = prefs_register_protocol (proto_dmp, proto_reg_handoff_dmp); + dmp_module = prefs_register_protocol (proto_dmp, NULL); prefs_register_obsolete_preference (dmp_module, "udp_port"); prefs_register_obsolete_preference (dmp_module, "udp_port_second"); - prefs_register_range_preference (dmp_module, "udp_ports", - "DMP port numbers", - "Port numbers used for DMP traffic", - &global_dmp_port_range, MAX_UDP_PORT); prefs_register_enum_preference (dmp_module, "national_decode", "National decoding", "Select the type of decoding for nationally-defined values", @@ -4975,21 +4966,8 @@ void proto_register_dmp (void) void proto_reg_handoff_dmp (void) { - static range_t *dmp_port_range; - static gboolean dmp_prefs_initialized = FALSE; - - if (!dmp_prefs_initialized) { - dmp_prefs_initialized = TRUE; - dissector_add_uint ("s5066sis.ctl.appid", S5066_CLIENT_S4406_ANNEX_E_TMI_4_DMP, dmp_handle); - } else { - dissector_delete_uint_range ("udp.port", dmp_port_range, dmp_handle); - g_free (dmp_port_range); - } - - /* Save port number for later deletion */ - dmp_port_range = range_copy (global_dmp_port_range); - - dissector_add_uint_range ("udp.port", dmp_port_range, dmp_handle); + dissector_add_uint ("s5066sis.ctl.appid", S5066_CLIENT_S4406_ANNEX_E_TMI_4_DMP, dmp_handle); + dissector_add_uint_range_with_preference("udp.port", DEFAULT_DMP_PORT_RANGE, dmp_handle); } /* diff --git a/epan/dissectors/packet-dnp.c b/epan/dissectors/packet-dnp.c index 18461f31a0..93af56f301 100644 --- a/epan/dissectors/packet-dnp.c +++ b/epan/dissectors/packet-dnp.c @@ -4600,7 +4600,7 @@ proto_reg_handoff_dnp3(void) dnp3_tcp_handle = create_dissector_handle(dissect_dnp3_tcp, proto_dnp3); dnp3_udp_handle = create_dissector_handle(dissect_dnp3_udp, proto_dnp3); dissector_add_uint_with_preference("tcp.port", TCP_PORT_DNP, dnp3_tcp_handle); - dissector_add_uint("udp.port", UDP_PORT_DNP, dnp3_udp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_DNP, dnp3_udp_handle); dissector_add_for_decode_as("rtacser.data", dnp3_udp_handle); } diff --git a/epan/dissectors/packet-dns.c b/epan/dissectors/packet-dns.c index 7916fc6db9..281d7b9268 100644 --- a/epan/dissectors/packet-dns.c +++ b/epan/dissectors/packet-dns.c @@ -421,8 +421,6 @@ static dissector_table_t dns_tsig_dissector_table=NULL; static dissector_handle_t dns_handle; -static range_t *global_dns_udp_port_range; - /* desegmentation of DNS over TCP */ static gboolean dns_desegment = TRUE; @@ -4078,18 +4076,13 @@ static int dns_stats_tree_packet(stats_tree* st, packet_info* pinfo _U_, epan_di void proto_reg_handoff_dns(void) { - static range_t *dns_udp_port_range; - - static gboolean Initialized = FALSE; - - if (!Initialized) { dissector_handle_t mdns_udp_handle; dissector_handle_t llmnr_udp_handle; mdns_udp_handle = create_dissector_handle(dissect_mdns_udp, proto_mdns); llmnr_udp_handle = create_dissector_handle(dissect_llmnr_udp, proto_llmnr); - dissector_add_uint("udp.port", UDP_PORT_MDNS, mdns_udp_handle); - dissector_add_uint("udp.port", UDP_PORT_LLMNR, llmnr_udp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_MDNS, mdns_udp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_LLMNR, llmnr_udp_handle); dissector_add_uint("sctp.port", SCTP_PORT_DNS, dns_handle); #if 0 dissector_add_uint("sctp.ppi", DNS_PAYLOAD_PROTOCOL_ID, dns_handle); @@ -4100,15 +4093,7 @@ proto_reg_handoff_dns(void) ssl_dissector_add(TCP_PORT_DNS_TLS, dns_handle); dtls_dissector_add(UDP_PORT_DNS_DTLS, dns_handle); dissector_add_uint_range_with_preference("tcp.port", DEFAULT_DNS_TCP_PORT_RANGE, dns_handle); - Initialized = TRUE; - - } else { - dissector_delete_uint_range("udp.port", dns_udp_port_range, dns_handle); - g_free(dns_udp_port_range); - } - - dns_udp_port_range = range_copy(global_dns_udp_port_range); - dissector_add_uint_range("udp.port", dns_udp_port_range, dns_handle); + dissector_add_uint_range_with_preference("udp.port", DEFAULT_DNS_PORT_RANGE, dns_handle); } void @@ -5571,15 +5556,7 @@ proto_register_dns(void) expert_dns = expert_register_protocol(proto_dns); expert_register_field_array(expert_dns, ei, array_length(ei)); - /* Set default ports */ - range_convert_str(&global_dns_udp_port_range, DEFAULT_DNS_PORT_RANGE, MAX_UDP_PORT); - - dns_module = prefs_register_protocol(proto_dns, proto_reg_handoff_dns); - - prefs_register_range_preference(dns_module, "udp.ports", "DNS UDP ports", - "UDP ports to be decoded as DNS (default: " - DEFAULT_DNS_PORT_RANGE ")", - &global_dns_udp_port_range, MAX_UDP_PORT); + dns_module = prefs_register_protocol(proto_dns, NULL); prefs_register_bool_preference(dns_module, "desegment_dns_messages", "Reassemble DNS messages spanning multiple TCP segments", diff --git a/epan/dissectors/packet-dof.c b/epan/dissectors/packet-dof.c index 3e7f20d90d..486562d1c4 100644 --- a/epan/dissectors/packet-dof.c +++ b/epan/dissectors/packet-dof.c @@ -877,11 +877,10 @@ static void dof_packet_delete_proto_data(dof_packet_data *packet, int proto); * source address, and the DPS dissector is associated with that port. In this * way, servers on non-standard ports will automatically be decoded using DPS. */ -#define DOF_P2P_NEG_SEC_UDP_PORT 3567 +#define DOF_NEG_SEC_UDP_PORT_RANGE "3567,5567" /* P2P + Multicast */ #define DOF_P2P_NEG_SEC_TCP_PORT 3567 /* Reserved UDP port 3568*/ #define DOF_TUN_SEC_TCP_PORT 3568 -#define DOF_MCAST_NEG_SEC_UDP_PORT 5567 #define DOF_P2P_SEC_TCP_PORT 5567 /* Reserved UDP port 8567*/ #define DOF_TUN_NON_SEC_TCP_PORT 8567 @@ -11051,8 +11050,7 @@ static void dof_handoff(void) undissected_data_handle = find_dissector("data"); dissector_add_uint_with_preference("tcp.port", DOF_P2P_NEG_SEC_TCP_PORT, tcp_handle); - dissector_add_uint("udp.port", DOF_P2P_NEG_SEC_UDP_PORT, dof_udp_handle); - dissector_add_uint("udp.port", DOF_MCAST_NEG_SEC_UDP_PORT, dof_udp_handle); + dissector_add_uint_range_with_preference("udp.port", DOF_NEG_SEC_UDP_PORT_RANGE, dof_udp_handle); } /* OID Registration Support */ diff --git a/epan/dissectors/packet-dtn.c b/epan/dissectors/packet-dtn.c index d1ce3e002f..881f5fd4c6 100644 --- a/epan/dissectors/packet-dtn.c +++ b/epan/dissectors/packet-dtn.c @@ -51,7 +51,6 @@ #include #include -#include #include #include #include "packet-dtn.h" @@ -290,7 +289,6 @@ static expert_field ei_tcp_convergence_ack_length = EI_INIT; static dissector_handle_t bundle_handle; #define BUNDLE_PORT 4556 -static guint bundle_udp_port = BUNDLE_PORT; typedef struct dictionary_data { int bundle_header_dict_length; @@ -3049,21 +3047,13 @@ proto_register_bundle(void) }, }; - module_t *bundle_module; expert_module_t *expert_bundle, *expert_tcpcl; proto_bundle = proto_register_protocol("Bundle Protocol", "Bundle", "bundle"); bundle_handle = register_dissector("bundle", dissect_bundle, proto_bundle); - bundle_module = prefs_register_protocol(proto_bundle, proto_reg_handoff_bundle); proto_tcp_conv = proto_register_protocol ("DTN TCP Convergence Layer Protocol", "TCPCL", "tcpcl"); - prefs_register_uint_preference(bundle_module, "udp.port", - "Bundle Protocol UDP Port", - "UDP Port to Accept Bundle Protocol Connections", - 10, - &bundle_udp_port); - proto_register_field_array(proto_bundle, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_bundle = expert_register_protocol(proto_bundle); @@ -3081,21 +3071,11 @@ proto_register_bundle(void) void proto_reg_handoff_bundle(void) { - static dissector_handle_t tcpcl_handle; - static guint udp_port; + dissector_handle_t tcpcl_handle; - static int Initialized = FALSE; - - if (!Initialized) { - tcpcl_handle = create_dissector_handle(dissect_tcpcl, proto_bundle); - dissector_add_uint_with_preference("tcp.port", BUNDLE_PORT, tcpcl_handle); - Initialized = TRUE; - } - else { - dissector_delete_uint("udp.port", udp_port, bundle_handle); - } - udp_port = bundle_udp_port; - dissector_add_uint("udp.port", udp_port, bundle_handle); + tcpcl_handle = create_dissector_handle(dissect_tcpcl, proto_bundle); + dissector_add_uint_with_preference("tcp.port", BUNDLE_PORT, tcpcl_handle); + dissector_add_uint_with_preference("udp.port", BUNDLE_PORT, bundle_handle); } /* diff --git a/epan/dissectors/packet-dvb-ipdc.c b/epan/dissectors/packet-dvb-ipdc.c index d2167e46e9..806f48d2d1 100644 --- a/epan/dissectors/packet-dvb-ipdc.c +++ b/epan/dissectors/packet-dvb-ipdc.c @@ -104,7 +104,7 @@ proto_reg_handoff_dvb_ipdc(void) sub_handles[DVB_IPDC_SUB_FLUTE] = find_dissector_add_dependency("alc", proto_ipdc); ipdc_handle = create_dissector_handle(dissect_ipdc, proto_ipdc); - dissector_add_uint("udp.port", UDP_PORT_IPDC_ESG_BOOTSTRAP, ipdc_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_IPDC_ESG_BOOTSTRAP, ipdc_handle); } /* diff --git a/epan/dissectors/packet-echo.c b/epan/dissectors/packet-echo.c index a6aa6bb59e..591c8811ee 100644 --- a/epan/dissectors/packet-echo.c +++ b/epan/dissectors/packet-echo.c @@ -114,7 +114,7 @@ void proto_reg_handoff_echo(void) echo_handle = create_dissector_handle(dissect_echo, proto_echo); - dissector_add_uint("udp.port", ECHO_PORT, echo_handle); + dissector_add_uint_with_preference("udp.port", ECHO_PORT, echo_handle); dissector_add_uint_with_preference("tcp.port", ECHO_PORT, echo_handle); } diff --git a/epan/dissectors/packet-ecmp.c b/epan/dissectors/packet-ecmp.c index 9352c81f47..adcdbfe158 100644 --- a/epan/dissectors/packet-ecmp.c +++ b/epan/dissectors/packet-ecmp.c @@ -51,9 +51,6 @@ static int proto_modbus = -1; /* These are the handles of our subdissectors */ static dissector_handle_t modbus_handle = NULL; -/*stores the port number for our protocol (ECMP)*/ -static const guint16 global_ecmp_port = 6160; - /*smallest size of a packet, number of bytes*/ static const gint ecmp_min_packet_size = 6; @@ -3565,18 +3562,14 @@ void proto_register_ecmp (void) /* Wireshark literally scans this file (packet-ecmp.c) to find this function */ void proto_reg_handoff_ecmp(void) { - static gboolean initialized = FALSE; - static dissector_handle_t ecmp_tcp_handle, ecmp_udp_handle; + dissector_handle_t ecmp_tcp_handle, ecmp_udp_handle; - if (!initialized) { - ecmp_tcp_handle = create_dissector_handle(dissect_ecmp_tcp, proto_ecmp); - ecmp_udp_handle = create_dissector_handle(dissect_ecmp_udp, proto_ecmp); + ecmp_tcp_handle = create_dissector_handle(dissect_ecmp_tcp, proto_ecmp); + ecmp_udp_handle = create_dissector_handle(dissect_ecmp_udp, proto_ecmp); - /* Cyclic frames are over UDP and non-cyclic are over TCP */ - dissector_add_uint("udp.port", global_ecmp_port, ecmp_udp_handle); - dissector_add_uint_with_preference("tcp.port", ECMP_TCP_PORT, ecmp_tcp_handle); - initialized = TRUE; - } + /* Cyclic frames are over UDP and non-cyclic are over TCP */ + dissector_add_uint_with_preference("udp.port", ECMP_TCP_PORT, ecmp_udp_handle); + dissector_add_uint_with_preference("tcp.port", ECMP_TCP_PORT, ecmp_tcp_handle); /* Modbus dissector hooks */ modbus_handle = find_dissector_add_dependency("modbus", proto_ecmp); diff --git a/epan/dissectors/packet-edonkey.c b/epan/dissectors/packet-edonkey.c index 332e24bc85..f9a848b959 100644 --- a/epan/dissectors/packet-edonkey.c +++ b/epan/dissectors/packet-edonkey.c @@ -183,6 +183,7 @@ static expert_field ei_kademlia_tag_type = EI_INIT; static expert_field ei_kademlia_search_expression_type = EI_INIT; #define EDONKEY_TCP_PORT_RANGE "4661-4663" /* Not IANA registered */ +#define EDONKEY_UDP_PORT_RANGE "4665,4672" /* Not IANA registered */ /* desegmentation of eDonkey over TCP */ static gboolean edonkey_desegment = TRUE; @@ -3408,9 +3409,7 @@ void proto_reg_handoff_edonkey(void) { edonkey_udp_handle = create_dissector_handle(dissect_edonkey_udp, proto_edonkey); dissector_add_uint_range_with_preference("tcp.port", EDONKEY_TCP_PORT_RANGE, edonkey_tcp_handle); - dissector_add_uint("udp.port", 4665, edonkey_udp_handle); - dissector_add_uint("udp.port", 4672, edonkey_udp_handle); - + dissector_add_uint_range_with_preference("udp.port", EDONKEY_UDP_PORT_RANGE, edonkey_udp_handle); } /* diff --git a/epan/dissectors/packet-egd.c b/epan/dissectors/packet-egd.c index 4d1ee44635..f3c33d2a8e 100644 --- a/epan/dissectors/packet-egd.c +++ b/epan/dissectors/packet-egd.c @@ -28,7 +28,7 @@ #include -#define EGD_PORT 18246 /* 0x4746 */ +#define EGD_PORT 18246 /* 0x4746 - Not IANA registered */ #define EGD_ST_NONEW 0 #define EGD_ST_NOERROR 1 @@ -226,11 +226,7 @@ void proto_register_egd(void) &ett_status_item }; - proto_egd = proto_register_protocol ( - "Ethernet Global Data", /* name */ - "EGD", /* short name */ - "egd" /* abbrev */ - ); + proto_egd = proto_register_protocol ("Ethernet Global Data", "EGD", "egd"); proto_register_field_array(proto_egd, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } @@ -240,7 +236,7 @@ void proto_reg_handoff_egd(void) dissector_handle_t egd_handle; egd_handle = create_dissector_handle(dissect_egd, proto_egd); - dissector_add_uint("udp.port", EGD_PORT, egd_handle); + dissector_add_uint_with_preference("udp.port", EGD_PORT, egd_handle); } /* diff --git a/epan/dissectors/packet-ehs.c b/epan/dissectors/packet-ehs.c index 0f168807a3..893ca7b72f 100644 --- a/epan/dissectors/packet-ehs.c +++ b/epan/dissectors/packet-ehs.c @@ -1959,7 +1959,7 @@ proto_register_ehs(void) void proto_reg_handoff_ehs(void) { - dissector_add_for_decode_as ( "udp.port", find_dissector("ehs") ); + dissector_add_for_decode_as_with_preference( "udp.port", find_dissector("ehs") ); ccsds_handle = find_dissector_add_dependency ( "ccsds", proto_ehs ); } diff --git a/epan/dissectors/packet-elasticsearch.c b/epan/dissectors/packet-elasticsearch.c index 461ebdac7c..2dca06b9ac 100644 --- a/epan/dissectors/packet-elasticsearch.c +++ b/epan/dissectors/packet-elasticsearch.c @@ -26,7 +26,7 @@ #include #include "packet-tcp.h" -#define ELASTICSEARCH_DISCOVERY_PORT 54328 +#define ELASTICSEARCH_DISCOVERY_PORT 54328 /* Not IANA registered */ #define ELASTICSEARCH_BINARY_PORT 9300 /* Not IANA registered */ #define IPv4_ADDRESS_LENGTH 4 @@ -727,7 +727,7 @@ void proto_reg_handoff_elasticsearch(void) { elasticsearch_handle_binary = create_dissector_handle(dissect_elasticsearch_binary, proto_elasticsearch); elasticsearch_zen_handle = create_dissector_handle(dissect_elasticsearch_zen_ping, proto_elasticsearch); - dissector_add_uint("udp.port", ELASTICSEARCH_DISCOVERY_PORT, elasticsearch_zen_handle); + dissector_add_uint_with_preference("udp.port", ELASTICSEARCH_DISCOVERY_PORT, elasticsearch_zen_handle); dissector_add_uint_with_preference("tcp.port", ELASTICSEARCH_BINARY_PORT, elasticsearch_handle_binary); } diff --git a/epan/dissectors/packet-enip.c b/epan/dissectors/packet-enip.c index 73f8333b42..f664818124 100644 --- a/epan/dissectors/packet-enip.c +++ b/epan/dissectors/packet-enip.c @@ -4427,11 +4427,11 @@ proto_reg_handoff_enip(void) /* Register for EtherNet/IP, using UDP */ enip_udp_handle = create_dissector_handle(dissect_enip_udp, proto_enip); - dissector_add_uint("udp.port", ENIP_ENCAP_PORT, enip_udp_handle); + dissector_add_uint_with_preference("udp.port", ENIP_ENCAP_PORT, enip_udp_handle); /* Register for EtherNet/IP IO data (UDP) */ enipio_handle = find_dissector("enip_io"); - dissector_add_uint("udp.port", ENIP_IO_PORT, enipio_handle); + dissector_add_uint_with_preference("udp.port", ENIP_IO_PORT, enipio_handle); /* Register for EtherNet/IP TLS */ ssl_dissector_add(ENIP_SECURE_PORT, enip_tcp_handle); diff --git a/epan/dissectors/packet-enrp.c b/epan/dissectors/packet-enrp.c index 11cf7d5ad8..96cec01364 100644 --- a/epan/dissectors/packet-enrp.c +++ b/epan/dissectors/packet-enrp.c @@ -1092,7 +1092,7 @@ proto_reg_handoff_enrp(void) enrp_handle = create_dissector_handle(dissect_enrp, proto_enrp); dissector_add_uint("sctp.ppi", ENRP_PAYLOAD_PROTOCOL_ID, enrp_handle); dissector_add_uint("sctp.port", ENRP_SCTP_PORT, enrp_handle); - dissector_add_uint("udp.port", ENRP_UDP_PORT, enrp_handle); + dissector_add_uint_with_preference("udp.port", ENRP_UDP_PORT, enrp_handle); } /* diff --git a/epan/dissectors/packet-enttec.c b/epan/dissectors/packet-enttec.c index 4b55e6b085..fcd9745682 100644 --- a/epan/dissectors/packet-enttec.c +++ b/epan/dissectors/packet-enttec.c @@ -36,7 +36,7 @@ /* Define UDP/TCP ports for ENTTEC */ -#define UDP_PORT_ENTTEC 0x0D05 +#define UDP_PORT_ENTTEC 0x0D05 /* Not IANA registered */ #define TCP_PORT_ENTTEC 0x0D05 /* Not IANA registered */ @@ -107,8 +107,6 @@ static int ett_enttec = -1; * for enttec */ -static guint global_udp_port_enttec = UDP_PORT_ENTTEC; - static gint global_disp_chan_val_type = 0; static gint global_disp_col_count = 16; static gint global_disp_chan_nr_type = 0; @@ -544,12 +542,7 @@ proto_register_enttec(void) proto_register_field_array(proto_enttec,hf,array_length(hf)); proto_register_subtree_array(ett,array_length(ett)); - enttec_module = prefs_register_protocol(proto_enttec, - proto_reg_handoff_enttec); - prefs_register_uint_preference(enttec_module, "udp_port", - "ENTTEC UDP Port", - "The UDP port on which ENTTEC packets will be sent", - 10,&global_udp_port_enttec); + enttec_module = prefs_register_protocol(proto_enttec, NULL); prefs_register_enum_preference(enttec_module, "dmx_disp_chan_val_type", "DMX Display channel value type", @@ -573,22 +566,13 @@ proto_register_enttec(void) /* The registration hand-off routing */ void proto_reg_handoff_enttec(void) { - static gboolean enttec_initialized = FALSE; - static dissector_handle_t enttec_udp_handle, enttec_tcp_handle; - static guint udp_port_enttec; + dissector_handle_t enttec_udp_handle, enttec_tcp_handle; - if(!enttec_initialized) { - enttec_udp_handle = create_dissector_handle(dissect_enttec_udp,proto_enttec); - enttec_tcp_handle = create_dissector_handle(dissect_enttec_tcp,proto_enttec); - dissector_add_uint_with_preference("tcp.port",TCP_PORT_ENTTEC,enttec_tcp_handle); - enttec_initialized = TRUE; - } else { - dissector_delete_uint("udp.port",udp_port_enttec,enttec_udp_handle); - } + enttec_udp_handle = create_dissector_handle(dissect_enttec_udp,proto_enttec); + enttec_tcp_handle = create_dissector_handle(dissect_enttec_tcp,proto_enttec); - udp_port_enttec = global_udp_port_enttec; - - dissector_add_uint("udp.port",global_udp_port_enttec,enttec_udp_handle); + dissector_add_uint_with_preference("tcp.port",TCP_PORT_ENTTEC,enttec_tcp_handle); + dissector_add_uint_with_preference("udp.port",UDP_PORT_ENTTEC,enttec_udp_handle); } /* diff --git a/epan/dissectors/packet-epl.c b/epan/dissectors/packet-epl.c index 3dca5b06ce..b8546a9185 100644 --- a/epan/dissectors/packet-epl.c +++ b/epan/dissectors/packet-epl.c @@ -4562,7 +4562,7 @@ proto_reg_handoff_epl(void) dissector_handle_t epl_udp_handle = create_dissector_handle( dissect_epludp, proto_epl ); dissector_add_uint("ethertype", ETHERTYPE_EPL_V2, epl_handle); - dissector_add_uint("udp.port", UDP_PORT_EPL, epl_udp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_EPL, epl_udp_handle); /* register frame init routine */ register_init_routine( setup_dissector ); diff --git a/epan/dissectors/packet-esio.c b/epan/dissectors/packet-esio.c index 8726a42fd1..0b5a2fde77 100644 --- a/epan/dissectors/packet-esio.c +++ b/epan/dissectors/packet-esio.c @@ -33,6 +33,8 @@ void proto_register_esio(void); void proto_reg_handoff_esio(void); +#define ESIO_UDP_PORT 6060 /* Not IANA registered */ + /* Initialize the protocol and registered fields */ static int proto_esio = -1; static int hf_esio_type = -1; @@ -419,7 +421,7 @@ proto_reg_handoff_esio(void) dissector_handle_t esio_handle; esio_handle = create_dissector_handle(dissect_esio, proto_esio); - dissector_add_uint("udp.port", 6060, esio_handle); + dissector_add_uint_with_preference("udp.port", ESIO_UDP_PORT, esio_handle); } /* diff --git a/epan/dissectors/packet-eth.c b/epan/dissectors/packet-eth.c index 4d82e8f448..605acfeddf 100644 --- a/epan/dissectors/packet-eth.c +++ b/epan/dissectors/packet-eth.c @@ -1034,7 +1034,7 @@ proto_reg_handoff_eth(void) * command - it encapsulates Ethernet frames in UDP packets, but * the UDP port is user-defined. */ - dissector_add_for_decode_as("udp.port", eth_withoutfcs_handle); + dissector_add_for_decode_as_with_preference("udp.port", eth_withoutfcs_handle); dissector_add_for_decode_as("pcli.payload", eth_withoutfcs_handle); diff --git a/epan/dissectors/packet-ff.c b/epan/dissectors/packet-ff.c index 496b8ce65e..a56ef51494 100644 --- a/epan/dissectors/packet-ff.c +++ b/epan/dissectors/packet-ff.c @@ -15289,32 +15289,14 @@ proto_reg_handoff_ff(void) * 4.8.4.2. Use * * - Device Annunciation - */ - dissector_add_uint("udp.port", UDP_PORT_FF_ANNUNC, ff_udp_handle); - - /* - * 4.8.4.2. Use - * * - Client / Server - */ - dissector_add_uint("udp.port", UDP_PORT_FF_FMS, ff_udp_handle); - dissector_add_uint_with_preference("tcp.port", TCP_PORT_FF_FMS, ff_tcp_handle); - - /* - * 4.8.4.2. Use - * * - Set/Clear Assignment Info and Clear Address * - SM Identify * - SM Find Tag - */ - dissector_add_uint("udp.port", UDP_PORT_FF_SM, ff_udp_handle); - - /* - * 4.8.4.2. Use - * * - LAN Redundancy Get and Put Information */ - dissector_add_uint("udp.port", UDP_PORT_FF_LR_PORT, ff_udp_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_FF_RANGE, ff_udp_handle); + dissector_add_uint_with_preference("tcp.port", TCP_PORT_FF_FMS, ff_tcp_handle); } /* diff --git a/epan/dissectors/packet-ff.h b/epan/dissectors/packet-ff.h index 7ac7cff660..768d644070 100644 --- a/epan/dissectors/packet-ff.h +++ b/epan/dissectors/packet-ff.h @@ -42,16 +42,13 @@ #ifndef __PACKET_FF_H__ #define __PACKET_FF_H__ -#define UDP_PORT_FF_ANNUNC 1089 +#define UDP_PORT_FF_RANGE "1089-1091,3622" #define TCP_PORT_FF_ANNUNC 1089 -#define UDP_PORT_FF_FMS 1090 #define TCP_PORT_FF_FMS 1090 -#define UDP_PORT_FF_SM 1091 #define TCP_PORT_FF_SM 1091 -#define UDP_PORT_FF_LR_PORT 3622 #define TCP_PORT_FF_LR_PORT 3622 diff --git a/epan/dissectors/packet-forces.c b/epan/dissectors/packet-forces.c index fcadd6a0f5..745e90d09f 100644 --- a/epan/dissectors/packet-forces.c +++ b/epan/dissectors/packet-forces.c @@ -144,8 +144,6 @@ static int hf_forces_unknown_tlv = -1; For other type TMLs,no need to add these 2 bytes.*/ #define TCP_UDP_TML_FOCES_MESSAGE_OFFSET_TCP 2 -/*TCP+UDP TML*/ -static guint forces_alternate_udp_port = 0; /*SCTP TML*/ static guint forces_alternate_sctp_high_prio_channel_port = 0; static guint forces_alternate_sctp_med_prio_channel_port = 0; @@ -832,11 +830,6 @@ proto_register_forces(void) forces_module = prefs_register_protocol(proto_forces,proto_reg_handoff_forces); - prefs_register_uint_preference(forces_module, "udp_alternate_port", - "UDP port", - "Decode packets on this UDP port as ForCES", - 10, &forces_alternate_udp_port); - prefs_register_uint_preference(forces_module, "sctp_high_prio_port", "SCTP High Priority channel port", "Decode packets on this sctp port as ForCES", @@ -858,7 +851,6 @@ proto_reg_handoff_forces(void) { static gboolean inited = FALSE; - static guint alternate_udp_port = 0; static guint alternate_sctp_high_prio_channel_port = 0; /* 6700 */ static guint alternate_sctp_med_prio_channel_port = 0; static guint alternate_sctp_low_prio_channel_port = 0; @@ -871,18 +863,12 @@ proto_reg_handoff_forces(void) ip_handle = find_dissector_add_dependency("ip", proto_forces); /* Register TCP port for dissection */ dissector_add_for_decode_as_with_preference("tcp.port", forces_handle_tcp); + /* Register UDP port for dissection */ + dissector_add_for_decode_as_with_preference("udp.port", forces_handle); inited = TRUE; } - - /* Register UDP port for dissection */ - if ((alternate_udp_port != 0) && (alternate_udp_port != forces_alternate_udp_port)) - dissector_delete_uint("udp.port", alternate_udp_port, forces_handle); - if ((forces_alternate_udp_port != 0) && (alternate_udp_port != forces_alternate_udp_port)) - dissector_add_uint("udp.port", forces_alternate_udp_port, forces_handle); - alternate_udp_port = forces_alternate_udp_port; - /* Register SCTP port for high priority dissection */ if ((alternate_sctp_high_prio_channel_port != 0) && (alternate_sctp_high_prio_channel_port != forces_alternate_sctp_high_prio_channel_port)) diff --git a/epan/dissectors/packet-geneve.c b/epan/dissectors/packet-geneve.c index aefdeee4ab..0b76ff2ce6 100644 --- a/epan/dissectors/packet-geneve.c +++ b/epan/dissectors/packet-geneve.c @@ -451,8 +451,7 @@ proto_reg_handoff_geneve(void) dissector_handle_t geneve_handle; geneve_handle = create_dissector_handle(dissect_geneve, proto_geneve); - dissector_add_uint("udp.port", UDP_PORT_GENEVE, geneve_handle); - dissector_add_for_decode_as("udp.port", geneve_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_GENEVE, geneve_handle); ethertype_dissector_table = find_dissector_table("ethertype"); } diff --git a/epan/dissectors/packet-glbp.c b/epan/dissectors/packet-glbp.c index f7ef19be28..09d44c301a 100644 --- a/epan/dissectors/packet-glbp.c +++ b/epan/dissectors/packet-glbp.c @@ -44,6 +44,8 @@ void proto_register_glbp(void); void proto_reg_handoff_glbp(void); +#define GLBP_UDP_PORT 3222 + static int proto_glbp = -1; /* glbp header? */ static gint hf_glbp_version = -1; @@ -596,8 +598,8 @@ proto_register_glbp(void) expert_module_t* expert_glbp; - proto_glbp = proto_register_protocol( - "Gateway Load Balancing Protocol", "GLBP", "glbp"); + proto_glbp = proto_register_protocol("Gateway Load Balancing Protocol", "GLBP", "glbp"); + proto_register_field_array(proto_glbp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_glbp = expert_register_protocol(proto_glbp); @@ -610,7 +612,7 @@ proto_reg_handoff_glbp(void) dissector_handle_t glbp_handle; glbp_handle = create_dissector_handle(dissect_glbp_static, proto_glbp); - dissector_add_uint("udp.port", 3222, glbp_handle); + dissector_add_uint_with_preference("udp.port", GLBP_UDP_PORT, glbp_handle); } /* diff --git a/epan/dissectors/packet-gsm_ipa.c b/epan/dissectors/packet-gsm_ipa.c index 8298d0fd2a..1572b3442f 100644 --- a/epan/dissectors/packet-gsm_ipa.c +++ b/epan/dissectors/packet-gsm_ipa.c @@ -72,12 +72,9 @@ void proto_reg_handoff_gsm_ipa(void); ************************************************************************ */ #define IPA_TCP_PORTS "3002,3003,3006,4249,4250,5000" -#define IPA_UDP_PORTS "3006" -#define IPA_UDP_PORTS_DEFAULT "0" static dissector_handle_t ipa_tcp_handle; static dissector_handle_t ipa_udp_handle; -static range_t *global_ipa_udp_ports = NULL; static gboolean global_ipa_in_root = FALSE; static gboolean global_ipa_in_info = FALSE; @@ -456,15 +453,7 @@ void proto_register_ipa(void) "GSM over IP ip.access Protocol", proto_ipa, FT_UINT8, BASE_DEC); - - range_convert_str(&global_ipa_udp_ports, IPA_UDP_PORTS_DEFAULT, MAX_UDP_PORT); - ipa_module = prefs_register_protocol(proto_ipa, proto_reg_handoff_gsm_ipa); - - prefs_register_range_preference(ipa_module, "udp_ports", - "GSM IPA UDP Port(s)", - "Set the port(s) for ip.access IPA" - " (usually: " IPA_UDP_PORTS ")", - &global_ipa_udp_ports, MAX_UDP_PORT); + ipa_module = prefs_register_protocol(proto_ipa, NULL); prefs_register_bool_preference(ipa_module, "hsl_debug_in_root_tree", "HSL Debug messages in root protocol tree", @@ -476,28 +465,16 @@ void proto_register_ipa(void) void proto_reg_handoff_gsm_ipa(void) { - static gboolean ipa_initialized = FALSE; - static range_t *ipa_udp_ports; + sub_handles[SUB_RSL] = find_dissector_add_dependency("gsm_abis_rsl", proto_ipa); + sub_handles[SUB_OML] = find_dissector_add_dependency("gsm_abis_oml", proto_ipa); + sub_handles[SUB_SCCP] = find_dissector_add_dependency("sccp", proto_ipa); + sub_handles[SUB_MGCP] = find_dissector_add_dependency("mgcp", proto_ipa); + sub_handles[SUB_DATA] = find_dissector("data"); - if (!ipa_initialized) { - sub_handles[SUB_RSL] = find_dissector_add_dependency("gsm_abis_rsl", proto_ipa); - sub_handles[SUB_OML] = find_dissector_add_dependency("gsm_abis_oml", proto_ipa); - sub_handles[SUB_SCCP] = find_dissector_add_dependency("sccp", proto_ipa); - sub_handles[SUB_MGCP] = find_dissector_add_dependency("mgcp", proto_ipa); - sub_handles[SUB_DATA] = find_dissector("data"); - - ipa_tcp_handle = create_dissector_handle(dissect_ipa_tcp, proto_ipa); - ipa_udp_handle = create_dissector_handle(dissect_ipa_udp, proto_ipa); - dissector_add_uint_range_with_preference("tcp.port", IPA_TCP_PORTS, ipa_tcp_handle); - ipa_initialized = TRUE; - } else { - dissector_delete_uint_range("udp.port", ipa_udp_ports, ipa_udp_handle); - g_free(ipa_udp_ports); - } - - ipa_udp_ports = range_copy(global_ipa_udp_ports); - - dissector_add_uint_range("udp.port", ipa_udp_ports, ipa_udp_handle); + ipa_tcp_handle = create_dissector_handle(dissect_ipa_tcp, proto_ipa); + ipa_udp_handle = create_dissector_handle(dissect_ipa_udp, proto_ipa); + dissector_add_uint_range_with_preference("tcp.port", IPA_TCP_PORTS, ipa_tcp_handle); + dissector_add_uint_range_with_preference("udp.port", "", ipa_udp_handle); } /* diff --git a/epan/dissectors/packet-gsm_osmux.c b/epan/dissectors/packet-gsm_osmux.c index c15734f017..039c3d76fe 100644 --- a/epan/dissectors/packet-gsm_osmux.c +++ b/epan/dissectors/packet-gsm_osmux.c @@ -282,17 +282,14 @@ void proto_register_osmux(void) void proto_reg_handoff_osmux(void) { - static gboolean osmux_initialized = FALSE; + osmux_handle = create_dissector_handle(dissect_osmux, proto_osmux); + dissector_add_for_decode_as_with_preference("udp.port", osmux_handle); - if (!osmux_initialized) { - osmux_handle = create_dissector_handle(dissect_osmux, proto_osmux); - dissector_add_for_decode_as("udp.port", osmux_handle); - osmux_tap = register_tap("osmux"); - osmux_initialized = TRUE; - stats_tree_register("osmux", "osmux", "Osmux/Packets", 0, - osmux_stats_tree_packet, osmux_stats_tree_init, - NULL); - } + osmux_tap = register_tap("osmux"); + + stats_tree_register("osmux", "osmux", "Osmux/Packets", 0, + osmux_stats_tree_packet, osmux_stats_tree_init, + NULL); } /* diff --git a/epan/dissectors/packet-gsmtap.c b/epan/dissectors/packet-gsmtap.c index d4ed1764a5..3c28d909aa 100644 --- a/epan/dissectors/packet-gsmtap.c +++ b/epan/dissectors/packet-gsmtap.c @@ -869,7 +869,7 @@ proto_reg_handoff_gsmtap(void) rrc_sub_handles[GSMTAP_RRC_SUB_TargetRNC_ToSourceRNC_Container] = find_dissector_add_dependency("rrc.t_to_srnc_cont", proto_gsmtap); gsmtap_handle = create_dissector_handle(dissect_gsmtap, proto_gsmtap); - dissector_add_uint("udp.port", GSMTAP_UDP_PORT, gsmtap_handle); + dissector_add_uint_with_preference("udp.port", GSMTAP_UDP_PORT, gsmtap_handle); } /* diff --git a/epan/dissectors/packet-gtp.c b/epan/dissectors/packet-gtp.c index 7378e39ea1..1ec06599c2 100644 --- a/epan/dissectors/packet-gtp.c +++ b/epan/dissectors/packet-gtp.c @@ -10101,6 +10101,8 @@ proto_reg_handoff_gtp(void) gtpv1c_port = g_gtpv1c_port; gtpv1u_port = g_gtpv1u_port; + /* This doesn't use the "auto preference" API because the port + description is too specific */ dissector_add_uint("udp.port", g_gtpv0_port, gtp_prime_handle); dissector_add_uint("udp.port", g_gtpv1c_port, gtp_handle); dissector_add_uint("udp.port", g_gtpv1u_port, gtp_handle); diff --git a/epan/dissectors/packet-gvsp.c b/epan/dissectors/packet-gvsp.c index 9a8b5e80c5..2f165d44af 100644 --- a/epan/dissectors/packet-gvsp.c +++ b/epan/dissectors/packet-gvsp.c @@ -2274,19 +2274,14 @@ void proto_register_gvsp(void) proto_register_field_array(proto_gvsp, hfgvsp, array_length(hfgvsp)); proto_register_subtree_array(ett, array_length(ett)); - gvsp_module = prefs_register_protocol(proto_gvsp, proto_reg_handoff_gvsp); + gvsp_module = prefs_register_protocol(proto_gvsp, NULL); prefs_register_obsolete_preference(gvsp_module, "enable_heuristic"); } void proto_reg_handoff_gvsp(void) { - static gboolean initialized = FALSE; - - if (!initialized) { - dissector_add_for_decode_as("udp.port", gvsp_handle); - heur_dissector_add("udp", dissect_gvsp_heur, "GigE Vision over UDP", "gvsp_udp", proto_gvsp, HEURISTIC_ENABLE); - initialized = TRUE; - } + dissector_add_for_decode_as_with_preference("udp.port", gvsp_handle); + heur_dissector_add("udp", dissect_gvsp_heur, "GigE Vision over UDP", "gvsp_udp", proto_gvsp, HEURISTIC_ENABLE); } /* diff --git a/epan/dissectors/packet-h225.c b/epan/dissectors/packet-h225.c index bf76021286..a36bc43255 100644 --- a/epan/dissectors/packet-h225.c +++ b/epan/dissectors/packet-h225.c @@ -65,8 +65,7 @@ #define PSNAME "H.225.0" #define PFNAME "h225" -#define UDP_PORT_RAS1 1718 -#define UDP_PORT_RAS2 1719 +#define UDP_PORT_RAS_RANGE "1718-1719" #define TCP_PORT_CS 1720 #define TLS_PORT_CS 1300 @@ -910,7 +909,7 @@ static int hf_h225_stopped = -1; /* NULL */ static int hf_h225_notAvailable = -1; /* NULL */ /*--- End of included file: packet-h225-hf.c ---*/ -#line 130 "./asn1/h225/packet-h225-template.c" +#line 129 "./asn1/h225/packet-h225-template.c" /* Initialize the subtree pointers */ static gint ett_h225 = -1; @@ -1158,7 +1157,7 @@ static gint ett_h225_ServiceControlResponse = -1; static gint ett_h225_T_result = -1; /*--- End of included file: packet-h225-ett.c ---*/ -#line 134 "./asn1/h225/packet-h225-template.c" +#line 133 "./asn1/h225/packet-h225-template.c" /* Preferences */ static guint h225_tls_port = TLS_PORT_CS; @@ -7825,7 +7824,7 @@ static int dissect_RasMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pro /*--- End of included file: packet-h225-fn.c ---*/ -#line 250 "./asn1/h225/packet-h225-template.c" +#line 249 "./asn1/h225/packet-h225-template.c" /* Forward declaration we need below */ void proto_reg_handoff_h225(void); @@ -11507,7 +11506,7 @@ void proto_register_h225(void) { NULL, HFILL }}, /*--- End of included file: packet-h225-hfarr.c ---*/ -#line 843 "./asn1/h225/packet-h225-template.c" +#line 842 "./asn1/h225/packet-h225-template.c" }; /* List of subtrees */ @@ -11757,7 +11756,7 @@ void proto_register_h225(void) { &ett_h225_T_result, /*--- End of included file: packet-h225-ettarr.c ---*/ -#line 849 "./asn1/h225/packet-h225-template.c" +#line 848 "./asn1/h225/packet-h225-template.c" }; static tap_param h225_stat_params[] = { @@ -11848,8 +11847,7 @@ proto_reg_handoff_h225(void) static guint saved_h225_tls_port; if (!h225_prefs_initialized) { - dissector_add_uint("udp.port", UDP_PORT_RAS1, h225ras_handle); - dissector_add_uint("udp.port", UDP_PORT_RAS2, h225ras_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_RAS_RANGE, h225ras_handle); h245_handle = find_dissector("h245"); h245dg_handle = find_dissector("h245dg"); diff --git a/epan/dissectors/packet-h245.c b/epan/dissectors/packet-h245.c index 791523f9f3..809414fb46 100644 --- a/epan/dissectors/packet-h245.c +++ b/epan/dissectors/packet-h245.c @@ -20832,7 +20832,7 @@ void proto_reg_handoff_h245(void) { dissector_add_for_decode_as_with_preference("tcp.port", h245_handle); - dissector_add_for_decode_as("udp.port", MultimediaSystemControlMessage_handle); + dissector_add_for_decode_as_with_preference("udp.port", MultimediaSystemControlMessage_handle); } static void init_h245_packet_info(h245_packet_info *pi) diff --git a/epan/dissectors/packet-h248.c b/epan/dissectors/packet-h248.c index f9b876a021..e35e98f9f7 100644 --- a/epan/dissectors/packet-h248.c +++ b/epan/dissectors/packet-h248.c @@ -1310,9 +1310,8 @@ void gcp_analyze_msg(proto_tree* gcp_tree, packet_info* pinfo, tvbuff_t* gcp_tvb /* END Gateway Control Protocol -- Context Tracking */ +#define H248_PORT 2945 static gboolean keep_persistent_data = FALSE; -static guint global_udp_port = 2945; -#define H248_TCP_PORT 2945 static gboolean h248_desegment = TRUE; @@ -6087,7 +6086,7 @@ dissect_h248_SigParameterV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of /*--- End of included file: packet-h248-fn.c ---*/ -#line 2165 "./asn1/h248/packet-h248-template.c" +#line 2164 "./asn1/h248/packet-h248-template.c" static int dissect_h248_tpkt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { dissect_tpkt_encap(tvb, pinfo, tree, h248_desegment, h248_handle); @@ -7512,7 +7511,7 @@ void proto_register_h248(void) { NULL, HFILL }}, /*--- End of included file: packet-h248-hfarr.c ---*/ -#line 2333 "./asn1/h248/packet-h248-template.c" +#line 2332 "./asn1/h248/packet-h248-template.c" GCP_HF_ARR_ELEMS("h248",h248_arrel) @@ -7678,7 +7677,7 @@ void proto_register_h248(void) { &ett_h248_SigParameterV1, /*--- End of included file: packet-h248-ettarr.c ---*/ -#line 2351 "./asn1/h248/packet-h248-template.c" +#line 2350 "./asn1/h248/packet-h248-template.c" }; static ei_register_info ei[] = { @@ -7704,16 +7703,11 @@ void proto_register_h248(void) { subdissector_table = register_dissector_table("h248.magic_num", "H248 Magic Num", proto_h248, FT_UINT32, BASE_HEX); - h248_module = prefs_register_protocol(proto_h248, proto_reg_handoff_h248); + h248_module = prefs_register_protocol(proto_h248, NULL); prefs_register_bool_preference(h248_module, "ctx_info", "Track Context", "Maintain relationships between transactions and contexts and display an extra tree showing context data", &keep_persistent_data); - prefs_register_uint_preference(h248_module, "udp_port", - "UDP port", - "Port to be decoded as h248", - 10, - &global_udp_port); prefs_register_bool_preference(h248_module, "desegment", "Desegment H.248 over TCP", "Desegment H.248 messages that span more TCP segments", @@ -7730,24 +7724,10 @@ void proto_register_h248(void) { /*--- proto_reg_handoff_h248 -------------------------------------------*/ void proto_reg_handoff_h248(void) { - static gboolean initialized = FALSE; - static guint32 udp_port; - - if (!initialized) { - dissector_add_uint("mtp3.service_indicator", MTP_SI_GCP, h248_handle); - h248_term_handle = find_dissector_add_dependency("h248term", proto_h248); - dissector_add_uint_with_preference("tcp.port", H248_TCP_PORT, h248_tpkt_handle); - initialized = TRUE; - } else { - if (udp_port != 0) - dissector_delete_uint("udp.port", udp_port, h248_handle); - } - - udp_port = global_udp_port; - - if (udp_port != 0) { - dissector_add_uint("udp.port", udp_port, h248_handle); - } + dissector_add_uint("mtp3.service_indicator", MTP_SI_GCP, h248_handle); + h248_term_handle = find_dissector_add_dependency("h248term", proto_h248); + dissector_add_uint_with_preference("tcp.port", H248_PORT, h248_tpkt_handle); + dissector_add_uint_with_preference("udp.port", H248_PORT, h248_handle); ss7pc_address_type = address_type_get_by_name("AT_SS7PC"); exported_pdu_tap = find_tap_id(EXPORT_PDU_TAP_NAME_LAYER_7); diff --git a/epan/dissectors/packet-h283.c b/epan/dissectors/packet-h283.c index c85358be32..0ae8f5375f 100644 --- a/epan/dissectors/packet-h283.c +++ b/epan/dissectors/packet-h283.c @@ -764,7 +764,7 @@ void proto_register_h283(void) { /*--- proto_reg_handoff_h283 -------------------------------------------*/ void proto_reg_handoff_h283(void) { - dissector_add_for_decode_as("udp.port", h283_udp_handle); + dissector_add_for_decode_as_with_preference("udp.port", h283_udp_handle); rdc_pdu_handle = find_dissector_add_dependency("rdc", proto_h283); rdc_device_list_handle = find_dissector_add_dependency("rdc.device_list", proto_h283); diff --git a/epan/dissectors/packet-h501.c b/epan/dissectors/packet-h501.c index 61b525de72..b824cd9a61 100644 --- a/epan/dissectors/packet-h501.c +++ b/epan/dissectors/packet-h501.c @@ -418,8 +418,7 @@ static gint ett_h501_TerminationCause = -1; static dissector_handle_t h501_pdu_handle; /* Preferences */ -#define H501_TCP_PORT 2099 -static guint h501_udp_port = 2099; +#define H501_PORT 2099 static gboolean h501_desegment_tcp = TRUE; void proto_reg_handoff_h501(void); @@ -2514,7 +2513,7 @@ static int dissect_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_ /*--- End of included file: packet-h501-fn.c ---*/ -#line 61 "./asn1/h501/packet-h501-template.c" +#line 60 "./asn1/h501/packet-h501-template.c" static int dissect_h501_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) @@ -3555,7 +3554,7 @@ void proto_register_h501(void) { "INTEGER_1_65535", HFILL }}, /*--- End of included file: packet-h501-hfarr.c ---*/ -#line 97 "./asn1/h501/packet-h501-template.c" +#line 96 "./asn1/h501/packet-h501-template.c" }; /* List of subtrees */ @@ -3665,7 +3664,7 @@ void proto_register_h501(void) { &ett_h501_TerminationCause, /*--- End of included file: packet-h501-ettarr.c ---*/ -#line 103 "./asn1/h501/packet-h501-template.c" +#line 102 "./asn1/h501/packet-h501-template.c" }; /* Register protocol */ @@ -3677,11 +3676,7 @@ void proto_register_h501(void) { h501_pdu_handle = register_dissector(PFNAME, dissect_h501_pdu, proto_h501); - h501_module = prefs_register_protocol(proto_h501, proto_reg_handoff_h501); - prefs_register_uint_preference(h501_module, "udp.port", - "UDP port", - "Port to be decoded as h501", - 10, &h501_udp_port); + h501_module = prefs_register_protocol(proto_h501, NULL); prefs_register_bool_preference(h501_module, "desegment", "Desegment H.501 over TCP", "Desegment H.501 messages that span more TCP segments", @@ -3692,23 +3687,12 @@ void proto_register_h501(void) { /*--- proto_reg_handoff_h501 -------------------------------------------*/ void proto_reg_handoff_h501(void) { - static gboolean h501_prefs_initialized = FALSE; - static dissector_handle_t h501_udp_handle; - static dissector_handle_t h501_tcp_handle; - static guint saved_h501_udp_port; - - if (!h501_prefs_initialized) { - h501_udp_handle = create_dissector_handle(dissect_h501_udp, proto_h501); - h501_tcp_handle = create_dissector_handle(dissect_h501_tcp, proto_h501); - dissector_add_uint_with_preference("tcp.port", H501_TCP_PORT, h501_tcp_handle); - h501_prefs_initialized = TRUE; - } else { - dissector_delete_uint("udp.port", saved_h501_udp_port, h501_udp_handle); - } - - /* Set our port number for future use */ - saved_h501_udp_port = h501_udp_port; - dissector_add_uint("udp.port", saved_h501_udp_port, h501_udp_handle); + dissector_handle_t h501_udp_handle; + dissector_handle_t h501_tcp_handle; + h501_udp_handle = create_dissector_handle(dissect_h501_udp, proto_h501); + h501_tcp_handle = create_dissector_handle(dissect_h501_tcp, proto_h501); + dissector_add_uint_with_preference("tcp.port", H501_PORT, h501_tcp_handle); + dissector_add_uint_with_preference("udp.port", H501_PORT, h501_udp_handle); } diff --git a/epan/dissectors/packet-hartip.c b/epan/dissectors/packet-hartip.c index 9968f2b588..84212fbe46 100644 --- a/epan/dissectors/packet-hartip.c +++ b/epan/dissectors/packet-hartip.c @@ -2210,7 +2210,7 @@ proto_reg_handoff_hartip(void) { hartip_tcp_handle = create_dissector_handle(dissect_hartip_tcp, proto_hartip); hartip_udp_handle = create_dissector_handle(dissect_hartip_udp, proto_hartip); - dissector_add_uint("udp.port", HARTIP_PORT, hartip_udp_handle); + dissector_add_uint_with_preference("udp.port", HARTIP_PORT, hartip_udp_handle); dissector_add_uint_with_preference("tcp.port", HARTIP_PORT, hartip_tcp_handle); stats_tree_register("hart_ip", "hart_ip", "HART-IP", 0, diff --git a/epan/dissectors/packet-hcrt.c b/epan/dissectors/packet-hcrt.c index 1698241ebd..5f71b00a3a 100644 --- a/epan/dissectors/packet-hcrt.c +++ b/epan/dissectors/packet-hcrt.c @@ -32,8 +32,6 @@ static int proto_hcrt = -1; -static range_t *hcrt_port_range_default; - #define HCRT_UDP_PORTS_DEFAULT "47000" static gint ethertype_pref = 0xf052; @@ -462,26 +460,14 @@ void proto_register_hcrt(void) &ett_hcrt_body, }; - proto_hcrt = proto_register_protocol ( - "Hotline Command-Response Transaction protocol", /* name */ - "HCrt", /* short name */ - "hcrt" /* abbrev */ - ); + proto_hcrt = proto_register_protocol ("Hotline Command-Response Transaction protocol", "HCrt", "hcrt"); proto_register_field_array(proto_hcrt, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_hcrt = expert_register_protocol(proto_hcrt); expert_register_field_array(expert_hcrt, ei, array_length(ei)); - /* Set default UDP ports */ - range_convert_str(&hcrt_port_range_default, HCRT_UDP_PORTS_DEFAULT, MAX_UDP_PORT); - hcrt_module = prefs_register_protocol(proto_hcrt, proto_reg_handoff_hcrt); - prefs_register_range_preference(hcrt_module, - "dissector_udp_port", - "UDP port", - "The UDP port used in L3 communications (default " HCRT_UDP_PORTS_DEFAULT ")", - &hcrt_port_range_default, MAX_UDP_PORT); prefs_register_uint_preference(hcrt_module, "dissector_ethertype", "Ethernet type", @@ -493,7 +479,6 @@ void proto_reg_handoff_hcrt(void) { static dissector_handle_t hcrt_handle; static gboolean hcrt_prefs_initialized = FALSE; - static range_t* hcrt_port_range; static gint hcrt_ethertype; if (!hcrt_prefs_initialized) { @@ -501,18 +486,15 @@ void proto_reg_handoff_hcrt(void) /* Also register as a dissector that can be selected by a TCP port number via "decode as" */ dissector_add_for_decode_as_with_preference("tcp.port", hcrt_handle); + dissector_add_uint_range_with_preference("udp.port", HCRT_UDP_PORTS_DEFAULT, hcrt_handle); hcrt_prefs_initialized = TRUE; } else { dissector_delete_uint("ethertype", hcrt_ethertype, hcrt_handle); - dissector_delete_uint_range("udp.port", hcrt_port_range, hcrt_handle); - g_free(hcrt_port_range); } - hcrt_port_range = range_copy(hcrt_port_range_default); hcrt_ethertype = ethertype_pref; dissector_add_uint("ethertype", hcrt_ethertype, hcrt_handle); - dissector_add_uint_range("udp.port", hcrt_port_range, hcrt_handle); } /* diff --git a/epan/dissectors/packet-hip.c b/epan/dissectors/packet-hip.c index 463e73507f..0c318fbe0c 100644 --- a/epan/dissectors/packet-hip.c +++ b/epan/dissectors/packet-hip.c @@ -43,6 +43,8 @@ void proto_register_hip(void); void proto_reg_handoff_hip(void); +#define HIP_UDP_PORT 10500 + #define HI_ALG_DSA 3 #define HI_ALG_RSA 5 @@ -1607,7 +1609,7 @@ proto_reg_handoff_hip(void) dissector_add_uint("ip.proto", IP_PROTO_HIP, hip_handle); hip_handle2 = create_dissector_handle(dissect_hip_in_udp, proto_hip); - dissector_add_uint("udp.port", 10500, hip_handle2); + dissector_add_uint_with_preference("udp.port", HIP_UDP_PORT, hip_handle2); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-hiqnet.c b/epan/dissectors/packet-hiqnet.c index 374442066d..382b26baee 100644 --- a/epan/dissectors/packet-hiqnet.c +++ b/epan/dissectors/packet-hiqnet.c @@ -1818,7 +1818,7 @@ proto_reg_handoff_hiqnet(void) hiqnet_udp_handle = create_dissector_handle(dissect_hiqnet_udp, proto_hiqnet); hiqnet_tcp_handle = create_dissector_handle(dissect_hiqnet_tcp, proto_hiqnet); - dissector_add_uint("udp.port", HIQNET_PORT, hiqnet_udp_handle); + dissector_add_uint_with_preference("udp.port", HIQNET_PORT, hiqnet_udp_handle); dissector_add_uint_with_preference("tcp.port", HIQNET_PORT, hiqnet_tcp_handle); } diff --git a/epan/dissectors/packet-hp-erm.c b/epan/dissectors/packet-hp-erm.c index 73255703b0..2bcba313ee 100644 --- a/epan/dissectors/packet-hp-erm.c +++ b/epan/dissectors/packet-hp-erm.c @@ -46,7 +46,6 @@ #include "config.h" #include -#include void proto_register_hp_erm(void); void proto_reg_handoff_hp_erm(void); @@ -54,8 +53,6 @@ void proto_reg_handoff_hp_erm(void); #define PROTO_SHORT_NAME "HP_ERM" #define PROTO_LONG_NAME "HP encapsulated remote mirroring" -static guint global_hp_erm_udp_port = 0; - static int proto_hp_erm = -1; static gint ett_hp_erm = -1; static int hf_hp_erm_unknown1 = -1; @@ -149,17 +146,8 @@ proto_register_hp_erm(void) &ett_hp_erm, }; - module_t *hp_erm_module; - proto_hp_erm = proto_register_protocol(PROTO_LONG_NAME, PROTO_SHORT_NAME, "hp_erm"); - hp_erm_module = prefs_register_protocol(proto_hp_erm, proto_reg_handoff_hp_erm); - prefs_register_uint_preference(hp_erm_module, "udp.port", "HP_ERM UDP Port", - "Set the UDP port (source or destination) used for HP" - " encapsulated remote mirroring frames;\n" - "0 (default) means that the HP_ERM dissector is not active", - 10, &global_hp_erm_udp_port); - proto_register_field_array(proto_hp_erm, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } @@ -167,23 +155,11 @@ proto_register_hp_erm(void) void proto_reg_handoff_hp_erm(void) { - static dissector_handle_t hp_erm_handle; - static guint hp_erm_udp_port; - static gboolean initialized = FALSE; + dissector_handle_t hp_erm_handle; - if (!initialized) { - eth_withoutfcs_handle = find_dissector_add_dependency("eth_withoutfcs", proto_hp_erm); - hp_erm_handle = create_dissector_handle(dissect_hp_erm, proto_hp_erm); - initialized = TRUE; - } else { - if (hp_erm_udp_port != 0) - dissector_delete_uint("udp.port", hp_erm_udp_port, hp_erm_handle); - } - - hp_erm_udp_port = global_hp_erm_udp_port; - - if (hp_erm_udp_port != 0) - dissector_add_uint("udp.port", hp_erm_udp_port, hp_erm_handle); + eth_withoutfcs_handle = find_dissector_add_dependency("eth_withoutfcs", proto_hp_erm); + hp_erm_handle = create_dissector_handle(dissect_hp_erm, proto_hp_erm); + dissector_add_for_decode_as_with_preference("udp.port", hp_erm_handle); } /* * Editor modelines diff --git a/epan/dissectors/packet-hsrp.c b/epan/dissectors/packet-hsrp.c index c796f35853..3426681810 100644 --- a/epan/dissectors/packet-hsrp.c +++ b/epan/dissectors/packet-hsrp.c @@ -200,6 +200,7 @@ static expert_field ei_hsrp_unknown_tlv = EI_INIT; #define UDP_PORT_HSRP 1985 #define UDP_PORT_HSRP2_V6 2029 +#define UDP_PORT_HSRP_RANGE "1985,2009" #define HSRP_DST_IP_ADDR 0xE0000002 #define HSRP2_DST_IP_ADDR 0xE0000066 @@ -835,14 +836,12 @@ void proto_register_hsrp(void) { &ei_hsrp_unknown_tlv, { "hsrp.unknown_tlv", PI_UNDECODED, PI_WARN, "Unknown TLV sequence (HSRPv1)", EXPFILL }}, }; - proto_hsrp = proto_register_protocol("Cisco Hot Standby Router Protocol", - "HSRP", "hsrp"); + proto_hsrp = proto_register_protocol("Cisco Hot Standby Router Protocol", "HSRP", "hsrp"); + proto_register_field_array(proto_hsrp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_hsrp = expert_register_protocol(proto_hsrp); expert_register_field_array(expert_hsrp, ei, array_length(ei)); - - return; } void @@ -851,8 +850,7 @@ proto_reg_handoff_hsrp(void) dissector_handle_t hsrp_handle; hsrp_handle = create_dissector_handle(dissect_hsrp, proto_hsrp); - dissector_add_uint("udp.port", UDP_PORT_HSRP, hsrp_handle); - dissector_add_uint("udp.port", UDP_PORT_HSRP2_V6, hsrp_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_HSRP_RANGE, hsrp_handle); } /* diff --git a/epan/dissectors/packet-http.c b/epan/dissectors/packet-http.c index 2c7f724817..507bd93cbf 100644 --- a/epan/dissectors/packet-http.c +++ b/epan/dissectors/packet-http.c @@ -3750,7 +3750,7 @@ proto_reg_handoff_http(void) * request or reply? I.e., should there be an SSDP dissector? */ ssdp_handle = create_dissector_handle(dissect_ssdp, proto_ssdp); - dissector_add_uint("udp.port", UDP_PORT_SSDP, ssdp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_SSDP, ssdp_handle); ntlmssp_handle = find_dissector_add_dependency("ntlmssp", proto_http); gssapi_handle = find_dissector_add_dependency("gssapi", proto_http); diff --git a/epan/dissectors/packet-iapp.c b/epan/dissectors/packet-iapp.c index 160d3497fd..c1484a7612 100644 --- a/epan/dissectors/packet-iapp.c +++ b/epan/dissectors/packet-iapp.c @@ -480,7 +480,7 @@ proto_reg_handoff_iapp(void) dissector_handle_t iapp_handle; iapp_handle = create_dissector_handle(dissect_iapp, proto_iapp); - dissector_add_uint("udp.port", UDP_PORT_IAPP, iapp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_IAPP, iapp_handle); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-iax2.c b/epan/dissectors/packet-iax2.c index f01a98df36..da9d402dd2 100644 --- a/epan/dissectors/packet-iax2.c +++ b/epan/dissectors/packet-iax2.c @@ -3216,7 +3216,7 @@ proto_reg_handoff_iax2(void) { dissector_handle_t v110_handle; - dissector_add_uint("udp.port", IAX2_PORT, find_dissector("iax2")); + dissector_add_uint_with_preference("udp.port", IAX2_PORT, find_dissector("iax2")); v110_handle = find_dissector("v110"); if (v110_handle) dissector_add_uint("iax2.dataformat", AST_DATAFORMAT_V110, v110_handle); diff --git a/epan/dissectors/packet-icep.c b/epan/dissectors/packet-icep.c index fe9344f1b7..5b525d3f39 100644 --- a/epan/dissectors/packet-icep.c +++ b/epan/dissectors/packet-icep.c @@ -124,7 +124,6 @@ static expert_field ei_icep_context_too_long = EI_INIT; static guint icep_max_batch_requests = 64; static guint icep_max_ice_string_len = 512; static guint icep_max_ice_context_pairs = 64; -static guint icep_udp_port = 0; static const value_string icep_msgtype_vals[] = { @@ -1294,12 +1293,6 @@ void proto_register_icep(void) expert_register_field_array(expert_icep, ei, array_length(ei)); icep_module = prefs_register_protocol(proto_icep, NULL); - prefs_register_uint_preference(icep_module, "udp.port", - "ICEP UDP Port", - "ICEP UDP port", - 10, - &icep_udp_port); - prefs_register_uint_preference(icep_module, "max_batch_requests", "Maximum batch requests", "Maximum number of batch requests allowed", @@ -1319,34 +1312,19 @@ void proto_register_icep(void) void proto_reg_handoff_icep(void) { - static gboolean icep_prefs_initialized = FALSE; - static dissector_handle_t icep_tcp_handle, icep_udp_handle; - static guint old_icep_udp_port = 0; + dissector_handle_t icep_tcp_handle, icep_udp_handle; /* Register as a heuristic TCP/UDP dissector */ - if (icep_prefs_initialized == FALSE) { - icep_tcp_handle = create_dissector_handle(dissect_icep_tcp, proto_icep); - icep_udp_handle = create_dissector_handle(dissect_icep_udp, proto_icep); + icep_tcp_handle = create_dissector_handle(dissect_icep_tcp, proto_icep); + icep_udp_handle = create_dissector_handle(dissect_icep_udp, proto_icep); - heur_dissector_add("tcp", dissect_icep_tcp, "ICEP over TCP", "icep_tcp", proto_icep, HEURISTIC_ENABLE); - heur_dissector_add("udp", dissect_icep_udp, "ICEP over UDP", "icep_udp", proto_icep, HEURISTIC_ENABLE); - - /* Register TCP port for dissection */ - dissector_add_for_decode_as_with_preference("tcp.port", icep_tcp_handle); - - icep_prefs_initialized = TRUE; - } + heur_dissector_add("tcp", dissect_icep_tcp, "ICEP over TCP", "icep_tcp", proto_icep, HEURISTIC_ENABLE); + heur_dissector_add("udp", dissect_icep_udp, "ICEP over UDP", "icep_udp", proto_icep, HEURISTIC_ENABLE); + /* Register TCP port for dissection */ + dissector_add_for_decode_as_with_preference("tcp.port", icep_tcp_handle); /* Register UDP port for dissection */ - if(old_icep_udp_port != 0 && old_icep_udp_port != icep_udp_port){ - dissector_delete_uint("udp.port", old_icep_udp_port, icep_udp_handle); - } - - if(icep_udp_port != 0 && old_icep_udp_port != icep_udp_port) { - dissector_add_uint("udp.port", icep_udp_port, icep_udp_handle); - } - - old_icep_udp_port = icep_udp_port; + dissector_add_for_decode_as_with_preference("udp.port", icep_udp_handle); } /* diff --git a/epan/dissectors/packet-icp.c b/epan/dissectors/packet-icp.c index 12c973949f..56f4920604 100644 --- a/epan/dissectors/packet-icp.c +++ b/epan/dissectors/packet-icp.c @@ -258,7 +258,7 @@ proto_reg_handoff_icp(void) dissector_handle_t icp_handle; icp_handle = create_dissector_handle(dissect_icp, proto_icp); - dissector_add_uint("udp.port", UDP_PORT_ICP, icp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_ICP, icp_handle); } /* diff --git a/epan/dissectors/packet-icq.c b/epan/dissectors/packet-icq.c index a7a1124750..5ca6810250 100644 --- a/epan/dissectors/packet-icq.c +++ b/epan/dissectors/packet-icq.c @@ -1398,7 +1398,7 @@ proto_reg_handoff_icq(void) dissector_handle_t icq_handle; icq_handle = create_dissector_handle(dissect_icq, proto_icq); - dissector_add_uint("udp.port", UDP_PORT_ICQ, icq_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_ICQ, icq_handle); } /* diff --git a/epan/dissectors/packet-infiniband.c b/epan/dissectors/packet-infiniband.c index 3922b3e1e3..5daa7f1c75 100644 --- a/epan/dissectors/packet-infiniband.c +++ b/epan/dissectors/packet-infiniband.c @@ -7480,7 +7480,8 @@ void proto_reg_handoff_infiniband(void) dissector_delete_uint("udp.port", prev_rroce_udp_port, rroce_handle); } /*we are saving the previous value of rroce udp port so we will be able to remove the dissector - * the next time user pref is updated and we get called back to proto_reg_handoff_infiniband.*/ + * the next time user pref is updated and we get called back to proto_reg_handoff_infiniband. + "Auto" preference not used because port isn't for infiniband protocol itself */ prev_rroce_udp_port = pref_rroce_udp_port; dissector_add_uint("udp.port", pref_rroce_udp_port, rroce_handle); diff --git a/epan/dissectors/packet-interlink.c b/epan/dissectors/packet-interlink.c index 6b7a36800f..48e507c724 100644 --- a/epan/dissectors/packet-interlink.c +++ b/epan/dissectors/packet-interlink.c @@ -230,7 +230,7 @@ proto_reg_handoff_interlink(void) interlink_handle = find_dissector("interlink"); /* Allow "Decode As" with any UDP packet. */ - dissector_add_for_decode_as("udp.port", interlink_handle); + dissector_add_for_decode_as_with_preference("udp.port", interlink_handle); /* Add our heuristic packet finder. */ heur_dissector_add("udp", dissect_interlink_heur, "Interlink over UDP", "interlink_udp", proto_interlink, HEURISTIC_ENABLE); diff --git a/epan/dissectors/packet-ip.c b/epan/dissectors/packet-ip.c index 054ffcc6e2..7002ab7ecc 100644 --- a/epan/dissectors/packet-ip.c +++ b/epan/dissectors/packet-ip.c @@ -3160,7 +3160,7 @@ proto_reg_handoff_ip(void) dissector_add_uint("pwach.channel_type", 0x21, ip_handle); /* IPv4, RFC4385 clause 6. */ dissector_add_uint("sflow_245.header_protocol", SFLOW_245_HEADER_IPv4, ip_handle); dissector_add_uint("l2tp.pw_type", L2TPv3_PROTOCOL_IP, ip_handle); - dissector_add_for_decode_as("udp.port", ip_handle); + dissector_add_for_decode_as_with_preference("udp.port", ip_handle); dissector_add_for_decode_as("pcli.payload", ip_handle); dissector_add_uint("wtap_encap", WTAP_ENCAP_RAW_IP4, ip_handle); dissector_add_uint("enc", BSD_AF_INET, ip_handle); diff --git a/epan/dissectors/packet-ipsec-udp.c b/epan/dissectors/packet-ipsec-udp.c index 0463066b9b..6863d656bb 100644 --- a/epan/dissectors/packet-ipsec-udp.c +++ b/epan/dissectors/packet-ipsec-udp.c @@ -29,6 +29,8 @@ void proto_register_udpencap(void); void proto_reg_handoff_udpencap(void); +#define UDPENCAP_PORT 4500 + static int proto_udpencap = -1; static int hf_nat_keepalive = -1; @@ -93,8 +95,7 @@ proto_register_udpencap(void) &ett_udpencap, }; - proto_udpencap = proto_register_protocol( - "UDP Encapsulation of IPsec Packets", "UDPENCAP", "udpencap"); + proto_udpencap = proto_register_protocol("UDP Encapsulation of IPsec Packets", "UDPENCAP", "udpencap"); proto_register_field_array(proto_udpencap, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } @@ -108,7 +109,7 @@ proto_reg_handoff_udpencap(void) isakmp_handle = find_dissector_add_dependency("isakmp", proto_udpencap); udpencap_handle = create_dissector_handle(dissect_udpencap, proto_udpencap); - dissector_add_uint("udp.port", 4500, udpencap_handle); + dissector_add_uint_with_preference("udp.port", UDPENCAP_PORT, udpencap_handle); } /* diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c index 55c2df8600..4cd90cd719 100644 --- a/epan/dissectors/packet-ipv6.c +++ b/epan/dissectors/packet-ipv6.c @@ -3586,7 +3586,7 @@ proto_reg_handoff_ipv6(void) dissector_add_uint("enc", BSD_AF_INET6_BSD, ipv6_handle); dissector_add_uint("vxlan.next_proto", VXLAN_IPV6, ipv6_handle); - dissector_add_for_decode_as("udp.port", ipv6_handle); + dissector_add_for_decode_as_with_preference("udp.port", ipv6_handle); ipv6_hopopts_handle = create_dissector_handle(dissect_hopopts, proto_ipv6_hopopts); dissector_add_uint("ip.proto", IP_PROTO_HOPOPTS, ipv6_hopopts_handle); diff --git a/epan/dissectors/packet-ipvs-syncd.c b/epan/dissectors/packet-ipvs-syncd.c index a66a72fac8..521283f010 100644 --- a/epan/dissectors/packet-ipvs-syncd.c +++ b/epan/dissectors/packet-ipvs-syncd.c @@ -60,7 +60,7 @@ static int ett_conn = -1; static int ett_flags = -1; #define IPVS_SYNCD_MC_GROUP "224.0.0.18" -#define IPVS_SYNCD_PORT 8848 +#define IPVS_SYNCD_PORT 8848 /* Not IANA registered */ static const value_string proto_strings[] = { {0x06, "TCP"}, @@ -322,8 +322,7 @@ proto_register_ipvs_syncd(void) &ett_flags, }; - proto_ipvs_syncd = proto_register_protocol("IP Virtual Services Sync Daemon", - "IPVS", "ipvs"); + proto_ipvs_syncd = proto_register_protocol("IP Virtual Services Sync Daemon", "IPVS", "ipvs"); proto_register_field_array(proto_ipvs_syncd, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } @@ -334,7 +333,7 @@ proto_reg_handoff_ipvs_syncd(void) dissector_handle_t ipvs_syncd_handle; ipvs_syncd_handle = create_dissector_handle(dissect_ipvs_syncd, proto_ipvs_syncd); - dissector_add_uint("udp.port", IPVS_SYNCD_PORT, ipvs_syncd_handle); + dissector_add_uint_with_preference("udp.port", IPVS_SYNCD_PORT, ipvs_syncd_handle); } /* diff --git a/epan/dissectors/packet-ipx.c b/epan/dissectors/packet-ipx.c index acdbf29a6e..b5419394ad 100644 --- a/epan/dissectors/packet-ipx.c +++ b/epan/dissectors/packet-ipx.c @@ -1594,7 +1594,7 @@ proto_reg_handoff_ipx(void) dissector_handle_t serialization_handle, ipxmsg_handle; ipx_handle = find_dissector("ipx"); - dissector_add_uint("udp.port", UDP_PORT_IPX, ipx_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_IPX, ipx_handle); dissector_add_uint("ethertype", ETHERTYPE_IPX, ipx_handle); dissector_add_uint("chdlc.protocol", ETHERTYPE_IPX, ipx_handle); dissector_add_uint("ppp.protocol", PPP_IPX, ipx_handle); diff --git a/epan/dissectors/packet-isakmp.c b/epan/dissectors/packet-isakmp.c index 1fb812d20c..d644ddf8c3 100644 --- a/epan/dissectors/packet-isakmp.c +++ b/epan/dissectors/packet-isakmp.c @@ -7150,7 +7150,7 @@ proto_reg_handoff_isakmp(void) isakmp_handle = find_dissector("isakmp"); eap_handle = find_dissector_add_dependency("eap", proto_isakmp); - dissector_add_uint("udp.port", UDP_PORT_ISAKMP, isakmp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_ISAKMP, isakmp_handle); dissector_add_uint_with_preference("tcp.port", TCP_PORT_ISAKMP, isakmp_handle); } diff --git a/epan/dissectors/packet-isns.c b/epan/dissectors/packet-isns.c index 78d852e42d..1de7c1c0b9 100644 --- a/epan/dissectors/packet-isns.c +++ b/epan/dissectors/packet-isns.c @@ -1728,7 +1728,7 @@ proto_reg_handoff_isns(void) isns_udp_handle = create_dissector_handle(dissect_isns_udp,proto_isns); dissector_add_uint_with_preference("tcp.port",ISNS_TCP_PORT,isns_tcp_handle); - dissector_add_uint("udp.port",ISNS_UDP_PORT,isns_udp_handle); + dissector_add_uint_with_preference("udp.port",ISNS_UDP_PORT,isns_udp_handle); } /* diff --git a/epan/dissectors/packet-jmirror.c b/epan/dissectors/packet-jmirror.c index f5e3b78f64..cc2ffbb809 100644 --- a/epan/dissectors/packet-jmirror.c +++ b/epan/dissectors/packet-jmirror.c @@ -26,7 +26,6 @@ #include "config.h" #include -#include void proto_register_jmirror(void); void proto_reg_handoff_jmirror(void); @@ -34,7 +33,7 @@ void proto_reg_handoff_jmirror(void); #define MIRROR_HDR_SZ 8 #define MIRROR_ID_SZ 4 #define SESSION_ID_SZ 4 -#define DEF_JMIRROR_UDP_PORT 30030 /* a product of primes (1*2*3*5*7*11*13) :-) */ +#define DEF_JMIRROR_UDP_PORT 30030 /* a product of primes (1*2*3*5*7*11*13) :-) Not IANA registered */ /* * See www.juniper.net JUNOSe Packet Mirroring documentation @@ -51,8 +50,6 @@ static dissector_handle_t ipv4_handle; static dissector_handle_t ipv6_handle; static dissector_handle_t hdlc_handle; -static guint global_jmirror_udp_port = DEF_JMIRROR_UDP_PORT; - /* Routine to return the dissector handle based on heuristic packet inspection */ static dissector_handle_t get_heuristic_handle(tvbuff_t *tvb) @@ -158,8 +155,6 @@ dissect_jmirror(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data void proto_register_jmirror(void) { - module_t *jmirror_module = NULL; - /* Used by the Expression dialog and filter box */ static hf_register_info jmirror_hf[] = { { &hf_jmirror_mid, @@ -178,14 +173,6 @@ proto_register_jmirror(void) /* Register the Jmirror protocol with Wireshark */ proto_jmirror = proto_register_protocol("Juniper Packet Mirror", "Jmirror", "jmirror"); - /* Register the Jmirror preferences with Wireshark */ - jmirror_module = prefs_register_protocol(proto_jmirror, proto_reg_handoff_jmirror); - - /* Allow the user to set the UDP port for the decode under the Edit -> Preferences menu */ - prefs_register_uint_preference(jmirror_module, "udp.port", "JMirror UDP Port", - "Set the port for JMirror Port (if other than the default of 30030)", - 10, &global_jmirror_udp_port); - /* Register the Jmirror subfields for filters */ proto_register_field_array(proto_jmirror, jmirror_hf, array_length(jmirror_hf)); proto_register_subtree_array(jmirror_ett, array_length(jmirror_ett)); @@ -195,34 +182,21 @@ proto_register_jmirror(void) void proto_reg_handoff_jmirror(void) { - static int jmirror_inited = FALSE; - static guint jmirror_udp_port; - static dissector_handle_t jmirror_handle; + dissector_handle_t jmirror_handle; - if ( !jmirror_inited ) - { - /* register as heuristic dissector for UDP */ - /* heur_dissector_add("udp", dissect_jmirror, proto_jmirror); */ + /* register as heuristic dissector for UDP */ + /* heur_dissector_add("udp", dissect_jmirror, proto_jmirror); */ - /* Create a dissector handle for the Jmirror protocol */ - jmirror_handle = create_dissector_handle(dissect_jmirror, proto_jmirror); + /* Create a dissector handle for the Jmirror protocol */ + jmirror_handle = create_dissector_handle(dissect_jmirror, proto_jmirror); - /* Create pointer to ipv4, ipv6, ppp and data dissectors */ - ipv4_handle = find_dissector("ip"); - ipv6_handle = find_dissector("ipv6"); - hdlc_handle = find_dissector("pw_hdlc_nocw_hdlc_ppp"); - - /* Set the init flag */ - jmirror_inited = TRUE; - } else { - /* Unregister from the old UDP port */ - dissector_delete_uint("udp.port", jmirror_udp_port, jmirror_handle); - } - - jmirror_udp_port = global_jmirror_udp_port; + /* Create pointer to ipv4, ipv6, ppp and data dissectors */ + ipv4_handle = find_dissector("ip"); + ipv6_handle = find_dissector("ipv6"); + hdlc_handle = find_dissector("pw_hdlc_nocw_hdlc_ppp"); /* Register as a normal IP dissector with default UDP port 30030 */ - dissector_add_uint("udp.port", jmirror_udp_port, jmirror_handle); + dissector_add_uint_with_preference("udp.port", DEF_JMIRROR_UDP_PORT, jmirror_handle); } /* diff --git a/epan/dissectors/packet-juniper.c b/epan/dissectors/packet-juniper.c index d03379dfdc..45830f7315 100644 --- a/epan/dissectors/packet-juniper.c +++ b/epan/dissectors/packet-juniper.c @@ -1600,7 +1600,7 @@ proto_reg_handoff_juniper(void) dissector_add_uint("wtap_encap", WTAP_ENCAP_JUNIPER_VP, juniper_vp_handle); dissector_add_uint("wtap_encap", WTAP_ENCAP_JUNIPER_SVCS, juniper_svcs_handle); dissector_add_uint("wtap_encap", WTAP_ENCAP_JUNIPER_VN, juniper_vn_handle); - dissector_add_for_decode_as("udp.port", juniper_vn_handle); + dissector_add_for_decode_as_with_preference("udp.port", juniper_vn_handle); } diff --git a/epan/dissectors/packet-kdp.c b/epan/dissectors/packet-kdp.c index e676731acc..f964286584 100644 --- a/epan/dissectors/packet-kdp.c +++ b/epan/dissectors/packet-kdp.c @@ -29,7 +29,7 @@ void proto_register_kdp(void); void proto_reg_handoff_kdp(void); -#define KDP_PORT 19948 +#define KDP_PORT 19948 /* Not IANA registered */ #define BUFFER_SIZE 80 static int proto_kdp = -1; static gint ett_kdp = -1; @@ -406,7 +406,7 @@ void proto_reg_handoff_kdp(void) { dissector_handle_t kdp_handle; kdp_handle = create_dissector_handle(dissect_kdp, proto_kdp); - dissector_add_uint("udp.port", KDP_PORT, kdp_handle); + dissector_add_uint_with_preference("udp.port", KDP_PORT, kdp_handle); } /* diff --git a/epan/dissectors/packet-kerberos.c b/epan/dissectors/packet-kerberos.c index 57315e2c60..72a017661b 100644 --- a/epan/dissectors/packet-kerberos.c +++ b/epan/dissectors/packet-kerberos.c @@ -5433,7 +5433,7 @@ proto_reg_handoff_kerberos(void) kerberos_handle_tcp = create_dissector_handle(dissect_kerberos_tcp, proto_kerberos); - dissector_add_uint("udp.port", UDP_PORT_KERBEROS, kerberos_handle_udp); + dissector_add_uint_with_preference("udp.port", UDP_PORT_KERBEROS, kerberos_handle_udp); dissector_add_uint_with_preference("tcp.port", TCP_PORT_KERBEROS, kerberos_handle_tcp); register_dcerpc_auth_subdissector(DCE_C_AUTHN_LEVEL_CONNECT, diff --git a/epan/dissectors/packet-kerberos4.c b/epan/dissectors/packet-kerberos4.c index 0cf44af2d8..fae0108330 100644 --- a/epan/dissectors/packet-kerberos4.c +++ b/epan/dissectors/packet-kerberos4.c @@ -452,7 +452,7 @@ proto_reg_handoff_krb4(void) dissector_handle_t krb4_handle; krb4_handle = find_dissector("krb4"); - dissector_add_uint("udp.port", UDP_PORT_KRB4, krb4_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_KRB4, krb4_handle); } /* diff --git a/epan/dissectors/packet-kingfisher.c b/epan/dissectors/packet-kingfisher.c index d6cc0f4b1c..a934871f60 100644 --- a/epan/dissectors/packet-kingfisher.c +++ b/epan/dissectors/packet-kingfisher.c @@ -34,12 +34,12 @@ void proto_reg_handoff_kingfisher(void); #define SUPPORT_KINGFISHER_SERIES_2 -#define UDP_PORT_KINGFISHER 4058 #ifdef SUPPORT_KINGFISHER_SERIES_2 #define TCP_PORT_KINGFISHER_RANGE "473,4058" /* 473 not IANA registered */ -#define UDP_PORT_KINGFISHER_OLD 473 +#define UDP_PORT_KINGFISHER_RANGE "473,4058" /* 473 not IANA registered */ #else #define TCP_PORT_KINGFISHER_RANGE "4058" +#define UDP_PORT_KINGFISHER_RANGE "4058" #endif static int proto_kingfisher = -1; @@ -382,15 +382,12 @@ proto_register_kingfisher( void ) void proto_reg_handoff_kingfisher( void ) { - dissector_handle_t kingfisher_handle=NULL; + dissector_handle_t kingfisher_handle; kingfisher_handle = create_dissector_handle(dissect_kingfisher_heur, proto_kingfisher); dissector_add_uint_range_with_preference("tcp.port", TCP_PORT_KINGFISHER_RANGE, kingfisher_handle); - dissector_add_uint("udp.port", UDP_PORT_KINGFISHER, kingfisher_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_KINGFISHER_RANGE, kingfisher_handle); -#ifdef SUPPORT_KINGFISHER_SERIES_2 - dissector_add_uint("udp.port", UDP_PORT_KINGFISHER_OLD, kingfisher_handle); -#endif kingfisher_conv_handle = create_dissector_handle(dissect_kingfisher_conv, proto_kingfisher); } diff --git a/epan/dissectors/packet-kink.c b/epan/dissectors/packet-kink.c index 16fc8fec82..c7cd83928a 100644 --- a/epan/dissectors/packet-kink.c +++ b/epan/dissectors/packet-kink.c @@ -35,7 +35,7 @@ void proto_register_kink(void); void proto_reg_handoff_kink(void); -#define KINK_PORT 57203 +#define KINK_PORT 57203 /* Not IANA registered */ #define KINK_ISAKMP_PAYLOAD_BASE 14 @@ -990,11 +990,11 @@ proto_register_kink(void) { void proto_reg_handoff_kink(void) { - dissector_handle_t kink_handle = NULL; + dissector_handle_t kink_handle; kink_handle = create_dissector_handle(dissect_kink, proto_kink); - dissector_add_uint("udp.port", KINK_PORT, kink_handle); + dissector_add_uint_with_preference("udp.port", KINK_PORT, kink_handle); } diff --git a/epan/dissectors/packet-knet.c b/epan/dissectors/packet-knet.c index ecaa151fa2..8f50dd9c88 100644 --- a/epan/dissectors/packet-knet.c +++ b/epan/dissectors/packet-knet.c @@ -119,7 +119,6 @@ static dissector_handle_t knet_handle_udp; /* Ports used by the dissectors */ static guint32 knet_sctp_port = PORT; /*!< Port used by kNet SCTP */ -static guint32 knet_udp_port = PORT; /*!< Port used by kNet UDP */ static const value_string packettypenames[] = { /*!< Messageid List */ { PINGREQUEST, "Ping Request" }, @@ -756,10 +755,6 @@ proto_register_knet(void) prefs_register_uint_preference(knet_module, "sctp.port", "kNet SCTP Port", "Set the SCTP port for kNet messages", 10, &knet_sctp_port); - - prefs_register_uint_preference(knet_module, "udp.port", "kNet UDP Port", - "Set the UDP port for kNet messages", - 10, &knet_udp_port); } /** @@ -772,24 +767,20 @@ proto_reg_handoff_knet(void) static gboolean initialized = FALSE; static guint current_sctp_port; - static guint current_udp_port; if(!initialized) { dissector_add_uint_with_preference("tcp.port", PORT, knet_handle_tcp); + dissector_add_uint_with_preference("udp.port", PORT, knet_handle_udp); initialized = TRUE; } else { dissector_delete_uint("sctp.port", current_sctp_port, knet_handle_sctp); - dissector_delete_uint("udp.port", current_udp_port, knet_handle_udp); } current_sctp_port = knet_sctp_port; dissector_add_uint("sctp.port", current_sctp_port, knet_handle_sctp); - - current_udp_port = knet_udp_port; - dissector_add_uint("udp.port", current_udp_port, knet_handle_udp); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-kpasswd.c b/epan/dissectors/packet-kpasswd.c index ef434c7ac6..a950b89182 100644 --- a/epan/dissectors/packet-kpasswd.c +++ b/epan/dissectors/packet-kpasswd.c @@ -328,7 +328,7 @@ proto_reg_handoff_kpasswd(void) kpasswd_handle_udp = create_dissector_handle(dissect_kpasswd_udp, proto_kpasswd); kpasswd_handle_tcp = create_dissector_handle(dissect_kpasswd_tcp, proto_kpasswd); - dissector_add_uint("udp.port", UDP_PORT_KPASSWD, kpasswd_handle_udp); + dissector_add_uint_with_preference("udp.port", UDP_PORT_KPASSWD, kpasswd_handle_udp); dissector_add_uint_with_preference("tcp.port", TCP_PORT_KPASSWD, kpasswd_handle_tcp); } diff --git a/epan/dissectors/packet-l2tp.c b/epan/dissectors/packet-l2tp.c index 97efd2e92e..84ab019951 100644 --- a/epan/dissectors/packet-l2tp.c +++ b/epan/dissectors/packet-l2tp.c @@ -3771,7 +3771,7 @@ proto_reg_handoff_l2tp(void) dissector_handle_t atm_oam_llc_handle; l2tp_udp_handle = create_dissector_handle(dissect_l2tp_udp, proto_l2tp); - dissector_add_uint("udp.port", UDP_PORT_L2TP, l2tp_udp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_L2TP, l2tp_udp_handle); l2tp_ip_handle = create_dissector_handle(dissect_l2tp_ip, proto_l2tp); dissector_add_uint("ip.proto", IP_PROTO_L2TP, l2tp_ip_handle); diff --git a/epan/dissectors/packet-laplink.c b/epan/dissectors/packet-laplink.c index 717d7a0804..7e34d59427 100644 --- a/epan/dissectors/packet-laplink.c +++ b/epan/dissectors/packet-laplink.c @@ -239,7 +239,7 @@ proto_reg_handoff_laplink(void) dissector_add_uint_with_preference("tcp.port", TCP_PORT_LAPLINK, laplink_tcp_handle); laplink_udp_handle = create_dissector_handle(dissect_laplink_udp, proto_laplink); - dissector_add_uint("udp.port", UDP_PORT_LAPLINK, laplink_udp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_LAPLINK, laplink_udp_handle); } /* diff --git a/epan/dissectors/packet-lbmr.c b/epan/dissectors/packet-lbmr.c index 0963f6c787..de3e11d894 100644 --- a/epan/dissectors/packet-lbmr.c +++ b/epan/dissectors/packet-lbmr.c @@ -6690,7 +6690,7 @@ void proto_reg_handoff_lbmr(void) if (!already_registered) { lbmr_dissector_handle = create_dissector_handle(dissect_lbmr, proto_lbmr); - dissector_add_for_decode_as("udp.port", lbmr_dissector_handle); + dissector_add_for_decode_as_with_preference("udp.port", lbmr_dissector_handle); heur_dissector_add("udp", test_lbmr_packet, "LBM Topic Resolution over UDP", "lbmr_udp", proto_lbmr, HEURISTIC_ENABLE); } diff --git a/epan/dissectors/packet-lbtrm.c b/epan/dissectors/packet-lbtrm.c index 16bbbf64e8..f201d8b1ec 100644 --- a/epan/dissectors/packet-lbtrm.c +++ b/epan/dissectors/packet-lbtrm.c @@ -1866,7 +1866,7 @@ void proto_reg_handoff_lbtrm(void) if (!already_registered) { lbtrm_dissector_handle = create_dissector_handle(dissect_lbtrm, proto_lbtrm); - dissector_add_for_decode_as("udp.port", lbtrm_dissector_handle); + dissector_add_for_decode_as_with_preference("udp.port", lbtrm_dissector_handle); heur_dissector_add("udp", test_lbtrm_packet, "LBT Reliable Multicast over UDP", "lbtrm_udp", proto_lbtrm, HEURISTIC_ENABLE); lbtrm_tap_handle = register_tap("lbm_lbtrm"); } diff --git a/epan/dissectors/packet-lbtru.c b/epan/dissectors/packet-lbtru.c index 91fc8bea82..4adaa1cb90 100644 --- a/epan/dissectors/packet-lbtru.c +++ b/epan/dissectors/packet-lbtru.c @@ -2004,7 +2004,7 @@ void proto_reg_handoff_lbtru(void) if (!already_registered) { lbtru_dissector_handle = create_dissector_handle(dissect_lbtru, proto_lbtru); - dissector_add_for_decode_as("udp.port", lbtru_dissector_handle); + dissector_add_for_decode_as_with_preference("udp.port", lbtru_dissector_handle); heur_dissector_add("udp", test_lbtru_packet, "LBT Reliable Unicast over UDP", "lbtru_udp", proto_lbtru, HEURISTIC_ENABLE); lbtru_tap_handle = register_tap("lbm_lbtru"); } diff --git a/epan/dissectors/packet-ldap.c b/epan/dissectors/packet-ldap.c index a8398c4f36..17b54f4b22 100644 --- a/epan/dissectors/packet-ldap.c +++ b/epan/dissectors/packet-ldap.c @@ -5795,7 +5795,7 @@ proto_reg_handoff_ldap(void) dissector_handle_t cldap_handle; cldap_handle = create_dissector_handle(dissect_mscldap, proto_cldap); - dissector_add_uint("udp.port", UDP_PORT_CLDAP, cldap_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_CLDAP, cldap_handle); gssapi_handle = find_dissector_add_dependency("gssapi", proto_ldap); gssapi_wrap_handle = find_dissector_add_dependency("gssapi_verf", proto_ldap); diff --git a/epan/dissectors/packet-ldp.c b/epan/dissectors/packet-ldp.c index 721a19a7d2..544025e93f 100644 --- a/epan/dissectors/packet-ldp.c +++ b/epan/dissectors/packet-ldp.c @@ -345,8 +345,6 @@ static expert_field ei_ldp_tlv_fec = EI_INIT; /* desegmentation of LDP over TCP */ static gboolean ldp_desegment = TRUE; -static guint32 global_ldp_udp_port = UDP_PORT_LDP; - /* * The following define all the TLV types I know about * http://www.iana.org/assignments/ldp-namespaces @@ -4275,8 +4273,7 @@ proto_register_ldp(void) module_t *ldp_module; expert_module_t* expert_ldp; - proto_ldp = proto_register_protocol("Label Distribution Protocol", - "LDP", "ldp"); + proto_ldp = proto_register_protocol("Label Distribution Protocol", "LDP", "ldp"); proto_register_field_array(proto_ldp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -4285,12 +4282,7 @@ proto_register_ldp(void) /* Register our configuration options for , particularly our port */ - ldp_module = prefs_register_protocol(proto_ldp, proto_reg_handoff_ldp); - - prefs_register_uint_preference(ldp_module, "udp.port", "LDP UDP Port", - "Set the UDP port for messages (if other" - " than the default of 646)", - 10, &global_ldp_udp_port); + ldp_module = prefs_register_protocol(proto_ldp, NULL); prefs_register_bool_preference(ldp_module, "desegment_ldp_messages", "Reassemble LDP messages spanning multiple TCP segments", @@ -4304,30 +4296,12 @@ proto_register_ldp(void) void proto_reg_handoff_ldp(void) { - static gboolean ldp_prefs_initialized = FALSE; - static dissector_handle_t ldp_tcp_handle, ldp_handle; - static int udp_port; - - if (!ldp_prefs_initialized) { - - ldp_tcp_handle = create_dissector_handle(dissect_ldp_tcp, proto_ldp); - ldp_handle = create_dissector_handle(dissect_ldp, proto_ldp); - dissector_add_uint_with_preference("tcp.port", TCP_PORT_LDP, ldp_tcp_handle); - - ldp_prefs_initialized = TRUE; - - } - else { - - dissector_delete_uint("udp.port", udp_port, ldp_handle); - - } - - /* Set our port number for future use */ - udp_port = global_ldp_udp_port; - - dissector_add_uint("udp.port", global_ldp_udp_port, ldp_handle); + dissector_handle_t ldp_tcp_handle, ldp_handle; + ldp_tcp_handle = create_dissector_handle(dissect_ldp_tcp, proto_ldp); + ldp_handle = create_dissector_handle(dissect_ldp, proto_ldp); + dissector_add_uint_with_preference("tcp.port", TCP_PORT_LDP, ldp_tcp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_LDP, ldp_handle); } /* diff --git a/epan/dissectors/packet-ldss.c b/epan/dissectors/packet-ldss.c index cb8d87d234..56f33188fb 100644 --- a/epan/dissectors/packet-ldss.c +++ b/epan/dissectors/packet-ldss.c @@ -40,7 +40,6 @@ #include #include -#include #include #include #include "packet-tcp.h" @@ -204,9 +203,6 @@ static expert_field ei_ldss_unrecognized_line = EI_INIT; static dissector_handle_t ldss_udp_handle; static dissector_handle_t ldss_tcp_handle; -/* Global variables associated with the preferences for ldss */ -static guint global_udp_port_ldss = UDP_PORT_LDSS; - /* Avoid creating conversations and data twice */ static unsigned int highest_num_seen = 0; @@ -957,7 +953,6 @@ proto_register_ldss (void) { { &ei_ldss_unrecognized_line, { "ldss.unrecognized_line", PI_PROTOCOL, PI_WARN, "Unrecognized line ignored", EXPFILL }}, }; - module_t *ldss_module; expert_module_t* expert_ldss; proto_ldss = proto_register_protocol("Local Download Sharing Service", "LDSS", "ldss"); @@ -966,14 +961,6 @@ proto_register_ldss (void) { expert_ldss = expert_register_protocol(proto_ldss); expert_register_field_array(expert_ldss, ei, array_length(ei)); - ldss_module = prefs_register_protocol( proto_ldss, proto_reg_handoff_ldss); - prefs_register_uint_preference( ldss_module, "udp_port", - "LDSS UDP Port", - "The UDP port on which " - "Local Download Sharing Service " - "broadcasts will be sent", - 10, &global_udp_port_ldss); - register_init_routine(&ldss_init_protocol); } @@ -982,19 +969,9 @@ proto_register_ldss (void) { void proto_reg_handoff_ldss (void) { - static guint saved_udp_port_ldss; - static gboolean ldss_initialized = FALSE; - - if (!ldss_initialized) { - ldss_udp_handle = create_dissector_handle(dissect_ldss, proto_ldss); - ldss_tcp_handle = create_dissector_handle(dissect_ldss_transfer, proto_ldss); - ldss_initialized = TRUE; - } - else { - dissector_delete_uint("udp.port", saved_udp_port_ldss, ldss_udp_handle); - } - dissector_add_uint("udp.port", global_udp_port_ldss, ldss_udp_handle); - saved_udp_port_ldss = global_udp_port_ldss; + ldss_udp_handle = create_dissector_handle(dissect_ldss, proto_ldss); + ldss_tcp_handle = create_dissector_handle(dissect_ldss_transfer, proto_ldss); + dissector_add_uint_with_preference("udp.port", UDP_PORT_LDSS, ldss_udp_handle); } /* diff --git a/epan/dissectors/packet-lge_monitor.c b/epan/dissectors/packet-lge_monitor.c index f51f0fef7f..4ac982c81f 100644 --- a/epan/dissectors/packet-lge_monitor.c +++ b/epan/dissectors/packet-lge_monitor.c @@ -26,7 +26,6 @@ #include "config.h" #include -#include void proto_reg_handoff_lge_monitor(void); void proto_register_lge_monitor(void); @@ -43,7 +42,6 @@ static int hf_lge_monitor_data = -1; static int ett_lge_monitor = -1; static int ett_lge_header = -1; -static guint LGEMonitorUDPPort = 0; static dissector_handle_t mtp3_handle, m3ua_handle, sccp_handle, sctp_handle; static const value_string lge_monitor_dir_vals[] = { @@ -116,37 +114,20 @@ dissect_lge_monitor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d void proto_reg_handoff_lge_monitor(void) { - static dissector_handle_t lge_monitor_handle; - static guint saved_udp_port; - static gboolean lge_monitor_prefs_initialized = FALSE; + dissector_handle_t lge_monitor_handle; - if (!lge_monitor_prefs_initialized) { - lge_monitor_handle = create_dissector_handle(dissect_lge_monitor, proto_lge_monitor); - dissector_add_for_decode_as("udp.port", lge_monitor_handle); - mtp3_handle = find_dissector_add_dependency("mtp3", proto_lge_monitor); - m3ua_handle = find_dissector_add_dependency("m3ua", proto_lge_monitor); - sccp_handle = find_dissector_add_dependency("sccp", proto_lge_monitor); - sctp_handle = find_dissector_add_dependency("sctp", proto_lge_monitor); - lge_monitor_prefs_initialized = TRUE; - } - else { - if (saved_udp_port != 0) { - dissector_delete_uint("udp.port", saved_udp_port, lge_monitor_handle); - } - } - - if (LGEMonitorUDPPort != 0) { - dissector_add_uint("udp.port", LGEMonitorUDPPort, lge_monitor_handle); - } - saved_udp_port = LGEMonitorUDPPort; + lge_monitor_handle = create_dissector_handle(dissect_lge_monitor, proto_lge_monitor); + dissector_add_for_decode_as_with_preference("udp.port", lge_monitor_handle); + mtp3_handle = find_dissector_add_dependency("mtp3", proto_lge_monitor); + m3ua_handle = find_dissector_add_dependency("m3ua", proto_lge_monitor); + sccp_handle = find_dissector_add_dependency("sccp", proto_lge_monitor); + sctp_handle = find_dissector_add_dependency("sctp", proto_lge_monitor); } void proto_register_lge_monitor(void) { - module_t *lge_monitor_module; - /* Setup list of header fields */ static hf_register_info hf[] = { { &hf_lge_monitor_dir, @@ -183,17 +164,6 @@ proto_register_lge_monitor(void) /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_lge_monitor, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - /* Register a configuration option for port */ - - - lge_monitor_module = prefs_register_protocol(proto_lge_monitor, proto_reg_handoff_lge_monitor); - - prefs_register_uint_preference(lge_monitor_module, "udp.port", - "LGE Monitor UDP Port", - "Set UDP port for LGE Monitor messages", - 10, - &LGEMonitorUDPPort); - } /* diff --git a/epan/dissectors/packet-lisp-data.c b/epan/dissectors/packet-lisp-data.c index 28669ade6e..ff9e831c91 100644 --- a/epan/dissectors/packet-lisp-data.c +++ b/epan/dissectors/packet-lisp-data.c @@ -289,7 +289,7 @@ proto_reg_handoff_lisp_data(void) lisp_data_handle = create_dissector_handle(dissect_lisp_data, proto_lisp_data); - dissector_add_uint("udp.port", LISP_DATA_PORT, lisp_data_handle); + dissector_add_uint_with_preference("udp.port", LISP_DATA_PORT, lisp_data_handle); ipv4_handle = find_dissector_add_dependency("ip", proto_lisp_data); ipv6_handle = find_dissector_add_dependency("ipv6", proto_lisp_data); lisp_handle = find_dissector_add_dependency("lisp", proto_lisp_data); diff --git a/epan/dissectors/packet-lisp.c b/epan/dissectors/packet-lisp.c index 7ac5bf292c..1eae61d85f 100644 --- a/epan/dissectors/packet-lisp.c +++ b/epan/dissectors/packet-lisp.c @@ -3623,7 +3623,7 @@ proto_register_lisp(void) void proto_reg_handoff_lisp(void) { - dissector_add_uint("udp.port", LISP_CONTROL_PORT, lisp_handle); + dissector_add_uint_with_preference("udp.port", LISP_CONTROL_PORT, lisp_handle); ipv4_handle = find_dissector_add_dependency("ip", proto_lisp); ipv6_handle = find_dissector_add_dependency("ipv6", proto_lisp); } diff --git a/epan/dissectors/packet-llc.c b/epan/dissectors/packet-llc.c index 8b7db4b1cb..17a86b7565 100644 --- a/epan/dissectors/packet-llc.c +++ b/epan/dissectors/packet-llc.c @@ -47,11 +47,7 @@ void proto_register_basicxid(void); void proto_register_llc(void); void proto_reg_handoff_llc(void); -#define UDP_PORT_LLC1 12000 -#define UDP_PORT_LLC2 12001 -#define UDP_PORT_LLC3 12002 -#define UDP_PORT_LLC4 12003 -#define UDP_PORT_LLC5 12004 +#define UDP_PORT_LLC_RANGE "12000-12004" static int proto_llc = -1; static int hf_llc_dsap = -1; @@ -885,11 +881,7 @@ proto_reg_handoff_llc(void) /* RFC 2043 */ dissector_add_uint("ppp.protocol", PPP_LLC, llc_handle); /* RFC 2353 */ - dissector_add_uint("udp.port", UDP_PORT_LLC1, llc_handle); - dissector_add_uint("udp.port", UDP_PORT_LLC2, llc_handle); - dissector_add_uint("udp.port", UDP_PORT_LLC3, llc_handle); - dissector_add_uint("udp.port", UDP_PORT_LLC4, llc_handle); - dissector_add_uint("udp.port", UDP_PORT_LLC5, llc_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_LLC_RANGE, llc_handle); /* IP-over-FC when we have the full FC frame */ dissector_add_uint("fc.ftype", FC_FTYPE_IP, llc_handle); diff --git a/epan/dissectors/packet-lmp.c b/epan/dissectors/packet-lmp.c index c1d3942203..5c90e636c4 100644 --- a/epan/dissectors/packet-lmp.c +++ b/epan/dissectors/packet-lmp.c @@ -58,8 +58,6 @@ void proto_reg_handoff_lmp(void); static int proto_lmp = -1; #define UDP_PORT_LMP_DEFAULT 701 -static guint lmp_udp_port = UDP_PORT_LMP_DEFAULT; -static guint lmp_udp_port_config = UDP_PORT_LMP_DEFAULT; static gboolean lmp_checksum_config = FALSE; @@ -1874,31 +1872,17 @@ dissect_lmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) return tvb_captured_length(tvb); } -static void -lmp_prefs_applied (void) -{ - if (lmp_udp_port != lmp_udp_port_config) { - dissector_delete_uint("udp.port", lmp_udp_port, lmp_handle); - lmp_udp_port = lmp_udp_port_config; - dissector_add_uint("udp.port", lmp_udp_port, lmp_handle); - } -} - static void register_lmp_prefs (void) { module_t *lmp_module; - lmp_module = prefs_register_protocol(proto_lmp, lmp_prefs_applied); + lmp_module = prefs_register_protocol(proto_lmp, NULL); - prefs_register_uint_preference( - lmp_module, "udp_port", "LMP UDP Port", - "UDP port number to use for LMP", 10, &lmp_udp_port_config); prefs_register_bool_preference( lmp_module, "checksum", "LMP checksum field", "Whether LMP contains a checksum which can be checked", &lmp_checksum_config); - prefs_register_obsolete_preference( - lmp_module, "version"); + prefs_register_obsolete_preference(lmp_module, "version"); } void @@ -2635,8 +2619,7 @@ proto_register_lmp(void) } - proto_lmp = proto_register_protocol("Link Management Protocol (LMP)", - "LMP", "lmp"); + proto_lmp = proto_register_protocol("Link Management Protocol (LMP)", "LMP", "lmp"); expert_lmp = expert_register_protocol(proto_lmp); expert_register_field_array(expert_lmp, ei, array_length(ei)); @@ -2651,7 +2634,7 @@ void proto_reg_handoff_lmp(void) { lmp_handle = create_dissector_handle(dissect_lmp, proto_lmp); - dissector_add_uint("udp.port", lmp_udp_port, lmp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_LMP_DEFAULT, lmp_handle); } /* diff --git a/epan/dissectors/packet-lsc.c b/epan/dissectors/packet-lsc.c index 969118aead..c0780dfbed 100644 --- a/epan/dissectors/packet-lsc.c +++ b/epan/dissectors/packet-lsc.c @@ -24,7 +24,6 @@ #include "config.h" #include -#include #include "packet-tcp.h" @@ -123,9 +122,6 @@ static int hf_lsc_scale_num = -1; static int hf_lsc_scale_denom = -1; static int hf_lsc_mode = -1; -/* Preferences */ -static guint global_lsc_port = 0; - /* Initialize the subtree pointers */ static gint ett_lsc = -1; @@ -340,8 +336,6 @@ dissect_lsc_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) void proto_register_lsc(void) { - module_t *lsc_module; - /* Setup list of header fields */ static hf_register_info hf[] = { { &hf_lsc_version, @@ -412,42 +406,18 @@ proto_register_lsc(void) /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_lsc, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - /* Register preferences module */ - lsc_module = prefs_register_protocol(proto_lsc, proto_reg_handoff_lsc); - - /* Register preferences */ - prefs_register_uint_preference(lsc_module, "port", - "LSC Port", - "Set the TCP or UDP port for Pegasus LSC messages", - 10, &global_lsc_port); } void proto_reg_handoff_lsc(void) { - static gboolean initialized = FALSE; - static dissector_handle_t lsc_udp_handle; - static dissector_handle_t lsc_tcp_handle; - static guint saved_lsc_port; + dissector_handle_t lsc_udp_handle; + dissector_handle_t lsc_tcp_handle; - if (!initialized) { - lsc_udp_handle = create_dissector_handle(dissect_lsc_udp, proto_lsc); - lsc_tcp_handle = create_dissector_handle(dissect_lsc_tcp, proto_lsc); - dissector_add_for_decode_as("udp.port", lsc_udp_handle); - dissector_add_for_decode_as_with_preference("tcp.port", lsc_tcp_handle); - initialized = TRUE; - } else { - if (saved_lsc_port != 0) { - dissector_delete_uint("udp.port", saved_lsc_port, lsc_udp_handle); - } - } - - /* Set the port number */ - if (global_lsc_port != 0) { - dissector_add_uint("udp.port", global_lsc_port, lsc_udp_handle); - } - saved_lsc_port = global_lsc_port; + lsc_udp_handle = create_dissector_handle(dissect_lsc_udp, proto_lsc); + lsc_tcp_handle = create_dissector_handle(dissect_lsc_tcp, proto_lsc); + dissector_add_for_decode_as_with_preference("udp.port", lsc_udp_handle); + dissector_add_for_decode_as_with_preference("tcp.port", lsc_tcp_handle); } /* diff --git a/epan/dissectors/packet-lte-rrc.c b/epan/dissectors/packet-lte-rrc.c index 827c5ba4c3..f5f5959320 100644 --- a/epan/dissectors/packet-lte-rrc.c +++ b/epan/dissectors/packet-lte-rrc.c @@ -91299,7 +91299,7 @@ proto_reg_handoff_lte_rrc(void) static dissector_handle_t lte_rrc_dl_ccch_handle; lte_rrc_dl_ccch_handle = find_dissector("lte_rrc.dl_ccch"); - dissector_add_for_decode_as("udp.port", lte_rrc_dl_ccch_handle); + dissector_add_for_decode_as_with_preference("udp.port", lte_rrc_dl_ccch_handle); nas_eps_handle = find_dissector("nas-eps"); rrc_irat_ho_to_utran_cmd_handle = find_dissector("rrc.irat.ho_to_utran_cmd"); rrc_sys_info_cont_handle = find_dissector("rrc.sysinfo.cont"); diff --git a/epan/dissectors/packet-ltp.c b/epan/dissectors/packet-ltp.c index 52b85f789d..3b4c88ff17 100644 --- a/epan/dissectors/packet-ltp.c +++ b/epan/dissectors/packet-ltp.c @@ -43,7 +43,6 @@ #include "config.h" #include -#include #include #include @@ -187,8 +186,7 @@ static const value_string client_service_id_info[] = { {0, NULL} }; - -static guint ltp_port = 1113; +#define LTP_PORT 1113 /* Initialize the subtree pointers */ static gint ett_ltp = -1; @@ -837,8 +835,6 @@ ltp_defragment_init(void) { void proto_register_ltp(void) { - module_t *ltp_module; - static hf_register_info hf[] = { {&hf_ltp_version, {"LTP Version","ltp.version", @@ -1032,43 +1028,26 @@ proto_register_ltp(void) expert_module_t* expert_ltp; /* Register the protocol name and description */ - proto_ltp = proto_register_protocol("Licklider Transmission Protocol", - "LTP", "ltp"); + proto_ltp = proto_register_protocol("Licklider Transmission Protocol", "LTP", "ltp"); proto_register_field_array(proto_ltp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_ltp = expert_register_protocol(proto_ltp); expert_register_field_array(expert_ltp, ei, array_length(ei)); - ltp_module = prefs_register_protocol(proto_ltp, proto_reg_handoff_ltp); - - prefs_register_obsolete_preference(ltp_module, "udp.port"); - prefs_register_uint_preference(ltp_module, "port", "LTP Port", - "The UDP or DCCP port to accept LTP Connections", - 10, <p_port); register_init_routine(ltp_defragment_init); } void proto_reg_handoff_ltp(void) { - static gboolean initialized = FALSE; - static dissector_handle_t ltp_handle; - static int currentPort; + dissector_handle_t ltp_handle; - if (!initialized) { - ltp_handle = create_dissector_handle(dissect_ltp, proto_ltp); - bundle_handle = find_dissector_add_dependency("bundle", proto_ltp); - initialized = TRUE; - } else { - dissector_delete_uint("udp.port", currentPort, ltp_handle); - dissector_delete_uint("dccp.port", currentPort, ltp_handle); - } + ltp_handle = create_dissector_handle(dissect_ltp, proto_ltp); + bundle_handle = find_dissector_add_dependency("bundle", proto_ltp); - currentPort = ltp_port; - - dissector_add_uint("udp.port", currentPort, ltp_handle); - dissector_add_uint("dccp.port", currentPort, ltp_handle); + dissector_add_uint_with_preference("udp.port", LTP_PORT, ltp_handle); + dissector_add_uint_with_preference("dccp.port", LTP_PORT, ltp_handle); } /* diff --git a/epan/dissectors/packet-lwapp.c b/epan/dissectors/packet-lwapp.c index 09007fde95..ee315b3bd1 100644 --- a/epan/dissectors/packet-lwapp.c +++ b/epan/dissectors/packet-lwapp.c @@ -32,6 +32,9 @@ void proto_register_lwapp(void); void proto_reg_handoff_lwapp(void); +#define LWAPP_8023_PORT 12220 /* Not IANA registered */ +#define LWAPP_UDP_PORT_RANGE "12222-12223" /* Not IANA registered */ + #define LWAPP_FLAGS_T 0x04 #define LWAPP_FLAGS_F 0x02 #define LWAPP_FLAGS_FT 0x01 @@ -573,12 +576,10 @@ proto_reg_handoff_lwapp(void) */ /* Obsoleted LWAPP via encapsulated 802.3 over UDP */ - - dissector_add_uint("udp.port", 12220, lwapp_l3_handle); + dissector_add_uint_with_preference("udp.port", LWAPP_8023_PORT, lwapp_l3_handle); /* new-style lwapp directly over UDP: L3-lwapp*/ - dissector_add_uint("udp.port", 12222, lwapp_handle); - dissector_add_uint("udp.port", 12223, lwapp_handle); + dissector_add_uint_range_with_preference("udp.port", LWAPP_UDP_PORT_RANGE, lwapp_handle); /* Lwapp over L2 */ dissector_add_uint("ethertype", 0x88bb, lwapp_handle); diff --git a/epan/dissectors/packet-lwres.c b/epan/dissectors/packet-lwres.c index e9d618b257..2ea66a1aff 100644 --- a/epan/dissectors/packet-lwres.c +++ b/epan/dissectors/packet-lwres.c @@ -26,7 +26,6 @@ #include -#include #include #include "packet-dns.h" @@ -180,10 +179,7 @@ static int ett_ns_rec_item = -1; -#define LWRES_UDP_PORT 921 - -static guint global_lwres_port = LWRES_UDP_PORT; - +#define LWRES_UDP_PORT 921 /* Not IANA registered */ /* Define the lwres proto */ static int proto_lwres = -1; @@ -1129,44 +1125,20 @@ proto_register_lwres(void) &ett_noop, }; - - module_t *lwres_module; - - proto_lwres = proto_register_protocol("Light Weight DNS RESolver (BIND9)", - "LWRES", "lwres"); + proto_lwres = proto_register_protocol("Light Weight DNS RESolver (BIND9)", "LWRES", "lwres"); proto_register_field_array(proto_lwres, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - lwres_module = prefs_register_protocol(proto_lwres, proto_reg_handoff_lwres); - - prefs_register_uint_preference(lwres_module, "udp.lwres_port", - "lwres listener UDP Port", - "Set the UDP port for lwres daemon" - "(if other than the default of 921)", - 10, &global_lwres_port); - } /* The registration hand-off routine */ void proto_reg_handoff_lwres(void) { - static gboolean lwres_prefs_initialized = FALSE; - static dissector_handle_t lwres_handle; - static guint lwres_port; - - if(!lwres_prefs_initialized) { - lwres_handle = create_dissector_handle(dissect_lwres, proto_lwres); - lwres_prefs_initialized = TRUE; - } - else { - dissector_delete_uint("udp.port", lwres_port, lwres_handle); - } - - dissector_add_uint("udp.port", global_lwres_port, lwres_handle); - lwres_port = global_lwres_port; + dissector_handle_t lwres_handle; + lwres_handle = create_dissector_handle(dissect_lwres, proto_lwres); + dissector_add_uint_with_preference("udp.port", LWRES_UDP_PORT, lwres_handle); } /* diff --git a/epan/dissectors/packet-mactelnet.c b/epan/dissectors/packet-mactelnet.c index 262885c4dd..8e1670f1b3 100644 --- a/epan/dissectors/packet-mactelnet.c +++ b/epan/dissectors/packet-mactelnet.c @@ -29,7 +29,6 @@ #include "config.h" #include -#include #include void proto_register_mactelnet(void); @@ -57,8 +56,7 @@ static gint hf_mactelnet_control_terminal = -1; static gint hf_mactelnet_control_width = -1; static gint hf_mactelnet_control_height = -1; -/* Global port preference */ -static guint global_mactelnet_port = 20561; +#define MACTELNET_UDP_PORT 20561 /* Not IANA registered */ /* Control packet definition */ static const guint32 control_packet = 0x563412FF; @@ -373,38 +371,21 @@ proto_register_mactelnet(void) &ett_mactelnet_control, }; - module_t *mactelnet_module; - /* Register the protocol name and description */ proto_mactelnet = proto_register_protocol ("MikroTik MAC-Telnet Protocol", PROTO_TAG_MACTELNET, "mactelnet"); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array (proto_mactelnet, hf, array_length (hf)); proto_register_subtree_array (ett, array_length (ett)); - - mactelnet_module = prefs_register_protocol(proto_mactelnet, proto_reg_handoff_mactelnet); - - prefs_register_uint_preference(mactelnet_module, "port", "UDP Port", - "MAC-Telnet UDP port if other than the default", - 10, &global_mactelnet_port); } void proto_reg_handoff_mactelnet(void) { - static gboolean initialized = FALSE; - static guint current_port; - static dissector_handle_t mactelnet_handle; + dissector_handle_t mactelnet_handle; - if (!initialized) { - mactelnet_handle = create_dissector_handle(dissect_mactelnet, proto_mactelnet); - initialized = TRUE; - } else { - dissector_delete_uint("udp.port", current_port, mactelnet_handle); - } - - current_port = global_mactelnet_port; - dissector_add_uint("udp.port", current_port, mactelnet_handle); + mactelnet_handle = create_dissector_handle(dissect_mactelnet, proto_mactelnet); + dissector_add_uint_with_preference("udp.port", MACTELNET_UDP_PORT, mactelnet_handle); } /* diff --git a/epan/dissectors/packet-manolito.c b/epan/dissectors/packet-manolito.c index fecbcecb25..17026e2606 100644 --- a/epan/dissectors/packet-manolito.c +++ b/epan/dissectors/packet-manolito.c @@ -31,6 +31,8 @@ void proto_register_manolito(void); void proto_reg_handoff_manolito(void); +#define MANOLITO_PORT 41170 /* Not IANA registered */ + static int proto_manolito = -1; static int hf_manolito_checksum = -1; @@ -294,9 +296,8 @@ proto_reg_handoff_manolito(void) { dissector_handle_t manolito_handle; - manolito_handle = create_dissector_handle(dissect_manolito, - proto_manolito); - dissector_add_uint("udp.port", 41170, manolito_handle); + manolito_handle = create_dissector_handle(dissect_manolito, proto_manolito); + dissector_add_uint_with_preference("udp.port", MANOLITO_PORT, manolito_handle); } /* diff --git a/epan/dissectors/packet-mausb.c b/epan/dissectors/packet-mausb.c index 00a450f173..52ff45ae85 100644 --- a/epan/dissectors/packet-mausb.c +++ b/epan/dissectors/packet-mausb.c @@ -27,7 +27,6 @@ #include "config.h" #include -#include #include #include #include "packet-tcp.h" @@ -673,9 +672,6 @@ static guint mausb_get_pkt_len(packet_info *pinfo _U_, tvbuff_t *tvb, return tvb_get_letohs(tvb, offset + 2); } -/* Global Port Preference */ -static unsigned int mausb_udp_port_pref = 0; - /* Initialize the subtree pointers */ static gint ett_mausb = -1; static gint ett_mausb_flags = -1; @@ -2249,12 +2245,10 @@ proto_register_mausb(void) }, }; - module_t *mausb_module; expert_module_t* expert_mausb; /* Register the protocol name and description */ - proto_mausb = proto_register_protocol("Media Agnostic USB", - "MAUSB", "mausb"); + proto_mausb = proto_register_protocol("Media Agnostic USB", "MAUSB", "mausb"); /* Required function calls to register the header fields and subtrees */ proto_register_field_array(proto_mausb, hf, array_length(hf)); @@ -2267,45 +2261,23 @@ proto_register_mausb(void) expert_mausb = expert_register_protocol(proto_mausb); expert_register_field_array(expert_mausb, ei, array_length(ei)); - /* Register Protocol preferences */ - mausb_module = prefs_register_protocol(proto_mausb, proto_reg_handoff_mausb); - - /* Register UDP port preference */ - prefs_register_uint_preference(mausb_module, "udp.port", "MAUSB UDP Port", - "Set the port for Media Agnostic Packets", - 10, &mausb_udp_port_pref); - llc_add_oui(OUI_WFA, "llc.wfa_pid", "LLC WFA OUI PID", oui_hf, proto_mausb); } void proto_reg_handoff_mausb(void) { - static gboolean initialized = FALSE; - static dissector_handle_t mausb_tcp_handle; - static dissector_handle_t mausb_pkt_handle; - static guint saved_mausb_udp_port_pref; + dissector_handle_t mausb_tcp_handle; + dissector_handle_t mausb_pkt_handle; - if (!initialized) { - /* only initialize once */ - mausb_tcp_handle = create_dissector_handle(dissect_mausb, - proto_mausb); + mausb_tcp_handle = create_dissector_handle(dissect_mausb, proto_mausb); - mausb_pkt_handle = create_dissector_handle(dissect_mausb_pkt, - proto_mausb); + mausb_pkt_handle = create_dissector_handle(dissect_mausb_pkt, proto_mausb); - dissector_add_uint("llc.wfa_pid", PID_MAUSB, mausb_pkt_handle); - initialized = TRUE; + dissector_add_uint("llc.wfa_pid", PID_MAUSB, mausb_pkt_handle); - dissector_add_uint_range_with_preference("tcp.port", "", mausb_tcp_handle); - } else { - /* if we have already been initialized */ - dissector_delete_uint("udp.port", saved_mausb_udp_port_pref, mausb_pkt_handle); - } - - saved_mausb_udp_port_pref = mausb_udp_port_pref; - - dissector_add_uint("udp.port", mausb_udp_port_pref, mausb_pkt_handle); + dissector_add_uint_range_with_preference("tcp.port", "", mausb_tcp_handle); + dissector_add_for_decode_as_with_preference("udp.port", mausb_pkt_handle); } /* diff --git a/epan/dissectors/packet-mcpe.c b/epan/dissectors/packet-mcpe.c index 1c486c73a6..1f99be9104 100644 --- a/epan/dissectors/packet-mcpe.c +++ b/epan/dissectors/packet-mcpe.c @@ -42,7 +42,7 @@ * http://wiki.vg/Pocket_Edition_Protocol_Documentation */ -#define MCPE_UDP_PORT_DEFAULT 19132 +#define MCPE_UDP_PORT_DEFAULT 19132 /* Not IANA registered */ static guint mcpe_udp_port_requested = MCPE_UDP_PORT_DEFAULT; static int proto_mcpe = -1; @@ -673,11 +673,7 @@ proto_register_mcpe(void) /* * Register the protocol with wireshark. */ - proto_mcpe = proto_register_protocol ( - "Minecraft Pocket Edition", /* name */ - "MCPE", /* short name */ - "mcpe" /* abbrev */ - ); + proto_mcpe = proto_register_protocol ("Minecraft Pocket Edition", "MCPE", "mcpe"); /* * Register expert support. diff --git a/epan/dissectors/packet-megaco.c b/epan/dissectors/packet-megaco.c index 96c96017cc..19a640fd24 100644 --- a/epan/dissectors/packet-megaco.c +++ b/epan/dissectors/packet-megaco.c @@ -189,7 +189,6 @@ static ws_mempbrk_pattern pbrk_braces; * decode. */ static guint global_megaco_txt_sctp_port = PORT_MEGACO_TXT; -static guint global_megaco_txt_udp_port = PORT_MEGACO_TXT; #if 0 static guint global_megaco_bin_sctp_port = PORT_MEGACO_BIN; static guint global_megaco_bin_tcp_port = PORT_MEGACO_BIN; @@ -3792,11 +3791,6 @@ proto_register_megaco(void) "Set the SCTP port for MEGACO text messages", 10, &global_megaco_txt_sctp_port); - prefs_register_uint_preference(megaco_module, "udp.txt_port", - "MEGACO Text UDP Port", - "Set the UDP port for MEGACO text messages", - 10, &global_megaco_txt_udp_port); - #if 0 prefs_register_uint_preference(megaco_module, "sctp.bin_port", "MEGACO Binary SCTP Port", @@ -3856,7 +3850,6 @@ proto_reg_handoff_megaco(void) * the user changes port from the gui. */ static guint txt_sctp_port; - static guint txt_udp_port; #if 0 static guint bin_sctp_port; static guint bin_tcp_port; @@ -3874,21 +3867,19 @@ proto_reg_handoff_megaco(void) megaco_text_tcp_handle = create_dissector_handle(dissect_megaco_text_tcp, proto_megaco); dissector_add_uint_with_preference("tcp.port", PORT_MEGACO_TXT, megaco_text_tcp_handle); + dissector_add_uint_with_preference("udp.port", PORT_MEGACO_TXT, megaco_text_handle); dissector_add_uint("sctp.ppi", H248_PAYLOAD_PROTOCOL_ID, megaco_text_handle); megaco_prefs_initialized = TRUE; } else { dissector_delete_uint("sctp.port", txt_sctp_port, megaco_text_handle); - dissector_delete_uint("udp.port", txt_udp_port, megaco_text_handle); } /* Set our port number for future use */ txt_sctp_port = global_megaco_txt_sctp_port; - txt_udp_port = global_megaco_txt_udp_port; dissector_add_uint("sctp.port", global_megaco_txt_sctp_port, megaco_text_handle); - dissector_add_uint("udp.port", global_megaco_txt_udp_port, megaco_text_handle); exported_pdu_tap = find_tap_id(EXPORT_PDU_TAP_NAME_LAYER_7); diff --git a/epan/dissectors/packet-memcache.c b/epan/dissectors/packet-memcache.c index 66c5e4559d..3e61cbab18 100644 --- a/epan/dissectors/packet-memcache.c +++ b/epan/dissectors/packet-memcache.c @@ -104,7 +104,6 @@ void proto_reg_handoff_memcache(void); static int proto_memcache = -1; -static range_t *memcache_udp_port_range = NULL; static dissector_handle_t memcache_tcp_handle; static dissector_handle_t memcache_udp_handle; @@ -2121,7 +2120,7 @@ proto_register_memcache (void) expert_register_field_array(expert_memcache, ei, array_length(ei)); /* Register our configuration options */ - memcache_module = prefs_register_protocol (proto_memcache, proto_reg_handoff_memcache); + memcache_module = prefs_register_protocol (proto_memcache, NULL); prefs_register_bool_preference (memcache_module, "desegment_headers", "Reassemble MEMCACHE headers spanning multiple TCP segments", @@ -2138,27 +2137,14 @@ 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_udp_port_range, MEMCACHE_DEFAULT_RANGE, 65535); - - prefs_register_range_preference(memcache_module, "udp.ports", \ - "MEMCACHE UDP Port range", \ - "MEMCACHE UDP Port range", \ - &memcache_udp_port_range, \ - 65535); } /* Register the tcp and udp memcache dissectors. */ void proto_reg_handoff_memcache (void) { - static range_t *orig_memcache_udp_port_range = NULL; - - g_free(orig_memcache_udp_port_range); - - orig_memcache_udp_port_range = range_copy(memcache_udp_port_range); dissector_add_uint_range_with_preference("tcp.port", MEMCACHE_DEFAULT_RANGE, memcache_tcp_handle); - dissector_add_uint_range("udp.port", orig_memcache_udp_port_range, memcache_udp_handle); + dissector_add_uint_range_with_preference("udp.port", MEMCACHE_DEFAULT_RANGE, memcache_udp_handle); } /* diff --git a/epan/dissectors/packet-mih.c b/epan/dissectors/packet-mih.c index c5c885115b..daa5984343 100644 --- a/epan/dissectors/packet-mih.c +++ b/epan/dissectors/packet-mih.c @@ -4871,7 +4871,7 @@ void proto_reg_handoff_mih(void) mih_handle = create_dissector_handle(dissect_mih, proto_mih); /*Layer 3 handle*/ - dissector_add_uint("udp.port", MIH_PORT, mih_handle); + dissector_add_uint_with_preference("udp.port", MIH_PORT, mih_handle); dissector_add_uint_with_preference("tcp.port", MIH_PORT, mih_handle); /*Layer 2 handle*/ diff --git a/epan/dissectors/packet-mikey.c b/epan/dissectors/packet-mikey.c index abb6693982..900793dc6c 100644 --- a/epan/dissectors/packet-mikey.c +++ b/epan/dissectors/packet-mikey.c @@ -38,7 +38,6 @@ #include "config.h" #include -#include #include #include #include "packet-x509af.h" @@ -47,7 +46,6 @@ void proto_register_mikey(void); void proto_reg_handoff_mikey(void); #define PORT_MIKEY 2269 -static guint global_mikey_udp_port = PORT_MIKEY; static const value_string on_off_vals[] = { { 0, "Off" }, @@ -1835,44 +1833,23 @@ proto_register_mikey(void) &ett_mikey_enc_data }; - module_t *mikey_module; - /* Register the protocol name and description */ - proto_mikey = proto_register_protocol("Multimedia Internet KEYing", - "MIKEY", "mikey"); + proto_mikey = proto_register_protocol("Multimedia Internet KEYing", "MIKEY", "mikey"); mikey_handle = register_dissector("mikey", dissect_mikey, proto_mikey); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_mikey, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - /* Register our configuration options */ - mikey_module = prefs_register_protocol(proto_mikey, proto_reg_handoff_mikey); - - prefs_register_uint_preference(mikey_module, "udp.port", "MIKEY UDP Port", - "Set the port for MIKEY messages (if other than the default of 2269)", - 10, &global_mikey_udp_port); } void proto_reg_handoff_mikey(void) { - static guint mikey_udp_port; - static gboolean inited = FALSE; - - if (!inited) { - dissector_add_string("key_mgmt", "mikey", mikey_handle); - dissector_add_uint_with_preference("tcp.port", PORT_MIKEY, mikey_handle); - inited = TRUE; - } else { - dissector_delete_uint("udp.port", mikey_udp_port, mikey_handle); - } - - dissector_add_uint("udp.port", global_mikey_udp_port, mikey_handle); - - mikey_udp_port = global_mikey_udp_port; + dissector_add_string("key_mgmt", "mikey", mikey_handle); + dissector_add_uint_with_preference("tcp.port", PORT_MIKEY, mikey_handle); + dissector_add_uint_with_preference("udp.port", PORT_MIKEY, mikey_handle); } /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-mint.c b/epan/dissectors/packet-mint.c index 32cc2d2f4f..f2cc30dbba 100644 --- a/epan/dissectors/packet-mint.c +++ b/epan/dissectors/packet-mint.c @@ -54,6 +54,7 @@ void proto_reg_handoff_mint(void); #define PORT_MINT_CONTROL_TUNNEL 24576 /* 0x6001 */ #define PORT_MINT_DATA_TUNNEL 24577 +#define PORT_MINT_RANGE "24576-24577" static dissector_handle_t eth_handle; @@ -736,8 +737,7 @@ proto_register_mint(void) void proto_reg_handoff_mint(void) { - dissector_add_uint("udp.port", PORT_MINT_CONTROL_TUNNEL, mint_control_handle); - dissector_add_uint("udp.port", PORT_MINT_DATA_TUNNEL, mint_data_handle); + dissector_add_uint_range_with_preference("udp.port", PORT_MINT_RANGE, mint_control_handle); dissector_add_uint("ethertype", ETHERTYPE_MINT, mint_eth_handle); eth_handle = find_dissector_add_dependency("eth_withoutfcs", hfi_mint->id); diff --git a/epan/dissectors/packet-miop.c b/epan/dissectors/packet-miop.c index ef60769a67..7d3985c4f4 100644 --- a/epan/dissectors/packet-miop.c +++ b/epan/dissectors/packet-miop.c @@ -316,7 +316,7 @@ void proto_reg_handoff_miop (void) { dissector_handle_t miop_handle; miop_handle = find_dissector("miop"); - dissector_add_for_decode_as("udp.port", miop_handle); + dissector_add_for_decode_as_with_preference("udp.port", miop_handle); heur_dissector_add("udp", dissect_miop_heur, "MIOP over UDP", "miop_udp", proto_miop, HEURISTIC_ENABLE); diff --git a/epan/dissectors/packet-mip.c b/epan/dissectors/packet-mip.c index ee8b2c3668..810b81b6f0 100644 --- a/epan/dissectors/packet-mip.c +++ b/epan/dissectors/packet-mip.c @@ -1481,7 +1481,7 @@ proto_reg_handoff_mip(void) mip_handle = find_dissector("mip"); ip_handle = find_dissector_add_dependency("ip", proto_mip); - dissector_add_uint("udp.port", UDP_PORT_MIP, mip_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_MIP, mip_handle); /* Register as dissector for 3GPP2 NVSE */ dissector_add_uint("mip.nvse_ext", VENDOR_THE3GPP2, diff --git a/epan/dissectors/packet-mip6.c b/epan/dissectors/packet-mip6.c index b5d42fd08a..5cf0b4308b 100644 --- a/epan/dissectors/packet-mip6.c +++ b/epan/dissectors/packet-mip6.c @@ -5436,7 +5436,7 @@ proto_reg_handoff_mip6(void) dissector_add_uint("ip.proto", IP_PROTO_MIPV6, mip6_handle); /* Add support for PMIPv6 control messages over IPV4 */ - dissector_add_uint("udp.port", UDP_PORT_PMIP6_CNTL, mip6_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_PMIP6_CNTL, mip6_handle); ip_dissector_table = find_dissector_table("ip.proto"); dissector_add_uint("mip6.vsm", VENDOR_THE3GPP, create_dissector_handle(dissect_mip6_opt_vsm_3gpp, proto_mip6)); diff --git a/epan/dissectors/packet-mndp.c b/epan/dissectors/packet-mndp.c index a1e0f0c481..668290eb04 100644 --- a/epan/dissectors/packet-mndp.c +++ b/epan/dissectors/packet-mndp.c @@ -66,7 +66,7 @@ static int hf_mndp_interfacename = -1; #define PROTO_SHORT_NAME "MNDP" #define PROTO_LONG_NAME "Mikrotik Neighbor Discovery Protocol" -#define PORT_MNDP 5678 +#define PORT_MNDP 5678 /* Not IANA registered */ /* ============= copy/paste/modify from value_string.[hc] ============== */ typedef struct _ext_value_string { @@ -359,7 +359,7 @@ proto_reg_handoff_mndp(void) dissector_handle_t mndp_handle; mndp_handle = create_dissector_handle(dissect_mndp_static, proto_mndp); - dissector_add_uint("udp.port", PORT_MNDP, mndp_handle); + dissector_add_uint_with_preference("udp.port", PORT_MNDP, mndp_handle); heur_dissector_add("udp", dissect_mndp_heur, "MNDP over UDP", "mndp_udp", proto_mndp, HEURISTIC_DISABLE); } diff --git a/epan/dissectors/packet-mojito.c b/epan/dissectors/packet-mojito.c index 63f135cbe3..dde239cea3 100644 --- a/epan/dissectors/packet-mojito.c +++ b/epan/dissectors/packet-mojito.c @@ -26,7 +26,6 @@ #include "config.h" #include -#include #include void proto_register_mojito(void); @@ -120,9 +119,6 @@ static gint ett_mojito_kuids = -1; static expert_field ei_mojito_socketaddress_unknown = EI_INIT; static expert_field ei_mojito_bigint_unsupported = EI_INIT; -/* Preferences */ -static int udp_mojito_port = 0; - typedef struct mojito_header_data { guint8 opcode; guint32 payloadlength; @@ -713,7 +709,6 @@ static gboolean dissect_mojito_heuristic (tvbuff_t *tvb, packet_info *pinfo, pro void proto_register_mojito(void) { - module_t *mojito_module; expert_module_t* expert_mojito; static hf_register_info hf[] = { @@ -1023,42 +1018,17 @@ proto_register_mojito(void) proto_register_subtree_array(ett, array_length(ett)); expert_mojito = expert_register_protocol(proto_mojito); expert_register_field_array(expert_mojito, ei, array_length(ei)); - - /* Set the Prefs */ - mojito_module = prefs_register_protocol(proto_mojito, NULL); - - prefs_register_uint_preference(mojito_module, - "udp.port", - "Mojito UDP Port", - "Mojito UDP Port", - 10, - &udp_mojito_port); } /* Control the handoff */ void proto_reg_handoff_mojito(void) { - static gboolean initialized = FALSE; - static int old_mojito_udp_port = 0; - static dissector_handle_t mojito_handle; + dissector_handle_t mojito_handle; - if (!initialized) { - mojito_handle = create_dissector_handle(dissect_mojito, proto_mojito); - heur_dissector_add("udp", dissect_mojito_heuristic, "Mojito over UDP", "mojito_udp", proto_mojito, HEURISTIC_ENABLE); - initialized = TRUE; - } - - /* Register UDP port for dissection */ - if(old_mojito_udp_port != 0 && old_mojito_udp_port != udp_mojito_port){ - dissector_delete_uint("udp.port", old_mojito_udp_port, mojito_handle); - } - - if(udp_mojito_port != 0 && old_mojito_udp_port != udp_mojito_port) { - dissector_add_uint("udp.port", udp_mojito_port, mojito_handle); - } - - old_mojito_udp_port = udp_mojito_port; + mojito_handle = create_dissector_handle(dissect_mojito, proto_mojito); + heur_dissector_add("udp", dissect_mojito_heuristic, "Mojito over UDP", "mojito_udp", proto_mojito, HEURISTIC_ENABLE); + dissector_add_for_decode_as_with_preference("udp.port", mojito_handle); } /* diff --git a/epan/dissectors/packet-moldudp.c b/epan/dissectors/packet-moldudp.c index b121633a2b..7d697ed8f1 100644 --- a/epan/dissectors/packet-moldudp.c +++ b/epan/dissectors/packet-moldudp.c @@ -26,7 +26,6 @@ #include "config.h" #include -#include #include void proto_register_moldudp(void); @@ -49,9 +48,6 @@ static int hf_moldudp_msgdata = -1; #define MOLDUDP_HEARTBEAT 0x0000 -/* Global port pref */ -static guint pf_moldudp_port = 0; - /* Initialize the subtree pointers */ static gint ett_moldudp = -1; static gint ett_moldudp_msgblk = -1; @@ -187,8 +183,6 @@ dissect_moldudp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data void proto_register_moldudp(void) { - module_t *moldudp_module; - /* Setup list of header fields */ static hf_register_info hf[] = { @@ -235,46 +229,23 @@ proto_register_moldudp(void) expert_module_t* expert_moldudp; /* Register the protocol name and description */ - proto_moldudp = proto_register_protocol("MoldUDP", - "MoldUDP", "moldudp"); + proto_moldudp = proto_register_protocol("MoldUDP", "MoldUDP", "moldudp"); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_moldudp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_moldudp = expert_register_protocol(proto_moldudp); expert_register_field_array(expert_moldudp, ei, array_length(ei)); - - /* Register preferences module */ - moldudp_module = prefs_register_protocol(proto_moldudp, - proto_reg_handoff_moldudp); - - /* Register a port preference */ - prefs_register_uint_preference(moldudp_module, "udp.port", "MoldUDP UDP Port", - "MoldUDP UDP port to capture on.", - 10, &pf_moldudp_port); } void proto_reg_handoff_moldudp(void) { - static gboolean initialized = FALSE; - static dissector_handle_t moldudp_handle; - static int currentPort; - - if (!initialized) { - moldudp_handle = create_dissector_handle(dissect_moldudp, - proto_moldudp); - initialized = TRUE; - } else { - - dissector_delete_uint("udp.port", currentPort, moldudp_handle); - } - - currentPort = pf_moldudp_port; - - dissector_add_uint("udp.port", currentPort, moldudp_handle); + dissector_handle_t moldudp_handle; + moldudp_handle = create_dissector_handle(dissect_moldudp, proto_moldudp); + dissector_add_for_decode_as_with_preference("udp.port", moldudp_handle); } /* diff --git a/epan/dissectors/packet-moldudp64.c b/epan/dissectors/packet-moldudp64.c index 37b8e65cdb..efa85af34b 100644 --- a/epan/dissectors/packet-moldudp64.c +++ b/epan/dissectors/packet-moldudp64.c @@ -26,7 +26,6 @@ #include "config.h" #include -#include #include #include @@ -51,9 +50,6 @@ static int hf_moldudp64_msgdata = -1; #define MOLDUDP64_HEARTBEAT 0x0000 #define MOLDUDP64_ENDOFSESS 0xFFFF -/* Global port pref */ -static guint pf_moldudp64_port = 0; - /* Initialize the subtree pointers */ static gint ett_moldudp64 = -1; static gint ett_moldudp64_msgblk = -1; @@ -220,8 +216,6 @@ dissect_moldudp64(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat void proto_register_moldudp64(void) { - module_t *moldudp64_module; - /* Setup list of header fields */ static hf_register_info hf[] = { @@ -287,15 +281,6 @@ proto_register_moldudp64(void) expert_moldudp64 = expert_register_protocol(proto_moldudp64); expert_register_field_array(expert_moldudp64, ei, array_length(ei)); - /* Register preferences module */ - moldudp64_module = prefs_register_protocol(proto_moldudp64, - proto_reg_handoff_moldudp64); - - /* Register a sample port preference */ - prefs_register_uint_preference(moldudp64_module, "udp.port", "MoldUDP64 UDP Port", - "MoldUDP64 UDP port to dissect on.", - 10, &pf_moldudp64_port); - register_decode_as(&moldudp64_da); } @@ -303,24 +288,10 @@ proto_register_moldudp64(void) void proto_reg_handoff_moldudp64(void) { - static gboolean initialized = FALSE; - static dissector_handle_t moldudp64_handle; - static int currentPort; - - if (!initialized) { - - moldudp64_handle = create_dissector_handle(dissect_moldudp64, - proto_moldudp64); - initialized = TRUE; - } else { - - dissector_delete_uint("udp.port", currentPort, moldudp64_handle); - } - - currentPort = pf_moldudp64_port; - - dissector_add_uint("udp.port", currentPort, moldudp64_handle); + dissector_handle_t moldudp64_handle; + moldudp64_handle = create_dissector_handle(dissect_moldudp64, proto_moldudp64); + dissector_add_for_decode_as_with_preference("udp.port", moldudp64_handle); } /* diff --git a/epan/dissectors/packet-mp2t.c b/epan/dissectors/packet-mp2t.c index c5011df8c1..aed4a51136 100644 --- a/epan/dissectors/packet-mp2t.c +++ b/epan/dissectors/packet-mp2t.c @@ -1553,7 +1553,7 @@ proto_reg_handoff_mp2t(void) dissector_add_uint("rtp.pt", PT_MP2T, mp2t_handle); dissector_add_for_decode_as_with_preference("tcp.port", mp2t_handle); - dissector_add_for_decode_as("udp.port", mp2t_handle); + dissector_add_for_decode_as_with_preference("udp.port", mp2t_handle); heur_dissector_add("usb.bulk", heur_dissect_mp2t, "MP2T USB bulk endpoint", "mp2t_usb_bulk", proto_mp2t, HEURISTIC_ENABLE); dissector_add_uint("wtap_encap", WTAP_ENCAP_MPEG_2_TS, mp2t_handle); dissector_add_uint("l2tp.pw_type", L2TPv3_PROTOCOL_DOCSIS_DMPT, mp2t_handle); diff --git a/epan/dissectors/packet-mpls-echo.c b/epan/dissectors/packet-mpls-echo.c index 4c99b50c15..8960b7fd21 100644 --- a/epan/dissectors/packet-mpls-echo.c +++ b/epan/dissectors/packet-mpls-echo.c @@ -33,7 +33,6 @@ #include "config.h" #include -#include #include #include #include @@ -242,8 +241,6 @@ static expert_field ei_mpls_echo_unknown_address_type = EI_INIT; static expert_field ei_mpls_echo_incorrect_address_type = EI_INIT; static expert_field ei_mpls_echo_malformed = EI_INIT; -static guint global_mpls_echo_udp_port = UDP_PORT_MPLS_ECHO; - static const value_string mpls_echo_msgtype[] = { {1, "MPLS Echo Request"}, {2, "MPLS Echo Reply"}, @@ -2542,42 +2539,24 @@ proto_register_mpls_echo(void) { &ei_mpls_echo_malformed, { "mpls_echo.malformed", PI_MALFORMED, PI_ERROR, "Malformed MPLS message", EXPFILL }}, }; - module_t *mpls_echo_module; expert_module_t* expert_mpls_echo; - proto_mpls_echo = proto_register_protocol("Multiprotocol Label Switching Echo", - "MPLS Echo", "mpls-echo"); + proto_mpls_echo = proto_register_protocol("Multiprotocol Label Switching Echo", "MPLS Echo", "mpls-echo"); proto_register_field_array(proto_mpls_echo, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_mpls_echo = expert_register_protocol(proto_mpls_echo); expert_register_field_array(expert_mpls_echo, ei, array_length(ei)); - - mpls_echo_module = prefs_register_protocol(proto_mpls_echo, proto_reg_handoff_mpls_echo); - prefs_register_uint_preference(mpls_echo_module, "udp.port", "MPLS Echo UDP Port", - "Set the UDP port for messages (if other" - " than the default of 3503)", - 10, &global_mpls_echo_udp_port); } void proto_reg_handoff_mpls_echo(void) { - static gboolean mpls_echo_prefs_initialized = FALSE; - static dissector_handle_t mpls_echo_handle; - static guint mpls_echo_udp_port; + dissector_handle_t mpls_echo_handle; - if (!mpls_echo_prefs_initialized) { - mpls_echo_handle = create_dissector_handle(dissect_mpls_echo, - proto_mpls_echo); - mpls_echo_prefs_initialized = TRUE; - } else { - dissector_delete_uint("udp.port", mpls_echo_udp_port, mpls_echo_handle); - } - - mpls_echo_udp_port = global_mpls_echo_udp_port; - dissector_add_uint("udp.port", global_mpls_echo_udp_port, mpls_echo_handle); + mpls_echo_handle = create_dissector_handle(dissect_mpls_echo, proto_mpls_echo); + dissector_add_uint_with_preference("udp.port", UDP_PORT_MPLS_ECHO, mpls_echo_handle); dissector_add_uint("pwach.channel_type", ACH_TYPE_ONDEMAND_CV, mpls_echo_handle); } diff --git a/epan/dissectors/packet-mpls.c b/epan/dissectors/packet-mpls.c index 519d617d04..91b9dc86d1 100644 --- a/epan/dissectors/packet-mpls.c +++ b/epan/dissectors/packet-mpls.c @@ -645,7 +645,7 @@ proto_reg_handoff_mpls(void) dissector_add_for_decode_as("pwach.channel_type", mpls_handle); dissector_add_uint("sflow_245.header_protocol", SFLOW_245_HEADER_MPLS, mpls_handle); dissector_add_uint("l2tp.pw_type", L2TPv3_PROTOCOL_MPLS, mpls_handle); - dissector_add_uint("udp.port", UDP_PORT_MPLS_OVER_UDP, mpls_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_MPLS_OVER_UDP, mpls_handle); dissector_add_uint("vxlan.next_proto", VXLAN_MPLS, mpls_handle); mpls_pwcw_handle = create_dissector_handle( dissect_pw_mcw, proto_pw_mcw ); diff --git a/epan/dissectors/packet-mqtt-sn.c b/epan/dissectors/packet-mqtt-sn.c index 8ed4725506..b01c721e9a 100644 --- a/epan/dissectors/packet-mqtt-sn.c +++ b/epan/dissectors/packet-mqtt-sn.c @@ -697,7 +697,7 @@ void proto_register_mqttsn(void) /* Dissector Handoff */ void proto_reg_handoff_mqttsn(void) { - dissector_add_for_decode_as("udp.port", mqttsn_handle); + dissector_add_for_decode_as_with_preference("udp.port", mqttsn_handle); } /* diff --git a/epan/dissectors/packet-ms-mms.c b/epan/dissectors/packet-ms-mms.c index 626e8d259a..c21361ba01 100644 --- a/epan/dissectors/packet-ms-mms.c +++ b/epan/dissectors/packet-ms-mms.c @@ -1882,7 +1882,7 @@ void proto_reg_handoff_msmms_command(void) /* Control commands using TCP port */ dissector_add_uint_with_preference("tcp.port", MSMMS_PORT, msmms_handle); /* Data command(s) using UDP port */ - dissector_add_uint("udp.port", MSMMS_PORT, msmms_handle); + dissector_add_uint_with_preference("udp.port", MSMMS_PORT, msmms_handle); } /* diff --git a/epan/dissectors/packet-msproxy.c b/epan/dissectors/packet-msproxy.c index 1dfd049548..ba8ee4a76e 100644 --- a/epan/dissectors/packet-msproxy.c +++ b/epan/dissectors/packet-msproxy.c @@ -1268,9 +1268,8 @@ proto_reg_handoff_msproxy(void) { dissector_handle_t msproxy_handle; - msproxy_handle = create_dissector_handle(dissect_msproxy, - proto_msproxy); - dissector_add_uint("udp.port", UDP_PORT_MSPROXY, msproxy_handle); + msproxy_handle = create_dissector_handle(dissect_msproxy, proto_msproxy); + dissector_add_uint_with_preference("udp.port", UDP_PORT_MSPROXY, msproxy_handle); } /* diff --git a/epan/dissectors/packet-nat-pmp.c b/epan/dissectors/packet-nat-pmp.c index cf5530129e..5c4f597e62 100644 --- a/epan/dissectors/packet-nat-pmp.c +++ b/epan/dissectors/packet-nat-pmp.c @@ -44,8 +44,7 @@ void proto_register_nat_pmp(void); void proto_reg_handoff_nat_pmp(void); -#define PCP_STATUS_PORT 5350 -#define PCP_PORT 5351 +#define PCP_PORT_RANGE "5350-5351" /* NAT Port opcodes */ #define EXTERNAL_ADDRESS_REQUEST 0 @@ -825,17 +824,15 @@ void proto_reg_handoff_nat_pmp(void) dissector_handle_t nat_pmp_handle; dissector_handle_t pcp_handle; - pcp_handle = create_dissector_handle(dissect_portcontrol, proto_pcp); - dissector_add_uint("udp.port", PCP_STATUS_PORT, pcp_handle); - dissector_add_uint("udp.port", PCP_PORT, pcp_handle); + dissector_add_uint_range_with_preference("udp.port", PCP_PORT_RANGE, pcp_handle); nat_pmp_handle = create_dissector_handle(dissect_nat_pmp, proto_nat_pmp); /* Port Control Protocol (packet-portcontrol.c) shares the same UDP ports as NAT-PMP, but it backwards compatible. However, still let NAT-PMP use Decode As */ - dissector_add_for_decode_as("udp.port", nat_pmp_handle); + dissector_add_for_decode_as_with_preference("udp.port", nat_pmp_handle); } /* diff --git a/epan/dissectors/packet-nb_rtpmux.c b/epan/dissectors/packet-nb_rtpmux.c index a378f4a6fd..a68975f532 100644 --- a/epan/dissectors/packet-nb_rtpmux.c +++ b/epan/dissectors/packet-nb_rtpmux.c @@ -24,7 +24,6 @@ #include "config.h" #include -#include void proto_register_nb_rtpmux(void); void proto_reg_handoff_nb_rtpmux(void); @@ -47,13 +46,6 @@ static gint ett_nb_rtpmux_cmp_rtp_hdr = -1; static dissector_handle_t rtpdissector; -/* There appears not to be a standard port or range of ports that can be used here. */ -/* For 3G, could potentially get it from HNB Register Accept... */ -#define UDP_PORT_NB_RTPMUX_RANGE "0" - -/* Preference settings */ -static range_t *global_nb_rtpmux_port_range; - static int dissect_nb_rtpmux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { @@ -248,57 +240,22 @@ proto_register_nb_rtpmux(void) &ett_nb_rtpmux_cmp_rtp_hdr }; - module_t *nb_rtpmux_module; - /* Register the protocol name and description */ - proto_nb_rtpmux = proto_register_protocol("3GPP Nb Interface RTP Multiplex", - "NB_RTPMUX", "nb_rtpmux"); + proto_nb_rtpmux = proto_register_protocol("3GPP Nb Interface RTP Multiplex", "NB_RTPMUX", "nb_rtpmux"); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_nb_rtpmux, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - /* Set default UDP ports */ - range_convert_str(&global_nb_rtpmux_port_range, UDP_PORT_NB_RTPMUX_RANGE, MAX_UDP_PORT); - - nb_rtpmux_module = prefs_register_protocol(proto_nb_rtpmux, proto_reg_handoff_nb_rtpmux); - prefs_register_range_preference(nb_rtpmux_module, "udp_ports", - "NB RTPMUX server port numbers", - "UDP port numbers used for NB RTPMUX traffic " - "(default " UDP_PORT_NB_RTPMUX_RANGE ")", - &global_nb_rtpmux_port_range, MAX_UDP_PORT); } void proto_reg_handoff_nb_rtpmux(void) { - static range_t *nb_rtpmux_port_range; - static gboolean nb_rtpmux_initialized = FALSE; dissector_handle_t nb_rtpmux_handle; - /* Use create_dissector_handle() to indicate that dissect_nb_rtpmux() - * returns the number of bytes it dissected (or 0 if it thinks the packet - * does not belong to PROTONAME). - */ - nb_rtpmux_handle = create_dissector_handle(dissect_nb_rtpmux, - proto_nb_rtpmux); + nb_rtpmux_handle = create_dissector_handle(dissect_nb_rtpmux, proto_nb_rtpmux); + dissector_add_uint_range_with_preference("udp.port", "", nb_rtpmux_handle); - if (!nb_rtpmux_initialized) - { - nb_rtpmux_initialized = TRUE; - } - else { - /* Remove and delete previous UDP port range */ - dissector_delete_uint_range("udp.port", nb_rtpmux_port_range, nb_rtpmux_handle); - g_free(nb_rtpmux_port_range); - } - - /* Set range of ports from preference to use this dissector */ - nb_rtpmux_port_range = range_copy(global_nb_rtpmux_port_range); - dissector_add_uint_range("udp.port", nb_rtpmux_port_range, nb_rtpmux_handle); - - /* Allow 'decode-as' for UDP ports */ - dissector_add_for_decode_as("udp.port", nb_rtpmux_handle); rtpdissector = find_dissector_add_dependency("rtp", proto_nb_rtpmux); } diff --git a/epan/dissectors/packet-nbt.c b/epan/dissectors/packet-nbt.c index cceaaee562..d4df6f8a76 100644 --- a/epan/dissectors/packet-nbt.c +++ b/epan/dissectors/packet-nbt.c @@ -2086,10 +2086,10 @@ proto_reg_handoff_nbt(void) dissector_handle_t nbns_handle, nbdgm_handle, nbss_handle; nbns_handle = create_dissector_handle(dissect_nbns, proto_nbns); - dissector_add_uint("udp.port", UDP_PORT_NBNS, nbns_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_NBNS, nbns_handle); nbdgm_handle = create_dissector_handle(dissect_nbdgm, proto_nbdgm); - dissector_add_uint("udp.port", UDP_PORT_NBDGM, nbdgm_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_NBDGM, nbdgm_handle); nbss_handle = create_dissector_handle(dissect_nbss, proto_nbss); dissector_add_uint_range_with_preference("tcp.port", TCP_NBSS_PORT_RANGE, nbss_handle); diff --git a/epan/dissectors/packet-netdump.c b/epan/dissectors/packet-netdump.c index 5dec2cc4fd..1246c9b7dd 100644 --- a/epan/dissectors/packet-netdump.c +++ b/epan/dissectors/packet-netdump.c @@ -25,7 +25,6 @@ #include "config.h" #include -#include void proto_register_netdump(void); void proto_reg_handoff_netdump(void); @@ -42,9 +41,6 @@ static int hf_netdump_code = -1; static int hf_netdump_info = -1; static int hf_netdump_version = -1; -/* Global sample port pref */ -static guint gPORT_PREF = 0; - /* Initialize the subtree pointers */ static gint ett_netdump = -1; @@ -114,8 +110,6 @@ dissect_netdump(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data void proto_register_netdump(void) { - module_t *netdump_module; - /* Setup protocol subtree array */ static gint *ett[] = { &ett_netdump @@ -178,45 +172,18 @@ void proto_register_netdump(void) } }; - proto_netdump = proto_register_protocol ( - "Netdump Protocol", /* name */ - "Netdump", /* short name */ - "netdump" /* abbrev */ - ); + proto_netdump = proto_register_protocol ("Netdump Protocol", "Netdump", "netdump" ); proto_register_field_array(proto_netdump, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - netdump_module = prefs_register_protocol(proto_netdump, - proto_reg_handoff_netdump); - - /* Register a sample port preference */ - prefs_register_uint_preference(netdump_module, "udp.port", - "Netdump UDP port", - "port if other than the default", - 10, &gPORT_PREF); } void proto_reg_handoff_netdump(void) { - static gboolean initalized = FALSE; - static dissector_handle_t netdump_handle; - static int CurrentPort; + dissector_handle_t netdump_handle; - if (!initalized) { - netdump_handle = create_dissector_handle(dissect_netdump, - proto_netdump); + netdump_handle = create_dissector_handle(dissect_netdump, proto_netdump); - dissector_add_for_decode_as("udp.port", netdump_handle); - initalized = TRUE; - } else { - if (CurrentPort != 0) - dissector_delete_uint("udp.port", CurrentPort, netdump_handle); - } - - CurrentPort = gPORT_PREF; - - if (CurrentPort != 0) - dissector_add_uint("udp.port", CurrentPort, netdump_handle); + dissector_add_for_decode_as_with_preference("udp.port", netdump_handle); } /* diff --git a/epan/dissectors/packet-newmail.c b/epan/dissectors/packet-newmail.c index 80cbc84d5d..0cf16a599a 100644 --- a/epan/dissectors/packet-newmail.c +++ b/epan/dissectors/packet-newmail.c @@ -24,14 +24,10 @@ #include "config.h" #include -#include void proto_register_newmail(void); void proto_reg_handoff_newmail(void); -/* Variables for preferences */ -static guint preference_default_port = 0; - /* Initialize the protocol and registered fields */ static int proto_newmail = -1; static int hf_newmail_payload = -1; @@ -83,50 +79,21 @@ proto_register_newmail(void) &ett_newmail, }; - module_t *newmail_module; - - proto_newmail = proto_register_protocol("Microsoft Exchange New Mail Notification", - "NEWMAIL", "newmail"); + proto_newmail = proto_register_protocol("Microsoft Exchange New Mail Notification", "NEWMAIL", "newmail"); proto_register_field_array(proto_newmail, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); register_dissector("newmail", dissect_newmail, proto_newmail); - - newmail_module = prefs_register_protocol(proto_newmail, - proto_reg_handoff_newmail); - - prefs_register_uint_preference(newmail_module, - "default_port", - "Default UDP port (optional)", - "Always dissect this port's traffic as newmail notifications." - " Additional ports will be dynamically registered as they" - " are seen in MAPI register push notification packets.", - 10, &preference_default_port); - } void proto_reg_handoff_newmail(void) { - static gboolean inited = FALSE; - static dissector_handle_t newmail_handle; - static guint preference_default_port_last; + dissector_handle_t newmail_handle; - if(!inited) { - newmail_handle = find_dissector("newmail"); - dissector_add_for_decode_as("udp.port", newmail_handle); - inited = TRUE; - } else { - if (preference_default_port_last != 0) { - dissector_delete_uint("udp.port", preference_default_port_last, newmail_handle); - } - } - - if(preference_default_port != 0) { - dissector_add_uint("udp.port", preference_default_port, newmail_handle); - } - preference_default_port_last = preference_default_port; + newmail_handle = find_dissector("newmail"); + dissector_add_for_decode_as_with_preference("udp.port", newmail_handle); } /* diff --git a/epan/dissectors/packet-nordic_ble.c b/epan/dissectors/packet-nordic_ble.c index 596cc18117..902bb2df58 100644 --- a/epan/dissectors/packet-nordic_ble.c +++ b/epan/dissectors/packet-nordic_ble.c @@ -706,24 +706,19 @@ proto_register_nordic_ble(void) void proto_reg_handoff_nordic_ble(void) { - static gboolean initialized = FALSE; - static dissector_handle_t nordic_ble_handle; + dissector_handle_t nordic_ble_handle; /*static int currentPort;*/ - if (!initialized) { - nordic_ble_handle = create_dissector_handle(dissect_nordic_ble, proto_nordic_ble); + nordic_ble_handle = create_dissector_handle(dissect_nordic_ble, proto_nordic_ble); - btle_dissector_handle = find_dissector("btle"); - debug_handle = find_dissector("nordic_debug"); - initialized = TRUE; - } + btle_dissector_handle = find_dissector("btle"); + debug_handle = find_dissector("nordic_debug"); #ifdef TRANSPARENT - dissector_add_uint("udp.port", udp_port, btle_dissector_handle); + dissector_add_uint_with_preference("udp.port", udp_port, btle_dissector_handle); #else - /*dissector_add_uint("udp.port", udp_port, nordic_ble_handle);*/ /*dissector_add_uint("wtap_encap", user_dlt_num, nordic_ble_handle);*/ - dissector_add_for_decode_as("udp.port", nordic_ble_handle); + dissector_add_for_decode_as_with_preference("udp.port", nordic_ble_handle); #endif } diff --git a/epan/dissectors/packet-nsip.c b/epan/dissectors/packet-nsip.c index 93b9ce68a5..c43386e478 100644 --- a/epan/dissectors/packet-nsip.c +++ b/epan/dissectors/packet-nsip.c @@ -37,8 +37,7 @@ void proto_reg_handoff_nsip(void); #define NSIP_DEBUG 0 #define NSIP_SEP ", " /* Separator string */ -static range_t *global_nsip_udp_port_range; -#define DEFAULT_NSIP_PORT_RANGE "2157,19999" +#define DEFAULT_NSIP_PORT_RANGE "2157,19999" /* Not IANA registered */ /* Initialize the protocol and registered fields */ static int proto_nsip = -1; @@ -1140,8 +1139,7 @@ proto_register_nsip(void) module_t *nsip_module; /* Register the protocol name and description */ - proto_nsip = proto_register_protocol("GPRS Network Service", - "GPRS-NS", "gprs-ns"); + proto_nsip = proto_register_protocol("GPRS Network Service", "GPRS-NS", "gprs-ns"); /* Required function calls to register the header fields and subtrees used */ @@ -1150,36 +1148,19 @@ proto_register_nsip(void) register_dissector("gprs_ns", dissect_nsip, proto_nsip); - /* Set default UDP ports */ - range_convert_str(&global_nsip_udp_port_range, DEFAULT_NSIP_PORT_RANGE, MAX_UDP_PORT); - /* Register configuration options */ - nsip_module = prefs_register_protocol(proto_nsip, proto_reg_handoff_nsip); + nsip_module = prefs_register_protocol(proto_nsip, NULL); prefs_register_obsolete_preference(nsip_module, "udp.port1"); prefs_register_obsolete_preference(nsip_module, "udp.port2"); - prefs_register_range_preference(nsip_module, "udp.ports", "GPRS-NS UDP ports", - "UDP ports to be decoded as GPRS-NS (default: " - DEFAULT_NSIP_PORT_RANGE ")", - &global_nsip_udp_port_range, MAX_UDP_PORT); } void proto_reg_handoff_nsip(void) { - static gboolean nsip_prefs_initialized = FALSE; - static range_t *nsip_udp_port_range; - if (!nsip_prefs_initialized) { - nsip_handle = find_dissector_add_dependency("gprs_ns", proto_nsip); - bssgp_handle = find_dissector_add_dependency("bssgp", proto_nsip); - nsip_prefs_initialized = TRUE; - } else { - dissector_delete_uint_range("udp.port", nsip_udp_port_range, nsip_handle); - g_free(nsip_udp_port_range); - } + nsip_handle = find_dissector_add_dependency("gprs_ns", proto_nsip); + bssgp_handle = find_dissector_add_dependency("bssgp", proto_nsip); - nsip_udp_port_range = range_copy(global_nsip_udp_port_range); - - dissector_add_uint_range("udp.port", nsip_udp_port_range, nsip_handle); + dissector_add_uint_range_with_preference("udp.port", DEFAULT_NSIP_PORT_RANGE, nsip_handle); dissector_add_uint("atm.aal5.type", TRAF_GPRS_NS, nsip_handle); } diff --git a/epan/dissectors/packet-nt-tpcp.c b/epan/dissectors/packet-nt-tpcp.c index 8b2f1940f5..d3567b4813 100644 --- a/epan/dissectors/packet-nt-tpcp.c +++ b/epan/dissectors/packet-nt-tpcp.c @@ -30,7 +30,7 @@ void proto_register_tpcp(void); void proto_reg_handoff_tpcp(void); -#define UDP_PORT_TPCP 3121 +#define UDP_PORT_TPCP 3121 /* Not IANA registered */ /* TPCP version1/2 PDU format */ typedef struct _tpcppdu_t { @@ -232,8 +232,7 @@ proto_register_tpcp(void) &ett_tpcp_flags, }; - proto_tpcp = proto_register_protocol("Alteon - Transparent Proxy Cache Protocol", - "TPCP", "tpcp"); + proto_tpcp = proto_register_protocol("Alteon - Transparent Proxy Cache Protocol", "TPCP", "tpcp"); proto_register_field_array(proto_tpcp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } @@ -244,7 +243,7 @@ proto_reg_handoff_tpcp(void) dissector_handle_t tpcp_handle; tpcp_handle = create_dissector_handle(dissect_tpcp, proto_tpcp); - dissector_add_uint("udp.port", UDP_PORT_TPCP, tpcp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_TPCP, tpcp_handle); } /* diff --git a/epan/dissectors/packet-ntp.c b/epan/dissectors/packet-ntp.c index b073ae7872..cfd2cf3e3e 100644 --- a/epan/dissectors/packet-ntp.c +++ b/epan/dissectors/packet-ntp.c @@ -1704,7 +1704,7 @@ proto_reg_handoff_ntp(void) dissector_handle_t ntp_handle; ntp_handle = create_dissector_handle(dissect_ntp, proto_ntp); - dissector_add_uint("udp.port", UDP_PORT_NTP, ntp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_NTP, ntp_handle); dissector_add_uint_with_preference("tcp.port", TCP_PORT_NTP, ntp_handle); } diff --git a/epan/dissectors/packet-nwmtp.c b/epan/dissectors/packet-nwmtp.c index c42386ca27..5df4f0196d 100644 --- a/epan/dissectors/packet-nwmtp.c +++ b/epan/dissectors/packet-nwmtp.c @@ -163,7 +163,7 @@ void proto_register_mwmtp(void) void proto_reg_handoff_nwmtp(void) { - dissector_add_for_decode_as("udp.port", nwmtp_handle); + dissector_add_for_decode_as_with_preference("udp.port", nwmtp_handle); mtp_handle = find_dissector_add_dependency("mtp3", proto_nwmtp); } diff --git a/epan/dissectors/packet-obex.c b/epan/dissectors/packet-obex.c index 0c75cdeb73..4b85d7b280 100644 --- a/epan/dissectors/packet-obex.c +++ b/epan/dissectors/packet-obex.c @@ -3960,7 +3960,7 @@ proto_reg_handoff_obex(void) dissector_add_for_decode_as("usb.device", obex_handle); dissector_add_for_decode_as("usb.protocol", obex_handle); dissector_add_for_decode_as_with_preference("tcp.port", obex_handle); - dissector_add_for_decode_as("udp.port", obex_handle); + dissector_add_for_decode_as_with_preference("udp.port", obex_handle); } /* diff --git a/epan/dissectors/packet-oicq.c b/epan/dissectors/packet-oicq.c index 4063038209..8e33dbe0e0 100644 --- a/epan/dissectors/packet-oicq.c +++ b/epan/dissectors/packet-oicq.c @@ -48,7 +48,7 @@ void proto_reg_handoff_oicq(void); */ /* By default, but can be completely different */ -#define UDP_PORT_OICQ 8000 +#define UDP_PORT_OICQ 8000 /* Not IANA regisrered */ static int proto_oicq = -1; @@ -185,8 +185,7 @@ proto_register_oicq(void) &ett_oicq, }; - proto_oicq = proto_register_protocol("OICQ - IM software, popular in China", "OICQ", - "oicq"); + proto_oicq = proto_register_protocol("OICQ - IM software, popular in China", "OICQ", "oicq"); proto_register_field_array(proto_oicq, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } @@ -197,7 +196,7 @@ proto_reg_handoff_oicq(void) dissector_handle_t oicq_handle; oicq_handle = create_dissector_handle(dissect_oicq, proto_oicq); - dissector_add_uint("udp.port", UDP_PORT_OICQ, oicq_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_OICQ, oicq_handle); } /* diff --git a/epan/dissectors/packet-olsr.c b/epan/dissectors/packet-olsr.c index 1a9cd7bedb..a338411f92 100644 --- a/epan/dissectors/packet-olsr.c +++ b/epan/dissectors/packet-olsr.c @@ -995,7 +995,7 @@ void proto_reg_handoff_olsr(void) { dissector_handle_t olsr_handle; olsr_handle = create_dissector_handle(dissect_olsr, proto_olsr); - dissector_add_uint("udp.port", UDP_PORT_OLSR, olsr_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_OLSR, olsr_handle); } /* diff --git a/epan/dissectors/packet-omron-fins.c b/epan/dissectors/packet-omron-fins.c index 6e8dfcf9c5..846b307159 100644 --- a/epan/dissectors/packet-omron-fins.c +++ b/epan/dissectors/packet-omron-fins.c @@ -35,7 +35,7 @@ void proto_register_omron_fins(void); void proto_reg_handoff_omron_fins(void); -#define OMRON_FINS_UDP_PORT 9600 +#define OMRON_FINS_UDP_PORT 9600 /* Not IANA registered */ static int proto_omron_fins = -1; static gint ett_omron = -1; @@ -3969,7 +3969,7 @@ proto_reg_handoff_omron_fins(void) dissector_handle_t omron_fins_handle; omron_fins_handle = create_dissector_handle(dissect_omron_fins, proto_omron_fins); - dissector_add_uint("udp.port", OMRON_FINS_UDP_PORT, omron_fins_handle); + dissector_add_uint_with_preference("udp.port", OMRON_FINS_UDP_PORT, omron_fins_handle); } /* diff --git a/epan/dissectors/packet-opensafety.c b/epan/dissectors/packet-opensafety.c index 9a85c8f01d..6921c61acd 100644 --- a/epan/dissectors/packet-opensafety.c +++ b/epan/dissectors/packet-opensafety.c @@ -2439,6 +2439,7 @@ apply_prefs ( void ) opensafety_udp_siii_port_number = global_network_udp_port_sercosiii; /* Default UDP only based dissector, will hand traffic to SIII dissector if needed */ + /* Preference names to specific to use "auto" preference */ dissector_add_uint("udp.port", opensafety_udp_port_number, opensafety_udpdata_handle); dissector_add_uint("udp.port", opensafety_udp_siii_port_number, opensafety_udpdata_handle); diff --git a/epan/dissectors/packet-openvpn.c b/epan/dissectors/packet-openvpn.c index 2d40d47085..df7af4982e 100644 --- a/epan/dissectors/packet-openvpn.c +++ b/epan/dissectors/packet-openvpn.c @@ -90,7 +90,6 @@ static dissector_handle_t ssl_handle; static gboolean pref_long_format = TRUE; static gboolean pref_tls_auth = FALSE; static gboolean pref_tls_auth_override = FALSE; -static guint pref_udp_port = OPENVPN_PORT; static guint tls_auth_hmac_size = 20; /* Default SHA-1 160 Bits */ static const value_string openvpn_message_types[] = @@ -615,13 +614,8 @@ proto_register_openvpn(void) register_init_routine(&openvpn_reassemble_init); register_cleanup_routine(&openvpn_reassemble_cleanup); - openvpn_module = prefs_register_protocol(proto_openvpn, proto_reg_handoff_openvpn); + openvpn_module = prefs_register_protocol(proto_openvpn, NULL); - prefs_register_uint_preference(openvpn_module, - "udp.port", - "OpenVPN UDP Port", - "UDP Port of the OpenVPN tunnel", - 10, &pref_udp_port); prefs_register_bool_preference(openvpn_module, "tls_auth_detection_override", "override tls-auth detection", @@ -655,22 +649,9 @@ proto_register_openvpn(void) void proto_reg_handoff_openvpn(void) { - static guint udp_port; - static gboolean initialized = FALSE; - - if (! initialized) { - ssl_handle = find_dissector_add_dependency("ssl", proto_openvpn); - dissector_add_uint_with_preference("tcp.port", OPENVPN_PORT, openvpn_tcp_handle); - initialized = TRUE; - } else { - if (udp_port > 0) - dissector_delete_uint("udp.port", udp_port, openvpn_udp_handle); - } - - udp_port = pref_udp_port; - - if (udp_port > 0) - dissector_add_uint("udp.port", udp_port, openvpn_udp_handle); + ssl_handle = find_dissector_add_dependency("ssl", proto_openvpn); + dissector_add_uint_with_preference("tcp.port", OPENVPN_PORT, openvpn_tcp_handle); + dissector_add_uint_with_preference("udp.port", OPENVPN_PORT, openvpn_udp_handle); } /* diff --git a/epan/dissectors/packet-p_mul.c b/epan/dissectors/packet-p_mul.c index 3f83ce2867..84383625ec 100644 --- a/epan/dissectors/packet-p_mul.c +++ b/epan/dissectors/packet-p_mul.c @@ -211,7 +211,6 @@ static GHashTable *p_mul_id_hash_table = NULL; static GList *p_mul_package_data_list = NULL; /* User definable values to use for dissection */ -static range_t *global_p_mul_port_range; static gboolean p_mul_reassemble = TRUE; static gint decode_option = DECODE_NONE; static gboolean use_relative_msgid = TRUE; @@ -1592,23 +1591,14 @@ void proto_register_p_mul (void) register_init_routine (&p_mul_init_routine); register_cleanup_routine (&p_mul_cleanup_routine); - /* Set default UDP ports */ - range_convert_str (&global_p_mul_port_range, DEFAULT_P_MUL_PORT_RANGE, - MAX_UDP_PORT); - /* Register our configuration options */ - p_mul_module = prefs_register_protocol (proto_p_mul, - proto_reg_handoff_p_mul); + p_mul_module = prefs_register_protocol (proto_p_mul, NULL); prefs_register_obsolete_preference (p_mul_module, "tport"); prefs_register_obsolete_preference (p_mul_module, "rport"); prefs_register_obsolete_preference (p_mul_module, "dport"); prefs_register_obsolete_preference (p_mul_module, "aport"); - prefs_register_range_preference (p_mul_module, "udp_ports", - "P_Mul port numbers", - "Port numbers used for P_Mul traffic", - &global_p_mul_port_range, MAX_UDP_PORT); prefs_register_bool_preference (p_mul_module, "reassemble", "Reassemble fragmented P_Mul packets", "Reassemble fragmented P_Mul packets", @@ -1630,21 +1620,8 @@ void proto_register_p_mul (void) void proto_reg_handoff_p_mul (void) { - static gboolean p_mul_prefs_initialized = FALSE; - static range_t *p_mul_port_range; - - if (!p_mul_prefs_initialized) { - p_mul_prefs_initialized = TRUE; - dissector_add_uint ("s5066sis.ctl.appid", S5066_CLIENT_S4406_ANNEX_E_TMI_1_P_MUL, p_mul_handle); - } else { - dissector_delete_uint_range ("udp.port", p_mul_port_range, p_mul_handle); - g_free (p_mul_port_range); - } - - /* Save port number for later deletion */ - p_mul_port_range = range_copy (global_p_mul_port_range); - - dissector_add_uint_range ("udp.port", p_mul_port_range, p_mul_handle); + dissector_add_uint ("s5066sis.ctl.appid", S5066_CLIENT_S4406_ANNEX_E_TMI_1_P_MUL, p_mul_handle); + dissector_add_uint_range_with_preference("udp.port", DEFAULT_P_MUL_PORT_RANGE, p_mul_handle); } /* diff --git a/epan/dissectors/packet-packetbb.c b/epan/dissectors/packet-packetbb.c index 6de5857243..2adb62b707 100644 --- a/epan/dissectors/packet-packetbb.c +++ b/epan/dissectors/packet-packetbb.c @@ -27,7 +27,6 @@ #include -#include #include void proto_reg_handoff_packetbb(void); @@ -100,7 +99,8 @@ const value_string addrtlv_type_vals[] = { { 0, NULL }}; static int proto_packetbb = -1; -static guint global_packetbb_port = 269; + +#define PACKETBB_PORT 269 /* Not IANA registered */ static int hf_packetbb_header = -1; static int hf_packetbb_version = -1; @@ -789,20 +789,10 @@ static int dissect_packetbb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, } void proto_reg_handoff_packetbb(void) { - static gboolean packetbb_prefs_initialized = FALSE; - static dissector_handle_t packetbb_handle; - static guint packetbb_udp_port; + dissector_handle_t packetbb_handle; - if (!packetbb_prefs_initialized) { - packetbb_handle = create_dissector_handle(dissect_packetbb, proto_packetbb); - packetbb_prefs_initialized = TRUE; - } - else { - dissector_delete_uint("udp.port", global_packetbb_port, packetbb_handle); - } - - packetbb_udp_port = global_packetbb_port; - dissector_add_uint("udp.port", packetbb_udp_port, packetbb_handle); + packetbb_handle = create_dissector_handle(dissect_packetbb, proto_packetbb); + dissector_add_uint_with_preference("udp.port", PACKETBB_PORT, packetbb_handle); } void proto_register_packetbb(void) { @@ -1121,7 +1111,6 @@ void proto_register_packetbb(void) { }; static gint *ett[array_length(ett_base) + 2*PACKETBB_MSG_TLV_LENGTH]; - module_t *packetbb_module; expert_module_t* expert_packetbb; int i,j; @@ -1136,20 +1125,13 @@ void proto_register_packetbb(void) { } /* name, short name, abbrev */ - proto_packetbb = proto_register_protocol("PacketBB Protocol", "PacketBB", - "packetbb"); + proto_packetbb = proto_register_protocol("PacketBB Protocol", "PacketBB", "packetbb"); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_packetbb, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_packetbb = expert_register_protocol(proto_packetbb); expert_register_field_array(expert_packetbb, ei, array_length(ei)); - - /* configurable packetbb port */ - packetbb_module = prefs_register_protocol(proto_packetbb, proto_reg_handoff_packetbb); - prefs_register_uint_preference(packetbb_module, "communication_port", - "UDP port for packetbb", "UDP communication port for packetbb PDUs", - 10, &global_packetbb_port); } /* diff --git a/epan/dissectors/packet-pana.c b/epan/dissectors/packet-pana.c index 6be6c215e8..299230737f 100644 --- a/epan/dissectors/packet-pana.c +++ b/epan/dissectors/packet-pana.c @@ -888,7 +888,7 @@ proto_reg_handoff_pana(void) heur_dissector_add("udp", dissect_pana, "PANA over UDP", "pana_udp", proto_pana, HEURISTIC_ENABLE); pana_handle = create_dissector_handle(dissect_pana, proto_pana); - dissector_add_for_decode_as("udp.port", pana_handle); + dissector_add_for_decode_as_with_preference("udp.port", pana_handle); eap_handle = find_dissector_add_dependency("eap", proto_pana); diff --git a/epan/dissectors/packet-pathport.c b/epan/dissectors/packet-pathport.c index 23b57eca31..fa57b4debc 100644 --- a/epan/dissectors/packet-pathport.c +++ b/epan/dissectors/packet-pathport.c @@ -26,7 +26,7 @@ #include -#define PATHPORT_UDP_PORT 3792 +#define PATHPORT_UDP_PORT 3792 /* Not IANA registered */ #define PATHPORT_MIN_LENGTH 24 /* HEADER + 1 PDU */ #define PATHPORT_PROTO_MAGIC 0xed01 @@ -696,7 +696,7 @@ proto_reg_handoff_pathport(void) pathport_handle = create_dissector_handle(dissect_pathport, proto_pathport); heur_dissector_add("udp", dissect_pathport_heur, "Pathport over UDP", "pathport_udp", proto_pathport, HEURISTIC_ENABLE); - dissector_add_uint("udp.port", PATHPORT_UDP_PORT, pathport_handle); + dissector_add_uint_with_preference("udp.port", PATHPORT_UDP_PORT, pathport_handle); } /* diff --git a/epan/dissectors/packet-pcli.c b/epan/dissectors/packet-pcli.c index 3f2611bbad..4f21ac3f71 100644 --- a/epan/dissectors/packet-pcli.c +++ b/epan/dissectors/packet-pcli.c @@ -259,7 +259,7 @@ proto_register_pcli(void) proto_register_field_array(proto_pcli,hf,array_length(hf)); proto_register_subtree_array(ett,array_length(ett)); - pcli_module = prefs_register_protocol(proto_pcli, proto_reg_handoff_pcli); + pcli_module = prefs_register_protocol(proto_pcli, NULL); prefs_register_obsolete_preference(pcli_module, "udp_port"); prefs_register_bool_preference(pcli_module, "summary_in_tree", @@ -279,21 +279,17 @@ proto_register_pcli(void) void proto_reg_handoff_pcli(void) { - static gboolean pcli_initialized = FALSE; - static dissector_handle_t pcli_handle, pcli_handle8, pcli_handle12, pcli_handle20; + dissector_handle_t pcli_handle, pcli_handle8, pcli_handle12, pcli_handle20; - if(!pcli_initialized) { - pcli_handle = create_dissector_handle(dissect_pcli, proto_pcli); - pcli_handle8 = create_dissector_handle(dissect_pcli8, proto_pcli8); - pcli_handle12 = create_dissector_handle(dissect_pcli12, proto_pcli12); - pcli_handle20 = create_dissector_handle(dissect_pcli20, proto_pcli20); - pcli_initialized = TRUE; - } + pcli_handle = create_dissector_handle(dissect_pcli, proto_pcli); + pcli_handle8 = create_dissector_handle(dissect_pcli8, proto_pcli8); + pcli_handle12 = create_dissector_handle(dissect_pcli12, proto_pcli12); + pcli_handle20 = create_dissector_handle(dissect_pcli20, proto_pcli20); - dissector_add_for_decode_as("udp.port", pcli_handle); - dissector_add_for_decode_as("udp.port", pcli_handle8); - dissector_add_for_decode_as("udp.port", pcli_handle12); - dissector_add_for_decode_as("udp.port", pcli_handle20); + dissector_add_for_decode_as_with_preference("udp.port", pcli_handle); + dissector_add_for_decode_as_with_preference("udp.port", pcli_handle8); + dissector_add_for_decode_as_with_preference("udp.port", pcli_handle12); + dissector_add_for_decode_as_with_preference("udp.port", pcli_handle20); } /* diff --git a/epan/dissectors/packet-peekremote.c b/epan/dissectors/packet-peekremote.c index d497582b62..eb0dc63047 100644 --- a/epan/dissectors/packet-peekremote.c +++ b/epan/dissectors/packet-peekremote.c @@ -61,6 +61,8 @@ #define IS_ARUBA 0x01 +#define PEEKREMOTE_PORT 5000 /* Not IANA registered */ + void proto_register_peekremote(void); void proto_reg_handoff_peekremote(void); @@ -688,7 +690,7 @@ proto_reg_handoff_peekremote(void) { wlan_radio_handle = find_dissector_add_dependency("wlan_radio", proto_peekremote); - dissector_add_uint("udp.port", 5000, peekremote_handle); + dissector_add_uint_with_preference("udp.port", PEEKREMOTE_PORT, peekremote_handle); heur_dissector_add("udp", dissect_peekremote_new, "OmniPeek Remote over UDP", "peekremote_udp", proto_peekremote, HEURISTIC_ENABLE); } diff --git a/epan/dissectors/packet-pgm.c b/epan/dissectors/packet-pgm.c index d261ee09a8..7e552647f4 100644 --- a/epan/dissectors/packet-pgm.c +++ b/epan/dissectors/packet-pgm.c @@ -109,15 +109,6 @@ static gboolean pgm_check_checksum = TRUE; #define PGM_OPT_REDIRECT_SIZE 12 #define PGM_OPT_FRAGMENT_SIZE 16 -/* - * Udp port for UDP encapsulation - */ -#define DEFAULT_UDP_ENCAP_UCAST_PORT 3055 -#define DEFAULT_UDP_ENCAP_MCAST_PORT 3056 - -static guint udp_encap_ucast_port = 0; -static guint udp_encap_mcast_port = 0; - static int proto_pgm = -1; static int ett_pgm = -1; static int ett_pgm_optbits = -1; @@ -1383,8 +1374,7 @@ proto_register_pgm(void) module_t *pgm_module; expert_module_t* expert_pgm; - proto_pgm = proto_register_protocol("Pragmatic General Multicast", - "PGM", "pgm"); + proto_pgm = proto_register_protocol("Pragmatic General Multicast", "PGM", "pgm"); proto_register_field_array(proto_pgm, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -1404,25 +1394,12 @@ proto_register_pgm(void) * dissector_add_for_decode_as is called so that pgm * is available for 'decode-as' */ - pgm_module = prefs_register_protocol(proto_pgm, proto_reg_handoff_pgm); + pgm_module = prefs_register_protocol(proto_pgm, NULL); prefs_register_bool_preference(pgm_module, "check_checksum", "Check the validity of the PGM checksum when possible", "Whether to check the validity of the PGM checksum", &pgm_check_checksum); - - prefs_register_uint_preference(pgm_module, "udp.encap_ucast_port", - "PGM Encap Unicast Port (standard is 3055)", - "PGM Encap is PGM packets encapsulated in UDP packets" - " (Note: This option is off, i.e. port is 0, by default)", - 10, &udp_encap_ucast_port); - - prefs_register_uint_preference(pgm_module, "udp.encap_mcast_port", - "PGM Encap Multicast Port (standard is 3056)", - "PGM Encap is PGM packets encapsulated in UDP packets" - " (Note: This option is off, i.e. port is 0, by default)", - 10, &udp_encap_mcast_port); - } /* The registration hand-off routine */ @@ -1433,33 +1410,11 @@ proto_register_pgm(void) void proto_reg_handoff_pgm(void) { - static gboolean initialized = FALSE; - static dissector_handle_t pgm_handle; - static guint old_udp_encap_ucast_port; - static guint old_udp_encap_mcast_port; + dissector_handle_t pgm_handle; - if (! initialized) { - pgm_handle = create_dissector_handle(dissect_pgm, proto_pgm); - dissector_add_for_decode_as("udp.port", pgm_handle); - dissector_add_uint("ip.proto", IP_PROTO_PGM, pgm_handle); - initialized = TRUE; - } else { - if (old_udp_encap_ucast_port != 0) { - dissector_delete_uint("udp.port", old_udp_encap_ucast_port, pgm_handle); - } - if (old_udp_encap_mcast_port != 0) { - dissector_delete_uint("udp.port", old_udp_encap_mcast_port, pgm_handle); - } - } - - if (udp_encap_ucast_port != 0) { - dissector_add_uint("udp.port", udp_encap_ucast_port, pgm_handle); - } - if (udp_encap_mcast_port != 0) { - dissector_add_uint("udp.port", udp_encap_mcast_port, pgm_handle); - } - old_udp_encap_ucast_port = udp_encap_ucast_port; - old_udp_encap_mcast_port = udp_encap_mcast_port; + pgm_handle = create_dissector_handle(dissect_pgm, proto_pgm); + dissector_add_uint_range_with_preference("udp.port", "", pgm_handle); + dissector_add_uint("ip.proto", IP_PROTO_PGM, pgm_handle); } /* diff --git a/epan/dissectors/packet-pktc.c b/epan/dissectors/packet-pktc.c index c1c162ad7d..e98f771adc 100644 --- a/epan/dissectors/packet-pktc.c +++ b/epan/dissectors/packet-pktc.c @@ -751,7 +751,7 @@ proto_reg_handoff_pktc(void) dissector_handle_t pktc_handle; pktc_handle = create_dissector_handle(dissect_pktc, proto_pktc); - dissector_add_uint("udp.port", PKTC_PORT, pktc_handle); + dissector_add_uint_with_preference("udp.port", PKTC_PORT, pktc_handle); } @@ -812,7 +812,7 @@ proto_reg_handoff_pktc_mtafqdn(void) dissector_handle_t pktc_mtafqdn_handle; pktc_mtafqdn_handle = create_dissector_handle(dissect_pktc_mtafqdn, proto_pktc_mtafqdn); - dissector_add_uint("udp.port", PKTC_MTAFQDN_PORT, pktc_mtafqdn_handle); + dissector_add_uint_with_preference("udp.port", PKTC_MTAFQDN_PORT, pktc_mtafqdn_handle); } /* diff --git a/epan/dissectors/packet-pnrp.c b/epan/dissectors/packet-pnrp.c index 5842cf00ee..794e6ca3c5 100644 --- a/epan/dissectors/packet-pnrp.c +++ b/epan/dissectors/packet-pnrp.c @@ -1486,7 +1486,7 @@ void proto_reg_handoff_pnrp(void) { dissector_handle_t pnrp_handle; pnrp_handle = create_dissector_handle(dissect_pnrp, proto_pnrp); - dissector_add_uint("udp.port",PNRP_PORT,pnrp_handle); + dissector_add_uint_with_preference("udp.port",PNRP_PORT,pnrp_handle); } /* diff --git a/epan/dissectors/packet-ptp.c b/epan/dissectors/packet-ptp.c index c74b682da5..117e554261 100644 --- a/epan/dissectors/packet-ptp.c +++ b/epan/dissectors/packet-ptp.c @@ -59,8 +59,7 @@ /**********************************************************/ /* Port definition's for PTP */ /**********************************************************/ -#define EVENT_PORT_PTP 319 -#define GENERAL_PORT_PTP 320 +#define PTP_PORT_RANGE "319-320" /* END Port definition's for PTP */ void proto_register_ptp(void); @@ -6258,8 +6257,7 @@ proto_reg_handoff_ptp(void) ptp_handle = create_dissector_handle(dissect_ptp, proto_ptp); ethertype_ptp_handle = create_dissector_handle(dissect_ptp_oE, proto_ptp); - dissector_add_uint("udp.port", EVENT_PORT_PTP, ptp_handle); - dissector_add_uint("udp.port", GENERAL_PORT_PTP, ptp_handle); + dissector_add_uint_range_with_preference("udp.port", PTP_PORT_RANGE, ptp_handle); dissector_add_uint("ethertype", ETHERTYPE_PTP, ethertype_ptp_handle); } diff --git a/epan/dissectors/packet-pulse.c b/epan/dissectors/packet-pulse.c index 658247287f..c08e15f011 100644 --- a/epan/dissectors/packet-pulse.c +++ b/epan/dissectors/packet-pulse.c @@ -29,12 +29,8 @@ # include "config.h" #include -#include -#define PORT_PULSE 539 - - -static guint pulse_port = PORT_PULSE; +#define PORT_PULSE 539 /* Not IANA registered */ void proto_register_pulse(void); void proto_reg_handoff_pulse(void); @@ -94,8 +90,6 @@ dissect_pulse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* void proto_register_pulse(void) { - module_t *pulse_module; - static hf_register_info hf[] = { { &hf_pulse_magic, { "Magic", "pulse.magic", @@ -108,42 +102,17 @@ proto_register_pulse(void) }; - proto_pulse = proto_register_protocol("PULSE protocol for Linux Virtual Server redundancy", - "PULSE", - "pulse"); + proto_pulse = proto_register_protocol("PULSE protocol for Linux Virtual Server redundancy", "PULSE", "pulse"); proto_register_field_array(proto_pulse, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - pulse_module = prefs_register_protocol(proto_pulse, proto_reg_handoff_pulse); - prefs_register_uint_preference(pulse_module, "udp.port", - "UDP Port", - "Set the UDP port for pulse", - 10, - &pulse_port); } void proto_reg_handoff_pulse(void) { - static gboolean initialized = FALSE; - - static int port = 0; - - static dissector_handle_t pulse_handle; - - if (initialized) - { - dissector_delete_uint("udp.port", port, pulse_handle); - } - else - { - pulse_handle = create_dissector_handle(dissect_pulse, - proto_pulse); - initialized = TRUE; - } - - port = pulse_port; - dissector_add_uint("udp.port", port, pulse_handle); + dissector_handle_t pulse_handle; + pulse_handle = create_dissector_handle(dissect_pulse, proto_pulse); + dissector_add_uint_with_preference("udp.port", PORT_PULSE, pulse_handle); } /* diff --git a/epan/dissectors/packet-pw-cesopsn.c b/epan/dissectors/packet-pw-cesopsn.c index 085c24fca8..5f581341c4 100644 --- a/epan/dissectors/packet-pw-cesopsn.c +++ b/epan/dissectors/packet-pw-cesopsn.c @@ -457,7 +457,7 @@ void proto_reg_handoff_pw_cesopsn(void) pw_cesopsn_mpls_handle = create_dissector_handle( dissect_pw_cesopsn_mpls, proto ); dissector_add_for_decode_as("mpls.label", pw_cesopsn_mpls_handle); - dissector_add_for_decode_as("udp.port", find_dissector("pw_cesopsn_udp")); + dissector_add_for_decode_as_with_preference("udp.port", find_dissector("pw_cesopsn_udp")); return; } diff --git a/epan/dissectors/packet-pw-satop.c b/epan/dissectors/packet-pw-satop.c index a66dc070a1..5905bf9170 100644 --- a/epan/dissectors/packet-pw-satop.c +++ b/epan/dissectors/packet-pw-satop.c @@ -473,7 +473,7 @@ void proto_reg_handoff_pw_satop(void) pw_satop_mpls_handle = create_dissector_handle( dissect_pw_satop_mpls, proto ); dissector_add_for_decode_as("mpls.label", pw_satop_mpls_handle); - dissector_add_for_decode_as("udp.port", find_dissector("pw_satop_udp")); + dissector_add_for_decode_as_with_preference("udp.port", find_dissector("pw_satop_udp")); } /* diff --git a/epan/dissectors/packet-quake.c b/epan/dissectors/packet-quake.c index 58c57d6994..77cde0daae 100644 --- a/epan/dissectors/packet-quake.c +++ b/epan/dissectors/packet-quake.c @@ -29,7 +29,6 @@ #include #include -#include void proto_register_quake(void); @@ -80,7 +79,6 @@ static dissector_handle_t quake_handle; /* I took these names directly out of the Q1 source. */ #define NET_HEADERSIZE 8 #define DEFAULTnet_hostport 26000 -static guint gbl_quakeServerPort=DEFAULTnet_hostport; #define NETFLAG_DATA 0x0001 #define NETFLAG_ACK 0x0002 @@ -581,40 +579,18 @@ proto_register_quake(void) &ett_quake_control_colors, &ett_quake_flags, }; - module_t *quake_module; - proto_quake = proto_register_protocol("Quake Network Protocol", - "QUAKE", "quake"); + proto_quake = proto_register_protocol("Quake Network Protocol", "QUAKE", "quake"); proto_register_field_array(proto_quake, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - /* Register a configuration option for port */ - quake_module = prefs_register_protocol(proto_quake, - proto_reg_handoff_quake); - prefs_register_uint_preference(quake_module, "udp.port", - "Quake Server UDP Port", - "Set the UDP port for the Quake Server", - 10, &gbl_quakeServerPort); } void proto_reg_handoff_quake(void) { - static gboolean Initialized=FALSE; - static guint ServerPort; - - if (!Initialized) { - quake_handle = create_dissector_handle(dissect_quake, proto_quake); - Initialized=TRUE; - } else { - dissector_delete_uint("udp.port", ServerPort, quake_handle); - } - - /* set port for future deletes */ - ServerPort=gbl_quakeServerPort; - - dissector_add_uint("udp.port", gbl_quakeServerPort, quake_handle); + quake_handle = create_dissector_handle(dissect_quake, proto_quake); + dissector_add_uint_with_preference("udp.port", DEFAULTnet_hostport, quake_handle); } /* diff --git a/epan/dissectors/packet-quake2.c b/epan/dissectors/packet-quake2.c index 5ca865a874..030c61a8b9 100644 --- a/epan/dissectors/packet-quake2.c +++ b/epan/dissectors/packet-quake2.c @@ -32,8 +32,10 @@ #include #include +#include void proto_register_quake2(void); +void proto_reg_handoff_quake2(void); static int proto_quake2 = -1; @@ -79,7 +81,7 @@ static gint ett_quake2_game_clc_cmd_move_bitfield = -1; static gint ett_quake2_game_clc_cmd_move_moves = -1; -#define PORT_MASTER 27910 +#define PORT_MASTER 27910 /* Not IANA registered */ static guint gbl_quake2ServerPort=PORT_MASTER; @@ -681,8 +683,13 @@ dissect_quake2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _ return tvb_captured_length(tvb); } - -void proto_reg_handoff_quake2(void); +static void +apply_quake2_prefs(void) +{ + /* Port preference used to determine client/server */ + pref_t *quake2_port = prefs_find_preference(prefs_find_module("quake2"), "udp.port"); + gbl_quake2ServerPort = *quake2_port->varp.uint; +} void proto_register_quake2(void) @@ -822,42 +829,22 @@ proto_register_quake2(void) &ett_quake2_game_clc_cmd_move_moves, &ett_quake2_game_clc_cmd_move_bitfield }; - module_t *quake2_module; - proto_quake2 = proto_register_protocol("Quake II Network Protocol", - "QUAKE2", "quake2"); + proto_quake2 = proto_register_protocol("Quake II Network Protocol", "QUAKE2", "quake2"); proto_register_field_array(proto_quake2, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); /* Register a configuration option for port */ - quake2_module = prefs_register_protocol(proto_quake2, - proto_reg_handoff_quake2); - prefs_register_uint_preference(quake2_module, "udp.port", - "Quake II Server UDP Port", - "Set the UDP port for the Quake II Server", - 10, &gbl_quake2ServerPort); + prefs_register_protocol(proto_quake2, apply_quake2_prefs); } - void proto_reg_handoff_quake2(void) { - static gboolean Initialized=FALSE; - static dissector_handle_t quake2_handle; - static guint ServerPort; + dissector_handle_t quake2_handle; + quake2_handle = create_dissector_handle(dissect_quake2, proto_quake2); - if (!Initialized) { - quake2_handle = create_dissector_handle(dissect_quake2, - proto_quake2); - Initialized=TRUE; - } else { - dissector_delete_uint("udp.port", ServerPort, quake2_handle); - } - - /* set port for future deletes */ - ServerPort=gbl_quake2ServerPort; - - dissector_add_uint("udp.port", gbl_quake2ServerPort, quake2_handle); + dissector_add_uint("udp.port", PORT_MASTER, quake2_handle); } /* diff --git a/epan/dissectors/packet-quake3.c b/epan/dissectors/packet-quake3.c index ed39a3c7ec..c3fa719827 100644 --- a/epan/dissectors/packet-quake3.c +++ b/epan/dissectors/packet-quake3.c @@ -557,14 +557,12 @@ proto_register_quake3(void) }; module_t *quake3_module; - proto_quake3 = proto_register_protocol("Quake III Arena Network Protocol", - "QUAKE3", "quake3"); + proto_quake3 = proto_register_protocol("Quake III Arena Network Protocol", "QUAKE3", "quake3"); proto_register_field_array(proto_quake3, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); /* Register a configuration option for port */ - quake3_module = prefs_register_protocol(proto_quake3, - proto_reg_handoff_quake3); + quake3_module = prefs_register_protocol(proto_quake3, proto_reg_handoff_quake3); prefs_register_uint_preference(quake3_module, "udp.arena_port", "Quake III Arena Server UDP Base Port", "Set the UDP base port for the Quake III Arena Server", @@ -600,7 +598,7 @@ proto_reg_handoff_quake3(void) server_port = gbl_quake3_server_port; master_port = gbl_quake3_master_port; - /* add dissectors */ + /* add dissectors. Port preference names to specific to use "auto" */ for (i=0;i<4;i++) dissector_add_uint("udp.port", gbl_quake3_server_port + i, quake3_handle); diff --git a/epan/dissectors/packet-quakeworld.c b/epan/dissectors/packet-quakeworld.c index d22e3d13d1..e3616e34b8 100644 --- a/epan/dissectors/packet-quakeworld.c +++ b/epan/dissectors/packet-quakeworld.c @@ -30,7 +30,10 @@ #include #include #include +#include + void proto_register_quakeworld(void); +void proto_reg_handoff_quakeworld(void); static int proto_quakeworld = -1; @@ -313,7 +316,7 @@ static const value_string names_direction[] = { /* I took this name and value directly out of the QW source. */ -#define PORT_MASTER 27500 +#define PORT_MASTER 27500 /* Not IANA registered */ static guint gbl_quakeworldServerPort=PORT_MASTER; @@ -685,8 +688,13 @@ dissect_quakeworld(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da return tvb_captured_length(tvb); } - -void proto_reg_handoff_quakeworld(void); +static void +apply_quakeworld_prefs(void) +{ + /* Port preference used to determine client/server */ + pref_t *quakeworld_port = prefs_find_preference(prefs_find_module("quakeworld"), "udp.port"); + gbl_quakeworldServerPort = *quakeworld_port->varp.uint; +} void proto_register_quakeworld(void) @@ -794,42 +802,23 @@ proto_register_quakeworld(void) &ett_quakeworld_game_clc, &ett_quakeworld_game_svc }; - module_t *quakeworld_module; - proto_quakeworld = proto_register_protocol("QuakeWorld Network Protocol", - "QUAKEWORLD", "quakeworld"); + proto_quakeworld = proto_register_protocol("QuakeWorld Network Protocol", "QUAKEWORLD", "quakeworld"); proto_register_field_array(proto_quakeworld, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); /* Register a configuration option for port */ - quakeworld_module = prefs_register_protocol(proto_quakeworld, - proto_reg_handoff_quakeworld); - prefs_register_uint_preference(quakeworld_module, "udp.port", - "QuakeWorld Server UDP Port", - "Set the UDP port for the QuakeWorld Server", - 10, &gbl_quakeworldServerPort); + prefs_register_protocol(proto_quakeworld, apply_quakeworld_prefs); } void proto_reg_handoff_quakeworld(void) { - static gboolean Initialized=FALSE; - static dissector_handle_t quakeworld_handle; - static guint ServerPort; + dissector_handle_t quakeworld_handle; - if (!Initialized) { - quakeworld_handle = create_dissector_handle(dissect_quakeworld, - proto_quakeworld); - Initialized=TRUE; - } else { - dissector_delete_uint("udp.port", ServerPort, quakeworld_handle); - } - - /* set port for future deletes */ - ServerPort=gbl_quakeworldServerPort; - - dissector_add_uint("udp.port", gbl_quakeworldServerPort, quakeworld_handle); + quakeworld_handle = create_dissector_handle(dissect_quakeworld, proto_quakeworld); + dissector_add_uint("udp.port", PORT_MASTER, quakeworld_handle); } /* diff --git a/epan/dissectors/packet-quic.c b/epan/dissectors/packet-quic.c index b2b6c92c62..b906eee64a 100644 --- a/epan/dissectors/packet-quic.c +++ b/epan/dissectors/packet-quic.c @@ -177,8 +177,7 @@ static int hf_quic_padding = -1; static int hf_quic_stream_data = -1; static int hf_quic_payload = -1; -static guint g_quic_port = 80; -static guint g_quics_port = 443; +#define QUIC_PORT_RANGE "80,443" static gboolean g_quic_debug = FALSE; static gint ett_quic = -1; @@ -2847,22 +2846,12 @@ proto_register_quic(void) expert_module_t *expert_quic; - proto_quic = proto_register_protocol("QUIC (Quick UDP Internet Connections)", - "QUIC", "quic"); + proto_quic = proto_register_protocol("QUIC (Quick UDP Internet Connections)", "QUIC", "quic"); proto_register_field_array(proto_quic, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - quic_module = prefs_register_protocol(proto_quic, proto_reg_handoff_quic); - - - prefs_register_uint_preference(quic_module, "udp.quic.port", "QUIC UDP Port", - "QUIC UDP port if other than the default", - 10, &g_quic_port); - - prefs_register_uint_preference(quic_module, "udp.quics.port", "QUICS UDP Port", - "QUICS (Secure) UDP port if other than the default", - 10, &g_quics_port); + quic_module = prefs_register_protocol(proto_quic, NULL); prefs_register_bool_preference(quic_module, "debug.quic", "Force decode of all QUIC Payload", @@ -2876,27 +2865,10 @@ proto_register_quic(void) void proto_reg_handoff_quic(void) { - static gboolean initialized = FALSE; - static dissector_handle_t quic_handle; - static int current_quic_port; - static int current_quics_port; + dissector_handle_t quic_handle; - if (!initialized) { - quic_handle = create_dissector_handle(dissect_quic, - proto_quic); - initialized = TRUE; - - } else { - dissector_delete_uint("udp.port", current_quic_port, quic_handle); - dissector_delete_uint("udp.port", current_quics_port, quic_handle); - } - - current_quic_port = g_quic_port; - current_quics_port = g_quics_port; - - - dissector_add_uint("udp.port", current_quic_port, quic_handle); - dissector_add_uint("udp.port", current_quics_port, quic_handle); + quic_handle = create_dissector_handle(dissect_quic, proto_quic); + dissector_add_uint_range_with_preference("udp.port", QUIC_PORT_RANGE, quic_handle); } diff --git a/epan/dissectors/packet-radius.c b/epan/dissectors/packet-radius.c index b49f0967d1..0352a9b12b 100644 --- a/epan/dissectors/packet-radius.c +++ b/epan/dissectors/packet-radius.c @@ -221,8 +221,6 @@ static dissector_handle_t eap_handle; static const gchar *shared_secret = ""; static gboolean validate_authenticator = FALSE; static gboolean show_length = FALSE; -static guint alt_port_pref = 0; -static range_t *global_ports_range; static guint8 authenticator[AUTHENTICATOR_LENGTH]; @@ -2635,7 +2633,7 @@ proto_register_radius(void) proto_radius = proto_register_protocol("RADIUS Protocol", "RADIUS", "radius"); register_dissector("radius", dissect_radius, proto_radius); register_init_routine(&radius_init_protocol); - radius_module = prefs_register_protocol(proto_radius, proto_reg_handoff_radius); + radius_module = prefs_register_protocol(proto_radius, NULL); prefs_register_string_preference(radius_module, "shared_secret", "Shared Secret", "Shared secret used to decode User Passwords and validate Response Authenticators", &shared_secret); @@ -2645,12 +2643,6 @@ proto_register_radius(void) prefs_register_bool_preference(radius_module, "show_length", "Show AVP Lengths", "Whether to add or not to the tree the AVP's payload length", &show_length); - prefs_register_uint_preference(radius_module, "alternate_port", "Alternate Port", - "An alternate UDP port to decode as RADIUS", 10, &alt_port_pref); - - range_convert_str(&global_ports_range, DEFAULT_RADIUS_PORT_RANGE, MAX_UDP_PORT); - prefs_register_range_preference(radius_module, "ports", "RADIUS ports", - "A list of UDP ports to decode as RADIUS", &global_ports_range, MAX_UDP_PORT); prefs_register_obsolete_preference(radius_module, "request_ttl"); radius_tap = register_tap("radius"); @@ -2669,34 +2661,11 @@ proto_register_radius(void) void proto_reg_handoff_radius(void) { - static gboolean initialized = FALSE; - static dissector_handle_t radius_handle; - static range_t *ports_range; + dissector_handle_t radius_handle; - if (!initialized) { - radius_handle = find_dissector("radius"); - eap_handle = find_dissector_add_dependency("eap", proto_radius); - - initialized = TRUE; - } else { - dissector_delete_uint_range("udp.port", ports_range, radius_handle); - g_free(ports_range); - } - - if (alt_port_pref != 0) { - /* Append it to the range of ports but only if necessary */ - if (!value_is_in_range(global_ports_range, alt_port_pref)) { - global_ports_range = (range_t *)g_realloc(global_ports_range, - /* see epan/range.c:range_copy function */ - sizeof (range_t) - sizeof (range_admin_t) + (global_ports_range->nranges + 1) * sizeof (range_admin_t)); - global_ports_range->ranges[global_ports_range->nranges].low = alt_port_pref; - global_ports_range->ranges[global_ports_range->nranges].high = alt_port_pref; - global_ports_range->nranges++; - } - } - - ports_range = range_copy(global_ports_range); - dissector_add_uint_range("udp.port", ports_range, radius_handle); + radius_handle = find_dissector("radius"); + eap_handle = find_dissector_add_dependency("eap", proto_radius); + dissector_add_uint_range_with_preference("udp.port", DEFAULT_RADIUS_PORT_RANGE, radius_handle); } /* diff --git a/epan/dissectors/packet-rdt.c b/epan/dissectors/packet-rdt.c index 1f622723c4..30e6546561 100644 --- a/epan/dissectors/packet-rdt.c +++ b/epan/dissectors/packet-rdt.c @@ -163,9 +163,7 @@ static gint ett_rdt_bw_probing_flags = -1; static expert_field ei_rdt_packet_length = EI_INIT; -/* Port preference settings */ -static gboolean global_rdt_register_udp_port = FALSE; -static guint global_rdt_udp_port = 6970; +#define RDT_UDP_PORT 6970 void proto_register_rdt(void); void proto_reg_handoff_rdt(void); @@ -2165,62 +2163,20 @@ void proto_register_rdt(void) register_dissector("rdt", dissect_rdt, proto_rdt); /* Preference settings */ - rdt_module = prefs_register_protocol(proto_rdt, proto_reg_handoff_rdt); + rdt_module = prefs_register_protocol(proto_rdt, NULL); prefs_register_bool_preference(rdt_module, "show_setup_info", "Show stream setup information", "Where available, show which protocol and frame caused " "this RDT stream to be created", &global_rdt_show_setup_info); - prefs_register_bool_preference(rdt_module, "register_udp_port", - "Register default UDP client port", - "Register a client UDP port for RDT traffic", - &global_rdt_register_udp_port); - - /* TODO: better to specify a range of ports instead? */ - prefs_register_uint_preference(rdt_module, "default_udp_port", - "Default UDP client port", - "Set the UDP port for clients", - 10, &global_rdt_udp_port); - + prefs_register_obsolete_preference(rdt_module, "register_udp_port"); } void proto_reg_handoff_rdt(void) { - static gboolean rdt_prefs_initialized = FALSE; - /* Also store this so can delete registered setting properly */ - static gboolean rdt_register_udp_port; - static guint rdt_udp_port; - - if (!rdt_prefs_initialized) - { - /* Register this dissector as one that can be selected by a - UDP port number. */ - rdt_handle = find_dissector("rdt"); - dissector_add_for_decode_as("udp.port", rdt_handle); - rdt_prefs_initialized = TRUE; - } - else - { - /* Undo any current port registrations */ - if (rdt_register_udp_port) - { - dissector_delete_uint("udp.port", rdt_udp_port, rdt_handle); - } - } - - /* Remember whether a port is set for next time */ - rdt_register_udp_port = global_rdt_register_udp_port; - - /* Add any new port registration */ - if (global_rdt_register_udp_port) - { - /* Set our port number for future use */ - rdt_udp_port = global_rdt_udp_port; - - /* And register with this port */ - dissector_add_uint("udp.port", global_rdt_udp_port, rdt_handle); - } + rdt_handle = find_dissector("rdt"); + dissector_add_uint_with_preference("udp.port", RDT_UDP_PORT, rdt_handle); } /* diff --git a/epan/dissectors/packet-redbackli.c b/epan/dissectors/packet-redbackli.c index ac64c51f9f..46cb174976 100644 --- a/epan/dissectors/packet-redbackli.c +++ b/epan/dissectors/packet-redbackli.c @@ -276,8 +276,7 @@ void proto_register_redbackli(void) { &ett_redbackli }; - proto_redbackli = proto_register_protocol("Redback Lawful Intercept", - "RedbackLI", "redbackli"); + proto_redbackli = proto_register_protocol("Redback Lawful Intercept", "RedbackLI", "redbackli"); proto_register_field_array(proto_redbackli, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -291,7 +290,7 @@ void proto_reg_handoff_redbackli(void) { ip_handle = find_dissector_add_dependency("ip", proto_redbackli); redbackli_handle = find_dissector("redbackli"); - dissector_add_for_decode_as("udp.port", redbackli_handle); + dissector_add_for_decode_as_with_preference("udp.port", redbackli_handle); heur_dissector_add("udp", redbackli_dissect_heur, "Redback Lawful Intercept over UDP", "redbackli_udp", proto_redbackli, HEURISTIC_ENABLE); } diff --git a/epan/dissectors/packet-reload-framing.c b/epan/dissectors/packet-reload-framing.c index 142c0cdc7c..42de6f4311 100644 --- a/epan/dissectors/packet-reload-framing.c +++ b/epan/dissectors/packet-reload-framing.c @@ -593,7 +593,7 @@ proto_reg_handoff_reload_framing(void) reload_handle = find_dissector_add_dependency("reload", proto_reload_framing); dissector_add_uint_with_preference("tcp.port", TCP_PORT_RELOAD, reload_framing_tcp_handle); - dissector_add_uint("udp.port", UDP_PORT_RELOAD, reload_framing_udp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_RELOAD, reload_framing_udp_handle); heur_dissector_add("udp", dissect_reload_framing_heur, "RELOAD Framing over UDP", "reload_framing_udp", proto_reload_framing, HEURISTIC_ENABLE); heur_dissector_add("tcp", dissect_reload_framing_heur, "RELOAD Framing over TCP", "reload_framing_tcp", proto_reload_framing, HEURISTIC_ENABLE); diff --git a/epan/dissectors/packet-riemann.c b/epan/dissectors/packet-riemann.c index 5ee4093fd1..261c718ee4 100644 --- a/epan/dissectors/packet-riemann.c +++ b/epan/dissectors/packet-riemann.c @@ -75,7 +75,6 @@ #include "config.h" #include -#include #include #include "packet-tcp.h" @@ -111,8 +110,6 @@ static int hf_riemann_state_time = -1; static int hf_riemann_state_state = -1; static int hf_riemann_state_once = -1; -static guint udp_port_pref = 0; - static gint ett_riemann = -1; static gint ett_query = -1; static gint ett_event = -1; @@ -672,7 +669,6 @@ dissect_riemann_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *d void proto_register_riemann(void) { - module_t *riemann_module; expert_module_t *riemann_expert_module; static hf_register_info hf[] = { @@ -812,31 +808,17 @@ proto_register_riemann(void) proto_register_field_array(proto_riemann, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - riemann_module = prefs_register_protocol(proto_riemann, proto_reg_handoff_riemann); - - prefs_register_uint_preference(riemann_module, "udp.port", "Riemann UDP Port", - " riemann UDP port if other than the default", - 10, &udp_port_pref); } void proto_reg_handoff_riemann(void) { - static gboolean initialized = FALSE; - static dissector_handle_t riemann_udp_handle, riemann_tcp_handle; - static int current_udp_port; + dissector_handle_t riemann_udp_handle, riemann_tcp_handle; - if (!initialized) { - riemann_udp_handle = create_dissector_handle(dissect_riemann_udp, proto_riemann); - riemann_tcp_handle = create_dissector_handle(dissect_riemann_tcp, proto_riemann); - dissector_add_for_decode_as_with_preference("tcp.port", riemann_tcp_handle); - initialized = TRUE; - } else { - dissector_delete_uint("udp.port", current_udp_port, riemann_udp_handle); - } - current_udp_port = udp_port_pref; - dissector_add_uint("udp.port", current_udp_port, riemann_udp_handle); + riemann_udp_handle = create_dissector_handle(dissect_riemann_udp, proto_riemann); + riemann_tcp_handle = create_dissector_handle(dissect_riemann_tcp, proto_riemann); + dissector_add_for_decode_as_with_preference("tcp.port", riemann_tcp_handle); + dissector_add_for_decode_as_with_preference("udp.port", riemann_udp_handle); } /* diff --git a/epan/dissectors/packet-rip.c b/epan/dissectors/packet-rip.c index 93e42c6542..9cd2108b36 100644 --- a/epan/dissectors/packet-rip.c +++ b/epan/dissectors/packet-rip.c @@ -393,7 +393,7 @@ proto_register_rip(void) void proto_reg_handoff_rip(void) { - dissector_add_uint("udp.port", UDP_PORT_RIP, rip_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_RIP, rip_handle); } /* diff --git a/epan/dissectors/packet-ripng.c b/epan/dissectors/packet-ripng.c index 7991b666b1..a81c4bf2dc 100644 --- a/epan/dissectors/packet-ripng.c +++ b/epan/dissectors/packet-ripng.c @@ -172,7 +172,7 @@ proto_reg_handoff_ripng(void) dissector_handle_t ripng_handle; ripng_handle = create_dissector_handle(dissect_ripng, proto_ripng); - dissector_add_uint("udp.port", UDP_PORT_RIPNG, ripng_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_RIPNG, ripng_handle); } /* diff --git a/epan/dissectors/packet-rmcp.c b/epan/dissectors/packet-rmcp.c index 2df5acd1bb..6a880d3806 100644 --- a/epan/dissectors/packet-rmcp.c +++ b/epan/dissectors/packet-rmcp.c @@ -255,7 +255,7 @@ proto_reg_handoff_rmcp(void) dissector_handle_t rmcp_handle; rmcp_handle = create_dissector_handle(dissect_rmcp, proto_rmcp); - dissector_add_uint("udp.port", UDP_PORT_RMCP, rmcp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_RMCP, rmcp_handle); } void @@ -264,7 +264,7 @@ proto_reg_handoff_rsp(void) dissector_handle_t rsp_handle; rsp_handle = create_dissector_handle(dissect_rsp, proto_rsp); - dissector_add_uint("udp.port", UDP_PORT_RMCP_SECURE, rsp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_RMCP_SECURE, rsp_handle); } /* diff --git a/epan/dissectors/packet-rmt-alc.c b/epan/dissectors/packet-rmt-alc.c index 68de96c4d0..9ea477387c 100644 --- a/epan/dissectors/packet-rmt-alc.c +++ b/epan/dissectors/packet-rmt-alc.c @@ -63,7 +63,6 @@ static dissector_handle_t xml_handle; static dissector_handle_t rmt_lct_handle; static dissector_handle_t rmt_fec_handle; -static guint g_default_udp_port = 0; /* 4001 */ static gboolean g_codepoint_as_fec_encoding = TRUE; static gint g_ext_192 = LCT_PREFS_EXT_192_FLUTE; static gint g_ext_193 = LCT_PREFS_EXT_193_FLUTE; @@ -193,16 +192,10 @@ void proto_register_alc(void) expert_register_field_array(expert_rmt_alc, ei, array_length(ei)); /* Register preferences */ - module = prefs_register_protocol(proto_rmt_alc, proto_reg_handoff_alc); + module = prefs_register_protocol(proto_rmt_alc, NULL); prefs_register_obsolete_preference(module, "default.udp_port.enabled"); - prefs_register_uint_preference(module, - "default.udp_port", - "UDP destination port", - "Specifies the UDP destination port for automatic dissection of ALC packets", - 10, &g_default_udp_port); - prefs_register_bool_preference(module, "lct.codepoint_as_fec_id", "LCT Codepoint as FEC Encoding ID", @@ -228,30 +221,13 @@ void proto_register_alc(void) void proto_reg_handoff_alc(void) { - static dissector_handle_t handle; - static gboolean preferences_initialized = FALSE; - static guint old_udp_port = 0; + dissector_handle_t handle; - if (!preferences_initialized) - { - preferences_initialized = TRUE; - handle = create_dissector_handle(dissect_alc, proto_rmt_alc); - dissector_add_for_decode_as("udp.port", handle); - xml_handle = find_dissector_add_dependency("xml", proto_rmt_alc); - rmt_lct_handle = find_dissector_add_dependency("rmt-lct", proto_rmt_alc); - rmt_fec_handle = find_dissector_add_dependency("rmt-fec", proto_rmt_alc); - } - - /* Register UDP port for dissection */ - if(old_udp_port != 0 && old_udp_port != g_default_udp_port){ - dissector_delete_uint("udp.port", old_udp_port, handle); - } - - if(g_default_udp_port != 0 && old_udp_port != g_default_udp_port) { - dissector_add_uint("udp.port", g_default_udp_port, handle); - } - - old_udp_port = g_default_udp_port; + handle = create_dissector_handle(dissect_alc, proto_rmt_alc); + dissector_add_for_decode_as_with_preference("udp.port", handle); + xml_handle = find_dissector_add_dependency("xml", proto_rmt_alc); + rmt_lct_handle = find_dissector_add_dependency("rmt-lct", proto_rmt_alc); + rmt_fec_handle = find_dissector_add_dependency("rmt-fec", proto_rmt_alc); } /* diff --git a/epan/dissectors/packet-rmt-norm.c b/epan/dissectors/packet-rmt-norm.c index ffdb6e877c..d5afcfbdad 100644 --- a/epan/dissectors/packet-rmt-norm.c +++ b/epan/dissectors/packet-rmt-norm.c @@ -977,7 +977,7 @@ void proto_reg_handoff_norm(void) static dissector_handle_t handle; handle = create_dissector_handle(dissect_norm, proto_rmt_norm); - dissector_add_for_decode_as("udp.port", handle); + dissector_add_for_decode_as_with_preference("udp.port", handle); heur_dissector_add("udp", dissect_norm_heur, "NORM over UDP", "rmt_norm_udp", proto_rmt_norm, HEURISTIC_DISABLE); rmt_fec_handle = find_dissector_add_dependency("rmt-fec", proto_rmt_norm); diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c index 498c4bd94f..e6bd7fa9ca 100644 --- a/epan/dissectors/packet-rpc.c +++ b/epan/dissectors/packet-rpc.c @@ -4438,7 +4438,7 @@ proto_reg_handoff_rpc(void) rpc_tcp_handle = find_dissector("rpc-tcp"); dissector_add_uint_with_preference("tcp.port", RPC_TCP_PORT, rpc_tcp_handle); rpc_handle = find_dissector("rpc"); - dissector_add_uint("udp.port", 111, rpc_handle); + dissector_add_uint_with_preference("udp.port", RPC_TCP_PORT, rpc_handle); heur_dissector_add("tcp", dissect_rpc_tcp_heur, "RPC over TCP", "rpc_tcp", proto_rpc, HEURISTIC_ENABLE); heur_dissector_add("udp", dissect_rpc_heur, "RPC over UDP", "rpc_udp", proto_rpc, HEURISTIC_ENABLE); diff --git a/epan/dissectors/packet-rsip.c b/epan/dissectors/packet-rsip.c index 2c4689038a..5d30c56874 100644 --- a/epan/dissectors/packet-rsip.c +++ b/epan/dissectors/packet-rsip.c @@ -1245,7 +1245,7 @@ proto_reg_handoff_rsip(void) dissector_handle_t rsip_handle; rsip_handle = create_dissector_handle(dissect_rsip, proto_rsip); - dissector_add_uint("udp.port", UDP_PORT_RSIP, rsip_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_RSIP, rsip_handle); dissector_add_uint_with_preference("tcp.port", TCP_PORT_RSIP, rsip_handle); } diff --git a/epan/dissectors/packet-rsvp.c b/epan/dissectors/packet-rsvp.c index 3c5307f2c6..e2ef83cff0 100644 --- a/epan/dissectors/packet-rsvp.c +++ b/epan/dissectors/packet-rsvp.c @@ -9574,7 +9574,7 @@ proto_reg_handoff_rsvp(void) rsvpe2ei_handle = create_dissector_handle(dissect_rsvp_e2ei, proto_rsvp_e2e1); dissector_add_uint("ip.proto", IP_PROTO_RSVP, rsvp_handle); dissector_add_uint("ip.proto", IP_PROTO_RSVPE2EI, rsvpe2ei_handle); - dissector_add_uint("udp.port", UDP_PORT_PRSVP, rsvp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_PRSVP, rsvp_handle); rsvp_tap = register_tap("rsvp"); } diff --git a/epan/dissectors/packet-rtcp.c b/epan/dissectors/packet-rtcp.c index d991e22aa4..1c5e02b188 100644 --- a/epan/dissectors/packet-rtcp.c +++ b/epan/dissectors/packet-rtcp.c @@ -6544,7 +6544,7 @@ proto_reg_handoff_rtcp(void) * UDP port number. */ rtcp_handle = find_dissector("rtcp"); - dissector_add_for_decode_as("udp.port", rtcp_handle); + dissector_add_for_decode_as_with_preference("udp.port", rtcp_handle); dissector_add_for_decode_as("flip.payload", rtcp_handle ); heur_dissector_add( "udp", dissect_rtcp_heur_udp, "RTCP over UDP", "rtcp_udp", proto_rtcp, HEURISTIC_ENABLE); diff --git a/epan/dissectors/packet-rtls.c b/epan/dissectors/packet-rtls.c index 5c18bda9c2..9e17ce779a 100644 --- a/epan/dissectors/packet-rtls.c +++ b/epan/dissectors/packet-rtls.c @@ -787,7 +787,7 @@ proto_reg_handoff_rtls(void) dissector_handle_t rtls_handle; rtls_handle = create_dissector_handle(dissect_rtls, proto_rtls); - dissector_add_for_decode_as("udp.port", rtls_handle); + dissector_add_for_decode_as_with_preference("udp.port", rtls_handle); } /* diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c index 9868e08df8..ab01da6cde 100644 --- a/epan/dissectors/packet-rtp.c +++ b/epan/dissectors/packet-rtp.c @@ -267,9 +267,6 @@ static gint ett_pkt_ccc = -1; static expert_field ei_rtp_fragment_unfinished = EI_INIT; static expert_field ei_rtp_padding_missing = EI_INIT; -/* PacketCable CCC port preference */ -static guint global_pkt_ccc_udp_port = 0; - /* RFC 5285 Header extensions */ static int hf_rtp_ext_rfc5285_id = -1; static int hf_rtp_ext_rfc5285_length = -1; @@ -2760,21 +2757,11 @@ proto_register_pkt_ccc(void) &ett_pkt_ccc, }; - module_t *pkt_ccc_module; - - proto_pkt_ccc = proto_register_protocol("PacketCable Call Content Connection", - "PKT CCC", "pkt_ccc"); + proto_pkt_ccc = proto_register_protocol("PacketCable Call Content Connection", "PKT CCC", "pkt_ccc"); proto_register_field_array(proto_pkt_ccc, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); register_dissector("pkt_ccc", dissect_pkt_ccc, proto_pkt_ccc); - - pkt_ccc_module = prefs_register_protocol(proto_pkt_ccc, proto_reg_handoff_pkt_ccc); - - prefs_register_uint_preference(pkt_ccc_module, "udp_port", - "UDP port", - "Decode packets on this UDP port as PacketCable CCC", - 10, &global_pkt_ccc_udp_port); } void @@ -2784,24 +2771,10 @@ proto_reg_handoff_pkt_ccc(void) * Register this dissector as one that can be selected by a * UDP port number. */ - static gboolean initialized = FALSE; - static dissector_handle_t pkt_ccc_handle; - static guint saved_pkt_ccc_udp_port; + dissector_handle_t pkt_ccc_handle; - if (!initialized) { - pkt_ccc_handle = find_dissector("pkt_ccc"); - dissector_add_for_decode_as("udp.port", pkt_ccc_handle); - initialized = TRUE; - } else { - if (saved_pkt_ccc_udp_port != 0) { - dissector_delete_uint("udp.port", saved_pkt_ccc_udp_port, pkt_ccc_handle); - } - } - - if (global_pkt_ccc_udp_port != 0) { - dissector_add_uint("udp.port", global_pkt_ccc_udp_port, pkt_ccc_handle); - } - saved_pkt_ccc_udp_port = global_pkt_ccc_udp_port; + pkt_ccc_handle = find_dissector("pkt_ccc"); + dissector_add_for_decode_as_with_preference("udp.port", pkt_ccc_handle); } /* Register RTP */ diff --git a/epan/dissectors/packet-rtpproxy.c b/epan/dissectors/packet-rtpproxy.c index 3600e56d9a..7323afdf5a 100644 --- a/epan/dissectors/packet-rtpproxy.c +++ b/epan/dissectors/packet-rtpproxy.c @@ -277,7 +277,6 @@ static gint ett_rtpproxy_ng_bencode = -1; /* Default values */ #define RTPPROXY_PORT 22222 /* Not IANA registered */ -static guint rtpproxy_udp_port = RTPPROXY_PORT; static gboolean rtpproxy_establish_conversation = TRUE; /* See - https://www.opensips.org/html/docs/modules/1.10.x/rtpproxy.html#id293555 */ /* See - http://www.kamailio.org/docs/modules/4.3.x/modules/rtpproxy.html#idp15794952 */ @@ -1440,11 +1439,7 @@ proto_register_rtpproxy(void) &ett_rtpproxy_ng_bencode }; - proto_rtpproxy = proto_register_protocol ( - "Sippy RTPproxy Protocol", /* name */ - "RTPproxy", /* short name */ - "rtpproxy" /* abbrev */ - ); + proto_rtpproxy = proto_register_protocol ("Sippy RTPproxy Protocol", "RTPproxy", "rtpproxy"); proto_register_field_array(proto_rtpproxy, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -1454,12 +1449,6 @@ proto_register_rtpproxy(void) rtpproxy_module = prefs_register_protocol(proto_rtpproxy, proto_reg_handoff_rtpproxy); - prefs_register_uint_preference(rtpproxy_module, "udp.port", - "RTPproxy UDP Port", /* Title */ - "RTPproxy UDP Port", /* Descr */ - 10, - &rtpproxy_udp_port); - prefs_register_bool_preference(rtpproxy_module, "establish_conversation", "Establish Media Conversation", "Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based " @@ -1476,11 +1465,9 @@ proto_register_rtpproxy(void) void proto_reg_handoff_rtpproxy(void) { - static guint old_rtpproxy_udp_port = 0; - static gboolean rtpproxy_initialized = FALSE; - static dissector_handle_t rtpproxy_tcp_handle, rtpproxy_udp_handle; + dissector_handle_t rtpproxy_tcp_handle, rtpproxy_udp_handle; if(!rtpproxy_initialized){ rtpproxy_tcp_handle = create_dissector_handle(dissect_rtpproxy, proto_rtpproxy); @@ -1488,16 +1475,10 @@ proto_reg_handoff_rtpproxy(void) /* Register TCP port for dissection */ dissector_add_uint_with_preference("tcp.port", RTPPROXY_PORT, rtpproxy_tcp_handle); + dissector_add_uint_with_preference("udp.port", RTPPROXY_PORT, rtpproxy_udp_handle); rtpproxy_initialized = TRUE; } - /* Register UDP port for dissection */ - if(old_rtpproxy_udp_port != 0 && old_rtpproxy_udp_port != rtpproxy_udp_port) - dissector_delete_uint("udp.port", old_rtpproxy_udp_port, rtpproxy_udp_handle); - if(rtpproxy_udp_port != 0 && old_rtpproxy_udp_port != rtpproxy_udp_port) - dissector_add_uint("udp.port", rtpproxy_udp_port, rtpproxy_udp_handle); - old_rtpproxy_udp_port = rtpproxy_udp_port; - rtcp_handle = find_dissector_add_dependency("rtcp", proto_rtpproxy); rtp_events_handle = find_dissector_add_dependency("rtpevent", proto_rtpproxy); rtp_handle = find_dissector_add_dependency("rtp", proto_rtpproxy); diff --git a/epan/dissectors/packet-rudp.c b/epan/dissectors/packet-rudp.c index ea8d25f5ed..8e1478dc20 100644 --- a/epan/dissectors/packet-rudp.c +++ b/epan/dissectors/packet-rudp.c @@ -43,21 +43,10 @@ #include "config.h" #include -#include void proto_register_rudp(void); -/* Disable rudp by default. The previously hardcoded value of - * 7000 (used by Cisco) collides with afs and as the draft states: - * "RUDP doesn't place any restrictions on which UDP port numbers are used. - * Valid port numbers are ports not defined in RFC 1700." - */ -/* FIXME: The proper solution would be to convert this dissector into - * heuristic dissector, but it isn't complete anyway. - */ -static guint udp_port = 0; - void proto_reg_handoff_rudp(void); static int proto_rudp = -1; @@ -213,50 +202,29 @@ proto_register_rudp(void) }; - proto_rudp = proto_register_protocol ( - "Reliable UDP", /* name */ - "RUDP", /* short name */ - "rudp" /* abbrev */ - ); + proto_rudp = proto_register_protocol ("Reliable UDP", "RUDP", "rudp"); proto_register_field_array(proto_rudp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - { - module_t *rudp_module; - rudp_module = prefs_register_protocol(proto_rudp, proto_reg_handoff_rudp); - prefs_register_uint_preference(rudp_module, - "udp.port", - "UDP port for RUDP", - "Set the UDP port for Reliable UDP traffic", - 10, - &udp_port); - } - } void proto_reg_handoff_rudp(void) { - static gboolean initialized = FALSE; - static dissector_handle_t rudp_handle; - static guint saved_udp_port; + dissector_handle_t rudp_handle; - if (!initialized) { - rudp_handle = create_dissector_handle(dissect_rudp, proto_rudp); - dissector_add_for_decode_as("udp.port", rudp_handle); - sm_handle = find_dissector_add_dependency("sm", proto_rudp); - initialized = TRUE; - } else { - if (saved_udp_port != 0) { - dissector_delete_uint("udp.port", saved_udp_port, rudp_handle); - } - } +/* Disable rudp by default. The previously hardcoded value of + * 7000 (used by Cisco) collides with afs and as the draft states: + * "RUDP doesn't place any restrictions on which UDP port numbers are used. + * Valid port numbers are ports not defined in RFC 1700." + */ +/* FIXME: The proper solution would be to convert this dissector into + * heuristic dissector, but it isn't complete anyway. + */ - if (udp_port != 0) { - dissector_add_uint("udp.port", udp_port, rudp_handle); - } - saved_udp_port = udp_port; + rudp_handle = create_dissector_handle(dissect_rudp, proto_rudp); + dissector_add_for_decode_as_with_preference("udp.port", rudp_handle); + sm_handle = find_dissector_add_dependency("sm", proto_rudp); } /* diff --git a/epan/dissectors/packet-rx.c b/epan/dissectors/packet-rx.c index 0d514b9022..34533307bf 100644 --- a/epan/dissectors/packet-rx.c +++ b/epan/dissectors/packet-rx.c @@ -42,9 +42,7 @@ void proto_register_rx(void); void proto_reg_handoff_rx(void); -#define UDP_PORT_RX_LOW 7000 -#define UDP_PORT_RX_HIGH 7009 -#define UDP_PORT_RX_AFS_BACKUPS 7021 +#define UDP_PORT_RX_RANGE "7000-7009,7021" static const value_string rx_types[] = { { RX_PACKET_TYPE_DATA, "data" }, @@ -755,19 +753,13 @@ proto_reg_handoff_rx(void) { dissector_handle_t rx_handle; - int port; - /* * Get handle for the AFS dissector. */ afs_handle = find_dissector_add_dependency("afs", proto_rx); - /* Ports in the range UDP_PORT_RX_LOW to UDP_PORT_RX_HIGH - are all used for various AFS services. */ rx_handle = create_dissector_handle(dissect_rx, proto_rx); - for (port = UDP_PORT_RX_LOW; port <= UDP_PORT_RX_HIGH; port++) - dissector_add_uint("udp.port", port, rx_handle); - dissector_add_uint("udp.port", UDP_PORT_RX_AFS_BACKUPS, rx_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_RX_RANGE, rx_handle); } /* diff --git a/epan/dissectors/packet-sabp.c b/epan/dissectors/packet-sabp.c index f7297d81e1..a5e7b7a2ca 100644 --- a/epan/dissectors/packet-sabp.c +++ b/epan/dissectors/packet-sabp.c @@ -2290,7 +2290,7 @@ void proto_register_sabp(void) { void proto_reg_handoff_sabp(void) { - dissector_add_uint("udp.port", SABP_PORT, sabp_handle); + dissector_add_uint_with_preference("udp.port", SABP_PORT, sabp_handle); dissector_add_uint_with_preference("tcp.port", SABP_PORT, sabp_tcp_handle); dissector_add_uint("sctp.ppi", SABP_PAYLOAD_PROTOCOL_ID, sabp_handle); diff --git a/epan/dissectors/packet-sap.c b/epan/dissectors/packet-sap.c index 7701627724..6dc2c036e1 100644 --- a/epan/dissectors/packet-sap.c +++ b/epan/dissectors/packet-sap.c @@ -383,7 +383,7 @@ proto_reg_handoff_sap(void) dissector_handle_t sap_handle; sap_handle = create_dissector_handle(dissect_sap, proto_sap); - dissector_add_uint("udp.port", UDP_PORT_SAP, sap_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_SAP, sap_handle); /* * Get a handle for the SDP dissector. diff --git a/epan/dissectors/packet-sbus.c b/epan/dissectors/packet-sbus.c index f761eff181..a81abd7f45 100644 --- a/epan/dissectors/packet-sbus.c +++ b/epan/dissectors/packet-sbus.c @@ -30,6 +30,8 @@ void proto_register_sbus(void); void proto_reg_handoff_sbus(void); +#define SBUS_UDP_PORT 5050 /* Not IANA registered */ + /* Attribute values*/ #define SBUS_REQUEST 0x00 #define SBUS_RESPONSE 0x01 @@ -2314,7 +2316,7 @@ proto_reg_handoff_sbus(void) dissector_handle_t sbus_handle; sbus_handle = create_dissector_handle(dissect_sbus, proto_sbus); - dissector_add_uint("udp.port", 5050, sbus_handle); + dissector_add_uint_with_preference("udp.port", SBUS_UDP_PORT, sbus_handle); } /* diff --git a/epan/dissectors/packet-scop.c b/epan/dissectors/packet-scop.c index 2996962212..953a038710 100644 --- a/epan/dissectors/packet-scop.c +++ b/epan/dissectors/packet-scop.c @@ -23,12 +23,10 @@ #include "config.h" #include -#include #include "packet-tcp.h" /* Default SCOP Port numbers. */ -#define SCOP_DEFAULT_PORT 17755 -#define SCOP_DEFAULT_PORT_SECURED 17756 +#define SCOP_DEFAULT_PORT_RANGE "17755-17756" void proto_register_scop(void); @@ -117,9 +115,6 @@ static const value_string scop_services [] = { { 0, NULL } }; -static guint32 gPREF_scop_port = SCOP_DEFAULT_PORT; -static guint32 gPREF_scop_port_secured = SCOP_DEFAULT_PORT_SECURED; - /* Dissector handle */ static dissector_handle_t ieee802154_handle; @@ -323,8 +318,6 @@ dissect_scop_bridge(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) */ void proto_register_scop(void) { - module_t *scop_module; - static hf_register_info hf[] = { { &hf_scop_transport, { "Transport Type", "scop.transport", FT_UINT8, BASE_DEC, VALS(scop_transports), 0x0, @@ -362,17 +355,6 @@ void proto_register_scop(void) proto_register_field_array(proto_scop, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - /* Register preferences module */ - scop_module = prefs_register_protocol(proto_scop, proto_reg_handoff_scop); - - /* Register preferences */ - prefs_register_uint_preference(scop_module, "port", "SCoP Port", - "Set the port for SCoP\n", - 10, &gPREF_scop_port); - prefs_register_uint_preference(scop_module, "port_secure", "SCoP Secured Port", - "Set the port for secured SCoP\n", - 10, &gPREF_scop_port_secured); - /* Register dissector with Wireshark. */ register_dissector("scop.udp", dissect_scop, proto_scop); register_dissector("scop.tcp", dissect_scop_tcp, proto_scop); @@ -392,33 +374,16 @@ void proto_register_scop(void) */ void proto_reg_handoff_scop(void) { - static gboolean inited = FALSE; - static guint32 lastPort; - static guint32 lastPort_secured; + dissector_handle_t scop_udp_handle; + dissector_handle_t scop_tcp_handle; - static dissector_handle_t scop_udp_handle; - static dissector_handle_t scop_tcp_handle; + scop_udp_handle = find_dissector("scop.udp"); + scop_tcp_handle = find_dissector("scop.tcp"); + ieee802154_handle = find_dissector_add_dependency("wpan_nofcs", proto_scop); - if (!inited){ - scop_udp_handle = find_dissector("scop.udp"); - scop_tcp_handle = find_dissector("scop.tcp"); - ieee802154_handle = find_dissector_add_dependency("wpan_nofcs", proto_scop); - inited = TRUE; - } else { - dissector_delete_uint("udp.port", lastPort, scop_udp_handle); - dissector_delete_uint("tcp.port", lastPort, scop_tcp_handle); - dissector_delete_uint("udp.port", lastPort_secured, scop_udp_handle); - dissector_delete_uint("tcp.port", lastPort_secured, scop_tcp_handle); - } - /* XXX - Should this be a range with "auto" preference? */ - dissector_add_uint("udp.port", gPREF_scop_port, scop_udp_handle); - dissector_add_uint("tcp.port", gPREF_scop_port, scop_tcp_handle); - dissector_add_uint("udp.port", gPREF_scop_port_secured, scop_udp_handle); - dissector_add_uint("tcp.port", gPREF_scop_port_secured, scop_tcp_handle); - - lastPort = gPREF_scop_port; - lastPort_secured = gPREF_scop_port_secured; -} /* proto_reg_handoff_scop */ + dissector_add_uint_range_with_preference("udp.port", SCOP_DEFAULT_PORT_RANGE, scop_udp_handle); + dissector_add_uint_range_with_preference("tcp.port", SCOP_DEFAULT_PORT_RANGE, scop_tcp_handle); +} /* * Editor modelines - http://www.wireshark.org/tools/modelines.html diff --git a/epan/dissectors/packet-sctp.c b/epan/dissectors/packet-sctp.c index 2f5ebd1a50..dbc5af532b 100644 --- a/epan/dissectors/packet-sctp.c +++ b/epan/dissectors/packet-sctp.c @@ -5098,7 +5098,7 @@ proto_reg_handoff_sctp(void) sctp_handle = find_dissector("sctp"); dissector_add_uint("wtap_encap", WTAP_ENCAP_SCTP, sctp_handle); dissector_add_uint("ip.proto", IP_PROTO_SCTP, sctp_handle); - dissector_add_uint("udp.port", UDP_TUNNELING_PORT, sctp_handle); + dissector_add_uint_with_preference("udp.port", UDP_TUNNELING_PORT, sctp_handle); register_capture_dissector("ip.proto", IP_PROTO_SCTP, capture_sctp, proto_sctp); } diff --git a/epan/dissectors/packet-sebek.c b/epan/dissectors/packet-sebek.c index e7530fbcb8..0b801167cd 100644 --- a/epan/dissectors/packet-sebek.c +++ b/epan/dissectors/packet-sebek.c @@ -77,7 +77,7 @@ */ /* By default, but can be completely different */ -#define UDP_PORT_SEBEK 1101 +#define UDP_PORT_SEBEK 1101 /* Not IANA registered */ void proto_register_sebek(void); void proto_reg_handoff_sebek(void); @@ -342,7 +342,7 @@ proto_reg_handoff_sebek(void) dissector_handle_t sebek_handle; sebek_handle = create_dissector_handle(dissect_sebek, proto_sebek); - dissector_add_uint("udp.port", UDP_PORT_SEBEK, sebek_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_SEBEK, sebek_handle); } /* diff --git a/epan/dissectors/packet-sflow.c b/epan/dissectors/packet-sflow.c index 5ea293c10c..2292d34ce7 100644 --- a/epan/dissectors/packet-sflow.c +++ b/epan/dissectors/packet-sflow.c @@ -63,11 +63,6 @@ void proto_register_sflow(void); static dissector_handle_t sflow_handle; -/* - * global_sflow_ports : holds the configured range of ports for sflow - */ -static range_t *global_sflow_ports = NULL; - /* * sflow_245_ports : holds the currently used range of ports for sflow */ @@ -3621,11 +3616,7 @@ proto_register_sflow(void) { expert_module_t* expert_sflow; /* Register the protocol name and description */ - proto_sflow = proto_register_protocol( - "InMon sFlow", /* name */ - "sFlow", /* short name */ - "sflow" /* abbrev */ - ); + proto_sflow = proto_register_protocol("InMon sFlow", "sFlow", "sflow"); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_sflow, hf, array_length(hf)); @@ -3636,18 +3627,7 @@ proto_register_sflow(void) { header_subdissector_table = register_dissector_table("sflow_245.header_protocol", "SFLOW header protocol", proto_sflow, FT_UINT32, BASE_DEC); /* Register our configuration options for sFlow */ - sflow_245_module = prefs_register_protocol(proto_sflow, proto_reg_handoff_sflow_245); - - /* Set default Neflow port(s) */ - range_convert_str(&global_sflow_ports, SFLOW_UDP_PORTS, MAX_UDP_PORT); - - prefs_register_obsolete_preference(sflow_245_module, "udp.port"); - - prefs_register_range_preference(sflow_245_module, "ports", - "sFlow UDP Port(s)", - "Set the port(s) for sFlow messages" - " (default: " SFLOW_UDP_PORTS ")", - &global_sflow_ports, MAX_UDP_PORT); + sflow_245_module = prefs_register_protocol(proto_sflow, NULL); /* If I use a filter like "ip.src == 10.1.1.1" this will, in @@ -3679,19 +3659,9 @@ proto_register_sflow(void) { void proto_reg_handoff_sflow_245(void) { - static range_t *sflow_ports; - static gboolean sflow_245_prefs_initialized = FALSE; - if (!sflow_245_prefs_initialized) { - sflow_handle = create_dissector_handle(dissect_sflow_245, proto_sflow); - sflow_245_prefs_initialized = TRUE; - } else { - dissector_delete_uint_range("udp.port", sflow_ports, sflow_handle); - g_free(sflow_ports); - } - - sflow_ports = range_copy(global_sflow_ports); - dissector_add_uint_range("udp.port", sflow_ports, sflow_handle); + sflow_handle = create_dissector_handle(dissect_sflow_245, proto_sflow); + dissector_add_uint_range_with_preference("udp.port", SFLOW_UDP_PORTS, sflow_handle); } /* diff --git a/epan/dissectors/packet-sigcomp.c b/epan/dissectors/packet-sigcomp.c index 4a4e78770c..93e28e5e4d 100644 --- a/epan/dissectors/packet-sigcomp.c +++ b/epan/dissectors/packet-sigcomp.c @@ -168,9 +168,6 @@ static expert_field ei_sigcomp_sigcomp_message_decompression_failure = EI_INIT; static expert_field ei_sigcomp_execution_of_this_instruction_is_not_implemented = EI_INIT; static dissector_handle_t sip_handle; -/* set the udp ports */ -static guint SigCompUDPPort1 = 5555; -static guint SigCompUDPPort2 = 6666; /* set the tcp ports */ #define SIGCOMP_TCP_PORT_RANGE "5555,6666" /* Not IANA registered */ @@ -6704,20 +6701,7 @@ proto_register_sigcomp(void) expert_register_field_array(expert_sigcomp, ei, array_length(ei)); /* Register a configuration option for port */ - sigcomp_module = prefs_register_protocol(proto_sigcomp, - proto_reg_handoff_sigcomp); - - prefs_register_uint_preference(sigcomp_module, "udp.port", - "Sigcomp UDP Port 1", - "Set UDP port 1 for SigComp messages", - 10, - &SigCompUDPPort1); - - prefs_register_uint_preference(sigcomp_module, "udp.port2", - "Sigcomp UDP Port 2", - "Set UDP port 2 for SigComp messages", - 10, - &SigCompUDPPort2); + sigcomp_module = prefs_register_protocol(proto_sigcomp, NULL); prefs_register_bool_preference(sigcomp_module, "display.udvm.code", "Dissect the UDVM code", @@ -6755,28 +6739,14 @@ proto_register_sigcomp(void) void proto_reg_handoff_sigcomp(void) { - static dissector_handle_t sigcomp_handle; - static dissector_handle_t sigcomp_tcp_handle; - static gboolean Initialized = FALSE; - static guint udp_port1; - static guint udp_port2; + dissector_handle_t sigcomp_handle; + dissector_handle_t sigcomp_tcp_handle; - if (!Initialized) { - sigcomp_handle = find_dissector("sigcomp"); - sigcomp_tcp_handle = create_dissector_handle(dissect_sigcomp_tcp,proto_sigcomp); - sip_handle = find_dissector_add_dependency("sip",proto_sigcomp); - dissector_add_uint_range_with_preference("tcp.port", SIGCOMP_TCP_PORT_RANGE, sigcomp_tcp_handle); - Initialized=TRUE; - } else { - dissector_delete_uint("udp.port", udp_port1, sigcomp_handle); - dissector_delete_uint("udp.port", udp_port2, sigcomp_handle); - } - - udp_port1 = SigCompUDPPort1; - udp_port2 = SigCompUDPPort2; - - dissector_add_uint("udp.port", SigCompUDPPort1, sigcomp_handle); - dissector_add_uint("udp.port", SigCompUDPPort2, sigcomp_handle); + sigcomp_handle = find_dissector("sigcomp"); + sigcomp_tcp_handle = create_dissector_handle(dissect_sigcomp_tcp,proto_sigcomp); + sip_handle = find_dissector_add_dependency("sip",proto_sigcomp); + dissector_add_uint_range_with_preference("tcp.port", SIGCOMP_TCP_PORT_RANGE, sigcomp_tcp_handle); + dissector_add_uint_range_with_preference("udp.port", SIGCOMP_TCP_PORT_RANGE, sigcomp_handle); } /* diff --git a/epan/dissectors/packet-simple.c b/epan/dissectors/packet-simple.c index 396efb2ef0..18838aa5ce 100644 --- a/epan/dissectors/packet-simple.c +++ b/epan/dissectors/packet-simple.c @@ -685,7 +685,7 @@ void proto_reg_handoff_simple(void) { dissector_handle_t simple_dissector_handle; simple_dissector_handle = create_dissector_handle(dissect_simple, proto_simple); - dissector_add_for_decode_as("udp.port", simple_dissector_handle); + dissector_add_for_decode_as_with_preference("udp.port", simple_dissector_handle); dissector_add_for_decode_as_with_preference("tcp.port", simple_dissector_handle); link16_handle = find_dissector_add_dependency("link16", proto_simple); diff --git a/epan/dissectors/packet-simulcrypt.c b/epan/dissectors/packet-simulcrypt.c index 7f16632044..65218c621b 100644 --- a/epan/dissectors/packet-simulcrypt.c +++ b/epan/dissectors/packet-simulcrypt.c @@ -73,7 +73,6 @@ static void dissect_simulcrypt_data(proto_tree *simulcrypt_tree, proto_item *sim static guint proto_simulcrypt = -1; /* Preferences (with default values) */ -static guint global_simulcrypt_udp_port = 0; /* Simulcrypt registered only if pref set to non-zero value */ static int ca_system_id_mikey = CA_SYSTEM_ID_MIKEY; /* MIKEY ECM CA_system_ID */ /* MIKEY payload start bytes */ @@ -1837,10 +1836,6 @@ proto_register_simulcrypt (void) /* called when preferences are applied. */ simulcrypt_module = prefs_register_protocol(proto_simulcrypt, proto_reg_handoff_simulcrypt); - prefs_register_uint_preference(simulcrypt_module, "udp.port", "Simulcrypt UDP Port", - "Set the UDP port for Simulcrypt messages ('0' means no port is assigned)", - 10, &global_simulcrypt_udp_port); - prefs_register_uint_preference(simulcrypt_module, "ca_system_id_mikey","MIKEY ECM CA_system_ID (in hex)", "Set the CA_system_ID used to decode ECM datagram as MIKEY", 16, &ca_system_id_mikey); } @@ -1850,8 +1845,7 @@ void proto_reg_handoff_simulcrypt(void) { static gboolean initialized=FALSE; - static dissector_handle_t simulcrypt_handle; - static guint udp_port; + dissector_handle_t simulcrypt_handle; guint i; if (!initialized) { @@ -1860,18 +1854,10 @@ proto_reg_handoff_simulcrypt(void) { tab_ecm_inter[i].protocol_handle = find_dissector(tab_ecm_inter[i].protocol_name); } - dissector_add_for_decode_as("udp.port", simulcrypt_handle); + dissector_add_for_decode_as_with_preference("udp.port", simulcrypt_handle); dissector_add_for_decode_as_with_preference("tcp.port", simulcrypt_handle); initialized = TRUE; } - else { - dissector_delete_uint("udp.port", udp_port, simulcrypt_handle); - } - - if (global_simulcrypt_udp_port != 0) { - dissector_add_uint("udp.port", global_simulcrypt_udp_port, simulcrypt_handle); - } - udp_port = global_simulcrypt_udp_port; /* update tab_ecm_inter table (always do this) */ tab_ecm_inter[ECM_MIKEY_INDEX].ca_system_id=ca_system_id_mikey; diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c index 80609eb42f..4dcdf11754 100644 --- a/epan/dissectors/packet-sip.c +++ b/epan/dissectors/packet-sip.c @@ -61,8 +61,6 @@ /* #define DEBUG_CONVERSATION */ #include "conversation_debug.h" -#define TCP_PORT_SIP 5060 -#define UDP_PORT_SIP 5060 #define TLS_PORT_SIP 5061 #define DEFAULT_SIP_PORT_RANGE "5060" @@ -6794,7 +6792,7 @@ proto_reg_handoff_sip(void) /* SIP content type and internet media type used by other dissectors are the same */ media_type_dissector_table = find_dissector_table("media_type"); - dissector_add_uint("udp.port", UDP_PORT_SIP, sip_handle); + dissector_add_uint_range_with_preference("udp.port", DEFAULT_SIP_PORT_RANGE, sip_handle); dissector_add_string("media_type", "message/sip", sip_handle); dissector_add_uint_range_with_preference("tcp.port", DEFAULT_SIP_PORT_RANGE, sip_tcp_handle); diff --git a/epan/dissectors/packet-skype.c b/epan/dissectors/packet-skype.c index 68feb56063..4139af46d5 100644 --- a/epan/dissectors/packet-skype.c +++ b/epan/dissectors/packet-skype.c @@ -445,7 +445,7 @@ proto_reg_handoff_skype(void) skype_handle = create_dissector_handle(dissect_skype_static, proto_skype); dissector_add_for_decode_as_with_preference("tcp.port", skype_handle); - dissector_add_for_decode_as("udp.port", skype_handle); + dissector_add_for_decode_as_with_preference("udp.port", skype_handle); heur_dissector_add("tcp", dissect_skype_heur, "Skype over TCP", "skype_tcp", proto_skype, HEURISTIC_DISABLE); heur_dissector_add("udp", dissect_skype_heur, "Skype over UDP", "skype_udp", proto_skype, HEURISTIC_DISABLE); diff --git a/epan/dissectors/packet-slimp3.c b/epan/dissectors/packet-slimp3.c index 504733e313..43f7ff4558 100644 --- a/epan/dissectors/packet-slimp3.c +++ b/epan/dissectors/packet-slimp3.c @@ -68,8 +68,9 @@ static int hf_slimp3_data_data = -1; static gint ett_slimp3 = -1; -#define UDP_PORT_SLIMP3_V1 1069 +#define UDP_PORT_SLIMP3_V1 1069 /* Not IANA registered */ #define UDP_PORT_SLIMP3_V2 3483 +#define UDP_PORT_SLIMP3_RANGE "1069,3483" #define SLIMP3_IR 'i' #define SLIMP3_CONTROL 's' @@ -701,8 +702,7 @@ proto_register_slimp3(void) &ett_slimp3, }; - proto_slimp3 = proto_register_protocol("SliMP3 Communication Protocol", - "SliMP3", "slimp3"); + proto_slimp3 = proto_register_protocol("SliMP3 Communication Protocol", "SliMP3", "slimp3"); proto_register_field_array(proto_slimp3, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } @@ -713,8 +713,7 @@ proto_reg_handoff_slimp3(void) dissector_handle_t slimp3_handle; slimp3_handle = create_dissector_handle(dissect_slimp3, proto_slimp3); - dissector_add_uint("udp.port", UDP_PORT_SLIMP3_V1, slimp3_handle); - dissector_add_uint("udp.port", UDP_PORT_SLIMP3_V2, slimp3_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_SLIMP3_RANGE, slimp3_handle); } /* diff --git a/epan/dissectors/packet-sml.c b/epan/dissectors/packet-sml.c index 75b66f4e38..30001024af 100644 --- a/epan/dissectors/packet-sml.c +++ b/epan/dissectors/packet-sml.c @@ -37,8 +37,6 @@ Short description of the SML protocol on the SML Wireshark Wiki page: https://w #include -#define UDP_PORT_SML 0 - #define ESC_SEQ_END G_GUINT64_CONSTANT(0x1b1b1b1b1a) #define ESC_SEQ 0x1b1b1b1b @@ -73,8 +71,6 @@ Short description of the SML protocol on the SML Wireshark Wiki page: https://w #define LIST_6_ELEMENTS 0x76 #define MSB 0x80 -static guint udp_port_pref = UDP_PORT_SML; - /* Forward declaration we need below (if using proto_reg_handoff as a prefs callback)*/ void proto_register_sml(void); void proto_reg_handoff_sml(void); @@ -2790,11 +2786,10 @@ void proto_register_sml (void) { }; proto_sml = proto_register_protocol("Smart Message Language","SML", "sml"); - sml_module = prefs_register_protocol(proto_sml, proto_reg_handoff_sml); + sml_module = prefs_register_protocol(proto_sml, NULL); prefs_register_bool_preference (sml_module, "reassemble", "Enable reassemble", "Enable reassembling (default is enabled)", &sml_reassemble); prefs_register_bool_preference (sml_module, "crc", "Enable crc calculation", "Enable crc (default is disabled)", &sml_crc_enabled); - prefs_register_uint_preference(sml_module, "udp.port", "SML UDP Port", "Set the UDP port for SML (Default is 0), recommended port is 7259", 10, &udp_port_pref); proto_register_field_array(proto_sml, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -2803,20 +2798,11 @@ void proto_register_sml (void) { } void proto_reg_handoff_sml(void) { - static gboolean initialized = FALSE; - static int old_udp_port; - static dissector_handle_t sml_handle; + dissector_handle_t sml_handle; - if (!initialized) { - sml_handle = create_dissector_handle(dissect_sml, proto_sml); - dissector_add_for_decode_as_with_preference("tcp.port", sml_handle); - initialized = TRUE; - } else { - dissector_delete_uint("udp.port", old_udp_port, sml_handle); - } - old_udp_port = udp_port_pref; - - dissector_add_uint("udp.port", udp_port_pref, sml_handle); + sml_handle = create_dissector_handle(dissect_sml, proto_sml); + dissector_add_for_decode_as_with_preference("tcp.port", sml_handle); + dissector_add_for_decode_as_with_preference("udp.port", sml_handle); } /* diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c index 2f4e5b93d1..7fce19358d 100644 --- a/epan/dissectors/packet-snmp.c +++ b/epan/dissectors/packet-snmp.c @@ -4077,9 +4077,7 @@ void proto_register_snmp(void) { void proto_reg_handoff_snmp(void) { dissector_handle_t snmp_tcp_handle; - dissector_add_uint("udp.port", UDP_PORT_SNMP, snmp_handle); - dissector_add_uint("udp.port", UDP_PORT_SNMP_TRAP, snmp_handle); - dissector_add_uint("udp.port", UDP_PORT_SNMP_PATROL, snmp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_SNMP, snmp_handle); dissector_add_uint("ethertype", ETHERTYPE_SNMP, snmp_handle); dissector_add_uint("ipx.socket", IPX_SOCKET_SNMP_AGENT, snmp_handle); dissector_add_uint("ipx.socket", IPX_SOCKET_SNMP_SINK, snmp_handle); @@ -4091,6 +4089,8 @@ void proto_reg_handoff_snmp(void) { the "trap" port doesn't really need a separate preference. Just register normally */ dissector_add_uint("tcp.port", TCP_PORT_SNMP_TRAP, snmp_tcp_handle); + dissector_add_uint("udp.port", UDP_PORT_SNMP_TRAP, snmp_handle); + dissector_add_uint("udp.port", UDP_PORT_SNMP_PATROL, snmp_handle); data_handle = find_dissector("data"); diff --git a/epan/dissectors/packet-sprt.c b/epan/dissectors/packet-sprt.c index 868020b642..2fdf7299c5 100644 --- a/epan/dissectors/packet-sprt.c +++ b/epan/dissectors/packet-sprt.c @@ -3429,7 +3429,7 @@ void proto_reg_handoff_sprt(void) { sprt_handle = find_dissector("sprt"); - dissector_add_for_decode_as("udp.port", sprt_handle); + dissector_add_for_decode_as_with_preference("udp.port", sprt_handle); heur_dissector_add( "udp", dissect_sprt_heur, "SPRT over UDP", "sprt_udp", proto_sprt, HEURISTIC_ENABLE); } diff --git a/epan/dissectors/packet-srvloc.c b/epan/dissectors/packet-srvloc.c index e550d43a65..db22a2c64e 100644 --- a/epan/dissectors/packet-srvloc.c +++ b/epan/dissectors/packet-srvloc.c @@ -1890,7 +1890,7 @@ proto_reg_handoff_srvloc(void) { dissector_handle_t srvloc_handle, srvloc_tcp_handle; srvloc_handle = create_dissector_handle(dissect_srvloc, proto_srvloc); - dissector_add_uint("udp.port", UDP_PORT_SRVLOC, srvloc_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_SRVLOC, srvloc_handle); srvloc_tcp_handle = create_dissector_handle(dissect_srvloc_tcp, proto_srvloc); dissector_add_uint_with_preference("tcp.port", TCP_PORT_SRVLOC, srvloc_tcp_handle); diff --git a/epan/dissectors/packet-sscop.c b/epan/dissectors/packet-sscop.c index 353ed41bc6..68f6b85aa1 100644 --- a/epan/dissectors/packet-sscop.c +++ b/epan/dissectors/packet-sscop.c @@ -56,10 +56,6 @@ static dissector_handle_t sscf_nni_handle; static dissector_handle_t alcap_handle; static dissector_handle_t nbap_handle; -static module_t *sscop_module; - -static range_t *global_udp_port_range; - static dissector_handle_t sscop_handle; @@ -387,22 +383,13 @@ void proto_reg_handoff_sscop(void) { static gboolean prefs_initialized = FALSE; - static range_t *udp_port_range; if (!prefs_initialized) { initialize_handles_once(); + dissector_add_uint_range_with_preference("udp.port", "", sscop_handle); prefs_initialized = TRUE; - - } else { - - dissector_delete_uint_range("udp.port", udp_port_range, sscop_handle); - g_free(udp_port_range); - } - udp_port_range = range_copy(global_udp_port_range); - dissector_add_uint_range("udp.port", udp_port_range, sscop_handle); - dissector_add_uint("atm.aal5.type", TRAF_SSCOP, sscop_handle); switch(sscop_payload_dissector) { @@ -438,6 +425,8 @@ proto_register_sscop(void) &ett_stat }; + module_t *sscop_module; + proto_sscop = proto_register_protocol("SSCOP", "SSCOP", "sscop"); proto_register_field_array(proto_sscop, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -446,13 +435,6 @@ proto_register_sscop(void) sscop_module = prefs_register_protocol(proto_sscop, proto_reg_handoff_sscop); - global_udp_port_range = range_empty(); - - prefs_register_range_preference(sscop_module, "udp.ports", - "SSCOP UDP port range", - "Set the UDP port for SSCOP messages encapsulated in UDP (0 to disable)", - &global_udp_port_range, MAX_UDP_PORT); - prefs_register_enum_preference(sscop_module, "payload", "SSCOP payload protocol", "SSCOP payload (dissector to call on SSCOP payload)", diff --git a/epan/dissectors/packet-stun.c b/epan/dissectors/packet-stun.c index 7531b2c48c..8ce2f665cd 100644 --- a/epan/dissectors/packet-stun.c +++ b/epan/dissectors/packet-stun.c @@ -1729,7 +1729,7 @@ proto_reg_handoff_stun(void) stun_udp_handle = create_dissector_handle(dissect_stun_udp, proto_stun); dissector_add_uint_with_preference("tcp.port", TCP_PORT_STUN, stun_tcp_handle); - dissector_add_uint("udp.port", UDP_PORT_STUN, stun_udp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_STUN, stun_udp_handle); heur_dissector_add("udp", dissect_stun_heur, "STUN over UDP", "stun_udp", proto_stun, HEURISTIC_ENABLE); diff --git a/epan/dissectors/packet-sync.c b/epan/dissectors/packet-sync.c index 80a7b2dd94..786bc6b24c 100644 --- a/epan/dissectors/packet-sync.c +++ b/epan/dissectors/packet-sync.c @@ -305,7 +305,7 @@ proto_reg_handoff_sync(void) { ip_handle = find_dissector_add_dependency("ip", proto_sync); - dissector_add_for_decode_as("udp.port", sync_handle); + dissector_add_for_decode_as_with_preference("udp.port", sync_handle); } /* diff --git a/epan/dissectors/packet-synphasor.c b/epan/dissectors/packet-synphasor.c index a581bfaf82..885a5d5701 100644 --- a/epan/dissectors/packet-synphasor.c +++ b/epan/dissectors/packet-synphasor.c @@ -28,7 +28,6 @@ #include #include -#include #include #include #include "packet-tcp.h" @@ -49,7 +48,7 @@ static int proto_synphasor = -1; /* user preferences */ #define SYNPHASOR_TCP_PORT 4712 /* Not IANA registered */ -static guint global_pref_udp_port = 4713; +#define SYNPHASOR_UDP_PORT 4713 /* Not IANA registered */ /* the ett... variables hold the state (open/close) of the treeview in the GUI */ static gint ett_synphasor = -1; /* root element for this protocol */ @@ -1348,7 +1347,6 @@ void proto_register_synphasor(void) { &ei_synphasor_checksum, { "synphasor.bad_checksum", PI_CHECKSUM, PI_ERROR, "Bad checksum", EXPFILL }}, }; - module_t *synphasor_module; expert_module_t* expert_synphasor; /* register protocol */ @@ -1364,38 +1362,18 @@ void proto_register_synphasor(void) expert_synphasor = expert_register_protocol(proto_synphasor); expert_register_field_array(expert_synphasor, ei, array_length(ei)); - /* register preferences */ - synphasor_module = prefs_register_protocol(proto_synphasor, proto_reg_handoff_synphasor); - - /* the port numbers of the lower level protocols */ - prefs_register_uint_preference(synphasor_module, "udp_port", "Synchrophasor UDP port", - "Set the port number for synchrophasor frames over UDP" \ - "(if other than the default of 4713)", - 10, &global_pref_udp_port); - } /* proto_register_synphasor() */ /* called at startup and when the preferences change */ void proto_reg_handoff_synphasor(void) { - static gboolean initialized = FALSE; - static dissector_handle_t synphasor_tcp_handle; - static guint current_udp_port; + dissector_handle_t synphasor_tcp_handle; - if (!initialized) { - synphasor_tcp_handle = create_dissector_handle(dissect_tcp, proto_synphasor); - dissector_add_for_decode_as("rtacser.data", synphasor_udp_handle); - dissector_add_uint_with_preference("tcp.port", SYNPHASOR_TCP_PORT, synphasor_tcp_handle); - initialized = TRUE; - } - else { - /* update preferences */ - dissector_delete_uint("udp.port", current_udp_port, synphasor_udp_handle); - } + synphasor_tcp_handle = create_dissector_handle(dissect_tcp, proto_synphasor); + dissector_add_for_decode_as("rtacser.data", synphasor_udp_handle); + dissector_add_uint_with_preference("udp.port", SYNPHASOR_UDP_PORT, synphasor_udp_handle); + dissector_add_uint_with_preference("tcp.port", SYNPHASOR_TCP_PORT, synphasor_tcp_handle); - current_udp_port = global_pref_udp_port; - - dissector_add_uint("udp.port", current_udp_port, synphasor_udp_handle); } /* proto_reg_handoff_synphasor() */ /* diff --git a/epan/dissectors/packet-syslog.c b/epan/dissectors/packet-syslog.c index 15321553cd..dabe8b87fa 100644 --- a/epan/dissectors/packet-syslog.c +++ b/epan/dissectors/packet-syslog.c @@ -352,7 +352,7 @@ void proto_register_syslog(void) void proto_reg_handoff_syslog(void) { - dissector_add_uint("udp.port", UDP_PORT_SYSLOG, syslog_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_SYSLOG, syslog_handle); dissector_add_for_decode_as_with_preference("tcp.port", syslog_handle); /* Find the mtp3 dissector */ diff --git a/epan/dissectors/packet-t38.c b/epan/dissectors/packet-t38.c index 50b9c129ce..e0d896c622 100644 --- a/epan/dissectors/packet-t38.c +++ b/epan/dissectors/packet-t38.c @@ -1419,7 +1419,6 @@ proto_register_t38(void) "be dissected as RTP packet or T.38 packet. If enabled there is a risk that T.38 UDPTL " "packets with sequence number higher than 32767 may be dissected as RTP.", &dissect_possible_rtpv2_packets_as_rtp); - prefs_register_obsolete_preference(t38_module, "udp.port"); prefs_register_bool_preference(t38_module, "reassembly", "Reassemble T.38 PDUs over TPKT over TCP", "Whether the dissector should reassemble T.38 PDUs spanning multiple TCP segments " diff --git a/epan/dissectors/packet-tacacs.c b/epan/dissectors/packet-tacacs.c index 6c2c901bb9..ec90469db7 100644 --- a/epan/dissectors/packet-tacacs.c +++ b/epan/dissectors/packet-tacacs.c @@ -283,7 +283,7 @@ proto_reg_handoff_tacacs(void) dissector_handle_t tacacs_handle; tacacs_handle = create_dissector_handle(dissect_tacacs, proto_tacacs); - dissector_add_uint("udp.port", UDP_PORT_TACACS, tacacs_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_TACACS, tacacs_handle); } static int proto_tacplus = -1; diff --git a/epan/dissectors/packet-tapa.c b/epan/dissectors/packet-tapa.c index d419f870e2..2400c97666 100644 --- a/epan/dissectors/packet-tapa.c +++ b/epan/dissectors/packet-tapa.c @@ -86,7 +86,7 @@ static int hf_tapa_tunnel_remaining = -1; #define PROTO_SHORT_NAME "TAPA" #define PROTO_LONG_NAME "Trapeze Access Point Access Protocol" -#define PORT_TAPA 5000 +#define PORT_TAPA 5000 /* Not IANA registered */ typedef enum { TAPA_TYPE_REQUEST = 0x01, @@ -626,7 +626,7 @@ proto_reg_handoff_tapa(void) dissector_handle_t tapa_handle; tapa_handle = find_dissector("tapa"); - dissector_add_uint("udp.port", PORT_TAPA, tapa_handle); + dissector_add_uint_with_preference("udp.port", PORT_TAPA, tapa_handle); heur_dissector_add( "ip", dissect_tapa_heur, "TAPA over IP", "tapa_ip", proto_tapa, HEURISTIC_ENABLE); } diff --git a/epan/dissectors/packet-tdmop.c b/epan/dissectors/packet-tdmop.c index 6bc470bfd5..3dadcb2a06 100644 --- a/epan/dissectors/packet-tdmop.c +++ b/epan/dissectors/packet-tdmop.c @@ -27,7 +27,6 @@ #include #include -#define TDMOP_PORT 0 /*Using of ethertype 0x0808(assigned to Frame Realy ARP) was implemented in hardware, when ethertype was not assigned*/ #define ETHERTYPE_TDMOP 0 @@ -61,7 +60,6 @@ static dissector_handle_t lapd_handle = NULL; static gint pref_tdmop_d_channel = 16; static guint32 pref_tdmop_mask = 0xFFFFFFFFUL; static guint32 pref_tdmop_ethertype = ETHERTYPE_TDMOP; -static guint32 pref_tdmop_udpport = TDMOP_PORT; #define TDMOP_FLAG_NO_DATA (1<<3) #define TDMOP_FLAG_REMOTE_NO_DATA (1<<2) @@ -315,11 +313,7 @@ void proto_register_tdmop(void) &ett_tdmop, &ett_tdmop_channel }; - proto_tdmop = proto_register_protocol ( - "TDMoP protocol", - "TDMoP", - "tdmop" - ); + proto_tdmop = proto_register_protocol ("TDMoP protocol", "TDMoP", "tdmop"); proto_register_field_array(proto_tdmop, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); tdmop_module = prefs_register_protocol(proto_tdmop, proto_reg_handoff_tdmop); @@ -335,10 +329,6 @@ void proto_register_tdmop(void) "Ethertype for TDMoP stream(Usually 0808)", "The ethertype assigned to TDMoP (without IP/UDP) stream", 16, &pref_tdmop_ethertype); - prefs_register_uint_preference(tdmop_module, "udpport", - "UDP Port of TDMoP stream(Usually 41000)", - "The udp port assigned to TDMoP stream", - 10, &pref_tdmop_udpport); } void proto_reg_handoff_tdmop(void) @@ -346,19 +336,16 @@ void proto_reg_handoff_tdmop(void) static dissector_handle_t tdmop_handle; static gboolean init = FALSE; static guint32 current_tdmop_ethertype; - static guint32 current_tdmop_udpport; if (!init) { tdmop_handle = create_dissector_handle(dissect_tdmop, proto_tdmop); - if (pref_tdmop_udpport) { - dissector_add_uint("udp.port", pref_tdmop_udpport, tdmop_handle); - } + dissector_add_for_decode_as_with_preference("udp.port", tdmop_handle); + if (pref_tdmop_ethertype) { dissector_add_uint("ethertype", pref_tdmop_ethertype, tdmop_handle); } lapd_handle = find_dissector_add_dependency("lapd-bitstream", proto_tdmop); current_tdmop_ethertype = pref_tdmop_ethertype; - current_tdmop_udpport = pref_tdmop_udpport; init = TRUE; } if (current_tdmop_ethertype != pref_tdmop_ethertype) @@ -369,14 +356,6 @@ void proto_reg_handoff_tdmop(void) } current_tdmop_ethertype = pref_tdmop_ethertype; } - if (current_tdmop_udpport != pref_tdmop_udpport) - { - dissector_delete_uint("udp.port", current_tdmop_udpport, tdmop_handle); - if (pref_tdmop_udpport) { - dissector_add_uint("udp.port", pref_tdmop_udpport, tdmop_handle); - } - current_tdmop_udpport = pref_tdmop_udpport; - } } /* diff --git a/epan/dissectors/packet-teamspeak2.c b/epan/dissectors/packet-teamspeak2.c index c3e5916908..8aa83d24a6 100644 --- a/epan/dissectors/packet-teamspeak2.c +++ b/epan/dissectors/packet-teamspeak2.c @@ -224,7 +224,7 @@ static const value_string codecnames[] = { 0, NULL } }; -#define TS2_PORT 8767 +#define TS2_PORT 8767 /* Not IANA registered */ static int proto_ts2 = -1; @@ -1238,7 +1238,7 @@ void proto_reg_handoff_ts2(void) { dissector_handle_t ts2_handle; ts2_handle = create_dissector_handle(dissect_ts2, proto_ts2); - dissector_add_uint("udp.port", TS2_PORT, ts2_handle); + dissector_add_uint_with_preference("udp.port", TS2_PORT, ts2_handle); } /* diff --git a/epan/dissectors/packet-teredo.c b/epan/dissectors/packet-teredo.c index e4e86b5e00..cd17a225e6 100644 --- a/epan/dissectors/packet-teredo.c +++ b/epan/dissectors/packet-teredo.c @@ -401,7 +401,7 @@ proto_reg_handoff_teredo(void) data_handle = find_dissector("ipv6"); teredo_tap = register_tap("teredo"); - dissector_add_uint("udp.port", UDP_PORT_TEREDO, teredo_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_TEREDO, teredo_handle); heur_dissector_add("udp", dissect_teredo_heur, "Teredo over UDP", "teredo_udp", proto_teredo, HEURISTIC_DISABLE); } diff --git a/epan/dissectors/packet-tetra.c b/epan/dissectors/packet-tetra.c index e92d9dd1e4..049b38622a 100644 --- a/epan/dissectors/packet-tetra.c +++ b/epan/dissectors/packet-tetra.c @@ -56,7 +56,7 @@ static int proto_tetra = -1; static dissector_handle_t tetra_handle; -static int global_tetra_port = 7074; +#define TETRA_UDP_PORT 7074 /* Not IANA assigned */ /* Whether the capture data include carrier numbers */ static gboolean include_carrier_number = TRUE; @@ -9268,13 +9268,8 @@ dissect_tetra(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U void proto_reg_handoff_tetra(void) { - static gboolean initialized=FALSE; - - if (!initialized) { - tetra_handle = create_dissector_handle(dissect_tetra, proto_tetra); - dissector_add_uint("udp.port", global_tetra_port, tetra_handle); - } - + tetra_handle = create_dissector_handle(dissect_tetra, proto_tetra); + dissector_add_uint_with_preference("udp.port", TETRA_UDP_PORT, tetra_handle); } @@ -11713,7 +11708,7 @@ void proto_register_tetra (void) "T_simplex_duplex_selection_05", HFILL }}, /*--- End of included file: packet-tetra-hfarr.c ---*/ -#line 622 "./asn1/tetra/packet-tetra-template.c" +#line 617 "./asn1/tetra/packet-tetra-template.c" }; /* List of subtrees */ @@ -11998,7 +11993,7 @@ void proto_register_tetra (void) &ett_tetra_Modify_type, /*--- End of included file: packet-tetra-ettarr.c ---*/ -#line 632 "./asn1/tetra/packet-tetra-template.c" +#line 627 "./asn1/tetra/packet-tetra-template.c" }; static ei_register_info ei[] = { diff --git a/epan/dissectors/packet-tftp.c b/epan/dissectors/packet-tftp.c index 2db40e701e..13ca3588a1 100644 --- a/epan/dissectors/packet-tftp.c +++ b/epan/dissectors/packet-tftp.c @@ -45,6 +45,7 @@ #include #include #include +#include #include #include "packet-tftp.h" @@ -602,6 +603,13 @@ dissect_tftp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_ } +static void +apply_tftp_prefs(void) { + pref_t *tftp_ports = prefs_find_preference(prefs_find_module("tftp"), "udp.port"); + + global_tftp_port_range = range_copy(*tftp_ports->varp.range); +} + void proto_register_tftp(void) { @@ -665,27 +673,17 @@ proto_register_tftp(void) { &ei_tftp_blocksize_range, { "tftp.blocksize_range", PI_RESPONSE_CODE, PI_WARN, "TFTP blocksize out of range", EXPFILL }}, }; - module_t *tftp_module; expert_module_t* expert_tftp; - proto_tftp = proto_register_protocol("Trivial File Transfer Protocol", - "TFTP", "tftp"); + proto_tftp = proto_register_protocol("Trivial File Transfer Protocol", "TFTP", "tftp"); proto_register_field_array(proto_tftp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_tftp = expert_register_protocol(proto_tftp); expert_register_field_array(expert_tftp, ei, array_length(ei)); - register_dissector("tftp", dissect_tftp, proto_tftp); + tftp_handle = register_dissector("tftp", dissect_tftp, proto_tftp); - /* Set default UDP ports */ - range_convert_str(&global_tftp_port_range, UDP_PORT_TFTP_RANGE, MAX_UDP_PORT); - - tftp_module = prefs_register_protocol(proto_tftp, proto_reg_handoff_tftp); - prefs_register_range_preference(tftp_module, "udp_ports", - "TFTP port numbers", - "Port numbers used for TFTP traffic " - "(default " UDP_PORT_TFTP_RANGE ")", - &global_tftp_port_range, MAX_UDP_PORT); + prefs_register_protocol(proto_tftp, apply_tftp_prefs); /* Register the tap for the "Export Object" function */ tftp_eo_tap = register_tap("tftp_eo"); /* TFTP Export Object tap */ @@ -694,20 +692,9 @@ proto_register_tftp(void) void proto_reg_handoff_tftp(void) { - static range_t *tftp_port_range; - static gboolean tftp_initialized = FALSE; + heur_dissector_add("stun", dissect_embeddedtftp_heur, "TFTP over TURN", "tftp_stun", proto_tftp, HEURISTIC_ENABLE); - if (!tftp_initialized) { - tftp_handle = find_dissector("tftp"); - heur_dissector_add("stun", dissect_embeddedtftp_heur, "TFTP over TURN", "tftp_stun", proto_tftp, HEURISTIC_ENABLE); - tftp_initialized = TRUE; - } else { - dissector_delete_uint_range("udp.port", tftp_port_range, tftp_handle); - g_free(tftp_port_range); - } - - tftp_port_range = range_copy(global_tftp_port_range); - dissector_add_uint_range("udp.port", tftp_port_range, tftp_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_TFTP_RANGE, tftp_handle); } /* diff --git a/epan/dissectors/packet-time.c b/epan/dissectors/packet-time.c index c0017ab155..2ec484ce84 100644 --- a/epan/dissectors/packet-time.c +++ b/epan/dissectors/packet-time.c @@ -121,7 +121,7 @@ proto_reg_handoff_time(void) dissector_handle_t time_handle; time_handle = create_dissector_handle(dissect_time, proto_time); - dissector_add_uint("udp.port", TIME_PORT, time_handle); + dissector_add_uint_with_preference("udp.port", TIME_PORT, time_handle); dissector_add_uint_with_preference("tcp.port", TIME_PORT, time_handle); } diff --git a/epan/dissectors/packet-tipc.c b/epan/dissectors/packet-tipc.c index 58e0c4639f..e15f7d4fd9 100644 --- a/epan/dissectors/packet-tipc.c +++ b/epan/dissectors/packet-tipc.c @@ -212,9 +212,7 @@ static gboolean tipc_tcp_desegment = TRUE; static dissector_handle_t tipc_handle; /* IANA have assigned port 6118 port for TIPC UDP transport. */ -#define DEFAULT_TIPC_PORT_RANGE "0" - -static range_t *global_tipc_udp_port_range; +#define DEFAULT_TIPC_PORT_RANGE "6118" /* this is used to find encapsulated protocols */ static dissector_table_t tipc_user_dissector; @@ -3041,20 +3039,11 @@ proto_register_tipc(void) register_cleanup_routine(tipc_defragment_cleanup); /* Register configuration options */ - tipc_module = prefs_register_protocol(proto_tipc, proto_reg_handoff_tipc); + tipc_module = prefs_register_protocol(proto_tipc, NULL); tipc_address_type = address_type_dissector_register("AT_TIPC", "TIPC Address Zone,Subnetwork,Processor", tipc_addr_to_str_buf, tipc_addr_str_len, NULL, NULL, NULL, NULL, NULL); - /* Set default ports */ - range_convert_str(&global_tipc_udp_port_range, DEFAULT_TIPC_PORT_RANGE, MAX_TCP_PORT); - - prefs_register_range_preference(tipc_module, "udp.ports", "TIPC UDP ports", - "UDP ports to be decoded as TIPC (default: " - DEFAULT_TIPC_PORT_RANGE ")" - "IANA have assigned port 6118 port for TIPC UDP transport.", - &global_tipc_udp_port_range, MAX_UDP_PORT); - prefs_register_bool_preference(tipc_module, "defragment", "Reassemble TIPCv1 SEGMENTATION_MANAGER datagrams", "Whether TIPCv1 SEGMENTATION_MANAGER datagrams should be reassembled", @@ -3087,25 +3076,14 @@ proto_register_tipc(void) void proto_reg_handoff_tipc(void) { - static gboolean inited = FALSE; - static dissector_handle_t tipc_tcp_handle; - static range_t *tipc_udp_port_range; + dissector_handle_t tipc_tcp_handle; - if (!inited) { - tipc_tcp_handle = create_dissector_handle(dissect_tipc_tcp, proto_tipc); - ip_handle = find_dissector("ip"); + tipc_tcp_handle = create_dissector_handle(dissect_tipc_tcp, proto_tipc); + ip_handle = find_dissector("ip"); - dissector_add_uint("ethertype", ETHERTYPE_TIPC, tipc_handle); - - dissector_add_for_decode_as_with_preference("tcp.port", tipc_tcp_handle); - inited = TRUE; - } else { - dissector_add_uint_range("udp.port", tipc_udp_port_range, tipc_handle); - g_free(tipc_udp_port_range); - } - - tipc_udp_port_range = range_copy(global_tipc_udp_port_range); - dissector_add_uint_range("udp.port", tipc_udp_port_range, tipc_handle); + dissector_add_uint("ethertype", ETHERTYPE_TIPC, tipc_handle); + dissector_add_for_decode_as_with_preference("tcp.port", tipc_tcp_handle); + dissector_add_uint_range_with_preference("udp.port", DEFAULT_TIPC_PORT_RANGE, tipc_handle); } /* diff --git a/epan/dissectors/packet-tivoconnect.c b/epan/dissectors/packet-tivoconnect.c index a51a80a068..3af0cc83c1 100644 --- a/epan/dissectors/packet-tivoconnect.c +++ b/epan/dissectors/packet-tivoconnect.c @@ -242,7 +242,7 @@ proto_reg_handoff_tivoconnect(void) tivoconnect_tcp_handle = create_dissector_handle(dissect_tivoconnect_tcp, proto_tivoconnect); tivoconnect_udp_handle = create_dissector_handle(dissect_tivoconnect_udp, proto_tivoconnect); - dissector_add_uint("udp.port", TIVOCONNECT_PORT, tivoconnect_udp_handle); + dissector_add_uint_with_preference("udp.port", TIVOCONNECT_PORT, tivoconnect_udp_handle); dissector_add_uint_with_preference("tcp.port", TIVOCONNECT_PORT, tivoconnect_tcp_handle); } diff --git a/epan/dissectors/packet-tsp.c b/epan/dissectors/packet-tsp.c index e7ab7be488..96482ff4db 100644 --- a/epan/dissectors/packet-tsp.c +++ b/epan/dissectors/packet-tsp.c @@ -168,7 +168,7 @@ proto_reg_handoff_tsp(void) dissector_handle_t tsp_handle; tsp_handle = create_dissector_handle(dissect_tsp, proto_tsp); - dissector_add_uint("udp.port", UDP_PORT_TIMED, tsp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_TIMED, tsp_handle); } diff --git a/epan/dissectors/packet-turnchannel.c b/epan/dissectors/packet-turnchannel.c index f9f0c71b79..fde45dd392 100644 --- a/epan/dissectors/packet-turnchannel.c +++ b/epan/dissectors/packet-turnchannel.c @@ -206,7 +206,7 @@ proto_reg_handoff_turnchannel(void) /* Register for "Decode As" in case STUN negotiation isn't captured */ dissector_add_for_decode_as_with_preference("tcp.port", turnchannel_tcp_handle); - dissector_add_for_decode_as("udp.port", turnchannel_udp_handle); + dissector_add_for_decode_as_with_preference("udp.port", turnchannel_udp_handle); /* TURN negotiation is handled through STUN2 dissector (packet-stun.c), so only it should be able to determine if a packet is a TURN packet */ diff --git a/epan/dissectors/packet-tzsp.c b/epan/dissectors/packet-tzsp.c index 278dd59bed..efd1f0e8e7 100644 --- a/epan/dissectors/packet-tzsp.c +++ b/epan/dissectors/packet-tzsp.c @@ -37,7 +37,7 @@ * for a description of the protocol. */ -#define UDP_PORT_TZSP 0x9090 +#define UDP_PORT_TZSP 0x9090 /* Not IANA registered */ void proto_register_tzsp(void); void proto_reg_handoff_tzsp(void); @@ -539,8 +539,7 @@ proto_register_tzsp(void) &ett_tag }; - proto_tzsp = proto_register_protocol("Tazmen Sniffer Protocol", "TZSP", - "tzsp"); + proto_tzsp = proto_register_protocol("Tazmen Sniffer Protocol", "TZSP", "tzsp"); proto_register_field_array(proto_tzsp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -550,7 +549,7 @@ proto_register_tzsp(void) void proto_reg_handoff_tzsp(void) { - dissector_add_uint("udp.port", UDP_PORT_TZSP, tzsp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_TZSP, tzsp_handle); /* Get the data dissector for handling various encapsulation types. */ eth_maybefcs_handle = find_dissector_add_dependency("eth_maybefcs", proto_tzsp); diff --git a/epan/dissectors/packet-uaudp.c b/epan/dissectors/packet-uaudp.c index a5bc3e7b80..e193036840 100644 --- a/epan/dissectors/packet-uaudp.c +++ b/epan/dissectors/packet-uaudp.c @@ -25,12 +25,14 @@ #include "epan/packet.h" #include "epan/prefs.h" +#include "epan/prefs-int.h" #include "wsutil/report_err.h" #include "wsutil/inet_addr.h" #include "packet-uaudp.h" void proto_register_uaudp(void); +void proto_reg_handoff_uaudp(void); /* GLOBALS */ @@ -64,11 +66,12 @@ static int hf_uaudp_sntseq = -1; static gint ett_uaudp = -1; /* pref */ +#define UAUDP_PORT_RANGE "32000,32512" /* Not IANA registered */ +static range_t *ua_udp_range = NULL; static guint32 sys_ip; static const char* pref_sys_ip_s = ""; static gboolean use_sys_ip = FALSE; -static gboolean decode_ua = TRUE; static const value_string uaudp_opcode_str[] = { @@ -104,39 +107,6 @@ value_string_ext uaudp_connect_vals_ext = VALUE_STRING_EXT_INIT(uaudp_connect_va static dissector_handle_t ua_sys_to_term_handle; static dissector_handle_t ua_term_to_sys_handle; -typedef struct -{ - const char *name; - const char *text; - guint port; - guint last_port; -} prefs_uaudp_t; - -static prefs_uaudp_t ports[] = -{ - {"port1", "Terminal UDP port (setting 1)", 32000, 32000}, - {"port2", "Terminal UDP port (setting 2)", 32512, 32512}, - {"port3", "Terminal UDP port (setting 3)", 0, 0}, - {"port4", "Terminal UDP port (setting 4)", 0, 0}, -#if 0 - {"port5", "Terminal UDP port (setting 5)", 0, 0}, - {"port6", "Terminal UDP port (setting 6)", 0, 0}, - {"port7", "Terminal UDP port (setting 7)", 0, 0}, - {"port8", "Terminal UDP port (setting 8)", 0, 0} -#endif -}; -#define MAX_TERMINAL_PORTS (signed)(array_length(ports)) - -static gboolean find_terminal_port(guint port) -{ - int i; - for (i=0; isrcport)) + if (value_is_in_range(ua_udp_range, pinfo->srcport)) { _dissect_uaudp(tvb, pinfo, tree, TERM_TO_SYS); return tvb_captured_length(tvb); } - else if (find_terminal_port(pinfo->destport)) + else if (value_is_in_range(ua_udp_range, pinfo->destport)) { _dissect_uaudp(tvb, pinfo, tree, SYS_TO_TERM); return tvb_captured_length(tvb); @@ -387,14 +357,24 @@ static int dissect_uaudp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo return tvb_captured_length(tvb); } +static void +apply_uaudp_prefs(void) { + pref_t *ua_ports = prefs_find_preference(prefs_find_module("uaudp"), "udp.port"); -/* Register the protocol with Wireshark */ -void proto_reg_handoff_uaudp(void); + ua_udp_range = range_copy(*ua_ports->varp.range); + + if (*pref_sys_ip_s) { + use_sys_ip = ws_inet_pton4(pref_sys_ip_s, &sys_ip); + if (!use_sys_ip) { + report_failure("Invalid value for pref uaudp.system_ip: %s", + pref_sys_ip_s); + } + } +} void proto_register_uaudp(void) { module_t *uaudp_module; - int i; /* Setup list of header fields. See Section 1.6.1 for details */ static hf_register_info hf_uaudp[] = { @@ -561,9 +541,7 @@ void proto_register_uaudp(void) }; /* Register the protocol name and description */ - proto_uaudp = proto_register_protocol("UA/UDP Encapsulation Protocol", - "UAUDP", - "uaudp"); + proto_uaudp = proto_register_protocol("UA/UDP Encapsulation Protocol", "UAUDP", "uaudp"); uaudp_handle = register_dissector("uaudp", dissect_uaudp, proto_uaudp); #if 0 /* XXX: Not used ?? */ @@ -575,23 +553,17 @@ void proto_register_uaudp(void) proto_register_field_array(proto_uaudp, hf_uaudp, array_length(hf_uaudp)); proto_register_subtree_array(ett, array_length(ett)); - /* Register preferences */ - uaudp_module = prefs_register_protocol(proto_uaudp, proto_reg_handoff_uaudp); - #if 0 - prefs_register_bool_preference(uaudp_module, "enable", - "Enable UA/UDP decoding based on preferences", - "Enable UA/UDP decoding based on preferences", - &decode_ua); + uaudp_opcode_dissector_table = + register_dissector_table("uaudp.opcode", + "UAUDP opcode", + FT_UINT8, + BASE_DEC); #endif - for (i=0; i -#include void proto_register_uhd(void); -static gint dissector_port_pref = 0; - /* ====== DO NOT MAKE UNAPPROVED MODIFICATIONS HERE ===== */ #define USRP2_CTRL_ID_HUH_WHAT 0x20 /* ' ' */ @@ -268,37 +265,18 @@ proto_register_uhd(void) &ett_uhd }; - module_t *uhd_module; - proto_uhd = proto_register_protocol("UHD", "UHD", "uhd"); proto_register_field_array(proto_uhd, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - uhd_module = prefs_register_protocol(proto_uhd, proto_reg_handoff_uhd); - prefs_register_uint_preference(uhd_module, - "dissector_port", - "Dissector UDP port", - "The UDP port used by this dissector", - 10, &dissector_port_pref); } void proto_reg_handoff_uhd(void) { - static gboolean uhd_prefs_initialized = FALSE; - static dissector_handle_t uhd_handle; - static gint dissector_port; + dissector_handle_t uhd_handle; - if (!uhd_prefs_initialized) { - uhd_handle = create_dissector_handle(dissect_uhd, proto_uhd); - uhd_prefs_initialized = TRUE; - } else { - dissector_delete_uint("udp.port", dissector_port, uhd_handle); - } - - dissector_port = dissector_port_pref; - - dissector_add_uint("udp.port", dissector_port, uhd_handle); + uhd_handle = create_dissector_handle(dissect_uhd, proto_uhd); + dissector_add_for_decode_as_with_preference("udp.port", uhd_handle); } /* diff --git a/epan/dissectors/packet-ulp.c b/epan/dissectors/packet-ulp.c index eebb9548ca..9d7fb5fa73 100644 --- a/epan/dissectors/packet-ulp.c +++ b/epan/dissectors/packet-ulp.c @@ -60,7 +60,6 @@ static dissector_handle_t lpp_handle; * oma-ulp 7275/udp OMA UserPlane Location */ #define ULP_PORT 7275 -static guint gbl_ulp_udp_port = ULP_PORT; /* Initialize the protocol and registered fields */ static int proto_ulp = -1; @@ -711,7 +710,7 @@ static int hf_ulp_GANSSSignals_signal7 = -1; static int hf_ulp_GANSSSignals_signal8 = -1; /*--- End of included file: packet-ulp-hf.c ---*/ -#line 66 "./asn1/ulp/packet-ulp-template.c" +#line 65 "./asn1/ulp/packet-ulp-template.c" static int hf_ulp_mobile_directory_number = -1; static int hf_ulp_ganssTimeModels_bit0 = -1; static int hf_ulp_ganssTimeModels_bit1 = -1; @@ -942,7 +941,7 @@ static gint ett_ulp_PolygonArea = -1; static gint ett_ulp_PolygonDescription = -1; /*--- End of included file: packet-ulp-ett.c ---*/ -#line 80 "./asn1/ulp/packet-ulp-template.c" +#line 79 "./asn1/ulp/packet-ulp-template.c" static dissector_handle_t ulp_tcp_handle; @@ -1212,7 +1211,7 @@ ulp_Coordinate_longitude_fmt(gchar *s, guint32 v) #define maxWimaxBSMeas 32 /*--- End of included file: packet-ulp-val.h ---*/ -#line 330 "./asn1/ulp/packet-ulp-template.c" +#line 329 "./asn1/ulp/packet-ulp-template.c" typedef struct { @@ -7791,7 +7790,7 @@ static int dissect_ULP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_ /*--- End of included file: packet-ulp-fn.c ---*/ -#line 346 "./asn1/ulp/packet-ulp-template.c" +#line 345 "./asn1/ulp/packet-ulp-template.c" static guint @@ -10362,7 +10361,7 @@ void proto_register_ulp(void) { NULL, HFILL }}, /*--- End of included file: packet-ulp-hfarr.c ---*/ -#line 372 "./asn1/ulp/packet-ulp-template.c" +#line 371 "./asn1/ulp/packet-ulp-template.c" { &hf_ulp_mobile_directory_number, { "Mobile Directory Number", "ulp.mobile_directory_number", FT_STRING, BASE_NONE, NULL, 0, @@ -10616,7 +10615,7 @@ void proto_register_ulp(void) { &ett_ulp_PolygonDescription, /*--- End of included file: packet-ulp-ettarr.c ---*/ -#line 409 "./asn1/ulp/packet-ulp-template.c" +#line 408 "./asn1/ulp/packet-ulp-template.c" }; module_t *ulp_module; @@ -10630,21 +10629,13 @@ void proto_register_ulp(void) { proto_register_field_array(proto_ulp, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - ulp_module = prefs_register_protocol(proto_ulp,proto_reg_handoff_ulp); + ulp_module = prefs_register_protocol(proto_ulp, NULL); prefs_register_bool_preference(ulp_module, "desegment_ulp_messages", "Reassemble ULP messages spanning multiple TCP segments", "Whether the ULP dissector should reassemble messages spanning multiple TCP segments." " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.", &ulp_desegment); - - /* Register a configuration option for port */ - prefs_register_uint_preference(ulp_module, "udp.port", - "ULP UDP Port", - "Set the UDP port for ULP messages (IANA registered port is 7275)", - 10, - &gbl_ulp_udp_port); - } @@ -10652,23 +10643,15 @@ void proto_register_ulp(void) { void proto_reg_handoff_ulp(void) { - static gboolean initialized = FALSE; - static dissector_handle_t ulp_udp_handle; - static guint local_ulp_udp_port; + dissector_handle_t ulp_udp_handle; - if (!initialized) { dissector_add_string("media_type","application/oma-supl-ulp", ulp_tcp_handle); dissector_add_string("media_type","application/vnd.omaloc-supl-init", ulp_tcp_handle); ulp_udp_handle = create_dissector_handle(dissect_ULP_PDU_PDU, proto_ulp); rrlp_handle = find_dissector_add_dependency("rrlp", proto_ulp); lpp_handle = find_dissector_add_dependency("lpp", proto_ulp); - dissector_add_uint_with_preference("tcp.port", ULP_PORT, ulp_tcp_handle); - initialized = TRUE; - } else { - dissector_delete_uint("udp.port", local_ulp_udp_port, ulp_udp_handle); - } - local_ulp_udp_port = gbl_ulp_udp_port; - dissector_add_uint("udp.port", gbl_ulp_udp_port, ulp_udp_handle); + dissector_add_uint_with_preference("tcp.port", ULP_PORT, ulp_tcp_handle); + dissector_add_uint_with_preference("udp.port", ULP_PORT, ulp_udp_handle); } diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c index 94084b1d79..d1023e2f6f 100644 --- a/epan/dissectors/packet-uma.c +++ b/epan/dissectors/packet-uma.c @@ -1754,7 +1754,7 @@ proto_reg_handoff_uma(void) { uma_tcp_handle = find_dissector("umatcp"); uma_udp_handle = find_dissector("umaudp"); - dissector_add_for_decode_as("udp.port", uma_udp_handle); + dissector_add_for_decode_as_with_preference("udp.port", uma_udp_handle); rtcp_handle = find_dissector_add_dependency("rtcp", proto_uma); llc_handle = find_dissector_add_dependency("llcgprs", proto_uma); bssap_pdu_type_table = find_dissector_table("bssap.pdu_type"); diff --git a/epan/dissectors/packet-userlog.c b/epan/dissectors/packet-userlog.c index 22f42995d3..e4571c3443 100644 --- a/epan/dissectors/packet-userlog.c +++ b/epan/dissectors/packet-userlog.c @@ -414,7 +414,7 @@ proto_reg_handoff_userlog(void) dissector_handle_t userlog_handle; userlog_handle = create_dissector_handle(dissect_userlog, proto_userlog); - dissector_add_for_decode_as("udp.port", userlog_handle); + dissector_add_for_decode_as_with_preference("udp.port", userlog_handle); } diff --git a/epan/dissectors/packet-vcdu.c b/epan/dissectors/packet-vcdu.c index 29cbf9a810..e04eef7931 100644 --- a/epan/dissectors/packet-vcdu.c +++ b/epan/dissectors/packet-vcdu.c @@ -669,7 +669,7 @@ proto_register_vcdu(void) void proto_reg_handoff_vcdu(void) { - dissector_add_for_decode_as("udp.port", vcdu_handle); + dissector_add_for_decode_as_with_preference("udp.port", vcdu_handle); ccsds_handle = find_dissector_add_dependency("ccsds", proto_vcdu); } diff --git a/epan/dissectors/packet-vines.c b/epan/dissectors/packet-vines.c index 6c6da0db18..c2e1c317ab 100644 --- a/epan/dissectors/packet-vines.c +++ b/epan/dissectors/packet-vines.c @@ -429,7 +429,7 @@ proto_reg_handoff_vines_frp(void) vines_frp_new_handle = create_dissector_handle(dissect_vines_frp_new, proto_vines_frp); - dissector_add_uint("udp.port", UDP_PORT_VINES, vines_frp_new_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_VINES, vines_frp_new_handle); } static dissector_table_t vines_llc_dissector_table; diff --git a/epan/dissectors/packet-vrt.c b/epan/dissectors/packet-vrt.c index 129136bd23..5db62628d8 100644 --- a/epan/dissectors/packet-vrt.c +++ b/epan/dissectors/packet-vrt.c @@ -28,11 +28,11 @@ #include "config.h" #include -#include void proto_register_vrt(void); +void proto_reg_handoff_vrt(void); -static gint dissector_port_pref = 4991; +#define VITA_49_PORT 4991 static int proto_vrt = -1; @@ -155,10 +155,9 @@ static const int *ind_hfs[] = { &hf_vrt_trailer_ind_caltime }; -void dissect_header(tvbuff_t *tvb, proto_tree *tree, int type, int offset); -void dissect_trailer(tvbuff_t *tvb, proto_tree *tree, int offset); -void dissect_cid(tvbuff_t *tvb, proto_tree *tree, int offset); -void proto_reg_handoff_vrt(void); +static void dissect_header(tvbuff_t *tvb, proto_tree *tree, int type, int offset); +static void dissect_trailer(tvbuff_t *tvb, proto_tree *tree, int offset); +static void dissect_cid(tvbuff_t *tvb, proto_tree *tree, int offset); static int dissect_vrt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { @@ -261,7 +260,7 @@ static int dissect_vrt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void return tvb_captured_length(tvb); } -void dissect_header(tvbuff_t *tvb, proto_tree *tree, int type, int offset) +static void dissect_header(tvbuff_t *tvb, proto_tree *tree, int type, int offset) { proto_item *hdr_item; proto_tree *hdr_tree; @@ -284,7 +283,7 @@ void dissect_header(tvbuff_t *tvb, proto_tree *tree, int type, int offset) proto_tree_add_item(hdr_tree, hf_vrt_len, tvb, offset, 2, ENC_BIG_ENDIAN); } -void dissect_trailer(tvbuff_t *tvb, proto_tree *tree, int offset) +static void dissect_trailer(tvbuff_t *tvb, proto_tree *tree, int offset) { proto_item *enable_item, *ind_item, *trailer_item; proto_tree *enable_tree; @@ -321,7 +320,7 @@ void dissect_trailer(tvbuff_t *tvb, proto_tree *tree, int offset) proto_tree_add_item(trailer_tree, hf_vrt_trailer_acpc, tvb, offset, 1, ENC_BIG_ENDIAN); } -void dissect_cid(tvbuff_t *tvb, proto_tree *tree, int offset) +static void dissect_cid(tvbuff_t *tvb, proto_tree *tree, int offset) { proto_item *cid_item; proto_tree *cid_tree; @@ -634,42 +633,19 @@ proto_register_vrt(void) &ett_cid }; - module_t *vrt_module; - - proto_vrt = proto_register_protocol ( - "VITA 49 radio transport protocol", /* name */ - "VITA 49", /* short name */ - "vrt" /* abbrev */ - ); + proto_vrt = proto_register_protocol ("VITA 49 radio transport protocol", "VITA 49", "vrt"); proto_register_field_array(proto_vrt, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - - vrt_module = prefs_register_protocol(proto_vrt, proto_reg_handoff_vrt); - prefs_register_uint_preference(vrt_module, - "dissector_port", - "Dissector UDP port", - "The UDP port used by this dissector", - 10, &dissector_port_pref); } void proto_reg_handoff_vrt(void) { - static gboolean vrt_prefs_initialized = FALSE; - static dissector_handle_t vrt_handle; - static gint dissector_port; + dissector_handle_t vrt_handle; - if (!vrt_prefs_initialized) { - vrt_handle = create_dissector_handle(dissect_vrt, proto_vrt); - vrt_prefs_initialized = TRUE; - } else { - dissector_delete_uint("udp.port", dissector_port, vrt_handle); - } - - dissector_port = dissector_port_pref; - - dissector_add_uint("udp.port", dissector_port, vrt_handle); + vrt_handle = create_dissector_handle(dissect_vrt, proto_vrt); + dissector_add_uint_with_preference("udp.port", VITA_49_PORT, vrt_handle); } /* diff --git a/epan/dissectors/packet-vsip.c b/epan/dissectors/packet-vsip.c index 7613d6af60..7713ff99ff 100644 --- a/epan/dissectors/packet-vsip.c +++ b/epan/dissectors/packet-vsip.c @@ -2081,7 +2081,7 @@ void proto_reg_handoff_vsip(void) dissector_handle_t vsip_handle; vsip_handle = create_dissector_handle(dissect_vsip, proto_vsip); - dissector_add_for_decode_as("udp.port", vsip_handle); + dissector_add_for_decode_as_with_preference("udp.port", vsip_handle); dissector_add_for_decode_as_with_preference("tcp.port", vsip_handle); } diff --git a/epan/dissectors/packet-vuze-dht.c b/epan/dissectors/packet-vuze-dht.c index 30d8cf4f94..334101532f 100644 --- a/epan/dissectors/packet-vuze-dht.c +++ b/epan/dissectors/packet-vuze-dht.c @@ -24,10 +24,9 @@ #include "config.h" #include -#include #include -#define DEFAULT_UDP_PORT 11273 +#define DEFAULT_UDP_PORT 11273 /* Not IANA registered */ void proto_register_vuze_dht(void); @@ -307,9 +306,6 @@ static gint ett_vuze_dht_network_coordinate = -1; static dissector_handle_t vuze_dht_handle; -/* port use */ -static guint global_vuze_dht_udp_port = DEFAULT_UDP_PORT; - void proto_reg_handoff_vuze_dht(void); /* --- Address format -------------- @@ -1532,47 +1528,19 @@ proto_register_vuze_dht(void) &ett_vuze_dht_network_coordinate }; - module_t *vuze_dht_module; - /* Register protocol */ - proto_vuze_dht = proto_register_protocol ( - "Vuze DHT Protocol", /* name */ - "Vuze-DHT", /* short name */ - "vuze-dht" /* abbrev */ - ); + proto_vuze_dht = proto_register_protocol ( "Vuze DHT Protocol", "Vuze-DHT", "vuze-dht" ); proto_register_field_array(proto_vuze_dht, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); vuze_dht_handle = register_dissector("vuze-dht", dissect_vuze_dht, proto_vuze_dht); - - /* Register our configuration options */ - vuze_dht_module = prefs_register_protocol(proto_vuze_dht, proto_reg_handoff_vuze_dht); - - prefs_register_uint_preference(vuze_dht_module, "udp_port", - "Vuze DHT Protocol UDP port", - "Set the UDP port for Vuze DHT Protocol.", - 10, &global_vuze_dht_udp_port); } void proto_reg_handoff_vuze_dht(void) { - static gboolean vuze_dht_prefs_initialized = FALSE; - static guint vuze_dht_udp_port; - - if (!vuze_dht_prefs_initialized) - { - vuze_dht_prefs_initialized = TRUE; - } - else - { - dissector_delete_uint("udp.port", vuze_dht_udp_port, vuze_dht_handle); - } - - /* Set our port number for future use */ - vuze_dht_udp_port = global_vuze_dht_udp_port; - dissector_add_uint("udp.port", global_vuze_dht_udp_port, vuze_dht_handle); + dissector_add_uint("udp.port", DEFAULT_UDP_PORT, vuze_dht_handle); } /* * Editor modelines diff --git a/epan/dissectors/packet-vxlan.c b/epan/dissectors/packet-vxlan.c index dcb20bb8a4..fd7239513a 100644 --- a/epan/dissectors/packet-vxlan.c +++ b/epan/dissectors/packet-vxlan.c @@ -306,8 +306,8 @@ proto_reg_handoff_vxlan(void) vxlan_handle = create_dissector_handle(dissect_vxlan, proto_vxlan); vxlan_gpe_handle = create_dissector_handle(dissect_vxlan_gpe, proto_vxlan_gpe); - dissector_add_uint("udp.port", UDP_PORT_VXLAN, vxlan_handle); - dissector_add_uint("udp.port", UDP_PORT_VXLAN_GPE, vxlan_gpe_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_VXLAN, vxlan_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_VXLAN_GPE, vxlan_gpe_handle); } /* diff --git a/epan/dissectors/packet-wap.h b/epan/dissectors/packet-wap.h index f27da84971..d95fb58c13 100644 --- a/epan/dissectors/packet-wap.h +++ b/epan/dissectors/packet-wap.h @@ -35,11 +35,13 @@ /* Port Numbers as per IANA */ /* < URL:http://www.iana.org/assignments/port-numbers/ > */ #define UDP_PORT_WSP 9200 /* wap-wsp */ +#define UDP_PORT_WSP_RANGE "2948,9200" /* wap-wsp */ #define UDP_PORT_WTP_WSP 9201 /* wap-wsp-wtp */ #define UDP_PORT_WTLS_WSP 9202 /* wap-wsp-s */ #define UDP_PORT_WTLS_WTP_WSP 9203 /* wap-wsp-wtp-s */ #define UDP_PORT_WSP_PUSH 2948 /* wap-wsp */ #define UDP_PORT_WTLS_WSP_PUSH 2949 /* wap-wsp-s */ +#define UDP_PORT_WTLS_RANGE "2949,9202-9203" /* wap-wsp */ /* * Note: diff --git a/epan/dissectors/packet-wassp.c b/epan/dissectors/packet-wassp.c index 527c785d59..27c3d97056 100644 --- a/epan/dissectors/packet-wassp.c +++ b/epan/dissectors/packet-wassp.c @@ -341,8 +341,7 @@ static int hf_config_radio_tx_power_adj = -1; #define PROTO_SHORT_NAME "WASSP" #define PROTO_LONG_NAME "Wireless Access Station Session Protocol" -#define PORT_WASSP_DISCOVER 13907 -#define PORT_WASSP_TUNNEL 13910 +#define PORT_WASSP_RANGE "13907,13910" /* Not IANA registered */ /* #define PORT_WASSP_PEER 13913?? */ /* ============= copy/paste/modify from value_string.[hc] ============== */ @@ -2097,8 +2096,7 @@ proto_reg_handoff_wassp(void) wassp_handle = create_dissector_handle(dissect_wassp_static, proto_wassp); - dissector_add_uint("udp.port", PORT_WASSP_DISCOVER, wassp_handle); - dissector_add_uint("udp.port", PORT_WASSP_TUNNEL, wassp_handle); + dissector_add_uint_range_with_preference("udp.port", PORT_WASSP_RANGE, wassp_handle); /* dissector_add_uint("udp.port", PORT_WASSP_PEER, wassp_handle); */ heur_dissector_add("udp", dissect_wassp_heur, "WASSP over UDP", "wassp_udp", proto_wassp, HEURISTIC_DISABLE); diff --git a/epan/dissectors/packet-wccp.c b/epan/dissectors/packet-wccp.c index 88aa7f638f..35da7f6dee 100644 --- a/epan/dissectors/packet-wccp.c +++ b/epan/dissectors/packet-wccp.c @@ -3569,7 +3569,7 @@ proto_reg_handoff_wccp(void) dissector_handle_t wccp_handle; wccp_handle = create_dissector_handle(dissect_wccp, proto_wccp); - dissector_add_uint("udp.port", UDP_PORT_WCCP, wccp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_WCCP, wccp_handle); } /* diff --git a/epan/dissectors/packet-who.c b/epan/dissectors/packet-who.c index 3f2753a81c..66d9a25506 100644 --- a/epan/dissectors/packet-who.c +++ b/epan/dissectors/packet-who.c @@ -287,7 +287,7 @@ proto_reg_handoff_who(void) dissector_handle_t who_handle; who_handle = create_dissector_handle(dissect_who, proto_who); - dissector_add_uint("udp.port", UDP_PORT_WHO, who_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_WHO, who_handle); } /* diff --git a/epan/dissectors/packet-wlccp.c b/epan/dissectors/packet-wlccp.c index 0a0ac2b669..b9bc260cf8 100644 --- a/epan/dissectors/packet-wlccp.c +++ b/epan/dissectors/packet-wlccp.c @@ -69,7 +69,7 @@ void proto_reg_handoff_wlccp(void); /* The UDP port that WLCCP is expected to ride on */ /* WLCCP also uses an LLC OUI type and an ethertype */ -#define WLCCP_UDP_PORT 2887 +#define WLCCP_UDP_PORT 2887 /* Not IANA registered */ /* SAP is 2-bit version and 6-bit Type */ @@ -4114,7 +4114,7 @@ proto_reg_handoff_wlccp(void) wlccp_handle = create_dissector_handle(dissect_wlccp, proto_wlccp); dissector_add_uint("ethertype", ETHERTYPE_WLCCP, wlccp_handle); - dissector_add_uint("udp.port", WLCCP_UDP_PORT, wlccp_handle); + dissector_add_uint_with_preference("udp.port", WLCCP_UDP_PORT, wlccp_handle); dissector_add_uint("llc.wlccp_pid", 0x0000, wlccp_handle); } diff --git a/epan/dissectors/packet-wsp.c b/epan/dissectors/packet-wsp.c index fec6900c6d..45ba624ac7 100644 --- a/epan/dissectors/packet-wsp.c +++ b/epan/dissectors/packet-wsp.c @@ -7164,15 +7164,9 @@ proto_register_wsp(void) expert_module_t* expert_wsp; /* Register the protocol name and description */ - proto_wsp = proto_register_protocol( - "Wireless Session Protocol", /* protocol name for use by wireshark */ - "WSP", /* short version of name */ - "wsp" /* Abbreviated protocol name, - should Match IANA: - < URL:http://www.iana.org/assignments/port-numbers/ > - */ - ); + proto_wsp = proto_register_protocol( "Wireless Session Protocol", "WSP", "wsp"); wsp_tap = register_tap("wsp"); + /* Init the hash table */ /* wsp_sessions = g_hash_table_new( (GHashFunc) wsp_session_hash, @@ -7203,8 +7197,7 @@ proto_reg_handoff_wsp(void) wbxml_uaprof_handle = find_dissector_add_dependency("wbxml-uaprof", proto_wsp); /* Only connection-less WSP has no previous handler */ - dissector_add_uint("udp.port", UDP_PORT_WSP, wsp_fromudp_handle); - dissector_add_uint("udp.port", UDP_PORT_WSP_PUSH, wsp_fromudp_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_WSP_RANGE, wsp_fromudp_handle); /* GSM SMS UD dissector can also carry WSP */ dissector_add_uint("gsm_sms_ud.udh.port", UDP_PORT_WSP, wsp_fromudp_handle); diff --git a/epan/dissectors/packet-wtls.c b/epan/dissectors/packet-wtls.c index 3e51e55892..53f1fbc0aa 100644 --- a/epan/dissectors/packet-wtls.c +++ b/epan/dissectors/packet-wtls.c @@ -1569,13 +1569,7 @@ proto_register_wtls(void) }; /* Register the protocol name and description */ - proto_wtls = proto_register_protocol( - "Wireless Transport Layer Security", /* protocol name for use by wireshark */ - "WTLS", /* short version of name */ - "wtls" /* Abbreviated protocol name, should Match IANA - < URL:http://www.iana.org/assignments/port-numbers/ > - */ - ); + proto_wtls = proto_register_protocol("Wireless Transport Layer Security", "WTLS", "wtls" ); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_wtls, hf, array_length(hf)); @@ -1588,9 +1582,7 @@ proto_reg_handoff_wtls(void) dissector_handle_t wtls_handle; wtls_handle = create_dissector_handle(dissect_wtls, proto_wtls); - dissector_add_uint("udp.port", UDP_PORT_WTLS_WSP, wtls_handle); - dissector_add_uint("udp.port", UDP_PORT_WTLS_WTP_WSP, wtls_handle); - dissector_add_uint("udp.port", UDP_PORT_WTLS_WSP_PUSH,wtls_handle); + dissector_add_uint_range_with_preference("udp.port", UDP_PORT_WTLS_RANGE, wtls_handle); } /* diff --git a/epan/dissectors/packet-wtp.c b/epan/dissectors/packet-wtp.c index 3d16a51c15..709c81e6ff 100644 --- a/epan/dissectors/packet-wtp.c +++ b/epan/dissectors/packet-wtp.c @@ -1078,7 +1078,7 @@ proto_reg_handoff_wtp(void) wsp_handle = find_dissector_add_dependency("wsp-co", proto_wtp); wtp_fromudp_handle = find_dissector("wtp-udp"); - dissector_add_uint("udp.port", UDP_PORT_WTP_WSP, wtp_fromudp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_WTP_WSP, wtp_fromudp_handle); dissector_add_uint("gsm_sms_ud.udh.port", UDP_PORT_WTP_WSP, wtp_fromudp_handle); dissector_add_uint("gsm_sms.udh.port", UDP_PORT_WTP_WSP, wtp_fromudp_handle); } diff --git a/epan/dissectors/packet-xdmcp.c b/epan/dissectors/packet-xdmcp.c index dbdf564703..782c687b98 100644 --- a/epan/dissectors/packet-xdmcp.c +++ b/epan/dissectors/packet-xdmcp.c @@ -610,8 +610,7 @@ void proto_register_xdmcp(void) expert_module_t* expert_xdmcp; /* Register the protocol name and description */ - proto_xdmcp = proto_register_protocol("X Display Manager Control Protocol", - "XDMCP", "xdmcp"); + proto_xdmcp = proto_register_protocol("X Display Manager Control Protocol", "XDMCP", "xdmcp"); /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_xdmcp, hf, array_length(hf)); @@ -626,7 +625,7 @@ proto_reg_handoff_xdmcp(void) dissector_handle_t xdmcp_handle; xdmcp_handle = create_dissector_handle(dissect_xdmcp, proto_xdmcp); - dissector_add_uint("udp.port", UDP_PORT_XDMCP, xdmcp_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_XDMCP, xdmcp_handle); } /* * Editor modelines diff --git a/epan/dissectors/packet-xyplex.c b/epan/dissectors/packet-xyplex.c index 6f0c49537f..d8217c913d 100644 --- a/epan/dissectors/packet-xyplex.c +++ b/epan/dissectors/packet-xyplex.c @@ -206,7 +206,7 @@ void proto_reg_handoff_xyplex(void) { xyplex_handle = create_dissector_handle(dissect_xyplex, proto_xyplex); - dissector_add_uint("udp.port", UDP_PORT_XYPLEX, xyplex_handle); + dissector_add_uint_with_preference("udp.port", UDP_PORT_XYPLEX, xyplex_handle); } /* diff --git a/epan/dissectors/packet-yami.c b/epan/dissectors/packet-yami.c index c7bb2d8a48..69c53bd189 100644 --- a/epan/dissectors/packet-yami.c +++ b/epan/dissectors/packet-yami.c @@ -37,7 +37,6 @@ void proto_reg_handoff_yami(void); void proto_register_yami(void); static gboolean yami_desegment = TRUE; -static guint global_yami_config_udp_port = 0; static dissector_handle_t yami_handle; @@ -586,8 +585,7 @@ proto_register_yami(void) proto_register_fields(proto_yami, hfi, array_length(hfi)); proto_register_subtree_array(ett, array_length(ett)); - yami_module = prefs_register_protocol(proto_yami, proto_reg_handoff_yami); - prefs_register_uint_preference(yami_module, "udp.port", "YAMI UDP Port", "The UDP port on which YAMI messages will be read(5000)", 10, &global_yami_config_udp_port); + yami_module = prefs_register_protocol(proto_yami, NULL); prefs_register_bool_preference(yami_module, "desegment", "Reassemble YAMI messages spanning multiple TCP segments", "Whether the YAMI dissector should reassemble messages spanning multiple TCP segments." @@ -600,20 +598,8 @@ proto_register_yami(void) void proto_reg_handoff_yami(void) { - static int yami_prefs_initialized = FALSE; - static guint yami_udp_port; - - if(yami_prefs_initialized == FALSE){ - yami_prefs_initialized = TRUE; - yami_udp_port = global_yami_config_udp_port; - dissector_add_for_decode_as_with_preference("tcp.port", yami_handle); - }else{ - dissector_delete_uint("udp.port", yami_udp_port, yami_handle); - } - - yami_udp_port = global_yami_config_udp_port; - - dissector_add_uint("udp.port", yami_udp_port, yami_handle); + dissector_add_for_decode_as_with_preference("tcp.port", yami_handle); + dissector_add_for_decode_as_with_preference("udp.port", yami_handle); } /* diff --git a/epan/dissectors/packet-zep.c b/epan/dissectors/packet-zep.c index de6024d7e8..8f3618a3a9 100644 --- a/epan/dissectors/packet-zep.c +++ b/epan/dissectors/packet-zep.c @@ -45,7 +45,6 @@ #include -#include #include "packet-ntp.h" #include "packet-zep.h" @@ -71,9 +70,6 @@ static int hf_zep_reserved_field = -1; /* Initialize protocol subtrees. */ static gint ett_zep = -1; -/* Initialize preferences. */ -static guint32 gPREF_zep_udp_port = ZEP_DEFAULT_PORT; - /* Dissector handle */ static dissector_handle_t zep_handle; @@ -252,8 +248,6 @@ static int dissect_zep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void */ void proto_register_zep(void) { - module_t *zep_module; - static hf_register_info hf[] = { { &hf_zep_version, { "Protocol Version", "zep.version", FT_UINT8, BASE_DEC, NULL, 0x0, @@ -311,15 +305,6 @@ void proto_register_zep(void) proto_register_field_array(proto_zep, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); - /* Register preferences module */ - zep_module = prefs_register_protocol(proto_zep, proto_reg_handoff_zep); - - /* Register preferences */ - prefs_register_uint_preference(zep_module, "udp.port", "ZEP UDP port", - "Set the port for ZEP Protocol\n" - "Default port is 17754", - 10, &gPREF_zep_udp_port); - /* Register dissector with Wireshark. */ zep_handle = register_dissector("zep", dissect_zep, proto_zep); } /* proto_register_zep */ @@ -338,31 +323,20 @@ void proto_register_zep(void) */ void proto_reg_handoff_zep(void) { - static int lastPort; - static gboolean inited = FALSE; + dissector_handle_t h; - if ( !inited) { - dissector_handle_t h; - /* Get dissector handles. */ - if ( !(h = find_dissector("wpan")) ) { /* Try use built-in 802.15.4 dissector */ - h = find_dissector("ieee802154"); /* otherwise use older 802.15.4 plugin dissector */ - } - ieee802154_handle = h; - if ( !(h = find_dissector("wpan_cc24xx")) ) { /* Try use built-in 802.15.4 (Chipcon) dissector */ - h = find_dissector("ieee802154_ccfcs"); /* otherwise use older 802.15.4 (Chipcon) plugin dissector */ - } - ieee802154_ccfcs_handle = h; - data_handle = find_dissector("data"); - inited = TRUE; - } else { - /* If we were already registered, de-register our dissector - * to free the port. */ - dissector_delete_uint("udp.port", lastPort, zep_handle); + /* Get dissector handles. */ + if ( !(h = find_dissector("wpan")) ) { /* Try use built-in 802.15.4 dissector */ + h = find_dissector("ieee802154"); /* otherwise use older 802.15.4 plugin dissector */ } + ieee802154_handle = h; + if ( !(h = find_dissector("wpan_cc24xx")) ) { /* Try use built-in 802.15.4 (Chipcon) dissector */ + h = find_dissector("ieee802154_ccfcs"); /* otherwise use older 802.15.4 (Chipcon) plugin dissector */ + } + ieee802154_ccfcs_handle = h; - /* Register our dissector. */ - dissector_add_uint("udp.port", gPREF_zep_udp_port, zep_handle); - lastPort = gPREF_zep_udp_port; + data_handle = find_dissector("data"); + dissector_add_uint("udp.port", ZEP_DEFAULT_PORT, zep_handle); } /* proto_reg_handoff_zep */ /* diff --git a/epan/dissectors/packet-ziop.c b/epan/dissectors/packet-ziop.c index 601f629c1a..06a4dafb6a 100644 --- a/epan/dissectors/packet-ziop.c +++ b/epan/dissectors/packet-ziop.c @@ -314,8 +314,7 @@ proto_register_ziop (void) expert_module_t* expert_ziop; - proto_ziop = proto_register_protocol("Zipped Inter-ORB Protocol", "ZIOP", - "ziop"); + proto_ziop = proto_register_protocol("Zipped Inter-ORB Protocol", "ZIOP", "ziop"); proto_register_field_array (proto_ziop, hf, array_length (hf)); proto_register_subtree_array (ett, array_length (ett)); expert_ziop = expert_register_protocol(proto_ziop); @@ -329,7 +328,7 @@ void proto_reg_handoff_ziop (void) { ziop_tcp_handle = create_dissector_handle(dissect_ziop_tcp, proto_ziop); - dissector_add_for_decode_as("udp.port", ziop_tcp_handle); + dissector_add_for_decode_as_with_preference("udp.port", ziop_tcp_handle); heur_dissector_add("tcp", dissect_ziop_heur, "ZIOP over TCP", "ziop_tcp", proto_ziop, HEURISTIC_ENABLE); } diff --git a/epan/dissectors/packet-zrtp.c b/epan/dissectors/packet-zrtp.c index ef1ba3382f..5ae2194a77 100644 --- a/epan/dissectors/packet-zrtp.c +++ b/epan/dissectors/packet-zrtp.c @@ -1153,7 +1153,7 @@ proto_reg_handoff_zrtp(void) dissector_handle_t zrtp_handle; zrtp_handle = find_dissector("zrtp"); - dissector_add_for_decode_as("udp.port", zrtp_handle); + dissector_add_for_decode_as_with_preference("udp.port", zrtp_handle); } /* diff --git a/epan/prefs.c b/epan/prefs.c index c3814af396..184fdbf83e 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -4081,9 +4081,10 @@ deprecated_port_pref(gchar *pref_name, const gchar *value) const char* pref_name; }; - /* For now this is only supporting TCP port dissector preferences + /* For now this is only supporting TCP/UDP port dissector preferences which are assumed to be decimal */ struct port_pref_name port_prefs[] = { + /* TCP */ {"cmp.tcp_alternate_port", "CMP", "tcp.port", 10}, {"h248.tcp_port", "H248", "tcp.port", 10}, {"cops.tcp.cops_port", "COPS", "tcp.port", 10}, @@ -4102,9 +4103,45 @@ deprecated_port_pref(gchar *pref_name, const gchar *value) {"synphasor.tcp_port", "SYNCHROPHASOR", "tcp.port", 10}, {"tipc.alternate_port", "TIPC", "tcp.port", 10}, {"vnc.alternate_port", "VNC", "tcp.port", 10}, + {"scop.port", "SCoP", "tcp.port", 10}, + {"scop.port_secure", "SCoP", "tcp.port", 10}, + /* UDP */ + {"h248.udp_port", "H248", "udp.port", 10}, + {"actrace.udp_port", "ACtrace", "udp.port", 10}, + {"brp.port", "BRP", "udp.port", 10}, + {"bvlc.additional_udp_port", "BVLC", "udp.port", 10}, + {"capwap.udp.port.control", "CAPWAP-CONTROL", "udp.port", 10}, + {"capwap.udp.port.data", "CAPWAP-CONTROL", "udp.port", 10}, + {"coap.udp_port", "CoAP", "udp.port", 10}, + {"enttec.udp_port", "ENTTEC", "udp.port", 10}, + {"forces.udp_alternate_port", "ForCES", "udp.port", 10}, + {"ldss.udp_port", "LDSS", "udp.port", 10}, + {"lmp.udp_port", "LMP", "udp.port", 10}, + {"ltp.port", "LTP", "udp.port", 10}, + {"lwres.udp.lwres_port", "LWRES", "udp.port", 10}, + {"megaco.udp.txt_port", "MEGACO", "udp.port", 10}, + {"pgm.udp.encap_ucast_port", "PGM", "udp.port", 10}, + {"pgm.udp.encap_mcast_port", "PGM", "udp.port", 10}, + {"quic.udp.quic.port", "QUIC", "udp.port", 10}, + {"quic.udp.quics.port", "QUIC", "udp.port", 10}, + {"radius.alternate_port", "RADIUS", "udp.port", 10}, + {"rdt.default_udp_port", "RDT", "udp.port", 10}, + {"alc.default.udp_port", "ALC", "udp.port", 10}, + {"sigcomp.udp.port2", "SIGCOMP", "udp.port", 10}, + {"synphasor.udp_port", "SYNCHROPHASOR", "udp.port", 10}, + {"tdmop.udpport", "TDMoP", "udp.port", 10}, + {"uaudp.port1", "UAUDP", "udp.port", 10}, + {"uaudp.port2", "UAUDP", "udp.port", 10}, + {"uaudp.port3", "UAUDP", "udp.port", 10}, + {"uaudp.port4", "UAUDP", "udp.port", 10}, + {"uhd.dissector_port", "UHD", "udp.port", 10}, + {"vrt.dissector_port", "VITA 49", "udp.port", 10}, + {"vuze-dht.udp_port", "Vuze-DHT", "udp.port", 10}, + {"wimaxasncp.udp.wimax_port", "WiMAX ASN CP", "udp.port", 10}, }; struct port_pref_name port_range_prefs[] = { + /* TCP */ {"couchbase.tcp.ports", "Couchbase", "tcp.port", 10}, {"gsm_ipa.tcp_ports", "GSM over IP", "tcp.port", 10}, {"kafka.tcp.ports", "Kafka", "tcp.port", 10}, @@ -4115,6 +4152,22 @@ deprecated_port_pref(gchar *pref_name, const gchar *value) {"sip.tcp.ports", "SIP", "tcp.port", 10}, {"tds.tcp_ports", "TDS", "tcp.port", 10}, {"uma.tcp.ports", "UMA", "tcp.port", 10}, + /* UDP */ + {"aruba_erm.udp.ports", "ARUBA_ERM", "udp.port", 10}, + {"diameter.udp.ports", "DIAMETER", "udp.port", 10}, + {"dmp.udp.ports", "DMP", "udp.port", 10}, + {"dns.udp.ports", "DNS", "udp.port", 10}, + {"gsm_ipa.udp_ports", "GSM over IP", "udp.port", 10}, + {"hcrt.dissector_udp_port", "HCrt", "udp.port", 10}, + {"memcache.udp.ports", "MEMCACHE", "udp.port", 10}, + {"nb_rtpmux.udp_ports", "NB_RTPMUX", "udp.port", 10}, + {"gprs-ns.udp.ports", "GPRS-NS", "udp.port", 10}, + {"p_mul.udp_ports", "P_MUL", "udp.port", 10}, + {"radius.ports", "RADIUS", "udp.port", 10}, + {"sflow.ports", "sFlow", "udp.port", 10}, + {"sscop.udp.ports", "SSCOP", "udp.port", 10}, + {"tftp.udp_ports", "TFTP", "udp.port", 10}, + {"tipc.udp.ports", "TIPC", "udp.port", 10}, }; /* These are subdissectors of TPKT/OSITP that used to have a diff --git a/plugins/ethercat/packet-ethercat-frame.c b/plugins/ethercat/packet-ethercat-frame.c index e9c7c92c59..53b60b7112 100644 --- a/plugins/ethercat/packet-ethercat-frame.c +++ b/plugins/ethercat/packet-ethercat-frame.c @@ -129,8 +129,7 @@ void proto_register_ethercat_frame(void) &ett_ethercat_frame }; - proto_ethercat_frame = proto_register_protocol("EtherCAT frame header", - "ETHERCAT","ecatf"); + proto_ethercat_frame = proto_register_protocol("EtherCAT frame header", "ETHERCAT", "ecatf"); proto_register_field_array(proto_ethercat_frame,hf,array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); @@ -148,7 +147,7 @@ void proto_reg_handoff_ethercat_frame(void) ethercat_frame_handle = find_dissector("ecatf"); dissector_add_uint("ethertype", ETHERTYPE_ECATF, ethercat_frame_handle); - dissector_add_uint("udp.port", ETHERTYPE_ECATF, ethercat_frame_handle); + dissector_add_uint_with_preference("udp.port", ETHERTYPE_ECATF, ethercat_frame_handle); dissector_add_uint_with_preference("tcp.port", ETHERTYPE_ECATF, ethercat_frame_handle); } diff --git a/plugins/profinet/packet-pn-rt.c b/plugins/profinet/packet-pn-rt.c index 885cd9fc68..6ee55eb67c 100644 --- a/plugins/profinet/packet-pn-rt.c +++ b/plugins/profinet/packet-pn-rt.c @@ -39,6 +39,8 @@ void proto_register_pn_rt(void); void proto_reg_handoff_pn_rt(void); +#define PROFINET_UDP_PORT 0x8892 + /* Define the pn-rt proto */ static int proto_pn_rt = -1; static gboolean pnio_desegment = TRUE; @@ -1001,7 +1003,7 @@ proto_reg_handoff_pn_rt(void) pn_rt_handle = create_dissector_handle(dissect_pn_rt, proto_pn_rt); dissector_add_uint("ethertype", ETHERTYPE_PROFINET, pn_rt_handle); - dissector_add_uint("udp.port", 0x8892, pn_rt_handle); + dissector_add_uint_with_preference("udp.port", PROFINET_UDP_PORT, pn_rt_handle); heur_dissector_add("pn_rt", dissect_CSF_SDU_heur, "PROFINET CSF_SDU IO", "pn_csf_sdu_pn_rt", proto_pn_rt, HEURISTIC_ENABLE); heur_dissector_add("pn_rt", dissect_FRAG_PDU_heur, "PROFINET Frag PDU IO", "pn_frag_pn_rt", proto_pn_rt, HEURISTIC_ENABLE); diff --git a/plugins/unistim/packet-unistim.c b/plugins/unistim/packet-unistim.c index de74ec2837..1db183f081 100644 --- a/plugins/unistim/packet-unistim.c +++ b/plugins/unistim/packet-unistim.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include "packet-unistim.h" @@ -45,11 +44,6 @@ void proto_register_unistim(void); -/* Don't set this to 5000 until this dissector is made a heuristic one! - It collides (at least) with tapa. - static guint global_unistim_port = 5000; */ -static guint global_unistim_port = 0; - static unistim_info_t *uinfo; static int unistim_tap = -1; @@ -2692,8 +2686,6 @@ dissect_audio_phone(proto_tree *msg_tree, void proto_register_unistim(void){ - module_t* unistim_module; - static hf_register_info hf[] = { { &hf_unistim_seq_nu, { "RUDP Seq Num","unistim.num",FT_UINT32, @@ -4041,33 +4033,15 @@ proto_register_unistim(void){ expert_register_field_array(expert_unistim, ei, array_length(ei)); unistim_tap = register_tap("unistim"); - - unistim_module = prefs_register_protocol(proto_unistim, proto_reg_handoff_unistim); - - prefs_register_uint_preference(unistim_module, "udp.port", "UNISTIM UDP port", - "UNISTIM port (default 5000)", 10, &global_unistim_port); } void proto_reg_handoff_unistim(void) { - static gboolean initialized = FALSE; - static dissector_handle_t unistim_handle; - static guint unistim_port; - if (!initialized) { - unistim_handle=create_dissector_handle(dissect_unistim,proto_unistim); - dissector_add_for_decode_as("udp.port", unistim_handle); - initialized=TRUE; - } else { - if (unistim_port != 0) { - dissector_delete_uint("udp.port",unistim_port,unistim_handle); - } - } + dissector_handle_t unistim_handle; - if (global_unistim_port != 0) { - dissector_add_uint("udp.port",global_unistim_port,unistim_handle); - } - unistim_port = global_unistim_port; + unistim_handle=create_dissector_handle(dissect_unistim,proto_unistim); + dissector_add_for_decode_as_with_preference("udp.port", unistim_handle); } /* diff --git a/plugins/wimaxasncp/packet-wimaxasncp.c b/plugins/wimaxasncp/packet-wimaxasncp.c index 1c829f3c4c..27d06c81e8 100644 --- a/plugins/wimaxasncp/packet-wimaxasncp.c +++ b/plugins/wimaxasncp/packet-wimaxasncp.c @@ -87,7 +87,6 @@ static gboolean debug_enabled = FALSE; /* Default WiMAX ASN control protocol port */ #define WIMAXASNCP_DEF_UDP_PORT 2231 -static guint global_wimaxasncp_udp_port = WIMAXASNCP_DEF_UDP_PORT; /* Initialize the subtree pointers */ @@ -3396,20 +3395,12 @@ proto_register_wimaxasncp(void) */ /* Register the protocol name and description */ - proto_wimaxasncp = proto_register_protocol( - "WiMAX ASN Control Plane Protocol", - "WiMAX ASN CP", - "wimaxasncp"); - + proto_wimaxasncp = proto_register_protocol("WiMAX ASN Control Plane Protocol", "WiMAX ASN CP", "wimaxasncp"); /* Register this dissector by name */ wimaxasncp_handle = register_dissector("wimaxasncp", dissect_wimaxasncp, proto_wimaxasncp); - /* Register preferences module (See Section 2.6 for more on - * preferences) */ - wimaxasncp_module = prefs_register_protocol( - proto_wimaxasncp, - proto_reg_handoff_wimaxasncp); + wimaxasncp_module = prefs_register_protocol(proto_wimaxasncp, NULL); /* Register preferences */ prefs_register_bool_preference( @@ -3427,13 +3418,6 @@ proto_register_wimaxasncp(void) "Print debug output to the console.", &debug_enabled); - prefs_register_uint_preference( - wimaxasncp_module, - "udp.wimax_port", - "UDP Port for WiMAX ASN Control Plane Protocol", - "Set UDP port for WiMAX ASN Control Plane Protocol", - 10, &global_wimaxasncp_udp_port); - prefs_register_enum_preference( wimaxasncp_module, "nwg_version", @@ -3458,27 +3442,10 @@ proto_register_wimaxasncp(void) void proto_reg_handoff_wimaxasncp(void) { - static gboolean inited = FALSE; - static int currentPort = -1; + /* Find the EAP dissector */ + eap_handle = find_dissector_add_dependency("eap", proto_wimaxasncp); - if (!inited) - { - - /* Find the EAP dissector */ - eap_handle = find_dissector_add_dependency("eap", proto_wimaxasncp); - - inited = TRUE; - } - - if (currentPort != -1) - { - /* Remove any previous registered port */ - dissector_delete_uint("udp.port", currentPort, wimaxasncp_handle); - } - - /* Add the new one from preferences */ - currentPort = global_wimaxasncp_udp_port; - dissector_add_uint("udp.port", currentPort, wimaxasncp_handle); + dissector_add_uint_with_preference("udp.port", WIMAXASNCP_DEF_UDP_PORT, wimaxasncp_handle); } diff --git a/plugins/wimaxmacphy/packet-wimaxmacphy.c b/plugins/wimaxmacphy/packet-wimaxmacphy.c index cc7e80c24b..d872453bee 100644 --- a/plugins/wimaxmacphy/packet-wimaxmacphy.c +++ b/plugins/wimaxmacphy/packet-wimaxmacphy.c @@ -25,7 +25,6 @@ #include "config.h" #include -#include #include /* IF PROTO exposes code to other dissectors, then it must be exported @@ -303,10 +302,6 @@ static gint ett_wimaxmacphy_ul_sub_burst_sub_allocation_specific = -1; static expert_field ei_wimaxmacphy_unknown = EI_INIT; -/* Preferences */ -static guint wimaxmacphy_udp_port = 0; - - /* PHY SAP message header size */ #define WIMAXMACPHY_HEADER_SIZE 2 @@ -2459,8 +2454,6 @@ dissect_wimaxmacphy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *d void proto_register_wimaxmacphy(void) { - module_t *wimaxmacphy_module; - static hf_register_info hf[] = { { &hf_wimaxmacphy_hdr_phy_entity_id, @@ -5441,43 +5434,15 @@ proto_register_wimaxmacphy(void) proto_register_subtree_array(ett, array_length(ett)); expert_wimaxmacphy = expert_register_protocol(proto_wimaxmacphy); expert_register_field_array(expert_wimaxmacphy, ei, array_length(ei)); - - /* Register preferences module (See Section 2.6 for more on - * preferences) */ - wimaxmacphy_module = prefs_register_protocol( - proto_wimaxmacphy, - proto_reg_handoff_wimaxmacphy); - - prefs_register_uint_preference( - wimaxmacphy_module, "udp.port", - "WiMAX MAX PHY UDP Port", - "WiMAX MAX PHY UDP port", - 10, - &wimaxmacphy_udp_port); - } void proto_reg_handoff_wimaxmacphy(void) { - static guint old_wimaxmacphy_udp_port = 0; - static gboolean inited = FALSE; - static dissector_handle_t wimaxmacphy_handle; + dissector_handle_t wimaxmacphy_handle; - if (!inited) { - wimaxmacphy_handle = create_dissector_handle(dissect_wimaxmacphy, proto_wimaxmacphy); - dissector_add_for_decode_as("udp.port", wimaxmacphy_handle); - inited = TRUE; - } - - /* Register UDP port for dissection */ - if (old_wimaxmacphy_udp_port != 0 && old_wimaxmacphy_udp_port != wimaxmacphy_udp_port) { - dissector_delete_uint("udp.port", old_wimaxmacphy_udp_port, wimaxmacphy_handle); - } - - if (wimaxmacphy_udp_port != 0 && old_wimaxmacphy_udp_port != wimaxmacphy_udp_port) { - dissector_add_uint("udp.port", wimaxmacphy_udp_port, wimaxmacphy_handle); - } + wimaxmacphy_handle = create_dissector_handle(dissect_wimaxmacphy, proto_wimaxmacphy); + dissector_add_for_decode_as_with_preference("udp.port", wimaxmacphy_handle); } /*