diff options
Diffstat (limited to 'main/quagga-nhrp')
-rw-r--r-- | main/quagga-nhrp/APKBUILD | 95 | ||||
-rw-r--r-- | main/quagga-nhrp/bgpd-route-selection-crash.patch | 16 | ||||
-rw-r--r-- | main/quagga-nhrp/bgpd.initd | 22 | ||||
-rw-r--r-- | main/quagga-nhrp/dont-hook-core-signals.patch | 20 | ||||
-rw-r--r-- | main/quagga-nhrp/quagga-nhrp.post-install | 9 | ||||
l--------- | main/quagga-nhrp/quagga-nhrp.post-upgrade | 1 | ||||
-rw-r--r-- | main/quagga-nhrp/quagga-nhrp.pre-install | 6 | ||||
-rw-r--r-- | main/quagga-nhrp/zebra.confd | 7 | ||||
-rw-r--r-- | main/quagga-nhrp/zebra.initd | 34 |
9 files changed, 210 insertions, 0 deletions
diff --git a/main/quagga-nhrp/APKBUILD b/main/quagga-nhrp/APKBUILD new file mode 100644 index 0000000000..2fe9f53db8 --- /dev/null +++ b/main/quagga-nhrp/APKBUILD @@ -0,0 +1,95 @@ +# 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/main/quagga-nhrp/bgpd-route-selection-crash.patch b/main/quagga-nhrp/bgpd-route-selection-crash.patch new file mode 100644 index 0000000000..473e4e564b --- /dev/null +++ b/main/quagga-nhrp/bgpd-route-selection-crash.patch @@ -0,0 +1,16 @@ +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) diff --git a/main/quagga-nhrp/bgpd.initd b/main/quagga-nhrp/bgpd.initd new file mode 100644 index 0000000000..bd1e4c6c92 --- /dev/null +++ b/main/quagga-nhrp/bgpd.initd @@ -0,0 +1,22 @@ +#!/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/main/quagga-nhrp/dont-hook-core-signals.patch b/main/quagga-nhrp/dont-hook-core-signals.patch new file mode 100644 index 0000000000..0fa57502d0 --- /dev/null +++ b/main/quagga-nhrp/dont-hook-core-signals.patch @@ -0,0 +1,20 @@ +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, diff --git a/main/quagga-nhrp/quagga-nhrp.post-install b/main/quagga-nhrp/quagga-nhrp.post-install new file mode 100644 index 0000000000..b4bcef1e7b --- /dev/null +++ b/main/quagga-nhrp/quagga-nhrp.post-install @@ -0,0 +1,9 @@ +#!/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 diff --git a/main/quagga-nhrp/quagga-nhrp.post-upgrade b/main/quagga-nhrp/quagga-nhrp.post-upgrade new file mode 120000 index 0000000000..1dcbc73fb9 --- /dev/null +++ b/main/quagga-nhrp/quagga-nhrp.post-upgrade @@ -0,0 +1 @@ +quagga-nhrp.post-install
\ No newline at end of file diff --git a/main/quagga-nhrp/quagga-nhrp.pre-install b/main/quagga-nhrp/quagga-nhrp.pre-install new file mode 100644 index 0000000000..c0fe3c8c56 --- /dev/null +++ b/main/quagga-nhrp/quagga-nhrp.pre-install @@ -0,0 +1,6 @@ +#!/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 + diff --git a/main/quagga-nhrp/zebra.confd b/main/quagga-nhrp/zebra.confd new file mode 100644 index 0000000000..d2deb114e5 --- /dev/null +++ b/main/quagga-nhrp/zebra.confd @@ -0,0 +1,7 @@ +# 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="" diff --git a/main/quagga-nhrp/zebra.initd b/main/quagga-nhrp/zebra.initd new file mode 100644 index 0000000000..6ab297e74f --- /dev/null +++ b/main/quagga-nhrp/zebra.initd @@ -0,0 +1,34 @@ +#!/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 +} + |