diff --git a/testing/frr/APKBUILD b/testing/frr/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..374c242744e139610cb1c95e82563d61112c4f34
--- /dev/null
+++ b/testing/frr/APKBUILD
@@ -0,0 +1,67 @@
+# Maintainer: Arthur Jones <arthur.jones@riverbed.com>
+pkgname=frr
+pkgver=5.0.1
+pkgrel=0
+pkgdesc="FRRouting is a fork of quagga"
+pkgusers="frr"
+pkggroups="frr"
+url="https://frrouting.org/"
+arch="x86_64"
+license="GPL-2.0-only and LGPL-2.1-only"
+depends="json-c c-ares iproute2 python py-ipaddr bash"
+makedepends="ncurses-dev net-snmp-dev gawk texinfo perl
+    acct autoconf automake bash bison bsd-compat-headers
+    c-ares-dev cryptsetup-libs device-mapper-libs flex
+    json-c-dev kmod lddtree libacl libblkid libburn libedit
+    libisoburn libisofs libltdl libtool libuuid linux-headers lzo m4 mkinitfs
+    mtools pcre perl python2-dev readline-dev
+    squashfs-tools texinfo xorriso py-sphinx"
+checkdepends="pytest py-setuptools"
+install="$pkgname.pre-install $pkgname.pre-deinstall $pkgname.post-deinstall"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg $pkgname-openrc"
+source="https://github.com/FRRouting/frr/archive/$pkgname-$pkgver.tar.gz
+    make-check-bypass-isisd-tlv.patch
+    frr
+    "
+builddir="$srcdir"/$pkgname-$pkgname-$pkgver
+
+_sbindir=/usr/lib/frr
+_sysconfdir=/etc/frr
+_libdir=/usr/lib
+_localstatedir=/var/run/frr
+
+build() {
+	cd "$builddir"
+	./bootstrap.sh
+	./configure \
+		--prefix=/usr \
+		--sbindir=$_sbindir \
+		--sysconfdir=$_sysconfdir \
+		--libdir=$_libdir \
+		--localstatedir=$_localstatedir \
+		--enable-systemd=no \
+		--enable-vtysh \
+		--enable-multipath=64 \
+		--enable-vty-group=frrvty \
+		--enable-user=${pkgusers%% *} \
+		--enable-group=${pkggroups%% *}
+	make
+}
+
+check() {
+	cd "$builddir"
+
+	make -j 1 check
+}
+
+package() {
+	cd "$builddir"
+	make DESTDIR="$pkgdir" install
+
+	install -Dm644 "$builddir"/tools/etc/frr/daemons "$pkgdir"$_sysconfdir
+	install -Dm644 "$builddir"/tools/etc/frr/daemons.conf "$pkgdir"$_sysconfdir
+	install -Dm755 "$srcdir"/frr "$pkgdir"/etc/init.d/frr
+}
+sha512sums="e2a3a4e21998f8c85b59fc971190d0b5340bbcd88356a637740ad8e564275b0df14da78b72a24a99a58435725cded1b9089814fc926a7a4080bd3a8762973548  frr-5.0.1.tar.gz
+3c679b857018d82443abd34823e712a8657a597b4210730d260e9796516982a137234354422cb439989985367531d600e205d3fb791cdb7b212425bb704c2016  make-check-bypass-isisd-tlv.patch
+c8c568c97925191a66d51921a93f86b87b1f47180900528deb96cb91c3a2ee3b8e0874e6397ed7d1406f396d6f1e5afb847155feec74d3f00bb3329dd7d9f0b0  frr"
diff --git a/testing/frr/frr b/testing/frr/frr
new file mode 100755
index 0000000000000000000000000000000000000000..1721628577cc7d1abe4f6b6fe5925a4568fddbd0
--- /dev/null
+++ b/testing/frr/frr
@@ -0,0 +1,19 @@
+#!/sbin/openrc-run
+
+description="FRRouting"
+
+start() {
+        exec /usr/lib/frr/frr start
+}
+
+stop() {
+        exec /usr/lib/frr/frr stop
+}
+
+restart() {
+        exec /usr/lib/frr/frr restart
+}
+
+status() {
+        exec /usr/lib/frr/frr status
+}
diff --git a/testing/frr/frr.post-deinstall b/testing/frr/frr.post-deinstall
new file mode 100755
index 0000000000000000000000000000000000000000..8f5d3dc40ce6ef5cdc683c3f6dbaf2759e0f0c1c
--- /dev/null
+++ b/testing/frr/frr.post-deinstall
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+getent passwd frr > /dev/null && deluser frr
+getent group frrvty > /dev/null && delgroup frrvty
+getent group frr > /dev/null && delgroup frr
+exit 0
diff --git a/testing/frr/frr.pre-deinstall b/testing/frr/frr.pre-deinstall
new file mode 100755
index 0000000000000000000000000000000000000000..72cf73bc1c0e5908757f0cb38c2ba60cc0412ae3
--- /dev/null
+++ b/testing/frr/frr.pre-deinstall
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+/etc/init.d/frr stop
+exit 0
diff --git a/testing/frr/frr.pre-install b/testing/frr/frr.pre-install
new file mode 100755
index 0000000000000000000000000000000000000000..da608cdcbd5be013754f2dffabf9f83042961029
--- /dev/null
+++ b/testing/frr/frr.pre-install
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+for g in frr frrvty; do
+	! getent group $g > /dev/null && addgroup -S $g
+done
+
+! getent passwd frr > /dev/null && \
+	adduser -S -D -h /var/run/frr -s /sbin/nologin -G frr -g frr frr
+
+adduser frr frrvty
diff --git a/testing/frr/make-check-bypass-isisd-tlv.patch b/testing/frr/make-check-bypass-isisd-tlv.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b7a73b353f40519601b8e0fb1449ce5f72b0192b
--- /dev/null
+++ b/testing/frr/make-check-bypass-isisd-tlv.patch
@@ -0,0 +1,49 @@
+commit f404be7c728ca3433bb4aeaeac5e3c450941de35
+Author: Arthur Jones <arthur.jones@riverbed.com>
+Date:   Wed Jun 6 07:47:17 2018 -0700
+
+    tests/isisd: bypass test_fuzz_isis_tlv when inet_ntop is broken
+    
+    On Alpine Linux edge, musl does not seem to be RFC 5952 4.2.2
+    compliant (how to print a single :0: in the IPv6 address).  Let's
+    skip that test, as we get false negatives when running against
+    that version of musl.
+    
+    Credit for the idea for the fix and how to fix it is due to
+    chris@opensourcerouting.org.
+    
+    Testing done:
+    
+    make check on alpine linux passes now
+    
+    Issue: https://github.com/FRRouting/frr/issues/2375
+    Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
+
+diff --git a/tests/isisd/test_fuzz_isis_tlv.py b/tests/isisd/test_fuzz_isis_tlv.py
+index bf700bfee..d96e3c4fe 100644
+--- a/tests/isisd/test_fuzz_isis_tlv.py
++++ b/tests/isisd/test_fuzz_isis_tlv.py
+@@ -2,10 +2,21 @@ import frrtest
+ 
+ import pytest
+ import platform
++import socket
+ 
+-if platform.uname()[0] == 'SunOS':
++
++##
++# on musl, ntop compresses a single :0: -> :: which is against RFC
++##
++def inet_ntop_broken():
++    addr = '1:2:3:4:0:6:7:8'
++    return socket.inet_ntop(socket.AF_INET6,
++                            socket.inet_pton(socket.AF_INET6, addr)) != addr
++
++
++if platform.uname()[0] == 'SunOS' or inet_ntop_broken():
+     class TestFuzzIsisTLV:
+-        @pytest.mark.skipif(True, reason='Test unsupported on SunOS')
++        @pytest.mark.skipif(True, reason='Test unsupported')
+         def test_exit_cleanly(self):
+             pass
+ else: