]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
frr: New package
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 17 Jul 2017 18:06:03 +0000 (14:06 -0400)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 17 Jul 2017 18:06:03 +0000 (14:06 -0400)
This package is FRRouting which is a fork of quagga

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
frr/frr.nm [new file with mode: 0644]
frr/frr.tmpfiles [new file with mode: 0644]
frr/systemd/bgpd.service [new file with mode: 0644]
frr/systemd/ospf6d.service [new file with mode: 0644]
frr/systemd/ospfd.service [new file with mode: 0644]
frr/systemd/zebra.service [new file with mode: 0644]

diff --git a/frr/frr.nm b/frr/frr.nm
new file mode 100644 (file)
index 0000000..cafa626
--- /dev/null
@@ -0,0 +1,107 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = frr
+version    = 2.0
+release    = 1
+
+groups     = Networking/Routing
+url        = https://frrouting.org
+license    = GPLv2+
+summary    = FRRouting is an IP routing protocol suite
+
+description
+       FRRouting (FRR) is an IP routing protocol suite for Linux and Unix
+       platforms which includes protocol daemons for BGP, IS-IS, LDP, OSPF,
+       PIM, and RIP.
+end
+
+source_dl  = https://github.com/FRRouting/frr/releases/download/frr-%{version}/
+
+build
+       requires
+               json-c-devel
+               ncurses-devel
+               readline-devel
+               systemd-units
+               texinfo
+       end
+
+       prepare_cmds
+               %{create_user}
+       end
+
+       configure_options += \
+               --sysconfdir=/etc/frr \
+               --localstatedir=%{localstatedir}/run/frr \
+               --disable-static \
+               --disable-watchfrr \
+               --enable-multipath=64 \
+               --disable-isisd \
+               --disable-pimd \
+               --disable-ripd \
+               --disable-ripngd
+
+       install_cmds
+               mkdir -pv %{localstatedir}/run/frr
+               chown -v frr.frr %{localstatedir}/run/frr
+       end
+end
+
+create_user
+       getent group frr >/dev/null || /usr/sbin/groupadd -r frr
+       getent passwd frr >/dev/null || /usr/sbin/useradd -r -g frr \
+               -d %{sysconfdir}/%{name} -s /sbin/nologin frr
+end
+
+packages
+       package %{name}
+               services = bgpd ospf6d ospfd zebra
+
+               # This is a fork of quagga and installs binaries
+               # with the same name. Hence we cannot install both
+               # at the same time.
+               conflicts = quagga
+
+               script prein
+                       %{create_user}
+               end
+
+               script postin
+                       /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+               end
+
+               script preun
+                       for i in %{services}; do
+                               systemctl --no-reload disable ${i}.service >/dev/null 2>&1 || :
+                               systemctl stop ${i}.service >/dev/null 2>&1 || :
+                       done
+               end
+
+               script postun
+                       systemctl daemon-reload >/dev/null 2>&1 || :
+               end
+
+               script postup
+                       systemctl daemon-reload >/dev/null 2>&1 || :
+
+                       for i in %{services}; do
+                               systemctl try-restart ${i}.service >/dev/null 2>&1 || :
+                       done
+               end
+       end
+
+       package %{name}-libs
+               template LIBS
+       end
+
+       package %{name}-devel
+               template DEVEL
+       end
+
+       package %{name}-debuginfo
+               template DEBUGINFO
+       end
+end
diff --git a/frr/frr.tmpfiles b/frr/frr.tmpfiles
new file mode 100644 (file)
index 0000000..ec70356
--- /dev/null
@@ -0,0 +1 @@
+d      /var/run/frr    0755 frr frr
diff --git a/frr/systemd/bgpd.service b/frr/systemd/bgpd.service
new file mode 100644 (file)
index 0000000..a52ebea
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=BGP routing daemon
+BindTo=zebra.service
+After=syslog.target network.target zebra.service
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/bgpd -d -f /etc/frr/bgpd.conf
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/frr/systemd/ospf6d.service b/frr/systemd/ospf6d.service
new file mode 100644 (file)
index 0000000..14f2f03
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=OSPF routing daemon for IPv6
+BindTo=zebra.service
+After=syslog.target network.target zebra.service
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/ospf6d -d -f /etc/frr/ospf6d.conf
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/frr/systemd/ospfd.service b/frr/systemd/ospfd.service
new file mode 100644 (file)
index 0000000..90b7dbb
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=OSPF routing daemon
+BindTo=zebra.service
+After=syslog.target network.target zebra.service
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/ospfd -d -f /etc/frr/ospfd.conf
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target
diff --git a/frr/systemd/zebra.service b/frr/systemd/zebra.service
new file mode 100644 (file)
index 0000000..81ac732
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=GNU Zebra routing manager
+After=syslog.target network.target
+
+[Service]
+Type=forking
+ExecStartPre=/sbin/ip route flush proto zebra
+ExecStart=/usr/sbin/zebra -d -f /etc/frr/zebra.conf
+Restart=on-abort
+
+[Install]
+WantedBy=multi-user.target