Ethereal-dev: [Ethereal-dev] Ethereal updates for Art-Net and new ENTTEC and RDM protocols

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Erwin Rol <mailinglists@xxxxxxxxxxxx>
Date: Mon, 17 Nov 2003 11:57:20 +0100
Hey all,

attached a patch that updates the Art-Net plugin, and adds two new
protocol dissectors ( ENTTEC and RDM). The RDM dissector is used by the
Art-Net dissector since Art-Net encapsulates RDM frames to send them
over Ethernet (RDM is normally a low level RS485 based protocol). The
ENTTEC plugin is in an initial setup state and at the moment does
nothing much more than compile :-)

- Erwin

-- 
       Erwin Rol Software Engineering - http://www.erwinrol.com/

? plugins/enttec
? plugins/rdm
? plugins/acn/acn.diff
? plugins/acn/acn.dump
? plugins/acn/acn.dump1
Index: Makefile.am
===================================================================
RCS file: /cvsroot/ethereal/Makefile.am,v
retrieving revision 1.651
diff -u -r1.651 Makefile.am
--- Makefile.am	11 Nov 2003 08:29:33 -0000	1.651
+++ Makefile.am	17 Nov 2003 10:46:39 -0000
@@ -473,6 +473,7 @@
 	plugins/artnet/artnet.la \
         plugins/asn1/asn1.la \
 	plugins/docsis/docsis.la \
+	plugins/enttec/enttec.la \
 	plugins/giop/cosnaming.la \
 	plugins/giop/coseventcomm.la \
 	plugins/gryphon/gryphon.la \
@@ -480,6 +481,7 @@
 	plugins/megaco/megaco.la \
 	plugins/mgcp/mgcp.la \
 	plugins/pcli/pcli.la \
+	plugins/rdm/rdm.la \
 	plugins/rtnet/rtnet.la 
 
 if ENABLE_STATIC
@@ -510,6 +512,7 @@
 	plugins/docsis/packet-uccreq.o \
 	plugins/docsis/packet-uccrsp.o \
 	plugins/docsis/packet-ucd.o \
+	plugins/enttec/packet-enttec.o \
 	plugins/giop/packet-cosnaming.o \
 	plugins/giop/packet-coseventcomm.o \
 	plugins/gryphon/packet-gryphon.o \
@@ -517,6 +520,7 @@
 	plugins/megaco/packet-megaco.o \
 	plugins/mgcp/packet-mgcp.o \
 	plugins/pcli/packet-pcli.o \
+	plugins/rdm/packet-rdm.o \
 	plugins/rtnet/packet-rtnet.o 
 
 plugin_src = \
@@ -546,6 +550,7 @@
 	plugins/docsis/packet-uccreq.c \
 	plugins/docsis/packet-uccrsp.c \
 	plugins/docsis/packet-ucd.c \
+	plugins/enttec/packet-enttec.c \
 	plugins/giop/packet-cosnaming.c \
 	plugins/giop/packet-coseventcomm.c \
 	plugins/gryphon/packet-gryphon.c \
@@ -553,6 +558,7 @@
 	plugins/megaco/packet-megaco.c \
 	plugins/mgcp/packet-mgcp.c \
 	plugins/pcli/packet-pcli.c \
+	plugins/rdm/packet-rdm.c \
 	plugins/rtnet/packet-rtnet.c 
 
 else		# ENABLE_STATIC
@@ -562,6 +568,7 @@
 	"-dlopen" plugins/artnet/artnet.la \
         "-dlopen" plugins/asn1/asn1.la \
 	"-dlopen" plugins/docsis/docsis.la \
+	"-dlopen" plugins/enttec/enttec.la \
 	"-dlopen" plugins/giop/cosnaming.la \
 	"-dlopen" plugins/giop/coseventcomm.la \
 	"-dlopen" plugins/gryphon/gryphon.la \
@@ -569,6 +576,7 @@
 	"-dlopen" plugins/megaco/megaco.la \
 	"-dlopen" plugins/mgcp/mgcp.la \
 	"-dlopen" plugins/pcli/pcli.la \
+	"-dlopen" plugins/rdm/rdm.la \
 	"-dlopen" plugins/rtnet/rtnet.la 
 
 plugin_src =
Index: configure.in
===================================================================
RCS file: /cvsroot/ethereal/configure.in,v
retrieving revision 1.230
diff -u -r1.230 configure.in
--- configure.in	2 Nov 2003 23:36:01 -0000	1.230
+++ configure.in	17 Nov 2003 10:46:41 -0000
@@ -816,12 +816,14 @@
   plugins/artnet/Makefile
   plugins/asn1/Makefile
   plugins/docsis/Makefile
+  plugins/enttec/Makefile
   plugins/giop/Makefile
   plugins/gryphon/Makefile
   plugins/lwres/Makefile
   plugins/megaco/Makefile
   plugins/mgcp/Makefile
   plugins/pcli/Makefile
+  plugins/rdm/Makefile
   plugins/rtnet/Makefile
   tools/Makefile
   tools/lemon/Makefile
