Add prefs_get_uint_value and prefs_get_range_value

This allows dissectors to not need to know about the internal preference structure.

Change-Id: I1ae67248cd0b0132aefc225ea0a9befaf9afdde2
Reviewed-on: https://code.wireshark.org/review/18864
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
Michael Mann 2016-11-17 21:45:28 -05:00
parent ba67963fd4
commit fb9a356e46
20 changed files with 57 additions and 65 deletions

View File

@ -937,8 +937,10 @@ libwireshark.so.0 libwireshark0 #MINVER#
prefs_clear_string_list@Base 1.9.1
prefs_find_module@Base 1.9.1
prefs_find_preference@Base 1.9.1
prefs_get_range_value@Base 2.3.0
prefs_get_string_list@Base 1.9.1
prefs_get_title_by_name@Base 1.9.1
prefs_get_uint_value@Base 2.3.0
prefs_is_capture_device_hidden@Base 1.9.1
prefs_is_registered_protocol@Base 1.9.1
prefs_module_has_submodules@Base 1.9.1

View File

@ -32,7 +32,6 @@
#include <stdlib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/conversation.h>
#include <epan/expert.h>
#include <epan/proto_data.h>
@ -894,8 +893,7 @@ static void
apply_beep_prefs(void)
{
/* Beep uses the port preference to determine client/server */
pref_t *beep_port = prefs_find_preference(prefs_find_module("beep"), "tcp.port");
global_beep_tcp_port = *beep_port->varp.uint;
global_beep_tcp_port = prefs_get_uint_value("beep", "tcp.port");
}
/* Register all the bits needed with the filtering engine */

View File

@ -25,7 +25,6 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/reassemble.h>
#include <epan/expert.h>
@ -3398,8 +3397,7 @@ dissect_capwap_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d
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;
global_capwap_data_udp_port = prefs_get_uint_value("capwap.data", "udp.port");
}
void

View File

