summaryrefslogtreecommitdiff
path: root/extra/quagga
diff options
context:
space:
mode:
Diffstat (limited to 'extra/quagga')
-rw-r--r--extra/quagga/PKGBUILD86
-rw-r--r--extra/quagga/babeld.service16
-rw-r--r--extra/quagga/bgpd.service16
-rw-r--r--extra/quagga/isisd.service16
-rw-r--r--extra/quagga/ospf6d.service16
-rw-r--r--extra/quagga/ospfd.service16
-rw-r--r--extra/quagga/quagga.install36
-rw-r--r--extra/quagga/ripd.service16
-rw-r--r--extra/quagga/ripngd.service16
-rw-r--r--extra/quagga/zebra.service16
10 files changed, 250 insertions, 0 deletions
diff --git a/extra/quagga/PKGBUILD b/extra/quagga/PKGBUILD
new file mode 100644
index 000000000..296f48be2
--- /dev/null
+++ b/extra/quagga/PKGBUILD
@@ -0,0 +1,86 @@
+# $Id: PKGBUILD 217792 2014-07-23 23:18:55Z seblu $
+# Maintainer: Sébastien Luttringer
+
+pkgname=quagga
+pkgver=0.99.23
+pkgrel=1
+pkgdesc='BGP/OSPF/ISIS/RIP/RIPNG routing daemon suite'
+arch=('i686' 'x86_64')
+url='http://www.quagga.net'
+license=('GPL2')
+depends=('libcap' 'libnl' 'net-snmp' 'readline' 'ncurses' 'perl')
+options=('!buildflags')
+install=quagga.install
+source=("http://download.savannah.gnu.org/releases/$pkgname/$pkgname-$pkgver.tar.gz"
+ 'babeld.service'
+ 'bgpd.service'
+ 'isisd.service'
+ 'ospf6d.service'
+ 'ospfd.service'
+ 'ripd.service'
+ 'ripngd.service'
+ 'zebra.service')
+md5sums=('d17145e62b6ea14f0f13bb63f59e5166'
+ '20a8e36ad851d4e06467aeb56a84b245'
+ 'cc90c234aac9098c5132d653037d5269'
+ '67d0ada0f3000b9a86351798786c5256'
+ '6e2569ef339838aa41375e913a8e19ce'
+ '260f5fcf9b53ef201a8fb34e7ea90457'
+ 'b6e3549d780355914ae8edd43e15630a'
+ '72dd63c49fdaea41729a4318d0fbac79'
+ '577f1e7caeea31d910f2dc29c28ada7d')
+
+prepare() {
+ cd $pkgname-$pkgver
+ shopt -s nullglob
+ for _p in "$srcdir"/*.patch; do
+ msg2 "Applying ${_p##*/}"
+ patch -p 1 -i "$_p"
+ done
+}
+
+build() {
+ cd $pkgname-$pkgver
+ # fix broken 0.99.22.4 tarball
+ autoreconf -fvi
+ ./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc/quagga \
+ --localstatedir=/run/quagga \
+ --enable-exampledir=/usr/share/doc/quagga/examples \
+ --enable-vtysh \
+ --enable-isisd \
+ --enable-isis-topology \
+ --enable-netlink \
+ --enable-snmp \
+ --enable-tcp-zebra \
+ --enable-irdp \
+ --enable-pcreposix \
+ --enable-multipath=64 \
+ --enable-user=quagga \
+ --enable-group=quagga \
+ --enable-configfile-mask=0640 \
+ --enable-logfile-mask=0640
+ make
+}
+
+package() {
+ # upstream install
+ cd $pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+
+ # logrotate stuff
+ install -D -m 644 redhat/$pkgname.logrotate "$pkgdir/etc/logrotate.d/$pkgname"
+ sed -ri 's,/var/run/quagga,/run/quagga,g' "$pkgdir/etc/logrotate.d/$pkgname"
+
+ # systemd
+ cd "$srcdir"
+ for _d in zebra ripd ripngd bgpd ospfd ospf6d isisd babeld; do
+ install -D -m 644 $_d.service "$pkgdir/usr/lib/systemd/system/$_d.service"
+ done
+ install -D -m 644 /dev/null "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf"
+ echo "d /run/$pkgname 0750 $pkgname $pkgname" > "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/quagga/babeld.service b/extra/quagga/babeld.service
new file mode 100644
index 000000000..7279f0336
--- /dev/null
+++ b/extra/quagga/babeld.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Babel routing daemon
+Documentation=man:zebra(8)
+BindTo=zebra.service
+After=network.target zebra.service
+ConditionPathExists=/etc/quagga/babeld.conf
+
+[Service]
+Type=forking
+PIDFile=/run/quagga/babeld.pid
+ExecStart=/usr/bin/babeld -d
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/extra/quagga/bgpd.service b/extra/quagga/bgpd.service
new file mode 100644
index 000000000..b0bf1db0f
--- /dev/null
+++ b/extra/quagga/bgpd.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=BGP routing daemon
+Documentation=man:bgpd(8) man:zebra(8)
+BindTo=zebra.service
+After=network.target zebra.service
+ConditionPathExists=/etc/quagga/bgpd.conf
+
+[Service]
+Type=forking
+PIDFile=/run/quagga/bgpd.pid
+ExecStart=/usr/bin/bgpd -d
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/extra/quagga/isisd.service b/extra/quagga/isisd.service
new file mode 100644
index 000000000..5ad16c1a4
--- /dev/null
+++ b/extra/quagga/isisd.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=IS-IS routing daemon
+Documentation=man:isis(8) man:zebra(8)
+BindTo=zebra.service
+After=network.target zebra.service
+ConditionPathExists=/etc/quagga/isisd.conf
+
+[Service]
+Type=forking
+PIDFile=/run/quagga/isisd.pid
+ExecStart=/usr/bin/isisd -d
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/extra/quagga/ospf6d.service b/extra/quagga/ospf6d.service
new file mode 100644
index 000000000..dae3dc322
--- /dev/null
+++ b/extra/quagga/ospf6d.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=OSPF routing daemon for IPv6
+Documentation=man:ospfd(8) man:zebra(8)
+BindTo=zebra.service
+After=network.target zebra.service
+ConditionPathExists=/etc/quagga/ospf6d.conf
+
+[Service]
+Type=forking
+PIDFile=/run/quagga/ospf6d.pid
+ExecStart=/usr/bin/ospf6d -d
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/extra/quagga/ospfd.service b/extra/quagga/ospfd.service
new file mode 100644
index 000000000..e43c474cc
--- /dev/null
+++ b/extra/quagga/ospfd.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=OSPF routing daemon
+Documentation=man:ospfd(8) man:zebra(8)
+BindTo=zebra.service
+After=network.target zebra.service
+ConditionPathExists=/etc/quagga/ospfd.conf
+
+[Service]
+Type=forking
+PIDFile=/run/quagga/ospfd.pid
+ExecStart=/usr/bin/ospfd -d
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/extra/quagga/quagga.install b/extra/quagga/quagga.install
new file mode 100644
index 000000000..c5d88b976
--- /dev/null
+++ b/extra/quagga/quagga.install
@@ -0,0 +1,36 @@
+infodir=/usr/share/info
+filelist=(quagga.info quagga.info-1 quagga.info-2)
+
+post_install() {
+ groupadd -r quagga
+ useradd -MNr -s /bin/false -d /run/quagga -g quagga quagga && passwd -l quagga &>/dev/null
+ install -d -m 750 -o quagga -g quagga /{run,etc,var/log}/quagga
+ post_upgrade
+}
+
+post_upgrade() {
+ if [[ -x /usr/bin/install-info ]]; then
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+ fi
+}
+
+pre_remove() {
+ for d in zebra ripd ripngd bgpd ospfd ospf6d isisd; do
+ /etc/rc.d/$d stop &>/dev/null
+ done
+ if [[ -x /usr/bin/install-info ]]; then
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+ fi
+}
+
+post_remove() {
+ userdel quagga &>/dev/null
+ groupdel quagga &>/dev/null
+ rmdir /{etc,var/log}/quagga
+}
+
+# vim: ft=sh ts=2 sw=2 et:
diff --git a/extra/quagga/ripd.service b/extra/quagga/ripd.service
new file mode 100644
index 000000000..a55498100
--- /dev/null
+++ b/extra/quagga/ripd.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=RIP routing daemon
+Documentation=man:ripd(8) man:zebra(8)
+BindTo=zebra.service
+After=network.target zebra.service
+ConditionPathExists=/etc/quagga/ripd.conf
+
+[Service]
+Type=forking
+PIDFile=/run/quagga/ripd.pid
+ExecStart=/usr/bin/ripd -d
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/extra/quagga/ripngd.service b/extra/quagga/ripngd.service
new file mode 100644
index 000000000..4990669d2
--- /dev/null
+++ b/extra/quagga/ripngd.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=RIP routing daemon for IPv6
+Documentation=man:ripngd(8) man:zebra(8)
+BindTo=zebra.service
+After=network.target zebra.service
+ConditionPathExists=/etc/quagga/ripngd.conf
+
+[Service]
+Type=forking
+PIDFile=/run/quagga/ripngd.pid
+ExecStart=/usr/bin/ripngd -d
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/extra/quagga/zebra.service b/extra/quagga/zebra.service
new file mode 100644
index 000000000..02813c37c
--- /dev/null
+++ b/extra/quagga/zebra.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=GNU Zebra routing manager
+Documentation=man:zebra(8)
+After=network.target
+ConditionPathExists=/etc/quagga/zebra.conf
+
+[Service]
+Type=forking
+PIDFile=/run/quagga/zebra.pid
+ExecStartPre=/sbin/ip route flush proto zebra
+ExecStart=/usr/bin/zebra -d
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target