>Number:         145553
>Category:       bin
>Synopsis:       [patch] [sysinstall] fix default route
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Apr 09 05:31:26 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Garrett Cooper
>Release:        9-CURRENT
>Organization:
Cisco Systems, Inc.
>Environment:
FreeBSD bayonetta.local 9.0-CURRENT FreeBSD 9.0-CURRENT #3 r206173M: Mon Apr  5 
12:12:29 PDT 2010     [email protected]:/usr/obj/usr/src/sys/BAYONETTA  amd64
>Description:
If a route has already been setup, and the network interface is 
`reinitialized', the old route won't be deleted beforehand like it should, 
causing networking problems.

This fixes that.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

Index: network.c
===================================================================
--- network.c   (revision 206173)
+++ network.c   (working copy)
@@ -132,8 +132,7 @@
         */
        if (strstr(cp, "DHCP") == NULL) {
            msgDebug("Not a DHCP interface.\n");
-           i = vsystem("ifconfig %s %s", dev->name, cp);
-           if (i) {
+           if (vsystem("ifconfig %s %s", dev->name, cp) != 0) {
                msgConfirm("Unable to configure the %s interface!\n"
                           "This installation method cannot be used.",
                           dev->name);
@@ -141,12 +140,22 @@
            }
            rp = variable_get(VAR_GATEWAY);
            if (!rp || *rp == '0') {
-               msgConfirm("No gateway has been set. You may be unable to 
access hosts\n"
+               msgConfirm("No gateway has been set. You will be unable to 
access hosts\n"
                           "not on your local network");
            }
            else {
+               /* 
+                * Explicitly flush all routes to get back to a known sane
+                * state. We don't need to check this exit code because if
+                * anything fails it will show up in the route add below.
+                */
+               system("route -n flush");
                msgDebug("Adding default route to %s.\n", rp);
-               vsystem("route -n add default %s", rp);
+               if (vsystem("route -n add default %s", rp) != 0) {
+                   msgConfirm("Failed to add a default route; please check "
+                              "your network configuration");
+                   return FALSE;
+               }
            }
        } else {
            msgDebug("A DHCP interface.  Should already be up.\n");


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to