Skip to content
Version 6.1.0
Contact Us

Network Port

A Network Port object describes one network interface of the device: its network type, address and settings. A device has one for each data link it uses, and clients read them to learn how to reach the device and how it is configured. Some ports sit on top of others, so a BACnet/IP port can point to the port beneath it.

  • BACnet/IP port with address, subnet mask and UDP port
  • MS/TP port with MAC address and Max_Master
  • BACnet/SC port with hub URIs and certificates
  • Virtual network port of a gateway device
  • A port whose network number a client changes and then activates
Property What it holds
Network_Type The kind of network: IPv4, MS/TP, Ethernet, virtual, secure connect and others.
Protocol_Level Where the port sits in the protocol stack, for example the BACnet application level or the physical level.
Network_Number The BACnet network number of the port. A client write is held as a pending change until it is activated.
Reference_Port Points to the Network Port that carries this port’s traffic, one layer down. A port at the lowest layer points to none.
Changes_Pending True while a configuration change is waiting to be activated.
MAC_Address The address of the device on this network, for example the IP address and port packed into six octets.

Network Port objects are not commandable and use no COV or event algorithm; the standard applies none to this type. Clients change port settings by writing them, then activating the changes with a ReinitializeDevice request, so a set of edits takes effect together.

Enable it with the STACK_OPTION_OBJECT_TYPE_NETWORK_PORT build option. Do not use BACnetStack_AddObject; add each port with BACnetStack_AddNetworkPortObject, giving the network type, protocol level, network number, its quality and the reference port. The stack always answers Network_Number, Changes_Pending, APDU_Length, MAC_Address and the BACnet/SC settings itself. For a BACnet/IP port it builds MAC_Address from IP_Address and BACnet_IP_UDP_Port; for an MS/TP port it reads the one-octet MAC through the callback you register with BACnetStack_RegisterCallbackGetPropertyOctetString; for a BACnet/SC port it takes it from the secure-connect state; for a BACnet/IPv6 port it is the device’s three-octet VMAC, and the stack also answers Virtual_MAC_Address_Table, BACnet_IPv6_Mode and, until you serve it, BACnet_IPv6_Multicast_Address ([FF02::BAC0]:47808, eighteen octets: the address and then the UDP port). It also stores Network_Type, Protocol_Level, Reference_Port and Network_Number_Quality, but for these a Get callback that answers wins. Other properties, such as the IP address and subnet mask, come from your callbacks. A client’s write to Network_Number is held as a pending change until a ReinitializeDevice request or BACnetStack_ActivateNetworkPortPendingChanges activates it. A client’s write to a BACnet/IP or BACnet/IPv6 address property (the address, mask or prefix length, gateway, DNS server, automatic addressing, UDP port, IPv6 multicast address) is held pending the same way. On a BACnet/IPv6 port the stack also holds BACnet_IPv6_Mode, FD_BBMD_Address and FD_Subscription_Lifetime itself, and, in a build that also has STACK_OPTION_BVLL_BBMD (which needs BACnet/IP), BBMD_Broadcast_Distribution_Table and BBMD_Accept_FD_Registrations: a client writes them, they are held pending the same way, and activation hands them to the stack’s BACnet/IPv6 data link, which then acts as a foreign device or a BBMD. Without STACK_OPTION_BVLL_BBMD the BBMD properties are absent and BACnet_IPv6_Mode refuses BBMD. Your callbacks are never asked for these, and BBMD_Foreign_Device_Table is the data link’s table. A BDT entry or BBMD address must be an IPv6 address; a host name is refused. The ARCNET, point-to-point, LonTalk, ZigBee and generic Serial network types are not supported.

Device, Channel

The properties ASHRAE 135-2024 clause 12.56 defines for this object type.

How to read the table:

  • Conformance is what the standard asks of every object of this type: R is required, W is required and writable by a client, O is optional. A digit after the letter marks a condition in the standard that decides when the property is present or writable, such as support for intrinsic reporting.
  • Present by default: yes means the stack presents the property as soon as you add the object; no means it is optional and you turn it on with BACnetStack_SetPropertyEnabled. This is the stack’s starting setup, so it can differ from the conformance code.
  • Writable is whether a client can write the property by default. Change it with BACnetStack_SetPropertyWritable.
  • not in profile means the stack does not offer this property for this object type.
  • Value when your callback does not answer: “Held by the stack” means the stack stores and serves the value itself and does not ask your callbacks. Otherwise it is the value the stack answers when your callback declines or is not registered.