Index: plugins/Makefile.am
===================================================================
RCS file: /cvsroot/ethereal/plugins/Makefile.am,v
retrieving revision 1.24
diff -u -r1.24 Makefile.am
--- plugins/Makefile.am	28 Oct 2003 07:02:37 -0000	1.24
+++ plugins/Makefile.am	17 Nov 2003 10:46:50 -0000
@@ -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 = acn asn1 artnet docsis giop gryphon lwres megaco mgcp pcli rtnet
+SUBDIRS = acn asn1 artnet docsis enttec giop gryphon lwres megaco mgcp pcli rdm rtnet
 
 plugindir = @plugindir@
 
Index: plugins/Makefile.nmake
===================================================================
RCS file: /cvsroot/ethereal/plugins/Makefile.nmake,v
retrieving revision 1.27
diff -u -r1.27 Makefile.nmake
--- plugins/Makefile.nmake	28 Oct 2003 07:02:37 -0000	1.27
+++ plugins/Makefile.nmake	17 Nov 2003 10:46:50 -0000
@@ -11,7 +11,7 @@
 
 OBJECTS=plugin_api.obj 
 
-all: $(OBJECTS) acn artnet asn1 docsis giop gryphon lwres megaco mgcp pcli rtnet
+all: $(OBJECTS) acn artnet asn1 docsis giop gryphon lwres megaco mgcp pcli rdm rtnet
 
 Xplugin_api.c: plugin_gen.py plugin_api_list.c
 	@echo **** Plugin api may be out of date, please generate new files:
@@ -44,6 +44,11 @@
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
 	cd .. 
 
+enttec::
+	cd enttec
+	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
+	cd .. 
+
 giop::
 	cd giop
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
@@ -74,6 +79,11 @@
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
 	cd ..
 
+rdm:: 
+	cd rdm
+	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
+	cd ..
+
 rtnet:: 
 	cd rtnet
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake
@@ -89,6 +99,8 @@
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
 	cd ../docsis
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
+	cd ../enttec
+	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
 	cd ../giop
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
 	cd ../gryphon
@@ -101,15 +113,23 @@
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
 	cd ../pcli
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
+	cd ../rdm
+	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
 	cd ../rtnet
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
 	cd ..
 
 distclean: clean
-	cd artnet
+	cd acn
+	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
+	cd ../artnet
+	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
+	cd ../asn1
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
 	cd ../docsis
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
+	cd ../enttec
+	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
 	cd ../giop
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
 	cd ../gryphon
@@ -121,6 +141,8 @@
 	cd ../mgcp
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
 	cd ../pcli
+	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
+	cd ../rdm
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
 	cd ../rtnet
 	$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake distclean
Index: plugins/artnet/ChangeLog
===================================================================
RCS file: /cvsroot/ethereal/plugins/artnet/ChangeLog,v
retrieving revision 1.2
diff -u -r1.2 ChangeLog
--- plugins/artnet/ChangeLog	24 Aug 2003 01:43:59 -0000	1.2
+++ plugins/artnet/ChangeLog	17 Nov 2003 10:46:50 -0000
@@ -1,16 +1,16 @@
 $Id: ChangeLog,v 1.2 2003/08/24 01:43:59 sahlberg Exp $
- 
-Overview of changes in Ethereal 0.0.2:
+
+Overview of changes in Art-Net Ethereal plugin:
+
+Version 0.0.3:
+
+* Some small changes in the TOD frames
+* Using RDM dissector for ArtRdm packets
+
+Version 0.0.2
  
 * Number of new packets
 * Added strings for several fields
 * Use "Art-Net" instead of "ArtNET"
 * Number of (endian) bugs fixed
-$Id: ChangeLog,v 1.2 2003/08/24 01:43:59 sahlberg Exp $
- 
-Overview of changes in Ethereal 0.0.2:
  
-* Number of new packets
-* Added strings for several fields
-* Use "Art-Net" instead of "ArtNET"
-* Number of (endian) bugs fixed
Index: plugins/artnet/moduleinfo.h
===================================================================
RCS file: /cvsroot/ethereal/plugins/artnet/moduleinfo.h,v
retrieving revision 1.2
diff -u -r1.2 moduleinfo.h
--- plugins/artnet/moduleinfo.h	24 Aug 2003 01:43:59 -0000	1.2
+++ plugins/artnet/moduleinfo.h	17 Nov 2003 10:46:50 -0000
@@ -13,5 +13,5 @@
 #endif
 
 /* Version number of package */
-#define VERSION "0.0.2"
+#define VERSION "0.0.3"
 
Index: plugins/artnet/packet-artnet.c
===================================================================
RCS file: /cvsroot/ethereal/plugins/artnet/packet-artnet.c,v
retrieving revision 1.4
diff -u -r1.4 packet-artnet.c
--- plugins/artnet/packet-artnet.c	5 Sep 2003 07:44:45 -0000	1.4
+++ plugins/artnet/packet-artnet.c	17 Nov 2003 10:47:00 -0000
@@ -267,25 +267,15 @@
   { 0,                          NULL }
 };
 
