From a41e8177ba76db6cf652cecab384834ea9d4819a Mon Sep 17 00:00:00 2001 From: Steve Karg Date: Tue, 29 Oct 2024 15:32:54 -0500 Subject: [PATCH] Added IPv6 Zone Index function to return ASCII. (#838) --- src/bacnet/basic/object/netport.c | 30 +++++++++++++++++++++++++++++- src/bacnet/basic/object/netport.h | 2 ++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/bacnet/basic/object/netport.c b/src/bacnet/basic/object/netport.c index a1401590..ab12ee8c 100644 --- a/src/bacnet/basic/object/netport.c +++ b/src/bacnet/basic/object/netport.c @@ -2841,6 +2841,29 @@ bool Network_Port_IPv6_Zone_Index( return status; } +/** + * For a given object instance-number, returns the Zone index ASCII. + * The Zone index could be "eth0" or some other name. + * Note: depends on Network_Type being set for this object + * + * @param object_instance - object-instance number of the object + * @return Zone index ASCII string + */ +const char *Network_Port_IPv6_Zone_Index_ASCII(uint32_t object_instance) +{ + const char *p = NULL; + unsigned index = 0; /* offset from instance lookup */ + + index = Network_Port_Instance_To_Index(object_instance); + if (index < BACNET_NETWORK_PORTS_MAX) { + if (Object_List[index].Network_Type == PORT_TYPE_BIP6) { + p = &Object_List[index].Network.IPv6.Zone_Index[0]; + } + } + + return p; +} + /** * For a given object instance-number, returns the BACnet IPv6 Auto Addressing * Enable property value @@ -2917,6 +2940,7 @@ bool Network_Port_IPv6_Gateway_Zone_Index_Set( snprintf( &Object_List[index].Network.IPv6.Zone_Index[0], ZONE_INDEX_SIZE, "%s", zone_index); + status = true; } } @@ -3664,6 +3688,10 @@ bool Network_Port_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data) } break; } + if (!status && (wp_data->error_code == ERROR_CODE_OTHER)) { + wp_data->error_class = ERROR_CLASS_PROPERTY; + wp_data->error_code = ERROR_CODE_INVALID_DATA_TYPE; + } return status; } @@ -3672,7 +3700,7 @@ bool Network_Port_Write_Property(BACNET_WRITE_PROPERTY_DATA *wp_data) * ReadRange service handler for the BACnet/IP BDT. * * @param apdu - place to encode the data - * @param apdu - BACNET_READ_RANGE_DATA data + * @param pRequest - BACNET_READ_RANGE_DATA data * * @return number of bytes encoded */ diff --git a/src/bacnet/basic/object/netport.h b/src/bacnet/basic/object/netport.h index c4917ce7..f32c1d9f 100644 --- a/src/bacnet/basic/object/netport.h +++ b/src/bacnet/basic/object/netport.h @@ -311,6 +311,8 @@ BACNET_STACK_EXPORT bool Network_Port_IPv6_Zone_Index( uint32_t object_instance, BACNET_CHARACTER_STRING *zone_index); BACNET_STACK_EXPORT +const char *Network_Port_IPv6_Zone_Index_ASCII(uint32_t object_instance); +BACNET_STACK_EXPORT bool Network_Port_IPv6_Gateway_Zone_Index_Set( uint32_t object_instance, char *zone_index);