Hey guys,

I ran into a problem and wonder if my solution is the right thing to do or if 
maybe LwIP should be changed:

I have two netifs and they are both in the same subnet.
When I create connections to other hosts on the net, they end up getting 
physically sent on the first netif because that is the first in the for loop in 
ip_route().
Now if I pull the plug on the second netif, all connections keep running, even 
the ones I bound to the IP of the second netif because the routing still is 
happy with finding the first netif as a match for the target.
All fine and dandy.
But when I pull the plug on netif one, all established connections no longer 
work and I also can't establish new ones, because the ACKs are still tried to 
be sent out on the first netif in ip_route() because even though the link is 
down, the netif is still "up", so lwip tries to send on that first one.

Now my solution is that I have a link_callback_fn that also sets netif_up() or 
netif_down() depending on how the link status changed and thus takes the netif 
"out of the routing" when its link is down.

Do you think it would make sense to also check for link down in ip_route() so 
that this scenario (which isn't really routing when both interfaces are in the 
same subnet) does work?

  /* iterate through netifs */
  for (netif = netif_list; netif != NULL; netif = netif->next) {
    /* network mask matches? */
    if ((netif_is_up(netif) && netif_is_link_up(netif))
#if LWIP_IPV6
        /* prevent using IPv6-only interfaces */
        && (!ip_addr_isany(&(netif->ip_addr)))
#endif /* LWIP_IPV6 */
        ) {
      if (ip_addr_netcmp(dest, &(netif->ip_addr), &(netif->netmask))) {
        /* return netif on which to forward IP packet */
        return netif;
      }
    }
  }

Granted that this would probably mean that packets for a network where the link 
is down are then sent on the default route which might be total nonsense...

Any ideas/comments?

Kind regards,
Fabian
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to