On 24.04.2013 22:30, Randall Stewart wrote:
Author: rrs
Date: Wed Apr 24 18:30:32 2013
New Revision: 249848
URL: http://svnweb.freebsd.org/changeset/base/249848

Log:
   This fixes the issue with the "randomly changing" default
   route. What it was is there are two places in ip_output.c
   where we do a goto again. One place was fine, it
   copies out the new address and then resets dst = ro->rt_dst;
   But the other place does *not* do that, which means earlier
   when we found the gateway, we have dst pointing there
   aka dst = ro->rt_gateway is done.. then we do a
   goto again.. bam now we clobber the default route.
The fix is just to move the again so we are always
   doing dst = &ro->rt_dst; in the again loop.
Wow. Great job! Thanks!
PR: 174749,157796
   MFC after:   1 week

Modified:
   head/sys/netinet/ip_output.c

Modified: head/sys/netinet/ip_output.c
==============================================================================
--- head/sys/netinet/ip_output.c        Wed Apr 24 18:00:28 2013        
(r249847)
+++ head/sys/netinet/ip_output.c        Wed Apr 24 18:30:32 2013        
(r249848)
@@ -196,8 +196,8 @@ ip_output(struct mbuf *m, struct mbuf *o
                hlen = ip->ip_hl << 2;
        }
- dst = (struct sockaddr_in *)&ro->ro_dst;
  again:
+       dst = (struct sockaddr_in *)&ro->ro_dst;
        ia = NULL;
        /*
         * If there is a cached route,


_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to