ANNOUNCEMENT: Live Wireshark University & Allegro Packets online APAC Wireshark Training Session
April 17th, 2024 | 14:30-16:00 SGT (UTC+8) | Online

Wireshark-dev: [Wireshark-dev] OpcUa update

From: Gerhard Gappmeier <gerhard.gappmeier@xxxxxxxxxxx>
Date: Tue, 15 May 2007 11:13:22 +0200
Hi,

I removed the unused variables and renamed the files with "ua_" prefix
to "opcua_" to be consistent.
I hope renaming works with the patch file...

regards,
Gerhard.

Index: Makefile.common
===================================================================
--- Makefile.common	(revision 21777)
+++ Makefile.common	(working copy)
@@ -30,9 +30,9 @@
 # the dissector sources (without any helpers)
 DISSECTOR_SRC = \
 	opcua.c \
-	ua_transport_layer.c \
-	ua_security_layer.c \
-	ua_application_layer.c \
+	opcua_transport_layer.c \
+	opcua_security_layer.c \
+	opcua_application_layer.c \
 	opcua_serviceparser.c \
 	opcua_complextypeparser.c \
 	opcua_enumparser.c \
Index: opcua.c
===================================================================
--- opcua.c	(revision 21777)
+++ opcua.c	(working copy)
@@ -30,9 +30,9 @@
 #include <epan/emem.h>
 #include <epan/dissectors/packet-tcp.h>
 #include <epan/prefs.h>
-#include "ua_transport_layer.h"
-#include "ua_security_layer.h"
-#include "ua_application_layer.h"
+#include "opcua_transport_layer.h"
+#include "opcua_security_layer.h"
+#include "opcua_application_layer.h"
 #include "opcua_complextypeparser.h"
 #include "opcua_serviceparser.h"
 #include "opcua_enumparser.h"
Index: opcua_application_layer.c
===================================================================
--- opcua_application_layer.c	(revision 21777)
+++ opcua_application_layer.c	(working copy)
@@ -75,7 +75,7 @@
 int parseServiceNodeId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
 {
     gint    iOffset = *pOffset;
-    guint8  EncodingMask, NSId = 0;
+    guint8  EncodingMask;
     guint32 Numeric = 0;
 
 	szFieldName = 0; /* avoid warning */
@@ -92,7 +92,6 @@
         iOffset+=1;
         break;
     case 0x01: /* four byte node id */
-        NSId = tvb_get_guint8(tvb, iOffset);
         proto_tree_add_item(tree, hf_opcua_app_nsid, tvb, iOffset, 1, TRUE);
         iOffset+=1;
         Numeric = tvb_get_letohs(tvb, iOffset);
@@ -100,7 +99,6 @@
         iOffset+=2;
         break;
     case 0x02: /* numeric, that does not fit into four bytes */
-        NSId = tvb_get_letohl(tvb, iOffset);
         proto_tree_add_item(tree, hf_opcua_app_nsid, tvb, iOffset, 4, TRUE);
         iOffset+=4;
         Numeric = tvb_get_letohl(tvb, iOffset);
Index: opcua_security_layer.c
===================================================================
--- opcua_security_layer.c	(revision 21777)
+++ opcua_security_layer.c	(working copy)
@@ -27,7 +27,7 @@
 
 #include <gmodule.h>
 #include <epan/packet.h>
-#include "ua_application_layer.h"
+#include "opcua_application_layer.h"
 #include "opcua_simpletypes.h"
 
 /** NodeClass enum table */
Index: opcua_simpletypes.c
===================================================================
--- opcua_simpletypes.c	(revision 21777)
+++ opcua_simpletypes.c	(working copy)
@@ -693,7 +693,6 @@
     proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_nodeid);
     gint    iOffset = *pOffset;
     guint8  EncodingMask;
-    guint32 Numeric = 0, NSId = 0;
 
     EncodingMask = tvb_get_guint8(tvb, iOffset);
     proto_tree_add_item(subtree, hf_opcua_nodeid_encodingmask, tvb, iOffset, 1, TRUE);
