diff options
Diffstat (limited to 'main/opennhrp')
-rw-r--r-- | main/opennhrp/0001-netlink-ignore-kernel-routes-for-GRE-interfaces.patch | 54 | ||||
-rw-r--r-- | main/opennhrp/APKBUILD | 4 |
2 files changed, 57 insertions, 1 deletions
diff --git a/main/opennhrp/0001-netlink-ignore-kernel-routes-for-GRE-interfaces.patch b/main/opennhrp/0001-netlink-ignore-kernel-routes-for-GRE-interfaces.patch new file mode 100644 index 0000000000..78cf3f89b4 --- /dev/null +++ b/main/opennhrp/0001-netlink-ignore-kernel-routes-for-GRE-interfaces.patch @@ -0,0 +1,54 @@ +From 7747c86253114ed9702346a93587e4e6cac444aa Mon Sep 17 00:00:00 2001 +From: David Ward <david.ward@ll.mit.edu> +Date: Tue, 29 Mar 2011 22:43:03 -0400 +Subject: [PATCH] netlink: ignore kernel routes for GRE interfaces + +The kernel route should not be added as a peer, except on shortcut- +destination interfaces. It can prevent NHRP resolution requests from +being routed correctly to a statically-configured next hop server. + +Signed-off-by: David Ward <david.ward@ll.mit.edu> +--- + nhrp/sysdep_netlink.c | 9 ++++----- + 1 files changed, 4 insertions(+), 5 deletions(-) + +diff --git a/nhrp/sysdep_netlink.c b/nhrp/sysdep_netlink.c +index a76acc2..e3e588b 100644 +--- a/nhrp/sysdep_netlink.c ++++ b/nhrp/sysdep_netlink.c +@@ -691,7 +691,8 @@ static void netlink_route_new(struct nlmsghdr *msg) + } else if (iface->flags & NHRP_INTERFACE_FLAG_CONFIGURED) { + /* Routes which might get additional outbound + * shortcuts */ +- if (rtm->rtm_table != iface->route_table) ++ if (rtm->rtm_table != iface->route_table || ++ rtm->rtm_protocol == RTPROT_KERNEL) + return; + type = NHRP_PEER_TYPE_LOCAL_ROUTE; + } +@@ -728,12 +729,9 @@ static void netlink_route_del(struct nlmsghdr *msg) + if (rta[RTA_OIF] == NULL || rta[RTA_DST] == NULL) + return; + +- /* Consider only routes from main table */ + if (rtm->rtm_family != PF_INET) + return; + +- /* Only consider routes for local interfaces that accept +- * shortcut connections */ + iface = nhrp_interface_get_by_index(*(int*)RTA_DATA(rta[RTA_OIF]), + FALSE); + if (iface == NULL) +@@ -747,7 +745,8 @@ static void netlink_route_del(struct nlmsghdr *msg) + } else if (iface->flags & NHRP_INTERFACE_FLAG_CONFIGURED) { + /* Routes which might get additional outbound + * shortcuts */ +- if (rtm->rtm_table != iface->route_table) ++ if (rtm->rtm_table != iface->route_table || ++ rtm->rtm_protocol == RTPROT_KERNEL) + return; + type = NHRP_PEER_TYPE_LOCAL_ROUTE; + } +-- +1.7.1 + diff --git a/main/opennhrp/APKBUILD b/main/opennhrp/APKBUILD index 02dc7f6245..610fd53db6 100644 --- a/main/opennhrp/APKBUILD +++ b/main/opennhrp/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=opennhrp pkgver=0.12.1 -pkgrel=0 +pkgrel=1 pkgdesc="NBMA Next Hop Resolution Protocol daemon" url="http://sourceforge.net/projects/opennhrp" arch="all" @@ -10,6 +10,7 @@ depends= makedepends="c-ares-dev" subpackages="$pkgname-doc" source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2 + 0001-netlink-ignore-kernel-routes-for-GRE-interfaces.patch opennhrp-0.9.3-peer-up-bgp.patch $pkgname.initd $pkgname.confd @@ -33,6 +34,7 @@ package() { install -Dm644 "$srcdir"/opennhrp.confd "$pkgdir"/etc/conf.d/opennhrp } md5sums="31ada6dede3c62dac491002624d34778 opennhrp-0.12.1.tar.bz2 +d6dbf1ac009615cea63e0ede894133a0 0001-netlink-ignore-kernel-routes-for-GRE-interfaces.patch f81539fc92800bb79668dda119a97d1d opennhrp-0.9.3-peer-up-bgp.patch ae65f88ccf849ef882669a8b4f0c7fc0 opennhrp.initd 8eee86233728dc0d156bbfee6d98f338 opennhrp.confd" |