summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-08-01 00:45:00 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-08-01 00:45:00 +0000
commitb7aa65139c73e49878ca431bcfc4a3695d9ec2c4 (patch)
tree2a56c7070bbb84a6290abf7cf8911af7a5b8c009
parent0d3531d9982bd628b41e7388ef45ee43cf4fd8b4 (diff)
2007-07-31 Joel Sherrill <joel.sherrill@OARcorp.com>
PR 1248/networking * rtems/rtems_glue.c: Luke Stras <luke@spacequest.com> reported that when no interfaces are successfully attached, the default route is broken and may result in a jump to an illegal address.
-rw-r--r--cpukit/libnetworking/ChangeLog7
-rw-r--r--cpukit/libnetworking/rtems/rtems_glue.c6
2 files changed, 12 insertions, 1 deletions
diff --git a/cpukit/libnetworking/ChangeLog b/cpukit/libnetworking/ChangeLog
index 0b4ec379c3..937953fe9d 100644
--- a/cpukit/libnetworking/ChangeLog
+++ b/cpukit/libnetworking/ChangeLog
@@ -1,3 +1,10 @@
+2007-07-31 Joel Sherrill <joel.sherrill@OARcorp.com>
+
+ PR 1248/networking
+ * rtems/rtems_glue.c: Luke Stras <luke@spacequest.com> reported that
+ when no interfaces are successfully attached, the default route is
+ broken and may result in a jump to an illegal address.
+
2005-05-20 Sergei Organov <osv@javad.ru>
PR networking/772.
diff --git a/cpukit/libnetworking/rtems/rtems_glue.c b/cpukit/libnetworking/rtems/rtems_glue.c
index 85224086e4..0b455b7982 100644
--- a/cpukit/libnetworking/rtems/rtems_glue.c
+++ b/cpukit/libnetworking/rtems/rtems_glue.c
@@ -762,6 +762,7 @@ in_cksum_hdr (const void *ip)
rtems_unsigned32 sum;
const rtems_unsigned16 *sp;
int i;
+ int any_if_configured = 0;
sum = 0;
sp = (rtems_unsigned16 *)ip;
@@ -882,6 +883,9 @@ rtems_bsdnet_setup (void)
printf ("Can't read %s flags: %s\n", ifp->name, strerror (errno));
continue;
}
+
+ any_if_configured = 1;
+
if (flags & IFF_BROADCAST) {
memset (&broadcast, '\0', sizeof broadcast);
broadcast.sin_len = sizeof broadcast;
@@ -903,7 +907,7 @@ rtems_bsdnet_setup (void)
/*
* Set default route
*/
- if (rtems_bsdnet_config.gateway) {
+ if (rtems_bsdnet_config.gateway && any_if_configured) {
address.sin_addr.s_addr = INADDR_ANY;
netmask.sin_addr.s_addr = INADDR_ANY;
memset (&gateway, '\0', sizeof gateway);