@ -32,7 +32,6 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
void proto_register_gopher(void);
void proto_reg_handoff_gopher(void);
@ -203,9 +202,9 @@ dissect_gopher(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
/* Preference callbacks */
static void
gopher_prefs_apply(void) {
pref_t *gopher_ports = prefs_find_preference(prefs_find_module("gopher"), "tcp.port");
gopher_tcp_range = range_copy(*gopher_ports->varp.range);
g_free(gopher_tcp_range);
gopher_tcp_range = prefs_get_range_value("gopher", "tcp.port");
}
/* Register the protocol with Wireshark */

View File

@ -29,7 +29,6 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include "packet-tcp.h"
void proto_register_hdfs(void);
@ -688,8 +687,7 @@ static void
apply_hdfs_prefs(void)
{
/* HDFS uses the port preference to determine request/response */
pref_t *hdfs_port = prefs_find_preference(prefs_find_module("hdfs"), "tcp.port");
tcp_port = *hdfs_port->varp.uint;
tcp_port = prefs_get_uint_value("hdfs", "tcp.port");;
}
/* registers the protcol with the given names */

View File

@ -34,7 +34,6 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/expert.h>
#include <epan/follow.h>
#include <epan/addr_resolv.h>
@ -3267,8 +3266,8 @@ range_add_http_ssl_callback(guint32 port) {
}
static void reinit_http(void) {
pref_t *http_tcp_ports = prefs_find_preference(prefs_find_module("http"), "tcp.port");
http_tcp_range = range_copy(*http_tcp_ports->varp.range);
g_free(http_tcp_range);
http_tcp_range = prefs_get_range_value("http", "tcp.port");
dissector_delete_uint_range("sctp.port", http_sctp_range, http_sctp_handle);
g_free(http_sctp_range);

View File

@ -34,7 +34,6 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/expert.h>
#include "packet-tcp.h"
@ -1494,8 +1493,7 @@ static void
apply_iec104_prefs(void)
{
/* IEC104 uses the port preference to determine direction */
pref_t *iec104_port_pref = prefs_find_preference(prefs_find_module("104apci"), "tcp.port");
iec104_port = *iec104_port_pref->varp.uint;
iec104_port = prefs_get_uint_value("104apci", "tcp.port");
}
/* The protocol has two subprotocols: Register APCI */

View File

@ -29,7 +29,6 @@
#include <epan/packet.h>
#include <epan/expert.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/proto_data.h>
#ifdef HAVE_SNAPPY
#include <snappy-c.h>
@ -1474,9 +1473,8 @@ dissect_kafka_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
apply_kafka_prefs(void) {
pref_t *kafka_ports = prefs_find_preference(prefs_find_module("kafka"), "tcp.port");
current_kafka_tcp_range = range_copy(*kafka_ports->varp.range);
g_free(current_kafka_tcp_range);
current_kafka_tcp_range = prefs_get_range_value("kafka", "tcp.port");
}
void

View File

@ -67,7 +67,6 @@
#include "packet-tcp.h"
#include "packet-mbtcp.h"
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/expert.h>
#include <epan/crc16-tvb.h> /* For CRC verification */
#include <epan/proto_data.h>
@ -1586,22 +1585,16 @@ static void
apply_mbtcp_prefs(void)
{
/* Modbus/RTU uses the port preference to determine request/response */
pref_t *tcp_port = prefs_find_preference(prefs_find_module("mbtcp"), "tcp.port");
pref_t *udp_port = prefs_find_preference(prefs_find_module("mbudp"), "udp.port");
global_mbus_tcp_port = *tcp_port->varp.uint;
global_mbus_udp_port = *udp_port->varp.uint;
global_mbus_tcp_port = prefs_get_uint_value("mbtcp", "tcp.port");
global_mbus_udp_port = prefs_get_uint_value("mbudp", "udp.port");
}
static void
apply_mbrtu_prefs(void)
{
/* Modbus/RTU uses the port preference to determine request/response */
pref_t *rtu_tcp_port = prefs_find_preference(prefs_find_module("mbrtu"), "tcp.port");
pref_t *rtu_udp_port = prefs_find_preference(prefs_find_module("mbrtu"), "udp.port");
global_mbus_tcp_rtu_port = *rtu_tcp_port->varp.uint;
global_mbus_udp_rtu_port = *rtu_udp_port->varp.uint;
global_mbus_tcp_rtu_port = prefs_get_uint_value("mbrtu", "tcp.port");
global_mbus_udp_rtu_port = prefs_get_uint_value("mbrtu", "udp.port");
}
/* Register the protocol with Wireshark */

View File

@ -29,7 +29,6 @@
#include <epan/packet.h>
#include <epan/expert.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include "packet-tcp.h"
@ -139,8 +138,7 @@ static void
apply_openflow_prefs(void)
{
/* Openflow uses the port preference for heuristics */
pref_t *openflow_port = prefs_find_preference(prefs_find_module("openflow"), "tcp.port");
g_openflow_port = *openflow_port->varp.uint;
g_openflow_port = prefs_get_uint_value("openflow", "tcp.port");
}
/*

View File

@ -32,7 +32,6 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
void proto_register_quake2(void);
void proto_reg_handoff_quake2(void);
@ -687,8 +686,7 @@ 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;
gbl_quake2ServerPort = prefs_get_uint_value("quake2", "udp.port");
}
void

View File

@ -30,7 +30,6 @@
#include <stdlib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/expert.h>
#include <wsutil/strtoi.h>
@ -705,8 +704,7 @@ 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;
gbl_quakeworldServerPort = prefs_get_uint_value("quakeworld", "udp.port");
}
void

View File

@ -30,7 +30,6 @@
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/proto_data.h>
void proto_register_rsync(void);
@ -312,8 +311,7 @@ static void
apply_rsync_prefs(void)
{
/* Rsync uses the port preference to determine client/server */
pref_t *rsync_port = prefs_find_preference(prefs_find_module("rsync"), "tcp.port");
glb_rsync_tcp_port = *rsync_port->varp.uint;
glb_rsync_tcp_port = prefs_get_uint_value("rsync", "tcp.port");
}
/* Register protocol with Wireshark. */

View File

@ -29,7 +29,6 @@
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/expert.h>
#include "packet-tcp.h" /* For tcp_dissect_pdus() */
#include <epan/crc16-tvb.h>
@ -955,8 +954,7 @@ static void
apply_s5066dts_prefs(void)
{
/* STANAG 5066 uses the port preference for some heuristics */
pref_t *s5066dts_port = prefs_find_preference(prefs_find_module("s5066dts"), "tcp.port");
config_s5066dts_port = *s5066dts_port->varp.uint;
config_s5066dts_port = prefs_get_uint_value("s5066dts", "tcp.port");;
}
void proto_register_s5066dts (void)

View File

@ -151,7 +151,6 @@
#include <epan/show_exception.h>
#include <epan/reassemble.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/expert.h>
#include "packet-tcp.h"
@ -4225,9 +4224,8 @@ version_convert( gchar *result, guint32 hexver )
static void
apply_tds_prefs(void) {
pref_t *tds_ports = prefs_find_preference(prefs_find_module("tds"), "tcp.port");
tds_tcp_ports = range_copy(*tds_ports->varp.range);
g_free(tds_tcp_ports);
tds_tcp_ports = prefs_get_range_value("tds", "tcp.port");
}
/* Register the protocol with Wireshark */

View File

@ -45,7 +45,6 @@
#include <epan/conversation.h>
#include <epan/expert.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/tap.h>
#include "packet-tftp.h"
@ -92,7 +91,7 @@ static dissector_handle_t tftp_handle;
void proto_reg_handoff_tftp (void);
/* User definable values */
static range_t *global_tftp_port_range;
static range_t *global_tftp_port_range = NULL;
/* minimum length is an ACK message of 4 bytes */
#define MIN_HDR_LEN 4
@ -605,9 +604,8 @@ 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);
g_free(global_tftp_port_range);
global_tftp_port_range = prefs_get_range_value("tftp", "udp.port");
}
void

