Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Sep 2003 20:12:26 -0400
From:      "Jeff Love" <jl@burghcom.com>
To:        Mike Tancsa <mike@sentex.net>, Bruce M Simpson <bms@spc.org>
Cc:        freebsd-stable@freebsd.org
Subject:   Re:"Noroute to host after certaintime"is fxp only?
Message-ID:  <20030925001226.65003.qmail@mail.burghcom.com>
In-Reply-To: <6.0.0.22.0.20030924180553.09affbe0@209.112.4.2>
References:  <20030924205143.GF2289@pir.net> <D9F5489B-EED8-11D7-9030-000A9566C46A@we.lc.ehu.es> <6.0.0.22.0.20030924180553.09affbe0@209.112.4.2>

next in thread | previous in thread | raw e-mail | index | archive | help
Mike Tancsa writes: 

> 
> It looks like a fix just got committed into the tree. 
> 
> bms         2003/09/24 14:48:00 PDT 
> 
>   FreeBSD src repository 
> 
>   Modified files:        (Branch: RELENG_4)
>     sys/netinet          if_ether.c
>   Log:
> Fix a logic error in the check to see if arplookup() should free the 
> route. 
> 
>   Noticed by:     Mike Hogsett
>   Reviewed by:    ru 
> 
>   Revision   Changes    Path
>   1.64.2.26  +1 -1      src/sys/netinet/if_ether.c 
> 
> 
>         ---Mike 
> 
The patch provided by BMS looked exactly like the one on the security 
advisory, thus I have not applied it.
Due to the fact that this machine was not patched but was cvsup(RELENG_4_8), 
and not being able to route to any cvsup server I had to manually update 
if_ether.c 

Changed;
 ----- snip -----
      if (why) {
              if (create)
                      log(LOG_DEBUG, "arplookup %s failed: %s\n",
                          inet_ntoa(sin.sin_addr), why); 

              /* If there are no references to this route, purge it */
              if (rt->rt_refcnt <= 0 &&
                  (rt->rt_flags & RTF_WASCLONED) != RTF_WASCLONED) {
                      rtrequest(RTM_DELETE,
                                      (struct sockaddr *)rt_key(rt),
                                      rt->rt_gateway, rt_mask(rt),
                                      rt->rt_flags, 0);
              }
              return (0);
       }
       return ((struct llinfo_arp *)rt->rt_llinfo);
 }
 ----- snip -----
To;
 ----- snip -----
      if (why && create) {
              log(LOG_DEBUG, "arplookup %s failed: %s\n",
                  inet_ntoa(sin.sin_addr), why);
              return 0;
      } else if (why) {
              return 0;
       }
       return ((struct llinfo_arp *)rt->rt_llinfo);
 }
 ----- snip ----- 

I then recompiled and installed kernel. Network seems to be back in order, 
with reverted if_ether.c. I suppose I've violated my src tree with this 
edit(4.8-RELEASE-p8 with older if_ether.c), so I'll cvsup ASAP for the 
correct fix. 

Thanks for the help! 

<
< Jeff Love
< Burgh Gaming // www.burghcom.com
< MIG #1646
< 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030925001226.65003.qmail>