mirror of https://github.com/ipxe/ipxe.git
[ipv4] Ignore non-open net devices when performing routing
We do not discard routing table entries when closing an interface. It is plausible that multiple interfaces may be on the same physical network; if so, then we may end up in a situation whereby outbound packets attempt to route via a closed interface. Fix by ignoring non-open net devices in ipv4_route().pull/1/head
parent
55d23b19a2
commit
4933ccbf65
|
@ -118,6 +118,8 @@ static struct ipv4_miniroute * ipv4_route ( struct in_addr *dest ) {
|
||||||
|
|
||||||
/* Find first usable route in routing table */
|
/* Find first usable route in routing table */
|
||||||
list_for_each_entry ( miniroute, &ipv4_miniroutes, list ) {
|
list_for_each_entry ( miniroute, &ipv4_miniroutes, list ) {
|
||||||
|
if ( ! ( miniroute->netdev->state & NETDEV_OPEN ) )
|
||||||
|
continue;
|
||||||
local = ( ( ( dest->s_addr ^ miniroute->address.s_addr )
|
local = ( ( ( dest->s_addr ^ miniroute->address.s_addr )
|
||||||
& miniroute->netmask.s_addr ) == 0 );
|
& miniroute->netmask.s_addr ) == 0 );
|
||||||
has_gw = ( miniroute->gateway.s_addr );
|
has_gw = ( miniroute->gateway.s_addr );
|
||||||
|
|
Loading…
Reference in New Issue