addr->addr test size and speed optimalisation (helping a dumb compiler)

This commit is contained in:
christiaans 2006-04-04 07:21:54 +00:00
parent ed1e3899af
commit c9db715bae

View File

@ -48,9 +48,12 @@ const struct ip_addr ip_addr_broadcast = { 0xffffffffUL };
u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif) 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) */ /* all ones (broadcast) or all zeroes (old skool broadcast) */
if ((addr->addr == ip_addr_broadcast.addr) || if ((addr2test == ip_addr_broadcast.addr) ||
(addr->addr == ip_addr_any.addr)) (addr2test == ip_addr_any.addr))
return 1; return 1;
/* no broadcast support on this network interface? */ /* no broadcast support on this network interface? */
else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) 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 */ * nor can we check against any broadcast addresses */
return 0; return 0;
/* address matches network interface address exactly? => no broadcast */ /* 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; return 0;
/* on the same (sub) network... */ /* on the same (sub) network... */
else if (ip_addr_netcmp(addr, &(netif->ip_addr), &(netif->netmask)) else if (ip_addr_netcmp(addr, &(netif->ip_addr), &(netif->netmask))
/* ...and host identifier bits are all ones? =>... */ /* ...and host identifier bits are all ones? =>... */
&& ((addr->addr & ~netif->netmask.addr) == && ((addr2test & ~netif->netmask.addr) ==
(ip_addr_broadcast.addr & ~netif->netmask.addr))) (ip_addr_broadcast.addr & ~netif->netmask.addr)))
/* => network broadcast address */ /* => network broadcast address */
return 1; return 1;