-
-#define ARTNET_TRC_TOD_FULL 0x00
-
 static const value_string artnet_tod_request_command_vals[] = {
-  { ARTNET_TRC_TOD_FULL, "TodFull" },
   { 0,                   NULL }
 };
 
 #define ARTNET_TDC_TOD_FULL    0x00
-#define ARTNET_TDC_TOD_INVALID 0x01
-#define ARTNET_TDC_TOD_ADD     0x02
-#define ARTNET_TDC_TOD_SUB     0x03
 #define ARTNET_TDC_TOD_NAK     0xFF
 
 static const value_string artnet_tod_data_command_vals[] = {
   { ARTNET_TDC_TOD_FULL,    "TodFull" },
-  { ARTNET_TDC_TOD_INVALID, "Invalid" },
-  { ARTNET_TDC_TOD_ADD,     "TodAdd" },
-  { ARTNET_TDC_TOD_SUB,     "TodSubtract" },
   { ARTNET_TDC_TOD_NAK,     "TodNak" },
   { 0,                      NULL }
 };
@@ -454,6 +444,7 @@
 
 /* ArtTodData */
 static int hf_artnet_tod_data = -1;
+static int hf_artnet_tod_data_port = -1;
 static int hf_artnet_tod_data_command_response = -1;
 static int hf_artnet_tod_data_address = -1;
 static int hf_artnet_tod_data_uid_total = -1;
@@ -503,6 +494,7 @@
 
 /* A static handle for the ip dissector */
 static dissector_handle_t ip_handle;
+static dissector_handle_t rdm_handle;
 
 static guint
 dissect_artnet_poll(tvbuff_t *tvb, guint offset, proto_tree *tree)
@@ -1128,8 +1120,12 @@
   guint8 i,uid_count;
 
   proto_tree_add_item(tree, hf_artnet_filler, tvb,
-		      offset, 2, FALSE);
-  offset += 2;
+		      offset, 1, FALSE);
+  offset += 1;
+
+  proto_tree_add_item(tree, hf_artnet_tod_data_port, tvb,
+		      offset, 1, FALSE);
+  offset += 1;
 
   proto_tree_add_item(tree, hf_artnet_spare, tvb,
 		      offset, 8, FALSE);
@@ -1189,8 +1185,12 @@
 }
 
 static guint
-dissect_artnet_rdm(tvbuff_t *tvb, guint offset, proto_tree *tree)
+dissect_artnet_rdm(tvbuff_t *tvb, guint offset, proto_tree *tree,  packet_info *pinfo)
 {
+  guint size;
+  gboolean save_info;
+  tvbuff_t *next_tvb = NULL;
+
   proto_tree_add_item(tree, hf_artnet_filler, tvb,
 		      offset, 2, FALSE);
   offset += 2;
@@ -1207,7 +1207,21 @@
 		      offset, 1, FALSE);
   offset += 1;
 
-  return offset;
+  size = tvb_reported_length_remaining(tvb, offset);
+
+  save_info=col_get_writable(pinfo->cinfo); 
+  col_set_writable(pinfo->cinfo, FALSE);
+
+  if (!next_tvb)
+    next_tvb = tvb_new_subset(tvb, offset, -1, -1);
+ 
+  call_dissector(rdm_handle, next_tvb, pinfo, tree);
+
+  col_set_writable(pinfo->cinfo, save_info);
+  
+  size = tvb_reported_length_remaining(tvb, offset) - size;
+
+  return offset + size;
 }
 
 static guint
@@ -1602,7 +1616,7 @@
 				 FALSE);
 	si = proto_item_add_subtree(hi,ett_artnet);
 
-	size = dissect_artnet_rdm( tvb, offset, si );
+	size = dissect_artnet_rdm( tvb, offset, si, pinfo );
 	size -= offset;
 
 	proto_item_set_len( si, size );
@@ -1667,6 +1681,9 @@
       }
       break;
   }
+
+
+
 }
 
 void
@@ -2371,6 +2388,12 @@
         FT_NONE, BASE_NONE, NULL, 0,
         "Art-Net ArtTodData packet", HFILL }},
 
+    { &hf_artnet_tod_data_port,
+      { "Port",
+        "artnet.tod_data.port",
+        FT_UINT8, BASE_DEC, NULL, 0x0,
+        "Port", HFILL }},
+
     { &hf_artnet_tod_data_command_response,
       { "Command Response",
         "artnet.tod_data.command_response",
@@ -2576,6 +2599,8 @@
   static dissector_handle_t artnet_handle;
 
   ip_handle = find_dissector("ip");
+  rdm_handle = find_dissector("rdm");
+
 
   if(!artnet_initialized) {
     artnet_handle = create_dissector_handle(dissect_artnet,proto_artnet);

Attachment: enttec.tgz
Description: application/tgz

Attachment: rdm.tgz
Description: application/tgz