@@ -702,28 +701,22 @@
     switch(EncodingMask)
     {
     case 0x00: /* two byte node id */
-        Numeric = tvb_get_guint8(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_numeric, tvb, iOffset, 1, TRUE);
         iOffset+=1;
         break;
     case 0x01: /* four byte node id */
-        NSId = tvb_get_guint8(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_nsid, tvb, iOffset, 1, TRUE);
         iOffset+=1;
-        Numeric = tvb_get_letohs(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_numeric, tvb, iOffset, 2, TRUE);
         iOffset+=2;
         break;
     case 0x02: /* numeric, that does not fit into four bytes */
-        NSId = tvb_get_letohl(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_nsid, tvb, iOffset, 4, TRUE);
         iOffset+=4;
-        Numeric = tvb_get_letohl(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_numeric, tvb, iOffset, 4, TRUE);
         iOffset+=4;
         break;
     case 0x03: /* string */
-        NSId = tvb_get_letohl(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_nsid, tvb, iOffset, 4, TRUE);
         iOffset+=4;
         parseString(subtree, tvb, &iOffset, hf_opcua_String);
@@ -735,7 +728,6 @@
         parseGuid(subtree, tvb, &iOffset, hf_opcua_Guid);
         break;
     case 0x06: /* byte string */
-        NSId = tvb_get_letohl(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_nsid, tvb, iOffset, 4, TRUE);
         iOffset+=4;
         parseByteString(subtree, tvb, &iOffset, hf_opcua_ByteString);
@@ -781,8 +773,7 @@
     proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s: ExpandedNodeId", szFieldName);
     proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_nodeid);
     gint    iOffset = *pOffset;
-    guint8  EncodingMask, NSId = 0;
-    guint32 Numeric = 0;
+    guint8  EncodingMask;
 
     EncodingMask = tvb_get_guint8(tvb, iOffset);
     proto_tree_add_item(subtree, hf_opcua_nodeid_encodingmask, tvb, iOffset, 1, TRUE);