Property Datatype Conformance Present by default Writable Value when your callback does not answer
Object_Identifier BACnetObjectIdentifier R yes no Held by the stack.
Object_Name CharacterString R yes no "Object <type>,<instance>", such as "Object 0,1" for Analog Input 1.
Object_Type BACnetObjectType R yes no Held by the stack.
Description CharacterString O no no ""
Status_Flags BACnetStatusFlags R yes no Built by the stack from your callbacks.
Reliability BACnetReliability R yes no 0
Out_Of_Service Boolean R yes no false
Network_Type BACnetNetworkType R yes no Held by the stack; a Get callback that answers wins.
Protocol_Level BACnetProtocolLevel R yes no Held by the stack; a Get callback that answers wins.
Reference_Port Unsigned O1 no no Held by the stack; a Get callback that answers wins.
Additional_Reference_Ports BACnetLIST of Unsigned O2 no no 0
Changes_Pending Boolean R yes no Held by the stack.
Command BACnetNetworkPortCommand O3 no yes Held by the stack; a Get callback that answers wins.
Current_Health BACnetHealth O no no No default: the read fails.
Command_Validation_Result BACnetHealth O no no No default: the read fails.
Event_Detection_Enable Boolean O5 no no false
Notification_Class Unsigned O5 no no 0
Event_Enable BACnetEventTransitionBits O5 no no An empty bit string.
Acked_Transitions BACnetEventTransitionBits O5 no no An empty bit string.
Notify_Type BACnetNotifyType O5 no no 0
Event_Time_Stamps BACnetARRAY[3] of BACnetTimeStamp O5 no no No default: the read fails.
Event_Message_Texts BACnetARRAY[3] of CharacterString O5 no no ""
Event_Message_Texts_Config BACnetARRAY[3] of CharacterString O5 no no ""
Event_State BACnetEventState O4 no no 0
Reliability_Evaluation_Inhibit Boolean O no no false
Property_List BACnetARRAY[N] of BACnetPropertyIdentifier R yes no Held by the stack.
Audit_Level BACnetAuditLevel O6 not in profile not in profile No default: the read fails.
Auditable_Operations BACnetAuditOperationFlags O6 not in profile not in profile No default: the read fails.
Tags BACnetARRAY[N] of BACnetNameValue O no no No default: the read fails.
Profile_Location CharacterString O no no ""
Profile_Name CharacterString O no no ""
Network_Number Unsigned16 O no yes, held until activated Held by the stack.
Network_Number_Quality BACnetNetworkNumberQuality O no no Held by the stack; a Get callback that answers wins.
APDU_Length Unsigned O no no Held by the stack.
Routing_Table BACnetLIST of BACnetRouterEntry O no no Held by the stack; a Get callback that answers wins.
MAC_Address OctetString O no no Held by the stack: built from IP_Address and BACnet_IP_UDP_Port on a BACnet/IP port, read from your octet-string callback on an MS/TP port, taken from the secure-connect state on a BACnet/SC port.
Link_Speed Real O no no 0.0
Link_Speeds BACnetARRAY[N] of Real O no no 0.0
Link_Speed_Autonegotiate Boolean O no no false
Network_Interface_Name CharacterString O no no ""
Device_Address_Proxy_Enable Boolean O no yes false
Device_Address_Proxy_Timeout Unsigned O no yes 0
BACnet_IP_Mode BACnetIPMode O no no Held by the stack; a Get callback that answers wins.
BACnet_IP_UDP_Port Unsigned16 O no no 0
BACnet_IP_Multicast_Address OctetString O no yes An empty octet string.
BACnet_IP_NAT_Traversal Boolean O no yes false
BACnet_IP_Global_Address BACnetHostNPort O no yes No default: the read fails.
BBMD_Broadcast_Distribution_Table BACnetLIST of BACnetBDTEntry O no yes No default: the read fails.
BBMD_Accept_FD_Registrations Boolean O no yes false
BBMD_Foreign_Device_Table BACnetLIST of BACnetFDTEntry O no no No default: the read fails.
FD_BBMD_Address BACnetHostNPort O no no The stack’s own foreign-device registration, or the not-configured value.
FD_Subscription_Lifetime Unsigned16 O no no The time-to-live of the stack’s own foreign-device registration, or 0.
IP_Address OctetString O no no An empty octet string.
IP_Subnet_Mask OctetString O no no An empty octet string.
IP_Default_Gateway OctetString O no no An empty octet string.
IP_DNS_Server BACnetARRAY[N] of OctetString O no no A one-entry array holding 0.0.0.0 (not configured).
IP_DHCP_Enable Boolean O no no false
IP_DHCP_Lease_Time Unsigned O no no 0
IP_DHCP_Lease_Time_Remaining Unsigned O no no 0
IP_DHCP_Server OctetString O no no An empty octet string.
Virtual_MAC_Address_Table BACnetLIST of BACnetVMACEntry O no no No default: the read fails.
BACnet_IPv6_Mode BACnetIPMode O no no 0
BACnet_IPv6_UDP_Port Unsigned16 O no no 0
BACnet_IPv6_Multicast_Address OctetString O no no An empty octet string.
IPv6_Address OctetString O no no An empty octet string.
IPv6_Prefix_Length Unsigned8 O no no 0
IPv6_Default_Gateway OctetString O no no An empty octet string.
IPv6_DNS_Server BACnetARRAY[N] of OctetString O no no An empty octet string.
IPv6_Auto_Addressing_Enable Boolean O no no false
IPv6_DHCP_Lease_Time Unsigned O no no 0
IPv6_DHCP_Lease_Time_Remaining Unsigned O no no 0
IPv6_DHCP_Server OctetString O no no An empty octet string.
IPv6_Zone_Index CharacterString O no no ""
Subordinate_Proxy_Enable Boolean O no no false
Manual_Subordinate_Address_Binding BACnetLIST of BACnetAddressBinding O no no No default: the read fails.
Auto_Subordinate_Discovery Boolean O no no false
Subordinate_Address_Binding BACnetLIST of BACnetAddressBinding O no no No default: the read fails.
Max_Manager Unsigned8 O no no 0
Max_Info_Frames Unsigned8 O no no 0
Max_BVLC_Length_Accepted Unsigned O no yes Held by the stack.
Max_NPDU_Length_Accepted Unsigned O no yes Held by the stack.
SC_Primary_Hub_URI CharacterString O no yes Held by the stack.
SC_Failover_Hub_URI CharacterString O no yes Held by the stack.
SC_Minimum_Reconnect_Time Unsigned O no yes Held by the stack.
SC_Maximum_Reconnect_Time Unsigned O no yes Held by the stack.
SC_Connect_Wait_Timeout Unsigned O no yes Held by the stack.
SC_Disconnect_Wait_Timeout Unsigned O no yes Held by the stack.
SC_Heartbeat_Timeout Unsigned O no yes Held by the stack.
SC_Hub_Connector_State BACnetSCHubConnectorState O no no Held by the stack.
Operational_Certificate_File BACnetObjectIdentifier O no no Held by the stack.
Issuer_Certificate_Files BACnetARRAY[2] of BACnetObjectIdentifier O no no Held by the stack.
Certificate_Signing_Request_File BACnetObjectIdentifier O no no Held by the stack.
SC_Primary_Hub_Connection_Status BACnetSCHubConnection O no no No default: the read fails.
SC_Failover_Hub_Connection_Status BACnetSCHubConnection O no no No default: the read fails.
SC_Hub_Function_Enable Boolean O no no false
SC_Hub_Function_Accept_URIs BACnetARRAY[N] of CharacterString O no no ""
SC_Hub_Function_Binding CharacterString O no no ""
SC_Hub_Function_Connection_Status BACnetLIST of BACnetSCHubFunctionConnection O no no No default: the read fails.
SC_Direct_Connect_Initiate_Enable Boolean O no yes false
SC_Direct_Connect_Accept_Enable Boolean O no yes false
SC_Direct_Connect_Accept_URIs BACnetARRAY[N] of CharacterString O no no ""
SC_Direct_Connect_Binding CharacterString O no no ""
SC_Direct_Connect_Connection_Status BACnetLIST of BACnetSCDirectConnection O no no No default: the read fails.
SC_Failed_Connection_Requests BACnetLIST of BACnetSCFailedConnectionRequest O no no No default: the read fails.