From e854d0d71ea957d0fac78135bb67d1a0c70eeb2b Mon Sep 17 00:00:00 2001 From: Roy Li Date: Mon, 4 Nov 2013 11:31:50 +0800 Subject: quagga: backport a patch from 0.99.22 to fix "no ip address" command Signed-off-by: Roy Li Signed-off-by: Joe MacDonald --- ...ingering-IP-address-after-deletion-BZ-486.patch | 64 ++++++++++++++++++++++ .../recipes-protocols/quagga/quagga_0.99.21.bb | 3 +- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 meta-networking/recipes-protocols/quagga/files/lingering-IP-address-after-deletion-BZ-486.patch (limited to 'meta-networking/recipes-protocols') diff --git a/meta-networking/recipes-protocols/quagga/files/lingering-IP-address-after-deletion-BZ-486.patch b/meta-networking/recipes-protocols/quagga/files/lingering-IP-address-after-deletion-BZ-486.patch new file mode 100644 index 0000000000..42bdc20fcb --- /dev/null +++ b/meta-networking/recipes-protocols/quagga/files/lingering-IP-address-after-deletion-BZ-486.patch @@ -0,0 +1,64 @@ +From 7f062c217b262e362a3362c677dea6c5e820adf1 Mon Sep 17 00:00:00 2001 +From: David Lamparter +Date: Mon, 1 Feb 2010 16:41:26 +0100 +Subject: [PATCH] zebra: lingering IP address after deletion (BZ#486) + +Upstream-status: Backport + +zebra address bookkeeping is a mess. this is just a workaround to have +IPv4 address deletion somewhat working on Linux. + +the if_unset_prefix call is synchronous, when it returns success the +address deletion completed successfully. this is either signaled by a +netlink ACK or by an OK return value from ioctl(). + +This version is wrapped by #ifdef HAVE_NETLINK so we don't touch the +BSDs for now. + +* zebra/interface.c: On Linux, update zebra internal state after + deleting an address. + +Signed-off-by: David Lamparter +--- + zebra/interface.c | 21 ++++++++++++++++++--- + 1 file changed, 18 insertions(+), 3 deletions(-) + +diff --git a/zebra/interface.c b/zebra/interface.c +index 2242259..3578b79 100644 +--- a/zebra/interface.c ++++ b/zebra/interface.c +@@ -1297,13 +1297,28 @@ ip_address_uninstall (struct vty *vty, struct interface *ifp, + safe_strerror(errno), VTY_NEWLINE); + return CMD_WARNING; + } ++ /* success! call returned that the address deletion went through. ++ * this is a synchronous operation, so we know it succeeded and can ++ * now update all internal state. */ ++ ++ /* the HAVE_NETLINK check is only here because, on BSD, although the ++ * call above is still synchronous, we get a second confirmation later ++ * through the route socket, and we don't want to touch that behaviour ++ * for now. It should work without the #ifdef, but why take the risk... ++ * -- equinox 2012-07-13 */ ++#ifdef HAVE_NETLINK ++ ++ /* Remove connected route. */ ++ connected_down_ipv4 (ifp, ifc); + +-#if 0 + /* Redistribute this information. */ + zebra_interface_address_delete_update (ifp, ifc); + +- /* Remove connected route. */ +- connected_down_ipv4 (ifp, ifc); ++ /* IP address propery set. */ ++ UNSET_FLAG (ifc->conf, ZEBRA_IFC_REAL); ++ ++ /* remove from interface, remark secondaries */ ++ if_subnet_delete (ifp, ifc); + + /* Free address information. */ + listnode_delete (ifp->connected, ifc); +-- +1.7.10.4 + diff --git a/meta-networking/recipes-protocols/quagga/quagga_0.99.21.bb b/meta-networking/recipes-protocols/quagga/quagga_0.99.21.bb index 2b46930078..10740bc802 100644 --- a/meta-networking/recipes-protocols/quagga/quagga_0.99.21.bb +++ b/meta-networking/recipes-protocols/quagga/quagga_0.99.21.bb @@ -2,7 +2,8 @@ require quagga.inc PR = "${INC_PR}.0" -SRC_URI += "file://0001-doc-fix-makeinfo-errors-and-one-warning.patch" +SRC_URI += "file://0001-doc-fix-makeinfo-errors-and-one-warning.patch \ + file://lingering-IP-address-after-deletion-BZ-486.patch" SRC_URI[quagga-0.99.21.md5sum] = "99840adbe57047c90dfba6b6ed9aec7f" SRC_URI[quagga-0.99.21.sha256sum] = "9b8aea9026b4771a28e254a66cbd854723bcd0d71eebd0201d11838d4eb392ee" -- cgit 1.2.3-korg