all:
authorBill Meier <wmeier@newsguy.com>
Wed, 16 May 2012 01:41:03 +0000 (01:41 -0000)
committerBill Meier <wmeier@newsguy.com>
Wed, 16 May 2012 01:41:03 +0000 (01:41 -0000)
     Merge .h files into .c files since .h files unused elsewhere;
     Do whitespace, indentation & formatting cleanup.
packet-acn.c:
     Fix 2 minor bugs wherein subtree not displayed in packet-details
     because tree variable used in proto_tree_add_text() always NULL.

svn path=/trunk/; revision=42647

epan/dissectors/Makefile.common
epan/dissectors/packet-acn.c
epan/dissectors/packet-acn.h [deleted file]
epan/dissectors/packet-afs.c
epan/dissectors/packet-afs.h [deleted file]
epan/dissectors/packet-assa_r3.c
epan/dissectors/packet-assa_r3_public.h [deleted file]
epan/dissectors/packet-bgp.c
epan/dissectors/packet-bgp.h [deleted file]
epan/dissectors/packet-bootparams.c
epan/dissectors/packet-bootparams.h [deleted file]

index 9df8ee815306729860f583ef6164bd990edd6990..1669c4d3be72a55b585b2031466ae89017fd860e 100644 (file)
@@ -1150,12 +1150,10 @@ DIRTY_DISSECTOR_SRC = \
 #
 DISSECTOR_INCLUDES =   \
        $(PIDL_DISSECTOR_INCLUDES)      \
-       packet-acn.h    \
        packet-acp133.h \
        packet-acse.h   \
        packet-actrace.h        \
        packet-afp.h    \
-       packet-afs.h    \
        packet-aim.h    \
        packet-alcap.h  \
        packet-ansi_a.h \
@@ -1164,14 +1162,11 @@ DISSECTOR_INCLUDES =    \
        packet-ap1394.h \
        packet-arcnet.h \
        packet-arp.h    \
-       packet-assa_r3_public.h \
        packet-atalk.h  \
        packet-atm.h    \
        packet-bacapp.h \
        packet-ber.h    \
        packet-bfd.h    \
-       packet-bgp.h    \
-       packet-bootparams.h     \
        packet-bssap.h  \
        packet-bssgp.h  \
        packet-bthci_acl.h      \
index ed07d842eca76b0319ad10351974b10f408532bc..5fc9c70efcd48a5ca653f8e0a73270d35aec995b 100644 (file)
 #include <epan/prefs.h>
 #include <epan/ipv6-utils.h>
 
-#include "packet-acn.h"
+/* pdu flags */
+#define ACN_PDU_FLAG_L     0x80
+#define ACN_PDU_FLAG_V     0x40
+#define ACN_PDU_FLAG_H     0x20
+#define ACN_PDU_FLAG_D     0x10
+
+#define ACN_DMX_OPTION_P   0x80
+#define ACN_DMX_OPTION_S   0x40
+
+#define ACN_DMP_ADT_FLAG_V 0x80 /* V = Specifies whether address is a virtual address or not. */
+#define ACN_DMP_ADT_FLAG_R 0x40 /* R = Specifies whether address is relative to last valid address in packet or not. */
+#define ACN_DMP_ADT_FLAG_D 0x30 /* D1, D0 = Specify non-range or range address, single data, equal size
+                                   or mixed size data array */
+#define ACN_DMP_ADT_EXTRACT_D(f)        (((f) & ACN_DMP_ADT_FLAG_D) >> 4)
+
+#define ACN_DMP_ADT_FLAG_X 0x0c /* X1, X0 = These bits are reserved and their values shall be set to 0
+                                   when encoded. Their values shall be ignored when decoding. */
+
+#define ACN_DMP_ADT_FLAG_A 0x03 /* A1, A0 = Size of Address elements */
+#define ACN_DMP_ADT_EXTRACT_A(f)        ((f) & ACN_DMP_ADT_FLAG_A)
+
+#define ACN_DMP_ADT_V_VIRTUAL   0
+#define ACN_DMP_ADT_V_ACTUAL    1
+
+#define ACN_DMP_ADT_R_ABSOLUTE  0
+#define ACN_DMP_ADT_R_RELATIVE  1
+
+#define ACN_DMP_ADT_D_NS        0
+#define ACN_DMP_ADT_D_RS        1
+#define ACN_DMP_ADT_D_RE        2
+#define ACN_DMP_ADT_D_RM        3
+
+#define ACN_DMP_ADT_A_1         0
+#define ACN_DMP_ADT_A_2         1
+#define ACN_DMP_ADT_A_4         2
+#define ACN_DMP_ADT_A_R         3
+
+#define ACN_PROTOCOL_ID_SDT           1
+#define ACN_PROTOCOL_ID_DMP           2
+#define ACN_PROTOCOL_ID_DMX           3
+#define ACN_PROTOCOL_ID_DMX_2         4
+
+#define ACN_ADDR_NULL                 0
+#define ACN_ADDR_IPV4                 1
+#define ACN_ADDR_IPV6                 2
+#define ACN_ADDR_IPPORT               3
+
+/* STD Messages */
+#define ACN_SDT_VECTOR_UNKNOWN          0
+#define ACN_SDT_VECTOR_REL_WRAP         1
+#define ACN_SDT_VECTOR_UNREL_WRAP       2
+#define ACN_SDT_VECTOR_CHANNEL_PARAMS   3
+#define ACN_SDT_VECTOR_JOIN             4
+#define ACN_SDT_VECTOR_JOIN_REFUSE      5
+#define ACN_SDT_VECTOR_JOIN_ACCEPT      6
+#define ACN_SDT_VECTOR_LEAVE            7
+#define ACN_SDT_VECTOR_LEAVING          8
+#define ACN_SDT_VECTOR_CONNECT          9
+#define ACN_SDT_VECTOR_CONNECT_ACCEPT  10
+#define ACN_SDT_VECTOR_CONNECT_REFUSE  11
+#define ACN_SDT_VECTOR_DISCONNECT      12
+#define ACN_SDT_VECTOR_DISCONNECTING   13
+#define ACN_SDT_VECTOR_ACK             14
+#define ACN_SDT_VECTOR_NAK             15
+#define ACN_SDT_VECTOR_GET_SESSION     16
+#define ACN_SDT_VECTOR_SESSIONS        17
+
+#define ACN_REFUSE_CODE_NONSPECIFIC     1
+#define ACN_REFUSE_CODE_ILLEGAL_PARAMS  2
+#define ACN_REFUSE_CODE_LOW_RESOURCES   3
+#define ACN_REFUSE_CODE_ALREADY_MEMBER  4
+#define ACN_REFUSE_CODE_BAD_ADDR_TYPE   5
+#define ACN_REFUSE_CODE_NO_RECIP_CHAN   6
+
+#define ACN_REASON_CODE_NONSPECIFIC          1
+/*#define ACN_REASON_CODE_                   2 */
+/*#define ACN_REASON_CODE_                   3 */
+/*#define ACN_REASON_CODE_                   4 */
+/*#define ACN_REASON_CODE_                   5 */
+#define ACN_REASON_CODE_NO_RECIP_CHAN        6
+#define ACN_REASON_CODE_CHANNEL_EXPIRED      7
+#define ACN_REASON_CODE_LOST_SEQUENCE        8
+#define ACN_REASON_CODE_SATURATED            9
+#define ACN_REASON_CODE_TRANS_ADDR_CHANGING 10
+#define ACN_REASON_CODE_ASKED_TO_LEAVE      11
+#define ACN_REASON_CODE_NO_RECIPIENT        12
+
+#define ACN_DMP_VECTOR_UNKNOWN               0
+#define ACN_DMP_VECTOR_GET_PROPERTY          1
+#define ACN_DMP_VECTOR_SET_PROPERTY          2
+#define ACN_DMP_VECTOR_GET_PROPERTY_REPLY    3
+#define ACN_DMP_VECTOR_EVENT                 4
+#define ACN_DMP_VECTOR_MAP_PROPERTY          5
+#define ACN_DMP_VECTOR_UNMAP_PROPERTY        6
+#define ACN_DMP_VECTOR_SUBSCRIBE             7
+#define ACN_DMP_VECTOR_UNSUBSCRIBE           8
+#define ACN_DMP_VECTOR_GET_PROPERTY_FAIL     9
+#define ACN_DMP_VECTOR_SET_PROPERTY_FAIL    10
+#define ACN_DMP_VECTOR_MAP_PROPERTY_FAIL    11
+#define ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT     12
+#define ACN_DMP_VECTOR_SUBSCRIBE_REJECT     13
+#define ACN_DMP_VECTOR_ALLOCATE_MAP         14
+#define ACN_DMP_VECTOR_ALLOCATE_MAP_REPLY   15
+#define ACN_DMP_VECTOR_DEALLOCATE_MAP       16
+
+#define ACN_DMP_REASON_CODE_NONSPECIFIC                  1
+#define ACN_DMP_REASON_CODE_NOT_A_PROPERTY               2
+#define ACN_DMP_REASON_CODE_WRITE_ONLY                   3
+#define ACN_DMP_REASON_CODE_NOT_WRITABLE                 4
+#define ACN_DMP_REASON_CODE_DATA_ERROR                   5
+#define ACN_DMP_REASON_CODE_MAPS_NOT_SUPPORTED           6
+#define ACN_DMP_REASON_CODE_SPACE_NOT_AVAILABLE          7
+#define ACN_DMP_REASON_CODE_PROP_NOT_MAPPABLE            8
+#define ACN_DMP_REASON_CODE_MAP_NOT_ALLOCATED            9
+#define ACN_DMP_REASON_CODE_SUBSCRIPTION_NOT_SUPPORTED  10
+#define ACN_DMP_REASON_CODE_NO_SUBSCRIPTIONS_SUPPORTED  11
+
+#define ACN_DMX_VECTOR      2
+
+#define ACN_PREF_DMX_DISPLAY_HEX  0
+#define ACN_PREF_DMX_DISPLAY_DEC  1
+#define ACN_PREF_DMX_DISPLAY_PER  2
+
+#define ACN_PREF_DMX_DISPLAY_20PL 0
+#define ACN_PREF_DMX_DISPLAY_16PL 1
+
+typedef struct
+{
+  guint32 start;
+  guint32 vector;
+  guint32 header;
+  guint32 data;
+  guint32 data_length;
+} acn_pdu_offsets;
+
+typedef struct
+{
+  guint8  flags;
+  guint32 address;  /* or first address */
+  guint32 increment;
+  guint32 count;
+  guint32 size;
+  guint32 data_length;
+} acn_dmp_adt_type;
 
 /*
  * See
 
 #define ACTUAL_ADDRESS  0
 /* forward reference */
-static gboolean dissect_acn_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree );
-static guint32 acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset);
-static guint32 acn_add_channel_member_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset);
-static guint32 acn_add_expiry(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, const char *label);
-static guint32 acn_add_channel_parameter(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset);
 static guint32 acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, const char *label);
-static guint32 acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt);
-static guint32 acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt);
-static guint32 dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static guint32 dissect_acn_root_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets);
-static int dissect_acn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
-static gboolean is_acn(tvbuff_t *tvb);
+static int     dissect_acn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
 
 /* Global variables */
 static int proto_acn = -1;
