Fixed the Network Port object subnet mask for IP example. (#573)

This commit is contained in:
Steve Karg
2024-02-13 14:15:59 -06:00
committed by GitHub
parent 190183966c
commit 89fa3cea77
6 changed files with 29 additions and 24 deletions
+1 -3
View File
@@ -257,7 +257,6 @@ uint8_t bip_get_subnet_prefix(void)
{
uint32_t address = 0;
uint32_t broadcast = 0;
uint32_t test_broadcast = 0;
uint32_t mask = 0xFFFFFFFE;
uint8_t prefix = 0;
@@ -265,8 +264,7 @@ uint8_t bip_get_subnet_prefix(void)
broadcast = BIP_Broadcast_Addr.s_addr;
/* calculate the subnet prefix from the broadcast address */
for (prefix = 1; prefix <= 32; prefix++) {
test_broadcast = (address & mask) | (~mask);
if (test_broadcast == broadcast) {
if ((address | mask) == broadcast) {
break;
}
mask = mask << 1;
+1 -3
View File
@@ -272,7 +272,6 @@ uint8_t bip_get_subnet_prefix(void)
{
uint32_t address = 0;
uint32_t broadcast = 0;
uint32_t test_broadcast = 0;
uint32_t mask = 0xFFFFFFFE;
uint8_t prefix = 0;
@@ -280,8 +279,7 @@ uint8_t bip_get_subnet_prefix(void)
broadcast = BIP_Broadcast_Addr.s_addr;
/* calculate the subnet prefix from the broadcast address */
for (prefix = 1; prefix <= 32; prefix++) {
test_broadcast = (address & mask) | (~mask);
if (test_broadcast == broadcast) {
if ((address | mask) == broadcast) {
break;
}
mask = mask << 1;
+2 -4
View File
@@ -412,16 +412,14 @@ uint8_t bip_get_subnet_prefix(void)
{
uint32_t address = 0;
uint32_t broadcast = 0;
uint32_t test_broadcast = 0;
uint32_t mask = 0xFFFFFFFE;
uint8_t prefix = 0;
address = BIP_Broadcast_Addr.s_addr;
address = BIP_Address.s_addr;
broadcast = BIP_Broadcast_Addr.s_addr;
/* calculate the subnet prefix from the broadcast address */
for (prefix = 1; prefix <= 32; prefix++) {
test_broadcast = (address & mask) | (~mask);
if (test_broadcast == broadcast) {
if ((address | mask) == broadcast) {
break;
}
mask = mask << 1;
+1 -3
View File
@@ -247,7 +247,6 @@ uint8_t bip_get_subnet_prefix(void)
{
uint32_t address = 0;
uint32_t broadcast = 0;
uint32_t test_broadcast = 0;
uint32_t mask = 0xFFFFFFFE;
uint8_t prefix = 0;
@@ -255,8 +254,7 @@ uint8_t bip_get_subnet_prefix(void)
broadcast = BIP_Broadcast_Addr.s_addr;
/* calculate the subnet prefix from the broadcast address */
for (prefix = 1; prefix <= 32; prefix++) {
test_broadcast = (address & mask) | (~mask);
if (test_broadcast == broadcast) {
if ((address | mask) == broadcast) {
break;
}
mask = mask<<1;
+2 -3
View File
@@ -938,7 +938,7 @@ bool Network_Port_IP_Subnet(
bool status = false;
uint32_t mask = 0;
uint32_t prefix = 0;
uint8_t ip_mask[4] = { 0 };
uint8_t ip_mask[4] = { 255, 255, 255, 255 };
index = Network_Port_Instance_To_Index(object_instance);
if (index < BACNET_NETWORK_PORTS_MAX) {
@@ -947,9 +947,8 @@ bool Network_Port_IP_Subnet(
if ((prefix > 0) && (prefix <= 32)) {
mask = (0xFFFFFFFF << (32 - prefix)) & 0xFFFFFFFF;
encode_unsigned32(ip_mask, mask);
status =
octetstring_init(subnet_mask, ip_mask, sizeof(ip_mask));
}
status = octetstring_init(subnet_mask, ip_mask, sizeof(ip_mask));
}
}
+16 -2
View File
@@ -357,6 +357,7 @@ void dlenv_network_port_init(void)
{
const uint32_t instance = 1;
BACNET_IP_ADDRESS addr = { 0 };
uint8_t prefix = 0;
#if BBMD_ENABLED
uint8_t addr0, addr1, addr2, addr3;
#endif
@@ -365,9 +366,22 @@ void dlenv_network_port_init(void)
Network_Port_Name_Set(instance, "BACnet/IP Port");
Network_Port_Type_Set(instance, PORT_TYPE_BIP);
bip_get_addr(&addr);
prefix = bip_get_subnet_prefix();
if (BIP_DL_Debug) {
fprintf(stderr,
"BIP: Setting Network Port %lu address %u.%u.%u.%u:%u/%u\n",
(unsigned long)instance,
(unsigned)addr.address[0],
(unsigned)addr.address[1],
(unsigned)addr.address[2],
(unsigned)addr.address[3],
(unsigned)addr.port,
(unsigned)prefix);
}
Network_Port_BIP_Port_Set(instance, addr.port);
Network_Port_MAC_Address_Set(instance, &addr.address[0], 6);
Network_Port_IP_Subnet_Prefix_Set(instance, bip_get_subnet_prefix());
Network_Port_IP_Address_Set(instance, addr.address[0], addr.address[1],
addr.address[2], addr.address[3]);
Network_Port_IP_Subnet_Prefix_Set(instance, prefix);
Network_Port_Link_Speed_Set(instance, 0.0);
#if BBMD_ENABLED
Network_Port_BBMD_BD_Table_Set(instance, bvlc_bdt_list());