@@ -791,28 +782,22 @@
     switch(EncodingMask)
     {
     case 0x00: /* two byte node id */
-        Numeric = tvb_get_guint8(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_numeric, tvb, iOffset, 1, TRUE);
         iOffset+=1;
         break;
     case 0x01: /* four byte node id */
-        NSId = tvb_get_guint8(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_nsid, tvb, iOffset, 1, TRUE);
         iOffset+=1;
-        Numeric = tvb_get_letohs(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_numeric, tvb, iOffset, 2, TRUE);
         iOffset+=2;
         break;
     case 0x02: /* numeric, that does not fit into four bytes */
-        NSId = tvb_get_letohl(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_nsid, tvb, iOffset, 4, TRUE);
         iOffset+=4;
-        Numeric = tvb_get_letohl(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_numeric, tvb, iOffset, 4, TRUE);
         iOffset+=4;
         break;
     case 0x03: /* string */
-        NSId = tvb_get_letohl(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_nsid, tvb, iOffset, 4, TRUE);
         iOffset+=4;
         parseString(subtree, tvb, &iOffset, hf_opcua_String);
@@ -824,7 +809,6 @@
         parseGuid(subtree, tvb, &iOffset, hf_opcua_Guid);
         break;
     case 0x06: /* byte string */
-        NSId = tvb_get_letohl(tvb, iOffset);
         proto_tree_add_item(subtree, hf_opcua_nodeid_nsid, tvb, iOffset, 4, TRUE);
         iOffset+=4;
         parseByteString(subtree, tvb, &iOffset, hf_opcua_ByteString);
Index: opcua_transport_layer.c
===================================================================
--- opcua_transport_layer.c	(revision 21777)
+++ opcua_transport_layer.c	(working copy)
@@ -27,8 +27,8 @@
 
 #include <gmodule.h>
 #include <epan/packet.h>
-#include "ua_security_layer.h"
-#include "ua_application_layer.h"
+#include "opcua_security_layer.h"
+#include "opcua_application_layer.h"
 #include "opcua_simpletypes.h"
 #include <string.h>
 #include <epan/emem.h>
Index: ua_application_layer.c
===================================================================
--- ua_application_layer.c	(revision 21777)
+++ ua_application_layer.c	(working copy)
@@ -1,122 +0,0 @@
-/******************************************************************************
-** $Id: ua_application_layer.c,v 1.3 2007/02/08 11:31:56 gergap Exp $
-**
-** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved.
-** Web: http://www.ascolab.com
-** 
-** 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 file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-** 
-** Project: OpcUa Wireshark Plugin
-**
-** Description: OpcUa Application Layer Decoder.
-**
-** Author: Gerhard Gappmeier <gerhard.gappmeier@xxxxxxxxxxx>
-** Last change by: $Author: gergap $
-**
-******************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <gmodule.h>
-#include <epan/packet.h>
-#include "opcua_simpletypes.h"
-
-/** NodeId encoding mask table */
-static const value_string g_nodeidmasks[] = {
-    { 0, "Two byte encoded Numeric" },
-    { 1, "Four byte encoded Numeric" },
-    { 2, "Numeric of arbitrary length" },
-    { 3, "String" },
-    { 4, "URI" },
-    { 5, "GUID" },
-    { 6, "ByteString" },
-    { 0x80, "UriMask" },
-    { 0, NULL }
-};
-
-/** Service type table */
-extern const value_string g_requesttypes[];
-
-static int hf_opcua_nodeid_encodingmask = -1;
-static int hf_opcua_app_nsid = -1;
-static int hf_opcua_app_numeric = -1;
-
-/** header field definitions */
-static hf_register_info hf[] =
-{
-    { &hf_opcua_nodeid_encodingmask,
-    {  "NodeId EncodingMask",        "application.nodeid.encodingmask", FT_UINT8,   BASE_HEX,  VALS(g_nodeidmasks), 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_app_nsid,
-    {  "NodeId EncodingMask",        "application.nodeid.nsid",         FT_UINT8,   BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_app_numeric,
-    {  "NodeId Identifier Numeric",  "application.nodeid.numeric",      FT_UINT32,  BASE_DEC,  VALS(g_requesttypes), 0x0,    "",    HFILL }
-    }
-};
-
-/** Register application layer types. */
-void registerApplicationLayerTypes(int proto)
-{
-    proto_register_field_array(proto, hf, array_length(hf));
-}
-
-/** Parses an OpcUa Service NodeId and returns the service type.
- * In this cases the NodeId is always from type numeric and NSId = 0.
- */
-int parseServiceNodeId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
-{
-    gint    iOffset = *pOffset;
-    guint8  EncodingMask, NSId = 0;
-    guint32 Numeric = 0;
-
-	szFieldName = 0; /* avoid warning */
-
-    EncodingMask = tvb_get_guint8(tvb, iOffset);
-    proto_tree_add_item(tree, hf_opcua_nodeid_encodingmask, tvb, iOffset, 1, TRUE);
-    iOffset++;
-
-    switch(EncodingMask)
-    {
-    case 0x00: /* two byte node id */
-        Numeric = tvb_get_guint8(tvb, iOffset);
-        proto_tree_add_item(tree, hf_opcua_app_numeric, tvb, iOffset, 1, TRUE);
-        iOffset+=1;
-        break;
-    case 0x01: /* four byte node id */
-        NSId = tvb_get_guint8(tvb, iOffset);
-        proto_tree_add_item(tree, hf_opcua_app_nsid, tvb, iOffset, 1, TRUE);
-        iOffset+=1;
-        Numeric = tvb_get_letohs(tvb, iOffset);
-        proto_tree_add_item(tree, hf_opcua_app_numeric, tvb, iOffset, 2, TRUE);
-        iOffset+=2;
-        break;
-    case 0x02: /* numeric, that does not fit into four bytes */
-        NSId = tvb_get_letohl(tvb, iOffset);
-        proto_tree_add_item(tree, hf_opcua_app_nsid, tvb, iOffset, 4, TRUE);
-        iOffset+=4;
-        Numeric = tvb_get_letohl(tvb, iOffset);
-        proto_tree_add_item(tree, hf_opcua_app_numeric, tvb, iOffset, 4, TRUE);
-        iOffset+=4;
-        break;
-    case 0x03: /* string */
-    case 0x04: /* uri */
-    case 0x05: /* guid */
-    case 0x06: /* byte string */
-        /* NOT USED */
-        break;
-    };
-
-    *pOffset = iOffset;
-
-    return Numeric;
-}
-
Index: ua_application_layer.h
===================================================================
--- ua_application_layer.h	(revision 21777)
+++ ua_application_layer.h	(working copy)
@@ -1,27 +0,0 @@
-/******************************************************************************
-** $Id: ua_application_layer.h,v 1.3 2007/02/08 12:19:58 gergap Exp $
-**
-** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved.
-** Web: http://www.ascolab.com
-** 
-** 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 file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-** 
-** Project: OpcUa Wireshark Plugin
-**
-** Description: OpcUa Application Layer Decoder.
-**
-** Author: Gerhard Gappmeier <gerhard.gappmeier@xxxxxxxxxxx>
-** Last change by: $Author: gergap $
-**
-******************************************************************************/
-
-void registerApplicationLayerTypes(int proto);
-
-/* Ua type parsers */
-int parseServiceNodeId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName);
Index: ua_security_layer.c
===================================================================
--- ua_security_layer.c	(revision 21777)
+++ ua_security_layer.c	(working copy)
@@ -1,99 +0,0 @@
-/******************************************************************************
-** $Id: ua_security_layer.c,v 1.2 2007/02/08 12:16:59 gergap Exp $
-**
-** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved.
-** Web: http://www.ascolab.com
-** 
-** 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 file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-** 
-** Project: OpcUa Wireshark Plugin
-**
-** Description: OpcUa Security Layer Decoder.
-**
-** Author: Gerhard Gappmeier <gerhard.gappmeier@xxxxxxxxxxx>
-** Last change by: $Author: gergap $
-**
-******************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <gmodule.h>
-#include <epan/packet.h>
-#include "ua_application_layer.h"
-#include "opcua_simpletypes.h"
-
-/** NodeClass enum table */
-static const value_string g_SecSigTable[] = {
-  { 0, "GetSecurityPolcies" },
-  { 1, "OpenSecureChannel" },
-  { 2, "CloseSecureChannel" },
-  { 3, "Message" },
-  { 0, NULL }
-};
-static int hf_opcua_SecuritySigEnum = -1;
-
-static int hf_opcua_security_sig = -1;
-static int hf_opcua_security_policy = -1;
-static int hf_opcua_security_channel = -1;
-static int hf_opcua_security_token = -1;
-
-static hf_register_info hf[] =
-{
-    { &hf_opcua_security_sig,
-    {  "Security Signature",       "security.sig",     FT_UINT16, BASE_HEX,  VALS(g_SecSigTable), 0x0, "", HFILL }
-    },
-    { &hf_opcua_security_policy,
-    {  "Security Policy",          "security.policy",  FT_STRING, BASE_NONE,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_security_channel,
-    {  "Secure Channel Id",        "security.channel", FT_GUID,   BASE_NONE,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_security_token,
-    {  "Security Token Id",        "security.token",   FT_STRING, BASE_NONE,  NULL, 0x0,    "",    HFILL }
-    }
-};
-
-/** Register security layer types. */
-void registerSecurityLayerTypes(int proto)
-{
-    proto_register_field_array(proto, hf, array_length(hf));
-}
-
-
-/* Security Layer: message parsers
- * Only works for Security Policy "NoSecurity" at the moment.
- */
-void parseSecurityLayer(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
-{
-    guint16 Sig;
-    
-    Sig = tvb_get_letohs(tvb, pOffset[0]);
-    proto_tree_add_item(tree, hf_opcua_security_sig, tvb, *pOffset, 2, TRUE); *pOffset+=2;
-
-    switch (Sig)
-    {
-    case 0: /* GetSecurityPolicies */
-        break;
-    case 1: /* OpenSecureChannel */
-        parseGuid(tree, tvb,   pOffset, hf_opcua_security_channel);
-        parseString(tree, tvb, pOffset, hf_opcua_security_policy);
-        break;
-    case 2: /* CloseSecureChannel */
-        parseGuid(tree, tvb,   pOffset, hf_opcua_security_channel);
-        parseString(tree, tvb, pOffset, hf_opcua_security_token);
-        break;
-    case 3: /* Other Services Messages */
-        parseGuid(tree, tvb,   pOffset, hf_opcua_security_channel);
-        parseString(tree, tvb, pOffset, hf_opcua_security_token);
-        break;
-    }
-}
-
Index: ua_security_layer.h
===================================================================
--- ua_security_layer.h	(revision 21777)
+++ ua_security_layer.h	(working copy)
@@ -1,25 +0,0 @@
-/******************************************************************************
-** $Id: ua_security_layer.h,v 1.2 2007/02/08 12:19:58 gergap Exp $
-**
-** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved.
-** Web: http://www.ascolab.com
-** 
-** 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 file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-** 
-** Project: OpcUa Wireshark Plugin
-**
-** Description: OpcUa Security Layer Decoder.
-**
-** Author: Gerhard Gappmeier <gerhard.gappmeier@xxxxxxxxxxx>
-** Last change by: $Author: gergap $
-**
-******************************************************************************/
-
-void registerSecurityLayerTypes(int proto);
-void parseSecurityLayer(proto_tree *tree, tvbuff_t *tvb, gint *pOffset);
Index: ua_transport_layer.c
===================================================================
--- ua_transport_layer.c	(revision 21777)
+++ ua_transport_layer.c	(working copy)
@@ -1,211 +0,0 @@
-/******************************************************************************
-** $Id: ua_transport_layer.c,v 1.3 2007/02/08 12:17:50 gergap Exp $
-**
-** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved.
-** Web: http://www.ascolab.com
-** 
-** 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 file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-** 
-** Project: OpcUa Wireshark Plugin
-**
-** Description: OpcUa Transport Layer Decoder.
-**
-** Author: Gerhard Gappmeier <gerhard.gappmeier@xxxxxxxxxxx>
-** Last change by: $Author: gergap $
-**
-******************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <gmodule.h>
-#include <epan/packet.h>
-#include "ua_security_layer.h"
-#include "ua_application_layer.h"
-#include "opcua_simpletypes.h"
-#include <string.h>
-#include <epan/emem.h>
-
-void dispatchService(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int ServiceId);
-
-static int hf_opcua_transport_sig = -1;
-static int hf_opcua_transport_len = -1;
-static int hf_opcua_transport_ver = -1;
-static int hf_opcua_transport_cid = -1;
-static int hf_opcua_transport_lifetime = -1;
-static int hf_opcua_transport_sbl = -1;
-static int hf_opcua_transport_rbl = -1;
-static int hf_opcua_transport_endpoint = -1;
-static int hf_opcua_transport_rlifetime = -1;
-static int hf_opcua_transport_rsbl = -1;
-static int hf_opcua_transport_rrbl = -1;
-static int hf_opcua_transport_altendpoint = -1;
-static int hf_opcua_transport_rqid = -1;
-static int hf_opcua_transport_status = -1;
-extern gint ett_opcua_nodeid;
-
-static hf_register_info hf[] =
-{
-    { &hf_opcua_transport_sig,
-    /* full name  ,           abbreviation  ,       type     , display  , strings, bitmask, blurb, id, parent, ref_count, bitshift */
-    {  "Signature",           "transport.sig",      FT_STRING, BASE_NONE, NULL,    0x0,     "",    HFILL }
-    },
-    { &hf_opcua_transport_len,
-    {  "Message Length",      "transport.len",      FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_ver,
-    {  "Version",             "transport.ver",      FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_cid,
-    {  "ConnectionId",        "transport.cid",      FT_GUID,   BASE_NONE, NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_lifetime,
-    {  "Lifetime",            "transport.lifetime", FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_sbl,
-    {  "SendBufferLength",    "transport.sbl",      FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_rbl,
-    {  "ReceiveBufferLength", "transport.rbl",      FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_endpoint,
-    {  "EndPoint",            "transport.endpoint", FT_STRING, BASE_NONE, NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_rlifetime,
-    {  "Revised Lifetime",    "transport.rlifetime", FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_rsbl,
-    {  "Revised SendBufferLength", "transport.rsbl", FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_rrbl,
-    {  "Revised ReceiveBufferLength", "transport.rrbl", FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_altendpoint,
-    {  "Alternate EndPoint",  "transport.altendpoint", FT_STRING, BASE_NONE, NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_rqid,
-    {  "RequestId",           "transport.rqid",     FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    },
-    { &hf_opcua_transport_status,
-    {  "StatusCode",          "transport.status",   FT_UINT32, BASE_DEC,  NULL, 0x0,    "",    HFILL }
-    }
-};
-
-/** subtree types */
-extern gint ett_opcua_extensionobject;
-
-/** Register transport layer types. */
-void registerTransportLayerTypes(int proto)
-{
-    proto_register_field_array(proto, hf, array_length(hf));
-}
-
-/** helper functions for adding strings,
-  * that are not zero terminated.
-  */
-void addString(proto_tree *tree,  
-               int  hfindex,  
-               tvbuff_t *tvb,  
-               gint  start,  
-               gint  length,  
-               const char *value)
-{
-    char *szValue = ep_alloc(256);
-
-    if (szValue)
-    {
-        if (length > 255) length = 255;
-        /* copy non null terminated string data */
-        strncpy(szValue, value, length);
-        /* set null terminator */
-        szValue[length] = 0;
-
-        proto_tree_add_string(tree, hfindex, tvb, start, length, szValue);
-    }
-}
-
-/* Transport Layer: message parsers */
-void parseHello(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
-{
-    addString(tree, hf_opcua_transport_sig, tvb, *pOffset, 4, tvb->real_data); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_len, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_ver, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_cid, tvb, *pOffset, 16, TRUE); *pOffset+=16;
-    proto_tree_add_item(tree, hf_opcua_transport_lifetime, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_sbl, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_rbl, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    parseString(tree, tvb, pOffset, hf_opcua_transport_endpoint);
-}
-
-void parseAcknowledge(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
-{
-    addString(tree, hf_opcua_transport_sig, tvb, *pOffset, 4, tvb->real_data); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_len, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_cid, tvb, *pOffset, 16, TRUE); *pOffset+=16;
-    proto_tree_add_item(tree, hf_opcua_transport_rlifetime, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_rsbl, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_rrbl, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    parseString(tree, tvb, pOffset, hf_opcua_transport_altendpoint);
-}
-
-void parseDisconnect(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
-{
-    addString(tree, hf_opcua_transport_sig, tvb, *pOffset, 4, tvb->real_data); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_len, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_cid, tvb, *pOffset, 16, TRUE); *pOffset+=16;
-}
-
-void parseData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
-{
-    proto_item *ti;
-    proto_tree *encobj_tree;
-    proto_tree *nodeid_tree;
-    int ServiceId = 0;
-
-    addString(tree, hf_opcua_transport_sig, tvb, *pOffset, 4, tvb->real_data); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_len, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_cid, tvb, *pOffset, 16, TRUE); *pOffset+=16;
-    proto_tree_add_item(tree, hf_opcua_transport_rqid, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-
-    /* message data contains the security layer */
-    parseSecurityLayer(tree, tvb, pOffset);
-
-    /* AT THE MOMENT NO SECURITY IS IMPLEMENTED IN UA.
-     * WE CAN JUST JUMP INTO THE APPLICATION LAYER DATA.
-     * THIS WILL CHAHNGE IN THE FUTURE. */
-
-    /* add encodeable object subtree */
-    ti = proto_tree_add_text(tree, tvb, 0, -1, "Message : Encodeable Object");
-    encobj_tree = proto_item_add_subtree(ti, ett_opcua_extensionobject);
-
-    /* add nodeid subtree */
-    ti = proto_tree_add_text(encobj_tree, tvb, 0, -1, "TypeId : ExpandedNodeId");
-    nodeid_tree = proto_item_add_subtree(ti, ett_opcua_nodeid);
-    ServiceId = parseServiceNodeId(nodeid_tree, tvb, pOffset, "NodeId") - 1;
-
-    dispatchService(encobj_tree, tvb, pOffset, ServiceId);
-}
-
-void parseAbort(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
-{
-    addString(tree, hf_opcua_transport_sig, tvb, *pOffset, 4, tvb->real_data); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_len, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_cid, tvb, *pOffset, 16, TRUE); *pOffset+=16;
-    proto_tree_add_item(tree, hf_opcua_transport_rqid, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-}
-
-void parseError(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
-{
-    addString(tree, hf_opcua_transport_sig, tvb, *pOffset, 4, tvb->real_data); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_len, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_cid, tvb, *pOffset, 16, TRUE); *pOffset+=16;
-    proto_tree_add_item(tree, hf_opcua_transport_rqid, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-    proto_tree_add_item(tree, hf_opcua_transport_status, tvb, *pOffset, 4, TRUE); *pOffset+=4;
-}
Index: ua_transport_layer.h
===================================================================
--- ua_transport_layer.h	(revision 21777)
+++ ua_transport_layer.h	(working copy)
@@ -1,32 +0,0 @@
-/******************************************************************************
-** $Id: ua_transport_layer.h,v 1.3 2007/02/08 12:19:58 gergap Exp $
-**
-** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved.
-** Web: http://www.ascolab.com
-** 
-** 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 file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-** 
-** Project: OpcUa Wireshark Plugin
-**
-** Description: OpcUa Transport Layer Decoder.
-**
-** Author: Gerhard Gappmeier <gerhard.gappmeier@xxxxxxxxxxx>
-** Last change by: $Author: gergap $
-**
-******************************************************************************/
-
-/* Transport Layer: message parsers */
-void parseHello(proto_tree *tree, tvbuff_t *tvb, gint *pOffset);
-void parseAcknowledge(proto_tree *tree, tvbuff_t *tvb, gint *pOffset);
-void parseDisconnect(proto_tree *tree, tvbuff_t *tvb, gint *pOffset);
-void parseData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset);
-void parseAbort(proto_tree *tree, tvbuff_t *tvb, gint *pOffset);
-void parseError(proto_tree *tree, tvbuff_t *tvb, gint *pOffset);
-void registerTransportLayerTypes(int proto);
-