- in4.s_addr = local_ip;
- if (netdev_find_dev_by_in4(&in4, &ib->dev_name)) {
- retval = netdev_nodev_arp_lookup(ib->dev_name, ib->ip,
- ib->mac);
+ /* Refresh device with IP address 'in4'. */
+ if (!ib->netdev
+ || netdev_get_in4(ib->netdev, &in4)
+ || in4.s_addr != local_in4.s_addr)
+ {
+ netdev_close(ib->netdev);
+ ib->netdev = netdev_find_dev_by_in4(&local_in4);
+ }
+
+ if (ib->netdev) {
+ retval = netdev_arp_lookup(ib->netdev, ib->ip, ib->mac);