From owner-svn-src-user@FreeBSD.ORG Mon Mar 8 13:12:36 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 33F011065670; Mon, 8 Mar 2010 13:12:36 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 09E3A8FC15; Mon, 8 Mar 2010 13:12:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o28DCZZe001423; Mon, 8 Mar 2010 13:12:35 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o28DCZdr001421; Mon, 8 Mar 2010 13:12:35 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201003081312.o28DCZdr001421@svn.freebsd.org> From: Hiroki Sato Date: Mon, 8 Mar 2010 13:12:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r204867 - user/hrs/ipv6/usr.sbin/route6d X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Mar 2010 13:12:36 -0000 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 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;