From 12966253d0a94cccf555b44ca32a9893376e689d Mon Sep 17 00:00:00 2001 From: skarg Date: Sat, 29 Nov 2008 14:36:57 +0000 Subject: [PATCH] Added back address_match with corrections. --- bacnet-stack/src/address.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/bacnet-stack/src/address.c b/bacnet-stack/src/address.c index f7db2fe3..c4f8f201 100644 --- a/bacnet-stack/src/address.c +++ b/bacnet-stack/src/address.c @@ -54,6 +54,41 @@ static struct Address_Cache_Entry { BACNET_ADDRESS address; } Address_Cache[MAX_ADDRESS_CACHE]; +bool address_match(BACNET_ADDRESS * dest, + BACNET_ADDRESS * src) +{ + unsigned i; + unsigned max_len; + + 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; + } + if (dest->net != src->net) + return false; + + /* if local, ignore remaining fields */ + if (dest->net == 0) + return true; + + if (dest->len != src->len) + return false; + max_len = dest->len; + if (max_len > MAX_MAC_LEN) + max_len = MAX_MAC_LEN; + for (i = 0; i < max_len; i++) { + if (dest->adr[i] != src->adr[i]) + return false; + } + + return true; +} + void address_remove_device( uint32_t device_id) {