diff --git a/.gitignore b/.gitignore index df0ac8e3d420a1c975254da24581470a2c8c5556..3303eed411cc9b590d9a6e41c25693b13b4486c8 100644 --- a/.gitignore +++ b/.gitignore @@ -190,7 +190,6 @@ /tools/virt-admin /tools/virt-*-validate /tools/virt-sanlock-cleanup -/tools/wireshark/src/plugin.c /tools/wireshark/src/libvirt /update.log GPATH diff --git a/tools/Makefile.am b/tools/Makefile.am index 613c9a77f07b8991c86ffeb38b4775700d338b20..f2f84f78529f1e98277476b43fd58ec8f131b965 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -444,9 +444,7 @@ uninstall-bash-completion: endif ! WITH_BASH_COMPLETION -EXTRA_DIST += \ - wireshark/util/genxdrstub.pl \ - wireshark/util/make-dissector-reg +EXTRA_DIST += wireshark/util/genxdrstub.pl if WITH_WIRESHARK_DISSECTOR @@ -454,19 +452,14 @@ ws_plugin_LTLIBRARIES = wireshark/src/libvirt.la wireshark_src_libvirt_la_CFLAGS = \ -I wireshark/src $(WIRESHARK_DISSECTOR_CFLAGS) $(XDR_CFLAGS) wireshark_src_libvirt_la_LDFLAGS = -avoid-version -module -nodist_wireshark_src_libvirt_la_SOURCES = wireshark/src/plugin.c wireshark_src_libvirt_la_SOURCES = \ wireshark/src/packet-libvirt.h \ - wireshark/src/packet-libvirt.c + wireshark/src/packet-libvirt.c \ + wireshark/src/plugin.c wireshark/src/packet-libvirt.c: wireshark/src/packet-libvirt.h \ wireshark/src/libvirt/protocol.h -wireshark/src/plugin.c: wireshark/src/packet-libvirt.c - $(AM_V_GEN)cd wireshark/src && \ - $(abs_top_srcdir)/tools/wireshark/util/make-dissector-reg \ - . plugin packet-libvirt.c - WS_DISSECTOR_PROTO_FILES = \ $(abs_top_srcdir)/src/remote/remote_protocol.x \ $(abs_top_srcdir)/src/remote/qemu_protocol.x \ @@ -481,8 +474,6 @@ wireshark/src/libvirt/protocol.h: wireshark/util/genxdrstub.pl \ $(PERL) $(abs_top_srcdir)/tools/wireshark/util/genxdrstub.pl \ $(WS_DISSECTOR_PROTO_FILES) -CLEANFILES += wireshark/src/plugin.c - endif WITH_WIRESHARK_DISSECTOR if WITH_BSD_NSS diff --git a/tools/wireshark/src/plugin.c b/tools/wireshark/src/plugin.c new file mode 100644 index 0000000000000000000000000000000000000000..2a85688f435299058152a8015c3f458c9d16d133 --- /dev/null +++ b/tools/wireshark/src/plugin.c @@ -0,0 +1,45 @@ +/* + * plugin.c: Wireshark's plugin registration + * + * The registration routines were generated using wireshark's + * make-dissector-reg script (found under wirshark.git/tools/): + * + * libvirt.git/tools/wireshark/src $ \ + * /path/to/wireshark.git/tools/make-dissector-reg \ + * . plugin packet-libvirt.c + * + */ + +#include + +#include + +/* plugins are DLLs */ +#define WS_BUILD_DLL +#include + +#include "packet-libvirt.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; + +/* Start the functions we need for the plugin stuff */ + +WS_DLL_PUBLIC_NOEXTERN void +plugin_register(void) +{ + proto_register_libvirt(); +} +WS_DLL_PUBLIC_NOEXTERN void +plugin_reg_handoff(void) +{ + proto_reg_handoff_libvirt(); +} +#endif diff --git a/tools/wireshark/util/make-dissector-reg b/tools/wireshark/util/make-dissector-reg deleted file mode 100755 index 6fa25c1eed1f7d66d274e86bff1ca24dfd374bd3..0000000000000000000000000000000000000000 --- a/tools/wireshark/util/make-dissector-reg +++ /dev/null @@ -1,205 +0,0 @@ -#! /bin/sh -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# Copied from Wireshark(http://www.wireshark.org/) - -# -# The first argument is the directory in which the source files live. -# -srcdir="$1" -shift - -# -# The second argument is either "plugin" or "dissectors"; if it's -# "plugin", we build a plugin.c for a plugin, and if it's -# "dissectors", we build a register.c for libwireshark. -# -registertype="$1" -shift -if [ "$registertype" = plugin ] -then - outfile="plugin.c" -elif [ "$registertype" = dissectors ] -then - outfile="register.c" -else - echo "Unknown output type '$registertype'" 1>&2 - exit 1 -fi - -# -# All subsequent arguments are the files to scan. -# -rm -f ${outfile}-tmp -echo '/* Do not modify this file. */' >${outfile}-tmp -echo '/* It is created automatically by the Makefile. */'>>${outfile}-tmp -if [ "$registertype" = plugin ] -then - cat <<"EOF" >>${outfile}-tmp -#include "config.h" - -#include - -/* plugins are DLLs */ -#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; - -/* Start the functions we need for the plugin stuff */ - -WS_DLL_PUBLIC_NOEXTERN void -plugin_register (void) -{ -EOF -# -# Build code to call all the protocol registration routines. -# -for f in "$@" -do - if [ -f $f ] - then - srcfile=$f - else - srcfile=$srcdir/$f - fi - grep '^proto_register_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';' -done | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/ {extern void \1 (void); \1 ();}/' >>${outfile}-tmp -for f in "$@" -do - if [ -f $f ] - then - srcfile=$f - else - srcfile=$srcdir/$f - fi - grep '^void proto_register_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';' -done | sed -e 's/^.*://' -e 's/^void \([a-z_0-9A-Z]*\).*/ {extern void \1 (void); \1 ();}/' >>${outfile}-tmp -else - cat <<"EOF" >>${outfile}-tmp -#include "register.h" -void -register_all_protocols(register_cb cb, gpointer client_data) -{ -EOF -# -# Build code to call all the protocol registration routines. -# -for f in "$@" -do - if [ -f $f ] - then - srcfile=$f - else - srcfile=$srcdir/$f - fi - grep '^proto_register_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';' -done | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/ {extern void \1 (void); if(cb) (*cb)(RA_REGISTER, \"\1\", client_data); \1 ();}/' >>${outfile}-tmp -for f in "$@" -do - if [ -f $f ] - then - srcfile=$f - else - srcfile=$srcdir/$f - fi - grep '^void proto_register_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';' -done | sed -e 's/^.*://' -e 's/^void \([a-z_0-9A-Z]*\).*/ {extern void \1 (void); if(cb) (*cb)(RA_REGISTER, \"\1\", client_data); \1 ();}/' >>${outfile}-tmp - -fi -echo '}' >>${outfile}-tmp - - -# -# Build code to call all the protocol handoff registration routines. -# -if [ "$registertype" = plugin ] -then - cat <<"EOF" >>${outfile}-tmp -WS_DLL_PUBLIC_NOEXTERN void -plugin_reg_handoff(void) -{ -EOF -for f in "$@" -do - if [ -f $f ] - then - srcfile=$f - else - srcfile=$srcdir/$f - fi - grep '^proto_reg_handoff_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';' -done | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/ {extern void \1 (void); \1 ();}/' >>${outfile}-tmp -for f in "$@" -do - if [ -f $f ] - then - srcfile=$f - else - srcfile=$srcdir/$f - fi - grep '^void proto_reg_handoff_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';' -done | sed -e 's/^.*://' -e 's/^void \([a-z_0-9A-Z]*\).*/ {extern void \1 (void); \1 ();}/' >>${outfile}-tmp -else - cat <<"EOF" >>${outfile}-tmp -void -register_all_protocol_handoffs(register_cb cb, gpointer client_data) -{ -EOF -for f in "$@" -do - if [ -f $f ] - then - srcfile=$f - else - srcfile=$srcdir/$f - fi - grep '^proto_reg_handoff_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';' -done | sed -e 's/^.*://' -e 's/^\([a-z_0-9A-Z]*\).*/ {extern void \1 (void); if(cb) (*cb)(RA_HANDOFF, \"\1\", client_data); \1 ();}/' >>${outfile}-tmp -for f in "$@" -do - if [ -f $f ] - then - srcfile=$f - else - srcfile=$srcdir/$f - fi - grep '^void proto_reg_handoff_[a-z_0-9A-Z]* *(' $srcfile 2>/dev/null | grep -v ';' -done | sed -e 's/^.*://' -e 's/^void \([a-z_0-9A-Z]*\).*/ {extern void \1 (void); if(cb) (*cb)(RA_HANDOFF, \"\1\", client_data); \1 ();}/' >>${outfile}-tmp -fi -echo '}' >>${outfile}-tmp -if [ "$registertype" = plugin ] -then - echo '#endif' >>${outfile}-tmp -else - cat <<"EOF" >>${outfile}-tmp -gulong register_count(void) -{ -EOF - proto_regs=`grep RA_REGISTER ${outfile}-tmp | wc -l` - handoff_regs=`grep RA_HANDOFF ${outfile}-tmp | wc -l` - echo " return $proto_regs + $handoff_regs;" >>${outfile}-tmp - echo '}' >>${outfile}-tmp -fi - -# Only overwrite outfile if it differs from newly generated file -mv ${outfile}-tmp ${outfile}