From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-we0-x229.google.com (mail-we0-x229.google.com [IPv6:2a00:1450:400c:c03::229]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id C3B3B21F107 for ; Wed, 24 Apr 2013 06:27:08 -0700 (PDT) Received: by mail-we0-f169.google.com with SMTP id p43so1677599wea.0 for ; Wed, 24 Apr 2013 06:27:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:message-id:date:from:user-agent:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=6b9EUNPg7EZgaWLcjkDljrvcaSmr+9Hb0zATxDL8kjA=; b=rvFtfUNlrxKxWFaVU+M4Ik/wVhkWOdrQnN4PhtUbzQLCUxlwMUe5S4I1BgqlEB9tiV vvZi11jaJ1JlSkcTZDT78rgRVMmqw3ZG7UNTek2HHezzS+tXgi5rTn8p2kV+0tEFb/OT z6E9w44TjRJLPS4WItnQViH4ciC9CabZ2ybiUQ9ig0rYWy8m4+DWlYVkyUr8A0Agcjqa tT/LfGYbsBrMpSdDKSliNRrII7PX0Ocj7dv049LE9202eBl5hggJTh8tOGIQcdEugtaG xSEAV2UnPXEdDXlhdMcx3UDgB6swiwPc41FkC2ZtbNesPNSqGzLXIpMWnrruXnsV4gZA jkww== X-Received: by 10.180.107.6 with SMTP id gy6mr30534179wib.22.1366810026090; Wed, 24 Apr 2013 06:27:06 -0700 (PDT) Received: from ?IPv6:2001:470:6aac:1::783c:88e8? ([2001:470:6aac:1::783c:88e8]) by mx.google.com with ESMTPSA id ej8sm32410180wib.9.2013.04.24.06.27.05 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 24 Apr 2013 06:27:05 -0700 (PDT) Message-ID: <5177DDA8.8010801@gmail.com> Date: Wed, 24 Apr 2013 14:27:04 +0100 From: Robert Bradley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130329 Thunderbird/17.0.5 MIME-Version: 1.0 To: cerowrt-devel@lists.bufferbloat.net References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Cerowrt-devel] atomic route updates? X-BeenThere: cerowrt-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Development issues regarding the cerowrt test router project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Apr 2013 13:27:09 -0000 On 20/04/13 10:56, Dave Taht wrote: > iproute2's ip/iproute2.c code has a function called iproute_modify, > which to a blurring eye appears to be capable of doing an atomic route > update via it's netlink interface. > > " if (matches(*argv, "change") == 0 || strcmp(*argv, "chg") == 0) > return iproute_modify(RTM_NEWROUTE, NLM_F_REPLACE, > argc-1, argv+1); > if (matches(*argv, "replace") == 0) > return iproute_modify(RTM_NEWROUTE, NLM_F_CREATE|NLM_F_REPLACE, > argc-1, argv+1);" > > The babel native daemon and the quagga-re code, however, does a > delete/add, which results in packets dropping on the floor when a > route changes. > I think quagga-RE would take a lot of work, as you'd need to teach it about modifying routes. The standalone babeld looks promising though, and I have a basic patch up on GitHub (git://github.com/rb12345/babeld.git). One issue is that it seems difficult to actually flush the IPv6 route cache, at least on Ubuntu, as writes to /proc/sys/net/ipv6/route/flush appear to be ignored. The iproute2 approach is to query all cached routes and misuse its internal print_route function to remove each route when flushing the IPv6 cache. At the moment, the code compiles fine, and I am in the process of testing it here. -- Robert Bradley