diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-08-01 00:45:00 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-08-01 00:45:00 +0000 |
commit | b7aa65139c73e49878ca431bcfc4a3695d9ec2c4 (patch) | |
tree | 2a56c7070bbb84a6290abf7cf8911af7a5b8c009 | |
parent | 0d3531d9982bd628b41e7388ef45ee43cf4fd8b4 (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/ChangeLog | 7 | ||||
-rw-r--r-- | cpukit/libnetworking/rtems/rtems_glue.c | 6 |
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); |