aboutsummaryrefslogtreecommitdiffstats
path: root/main/quagga-nhrp
diff options
context:
space:
mode:
Diffstat (limited to 'main/quagga-nhrp')
-rw-r--r--main/quagga-nhrp/APKBUILD95
-rw-r--r--main/quagga-nhrp/bgpd-route-selection-crash.patch16
-rw-r--r--main/quagga-nhrp/bgpd.initd22
-rw-r--r--main/quagga-nhrp/dont-hook-core-signals.patch20
-rw-r--r--main/quagga-nhrp/quagga-nhrp.post-install9
l---------main/quagga-nhrp/quagga-nhrp.post-upgrade1
-rw-r--r--main/quagga-nhrp/quagga-nhrp.pre-install6
-rw-r--r--main/quagga-nhrp/zebra.confd7
-rw-r--r--main/quagga-nhrp/zebra.initd34
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
+}
+