diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/packet-libvirt.c index 51384532f3..0fe5f036d1 100644 --- a/tools/wireshark/src/packet-libvirt.c +++ b/tools/wireshark/src/packet-libvirt.c @@ -36,6 +36,16 @@ #include "packet-libvirt.h" #include "internal.h" +#define WIRESHARK_VERSION \ + ((VERSION_MAJOR * 1000 * 1000) + \ + (VERSION_MINOR * 1000) + \ + (VERSION_MICRO)) + +/* Wireshark 1.12 brings API change */ +#if WIRESHARK_VERSION < 1012000 +# define WIRESHARK_COMPAT +#endif + static int proto_libvirt = -1; static int hf_libvirt_length = -1; static int hf_libvirt_program = -1; @@ -307,7 +317,11 @@ dissect_libvirt_payload_xdr_data(tvbuff_t *tvb, proto_tree *tree, gint payload_l } payload_tvb = tvb_new_subset(tvb, start, -1, payload_length); +#ifdef WIRESHARK_COMPAT payload_data = (caddr_t)tvb_memdup(payload_tvb, 0, payload_length); +#else + payload_data = (caddr_t)tvb_memdup(NULL, payload_tvb, 0, payload_length); +#endif xdrmem_create(&xdrs, payload_data, payload_length, XDR_DECODE); dissect(payload_tvb, tree, &xdrs, -1); @@ -350,8 +364,14 @@ dissect_libvirt_payload(tvbuff_t *tvb, proto_tree *tree, proto_tree_add_item(tree, hf_libvirt_unknown, tvb, VIR_HEADER_LEN, -1, ENC_NA); } +#ifdef WIRESHARK_COMPAT static void dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +#else +static int +dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, + void *opaque ATTRIBUTE_UNUSED) +#endif { goffset offset; guint32 prog, proc, type, serial, status; @@ -411,6 +431,10 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /* Dissect payload remaining */ dissect_libvirt_payload(tvb, libvirt_tree, prog, proc, type, status); } + +#ifndef WIRESHARK_COMPAT + return 0; +#endif } static guint32 @@ -424,7 +448,13 @@ dissect_libvirt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { /* Another magic const - 4; simply, how much bytes * is needed to tell the length of libvirt packet. */ - tcp_dissect_pdus(tvb, pinfo, tree, TRUE, 4, get_message_len, dissect_libvirt_message); +#ifdef WIRESHARK_COMPAT + tcp_dissect_pdus(tvb, pinfo, tree, TRUE, 4, + get_message_len, dissect_libvirt_message); +#else + tcp_dissect_pdus(tvb, pinfo, tree, TRUE, 4, + get_message_len, dissect_libvirt_message, NULL); +#endif } void diff --git a/tools/wireshark/util/make-dissector-reg b/tools/wireshark/util/make-dissector-reg index 4f8b4f2c67..6fa25c1eed 100755 --- a/tools/wireshark/util/make-dissector-reg +++ b/tools/wireshark/util/make-dissector-reg @@ -55,6 +55,13 @@ then #define WS_BUILD_DLL #include "ws_symbol_export.h" +/* In 1.12 wireshark WS_DLL_PUBLIC_NOEXTERN was substitued with + * WS_DLL_PUBLIC_DEF. See wireshark's commit + * 5d87a8c46171f572568db5a47c093423482e342f for more info. */ +#ifndef WS_DLL_PUBLIC_NOEXTERN +# define WS_DLL_PUBLIC_NOEXTERN WS_DLL_PUBLIC_DEF +#endif + #ifndef ENABLE_STATIC WS_DLL_PUBLIC_NOEXTERN const gchar version[] = VERSION;