View File

@ -25,7 +25,6 @@
#include "epan/packet.h"
#include "epan/prefs.h"
#include "epan/prefs-int.h"
#include "wsutil/report_err.h"
#include "wsutil/inet_addr.h"
@ -359,9 +358,8 @@ static int dissect_uaudp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
static void
apply_uaudp_prefs(void) {
pref_t *ua_ports = prefs_find_preference(prefs_find_module("uaudp"), "udp.port");
ua_udp_range = range_copy(*ua_ports->varp.range);
g_free(ua_udp_range);
ua_udp_range = prefs_get_range_value("uaudp", "udp.port");
if (*pref_sys_ip_s) {
use_sys_ip = ws_inet_pton4(pref_sys_ip_s, &sys_ip);

View File

@ -82,7 +82,6 @@
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/prefs.h>
#include <epan/prefs-int.h>
#include <epan/expert.h>
#include <epan/proto_data.h>
#include "packet-x11.h" /* This contains the extern for the X11 value_string_ext
@ -3461,9 +3460,8 @@ vnc_get_depth(packet_info *pinfo)
/* Preference callbacks */
static void
apply_vnc_prefs(void) {
pref_t *vnc_ports = prefs_find_preference(prefs_find_module("vnc"), "tcp.port");
vnc_tcp_range = range_copy(*vnc_ports->varp.range);
g_free(vnc_tcp_range);
vnc_tcp_range = prefs_get_range_value("vnc", "tcp.port");
}
/* Register the protocol with Wireshark */

View File

@ -3786,6 +3786,22 @@ prefs_set_pref(char *prefarg)
return ret;
}
guint prefs_get_uint_value(const char *module_name, const char* pref_name)
{
pref_t *pref = prefs_find_preference(prefs_find_module(module_name), pref_name);
g_assert(pref != NULL);
return *pref->varp.uint;
}
range_t* prefs_get_range_value(const char *module_name, const char* pref_name)
{
pref_t *pref = prefs_find_preference(prefs_find_module(module_name), pref_name);
g_assert(pref != NULL);
return range_copy(*pref->varp.range);
}
/*
* Returns TRUE if the given device is hidden
*/

View File

@ -623,6 +623,17 @@ WS_DLL_PUBLIC prefs_set_pref_e prefs_set_pref(char *prefarg);
gboolean prefs_get_preference_obsolete(pref_t *pref);
prefs_set_pref_e prefs_set_preference_obsolete(pref_t *pref);
/*
* Get current preference uint value. This allows the preference structure
* to remain hidden from those that doesn't really need it
*/
WS_DLL_PUBLIC guint prefs_get_uint_value(const char *module_name, const char* pref_name);
/*
* Get the current range_copy()ed range preference value (so it needs to be freed). This allows the
* preference structure to remain hidden from those that doesn't really need it.
*/
WS_DLL_PUBLIC range_t* prefs_get_range_value(const char *module_name, const char* pref_name);
/*
* Returns TRUE if the given device is hidden