modified address same routine to only use remote address (net & adr) only when present & mac on local addresses only

This commit is contained in:
netp
2012-08-08 01:37:17 +00:00
parent 8c3a60c935
commit 974f651c18
+21 -15
View File
@@ -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;
} }