diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common index 9df8ee8153..1669c4d3be 100644 --- a/epan/dissectors/Makefile.common +++ b/epan/dissectors/Makefile.common @@ -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 \ diff --git a/epan/dissectors/packet-acn.c b/epan/dissectors/packet-acn.c index ed07d842ec..5fc9c70efc 100644 --- a/epan/dissectors/packet-acn.c +++ b/epan/dissectors/packet-acn.c @@ -49,7 +49,150 @@ #include #include -#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 @@ -59,23 +202,8 @@ #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 && ydata_length; data_address = adt->address; - for (x=0;xcount;x++) { + for (x=0; xcount; 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 && ydata_length / adt->count; data_address = adt->address; - for (x=0;xcount;x++) { + for (x=0; xcount; 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 && yaddress; - for (x=0;xcount;x++) { + for (x=0; xcount; 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;xcount;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;xcount;x++) { + for (x=0; xcount; 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;xcount;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; + 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; + 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; + 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; + 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; + 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; + 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 0); /* expand to needed character */ - for (;iheader = 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 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; + 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; + proto_item *ti, *pi; + proto_tree *pdu_tree = NULL; + proto_tree *flag_tree = NULL; - const char *name; + 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; + 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; + 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; + 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; + 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 index b7c32068d5..0000000000 --- a/epan/dissectors/packet-acn.h +++ /dev/null @@ -1,175 +0,0 @@ -/* packet-acn.h - * Routines for ACN packet disassembly - * - * $Id$ - * - * Copyright (c) 2003 by Erwin Rol - * Copyright (c) 2006 by Electronic Theatre Controls, Inc. - * Bill Florac - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * 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 */ diff --git a/epan/dissectors/packet-afs.c b/epan/dissectors/packet-afs.c index b1c1f61b33..7880e6fe2a 100644 --- a/epan/dissectors/packet-afs.c +++ b/epan/dissectors/packet-afs.c @@ -36,9 +36,10 @@ #endif #include - #include + #include + #include #include #include @@ -46,7 +47,119 @@ #include #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 index 29a78d1065..0000000000 --- a/epan/dissectors/packet-afs.h +++ /dev/null @@ -1,142 +0,0 @@ -/* packet-afs.h - * Definitions for packet disassembly structures and routines - * - * $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * 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 diff --git a/epan/dissectors/packet-assa_r3.c b/epan/dissectors/packet-assa_r3.c index 483269311a..30d0c53e7f 100644 --- a/epan/dissectors/packet-assa_r3.c +++ b/epan/dissectors/packet-assa_r3.c @@ -28,11 +28,966 @@ #endif #include + #include #include #include -#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 index 3995c30b74..0000000000 --- a/epan/dissectors/packet-assa_r3_public.h +++ /dev/null @@ -1,996 +0,0 @@ -/* packet-r3_public.h - * Routines for R3 packet dissection - * Copyright (c) 2009 Assa Abloy USA - * - * $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * 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: - */ diff --git a/epan/dissectors/packet-bgp.c b/epan/dissectors/packet-bgp.c index fcf0b9634b..44c3f3fcc0 100644 --- a/epan/dissectors/packet-bgp.c +++ b/epan/dissectors/packet-bgp.c @@ -54,11 +54,11 @@ #endif #include + #include #include #include -#include "packet-bgp.h" #include "packet-frame.h" #include #include @@ -68,33 +68,249 @@ /* #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 index c46ff0ec24..0000000000 --- a/epan/dissectors/packet-bgp.h +++ /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 - * 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: -*/ diff --git a/epan/dissectors/packet-bootparams.c b/epan/dissectors/packet-bootparams.c index 0368c68b7a..8f97cb041d 100644 --- a/epan/dissectors/packet-bootparams.c +++ b/epan/dissectors/packet-bootparams.c @@ -31,7 +31,12 @@ #include #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 index 963ad32c30..0000000000 --- a/epan/dissectors/packet-bootparams.h +++ /dev/null @@ -1,32 +0,0 @@ -/* packet-bootparams.h */ -/* $Id$ - * - * Wireshark - Network traffic analyzer - * By Gerald Combs - * 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