aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2003-10-14 01:18:11 +0000
committerGuy Harris <guy@alum.mit.edu>2003-10-14 01:18:11 +0000
commit4fa26855a48bb846df9306a59be09d8a3cc12ab4 (patch)
treeaf0326eba9086700fc6f7e9e0c4bbba75f7eac35
parenta5287eb7d215aad35c74fe61b9b93bf9fb2c5591 (diff)
From Erwin Rol: ACN support.
svn path=/trunk/; revision=8686
-rw-r--r--AUTHORS1
-rw-r--r--Makefile.am6
-rw-r--r--configure.in3
-rw-r--r--packaging/nsis/Makefile.nmake5
-rw-r--r--packaging/nsis/ethereal.nsi3
-rw-r--r--plugins/Makefile.am4
-rw-r--r--plugins/Makefile.nmake13
-rw-r--r--plugins/acn/AUTHORS3
-rw-r--r--plugins/acn/COPYING340
-rw-r--r--plugins/acn/ChangeLog2
-rw-r--r--plugins/acn/INSTALL0
-rw-r--r--plugins/acn/Makefile.am44
-rw-r--r--plugins/acn/Makefile.nmake21
-rw-r--r--plugins/acn/NEWS0
-rw-r--r--plugins/acn/acn.h75
-rw-r--r--plugins/acn/moduleinfo.h17
-rw-r--r--plugins/acn/packet-acn.c742
17 files changed, 1269 insertions, 10 deletions
diff --git a/AUTHORS b/AUTHORS
index b290aa728d..d443c718c7 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1705,6 +1705,7 @@ Stephen Shelley <steve.shelley [AT] attbi.com> {
Erwin Rol <erwin [AT] erwinrol.com> {
ArtNET support
RTNET support
+ ACN support
}
Duncan Laurie <duncan [AT] sun.com> {
diff --git a/Makefile.am b/Makefile.am
index d172be7238..1438416a11 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
# Makefile.am
# Automake file for Ethereal
#
-# $Id: Makefile.am,v 1.638 2003/10/10 21:16:23 guy Exp $
+# $Id: Makefile.am,v 1.639 2003/10/14 01:18:09 guy Exp $
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
@@ -457,6 +457,7 @@ DISSECTOR_SRC = \
if HAVE_PLUGINS
plugin_libs = \
+ plugins/acn/acn.la \
plugins/artnet/artnet.la \
plugins/docsis/docsis.la \
plugins/giop/cosnaming.la \
@@ -470,6 +471,7 @@ plugin_libs = \
if ENABLE_STATIC
plugin_ldadd = \
+ plugins/acn/packet-acn.o \
plugins/artnet/packet-artnet.o \
plugins/docsis/packet-bpkmattr.o \
plugins/docsis/packet-bpkmreq.o \
@@ -504,6 +506,7 @@ plugin_ldadd = \
plugins/rtnet/packet-rtnet.o
plugin_src = \
+ plugins/acn/packet-acn.c \
plugins/artnet/packet-artnet.c \
plugins/docsis/packet-bpkmattr.c \
plugins/docsis/packet-bpkmreq.c \
@@ -540,6 +543,7 @@ plugin_src = \
else # ENABLE_STATIC
plugin_ldadd = \
"-dlopen" self \
+ "-dlopen" plugins/acn/acn.la \
"-dlopen" plugins/artnet/artnet.la \
"-dlopen" plugins/docsis/docsis.la \
"-dlopen" plugins/giop/cosnaming.la \
diff --git a/configure.in b/configure.in
index 05c8d07c07..4a8673cbdb 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-# $Id: configure.in,v 1.225 2003/10/10 10:12:18 guy Exp $
+# $Id: configure.in,v 1.226 2003/10/14 01:18:09 guy Exp $
dnl
dnl Process this file with autoconf 2.13 or later to produce a
dnl configure script; 2.12 doesn't generate a "configure" script that
@@ -805,6 +805,7 @@ AC_OUTPUT(
packaging/svr4/checkinstall
packaging/svr4/pkginfo
plugins/Makefile
+ plugins/acn/Makefile
plugins/artnet/Makefile
plugins/docsis/Makefile
plugins/giop/Makefile
diff --git a/packaging/nsis/Makefile.nmake b/packaging/nsis/Makefile.nmake
index 6f76327416..5df525d56f 100644
--- a/packaging/nsis/Makefile.nmake
+++ b/packaging/nsis/Makefile.nmake
@@ -1,5 +1,5 @@
#
-# $Id: Makefile.nmake,v 1.22 2003/10/10 21:31:49 guy Exp $
+# $Id: Makefile.nmake,v 1.23 2003/10/14 01:18:09 guy Exp $
#
# NSIS is a free packager/installer/uninstaller program for Win32.
# It was originally written for the Winamp package, but various
@@ -23,7 +23,8 @@ DOC=../../doc/ethereal.html \
../../README.win32
GPL=GPL.txt
-PLUGINS=../../plugins/artnet/artnet.dll \
+PLUGINS=../../plugins/artnet/acn.dll \
+ ../../plugins/artnet/artnet.dll \
../../plugins/docsis/docsis.dll \
../../plugins/giop/coseventcomm.dll \
../../plugins/giop/cosnaming.dll \
diff --git a/packaging/nsis/ethereal.nsi b/packaging/nsis/ethereal.nsi
index a7ce44e603..076ce7f6b5 100644
--- a/packaging/nsis/ethereal.nsi
+++ b/packaging/nsis/ethereal.nsi
@@ -1,7 +1,7 @@
;
; ethereal.nsi
;
-; $Id: ethereal.nsi,v 1.19 2003/10/02 22:28:04 gerald Exp $
+; $Id: ethereal.nsi,v 1.20 2003/10/14 01:18:10 guy Exp $
; ============================================================================
; Header configuration
@@ -175,6 +175,7 @@ SectionEnd
Section "Plugins"
;-------------------------------------------
SetOutPath $INSTDIR\plugins\${VERSION}
+File "..\..\plugins\acn\acn.dll"
File "..\..\plugins\artnet\artnet.dll"
File "..\..\plugins\docsis\docsis.dll"
File "..\..\plugins\giop\coseventcomm.dll"
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 399d4b125e..28847e361e 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -1,7 +1,7 @@
# Makefile.am
# Automake file for Ethereal
#
-# $Id: Makefile.am,v 1.22 2003/08/18 21:43:21 guy Exp $
+# $Id: Makefile.am,v 1.23 2003/10/14 01:18:10 guy Exp $
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
@@ -21,7 +21,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-SUBDIRS = artnet docsis giop gryphon lwres megaco mgcp pcli rtnet
+SUBDIRS = acn artnet docsis giop gryphon lwres megaco mgcp pcli rtnet
plugindir = @plugindir@
diff --git a/plugins/Makefile.nmake b/plugins/Makefile.nmake
index 1d48209e2f..4b7caa91cc 100644
--- a/plugins/Makefile.nmake
+++ b/plugins/Makefile.nmake
@@ -1,5 +1,5 @@
#
-# $Id: Makefile.nmake,v 1.25 2003/10/10 21:31:49 guy Exp $
+# $Id: Makefile.nmake,v 1.26 2003/10/14 01:18:10 guy Exp $
#
include ..\config.nmake
@@ -11,7 +11,7 @@ CFLAGS=/DHAVE_CONFIG_H /I.. /I../wiretap /I. $(GLIB_CFLAGS) \
OBJECTS=plugin_api.obj
-all: $(OBJECTS) artnet docsis giop gryphon lwres megaco mgcp pcli rtnet
+all: $(OBJECTS) acn artnet docsis giop gryphon lwres megaco mgcp pcli rtnet
Xplugin_api.c: plugin_gen.py plugin_api_list.c
@echo **** Plugin api may be out of date, please generate new files:
@@ -24,6 +24,11 @@ xyzzy: plugin_gen.py plugin_api_list.c
gcc -aux-info xyzzy -DHAVE_CONFIG_H $(GCC_GLIB_CFLAGS) -I.. -c plugin_api_list.c
$(PYTHON) plugin_gen.py xyzzy
+acn::
+ cd acn
+ $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
+ cd ..
+
artnet::
cd artnet
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
@@ -71,7 +76,9 @@ rtnet::
clean:
rm -f plugin_api.obj $(PDB_FILE)
- cd artnet
+ cd acn
+ $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
+ cd ../artnet
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
cd ../docsis
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
diff --git a/plugins/acn/AUTHORS b/plugins/acn/AUTHORS
new file mode 100644
index 0000000000..2f7c1251c4
--- /dev/null
+++ b/plugins/acn/AUTHORS
@@ -0,0 +1,3 @@
+Author :
+Erwin Rol <erwin@erwinrol.com>
+
diff --git a/plugins/acn/COPYING b/plugins/acn/COPYING
new file mode 100644
index 0000000000..d60c31a97a
--- /dev/null
+++ b/plugins/acn/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/plugins/acn/ChangeLog b/plugins/acn/ChangeLog
new file mode 100644
index 0000000000..5e3506a33b
--- /dev/null
+++ b/plugins/acn/ChangeLog
@@ -0,0 +1,2 @@
+$Id: ChangeLog,v 1.1 2003/10/14 01:18:11 guy Exp $
+
diff --git a/plugins/acn/INSTALL b/plugins/acn/INSTALL
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/plugins/acn/INSTALL
diff --git a/plugins/acn/Makefile.am b/plugins/acn/Makefile.am
new file mode 100644
index 0000000000..2daa0772c3
--- /dev/null
+++ b/plugins/acn/Makefile.am
@@ -0,0 +1,44 @@
+# Makefile.am
+# Automake file for Ethereal/ACN
+#
+# $Id: Makefile.am,v 1.1 2003/10/14 01:18:11 guy Exp $
+#
+# Ethereal - Network traffic analyzer
+# By Steve Limkemann <stevelim@dgtech.com>
+# Copyright 1998 Steve Limkemann
+#
+#
+# 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+INCLUDES = -I$(top_srcdir)
+
+plugindir = @plugindir@
+
+plugin_LTLIBRARIES = acn.la
+acn_la_SOURCES = packet-acn.c moduleinfo.h acn.h
+acn_la_LDFLAGS = -module -avoid-version
+
+# Libs must be cleared, or else libtool won't create a shared module.
+# If your module needs to be linked against any particular libraries,
+# add them here.
+LIBS =
+
+CLEANFILES = \
+ acn \
+ *~
+
+EXTRA_DIST = \
+ Makefile.nmake
diff --git a/plugins/acn/Makefile.nmake b/plugins/acn/Makefile.nmake
new file mode 100644
index 0000000000..185b5fbbbd
--- /dev/null
+++ b/plugins/acn/Makefile.nmake
@@ -0,0 +1,21 @@
+#
+# $Id: Makefile.nmake,v 1.1 2003/10/14 01:18:11 guy Exp $
+#
+
+include ..\..\config.nmake
+
+############### no need to modify below this line #########
+
+CFLAGS=/DHAVE_CONFIG_H /I../.. /I../../wiretap $(GLIB_CFLAGS) \
+ /I$(PCAP_DIR)\include -D_U_="" $(LOCAL_CFLAGS)
+
+OBJECTS=packet-acn.obj
+
+acn.dll acn.exp acn.lib : packet-acn.obj ..\plugin_api.obj
+ link -dll /out:acn.dll packet-acn.obj ..\plugin_api.obj \
+ $(GLIB_LIBS)
+
+clean:
+ rm -f $(OBJECTS) acn.dll acn.exp acn.lib $(PDB_FILE)
+
+distclean: clean
diff --git a/plugins/acn/NEWS b/plugins/acn/NEWS
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/plugins/acn/NEWS
diff --git a/plugins/acn/acn.h b/plugins/acn/acn.h
new file mode 100644
index 0000000000..8a8151e185
--- /dev/null
+++ b/plugins/acn/acn.h
@@ -0,0 +1,75 @@
+#ifndef __ACN_H__
+#define __ACN_H__
+
+#define ACN_PDU_MIN_SIZE 2
+
+#define ACN_PDU_DES 0xC0
+#define ACN_PDU_DES_SAME 0x00
+#define ACN_PDU_DES_PS 0x40
+#define ACN_PDU_DES_CID 0x80
+#define ACN_PDU_DES_ALL 0xC0
+#define ACN_PDU_SRC 0x30
+#define ACN_PDU_SRC_SAME 0x00
+#define ACN_PDU_SRC_PS 0x10
+#define ACN_PDU_SRC_CID 0x20
+#define ACN_PDU_SRC_UM 0x30
+#define ACN_PDU_FLAG_P 0x08
+#define ACN_PDU_FLAG_T 0x04
+#define ACN_PDU_FLAG_RES 0x02
+#define ACN_PDU_FLAG_Z 0x01
+
+typedef struct acn_pdu_history_s
+{
+ guint8 source_type;
+ union {
+ guint16 ps;
+ guint8 cid[16];
+ } source;
+
+ guint8 destination_type;
+ union {
+ guint16 ps;
+ guint8 cid[16];
+ } destination;
+
+ guint16 protocol;
+ guint16 type;
+} acn_pdu_history_t;
+
+
+#define ACN_PDU_PROTO_UNKNOWN 0
+#define ACN_PDU_PROTO_SDT 1
+#define ACN_PDU_PROTO_DMP 2
+
+#define ACN_PDU_TYPE_UNKNOWN 0
+
+/* SDT */
+#define ACN_SDT_TYPE_UNKNOWN 0
+#define ACN_SDT_TYPE_RELSEQDATA 1
+#define ACN_SDT_TYPE_UNRELSEQDATA 2
+#define ACN_SDT_TYPE_UNSEQDATA 3
+#define ACN_SDT_TYPE_JOIN 4
+#define ACN_SDT_TYPE_TRANSFER 5
+#define ACN_SDT_TYPE_JOINREF 6
+#define ACN_SDT_TYPE_JOINACC 7
+#define ACN_SDT_TYPE_LEAVEREQ 8
+#define ACN_SDT_TYPE_LEAVE 9
+#define ACN_SDT_TYPE_LEAVING 10
+#define ACN_SDT_TYPE_NAKUPON 11
+#define ACN_SDT_TYPE_NAKUPOFF 12
+#define ACN_SDT_TYPE_NAKDOWNON 13
+#define ACN_SDT_TYPE_NAKDOWNOFF 14
+#define ACN_SDT_TYPE_REPLOSTSEQON 15
+#define ACN_SDT_TYPE_REPLOSTSEQOFF 16
+#define ACN_SDT_TYPE_SESSEXPIRY 17
+#define ACN_SDT_TYPE_MAK 18
+#define ACN_SDT_TYPE_ACK 19
+#define ACN_SDT_TYPE_NAK 20
+#define ACN_SDT_TYPE_SEQLOST 21
+#define ACN_SDT_TYPE_NAKPARAMS 22
+
+
+/* DMP */
+#define ACN_DMP_TYPE_UNKNOWN 0
+
+#endif /* !__ACN_H__ */
diff --git a/plugins/acn/moduleinfo.h b/plugins/acn/moduleinfo.h
new file mode 100644
index 0000000000..d800851877
--- /dev/null
+++ b/plugins/acn/moduleinfo.h
@@ -0,0 +1,17 @@
+/* Included *after* config.h, in order to re-define these macros */
+
+#ifdef PACKAGE
+#undef PACKAGE
+#endif
+
+/* Name of package */
+#define PACKAGE "acn"
+
+
+#ifdef VERSION
+#undef VERSION
+#endif
+
+/* Version number of package */
+#define VERSION "0.0.1"
+
diff --git a/plugins/acn/packet-acn.c b/plugins/acn/packet-acn.c
new file mode 100644
index 0000000000..ebaa3570cb
--- /dev/null
+++ b/plugins/acn/packet-acn.c
@@ -0,0 +1,742 @@
+/* packet-acn.c
+ * Routines for ACN packet disassembly
+ *
+ * $Id: packet-acn.c,v 1.1 2003/10/14 01:18:11 guy Exp $
+ *
+ * Copyright (c) 2003 by Erwin Rol <erwin@erwinrol.com>
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1999 Gerald Combs
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/* Include files */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "plugins/plugin_api.h"
+
+#include "moduleinfo.h"
+#include "acn.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <gmodule.h>
+#include <ctype.h>
+#include <time.h>
+#include <string.h>
+#include <epan/packet.h>
+#include <epan/resolv.h>
+#include "prefs.h"
+#include <epan/strutil.h>
+
+#include "plugins/plugin_api_defs.h"
+
+/* Define version if we are not building ethereal statically */
+
+#ifndef ENABLE_STATIC
+G_MODULE_EXPORT const gchar version[] = VERSION;
+#endif
+
+/*
+ * See
+ *
+ * http://www.esta.org/tsp/E1-17inst.htm
+ */
+
+static const value_string acn_proto_vals[] = {
+ { ACN_PDU_PROTO_UNKNOWN, "ACN Unknown Protocol"},
+ { ACN_PDU_PROTO_SDT, "ACN SDT Protocol" },
+ { ACN_PDU_PROTO_DMP, "ACN DMP Protocol" },
+ { 0, NULL }
+};
+
+static const value_string acn_sdt_type_vals[] = {
+ { ACN_SDT_TYPE_UNKNOWN, "ACN SDT Unknown Type"},
+ { ACN_SDT_TYPE_RELSEQDATA, "ACN SDT RELSEQDATA"},
+ { ACN_SDT_TYPE_UNRELSEQDATA, "ACN SDT UNRELSEQDATA"},
+ { ACN_SDT_TYPE_UNSEQDATA, "ACN SDT UNSEQDATA"},
+ { ACN_SDT_TYPE_JOIN, "ACN SDT JOIN"},
+ { ACN_SDT_TYPE_TRANSFER, "ACN SDT TRANSFER"},
+ { ACN_SDT_TYPE_JOINREF, "ACN SDT JOINREF"},
+ { ACN_SDT_TYPE_JOINACC, "ACN SDT JOINACC"},
+ { ACN_SDT_TYPE_LEAVEREQ, "ACN SDT LEAVEREQ"},
+ { ACN_SDT_TYPE_LEAVE, "ACN SDT LEAVE"},
+ { ACN_SDT_TYPE_LEAVING, "ACN SDT LEAVING"},
+ { ACN_SDT_TYPE_NAKUPON, "ACN SDT NAKUPON"},
+ { ACN_SDT_TYPE_NAKUPOFF, "ACN SDT NAKUPOFF"},
+ { ACN_SDT_TYPE_NAKDOWNON, "ACN SDT NAKDOWNON"},
+ { ACN_SDT_TYPE_NAKDOWNOFF, "ACN SDT NAKDOWNOFF"},
+ { ACN_SDT_TYPE_REPLOSTSEQON, "ACN SDT REPLOSTSEQON"},
+ { ACN_SDT_TYPE_REPLOSTSEQOFF, "ACN SDT REPLOSTSEQOFF"},
+ { ACN_SDT_TYPE_SESSEXPIRY, "ACN SDT SESEXPIRY"},
+ { ACN_SDT_TYPE_MAK, "ACN SDT MAC"},
+ { ACN_SDT_TYPE_ACK, "ACN SDT ACK"},
+ { ACN_SDT_TYPE_NAK, "ACN SDT NAK"},
+ { ACN_SDT_TYPE_SEQLOST, "ACN SDT SEQLOST"},
+ { ACN_SDT_TYPE_NAKPARAMS, "ACN SDT NAKPARAMS"},
+ { 0, NULL }
+};
+
+static const value_string acn_dmp_type_vals[] = {
+ { ACN_DMP_TYPE_UNKNOWN, "ACN DMP Unknown Type"},
+ { 0, NULL }
+};
+
+void proto_reg_handoff_acn(void);
+
+/* Define the acn proto */
+static int proto_acn = -1;
+
+/* Define the tree for acn */
+static int ett_acn = -1;
+
+/* PDU */
+static int hf_acn_pdu = -1;
+
+static int hf_acn_pdu_flags = -1;
+
+static int hf_acn_pdu_des = -1;
+static int hf_acn_pdu_src = -1;
+static int hf_acn_pdu_flag_p = -1;
+static int hf_acn_pdu_flag_t = -1;
+static int hf_acn_pdu_flag_res = -1;
+static int hf_acn_pdu_flag_z = -1;
+static int hf_acn_pdu_length = -1;
+
+/* PDU optional */
+static int hf_acn_pdu_ext_length_16 = -1;
+static int hf_acn_pdu_ext_length_32 = -1;
+static int hf_acn_pdu_source_ps = -1;
+static int hf_acn_pdu_source_cid = -1;
+static int hf_acn_pdu_destination_ps = -1;
+static int hf_acn_pdu_destination_cid = -1;
+static int hf_acn_pdu_protocol = -1;
+static int hf_acn_pdu_type = -1;
+static int hf_acn_pdu_type_sdt = -1;
+static int hf_acn_pdu_type_dmp = -1;
+static int hf_acn_pdu_data = -1;
+
+static int hf_acn_pdu_padding = -1;
+
+/* SDT */
+static int hf_acn_sdt_session_nr = -1;
+static int hf_acn_sdt_tot_seq_nr = -1;
+static int hf_acn_sdt_rel_seq_nr = -1;
+static int hf_acn_sdt_unavailable_wrappers = -1;
+static int hf_acn_sdt_refuse_code = -1;
+static int hf_acn_sdt_last_rel_seq = -1;
+static int hf_acn_sdt_last_rel_wrapper = -1;
+static int hf_acn_sdt_session_exp_time = -1;
+
+
+/*
+ * Here are the global variables associated with the preferences
+ * for acn
+ */
+
+static guint global_udp_port_acn = 0;
+static guint udp_port_acn = 0;
+
+/* A static handle for the ip dissector */
+static dissector_handle_t ip_handle;
+
+static guint dissect_pdu(tvbuff_t *tvb, guint offset, proto_tree *tree, acn_pdu_history_t* parent_hist, guint max_size);
+static guint dissect_sdt(tvbuff_t *tvb, guint offset, proto_tree *tree, acn_pdu_history_t* parent_hist, guint max_size);
+static guint dissect_dmp(tvbuff_t *tvb, guint offset, proto_tree *tree, acn_pdu_history_t* parent_hist, guint max_size);
+
+static guint
+dissect_sdt(tvbuff_t *tvb, guint offset, proto_tree *tree, acn_pdu_history_t* parent_hist, guint max_size)
+{
+ proto_tree *flags_tree, *flags_item;
+ guint start_offset = offset;
+ acn_pdu_history_t hist;
+ guint size = 0;
+
+ hist = *parent_hist;
+
+ switch( parent_hist->type )
+ {
+ case ACN_SDT_TYPE_UNKNOWN:
+ break;
+
+ case ACN_SDT_TYPE_RELSEQDATA:
+ case ACN_SDT_TYPE_UNRELSEQDATA:
+ proto_tree_add_item(tree, hf_acn_sdt_session_nr, tvb,
+ offset, 2, FALSE);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_acn_sdt_tot_seq_nr, tvb,
+ offset, 4, FALSE);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_acn_sdt_rel_seq_nr, tvb,
+ offset, 4, FALSE);
+ offset += 4;
+
+ proto_tree_add_item(tree, hf_acn_sdt_unavailable_wrappers, tvb,
+ offset, 4, FALSE);
+ offset += 4;
+
+ max_size = max_size - (offset - start_offset);
+ while( max_size >= ACN_PDU_MIN_SIZE) {
+ size = dissect_pdu( tvb, offset, tree, &hist, max_size);
+ offset += size;
+ max_size -= size;
+ }
+
+ size = offset - start_offset;
+
+ break;
+
+ case ACN_SDT_TYPE_UNSEQDATA:
+ proto_tree_add_item(tree, hf_acn_sdt_session_nr, tvb,
+ offset, 2, FALSE);
+ offset += 2;
+
+ max_size = max_size - (offset - start_offset);
+ while( max_size >= ACN_PDU_MIN_SIZE) {
+ size = dissect_pdu( tvb, offset, tree, &hist, max_size);
+ offset += size;
+ max_size -= size;
+ }
+
+ size = offset - start_offset;
+
+ break;
+
+ case ACN_SDT_TYPE_JOIN:
+ break;
+
+ case ACN_SDT_TYPE_TRANSFER:
+ break;
+
+ case ACN_SDT_TYPE_JOINREF:
+ proto_tree_add_item(tree, hf_acn_sdt_session_nr, tvb,
+ offset, 2, FALSE);
+ offset += 2;
+
+ proto_tree_add_item(tree, hf_acn_sdt_refuse_code, tvb,
+ offset, 2, FALSE);
+ offset += 2;
+
+ size = offset - start_offset;
+ break;
+
+ case ACN_SDT_TYPE_JOINACC:
+ case ACN_SDT_TYPE_ACK:
+ proto_tree_add_item(tree, hf_acn_sdt_last_rel_seq, tvb,
+ offset, 4, FALSE);
+ offset += 4;
+
+ size = offset - start_offset;
+
+ break;
+
+ case ACN_SDT_TYPE_LEAVING:
+ proto_tree_add_item(tree, hf_acn_sdt_last_rel_wrapper, tvb,
+ offset, 4, FALSE);
+ offset += 4;
+
+ size = offset - start_offset;
+ break;
+
+
+ case ACN_SDT_TYPE_SESSEXPIRY:
+ proto_tree_add_item(tree, hf_acn_sdt_session_exp_time, tvb,
+ offset, 2, FALSE);
+ offset += 2;
+
+ size = offset - start_offset;
+ break;
+
+ case ACN_SDT_TYPE_MAK:
+ break;
+
+ case ACN_SDT_TYPE_NAK:
+ break;
+
+ case ACN_SDT_TYPE_SEQLOST:
+ break;
+
+ case ACN_SDT_TYPE_NAKPARAMS:
+ break;
+
+ case ACN_SDT_TYPE_LEAVEREQ:
+ case ACN_SDT_TYPE_LEAVE:
+ case ACN_SDT_TYPE_NAKUPON:
+ case ACN_SDT_TYPE_NAKUPOFF:
+ case ACN_SDT_TYPE_NAKDOWNON:
+ case ACN_SDT_TYPE_NAKDOWNOFF:
+ case ACN_SDT_TYPE_REPLOSTSEQON:
+ case ACN_SDT_TYPE_REPLOSTSEQOFF:
+ /* no data */
+ break;
+
+ default:
+ break;
+ }
+
+ return size;
+}
+
+static guint
+dissect_dmp(tvbuff_t *tvb, guint offset, proto_tree *tree, acn_pdu_history_t* parent_hist, guint max_size)
+{
+ return 0;
+}
+
+static guint
+dissect_pdu(tvbuff_t *tvb, guint offset, proto_tree *tree, acn_pdu_history_t* parent_hist, guint max_size)
+{
+ guint size,data_size;
+ guint8 flags;
+ guint src,des;
+ proto_tree *ti, *si, *flags_tree, *flags_item;
+ guint start_offset = offset;
+ acn_pdu_history_t hist;
+
+
+ ti = proto_tree_add_item(tree,
+ hf_acn_pdu,
+ tvb,
+ offset,
+ 0,
+ FALSE);
+
+ si = proto_item_add_subtree(ti, ett_acn);
+
+ flags = tvb_get_guint8(tvb, offset);
+ flags_item = proto_tree_add_uint(si, hf_acn_pdu_flags, tvb,
+ offset, 1, flags);
+
+ flags_tree=proto_item_add_subtree(flags_item, ett_acn);
+
+ proto_tree_add_item(flags_tree, hf_acn_pdu_des, tvb, offset, 1, FALSE);
+ proto_tree_add_item(flags_tree, hf_acn_pdu_src, tvb, offset, 1, FALSE);
+ proto_tree_add_item(flags_tree, hf_acn_pdu_flag_p, tvb, offset, 1, FALSE);
+ proto_tree_add_item(flags_tree, hf_acn_pdu_flag_t, tvb, offset, 1, FALSE);
+ proto_tree_add_item(flags_tree, hf_acn_pdu_flag_res, tvb, offset, 1, FALSE);
+ proto_tree_add_item(flags_tree, hf_acn_pdu_flag_z, tvb, offset, 1, FALSE);
+
+ offset += 1;
+
+ size = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(si, hf_acn_pdu_length, tvb,
+ offset, 1, size);
+ offset += 1;
+
+
+ if( size == 0 ){
+ size = tvb_get_ntohs(tvb, offset);
+ proto_tree_add_uint(si, hf_acn_pdu_ext_length_16, tvb,
+ offset, 2, size);
+ offset += 2;
+ } else if( size == 1 ){
+ size = tvb_get_ntohl( tvb, offset);
+ proto_tree_add_uint(si, hf_acn_pdu_ext_length_32, tvb,
+ offset, 4, size);
+ offset += 4;
+ }
+
+ switch( hist.source_type )
+ {
+ case ACN_PDU_SRC_SAME:
+ break;
+
+ case ACN_PDU_SRC_PS:
+ hist.source_type = ACN_PDU_SRC_PS;
+ src = tvb_get_ntohs(tvb, offset);
+ hist.source.ps = src;
+ proto_tree_add_uint(si, hf_acn_pdu_source_ps, tvb,
+ offset, 2, src);
+ offset += 2;
+ break;
+
+ case ACN_PDU_SRC_CID:
+ hist.source_type = ACN_PDU_SRC_CID;
+ tvb_memcpy(tvb, hist.source.cid, offset, 16 );
+ proto_tree_add_item(si, hf_acn_pdu_source_cid, tvb,
+ offset, 16, FALSE);
+ offset += 16;
+ break;
+
+ case ACN_PDU_SRC_UM:
+ hist.source_type = ACN_PDU_SRC_UM;
+ break;
+ }
+
+
+ switch( flags & ACN_PDU_DES )
+ {
+ case ACN_PDU_DES_SAME:
+ break;
+
+ case ACN_PDU_DES_PS:
+ hist.destination_type = ACN_PDU_DES_PS;
+ des = tvb_get_ntohs(tvb, offset);
+ hist.destination.ps = des;
+ proto_tree_add_uint(si, hf_acn_pdu_destination_ps, tvb,
+ offset, 2, des);
+ offset += 2;
+ break;
+
+ case ACN_PDU_DES_CID:
+ hist.destination_type = ACN_PDU_DES_CID;
+ tvb_memcpy(tvb, hist.destination.cid, offset, 16 );
+ proto_tree_add_item(si, hf_acn_pdu_destination_cid, tvb,
+ offset, 16, FALSE);
+ offset += 16;
+ break;
+
+ case ACN_PDU_DES_ALL:
+ hist.destination_type = ACN_PDU_DES_ALL;
+ break;
+ }
+
+ if( flags & ACN_PDU_FLAG_P )
+ {
+ hist.protocol = tvb_get_ntohs( tvb, offset );
+ proto_tree_add_item(si, hf_acn_pdu_protocol, tvb,
+ offset, 2, TRUE );
+ offset += 2;
+ }
+
+ if( flags & ACN_PDU_FLAG_T )
+ {
+ hist.type = tvb_get_ntohs( tvb, offset );
+
+ switch( hist.protocol ) {
+ case ACN_PDU_PROTO_SDT:
+ proto_tree_add_item(si, hf_acn_pdu_type_sdt, tvb,
+ offset, 2, TRUE );
+ break;
+
+ case ACN_PDU_PROTO_DMP:
+ proto_tree_add_item(si, hf_acn_pdu_type_dmp, tvb,
+ offset, 2, TRUE );
+ break;
+
+ default:
+ proto_tree_add_item(si, hf_acn_pdu_type, tvb,
+ offset, 2, TRUE );
+ break;
+
+
+
+ }
+
+ offset += 2;
+ }
+
+ hist = *parent_hist;
+
+ if( flags & ACN_PDU_FLAG_Z )
+ {
+ data_size = size - (offset - start_offset);
+
+ switch( hist.protocol ) {
+ case ACN_PDU_PROTO_SDT:
+ dissect_sdt( tvb, offset, si, &hist, data_size);
+ break;
+
+ case ACN_PDU_PROTO_DMP:
+ dissect_dmp( tvb, offset, si, &hist, data_size);
+ break;
+
+ default:
+ proto_tree_add_item(si, hf_acn_pdu_data, tvb,
+ offset, data_size, TRUE );
+ break;
+ }
+
+ offset += data_size;
+ }
+
+ if( size & 0x00000001 )
+ {
+
+ proto_tree_add_item(si, hf_acn_pdu_padding, tvb,
+ offset, 1, TRUE );
+
+ size += 1;
+ offset += 1;
+ }
+
+ proto_item_set_len(si, size);
+
+ return size;
+}
+
+static void
+dissect_acn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ gint offset = 0;
+ guint size,max_size;
+ acn_pdu_history_t hist;
+
+ /* Set the protocol column */
+ if(check_col(pinfo->cinfo,COL_PROTOCOL)){
+ col_set_str(pinfo->cinfo,COL_PROTOCOL,"ACN");
+ }
+
+ /* Clear out stuff in the info column */
+ if(check_col(pinfo->cinfo,COL_INFO)){
+ col_clear(pinfo->cinfo,COL_INFO);
+ }
+
+ if (tree)
+ {
+ /* history default values */
+ hist.destination_type = ACN_PDU_DES_ALL;
+ hist.source_type = ACN_PDU_SRC_UM;
+ hist.protocol = ACN_PDU_PROTO_UNKNOWN;
+ hist.type = ACN_PDU_TYPE_UNKNOWN;
+
+ max_size = tvb_reported_length_remaining(tvb, offset);
+
+ while( max_size >= ACN_PDU_MIN_SIZE) {
+ size = dissect_pdu( tvb, offset, tree, &hist, max_size);
+ offset += size;
+ max_size -= size;
+ }
+ }
+}
+
+void
+proto_register_acn(void) {
+ static hf_register_info hf[] = {
+ /* PDU */
+ { &hf_acn_pdu,
+ { "ACN PDU", "acn.pdu",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ACN PDU", HFILL }},
+
+ { &hf_acn_pdu_flags,
+ { "PDU Flags","acn.pdu.flags",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ "PDU flags", HFILL }},
+
+ { &hf_acn_pdu_des,
+ { "PDU des","acn.pdu.des",
+ FT_UINT8, BASE_HEX, NULL, 0xC0,
+ "PDU des", HFILL }},
+
+ { &hf_acn_pdu_src,
+ { "PDU src","acn.pdu.src",
+ FT_UINT8, BASE_HEX, NULL, 0x30,
+ "PDU src", HFILL }},
+
+ { &hf_acn_pdu_flag_p,
+ { "PDU Flag p","acn.pdu.flag_p",
+ FT_UINT8, BASE_HEX, NULL, 0x08,
+ "PDU flag p", HFILL }},
+
+ { &hf_acn_pdu_flag_t,
+ { "PDU Flag t","acn.pdu.flag_t",
+ FT_UINT8, BASE_HEX, NULL, 0x04,
+ "PDU flag t", HFILL }},
+
+ { &hf_acn_pdu_flag_z,
+ { "PDU Flag z","acn.pdu.flag_z",
+ FT_UINT8, BASE_HEX, NULL, 0x01,
+ "PDU flag z", HFILL }},
+
+ { &hf_acn_pdu_flag_res,
+ { "PDU Flag res","acn.pdu.flag_res",
+ FT_UINT8, BASE_HEX, NULL, 0x02,
+ "PDU flag res", HFILL }},
+
+ { &hf_acn_pdu_length,
+ { "PDU Lenght","acn.pdu.length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "PDU Length", HFILL }},
+
+ { &hf_acn_pdu_ext_length_16,
+ { "PDU Ext Length 16bit","acn.pdu.ext_length_16",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "PDU Ext Length 16bit", HFILL }},
+
+ { &hf_acn_pdu_ext_length_32,
+ { "PDU Ext Length 32bit","acn.pdu.ext_length_32",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PDU Ext Length 32bit", HFILL }},
+
+ { &hf_acn_pdu_source_ps,
+ { "PDU Source PS","acn.pdu.source_ps",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "PDU Source", HFILL }},
+
+ { &hf_acn_pdu_source_cid,
+ { "PDU Source CID","acn.pdu.source_cid",
+ FT_BYTES, BASE_HEX, NULL, 0x0,
+ "PDU Source CID", HFILL }},
+
+ { &hf_acn_pdu_destination_ps,
+ { "PDU Destination PS","acn.pdu.destination_ps",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "PDU Destination PS", HFILL }},
+
+ { &hf_acn_pdu_destination_cid,
+ { "PDU Destination CID","acn.pdu.destination_cid",
+ FT_BYTES, BASE_HEX, NULL, 0x0,
+ "PDU Destination CID", HFILL }},
+
+ { &hf_acn_pdu_protocol,
+ { "PDU Protocol","acn.pdu.protocol",
+ FT_UINT16, BASE_HEX, VALS(acn_proto_vals), 0x0,
+ "PDU Protocol", HFILL }},
+
+ { &hf_acn_pdu_type,
+ { "PDU Type","acn.pdu.type",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ "PDU Type", HFILL }},
+
+ { &hf_acn_pdu_type_sdt,
+ { "PDU Type SDT","acn.pdu.type_sdt",
+ FT_UINT16, BASE_HEX, VALS(acn_sdt_type_vals), 0x0,
+ "PDU Type SDT", HFILL }},
+
+ { &hf_acn_pdu_type_dmp,
+ { "PDU Type DMP","acn.pdu.type_dmp",
+ FT_UINT16, BASE_HEX, VALS(acn_dmp_type_vals), 0x0,
+ "PDU Type DMP", HFILL }},
+
+ { &hf_acn_pdu_data,
+ { "PDU Data","acn.pdu.data",
+ FT_BYTES, BASE_HEX, NULL, 0x0,
+ "PDU Data", HFILL }},
+
+ { &hf_acn_pdu_padding,
+ { "PDU Padding","acn.pdu.padding",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "PDU Padding", HFILL }},
+
+ { &hf_acn_sdt_session_nr,
+ { "PDU SDT Session Nr","acn.sdt.session_nr",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "PDU SDT Session Nr", HFILL }},
+
+ { &hf_acn_sdt_tot_seq_nr,
+ { "PDU SDT Total Sequence Nr","acn.sdt.tot_seq_nr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PDU SDT Total Sequence Nr", HFILL }},
+
+ { &hf_acn_sdt_rel_seq_nr,
+ { "PDU SDT Rel Seq Nr","acn.sdt.rel_seq_nr",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PDU SDT Rel Sequence Nr", HFILL }},
+
+ { &hf_acn_sdt_unavailable_wrappers,
+ { "PDU SDT Unavailable Wrappers","acn.sdt.unavailable_wrappers",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PDU SDT Unavailable Wrappers", HFILL }},
+
+ { &hf_acn_sdt_refuse_code,
+ { "PDU SDT Refuse code","acn.sdt.refuse_code",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "PDU SDT Refuse Code", HFILL }},
+
+ { &hf_acn_sdt_last_rel_seq,
+ { "PDU SDT Last reliable seq nr","acn.sdt.last_rel_seq",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PDU SDT Last reliable seq nr", HFILL }},
+
+ { &hf_acn_sdt_last_rel_wrapper,
+ { "PDU SDT Last reliable Wrapper","acn.sdt.last_rel_wrapper",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "PDU SDT Last reliable Wrapper", HFILL }},
+
+ { &hf_acn_sdt_session_exp_time,
+ { "PDU SDT Session expire time","acn.sdt.session_exp_time",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "PDU SDT Session expire time", HFILL }}
+
+ };
+
+ static gint *ett[] = {
+ &ett_acn,
+ };
+
+ module_t *acn_module;
+
+ proto_acn = proto_register_protocol("ACN",
+ "ACN","acn");
+ proto_register_field_array(proto_acn,hf,array_length(hf));
+ proto_register_subtree_array(ett,array_length(ett));
+
+ acn_module = prefs_register_protocol(proto_acn,
+ proto_reg_handoff_acn);
+#if 0
+ prefs_register_uint_preference(artnet_module, "udp_port",
+ "ARTNET UDP Port",
+ "The UDP port on which "
+ "Art-Net "
+ "packets will be sent",
+ 10,&global_udp_port_artnet);
+#endif
+}
+
+/* The registration hand-off routing */
+
+void
+proto_reg_handoff_acn(void) {
+ static int acn_initialized = FALSE;
+ static dissector_handle_t acn_handle;
+
+ ip_handle = find_dissector("ip");
+
+ if(!acn_initialized) {
+ acn_handle = create_dissector_handle(dissect_acn,proto_acn);
+ acn_initialized = TRUE;
+ } else {
+ dissector_delete("udp.port",udp_port_acn,acn_handle);
+ }
+
+ udp_port_acn = global_udp_port_acn;
+
+ dissector_add("udp.port",global_udp_port_acn,acn_handle);
+}
+
+/* Start the functions we need for the plugin stuff */
+
+#ifndef ENABLE_STATIC
+
+G_MODULE_EXPORT void
+plugin_reg_handoff(void){
+ proto_reg_handoff_acn();
+}
+
+G_MODULE_EXPORT void
+plugin_init(plugin_address_table_t *pat
+#ifndef PLUGINS_NEED_ADDRESS_TABLE
+_U_
+#endif
+){
+ /* initialise the table of pointers needed in Win32 DLLs */
+ plugin_address_table_init(pat);
+ /* register the new protocol, protocol fields, and subtrees */
+ if (proto_acn == -1) { /* execute protocol initialization only once */
+ proto_register_acn();
+ }
+}
+
+#endif
+
+/* End the functions we need for plugin stuff */
+