modified address same routine to only use remote address (net & adr) only when present & mac on local addresses only
This commit is contained in:
+21
-15
@@ -65,28 +65,34 @@ bool bacnet_address_same(
|
|||||||
{
|
{
|
||||||
uint8_t i = 0; /* loop counter */
|
uint8_t i = 0; /* loop counter */
|
||||||
uint8_t max_len = 0; /* used for dynamic max */
|
uint8_t max_len = 0; /* used for dynamic max */
|
||||||
bool match = true; /* return value */
|
|
||||||
|
|
||||||
if (dest->mac_len != src->mac_len)
|
if (dest == src) /* same ? */
|
||||||
match = false;
|
return true;
|
||||||
max_len = dest->mac_len;
|
|
||||||
if (max_len > MAX_MAC_LEN)
|
|
||||||
max_len = MAX_MAC_LEN;
|
|
||||||
for (i = 0; i < max_len; i++) {
|
|
||||||
if (dest->mac[i] != src->mac[i])
|
|
||||||
match = false;
|
|
||||||
}
|
|
||||||
if (dest->net != src->net)
|
if (dest->net != src->net)
|
||||||
match = false;
|
return false;
|
||||||
|
|
||||||
if (dest->len != src->len)
|
if (dest->len != src->len)
|
||||||
match = false;
|
return false;
|
||||||
|
|
||||||
max_len = dest->len;
|
max_len = dest->len;
|
||||||
if (max_len > MAX_MAC_LEN)
|
if (max_len > MAX_MAC_LEN)
|
||||||
max_len = MAX_MAC_LEN;
|
max_len = MAX_MAC_LEN;
|
||||||
for (i = 0; i < max_len; i++) {
|
for (i = 0; i < max_len; i++) {
|
||||||
if (dest->adr[i] != src->adr[i])
|
if (dest->adr[i] != src->adr[i])
|
||||||
match = false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (dest->net == 0)
|
||||||
return match;
|
{
|
||||||
|
if (dest->mac_len != src->mac_len)
|
||||||
|
return false;
|
||||||
|
max_len = dest->mac_len;
|
||||||
|
if (max_len > MAX_MAC_LEN)
|
||||||
|
max_len = MAX_MAC_LEN;
|
||||||
|
for (i = 0; i < max_len; i++) {
|
||||||
|
if (dest->mac[i] != src->mac[i])
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user