Simplify last change to netdev_findbyaddr

This commit is contained in:
Gregory Nutt 2014-03-22 09:24:25 -06:00
parent 0478a97eca
commit 1c258c1c02

View File

@ -96,30 +96,24 @@
static FAR struct uip_driver_s *netdev_finddevice(const uip_ipaddr_t addr) static FAR struct uip_driver_s *netdev_finddevice(const uip_ipaddr_t addr)
{ {
struct uip_driver_s *dev; struct uip_driver_s *dev;
uint8_t iff;
/* Examine each registered network device */ /* Examine each registered network device */
netdev_semtake(); netdev_semtake();
for (dev = g_netdevices; dev; dev = dev->flink) for (dev = g_netdevices; dev; dev = dev->flink)
{ {
/* Get the interface flags */ /* Is the interface in the "up" state? */
if (uip_getifstatus(dev->d_ifname, &iff) == OK) if ((dev->d_flags & IFF_UP) != 0)
{ {
/* Is the interface in the "up" state? */ /* Yes.. check for an address match (under the netmask) */
if ((iff & IFF_UP) != 0) if (uip_ipaddr_maskcmp(dev->d_ipaddr, addr, dev->d_netmask))
{ {
/* Yes.. check for an address match (under the netmask) */ /* Its a match */
if (uip_ipaddr_maskcmp(dev->d_ipaddr, addr, dev->d_netmask)) netdev_semgive();
{ return dev;
/* Its a match */
netdev_semgive();
return dev;
}
} }
} }
} }