summaryrefslogtreecommitdiff
path: root/recipes/quagga/quagga.inc
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/quagga/quagga.inc')
-rw-r--r--recipes/quagga/quagga.inc153
1 files changed, 153 insertions, 0 deletions
diff --git a/recipes/quagga/quagga.inc b/recipes/quagga/quagga.inc
new file mode 100644
index 0000000000..f81a062ed9
--- /dev/null
+++ b/recipes/quagga/quagga.inc
@@ -0,0 +1,153 @@
+DESCRIPTION = "Quagga is a routing software suite, providing \
+implementations of OSPFv2, OSPFv3, RIP v1 and v2, RIPv3 and BGPv4 for \
+Unix platforms, particularly FreeBSD, Linux, Solaris and NetBSD. \
+Quagga is a fork of GNU Zebra which was developed by Kunihiro \
+Ishiguro. The Quagga tree aims to build a more involved community \
+around Quagga than the current centralised model of GNU Zebra."
+HOMEPAGE = "http://www.quagga.net/"
+SECTION = "network"
+LICENSE = "GPL"
+DEPENDS = "readline ncurses perl-native"
+# Each of the per-protocol packages depends on the main package
+RDEPENDS_${PN}-ospfd = "${PN}"
+RDEPENDS_${PN}-ospf6d = "${PN}"
+RDEPENDS_${PN}-bgpd = "${PN}"
+RDEPENDS_${PN}-ripd = "${PN}"
+RDEPENDS_${PN}-ripngd = "${PN}"
+RDEPENDS_${PN}-isisd = "${PN}"
+RDEPENDS_${PN}-ospfclient = "${PN}"
+RDEPENDS_${PN}-doc = ""
+RDEPENDS_${PN}-watchquagga = "${PN}"
+# the "ip" command from busybox is not sufficient (flush by protocol flushes all routes)
+RDEPENDS_${PN} += "iproute2"
+
+QUAGGASUBDIR = ""
+
+# ${QUAGGASUBDIR} is deal with old versions. Set to "/attic" for old
+# versions and leave it empty for recent versions.
+SRC_URI = "http://www.quagga.net/download${QUAGGASUBDIR}/quagga-${PV}.tar.gz \
+ file://fix-for-lib-inpath.patch;patch=1 \
+ file://quagga.init \
+ file://quagga.default \
+ file://watchquagga.init \
+ file://watchquagga.default \
+ file://volatiles.03_quagga"
+
+inherit autotools update-rc.d
+
+# Turn on options and changes paths.
+# This matches the layout and configuration of the debian quagga package
+EXTRA_OECONF = "--prefix=${prefix} \
+ --libexecdir=${libexecdir}/quagga \
+ --sbindir=${libdir}/quagga \
+ --sysconfdir=${sysconfdir}/quagga \
+ --localstatedir=${localstatedir}/run/quagga \
+ --enable-exampledir=${docdir}/quagga/examples/ \
+ --enable-vtysh \
+ --enable-isisd \
+ --enable-watchquagga \
+ --enable-ospf-te \
+ --enable-opaque-lsa \
+ --enable-ipv6 \
+ --enable-ospfclient=yes \
+ --enable-multipath=64 \
+ --enable-user=quagga \
+ --enable-group=quagga \
+ --enable-vty-group=quaggavty \
+ --enable-configfile-mask=0640 \
+ --enable-logfile-mask=0640 \
+ --enable-rtadv \
+ --enable-tcp-md5"
+
+do_install () {
+ # Install init script and default settings
+ install -m 0755 -d ${D}${sysconfdir}/default ${D}${sysconfdir}/init.d \
+ ${D}${sysconfdir}/quagga ${D}${sysconfdir}/default/volatiles
+ install -m 0644 ${WORKDIR}/quagga.default ${D}${sysconfdir}/default/quagga
+ install -m 0644 ${WORKDIR}/watchquagga.default ${D}${sysconfdir}/default/watchquagga
+ install -m 0755 ${WORKDIR}/quagga.init ${D}${sysconfdir}/init.d/quagga
+ install -m 0755 ${WORKDIR}/watchquagga.init ${D}${sysconfdir}/init.d/watchquagga
+ install -m 0644 ${WORKDIR}/volatiles.03_quagga ${D}${sysconfdir}/default/volatiles/volatiles.03_quagga
+ # Install quagga
+ oe_runmake install DESTDIR=${D} prefix=${prefix} \
+ libexecdir=${libexecdir}/quagga \
+ sbindir=${libdir}/quagga \
+ sysconfdir=${sysconfdir}/quagga \
+ localstatedir=${localstatedir}/run/quagga
+}
+
+# Split into a main package and seperate per-protocol packages
+PACKAGES = "${PN}-dbg ${PN} \
+ ${PN}-ospfd ${PN}-ospf6d ${PN}-bgpd ${PN}-ripd ${PN}-ripngd ${PN}-isisd \
+ ${PN}-ospfclient ${PN}-watchquagga ${PN}-dev ${PN}-doc"
+
+FILES_${PN}-ospfd = "${libdir}/quagga/ospfd /usr/lib/libospf.so.*"
+FILES_${PN}-ospf6d = "${libdir}/quagga/ospf6d"
+FILES_${PN}-bgpd = "${libdir}/quagga/bgpd"
+FILES_${PN}-ripd = "${libdir}/quagga/ripd"
+FILES_${PN}-ripngd = "${libdir}/quagga/ripngd"
+FILES_${PN}-isisd = "${libdir}/quagga/isisd"
+FILES_${PN}-ospfclient = "${libdir}/quagga/ospfclient /usr/lib/libospfapiclient.so.*"
+FILES_${PN}-dev = "/usr/include /usr/lib/lib*.so /usr/lib/*.la /usr/lib/*.a"
+FILES_${PN}-doc = "/usr/share/doc /usr/share/man /usr/share/info"
+FILES_${PN}-watchquagga = "${libdir}/quagga/watchquagga ${sysconfdir}/default/watchquagga \
+ ${sysconfdir}/init.d/watchquagga"
+FILES_${PN} = "${bindir}/vtysh ${libdir}/quagga/zebra /usr/lib/libzebra*.so.* \
+ ${sysconfdir}/default/volatiles/volatiles.03_quagga \
+ ${sysconfdir}/quagga \
+ ${sysconfdir}/default/quagga ${sysconfdir}/init.d/quagga"
+
+# Indicate that the default files are configuration files
+CONFFILES_${PN} = "${sysconfdir}/default/quagga"
+CONFFILES_${PN}-watchquagga = "${sysconfdir}/default/watchquagga"
+
+# Stop the names being rewritten due to the internal shared libraries
+DEBIAN_NOAUTONAME_${PN}-ospfd = "1"
+DEBIAN_NOAUTONAME_${PN}-ospfclient = "1"
+
+# Main init script starts all deamons
+# Seperate init script for watchquagga
+INITSCRIPT_PACKAGES = "${PN} ${PN}-watchquagga"
+INITSCRIPT_NAME_${PN} = "quagga"
+INITSCRIPT_PARAMS_${PN} = "defaults 15 85"
+INITSCRIPT_NAME_${PN}-watchquagga = "watchquagga"
+INITSCRIPT_PARAMS_${PN}-watchquagga = "defaults 90 10"
+
+# Add quagga's user and groups
+pkg_postinst_${PN} () {
+ grep -q quagga: /etc/group || addgroup quagga
+ grep -q quaggavty: /etc/group || addgroup quaggavty
+ grep -q quagga: /etc/passwd || \
+ adduser --disabled-password --home=/var/run/quagga/ --system \
+ --ingroup quagga --no-create-home -g "Quagga routing suite" quagga
+ /etc/init.d/populate-volatile.sh update
+}
+
+# Stop apps before uninstall
+pkg_prerm_${PN} () {
+ ${sysconfdir}/init.d/quagga stop
+}
+
+pkg_prerm_${PN}-ospfd () {
+ ${sysconfdir}/init.d/quagga stop ospfd
+}
+
+pkg_prerm_${PN}-ospf6d () {
+ ${sysconfdir}/init.d/quagga stop ospf6d
+}
+
+pkg_prerm_${PN}-bgpd () {
+ ${sysconfdir}/init.d/quagga stop bgpd
+}
+
+pkg_prerm_${PN}-ripd () {
+ ${sysconfdir}/init.d/quagga stop ripd
+}
+
+pkg_prerm_${PN}-ripngd () {
+ ${sysconfdir}/init.d/quagga stop ripngd
+}
+
+pkg_prerm_${PN}-isisd () {
+ ${sysconfdir}/init.d/quagga stop isisd
+}