Commit dc926e85 authored by Timo Teräs's avatar Timo Teräs

main/quagga-nhrp: backport from edge

parent 48b5a55e
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=quagga-nhrp
pkgver=0.99.24.1_git20150703
_commitid=04bd757045dd1c09dec133115d3e8620985b4a00
pkgrel=0
pkgdesc="A free routing daemon replacing Zebra supporting RIP, OSPF, BGP and NHRP."
url="http://git.alpinelinux.org/cgit/user/tteras/quagga/commit/?h=nhrp"
arch="all"
license="GPL-2"
depends="iproute2"
makedepends="gawk texinfo perl autoconf automake libtool c-ares-dev
linux-headers readline-dev ncurses-dev net-snmp-dev libcap-dev"
provides="quagga=0.99"
install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade"
subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg"
pkgusers="quagga"
pkggroups="quagga"
source="quagga-nhrp-$pkgver.tar.bz2::http://git.alpinelinux.org/cgit/user/tteras/quagga/snapshot/quagga-$_commitid.tar.bz2
bgpd-route-selection-crash.patch
dont-hook-core-signals.patch
bgpd.initd
zebra.initd
zebra.confd
"
_builddir="$srcdir"/quagga-$_commitid
prepare() {
cd "$_builddir"
for i in $source; do
case $i in
*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
esac
done
./bootstrap.sh || return 1
}
build() {
cd "$_builddir"
quagga_cv_ipforward_method=proc \
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--disable-static \
--enable-ospf6d \
--enable-rtadv \
--enable-user=quagga \
--enable-group=quagga \
--enable-vty-group=quagga \
--enable-vtysh \
--enable-snmp \
--enable-multipath=64 \
--enable-pimd \
--sysconfdir=/etc/quagga \
--enable-exampledir=/usr/share/doc/quagga/ \
--localstatedir=/var/run/quagga \
|| return 1
# add CFLAGS to work around textrel issue
make CFLAGS+="-fPIC" || return 1
}
package() {
cd "$_builddir"
make DESTDIR="$pkgdir" install || return 1
rm "$pkgdir"/usr/lib/*.la || return 1
install -o quagga -g quagga -d "$pkgdir"/var/run/quagga
for i in zebra bgpd; do
install -Dm755 "$srcdir"/$i.initd "$pkgdir"/etc/init.d/$i
done
for i in ripd ospfd ripngd ospf6d nhrpd; do
ln -s bgpd "$pkgdir"/etc/init.d/$i || return 1
done
install -Dm644 "$srcdir/zebra.confd" "$pkgdir"/etc/conf.d/zebra
install -o quagga -g quagga -d -m755 "$pkgdir"/etc/quagga
}
md5sums="dbc883c35f149f44f93bfaab5108830b quagga-nhrp-0.99.24.1_git20150703.tar.bz2
10c9c745f2f9fdd1d81a4100d44e3313 bgpd-route-selection-crash.patch
1224ba91ea6b6e81f583bad7813aba98 dont-hook-core-signals.patch
09a77e2e84e71c43f5a449738c026261 bgpd.initd
916f1dd1a286ee7b862cda4fe56cbf21 zebra.initd
34e06a1d2bc602ce691abc9ed169dd15 zebra.confd"
sha256sums="fd1a57c0ff8662953b4deddb52f074254ca3ccd98f912a4904540292cb18dd7c quagga-nhrp-0.99.24.1_git20150703.tar.bz2
d8d65cc092cf7644b059d4c1b789b223482b0f50ba2cc891da4d71fe083f8cc0 bgpd-route-selection-crash.patch
4b71588e34ac14f8d6e72e6064b5e4ec302f286ebbe43df94c97411cceb66a23 dont-hook-core-signals.patch
aab037454c6a70cd5cb45e14c47b7dfea358f8d81c7d12418edcf7e58a86c679 bgpd.initd
c1d7526581927e990e687cbd5d08447eb060f76a439475572785b5b90c60c460 zebra.initd
f7a52d383f60270a5a8fee5d4ac522c5c0ec2b7c4b5252cff54e260f32d9b323 zebra.confd"
sha512sums="a4b6f9838d838a1dce9f9a308b2b0036dbf9e8272cfe2b865f3283d9fd2f500383a09df1734e921ba4c20c2b65de903ef925efb79419d20481d8b4342418a1b1 quagga-nhrp-0.99.24.1_git20150703.tar.bz2
3317554cc2470f12eb6694f2ada187be4ccc45976ebf09aa487634bbd7a4820a917f3c202bb9d4736771adf33e5eafa45f7bb8dadd2e9872d5fe7885261714b5 bgpd-route-selection-crash.patch
5ef5c5e6d70d991b33b13a062e25b6fbde395dceee36aea29384b0640a48d2957ed5f50d416a1f2f770bf69bae2340133e35b1114be7e1fa722eb6d3d021f37a dont-hook-core-signals.patch
13b5b57e10df013bd2d931abc49bf76b8c4dee59dbceab22c9f151ccb988b2c5f7167f2909027d5e0f990b59da8de115667b02484aee9a67d347625700f6cacd bgpd.initd
1638a4a64ffd066b1884f7e5a4243edab68739aabd83bd35ea8c9608af7b8623eece1d59fb08feead84e4386b6d1da4220764ccf5fd7f2a9959a8470d5cce86a zebra.initd
900972c6f98e561dfacf384111251db262326e8764b8c763a5ef639fa11c7949c03eef5e3bce324a4b1964fe45416d2db74ae1b6bc967f7d4ba48c2eeda017c4 zebra.confd"
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 34ba1ab..7ade22f 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -553,6 +553,11 @@ bgp_info_cmp (struct bgp *bgp, struct bgp_info *new, struct bgp_info *exist,
return 0;
/* 13. Neighbor address comparision. */
+ if (new->peer->su_remote == NULL)
+ return 0;
+ if (exist->peer->su_remote == NULL)
+ return 1;
+
ret = sockunion_cmp (new->peer->su_remote, exist->peer->su_remote);
if (ret == 1)
#!/sbin/openrc-run
piddir=/var/run/quagga
pidfile=$piddir/$SVCNAME.pid
command=/usr/sbin/$SVCNAME
command_args="-d -f /etc/quagga/$SVCNAME.conf --pid_file $pidfile"
depend() {
need net zebra
after firewall opennhrp
}
start_pre() {
if ! [ -e /etc/quagga/$SVCNAME.conf ] ; then
eerror "You need to create /etc/quagga/$SVCNAME.conf first."
eerror "An example can be found in /usr/share/doc/quagga/$SVCNAME.conf.sample"
eerror "from quagga-doc package"
return 1
fi
checkpath --owner quagga:quagga --directory $piddir
}
diff --git a/lib/sigevent.c b/lib/sigevent.c
index c80a729..1221c25 100644
--- a/lib/sigevent.c
+++ b/lib/sigevent.c
@@ -244,6 +244,7 @@ static void
trap_default_signals(void)
{
static const int core_signals[] = {
+#if 0
SIGQUIT,
SIGILL,
#ifdef SIGEMT
@@ -261,6 +262,7 @@ trap_default_signals(void)
#ifdef SIGXFSZ
SIGXFSZ,
#endif
+#endif
};
static const int exit_signals[] = {
SIGHUP,
#!/bin/sh
# early quaggas had an entry in ld.so.conf. We dont need it anymore
if [ -r /etc/ld.so.conf ]; then
sed -i -e '/usr\/lib\/quagga/d' /etc/ld.so.conf
# remove if zero sized
[ -s /etc/ld.so.conf ] || rm /etc/ld.so.conf
fi
exit 0
quagga-nhrp.post-install
\ No newline at end of file
#!/bin/sh
addgroup -S quagga 2>/dev/null
adduser -S -h /var/run/quagga -s /sbin/nologin -D -G quagga quagga 2>/dev/null
exit 0
# Additional command-line parameters to run zebra with:
# -k, --keep_kernel Don't delete old routes which installed by zebra.
# -A, --vty_addr addr Set vty's bind address
# -P, --vty_port port Set vty's port number
# -r, --retain When program terminates, retain added route by zebra.
# -s, --nl-bufsize Set netlink receive buffer size
ZEBRA_OPTS=""
#!/sbin/openrc-run
piddir=/var/run/quagga
pidfile=$piddir/$SVCNAME.pid
command=/usr/sbin/$SVCNAME
command_args="-d -f /etc/quagga/$SVCNAME.conf --pid_file $pidfile"
depend() {
need net
after firewall opennhrp
}
cleanup() {
ebegin "Cleaning up stale zebra routes..."
ip route flush proto zebra
eend $?
}
checkconfig() {
if ! [ -e /etc/quagga/$SVCNAME.conf ] ; then
eerror "You need to create /etc/quagga/$SVCNAME.conf first."
eerror "An example can be found in /usr/share/doc/quagga/$SVCNAME.conf.sample"
eerror "from quagga-doc package"
return 1
fi
return 0
}
start_pre() {
checkconfig || return 1
checkpath --owner quagga:quagga --directory $piddir
cleanup
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment