Ethereal-dev: [Ethereal-dev] [PATCH] ACN pluging update

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: Fri, 31 Oct 2003 12:32:55 +0100
Hello all,

here an update of the ACN plugin. It is still under development also
because at the same time i have to write an implementation of the
protocol to test it :-)

- Erwin


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

? acn.diff
? acn.dump
Index: acn.h
===================================================================
RCS file: /cvsroot/ethereal/plugins/acn/acn.h,v
retrieving revision 1.1
diff -u -r1.1 acn.h
--- acn.h	14 Oct 2003 01:18:11 -0000	1.1
+++ acn.h	31 Oct 2003 11:28:38 -0000
@@ -8,11 +8,13 @@
 #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
@@ -68,6 +70,10 @@
 #define ACN_SDT_TYPE_SEQLOST		21
 #define ACN_SDT_TYPE_NAKPARAMS		22
 
+
+#define ACN_SDT_ADDR_NULL 0
+#define ACN_SDT_ADDR_IPV4 1
+#define ACN_SDT_ADDR_IPV6 2
 
 /* DMP */
 #define ACN_DMP_TYPE_UNKNOWN	0
Index: packet-acn.c
===================================================================
RCS file: /cvsroot/ethereal/plugins/acn/packet-acn.c,v
retrieving revision 1.1
diff -u -r1.1 packet-acn.c
--- packet-acn.c	14 Oct 2003 01:18:11 -0000	1.1
+++ packet-acn.c	31 Oct 2003 11:28:42 -0000
@@ -61,41 +61,49 @@
  */
 
 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" },
+	{ ACN_PDU_PROTO_UNKNOWN,	"Unknown"},
+	{ ACN_PDU_PROTO_SDT,		"SDT" },
+	{ ACN_PDU_PROTO_DMP,		"DMP" },
 	{ 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"},
+	{ ACN_SDT_TYPE_UNKNOWN,		"Unknown"},
+	{ ACN_SDT_TYPE_RELSEQDATA,	"RELSEQDATA"},
+	{ ACN_SDT_TYPE_UNRELSEQDATA,	"UNRELSEQDATA"},
+	{ ACN_SDT_TYPE_UNSEQDATA,	"UNSEQDATA"},
+	{ ACN_SDT_TYPE_JOIN,		"JOIN"},
+	{ ACN_SDT_TYPE_TRANSFER,	"TRANSFER"},
+	{ ACN_SDT_TYPE_JOINREF,		"JOINREF"},
+	{ ACN_SDT_TYPE_JOINACC,		"JOINACC"},
+	{ ACN_SDT_TYPE_LEAVEREQ,	"LEAVEREQ"},
+	{ ACN_SDT_TYPE_LEAVE,		"LEAVE"},
+	{ ACN_SDT_TYPE_LEAVING,		"LEAVING"},
+	{ ACN_SDT_TYPE_NAKUPON,		"NAKUPON"},
+	{ ACN_SDT_TYPE_NAKUPOFF,	"NAKUPOFF"},
+	{ ACN_SDT_TYPE_NAKDOWNON,	"NAKDOWNON"},
+	{ ACN_SDT_TYPE_NAKDOWNOFF,	"NAKDOWNOFF"},
+	{ ACN_SDT_TYPE_REPLOSTSEQON,	"REPLOSTSEQON"},
+	{ ACN_SDT_TYPE_REPLOSTSEQOFF,	"REPLOSTSEQOFF"},
+	{ ACN_SDT_TYPE_SESSEXPIRY,	"SESEXPIRY"},
+	{ ACN_SDT_TYPE_MAK,		"MAC"},
+	{ ACN_SDT_TYPE_ACK,		"ACK"},
+	{ ACN_SDT_TYPE_NAK,		"NAK"},
+	{ ACN_SDT_TYPE_SEQLOST,		"SEQLOST"},
+	{ ACN_SDT_TYPE_NAKPARAMS,	"NAKPARAMS"},
 	{ 0,				NULL }
 };
 
 static const value_string acn_dmp_type_vals[] = {
-	{ ACN_DMP_TYPE_UNKNOWN,		"ACN DMP Unknown Type"},
+	{ ACN_DMP_TYPE_UNKNOWN,		"Unknown"},
+	{ 0,				NULL }
+};
+
+
+static const value_string acn_sdt_address_type_vals[] = {
+	{ ACN_SDT_ADDR_NULL,		"Unspecified"},
+	{ ACN_SDT_ADDR_IPV4,		"IP version 4"},
+	{ ACN_SDT_ADDR_IPV6,		"IP version 6"},
 	{ 0,				NULL }
 };
 
@@ -144,7 +152,27 @@
 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;
-
+static int hf_acn_sdt_upstream_address_type = -1;
+static int hf_acn_sdt_upstream_ipv4_address = -1;
+static int hf_acn_sdt_upstream_ipv6_address = -1;
+static int hf_acn_sdt_upstream_port = -1;
+static int hf_acn_sdt_downstream_address_type = -1;
+static int hf_acn_sdt_downstream_ipv4_address = -1;
+static int hf_acn_sdt_downstream_ipv6_address = -1;
+static int hf_acn_sdt_downstream_port = -1;
+
+static int hf_acn_sdt_flags = -1;
+static int hf_acn_sdt_flag_u = -1;
+static int hf_acn_sdt_flag_d = -1;
+static int hf_acn_sdt_flag_l = -1;
+
+static int hf_acn_sdt_mid = -1;
+static int hf_acn_sdt_nak_holdoff_interval = -1;
+static int hf_acn_sdt_nak_modulus = -1;
+static int hf_acn_sdt_max_nak_wait_time = -1;
+static int hf_acn_sdt_leader_cid = -1;
+static int hf_acn_sdt_member_cid = -1;
+static int hf_acn_sdt_ack_threshold = -1;
 
 /*
  * Here are the global variables associated with the preferences
@@ -168,6 +196,8 @@
 	guint start_offset = offset;
 	acn_pdu_history_t hist;
 	guint size = 0;
+	guint flags;
+	guint type;
 
 	hist = *parent_hist;
 
@@ -222,9 +252,247 @@
 			break;
 			
 		case ACN_SDT_TYPE_JOIN:
+			proto_tree_add_item(tree, hf_acn_sdt_session_nr, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+
+			flags = tvb_get_guint8(tvb, offset);
+			flags_item = proto_tree_add_uint(tree, hf_acn_sdt_flags, tvb,
+							offset, 1, flags);
+
+			flags_tree=proto_item_add_subtree(flags_item, ett_acn);
+			proto_tree_add_item(flags_tree, hf_acn_sdt_flag_u, tvb, offset, 1, FALSE);
+			proto_tree_add_item(flags_tree, hf_acn_sdt_flag_d, tvb, offset, 1, FALSE);
+			proto_tree_add_item(flags_tree, hf_acn_sdt_flag_l, tvb, offset, 1, FALSE);
+			offset += 1;
+
+			type = tvb_get_guint8(tvb, offset);
+			proto_tree_add_item(tree, hf_acn_sdt_upstream_address_type, tvb,
+					    offset, 1, FALSE);
+			offset += 1;
+			
+			switch( type )
+			{
+				default:
+				case ACN_SDT_ADDR_NULL:
+					break;
+					
+				case ACN_SDT_ADDR_IPV4:
+					proto_tree_add_item(tree, hf_acn_sdt_upstream_ipv4_address, tvb,
+								offset, 4, FALSE);
+					offset += 4;
+				
+					proto_tree_add_item(tree, hf_acn_sdt_upstream_port, tvb,
+								offset, 2, FALSE);
+					offset += 2;
+				
+					break;
+					
+				case ACN_SDT_ADDR_IPV6:
+					proto_tree_add_item(tree, hf_acn_sdt_upstream_ipv6_address, tvb,
+								offset, 16, FALSE);
+					offset += 16;
+				
+					proto_tree_add_item(tree, hf_acn_sdt_upstream_port, tvb,
+								offset, 2, FALSE);
+					offset += 2;
+					break;		
+			}
+			
+			flags = tvb_get_guint8(tvb, offset);
+			flags_item = proto_tree_add_uint(tree, hf_acn_sdt_flags, tvb,
+							offset, 1, flags);
+
+			flags_tree=proto_item_add_subtree(flags_item, ett_acn);
+			offset += 1;
+
+			type = tvb_get_guint8(tvb, offset);
+			proto_tree_add_item(tree, hf_acn_sdt_downstream_address_type, tvb,
+					    offset, 1, FALSE);
+			offset += 1;
+			
+			switch( type )
+			{
+				default:
+				case ACN_SDT_ADDR_NULL:
+					break;
+					
+				case ACN_SDT_ADDR_IPV4:
+					proto_tree_add_item(tree, hf_acn_sdt_downstream_ipv4_address, tvb,
+								offset, 4, FALSE);
+					offset += 4;
+				
+					proto_tree_add_item(tree, hf_acn_sdt_downstream_port, tvb,
+								offset, 2, FALSE);
+					offset += 2;
+				
+					break;
+					
+				case ACN_SDT_ADDR_IPV6:
+					proto_tree_add_item(tree, hf_acn_sdt_downstream_ipv6_address, tvb,
+								offset, 16, FALSE);
+					offset += 16;
+				
+					proto_tree_add_item(tree, hf_acn_sdt_downstream_port, tvb,
+								offset, 2, FALSE);
+					offset += 2;
+					break;		
+			}
+			
+							
+			proto_tree_add_item(tree, hf_acn_sdt_mid, 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_session_exp_time, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+
+			proto_tree_add_item(tree, hf_acn_sdt_nak_holdoff_interval, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+			
+			proto_tree_add_item(tree, hf_acn_sdt_nak_modulus, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+			
+			proto_tree_add_item(tree, hf_acn_sdt_max_nak_wait_time, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+					
 			break;
 
 		case ACN_SDT_TYPE_TRANSFER:
+			proto_tree_add_item(tree, hf_acn_sdt_leader_cid, tvb,
+						offset, 16, FALSE);
+			offset += 16;
+
+			proto_tree_add_item(tree, hf_acn_sdt_session_nr, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+
+			flags = tvb_get_guint8(tvb, offset);
+			flags_item = proto_tree_add_uint(tree, hf_acn_sdt_flags, tvb,
+							offset, 1, flags);
+
+			flags_tree=proto_item_add_subtree(flags_item, ett_acn);
+			proto_tree_add_item(flags_tree, hf_acn_sdt_flag_u, tvb, offset, 1, FALSE);
+			proto_tree_add_item(flags_tree, hf_acn_sdt_flag_d, tvb, offset, 1, FALSE);
+			proto_tree_add_item(flags_tree, hf_acn_sdt_flag_l, tvb, offset, 1, FALSE);
+			offset += 1;
+
+			type = tvb_get_guint8(tvb, offset);
+			proto_tree_add_item(tree, hf_acn_sdt_upstream_address_type, tvb,
+					    offset, 1, FALSE);
+			offset += 1;
+			
+			switch( type )
+			{
+				default:
+				case ACN_SDT_ADDR_NULL:
+					break;
+					
+				case ACN_SDT_ADDR_IPV4:
+					proto_tree_add_item(tree, hf_acn_sdt_upstream_ipv4_address, tvb,
+								offset, 4, FALSE);
+					offset += 4;
+				
+					proto_tree_add_item(tree, hf_acn_sdt_upstream_port, tvb,
+								offset, 2, FALSE);
+					offset += 2;
+				
+					break;
+					
+				case ACN_SDT_ADDR_IPV6:
+					proto_tree_add_item(tree, hf_acn_sdt_upstream_ipv6_address, tvb,
+								offset, 16, FALSE);
+					offset += 16;
+				
+					proto_tree_add_item(tree, hf_acn_sdt_upstream_port, tvb,
+								offset, 2, FALSE);
+					offset += 2;
+					break;		
+			}
+			
+			flags = tvb_get_guint8(tvb, offset);
+			flags_item = proto_tree_add_uint(tree, hf_acn_sdt_flags, tvb,
+							offset, 1, flags);
+
+			flags_tree=proto_item_add_subtree(flags_item, ett_acn);
+			offset += 1;
+
+			type = tvb_get_guint8(tvb, offset);
+			proto_tree_add_item(tree, hf_acn_sdt_downstream_address_type, tvb,
+					    offset, 1, FALSE);
+			offset += 1;
+			
+			switch( type )
+			{
+				default:
+				case ACN_SDT_ADDR_NULL:
+					break;
+					
+				case ACN_SDT_ADDR_IPV4:
+					proto_tree_add_item(tree, hf_acn_sdt_downstream_ipv4_address, tvb,
+								offset, 4, FALSE);
+					offset += 4;
+				
+					proto_tree_add_item(tree, hf_acn_sdt_downstream_port, tvb,
+								offset, 2, FALSE);
+					offset += 2;
+				
+					break;
+					
+				case ACN_SDT_ADDR_IPV6:
+					proto_tree_add_item(tree, hf_acn_sdt_downstream_ipv6_address, tvb,
+								offset, 16, FALSE);
+					offset += 16;
+				
+					proto_tree_add_item(tree, hf_acn_sdt_downstream_port, tvb,
+								offset, 2, FALSE);
+					offset += 2;
+					break;		
+			}
+			
+							
+			proto_tree_add_item(tree, hf_acn_sdt_mid, 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_session_exp_time, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+
+			proto_tree_add_item(tree, hf_acn_sdt_nak_holdoff_interval, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+			
+			proto_tree_add_item(tree, hf_acn_sdt_nak_modulus, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+			
+			proto_tree_add_item(tree, hf_acn_sdt_max_nak_wait_time, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+			
+			// CID+MID list
+			
 			break;
 
 		case ACN_SDT_TYPE_JOINREF:
@@ -270,12 +538,24 @@
 			break;
 			
 		case ACN_SDT_TYPE_NAK:
+				
 			break;
 			
 		case ACN_SDT_TYPE_SEQLOST:
 			break;
 
 		case ACN_SDT_TYPE_NAKPARAMS:
+			proto_tree_add_item(tree, hf_acn_sdt_nak_holdoff_interval, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+			
+			proto_tree_add_item(tree, hf_acn_sdt_nak_modulus, tvb,
+						offset, 2, FALSE);
+			offset += 2;
+			
+			proto_tree_add_item(tree, hf_acn_sdt_max_nak_wait_time, tvb,
+						offset, 2, FALSE);
+			offset += 2;
 			break;
 
 		case ACN_SDT_TYPE_LEAVEREQ:
@@ -308,7 +588,7 @@
 	guint size,data_size;
 	guint8 flags;
 	guint src,des;
-	proto_tree *ti, *si, *flags_tree, *flags_item;
+	proto_tree *ti, *si, *flags_tree, *flags_item, *data_tree, *data_item;
 	guint start_offset = offset;
 	acn_pdu_history_t hist;
 	
@@ -355,7 +635,35 @@
 		offset += 4;
 	}
 
-	switch( hist.source_type )
+	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;	
+	} 
+
+
+	switch( flags & ACN_PDU_SRC )
 	{
 		case ACN_PDU_SRC_SAME:
 			break;
@@ -383,38 +691,12 @@
 	} 
 
 
-	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, FALSE );
 		offset += 2;
 	}
 
@@ -425,17 +707,17 @@
 		switch( hist.protocol ) { 
 			case ACN_PDU_PROTO_SDT:
 				proto_tree_add_item(si, hf_acn_pdu_type_sdt, tvb,
-						offset, 2, TRUE );
+						offset, 2, FALSE );
 				break;
 
 			case ACN_PDU_PROTO_DMP:
 				proto_tree_add_item(si, hf_acn_pdu_type_dmp, tvb,
-						offset, 2, TRUE );
+						offset, 2, FALSE );
 				break;
 				
 			default:
 				proto_tree_add_item(si, hf_acn_pdu_type, tvb,
-						offset, 2, TRUE );
+						offset, 2, FALSE );
 				break;	
 	
 	
@@ -445,24 +727,32 @@
 		offset += 2;
 	}
 
-	hist = *parent_hist;
+	//hist = *parent_hist;
 
 	if( flags & ACN_PDU_FLAG_Z )
 	{
 		data_size = size - (offset - start_offset);
+
+
+		data_item = proto_tree_add_item(si, hf_acn_pdu_data, tvb,
+						offset, data_size, FALSE);
+
+		data_tree=proto_item_add_subtree(data_item, ett_acn);
+
+
 		
 		switch( hist.protocol ) {
 			case ACN_PDU_PROTO_SDT:
-				dissect_sdt( tvb, offset, si, &hist, data_size);
+				dissect_sdt( tvb, offset, data_tree, &hist, data_size);
 				break;
 			
 			case ACN_PDU_PROTO_DMP:
-				dissect_dmp( tvb, offset, si, &hist, data_size);	
+				dissect_dmp( tvb, offset, data_tree, &hist, data_size);	
 				break;
 	
 			default:
-				proto_tree_add_item(si, hf_acn_pdu_data, tvb,
-							offset, data_size, TRUE );
+				//proto_tree_add_item(si, hf_acn_pdu_data, tvb,
+				//			offset, data_size, FALSE );
 				break;	
 		}
 
@@ -528,144 +818,239 @@
 		"ACN PDU", HFILL }},
 
 	{ &hf_acn_pdu_flags,
-	    { "PDU Flags","acn.pdu.flags",
+	    { "Flags","acn.pdu.flags",
 		FT_UINT8, BASE_HEX, NULL, 0x0,
-		"PDU flags", HFILL }},
+		"Flags", HFILL }},
 
 	{ &hf_acn_pdu_des,
-	    { "PDU des","acn.pdu.des",
+	    { "des","acn.pdu.des",
 		FT_UINT8, BASE_HEX, NULL, 0xC0,
-		"PDU des", HFILL }},
+		"des", HFILL }},
 
 	{ &hf_acn_pdu_src,
-	    { "PDU src","acn.pdu.src",
+	    { "src","acn.pdu.src",
 		FT_UINT8, BASE_HEX, NULL, 0x30,
-		"PDU src", HFILL }},
+		"src", HFILL }},
 
 	{ &hf_acn_pdu_flag_p,
-	    { "PDU Flag p","acn.pdu.flag_p",
+	    { "P","acn.pdu.flag_p",
 		FT_UINT8, BASE_HEX, NULL, 0x08,
-		"PDU flag p", HFILL }},
+		"P", HFILL }},
 
 	{ &hf_acn_pdu_flag_t,
-	    { "PDU Flag t","acn.pdu.flag_t",
+	    { "T","acn.pdu.flag_t",
 		FT_UINT8, BASE_HEX, NULL, 0x04,
-		"PDU flag t", HFILL }},
+		"T", HFILL }},
 
 	{ &hf_acn_pdu_flag_z,
-	    { "PDU Flag z","acn.pdu.flag_z",
+	    { "Z","acn.pdu.flag_z",
 		FT_UINT8, BASE_HEX, NULL, 0x01,
-		"PDU flag z", HFILL }},
+		"Z", HFILL }},
 
 	{ &hf_acn_pdu_flag_res,
-	    { "PDU Flag res","acn.pdu.flag_res",
+	    { "res","acn.pdu.flag_res",
 		FT_UINT8, BASE_HEX, NULL, 0x02,
-		"PDU flag res", HFILL }},
+		"res", HFILL }},
 
 	{ &hf_acn_pdu_length,
-	    { "PDU Lenght","acn.pdu.length",
+	    { "Lenght","acn.pdu.length",
 		FT_UINT8, BASE_DEC, NULL, 0x0,
-		"PDU Length", HFILL }},
+		"Length", HFILL }},
 
 	{ &hf_acn_pdu_ext_length_16,
-	    { "PDU Ext Length 16bit","acn.pdu.ext_length_16",
+	    { "Ext Length 16bit","acn.pdu.ext_length_16",
 		FT_UINT16, BASE_DEC, NULL, 0x0,
-		"PDU Ext Length 16bit", HFILL }},
+		"Ext Length 16bit", HFILL }},
 
 	{ &hf_acn_pdu_ext_length_32,
-	    { "PDU Ext Length 32bit","acn.pdu.ext_length_32",
+	    { "Ext Length 32bit","acn.pdu.ext_length_32",
 		FT_UINT32, BASE_DEC, NULL, 0x0,
-		"PDU Ext Length 32bit", HFILL }},
+		"Ext Length 32bit", HFILL }},
 
 	{ &hf_acn_pdu_source_ps,
-	    { "PDU Source PS","acn.pdu.source_ps",
+	    { "Source PS","acn.pdu.source_ps",
 		FT_UINT16, BASE_HEX, NULL, 0x0,
-		"PDU Source", HFILL }},
+		"Source PS", HFILL }},
 
 	{ &hf_acn_pdu_source_cid,
-	    { "PDU Source CID","acn.pdu.source_cid",
+	    { "Source CID","acn.pdu.source_cid",
 		FT_BYTES, BASE_HEX, NULL, 0x0,
-		"PDU Source CID", HFILL }},
+		"Source CID", HFILL }},
 
 	{ &hf_acn_pdu_destination_ps,
-	    { "PDU Destination PS","acn.pdu.destination_ps",
+	    { "Destination PS","acn.pdu.destination_ps",
 		FT_UINT16, BASE_HEX, NULL, 0x0,
-		"PDU Destination PS", HFILL }},
+		"Destination PS", HFILL }},
 
 	{ &hf_acn_pdu_destination_cid,
-	    { "PDU Destination CID","acn.pdu.destination_cid",
+	    { "Destination CID","acn.pdu.destination_cid",
 		FT_BYTES, BASE_HEX, NULL, 0x0,
-		"PDU Destination CID", HFILL }},
+		"Destination CID", HFILL }},
 
 	{ &hf_acn_pdu_protocol,
-	    { "PDU Protocol","acn.pdu.protocol",
+	    { "Protocol","acn.pdu.protocol",
 		FT_UINT16, BASE_HEX, VALS(acn_proto_vals), 0x0,
-		"PDU Protocol", HFILL }},
+		"Protocol", HFILL }},
 
 	{ &hf_acn_pdu_type,
-	    { "PDU Type","acn.pdu.type",
+	    { "Type","acn.pdu.type",
 		FT_UINT16, BASE_HEX, NULL, 0x0,
-		"PDU Type", HFILL }},
+		"Type", HFILL }},
 
 	{ &hf_acn_pdu_type_sdt,
-	    { "PDU Type SDT","acn.pdu.type_sdt",
+	    { "SDT Type","acn.pdu.type_sdt",
 		FT_UINT16, BASE_HEX, VALS(acn_sdt_type_vals), 0x0,
-		"PDU Type SDT", HFILL }},
+		"SDT Type", HFILL }},
 
 	{ &hf_acn_pdu_type_dmp,
-	    { "PDU Type DMP","acn.pdu.type_dmp",
+	    { "DMP Type","acn.pdu.type_dmp",
 		FT_UINT16, BASE_HEX, VALS(acn_dmp_type_vals), 0x0,
-		"PDU Type DMP", HFILL }},
+		"DMP Type", HFILL }},
 		
 	{ &hf_acn_pdu_data,
-	    { "PDU Data","acn.pdu.data",
-		FT_BYTES, BASE_HEX, NULL, 0x0,
-		"PDU Data", HFILL }},
+	    { "Data","acn.pdu.data",
+		FT_NONE, BASE_HEX, NULL, 0x0,
+		"Data", HFILL }},
 
 	{ &hf_acn_pdu_padding,
-	    { "PDU Padding","acn.pdu.padding",
+	    { "Padding","acn.pdu.padding",
 		FT_UINT8, BASE_DEC, NULL, 0x0,
-		"PDU Padding", HFILL }},
+		"Padding", HFILL }},
 
 	{ &hf_acn_sdt_session_nr,
-	    { "PDU SDT Session Nr","acn.sdt.session_nr",
+	    { "SDT Session Nr","acn.sdt.session_nr",
 		FT_UINT16, BASE_DEC, NULL, 0x0,
-		"PDU SDT Session Nr", HFILL }},
+		"SDT Session Nr", HFILL }},
 
 	{ &hf_acn_sdt_tot_seq_nr,
-	    { "PDU SDT Total Sequence Nr","acn.sdt.tot_seq_nr",
+	    { "SDT Total Sequence Nr","acn.sdt.tot_seq_nr",
 		FT_UINT32, BASE_DEC, NULL, 0x0,
-		"PDU SDT Total Sequence Nr", HFILL }},
+		"SDT Total Sequence Nr", HFILL }},
 
 	{ &hf_acn_sdt_rel_seq_nr,
-	    { "PDU SDT Rel Seq Nr","acn.sdt.rel_seq_nr",
+	    { "SDT Rel Seq Nr","acn.sdt.rel_seq_nr",
 		FT_UINT32, BASE_DEC, NULL, 0x0,
-		"PDU SDT Rel Sequence Nr", HFILL }},
+		"SDT Rel Sequence Nr", HFILL }},
 
 	{ &hf_acn_sdt_unavailable_wrappers,
-	    { "PDU SDT Unavailable Wrappers","acn.sdt.unavailable_wrappers",
+	    { "SDT Unavailable Wrappers","acn.sdt.unavailable_wrappers",
 		FT_UINT32, BASE_DEC, NULL, 0x0,
-		"PDU SDT Unavailable Wrappers", HFILL }},
+		"SDT Unavailable Wrappers", HFILL }},
 		
 	{ &hf_acn_sdt_refuse_code,
-	    { "PDU SDT Refuse code","acn.sdt.refuse_code",
+	    { "SDT Refuse code","acn.sdt.refuse_code",
 		FT_UINT16, BASE_DEC, NULL, 0x0,
-		"PDU SDT Refuse Code", HFILL }},
+		"SDT Refuse Code", HFILL }},
 
 	{ &hf_acn_sdt_last_rel_seq,
-	    { "PDU SDT Last reliable seq nr","acn.sdt.last_rel_seq",
+	    { "SDT Last reliable seq nr","acn.sdt.last_rel_seq",
 		FT_UINT32, BASE_DEC, NULL, 0x0,
-		"PDU SDT Last reliable seq nr", HFILL }},
+		"SDT Last reliable seq nr", HFILL }},
 
 	{ &hf_acn_sdt_last_rel_wrapper,
-	    { "PDU SDT Last reliable Wrapper","acn.sdt.last_rel_wrapper",
+	    { "SDT Last reliable Wrapper","acn.sdt.last_rel_wrapper",
 		FT_UINT32, BASE_DEC, NULL, 0x0,
-		"PDU SDT Last reliable Wrapper", HFILL }},
+		"SDT Last reliable Wrapper", HFILL }},
 
 	{ &hf_acn_sdt_session_exp_time,
-	    { "PDU SDT Session expire time","acn.sdt.session_exp_time",
+	    { "SDT Session expire time","acn.sdt.session_exp_time",
 		FT_UINT16, BASE_DEC, NULL, 0x0,
-		"PDU SDT Session expire time", HFILL }}
+		"SDT Session expire time", HFILL }},
+		
+	{ &hf_acn_sdt_flags,
+	    { "SDT Flags","acn.sdt.flags",
+		FT_UINT8, BASE_HEX, NULL, 0x0,
+		"SDT Flags", HFILL }},
+
+	{ &hf_acn_sdt_flag_u,
+	    { "U","acn.sdt.flag_u",
+		FT_UINT8, BASE_HEX, NULL, 0x80,
+		"U", HFILL }},
+
+	{ &hf_acn_sdt_flag_d,
+	    { "D","acn.sdt.flag_d",
+		FT_UINT8, BASE_HEX, NULL, 0x40,
+		"D", HFILL }},
+
+	{ &hf_acn_sdt_flag_l,
+	    { "L","acn.sdt.flag_l",
+		FT_UINT8, BASE_HEX, NULL, 0x20,
+		"L", HFILL }},
+
+	{ &hf_acn_sdt_upstream_address_type,
+	    { "SDT Upstream address type","acn.sdt.upstream_address_type",
+		FT_UINT8, BASE_HEX, VALS(acn_sdt_address_type_vals), 0x0,
+		"SDT Upstream address type", HFILL }},
+
+	{ &hf_acn_sdt_downstream_address_type,
+	    { "SDT Downstream address type","acn.sdt.downstream_address_type",
+		FT_UINT8, BASE_HEX, VALS(acn_sdt_address_type_vals), 0x0,
+		"SDT Downstream address type", HFILL }},
+
+	{ &hf_acn_sdt_upstream_port,
+	    { "SDT Upstream Port","acn.sdt.upstream_port",
+		FT_UINT16, BASE_DEC, NULL, 0x0,
+		"SDT Upstream Port", HFILL }},
+
+	{ &hf_acn_sdt_downstream_port,
+	    { "SDT Donwstream Port","acn.sdt.downstream_port",
+		FT_UINT16, BASE_DEC, NULL, 0x0,
+		"SDT Downstream Port", HFILL }},
+
+	{ &hf_acn_sdt_downstream_ipv4_address,
+	    { "SDT Donwstream IPv4 Address","acn.sdt.downstream_ipv4_address",
+		FT_IPv4, BASE_DEC, NULL, 0x0,
+		"SDT Downstream IPv4 Address", HFILL }},
+
+	{ &hf_acn_sdt_upstream_ipv4_address,
+	    { "SDT Upstream IPv4 Address","acn.sdt.upstream_ipv4_address",
+		FT_IPv4, BASE_DEC, NULL, 0x0,
+		"SDT Upstream IPv4 Address", HFILL }},
+
+	{ &hf_acn_sdt_downstream_ipv6_address,
+	    { "SDT Donwstream IPv6 Address","acn.sdt.downstream_ipv6_address",
+		FT_IPv6, BASE_DEC, NULL, 0x0,
+		"SDT Downstream IPv6 Address", HFILL }},
+
+	{ &hf_acn_sdt_upstream_ipv6_address,
+	    { "SDT Upstream IPv6 Address","acn.sdt.upstream_ipv6_address",
+		FT_IPv6, BASE_DEC, NULL, 0x0,
+		"SDT Upstream IPv6 Address", HFILL }},
+
+	{ &hf_acn_sdt_mid,
+	    { "SDT Member ID","acn.sdt.mid",
+		FT_UINT16, BASE_DEC, NULL, 0x0,
+		"SDT Member ID", HFILL }},
+
+	{ &hf_acn_sdt_nak_holdoff_interval,
+	    { "SDT NAK holdoff interval","acn.sdt.nak_holdoff_interval",
+		FT_UINT16, BASE_DEC, NULL, 0x0,
+		"SDT NAK holdoff interval", HFILL }},
+
+	{ &hf_acn_sdt_nak_modulus,
+	    { "SDT NAK modulus","acn.sdt.nak_modulus",
+		FT_UINT16, BASE_DEC, NULL, 0x0,
+		"SDT NAK modulus", HFILL }},
+
+	{ &hf_acn_sdt_max_nak_wait_time,
+	    { "SDT Max. NAK wait time","acn.sdt.max_nak_wait_time",
+		FT_UINT16, BASE_DEC, NULL, 0x0,
+		"SDT Max. NAK wait time ", HFILL }},
+
+	{ &hf_acn_sdt_ack_threshold,
+	    { "SDT ACK threshold","acn.sdt.ack_threshold",
+		FT_UINT16, BASE_DEC, NULL, 0x0,
+		"SDT ACK threshold", HFILL }},
+
+	{ &hf_acn_sdt_member_cid,
+	    { "SDT Memebr CID","acn.sdt.member_cid",
+		FT_BYTES, BASE_HEX, NULL, 0x0,
+		"SDT Member CID", HFILL }},
+
+	{ &hf_acn_sdt_leader_cid,
+	    { "SDT Leader CID","acn.sdt.leader_cid",
+		FT_BYTES, BASE_HEX, NULL, 0x0,
+		"SDT Leader CID", HFILL }}
 
   };