From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.windriver.com (mail.windriver.com [147.11.1.11]) by mail.openembedded.org (Postfix) with ESMTP id BF9A76D323 for ; Thu, 24 Oct 2013 09:31:30 +0000 (UTC) Received: from ALA-HCA.corp.ad.wrs.com (ala-hca.corp.ad.wrs.com [147.11.189.40]) by mail.windriver.com (8.14.5/8.14.3) with ESMTP id r9O9VWAq000996 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL) for ; Thu, 24 Oct 2013 02:31:32 -0700 (PDT) Received: from [128.224.162.168] (128.224.162.168) by ALA-HCA.corp.ad.wrs.com (147.11.189.50) with Microsoft SMTP Server id 14.2.347.0; Thu, 24 Oct 2013 02:31:32 -0700 Message-ID: <5268E8F4.3040409@windriver.com> Date: Thu, 24 Oct 2013 17:31:32 +0800 From: Rongqing Li User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130623 Thunderbird/17.0.7 MIME-Version: 1.0 To: Xufeng Zhang References: <1382607271-6152-1-git-send-email-xufeng.zhang@windriver.com> In-Reply-To: <1382607271-6152-1-git-send-email-xufeng.zhang@windriver.com> Cc: openembedded-core@lists.openembedded.org Subject: Re: [PATCH] quagga/ripd: Fix two bugs after received SIGHUP signal X-BeenThere: openembedded-core@lists.openembedded.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Patches and discussions about the oe-core layer List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Oct 2013 09:31:31 -0000 Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit You should send it to openembedded-devel@lists.openembedded.org and with title [PATCH meta-networking] On 10/24/2013 05:34 PM, Xufeng Zhang wrote: > There are two problems for ripd implementation after received > SIGHUP signal: > 1). ripd didn't clean up ifp->connected list before reload > configuration file which makes the same advertise packet > being sent multiple times(depends on how many SIGHUP was recieved). > 2). ripd reset ri->split_horizon flag to RIP_NO_SPLIT_HORIZON > during restart which is different from the flag when ripd is > firstly started up, leading to unnecessary route to be advertised. > > [YOCTO #5266] > [ CQID: WIND00372703 ] Romve CQID Thanks -Roy > > Signed-off-by: Xufeng Zhang > --- > .../ripd-fix-two-bugs-after-received-SIGHUP.patch | 49 ++++++++++++++++++++ > .../recipes-protocols/quagga/quagga.inc | 3 +- > 2 files changed, 51 insertions(+), 1 deletions(-) > create mode 100644 meta-networking/recipes-protocols/quagga/files/ripd-fix-two-bugs-after-received-SIGHUP.patch > > diff --git a/meta-networking/recipes-protocols/quagga/files/ripd-fix-two-bugs-after-received-SIGHUP.patch b/meta-networking/recipes-protocols/quagga/files/ripd-fix-two-bugs-after-received-SIGHUP.patch > new file mode 100644 > index 0000000..c081143 > --- /dev/null > +++ b/meta-networking/recipes-protocols/quagga/files/ripd-fix-two-bugs-after-received-SIGHUP.patch > @@ -0,0 +1,49 @@ > +ripd: Fix two bugs after received SIGHUP signal > + > +There are two problems for ripd implementation after received > +SIGHUP signal: > +1). ripd didn't clean up ifp->connected list before reload > + configuration file. > +2). ripd reset ri->split_horizon flag to RIP_NO_SPLIT_HORIZON > + which lead to the unnecessary route to be advertised. > + > +Upstream-Status: Pending > + > +Signed-off-by: Xufeng Zhang > +--- > +--- a/ripd/rip_interface.c > ++++ b/ripd/rip_interface.c > +@@ -500,6 +500,8 @@ > + struct listnode *node; > + struct interface *ifp; > + struct rip_interface *ri; > ++ struct connected *ifc; > ++ struct listnode *conn_node, *next; > + > + for (ALL_LIST_ELEMENTS_RO (iflist, node, ifp)) > + { > +@@ -514,6 +516,13 @@ > + thread_cancel (ri->t_wakeup); > + ri->t_wakeup = NULL; > + } > ++ > ++ for (conn_node = listhead (ifp->connected); conn_node; conn_node = next) > ++ { > ++ ifc = listgetdata (conn_node); > ++ next = conn_node->next; > ++ listnode_delete (ifp->connected, ifc); > ++ } > + } > + } > + > +@@ -548,8 +557,8 @@ > + ri->key_chain = NULL; > + } > + > +- ri->split_horizon = RIP_NO_SPLIT_HORIZON; > +- ri->split_horizon_default = RIP_NO_SPLIT_HORIZON; > ++ ri->split_horizon = RIP_SPLIT_HORIZON; > ++ ri->split_horizon_default = RIP_SPLIT_HORIZON; > + > + ri->list[RIP_FILTER_IN] = NULL; > + ri->list[RIP_FILTER_OUT] = NULL; > diff --git a/meta-networking/recipes-protocols/quagga/quagga.inc b/meta-networking/recipes-protocols/quagga/quagga.inc > index 89b9f7a..bf37067 100644 > --- a/meta-networking/recipes-protocols/quagga/quagga.inc > +++ b/meta-networking/recipes-protocols/quagga/quagga.inc > @@ -31,7 +31,8 @@ SRC_URI = "http://download.savannah.gnu.org/releases/quagga${QUAGGASUBDIR}/quagg > file://quagga.default \ > file://watchquagga.init \ > file://watchquagga.default \ > - file://volatiles.03_quagga" > + file://volatiles.03_quagga \ > + file://ripd-fix-two-bugs-after-received-SIGHUP.patch" > > PACKAGECONFIG ??= "" > PACKAGECONFIG[cap] = "--enable-capabilities,--disable-capabilities,libcap" > -- Best Reagrds, Roy | RongQing Li