BACnet:Fixed dissector for authentication related properties.
Fixed dissector for authentication related properties (open/close tags were skipped) Added new vendor id's as of january 24, 2024.
This commit is contained in:
parent
dd846520f4
commit
989002841e
|
@ -5265,7 +5265,7 @@ BACnetSuccessFilter [] = {
|
|||
|
||||
/* These values are generated by tools/generate-bacnet-vendors.py from
|
||||
* https://bacnet.org/assigned-vendor-ids/
|
||||
* Version: "As of November 27, 2023"
|
||||
* Version: "As of January 24, 2024"
|
||||
*/
|
||||
|
||||
static const value_string
|
||||
|
@ -6724,6 +6724,15 @@ BACnetVendorIdentifiers [] = {
|
|||
{ 1451, "Ryobi Limited" },
|
||||
{ 1452, "EkkoSense Ltd" },
|
||||
{ 1453, "ClimaCool" },
|
||||
{ 1454, "Grid Connect Inc." },
|
||||
{ 1455, "Ziegler Instrumentation UK Ltd" },
|
||||
{ 1456, "ControlTec, LLC" },
|
||||
{ 1457, "Aeterlink Corporation" },
|
||||
{ 1458, "Alpha Epsilon Automation" },
|
||||
{ 1459, "Astralite Inc." },
|
||||
{ 1460, "Delta Fire Ltda." },
|
||||
{ 1461, "Bock Water Heaters, Inc." },
|
||||
{ 1462, "Cleaver-Brooks" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
static value_string_ext BACnetVendorIdentifiers_ext = VALUE_STRING_EXT_INIT(BACnetVendorIdentifiers);
|
||||
|
@ -9433,6 +9442,8 @@ fAbstractSyntaxNType(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
|
|||
offset = fXyColor(tvb, pinfo, tree, offset, ar);
|
||||
else if (object_type == 64) /* color-temperature */
|
||||
offset = fUnsignedTag(tvb, pinfo, tree, offset, ar);
|
||||
else if (object_type == 54) /* lighting-output */
|
||||
offset = fRealTag(tvb, pinfo, tree, offset, ar);
|
||||
break;
|
||||
case 166: /* life-safety-alarm-values */
|
||||
offset = fApplicationTypesEnumerated(tvb, pinfo, tree, offset, ar, BACnetLifeSafetyState);
|
||||
|
@ -9447,7 +9458,7 @@ fAbstractSyntaxNType(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
|
|||
offset = fScale(tvb, pinfo, tree, offset);
|
||||
break;
|
||||
case 189: /* update-time */
|
||||
if (object_type == 37)
|
||||
if (object_type == 37) /* credential-data-input */
|
||||
offset = fTimeStamp(tvb, pinfo, tree, offset, ar);
|
||||
else
|
||||
offset = fDateTime(tvb, pinfo, tree, offset, ar);
|
||||
|
@ -12574,6 +12585,7 @@ fTimerStateChangeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
|
|||
guint lastoffset = 0;
|
||||
guint8 tag_no, tag_info;
|
||||
guint32 lvt;
|
||||
gint32 save_propertyIdentifier;
|
||||
guint ftag_offset;
|
||||
|
||||
while (tvb_reported_length_remaining(tvb, offset) > 0 && offset > lastoffset) {
|
||||
|
@ -12590,7 +12602,13 @@ fTimerStateChangeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin
|
|||
break;
|
||||
case 1: /* constructed-value */
|
||||
offset += ftag_offset;
|
||||
offset = fAbstractSyntaxNType(tvb, pinfo, tree, offset);
|
||||
/* this ASN-1 construction may contain also an property identifier, so
|
||||
save the one we have got and restore it later and invalidate current
|
||||
one to avoid misinterpretations */
|
||||
save_propertyIdentifier = propertyIdentifier;
|
||||
propertyIdentifier = -1;
|
||||
offset = fAbstractSyntaxNType(tvb, pinfo, tree, offset);
|
||||
propertyIdentifier = save_propertyIdentifier;
|
||||
offset += fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
|
||||
break;
|
||||
case 2: /* date-time */
|
||||
|
@ -12901,6 +12919,9 @@ fLandingCallStatus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint of
|
|||
case 2: /* destination */
|
||||
offset = fUnsignedTag(tvb, pinfo, tree, offset, "destination: ");
|
||||
break;
|
||||
case 3: /* floor-text */
|
||||
offset = fCharacterString(tvb, pinfo, tree, offset, "floor-text: ");
|
||||
break;
|
||||
default:
|
||||
return offset;
|
||||
}
|
||||
|
@ -12973,6 +12994,7 @@ fCOVMultipleSubscription(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
|
|||
offset = fUnsignedTag(tvb, pinfo, tree, offset, "max notification delay: ");
|
||||
break;
|
||||
case 4: /* list-of-cov-subscription-specifications */
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
while (tvb_reported_length_remaining(tvb, offset) > 0) {
|
||||
lastoffset = offset;
|
||||
/* check the tag. A closing tag means we are done */
|
||||
|
@ -12985,6 +13007,7 @@ fCOVMultipleSubscription(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
|
|||
offset = fObjectIdentifier(tvb, pinfo, tree, offset, "ObjectIdentifier: ");
|
||||
break;
|
||||
case 1: /* list-of-cov-references */
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
while (tvb_reported_length_remaining(tvb, offset) > 0) {
|
||||
lastoffset = offset;
|
||||
/* check the tag. A closing tag means we are done */
|
||||
|
@ -13009,12 +13032,14 @@ fCOVMultipleSubscription(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu
|
|||
}
|
||||
if (offset <= lastoffset) break; /* nothing happened, exit loop */
|
||||
}
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
break;
|
||||
default:
|
||||
return offset;
|
||||
}
|
||||
if (offset <= lastoffset) break; /* nothing happened, exit loop */
|
||||
}
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
break;
|
||||
default:
|
||||
return offset;
|
||||
|
@ -14527,16 +14552,22 @@ static guint
|
|||
fYouAreRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
||||
{
|
||||
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;
|
||||
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) {
|
||||
|
||||
fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
|
||||
if(tvb_reported_length_remaining(tvb, offset) > 0 && tag_no == 12) {
|
||||
offset = fApplicationTypes(tvb, pinfo, tree, offset, "Device Identifier: ");
|
||||
}
|
||||
if(tvb_reported_length_remaining(tvb, offset) > 0) {
|
||||
|
||||
fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt);
|
||||
if(tvb_reported_length_remaining(tvb, offset) > 0 && tag_no == 6) {
|
||||
offset = fApplicationTypes(tvb, pinfo, tree, offset, "Device MAC address: ");
|
||||
}
|
||||
if (offset <= lastoffset) break; /* nothing happened, exit loop */
|
||||
|
@ -14681,7 +14712,9 @@ fAuthenticationPolicy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
|
|||
|
||||
switch (tag_no) {
|
||||
case 0: /* credential-data-input */
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
offset = fDeviceObjectReference(tvb, pinfo, tree, offset);
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
break;
|
||||
case 1: /* index */
|
||||
offset = fUnsignedTag(tvb, pinfo, tree, offset, "index: ");
|
||||
|
@ -14712,10 +14745,18 @@ fAuthenticationPolicy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint
|
|||
static guint
|
||||
fRequestKeyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
||||
{
|
||||
guint8 tag_no, tag_info;
|
||||
guint32 lvt;
|
||||
|
||||
offset = fObjectIdentifier(tvb, pinfo, tree, offset, "DeviceIdentifier: "); /* Requesting Device Identifier */
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
offset = fAddress(tvb, pinfo, tree, offset);
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
offset = fObjectIdentifier(tvb, pinfo, tree, offset, "DeviceIdentifier: "); /* Remote Device Identifier */
|
||||
return fAddress(tvb, pinfo, tree, offset);
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
offset = fAddress(tvb, pinfo, tree, offset);
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
return offset;
|
||||
}
|
||||
|
||||
static guint
|
||||
|
@ -15613,13 +15654,17 @@ fAccessRule(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|||
offset = fEnumeratedTag(tvb, pinfo, tree, offset, "time-range-specifier: ", NULL);
|
||||
break;
|
||||
case 1: /* time-range */
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
offset = fDeviceObjectPropertyReference(tvb, pinfo, tree, offset);
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
break;
|
||||
case 2: /* location-specifier */
|
||||
offset = fEnumeratedTag(tvb, pinfo, tree, offset, "location-specifier: ", NULL);
|
||||
break;
|
||||
case 3: /* location */
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
offset = fDeviceObjectReference(tvb, pinfo, tree, offset);
|
||||
offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt);
|
||||
break;
|
||||
case 4: /* enable */
|
||||
offset = fBooleanTag(tvb, pinfo, tree, offset, "enable: ");
|
||||
|
|
|
@ -763,7 +763,7 @@ dissect_ipv6_bvlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat
|
|||
|
||||
/* Put the BVLC Type in the info column */
|
||||
col_append_fstr(pinfo->cinfo, COL_INFO, " BVLC Function %s ",
|
||||
val_to_str_const(bvlc_function, bvlc_function_names, "unknown"));
|
||||
val_to_str_const(bvlc_function, bvlc_ipv6_function_names, "unknown"));
|
||||
|
||||
ti = proto_tree_add_item(tree, proto_bvlc, tvb, 0,
|
||||
bvlc_length, ENC_NA);
|
||||
|
|
Loading…
Reference in New Issue