Hello Aurelien,
Perhaps you can use the "Follow TCP/UDP stream" feature then save the
result.
Regarding your idea about having a file setting inside the preferences
it should be possible, but I do not know how to use it properly.
Here are some sources I use in my dissector templates to let the users
change the tcp/udp ports range for a specific protocol.
The template is not complete but I hope it can help. I also think it can
be greatly improved but it works as expected.
#define VRU201_DEFAULT_RANGE "5000" /* Ports TCP comma separated */
static range_t *global_vru201_tcp_range = NULL;
static range_t *vru201_tcp_range = NULL;
static void reinit_vru201(void);
static void range_delete_vru201_tcp(guint32);
static void range_add_vru201_tcp(guint32);
/*--- proto_register_vru201
----------------------------------------------*/
void proto_register_vru201(void)
{
/* prefs */
module_t* vru201_module;
/* List of fields */
static hf_register_info hf[] = {
#include "packet-vru201-hfarr.c"
};
/* List of subtrees */
static gint *ett[] = {
&ett_vru201,
#include "packet-vru201-ettarr.c"
};
/* Register protocol */
proto_vru201 = proto_register_protocol(PNAME, PSNAME, PFNAME);
/* Prefs VRU201 */
vru201_module = prefs_register_protocol(proto_vru201, reinit_vru201);
range_convert_str(&global_vru201_tcp_range, VRU201_DEFAULT_RANGE,
65535);
vru201_tcp_range = range_empty();
prefs_register_range_preference(vru201_module, "tcp.port", "TCP
Ports",
"TCP Ports range",
&global_vru201_tcp_range, 65535);
/* Register fields and subtrees */
proto_register_field_array(proto_vru201, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
/* Register the protocol if the ports list has changed */
static void reinit_vru201(void) {
range_foreach(vru201_tcp_range, range_delete_vru201_tcp);
g_free(vru201_tcp_range);
vru201_tcp_range = range_copy(global_vru201_tcp_range);
range_foreach(vru201_tcp_range, range_add_vru201_tcp);
}
/* Wrapper to remove a port from the dissector */
static void range_delete_vru201_tcp(guint32 port) {
dissector_delete("tcp.port", port, vru201_handle);
}
/* Wrapper to add a port to the dissector */
static void range_add_vru201_tcp(guint32 port) {
dissector_add("tcp.port", port, vru201_handle);
}
/*--- proto_reg_handoff_vru201
-------------------------------------------*/
void proto_reg_handoff_vru201(void) {
static gboolean inited = FALSE;
if( !inited ) {
vru201_handle = create_dissector_handle(dissect_vru201, proto_vru201);
reinit_vru201();
inited = TRUE;
}
}
Regards,
------------------------------------------
Xavier OURCIERE.
France Telecom R&D
------------------------------------------
___________________________________________________________________________
Sent via: Wireshark-dev mailing list <[email protected]>
Archives: http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
mailto:[email protected]?subject=unsubscribe