Date: Thu, 2 Oct 2003 11:31:48 +1000 (EST) From: Richard Perini <rpp@ci.com.au> To: FreeBSD-gnats-submit@FreeBSD.org Cc: rpp@mippet.ci.com.au Subject: bin/57484: routed not ignoring cloned routes Message-ID: <200310020131.h921Vm9Y021621@mippet.ci.com.au> Resent-Message-ID: <200310020140.h921eC7G068173@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 57484 >Category: bin >Synopsis: routed not ignoring cloned routes >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Oct 01 18:40:10 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Richard Perini >Release: CURRENT, 4-STABLE >Organization: Corinthian Engineering P/L Sydney >Environment: System: FreeBSD mippet.ci.com.au 4.7-STABLE FreeBSD 4.7-STABLE #2: Sun Feb 2 11:36:09 EST 2003 rpp@mippet.ci.com.au:/u1/usr-obj/usr/src/sys/LOCAL i386 >Description: Routed clobbers all cloned host routes in the kernel's routing table. Symptoms are: higher than normal cpu time used by routed, some network functionality relying on presence of cloned host routes fails, cloned routes absent from netstat -ra after starting routed. First noticed when FreeBSD host running routed failed to respond to a router's ICMP "Must_fragment" packet relating to a GRE tunnel having a smaller MTU size than the default 1500 mtu. >How-To-Repeat: >Fix: The following patch applied to FreeBSD 4-STABLE source fixes the problem. Similar code exists in zebra and routed for recent BSDI and NetBSD found on www.rhyolite.com, which appears to be a reference site for BSD routed(?). --- /usr/src/sbin/routed/table.c Tue Sep 30 13:12:32 2003 +++ /u1/users/rpp/src/routed/table.c Thu Oct 2 10:42:09 2003 @@ -1116,6 +1116,13 @@ if (rtm->rtm_flags & RTF_LLINFO) continue; + /* ignore cloned routes + */ +#if defined(__FreeBSD__) && defined(RTF_WASCLONED) + if (rtm->rtm_flags & RTF_WASCLONED) + continue; +#endif + /* ignore multicast addresses */ if (IN_MULTICAST(ntohl(S_ADDR(INFO_DST(&info))))) @@ -1261,6 +1268,13 @@ trace_act("ignore ARP %s", str); continue; } + +#if defined(__FreeBSD__) && defined(RTF_WASCLONED) + if (m.r.rtm.rtm_flags & RTF_WASCLONED){ + trace_act("ignore cloned route %s", str); + continue; + } +#endif if (get_info_gate(&INFO_GATE(&info), &gate_sin)) { gate = S_ADDR(INFO_GATE(&info)); >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200310020131.h921Vm9Y021621>