From c9db715baef6c62350c3c3a3ac8156c91b2db6d7 Mon Sep 17 00:00:00 2001 From: christiaans Date: Tue, 4 Apr 2006 07:21:54 +0000 Subject: [PATCH] addr->addr test size and speed optimalisation (helping a dumb compiler) --- src/core/ipv4/ip_addr.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core/ipv4/ip_addr.c b/src/core/ipv4/ip_addr.c index 2af526e9..21ecfbc6 100644 --- a/src/core/ipv4/ip_addr.c +++ b/src/core/ipv4/ip_addr.c @@ -48,9 +48,12 @@ const struct ip_addr ip_addr_broadcast = { 0xffffffffUL }; u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif) { + u32_t addr2test; + + addr2test = addr->addr; /* all ones (broadcast) or all zeroes (old skool broadcast) */ - if ((addr->addr == ip_addr_broadcast.addr) || - (addr->addr == ip_addr_any.addr)) + if ((addr2test == ip_addr_broadcast.addr) || + (addr2test == ip_addr_any.addr)) return 1; /* no broadcast support on this network interface? */ else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) @@ -58,12 +61,12 @@ u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif) * nor can we check against any broadcast addresses */ return 0; /* address matches network interface address exactly? => no broadcast */ - else if (addr->addr == netif->ip_addr.addr) + else if (addr2test == netif->ip_addr.addr) return 0; /* on the same (sub) network... */ else if (ip_addr_netcmp(addr, &(netif->ip_addr), &(netif->netmask)) /* ...and host identifier bits are all ones? =>... */ - && ((addr->addr & ~netif->netmask.addr) == + && ((addr2test & ~netif->netmask.addr) == (ip_addr_broadcast.addr & ~netif->netmask.addr))) /* => network broadcast address */ return 1;