http://git.etherboot.org
/
people
/
sha0
/
gpxe.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
adb3dd0
)
Never attempt to route the broadcast address.
author
Michael Brown
<mcb30@etherboot.org>
Tue, 3 Jul 2007 12:55:45 +0000
(13:55 +0100)
committer
Michael Brown
<mcb30@etherboot.org>
Tue, 3 Jul 2007 12:55:45 +0000
(13:55 +0100)
src/net/ipv4.c
patch
|
blob
|
history
diff --git
a/src/net/ipv4.c
b/src/net/ipv4.c
index
e1219ed
..
35341b3
100644
(file)
--- 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
* @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;
*/
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 );
list_for_each_entry ( miniroute, &ipv4_miniroutes, list ) {
local = ( ( ( dest->s_addr ^ miniroute->address.s_addr )
& miniroute->netmask.s_addr ) == 0 );