aboutsummaryrefslogtreecommitdiffstats
path: root/testing/frr
diff options
context:
space:
mode:
authorLeo <thinkabit.ukim@gmail.com>2019-09-09 12:05:36 -0300
committerLeo <thinkabit.ukim@gmail.com>2019-09-09 12:37:48 -0300
commit43cac210ee9ac7a736b07e3f6b7162be1674d554 (patch)
tree2a78265df76b32c2a10e6e8e5542498b7a9bcf92 /testing/frr
parent35c6452a338f6a7f1bfb9896cf43594b80eaf8c8 (diff)
downloadaports-43cac210ee9ac7a736b07e3f6b7162be1674d554.tar.bz2
aports-43cac210ee9ac7a736b07e3f6b7162be1674d554.tar.xz
testing/frr: use python3
Diffstat (limited to 'testing/frr')
-rw-r--r--testing/frr/APKBUILD32
-rw-r--r--testing/frr/py3.patch1001
2 files changed, 1021 insertions, 12 deletions
diff --git a/testing/frr/APKBUILD b/testing/frr/APKBUILD
index 9fa810862a..1ed1f67a44 100644
--- a/testing/frr/APKBUILD
+++ b/testing/frr/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Christian Franke <nobody@nowhere.ws>
pkgname=frr
pkgver=7.1
-pkgrel=0
+pkgrel=1
pkgdesc="Free Range Routing is a fork of Quagga"
pkgusers="frr"
pkggroups="frr frrvty"
@@ -17,13 +17,13 @@ makedepends="autoconf automake libtool
libyang-dev
linux-headers
net-snmp-dev
- py-sphinx
+ py3-sphinx
python3-dev
readline-dev
rtrlib-dev
texinfo
"
-checkdepends="pytest py-setuptools"
+checkdepends="py3-pytest"
install="$pkgname.pre-install"
subpackages="$pkgname-dbg
$pkgname-doc::noarch
@@ -32,15 +32,22 @@ subpackages="$pkgname-dbg
$pkgname-rpki
$pkgname-snmp
"
-source="https://github.com/FRRouting/frr/archive/$pkgname-$pkgver.tar.gz
- frr.initd"
+source="https://github.com/FRRouting/frr/archive/frr-$pkgver.tar.gz
+ frr.initd
+ py3.patch
+ "
builddir="$srcdir"/$pkgname-$pkgname-$pkgver
_sysconfdir=/etc/frr
-build() {
- cd "$builddir"
+prepare() {
+ default_prepare
./bootstrap.sh
+}
+
+build() {
+ export PYTHON=python3
+
./configure \
--prefix=/usr \
--enable-exampledir=/usr/share/doc/frr/examples/ \
@@ -67,17 +74,17 @@ build() {
--enable-group=${pkggroups%% *} \
--enable-vty-group=frrvty \
--enable-configfile-mask=0640 \
- --enable-logfile-mask=0640
+ --enable-logfile-mask=0640 \
+ SPHINXBUILD=sphinx-build-3
make
}
check() {
- cd "$builddir"
+ export PYTHON=python3
make -j 1 check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
# Remove development files, static libraries and headers.
@@ -100,7 +107,7 @@ package() {
pythontools() {
pkgdesc="$pkgdesc (tools)"
- depends="python2 py2-ipaddr"
+ depends="python3 py3-ipaddr"
mkdir -p "$subpkgdir"/usr/lib/frr
mv "$pkgdir"/usr/lib/frr/frr-reload.py "$subpkgdir/usr/lib/frr"
}
@@ -119,4 +126,5 @@ snmp() {
}
sha512sums="d1020607c4c142cc2895c514dcee232a6711a01e63e35a4005249fba9a2b491ebede6dfcfc8d1e885d9d93aff34c99aaced987141040f437eba6779007d06817 frr-7.1.tar.gz
-b495b2be9f2cbb065104ccc0c3474471e870b53ac62ed4fba40020c8d50866e637a99ef3d7af5de1018ff659c4757baac4f40d7648a9de99ed14db33c8992b54 frr.initd"
+b495b2be9f2cbb065104ccc0c3474471e870b53ac62ed4fba40020c8d50866e637a99ef3d7af5de1018ff659c4757baac4f40d7648a9de99ed14db33c8992b54 frr.initd
+56153758bb543229e54343f15abdb18661317d42f2d244300c298a8ea5b6cd21d573a7379d184541f9c6110028c2049d9911849a14ae3febcc299e5a5050b2ae py3.patch"
diff --git a/testing/frr/py3.patch b/testing/frr/py3.patch
new file mode 100644
index 0000000000..cc9654adfc
--- /dev/null
+++ b/testing/frr/py3.patch
@@ -0,0 +1,1001 @@
+diff --git a/tests/topotests/all-protocol-startup/test_all_protocol_startup.py b/tests/topotests/all-protocol-startup/test_all_protocol_startup.py
+index 239de55..3e7fc07 100755
+--- a/tests/topotests/all-protocol-startup/test_all_protocol_startup.py
++++ b/tests/topotests/all-protocol-startup/test_all_protocol_startup.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_all_protocol_startup.py
+diff --git a/tests/topotests/bfd-topo1/test_bfd_topo1.py b/tests/topotests/bfd-topo1/test_bfd_topo1.py
+index 4fd4f97..192f44c 100644
+--- a/tests/topotests/bfd-topo1/test_bfd_topo1.py
++++ b/tests/topotests/bfd-topo1/test_bfd_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_bfd_topo1.py
+diff --git a/tests/topotests/bfd-topo2/test_bfd_topo2.py b/tests/topotests/bfd-topo2/test_bfd_topo2.py
+index 773db12..140ceee 100644
+--- a/tests/topotests/bfd-topo2/test_bfd_topo2.py
++++ b/tests/topotests/bfd-topo2/test_bfd_topo2.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_bfd_topo2.py
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer1/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer1/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer1/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer1/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer1/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer1/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer1/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer1/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer10/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer10/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer10/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer10/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer10/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer10/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer10/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer10/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer11/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer11/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer11/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer11/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer11/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer11/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer11/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer11/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer12/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer12/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer12/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer12/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer12/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer12/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer12/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer12/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer13/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer13/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer13/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer13/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer13/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer13/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer13/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer13/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer14/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer14/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer14/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer14/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer14/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer14/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer14/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer14/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer15/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer15/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer15/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer15/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer15/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer15/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer15/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer15/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer16/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer16/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer16/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer16/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer16/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer16/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer16/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer16/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer17/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer17/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer17/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer17/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer17/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer17/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer17/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer17/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer18/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer18/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer18/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer18/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer18/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer18/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer18/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer18/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer19/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer19/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer19/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer19/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer19/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer19/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer19/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer19/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer2/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer2/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer2/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer2/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer2/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer2/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer2/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer2/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer20/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer20/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer20/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer20/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer20/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer20/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer20/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer20/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer3/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer3/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer3/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer3/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer3/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer3/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer3/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer3/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer4/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer4/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer4/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer4/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer4/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer4/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer4/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer4/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer5/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer5/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer5/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer5/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer5/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer5/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer5/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer5/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer6/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer6/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer6/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer6/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer6/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer6/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer6/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer6/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer7/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer7/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer7/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer7/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer7/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer7/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer7/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer7/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer8/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer8/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer8/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer8/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer8/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer8/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer8/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer8/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer9/exa-receive.py b/tests/topotests/bgp-ecmp-topo1/peer9/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer9/exa-receive.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer9/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp-ecmp-topo1/peer9/exa-send.py b/tests/topotests/bgp-ecmp-topo1/peer9/exa-send.py
+index 647c254..dd2e43c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/peer9/exa-send.py
++++ b/tests/topotests/bgp-ecmp-topo1/peer9/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp-ecmp-topo1/test_bgp_ecmp_topo1.py b/tests/topotests/bgp-ecmp-topo1/test_bgp_ecmp_topo1.py
+index d806226..9e3167c 100755
+--- a/tests/topotests/bgp-ecmp-topo1/test_bgp_ecmp_topo1.py
++++ b/tests/topotests/bgp-ecmp-topo1/test_bgp_ecmp_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_bgp_ecmp_topo1.py
+diff --git a/tests/topotests/bgp-vrf-route-leak-basic/test_bgp.py b/tests/topotests/bgp-vrf-route-leak-basic/test_bgp.py
+index b0d6040..695c15c 100755
+--- a/tests/topotests/bgp-vrf-route-leak-basic/test_bgp.py
++++ b/tests/topotests/bgp-vrf-route-leak-basic/test_bgp.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_bgp.py
+diff --git a/tests/topotests/bgp_l3vpn_to_bgp_direct/customize.py b/tests/topotests/bgp_l3vpn_to_bgp_direct/customize.py
+index b464905..e14cc8d 100644
+--- a/tests/topotests/bgp_l3vpn_to_bgp_direct/customize.py
++++ b/tests/topotests/bgp_l3vpn_to_bgp_direct/customize.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # Part of NetDEF Topology Tests
+diff --git a/tests/topotests/bgp_l3vpn_to_bgp_direct/test_bgp_l3vpn_to_bgp_direct.py b/tests/topotests/bgp_l3vpn_to_bgp_direct/test_bgp_l3vpn_to_bgp_direct.py
+index f710c84..3cc7a1f 100755
+--- a/tests/topotests/bgp_l3vpn_to_bgp_direct/test_bgp_l3vpn_to_bgp_direct.py
++++ b/tests/topotests/bgp_l3vpn_to_bgp_direct/test_bgp_l3vpn_to_bgp_direct.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # Part of NetDEF Topology Tests
+diff --git a/tests/topotests/bgp_l3vpn_to_bgp_vrf/customize.py b/tests/topotests/bgp_l3vpn_to_bgp_vrf/customize.py
+index ce54241..7ad82e1 100644
+--- a/tests/topotests/bgp_l3vpn_to_bgp_vrf/customize.py
++++ b/tests/topotests/bgp_l3vpn_to_bgp_vrf/customize.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # Part of NetDEF Topology Tests
+diff --git a/tests/topotests/bgp_l3vpn_to_bgp_vrf/test_bgp_l3vpn_to_bgp_vrf.py b/tests/topotests/bgp_l3vpn_to_bgp_vrf/test_bgp_l3vpn_to_bgp_vrf.py
+index 1da1066..7c35892 100755
+--- a/tests/topotests/bgp_l3vpn_to_bgp_vrf/test_bgp_l3vpn_to_bgp_vrf.py
++++ b/tests/topotests/bgp_l3vpn_to_bgp_vrf/test_bgp_l3vpn_to_bgp_vrf.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # Part of NetDEF Topology Tests
+diff --git a/tests/topotests/bgp_local_as_private_remove/test_bgp_local_as_private_remove.py b/tests/topotests/bgp_local_as_private_remove/test_bgp_local_as_private_remove.py
+index da4b67b..b06515a 100644
+--- a/tests/topotests/bgp_local_as_private_remove/test_bgp_local_as_private_remove.py
++++ b/tests/topotests/bgp_local_as_private_remove/test_bgp_local_as_private_remove.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # bgp_local_as_private_remove.py
+diff --git a/tests/topotests/bgp_maximum_prefix_invalid_update/test_bgp_maximum_prefix_invalid_update.py b/tests/topotests/bgp_maximum_prefix_invalid_update/test_bgp_maximum_prefix_invalid_update.py
+index 69b8c7c..1955176 100644
+--- a/tests/topotests/bgp_maximum_prefix_invalid_update/test_bgp_maximum_prefix_invalid_update.py
++++ b/tests/topotests/bgp_maximum_prefix_invalid_update/test_bgp_maximum_prefix_invalid_update.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # bgp_local_as_private_remove.py
+diff --git a/tests/topotests/bgp_multiview_topo1/peer1/exa-receive.py b/tests/topotests/bgp_multiview_topo1/peer1/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer1/exa-receive.py
++++ b/tests/topotests/bgp_multiview_topo1/peer1/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp_multiview_topo1/peer1/exa-send.py b/tests/topotests/bgp_multiview_topo1/peer1/exa-send.py
+index 2de2bce..797da15 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer1/exa-send.py
++++ b/tests/topotests/bgp_multiview_topo1/peer1/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp_multiview_topo1/peer2/exa-receive.py b/tests/topotests/bgp_multiview_topo1/peer2/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer2/exa-receive.py
++++ b/tests/topotests/bgp_multiview_topo1/peer2/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp_multiview_topo1/peer2/exa-send.py b/tests/topotests/bgp_multiview_topo1/peer2/exa-send.py
+index 2de2bce..797da15 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer2/exa-send.py
++++ b/tests/topotests/bgp_multiview_topo1/peer2/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp_multiview_topo1/peer3/exa-receive.py b/tests/topotests/bgp_multiview_topo1/peer3/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer3/exa-receive.py
++++ b/tests/topotests/bgp_multiview_topo1/peer3/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp_multiview_topo1/peer3/exa-send.py b/tests/topotests/bgp_multiview_topo1/peer3/exa-send.py
+index 2de2bce..797da15 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer3/exa-send.py
++++ b/tests/topotests/bgp_multiview_topo1/peer3/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp_multiview_topo1/peer4/exa-receive.py b/tests/topotests/bgp_multiview_topo1/peer4/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer4/exa-receive.py
++++ b/tests/topotests/bgp_multiview_topo1/peer4/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp_multiview_topo1/peer4/exa-send.py b/tests/topotests/bgp_multiview_topo1/peer4/exa-send.py
+index 2de2bce..797da15 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer4/exa-send.py
++++ b/tests/topotests/bgp_multiview_topo1/peer4/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp_multiview_topo1/peer5/exa-receive.py b/tests/topotests/bgp_multiview_topo1/peer5/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer5/exa-receive.py
++++ b/tests/topotests/bgp_multiview_topo1/peer5/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp_multiview_topo1/peer5/exa-send.py b/tests/topotests/bgp_multiview_topo1/peer5/exa-send.py
+index 2de2bce..797da15 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer5/exa-send.py
++++ b/tests/topotests/bgp_multiview_topo1/peer5/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp_multiview_topo1/peer6/exa-receive.py b/tests/topotests/bgp_multiview_topo1/peer6/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer6/exa-receive.py
++++ b/tests/topotests/bgp_multiview_topo1/peer6/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp_multiview_topo1/peer6/exa-send.py b/tests/topotests/bgp_multiview_topo1/peer6/exa-send.py
+index 2de2bce..797da15 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer6/exa-send.py
++++ b/tests/topotests/bgp_multiview_topo1/peer6/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp_multiview_topo1/peer7/exa-receive.py b/tests/topotests/bgp_multiview_topo1/peer7/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer7/exa-receive.py
++++ b/tests/topotests/bgp_multiview_topo1/peer7/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp_multiview_topo1/peer7/exa-send.py b/tests/topotests/bgp_multiview_topo1/peer7/exa-send.py
+index 2de2bce..797da15 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer7/exa-send.py
++++ b/tests/topotests/bgp_multiview_topo1/peer7/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp_multiview_topo1/peer8/exa-receive.py b/tests/topotests/bgp_multiview_topo1/peer8/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer8/exa-receive.py
++++ b/tests/topotests/bgp_multiview_topo1/peer8/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp_multiview_topo1/peer8/exa-send.py b/tests/topotests/bgp_multiview_topo1/peer8/exa-send.py
+index 2de2bce..797da15 100755
+--- a/tests/topotests/bgp_multiview_topo1/peer8/exa-send.py
++++ b/tests/topotests/bgp_multiview_topo1/peer8/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp_multiview_topo1/test_bgp_multiview_topo1.py b/tests/topotests/bgp_multiview_topo1/test_bgp_multiview_topo1.py
+index 7607fe9..0030954 100755
+--- a/tests/topotests/bgp_multiview_topo1/test_bgp_multiview_topo1.py
++++ b/tests/topotests/bgp_multiview_topo1/test_bgp_multiview_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_bgp_multiview_topo1.py
+diff --git a/tests/topotests/bgp_rfapi_basic_sanity/customize.py b/tests/topotests/bgp_rfapi_basic_sanity/customize.py
+index a125c65..c385fc3 100644
+--- a/tests/topotests/bgp_rfapi_basic_sanity/customize.py
++++ b/tests/topotests/bgp_rfapi_basic_sanity/customize.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # Part of NetDEF Topology Tests
+diff --git a/tests/topotests/bgp_rfapi_basic_sanity/test_bgp_rfapi_basic_sanity.py b/tests/topotests/bgp_rfapi_basic_sanity/test_bgp_rfapi_basic_sanity.py
+index 0e1f236..7ec7dbb 100755
+--- a/tests/topotests/bgp_rfapi_basic_sanity/test_bgp_rfapi_basic_sanity.py
++++ b/tests/topotests/bgp_rfapi_basic_sanity/test_bgp_rfapi_basic_sanity.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # Part of NetDEF Topology Tests
+diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/test_bgp_show_ip_bgp_fqdn.py b/tests/topotests/bgp_show_ip_bgp_fqdn/test_bgp_show_ip_bgp_fqdn.py
+index 59ffd36..2628be9 100644
+--- a/tests/topotests/bgp_show_ip_bgp_fqdn/test_bgp_show_ip_bgp_fqdn.py
++++ b/tests/topotests/bgp_show_ip_bgp_fqdn/test_bgp_show_ip_bgp_fqdn.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_bgp_show_ip_bgp_fqdn.py
+diff --git a/tests/topotests/bgp_vrf_netns/peer1/exa-receive.py b/tests/topotests/bgp_vrf_netns/peer1/exa-receive.py
+index 5334ea5..f310eee 100755
+--- a/tests/topotests/bgp_vrf_netns/peer1/exa-receive.py
++++ b/tests/topotests/bgp_vrf_netns/peer1/exa-receive.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-receive.py: Save received routes form ExaBGP into file
+diff --git a/tests/topotests/bgp_vrf_netns/peer1/exa-send.py b/tests/topotests/bgp_vrf_netns/peer1/exa-send.py
+index 9a2a201..5c2b5c1 100755
+--- a/tests/topotests/bgp_vrf_netns/peer1/exa-send.py
++++ b/tests/topotests/bgp_vrf_netns/peer1/exa-send.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ """
+ exa-send.py: Send a few testroutes with ExaBGP
+diff --git a/tests/topotests/bgp_vrf_netns/test_bgp_vrf_netns_topo.py b/tests/topotests/bgp_vrf_netns/test_bgp_vrf_netns_topo.py
+index a5590bc..3c69dca 100755
+--- a/tests/topotests/bgp_vrf_netns/test_bgp_vrf_netns_topo.py
++++ b/tests/topotests/bgp_vrf_netns/test_bgp_vrf_netns_topo.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_bgp_vrf_netns_topo1.py
+diff --git a/tests/topotests/eigrp-topo1/test_eigrp_topo1.py b/tests/topotests/eigrp-topo1/test_eigrp_topo1.py
+index 1c00fac..adc1731 100755
+--- a/tests/topotests/eigrp-topo1/test_eigrp_topo1.py
++++ b/tests/topotests/eigrp-topo1/test_eigrp_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_eigrp_topo1.py
+diff --git a/tests/topotests/example-test/test_example.py b/tests/topotests/example-test/test_example.py
+index 8e37ad1..9637eb3 100755
+--- a/tests/topotests/example-test/test_example.py
++++ b/tests/topotests/example-test/test_example.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ import subprocess
+ import sys
+diff --git a/tests/topotests/example-test/test_template.py b/tests/topotests/example-test/test_template.py
+index 4e35ce8..6a0d298 100755
+--- a/tests/topotests/example-test/test_template.py
++++ b/tests/topotests/example-test/test_template.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # <template>.py
+diff --git a/tests/topotests/isis-topo1/test_isis_topo1.py b/tests/topotests/isis-topo1/test_isis_topo1.py
+index 941f917..ac46ca9 100644
+--- a/tests/topotests/isis-topo1/test_isis_topo1.py
++++ b/tests/topotests/isis-topo1/test_isis_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_isis_topo1.py
+diff --git a/tests/topotests/ldp-topo1/test_ldp_topo1.py b/tests/topotests/ldp-topo1/test_ldp_topo1.py
+index 409a5f5..05ff950 100755
+--- a/tests/topotests/ldp-topo1/test_ldp_topo1.py
++++ b/tests/topotests/ldp-topo1/test_ldp_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_bgp_multiview_topo1.py
+diff --git a/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.py b/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.py
+index 0948c2e..7ad5f53 100755
+--- a/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.py
++++ b/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_ldp_vpls_topo1.py
+diff --git a/tests/topotests/lib/bgprib.py b/tests/topotests/lib/bgprib.py
+index 5a81036..ac88978 100644
+--- a/tests/topotests/lib/bgprib.py
++++ b/tests/topotests/lib/bgprib.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ # Copyright 2018, LabN Consulting, L.L.C.
+ #
+diff --git a/tests/topotests/lib/ltemplate.py b/tests/topotests/lib/ltemplate.py
+index 31eaec7..2ac6247 100644
+--- a/tests/topotests/lib/ltemplate.py
++++ b/tests/topotests/lib/ltemplate.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # Part of NetDEF Topology Tests
+diff --git a/tests/topotests/lib/lutil.py b/tests/topotests/lib/lutil.py
+index 3ae1801..ad8a943 100755
+--- a/tests/topotests/lib/lutil.py
++++ b/tests/topotests/lib/lutil.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ # Copyright 2017, LabN Consulting, L.L.C.
+ #
+diff --git a/tests/topotests/lib/test/test_json.py b/tests/topotests/lib/test/test_json.py
+index 3927ba0..5f0cc00 100755
+--- a/tests/topotests/lib/test/test_json.py
++++ b/tests/topotests/lib/test/test_json.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_json.py
+diff --git a/tests/topotests/lib/test/test_version.py b/tests/topotests/lib/test/test_version.py
+index 9204ac2..96f8d64 100755
+--- a/tests/topotests/lib/test/test_version.py
++++ b/tests/topotests/lib/test/test_version.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_version.py
+diff --git a/tests/topotests/lib/topotest.py b/tests/topotests/lib/topotest.py
+index e0da20e..5ea270e 100644
+--- a/tests/topotests/lib/topotest.py
++++ b/tests/topotests/lib/topotest.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # topotest.py
+diff --git a/tests/topotests/lm-proxy-topo1/test_lm-proxy-topo1.py b/tests/topotests/lm-proxy-topo1/test_lm-proxy-topo1.py
+index 7acbb1e..10c1e9b 100644
+--- a/tests/topotests/lm-proxy-topo1/test_lm-proxy-topo1.py
++++ b/tests/topotests/lm-proxy-topo1/test_lm-proxy-topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_lm-proxy-topo1.py
+diff --git a/tests/topotests/ospf-sr-topo1/test_ospf_sr_topo1.py b/tests/topotests/ospf-sr-topo1/test_ospf_sr_topo1.py
+index 56cd42e..ebc5513 100755
+--- a/tests/topotests/ospf-sr-topo1/test_ospf_sr_topo1.py
++++ b/tests/topotests/ospf-sr-topo1/test_ospf_sr_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_ospf_sr_topo1.py
+diff --git a/tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.py b/tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.py
+index fc48544..18237a8 100755
+--- a/tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.py
++++ b/tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_ospf_topo1.py
+diff --git a/tests/topotests/ospf-topo1/test_ospf_topo1.py b/tests/topotests/ospf-topo1/test_ospf_topo1.py
+index 638e394..1a422a2 100755
+--- a/tests/topotests/ospf-topo1/test_ospf_topo1.py
++++ b/tests/topotests/ospf-topo1/test_ospf_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_ospf_topo1.py
+diff --git a/tests/topotests/ospf6-topo1/test_ospf6_topo1.py b/tests/topotests/ospf6-topo1/test_ospf6_topo1.py
+index 5da04b6..3dc7468 100755
+--- a/tests/topotests/ospf6-topo1/test_ospf6_topo1.py
++++ b/tests/topotests/ospf6-topo1/test_ospf6_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_ospf6_topo1.py
+diff --git a/tests/topotests/pim-basic/mcast-rx.py b/tests/topotests/pim-basic/mcast-rx.py
+index 9e3484e..0abd493 100755
+--- a/tests/topotests/pim-basic/mcast-rx.py
++++ b/tests/topotests/pim-basic/mcast-rx.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # mcast-rx.py
+ #
+diff --git a/tests/topotests/pim-basic/mcast-tx.py b/tests/topotests/pim-basic/mcast-tx.py
+index c469e47..a7c4b8b 100755
+--- a/tests/topotests/pim-basic/mcast-tx.py
++++ b/tests/topotests/pim-basic/mcast-tx.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # mcast-tx.py
+ #
+diff --git a/tests/topotests/pim-basic/test_pim.py b/tests/topotests/pim-basic/test_pim.py
+index 6d54b8f..73d36e9 100644
+--- a/tests/topotests/pim-basic/test_pim.py
++++ b/tests/topotests/pim-basic/test_pim.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_pim.py
+diff --git a/tests/topotests/rip-topo1/test_rip_topo1.py b/tests/topotests/rip-topo1/test_rip_topo1.py
+index 7aaaaca..a6d6175 100755
+--- a/tests/topotests/rip-topo1/test_rip_topo1.py
++++ b/tests/topotests/rip-topo1/test_rip_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_rip_topo1.py
+diff --git a/tests/topotests/ripng-topo1/test_ripng_topo1.py b/tests/topotests/ripng-topo1/test_ripng_topo1.py
+index 145b1a7..a19f047 100755
+--- a/tests/topotests/ripng-topo1/test_ripng_topo1.py
++++ b/tests/topotests/ripng-topo1/test_ripng_topo1.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ #
+ # test_ripng_topo1.py
+diff --git a/tools/fixup-deprecated.py b/tools/fixup-deprecated.py
+index 3895848..7b104c2 100755
+--- a/tools/fixup-deprecated.py
++++ b/tools/fixup-deprecated.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+ #
+ # Script used to replace deprecated quagga/frr mactors/types/etc.
+diff --git a/tools/git-reindent-branch.py b/tools/git-reindent-branch.py
+index c207f59..202cdfa 100644
+--- a/tools/git-reindent-branch.py
++++ b/tools/git-reindent-branch.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+
+ import sys, os
+diff --git a/tools/indent.py b/tools/indent.py
+index d2c41e1..d4fc2be 100755
+--- a/tools/indent.py
++++ b/tools/indent.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+ # 2017 by David Lamparter, placed in public domain
+
+diff --git a/tools/render_md.py b/tools/render_md.py
+index 16c4bbe..28b6aa7 100644
+--- a/tools/render_md.py
++++ b/tools/render_md.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # written 2016 by David Lamparter, placed in Public Domain.
+ import sys, markdown
+
+