Add basic regress test to ospf6d.

Index: ospf6d/Makefile
===================================================================
RCS file: ospf6d/Makefile
diff -N ospf6d/Makefile
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ ospf6d/Makefile     22 Dec 2019 19:27:27 -0000
@@ -0,0 +1,10 @@
+# $OpenBSD$
+
+REGRESS_TARGETS        =       network_statement
+
+OSPF6D ?=                      /usr/sbin/ospf6d
+
+network_statement:
+       ${SUDO} ksh ${.CURDIR}/$@.sh ${OSPF6D} ${.CURDIR} 11 12 pair11 pair12
+
+.include <bsd.regress.mk>
Index: ospf6d/network_statement.sh
===================================================================
RCS file: ospf6d/network_statement.sh
diff -N ospf6d/network_statement.sh
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ ospf6d/network_statement.sh 22 Dec 2019 19:27:27 -0000
@@ -0,0 +1,107 @@
+#!/bin/ksh
+#      $OpenBSD$
+set -e
+
+OSPF6D=$1
+OSPF6DCONFIGDIR=$2
+RDOMAIN1=$3
+RDOMAIN2=$4
+PAIR1=$5
+PAIR2=$6
+
+RDOMAINS="${RDOMAIN1} ${RDOMAIN2}"
+PAIRS="${PAIR1} ${PAIR2}"
+PAIR1IP=2001:db8::${RDOMAIN1}
+PAIR2IP=2001:db8::${RDOMAIN2}
+PAIR1PREFIX=2001:db8:${RDOMAIN1}::
+PAIR2PREFIX=2001:db8:${RDOMAIN2}::
+PAIR2PREFIX2=2001:db8:${RDOMAIN2}:${RDOMAIN2}::
+
+error_notify() {
+       echo cleanup
+       pkill -T ${RDOMAIN1} ospf6d || true
+       pkill -T ${RDOMAIN2} ospf6d || true
+       sleep 1
+       ifconfig ${PAIR2} destroy || true
+       ifconfig ${PAIR1} destroy || true
+       ifconfig vether${RDOMAIN1} destroy || true
+       ifconfig vether${RDOMAIN2} destroy || true
+       route -qn -T ${RDOMAIN1} flush || true
+       route -qn -T ${RDOMAIN2} flush || true
+       ifconfig lo${RDOMAIN1} destroy || true
+       ifconfig lo${RDOMAIN2} destroy || true
+       rm ospf6d.1.conf ospf6d.2.conf
+       if [ $1 -ne 0 ]; then
+               echo FAILED
+               exit 1
+       else
+               echo SUCCESS
+       fi
+}
+
+if [ "$(id -u)" -ne 0 ]; then 
+       echo need root privileges >&2
+       exit 1
+fi
+
+trap 'error_notify $?' EXIT
+
+echo check if rdomains are busy
+for n in ${RDOMAINS}; do
+       if /sbin/ifconfig | grep -v "^lo${n}:" | grep " rdomain ${n} "; then
+               echo routing domain ${n} is already used >&2
+               exit 1
+       fi
+done
+
+echo check if interfaces are busy
+for n in ${PAIRS}; do
+       /sbin/ifconfig "${n}" >/dev/null 2>&1 && \
+           ( echo interface ${n} is already used >&2; exit 1 )
+done
+
+set -x
+
+echo setup
+ifconfig ${PAIR1} inet6 rdomain ${RDOMAIN1} ${PAIR1IP}/64 up
+ifconfig ${PAIR2} inet6 rdomain ${RDOMAIN2} ${PAIR2IP}/64 up
+ifconfig ${PAIR1} patch ${PAIR2}
+ifconfig lo${RDOMAIN1} inet 127.0.0.1/8
+ifconfig lo${RDOMAIN2} inet 127.0.0.1/8
+ifconfig vether${RDOMAIN1} inet6 rdomain ${RDOMAIN1} ${PAIR1PREFIX}/64 up
+ifconfig vether${RDOMAIN2} inet6 rdomain ${RDOMAIN2} ${PAIR2PREFIX}/64 up
+ifconfig vether${RDOMAIN2} inet6 rdomain ${RDOMAIN2} ${PAIR2PREFIX2}/64 up
+sed "s/{RDOMAIN1}/${RDOMAIN1}/g;s/{PAIR1}/${PAIR1}/g" \
+    ospf6d.network_statement.rdomain1.conf > ospf6d.1.conf
+chmod 0600 ospf6d.1.conf
+sed "s/{RDOMAIN2}/${RDOMAIN2}/g;s/{PAIR2}/${PAIR2}/g" \
+    ospf6d.network_statement.rdomain2.conf > ospf6d.2.conf
+chmod 0600 ospf6d.2.conf 
+
+echo add routes
+route -T ${RDOMAIN2} add -inet6 default ${PAIR2PREFIX}1
+route -T ${RDOMAIN2} add 2001:db8:ffff::/126 ${PAIR2PREFIX}2
+route -T ${RDOMAIN2} add 2001:db8:fffe::/64 ${PAIR2PREFIX}3 -label toOSPF
+
+echo start ospf6d
+route -T ${RDOMAIN1} exec ${OSPF6D} \
+    -v -f ${OSPF6DCONFIGDIR}/ospf6d.1.conf
+route -T ${RDOMAIN2} exec ${OSPF6D} \
+    -v -f ${OSPF6DCONFIGDIR}/ospf6d.2.conf
+
+sleep 120
+
+echo tests
+route -T ${RDOMAIN1} exec ospf6ctl sh fib
+route -T ${RDOMAIN1} exec ospf6ctl sh rib | \
+    grep ${PAIR2PREFIX}/64
+route -T ${RDOMAIN1} exec ospf6ctl sh rib | \
+    grep ${PAIR2PREFIX2}/64
+route -T ${RDOMAIN1} exec ospf6ctl sh rib | \
+    grep "2001:db8:ffff::/126"
+route -T ${RDOMAIN1} exec ospf6ctl sh rib | \
+    grep "::/0"
+route -T ${RDOMAIN1} exec ospf6ctl sh rib | \
+    grep "2001:db8:fffe::/64"
+
+exit 0
Index: ospf6d/ospf6d.network_statement.rdomain1.conf
===================================================================
RCS file: ospf6d/ospf6d.network_statement.rdomain1.conf
diff -N ospf6d/ospf6d.network_statement.rdomain1.conf
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ ospf6d/ospf6d.network_statement.rdomain1.conf       22 Dec 2019 19:27:27 
-0000
@@ -0,0 +1,10 @@
+router-id 1.1.1.1
+rdomain {RDOMAIN1}
+
+fib-priority 62
+
+area 10.0.0.1 {
+       interface lo{RDOMAIN1}
+       interface vether{RDOMAIN1}
+       interface {PAIR1}
+}
Index: ospf6d/ospf6d.network_statement.rdomain2.conf
===================================================================
RCS file: ospf6d/ospf6d.network_statement.rdomain2.conf
diff -N ospf6d/ospf6d.network_statement.rdomain2.conf
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ ospf6d/ospf6d.network_statement.rdomain2.conf       22 Dec 2019 19:27:27 
-0000
@@ -0,0 +1,12 @@
+router-id 2.2.2.2
+rdomain {RDOMAIN2}
+
+redistribute 2001:db8:ffff::/126
+redistribute default
+redistribute rtlabel toOSPF 
+
+area 10.0.0.1 {
+       interface lo{RDOMAIN2}
+       interface vether{RDOMAIN2}
+       interface {PAIR2}
+}

Reply via email to