aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-bacapp.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-bacapp.c')
-rw-r--r--epan/dissectors/packet-bacapp.c287
1 files changed, 267 insertions, 20 deletions
diff --git a/epan/dissectors/packet-bacapp.c b/epan/dissectors/packet-bacapp.c
index d32606dd71..ee2e10d507 100644
--- a/epan/dissectors/packet-bacapp.c
+++ b/epan/dissectors/packet-bacapp.c
@@ -2958,6 +2958,11 @@ BACnetLifeSafetyMode [] = {
{ 12, "disabled"},
{ 13, "atomic-release-disabled"},
{ 14, "default"},
+ { 15, "activated-oeo-alarm"},
+ { 16, "activated-oeo-evacuate"},
+ { 17, "activated-oeo-phase1-recall"},
+ { 18, "activated-oeo-unavailable"},
+ { 19, "deactivated"},
{ 0, NULL}
/* Enumerated values 0-255 are reserved for definition by ASHRAE.
Enumerated values 256-65535 may be used by others subject to
@@ -3008,6 +3013,17 @@ BACnetLifeSafetyState [] = {
{ 21, "general-alarm"},
{ 22, "supervisory"},
{ 23, "test-supervisory"},
+ { 24, "non-default-mode"},
+ { 25, "oeo-unavailable"},
+ { 26, "oeo-alarm"},
+ { 27, "oeo-phase1-recall"},
+ { 28, "oeo-evacuate"},
+ { 29, "oeo-unaffected"},
+ { 30, "test-oeo-unavailable"},
+ { 31, "test-oeo-alarm"},
+ { 32, "test-oeo-phase1-recall"},
+ { 33, "test-oeo-evacuate"},
+ { 34, "test-oeo-unaffected"},
{ 0, NULL}
/* Enumerated values 0-255 are reserved for definition by ASHRAE.
Enumerated values 256-65535 may be used by others subject to
@@ -3317,6 +3333,8 @@ BACnetUnconfirmedServiceChoice [] = {
{ 10, "writeGroup"},
{ 11, "unconfirmedCovNotificationMultiple"},
{ 12, "unconfirmedAuditNotification"},
+ { 13, "who-am-I" },
+ { 14, "you-are" },
{ 0, NULL}
};
@@ -3377,7 +3395,7 @@ BACnetObjectType [] = {
{ 52, "alert-enrollment"},
{ 53, "channel"},
{ 54, "lighting-output"},
- { 55, "reserved-obj-type-55"},
+ { 55, "binary-lighting-output"},
{ 56, "network-port"},
{ 57, "elevator-group"},
{ 58, "escalator"},
@@ -3654,6 +3672,16 @@ BACnetEngineeringUnits [] = {
{ 47810, "thousand-cubic-feet-per-day"},
{ 47811, "thousand-standard-cubic-feet-per-day"},
{ 47812, "pounds-mass-per-day"},
+ { 47813, "reserved-unit-47813"},
+ { 47814, "millirems"},
+ { 47815, "millirems-per-hour"},
+ { 47816, "degrees-lovibond"},
+ { 47817, "alcohol-by-volume"},
+ { 47818, "international-bittering-units"},
+ { 47819, "european-bitterness-units"},
+ { 47820, "degrees-plato"},
+ { 47821, "specific-gravity"},
+ { 47822, "european-brewing-convention"},
{ 0, NULL}
/* Enumerated values 0-255 are reserved for definition by ASHRAE.
Enumerated values 256-65535 may be used by others subject to
@@ -3801,6 +3829,10 @@ BACnetErrorCode [] = {
{ 136, "abort-security-error"},
{ 137, "duplicate-entry"},
{ 138, "invalid-value-in-this-state"},
+ { 139, "invalid-operation-in-this-state"},
+ { 140, "list-item-not-numbered"},
+ { 141, "list-item-not-timestamped"},
+ { 142, "invalid-data-encoding"},
{ 0, NULL}
/* Enumerated values 0-255 are reserved for definition by ASHRAE.
Enumerated values 256-65535 may be used by others subject to the
@@ -4301,6 +4333,8 @@ BACnetPropertyIdentifier [] = {
{ 503, "maximum-send-delay"},
{ 504, "monitored-objects"},
{ 505, "send-now"},
+ { 506, "floor-number"},
+ { 507, "device-uuid"},
{ 0, NULL}
/* Enumerated values 0-511 are reserved for definition by ASHRAE.
Enumerated values 512-4194303 may be used by others subject to
@@ -4636,6 +4670,9 @@ BACnetServicesSupported [] = {
{ 41, "subscribe-cov-property-multiple"},
{ 42, "confirmed-cov-notification-multiple"},
{ 43, "unconfirmed-cov-notification-multiple"},
+ { 44, "confirmed-audit-notification" },
+ { 45, "audit-log-query" },
+ { 46, "unconfirmed-audit-notification" },
{ 0, NULL}
};
@@ -4964,7 +5001,7 @@ BACnetSuccessFilter [] = {
/* These values are (manually) transferred from
* http://www.bacnet.org/VendorID/BACnet Vendor IDs.htm
- * Version: "As of September 6, 2019"
+ * Version: "As of May 03, 2021"
*/
static const value_string
@@ -6145,6 +6182,138 @@ BACnetVendorIdentifiers [] = {
{ 1174, "DAS Integrator Pte Ltd" },
{ 1175, "CREVIS Co., Ltd" },
{ 1176, "iSquared software inc." },
+ { 1177, "KTG GmbH" },
+ { 1178, "POK Group Oy" },
+ { 1179, "Adiscom" },
+ { 1180, "Incusense" },
+ { 1181, "75F" },
+ { 1182, "Anord Mardix, Inc." },
+ { 1183, "HOSCH Gebäudeautomation" },
+ { 1184, "BOSCH Software Innovations GmbH" },
+ { 1185, "Royal Boon Edam International B.V." },
+ { 1186, "Clack Corporation" },
+ { 1187, "Unitex Controls LLC" },
+ { 1188, "KTC Göteborg AB" },
+ { 1189, "Interzon AB" },
+ { 1190, "ISDE ING SL" },
+ { 1191, "ABM automation building messaging GmbH" },
+ { 1192, "Kentec Electronics Ltd" },
+ { 1193, "Emerson Commercial and Residential Solutions" },
+ { 1194, "Powerside" },
+ { 1195, "SMC Group" },
+ { 1196, "EOS Weather Instruments" },
+ { 1197, "Zonex Systems" },
+ { 1198, "Generex Systems Computervertriebsgesellschaft mbH" },
+ { 1199, "Energy Wall LLC" },
+ { 1200, "Thermofin" },
+ { 1201, "SDATAWAY SA" },
+ { 1202, "Biddle Air Systems Limited" },
+ { 1203, "Kessler" },
+ { 1204, "Thermoscreens" },
+ { 1205, "Modio" },
+ { 1206, "Newron Solutions" },
+ { 1207, "Unitronics" },
+ { 1208, "TRILUX GmbH & Co. KG" },
+ { 1209, "Kollmorgen Steuerungstechnik GmbH" },
+ { 1210, "Bosch Rexroth AG" },
+ { 1211, "Alarko Carrier" },
+ { 1212, "Verdigris Technologies" },
+ { 1213, "Shanghai SIIC-Longchuang Smarter Energy Technology Co., Ltd." },
+ { 1214, "Quinda Co." },
+ { 1215, "GRUNER AG" },
+ { 1216, "BACMOVE" },
+ { 1217, "PSIDAC AB" },
+ { 1218, "ISICON-Control Automation" },
+ { 1219, "Big Ass Fans" },
+ { 1220, "din" },
+ { 1221, "Teldio" },
+ { 1222, "MIKROKLIMA s.r.o." },
+ { 1223, "Density" },
+ { 1224, "ICONAG-Leittechnik GmbH" },
+ { 1225, "Awair" },
+ { 1226, "T&D Engineering, Ltd" },
+ { 1227, "Sistemas Digitales" },
+ { 1228, "Loxone Electronics GmbH" },
+ { 1229, "ActronAir" },
+ { 1230, "Inductive Automation" },
+ { 1231, "Thor Engineering GmbH" },
+ { 1232, "Berner International, LLC" },
+ { 1233, "Potsdam Sensors LLC" },
+ { 1234, "Kohler Mira Ltd" },
+ { 1235, "Tecomon GmbH" },
+ { 1236, "Two Dimensional Instruments, LLC" },
+ { 1237, "LEFA Technologies Pte. Ltd" },
+ { 1238, "EATON CEAG Notlichtsysteme GmbH" },
+ { 1239, "Commbox Tecnologia" },
+ { 1240, "IPVideo Corporation" },
+ { 1241, "Bender GmbH & Co. KG" },
+ { 1242, "Rhymebus Corporation" },
+ { 1243, "Axon Systems Ltd" },
+ { 1244, "Engineered Air" },
+ { 1245, "Elipse Software Ltd" },
+ { 1246, "Simatix Building Technologies Pvt. Ltd." },
+ { 1247, "W.A. Benjamin Electric Co." },
+ { 1248, "TROX Air Conditioning Components (Suzhou) Co. Ltd." },
+ { 1249, "SC Medical Pty Ltd." },
+ { 1250, "Elcanic A/S" },
+ { 1251, "Obeo AS" },
+ { 1252, "Tapa, Inc." },
+ { 1253, "ASE Smart Energy, Inc." },
+ { 1254, "Performance Services, Inc." },
+ { 1255, "Veridify Security" },
+ { 1256, "CD Innovation LTD" },
+ { 1257, "Ben Peoples Industries, LLC" },
+ { 1258, "UNICOMM Sp. z o.o" },
+ { 1259, "Thing Technologies GmbH" },
+ { 1260, "Beijing HaiLin Energy Saving Technology, Inc." },
+ { 1261, "Digital Realty" },
+ { 1262, "Agrowtek Inc." },
+ { 1263, "DSP Innovation BV " },
+ { 1264, "STV Electronic GmbH" },
+ { 1265, "Elmeasure India Pvt Ltd." },
+ { 1266, "Pineshore Energy LLC." },
+ { 1267, "Brasch Environmental Technologies, LLC." },
+ { 1268, "Lion Controls Co., LTD" },
+ { 1269, "Sinux" },
+ { 1270, "Avnet Inc." },
+ { 1271, "Somfy Activites SA" },
+ { 1272, "Amico" },
+ { 1273, "SageGlass" },
+ { 1274, "AuVerte" },
+ { 1275, "Agile Connects Pvt. Ltd." },
+ { 1276, "Locimation Pty Ltd." },
+ { 1277, "Envio Systems GmbH" },
+ { 1278, "Voytech Systems Limited" },
+ { 1279, "Davidsmeyer und Paul GmbH" },
+ { 1280, "Lusher Engineering Services" },
+ { 1281, "CHNT Nanjing Techsel Intelligent Company LTD." },
+ { 1282, "Threetronics Pty Ltd." },
+ { 1283, "SkyFoundry, LLC." },
+ { 1284, "HanilProTech" },
+ { 1285, "Sensorscall" },
+ { 1286, "Shanghai Jingpu Information Technology, Co., Ltd." },
+ { 1287, "Lichtmanufaktur Berlin GmbH" },
+ { 1288, "Eco Parking Technologies" },
+ { 1289, "Envision Digital International Pte Ltd." },
+ { 1290, "Antony Developpement Electronique" },
+ { 1291, "i2systems" },
+ { 1292, "Thureon International Limited" },
+ { 1293, "Pulsafeeder" },
+ { 1294, "MegaChips Corporation" },
+ { 1295, "TES Controls" },
+ { 1296, "Cermate" },
+ { 1297, "Grand Valley State University" },
+ { 1298, "Symcon Gmbh" },
+ { 1299, "The Chicago Faucet Company" },
+ { 1300, "Geberit AG" },
+ { 1301, "Rex Controls" },
+ { 1302, "IVMS GmbH" },
+ { 1303, "MNPP Saturn Ltd." },
+ { 1304, "Regal Beloit" },
+ { 1305, "ACS-Air Conditioning Solutions" },
+ { 1306, "GBX Technology, LLC" },
+ { 1307, "Kaiterra" },
+ { 1308, "ThinKuan loT Technology (Shanghai) Co., Ltd" },
{ 0, NULL }
};
static value_string_ext BACnetVendorIdentifiers_ext = VALUE_STRING_EXT_INIT(BACnetVendorIdentifiers);
@@ -6204,6 +6373,7 @@ static int hf_bacapp_present_value_bool = -1;
static int hf_bacapp_present_value_unsigned = -1;
static int hf_bacapp_present_value_signed = -1;
static int hf_bacapp_present_value_real = -1;
+static int hf_bacapp_present_value_double = -1;
static int hf_bacapp_present_value_octet_string = -1;
static int hf_bacapp_present_value_char_string = -1;
static int hf_bacapp_present_value_bit_string = -1;
@@ -7041,7 +7211,7 @@ fPresentValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset,
break;
case BACAPP_PRESENT_VALUE_DOUBLE:
double_val = tvb_get_ntohieee_double(tvb, offset+tag_len);
- tree_item = proto_tree_add_double(tree, hf_bacapp_present_value_real, tvb, offset, lvt+tag_len, double_val);
+ tree_item = proto_tree_add_double(tree, hf_bacapp_present_value_double, tvb, offset, lvt+tag_len, double_val);
curr_offset += tag_len + lvt;
break;
case BACAPP_PRESENT_VALUE_OCTET_STRING:
@@ -7050,10 +7220,10 @@ fPresentValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset,
curr_offset += tag_len + lvt;
break;
case BACAPP_PRESENT_VALUE_CHARACTER_STRING:
- curr_offset += fCharacterStringBase(tvb, pinfo, tree, offset, NULL, TRUE, FALSE);
+ curr_offset = fCharacterStringBase(tvb, pinfo, tree, offset, NULL, TRUE, FALSE);
break;
case BACAPP_PRESENT_VALUE_BIT_STRING:
- curr_offset += fBitStringTagVSBase(tvb, pinfo, tree, offset, NULL, NULL, TRUE);
+ curr_offset = fBitStringTagVSBase(tvb, pinfo, tree, offset, NULL, NULL, TRUE);
break;
case BACAPP_PRESENT_VALUE_ENUM:
if (fUnsigned32(tvb, offset+tag_len, lvt, &enum_index)) {
@@ -7073,6 +7243,12 @@ fPresentValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset,
}
curr_offset += tag_len + lvt;
break;
+ case BACAPP_PRESENT_VALUE_DATE:
+ curr_offset = fDate(tvb, pinfo, tree, offset, "Date: ");
+ break;
+ case BACAPP_PRESENT_VALUE_TIME:
+ curr_offset = fTime(tvb, pinfo, tree, offset, "Time: ");
+ break;
case BACAPP_PRESENT_VALUE_OBJECT_IDENTIFIER:
object_id = tvb_get_ntohl(tvb, offset+tag_len);
object_type = object_id_type(object_id);
@@ -7504,7 +7680,7 @@ fMacAddress(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, c
offset += fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
/* just add the label, with the tagHeader information in its subtree */
- subtree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_bacapp_tag, NULL, label);
+ subtree = proto_tree_add_subtree(tree, tvb, offset, lvt, ett_bacapp_tag, NULL, label);
if (lvt == 6) { /* we have 6 Byte IP Address with 4 Octets IPv4 and 2 Octets Port Information */
proto_tree_add_item(tree, hf_bacapp_tag_IPV4, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -8819,6 +8995,9 @@ fAbstractSyntaxNType(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
case 100: /* reason-for-halt */
offset = fApplicationTypesEnumerated(tvb, pinfo, tree, offset, ar, BACnetProgramError);
break;
+ case 157: /* last-restore-time */
+ offset = fTimeStamp(tvb, pinfo, tree, offset, ar);
+ break;
case 160: /* mode */
case 175: /* accepted-modes */
offset = fApplicationTypesEnumerated(tvb, pinfo, tree, offset, ar, BACnetLifeSafetyMode);
@@ -9185,6 +9364,14 @@ fAbstractSyntaxNType(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
{
offset = fPresentValue(tvb, pinfo, tree, offset, BACnetShedState, 0, BACAPP_PRESENT_VALUE_ENUM);
}
+ else if (object_type == 43) /* date-time-pattern-value */
+ {
+ offset = fDateTime(tvb, pinfo, tree, offset, ar);
+ }
+ else if (object_type == 44) /* date-time-value */
+ {
+ offset = fDateTime(tvb, pinfo, tree, offset, ar);
+ }
else
{
if (!tag_info) {
@@ -9791,16 +9978,18 @@ fRestartReason(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset
static guint
fConfirmedTextMessageRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
- guint lastoffset = 0;
+ guint8 tag_no, tag_info;
+ guint32 lvt;
+ guint lastoffset = 0;
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
switch (fTagNo(tvb, offset)) {
-
case 0: /* textMessageSourceDevice */
offset = fObjectIdentifier(tvb, pinfo, tree, offset, "DeviceIdentifier: ");
break;
case 1: /* messageClass */
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
switch (fTagNo(tvb, offset)) {
case 0: /* numeric */
offset = fUnsignedTag(tvb, pinfo, tree, offset, "message Class: ");
@@ -9809,6 +9998,7 @@ fConfirmedTextMessageRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
offset = fCharacterString(tvb, pinfo, tree, offset, "message Class: ");
break;
}
+ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
break;
case 2: /* messagePriority */
offset = fEnumeratedTag(tvb, pinfo, tree, offset, "message Priority: ",
@@ -11368,8 +11558,20 @@ fFaultParameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
if (tag_is_closing(tag_info)) {
break;
}
- offset = fApplicationTypes(tvb, pinfo, subtree, offset, "min-normal-value: ");
- offset = fApplicationTypes(tvb, pinfo, subtree, offset, "max-normal-value: ");
+ switch (fTagNo(tvb, offset)) {
+ case 0:
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset = fApplicationTypes(tvb, pinfo, subtree, offset, "min-normal-value: ");
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ break;
+ case 1:
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ offset = fApplicationTypes(tvb, pinfo, subtree, offset, "max-normal-value: ");
+ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
+ break;
+ default:
+ break;
+ }
}
break;
case 7: /* fault-listed */
@@ -13246,8 +13448,8 @@ fAuditLogQueryByTargetParameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
offset = fUnsignedTag(tvb, pinfo, tree, offset, "target-priority: ");
break;
case 6: /* target-operation */
- offset = fEnumeratedTagSplit(tvb, pinfo, tree, offset,
- "target-operation: ", BACnetAuditOperation, 64);
+ offset = fBitStringTagVS(tvb, pinfo, tree, offset,
+ "target-operation: ", BACnetAuditOperation);
break;
case 7: /* successful-action */
offset = fEnumeratedTagSplit(tvb, pinfo, tree, offset,
@@ -13288,8 +13490,8 @@ fAuditLogQueryBySourceParameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
offset = fObjectIdentifier(tvb, pinfo, tree, offset, "ObjectIdentifier: ");
break;
case 3: /* source-operation */
- offset = fEnumeratedTagSplit(tvb, pinfo, tree, offset,
- "source-operation: ", BACnetAuditOperation, 64);
+ offset = fBitStringTagVS(tvb, pinfo, tree, offset,
+ "source-operation: ", BACnetAuditOperation);
break;
case 4: /* successful-action */
offset = fEnumeratedTagSplit(tvb, pinfo, tree, offset,
@@ -13395,7 +13597,7 @@ fAuditLogRecordResult(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
offset = fUnsignedTag(tvb, pinfo, tree, offset, "sequence-number: ");
break;
case 1: /* log-record */
- subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, "log-record: ");
+ subtree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_bacapp_value, NULL, "log-record: ");
offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fAuditLogRecord(tvb, pinfo, subtree, offset);
offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt);
@@ -13442,6 +13644,42 @@ fAuditLogQueryAck(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off
}
static guint
+fWhoAmIRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
+{
+ guint lastoffset = 0;
+
+ while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
+ lastoffset = offset;
+ offset = fApplicationTypes(tvb, pinfo, tree, offset, "Vendor ID: ");
+ offset = fApplicationTypes(tvb, pinfo, tree, offset, "Model name: ");
+ offset = fApplicationTypes(tvb, pinfo, tree, offset, "Serial number: ");
+ if (offset <= lastoffset) break; /* nothing happened, exit loop */
+ }
+ return offset;
+}
+
+static guint
+fYouAreRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
+{
+ guint lastoffset = 0;
+
+ while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
+ lastoffset = offset;
+ offset = fApplicationTypes(tvb, pinfo, tree, offset, "Vendor ID: ");
+ offset = fApplicationTypes(tvb, pinfo, tree, offset, "Model name: ");
+ offset = fApplicationTypes(tvb, pinfo, tree, offset, "Serial number: ");
+ if(tvb_reported_length_remaining(tvb, offset) > 0) {
+ offset = fApplicationTypes(tvb, pinfo, tree, offset, "Device Identifier: ");
+ }
+ if(tvb_reported_length_remaining(tvb, offset) > 0) {
+ offset = fApplicationTypes(tvb, pinfo, tree, offset, "Device MAC address: ");
+ }
+ if (offset <= lastoffset) break; /* nothing happened, exit loop */
+ }
+ return offset;
+}
+
+static guint
fAuthenticateRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
guint lastoffset = 0;
@@ -14088,17 +14326,16 @@ fSecurityKeySet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse
static guint
fSelectionCriteria(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
- guint lastoffset = 0, len;
+ guint lastoffset = 0;
guint8 tag_no, tag_info;
guint32 lvt;
while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */
lastoffset = offset;
- len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
- /* maybe a listOfSelectionCriteria if we spot a closing tag */
+ fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
+ /* quit loop if we spot a closing tag */
if (tag_is_closing(tag_info)) {
- offset += len;
- continue;
+ break;
}
switch (fTagNo(tvb, offset)) {
@@ -14857,6 +15094,12 @@ fUnconfirmedServiceRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
case 12:
offset = fUnconfirmedAuditNotificationRequest(tvb, pinfo, tree, offset);
break;
+ case 13:
+ offset = fWhoAmIRequest(tvb, pinfo, tree, offset);
+ break;
+ case 14:
+ offset = fYouAreRequest(tvb, pinfo, tree, offset);
+ break;
default:
break;
}
@@ -15729,6 +15972,10 @@ proto_register_bacapp(void)
{ "Present Value (real)", "bacapp.present_value.real",
FT_DOUBLE, BASE_NONE, NULL, 0, NULL, HFILL }
},
+ { &hf_bacapp_present_value_double,
+ { "Present Value (double)", "bacapp.present_value.double",
+ FT_DOUBLE, BASE_NONE, NULL, 0, NULL, HFILL }
+ },
{ &hf_bacapp_present_value_octet_string,
{ "Present Value (octet string)", "bacapp.present_value.octet_string",
FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }