&addresses_reassembly_table_functions);
}
+static void
+bacapp_cleanup_routine(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
void
proto_register_bacapp(void)
{
expert_register_field_array(expert_bacapp, ei, array_length(ei));
register_dissector("bacapp", dissect_bacapp, proto_bacapp);
register_init_routine(&bacapp_init_routine);
+ register_cleanup_routine(&bacapp_cleanup_routine);
bacapp_dissector_table = register_dissector_table("bacapp.vendor_identifier",
"BACapp Vendor Identifier",
&addresses_reassembly_table_functions);
}
+static void batadv_cleanup_routine(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
void proto_register_batadv(void)
{
module_t *batadv_module;
expert_register_field_array(expert_batadv, ei, array_length(ei));
register_init_routine(&batadv_init_routine);
+ register_cleanup_routine(&batadv_cleanup_routine);
}
void proto_reg_handoff_batadv(void)
&addresses_reassembly_table_functions);
}
+static void ber_defragment_cleanup(void) {
+ reassembly_table_destroy(&octet_segment_reassembly_table);
+}
+
static int
reassemble_octet_string(asn1_ctx_t *actx, proto_tree *tree, gint hf_id, tvbuff_t *tvb, int offset, guint32 con_len, gboolean ind, tvbuff_t **out_tvb)
{
register_ber_syntax_dissector("ASN.1", proto_ber, dissect_ber_syntax);
register_init_routine(ber_defragment_init);
+ register_cleanup_routine(ber_defragment_cleanup);
register_decode_as(&ber_da);
}
&addresses_reassembly_table_functions);
}
+static void
+defragment_cleanup(void)
+{
+ reassembly_table_destroy(&btobex_reassembly_table);
+}
+
static int
is_ascii_str(const guint8 *str, int length)
{
expert_register_field_array(expert_btobex, ei, array_length(ei));
register_init_routine(&defragment_init);
+ register_cleanup_routine(&defragment_cleanup);
register_decode_as(&btobex_profile_da);
&addresses_reassembly_table_functions);
}
+static void capwap_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&capwap_reassembly_table);
+}
+
static void
dissect_capwap_data_message_bindings_ieee80211(tvbuff_t *tvb, proto_tree *data_message_binding_tree, guint offset, packet_info *pinfo)
{
expert_register_field_array(expert_capwap, ei, array_length(ei));
register_init_routine(&capwap_reassemble_init);
+ register_cleanup_routine(&capwap_reassemble_cleanup);
capwap_module = prefs_register_protocol(proto_capwap_control, proto_reg_handoff_capwap);
&addresses_reassembly_table_functions);
}
+static void gsm_cbs_message_reassembly_cleanup(void)
+{
+ reassembly_table_destroy(&gsm_cbs_reassembly_table);
+}
+
guint dissect_cbs_serial_number(tvbuff_t *tvb, proto_tree *tree, guint offset)
{
guint16 serial_number = tvb_get_ntohs(tvb, offset) ;
proto_register_field_array(proto_cell_broadcast, hf_cbs, array_length(hf_cbs));
register_init_routine(gsm_cbs_message_reassembly_init);
+ register_cleanup_routine(gsm_cbs_message_reassembly_cleanup);
/* subdissector code */
register_dissector("gsm_cbs", dissect_gsm_cell_broadcast, proto_cell_broadcast);
&addresses_reassembly_table_functions);
}
+static void
+clnp_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&clnp_reassembly_table);
+}
+
void
proto_register_clnp(void)
{
register_dissector("clnp", dissect_clnp, proto_clnp);
clnp_heur_subdissector_list = register_heur_dissector_list("clnp");
register_init_routine(clnp_reassemble_init);
+ register_cleanup_routine(clnp_reassemble_cleanup);
register_osi_address_type();
&addresses_reassembly_table_functions);
}
+static void
+dcp_cleanup_protocol(void)
+{
+ reassembly_table_destroy(&dcp_reassembly_table);
+}
+
/** Dissect a DCP packet. Details follow
* here.
"DCP-TPL Protocol Type & Revision", FT_STRING, BASE_NONE);
register_init_routine(dcp_init_protocol);
+ register_cleanup_routine(dcp_cleanup_protocol);
}
&addresses_reassembly_table_functions);
}
+static void
+bundle_defragment_cleanup(void) {
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
void proto_reg_handoff_bundle(void);
void proto_register_bundle(void);
expert_register_field_array(expert_tcpcl, ei_tcpcl, array_length(ei_tcpcl));
register_init_routine(bundle_defragment_init);
+ register_cleanup_routine(bundle_defragment_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+eap_tls_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&eap_tls_reassembly_table);
+}
+
static void
dissect_eap_mschapv2(proto_tree *eap_tree, tvbuff_t *tvb, packet_info *pinfo, int offset,
gint size)
eap_handle = new_register_dissector("eap", dissect_eap, proto_eap);
register_init_routine(eap_tls_defragment_init);
+ register_cleanup_routine(eap_tls_defragment_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+cbch_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&cbch_block_reassembly_table);
+}
+
static void
dissect_schedule_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *top_tree)
{
/* subdissector code */
register_dissector("gsm_cbch", dissect_cbch, proto_cbch);
register_init_routine(cbch_defragment_init);
+ register_cleanup_routine(cbch_defragment_cleanup);
/* subtree array */
proto_register_subtree_array(ett, array_length(ett));
&addresses_reassembly_table_functions);
}
+static void
+gsm_sms_ud_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&sm_reassembly_table);
+}
+
/*
* Value-arrays for field-contents
*/
/* GSM SMS UD dissector initialization routines */
register_init_routine(gsm_sms_ud_defragment_init);
+ register_cleanup_routine(gsm_sms_ud_defragment_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+gssapi_reassembly_cleanup(void)
+{
+ reassembly_table_destroy(&gssapi_reassembly_table);
+}
+
/*
* Subdissectors
*/
gssapi_oids = g_hash_table_new(gssapi_oid_hash, gssapi_oid_equal);
register_init_routine(gssapi_reassembly_init);
+ register_cleanup_routine(gssapi_reassembly_cleanup);
}
static int
&addresses_reassembly_table_functions);
}
+static void
+wlan_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&wlan_reassembly_table);
+}
+
/* ------------- */
static guint
retransmit_hash(gconstpointer k)
register_dissector("wlan_bsfc", dissect_ieee80211_bsfc, proto_wlan);
register_init_routine(wlan_defragment_init);
+ register_cleanup_routine(wlan_defragment_cleanup);
register_init_routine(wlan_retransmit_init);
register_init_routine(ieee80211_gas_reassembly_init);
&addresses_reassembly_table_functions);
}
+static void
+ip_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&ip_reassembly_table);
+}
+
void
capture_ip(const guchar *pd, int offset, int len, packet_counts *ld) {
if (!BYTES_ARE_IN_FRAME(offset, len, IPH_MIN_LEN)) {
register_dissector("ip", dissect_ip, proto_ip);
register_init_routine(ip_defragment_init);
+ register_cleanup_routine(ip_defragment_cleanup);
ip_tap = register_tap("ip");
register_decode_as(&ip_da);
&addresses_reassembly_table_functions);
}
+static void
+ipv6_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&ipv6_reassembly_table);
+}
+
enum {
IPv6_RT_HEADER_SOURCE_ROUTING=0,
IPv6_RT_HEADER_NIMROD,
register_dissector("ipv6", dissect_ipv6, proto_ipv6);
register_init_routine(ipv6_reassemble_init);
+ register_cleanup_routine(ipv6_reassemble_cleanup);
ipv6_tap = register_tap("ipv6");
register_decode_as(&ipv6_da);
&addresses_reassembly_table_functions);
}
+static void
+isup_apm_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&isup_apm_msg_reassembly_table);
+}
+
/* Info for the tap that must be passed between procedures */
static gchar *tap_called_number = NULL;
static gchar *tap_calling_number = NULL;
proto_register_subtree_array(ett, array_length(ett));
register_init_routine(isup_apm_defragment_init);
+ register_cleanup_routine(isup_apm_defragment_cleanup);
}
/* Register isup with the sub-laying MTP L3 dissector */
&addresses_reassembly_table_functions);
}
+static void
+lapdm_defragment_cleanup (void)
+{
+ reassembly_table_destroy(&lapdm_reassembly_table);
+}
+
static void
dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Whether the dissector should defragment LAPDm messages spanning multiple packets.",
&reassemble_lapdm);
register_init_routine (lapdm_defragment_init);
+ register_cleanup_routine (lapdm_defragment_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+lapsat_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&lapsat_reassembly_table);
+}
+
/*
* Main dissection functions
lapsat_sapi_dissector_table = register_dissector_table("lapsat.sapi", "LAPSat SAPI", FT_UINT8, BASE_DEC);
register_init_routine (lapsat_defragment_init);
+ register_cleanup_routine (lapsat_defragment_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+ltp_defragment_cleanup(void) {
+ reassembly_table_destroy(<p_reassembly_table);
+}
+
/* Register the protocol with Wireshark */
void
proto_register_ltp(void)
"The UDP or DCCP port to accept LTP Connections",
10, <p_port);
register_init_routine(ltp_defragment_init);
+ register_cleanup_routine(ltp_defragment_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+mbim_reassembly_cleanup(void)
+{
+ reassembly_table_destroy(&mbim_reassembly_table);
+}
+
static guint
mbim_uuid_hash(gconstpointer key)
{
expert_register_field_array(expert_mbim, ei, array_length(ei));
register_init_routine(mbim_reassembly_init);
+ register_cleanup_routine(mbim_reassembly_cleanup);
new_register_dissector("mbim.control", dissect_mbim_control, proto_mbim);
new_register_dissector("mbim.descriptor", dissect_mbim_descriptor, proto_mbim);
&addresses_reassembly_table_functions);
}
+static void
+mp2t_cleanup(void) {
+ reassembly_table_destroy(&mp2t_reassembly_table);
+}
+
void
proto_register_mp2t(void)
{
heur_subdissector_list = register_heur_dissector_list("mp2t.pid");
/* Register init of processing of fragmented DEPI packets */
register_init_routine(mp2t_init);
+ register_cleanup_routine(mp2t_cleanup);
}
&addresses_reassembly_table_functions);
}
+static void mq_cleanup(void)
+{
+ reassembly_table_destroy(&mq_reassembly_table);
+}
+
void proto_register_mq(void)
{
static hf_register_info hf[] =
mq_heur_subdissector_list = register_heur_dissector_list("mq");
register_init_routine(mq_init);
+ register_cleanup_routine(mq_cleanup);
mq_module = prefs_register_protocol(proto_mq, NULL);
prefs_register_bool_preference(mq_module, "desegment",
static void
mux27010_init(void)
{
- /*
- * Initialize the fragment and reassembly tables.
- */
reassembly_table_init(&msg_reassembly_table,
&addresses_reassembly_table_functions);
}
+static void
+mux27010_cleanup(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
/*Register the protocol*/
void
proto_register_mux27010 (void)
expert_register_field_array(expert_mux27010, ei, array_length(ei));
register_init_routine(mux27010_init);
+ register_cleanup_routine(mux27010_cleanup);
}
/*Initialize dissector*/
&addresses_reassembly_table_functions);
}
+static void
+ndmp_cleanup(void)
+{
+ reassembly_table_destroy(&ndmp_reassembly_table);
+}
+
void
proto_register_ndmp(void)
"Whether the dissector should defragment NDMP messages spanning multiple packets.",
&ndmp_defragment);
register_init_routine(ndmp_init);
+ register_cleanup_routine(ndmp_cleanup);
}
void
static void
netbios_init(void)
{
- /*
- * Initialize the reassembly table.
- */
reassembly_table_init(&netbios_reassembly_table,
&addresses_reassembly_table_functions);
}
+static void
+netbios_cleanup(void)
+{
+ reassembly_table_destroy(&netbios_reassembly_table);
+}
+
void
proto_register_netbios(void)
{
&netbios_defragment);
register_init_routine(netbios_init);
+ register_cleanup_routine(netbios_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+openvpn_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
/* we check the leading 4 byte of a suspected hmac for 0x00 bytes,
if more than 1 byte out of the 4 provided contains 0x00, the
hmac is considered not valid, which suggests that no tls auth is used.
openvpn_tcp_handle = new_register_dissector("openvpn.tcp", dissect_openvpn_tcp, proto_openvpn);
register_init_routine(&openvpn_reassemble_init);
+ register_cleanup_routine(&openvpn_reassemble_cleanup);
openvpn_module = prefs_register_protocol(proto_openvpn, proto_reg_handoff_openvpn);
&addresses_ports_reassembly_table_functions);
}
+static void pop_data_reassemble_cleanup (void)
+{
+ reassembly_table_destroy(&pop_data_reassembly_table);
+}
+
void
proto_register_pop(void)
{
proto_register_field_array(proto_pop, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
register_init_routine (&pop_data_reassemble_init);
+ register_cleanup_routine (&pop_data_reassemble_cleanup);
/* Preferences */
pop_module = prefs_register_protocol(proto_pop, NULL);
&addresses_reassembly_table_functions);
}
+static void
+ampdu_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&du_reassembly_table);
+}
+
void
proto_register_ppi(void)
{
ppi_handle = register_dissector("ppi", dissect_ppi, proto_ppi);
register_init_routine(ampdu_reassemble_init);
+ register_cleanup_routine(ampdu_reassemble_cleanup);
/* Configuration options */
ppi_module = prefs_register_protocol(proto_ppi, NULL);
static void
q931_init(void) {
- /* Initialize the fragment and reassembly tables */
reassembly_table_init(&q931_reassembly_table,
&addresses_reassembly_table_functions);
}
+static void
+q931_cleanup(void) {
+ reassembly_table_destroy(&q931_reassembly_table);
+}
+
void
proto_register_q931(void)
{
expert_q931 = expert_register_protocol(proto_q931);
expert_register_field_array(expert_q931, ei, array_length(ei));
register_init_routine(q931_init);
+ register_cleanup_routine(q931_cleanup);
q931_handle = register_dissector("q931", dissect_q931, proto_q931);
q931_tpkt_handle = register_dissector("q931.tpkt", dissect_q931_tpkt, proto_q931);
&addresses_reassembly_table_functions);
}
+static void
+reload_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&reload_reassembly_table);
+}
+
static guint
get_reload_message_length(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
"topology plugin", "topology plugin defined in the overlay", &reload_topology_plugin);
register_init_routine(reload_defragment_init);
+ register_cleanup_routine(reload_defragment_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+rtp_fragment_cleanup(void)
+{
+ reassembly_table_destroy(&rtp_reassembly_table);
+}
+
/* A single hash table to hold pointers to all the rtp_dyn_payload_t's we create/destroy.
This is necessary because we need to g_hash_table_destroy() them, either individually or
all at once at the end of the wmem file scope. Since rtp_dyn_payload_free() removes them
&rtp_rfc2198_pt);
register_init_routine(rtp_fragment_init);
+ register_cleanup_routine(rtp_fragment_cleanup);
register_init_routine(rtp_dyn_payloads_init);
}
&addresses_reassembly_table_functions);
}
+static void
+scsi_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&scsi_reassembly_table);
+}
+
static const fragment_items scsi_frag_items = {
&ett_scsi_fragment,
&ett_scsi_fragments,
"Whether fragmented SCSI DATA IN/OUT transfers should be reassembled",
&scsi_defragment);
register_init_routine(scsi_defragment_init);
+ register_cleanup_routine(scsi_defragment_cleanup);
register_srt_table(proto_scsi, NULL, 1, scsistat_packet, scsistat_init, scsistat_param);
}
static void
selfm_init(void)
{
-
reassembly_table_init(&selfm_reassembly_table,
&addresses_reassembly_table_functions);
}
+static void
+selfm_cleanup(void)
+{
+ reassembly_table_destroy(&selfm_reassembly_table);
+}
+
/******************************************************************************************************/
/* Register the protocol with Wireshark */
/******************************************************************************************************/
/* Register protocol init routine */
register_init_routine(&selfm_init);
+ register_cleanup_routine(&selfm_cleanup);
/* Register the protocol name and description */
proto_selfm = proto_register_protocol("SEL Protocol", "SEL Protocol", "selfm");
&addresses_reassembly_table_functions);
}
+static void ses_reassemble_cleanup (void)
+{
+ reassembly_table_destroy(&ses_reassembly_table);
+}
+
static gboolean
dissect_ses_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *data _U_)
{
expert_register_field_array(expert_ses, ei, array_length(ei));
register_init_routine (&ses_reassemble_init);
+ register_cleanup_routine (&ses_reassemble_cleanup);
ses_module = prefs_register_protocol(proto_ses, NULL);
&addresses_ports_reassembly_table_functions);
}
+static void
+smb_direct_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&smb_direct_reassembly_table);
+}
+
static void
dissect_smb_direct_payload(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, guint32 remaining_length)
"Whether the SMB Direct dissector should reassemble fragmented payloads",
&smb_direct_reassemble);
register_init_routine(smb_direct_reassemble_init);
+ register_cleanup_routine(smb_direct_reassemble_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+smb_dcerpc_reassembly_cleanup(void)
+{
+ reassembly_table_destroy(&dcerpc_reassembly_table);
+}
+
gboolean
dissect_pipe_dcerpc(tvbuff_t *d_tvb, packet_info *pinfo, proto_tree *parent_tree,
proto_tree *tree, guint32 fid)
{
smb_transact_heur_subdissector_list = register_heur_dissector_list("smb_transact");
register_init_routine(smb_dcerpc_reassembly_init);
+ register_cleanup_routine(smb_dcerpc_reassembly_cleanup);
}
#define CALL_NAMED_PIPE 0x54
&addresses_ports_reassembly_table_functions);
}
+static void
+smtp_data_reassemble_cleanup (void)
+{
+ reassembly_table_destroy(&smtp_data_reassembly_table);
+}
+
/* Register all the bits needed by the filtering engine */
proto_register_field_array(proto_smtp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
register_init_routine (&smtp_data_reassemble_init);
+ register_cleanup_routine (&smtp_data_reassemble_cleanup);
/* Allow dissector to find be found by name. */
register_dissector("smtp", dissect_smtp, proto_smtp);
&addresses_reassembly_table_functions);
}
+static void
+sna_cleanup(void)
+{
+ reassembly_table_destroy(&sna_reassembly_table);
+}
+
void
proto_register_sna(void)
&sna_defragment);
register_init_routine(sna_init);
+ register_cleanup_routine(sna_cleanup);
}
void
reassembly_table_init(&npdu_reassembly_table, &addresses_reassembly_table_functions);
}
+static void
+sndcp_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&npdu_reassembly_table);
+}
+
/* value strings
*/
static const value_string nsapi_t[] = {
proto_register_subtree_array(ett, array_length(ett));
register_dissector("sndcp", dissect_sndcp, proto_sndcp);
register_init_routine(sndcp_defragment_init);
+ register_cleanup_routine(sndcp_defragment_cleanup);
}
/* If this dissector uses sub-dissector registration add a registration routine.
&addresses_reassembly_table_functions);
}
+static void
+stt_segment_cleanup(void)
+{
+ reassembly_table_destroy(&stt_reassembly_table);
+}
+
static tvbuff_t *
handle_segment(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint32 pkt_id, guint16 pkt_len, guint16 seg_off)
&pref_check_checksum);
register_init_routine(stt_segment_init);
+ register_cleanup_routine(stt_segment_cleanup);
}
void
&addresses_ports_reassembly_table_functions);
}
+static void
+tds_cleanup(void)
+{
+ reassembly_table_destroy(&tds_reassembly_table);
+}
+
/* Register the protocol with Wireshark */
/* this format is required because a script is used to build the C function
&tds_tcp_ports, 0xFFFF);
register_init_routine(tds_init);
+ register_cleanup_routine(tds_cleanup);
}
/* If this dissector uses sub-dissector registration add a registration routine.
&addresses_reassembly_table_functions);
}
+static void ts2_cleanup(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
/*
* proto_register_ts2()
* */
proto_register_subtree_array(ett, array_length(ett));
register_init_routine(ts2_init);
+ register_cleanup_routine(ts2_cleanup);
}
/*
&addresses_reassembly_table_functions);
}
+static void
+tipc_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&tipc_msg_reassembly_table);
+}
+
static gchar*
tipc_addr_value_to_buf(guint tipc_address, gchar *buf, int buf_len)
{
new_register_dissector("tipc", dissect_tipc, proto_tipc);
register_init_routine(tipc_defragment_init);
+ register_cleanup_routine(tipc_defragment_cleanup);
/* Register configuration options */
tipc_module = prefs_register_protocol(proto_tipc, proto_reg_handoff_tipc);
&addresses_reassembly_table_functions);
}
+static void
+midi_data_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&midi_data_reassembly_table);
+}
+
void
proto_register_usb_audio(void)
{
expert_usb_audio = expert_register_protocol(proto_usb_audio);
expert_register_field_array(expert_usb_audio, ei, array_length(ei));
register_init_routine(&midi_data_reassemble_init);
+ register_cleanup_routine(&midi_data_reassemble_cleanup);
new_register_dissector("usbaudio", dissect_usb_audio_bulk, proto_usb_audio);
}
&addresses_reassembly_table_functions);
}
+static void wai_reassemble_cleanup (void)
+{
+ reassembly_table_destroy(&wai_reassembly_table);
+}
+
void
proto_register_wai(void)
{
proto_wai = proto_register_protocol("WAI Protocol", "WAI", "wai");
register_init_routine(&wai_reassemble_init);
+ register_cleanup_routine(&wai_reassemble_cleanup);
proto_register_field_array(proto_wai, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
&addresses_reassembly_table_functions);
}
+static void
+wtp_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&wtp_reassembly_table);
+}
+
/*
* Extract some bitfields
*/
register_dissector("wtp-wtls", dissect_wtp_fromwtls, proto_wtp);
register_dissector("wtp-udp", dissect_wtp_fromudp, proto_wtp);
register_init_routine(wtp_defragment_init);
+ register_cleanup_routine(wtp_defragment_cleanup);
}
void
&addresses_reassembly_table_functions);
}
+static void
+x25_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&x25_reassembly_table);
+}
+
void
proto_register_x25(void)
{
"Reassemble fragmented X.25 packets",
&reassemble_x25);
register_init_routine(&x25_reassemble_init);
+ register_cleanup_routine(&x25_reassemble_cleanup);
}
void
static guint zbee_apf_transaction_len (tvbuff_t *tvb, guint offset, guint8 type);
static void proto_init_zbee_aps(void);
+static void proto_cleanup_zbee_aps(void);
void proto_reg_handoff_zbee_aps(void);
void proto_register_zbee_aps(void);
/* Register the init routine. */
register_init_routine(proto_init_zbee_aps);
+ register_cleanup_routine(proto_cleanup_zbee_aps);
/* Register the ZigBee Application Framework protocol with Wireshark. */
proto_zbee_apf = proto_register_protocol("ZigBee Application Framework", "ZigBee APF", "zbee_apf");
&addresses_reassembly_table_functions);
} /* proto_init_zbee_aps */
+static void proto_cleanup_zbee_aps(void)
+{
+ reassembly_table_destroy(&zbee_aps_reassembly_table);
+}
+
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*