From 7fc966dced541dbf1091f19712b9dffee73a998d Mon Sep 17 00:00:00 2001 From: christiaans Date: Mon, 24 Apr 2006 07:26:06 +0000 Subject: [PATCH] Optimized for speed and size. Test against zero for both the inverted and non-inverted address. (old and new-style broadcasts) --- src/core/ipv4/ip_addr.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/core/ipv4/ip_addr.c b/src/core/ipv4/ip_addr.c index 21ecfbc6..70be286d 100644 --- a/src/core/ipv4/ip_addr.c +++ b/src/core/ipv4/ip_addr.c @@ -34,9 +34,12 @@ #include "lwip/inet.h" #include "lwip/netif.h" +#define IP_ADDR_ANY_VALUE 0x00000000UL +#define IP_ADDR_BROADCAST_VALUE 0xffffffffUL + /* used by IP_ADDR_ANY and IP_ADDR_BROADCAST in ip_addr.h */ -const struct ip_addr ip_addr_any = { 0x00000000UL }; -const struct ip_addr ip_addr_broadcast = { 0xffffffffUL }; +const struct ip_addr ip_addr_any = { IP_ADDR_ANY_VALUE }; +const struct ip_addr ip_addr_broadcast = { IP_ADDR_BROADCAST_VALUE }; /* Determine if an address is a broadcast address on a network interface * @@ -52,8 +55,8 @@ u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif) addr2test = addr->addr; /* all ones (broadcast) or all zeroes (old skool broadcast) */ - if ((addr2test == ip_addr_broadcast.addr) || - (addr2test == ip_addr_any.addr)) + if ((~addr2test == IP_ADDR_ANY_VALUE) || + (addr2test == IP_ADDR_ANY_VALUE)) return 1; /* no broadcast support on this network interface? */ else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) @@ -67,7 +70,7 @@ u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif) else if (ip_addr_netcmp(addr, &(netif->ip_addr), &(netif->netmask)) /* ...and host identifier bits are all ones? =>... */ && ((addr2test & ~netif->netmask.addr) == - (ip_addr_broadcast.addr & ~netif->netmask.addr))) + (IP_ADDR_BROADCAST_VALUE & ~netif->netmask.addr))) /* => network broadcast address */ return 1; else