Date: Mon, 8 Mar 2010 13:12:35 +0000 (UTC) From: Hiroki Sato <hrs@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r204867 - user/hrs/ipv6/usr.sbin/route6d Message-ID: <201003081312.o28DCZdr001421@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: hrs Date: Mon Mar 8 13:12:35 2010 New Revision: 204867 URL: http://svn.freebsd.org/changeset/base/204867 Log: - Handle routes which are not marked as Qflag again. - Ignore routes of !RTF_GATEWAY && !RTF_HOST && !RTF_STATIC. - Add sleep(1) between NET_RT_DUMP retries. Modified: user/hrs/ipv6/usr.sbin/route6d/route6d.c Modified: user/hrs/ipv6/usr.sbin/route6d/route6d.c ============================================================================== --- user/hrs/ipv6/usr.sbin/route6d/route6d.c Mon Mar 8 11:27:39 2010 (r204866) +++ user/hrs/ipv6/usr.sbin/route6d/route6d.c Mon Mar 8 13:12:35 2010 (r204867) @@ -79,6 +79,7 @@ static const char _rcsid[] = "$KAME: rou #include "route6d.h" #define MAXFILTER 40 +#define RT_DUMP_MAXRETRY 15 #ifdef DEBUG #define INIT_INTERVAL6 6 @@ -2702,6 +2703,8 @@ krtread(again) mib[4] = NET_RT_DUMP; /* Dump the kernel routing table */ mib[5] = 0; /* No flags */ do { + if (retry) + sleep(1); retry++; errmsg = NULL; if (buf) @@ -2718,7 +2721,7 @@ krtread(again) errmsg = "sysctl NET_RT_DUMP"; continue; } - } while (retry < 15 && errmsg != NULL); + } while (retry < RT_DUMP_MAXRETRY && errmsg != NULL); if (errmsg) { fatal("%s (with %d retries, msize=%lu)", errmsg, retry, (u_long)msize); @@ -2760,16 +2763,8 @@ rt_entry(rtm, again) if (rtm->rtm_flags & RTF_CLONED) return; #endif - /* Ignore RTF_PROTO<num> mismached routes */ - /* - * XXX: can we know if it is a connected network route or not? - * RTF_WASCLONED was the flag for that, but we no longer - * use it. Rely on Qflag instead here. - */ - if (Qflag && !(rtm->rtm_flags & Qflag)) - return; /* XXX: Ignore connected routes. */ - if (!(rtm->rtm_flags & RTF_GATEWAY)) + if (!(rtm->rtm_flags & (RTF_GATEWAY|RTF_HOST|RTF_STATIC))) return; /* * do not look at dynamic routes. @@ -3006,6 +3001,7 @@ delroute(np, gw) rtm->rtm_seq = ++seq; rtm->rtm_pid = pid; rtm->rtm_flags = RTF_UP | RTF_GATEWAY; + rtm->rtm_flags |= Qflag; if (np->rip6_plen == sizeof(struct in6_addr) * 8) rtm->rtm_flags |= RTF_HOST; rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003081312.o28DCZdr001421>