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 <wireshark-dev@wireshark.org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe