diff options
| author | Marty Connor | 2007-07-03 19:20:54 +0200 |
|---|---|---|
| committer | Marty Connor | 2007-07-03 19:20:54 +0200 |
| commit | 4bcfe7507b322bb5ed2faf11e3b6f1cf1abc83ae (patch) | |
| tree | 38fdcad21781be96a85713753594acab6aa88224 /src/net | |
| parent | Warnings purge: src/{crypto,hci,net} (diff) | |
| parent | Implemented (untested) PXENV_START_UNDI. (diff) | |
| download | ipxe-4bcfe7507b322bb5ed2faf11e3b6f1cf1abc83ae.tar.gz ipxe-4bcfe7507b322bb5ed2faf11e3b6f1cf1abc83ae.tar.xz ipxe-4bcfe7507b322bb5ed2faf11e3b6f1cf1abc83ae.zip | |
Merge branch 'master' of /pub/scm/gpxe
Diffstat (limited to 'src/net')
| -rw-r--r-- | src/net/ipv4.c | 8 | ||||
| -rw-r--r-- | src/net/netdevice.c | 10 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/net/ipv4.c b/src/net/ipv4.c index e1219edb6..35341b3d7 100644 --- a/src/net/ipv4.c +++ b/src/net/ipv4.c @@ -141,12 +141,20 @@ void del_ipv4_address ( struct net_device *netdev ) { * @v dest Final destination address * @ret dest Next hop destination address * @ret miniroute Routing table entry to use, or NULL if no route + * + * If the route requires use of a gateway, the next hop destination + * address will be overwritten with the gateway address. */ static struct ipv4_miniroute * ipv4_route ( struct in_addr *dest ) { struct ipv4_miniroute *miniroute; int local; int has_gw; + /* Never attempt to route the broadcast address */ + if ( dest->s_addr == INADDR_BROADCAST ) + return NULL; + + /* Find first usable route in routing table */ list_for_each_entry ( miniroute, &ipv4_miniroutes, list ) { local = ( ( ( dest->s_addr ^ miniroute->address.s_addr ) & miniroute->netmask.s_addr ) == 0 ); diff --git a/src/net/netdevice.c b/src/net/netdevice.c index 8a0991079..971830d97 100644 --- a/src/net/netdevice.c +++ b/src/net/netdevice.c @@ -356,15 +356,17 @@ struct net_device * find_netdev ( const char *name ) { /** * Get network device by PCI bus:dev.fn address * - * @v busdevfn PCI bus:dev.fn address + * @v bus_type Bus type + * @v location Bus location * @ret netdev Network device, or NULL */ -struct net_device * find_pci_netdev ( unsigned int busdevfn ) { +struct net_device * find_netdev_by_location ( unsigned int bus_type, + unsigned int location ) { struct net_device *netdev; list_for_each_entry ( netdev, &net_devices, list ) { - if ( ( netdev->dev->desc.bus_type == BUS_TYPE_PCI ) && - ( netdev->dev->desc.location == busdevfn ) ) + if ( ( netdev->dev->desc.bus_type == bus_type ) && + ( netdev->dev->desc.location == location ) ) return netdev; } |