@@ -215,24 +343,24 @@ static const value_string acn_dmp_adt_a_vals[] = {
 
 
 static const value_string acn_sdt_vector_vals[] = {
-  {ACN_SDT_VECTOR_UNKNOWN, "Unknown"},
-  {ACN_SDT_VECTOR_REL_WRAP, "Reliable Wrapper"},
-  {ACN_SDT_VECTOR_UNREL_WRAP, "Unreliable Wrapper"},
+  {ACN_SDT_VECTOR_UNKNOWN,        "Unknown"},
+  {ACN_SDT_VECTOR_REL_WRAP,       "Reliable Wrapper"},
+  {ACN_SDT_VECTOR_UNREL_WRAP,     "Unreliable Wrapper"},
   {ACN_SDT_VECTOR_CHANNEL_PARAMS, "Channel Parameters"},
-  {ACN_SDT_VECTOR_JOIN, "Join"},
-  {ACN_SDT_VECTOR_JOIN_REFUSE, "Join Refuse"},
-  {ACN_SDT_VECTOR_JOIN_ACCEPT, "Join Accept"},
-  {ACN_SDT_VECTOR_LEAVE, "Leave"},
-  {ACN_SDT_VECTOR_LEAVING, "Leaving"},
-  {ACN_SDT_VECTOR_CONNECT, "Connect"},
+  {ACN_SDT_VECTOR_JOIN,           "Join"},
+  {ACN_SDT_VECTOR_JOIN_REFUSE,    "Join Refuse"},
+  {ACN_SDT_VECTOR_JOIN_ACCEPT,    "Join Accept"},
+  {ACN_SDT_VECTOR_LEAVE,          "Leave"},
+  {ACN_SDT_VECTOR_LEAVING,        "Leaving"},
+  {ACN_SDT_VECTOR_CONNECT,        "Connect"},
   {ACN_SDT_VECTOR_CONNECT_ACCEPT, "Connect Accept"},
   {ACN_SDT_VECTOR_CONNECT_REFUSE, "Connect Refuse"},
-  {ACN_SDT_VECTOR_DISCONNECT, "Disconnect"},
-  {ACN_SDT_VECTOR_DISCONNECTING, "Disconnecting"},
-  {ACN_SDT_VECTOR_ACK, "Ack"},
-  {ACN_SDT_VECTOR_NAK, "Nak"},
-  {ACN_SDT_VECTOR_GET_SESSION, "Get Session"},
-  {ACN_SDT_VECTOR_SESSIONS, "Sessions"},
+  {ACN_SDT_VECTOR_DISCONNECT,     "Disconnect"},
+  {ACN_SDT_VECTOR_DISCONNECTING,  "Disconnecting"},
+  {ACN_SDT_VECTOR_ACK,            "Ack"},
+  {ACN_SDT_VECTOR_NAK,            "Nak"},
+  {ACN_SDT_VECTOR_GET_SESSION,    "Get Session"},
+  {ACN_SDT_VECTOR_SESSIONS,       "Sessions"},
   { 0,       NULL },
 };
 
@@ -242,66 +370,66 @@ static const value_string acn_dmx_vector_vals[] = {
 };
 
 static const value_string acn_dmp_vector_vals[] = {
-  {ACN_DMP_VECTOR_UNKNOWN, "Unknown"},
-  {ACN_DMP_VECTOR_GET_PROPERTY, "Get Property"},
-  {ACN_DMP_VECTOR_SET_PROPERTY, "Set Property"},
+  {ACN_DMP_VECTOR_UNKNOWN,            "Unknown"},
+  {ACN_DMP_VECTOR_GET_PROPERTY,       "Get Property"},
+  {ACN_DMP_VECTOR_SET_PROPERTY,       "Set Property"},
   {ACN_DMP_VECTOR_GET_PROPERTY_REPLY, "Get property reply"},
-  {ACN_DMP_VECTOR_EVENT, "Event"},
-  {ACN_DMP_VECTOR_MAP_PROPERTY, "Map Property"},
-  {ACN_DMP_VECTOR_UNMAP_PROPERTY, "Unmap Property"},
-  {ACN_DMP_VECTOR_SUBSCRIBE, "Subscribe"},
-  {ACN_DMP_VECTOR_UNSUBSCRIBE, "Unsubscribe"},
-  {ACN_DMP_VECTOR_GET_PROPERTY_FAIL, "Get Property Fail"},
-  {ACN_DMP_VECTOR_SET_PROPERTY_FAIL, "Set Property Fail"},
-  {ACN_DMP_VECTOR_MAP_PROPERTY_FAIL, "Map Property Fail"},
-  {ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT, "Subscribe Accept"},
-  {ACN_DMP_VECTOR_SUBSCRIBE_REJECT, "Subscribe Reject"},
-  {ACN_DMP_VECTOR_ALLOCATE_MAP, "Allocate Map"},
+  {ACN_DMP_VECTOR_EVENT,              "Event"},
+  {ACN_DMP_VECTOR_MAP_PROPERTY,       "Map Property"},
+  {ACN_DMP_VECTOR_UNMAP_PROPERTY,     "Unmap Property"},
+  {ACN_DMP_VECTOR_SUBSCRIBE,          "Subscribe"},
+  {ACN_DMP_VECTOR_UNSUBSCRIBE,        "Unsubscribe"},
+  {ACN_DMP_VECTOR_GET_PROPERTY_FAIL,  "Get Property Fail"},
+  {ACN_DMP_VECTOR_SET_PROPERTY_FAIL,  "Set Property Fail"},
+  {ACN_DMP_VECTOR_MAP_PROPERTY_FAIL,  "Map Property Fail"},
+  {ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT,   "Subscribe Accept"},
+  {ACN_DMP_VECTOR_SUBSCRIBE_REJECT,   "Subscribe Reject"},
+  {ACN_DMP_VECTOR_ALLOCATE_MAP,       "Allocate Map"},
   {ACN_DMP_VECTOR_ALLOCATE_MAP_REPLY, "Allocate Map Reply"},
-  {ACN_DMP_VECTOR_DEALLOCATE_MAP, "Deallocate Map"},
+  {ACN_DMP_VECTOR_DEALLOCATE_MAP,     "Deallocate Map"},
   { 0,       NULL },
 };
 
 static const value_string acn_ip_address_type_vals[] = {
-  { ACN_ADDR_NULL, "Null"},
-  { ACN_ADDR_IPV4, "IPv4"},
-  { ACN_ADDR_IPV6, "IPv6"},
+  { ACN_ADDR_NULL,   "Null"},
+  { ACN_ADDR_IPV4,   "IPv4"},
+  { ACN_ADDR_IPV6,   "IPv6"},
   { ACN_ADDR_IPPORT, "Port"},
   { 0,       NULL },
 };
 
 static const value_string acn_refuse_code_vals[] = {
-  { ACN_REFUSE_CODE_NONSPECIFIC, "Nonspecific" },
+  { ACN_REFUSE_CODE_NONSPECIFIC,    "Nonspecific" },
   { ACN_REFUSE_CODE_ILLEGAL_PARAMS, "Illegal Parameters" },
-  { ACN_REFUSE_CODE_LOW_RESOURCES, "Low Resources" },
+  { ACN_REFUSE_CODE_LOW_RESOURCES,  "Low Resources" },
   { ACN_REFUSE_CODE_ALREADY_MEMBER, "Already Member" },
-  { ACN_REFUSE_CODE_BAD_ADDR_TYPE, "Bad Address Type" },
-  { ACN_REFUSE_CODE_NO_RECIP_CHAN, "No Reciprocal Channel" },
+  { ACN_REFUSE_CODE_BAD_ADDR_TYPE,  "Bad Address Type" },
+  { ACN_REFUSE_CODE_NO_RECIP_CHAN,  "No Reciprocal Channel" },
   { 0,       NULL },
 };
 
 static const value_string acn_reason_code_vals[] = {
-  { ACN_REASON_CODE_NONSPECIFIC, "Nonspecific" },
-  { ACN_REASON_CODE_NO_RECIP_CHAN, "No Reciprocal Channel" },
-  { ACN_REASON_CODE_CHANNEL_EXPIRED, "Channel Expired" },
-  { ACN_REASON_CODE_LOST_SEQUENCE, "Lost Sequence" },
-  { ACN_REASON_CODE_SATURATED, "Saturated" },
+  { ACN_REASON_CODE_NONSPECIFIC,         "Nonspecific" },
+  { ACN_REASON_CODE_NO_RECIP_CHAN,       "No Reciprocal Channel" },
+  { ACN_REASON_CODE_CHANNEL_EXPIRED,     "Channel Expired" },
+  { ACN_REASON_CODE_LOST_SEQUENCE,       "Lost Sequence" },
+  { ACN_REASON_CODE_SATURATED,           "Saturated" },
   { ACN_REASON_CODE_TRANS_ADDR_CHANGING, "Transport Address Changing" },
-  { ACN_REASON_CODE_ASKED_TO_LEAVE, "Asked to Leave" },
-  { ACN_REASON_CODE_NO_RECIPIENT, "No Recipient"},
+  { ACN_REASON_CODE_ASKED_TO_LEAVE,      "Asked to Leave" },
+  { ACN_REASON_CODE_NO_RECIPIENT,        "No Recipient"},
   { 0,       NULL },
 };
 
 static const value_string acn_dmp_reason_code_vals[] = {
-  { ACN_DMP_REASON_CODE_NONSPECIFIC, "Nonspecific" },
-  { ACN_DMP_REASON_CODE_NOT_A_PROPERTY, "Not a Property" },
-  { ACN_DMP_REASON_CODE_WRITE_ONLY, "Write Only" },
-  { ACN_DMP_REASON_CODE_NOT_WRITABLE, "Not Writable" },
-  { ACN_DMP_REASON_CODE_DATA_ERROR, "Data Error" },
-  { ACN_DMP_REASON_CODE_MAPS_NOT_SUPPORTED, "Maps not Supported" },
-  { ACN_DMP_REASON_CODE_SPACE_NOT_AVAILABLE, "Space not Available" },
-  { ACN_DMP_REASON_CODE_PROP_NOT_MAPPABLE, "Property not Mappable"},
-  { ACN_DMP_REASON_CODE_MAP_NOT_ALLOCATED, "Map not Allocated"},
+  { ACN_DMP_REASON_CODE_NONSPECIFIC,                "Nonspecific" },
+  { ACN_DMP_REASON_CODE_NOT_A_PROPERTY,             "Not a Property" },
+  { ACN_DMP_REASON_CODE_WRITE_ONLY,                 "Write Only" },
+  { ACN_DMP_REASON_CODE_NOT_WRITABLE,               "Not Writable" },
+  { ACN_DMP_REASON_CODE_DATA_ERROR,                 "Data Error" },
+  { ACN_DMP_REASON_CODE_MAPS_NOT_SUPPORTED,         "Maps not Supported" },
+  { ACN_DMP_REASON_CODE_SPACE_NOT_AVAILABLE,        "Space not Available" },
+  { ACN_DMP_REASON_CODE_PROP_NOT_MAPPABLE,          "Property not Mappable"},
+  { ACN_DMP_REASON_CODE_MAP_NOT_ALLOCATED,          "Map not Allocated"},
   { ACN_DMP_REASON_CODE_SUBSCRIPTION_NOT_SUPPORTED, "Subscription not Supported"},
   { ACN_DMP_REASON_CODE_NO_SUBSCRIPTIONS_SUPPORTED, "No Subscriptions Supported"},
   { 0,       NULL },
@@ -322,7 +450,8 @@ static const enum_val_t dmx_display_line_format[] = {
 
 /******************************************************************************/
 /* Test to see if it is an ACN Packet                                         */
-static gboolean is_acn(tvbuff_t *tvb)
+static gboolean
+is_acn(tvbuff_t *tvb)
 {
   static char acn_packet_id[] = "ASC-E1.17\0\0\0";  /* must be 12 bytes */
 
@@ -361,14 +490,14 @@ dissect_acn_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
 /******************************************************************************/
 /*  Adds tree branch for channel owner info block                             */
 static guint32
-acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset)
+acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
 {
   proto_item *pi;
-  proto_tree *this_tree = NULL;
-  guint32 session_count;
-  guint32 x;
+  proto_tree *this_tree;
+  guint32     session_count;
+  guint32     x;
 
-  pi = proto_tree_add_text(this_tree, tvb, offset, 8, "Channel Owner Info Block");
+  pi        = proto_tree_add_text(tree, tvb, offset, 8, "Channel Owner Info Block");
   this_tree = proto_item_add_subtree(pi, ett_acn_channel_owner_info_block);
 
   proto_tree_add_item(this_tree, hf_acn_member_id, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -390,14 +519,14 @@ acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
 /******************************************************************************/
 /*  Adds tree branch for channel member info block                            */
 static guint32
-acn_add_channel_member_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset)
+acn_add_channel_member_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
 {
   proto_item *pi;
-  proto_tree *this_tree = NULL;
-  guint32 session_count;
-  guint32 x;
+  proto_tree *this_tree;
+  guint32     session_count;
+  guint32     x;
 
-  pi = proto_tree_add_text(this_tree, tvb, offset, 8, "Channel Member Info Block");
+  pi        = proto_tree_add_text(tree, tvb, offset, 8, "Channel Member Info Block");
   this_tree = proto_item_add_subtree(pi, ett_acn_channel_member_info_block);
 
   proto_tree_add_item(this_tree, hf_acn_member_id, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -438,7 +567,7 @@ static guint32
 acn_add_channel_parameter(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
 {
   proto_item *pi;
-  proto_tree *param_tree = NULL;
+  proto_tree *param_tree;
 
   pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Parameter Block");
   param_tree = proto_item_add_subtree(pi, ett_acn_channel_parameter);
@@ -463,11 +592,11 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
 {
   proto_item *pi;
   proto_tree *addr_tree = NULL;
-  guint8 ip_address_type;
+  guint8      ip_address_type;
+  address     addr;
+  guint32     IPv4;
+  guint32     port;
 
-  address addr;
-  guint32  IPv4;
-  guint32  port;
   struct e_in6_addr IPv6;
 
 
@@ -477,56 +606,56 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
   switch (ip_address_type) {
     case ACN_ADDR_NULL:
       proto_tree_add_item(tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
-      offset += 1;
+      offset    += 1;
       break;
     case ACN_ADDR_IPV4:
       /* Build tree and add type*/
-      pi = proto_tree_add_text(tree, tvb, offset, 7, "%s", label);
-      addr_tree = proto_item_add_subtree(pi, ett_acn_address);
+      pi         = proto_tree_add_text(tree, tvb, offset, 7, "%s", label);
+      addr_tree  = proto_item_add_subtree(pi, ett_acn_address);
       proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
-      offset +=1;
+      offset    += 1;
       /* Add port */
-      port = tvb_get_ntohs(tvb, offset);
+      port       = tvb_get_ntohs(tvb, offset);
       proto_tree_add_item(addr_tree, hf_acn_port, tvb, offset, 2, ENC_BIG_ENDIAN);
-      offset += 2;
+      offset    += 2;
       /* Add Address */
       proto_tree_add_item(addr_tree, hf_acn_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
       /* Append port and address to tree item */
-      IPv4 = tvb_get_ipv4(tvb, offset);
+      IPv4       = tvb_get_ipv4(tvb, offset);
       SET_ADDRESS(&addr, AT_IPv4, sizeof(IPv4), &IPv4);
       proto_item_append_text(pi, " %s, Port %d", ep_address_to_str(&addr), port);
-      offset += 4;
+      offset    += 4;
       break;
     case ACN_ADDR_IPV6:
       /* Build tree and add type*/
-      pi = proto_tree_add_text(tree, tvb, offset, 19, "%s", label);
-      addr_tree = proto_item_add_subtree(pi, ett_acn_address);
+      pi         = proto_tree_add_text(tree, tvb, offset, 19, "%s", label);
+      addr_tree  = proto_item_add_subtree(pi, ett_acn_address);
       proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
-      offset +=1;
+      offset    += 1;
       /* Add port */
-      port = tvb_get_ntohs(tvb, offset);
+      port       = tvb_get_ntohs(tvb, offset);
       proto_tree_add_item(addr_tree, hf_acn_port, tvb, offset, 2, ENC_BIG_ENDIAN);
-      offset += 2;
+      offset    += 2;
       /* Add Address */
       proto_tree_add_item(addr_tree, hf_acn_ipv6, tvb, offset, 16, ENC_NA);
       /* Append port and address to tree item */
       tvb_get_ipv6(tvb, offset, &IPv6);
       SET_ADDRESS(&addr, AT_IPv6, sizeof(struct e_in6_addr), &IPv6);
       proto_item_append_text(pi, " %s, Port %d", ep_address_to_str(&addr), port);
-      offset += 16;
+      offset    += 16;
       break;
     case ACN_ADDR_IPPORT:
       /* Build tree and add type*/
-      pi = proto_tree_add_text(tree, tvb, offset, 3, "%s", label);
-      addr_tree = proto_item_add_subtree(pi, ett_acn_address);
+      pi         = proto_tree_add_text(tree, tvb, offset, 3, "%s", label);
+      addr_tree  = proto_item_add_subtree(pi, ett_acn_address);
       proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
-      offset +=1;
+      offset    += 1;
       /* Add port */
-      port = tvb_get_ntohs(tvb, offset);
+      port       = tvb_get_ntohs(tvb, offset);
       proto_tree_add_item(addr_tree, hf_acn_port, tvb, offset, 2, ENC_BIG_ENDIAN);
       /* Append port to tree item */
       proto_item_append_text(pi, " %s Port %d", ep_address_to_str(&addr), port);
-      offset += 2;
+      offset    += 2;
       break;
   }
   return offset;
@@ -537,9 +666,9 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
 static guint32
 acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt)
 {
-  proto_item *pi;
-  proto_tree *this_tree = NULL;
-  guint8 D;
+  proto_item  *pi;
+  proto_tree  *this_tree = NULL;
+  guint8       D;
   const gchar *name;
 
     /* header contains address and data type */
@@ -555,7 +684,7 @@ acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
   proto_tree_add_uint(this_tree, hf_acn_dmp_adt_d, tvb, offset, 1, adt->flags);
   proto_tree_add_uint(this_tree, hf_acn_dmp_adt_x, tvb, offset, 1, adt->flags);
   proto_tree_add_uint(this_tree, hf_acn_dmp_adt_a, tvb, offset, 1, adt->flags);
-  offset++;
+  offset += 1;
 
   return offset; /* bytes used */
 }
@@ -567,35 +696,36 @@ acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
 {
   guint32 start_offset;
   guint32 bytes_used;
-  guint8 D, A;
+  guint8  D, A;
 
   start_offset = offset;
 
   D = ACN_DMP_ADT_EXTRACT_D(adt->flags);
   A = ACN_DMP_ADT_EXTRACT_A(adt->flags);
+
   switch (D) {
-    case ACN_DMP_ADT_D_NS: /* Non-range address, Single data item */
-      adt->increment = 1;
-      adt->count = 1;
-      switch (A) { /* address */
-        case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
-          adt->address =   tvb_get_guint8(tvb, offset);
-          offset += 1;
-          bytes_used = 1;
+    case ACN_DMP_ADT_D_NS:      /* Non-range address, Single data item */
+      adt->increment    = 1;
+      adt->count        = 1;
+      switch (A) {              /* address */
+        case ACN_DMP_ADT_A_1:   /* One octet address, (range: one octet address, increment, and count). */
+          adt->address  = tvb_get_guint8(tvb, offset);
+          offset       += 1;
+          bytes_used    = 1;
           break;
-        case ACN_DMP_ADT_A_2: /* Two octet address, (range: two octet address, increment, and count). */
-          adt->address =   tvb_get_ntohs(tvb, offset);
-          offset += 2;
-          bytes_used = 2;
+        case ACN_DMP_ADT_A_2:   /* Two octet address, (range: two octet address, increment, and count). */
+          adt->address  = tvb_get_ntohs(tvb, offset);
+          offset       += 2;
+          bytes_used    = 2;
           break;
-        case ACN_DMP_ADT_A_4: /* Four octet address, (range: one octet address, increment, and count). */
-          adt->address =   tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          bytes_used = 4;
+        case ACN_DMP_ADT_A_4:   /* Four octet address, (range: one octet address, increment, and count). */
+          adt->address  = tvb_get_ntohl(tvb, offset);
+          offset       += 4;
+          bytes_used    = 4;
           break;
-        default: /* and ACN_DMP_ADT_A_R (Four octet address, (range: four octet address, increment, and count)*/
+        default:                /* and ACN_DMP_ADT_A_R (Four octet address, (range: four octet address, increment, and count)*/
           return offset;
-      } /* of switch (A)  */
+      }                         /* of switch (A)  */
 
       if (adt->flags & ACN_DMP_ADT_FLAG_V) {
         proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Virtual Address: 0x%X", adt->address);
@@ -604,83 +734,91 @@ acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
       }
       break;
 
-    case ACN_DMP_ADT_D_RS: /* Range address, Single data item */
+    case ACN_DMP_ADT_D_RS:      /* Range address, Single data item */
       switch (A) {
-        case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
-          adt->address =   tvb_get_guint8(tvb, offset);
-          offset += 1;
-          adt->increment =   tvb_get_guint8(tvb, offset);
-          offset += 1;
-          adt->count =   tvb_get_guint8(tvb, offset);
-          offset += 1;
-          bytes_used = 3;
+        case ACN_DMP_ADT_A_1:   /* One octet address, (range: one octet address, increment, and count). */
+          adt->address    = tvb_get_guint8(tvb, offset);
+          offset         += 1;
+          adt->increment  = tvb_get_guint8(tvb, offset);
+          offset         += 1;
+          adt->count      = tvb_get_guint8(tvb, offset);
+          offset         += 1;
+          bytes_used      = 3;
           break;
-        case ACN_DMP_ADT_A_2: /* Two octet address, (range: two octet address, increment, and count). */
-          adt->address =   tvb_get_ntohs(tvb, offset);
-          offset += 2;
-          adt->increment =   tvb_get_ntohs(tvb, offset);
-          offset += 2;
-          adt->count =   tvb_get_ntohs(tvb, offset);
-          offset += 2;
-          bytes_used = 6;
+        case ACN_DMP_ADT_A_2:   /* Two octet address, (range: two octet address, increment, and count). */
+          adt->address    = tvb_get_ntohs(tvb, offset);
+          offset         += 2;
+          adt->increment  = tvb_get_ntohs(tvb, offset);
+          offset         += 2;
+          adt->count      = tvb_get_ntohs(tvb, offset);
+          offset         += 2;
+          bytes_used      = 6;
           break;
-        case ACN_DMP_ADT_A_4: /* Four octet address, (range: four octet address, increment, and count). */
-          adt->address =   tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          adt->increment =   tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          adt->count =   tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          bytes_used = 12;
+        case ACN_DMP_ADT_A_4:   /* Four octet address, (range: four octet address, increment, and count). */
+          adt->address    = tvb_get_ntohl(tvb, offset);
+          offset         += 4;
+          adt->increment  = tvb_get_ntohl(tvb, offset);
+          offset         += 4;
+          adt->count      = tvb_get_ntohl(tvb, offset);
+          offset         += 4;
+          bytes_used      = 12;
           break;
-        default: /* and ACN_DMP_ADT_A_R, this reserved....so it has no meaning yet */
+        default:                /* and ACN_DMP_ADT_A_R, this reserved....so it has no meaning yet */
           return offset;
-      } /* of switch (A)  */
+      }                         /* of switch (A)  */
 
       if (adt->flags & ACN_DMP_ADT_FLAG_V) {
-        proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Virtual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+        proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+                            "Virtual Address first: 0x%X, inc: %d, count: %d",
+                            adt->address, adt->increment, adt->count);
       } else {
-        proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Actual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+        proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+                            "Actual Address first: 0x%X, inc: %d, count: %d",
+                            adt->address, adt->increment, adt->count);
       }
       break;
 
-    case ACN_DMP_ADT_D_RE: /* Range address, Array of equal size data items */
+    case ACN_DMP_ADT_D_RE:      /* Range address, Array of equal size data items */
       switch (A) {
-        case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
-          adt->address =   tvb_get_guint8(tvb, offset);
-          offset += 1;
-          adt->increment =   tvb_get_guint8(tvb, offset);
-          offset += 1;
-          adt->count =   tvb_get_guint8(tvb, offset);
-          offset += 1;
-          bytes_used = 3;
+        case ACN_DMP_ADT_A_1:   /* One octet address, (range: one octet address, increment, and count). */
+          adt->address    = tvb_get_guint8(tvb, offset);
+          offset         += 1;
+          adt->increment  = tvb_get_guint8(tvb, offset);
+          offset         += 1;
+          adt->count      = tvb_get_guint8(tvb, offset);
+          offset         += 1;
+          bytes_used      = 3;
           break;
-        case ACN_DMP_ADT_A_2: /* Two octet address, (range: two octet address, increment, and count). */
-          adt->address =   tvb_get_ntohs(tvb, offset);
-          offset += 2;
-          adt->increment =   tvb_get_ntohs(tvb, offset);
-          offset += 2;
-          adt->count =   tvb_get_ntohs(tvb, offset);
-          offset += 2;
-          bytes_used = 6;
+        case ACN_DMP_ADT_A_2:   /* Two octet address, (range: two octet address, increment, and count). */
+          adt->address    = tvb_get_ntohs(tvb, offset);
+          offset         += 2;
+          adt->increment  = tvb_get_ntohs(tvb, offset);
+          offset         += 2;
+          adt->count      = tvb_get_ntohs(tvb, offset);
+          offset         += 2;
+          bytes_used      = 6;
           break;
-        case ACN_DMP_ADT_A_4: /* Four octet address, (range: four octet address, increment, and count). */
-          adt->address =   tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          adt->increment =   tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          adt->count =   tvb_get_ntohl(tvb, offset);
-          offset += 4;
-          bytes_used = 12;
+        case ACN_DMP_ADT_A_4:   /* Four octet address, (range: four octet address, increment, and count). */
+          adt->address    = tvb_get_ntohl(tvb, offset);
+          offset         += 4;
+          adt->increment  = tvb_get_ntohl(tvb, offset);
+          offset         += 4;
+          adt->count      = tvb_get_ntohl(tvb, offset);
+          offset         += 4;
+          bytes_used      = 12;
           break;
-        default: /* and ACN_DMP_ADT_A_R, this reserved....so it has no meaning yet */
+        default:                /* and ACN_DMP_ADT_A_R, this reserved....so it has no meaning yet */
           return offset;
-      } /* of switch (A)  */
+      }                         /* of switch (A)  */
 
       if (adt->flags & ACN_DMP_ADT_FLAG_V) {
-        proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Virtual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+        proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+                            "Virtual Address first: 0x%X, inc: %d, count: %d",
+                            adt->address, adt->increment, adt->count);
       } else {
-        proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Actual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+        proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+                            "Actual Address first: 0x%X, inc: %d, count: %d",
+                            adt->address, adt->increment, adt->count);
       }
       break;
 
@@ -718,9 +856,13 @@ acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
       } /* of switch (A)  */
 
       if (adt->flags & ACN_DMP_ADT_FLAG_V) {
-        proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Virtual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+        proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+                            "Virtual Address first: 0x%X, inc: %d, count: %d",
+                            adt->address, adt->increment, adt->count);
       } else {
-        proto_tree_add_text(tree, tvb, start_offset, bytes_used, "Actual Address first: 0x%X, inc: %d, count: %d", adt->address, adt->increment, adt->count);
+        proto_tree_add_text(tree, tvb, start_offset, bytes_used,
+                            "Actual Address first: 0x%X, inc: %d, count: %d",
+                            adt->address, adt->increment, adt->count);
       }
       break;
   } /* of switch (D) */
@@ -735,14 +877,14 @@ acn_add_dmp_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
 static guint32
 acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt)
 {
-  guint8 D, A;
-  guint32 data_size;
-  guint32 data_value;
-  guint32 data_address;
-  guint32 x,y;
-  gchar buffer[BUFFER_SIZE];
+  guint8      D, A;
+  guint32     data_size;
+  guint32     data_value;
+  guint32     data_address;
+  guint32     x,y;
+  gchar       buffer[BUFFER_SIZE];
   proto_item *ti;
-  guint32 ok_to_process = FALSE;
+  guint32     ok_to_process = FALSE;
 
   buffer[0] = 0;
 
@@ -781,18 +923,19 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
   }
 
   if (!ok_to_process) {
-    data_size = adt->data_length;
-    ti = proto_tree_add_item(tree, hf_acn_data, tvb, offset, data_size, ENC_NA);
-    offset += data_size;
+    data_size  = adt->data_length;
+    ti         = proto_tree_add_item(tree, hf_acn_data, tvb, offset, data_size, ENC_NA);
+    offset    += data_size;
     proto_item_set_text(ti, "Data and more Address-Data Pairs (further dissection not possible)");
     return offset;
   }
 
   A = ACN_DMP_ADT_EXTRACT_A(adt->flags);
+
   switch (D) {
-    case ACN_DMP_ADT_D_NS: /* Non-range address, Single data item */
+    case ACN_DMP_ADT_D_NS:      /* Non-range address, Single data item */
       /* calculate data size */
-      data_size = adt->data_length;
+      data_size    = adt->data_length;
       data_address = adt->address;
 
       switch (A) {
@@ -829,7 +972,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
           break;
         default:
           /* build string of values */
-          for (y=0;y<20 && y<data_size;y++) {
+          for (y=0; y<20 && y<data_size; y++) {
             data_value = tvb_get_guint8(tvb, offset+y);
             g_snprintf(buffer, BUFFER_SIZE, "%s %2.2X", buffer, data_value);
           }
@@ -848,7 +991,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
       data_size = adt->data_length;
       data_address = adt->address;
 
-      for (x=0;x<adt->count;x++) {
+      for (x=0; x<adt->count; x++) {
         switch (A) {
           case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
             g_snprintf(buffer, BUFFER_SIZE, "Addr 0x%2.2X ->", data_address);
@@ -882,7 +1025,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
             break;
           default:
             /* build string of values */
-            for (y=0;y<20 && y<data_size;y++) {
+            for (y=0; y<20 && y<data_size; y++) {
               data_value = tvb_get_guint8(tvb, offset+y);
               g_snprintf(buffer, BUFFER_SIZE, "%s %2.2X", buffer, data_value);
             }
@@ -902,7 +1045,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
       data_size = adt->data_length / adt->count;
       data_address = adt->address;
 
-      for (x=0;x<adt->count;x++) {
+      for (x=0; x<adt->count; x++) {
         switch (A) {
           case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
             g_snprintf(buffer, BUFFER_SIZE, "Addr 0x%2.2X ->", data_address);
@@ -936,7 +1079,7 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
             break;
           default:
             /* build string of values */
-            for (y=0;y<20 && y<data_size;y++) {
+            for (y=0; y<20 && y<data_size; y++) {
               data_value = tvb_get_guint8(tvb, offset+y);
               g_snprintf(buffer, BUFFER_SIZE, "%s %2.2X", buffer, data_value);
             }
@@ -970,12 +1113,12 @@ acn_add_dmp_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int of
 static guint32
 acn_add_dmp_reason_codes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt)
 {
-  guint8 D, A;
-  guint32 data_value;
-  guint32 data_address;
-  guint32 x;
+  guint8       D, A;
+  guint32      data_value;
+  guint32      data_address;
+  guint32      x;
 
-  gchar buffer[BUFFER_SIZE];
+  gchar        buffer[BUFFER_SIZE];
   const gchar *name;
 
   buffer[0] = 0;
@@ -1000,17 +1143,15 @@ acn_add_dmp_reason_codes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
       }
 
       /* Get reason */
-      data_value = tvb_get_guint8(tvb, offset);
-      /* convert to string */
-      name = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
-      /* Add item */
+      data_value  = tvb_get_guint8(tvb, offset);
+      name        = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
       proto_tree_add_uint_format(tree, hf_acn_data8, tvb, offset, 1, data_value, "%s %s", buffer, name);
-      offset++;
+      offset     += 1;
       break;
 
     case ACN_DMP_ADT_D_RS: /* Range address, Single data item */
       data_address = adt->address;
-      for (x=0;x<adt->count;x++) {
+      for (x=0; x<adt->count; x++) {
         switch (A) {
           case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
             g_snprintf(buffer, BUFFER_SIZE, "Addr 0x%2.2X ->", data_address);
@@ -1027,20 +1168,18 @@ acn_add_dmp_reason_codes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
 
         /* Get reason */
         data_value = tvb_get_guint8(tvb, offset);
-        /* convert to string */
-        name = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
-        /* Add item */
+        name       = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
         proto_tree_add_uint_format(tree, hf_acn_data8, tvb, offset, 1, data_value, "%s %s", buffer, name);
 
         data_address += adt->increment;
       } /* of (x=0;x<adt->count;x++) */
-      offset++;
+      offset += 1;
       break;
 
     case ACN_DMP_ADT_D_RE: /* Range address, Array of equal size data items */
     case ACN_DMP_ADT_D_RM: /* Range address, Series of mixed size data items */
       data_address = adt->address;
-      for (x=0;x<adt->count;x++) {
+      for (x=0; x<adt->count; x++) {
         switch (A) {
           case ACN_DMP_ADT_A_1: /* One octet address, (range: one octet address, increment, and count). */
             g_snprintf(buffer, BUFFER_SIZE, "Addr 0x%2.2X ->", data_address);
@@ -1055,13 +1194,11 @@ acn_add_dmp_reason_codes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
             return offset;
         }
         /* Get reason */
-        data_value = tvb_get_guint8(tvb, offset);
-        /* convert to string */
-        name = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
-        /* Add item */
+        data_value    = tvb_get_guint8(tvb, offset);
+        name          = val_to_str(data_value, acn_dmp_reason_code_vals, "reason not valid (%d)");
         proto_tree_add_uint_format(tree, hf_acn_data8, tvb, offset, 1, data_value, "%s %s", buffer, name);
         data_address += adt->increment;
-        offset++;
+        offset       += 1;
       } /* of (x=0;x<adt->count;x++) */
       break;
   } /* of switch (D) */
@@ -1075,47 +1212,47 @@ static guint32
 dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
 {
   /* common to all pdu */
-  guint8 pdu_flags;
-  guint32 pdu_start;
-  guint32 pdu_length;
-  guint32 pdu_flvh_length; /* flags, length, vector, header */
-  guint8 D;
-  guint8 octet;
-  guint32 length1;
-  guint32 length2;
-  guint32 length3;
-  guint32 vector_offset;
-  guint32 header_offset;
-  guint32 data_offset;
-  guint32 old_offset;
-  guint32 end_offset;
-  guint32 data_length;
-  guint32 address_count;
-
-  proto_item *ti, *pi;
-  proto_tree *pdu_tree = NULL;
-  proto_tree *flag_tree = NULL;
+  guint8            pdu_flags;
+  guint32           pdu_start;
+  guint32           pdu_length;
+  guint32           pdu_flvh_length; /* flags, length, vector, header */
+  guint8            D;
+  guint8            octet;
+  guint32           length1;
+  guint32           length2;
+  guint32           length3;
+  guint32           vector_offset;
+  guint32           header_offset;
+  guint32           data_offset;
+  guint32           old_offset;
+  guint32           end_offset;
+  guint32           data_length;
+  guint32           address_count;
+
+  proto_item       *ti, *pi;
+  proto_tree       *pdu_tree  = NULL;
+  proto_tree       *flag_tree = NULL;
 
   /* this pdu */
-  const gchar *name;
-  acn_dmp_adt_type adt = {0,0,0,0,0,0};
-  acn_dmp_adt_type adt2 = {0,0,0,0,0,0};
-  guint32 vector;
+  const gchar      *name;
+  acn_dmp_adt_type  adt       = {0,0,0,0,0,0};
+  acn_dmp_adt_type  adt2      = {0,0,0,0,0,0};
+  guint32           vector;
 
   /* save start of pdu block */
   pdu_start = offset;
 
   /* get PDU flags and length flag first */
-  octet = tvb_get_guint8(tvb, offset++);
-  pdu_flags =  octet & 0xf0;
-  length1 = octet & 0x0f;                   /* bottom 4 bits only */
-  length2 = tvb_get_guint8(tvb, offset++);
+  octet     = tvb_get_guint8(tvb, offset++);
+  pdu_flags = octet & 0xf0;
+  length1   = octet & 0x0f;     /* bottom 4 bits only */
+  length2   = tvb_get_guint8(tvb, offset++);
 
   /* if length flag is set, then we have a 20 bit length else we have a 12 bit */
   /* flvh = flags, length, vector, header */
   if (pdu_flags & ACN_PDU_FLAG_L) {
     length3 = tvb_get_guint8(tvb, offset);
-    offset++;
+    offset += 1;
     pdu_length = length3 | (length2 << 8) | (length1 << 16);
     pdu_flvh_length = 3;
   } else {
@@ -1125,11 +1262,11 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
   /* offset should now be pointing to vector (if one exists) */
 
   /* Add pdu item and tree */
-  ti = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
+  ti       = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
   pdu_tree = proto_item_add_subtree(ti, ett_acn_dmp_pdu);
 
   /* Add flag item and tree */
-  pi = proto_tree_add_uint(pdu_tree, hf_acn_pdu_flags, tvb, pdu_start, 1, pdu_flags);
+  pi        = proto_tree_add_uint(pdu_tree, hf_acn_pdu_flags, tvb, pdu_start, 1, pdu_flags);
   flag_tree = proto_item_add_subtree(pi, ett_acn_pdu_flags);
   proto_tree_add_item(flag_tree, hf_acn_pdu_flag_l, tvb, pdu_start, 1, ENC_BIG_ENDIAN);
   proto_tree_add_item(flag_tree, hf_acn_pdu_flag_v, tvb, pdu_start, 1, ENC_BIG_ENDIAN);
@@ -1142,13 +1279,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
   /* Set vector offset */
   if (pdu_flags & ACN_PDU_FLAG_V) {
     /* use new values */
-    vector_offset = offset;
-    last_pdu_offsets->vector = offset;
-    offset++;
+    vector_offset             = offset;
+    last_pdu_offsets->vector  = offset;
+    offset                   += 1;
     pdu_flvh_length++;
   } else {
     /* use last values */
-    vector_offset = last_pdu_offsets->vector;
+    vector_offset             = last_pdu_offsets->vector;
   }
   /* offset should now be pointing to header (if one exists) */
 
@@ -1164,13 +1301,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
   /* Set header offset */
   if (pdu_flags & ACN_PDU_FLAG_H) {
     /* use new values */
-    header_offset = offset;
-    last_pdu_offsets->header = offset;
-    offset++;
+    header_offset             = offset;
+    last_pdu_offsets->header  = offset;
+    offset                   += 1;
     pdu_flvh_length++;
   } else {
     /* use last values */
-    header_offset = last_pdu_offsets->header;
+    header_offset             = last_pdu_offsets->header;
   }
   /* offset should now be pointing to data (if one exists) */
 
@@ -1180,14 +1317,14 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
   /* Adjust data */
   if (pdu_flags & ACN_PDU_FLAG_D) {
     /* use new values */
-    data_offset = offset;
-    data_length = pdu_length - pdu_flvh_length;
-    last_pdu_offsets->data = offset;
+    data_offset                   = offset;
+    data_length                   = pdu_length - pdu_flvh_length;
+    last_pdu_offsets->data        = offset;
     last_pdu_offsets->data_length = data_length;
   } else {
     /* use last values */
-    data_offset = last_pdu_offsets->data;
-    data_length = last_pdu_offsets->data_length;
+    data_offset                   = last_pdu_offsets->data;
+    data_length                   = last_pdu_offsets->data_length;
   }
   end_offset = data_offset + data_length;
 
@@ -1197,8 +1334,8 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
     case ACN_DMP_VECTOR_GET_PROPERTY:
       /* Rip trough property address */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
@@ -1207,13 +1344,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
       /* But, in reality, this generally won't work as we have know way of       */
       /* calculating the next Address-Data pair                                  */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
 
         adt.data_length = data_length - (data_offset - old_offset);
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
@@ -1222,13 +1359,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
       /* But, in reality, this generally won't work as we have know way of       */
       /* calculating the next Address-Data pair                                  */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
 
         adt.data_length = data_length - (data_offset - old_offset);
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
@@ -1237,13 +1374,13 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
       /* But, in reality, this generally won't work as we have know way of       */
       /* calculating the next Address-Data pair                                  */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
 
         adt.data_length = data_length - (data_offset - old_offset);
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_data(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
@@ -1253,8 +1390,8 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
       /* Rip through Actual-Virtual Address Pairs */
       while (data_offset < end_offset) {
         /* actual */
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
         D = ACN_DMP_ADT_EXTRACT_D(adt.flags);
         switch (D) {
@@ -1284,84 +1421,84 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
     case ACN_DMP_VECTOR_UNMAP_PROPERTY:
       /* Rip trough Actaul Proptery Address */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
     case ACN_DMP_VECTOR_SUBSCRIBE:
       /* Rip trough Proptery Address */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
     case ACN_DMP_VECTOR_UNSUBSCRIBE:
       /* Rip trough Proptery Address */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
     case ACN_DMP_VECTOR_GET_PROPERTY_FAIL:
       /* Rip trough Address-Reason Code Pairs */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
 
         adt.data_length = data_length - (data_offset - old_offset);
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
     case ACN_DMP_VECTOR_SET_PROPERTY_FAIL:
       /* Rip trough Address-Reason Code Pairs */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
 
         adt.data_length = data_length - (data_offset - old_offset);
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
     case ACN_DMP_VECTOR_MAP_PROPERTY_FAIL:
       /* Rip trough Address-Reason Code Pairs */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
 
         adt.data_length = data_length - (data_offset - old_offset);
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
     case ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT:
       /* Rip through Property Addrsses */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
     case ACN_DMP_VECTOR_SUBSCRIBE_REJECT:
       /* Rip trough Address-Reason Code Pairs */
       while (data_offset < end_offset) {
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_address(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
 
         adt.data_length = data_length - (data_offset - old_offset);
-        old_offset = data_offset;
-        data_offset = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
+        old_offset      = data_offset;
+        data_offset     = acn_add_dmp_reason_codes(tvb, pinfo, pdu_tree, data_offset, &adt);
         if (old_offset == data_offset) break;
       }
       break;
@@ -1371,7 +1508,7 @@ dissect_acn_dmp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int off
     case ACN_DMP_VECTOR_ALLOCATE_MAP_REPLY:
       /* Single reason code  */
       proto_tree_add_item(pdu_tree, hf_acn_dmp_reason_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
-      data_offset++;
+      data_offset += 1;
     case ACN_DMP_VECTOR_DEALLOCATE_MAP:
       /* No data for this */
       break;
@@ -1387,40 +1524,40 @@ static guint32
 dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree _U_, int offset, acn_pdu_offsets *last_pdu_offsets)
 {
   /* common to all pdu */
-  guint8 pdu_flags;
-  guint32 pdu_start;
-  guint32 pdu_length;
-  guint32 pdu_flvh_length; /* flags, length, vector, header */
-  guint8 octet;
-  guint32 length1;
-  guint32 length2;
-  guint32 length3;
-  guint32 vector_offset;
-  guint32 data_offset;
-  guint32 data_length;
-
-  proto_item *ti, *pi;
-  proto_tree *pdu_tree = NULL;
-  proto_tree *flag_tree = NULL;
+  guint8       pdu_flags;
+  guint32      pdu_start;
+  guint32      pdu_length;
+  guint32      pdu_flvh_length; /* flags, length, vector, header */
+  guint8       octet;
+  guint32      length1;
+  guint32      length2;
+  guint32      length3;
+  guint32      vector_offset;
+  guint32      data_offset;
+  guint32      data_length;
+
+  proto_item  *ti, *pi;
+  proto_tree  *pdu_tree  = NULL;
+  proto_tree  *flag_tree = NULL;
 
   /* this pdu */
   const gchar *name;
-  guint32 vector;
+  guint32      vector;
 
   /* save start of pdu block */
   pdu_start = offset;
 
   /* get PDU flags and length flag first */
-  octet = tvb_get_guint8(tvb, offset++);
-  pdu_flags =  octet & 0xf0;
-  length1 = octet & 0x0f;                   /* bottom 4 bits only */
-  length2 = tvb_get_guint8(tvb, offset++);
+  octet     = tvb_get_guint8(tvb, offset++);
+  pdu_flags = octet & 0xf0;
+  length1   = octet & 0x0f;     /* bottom 4 bits only */
+  length2   = tvb_get_guint8(tvb, offset++);
 
   /* if length flag is set, then we have a 20 bit length else we have a 12 bit */
   /* flvh = flags, length, vector, header */
   if (pdu_flags & ACN_PDU_FLAG_L) {
     length3 = tvb_get_guint8(tvb, offset);
-    offset++;
+    offset += 1;
     pdu_length = length3 | (length2 << 8) | (length1 << 16);
     pdu_flvh_length = 3;
   } else {
@@ -1449,7 +1586,7 @@ dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
     /* use new values */
     vector_offset = offset;
     last_pdu_offsets->vector = offset;
-    offset++;
+    offset += 1;
     pdu_flvh_length++;
   } else {
     /* use last values */
@@ -1509,7 +1646,7 @@ dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
       proto_tree_add_item(pdu_tree, hf_acn_protocol_id, tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
       proto_tree_add_item(pdu_tree, hf_acn_refuse_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
-      /*data_offset++;*/
+      /*data_offset += 1;*/
       break;
     case ACN_SDT_VECTOR_DISCONNECT:
       /* Protocol ID item */
@@ -1521,7 +1658,7 @@ dissect_acn_sdt_wrapped_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
       proto_tree_add_item(pdu_tree, hf_acn_protocol_id, tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
       proto_tree_add_item(pdu_tree, hf_acn_reason_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
-      /*data_offset++;*/
+      /*data_offset += 1;*/
       break;
 
   }
@@ -1536,47 +1673,47 @@ static guint32
 dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
 {
   /* common to all pdu */
-  guint8 pdu_flags;
-  guint32 pdu_start;
-  guint32 pdu_length;
-  guint32 pdu_flvh_length; /* flags, length, vector, header */
-  acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
-  guint8 octet;
-  guint32 length1;
-  guint32 length2;
-  guint32 length3;
-  guint32 vector_offset;
-  guint32 header_offset;
-  guint32 data_offset;
-  guint32 data_length;
-  guint32 old_offset;
-  guint32 end_offset;
-
-  proto_item *ti, *pi;
-  proto_tree *pdu_tree = NULL;
-  proto_tree *flag_tree = NULL;
+  guint8           pdu_flags;
+  guint32          pdu_start;
+  guint32          pdu_length;
+  guint32          pdu_flvh_length; /* flags, length, vector, header */
+  acn_pdu_offsets  pdu_offsets = {0,0,0,0,0};
+  guint8           octet;
+  guint32          length1;
+  guint32          length2;
+  guint32          length3;
+  guint32          vector_offset;
+  guint32          header_offset;
+  guint32          data_offset;
+  guint32          data_length;
+  guint32          old_offset;
+  guint32          end_offset;
+
+  proto_item      *ti, *pi;
+  proto_tree      *pdu_tree    = NULL;
+  proto_tree      *flag_tree   = NULL;
 
   /* this pdu */
-  const gchar *name;
-  guint32 member_id;
-  guint32 protocol_id;
-  guint16 association;
+  const gchar     *name;
+  guint32          member_id;
+  guint32          protocol_id;
+  guint16          association;
 
   /* save start of pdu block */
-  pdu_start = offset;
+  pdu_start         = offset;
   pdu_offsets.start = pdu_start;
 
   /* get PDU flags and length flag first */
-  octet = tvb_get_guint8(tvb, offset++);
-  pdu_flags =  octet & 0xf0;
-  length1 = octet & 0x0f;                   /* bottom 4 bits only */
-  length2 = tvb_get_guint8(tvb, offset++);
+  octet     = tvb_get_guint8(tvb, offset++);
+  pdu_flags = octet & 0xf0;
+  length1   = octet & 0x0f;     /* bottom 4 bits only */
+  length2   = tvb_get_guint8(tvb, offset++);
 
   /* if length flag is set, then we have a 20 bit length else we have a 12 bit */
   /* flvh = flags, length, vector, header */
   if (pdu_flags & ACN_PDU_FLAG_L) {
     length3 = tvb_get_guint8(tvb, offset);
-    offset++;
+    offset += 1;
     pdu_length = length3 | (length2 << 8) | (length1 << 16);
     pdu_flvh_length = 3;
   } else {
@@ -1586,7 +1723,7 @@ dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
   /* offset should now be pointing to vector (if one exists) */
 
   /* Add pdu item and tree */
-  ti = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
+  ti       = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
   pdu_tree = proto_item_add_subtree(ti, ett_acn_sdt_client_pdu);
 
   /* Add flag item and tree */
@@ -1620,13 +1757,13 @@ dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
   /* Set header offset */
   if (pdu_flags & ACN_PDU_FLAG_H) {
     /* use new values */
-    header_offset = offset;
-    last_pdu_offsets->header = offset;
-    offset += 6;
-    pdu_flvh_length += 6;
+    header_offset             = offset;
+    last_pdu_offsets->header  = offset;
+    offset                   += 6;
+    pdu_flvh_length          += 6;
   } else {
     /* use last values */
-    header_offset = last_pdu_offsets->header;
+    header_offset             = last_pdu_offsets->header;
   }
   /* offset should now be pointing to data (if one exists) */
 
@@ -1662,14 +1799,14 @@ dissect_acn_sdt_client_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
   switch (protocol_id) {
     case ACN_PROTOCOL_ID_SDT:
       while (data_offset < end_offset) {
-        old_offset = data_offset;
+        old_offset  = data_offset;
         data_offset = dissect_acn_sdt_wrapped_pdu(tvb, pinfo, pdu_tree, data_offset, &pdu_offsets);
         if (old_offset == data_offset) break;
       }
       break;
     case ACN_PROTOCOL_ID_DMP:
       while (data_offset < end_offset) {
-        old_offset = data_offset;
+        old_offset  = data_offset;
         data_offset = dissect_acn_dmp_pdu(tvb, pinfo, pdu_tree, data_offset, &pdu_offsets);
         if (data_offset == old_offset) break;
       }
@@ -1701,7 +1838,7 @@ ltos(guint8 level, gchar *string, guint8 base, gchar leading_char, guint8 min_ch
   }
   /* deal with zeros */
   if ((level == 0) && (!show_zero)) {
-    for (i=0;i<min_chars;i++) {
+    for (i=0; i<min_chars; i++) {
       string[i] = '.';
     }
     string[i++] = ' ';
@@ -1716,7 +1853,7 @@ ltos(guint8 level, gchar *string, guint8 base, gchar leading_char, guint8 min_ch
   } while ((level /= base) > 0);
 
   /* expand to needed character */
-  for (;i<min_chars;i++) {
+  for (; i<min_chars; i++) {
     string[i] = leading_char;
   }
   /* terminate */
@@ -1739,43 +1876,42 @@ static guint32
 dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
 {
   /* common to all pdu */
-  guint8 pdu_flags;
-  guint32 pdu_start;
-  guint32 pdu_length;
-  guint32 pdu_flvh_length; /* flags, length, vector, header */
-  guint8 octet;
-  guint32 length1;
-  guint32 length2;
-  guint32 length3;
-  guint32 vector_offset;
-  guint32 data_offset;
-  guint32 end_offset;
-  guint32 data_length;
-  guint32 header_offset;
-  guint32 total_cnt;
-  guint32 item_cnt;
-
-
-  proto_item *ti, *pi;
-  proto_tree *pdu_tree = NULL;
-  proto_tree *flag_tree = NULL;
+  guint8            pdu_flags;
+  guint32           pdu_start;
+  guint32           pdu_length;
+  guint32           pdu_flvh_length; /* flags, length, vector, header */
+  guint8            octet;
+  guint32           length1;
+  guint32           length2;
+  guint32           length3;
+  guint32           vector_offset;
+  guint32           data_offset;
+  guint32           end_offset;
+  guint32           data_length;
+  guint32           header_offset;
+  guint32           total_cnt;
+  guint32           item_cnt;
+
+  proto_item       *ti, *pi;
+  proto_tree       *pdu_tree  = NULL;
+  proto_tree       *flag_tree = NULL;
 /*  proto_tree *addr_tree = NULL; */
 
 /* this pdu */
-  acn_dmp_adt_type adt = {0,0,0,0,0,0};
-  const gchar *name;
-  guint32 vector;
-  gchar buffer[BUFFER_SIZE];
-  char *buf_ptr;
-  guint32 x;
-  guint8 level;
-  guint8  min_char;
-  guint8  base;
-  gchar   leading_char;
-  guint8  perline;
-  guint8  halfline;
-  guint16 dmx_count;
-  guint16 dmx_start_code;
+  acn_dmp_adt_type  adt       = {0,0,0,0,0,0};
+  const gchar      *name;
+  guint32           vector;
+  gchar             buffer[BUFFER_SIZE];
+  char             *buf_ptr;
+  guint32           x;
+  guint8            level;
+  guint8            min_char;
+  guint8            base;
+  gchar             leading_char;
+  guint8            perline;
+  guint8            halfline;
+  guint16           dmx_count;
+  guint16           dmx_start_code;
 
   buffer[0] = 0;
 
@@ -1783,16 +1919,16 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
   pdu_start = offset;
 
   /* get PDU flags and length flag first */
-  octet = tvb_get_guint8(tvb, offset++);
-  pdu_flags =  octet & 0xf0;
-  length1 = octet & 0x0f;                   /* bottom 4 bits only */
-  length2 = tvb_get_guint8(tvb, offset++);
+  octet     = tvb_get_guint8(tvb, offset++);
+  pdu_flags = octet & 0xf0;
+  length1   = octet & 0x0f;     /* bottom 4 bits only */
+  length2   = tvb_get_guint8(tvb, offset++);
 
   /* if length flag is set, then we have a 20 bit length else we have a 12 bit */
   /* flvh = flags, length, vector, header */
   if (pdu_flags & ACN_PDU_FLAG_L) {
     length3 = tvb_get_guint8(tvb, offset);
-    offset++;
+    offset += 1;
     pdu_length = length3 | (length2 << 8) | (length1 << 16);
     pdu_flvh_length = 3;
   } else {
@@ -1802,11 +1938,11 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
   /* offset should now be pointing to vector (if one exists) */
 
   /* Add pdu item and tree */
-  ti = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
+  ti       = proto_tree_add_item(tree, hf_acn_pdu, tvb, pdu_start, pdu_length, ENC_NA);
   pdu_tree = proto_item_add_subtree(ti, ett_acn_dmx_data_pdu);
 
   /* Add flag item and tree */
-  pi = proto_tree_add_uint(pdu_tree, hf_acn_pdu_flags, tvb, pdu_start, 1, pdu_flags);
+  pi        = proto_tree_add_uint(pdu_tree, hf_acn_pdu_flags, tvb, pdu_start, 1, pdu_flags);
   flag_tree = proto_item_add_subtree(pi, ett_acn_pdu_flags);
   proto_tree_add_item(flag_tree, hf_acn_pdu_flag_l, tvb, pdu_start, 1, ENC_BIG_ENDIAN);
   proto_tree_add_item(flag_tree, hf_acn_pdu_flag_v, tvb, pdu_start, 1, ENC_BIG_ENDIAN);
@@ -1843,7 +1979,7 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
     /* use new values */
     header_offset = offset;
     last_pdu_offsets->header = offset;
-    offset++;
+    offset += 1;
     pdu_flvh_length++;
   } else {
     /* use last values */
@@ -1871,7 +2007,7 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
   switch (vector) {
     case ACN_DMP_VECTOR_SET_PROPERTY:
       dmx_start_code = tvb_get_ntohs(tvb, data_offset);
-      if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+      if (protocol_id==ACN_PROTOCOL_ID_DMX_2) {
         proto_tree_add_item(pdu_tree, hf_acn_dmx_2_first_property_address, tvb, data_offset, 2, ENC_BIG_ENDIAN);
       } else{
         proto_tree_add_item(pdu_tree, hf_acn_dmx_start_code, tvb, data_offset, 2, ENC_BIG_ENDIAN);
@@ -1879,25 +2015,25 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
       data_offset += 2;
       proto_tree_add_item(pdu_tree, hf_acn_dmx_increment, tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      dmx_count = tvb_get_ntohs(tvb, data_offset);
+      dmx_count    = tvb_get_ntohs(tvb, data_offset);
       proto_tree_add_item(pdu_tree, hf_acn_dmx_count, tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
 
-      if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+      if (protocol_id==ACN_PROTOCOL_ID_DMX_2) {
         proto_tree_add_item(pdu_tree, hf_acn_dmx_2_start_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
         data_offset += 1;
-        dmx_count -= 1;
+        dmx_count   -= 1;
       }
 
       buf_ptr = buffer;
 
       switch (global_acn_dmx_display_line_format) {
         case ACN_PREF_DMX_DISPLAY_16PL:
-          perline = 16;
+          perline  = 16;
           halfline = 8;
           break;
         default:
-          perline = 20;
+          perline  = 20;
           halfline = 10;
       }
 
@@ -1905,12 +2041,12 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
       switch ((guint)global_acn_dmx_display_view) {
         case ACN_PREF_DMX_DISPLAY_HEX:
           min_char = 2;
-          base = 16;
+          base     = 16;
           break;
 /*        case ACN_PREF_DMX_DISPLAY_PER: */
         default:
           min_char = 3;
-          base = 10;
+          base     = 10;
       }
 
       /* do we display leading zeros */
@@ -1934,7 +2070,7 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
       g_snprintf(buffer, BUFFER_SIZE, "%-10s: ", "Data...");
 
       buf_ptr += 9;
-      for (x=1;x<=perline;x++) {
+      for (x=1; x<=perline; x++) {
         buf_ptr = ltos((guint8)x, buf_ptr, 10, ' ', min_char, FALSE);
         if (x==halfline) {
           *buf_ptr++ =  '|';
@@ -1950,7 +2086,7 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
 
       total_cnt = 0;
       item_cnt = 0;
-      for (x=data_offset; x < end_offset; x++) {
+      for (x=data_offset; x<end_offset; x++) {
         level = tvb_get_guint8(tvb, x);
         if (global_acn_dmx_display_view==ACN_PREF_DMX_DISPLAY_PER) {
           if ((level > 0) && (level < 3)) {
@@ -1971,11 +2107,11 @@ dissect_acn_dmx_data_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo,
           buf_ptr = buffer + 9;
           item_cnt = 0;
         } else {
-          /* add separater character */
+          /* add separator character */
           if (item_cnt == halfline) {
             *buf_ptr++ = '|';
             *buf_ptr++ = ' ';
-            *buf_ptr = '\0';
+            *buf_ptr   = '\0';
           }
         }
       }
@@ -2002,48 +2138,48 @@ static guint32
 dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
 {
   /* common to all pdu */
-  guint8 pdu_flags;
-  guint32 pdu_start;
-  guint32 pdu_length;
-  guint32 pdu_flvh_length; /* flags, length, vector, header */
-  acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
-  guint8 octet;
-  guint8 option_flags;
-  guint32 length1;
-  guint32 length2;
-  guint32 length3;
-  guint32 vector_offset;
-  guint32 data_offset;
-  guint32 data_length;
-
-  proto_item *ti, *pi;
-  proto_tree *pdu_tree = NULL;
-  proto_tree *flag_tree = NULL;
-
-  const char *name;
+  guint8           pdu_flags;
+  guint32          pdu_start;
+  guint32          pdu_length;
+  guint32          pdu_flvh_length; /* flags, length, vector, header */
+  acn_pdu_offsets  pdu_offsets = {0,0,0,0,0};
+  guint8           octet;
+  guint8           option_flags;
+  guint32          length1;
+  guint32          length2;
+  guint32          length3;
+  guint32          vector_offset;
+  guint32          data_offset;
+  guint32          data_length;
+
+  proto_item      *ti, *pi;
+  proto_tree      *pdu_tree    = NULL;
+  proto_tree      *flag_tree   = NULL;
+
+  const char      *name;
 
 /* this pdu */
-  guint32 vector;
+  guint32          vector;
 
-  guint32 universe;
-  guint32 priority;
-  guint32 sequence;
+  guint32          universe;
+  guint32          priority;
+  guint32          sequence;
 
   /* save start of pdu block */
   pdu_start = offset;
   pdu_offsets.start = pdu_start;
 
   /* get PDU flags and length flag first */
-  octet = tvb_get_guint8(tvb, offset++);
-  pdu_flags =  octet & 0xf0;
-  length1 = octet & 0x0f;                   /* bottom 4 bits only */
-  length2 = tvb_get_guint8(tvb, offset++);
+  octet     = tvb_get_guint8(tvb, offset++);
+  pdu_flags = octet & 0xf0;
+  length1   = octet & 0x0f;     /* bottom 4 bits only */
+  length2   = tvb_get_guint8(tvb, offset++);
 
   /* if length flag is set, then we have a 20 bit length else we have a 12 bit */
   /* flvh = flags, length, vector, header */
   if (pdu_flags & ACN_PDU_FLAG_L) {
     length3 = tvb_get_guint8(tvb, offset);
-    offset++;
+    offset += 1;
     pdu_length = length3 | (length2 << 8) | (length1 << 16);
     pdu_flvh_length = 3;
   } else {
@@ -2073,7 +2209,7 @@ dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, prot
     /* use new values */
     vector_offset = offset;
     last_pdu_offsets->vector = offset;
-    offset += 4;
+    offset          += 4;
     pdu_flvh_length += 4;
   } else {
     /* use last values */
@@ -2108,7 +2244,7 @@ dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, prot
   /* process based on vector */
   switch (vector) {
     case 0x02:
-      if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+      if (protocol_id==ACN_PROTOCOL_ID_DMX_2) {
         proto_tree_add_item(pdu_tree, hf_acn_dmx_source_name, tvb, data_offset, 64, ENC_UTF_8|ENC_NA);
         data_offset += 64;
       } else{
@@ -2120,7 +2256,7 @@ dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, prot
       proto_tree_add_item(pdu_tree, hf_acn_dmx_priority, tvb, data_offset, 1, ENC_BIG_ENDIAN);
       data_offset += 1;
 
-      if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+      if (protocol_id==ACN_PROTOCOL_ID_DMX_2) {
         proto_tree_add_item(pdu_tree, hf_acn_dmx_2_reserved, tvb, data_offset, 2, ENC_BIG_ENDIAN);
         data_offset += 2;
       }
@@ -2129,7 +2265,7 @@ dissect_acn_dmx_pdu(guint32 protocol_id, tvbuff_t *tvb, packet_info *pinfo, prot
       proto_tree_add_item(pdu_tree, hf_acn_dmx_sequence_number, tvb, data_offset, 1, ENC_BIG_ENDIAN);
       data_offset += 1;
 
-      if(protocol_id==ACN_PROTOCOL_ID_DMX_2){
+      if (protocol_id == ACN_PROTOCOL_ID_DMX_2) {
         option_flags = tvb_get_guint8(tvb, data_offset);
         pi = proto_tree_add_uint(pdu_tree, hf_acn_dmx_2_options, tvb, data_offset, 1, option_flags);
         flag_tree = proto_item_add_subtree(pi, ett_acn_dmx_2_options);
@@ -2159,46 +2295,46 @@ static guint32
 dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
 {
   /* common to all pdu */
-  guint8 pdu_flags;
-  guint32 pdu_start;
-  guint32 pdu_length;
-  guint32 pdu_flvh_length; /* flags, length, vector, header */
-  acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
-  guint8 octet;
-  guint32 length1;
-  guint32 length2;
-  guint32 length3;
-  guint32 vector_offset;
-  guint32 data_offset;
-  guint32 end_offset;
-  guint32 old_offset;
-  guint32 data_length;
-
-  proto_item *ti, *pi;
-  proto_tree *pdu_tree = NULL;
-  proto_tree *flag_tree = NULL;
+  guint8           pdu_flags;
+  guint32          pdu_start;
+  guint32          pdu_length;
+  guint32          pdu_flvh_length; /* flags, length, vector, header */
+  acn_pdu_offsets  pdu_offsets = {0,0,0,0,0};
+  guint8           octet;
+  guint32          length1;
+  guint32          length2;
+  guint32          length3;
+  guint32          vector_offset;
+  guint32          data_offset;
+  guint32          end_offset;
+  guint32          old_offset;
+  guint32          data_length;
+
+  proto_item      *ti, *pi;
+  proto_tree      *pdu_tree    = NULL;
+  proto_tree      *flag_tree   = NULL;
 
   /* this pdu */
-  const gchar *name;
-  guint32 vector;
-  guint32 member_id;
+  const gchar     *name;
+  guint32          vector;
+  guint32          member_id;
 
   /* save start of pdu block */
-  pdu_start = offset;
+  pdu_start         = offset;
   pdu_offsets.start = pdu_start;
 
   /* get PDU flags and length flag first */
-  octet = tvb_get_guint8(tvb, offset++);
-  pdu_flags =  octet & 0xf0;
-  length1 = octet & 0x0f;                   /* bottom 4 bits only */
-  length2 = tvb_get_guint8(tvb, offset++);
+  octet     = tvb_get_guint8(tvb, offset++);
+  pdu_flags = octet & 0xf0;
+  length1   = octet & 0x0f;     /* bottom 4 bits only */
+  length2   = tvb_get_guint8(tvb, offset++);
 
   /* if length flag is set, then we have a 20 bit length else we have a 12 bit */
   /* flvh = flags, length, vector, header */
   if (pdu_flags & ACN_PDU_FLAG_L) {
     length3 = tvb_get_guint8(tvb, offset);
-    offset++;
-    pdu_length = length3 | (length2 << 8) | (length1 << 16);
+    offset += 1;
+    pdu_length      = length3 | (length2 << 8) | (length1 << 16);
     pdu_flvh_length = 3;
   } else {
     pdu_length = length2 | (length1 << 8);
@@ -2226,7 +2362,7 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
     /* use new values */
     vector_offset = offset;
     last_pdu_offsets->vector = offset;
-    offset++;
+    offset += 1;
     pdu_flvh_length++;
   } else {
     /* use last values */
@@ -2265,19 +2401,19 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
       break;
     case ACN_SDT_VECTOR_REL_WRAP:
     case ACN_SDT_VECTOR_UNREL_WRAP:
-      proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_channel_number,           tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_total_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_total_sequence_number,    tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
       proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
       proto_tree_add_item(pdu_tree, hf_acn_oldest_available_wrapper, tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
-      proto_tree_add_item(pdu_tree, hf_acn_first_memeber_to_ack, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_first_memeber_to_ack,     tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_last_memeber_to_ack, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_last_memeber_to_ack,      tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_mak_threshold, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_mak_threshold,            tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
 
       while (data_offset < end_offset) {
@@ -2289,15 +2425,15 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
     case ACN_SDT_VECTOR_CHANNEL_PARAMS:
       break;
     case ACN_SDT_VECTOR_JOIN:
-      proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_cid,                      tvb, data_offset, 16, ENC_BIG_ENDIAN);
       data_offset += 16;
-      proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_member_id,                tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_channel_number,           tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_reciprocal_channel, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_reciprocal_channel,       tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_total_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_total_sequence_number,    tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
       proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
@@ -2306,16 +2442,16 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
       /*data_offset =*/ acn_add_expiry(tvb, pinfo, pdu_tree, data_offset, "Ad-hoc Expiry:");
       break;
     case ACN_SDT_VECTOR_JOIN_REFUSE:
-      pi = proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
+      pi = proto_tree_add_item(pdu_tree, hf_acn_cid,                  tvb, data_offset, 16, ENC_BIG_ENDIAN);
       data_offset += 16;
       proto_item_append_text(pi, "(Leader)");
-      proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_channel_number,            tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_member_id,                 tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number,  tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
-      proto_tree_add_item(pdu_tree, hf_acn_refuse_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_refuse_code,               tvb, data_offset, 1, ENC_BIG_ENDIAN);
       /*data_offset ++;*/
       break;
     case ACN_SDT_VECTOR_JOIN_ACCEPT:
@@ -2334,17 +2470,17 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
     case ACN_SDT_VECTOR_LEAVE:
       break;
     case ACN_SDT_VECTOR_LEAVING:
-      pi = proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
+      pi = proto_tree_add_item(pdu_tree, hf_acn_cid,                 tvb, data_offset, 16, ENC_BIG_ENDIAN);
       data_offset += 16;
       proto_item_append_text(pi, "(Leader)");
-      proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_channel_number,           tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_member_id,                tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
       proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
-      proto_tree_add_item(pdu_tree, hf_acn_reason_code, tvb, data_offset, 1, ENC_BIG_ENDIAN);
-      offset++;
+      proto_tree_add_item(pdu_tree, hf_acn_reason_code,              tvb, data_offset, 1, ENC_BIG_ENDIAN);
+      offset += 1;
       break;
     case ACN_SDT_VECTOR_CONNECT:
       break;
@@ -2359,18 +2495,18 @@ dissect_acn_sdt_base_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, in
     case ACN_SDT_VECTOR_ACK:
       break;
     case ACN_SDT_VECTOR_NAK:
-      pi = proto_tree_add_item(pdu_tree, hf_acn_cid, tvb, data_offset, 16, ENC_BIG_ENDIAN);
+      pi = proto_tree_add_item(pdu_tree, hf_acn_cid,                 tvb, data_offset, 16, ENC_BIG_ENDIAN);
       data_offset += 16;
       proto_item_append_text(pi, "(Leader)");
-      proto_tree_add_item(pdu_tree, hf_acn_channel_number, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_channel_number,           tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
-      proto_tree_add_item(pdu_tree, hf_acn_member_id, tvb, data_offset, 2, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_member_id,                tvb, data_offset, 2, ENC_BIG_ENDIAN);
       data_offset += 2;
       proto_tree_add_item(pdu_tree, hf_acn_reliable_sequence_number, tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
-      proto_tree_add_item(pdu_tree, hf_acn_first_missed_sequence, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_first_missed_sequence,    tvb, data_offset, 4, ENC_BIG_ENDIAN);
       data_offset += 4;
-      proto_tree_add_item(pdu_tree, hf_acn_last_missed_sequence, tvb, data_offset, 4, ENC_BIG_ENDIAN);
+      proto_tree_add_item(pdu_tree, hf_acn_last_missed_sequence,     tvb, data_offset, 4, ENC_BIG_ENDIAN);
       /*data_offset += 4;*/
       break;
     case ACN_SDT_VECTOR_GET_SESSION:
@@ -2399,45 +2535,45 @@ static guint32
 dissect_acn_root_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, acn_pdu_offsets *last_pdu_offsets)
 {
   /* common to all pdu */
-  guint8 pdu_flags;
-  guint32 pdu_start;
-  guint32 pdu_length;
-  guint32 pdu_flvh_length; /* flags, length, vector, header */
-  acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
-  guint8 octet;
-  guint32 length1;
-  guint32 length2;
-  guint32 length3;
-  guint32 vector_offset;
-  guint32 header_offset;
-  guint32 data_offset;
-  guint32 end_offset;
-  guint32 old_offset;
-  guint32 data_length;
-
-  proto_item *ti, *pi;
-  proto_tree *pdu_tree = NULL;
-  proto_tree *flag_tree = NULL;
+  guint8           pdu_flags;
+  guint32          pdu_start;
+  guint32          pdu_length;
+  guint32          pdu_flvh_length; /* flags, length, vector, header */
+  acn_pdu_offsets  pdu_offsets = {0,0,0,0,0};
+  guint8           octet;
+  guint32          length1;
+  guint32          length2;
+  guint32          length3;
+  guint32          vector_offset;
+  guint32          header_offset;
+  guint32          data_offset;
+  guint32          end_offset;
+  guint32          old_offset;
+  guint32          data_length;
+
+  proto_item      *ti, *pi;
+  proto_tree      *pdu_tree    = NULL;
+  proto_tree      *flag_tree   = NULL;
 
   /* this pdu */
-  guint32 protocol_id;
-  e_guid_t guid;
+  guint32          protocol_id;
+  e_guid_t         guid;
 
   /* save start of pdu block */
-  pdu_start = offset;
+  pdu_start         = offset;
   pdu_offsets.start = pdu_start;
 
   /* get PDU flags and length flag first */
-  octet = tvb_get_guint8(tvb, offset++);
-  pdu_flags =  octet & 0xf0;
-  length1 = octet & 0x0f;                   /* bottom 4 bits only */
-  length2 = tvb_get_guint8(tvb, offset++);
+  octet     = tvb_get_guint8(tvb, offset++);
+  pdu_flags = octet & 0xf0;
+  length1   = octet & 0x0f;     /* bottom 4 bits only */
+  length2   = tvb_get_guint8(tvb, offset++);
 
   /* if length flag is set, then we have a 20 bit length else we have a 12 bit */
   /* flvh = flags, length, vector, header */
   if (pdu_flags & ACN_PDU_FLAG_L) {
     length3 = tvb_get_guint8(tvb, offset);
-    offset++;
+    offset += 1;
     pdu_length = length3 | (length2 << 8) | (length1 << 16);
     pdu_flvh_length = 3;
   } else {
@@ -2587,12 +2723,12 @@ dissect_acn_root_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
 static int
 dissect_acn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 {
-  proto_item *ti = NULL;
-  proto_tree *acn_tree = NULL;
-  guint32 data_offset = 0;
-  guint32 old_offset;
-  guint32 end_offset;
-  acn_pdu_offsets pdu_offsets = {0,0,0,0,0};
+  proto_item      *ti          = NULL;
+  proto_tree      *acn_tree    = NULL;
+  guint32          data_offset = 0;
+  guint32          old_offset;
+  guint32          end_offset;
+  acn_pdu_offsets  pdu_offsets = {0,0,0,0,0};
 
 /*   if (!is_acn(tvb)) { */
 /*     return 0;         */
@@ -2628,7 +2764,8 @@ dissect_acn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 
 /******************************************************************************/
 /* Register protocol                                                          */
-void proto_register_acn(void)
+void
+proto_register_acn(void)
 {
   static hf_register_info hf[] = {
     /**************************************************************************/
diff --git a/epan/dissectors/packet-acn.h b/epan/dissectors/packet-acn.h
deleted file mode 100644 (file)
index b7c3206..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-/* packet-acn.h
- * Routines for ACN packet disassembly
- *
- * $Id$
- *
- * Copyright (c) 2003 by Erwin Rol <erwin@erwinrol.com>
- * Copyright (c) 2006 by Electronic Theatre Controls, Inc.
- *                    Bill Florac <bflorac@etcconnect.com>
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * 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.
- */
-#ifndef PACKET_ACN_H__
-#define PACKET_ACN_H__
-
-/* pdu flags */
-#define ACN_PDU_FLAG_L         0x80
-#define ACN_PDU_FLAG_V         0x40
-#define ACN_PDU_FLAG_H         0x20
-#define ACN_PDU_FLAG_D         0x10
-
-#define ACN_DMX_OPTION_P    0x80
-#define ACN_DMX_OPTION_S    0x40
-
-#define ACN_DMP_ADT_FLAG_V     0x80    /* V = Specifies whether address is a virtual address or not. */
-#define ACN_DMP_ADT_FLAG_R     0x40    /* R = Specifies whether address is relative to last valid address in packet or not. */
-#define ACN_DMP_ADT_FLAG_D     0x30    /* D1, D0 = Specify non-range or range address, single data, equal size or mixed size data array */
-#define ACN_DMP_ADT_EXTRACT_D(f)       (((f) & ACN_DMP_ADT_FLAG_D) >> 4)       
-#define ACN_DMP_ADT_FLAG_X     0x0c    /* X1, X0 = These bits are reserved and their values shall be set to 0 when encoded. Their values shall be ignored when decoding. */
-#define ACN_DMP_ADT_FLAG_A     0x03    /* A1, A0 = Size of Address elements */
-#define ACN_DMP_ADT_EXTRACT_A(f)       ((f) & ACN_DMP_ADT_FLAG_A)
-
-#define ACN_DMP_ADT_V_VIRTUAL   0
-#define ACN_DMP_ADT_V_ACTUAL    1
-
-#define ACN_DMP_ADT_R_ABSOLUTE  0
-#define ACN_DMP_ADT_R_RELATIVE  1
-
-#define ACN_DMP_ADT_D_NS        0
-#define ACN_DMP_ADT_D_RS        1
-#define ACN_DMP_ADT_D_RE        2
-#define ACN_DMP_ADT_D_RM        3
-#define ACN_DMP_ADT_A_1         0
-#define ACN_DMP_ADT_A_2         1
-#define ACN_DMP_ADT_A_4         2
-#define ACN_DMP_ADT_A_R         3
-
-#define ACN_PROTOCOL_ID_SDT           1
-#define ACN_PROTOCOL_ID_DMP           2
-#define ACN_PROTOCOL_ID_DMX           3
-#define ACN_PROTOCOL_ID_DMX_2         4
-
-#define ACN_ADDR_NULL                 0
-#define ACN_ADDR_IPV4                 1
-#define ACN_ADDR_IPV6                 2
-#define ACN_ADDR_IPPORT               3
-
-/* STD Messages */
-#define ACN_SDT_VECTOR_UNKNOWN        0
-#define ACN_SDT_VECTOR_REL_WRAP       1
-#define ACN_SDT_VECTOR_UNREL_WRAP     2
-#define ACN_SDT_VECTOR_CHANNEL_PARAMS 3
-#define ACN_SDT_VECTOR_JOIN           4
-#define ACN_SDT_VECTOR_JOIN_REFUSE    5
-#define ACN_SDT_VECTOR_JOIN_ACCEPT    6
-#define ACN_SDT_VECTOR_LEAVE          7
-#define ACN_SDT_VECTOR_LEAVING        8
-#define ACN_SDT_VECTOR_CONNECT        9
-#define ACN_SDT_VECTOR_CONNECT_ACCEPT 10
-#define ACN_SDT_VECTOR_CONNECT_REFUSE 11
-#define ACN_SDT_VECTOR_DISCONNECT     12
-#define ACN_SDT_VECTOR_DISCONNECTING  13
-#define ACN_SDT_VECTOR_ACK            14
-#define ACN_SDT_VECTOR_NAK            15
-#define ACN_SDT_VECTOR_GET_SESSION    16
-#define ACN_SDT_VECTOR_SESSIONS       17
-
-#define ACN_REFUSE_CODE_NONSPECIFIC     1
-#define ACN_REFUSE_CODE_ILLEGAL_PARAMS  2  
-#define ACN_REFUSE_CODE_LOW_RESOURCES   3
-#define ACN_REFUSE_CODE_ALREADY_MEMBER  4  
-#define ACN_REFUSE_CODE_BAD_ADDR_TYPE   5
-#define ACN_REFUSE_CODE_NO_RECIP_CHAN   6
-
-#define ACN_REASON_CODE_NONSPECIFIC         1
-/*#define ACN_REASON_CODE_                  2 */
-/*#define ACN_REASON_CODE_                  3 */
-/*#define ACN_REASON_CODE_                  4 */
-/*#define ACN_REASON_CODE_                  5 */
-#define ACN_REASON_CODE_NO_RECIP_CHAN       6
-#define ACN_REASON_CODE_CHANNEL_EXPIRED     7
-#define ACN_REASON_CODE_LOST_SEQUENCE       8
-#define ACN_REASON_CODE_SATURATED           9
-#define ACN_REASON_CODE_TRANS_ADDR_CHANGING 10
-#define ACN_REASON_CODE_ASKED_TO_LEAVE      11
-#define ACN_REASON_CODE_NO_RECIPIENT        12
-
-#define ACN_DMP_VECTOR_UNKNOWN              0
-#define ACN_DMP_VECTOR_GET_PROPERTY         1
-#define ACN_DMP_VECTOR_SET_PROPERTY         2
-#define ACN_DMP_VECTOR_GET_PROPERTY_REPLY   3
-#define ACN_DMP_VECTOR_EVENT                4
-#define ACN_DMP_VECTOR_MAP_PROPERTY         5
-#define ACN_DMP_VECTOR_UNMAP_PROPERTY       6
-#define ACN_DMP_VECTOR_SUBSCRIBE            7
-#define ACN_DMP_VECTOR_UNSUBSCRIBE          8
-#define ACN_DMP_VECTOR_GET_PROPERTY_FAIL    9
-#define ACN_DMP_VECTOR_SET_PROPERTY_FAIL    10
-#define ACN_DMP_VECTOR_MAP_PROPERTY_FAIL    11
-#define ACN_DMP_VECTOR_SUBSCRIBE_ACCEPT     12
-#define ACN_DMP_VECTOR_SUBSCRIBE_REJECT     13
-#define ACN_DMP_VECTOR_ALLOCATE_MAP         14
-#define ACN_DMP_VECTOR_ALLOCATE_MAP_REPLY   15
-#define ACN_DMP_VECTOR_DEALLOCATE_MAP       16
-
-#define ACN_DMP_REASON_CODE_NONSPECIFIC                 1
-#define ACN_DMP_REASON_CODE_NOT_A_PROPERTY              2
-#define ACN_DMP_REASON_CODE_WRITE_ONLY                  3
-#define ACN_DMP_REASON_CODE_NOT_WRITABLE                4
-#define ACN_DMP_REASON_CODE_DATA_ERROR                  5
-#define ACN_DMP_REASON_CODE_MAPS_NOT_SUPPORTED          6
-#define ACN_DMP_REASON_CODE_SPACE_NOT_AVAILABLE         7
-#define ACN_DMP_REASON_CODE_PROP_NOT_MAPPABLE           8
-#define ACN_DMP_REASON_CODE_MAP_NOT_ALLOCATED           9
-#define ACN_DMP_REASON_CODE_SUBSCRIPTION_NOT_SUPPORTED  10
-#define ACN_DMP_REASON_CODE_NO_SUBSCRIPTIONS_SUPPORTED  11
-
-
-
-#define ACN_DMX_VECTOR      2
-
-#define ACN_PREF_DMX_DISPLAY_HEX  0
-#define ACN_PREF_DMX_DISPLAY_DEC  1
-#define ACN_PREF_DMX_DISPLAY_PER  2
-
-#define ACN_PREF_DMX_DISPLAY_20PL 0
-#define ACN_PREF_DMX_DISPLAY_16PL 1
-
-typedef struct 
-{
-  guint32 start;
-  guint32 vector;
-  guint32 header;
-  guint32 data;
-  guint32 data_length;
-} acn_pdu_offsets;
-
-typedef struct
-{
-  guint8  flags;
-  guint32 address;  /* or first address */
-  guint32 increment;
-  guint32 count;
-  guint32 size;
-  guint32 data_length;
-} acn_dmp_adt_type;
-
-#endif /* !PACKET_ACN_H */
index b1c1f61b33842f09bc28af075e810c6a21488a48..7880e6fe2a220f83e82d5349fcd1e39b27c18e69 100644 (file)
 #endif
 
 #include <stdio.h>
-
 #include <string.h>
+
 #include <glib.h>
+
 #include <epan/packet.h>
 #include <epan/conversation.h>
 #include <epan/addr_resolv.h>
 #include <epan/strutil.h>
 
 #include "packet-rx.h"
-#include "packet-afs.h"
+
+#define AFS_PORT_FS     7000
+#define AFS_PORT_CB     7001
+#define AFS_PORT_PROT   7002
+#define AFS_PORT_VLDB   7003
+#define AFS_PORT_KAUTH  7004
+#define AFS_PORT_VOL    7005
+#define AFS_PORT_ERROR  7006            /* Doesn't seem to be used */
+#define AFS_PORT_BOS    7007
+#define AFS_PORT_UPDATE 7008
+#define AFS_PORT_RMTSYS 7009
+#define AFS_PORT_BACKUP 7021
+
+#ifndef AFSNAMEMAX
+#define AFSNAMEMAX 256
+#endif
+
+#ifndef AFSOPAQUEMAX
+#define AFSOPAQUEMAX 1024
+#endif
+
+#define PRNAMEMAX   64
+#define VLNAMEMAX   65
+#define KANAMEMAX   64
+#define BOSNAMEMAX 256
+
+#define PRSFS_READ               1 /* Read files */
+#define PRSFS_WRITE              2 /* Write files */
+#define PRSFS_INSERT             4 /* Insert files into a directory */
+#define PRSFS_LOOKUP             8 /* Lookup files into a directory */
+#define PRSFS_DELETE            16 /* Delete files */
+#define PRSFS_LOCK              32 /* Lock files */
+#define PRSFS_ADMINISTER        64 /* Change ACL's */
+
+#define CB_TYPE_EXCLUSIVE 1
+#define CB_TYPE_SHARED 2
+#define CB_TYPE_DROPPED 3
+
+#define OPCODE_LOW          0
+#define OPCODE_HIGH     66000 /* arbitrary, is just a fuzzy check for encrypted traffic */
+#define VOTE_LOW        10000
+#define VOTE_HIGH       10007
+#define DISK_LOW        20000
+#define DISK_HIGH       20013
+
+#define FILE_TYPE_FILE 1
+#define FILE_TYPE_DIR  2
+#define FILE_TYPE_LINK 3
+
+struct afs_header {
+       guint32 opcode;
+};
+
+struct afs_volsync {
+       guint32 spare1;
+       guint32 spare2;
+       guint32 spare3;
+       guint32 spare4;
+       guint32 spare5;
+       guint32 spare6;
+};
+
+struct afs_status {
+       guint32 InterfaceVersion;
+       guint32 FileType;
+       guint32 LinkCount;
+       guint32 Length;
+       guint32 DataVersion;
+       guint32 Author;
+       guint32 Owner;
+       guint32 CallerAccess;
+       guint32 AnonymousAccess;
+       guint32 UnixModeBits;
+       guint32 ParentVnode;
+       guint32 ParentUnique;
+       guint32 SegSize;
+       guint32 ClientModTime;
+       guint32 ServerModTime;
+       guint32 Group;
+       guint32 SyncCount;
+       guint32 spare1;
+       guint32 spare2;
+       guint32 spare3;
+       guint32 spare4;
+};
+
+struct afs_volumeinfo {
+       guint32 Vid;
+       guint32 Type;
+       guint32 Type0;
+       guint32 Type1;
+       guint32 Type2;
+       guint32 Type3;
+       guint32 Type4;
+       guint32 ServerCount;
+       guint32 Server0;
+       guint32 Server1;
+       guint32 Server2;
+       guint32 Server3;
+       guint32 Server4;
+       guint32 Server5;
+       guint32 Server6;
+       guint32 Server7;
+       guint16 Part0;
+       guint16 Part1;
+       guint16 Part2;
+       guint16 Part3;
+       guint16 Part4;
+       guint16 Part5;
+       guint16 Part6;
+       guint16 Part7;
+};
+
 
 static int proto_afs = -1;
 static int hf_afs_fs = -1;
@@ -1314,15 +1427,15 @@ static const value_string volume_types[] = {
 };
 
 struct afs_request_key {
-  guint32 conversation, epoch, cid, callnumber;
-  guint16 service;
+       guint32 conversation, epoch, cid, callnumber;
+       guint16 service;
 };
 
 struct afs_request_val {
-  guint32 opcode;
-  guint req_num;
-  guint rep_num;
-  nstime_t req_time;
+       guint32 opcode;
+       guint req_num;
+       guint rep_num;
+       nstime_t req_time;
 };
 
 static GHashTable *afs_request_hash = NULL;
diff --git a/epan/dissectors/packet-afs.h b/epan/dissectors/packet-afs.h
deleted file mode 100644 (file)
index 29a78d1..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* packet-afs.h
- * Definitions for packet disassembly structures and routines
- *
- * $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 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.
- */
-
-#ifndef PACKET_AFS_H
-#define PACKET_AFS_H
-
-#define AFS_PORT_FS    7000
-#define AFS_PORT_CB    7001
-#define AFS_PORT_PROT  7002
-#define AFS_PORT_VLDB  7003
-#define AFS_PORT_KAUTH 7004
-#define AFS_PORT_VOL   7005
-#define AFS_PORT_ERROR 7006            /* Doesn't seem to be used */
-#define AFS_PORT_BOS   7007
-#define AFS_PORT_UPDATE        7008
-#define AFS_PORT_RMTSYS        7009
-#define AFS_PORT_BACKUP 7021
-
-#ifndef AFSNAMEMAX
-#define AFSNAMEMAX 256
-#endif
-
-#ifndef AFSOPAQUEMAX
-#define AFSOPAQUEMAX 1024
-#endif
-
-#define PRNAMEMAX 64
-#define VLNAMEMAX 65
-#define KANAMEMAX 64
-#define BOSNAMEMAX 256
-
-#define        PRSFS_READ              1 /* Read files */
-#define        PRSFS_WRITE             2 /* Write files */
-#define        PRSFS_INSERT            4 /* Insert files into a directory */
-#define        PRSFS_LOOKUP            8 /* Lookup files into a directory */
-#define        PRSFS_DELETE            16 /* Delete files */
-#define        PRSFS_LOCK              32 /* Lock files */
-#define        PRSFS_ADMINISTER        64 /* Change ACL's */
-
-#define CB_TYPE_EXCLUSIVE 1
-#define CB_TYPE_SHARED 2
-#define CB_TYPE_DROPPED 3
-
-#define OPCODE_LOW             0
-#define OPCODE_HIGH     66000 /* arbitrary, is just a fuzzy check for encrypted traffic */
-#define VOTE_LOW        10000
-#define VOTE_HIGH       10007
-#define DISK_LOW        20000
-#define DISK_HIGH       20013
-
-#define FILE_TYPE_FILE 1
-#define FILE_TYPE_DIR 2
-#define FILE_TYPE_LINK 3
-
-struct afs_header {
-       guint32 opcode;
-};
-
-struct afs_volsync {
-     guint32 spare1;
-     guint32 spare2;
-     guint32 spare3;
-     guint32 spare4;
-     guint32 spare5;
-     guint32 spare6;
-};
-
-struct afs_status {
-     guint32 InterfaceVersion;
-     guint32 FileType;
-     guint32 LinkCount;
-     guint32 Length;
-     guint32 DataVersion;
-     guint32 Author;
-     guint32 Owner;
-     guint32 CallerAccess;
-     guint32 AnonymousAccess;
-     guint32 UnixModeBits;
-     guint32 ParentVnode;
-     guint32 ParentUnique;
-     guint32 SegSize;
-     guint32 ClientModTime;
-     guint32 ServerModTime;
-     guint32 Group;
-     guint32 SyncCount;
-     guint32 spare1;
-     guint32 spare2;
-     guint32 spare3;
-     guint32 spare4;
-};
-
-struct afs_volumeinfo {
-    guint32  Vid;
-    guint32  Type;
-    guint32  Type0;
-    guint32  Type1;
-    guint32  Type2;
-    guint32  Type3;
-    guint32  Type4;
-    guint32  ServerCount;
-    guint32  Server0;
-    guint32  Server1;
-    guint32  Server2;
-    guint32  Server3;
-    guint32  Server4;
-    guint32  Server5;
-    guint32  Server6;
-    guint32  Server7;
-    guint16 Part0;
-    guint16 Part1;
-    guint16 Part2;
-    guint16 Part3;
-    guint16 Part4;
-    guint16 Part5;
-    guint16 Part6;
-    guint16 Part7;
-};
-
-
-#endif
index 483269311a959be8d695c9766b377dbe8b43e546..30d0c53e7f188b672832a1e1a5023d7edbbeed49 100644 (file)
 #endif
 
 #include <glib.h>
+
 #include <epan/packet.h>
 #include <epan/expert.h>
 #include <epan/dissectors/packet-tcp.h>
 
-#include "packet-assa_r3_public.h"
+/* */
+/*  System limits */
+/* */
+#define MAX_USERS            2400
+#define MAX_TIMEZONES          32
+#define MAX_EXCEPTIONS         64
+#define MAX_EXCEPTIONGROUPS    64
+#define MAX_EVENTENTRIES    10000
+#define MAX_DECLINEDENTRIES   500
+#define MAX_ALARMENTRIES      200
+
+/*
+ *  Enumerations
+ */
+typedef enum
+{
+  ACCESSMODE_NONE = 0,        /* 0 - No access mode (not used, not legal, I think) */
+  ACCESSMODE_PRIMARYONLY,     /* 1 - Primary only */
+  ACCESSMODE_PRIMARYORAUX,    /* 2 - Primary or aux field */
+  ACCESSMODE_PRIMARYANDAUX,   /* 3 - Primary and aux field */
+  ACCESSMODE_PRIMARYTHENAUX,  /* 4 - Primary required first, then aux */
+  ACCESSMODE_LAST             /* 5 - Dummy, for range checking */
+}
+accessMode_e;
+
+typedef enum
+{
+  ADDUSERPARAMTYPE_DISPOSITION = 0,   /*  0 - What we're supposed to do (add, delete, etc) */
+  ADDUSERPARAMTYPE_USERNO,            /*  1 - User to manage (user number, U16) */
+  ADDUSERPARAMTYPE_ACCESSALWAYS,      /*  2 - Access always (boolean) */
+  ADDUSERPARAMTYPE_ACCESSMODE,        /*  3 - Access type (accessMode_e) */
+  ADDUSERPARAMTYPE_CACHED,            /*  4 - Entry is managed by cache system (boolean) */
+  ADDUSERPARAMTYPE_USERTYPE,          /*  5 - User type (userType_e) */
+  ADDUSERPARAMTYPE_PRIMARYFIELD,      /*  6 - Primary field (MAX_CREDENTIALBYTES) */
+  ADDUSERPARAMTYPE_PRIMARYFIELDTYPE,  /*  7 - Primary field type (fieldType_e); */
+  ADDUSERPARAMTYPE_AUXFIELD,          /*  8 - Auxiliary field (MAX_CREDENTIALBYTES) */
+  ADDUSERPARAMTYPE_AUXFIELDTYPE,      /*  9 - Auxiliary field type (fieldType_e) */
+  ADDUSERPARAMTYPE_TIMEZONE,          /* 10 - Timezone bitmap (U32) */
+  ADDUSERPARAMTYPE_EXPIREON,          /* 11 - Date on which user no longer granted access, if non-0 */
+  ADDUSERPARAMTYPE_USECOUNT,          /* 12 - Use count */
+  ADDUSERPARAMTYPE_EXCEPTIONGROUP,    /* 13 - Exception group */
+  ADDUSERPARAMTYPE_LAST
+}
+addUserParamType_e;
+
+typedef enum
+{
+  ALARMID_NONE = 0,       /* 0 - No alarm */
+  ALARMID_VALIDIN,        /* 1 - Valid entry */
+  ALARMID_DENIEDACCESS,   /* 2 - Denied access (bad credential) */
+  ALARMID_SECURED,        /* 3 - Door closed & secured (only seen after alarms 3 or 4) */
+  ALARMID_DOORFORCED,     /* 4 - Door forced */
+  ALARMID_KEYOVERRIDE,    /* 5 - Key override */
+  ALARMID_INVALIDENTRY,   /* 6 - Door open but invalid entry (key used?) */
+  ALARMID_DOORAJAR,       /* 7 - Door ajar (needs .ja woman with Engrish accent) */
+  ALARMID_LOWBATTERY,     /* 8 - Low battery alarm */
+  ALARMID_RXHELD,         /* 9 - RX held */
+  ALARMID_LAST
+}
+alarmID_e;
+
+typedef enum
+{
+  CAPABILITIES_USERS = 0,         /* 0 - Number of users supported */
+  CAPABILITIES_TIMEZONES,         /* 1 - Number of timezone supported */
+  CAPABILITIES_EXCEPTIONS,        /* 2 - Number of exceptions supported */
+  CAPABILITIES_EXCEPTIONGROUPS,   /* 3 - Number of exception groups supported */
+  CAPABILITIES_EVENTLOG,          /* 4 - Number of event log entries supported */
+  CAPABILITIES_DECLINEDLOG,       /* 5 - Number of declined log entries supported */
+  CAPABILITIES_ALARMLOG,          /* 6 - Number of alarm log entries supported */
+  CAPABILITIES_TOTALEVENTS,       /* 7 - Total events (EVENT_LAST - 1) */
+  CAPABILITIES_LAST
+}
+capabilities_e;
+
+typedef enum
+{
+  CHECKSUMRESULT_CONFIGURATIONNVRAM = 0,  /*  0 - Checksum results of the configuration NVRAM */
+  CHECKSUMRESULT_EXCEPTIONS,              /*  1 - Checksum results of the exceptions NVRAM */
+  CHECKSUMRESULT_EXCEPTIONGROUPS,         /*  2 - Checksum results of the exception groups NVRAM */
+  CHECKSUMRESULT_TZCALENDARS,             /*  3 - Checksum results of the time zone calendar NVRAM */
+  CHECKSUMRESULT_TIMEZONES,               /*  4 - Checksum results of the time zone NVRAM */
+  CHECKSUMRESULT_USERS,                   /*  5 - Checksum results of the users NVRAM */
+  CHECKSUMRESULT_CACHELRU,                /*  6 - Checksum results of the cache LRU */
+  CHECKSUMRESULT_LAST
+}
+checksumResult_e;
+
+typedef enum
+{
+  CMD_RESPONSE = 0,               /*  0 - Response to command */
+  CMD_HANDSHAKE,                  /*  1 - Establish session */
+  CMD_KILLSESSION,                /*  2 - Kill session */
+  CMD_QUERYSERIALNUMBER,          /*  3 - Query serial number */
+  CMD_QUERYVERSION,               /*  4 - Query version */
+  CMD_SETDATETIME,                /*  5 - Set date and time */
+  CMD_QUERYDATETIME,              /*  6 - Query date and time */
+  CMD_SETCONFIG,                  /*  7 - Set configuration options */
+  CMD_GETCONFIG,                  /*  8 - Read configuration options  */
+  CMD_MANAGEUSER,                 /*  9 - Manage users (add/delete/replace/update) */
+  CMD_DELETEUSERS,                /* 10 - Delete users (all/most/cached) */
+  CMD_DEFINEEXCEPTION,            /* 11 - Define exception (old block holiday) */
+  CMD_DEFINEEXCEPTIONGROUP,       /* 12 - Define exception group */
+  CMD_DEFINECALENDAR,             /* 13 - Define calendar */
+  CMD_DEFINETIMEZONE,             /* 14 - Define time zone */
+  CMD_RMTAUTHRETRY,               /* 15 - Remote authorization retry */
+  CMD_FILTERS,                    /* 16 - Event log filter configuration */
+  CMD_ALARMCONFIGURE,             /* 17 - Alarm condition configuration */
+  CMD_EVENTLOGDUMP,               /* 18 - Dump event log */
+  CMD_DECLINEDLOGDUMP,            /* 19 - Dump declined log */
+  CMD_ALARMLOGDUMP,               /* 20 - Dump alarm log */
+  CMD_DOWNLOADFIRMWARE,           /* 21 - Download firmware */
+  CMD_DOWNLOADFIRMWARETIMEOUT,    /* 22 - Download firmware timeout (internal command only) */
+  CMD_POWERTABLESELECTION,        /* 23 - Power table selection */
+  CMD_CLEARNVRAM,                 /* 24 - Clear nvram (config/event log/declined log/etc) */
+  CMD_DPAC,                       /* 25 - DPAC manipulation commands */
+  CMD_SELFTEST,                   /* 26 - Selftest (heh) */
+  CMD_RESET,                      /* 27 - Restart controller */
+  CMD_LOGWRITE,                   /* 28 - Write event to event log */
+  CMD_MFGCOMMAND,                 /* 29 - Manufacturing commands */
+  CMD_NVRAMBACKUP,                /* 30 - Backup/restore/erase NVRAM */
+  CMD_EXTENDEDRESPONSE,           /* 31 - Response to command (extended version) */
+  CMD_LAST
+}
+cmdCommand_e;
+
+typedef enum
+{
+  CMDMFG_SETSERIALNUMBER = 0,   /*  0 - Set serial number */
+  CMDMFG_SETCRYPTKEY,           /*  1 - Set encryption key */
+  CMDMFG_DUMPNVRAM,             /*  2 - Dump NVRAM */
+  CMDMFG_TERMINAL,              /*  3 - DPAC terminal mode */
+  CMDMFG_REMOTEUNLOCK,          /*  4 - Remote unlock (only on 'd' builds) */
+  CMDMFG_AUXCTLRVERSION,        /*  5 - Request version of auxiliary controller */
+  CMDMFG_IOPINS,                /*  6 - Read I/O pin states */
+  CMDMFG_ADCS,                  /*  7 - Read ADC values */
+  CMDMFG_HARDWAREID,            /*  8 - Read hardware ID and CPU ID */
+  CMDMFG_CHECKPOINTLOGDUMP,     /*  9 - Dump checkpoint log */
+  CMDMFG_CHECKPOINTLOGCLEAR,    /* 10 - Clear checkpoint log */
+  CMDMFG_READREGISTERS,         /* 11 - Read selected CPU registers */
+  CMDMFG_FORCEOPTIONS,          /* 12 - Force I/O lines to certain states */
+  CMDMFG_COMMUSER,              /* 13 - Fake a comm user entry */
+  CMDMFG_DUMPKEYPAD,            /* 14 - Dump keypad debugging buffer */
+  CMDMFG_BATTERYCHECK,          /* 15 - Force battery check */
+  CMDMFG_RAMREFRESH,            /* 16 - Refresh RAM variables from NVRAM */
+  CMDMFG_TASKFLAGS,             /* 17 - Dump task flags */
+  CMDMFG_TIMERCHAIN,            /* 18 - Dump active timer chains */
+  CMDMFG_PEEKPOKE,              /* 19 - Peek/poke CPU RAM memory */
+  CMDMFG_LOCKSTATE,             /* 20 - Display global gLockState variable */
+  CMDMFG_CAPABILITIES,          /* 21 - Read firmware capabilities (# users/event log entries, etc) */
+  CMDMFG_DUMPM41T81,            /* 22 - Dump M41T81 RTC registers */
+  CMDMFG_DEBUGLOGDUMP,          /* 23 - Dump debugging log */
+  CMDMFG_DEBUGLOGCLEAR,         /* 24 - Clear debugging log */
+  CMDMFG_TESTWDT,               /* 25 - Test watchdog */
+  CMDMFG_QUERYCKSUM,            /* 26 - Query NVRAM checksum value */
+  CMDMFG_VALIDATECHECKSUMS,     /* 27 - Validate checksums */
+  CMDMFG_REBUILDLRUCACHE,       /* 28 - Rebuild LRC cache */
+  CMDMFG_TZUPDATE,              /* 29 - Send TZCHANGE to tod.c */
+  CMDMFG_TESTPRESERVE,          /* 30 - Test preserve save/restore code */
+  CMDMFG_MORTISESTATELOGDUMP,   /* 31 - Dump the mortise state log */
+  CMDMFG_MORTISESTATELOGCLEAR,  /* 32 - Clear the mortise state log */
+  CMDMFG_MORTISEPINS,           /* 33 - Display current mortise pin status */
+  CMDMFG_HALTANDCATCHFIRE,      /* 34 - Stop processor (optionally catch fire) */
+  CMDMFG_LAST
+}
+cmdMfgCommand_e;
+
+typedef enum
+{
+  CONFIGITEM_SERIAL_NUMBER = 0,           /*    0 - Ye olde serial number */
+  CONFIGITEM_CRYPT_KEY,                   /*    1 - The encryption/decryption key */
+  CONFIGITEM_HARDWARE_OPTIONS_MFG,        /*    2 - Bit map of hardware options at manufacturing time (hardwareOptions_e) */
+  CONFIGITEM_HARDWARE_OPTIONS,            /*    3 - Bit map of hardware options at runtime time (hardwareOptions_e) */
+  CONFIGITEM_NVRAM_CHANGES,               /*    4 - Log of NVRAM changes since reset (which blocks were reset) */
+
+  CONFIGITEM_NVRAMDIRTY,                  /*    5 - NVRAM is (or might be) dirty */
+  CONFIGITEM_NVRAM_WV,                    /*    6 - NVRAM write verify (I2C parts only) */
+  CONFIGITEM_ENABLE_WDT,                  /*    7 - If true, and OPT_WATCHDOG enabled, enables WDT */
+  CONFIGITEM_EARLY_ACK,                   /*    8 - Generates early RESPONSE_COMMANDRECEIVED message for commands that take some time */
+  CONFIGITEM_CONSOLE_AES_ONLY,            /*    9 - If set, requires AES encryption on serial communications */
+  CONFIGITEM_RADIO_AES_ONLY,              /*   10 - If set, requires AES encryption on radio communications */
+  CONFIGITEM_NDRLE,                       /*   11 - RLE (Run Length Encoding) NVRAM dump enable/disable */
+  CONFIGITEM_SOMF,                        /*   12 - Stop on mortise failure */
+  CONFIGITEM_NOGAF,                       /*   13 - Prevents what should be fatal errors from being fatal (i.e, No One Gives A Flip) */
+  CONFIGITEM_CARD_READER_POWER,           /*   14 - External mag reader power supply control */
+  CONFIGITEM_PROX_ENABLE,                 /*   15 - Prox into permanent sleep mode */
+  CONFIGITEM_CKSUMCONFIG,                 /*   16 - Configuration NVRAM checksum enable/disable  */
+  CONFIGITEM_DAILY_BATTERY_CHECK,         /*   17 - Enable/disable daily battery check */
+  CONFIGITEM_DAILY_BATTERY_CHECK_HOUR,    /*   18 - If daily battery check enabled, top of the hour to check at */
+  CONFIGITEM_BATTERY_LOW,                 /*   19 - Return low battery status (TRUE = low) */
+
+  CONFIGITEM_LRU_HEAD,                    /*   20 - Cache LRU head pointer */
+  CONFIGITEM_LRU_TAIL,                    /*   21 - Cache LRU tail pointer */
+  CONFIGITEM_RTC_CALIBRATION,             /*   22 - Signed 6 bit value written to M41T81 calibration register */
+  CONFIGITEM_ACVREQUESTER,                /*   23 - Auxiliary controller version requester (fromDevice_e, internal variable) */
+  CONFIGITEM_LOCAL_LED,                   /*   24 - Local LED function assignment */
+
+  CONFIGITEM_ERRCNT_XORLEN,               /*   25 - Error counter for XOR length not matching in protocol.c */
+  CONFIGITEM_ERRCNT_CRC,                  /*   26 - Error counter for bad CRC in protocol.c */
+  CONFIGITEM_ERRCNT_NOTSIGIL,             /*   27 - Error counter for character received was not sigil in protocol.c */
+  CONFIGITEM_ERRCNT_TIMEOUT,              /*   28 - Error counter for timeout in protocol.c */
+  CONFIGITEM_ERRCNT_TOOLONG,              /*   29 - Error counter for packet too long in protocol.c */
+  CONFIGITEM_ERRCNT_TOOSHORT,             /*   30 - Error counter for packet too short in protocol.c */
+  CONFIGITEM_ERRCNT_HITDEFAULT,           /*   31 - Error counter for hitting default handler in protocol.c */
+  CONFIGITEM_ERRCNT_OVERRUN,              /*   32 - Error counter for serial buffer overrun in serial.c */
+  CONFIGITEM_ERRCNT_UARTFE,               /*   33 - Error counter for UART framing error in serial.c */
+  CONFIGITEM_ERRCNT_UARTOE,               /*   34 - Error counter for UART overrun error in serial.c */
+
+  CONFIGITEM_DST_SET,                     /*   35 - Daylight savings time currently active */
+  CONFIGITEM_DST_MODE,                    /*   36 - Determines if repeating month/date, repeating month/day, or specific month/date (dstMode_e) */
+  CONFIGITEM_DST_FORWARD_MONTH,           /*   37 - Month to skip forward on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+  CONFIGITEM_DST_FORWARD_DOM,             /*   38 - Day of month to skip forward on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
+  CONFIGITEM_DST_FORWARD_OOD,             /*   39 - Occurence number of CONFIGITEM_DST_FORWARD_DOW to skip forward on (1-5)  (DSTMODE_REPEATINGDOW) */
+  CONFIGITEM_DST_FORWARD_DOW,             /*   40 - Day of week to skip forward on (1-7) (DSTMODE_REPEATINGDOW) */
+  CONFIGITEM_DST_FORWARD_HOUR,            /*   41 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+  CONFIGITEM_DST_FORWARD_MINUTE,          /*   42 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+  CONFIGITEM_DST_FORWARD_ADJUST,          /*   43 - Number of minutes to move forward */
+  CONFIGITEM_DST_BACK_MONTH,              /*   44 - Month to fall back on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDAY, DSTMODE_ONETIMEDATE) */
+  CONFIGITEM_DST_BACK_DOM,                /*   45 - Day of month to fall back on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
+  CONFIGITEM_DST_BACK_OOD,                /*   46 - Occurence number of CONFIGITEM_DST_BACK_DOW to fall back on (1-5)  (DSTMODE_REPEATINGDOW) */
+  CONFIGITEM_DST_BACK_DOW,                /*   47 - Day of week to fall back on (1-7) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
+  CONFIGITEM_DST_BACK_HOUR,               /*   48 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+  CONFIGITEM_DST_BACK_MINUTE,             /*   49 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
+  CONFIGITEM_DST_BACK_ADJUST,             /*   50 - Number of minutes to move backwards */
+
+  CONFIGITEM_EVENTLOG_ZEROMEM,            /*   51 - If set, event log memory is zeroed when event log cleared */
+  CONFIGITEM_EVENTLOG_BEGIN,              /*   52 - Beginning record number when event log cleared */
+  CONFIGITEM_EVENTLOG_RECORD,             /*   53 - Next event log record to write */
+  CONFIGITEM_EVENTLOG_ENTRIES,            /*   54 - Number of entries in event log */
+  CONFIGITEM_EVENTLOG_WARNDEVICE,         /*   55 - Event log warning device */
+  CONFIGITEM_EVENTLOG_WARNEVERY,          /*   56 - Warn at every 'n' records (more or less) */
+  CONFIGITEM_EVENTLOG_RMTDEVICE,          /*   57 - Device event log entries copied to (fromDevice_e) */
+
+  CONFIGITEM_DECLINEDLOG_ZEROMEM,         /*   58 - If set, declined log memory is zeroed when declined log cleared */
+  CONFIGITEM_DECLINEDLOG_BEGIN,           /*   59 - Beginning record number when declined log cleared */
+  CONFIGITEM_DECLINEDLOG_RECORD,          /*   60 - Next declined log record to write */
+  CONFIGITEM_DECLINEDLOG_ENTRIES,         /*   61 - Number of entries in declined log */
+  CONFIGITEM_DECLINEDLOG_WARNDEVICE,      /*   62 - Declined record warning device */
+  CONFIGITEM_DECLINEDLOG_WARNEVERY,       /*   63 - Warn at every 'n' records (more or less) */
+  CONFIGITEM_DECLINEDLOG_RMTDEVICE,       /*   64 - Device declined entries copied to (fromDevice_e) */
+
+  CONFIGITEM_ALARMLOG_ZEROMEM,            /*   65 - If set, alarm log memory is zeroed when alarm log cleared */
+  CONFIGITEM_ALARMLOG_BEGIN,              /*   66 - Beginning record number when alarm log cleared */
+  CONFIGITEM_ALARMLOG_RECORD,             /*   67 - Next alarm log record to write */
+  CONFIGITEM_ALARMLOG_ENTRIES,            /*   68 - Number of entries in alarm log */
+  CONFIGITEM_ALARMLOG_WARNDEVICE,         /*   69 - Alarm record warning device */
+  CONFIGITEM_ALARMLOG_WARNEVERY,          /*   70 - Warn at every 'n' records (more or less) */
+  CONFIGITEM_ALARMLOG_RMTDEVICE,          /*   71 - Device alarm entries copied to (fromDevice_e) */
+
+  CONFIGITEM_VISIBLE_FEEDBACK,            /*   72 - Visible feedback on keypad presses enabled */
+  CONFIGITEM_AUDIBLE_FEEDBACK,            /*   73 - Audible feedback on keypad presses enabled */
+  CONFIGITEM_VISIBLE_INDICATORS,          /*   74 - Visible indicators on all actions (run dark) */
+  CONFIGITEM_AUDIBLE_INDICATORS,          /*   75 - Audible indicators on all actions (run silent) */
+  CONFIGITEM_2NDPINDURATION,              /*   76 - Number of seconds to wait for second PIN */
+  CONFIGITEM_LOCKOUT_ATTEMPTS,            /*   77 - Number of pin/prox/magcard attempts before lockout */
+  CONFIGITEM_LOCKOUT_DURATION,            /*   78 - Duration of lockout, in penta-seconds */
+  CONFIGITEM_KEYPAD_INACTIVITY,           /*   79 - Duration in seconds with no key entries before key buffer cleared */
+  CONFIGITEM_ICIDLE_DURATION,             /*   80 - If last credential was invalid, invalid attempt counter reset after this many seconds */
+  CONFIGITEM_WRITE_DECLINED_LOG,          /*   81 - Declined log writing enable/disable */
+  CONFIGITEM_LOW_BATTERY_INDICATOR,       /*   82 - Low battery audio/visual indicator enable/disable */
+
+  CONFIGITEM_PANIC_MODE,                  /*   83 - Enable/disable panic mode */
+
+  CONFIGITEM_TIMEZONE_ENABLE,             /*   84 - Timezones enabled (applies to users, not passage modes) */
+  CONFIGITEM_EXCEPTION_ENABLE,            /*   85 - Exceptions enabled (applies to users and passage modes) */
+  CONFIGITEM_AUTOUNLOCK_ENABLE,           /*   86 - Auto-unlocking (schedule based) enabled */
+
+  CONFIGITEM_LOCK_PRIORITY_EMERGENCY,     /*   87 - DPAC/PWM lock priority for emergency users (lockPriority_e) */
+  CONFIGITEM_LOCK_PRIORITY_SUPERVISOR,    /*   88 - DPAC/PWM lock priority for supervisors (lockPriority_e) */
+  CONFIGITEM_LOCK_PRIORITY_USER,          /*   89 - DPAC/PWM lock priority for users (lockPriority_e) */
+  CONFIGITEM_LOCK_PRIORITY_PASSAGE,       /*   90 - DPAC/PWM lock priority for passage mode (lockPriority_e) */
+  CONFIGITEM_LOCK_PRIORITY_PANIC,         /*   91 - DPAC/PWM lock priority for panic mode/panic users (lockPriority_e) */
+  CONFIGITEM_LOCK_PRIORITY_LOCKOUT,       /*   92 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
+  CONFIGITEM_LOCK_PRIORITY_RELOCK,        /*   93 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
+  CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN,    /*   94 - DPAC/PWM lock priority for bolt thrown (lockPriority_e) */
+  CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE,  /*   95 - DPAC/PWM lock priority for configuration change (CONFIGITEM_LOCK_TYPE) (lockPriority_e) */
+  CONFIGITEM_LOCK_PRIORITY_REMOTE,        /*   96 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
+  CONFIGITEM_LOCK_TYPE,                   /*   97 - Type of lock (PWM, electric, magnetic) */
+  CONFIGITEM_DOUBLE_PULSE,                /*   98 - Lock double pulse enabled */
+  CONFIGITEM_DOUBLE_DELAY,                /*   99 - Delay between double pulses, in centiseconds */
+  CONFIGITEM_MOTOR_DURATION,              /*  100 - Duration lock motor to run, in centiseconds */
+  CONFIGITEM_MORTISE_TYPE,                /*  101 - Type of mortise connected to controller */
+  CONFIGITEM_UNLOCK_TIME,                 /*  102 - Normal unlock duration  in seconds */
+  CONFIGITEM_EXT_UNLOCK_TIME,             /*  103 - Extended unlock duration, in seconds */
+  CONFIGITEM_DOOR_AJAR_TIME,              /*  104 - Time before door considered stuck open, in seconds */
+
+  CONFIGITEM_SESSION_TIMEOUT,             /*  105 - Session timeout, in seconds */
+  CONFIGITEM_RETRY_ON_TIMEOUT,            /*  106 - Retry lock-initiated sessions if comm session timed out (instead of terminated by remote end) */
+
+  CONFIGITEM_UNSOLICITED_ENCRYPT,         /*  107 - Unsolicited messages are encrypted (encryptionScheme_e) */
+  CONFIGITEM_RMT_AUTH_TIMEOUT,            /*  108 - Seconds to wait for remote authorization timeout (0 = no remote auth) */
+  CONFIGITEM_RMT_AUTH_DEVICE,             /*  109 - Device remote authorization requests sent over (fromDevice_e) */
+  CONFIGITEM_ALARM_DEVICE,                /*  110 - Device alarm condition connects via */
+  CONFIGITEM_NOTIFY_DEVICE,               /*  111 - Notify user device */
+  CONFIGITEM_COMMUSER_DEVICE,             /*  112 - Device comm user connects via */
+  CONFIGITEM_SCHEDULER_DEVICE,            /*  113 - Device scheduler connects via */
+
+  CONFIGITEM_SCHEDULER_TYPE,              /*  114 - Scheduling algorithm to use (schedulerType_e) */
+  CONFIGITEM_SCHEDULER_AWAKE,             /*  115 - Number of decaseconds scheduler is awake for */
+  CONFIGITEM_SCHEDULER_PERIOD,            /*  116 - Interval in minutes between scheduled wakeups (SCHEDULERTYPE_SIMPLE) */
+  CONFIGITEM_SCHEDULER_HOD,               /*  117 - Hour of day map (SCHEDULERTYPE_HOD) */
+  CONFIGITEM_SCHEDULER_DOW,               /*  118 - Day of month map (SCHEDULERTYPE_DOW) */
+  CONFIGITEM_SCHEDULER_DOM,               /*  119 - Day of month map (SCHEDULERTYPE_DOM) */
+  CONFIGITEM_SCHEDULER_HM1,               /*  120 - On at hour:minute #1 */
+  CONFIGITEM_SCHEDULER_HM2,               /*  121 - On at hour:minute #2 */
+  CONFIGITEM_SCHEDULER_HM3,               /*  122 - On at hour:minute #3 */
+  CONFIGITEM_SCHEDULER_HM4,               /*  123 - On at hour:minute #4 */
+
+  CONFIGITEM_RADIO_TYPE,                  /*  124 - Radio type (None, DPAC, WiPort, etc) */
+  CONFIGITEM_RADIO_MODE,                  /*  125 - Radio mode (DPAC=active/passive) */
+  CONFIGITEM_RADIO_TIMEOUT,               /*  126 - Number of seconds before we decide server didn't hear us (only in RADIOMODE_LOCKINITIATED) */
+  CONFIGITEM_RADIO_ATTEMPTS,              /*  127 - Number of times to attempt connection to server (only in RADIOMODE_LOCKINITIATED) */
+  CONFIGITEM_RADIO_HOUSEKEEPING,          /*  128 - Time we allow for radio housekeeping (associate with AP, etc) */
+  CONFIGITEM_RADIO_LEAPUSERNAME,          /*  129 - LEAP username */
+  CONFIGITEM_RADIO_LEAPPASSWORD,          /*  130 - LEAP password */
+
+  CONFIGITEM_INHIBIT_VOLTAGE,             /*  131 - Voltage when battery is considered dead */
+  CONFIGITEM_LOW_VOLTAGE,                 /*  132 - Voltage when battery is considered low */
+  CONFIGITEM_PT_RANGE_1,                  /*  133 - Power table for 0.00 to 5.99 volts */
+  CONFIGITEM_PT_RANGE_2,                  /*  134 - Power table for 6.00 to 6.49 volts */
+  CONFIGITEM_PT_RANGE_3,                  /*  135 - Power table for 6.50 to 6.99 volts */
+  CONFIGITEM_PT_RANGE_4,                  /*  136 - Power table for 7.00 to 7.49 volts */
+  CONFIGITEM_PT_RANGE_5,                  /*  137 - Power table for 7.50 to 7.99 volts */
+  CONFIGITEM_PT_RANGE_6,                  /*  138 - Power table for 8.00 to 8.49 volts */
+  CONFIGITEM_PT_RANGE_7,                  /*  139 - Power table for 8.50 to 8.99 volts */
+  CONFIGITEM_PT_RANGE_8,                  /*  140 - Power table for 9.00 and up volts */
+
+  CONFIGITEM_MAGCARD_IFS,                 /*  141 - Include field separator character in returned data */
+  CONFIGITEM_MAGCARD_FIELDS,              /*  142 - Mag card fields to include */
+  CONFIGITEM_MAGCARD_OFFSET,              /*  143 - Offset into concatenated field */
+  CONFIGITEM_MAGCARD_DIGITS,              /*  144 - Number of digits to return past offset */
+
+  CONFIGITEM_ALARMS,                      /*  145 - Alarms (not writable) */
+  CONFIGITEM_FILTERS,                     /*  146 - Event filter storage (not writable) */
+  CONFIGITEM_ALARMSTATE,                  /*  147 - Current alarm state (alarmID_e) */
+  CONFIGITEM_DOORSTATE,                   /*  148 - Current door state (doorState_e) */
+
+  CONFIGITEM_DPACDEBUG,                   /*  149 - Enable DPAC debug events to event log */
+  CONFIGITEM_FAILOPENSECURE,              /*  150 - Fail open (false) or secure (true) on battery dead */
+
+  CONFIGITEM_REPLACED_VOLTAGE,            /*  151 - If battery above this voltage, it's been replaced */
+
+  CONFIGITEM_RX_HELD_TIME,                /*  152 - If RX held longer than this, sent RX held alarm */
+  CONFIGITEM_PACKET_TIMEOUT,              /*  153 - Time (in seconds) that a complete packet must arrive in */
+
+  CONFIGITEM_EXTENDEDRESPONSE,            /*  154 - Enables extended response (which includes original sequence number) */
+  CONFIGITEM_PASSAGEMODEINDICATOR,        /*  155 - When lock in passage mode, LEDs show denied if set, granted if cleared (Squish #1133) */
+
+  CONFIGITEM_PFMRETURNTIME,               /*  156 - Number of seconds power must be present to exit power fail death loop */
+
+  CONFIGITEM_LAST,                        /*  Must be last item defined (All non-virtual items added above) */
+
+  CONFIGITEM_MAGIC_FIRST = 239,           /*  Next item is first magic command */
+  CONFIGITEM_MAGIC_USERFIELD,             /*  240 - Virtual command to delete PIN '8989', add user '8989' */
+  CONFIGITEM_MAGIC_USERADD,               /*  241 - Virtual command to add a user (PIN only) */
+  CONFIGITEM_MAGIC_USERDELETE,            /*  242 - Virtual command to delete a user */
+  CONFIGITEM_MAGIC_NVRAMBACKUP,           /*  243 - Virtual command to backup NVRAM to FLASH */
+  CONFIGITEM_MAGIC_NVRAMRESTORE,          /*  244 - Virtual command to restore NVRAM from FLASH */
+  CONFIGITEM_MAGIC_NVRAMERASE,            /*  245 - Virtual command to erase backed-up NVRAM */
+  CONFIGITEM_MAGIC_LAST                   /*  *Really* the last item */
+}
+configItem_e;
+
+typedef enum
+{
+  DELETEUSERS_ALL = 0,    /* 0 - Delete ALL users, including master and emergency, restores default users */
+  DELETEUSERS_CACHED,     /* 1 - Delete only cached users */
+  DELETEUSERS_LAST
+}
+deleteUsers_e;
+
+typedef enum
+{
+  DISPOSITION_ADD = 0,    /* 0 - Add, must not exist (by user number only) */
+  DISPOSITION_REPLACE,    /* 1 - Replace, (add, but overwrite if necessary) */
+  DISPOSITION_UPDATE,     /* 2 - Update, must already exist */
+  DISPOSITION_DELETE,     /* 3 - Delete, exists or not is irrelevant */
+  DISPOSITION_RETRIEVE,   /* 4 - Retrieve, must exist */
+  DISPOSITION_LAST
+}
+disposition_e;
+
+typedef enum
+{
+  DOORSTATE_NONE = 0,       /* 0 - No door state available */
+  DOORSTATE_SECURED,        /* 1 - Door closed & secured */
+  DOORSTATE_DOORFORCED,     /* 2 - Door forced */
+  DOORSTATE_KEYOVERRIDE,    /* 3 - Key override */
+  DOORSTATE_DOORAJAR,       /* 4 - Door ajar  */
+  DOORSTATE_LAST
+}
+doorState_e;
+
+typedef enum
+{
+  DSTMODE_NONE,           /* 0 - Automatic DST switching disabled */
+  DSTMODE_REPEATINGDOM,   /* 1 - Particular day on a particular month (Apr 2nd) */
+  DSTMODE_REPEATINGDOW,   /* 2 - Day of week on a particular week of a particular month (Sunday of last week of April) */
+  DSTMODE_ONETIMEDOM,     /* 3 - Like DSTMODE_REPEATINGDOM, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|DAY] items */
+  DSTMODE_ONETIMEDOW,     /* 4 - Like DSTMODE_REPEATINGDOW, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|OOD|DOW] items */
+  DSTMODE_LAST
+}
+dstMode_e;
+
+typedef enum
+{
+  ENCRYPTIONSCHEME_NONE = 0,  /* 0 - No encryption */
+  ENCRYPTIONSCHEME_ROLLING,   /* 1 - XOR with crypt key, shift each byte */
+  ENCRYPTIONSCHEME_SN,        /* 2 - XOR with serial number, shift each byte */
+  ENCRYPTIONSCHEME_AESIV,     /* 3 - AES implementation (set initial vector) */
+  ENCRYPTIONSCHEME_AES,       /* 4 - AES implementation */
+  ENCRYPTIONSCHEME_LAST
+}
+encryptionScheme_e;
+
+typedef enum
+{
+  EVENT_INVALIDPIN = 0,       /*   0 - Entered PIN was invalid */
+  EVENT_USER,                 /*   1 - Regular user has been granted access */
+  EVENT_ONETIME,              /*   2 - One-time user has been granted access */
+  EVENT_PASSAGEBEGIN,         /*   3 - Lock has unlocked because of auto-unlock mode */
+  EVENT_PASSAGEEND,           /*   4 - Lock has relocked because of auto-unlock mode */
+  EVENT_BADTIME,              /*   5 - Access attempted outside of allowed time/date */
+  EVENT_LOCKEDOUT,            /*   6 - Access attempted during panic or lockout */
+  EVENT_LOWBATTERY,           /*   7 - Battery is low */
+  EVENT_DEADBATTERY,          /*   8 - Battery is dead */
+  EVENT_BATTERYREPLACED,      /*   9 - Battery has been replaced */
+  EVENT_USERADDED,            /*  10 - User added or changed */
+  EVENT_USERDELETED,          /*  11 - User deleted */
+  EVENT_EMERGENCY,            /*  12 - The emergency code was entered */
+  EVENT_PANIC,                /*  13 - Somebody pushed the panic button */
+  EVENT_RELOCK,               /*  14 - Relock code was entered */
+  EVENT_LOCKOUTBEGIN,         /*  15 - Lockout code was entered */
+  EVENT_LOCKOUTEND,           /*  16 - Lockout code was entered again */
+  EVENT_RESET,                /*  17 - Lock was reset (restarted) */
+  EVENT_DATETIMESET,          /*  18 - System date & time was set */
+  EVENT_LOGCLEARED,           /*  19 - Event log cleared */
+  EVENT_DBRESET,              /*  20 - User database reset */
+  EVENT_COMMSTARTED,          /*  21 - Communications session started */
+  EVENT_COMMENDED,            /*  22 - Communications session ended */
+  EVENT_FIRMWAREABORT,        /*  23 - A firmware update aborted */
+  EVENT_FIRMWAREERROR,        /*  24 - A firmware update encountered an error */
+  EVENT_FIRMWARETIMEOUT,      /*  25 - Timeout expecting firmware download data record */
+  EVENT_DSTFALLBACK,          /*  26 - Clock set back */
+  EVENT_DSTSPRINGFORWARD,     /*  27 - Clock set forward */
+  EVENT_BOLTTHROWN,           /*  28 - Bolt thrown */
+  EVENT_BOLTRETRACTED,        /*  29 - Bolt retracted */
+  EVENT_MASTERCODE,           /*  30 - Master code entered (clears panic, relock, and lockout) */
+  EVENT_COMMUSER,             /*  31 - A comm user was activated */
+  EVENT_DPACDISABLED,         /*  32 - DPAC disabled */
+  EVENT_NOTIFY,               /*  33 - Notify user has been granted access */
+  EVENT_EXPIRED,              /*  34 - Expired user attempted access */
+  EVENT_SUPERVISOR,           /*  35 - The supervisor code was entered */
+  EVENT_MCCENTER,             /*  36 - Entered MCC programming mode */
+  EVENT_MCCEXIT,              /*  37 - Exited MCC programming mode */
+  EVENT_SERIALRXOVERRUN,      /*  38 - Serial receiver overrun */
+  EVENT_DPACRXOVERRUN,        /*  39 - DPAC receiver overrun */
+  EVENT_NVRAMPBCLEAR,         /*  40 - NVRAM cleared by pushybutton */
+  EVENT_NVRAMLAYOUTCHANGE,    /*  41 - NVRAM cleared by revision */
+  EVENT_NVRAMOK,              /*  42 - NVRAM wasn't changed */
+  EVENT_USERREPLACED,         /*  43 - User replaced */
+  EVENT_RADIOTIMEOUT,         /*  44 - Radio timed out waiting for remote login */
+  EVENT_SUSPENDEDUSER,        /*  45 - Suspended user attempted access */
+  EVENT_USERUPDATED,          /*  46 - User updated */
+  EVENT_DOORBOLTED,           /*  47 - Access denied because door is bolted */
+  EVENT_PANICACTIVE,          /*  48 - Access denied because lock is in panic mode */
+  EVENT_PASSAGEACTIVE,        /*  49 - Access denied because lock is in passage mode */
+  EVENT_PASSAGEINACTIVE,      /*  50 - Access denied because lock is not in passage mode */
+  EVENT_BADACCESSMODE,        /*  51 - Access denied because access mode is wierd */
+  EVENT_CLOCKERR,             /*  52 - Error reading RTC */
+  EVENT_REMOTEUNLOCK,         /*  53 - Remote unlock */
+  EVENT_TZHAUDISABLED,        /*  54 - Time zone, exceptions, and auto-unlock functionality disabled */
+  EVENT_EVENTLOGWRAPPED,      /*  55 - Event log wrapped */
+  EVENT_DECLINEDLOGWRAPPED,   /*  56 - Declined log wrapped */
+  EVENT_ALARMLOGWRAPPED,      /*  57 - Alarm log wrapped */
+  EVENT_RADIOBUSYEMERGENCY,   /*  58 - Access denied because radio is busy */
+  EVENT_RADIOBUSYSUPERVISOR,  /*  59 - Access denied because radio is busy */
+  EVENT_RADIOBUSYONETIME,     /*  60 - Access denied because radio is busy */
+  EVENT_RADIOBUSYUSER,        /*  61 - Access denied because radio is busy */
+  EVENT_RADIOBUSYPANIC,       /*  62 - Access denied because radio is busy */
+  EVENT_RADIOBUSYREX,         /*  63 - Access denied because radio is busy */
+  EVENT_RADIOBUSYLOCKOUT,     /*  64 - Access denied because radio is busy */
+  EVENT_RADIOBUSYRELOCK,      /*  65 - Access denied because radio is busy */
+  EVENT_BATTERYCHECKHELDOFF,  /*  66 - Battery check was not performed (user number says why) */
+  EVENT_RMTAUTHREQUEST,       /*  67 - Remote authorization request made */
+  EVENT_FIRMWAREUPDATE,       /*  68 - A firmware update was attempted, and succeeded */
+  EVENT_FIRMWAREUPDATEFAILED, /*  69 - A firmware update was attempted, and failed */
+  EVENT_MSMFAILURE,           /*  70 - Mortise state machine failure */
+  EVENT_CLOCKRESET,           /*  71 - The RTC was reset, likely due to ESD */
+  EVENT_POWERFAIL,            /*  72 - Power Fail Monitor (PFM) circuit triggered */
+  EVENT_DPAC501WENTSTUPID,    /*  73 - DPAC-501 failed to release CTS on power up */
+  /*
+   * These are all internal debugging events.  Real events should go before these.
+   */
+  EVENT_CHECKSUMCONFIG,       /*  74 - Performing checksum on configuration NVRAM */
+  EVENT_CHECKSUMTZ,           /*  75 - Performing checksum on timezone data NVRAM */
+  EVENT_DEBUG,                /*  76 - Debug event, could mean anything (programmer discretion) */
+  EVENT_LAST                  /*  77 - Everything must go before this entry */
+}
+event_e;
+
+typedef enum
+{
+  FIELDTYPE_NONE = 0,   /* 0 - Field contains nothing */
+  FIELDTYPE_PIN,        /* 1 - Field contains PIN */
+  FIELDTYPE_PROX,       /* 2 - Field contains Prox card */
+  FIELDTYPE_MAGCARD,    /* 3 - Field contains mag card */
+  FIELDTYPE_LAST
+}
+fieldType_e;
+
+typedef enum
+{
+  FILTERMODE_NORMAL = 0,  /* 0 - Filters events specified */
+  FILTERMODE_INVERT,      /* 1 - Filters events not specified */
+  FILTERMODE_LAST
+}
+filterMode_e;
+
+typedef enum
+{
+  FILTERSELECT_RECORDING = 0,   /* 0 - Recording filters */
+  FILTERSELECT_REPORTING,       /* 1 - Reporting filters */
+  FILTERSELECT_LAST
+}
+filterSelect_e;
+
+typedef enum
+{
+  FORCEITEM_RADIOPOWER = 0,   /*  0 - Radio power */
+  FORCEITEM_RADIOENABLE,      /*  1 - Radio enable */
+  FORCEITEM_LEDRED,           /*  2 - Red keypad LED */
+  FORCEITEM_LEDGREEN,         /*  3 - Green keypad LED */
+  FORCEITEM_LEDYELLOW,        /*  4 - Yellow keypad LED */
+  FORCEITEM_PIEZO,            /*  5 - Keypad peizo */
+  FORCEITEM_MAGPOWER,         /*  6 - Mag card reader power supply */
+  FORCEITEM_MAGLEDA,          /*  7 - Mag card LED A (usually red) */
+  FORCEITEM_MAGLEDB,          /*  8 - Mag card LED B (usually green) */
+  FORCEITEM_PROXPOWER,        /* 13 - Prox circuitry power (opamps, etc) */
+  FORCEITEM_PROXPING,         /* 14 - Prox PIC12F629 ping/sleep mode */
+  FORCEITEM_PROXMODE,         /* 15 - Prox ping/read mode (selects 50hz/125KHz filters) */
+  FORCEITEM_I2CPOWER,         /* 16 - I2C power */
+  FORCEITEM_MOTORARUN,        /* 17 - Motor A run (to H-bridge) */
+  FORCEITEM_MOTORBRUN,        /* 18 - Motor B run (to H-bridge) */
+  FORCEITEM_VMON,             /* 19 - VMon (ADC 0 battery sense) */
+  FORCEITEM_PROX,             /* 20 - Prox test mode (continuous 125KHz read) */
+  FORCEITEM_MORTISETEST,      /* 21 - Force mortise into test mode */
+  FORCEITEM_KEYPADTEST,       /* 22 - Force keypad into test mode */
+  FORCEITEM_MAGTEST,          /* 23 - Force mag card test mode */
+  FORCEITEM_PROXTEST,         /* 24 - Force prox card test mode */
+  FORCEITEM_ICLASSPOWER,      /* 25 - iClass Prox power */
+  FORCEITEM_ICLASSRESET,      /* 26 - iClass Prox reset */
+  FORCEITEM_LAST
+}
+forceItem_e;
+
+typedef enum
+{
+  FROMDEVICE_NONE = 0,      /* 0 - Used to indicate no device */
+  FROMDEVICE_INTERNAL,      /* 1 - Generated internally */
+  FROMDEVICE_KEYPAD,        /* 2 - Generated from keypad */
+  FROMDEVICE_CONSOLE,       /* 3 - Generated from console */
+  FROMDEVICE_WIFI,          /* 4 - Generated from wi-fi (DPAC) */
+  FROMDEVICE_LAST
+}
+fromDevice_e;
+
+typedef enum
+{
+  HARDWAREOPTIONS_NONE         = 0x0000,   /* No options installed (?!) */
+  HARDWAREOPTIONS_CLOCK        = 0x0001,   /* Has RTC installed (always set) */
+  HARDWAREOPTIONS_CONSOLE      = 0x0002,   /* Has serial console (always set) */
+  HARDWAREOPTIONS_KEYPAD       = 0x0004,   /* Has keypad installed */
+  HARDWAREOPTIONS_PROXREADER   = 0x0008,   /* Has Prox card circuitry installed */
+  HARDWAREOPTIONS_MAGREADER    = 0x0010,   /* Has magnetic card reader attached */
+  HARDWAREOPTIONS_1WIRE        = 0x0020,   /* Has Dallas 1-wire interface installed */
+  HARDWAREOPTIONS_WIFI         = 0x0040,   /* Has WiFi module installed (DPAC only, for now) */
+  HARDWAREOPTIONS_RS485        = 0x0080,   /* Has RS-485 optioning (RS-232 assumed if not) */
+  HARDWAREOPTIONS_IR           = 0x0100,   /* Has IR LED communications interface installed */
+  HARDWAREOPTIONS_PUSHBUTTON   = 0x0200,   /* Has MCC pushbutton */
+  HARDWAREOPTIONS_WATCHDOG     = 0x0400,   /* Has watchdog option compiled in */
+  HARDWAREOPTIONS_ICLASSREADER = 0x0800,   /* Has iClass OEM75 prox reader installed */
+  HARDWAREOPTIONS_AVAIL1000    = 0x1000,   /* Not defined */
+  HARDWAREOPTIONS_AVAIL2000    = 0x2000,   /* Not defined */
+  HARDWAREOPTIONS_AVAIL4000    = 0x4000,   /* Not defined */
+  HARDWAREOPTIONS_AVAIL8000    = 0x8000,   /* Not defined */
+
+  HARDWAREOPTIONS_RADIO        = (HARDWAREOPTIONS_WIFI),
+
+  HARDWAREOPTIONS_LAST         = 0xffff    /* Place holder, don't use */
+}
+hardwareOptions_e;
+
+typedef enum
+{
+  LOCALLED_NONE = 0,      /*  0 - No assignment */
+  LOCALLED_RADIOPOWER,    /*  1 - Follows radio power supply (lit=power on) */
+  LOCALLED_LOCKUNLOCKED,  /*  2 - Follows strike state (lit=locked) */
+  LOCALLED_I2CPOWER,      /*  3 - Follows I2C power (lit=power on) */
+  LOCALLED_AUTHCONSOLE,   /*  4 - Follows authorization from console port (lit=authorized) */
+  LOCALLED_AUTHWIFI,      /*  5 - Follows authorization from Wifi port (lit=authorized) */
+  LOCALLED_BATTERYLOW,    /*  6 - Follows battery low status (lit=low) */
+  LOCALLED_BATTERYDEAD,   /*  7 - Follows battery dead status (lit=battery dead) */
+  LOCALLED_PROXREADY,     /*  8 - Follows Prox ready to read (lit=ready) */
+  LOCALLED_APACQUIRED,    /*  9 - Follows WAP acquired via DPAC (lit=acquired) */
+  LOCALLED_PASSMODE,      /* 10 - Follows DPAC entering pass mode (lit=pass mode successful) */
+  LOCALLED_PROXREAD,      /* 11 - Follows receiving a prox read event (PROXCARDEVENT_READCARD) */
+  LOCALLED_CONNECTED,     /* 12 - Follows the DPAC interrupt line, indicating connection status */
+  LOCALLED_DPACCTSTIMER,  /* 13 - Follows DPAC CTS line, if asserted more than 5 seconds */
+  LOCALLED_PFMCHARGING,   /* 14 - Follows the state of the PFM super-cap charger */
+  LOCALLED_LAST
+}
+localLED_e;
+
+typedef enum
+{
+  LOCKPRIORITY_NONE = 0,      /* 0 - Radio is not shut down for motor run, access not denied if radio is on */
+  LOCKPRIORITY_DPAC,          /* 1 - Radio is not shut down for motor run, access denied if radio is on */
+  LOCKPRIORITY_LOCK,          /* 2 - Radio is shut down for motor run, access not denied if radio is on */
+  LOCKPRIORITY_LAST
+}
+lockPriority_e;
+
+typedef enum
+{
+  LOCKTYPE_NONE = 0,          /* 0 - No lock present */
+  LOCKTYPE_PWM,               /* 1 - PWM motor */
+  LOCKTYPE_ELECTRIC_STRIKE,   /* 2 - Electric strike (normally de-energized, uses Motor A side of H-bridge) */
+  LOCKTYPE_MAGNETIC_LOCK,     /* 3 - Magnetic lock (normally energized, uses Motor A side of H-bridge) */
+  LOCKTYPE_RELAY,             /* 4 - Relay (normally de-energized, uses Motor B side of H-bridge) */
+  LOCKTYPE_LAST
+}
+lockType_e;
+
+typedef enum
+{
+  MFGFIELD_IOPINS = 0,            /*  0 - Contains data about the state of the IO pins */
+  MFGFIELD_ADCS,                  /*  1 - Contains raw ADC data */
+  MFGFIELD_HARDWAREID,            /*  2 - Contains hardware ID & revision of PIC */
+  MFGFIELD_CHECKPOINTLOG,         /*  3 - Contains the checkpoint log data */
+  MFGFIELD_CPUREGISTERS,          /*  4 - Contains the contents of selected PIC registers */
+  MFGFIELD_TASKFLAGS,             /*  5 - Contains a list of all task flag values */
+  MFGFIELD_TIMERCHAIN,            /*  6 - Contains a complete list of all active timers (timerData_t) */
+  MFGFIELD_PEEKPOKE,              /*  7 - Contains results of peeking memory (U8, U16, U32, or string) */
+  MFGFIELD_LOCKSTATE,             /*  8 - Contains the current passage mode flags (lockState_t) */
+  MFGFIELD_CAPABILITIES,          /*  9 - Contains lock capability info (# users, event log entries, etc) */
+  MFGFIELD_DUMPM41T81,            /* 10 - Contains a complete dump of the M41T81 RTC registers */
+  MFGFIELD_NVRAMCHECKSUMVALUE,    /* 11 - Contains the 32-bit NVRAM checksum value */
+  MFGFIELD_CHECKSUMRESULTS,       /* 12 - Contains results from checksumming exceptions, exceptiong roups, time zone calendars and time zones */
+  MFGFIELD_MORTISESTATELOG,       /* 13 - Contains the last 32 mortise state changes */
+  MFGFIELD_MORTISEPINS,           /* 14 - Contains the mortise pin status (S1,S2,S3,S4) */
+  MFGFIELD_KEYPADCHAR,            /* 15 - Contains a character from the keypad */
+  MFGFIELD_MAGCARD,               /* 16 - Contains mag card data */
+  MFGFIELD_PROXCARD,              /* 17 - Contains prox card data */
+  MFGFIELD_LAST
+}
+mfgField_e;
+
+typedef enum
+{
+  MORTISETYPE_NONE = 0,           /*  0 - No mortise installed */
+  MORTISETYPE_S82276,             /*  1 - Sargent 82276 mortise (A) */
+  MORTISETYPE_S82277,             /*  2 - Sargent 82277 mortise, no cylinder (B) */
+  MORTISETYPE_S82278,             /*  3 - Sargent 82278 mortise, no deadbolt (C) */
+  MORTISETYPE_S82279,             /*  4 - Sargent 82279 mortise, no cylinder or deadbolt (D) */
+  MORTISETYPE_S10G77,             /*  5 - Sargent 10G77 bored lock body (E) */
+  MORTISETYPE_S8877,              /*  6 - Sargent 8877 mortise exit device (F) */
+  MORTISETYPE_S8878,              /*  7 - Sargent 8878 mortise exit device, no cylinder (G) */
+  MORTISETYPE_S8977,              /*  8 - Sargent 8977 mortise exit device (H) */
+  MORTISETYPE_S8978,              /*  9 - Sargent 8978 mortise exit device, no cylinder (I) */
+  MORTISETYPE_CRML20x36,          /* 10 - Corbin-Russwin ML20736/ML20836 mortise (J) */
+  MORTISETYPE_CRML20x35,          /* 11 - Corbin-Russwin ML20735/ML20835 mortise, no cylinder (K) */
+  MORTISETYPE_CRML20x34,          /* 12 - Corbin-Russwin ML20734/ML20834 mortise, no deadbolt (L) */
+  MORTISETYPE_CRML20x33,          /* 13 - Corbin-Russwin ML20733/ML20833 mortise, no cylinder or deadbolt (M) */
+  MORTISETYPE_CRCL33x34,          /* 14 - Corbin-Russwin CL33734/CL33834 bored lock body (N) */
+  MORTISETYPE_CR9X34,             /* 15 - Corbin-Russwin 9734/9834 bored lock body (O) */
+  MORTISETYPE_CR9X33,             /* 16 - Corbin-Russwin 9833/9833 bored lock body, no cylinder (P) */
+  MORTISETYPE_CR9MX34,            /* 17 - Corbin-Russwin 9M734/9M834 bored lock body (Q) */
+  MORTISETYPE_CR9MX33,            /* 18 - Corbin-Russwin 9M733/9M833 bored lock body, no cylinder (R) */
+  MORTISETYPE_LAST
+}
+mortiseType_e;
+
+typedef enum
+{
+  NVRAMCLEAROPTIONS_NONE            = 0x0000,   /* Place holder */
+  NVRAMCLEAROPTIONS_CFGINSTALLER    = 0x0001,   /* Options settable by the installer (lock type, etc) */
+  NVRAMCLEAROPTIONS_CFGADMIN        = 0x0002,   /* Options settable by the lock administrator (time, date, etc) */
+  NVRAMCLEAROPTIONS_EXCEPTIONS      = 0x0004,   /* The exceptions definitions */
+  NVRAMCLEAROPTIONS_EXCEPTIONGROUPS = 0x0008,   /* The exception group definitions */
+  NVRAMCLEAROPTIONS_CALENDARS       = 0x0010,   /* The timezones calendar definitions */
+  NVRAMCLEAROPTIONS_TIMEZONES       = 0x0020,   /* The timezones definitions */
+  NVRAMCLEAROPTIONS_FILTERS         = 0x0040,   /* Recording filters */
+  NVRAMCLEAROPTIONS_EVENTLOG        = 0x0080,   /* The event log */
+  NVRAMCLEAROPTIONS_USERDATA        = 0x0100,   /* The actual user database */
+  NVRAMCLEAROPTIONS_DECLINEDLOG     = 0x0200,   /* Declined credentials log */
+  NVRAMCLEAROPTIONS_ALARMLOG        = 0x0400,   /* Alarm log */
+  NVRAMCLEAROPTIONS_LRUCACHE        = 0x0800,   /* LRU cache for remote authorization (status, user doesn't clear explicitly) */
+  NVRAMCLEAROPTIONS_DBHASH          = 0x1000,   /* User database hash (status, user doesn't clear explicitly) */
+  NVRAMCLEAROPTIONS_CFGSYSTEM       = 0x2000,   /* Factory settable options, system variables (status, user doesn't clear explicitly) */
+  NVRAMCLEAROPTIONS_AVAIL4000       = 0x4000,   /* Unused */
+  NVRAMCLEAROPTIONS_ALL             = 0x7fff,   /* All of the above */
+  NVRAMCLEAROPTIONS_USEBACKUP       = 0x8000    /* If set, installer and admin options are set according from NVRAM backup (if valid) */
+}
+nvramClearOptions_e;
+
+typedef enum
+{
+  NVRAMCOMMAND_BACKUP = 0,  /* 0 - Backup NVRAM to backup region */
+  NVRAMCOMMAND_ERASE,       /* 1 - Erase backup region */
+  NVRAMCOMMAND_RESTORE,     /* 2 - Restore NVRAM from backup region */
+  NVRAMCOMMAND_LAST
+}
+nvramCommand_e;
+
+typedef enum
+{
+  NVRAMDUMPSELECT_ALL = 0,  /* 0 - Dump all */
+  NVRAMDUMPSELECT_PIC,      /* 1 - Dump NVRAM on PIC */
+  NVRAMDUMPSELECT_USER,     /* 2 - Dump I2C NVRAM containing user data, exceptions, exception groups, calendars, timezones */
+  NVRAMDUMPSELECT_EVENT,    /* 3 - Dump I2C NVRAM containing event log, declined log, alarm log, LRU cache */
+  NVRAMDUMPSELECT_LAST
+}
+nvramDumpSelect_e;
+
+typedef enum
+{
+  PEEKPOKE_READU8 = 0,      /* 0 - Read 8 bit value */
+  PEEKPOKE_READU16,         /* 1 - Read 16 bit value */
+  PEEKPOKE_READU24,         /* 2 - Read 24 bit value */
+  PEEKPOKE_READU32,         /* 3 - Read 32 bit value */
+  PEEKPOKE_READSTRING,      /* 4 - Read 'n' 8 bit values */
+  PEEKPOKE_WRITEU8,         /* 5 - Write 8 bit value */
+  PEEKPOKE_WRITEU16,        /* 6 - Write 16 bit value */
+  PEEKPOKE_WRITEU24,        /* 7 - Write 24 bit value */
+  PEEKPOKE_WRITEU32,        /* 8 - Write 32 bit value */
+  PEEKPOKE_WRITESTRING,     /* 9 - Write 'n' 8 bit values */
+  PEEKPOKE_LAST
+}
+peekPoke_e;
+
+typedef enum
+{
+  PPMISOURCE_NONE = 0,     /* 0 - PPMI came from nowhere (not set) */
+  PPMISOURCE_PIN,          /* 1 - PPMI came from PIN */
+  PPMISOURCE_PROX,         /* 2 - PPMI came from Prox */
+  PPMISOURCE_MAGCARD,      /* 3 - PPMI came from mag card */
+  PPMISOURCE_LAST
+}
+ppmiSource_e;
+
+typedef enum
+{
+  RADIOMODE_HOSTINITIATED = 0,  /* 0 - DPAC in listen mode (default) */
+  RADIOMODE_LOCKINITIATED,      /* 1 - DPAC in pass-through mode */
+  RADIOMODE_LAST
+}
+radioMode_e;
+
+typedef enum
+{
+  RADIOTYPE_NONE = 0,     /* 0 - No radio present */
+  RADIOTYPE_WIPORTNR,     /* 1 - WiPortNR */
+  RADIOTYPE_DPAC80211B,   /* 2 - DPAC 802.11b */
+  RADIOTYPE_DPAC80211BG,  /* 3 - DPAC 802.11bg */
+  RADIOTYPE_LAST
+}
+radioType_e;
+
+typedef enum
+{
+  RESPONSETYPE_OK = 0,                /*  0 - All is well */
+  RESPONSETYPE_ERROR,                 /*  1 - Generic error */
+  RESPONSETYPE_HASDATA,               /*  2 - Response has data */
+  RESPONSETYPE_NOHANDLER,             /*  3 - Command requested with no handler (internal error) */
+  RESPONSETYPE_NOSESSION,             /*  4 - No session established */
+  RESPONSETYPE_BADCOMMAND,            /*  5 - Bad command value */
+  RESPONSETYPE_BADPARAMETER,          /*  6 - Bad parameter (can mean a lot of things) */
+  RESPONSETYPE_BADPARAMETERLEN,       /*  7 - Bad parameter length (too short, too long) */
+  RESPONSETYPE_MISSINGPARAMETER,      /*  8 - Missing parameter (something was required, what'd you forget?) */
+  RESPONSETYPE_DUPLICATEPARAMETER,    /*  9 - Parameter supplied more than once (D'oh!) */
+  RESPONSETYPE_PARAMETERCONFLICT,     /* 10 - Parameters conflict (usually mutually exclusive items) */
+  RESPONSETYPE_BADDEVICE,             /* 11 - Bad device (command came from a device that's not allowed) */
+  RESPONSETYPE_NVRAMERROR,            /* 12 - Hardware problem... */
+  RESPONSETYPE_NVRAMERRORNOACK,       /* 13 - Hardware problem... */
+  RESPONSETYPE_NVRAMERRORNOACK32,     /* 14 - Hardware problem... */
+  RESPONSETYPE_NOTI2CADDRESS,         /* 15 - Illegal I2C address in i2cStart */
+  RESPONSETYPE_FIRMWAREERROR,         /* 16 - Generic firmware upload error (can mean lots of things) */
+  RESPONSETYPE_DUMPINPROGRESS,        /* 17 - Can't do something, a dump is in progress */
+  RESPONSETYPE_INTERNALERROR,         /* 18 - Something Bad Happened(tm) */
+  RESPONSETYPE_NOTIMPLEMENTED,        /* 19 - Command or function not implemented */
+  RESPONSETYPE_PINFORMATERROR,        /* 20 - Error in formatting of PIN (non hex character) */
+  RESPONSETYPE_PINEXISTS,             /* 21 - PIN already exists in database */
+  RESPONSETYPE_PINNOTFOUND,           /* 22 - PIN wasn't found (actionManageUsers) */
+  RESPONSETYPE_USERACTIVE,            /* 23 - The record for this user is active (not deleted or free) */
+  RESPONSETYPE_USERINACTIVE,          /* 24 - The record for this user is inactive (not in use) */
+  RESPONSETYPE_PARENTNOTFOUND,        /* 25 - Users parent couldn't be found (used internally by dbmgr.c) */
+  RESPONSETYPE_NOCHAIN,               /* 26 - No users in chain (used internally by dbmgr.c) */
+  RESPONSETYPE_CAUGHTINLOOP,          /* 27 - Caught in a loop somewhere */
+  RESPONSETYPE_EVENTFILTERED,         /* 28 - Event record was filtered (eventlog.c) */
+  RESPONSETYPE_PAYLOADTOOLARGE,       /* 29 - Message payload too large (protocol.c) */
+  RESPONSETYPE_ENDOFDATA,             /* 30 - No more data (used internally by eventlog.c) */
+  RESPONSETYPE_RMTAUTHREJECTED,       /* 31 - Remote authorization rejected (lockmgr.c) */
+  RESPONSETYPE_NVRAMVERSIONERROR,     /* 32 - NVRAM version doesn't match expected value */
+  RESPONSETYPE_NOHARDWARE,            /* 33 - Operation requested for unsupported hardware */
+  RESPONSETYPE_SCHEDULERCONFLICT,     /* 34 - Scheduler not in correct mode for this operation */
+  RESPONSETYPE_NVRAMWRITEERROR,       /* 35 - NVRAM write compare error */
+  RESPONSETYPE_DECLINEDFILTERED,      /* 36 - Declined record was filtered (declinedlog.c) */
+  RESPONSETYPE_NECONFIGPARM,          /* 37 - Non-existent configuration parameter */
+  RESPONSETYPE_FLASHERASEERROR,       /* 38 - Error erasing FLASH */
+  RESPONSETYPE_FLASHWRITEERROR,       /* 39 - Error writing FLASH */
+  RESPONSETYPE_BADNVBACKUP,           /* 40 - NVBackup length doesn't match sizeof (configParametersNV_t) */
+  RESPONSETYPE_EARLYACK,              /* 41 - Sent prior to long commands if CONFIGITEM_EARLYACK set */
+  RESPONSETYPE_ALARMFILTERED,         /* 42 - Alarm record was filtered (alarm.c) */
+  RESPONSETYPE_ACVFAILURE,            /* 43 - Auxiliary controller version request failure */
+  RESPONSETYPE_USERCHECKSUMERROR,     /* 44 - User checksum value error */
+  RESPONSETYPE_CHECKSUMERROR,         /* 45 - Generic checksum error  */
+  RESPONSETYPE_RTCSQWFAILURE,         /* 46 - RTC isn't generating square wave */
+  RESPONSETYPE_PRIORITYSHUTDOWN,      /* 47 - Session terminated early because lock has priority over communications */
+  RESPONSETYPE_NOTMODIFIABLE,         /* 48 - Configuration parameter is not user modifiable */
+  RESPONSETYPE_CANTPRESERVE,          /* 49 - Can't preserve configuration (config.c, not enough space) */
+  RESPONSETYPE_INPASSAGEMODE,         /* 50 - Lock is in passage mode, can't do remote unlock */
+  RESPONSETYPE_LAST,
+  /*
+   *  These should not be exposed to the user
+   */
+  RESPONSETYPE_NOREPLY,               /* 51 - Do not send a reply, subroutine is posting it's own */
+  RESPONSETYPE_TAKEABREAK,            /* 52 - Intermediate return result, when log searches taking too long */
+  RESPONSETYPE_DPACBLOCKS,            /* 53 - PWM lock, battery powered, DPAC takes priority */
+  RESPONSETYPE_ACKNAKTIMEOUT,         /* 54 - Added for console.c, not used in lock firmware */
+  RESPONSETYPE_UNKNOWNCPUSPEED        /* 55 - Unknown CPU speed (utils.c, utilCalculateClockRate()) */
+}
+responseType_e;
+
+typedef enum
+{
+  SCHEDULERTYPE_HARDON = 0,   /* 0 - Radio is always on */
+  SCHEDULERTYPE_SIMPLE,       /* 1 - Simple 'x' minutes off, 'y' seconds on scheduler */
+  SCHEDULERTYPE_DOM,          /* 2 - Day of month scheduling  */
+  SCHEDULERTYPE_DOW,          /* 3 - Day of week scheduling  */
+  SCHEDULERTYPE_COMMUSER,     /* 4 - Only a comm user triggers power on */
+  SCHEDULERTYPE_HOD,          /* 5 - Hour of day scheduling */
+  SCHEDULERTYPE_OFF,          /* 6 - Nothing wakes up radio */
+  SCHEDULERTYPE_LAST
+}
+schedulerType_e;
+
+typedef enum
+{
+  TIMEZONEMODE_NORMAL = 0,  /* 0 - Timezone is applied to user, no auto unlocking */
+  TIMEZONEMODE_EXCLUSION,   /* 1 - User NOT permitted access if in this zone at this time */
+  TIMEZONEMODE_AUTOTIME,    /* 2 - Auto unlock at the start of the TZ, lock at end */
+  TIMEZONEMODE_AUTOFPT,     /* 3 - Unlock on first person through, lock at end */
+  TIMEZONEMODE_UAPM,        /* 4 - Permits user activated passage mode when active */
+  TIMEZONEMODE_LAST
+}
+timeZoneMode_e;
+
+typedef enum
+{
+  UNLOCKMODE_NORMAL = 0,  /* 0 - Normal unlock (CONFIGITEM_UNLOCK_TIME duration) */
+  UNLOCKMODE_UNLOCK,      /* 1 - Unlock, switching to passage mode */
+  UNLOCKMODE_LOCK,        /* 2 - Lock, regardless of mode */
+  UNLOCKMODE_LAST
+}
+unlockMode_e;
+
+typedef enum
+{
+  UPSTREAMCOMMAND_RESERVED = 0,       /*  0 - Not used */
+  UPSTREAMCOMMAND_DEBUGMSG,           /*  1 - Debug message (zero terminated) */
+  UPSTREAMCOMMAND_QUERYVERSION,       /*  2 - Version string (zero terminated) */
+  UPSTREAMCOMMAND_QUERYDATETIME,      /*  3 - Current date/time */
+  UPSTREAMCOMMAND_QUERYSERIALNUMBER,  /*  5 - Serial number (MAX_SERIALNUM_LENGTH bytes) */
+  UPSTREAMCOMMAND_DUMPEVENTLOG,       /*  6 - Event log record */
+  UPSTREAMCOMMAND_DUMPNVRAM,          /*  7 - NVRAM dump record */
+  UPSTREAMCOMMAND_RMTAUTHREQUEST,     /*  8 - Remote authorization request */
+  UPSTREAMCOMMAND_RETRIEVEUSER,       /*  9 - Retrieve user record */
+  UPSTREAMCOMMAND_QUERYCONFIG,        /* 10 - Query configuration */
+  UPSTREAMCOMMAND_RMTEVENTLOGRECORD,  /* 11 - Remote event log record */
+  UPSTREAMCOMMAND_DPAC,               /* 12 - DPAC related message */
+  UPSTREAMCOMMAND_NOTIFY,             /* 14 - Notify user message */
+  UPSTREAMCOMMAND_MFG,                /* 15 - Manufacturing data */
+  UPSTREAMCOMMAND_EVENTLOGWARNING,    /* 16 - Event log warning level message */
+  UPSTREAMCOMMAND_DUMPNVRAMRLE,       /* 17 - Run Length Encoded (RLE) NVRAM dump record */
+  UPSTREAMCOMMAND_RMTDECLINEDRECORD,  /* 18 - Remote declined log record */
+  UPSTREAMCOMMAND_DECLINEDWARNING,    /* 19 - Declined log warning level message */
+  UPSTREAMCOMMAND_DUMPDECLINEDLOG,    /* 20 - Declined log record dump */
+  UPSTREAMCOMMAND_RMTALARMRECORD,     /* 21 - Remote alarm log record */
+  UPSTREAMCOMMAND_ALARMWARNING,       /* 22 - Alarm log warning level message */
+  UPSTREAMCOMMAND_DUMPALARMLOG,       /* 23 - Alarm log record dump */
+  UPSTREAMCOMMAND_CONNECTSCHEDULER,   /* 24 - Connection because of scheduler, contains serial number */
+  UPSTREAMCOMMAND_CONNECTCOMMUSER,    /* 25 - Connection because of comm user, contains serial number */
+  UPSTREAMCOMMAND_CONNECTALARM,       /* 26 - Connection because of alarm event, contains serial number */
+  UPSTREAMCOMMAND_DUMPDEBUGLOG,       /* 27 - Debug log dump record */
+  UPSTREAMCOMMAND_LAST
+}
+upstreamCommand_e;
+
+typedef enum
+{
+  UPSTREAMFIELD_NOTUSED = 0,          /*  0 - Not used */
+  UPSTREAMFIELD_SERIALNUMBER,         /*  1 - Contains unit serial number */
+  UPSTREAMFIELD_NAR,                  /*  2 - Contains 16 bit Next Available Record */
+  UPSTREAMFIELD_ENTRYDEVICE,          /*  3 - Contains a ppmSource_e */
+  UPSTREAMFIELD_PPMIFIELDTYPE,        /*  4 - Contains a type of _PIN (auxFieldType_e) */
+  UPSTREAMFIELD_PIN,                  /*  5 - Contains a PIN, Prox, mag key  */
+  UPSTREAMFIELD_SEQUENCENUMBER,       /*  6 - Contains 16 bit sequence number */
+  UPSTREAMFIELD_RESPONSEWINDOW,       /*  7 - Contains 8 bit response window (number of seconds) */
+  UPSTREAMFIELD_USERNUMBER,           /*  8 - Contains 16 bit user number */
+  UPSTREAMFIELD_VERSION,              /*  9 - Contains version string */
+  UPSTREAMFIELD_EVENTLOGRECORD,       /* 10 - Contains eventLog_e event log record */
+  UPSTREAMFIELD_DATETIME,             /* 11 - Contains 8 byte date/time data */
+  UPSTREAMFIELD_EVENTLOGRECORDCOUNT,  /* 17 - Contains number of event log records */
+  UPSTREAMFIELD_DECLINEDRECORDCOUNT,  /* 20 - Contains number of declined log records */
+  UPSTREAMFIELD_DECLINEDRECORD,       /* 21 - Contains declinedLog_t declined log record */
+  UPSTREAMFIELD_USERTYPE,             /* 23 - Contains the user type (master, emergency, normal, etc) */
+  UPSTREAMFIELD_ACCESSALWAYS,         /* 24 - Contains the access always mode (true, false) */
+  UPSTREAMFIELD_CACHED,               /* 25 - Contains the cached flag (true, false) */
+  UPSTREAMFIELD_PRIMARYFIELDTYPE,     /* 26 - Contains the primary field type (pin, prox, mag) */
+  UPSTREAMFIELD_AUXFIELDTYPE,         /* 27 - Contains the aux field type (pin, prox, mag) */
+  UPSTREAMFIELD_ACCESSMODE,           /* 28 - Contains the access mode (aux only, aux + pin, aux or pin, etc) */
+  UPSTREAMFIELD_EXPIREON,             /* 29 - Contains the date the user expires on (00/00/00 if not set) */
+  UPSTREAMFIELD_USECOUNT,             /* 30 - Contains the use count (if user type is ONE_TIME) */
+  UPSTREAMFIELD_TIMEZONE,             /* 31 - Contains the timezone bit map */
+  UPSTREAMFIELD_EXCEPTIONGROUP,       /* 32 - Contains the exception group */
+  UPSTREAMFIELD_PRIMARYPIN,           /* 33 - Contains the primary PPMI (ASCII, 0 terminated) */
+  UPSTREAMFIELD_AUXPIN,               /* 34 - Contains the aux PPMI (ASCII, 0 terminated) */
+  UPSTREAMFIELD_ALARMRECORDCOUNT,     /* 35 - Contains number of alarm log records */
+  UPSTREAMFIELD_ALARMRECORD,          /* 36 - Contains alarmLog_t alarm log record */
+  UPSTREAMFIELD_AUXCTLRVERSION,       /* 37 - Contains the version number of the auxiliary controller */
+  UPSTREAMFIELD_LAST
+}
+upstreamField_e;
+
+typedef enum
+{
+  USERTYPE_NONE = 0,    /*  0 - No user */
+  USERTYPE_MASTER,      /*  1 - Master user (clears panic, relock, lockout and auto open) */
+  USERTYPE_EMERGENCY,   /*  2 - Opens door regardless of state */
+  USERTYPE_SUPERVISOR,  /*  3 - Like emergency user, except won't unlock when in panic mode */
+  USERTYPE_USER,        /*  4 - Generic user */
+  USERTYPE_EXTENDED,    /*  5 - Same as _USER, but strike can be kept open longer */
+  USERTYPE_PASSAGE,     /*  6 - Toggles strike between passage and non-passage modes */
+  USERTYPE_ONETIME,     /*  7 - User may be used one time */
+  USERTYPE_PANIC,       /*  8 - Locks down locks, no user except master valid */
+  USERTYPE_LOCKOUT,     /*  9 - Locks out regular, extended, passage, one time, and notify users */
+  USERTYPE_RELOCK,      /* 10 - Relock cancels passage mode, but can't unlock */
+  USERTYPE_NOTIFY,      /* 11 - Same as _USER, only sends unsolicited message to server */
+  USERTYPE_COMM,        /* 12 - Kicks a communications sessions off if not running _HARDON scheduler */
+  USERTYPE_SUSPENDED,   /* 13 - User is suspended */
+  USERTYPE_LAST
+}
+userType_e;
+
 
 /*
  *  Wireshark ID of the R3 protocol
@@ -79,7 +1034,7 @@ static gint hf_r3_upstreamfieldlength = -1;          /* Upstream field length */
 static gint hf_r3_upstreamfieldtype = -1;            /* Upstream field type (upstreamField_e) */
 /*static gint hf_r3_upstreamfielddatalen = -1;*/         /* Upstream field data length */
 static gint hf_r3_upstreamfielderror = -1;           /* Upstream field is unknown type */
-static gint hf_r3_upstreamfieldarray [UPSTREAMFIELD_LAST];
+static gint hf_r3_upstreamfieldarray[UPSTREAMFIELD_LAST];
 
 static gint hf_r3_configitems = -1;
 static gint hf_r3_configitem = -1;
diff --git a/epan/dissectors/packet-assa_r3_public.h b/epan/dissectors/packet-assa_r3_public.h
deleted file mode 100644 (file)
index 3995c30..0000000
+++ /dev/null
@@ -1,996 +0,0 @@
-/* packet-r3_public.h
- * Routines for R3 packet dissection
- * Copyright (c) 2009 Assa Abloy USA <jcwren@assaabloyusa.com>
- *
- * $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 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.
- */
-
-#ifndef __PACKET_ASSA_R3_PUBLIC_H__
-#define __PACKET_ASSA_R3_PUBLIC_H__
-
-/* */
-/*  System limits */
-/* */
-#define MAX_USERS            2400
-#define MAX_TIMEZONES          32
-#define MAX_EXCEPTIONS         64
-#define MAX_EXCEPTIONGROUPS    64
-#define MAX_EVENTENTRIES    10000
-#define MAX_DECLINEDENTRIES   500
-#define MAX_ALARMENTRIES      200
-
-/*
- *  Enumerations
- */
-typedef enum
-{
-  ACCESSMODE_NONE = 0,        /* 0 - No access mode (not used, not legal, I think) */
-  ACCESSMODE_PRIMARYONLY,     /* 1 - Primary only */
-  ACCESSMODE_PRIMARYORAUX,    /* 2 - Primary or aux field */
-  ACCESSMODE_PRIMARYANDAUX,   /* 3 - Primary and aux field */
-  ACCESSMODE_PRIMARYTHENAUX,  /* 4 - Primary required first, then aux */
-  ACCESSMODE_LAST             /* 5 - Dummy, for range checking */
-}
-accessMode_e;
-
-typedef enum
-{
-  ADDUSERPARAMTYPE_DISPOSITION = 0,   /*  0 - What we're supposed to do (add, delete, etc) */
-  ADDUSERPARAMTYPE_USERNO,            /*  1 - User to manage (user number, U16) */
-  ADDUSERPARAMTYPE_ACCESSALWAYS,      /*  2 - Access always (boolean) */
-  ADDUSERPARAMTYPE_ACCESSMODE,        /*  3 - Access type (accessMode_e) */
-  ADDUSERPARAMTYPE_CACHED,            /*  4 - Entry is managed by cache system (boolean) */
-  ADDUSERPARAMTYPE_USERTYPE,          /*  5 - User type (userType_e) */
-  ADDUSERPARAMTYPE_PRIMARYFIELD,      /*  6 - Primary field (MAX_CREDENTIALBYTES) */
-  ADDUSERPARAMTYPE_PRIMARYFIELDTYPE,  /*  7 - Primary field type (fieldType_e); */
-  ADDUSERPARAMTYPE_AUXFIELD,          /*  8 - Auxiliary field (MAX_CREDENTIALBYTES) */
-  ADDUSERPARAMTYPE_AUXFIELDTYPE,      /*  9 - Auxiliary field type (fieldType_e) */
-  ADDUSERPARAMTYPE_TIMEZONE,          /* 10 - Timezone bitmap (U32) */
-  ADDUSERPARAMTYPE_EXPIREON,          /* 11 - Date on which user no longer granted access, if non-0 */
-  ADDUSERPARAMTYPE_USECOUNT,          /* 12 - Use count */
-  ADDUSERPARAMTYPE_EXCEPTIONGROUP,    /* 13 - Exception group */
-  ADDUSERPARAMTYPE_LAST
-}
-addUserParamType_e;
-
-typedef enum
-{
-  ALARMID_NONE = 0,       /* 0 - No alarm */
-  ALARMID_VALIDIN,        /* 1 - Valid entry */
-  ALARMID_DENIEDACCESS,   /* 2 - Denied access (bad credential) */
-  ALARMID_SECURED,        /* 3 - Door closed & secured (only seen after alarms 3 or 4) */
-  ALARMID_DOORFORCED,     /* 4 - Door forced */
-  ALARMID_KEYOVERRIDE,    /* 5 - Key override */
-  ALARMID_INVALIDENTRY,   /* 6 - Door open but invalid entry (key used?) */
-  ALARMID_DOORAJAR,       /* 7 - Door ajar (needs .ja woman with Engrish accent) */
-  ALARMID_LOWBATTERY,     /* 8 - Low battery alarm */
-  ALARMID_RXHELD,         /* 9 - RX held */
-  ALARMID_LAST
-}
-alarmID_e;
-
-typedef enum
-{
-  CAPABILITIES_USERS = 0,         /* 0 - Number of users supported */
-  CAPABILITIES_TIMEZONES,         /* 1 - Number of timezone supported */
-  CAPABILITIES_EXCEPTIONS,        /* 2 - Number of exceptions supported */
-  CAPABILITIES_EXCEPTIONGROUPS,   /* 3 - Number of exception groups supported */
-  CAPABILITIES_EVENTLOG,          /* 4 - Number of event log entries supported */
-  CAPABILITIES_DECLINEDLOG,       /* 5 - Number of declined log entries supported */
-  CAPABILITIES_ALARMLOG,          /* 6 - Number of alarm log entries supported */
-  CAPABILITIES_TOTALEVENTS,       /* 7 - Total events (EVENT_LAST - 1) */
-  CAPABILITIES_LAST
-}
-capabilities_e;
-
-typedef enum
-{
-  CHECKSUMRESULT_CONFIGURATIONNVRAM = 0,  /*  0 - Checksum results of the configuration NVRAM */
-  CHECKSUMRESULT_EXCEPTIONS,              /*  1 - Checksum results of the exceptions NVRAM */
-  CHECKSUMRESULT_EXCEPTIONGROUPS,         /*  2 - Checksum results of the exception groups NVRAM */
-  CHECKSUMRESULT_TZCALENDARS,             /*  3 - Checksum results of the time zone calendar NVRAM */
-  CHECKSUMRESULT_TIMEZONES,               /*  4 - Checksum results of the time zone NVRAM */
-  CHECKSUMRESULT_USERS,                   /*  5 - Checksum results of the users NVRAM */
-  CHECKSUMRESULT_CACHELRU,                /*  6 - Checksum results of the cache LRU */
-  CHECKSUMRESULT_LAST   
-}
-checksumResult_e;
-
-typedef enum
-{
-  CMD_RESPONSE = 0,               /*  0 - Response to command */
-  CMD_HANDSHAKE,                  /*  1 - Establish session */
-  CMD_KILLSESSION,                /*  2 - Kill session */
-  CMD_QUERYSERIALNUMBER,          /*  3 - Query serial number */
-  CMD_QUERYVERSION,               /*  4 - Query version */
-  CMD_SETDATETIME,                /*  5 - Set date and time */
-  CMD_QUERYDATETIME,              /*  6 - Query date and time */
-  CMD_SETCONFIG,                  /*  7 - Set configuration options */
-  CMD_GETCONFIG,                  /*  8 - Read configuration options  */
-  CMD_MANAGEUSER,                 /*  9 - Manage users (add/delete/replace/update) */
-  CMD_DELETEUSERS,                /* 10 - Delete users (all/most/cached) */
-  CMD_DEFINEEXCEPTION,            /* 11 - Define exception (old block holiday) */
-  CMD_DEFINEEXCEPTIONGROUP,       /* 12 - Define exception group */
-  CMD_DEFINECALENDAR,             /* 13 - Define calendar */
-  CMD_DEFINETIMEZONE,             /* 14 - Define time zone */
-  CMD_RMTAUTHRETRY,               /* 15 - Remote authorization retry */
-  CMD_FILTERS,                    /* 16 - Event log filter configuration */
-  CMD_ALARMCONFIGURE,             /* 17 - Alarm condition configuration */
-  CMD_EVENTLOGDUMP,               /* 18 - Dump event log */
-  CMD_DECLINEDLOGDUMP,            /* 19 - Dump declined log */
-  CMD_ALARMLOGDUMP,               /* 20 - Dump alarm log */
-  CMD_DOWNLOADFIRMWARE,           /* 21 - Download firmware */
-  CMD_DOWNLOADFIRMWARETIMEOUT,    /* 22 - Download firmware timeout (internal command only) */
-  CMD_POWERTABLESELECTION,        /* 23 - Power table selection */
-  CMD_CLEARNVRAM,                 /* 24 - Clear nvram (config/event log/declined log/etc) */
-  CMD_DPAC,                       /* 25 - DPAC manipulation commands */
-  CMD_SELFTEST,                   /* 26 - Selftest (heh) */
-  CMD_RESET,                      /* 27 - Restart controller */
-  CMD_LOGWRITE,                   /* 28 - Write event to event log */
-  CMD_MFGCOMMAND,                 /* 29 - Manufacturing commands */
-  CMD_NVRAMBACKUP,                /* 30 - Backup/restore/erase NVRAM */
-  CMD_EXTENDEDRESPONSE,           /* 31 - Response to command (extended version) */
-  CMD_LAST
-}
-cmdCommand_e;
-
-typedef enum
-{
-  CMDMFG_SETSERIALNUMBER = 0,   /*  0 - Set serial number */
-  CMDMFG_SETCRYPTKEY,           /*  1 - Set encryption key */
-  CMDMFG_DUMPNVRAM,             /*  2 - Dump NVRAM */
-  CMDMFG_TERMINAL,              /*  3 - DPAC terminal mode */
-  CMDMFG_REMOTEUNLOCK,          /*  4 - Remote unlock (only on 'd' builds) */
-  CMDMFG_AUXCTLRVERSION,        /*  5 - Request version of auxiliary controller */
-  CMDMFG_IOPINS,                /*  6 - Read I/O pin states */
-  CMDMFG_ADCS,                  /*  7 - Read ADC values */
-  CMDMFG_HARDWAREID,            /*  8 - Read hardware ID and CPU ID */
-  CMDMFG_CHECKPOINTLOGDUMP,     /*  9 - Dump checkpoint log */
-  CMDMFG_CHECKPOINTLOGCLEAR,    /* 10 - Clear checkpoint log */
-  CMDMFG_READREGISTERS,         /* 11 - Read selected CPU registers */
-  CMDMFG_FORCEOPTIONS,          /* 12 - Force I/O lines to certain states */
-  CMDMFG_COMMUSER,              /* 13 - Fake a comm user entry */
-  CMDMFG_DUMPKEYPAD,            /* 14 - Dump keypad debugging buffer */
-  CMDMFG_BATTERYCHECK,          /* 15 - Force battery check */
-  CMDMFG_RAMREFRESH,            /* 16 - Refresh RAM variables from NVRAM */
-  CMDMFG_TASKFLAGS,             /* 17 - Dump task flags */
-  CMDMFG_TIMERCHAIN,            /* 18 - Dump active timer chains */
-  CMDMFG_PEEKPOKE,              /* 19 - Peek/poke CPU RAM memory */
-  CMDMFG_LOCKSTATE,             /* 20 - Display global gLockState variable */
-  CMDMFG_CAPABILITIES,          /* 21 - Read firmware capabilities (# users/event log entries, etc) */
-  CMDMFG_DUMPM41T81,            /* 22 - Dump M41T81 RTC registers */
-  CMDMFG_DEBUGLOGDUMP,          /* 23 - Dump debugging log */
-  CMDMFG_DEBUGLOGCLEAR,         /* 24 - Clear debugging log */
-  CMDMFG_TESTWDT,               /* 25 - Test watchdog */
-  CMDMFG_QUERYCKSUM,            /* 26 - Query NVRAM checksum value */
-  CMDMFG_VALIDATECHECKSUMS,     /* 27 - Validate checksums */
-  CMDMFG_REBUILDLRUCACHE,       /* 28 - Rebuild LRC cache */
-  CMDMFG_TZUPDATE,              /* 29 - Send TZCHANGE to tod.c */
-  CMDMFG_TESTPRESERVE,          /* 30 - Test preserve save/restore code */
-  CMDMFG_MORTISESTATELOGDUMP,   /* 31 - Dump the mortise state log */
-  CMDMFG_MORTISESTATELOGCLEAR,  /* 32 - Clear the mortise state log */
-  CMDMFG_MORTISEPINS,           /* 33 - Display current mortise pin status */
-  CMDMFG_HALTANDCATCHFIRE,      /* 34 - Stop processor (optionally catch fire) */
-  CMDMFG_LAST
-}
-cmdMfgCommand_e;
-
-typedef enum
-{
-  CONFIGITEM_SERIAL_NUMBER = 0,           /*    0 - Ye olde serial number */
-  CONFIGITEM_CRYPT_KEY,                   /*    1 - The encryption/decryption key */
-  CONFIGITEM_HARDWARE_OPTIONS_MFG,        /*    2 - Bit map of hardware options at manufacturing time (hardwareOptions_e) */
-  CONFIGITEM_HARDWARE_OPTIONS,            /*    3 - Bit map of hardware options at runtime time (hardwareOptions_e) */
-  CONFIGITEM_NVRAM_CHANGES,               /*    4 - Log of NVRAM changes since reset (which blocks were reset) */
-
-  CONFIGITEM_NVRAMDIRTY,                  /*    5 - NVRAM is (or might be) dirty */
-  CONFIGITEM_NVRAM_WV,                    /*    6 - NVRAM write verify (I2C parts only) */
-  CONFIGITEM_ENABLE_WDT,                  /*    7 - If true, and OPT_WATCHDOG enabled, enables WDT */
-  CONFIGITEM_EARLY_ACK,                   /*    8 - Generates early RESPONSE_COMMANDRECEIVED message for commands that take some time */
-  CONFIGITEM_CONSOLE_AES_ONLY,            /*    9 - If set, requires AES encryption on serial communications */
-  CONFIGITEM_RADIO_AES_ONLY,              /*   10 - If set, requires AES encryption on radio communications */
-  CONFIGITEM_NDRLE,                       /*   11 - RLE (Run Length Encoding) NVRAM dump enable/disable */
-  CONFIGITEM_SOMF,                        /*   12 - Stop on mortise failure */
-  CONFIGITEM_NOGAF,                       /*   13 - Prevents what should be fatal errors from being fatal (i.e, No One Gives A Flip) */
-  CONFIGITEM_CARD_READER_POWER,           /*   14 - External mag reader power supply control */
-  CONFIGITEM_PROX_ENABLE,                 /*   15 - Prox into permanent sleep mode */
-  CONFIGITEM_CKSUMCONFIG,                 /*   16 - Configuration NVRAM checksum enable/disable  */
-  CONFIGITEM_DAILY_BATTERY_CHECK,         /*   17 - Enable/disable daily battery check */
-  CONFIGITEM_DAILY_BATTERY_CHECK_HOUR,    /*   18 - If daily battery check enabled, top of the hour to check at */
-  CONFIGITEM_BATTERY_LOW,                 /*   19 - Return low battery status (TRUE = low) */
-
-  CONFIGITEM_LRU_HEAD,                    /*   20 - Cache LRU head pointer */
-  CONFIGITEM_LRU_TAIL,                    /*   21 - Cache LRU tail pointer */
-  CONFIGITEM_RTC_CALIBRATION,             /*   22 - Signed 6 bit value written to M41T81 calibration register */
-  CONFIGITEM_ACVREQUESTER,                /*   23 - Auxiliary controller version requester (fromDevice_e, internal variable) */
-  CONFIGITEM_LOCAL_LED,                   /*   24 - Local LED function assignment */
-
-  CONFIGITEM_ERRCNT_XORLEN,               /*   25 - Error counter for XOR length not matching in protocol.c */
-  CONFIGITEM_ERRCNT_CRC,                  /*   26 - Error counter for bad CRC in protocol.c */
-  CONFIGITEM_ERRCNT_NOTSIGIL,             /*   27 - Error counter for character received was not sigil in protocol.c */
-  CONFIGITEM_ERRCNT_TIMEOUT,              /*   28 - Error counter for timeout in protocol.c */
-  CONFIGITEM_ERRCNT_TOOLONG,              /*   29 - Error counter for packet too long in protocol.c */
-  CONFIGITEM_ERRCNT_TOOSHORT,             /*   30 - Error counter for packet too short in protocol.c */
-  CONFIGITEM_ERRCNT_HITDEFAULT,           /*   31 - Error counter for hitting default handler in protocol.c */
-  CONFIGITEM_ERRCNT_OVERRUN,              /*   32 - Error counter for serial buffer overrun in serial.c */
-  CONFIGITEM_ERRCNT_UARTFE,               /*   33 - Error counter for UART framing error in serial.c */
-  CONFIGITEM_ERRCNT_UARTOE,               /*   34 - Error counter for UART overrun error in serial.c */
-
-  CONFIGITEM_DST_SET,                     /*   35 - Daylight savings time currently active */
-  CONFIGITEM_DST_MODE,                    /*   36 - Determines if repeating month/date, repeating month/day, or specific month/date (dstMode_e) */
-  CONFIGITEM_DST_FORWARD_MONTH,           /*   37 - Month to skip forward on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
-  CONFIGITEM_DST_FORWARD_DOM,             /*   38 - Day of month to skip forward on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
-  CONFIGITEM_DST_FORWARD_OOD,             /*   39 - Occurence number of CONFIGITEM_DST_FORWARD_DOW to skip forward on (1-5)  (DSTMODE_REPEATINGDOW) */
-  CONFIGITEM_DST_FORWARD_DOW,             /*   40 - Day of week to skip forward on (1-7) (DSTMODE_REPEATINGDOW) */
-  CONFIGITEM_DST_FORWARD_HOUR,            /*   41 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
-  CONFIGITEM_DST_FORWARD_MINUTE,          /*   42 - Hour of day of month to skip forward on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
-  CONFIGITEM_DST_FORWARD_ADJUST,          /*   43 - Number of minutes to move forward */
-  CONFIGITEM_DST_BACK_MONTH,              /*   44 - Month to fall back on (1-12) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDAY, DSTMODE_ONETIMEDATE) */
-  CONFIGITEM_DST_BACK_DOM,                /*   45 - Day of month to fall back on (1-31) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
-  CONFIGITEM_DST_BACK_OOD,                /*   46 - Occurence number of CONFIGITEM_DST_BACK_DOW to fall back on (1-5)  (DSTMODE_REPEATINGDOW) */
-  CONFIGITEM_DST_BACK_DOW,                /*   47 - Day of week to fall back on (1-7) (DSTMODE_REPEATINGDATE, DSTMODE_ONETIMEDATE) */
-  CONFIGITEM_DST_BACK_HOUR,               /*   48 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
-  CONFIGITEM_DST_BACK_MINUTE,             /*   49 - Hour of day of month to fall back on (0-23) (DSTMODE_REPEATINGDATE, DSTMODE_REPEATINGDOW, DSTMODE_ONETIMEDATE) */
-  CONFIGITEM_DST_BACK_ADJUST,             /*   50 - Number of minutes to move backwards */
-
-  CONFIGITEM_EVENTLOG_ZEROMEM,            /*   51 - If set, event log memory is zeroed when event log cleared */
-  CONFIGITEM_EVENTLOG_BEGIN,              /*   52 - Beginning record number when event log cleared */
-  CONFIGITEM_EVENTLOG_RECORD,             /*   53 - Next event log record to write */
-  CONFIGITEM_EVENTLOG_ENTRIES,            /*   54 - Number of entries in event log */
-  CONFIGITEM_EVENTLOG_WARNDEVICE,         /*   55 - Event log warning device */
-  CONFIGITEM_EVENTLOG_WARNEVERY,          /*   56 - Warn at every 'n' records (more or less) */
-  CONFIGITEM_EVENTLOG_RMTDEVICE,          /*   57 - Device event log entries copied to (fromDevice_e) */
-
-  CONFIGITEM_DECLINEDLOG_ZEROMEM,         /*   58 - If set, declined log memory is zeroed when declined log cleared */
-  CONFIGITEM_DECLINEDLOG_BEGIN,           /*   59 - Beginning record number when declined log cleared */
-  CONFIGITEM_DECLINEDLOG_RECORD,          /*   60 - Next declined log record to write */
-  CONFIGITEM_DECLINEDLOG_ENTRIES,         /*   61 - Number of entries in declined log */
-  CONFIGITEM_DECLINEDLOG_WARNDEVICE,      /*   62 - Declined record warning device */
-  CONFIGITEM_DECLINEDLOG_WARNEVERY,       /*   63 - Warn at every 'n' records (more or less) */
-  CONFIGITEM_DECLINEDLOG_RMTDEVICE,       /*   64 - Device declined entries copied to (fromDevice_e) */
-
-  CONFIGITEM_ALARMLOG_ZEROMEM,            /*   65 - If set, alarm log memory is zeroed when alarm log cleared */
-  CONFIGITEM_ALARMLOG_BEGIN,              /*   66 - Beginning record number when alarm log cleared */
-  CONFIGITEM_ALARMLOG_RECORD,             /*   67 - Next alarm log record to write */
-  CONFIGITEM_ALARMLOG_ENTRIES,            /*   68 - Number of entries in alarm log */
-  CONFIGITEM_ALARMLOG_WARNDEVICE,         /*   69 - Alarm record warning device */
-  CONFIGITEM_ALARMLOG_WARNEVERY,          /*   70 - Warn at every 'n' records (more or less) */
-  CONFIGITEM_ALARMLOG_RMTDEVICE,          /*   71 - Device alarm entries copied to (fromDevice_e) */
-
-  CONFIGITEM_VISIBLE_FEEDBACK,            /*   72 - Visible feedback on keypad presses enabled */
-  CONFIGITEM_AUDIBLE_FEEDBACK,            /*   73 - Audible feedback on keypad presses enabled */
-  CONFIGITEM_VISIBLE_INDICATORS,          /*   74 - Visible indicators on all actions (run dark) */
-  CONFIGITEM_AUDIBLE_INDICATORS,          /*   75 - Audible indicators on all actions (run silent) */
-  CONFIGITEM_2NDPINDURATION,              /*   76 - Number of seconds to wait for second PIN */
-  CONFIGITEM_LOCKOUT_ATTEMPTS,            /*   77 - Number of pin/prox/magcard attempts before lockout */
-  CONFIGITEM_LOCKOUT_DURATION,            /*   78 - Duration of lockout, in penta-seconds */
-  CONFIGITEM_KEYPAD_INACTIVITY,           /*   79 - Duration in seconds with no key entries before key buffer cleared */
-  CONFIGITEM_ICIDLE_DURATION,             /*   80 - If last credential was invalid, invalid attempt counter reset after this many seconds */
-  CONFIGITEM_WRITE_DECLINED_LOG,          /*   81 - Declined log writing enable/disable */
-  CONFIGITEM_LOW_BATTERY_INDICATOR,       /*   82 - Low battery audio/visual indicator enable/disable */
-
-  CONFIGITEM_PANIC_MODE,                  /*   83 - Enable/disable panic mode */
-
-  CONFIGITEM_TIMEZONE_ENABLE,             /*   84 - Timezones enabled (applies to users, not passage modes) */
-  CONFIGITEM_EXCEPTION_ENABLE,            /*   85 - Exceptions enabled (applies to users and passage modes) */
-  CONFIGITEM_AUTOUNLOCK_ENABLE,           /*   86 - Auto-unlocking (schedule based) enabled */
-
-  CONFIGITEM_LOCK_PRIORITY_EMERGENCY,     /*   87 - DPAC/PWM lock priority for emergency users (lockPriority_e) */
-  CONFIGITEM_LOCK_PRIORITY_SUPERVISOR,    /*   88 - DPAC/PWM lock priority for supervisors (lockPriority_e) */
-  CONFIGITEM_LOCK_PRIORITY_USER,          /*   89 - DPAC/PWM lock priority for users (lockPriority_e) */
-  CONFIGITEM_LOCK_PRIORITY_PASSAGE,       /*   90 - DPAC/PWM lock priority for passage mode (lockPriority_e) */
-  CONFIGITEM_LOCK_PRIORITY_PANIC,         /*   91 - DPAC/PWM lock priority for panic mode/panic users (lockPriority_e) */
-  CONFIGITEM_LOCK_PRIORITY_LOCKOUT,       /*   92 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
-  CONFIGITEM_LOCK_PRIORITY_RELOCK,        /*   93 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
-  CONFIGITEM_LOCK_PRIORITY_BOLTTHROWN,    /*   94 - DPAC/PWM lock priority for bolt thrown (lockPriority_e) */
-  CONFIGITEM_LOCK_PRIORITY_CONFIGCHANGE,  /*   95 - DPAC/PWM lock priority for configuration change (CONFIGITEM_LOCK_TYPE) (lockPriority_e) */
-  CONFIGITEM_LOCK_PRIORITY_REMOTE,        /*   96 - DPAC/PWM lock priority for remote unlock (lockPriority_e) */
-  CONFIGITEM_LOCK_TYPE,                   /*   97 - Type of lock (PWM, electric, magnetic) */
-  CONFIGITEM_DOUBLE_PULSE,                /*   98 - Lock double pulse enabled */
-  CONFIGITEM_DOUBLE_DELAY,                /*   99 - Delay between double pulses, in centiseconds */
-  CONFIGITEM_MOTOR_DURATION,              /*  100 - Duration lock motor to run, in centiseconds */
-  CONFIGITEM_MORTISE_TYPE,                /*  101 - Type of mortise connected to controller */
-  CONFIGITEM_UNLOCK_TIME,                 /*  102 - Normal unlock duration  in seconds */
-  CONFIGITEM_EXT_UNLOCK_TIME,             /*  103 - Extended unlock duration, in seconds */
-  CONFIGITEM_DOOR_AJAR_TIME,              /*  104 - Time before door considered stuck open, in seconds */
-
-  CONFIGITEM_SESSION_TIMEOUT,             /*  105 - Session timeout, in seconds */
-  CONFIGITEM_RETRY_ON_TIMEOUT,            /*  106 - Retry lock-initiated sessions if comm session timed out (instead of terminated by remote end) */
-
-  CONFIGITEM_UNSOLICITED_ENCRYPT,         /*  107 - Unsolicited messages are encrypted (encryptionScheme_e) */
-  CONFIGITEM_RMT_AUTH_TIMEOUT,            /*  108 - Seconds to wait for remote authorization timeout (0 = no remote auth) */
-  CONFIGITEM_RMT_AUTH_DEVICE,             /*  109 - Device remote authorization requests sent over (fromDevice_e) */
-  CONFIGITEM_ALARM_DEVICE,                /*  110 - Device alarm condition connects via */
-  CONFIGITEM_NOTIFY_DEVICE,               /*  111 - Notify user device */
-  CONFIGITEM_COMMUSER_DEVICE,             /*  112 - Device comm user connects via */
-  CONFIGITEM_SCHEDULER_DEVICE,            /*  113 - Device scheduler connects via */
-
-  CONFIGITEM_SCHEDULER_TYPE,              /*  114 - Scheduling algorithm to use (schedulerType_e) */
-  CONFIGITEM_SCHEDULER_AWAKE,             /*  115 - Number of decaseconds scheduler is awake for */
-  CONFIGITEM_SCHEDULER_PERIOD,            /*  116 - Interval in minutes between scheduled wakeups (SCHEDULERTYPE_SIMPLE) */
-  CONFIGITEM_SCHEDULER_HOD,               /*  117 - Hour of day map (SCHEDULERTYPE_HOD) */
-  CONFIGITEM_SCHEDULER_DOW,               /*  118 - Day of month map (SCHEDULERTYPE_DOW) */
-  CONFIGITEM_SCHEDULER_DOM,               /*  119 - Day of month map (SCHEDULERTYPE_DOM) */
-  CONFIGITEM_SCHEDULER_HM1,               /*  120 - On at hour:minute #1 */
-  CONFIGITEM_SCHEDULER_HM2,               /*  121 - On at hour:minute #2 */
-  CONFIGITEM_SCHEDULER_HM3,               /*  122 - On at hour:minute #3 */
-  CONFIGITEM_SCHEDULER_HM4,               /*  123 - On at hour:minute #4 */
-
-  CONFIGITEM_RADIO_TYPE,                  /*  124 - Radio type (None, DPAC, WiPort, etc) */
-  CONFIGITEM_RADIO_MODE,                  /*  125 - Radio mode (DPAC=active/passive) */
-  CONFIGITEM_RADIO_TIMEOUT,               /*  126 - Number of seconds before we decide server didn't hear us (only in RADIOMODE_LOCKINITIATED) */
-  CONFIGITEM_RADIO_ATTEMPTS,              /*  127 - Number of times to attempt connection to server (only in RADIOMODE_LOCKINITIATED) */
-  CONFIGITEM_RADIO_HOUSEKEEPING,          /*  128 - Time we allow for radio housekeeping (associate with AP, etc) */
-  CONFIGITEM_RADIO_LEAPUSERNAME,          /*  129 - LEAP username */
-  CONFIGITEM_RADIO_LEAPPASSWORD,          /*  130 - LEAP password */
-
-  CONFIGITEM_INHIBIT_VOLTAGE,             /*  131 - Voltage when battery is considered dead */
-  CONFIGITEM_LOW_VOLTAGE,                 /*  132 - Voltage when battery is considered low */
-  CONFIGITEM_PT_RANGE_1,                  /*  133 - Power table for 0.00 to 5.99 volts */
-  CONFIGITEM_PT_RANGE_2,                  /*  134 - Power table for 6.00 to 6.49 volts */
-  CONFIGITEM_PT_RANGE_3,                  /*  135 - Power table for 6.50 to 6.99 volts */
-  CONFIGITEM_PT_RANGE_4,                  /*  136 - Power table for 7.00 to 7.49 volts */
-  CONFIGITEM_PT_RANGE_5,                  /*  137 - Power table for 7.50 to 7.99 volts */
-  CONFIGITEM_PT_RANGE_6,                  /*  138 - Power table for 8.00 to 8.49 volts */
-  CONFIGITEM_PT_RANGE_7,                  /*  139 - Power table for 8.50 to 8.99 volts */
-  CONFIGITEM_PT_RANGE_8,                  /*  140 - Power table for 9.00 and up volts */
-
-  CONFIGITEM_MAGCARD_IFS,                 /*  141 - Include field separator character in returned data */
-  CONFIGITEM_MAGCARD_FIELDS,              /*  142 - Mag card fields to include */
-  CONFIGITEM_MAGCARD_OFFSET,              /*  143 - Offset into concatenated field */
-  CONFIGITEM_MAGCARD_DIGITS,              /*  144 - Number of digits to return past offset */
-
-  CONFIGITEM_ALARMS,                      /*  145 - Alarms (not writable) */
-  CONFIGITEM_FILTERS,                     /*  146 - Event filter storage (not writable) */
-  CONFIGITEM_ALARMSTATE,                  /*  147 - Current alarm state (alarmID_e) */
-  CONFIGITEM_DOORSTATE,                   /*  148 - Current door state (doorState_e) */
-
-  CONFIGITEM_DPACDEBUG,                   /*  149 - Enable DPAC debug events to event log */
-  CONFIGITEM_FAILOPENSECURE,              /*  150 - Fail open (false) or secure (true) on battery dead */
-
-  CONFIGITEM_REPLACED_VOLTAGE,            /*  151 - If battery above this voltage, it's been replaced */
-
-  CONFIGITEM_RX_HELD_TIME,                /*  152 - If RX held longer than this, sent RX held alarm */
-  CONFIGITEM_PACKET_TIMEOUT,              /*  153 - Time (in seconds) that a complete packet must arrive in */
-
-  CONFIGITEM_EXTENDEDRESPONSE,            /*  154 - Enables extended response (which includes original sequence number) */
-  CONFIGITEM_PASSAGEMODEINDICATOR,        /*  155 - When lock in passage mode, LEDs show denied if set, granted if cleared (Squish #1133) */
-
-  CONFIGITEM_PFMRETURNTIME,               /*  156 - Number of seconds power must be present to exit power fail death loop */
-
-  CONFIGITEM_LAST,                        /*  Must be last item defined (All non-virtual items added above) */
-
-  CONFIGITEM_MAGIC_FIRST = 239,           /*  Next item is first magic command */
-  CONFIGITEM_MAGIC_USERFIELD,             /*  240 - Virtual command to delete PIN '8989', add user '8989' */
-  CONFIGITEM_MAGIC_USERADD,               /*  241 - Virtual command to add a user (PIN only) */
-  CONFIGITEM_MAGIC_USERDELETE,            /*  242 - Virtual command to delete a user */
-  CONFIGITEM_MAGIC_NVRAMBACKUP,           /*  243 - Virtual command to backup NVRAM to FLASH */
-  CONFIGITEM_MAGIC_NVRAMRESTORE,          /*  244 - Virtual command to restore NVRAM from FLASH */
-  CONFIGITEM_MAGIC_NVRAMERASE,            /*  245 - Virtual command to erase backed-up NVRAM */
-  CONFIGITEM_MAGIC_LAST                   /*  *Really* the last item */
-}
-configItem_e;
-
-typedef enum
-{
-  DELETEUSERS_ALL = 0,    /* 0 - Delete ALL users, including master and emergency, restores default users */
-  DELETEUSERS_CACHED,     /* 1 - Delete only cached users */
-  DELETEUSERS_LAST
-}
-deleteUsers_e;
-
-typedef enum
-{
-  DISPOSITION_ADD = 0,    /* 0 - Add, must not exist (by user number only) */
-  DISPOSITION_REPLACE,    /* 1 - Replace, (add, but overwrite if necessary) */
-  DISPOSITION_UPDATE,     /* 2 - Update, must already exist */
-  DISPOSITION_DELETE,     /* 3 - Delete, exists or not is irrelevant */
-  DISPOSITION_RETRIEVE,   /* 4 - Retrieve, must exist */
-  DISPOSITION_LAST
-}
-disposition_e;
-
-typedef enum
-{
-  DOORSTATE_NONE = 0,       /* 0 - No door state available */
-  DOORSTATE_SECURED,        /* 1 - Door closed & secured */
-  DOORSTATE_DOORFORCED,     /* 2 - Door forced */
-  DOORSTATE_KEYOVERRIDE,    /* 3 - Key override */
-  DOORSTATE_DOORAJAR,       /* 4 - Door ajar  */
-  DOORSTATE_LAST
-}
-doorState_e;
-
-typedef enum
-{
-  DSTMODE_NONE,           /* 0 - Automatic DST switching disabled */
-  DSTMODE_REPEATINGDOM,   /* 1 - Particular day on a particular month (Apr 2nd) */
-  DSTMODE_REPEATINGDOW,   /* 2 - Day of week on a particular week of a particular month (Sunday of last week of April) */
-  DSTMODE_ONETIMEDOM,     /* 3 - Like DSTMODE_REPEATINGDOM, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|DAY] items */
-  DSTMODE_ONETIMEDOW,     /* 4 - Like DSTMODE_REPEATINGDOW, but clears CONFIGITEM_DST_[FORWARD|BACK][MONTH|OOD|DOW] items */
-  DSTMODE_LAST
-}
-dstMode_e;
-
-typedef enum
-{
-  ENCRYPTIONSCHEME_NONE = 0,  /* 0 - No encryption */
-  ENCRYPTIONSCHEME_ROLLING,   /* 1 - XOR with crypt key, shift each byte */
-  ENCRYPTIONSCHEME_SN,        /* 2 - XOR with serial number, shift each byte */
-  ENCRYPTIONSCHEME_AESIV,     /* 3 - AES implementation (set initial vector) */
-  ENCRYPTIONSCHEME_AES,       /* 4 - AES implementation */
-  ENCRYPTIONSCHEME_LAST
-}
-encryptionScheme_e;
-
-typedef enum
-{
-  EVENT_INVALIDPIN = 0,       /*   0 - Entered PIN was invalid */
-  EVENT_USER,                 /*   1 - Regular user has been granted access */
-  EVENT_ONETIME,              /*   2 - One-time user has been granted access */
-  EVENT_PASSAGEBEGIN,         /*   3 - Lock has unlocked because of auto-unlock mode */
-  EVENT_PASSAGEEND,           /*   4 - Lock has relocked because of auto-unlock mode */
-  EVENT_BADTIME,              /*   5 - Access attempted outside of allowed time/date */
-  EVENT_LOCKEDOUT,            /*   6 - Access attempted during panic or lockout */
-  EVENT_LOWBATTERY,           /*   7 - Battery is low */
-  EVENT_DEADBATTERY,          /*   8 - Battery is dead */
-  EVENT_BATTERYREPLACED,      /*   9 - Battery has been replaced */
-  EVENT_USERADDED,            /*  10 - User added or changed */
-  EVENT_USERDELETED,          /*  11 - User deleted */
-  EVENT_EMERGENCY,            /*  12 - The emergency code was entered */
-  EVENT_PANIC,                /*  13 - Somebody pushed the panic button */
-  EVENT_RELOCK,               /*  14 - Relock code was entered */
-  EVENT_LOCKOUTBEGIN,         /*  15 - Lockout code was entered */
-  EVENT_LOCKOUTEND,           /*  16 - Lockout code was entered again */
-  EVENT_RESET,                /*  17 - Lock was reset (restarted) */
-  EVENT_DATETIMESET,          /*  18 - System date & time was set */
-  EVENT_LOGCLEARED,           /*  19 - Event log cleared */
-  EVENT_DBRESET,              /*  20 - User database reset */
-  EVENT_COMMSTARTED,          /*  21 - Communications session started */
-  EVENT_COMMENDED,            /*  22 - Communications session ended */
-  EVENT_FIRMWAREABORT,        /*  23 - A firmware update aborted */
-  EVENT_FIRMWAREERROR,        /*  24 - A firmware update encountered an error */
-  EVENT_FIRMWARETIMEOUT,      /*  25 - Timeout expecting firmware download data record */
-  EVENT_DSTFALLBACK,          /*  26 - Clock set back */
-  EVENT_DSTSPRINGFORWARD,     /*  27 - Clock set forward */
-  EVENT_BOLTTHROWN,           /*  28 - Bolt thrown */
-  EVENT_BOLTRETRACTED,        /*  29 - Bolt retracted */
-  EVENT_MASTERCODE,           /*  30 - Master code entered (clears panic, relock, and lockout) */
-  EVENT_COMMUSER,             /*  31 - A comm user was activated */
-  EVENT_DPACDISABLED,         /*  32 - DPAC disabled */
-  EVENT_NOTIFY,               /*  33 - Notify user has been granted access */
-  EVENT_EXPIRED,              /*  34 - Expired user attempted access */
-  EVENT_SUPERVISOR,           /*  35 - The supervisor code was entered */
-  EVENT_MCCENTER,             /*  36 - Entered MCC programming mode */
-  EVENT_MCCEXIT,              /*  37 - Exited MCC programming mode */
-  EVENT_SERIALRXOVERRUN,      /*  38 - Serial receiver overrun */
-  EVENT_DPACRXOVERRUN,        /*  39 - DPAC receiver overrun */
-  EVENT_NVRAMPBCLEAR,         /*  40 - NVRAM cleared by pushybutton */
-  EVENT_NVRAMLAYOUTCHANGE,    /*  41 - NVRAM cleared by revision */
-  EVENT_NVRAMOK,              /*  42 - NVRAM wasn't changed */
-  EVENT_USERREPLACED,         /*  43 - User replaced */
-  EVENT_RADIOTIMEOUT,         /*  44 - Radio timed out waiting for remote login */
-  EVENT_SUSPENDEDUSER,        /*  45 - Suspended user attempted access */
-  EVENT_USERUPDATED,          /*  46 - User updated */
-  EVENT_DOORBOLTED,           /*  47 - Access denied because door is bolted */
-  EVENT_PANICACTIVE,          /*  48 - Access denied because lock is in panic mode */
-  EVENT_PASSAGEACTIVE,        /*  49 - Access denied because lock is in passage mode */
-  EVENT_PASSAGEINACTIVE,      /*  50 - Access denied because lock is not in passage mode */
-  EVENT_BADACCESSMODE,        /*  51 - Access denied because access mode is wierd */
-  EVENT_CLOCKERR,             /*  52 - Error reading RTC */
-  EVENT_REMOTEUNLOCK,         /*  53 - Remote unlock */
-  EVENT_TZHAUDISABLED,        /*  54 - Time zone, exceptions, and auto-unlock functionality disabled */
-  EVENT_EVENTLOGWRAPPED,      /*  55 - Event log wrapped */
-  EVENT_DECLINEDLOGWRAPPED,   /*  56 - Declined log wrapped */
-  EVENT_ALARMLOGWRAPPED,      /*  57 - Alarm log wrapped */
-  EVENT_RADIOBUSYEMERGENCY,   /*  58 - Access denied because radio is busy */
-  EVENT_RADIOBUSYSUPERVISOR,  /*  59 - Access denied because radio is busy */
-  EVENT_RADIOBUSYONETIME,     /*  60 - Access denied because radio is busy */
-  EVENT_RADIOBUSYUSER,        /*  61 - Access denied because radio is busy */
-  EVENT_RADIOBUSYPANIC,       /*  62 - Access denied because radio is busy */
-  EVENT_RADIOBUSYREX,         /*  63 - Access denied because radio is busy */
-  EVENT_RADIOBUSYLOCKOUT,     /*  64 - Access denied because radio is busy */
-  EVENT_RADIOBUSYRELOCK,      /*  65 - Access denied because radio is busy */
-  EVENT_BATTERYCHECKHELDOFF,  /*  66 - Battery check was not performed (user number says why) */
-  EVENT_RMTAUTHREQUEST,       /*  67 - Remote authorization request made */
-  EVENT_FIRMWAREUPDATE,       /*  68 - A firmware update was attempted, and succeeded */
-  EVENT_FIRMWAREUPDATEFAILED, /*  69 - A firmware update was attempted, and failed */
-  EVENT_MSMFAILURE,           /*  70 - Mortise state machine failure */
-  EVENT_CLOCKRESET,           /*  71 - The RTC was reset, likely due to ESD */
-  EVENT_POWERFAIL,            /*  72 - Power Fail Monitor (PFM) circuit triggered */
-  EVENT_DPAC501WENTSTUPID,    /*  73 - DPAC-501 failed to release CTS on power up */
-  /*
-   * These are all internal debugging events.  Real events should go before these.
-   */
-  EVENT_CHECKSUMCONFIG,       /*  74 - Performing checksum on configuration NVRAM */
-  EVENT_CHECKSUMTZ,           /*  75 - Performing checksum on timezone data NVRAM */
-  EVENT_DEBUG,                /*  76 - Debug event, could mean anything (programmer discretion) */
-  EVENT_LAST                  /*  77 - Everything must go before this entry */
-}                                 
-event_e;                     
-                                  
-typedef enum
-{
-  FIELDTYPE_NONE = 0,   /* 0 - Field contains nothing */
-  FIELDTYPE_PIN,        /* 1 - Field contains PIN */
-  FIELDTYPE_PROX,       /* 2 - Field contains Prox card */
-  FIELDTYPE_MAGCARD,    /* 3 - Field contains mag card */
-  FIELDTYPE_LAST
-}
-fieldType_e;
-
-typedef enum
-{
-  FILTERMODE_NORMAL = 0,  /* 0 - Filters events specified */
-  FILTERMODE_INVERT,      /* 1 - Filters events not specified */
-  FILTERMODE_LAST
-}
-filterMode_e;
-
-typedef enum
-{
-  FILTERSELECT_RECORDING = 0,   /* 0 - Recording filters */
-  FILTERSELECT_REPORTING,       /* 1 - Reporting filters */
-  FILTERSELECT_LAST
-}
-filterSelect_e;
-
-typedef enum
-{
-  FORCEITEM_RADIOPOWER = 0,   /*  0 - Radio power */
-  FORCEITEM_RADIOENABLE,      /*  1 - Radio enable */
-  FORCEITEM_LEDRED,           /*  2 - Red keypad LED */
-  FORCEITEM_LEDGREEN,         /*  3 - Green keypad LED */
-  FORCEITEM_LEDYELLOW,        /*  4 - Yellow keypad LED */
-  FORCEITEM_PIEZO,            /*  5 - Keypad peizo */
-  FORCEITEM_MAGPOWER,         /*  6 - Mag card reader power supply */
-  FORCEITEM_MAGLEDA,          /*  7 - Mag card LED A (usually red) */
-  FORCEITEM_MAGLEDB,          /*  8 - Mag card LED B (usually green) */
-  FORCEITEM_PROXPOWER,        /* 13 - Prox circuitry power (opamps, etc) */
-  FORCEITEM_PROXPING,         /* 14 - Prox PIC12F629 ping/sleep mode */
-  FORCEITEM_PROXMODE,         /* 15 - Prox ping/read mode (selects 50hz/125KHz filters) */
-  FORCEITEM_I2CPOWER,         /* 16 - I2C power */
-  FORCEITEM_MOTORARUN,        /* 17 - Motor A run (to H-bridge) */
-  FORCEITEM_MOTORBRUN,        /* 18 - Motor B run (to H-bridge) */
-  FORCEITEM_VMON,             /* 19 - VMon (ADC 0 battery sense) */
-  FORCEITEM_PROX,             /* 20 - Prox test mode (continuous 125KHz read) */
-  FORCEITEM_MORTISETEST,      /* 21 - Force mortise into test mode */
-  FORCEITEM_KEYPADTEST,       /* 22 - Force keypad into test mode */
-  FORCEITEM_MAGTEST,          /* 23 - Force mag card test mode */
-  FORCEITEM_PROXTEST,         /* 24 - Force prox card test mode */
-  FORCEITEM_ICLASSPOWER,      /* 25 - iClass Prox power */
-  FORCEITEM_ICLASSRESET,      /* 26 - iClass Prox reset */
-  FORCEITEM_LAST
-}
-forceItem_e;
-
-typedef enum
-{
-  FROMDEVICE_NONE = 0,      /* 0 - Used to indicate no device */
-  FROMDEVICE_INTERNAL,      /* 1 - Generated internally */
-  FROMDEVICE_KEYPAD,        /* 2 - Generated from keypad */
-  FROMDEVICE_CONSOLE,       /* 3 - Generated from console */
-  FROMDEVICE_WIFI,          /* 4 - Generated from wi-fi (DPAC) */
-  FROMDEVICE_LAST
-}
-fromDevice_e;
-
-typedef enum
-{
-  HARDWAREOPTIONS_NONE         = 0x0000,   /* No options installed (?!) */
-  HARDWAREOPTIONS_CLOCK        = 0x0001,   /* Has RTC installed (always set) */
-  HARDWAREOPTIONS_CONSOLE      = 0x0002,   /* Has serial console (always set) */
-  HARDWAREOPTIONS_KEYPAD       = 0x0004,   /* Has keypad installed */
-  HARDWAREOPTIONS_PROXREADER   = 0x0008,   /* Has Prox card circuitry installed */
-  HARDWAREOPTIONS_MAGREADER    = 0x0010,   /* Has magnetic card reader attached */
-  HARDWAREOPTIONS_1WIRE        = 0x0020,   /* Has Dallas 1-wire interface installed */
-  HARDWAREOPTIONS_WIFI         = 0x0040,   /* Has WiFi module installed (DPAC only, for now) */
-  HARDWAREOPTIONS_RS485        = 0x0080,   /* Has RS-485 optioning (RS-232 assumed if not) */
-  HARDWAREOPTIONS_IR           = 0x0100,   /* Has IR LED communications interface installed */
-  HARDWAREOPTIONS_PUSHBUTTON   = 0x0200,   /* Has MCC pushbutton */
-  HARDWAREOPTIONS_WATCHDOG     = 0x0400,   /* Has watchdog option compiled in */
-  HARDWAREOPTIONS_ICLASSREADER = 0x0800,   /* Has iClass OEM75 prox reader installed */
-  HARDWAREOPTIONS_AVAIL1000    = 0x1000,   /* Not defined */
-  HARDWAREOPTIONS_AVAIL2000    = 0x2000,   /* Not defined */
-  HARDWAREOPTIONS_AVAIL4000    = 0x4000,   /* Not defined */
-  HARDWAREOPTIONS_AVAIL8000    = 0x8000,   /* Not defined */
-
-  HARDWAREOPTIONS_RADIO        = (HARDWAREOPTIONS_WIFI),
-
-  HARDWAREOPTIONS_LAST         = 0xffff    /* Place holder, don't use */
-}
-hardwareOptions_e;
-
-typedef enum
-{
-  LOCALLED_NONE = 0,      /*  0 - No assignment */
-  LOCALLED_RADIOPOWER,    /*  1 - Follows radio power supply (lit=power on) */
-  LOCALLED_LOCKUNLOCKED,  /*  2 - Follows strike state (lit=locked) */
-  LOCALLED_I2CPOWER,      /*  3 - Follows I2C power (lit=power on) */
-  LOCALLED_AUTHCONSOLE,   /*  4 - Follows authorization from console port (lit=authorized) */
-  LOCALLED_AUTHWIFI,      /*  5 - Follows authorization from Wifi port (lit=authorized) */
-  LOCALLED_BATTERYLOW,    /*  6 - Follows battery low status (lit=low) */
-  LOCALLED_BATTERYDEAD,   /*  7 - Follows battery dead status (lit=battery dead) */
-  LOCALLED_PROXREADY,     /*  8 - Follows Prox ready to read (lit=ready) */
-  LOCALLED_APACQUIRED,    /*  9 - Follows WAP acquired via DPAC (lit=acquired) */
-  LOCALLED_PASSMODE,      /* 10 - Follows DPAC entering pass mode (lit=pass mode successful) */
-  LOCALLED_PROXREAD,      /* 11 - Follows receiving a prox read event (PROXCARDEVENT_READCARD) */
-  LOCALLED_CONNECTED,     /* 12 - Follows the DPAC interrupt line, indicating connection status */
-  LOCALLED_DPACCTSTIMER,  /* 13 - Follows DPAC CTS line, if asserted more than 5 seconds */
-  LOCALLED_PFMCHARGING,   /* 14 - Follows the state of the PFM super-cap charger */
-  LOCALLED_LAST
-}
-localLED_e;
-
-typedef enum
-{
-  LOCKPRIORITY_NONE = 0,      /* 0 - Radio is not shut down for motor run, access not denied if radio is on */
-  LOCKPRIORITY_DPAC,          /* 1 - Radio is not shut down for motor run, access denied if radio is on */
-  LOCKPRIORITY_LOCK,          /* 2 - Radio is shut down for motor run, access not denied if radio is on */
-  LOCKPRIORITY_LAST
-}
-lockPriority_e;
-
-typedef enum
-{
-  LOCKTYPE_NONE = 0,          /* 0 - No lock present */
-  LOCKTYPE_PWM,               /* 1 - PWM motor */
-  LOCKTYPE_ELECTRIC_STRIKE,   /* 2 - Electric strike (normally de-energized, uses Motor A side of H-bridge) */
-  LOCKTYPE_MAGNETIC_LOCK,     /* 3 - Magnetic lock (normally energized, uses Motor A side of H-bridge) */
-  LOCKTYPE_RELAY,             /* 4 - Relay (normally de-energized, uses Motor B side of H-bridge) */
-  LOCKTYPE_LAST
-}
-lockType_e;
-
-typedef enum
-{
-  MFGFIELD_IOPINS = 0,            /*  0 - Contains data about the state of the IO pins */
-  MFGFIELD_ADCS,                  /*  1 - Contains raw ADC data */
-  MFGFIELD_HARDWAREID,            /*  2 - Contains hardware ID & revision of PIC */
-  MFGFIELD_CHECKPOINTLOG,         /*  3 - Contains the checkpoint log data */
-  MFGFIELD_CPUREGISTERS,          /*  4 - Contains the contents of selected PIC registers */
-  MFGFIELD_TASKFLAGS,             /*  5 - Contains a list of all task flag values */
-  MFGFIELD_TIMERCHAIN,            /*  6 - Contains a complete list of all active timers (timerData_t) */
-  MFGFIELD_PEEKPOKE,              /*  7 - Contains results of peeking memory (U8, U16, U32, or string) */
-  MFGFIELD_LOCKSTATE,             /*  8 - Contains the current passage mode flags (lockState_t) */
-  MFGFIELD_CAPABILITIES,          /*  9 - Contains lock capability info (# users, event log entries, etc) */
-  MFGFIELD_DUMPM41T81,            /* 10 - Contains a complete dump of the M41T81 RTC registers */
-  MFGFIELD_NVRAMCHECKSUMVALUE,    /* 11 - Contains the 32-bit NVRAM checksum value */
-  MFGFIELD_CHECKSUMRESULTS,       /* 12 - Contains results from checksumming exceptions, exceptiong roups, time zone calendars and time zones */
-  MFGFIELD_MORTISESTATELOG,       /* 13 - Contains the last 32 mortise state changes */
-  MFGFIELD_MORTISEPINS,           /* 14 - Contains the mortise pin status (S1,S2,S3,S4) */
-  MFGFIELD_KEYPADCHAR,            /* 15 - Contains a character from the keypad */
-  MFGFIELD_MAGCARD,               /* 16 - Contains mag card data */
-  MFGFIELD_PROXCARD,              /* 17 - Contains prox card data */
-  MFGFIELD_LAST
-}
-mfgField_e;
-
-typedef enum
-{
-  MORTISETYPE_NONE = 0,           /*  0 - No mortise installed */
-  MORTISETYPE_S82276,             /*  1 - Sargent 82276 mortise (A) */
-  MORTISETYPE_S82277,             /*  2 - Sargent 82277 mortise, no cylinder (B) */
-  MORTISETYPE_S82278,             /*  3 - Sargent 82278 mortise, no deadbolt (C) */
-  MORTISETYPE_S82279,             /*  4 - Sargent 82279 mortise, no cylinder or deadbolt (D) */
-  MORTISETYPE_S10G77,             /*  5 - Sargent 10G77 bored lock body (E) */
-  MORTISETYPE_S8877,              /*  6 - Sargent 8877 mortise exit device (F) */
-  MORTISETYPE_S8878,              /*  7 - Sargent 8878 mortise exit device, no cylinder (G) */
-  MORTISETYPE_S8977,              /*  8 - Sargent 8977 mortise exit device (H) */
-  MORTISETYPE_S8978,              /*  9 - Sargent 8978 mortise exit device, no cylinder (I) */
-  MORTISETYPE_CRML20x36,          /* 10 - Corbin-Russwin ML20736/ML20836 mortise (J) */
-  MORTISETYPE_CRML20x35,          /* 11 - Corbin-Russwin ML20735/ML20835 mortise, no cylinder (K) */
-  MORTISETYPE_CRML20x34,          /* 12 - Corbin-Russwin ML20734/ML20834 mortise, no deadbolt (L) */
-  MORTISETYPE_CRML20x33,          /* 13 - Corbin-Russwin ML20733/ML20833 mortise, no cylinder or deadbolt (M) */
-  MORTISETYPE_CRCL33x34,          /* 14 - Corbin-Russwin CL33734/CL33834 bored lock body (N) */
-  MORTISETYPE_CR9X34,             /* 15 - Corbin-Russwin 9734/9834 bored lock body (O) */
-  MORTISETYPE_CR9X33,             /* 16 - Corbin-Russwin 9833/9833 bored lock body, no cylinder (P) */
-  MORTISETYPE_CR9MX34,            /* 17 - Corbin-Russwin 9M734/9M834 bored lock body (Q) */
-  MORTISETYPE_CR9MX33,            /* 18 - Corbin-Russwin 9M733/9M833 bored lock body, no cylinder (R) */
-  MORTISETYPE_LAST
-}
-mortiseType_e;
-
-typedef enum
-{
-  NVRAMCLEAROPTIONS_NONE            = 0x0000,   /* Place holder */
-  NVRAMCLEAROPTIONS_CFGINSTALLER    = 0x0001,   /* Options settable by the installer (lock type, etc) */
-  NVRAMCLEAROPTIONS_CFGADMIN        = 0x0002,   /* Options settable by the lock administrator (time, date, etc) */
-  NVRAMCLEAROPTIONS_EXCEPTIONS      = 0x0004,   /* The exceptions definitions */
-  NVRAMCLEAROPTIONS_EXCEPTIONGROUPS = 0x0008,   /* The exception group definitions */
-  NVRAMCLEAROPTIONS_CALENDARS       = 0x0010,   /* The timezones calendar definitions */
-  NVRAMCLEAROPTIONS_TIMEZONES       = 0x0020,   /* The timezones definitions */
-  NVRAMCLEAROPTIONS_FILTERS         = 0x0040,   /* Recording filters */
-  NVRAMCLEAROPTIONS_EVENTLOG        = 0x0080,   /* The event log */
-  NVRAMCLEAROPTIONS_USERDATA        = 0x0100,   /* The actual user database */
-  NVRAMCLEAROPTIONS_DECLINEDLOG     = 0x0200,   /* Declined credentials log */
-  NVRAMCLEAROPTIONS_ALARMLOG        = 0x0400,   /* Alarm log */
-  NVRAMCLEAROPTIONS_LRUCACHE        = 0x0800,   /* LRU cache for remote authorization (status, user doesn't clear explicitly) */
-  NVRAMCLEAROPTIONS_DBHASH          = 0x1000,   /* User database hash (status, user doesn't clear explicitly) */
-  NVRAMCLEAROPTIONS_CFGSYSTEM       = 0x2000,   /* Factory settable options, system variables (status, user doesn't clear explicitly) */
-  NVRAMCLEAROPTIONS_AVAIL4000       = 0x4000,   /* Unused */
-  NVRAMCLEAROPTIONS_ALL             = 0x7fff,   /* All of the above */
-  NVRAMCLEAROPTIONS_USEBACKUP       = 0x8000    /* If set, installer and admin options are set according from NVRAM backup (if valid) */
-}
-nvramClearOptions_e;
-
-typedef enum
-{
-  NVRAMCOMMAND_BACKUP = 0,  /* 0 - Backup NVRAM to backup region */
-  NVRAMCOMMAND_ERASE,       /* 1 - Erase backup region */
-  NVRAMCOMMAND_RESTORE,     /* 2 - Restore NVRAM from backup region */
-  NVRAMCOMMAND_LAST
-}
-nvramCommand_e;
-
-typedef enum
-{
-  NVRAMDUMPSELECT_ALL = 0,  /* 0 - Dump all */
-  NVRAMDUMPSELECT_PIC,      /* 1 - Dump NVRAM on PIC */
-  NVRAMDUMPSELECT_USER,     /* 2 - Dump I2C NVRAM containing user data, exceptions, exception groups, calendars, timezones */
-  NVRAMDUMPSELECT_EVENT,    /* 3 - Dump I2C NVRAM containing event log, declined log, alarm log, LRU cache */
-  NVRAMDUMPSELECT_LAST
-}
-nvramDumpSelect_e;
-
-typedef enum
-{
-  PEEKPOKE_READU8 = 0,      /* 0 - Read 8 bit value */
-  PEEKPOKE_READU16,         /* 1 - Read 16 bit value */
-  PEEKPOKE_READU24,         /* 2 - Read 24 bit value */
-  PEEKPOKE_READU32,         /* 3 - Read 32 bit value */
-  PEEKPOKE_READSTRING,      /* 4 - Read 'n' 8 bit values */
-  PEEKPOKE_WRITEU8,         /* 5 - Write 8 bit value */
-  PEEKPOKE_WRITEU16,        /* 6 - Write 16 bit value */
-  PEEKPOKE_WRITEU24,        /* 7 - Write 24 bit value */
-  PEEKPOKE_WRITEU32,        /* 8 - Write 32 bit value */
-  PEEKPOKE_WRITESTRING,     /* 9 - Write 'n' 8 bit values */
-  PEEKPOKE_LAST
-}
-peekPoke_e;
-
-typedef enum
-{
-  PPMISOURCE_NONE = 0,     /* 0 - PPMI came from nowhere (not set) */
-  PPMISOURCE_PIN,          /* 1 - PPMI came from PIN */
-  PPMISOURCE_PROX,         /* 2 - PPMI came from Prox */
-  PPMISOURCE_MAGCARD,      /* 3 - PPMI came from mag card */
-  PPMISOURCE_LAST
-}
-ppmiSource_e;
-
-typedef enum
-{
-  RADIOMODE_HOSTINITIATED = 0,  /* 0 - DPAC in listen mode (default) */
-  RADIOMODE_LOCKINITIATED,      /* 1 - DPAC in pass-through mode */
-  RADIOMODE_LAST
-}
-radioMode_e;
-
-typedef enum
-{
-  RADIOTYPE_NONE = 0,     /* 0 - No radio present */
-  RADIOTYPE_WIPORTNR,     /* 1 - WiPortNR */
-  RADIOTYPE_DPAC80211B,   /* 2 - DPAC 802.11b */
-  RADIOTYPE_DPAC80211BG,  /* 3 - DPAC 802.11bg */
-  RADIOTYPE_LAST
-}
-radioType_e;
-
-typedef enum
-{
-  RESPONSETYPE_OK = 0,                /*  0 - All is well */
-  RESPONSETYPE_ERROR,                 /*  1 - Generic error */
-  RESPONSETYPE_HASDATA,               /*  2 - Response has data */
-  RESPONSETYPE_NOHANDLER,             /*  3 - Command requested with no handler (internal error) */
-  RESPONSETYPE_NOSESSION,             /*  4 - No session established */
-  RESPONSETYPE_BADCOMMAND,            /*  5 - Bad command value */
-  RESPONSETYPE_BADPARAMETER,          /*  6 - Bad parameter (can mean a lot of things) */
-  RESPONSETYPE_BADPARAMETERLEN,       /*  7 - Bad parameter length (too short, too long) */
-  RESPONSETYPE_MISSINGPARAMETER,      /*  8 - Missing parameter (something was required, what'd you forget?) */
-  RESPONSETYPE_DUPLICATEPARAMETER,    /*  9 - Parameter supplied more than once (D'oh!) */
-  RESPONSETYPE_PARAMETERCONFLICT,     /* 10 - Parameters conflict (usually mutually exclusive items) */
-  RESPONSETYPE_BADDEVICE,             /* 11 - Bad device (command came from a device that's not allowed) */
-  RESPONSETYPE_NVRAMERROR,            /* 12 - Hardware problem... */
-  RESPONSETYPE_NVRAMERRORNOACK,       /* 13 - Hardware problem... */
-  RESPONSETYPE_NVRAMERRORNOACK32,     /* 14 - Hardware problem... */
-  RESPONSETYPE_NOTI2CADDRESS,         /* 15 - Illegal I2C address in i2cStart */
-  RESPONSETYPE_FIRMWAREERROR,         /* 16 - Generic firmware upload error (can mean lots of things) */
-  RESPONSETYPE_DUMPINPROGRESS,        /* 17 - Can't do something, a dump is in progress */
-  RESPONSETYPE_INTERNALERROR,         /* 18 - Something Bad Happened(tm) */
-  RESPONSETYPE_NOTIMPLEMENTED,        /* 19 - Command or function not implemented */
-  RESPONSETYPE_PINFORMATERROR,        /* 20 - Error in formatting of PIN (non hex character) */
-  RESPONSETYPE_PINEXISTS,             /* 21 - PIN already exists in database */
-  RESPONSETYPE_PINNOTFOUND,           /* 22 - PIN wasn't found (actionManageUsers) */
-  RESPONSETYPE_USERACTIVE,            /* 23 - The record for this user is active (not deleted or free) */
-  RESPONSETYPE_USERINACTIVE,          /* 24 - The record for this user is inactive (not in use) */
-  RESPONSETYPE_PARENTNOTFOUND,        /* 25 - Users parent couldn't be found (used internally by dbmgr.c) */
-  RESPONSETYPE_NOCHAIN,               /* 26 - No users in chain (used internally by dbmgr.c) */
-  RESPONSETYPE_CAUGHTINLOOP,          /* 27 - Caught in a loop somewhere */
-  RESPONSETYPE_EVENTFILTERED,         /* 28 - Event record was filtered (eventlog.c) */
-  RESPONSETYPE_PAYLOADTOOLARGE,       /* 29 - Message payload too large (protocol.c) */
-  RESPONSETYPE_ENDOFDATA,             /* 30 - No more data (used internally by eventlog.c) */
-  RESPONSETYPE_RMTAUTHREJECTED,       /* 31 - Remote authorization rejected (lockmgr.c) */
-  RESPONSETYPE_NVRAMVERSIONERROR,     /* 32 - NVRAM version doesn't match expected value */
-  RESPONSETYPE_NOHARDWARE,            /* 33 - Operation requested for unsupported hardware */
-  RESPONSETYPE_SCHEDULERCONFLICT,     /* 34 - Scheduler not in correct mode for this operation */
-  RESPONSETYPE_NVRAMWRITEERROR,       /* 35 - NVRAM write compare error */
-  RESPONSETYPE_DECLINEDFILTERED,      /* 36 - Declined record was filtered (declinedlog.c) */
-  RESPONSETYPE_NECONFIGPARM,          /* 37 - Non-existent configuration parameter */
-  RESPONSETYPE_FLASHERASEERROR,       /* 38 - Error erasing FLASH */
-  RESPONSETYPE_FLASHWRITEERROR,       /* 39 - Error writing FLASH */
-  RESPONSETYPE_BADNVBACKUP,           /* 40 - NVBackup length doesn't match sizeof (configParametersNV_t) */
-  RESPONSETYPE_EARLYACK,              /* 41 - Sent prior to long commands if CONFIGITEM_EARLYACK set */
-  RESPONSETYPE_ALARMFILTERED,         /* 42 - Alarm record was filtered (alarm.c) */
-  RESPONSETYPE_ACVFAILURE,            /* 43 - Auxiliary controller version request failure */
-  RESPONSETYPE_USERCHECKSUMERROR,     /* 44 - User checksum value error */
-  RESPONSETYPE_CHECKSUMERROR,         /* 45 - Generic checksum error  */
-  RESPONSETYPE_RTCSQWFAILURE,         /* 46 - RTC isn't generating square wave */
-  RESPONSETYPE_PRIORITYSHUTDOWN,      /* 47 - Session terminated early because lock has priority over communications */
-  RESPONSETYPE_NOTMODIFIABLE,         /* 48 - Configuration parameter is not user modifiable */
-  RESPONSETYPE_CANTPRESERVE,          /* 49 - Can't preserve configuration (config.c, not enough space) */
-  RESPONSETYPE_INPASSAGEMODE,         /* 50 - Lock is in passage mode, can't do remote unlock */
-  RESPONSETYPE_LAST,
-  /*
-   *  These should not be exposed to the user
-   */
-  RESPONSETYPE_NOREPLY,               /* 51 - Do not send a reply, subroutine is posting it's own */
-  RESPONSETYPE_TAKEABREAK,            /* 52 - Intermediate return result, when log searches taking too long */
-  RESPONSETYPE_DPACBLOCKS,            /* 53 - PWM lock, battery powered, DPAC takes priority */
-  RESPONSETYPE_ACKNAKTIMEOUT,         /* 54 - Added for console.c, not used in lock firmware */
-  RESPONSETYPE_UNKNOWNCPUSPEED        /* 55 - Unknown CPU speed (utils.c, utilCalculateClockRate()) */
-}
-responseType_e;
-
-typedef enum
-{
-  SCHEDULERTYPE_HARDON = 0,   /* 0 - Radio is always on */
-  SCHEDULERTYPE_SIMPLE,       /* 1 - Simple 'x' minutes off, 'y' seconds on scheduler */
-  SCHEDULERTYPE_DOM,          /* 2 - Day of month scheduling  */
-  SCHEDULERTYPE_DOW,          /* 3 - Day of week scheduling  */
-  SCHEDULERTYPE_COMMUSER,     /* 4 - Only a comm user triggers power on */
-  SCHEDULERTYPE_HOD,          /* 5 - Hour of day scheduling */
-  SCHEDULERTYPE_OFF,          /* 6 - Nothing wakes up radio */
-  SCHEDULERTYPE_LAST
-}
-schedulerType_e;
-
-typedef enum
-{
-  TIMEZONEMODE_NORMAL = 0,  /* 0 - Timezone is applied to user, no auto unlocking */
-  TIMEZONEMODE_EXCLUSION,   /* 1 - User NOT permitted access if in this zone at this time */
-  TIMEZONEMODE_AUTOTIME,    /* 2 - Auto unlock at the start of the TZ, lock at end */
-  TIMEZONEMODE_AUTOFPT,     /* 3 - Unlock on first person through, lock at end */
-  TIMEZONEMODE_UAPM,        /* 4 - Permits user activated passage mode when active */
-  TIMEZONEMODE_LAST
-}
-timeZoneMode_e;
-
-typedef enum
-{
-  UNLOCKMODE_NORMAL = 0,  /* 0 - Normal unlock (CONFIGITEM_UNLOCK_TIME duration) */
-  UNLOCKMODE_UNLOCK,      /* 1 - Unlock, switching to passage mode */
-  UNLOCKMODE_LOCK,        /* 2 - Lock, regardless of mode */
-  UNLOCKMODE_LAST
-}
-unlockMode_e;
-
-typedef enum
-{
-  UPSTREAMCOMMAND_RESERVED = 0,       /*  0 - Not used */
-  UPSTREAMCOMMAND_DEBUGMSG,           /*  1 - Debug message (zero terminated) */
-  UPSTREAMCOMMAND_QUERYVERSION,       /*  2 - Version string (zero terminated) */
-  UPSTREAMCOMMAND_QUERYDATETIME,      /*  3 - Current date/time */
-  UPSTREAMCOMMAND_QUERYSERIALNUMBER,  /*  5 - Serial number (MAX_SERIALNUM_LENGTH bytes) */
-  UPSTREAMCOMMAND_DUMPEVENTLOG,       /*  6 - Event log record */
-  UPSTREAMCOMMAND_DUMPNVRAM,          /*  7 - NVRAM dump record */
-  UPSTREAMCOMMAND_RMTAUTHREQUEST,     /*  8 - Remote authorization request */
-  UPSTREAMCOMMAND_RETRIEVEUSER,       /*  9 - Retrieve user record */
-  UPSTREAMCOMMAND_QUERYCONFIG,        /* 10 - Query configuration */
-  UPSTREAMCOMMAND_RMTEVENTLOGRECORD,  /* 11 - Remote event log record */
-  UPSTREAMCOMMAND_DPAC,               /* 12 - DPAC related message */
-  UPSTREAMCOMMAND_NOTIFY,             /* 14 - Notify user message */
-  UPSTREAMCOMMAND_MFG,                /* 15 - Manufacturing data */
-  UPSTREAMCOMMAND_EVENTLOGWARNING,    /* 16 - Event log warning level message */
-  UPSTREAMCOMMAND_DUMPNVRAMRLE,       /* 17 - Run Length Encoded (RLE) NVRAM dump record */
-  UPSTREAMCOMMAND_RMTDECLINEDRECORD,  /* 18 - Remote declined log record */
-  UPSTREAMCOMMAND_DECLINEDWARNING,    /* 19 - Declined log warning level message */
-  UPSTREAMCOMMAND_DUMPDECLINEDLOG,    /* 20 - Declined log record dump */
-  UPSTREAMCOMMAND_RMTALARMRECORD,     /* 21 - Remote alarm log record */
-  UPSTREAMCOMMAND_ALARMWARNING,       /* 22 - Alarm log warning level message */
-  UPSTREAMCOMMAND_DUMPALARMLOG,       /* 23 - Alarm log record dump */
-  UPSTREAMCOMMAND_CONNECTSCHEDULER,   /* 24 - Connection because of scheduler, contains serial number */
-  UPSTREAMCOMMAND_CONNECTCOMMUSER,    /* 25 - Connection because of comm user, contains serial number */
-  UPSTREAMCOMMAND_CONNECTALARM,       /* 26 - Connection because of alarm event, contains serial number */
-  UPSTREAMCOMMAND_DUMPDEBUGLOG,       /* 27 - Debug log dump record */
-  UPSTREAMCOMMAND_LAST
-}
-upstreamCommand_e;
-
-typedef enum
-{
-  UPSTREAMFIELD_NOTUSED = 0,          /*  0 - Not used */
-  UPSTREAMFIELD_SERIALNUMBER,         /*  1 - Contains unit serial number */
-  UPSTREAMFIELD_NAR,                  /*  2 - Contains 16 bit Next Available Record */
-  UPSTREAMFIELD_ENTRYDEVICE,          /*  3 - Contains a ppmSource_e */
-  UPSTREAMFIELD_PPMIFIELDTYPE,        /*  4 - Contains a type of _PIN (auxFieldType_e) */
-  UPSTREAMFIELD_PIN,                  /*  5 - Contains a PIN, Prox, mag key  */
-  UPSTREAMFIELD_SEQUENCENUMBER,       /*  6 - Contains 16 bit sequence number */
-  UPSTREAMFIELD_RESPONSEWINDOW,       /*  7 - Contains 8 bit response window (number of seconds) */
-  UPSTREAMFIELD_USERNUMBER,           /*  8 - Contains 16 bit user number */
-  UPSTREAMFIELD_VERSION,              /*  9 - Contains version string */
-  UPSTREAMFIELD_EVENTLOGRECORD,       /* 10 - Contains eventLog_e event log record */
-  UPSTREAMFIELD_DATETIME,             /* 11 - Contains 8 byte date/time data */
-  UPSTREAMFIELD_EVENTLOGRECORDCOUNT,  /* 17 - Contains number of event log records */
-  UPSTREAMFIELD_DECLINEDRECORDCOUNT,  /* 20 - Contains number of declined log records */
-  UPSTREAMFIELD_DECLINEDRECORD,       /* 21 - Contains declinedLog_t declined log record */
-  UPSTREAMFIELD_USERTYPE,             /* 23 - Contains the user type (master, emergency, normal, etc) */
-  UPSTREAMFIELD_ACCESSALWAYS,         /* 24 - Contains the access always mode (true, false) */
-  UPSTREAMFIELD_CACHED,               /* 25 - Contains the cached flag (true, false) */
-  UPSTREAMFIELD_PRIMARYFIELDTYPE,     /* 26 - Contains the primary field type (pin, prox, mag) */
-  UPSTREAMFIELD_AUXFIELDTYPE,         /* 27 - Contains the aux field type (pin, prox, mag) */
-  UPSTREAMFIELD_ACCESSMODE,           /* 28 - Contains the access mode (aux only, aux + pin, aux or pin, etc) */
-  UPSTREAMFIELD_EXPIREON,             /* 29 - Contains the date the user expires on (00/00/00 if not set) */
-  UPSTREAMFIELD_USECOUNT,             /* 30 - Contains the use count (if user type is ONE_TIME) */
-  UPSTREAMFIELD_TIMEZONE,             /* 31 - Contains the timezone bit map */
-  UPSTREAMFIELD_EXCEPTIONGROUP,       /* 32 - Contains the exception group */
-  UPSTREAMFIELD_PRIMARYPIN,           /* 33 - Contains the primary PPMI (ASCII, 0 terminated) */
-  UPSTREAMFIELD_AUXPIN,               /* 34 - Contains the aux PPMI (ASCII, 0 terminated) */
-  UPSTREAMFIELD_ALARMRECORDCOUNT,     /* 35 - Contains number of alarm log records */
-  UPSTREAMFIELD_ALARMRECORD,          /* 36 - Contains alarmLog_t alarm log record */
-  UPSTREAMFIELD_AUXCTLRVERSION,       /* 37 - Contains the version number of the auxiliary controller */
-  UPSTREAMFIELD_LAST
-}
-upstreamField_e;
-
-typedef enum
-{
-  USERTYPE_NONE = 0,    /*  0 - No user */
-  USERTYPE_MASTER,      /*  1 - Master user (clears panic, relock, lockout and auto open) */
-  USERTYPE_EMERGENCY,   /*  2 - Opens door regardless of state */
-  USERTYPE_SUPERVISOR,  /*  3 - Like emergency user, except won't unlock when in panic mode */
-  USERTYPE_USER,        /*  4 - Generic user */
-  USERTYPE_EXTENDED,    /*  5 - Same as _USER, but strike can be kept open longer */
-  USERTYPE_PASSAGE,     /*  6 - Toggles strike between passage and non-passage modes */
-  USERTYPE_ONETIME,     /*  7 - User may be used one time */
-  USERTYPE_PANIC,       /*  8 - Locks down locks, no user except master valid */
-  USERTYPE_LOCKOUT,     /*  9 - Locks out regular, extended, passage, one time, and notify users */
-  USERTYPE_RELOCK,      /* 10 - Relock cancels passage mode, but can't unlock */
-  USERTYPE_NOTIFY,      /* 11 - Same as _USER, only sends unsolicited message to server */
-  USERTYPE_COMM,        /* 12 - Kicks a communications sessions off if not running _HARDON scheduler */
-  USERTYPE_SUSPENDED,   /* 13 - User is suspended */
-  USERTYPE_LAST
-}
-userType_e;
-
-#endif
-
-/*
- * Editor modelines
- *
- * Local variables:
- * c-basic-offset: 2
- * tab-width: 8
- * indent-tabs-mode: nil
- * End:
- *
- * vim: set tabstop=2 softtabstop=2 shiftwidth=2 expandtab:
- */
index fcf0b9634bb5b2f46250f85fedb7dfe16f960265..44c3f3fcc01908eea1bcb613260bdd136f9c81f4 100644 (file)
 #endif
 
 #include <string.h>
+
 #include <glib.h>
 
 #include <epan/packet.h>
 #include <epan/addr_and_mask.h>
-#include "packet-bgp.h"
 #include "packet-frame.h"
 #include <epan/afn.h>
 #include <epan/prefs.h>
 
 /* #define MAX_STR_LEN 256 */
 
+/* some handy things to know */
+#define BGP_MAX_PACKET_SIZE            4096
+#define BGP_MARKER_SIZE                  16    /* size of BGP marker */
+#define BGP_HEADER_SIZE                  19    /* size of BGP header, including marker */
+#define BGP_MIN_OPEN_MSG_SIZE            29
+#define BGP_MIN_UPDATE_MSG_SIZE          23
+#define BGP_MIN_NOTIFICATION_MSG_SIZE    21
+#define BGP_MIN_KEEPALVE_MSG_SIZE       BGP_HEADER_SIZE
+#define BGP_TCP_PORT                    179
+#define BGP_ROUTE_DISTINGUISHER_SIZE      8
+
+/* BGP message types */
+#define BGP_OPEN          1
+#define BGP_UPDATE        2
+#define BGP_NOTIFICATION  3
+#define BGP_KEEPALIVE     4
+#define BGP_ROUTE_REFRESH 5
+#define BGP_CAPABILITY    6
+#define BGP_ROUTE_REFRESH_CISCO 0x80
+
+
+/* BGP ROUTE-REFRESH message */
+struct bgp_route_refresh {
+    guint8  bgpr_marker[BGP_MARKER_SIZE];
+    guint16 bgpr_len;
+    guint8  bgpr_type;
+    guint16 bgpr_afi;
+    guint8  bgpr_reserved;
+    guint8  bgpr_safi;
+};
+
+/* path attribute */
+struct bgp_attr {
+    guint8 bgpa_flags;
+    guint8 bgpa_type;
+};
+
+/* attribute flags, from RFC1771 */
+#define BGP_ATTR_FLAG_OPTIONAL        0x80
+#define BGP_ATTR_FLAG_TRANSITIVE      0x40
+#define BGP_ATTR_FLAG_PARTIAL         0x20
+#define BGP_ATTR_FLAG_EXTENDED_LENGTH 0x10
+
+/* SSA flags */
+#define BGP_SSA_TRANSITIVE    0x8000
+#define BGP_SSA_TYPE          0x7FFF
+
+/* SSA Types */
+#define BGP_SSA_L2TPv3          1
+#define BGP_SSA_mGRE            2
+#define BGP_SSA_IPSec           3
+#define BGP_SSA_MPLS            4
+#define BGP_SSA_L2TPv3_IN_IPSec 5
+#define BGP_SSA_mGRE_IN_IPSec   6
+
+/* AS_PATH segment types */
+#define AS_SET             1   /* RFC1771 */
+#define AS_SEQUENCE        2   /* RFC1771 */
+#define AS_CONFED_SET      4   /* RFC1965 has the wrong values, corrected in  */
+#define AS_CONFED_SEQUENCE 3   /* draft-ietf-idr-bgp-confed-rfc1965bis-01.txt */
+
+/* OPEN message Optional Parameter types  */
+#define BGP_OPTION_AUTHENTICATION    1   /* RFC1771 */
+#define BGP_OPTION_CAPABILITY        2   /* RFC2842 */
+
+/* BGP capability code */
+#define BGP_CAPABILITY_RESERVED                    0    /* RFC2434 */
+#define BGP_CAPABILITY_MULTIPROTOCOL               1    /* RFC2858 */
+#define BGP_CAPABILITY_ROUTE_REFRESH               2    /* RFC2918 */
+#define BGP_CAPABILITY_COOPERATIVE_ROUTE_FILTERING 3    /* draft-ietf-idr-route-filter-04.txt */
+#define BGP_CAPABILITY_GRACEFUL_RESTART            0x40    /* draft-ietf-idr-restart-05  */
+#define BGP_CAPABILITY_4_OCTET_AS_NUMBER           0x41    /* draft-ietf-idr-as4bytes-06 */
+#define BGP_CAPABILITY_DYNAMIC_CAPABILITY          0x42    /* draft-ietf-idr-dynamic-cap-03 */
+#define BGP_CAPABILITY_ADDITIONAL_PATHS            0x45    /* draft-ietf-idr-add-paths */
+#define BGP_CAPABILITY_ORF_CISCO                   0x82    /* Cisco */
+#define BGP_CAPABILITY_ROUTE_REFRESH_CISCO         0x80    /* Cisco */
+
+#define BGP_ORF_PREFIX_CISCO    0x80 /* Cisco */
+#define BGP_ORF_COMM_CISCO      0x81 /* Cisco */
+#define BGP_ORF_EXTCOMM_CISCO   0x82 /* Cisco */
+#define BGP_ORF_ASPATH_CISCO    0x83 /* Cisco */
+
+#define BGP_ORF_COMM        0x02 /* draft-ietf-idr-route-filter-06.txt */
+#define BGP_ORF_EXTCOMM     0x03 /* draft-ietf-idr-route-filter-06.txt */
+#define BGP_ORF_ASPATH      0x04 /* draft-ietf-idr-aspath-orf-02.txt */
+/* draft-ietf-idr-route-filter-06.txt */
+#define BGP_ORF_ACTION      0xc0
+#define BGP_ORF_ADD         0x00
+#define BGP_ORF_REMOVE      0x40
+#define BGP_ORF_REMOVEALL   0x80
+#define BGP_ORF_MATCH       0x20
+#define BGP_ORF_PERMIT      0x00
+#define BGP_ORF_DENY        0x20
+
+/* well-known communities, from RFC1997 */
+#define BGP_COMM_NO_EXPORT           0xFFFFFF01
+#define BGP_COMM_NO_ADVERTISE        0xFFFFFF02
+#define BGP_COMM_NO_EXPORT_SUBCONFED 0xFFFFFF03
+#define FOURHEX0                     0x00000000
+#define FOURHEXF                     0xFFFF0000
+
+/* attribute types */
+#define BGPTYPE_ORIGIN              1 /* RFC1771           */
+#define BGPTYPE_AS_PATH             2 /* RFC1771           */
+#define BGPTYPE_NEXT_HOP            3 /* RFC1771           */
+#define BGPTYPE_MULTI_EXIT_DISC     4 /* RFC1771           */
+#define BGPTYPE_LOCAL_PREF          5 /* RFC1771           */
+#define BGPTYPE_ATOMIC_AGGREGATE    6 /* RFC1771           */
+#define BGPTYPE_AGGREGATOR          7 /* RFC1771           */
+#define BGPTYPE_COMMUNITIES         8 /* RFC1997           */
+#define BGPTYPE_ORIGINATOR_ID       9 /* RFC2796           */
+#define BGPTYPE_CLUSTER_LIST       10 /* RFC2796           */
+#define BGPTYPE_DPA                11 /* work in progress  */
+#define BGPTYPE_ADVERTISER         12 /* RFC1863           */
+#define BGPTYPE_RCID_PATH          13 /* RFC1863           */
+#define BGPTYPE_MP_REACH_NLRI      14 /* RFC2858           */
+#define BGPTYPE_MP_UNREACH_NLRI    15 /* RFC2858           */
+#define BGPTYPE_EXTENDED_COMMUNITY 16 /* Draft Ramachandra */
+#define BGPTYPE_NEW_AS_PATH        17 /* draft-ietf-idr-as4bytes */
+#define BGPTYPE_NEW_AGGREGATOR     18 /* draft-ietf-idr-as4bytes */
+#define BGPTYPE_SAFI_SPECIFIC_ATTR 19 /* draft-kapoor-nalawade-idr-bgp-ssa-00.txt */
+#define BGPTYPE_TUNNEL_ENCAPS_ATTR 23 /* RFC5512 */
+
+/* Extended community type */
+/* according to IANA's number assignment at: http://www.iana.org/assignments/bgp-extended-communities */
+#define BGP_EXT_COM_QOS_MARK_T  0x04    /* QoS Marking transitive attribute of regular type (8bit)           */
+#define BGP_EXT_COM_QOS_MARK_NT 0x44    /* QoS Marking non-transitive attribute of regular type (8bit)       */
+                                        /* Format Type(1byte):Flags(1byte):QoS Set(1byte):Tec. Type(1byte):  */
+                                        /*        Marking O(2bytes):Marking A(1byte):Proc.Cnt(1byte)         */
+#define BGP_EXT_COM_COS_CAP_T   0x05    /* CoS Capability - Format Type(1byte):Flags(1byte):remaining '0..0' */
+
+                                        /* draft-ietf-idr-bgp-ext-communities */
+#define BGP_EXT_COM_RT_0        0x0002  /* Route Target,Format AS(2bytes):AN(4bytes) */
+#define BGP_EXT_COM_RT_1        0x0102  /* Route Target,Format IP address:AN(2bytes) */
+#define BGP_EXT_COM_RT_2        0x0202  /* Route Target,Format AS(2bytes):AN(4bytes) */
+#define BGP_EXT_COM_RO_0        0x0003  /* Route Origin,Format AS(2bytes):AN(4bytes) */
+#define BGP_EXT_COM_RO_1        0x0103  /* Route Origin,Format IP address:AN(2bytes) */
+#define BGP_EXT_COM_RO_2        0x0203  /* Route Origin,Format AS(2bytes):AN(4bytes) */
+#define BGP_EXT_COM_LINKBAND    ((BGP_ATTR_FLAG_TRANSITIVE << 8) | 0x0004)
+                                        /* Link Bandwidth,Format AS(2bytes):
+                                         * Bandwidth(4bytes) */
+                                        /* -2 version of the draft */
+#define BGP_EXT_COM_VPN_ORIGIN  0x0005  /* OSPF Domin ID / VPN of Origin  */
+                                        /* draft-rosen-vpns-ospf-bgp-mpls */
+#define BGP_EXT_COM_OSPF_RTYPE  0x8000  /* OSPF Route Type,Format Area(4B):RouteType(1B):Options(1B) */
+#define BGP_EXT_COM_OSPF_RID    0x8001  /* OSPF Router ID,Format RouterID(4B):Unused(2B) */
+#define BGP_EXT_COM_L2INFO      0x800a  /* draft-kompella-ppvpn-l2vpn */
+
+/* Extended community QoS Marking technology type */
+#define QOS_TECH_TYPE_DSCP         0x00  /* DiffServ enabled IP (DSCP encoding) */
+#define QOS_TECH_TYPE_802_1q       0x01  /* Ethernet using 802.1q priority tag */
+#define QOS_TECH_TYPE_E_LSP        0x02  /* MPLS using E-LSP */
+#define QOS_TECH_TYPE_VC           0x03  /* Virtual Channel (VC) encoding using separate channels for */
+                                         /* QoS forwarding / one channel per class (e.g. ATM VCs, FR  */
+                                         /* VCs, MPLS L-LSPs) */
+#define QOS_TECH_TYPE_GMPLS_TIME   0x04   /* GMPLS - time slot encoding */
+#define QOS_TECH_TYPE_GMPLS_LAMBDA 0x05  /* GMPLS - lambda encoding */
+#define QOS_TECH_TYPE_GMPLS_FIBRE  0x06  /* GMPLS - fibre encoding */
+
+/* OSPF codes for  BGP_EXT_COM_OSPF_RTYPE draft-rosen-vpns-ospf-bgp-mpls  */
+#define BGP_OSPF_RTYPE_RTR      1 /* OSPF Router LSA */
+#define BGP_OSPF_RTYPE_NET      2 /* OSPF Network LSA */
+#define BGP_OSPF_RTYPE_SUM      3 /* OSPF Summary LSA */
+#define BGP_OSPF_RTYPE_EXT      5 /* OSPF External LSA, note that ASBR doesn't apply to MPLS-VPN */
+#define BGP_OSPF_RTYPE_NSSA     7 /* OSPF NSSA External*/
+#define BGP_OSPF_RTYPE_SHAM     129 /* OSPF-MPLS-VPN Sham link */
+#define BGP_OSPF_RTYPE_METRIC_TYPE 0x1 /* LSB of RTYPE Options Field */
+
+/* Extended community & Route dinstinguisher formats */
+#define FORMAT_AS2_LOC      0x00    /* Format AS(2bytes):AN(4bytes) */
+#define FORMAT_IP_LOC       0x01    /* Format IP address:AN(2bytes) */
+#define FORMAT_AS4_LOC      0x02    /* Format AS(4bytes):AN(2bytes) */
+
+/* RFC 2858 subsequent address family numbers */
+#define SAFNUM_UNICAST          1
+#define SAFNUM_MULCAST          2
+#define SAFNUM_UNIMULC          3
+#define SAFNUM_MPLS_LABEL       4  /* rfc3107 */
+#define SAFNUM_MCAST_VPN        5  /* draft-ietf-l3vpn-2547bis-mcast-bgp-08.txt */
+#define SAFNUM_ENCAPSULATION    7  /* rfc5512 */
+#define SAFNUM_TUNNEL          64  /* draft-nalawade-kapoor-tunnel-safi-02.txt */
+#define SAFNUM_VPLS            65
+#define SAFNUM_LAB_VPNUNICAST 128  /* Draft-rosen-rfc2547bis-03 */
+#define SAFNUM_LAB_VPNMULCAST 129
+#define SAFNUM_LAB_VPNUNIMULC 130
+#define SAFNUM_ROUTE_TARGET   132  /* RFC 4684 Constrained Route Distribution for BGP/MPLS IP VPN */
+
+/* BGP Additional Paths Capability */
+#define BGP_ADDPATH_RECEIVE  0x01
+#define BGP_ADDPATH_SEND     0x02
+
+/* mcast-vpn route types draft-ietf-l3vpn-2547bis-mcast-bgp-08.txt */
+#define MCAST_VPN_RTYPE_INTRA_AS_IPMSI_AD 1
+#define MCAST_VPN_RTYPE_INTER_AS_IPMSI_AD 2
+#define MCAST_VPN_RTYPE_SPMSI_AD          3
+#define MCAST_VPN_RTYPE_LEAF_AD           4
+#define MCAST_VPN_RTYPE_SOURCE_ACTIVE_AD  5
+#define MCAST_VPN_RTYPE_SHARED_TREE_JOIN  6
+#define MCAST_VPN_RTYPE_SOURCE_TREE_JOIN  7
+
+/* RFC 5512 Tunnel Types */
+#define TUNNEL_TYPE_L2TP_OVER_IP 1
+#define TUNNEL_TYPE_GRE          2
+#define TUNNEL_TYPE_IP_IN_IP     7
+
+/* RFC 5512/5640 Sub-TLV Types */
+#define TUNNEL_SUBTLV_ENCAPSULATION 1
+#define TUNNEL_SUBTLV_PROTO_TYPE    2
+#define TUNNEL_SUBTLV_COLOR         4
+#define TUNNEL_SUBTLV_LOAD_BALANCE  5
+
+#ifndef offsetof
+#define offsetof(type, member)  ((size_t)(&((type *)0)->member))
+#endif
+
+
 static const value_string bgptypevals[] = {
-    { BGP_OPEN, "OPEN Message" },
-    { BGP_UPDATE, "UPDATE Message" },
-    { BGP_NOTIFICATION, "NOTIFICATION Message" },
-    { BGP_KEEPALIVE, "KEEPALIVE Message" },
-    { BGP_ROUTE_REFRESH, "ROUTE-REFRESH Message" },
-    { BGP_CAPABILITY, "CAPABILITY Message" },
+    { BGP_OPEN,                "OPEN Message" },
+    { BGP_UPDATE,              "UPDATE Message" },
+    { BGP_NOTIFICATION,        "NOTIFICATION Message" },
+    { BGP_KEEPALIVE,           "KEEPALIVE Message" },
+    { BGP_ROUTE_REFRESH,       "ROUTE-REFRESH Message" },
+    { BGP_CAPABILITY,          "CAPABILITY Message" },
     { BGP_ROUTE_REFRESH_CISCO, "Cisco ROUTE-REFRESH Message" },
     { 0, NULL }
 };
 
-#define BGP_MAJOR_ERROR_MSG_HDR 1
-#define BGP_MAJOR_ERROR_OPEN_MSG 2
-#define BGP_MAJOR_ERROR_UPDATE_MSG 3
-#define BGP_MAJOR_ERROR_HT_EXPIRED 4
+#define BGP_MAJOR_ERROR_MSG_HDR       1
+#define BGP_MAJOR_ERROR_OPEN_MSG      2
+#define BGP_MAJOR_ERROR_UPDATE_MSG    3
+#define BGP_MAJOR_ERROR_HT_EXPIRED    4
 #define BGP_MAJOR_ERROR_STATE_MACHINE 5
-#define BGP_MAJOR_ERROR_CEASE 6
-#define BGP_MAJOR_ERROR_CAP_MSG 7
+#define BGP_MAJOR_ERROR_CEASE         6
+#define BGP_MAJOR_ERROR_CAP_MSG       7
 
 static const value_string bgpnotify_major[] = {
-    { BGP_MAJOR_ERROR_MSG_HDR, "Message Header Error" },
-    { BGP_MAJOR_ERROR_OPEN_MSG, "OPEN Message Error" },
-    { BGP_MAJOR_ERROR_UPDATE_MSG, "UPDATE Message Error" },
-    { BGP_MAJOR_ERROR_HT_EXPIRED, "Hold Timer Expired" },
+    { BGP_MAJOR_ERROR_MSG_HDR,       "Message Header Error" },
+    { BGP_MAJOR_ERROR_OPEN_MSG,      "OPEN Message Error" },
+    { BGP_MAJOR_ERROR_UPDATE_MSG,    "UPDATE Message Error" },
+    { BGP_MAJOR_ERROR_HT_EXPIRED,    "Hold Timer Expired" },
     { BGP_MAJOR_ERROR_STATE_MACHINE, "Finite State Machine Error" },
-    { BGP_MAJOR_ERROR_CEASE, "Cease" },
-    { BGP_MAJOR_ERROR_CAP_MSG, "CAPABILITY Message Error" },
+    { BGP_MAJOR_ERROR_CEASE,         "Cease" },
+    { BGP_MAJOR_ERROR_CAP_MSG,       "CAPABILITY Message Error" },
     { 0, NULL }
 };
 
@@ -117,15 +333,15 @@ static const value_string bgpnotify_minor_open_msg[] = {
 };
 
 static const value_string bgpnotify_minor_update_msg[] = {
-    { 1, "Malformed Attribute List" },
-    { 2, "Unrecognized Well-known Attribute" },
-    { 3, "Missing Well-known Attribute" },
-    { 4, "Attribute Flags Error" },
-    { 5, "Attribute Length Error" },
-    { 6, "Invalid ORIGIN Attribute" },
-    { 7, "AS Routing Loop [Deprecated]" },
-    { 8, "Invalid NEXT_HOP Attribute" },
-    { 9, "Optional Attribute Error" },
+    { 1,  "Malformed Attribute List" },
+    { 2,  "Unrecognized Well-known Attribute" },
+    { 3,  "Missing Well-known Attribute" },
+    { 4,  "Attribute Flags Error" },
+    { 5,  "Attribute Length Error" },
+    { 6,  "Invalid ORIGIN Attribute" },
+    { 7,  "AS Routing Loop [Deprecated]" },
+    { 8,  "Invalid NEXT_HOP Attribute" },
+    { 9,  "Optional Attribute Error" },
     { 10, "Invalid Network Field" },
     { 11, "Malformed AS_PATH" },
     { 0, NULL }
@@ -183,21 +399,21 @@ static const value_string as_segment_type[] = {
 };
 
 static const value_string bgpattr_type[] = {
-    { BGPTYPE_ORIGIN, "ORIGIN" },
-    { BGPTYPE_AS_PATH, "AS_PATH" },
-    { BGPTYPE_NEXT_HOP, "NEXT_HOP" },
-    { BGPTYPE_MULTI_EXIT_DISC, "MULTI_EXIT_DISC" },
-    { BGPTYPE_LOCAL_PREF, "LOCAL_PREF" },
-    { BGPTYPE_ATOMIC_AGGREGATE, "ATOMIC_AGGREGATE" },
-    { BGPTYPE_AGGREGATOR, "AGGREGATOR" },
-    { BGPTYPE_COMMUNITIES, "COMMUNITIES" },
-    { BGPTYPE_ORIGINATOR_ID, "ORIGINATOR_ID" },
-    { BGPTYPE_CLUSTER_LIST, "CLUSTER_LIST" },
-    { BGPTYPE_MP_REACH_NLRI, "MP_REACH_NLRI" },
-    { BGPTYPE_MP_UNREACH_NLRI, "MP_UNREACH_NLRI" },
+    { BGPTYPE_ORIGIN,             "ORIGIN" },
+    { BGPTYPE_AS_PATH,            "AS_PATH" },
+    { BGPTYPE_NEXT_HOP,           "NEXT_HOP" },
+    { BGPTYPE_MULTI_EXIT_DISC,    "MULTI_EXIT_DISC" },
+    { BGPTYPE_LOCAL_PREF,         "LOCAL_PREF" },
+    { BGPTYPE_ATOMIC_AGGREGATE,   "ATOMIC_AGGREGATE" },
+    { BGPTYPE_AGGREGATOR,         "AGGREGATOR" },
+    { BGPTYPE_COMMUNITIES,        "COMMUNITIES" },
+    { BGPTYPE_ORIGINATOR_ID,      "ORIGINATOR_ID" },
+    { BGPTYPE_CLUSTER_LIST,       "CLUSTER_LIST" },
+    { BGPTYPE_MP_REACH_NLRI,      "MP_REACH_NLRI" },
+    { BGPTYPE_MP_UNREACH_NLRI,    "MP_UNREACH_NLRI" },
     { BGPTYPE_EXTENDED_COMMUNITY, "EXTENDED_COMMUNITIES" },
-    { BGPTYPE_NEW_AS_PATH, "NEW_AS_PATH" },
-    { BGPTYPE_NEW_AGGREGATOR, "NEW_AGGREGATOR" },
+    { BGPTYPE_NEW_AS_PATH,        "NEW_AS_PATH" },
+    { BGPTYPE_NEW_AGGREGATOR,     "NEW_AGGREGATOR" },
     { BGPTYPE_SAFI_SPECIFIC_ATTR, "SAFI_SPECIFIC_ATTRIBUTE" },
     { BGPTYPE_TUNNEL_ENCAPS_ATTR, "TUNNEL_ENCAPSULATION_ATTRIBUTE" },
     { 0, NULL }
@@ -212,70 +428,70 @@ static const value_string tunnel_type[] = {
 
 static const value_string subtlv_type[] = {
     { TUNNEL_SUBTLV_ENCAPSULATION, "ENCAPSULATION" },
-    { TUNNEL_SUBTLV_PROTO_TYPE, "PROTOCOL_TYPE" },
-    { TUNNEL_SUBTLV_COLOR, "COLOR" },
-    { TUNNEL_SUBTLV_LOAD_BALANCE, "LOAD_BALANCE" },
+    { TUNNEL_SUBTLV_PROTO_TYPE,    "PROTOCOL_TYPE" },
+    { TUNNEL_SUBTLV_COLOR,         "COLOR" },
+    { TUNNEL_SUBTLV_LOAD_BALANCE,  "LOAD_BALANCE" },
     { 0, NULL }
 };
 
 static const value_string bgpext_com8_type[] = {
-    { BGP_EXT_COM_QOS_MARK_T, "QoS Marking - transitive" },
+    { BGP_EXT_COM_QOS_MARK_T,  "QoS Marking - transitive" },
     { BGP_EXT_COM_QOS_MARK_NT, "QoS Marking - non-transitive" },
-    { BGP_EXT_COM_COS_CAP_T, "CoS Capability - transitive" },
+    { BGP_EXT_COM_COS_CAP_T,   "CoS Capability - transitive" },
     { 0, NULL }
 };
 
 static const value_string bgpext_com_type[] = {
-    { BGP_EXT_COM_RT_0, "two-octet AS specific Route Target" },
-    { BGP_EXT_COM_RT_1, "IPv4 address specific Route Target" },
-    { BGP_EXT_COM_RT_2, "four-octet AS specific Route Target" },
-    { BGP_EXT_COM_RO_0, "two-octet AS specific Route Origin" },
-    { BGP_EXT_COM_RO_1, "IPv4 address specific Route Origin" },
-    { BGP_EXT_COM_RO_2, "four-octet AS specific Route Origin" },
-    { BGP_EXT_COM_LINKBAND, "Link Bandwidth" },
+    { BGP_EXT_COM_RT_0,       "two-octet AS specific Route Target" },
+    { BGP_EXT_COM_RT_1,       "IPv4 address specific Route Target" },
+    { BGP_EXT_COM_RT_2,       "four-octet AS specific Route Target" },
+    { BGP_EXT_COM_RO_0,       "two-octet AS specific Route Origin" },
+    { BGP_EXT_COM_RO_1,       "IPv4 address specific Route Origin" },
+    { BGP_EXT_COM_RO_2,       "four-octet AS specific Route Origin" },
+    { BGP_EXT_COM_LINKBAND,   "Link Bandwidth" },
     { BGP_EXT_COM_VPN_ORIGIN, "OSPF Domain" },
     { BGP_EXT_COM_OSPF_RTYPE, "OSPF Route Type" },
-    { BGP_EXT_COM_OSPF_RID, "OSPF Router ID" },
-    { BGP_EXT_COM_L2INFO, "Layer 2 Information" },
+    { BGP_EXT_COM_OSPF_RID,   "OSPF Router ID" },
+    { BGP_EXT_COM_L2INFO,     "Layer 2 Information" },
     { 0, NULL }
 };
 
 static const value_string qos_tech_type[] = {
-    { QOS_TECH_TYPE_DSCP, "DiffServ enabled IP (DSCP encoding)" },
-    { QOS_TECH_TYPE_802_1q, "Ethernet using 802.1q priority tag" },
-    { QOS_TECH_TYPE_E_LSP, "MPLS using E-LSP" },
-    { QOS_TECH_TYPE_VC, "Virtual Channel (VC) encoding" },
-    { QOS_TECH_TYPE_GMPLS_TIME, "GMPLS - time slot encoding" },
+    { QOS_TECH_TYPE_DSCP,         "DiffServ enabled IP (DSCP encoding)" },
+    { QOS_TECH_TYPE_802_1q,       "Ethernet using 802.1q priority tag" },
+    { QOS_TECH_TYPE_E_LSP,        "MPLS using E-LSP" },
+    { QOS_TECH_TYPE_VC,           "Virtual Channel (VC) encoding" },
+    { QOS_TECH_TYPE_GMPLS_TIME,   "GMPLS - time slot encoding" },
     { QOS_TECH_TYPE_GMPLS_LAMBDA, "GMPLS - lambda encoding" },
-    { QOS_TECH_TYPE_GMPLS_FIBRE, "GMPLS - fibre encoding" },
+    { QOS_TECH_TYPE_GMPLS_FIBRE,  "GMPLS - fibre encoding" },
     { 0, NULL }
 };
 
 static const value_string bgp_ssa_type[] = {
-    { BGP_SSA_L2TPv3 , "L2TPv3 Tunnel" },
-    { BGP_SSA_mGRE , "mGRE Tunnel" },
-    { BGP_SSA_IPSec , "IPSec Tunnel" },
-    { BGP_SSA_MPLS , "MPLS Tunnel" },
+    { BGP_SSA_L2TPv3 ,          "L2TPv3 Tunnel" },
+    { BGP_SSA_mGRE ,            "mGRE Tunnel" },
+    { BGP_SSA_IPSec ,           "IPSec Tunnel" },
+    { BGP_SSA_MPLS ,            "MPLS Tunnel" },
     { BGP_SSA_L2TPv3_IN_IPSec , "L2TPv3 in IPSec Tunnel" },
-    { BGP_SSA_mGRE_IN_IPSec , "mGRE in IPSec Tunnel" },
+    { BGP_SSA_mGRE_IN_IPSec ,   "mGRE in IPSec Tunnel" },
     { 0, NULL }
 };
 
 static const value_string bgp_l2vpn_encaps[] = {
-    { 0,                      "Reserved"},
-    { 1,                      "Frame Relay"},
-    { 2,                      "ATM AAL5 VCC transport"},
-    { 3,                      "ATM transparent cell transport"},
-    { 4,                      "Ethernet VLAN"},
-    { 5,                      "Ethernet"},
-    { 6,                      "Cisco-HDLC"},
-    { 7,                      "PPP"},
-    { 8,                      "CEM"},
-    { 9,                      "ATM VCC cell transport"},
-    { 10,                     "ATM VPC cell transport"},
-    { 11,                     "MPLS"},
-    { 12,                     "VPLS"},
-    { 64,                     "IP-interworking"},
+    { 0,  "Reserved"},
+    { 1,  "Frame Relay"},
+    { 2,  "ATM AAL5 VCC transport"},
+    { 3,  "ATM transparent cell transport"},
+    { 4,  "Ethernet VLAN"},
+    { 5,  "Ethernet"},
+    { 6,  "Cisco-HDLC"},
+    { 7,  "PPP"},
+    { 8,  "CEM"},
+    { 9,  "ATM VCC cell transport"},
+    { 10, "ATM VPC cell transport"},
+    { 11, "MPLS"},
+    { 12, "VPLS"},
+    { 64, "IP-interworking"},
     { 0, NULL }
 };
 
@@ -291,26 +507,26 @@ static const value_string bgpext_ospf_rtype[] = {
 
 /* Subsequent address family identifier, RFC2858 */
 static const value_string bgpattr_nlri_safi[] = {
-    { 0, "Reserved" },
-    { SAFNUM_UNICAST, "Unicast" },
-    { SAFNUM_MULCAST, "Multicast" },
-    { SAFNUM_UNIMULC, "Unicast+Multicast" },
-    { SAFNUM_MPLS_LABEL, "Labeled Unicast"},
-    { SAFNUM_MCAST_VPN, "MCAST-VPN"},
-    { SAFNUM_ENCAPSULATION, "Encapsulation"},
-    { SAFNUM_TUNNEL, "Tunnel"},
-    { SAFNUM_VPLS, "VPLS"},
+    { 0,                     "Reserved" },
+    { SAFNUM_UNICAST,        "Unicast" },
+    { SAFNUM_MULCAST,        "Multicast" },
+    { SAFNUM_UNIMULC,        "Unicast+Multicast" },
+    { SAFNUM_MPLS_LABEL,     "Labeled Unicast"},
+    { SAFNUM_MCAST_VPN,      "MCAST-VPN"},
+    { SAFNUM_ENCAPSULATION,  "Encapsulation"},
+    { SAFNUM_TUNNEL,         "Tunnel"},
+    { SAFNUM_VPLS,           "VPLS"},
     { SAFNUM_LAB_VPNUNICAST, "Labeled VPN Unicast" },        /* draft-rosen-rfc2547bis-03 */
     { SAFNUM_LAB_VPNMULCAST, "Labeled VPN Multicast" },
     { SAFNUM_LAB_VPNUNIMULC, "Labeled VPN Unicast+Multicast" },
-    { SAFNUM_ROUTE_TARGET, "Route Target Filter" },
+    { SAFNUM_ROUTE_TARGET,   "Route Target Filter" },
     { 0, NULL }
 };
 
 /* ORF Type, draft-ietf-idr-route-filter-04.txt */
 static const value_string orf_type_vals[] = {
-    { 2,        "Communities ORF-Type" },
-    { 3,        "Extended Communities ORF-Type" },
+    {   2,      "Communities ORF-Type" },
+    {   3,      "Extended Communities ORF-Type" },
     { 128,      "Cisco PrefixList ORF-Type" },
     { 129,      "Cisco CommunityList ORF-Type" },
     { 130,      "Cisco Extended CommunityList ORF-Type" },
@@ -347,16 +563,16 @@ static const value_string orf_entry_match_vals[] = {
 };
 
 static const value_string capability_vals[] = {
-    { BGP_CAPABILITY_RESERVED, "Reserved capability" },
-    { BGP_CAPABILITY_MULTIPROTOCOL, "Multiprotocol extensions capability" },
-    { BGP_CAPABILITY_ROUTE_REFRESH, "Route refresh capability" },
+    { BGP_CAPABILITY_RESERVED,                    "Reserved capability" },
+    { BGP_CAPABILITY_MULTIPROTOCOL,               "Multiprotocol extensions capability" },
+    { BGP_CAPABILITY_ROUTE_REFRESH,               "Route refresh capability" },
     { BGP_CAPABILITY_COOPERATIVE_ROUTE_FILTERING, "Cooperative route filtering capability" },
-    { BGP_CAPABILITY_GRACEFUL_RESTART, "Graceful Restart capability" },
-    { BGP_CAPABILITY_4_OCTET_AS_NUMBER, "Support for 4-octet AS number capability" },
-    { BGP_CAPABILITY_DYNAMIC_CAPABILITY, "Support for Dynamic capability" },
-    { BGP_CAPABILITY_ADDITIONAL_PATHS, "Support for Additional Paths" },
-    { BGP_CAPABILITY_ROUTE_REFRESH_CISCO, "Route refresh capability" },
-    { BGP_CAPABILITY_ORF_CISCO, "Cooperative route filtering capability" },
+    { BGP_CAPABILITY_GRACEFUL_RESTART,            "Graceful Restart capability" },
+    { BGP_CAPABILITY_4_OCTET_AS_NUMBER,           "Support for 4-octet AS number capability" },
+    { BGP_CAPABILITY_DYNAMIC_CAPABILITY,          "Support for Dynamic capability" },
+    { BGP_CAPABILITY_ADDITIONAL_PATHS,            "Support for Additional Paths" },
+    { BGP_CAPABILITY_ROUTE_REFRESH_CISCO,         "Route refresh capability" },
+    { BGP_CAPABILITY_ORF_CISCO,                   "Cooperative route filtering capability" },
     { 0, NULL }
 };
 
diff --git a/epan/dissectors/packet-bgp.h b/epan/dissectors/packet-bgp.h
deleted file mode 100644 (file)
index c46ff0e..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/* packet-bgp.c
- * Definitions for BGP packet disassembly structures and routine
- *
- * $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 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.
- */
-
-#ifndef __PACKET_BGP_H__
-#define __PACKET_BGP_H__
-
-/* some handy things to know */
-#define BGP_MAX_PACKET_SIZE        4096
-#define BGP_MARKER_SIZE            16    /* size of BGP marker */
-#define BGP_HEADER_SIZE            19    /* size of BGP header, including marker */
-#define BGP_MIN_OPEN_MSG_SIZE      29
-#define BGP_MIN_UPDATE_MSG_SIZE    23
-#define BGP_MIN_NOTIFICATION_MSG_SIZE    21
-#define BGP_MIN_KEEPALVE_MSG_SIZE    BGP_HEADER_SIZE
-#define BGP_TCP_PORT            179
-#define BGP_ROUTE_DISTINGUISHER_SIZE 8
-
-/* BGP message types */
-#define BGP_OPEN          1
-#define BGP_UPDATE        2
-#define BGP_NOTIFICATION  3
-#define BGP_KEEPALIVE     4
-#define BGP_ROUTE_REFRESH 5
-#define BGP_CAPABILITY    6
-#define BGP_ROUTE_REFRESH_CISCO 0x80
-
-
-/* BGP ROUTE-REFRESH message */
-struct bgp_route_refresh {
-    guint8 bgpr_marker[BGP_MARKER_SIZE];
-    guint16 bgpr_len;
-    guint8 bgpr_type;
-    guint16 bgpr_afi;
-    guint8 bgpr_reserved;
-    guint8 bgpr_safi;
-};
-
-/* path attribute */
-struct bgp_attr {
-    guint8 bgpa_flags;
-    guint8 bgpa_type;
-};
-
-/* attribute flags, from RFC1771 */
-#define BGP_ATTR_FLAG_OPTIONAL        0x80
-#define BGP_ATTR_FLAG_TRANSITIVE      0x40
-#define BGP_ATTR_FLAG_PARTIAL         0x20
-#define BGP_ATTR_FLAG_EXTENDED_LENGTH 0x10
-
-/* SSA flags */
-#define BGP_SSA_TRANSITIVE    0x8000
-#define BGP_SSA_TYPE          0x7FFF
-
-/* SSA Types */
-#define BGP_SSA_L2TPv3    1
-#define BGP_SSA_mGRE      2
-#define BGP_SSA_IPSec     3
-#define BGP_SSA_MPLS      4
-#define BGP_SSA_L2TPv3_IN_IPSec 5
-#define BGP_SSA_mGRE_IN_IPSec   6
-
-/* AS_PATH segment types */
-#define AS_SET             1   /* RFC1771 */
-#define AS_SEQUENCE        2   /* RFC1771 */
-#define AS_CONFED_SET      4   /* RFC1965 has the wrong values, corrected in  */
-#define AS_CONFED_SEQUENCE 3   /* draft-ietf-idr-bgp-confed-rfc1965bis-01.txt */
-
-/* OPEN message Optional Parameter types  */
-#define BGP_OPTION_AUTHENTICATION    1   /* RFC1771 */
-#define BGP_OPTION_CAPABILITY        2   /* RFC2842 */
-
-/* BGP capability code */
-#define BGP_CAPABILITY_RESERVED                    0    /* RFC2434 */
-#define BGP_CAPABILITY_MULTIPROTOCOL               1    /* RFC2858 */
-#define BGP_CAPABILITY_ROUTE_REFRESH               2    /* RFC2918 */
-#define BGP_CAPABILITY_COOPERATIVE_ROUTE_FILTERING 3    /* draft-ietf-idr-route-filter-04.txt */
-#define BGP_CAPABILITY_GRACEFUL_RESTART            0x40    /* draft-ietf-idr-restart-05  */
-#define BGP_CAPABILITY_4_OCTET_AS_NUMBER           0x41    /* draft-ietf-idr-as4bytes-06 */
-#define BGP_CAPABILITY_DYNAMIC_CAPABILITY          0x42    /* draft-ietf-idr-dynamic-cap-03 */
-#define BGP_CAPABILITY_ADDITIONAL_PATHS            0x45    /* draft-ietf-idr-add-paths */
-#define BGP_CAPABILITY_ORF_CISCO                   0x82    /* Cisco */
-#define BGP_CAPABILITY_ROUTE_REFRESH_CISCO         0x80    /* Cisco */
-
-#define BGP_ORF_PREFIX_CISCO    0x80 /* Cisco */
-#define BGP_ORF_COMM_CISCO      0x81 /* Cisco */
-#define BGP_ORF_EXTCOMM_CISCO   0x82 /* Cisco */
-#define BGP_ORF_ASPATH_CISCO    0x83 /* Cisco */
-
-#define BGP_ORF_COMM        0x02 /* draft-ietf-idr-route-filter-06.txt */
-#define BGP_ORF_EXTCOMM     0x03 /* draft-ietf-idr-route-filter-06.txt */
-#define BGP_ORF_ASPATH      0x04 /* draft-ietf-idr-aspath-orf-02.txt */
-/* draft-ietf-idr-route-filter-06.txt */
-#define BGP_ORF_ACTION      0xc0
-#define BGP_ORF_ADD         0x00
-#define BGP_ORF_REMOVE      0x40
-#define BGP_ORF_REMOVEALL   0x80
-#define BGP_ORF_MATCH       0x20
-#define BGP_ORF_PERMIT      0x00
-#define BGP_ORF_DENY        0x20
-
-/* well-known communities, from RFC1997 */
-#define BGP_COMM_NO_EXPORT           0xFFFFFF01
-#define BGP_COMM_NO_ADVERTISE        0xFFFFFF02
-#define BGP_COMM_NO_EXPORT_SUBCONFED 0xFFFFFF03
-#define FOURHEX0                     0x00000000
-#define FOURHEXF                     0xFFFF0000
-
-/* attribute types */
-#define BGPTYPE_ORIGIN              1 /* RFC1771           */
-#define BGPTYPE_AS_PATH             2 /* RFC1771           */
-#define BGPTYPE_NEXT_HOP            3 /* RFC1771           */
-#define BGPTYPE_MULTI_EXIT_DISC     4 /* RFC1771           */
-#define BGPTYPE_LOCAL_PREF          5 /* RFC1771           */
-#define BGPTYPE_ATOMIC_AGGREGATE    6 /* RFC1771           */
-#define BGPTYPE_AGGREGATOR          7 /* RFC1771           */
-#define BGPTYPE_COMMUNITIES         8 /* RFC1997           */
-#define BGPTYPE_ORIGINATOR_ID       9 /* RFC2796           */
-#define BGPTYPE_CLUSTER_LIST       10 /* RFC2796           */
-#define BGPTYPE_DPA                11 /* work in progress  */
-#define BGPTYPE_ADVERTISER         12 /* RFC1863           */
-#define BGPTYPE_RCID_PATH          13 /* RFC1863           */
-#define BGPTYPE_MP_REACH_NLRI      14 /* RFC2858           */
-#define BGPTYPE_MP_UNREACH_NLRI    15 /* RFC2858           */
-#define BGPTYPE_EXTENDED_COMMUNITY 16 /* Draft Ramachandra */
-#define BGPTYPE_NEW_AS_PATH        17 /* draft-ietf-idr-as4bytes */
-#define BGPTYPE_NEW_AGGREGATOR     18 /* draft-ietf-idr-as4bytes */
-#define BGPTYPE_SAFI_SPECIFIC_ATTR 19 /* draft-kapoor-nalawade-idr-bgp-ssa-00.txt */
-#define BGPTYPE_TUNNEL_ENCAPS_ATTR 23 /* RFC5512 */
-
-/* Extended community type */
-/* according to IANA's number assignment at: http://www.iana.org/assignments/bgp-extended-communities */
-#define BGP_EXT_COM_QOS_MARK_T  0x04    /* QoS Marking transitive attribute of regular type (8bit)           */
-#define BGP_EXT_COM_QOS_MARK_NT 0x44    /* QoS Marking non-transitive attribute of regular type (8bit)       */
-                                        /* Format Type(1byte):Flags(1byte):QoS Set(1byte):Tec. Type(1byte):  */
-                                        /*        Marking O(2bytes):Marking A(1byte):Proc.Cnt(1byte)         */
-#define BGP_EXT_COM_COS_CAP_T   0x05    /* CoS Capability - Format Type(1byte):Flags(1byte):remaining '0..0' */
-
-                                        /* draft-ietf-idr-bgp-ext-communities */
-#define BGP_EXT_COM_RT_0        0x0002  /* Route Target,Format AS(2bytes):AN(4bytes) */
-#define BGP_EXT_COM_RT_1        0x0102  /* Route Target,Format IP address:AN(2bytes) */
-#define BGP_EXT_COM_RT_2        0x0202  /* Route Target,Format AS(2bytes):AN(4bytes) */
-#define BGP_EXT_COM_RO_0        0x0003  /* Route Origin,Format AS(2bytes):AN(4bytes) */
-#define BGP_EXT_COM_RO_1        0x0103  /* Route Origin,Format IP address:AN(2bytes) */
-#define BGP_EXT_COM_RO_2        0x0203  /* Route Origin,Format AS(2bytes):AN(4bytes) */
-#define BGP_EXT_COM_LINKBAND    ((BGP_ATTR_FLAG_TRANSITIVE << 8) | 0x0004)
-                                        /* Link Bandwidth,Format AS(2bytes):
-                                         * Bandwidth(4bytes) */
-                                        /* -2 version of the draft */
-#define BGP_EXT_COM_VPN_ORIGIN  0x0005  /* OSPF Domin ID / VPN of Origin  */
-                                        /* draft-rosen-vpns-ospf-bgp-mpls */
-#define BGP_EXT_COM_OSPF_RTYPE  0x8000  /* OSPF Route Type,Format Area(4B):RouteType(1B):Options(1B) */
-#define BGP_EXT_COM_OSPF_RID    0x8001  /* OSPF Router ID,Format RouterID(4B):Unused(2B) */
-#define BGP_EXT_COM_L2INFO      0x800a  /* draft-kompella-ppvpn-l2vpn */
-
-/* Extended community QoS Marking technology type */
-#define QOS_TECH_TYPE_DSCP         0x00  /* DiffServ enabled IP (DSCP encoding) */
-#define QOS_TECH_TYPE_802_1q       0x01  /* Ethernet using 802.1q priority tag */
-#define QOS_TECH_TYPE_E_LSP        0x02  /* MPLS using E-LSP */
-#define QOS_TECH_TYPE_VC           0x03  /* Virtual Channel (VC) encoding using separate channels for */
-                                         /* QoS forwarding / one channel per class (e.g. ATM VCs, FR  */
-                                         /* VCs, MPLS L-LSPs) */
-#define QOS_TECH_TYPE_GMPLS_TIME   0x04   /* GMPLS - time slot encoding */
-#define QOS_TECH_TYPE_GMPLS_LAMBDA 0x05  /* GMPLS - lambda encoding */
-#define QOS_TECH_TYPE_GMPLS_FIBRE  0x06  /* GMPLS - fibre encoding */
-
-/* OSPF codes for  BGP_EXT_COM_OSPF_RTYPE draft-rosen-vpns-ospf-bgp-mpls  */
-#define BGP_OSPF_RTYPE_RTR      1 /* OSPF Router LSA */
-#define BGP_OSPF_RTYPE_NET      2 /* OSPF Network LSA */
-#define BGP_OSPF_RTYPE_SUM      3 /* OSPF Summary LSA */
-#define BGP_OSPF_RTYPE_EXT      5 /* OSPF External LSA, note that ASBR doesn't apply to MPLS-VPN */
-#define BGP_OSPF_RTYPE_NSSA     7 /* OSPF NSSA External*/
-#define BGP_OSPF_RTYPE_SHAM     129 /* OSPF-MPLS-VPN Sham link */
-#define BGP_OSPF_RTYPE_METRIC_TYPE 0x1 /* LSB of RTYPE Options Field */
-
-/* Extended community & Route dinstinguisher formats */
-#define FORMAT_AS2_LOC      0x00    /* Format AS(2bytes):AN(4bytes) */
-#define FORMAT_IP_LOC       0x01    /* Format IP address:AN(2bytes) */
-#define FORMAT_AS4_LOC      0x02    /* Format AS(4bytes):AN(2bytes) */
-
-/* RFC 2858 subsequent address family numbers */
-#define SAFNUM_UNICAST  1
-#define SAFNUM_MULCAST  2
-#define SAFNUM_UNIMULC  3
-#define SAFNUM_MPLS_LABEL 4     /* rfc3107 */
-#define SAFNUM_MCAST_VPN  5 /* draft-ietf-l3vpn-2547bis-mcast-bgp-08.txt */
-#define SAFNUM_ENCAPSULATION 7 /* rfc5512 */
-#define SAFNUM_TUNNEL   64  /* draft-nalawade-kapoor-tunnel-safi-02.txt */
-#define SAFNUM_VPLS     65
-#define SAFNUM_LAB_VPNUNICAST  128    /* Draft-rosen-rfc2547bis-03 */
-#define SAFNUM_LAB_VPNMULCAST  129
-#define SAFNUM_LAB_VPNUNIMULC  130
-#define SAFNUM_ROUTE_TARGET    132    /* RFC 4684 Constrained Route Distribution for BGP/MPLS IP VPN */
-
-/* BGP Additional Paths Capability */
-#define BGP_ADDPATH_RECEIVE  0x01
-#define BGP_ADDPATH_SEND     0x02
-
-/* mcast-vpn route types draft-ietf-l3vpn-2547bis-mcast-bgp-08.txt */
-#define MCAST_VPN_RTYPE_INTRA_AS_IPMSI_AD 1
-#define MCAST_VPN_RTYPE_INTER_AS_IPMSI_AD 2
-#define MCAST_VPN_RTYPE_SPMSI_AD          3
-#define MCAST_VPN_RTYPE_LEAF_AD           4
-#define MCAST_VPN_RTYPE_SOURCE_ACTIVE_AD  5
-#define MCAST_VPN_RTYPE_SHARED_TREE_JOIN  6
-#define MCAST_VPN_RTYPE_SOURCE_TREE_JOIN  7
-
-/* RFC 5512 Tunnel Types */
-#define TUNNEL_TYPE_L2TP_OVER_IP 1
-#define TUNNEL_TYPE_GRE          2
-#define TUNNEL_TYPE_IP_IN_IP     7
-
-/* RFC 5512/5640 Sub-TLV Types */
-#define TUNNEL_SUBTLV_ENCAPSULATION 1
-#define TUNNEL_SUBTLV_PROTO_TYPE    2
-#define TUNNEL_SUBTLV_COLOR         4
-#define TUNNEL_SUBTLV_LOAD_BALANCE  5
-
-#ifndef offsetof
-#define offsetof(type, member)  ((size_t)(&((type *)0)->member))
-#endif
-
-#endif
-
-/*
-* Editor modelines - http://www.wireshark.org/tools/modelines.html
-*
-* Local variables:
-* c-basic-offset: 4
-* tab-width: 8
-* indent-tabs-mode: nil
-* End:
-*
-* ex: set shiftwidth=4 tabstop=8 expandtab:
-* :indentSize=4:tabSize=8:noTabs=true:
-*/
index 0368c68b7ade75dd59f3ac8ec3b38148e78896cf..8f97cb041db3698d6bb2ab0c42871df2b184d07b 100644 (file)
 #include <glib.h>
 
 #include "packet-rpc.h"
-#include "packet-bootparams.h"
+
+#define BOOTPARAMSPROC_NULL 0
+#define BOOTPARAMSPROC_WHOAMI 1
+#define BOOTPARAMSPROC_GETFILE 2
+
+#define BOOTPARAMS_PROGRAM 100026
 
 static int proto_bootparams = -1;
 static int hf_bootparams_procedure_v1 = -1;
diff --git a/epan/dissectors/packet-bootparams.h b/epan/dissectors/packet-bootparams.h
deleted file mode 100644 (file)
index 963ad32..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* packet-bootparams.h */
-/* $Id$
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 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.
- */
-
-#ifndef PACKET_BOOTPARAMS_H
-#define PACKET_BOOTPARAMS_H
-
-#define BOOTPARAMSPROC_NULL 0
-#define BOOTPARAMSPROC_WHOAMI 1
-#define BOOTPARAMSPROC_GETFILE 2
-
-#define BOOTPARAMS_PROGRAM 100026
-
-#endif