xref: /openbsd-src/regress/usr.sbin/bgpd/integrationtests/extnh.sh (revision 167f16e42dbc7a78b2803f90ce476ed0551e3385)
1#!/bin/ksh
2#	$OpenBSD: extnh.sh,v 1.1 2025/01/13 14:18:07 claudio Exp $
3
4set -e
5
6BGPD=$1
7BGPDCONFIGDIR=$2
8RDOMAIN1=$3
9RDOMAIN2=$4
10PAIR1=$5
11PAIR2=$6
12
13RDOMAINS="${RDOMAIN1} ${RDOMAIN2}"
14PAIRS="${PAIR1} ${PAIR2}"
15PAIR1IP6=2001:db8:57::1
16PAIR2IP6=2001:db8:57::2
17PAIR2IP6_2=2001:db8:57::3
18
19error_notify() {
20	echo cleanup
21	pkill -T ${RDOMAIN1} bgpd || true
22	pkill -T ${RDOMAIN2} bgpd || true
23	sleep 1
24	ifconfig ${PAIR2} destroy || true
25	ifconfig ${PAIR1} destroy || true
26	route -qn -T ${RDOMAIN1} flush || true
27	route -qn -T ${RDOMAIN2} flush || true
28	ifconfig lo${RDOMAIN1} destroy || true
29	ifconfig lo${RDOMAIN2} destroy || true
30	if [ $1 -ne 0 ]; then
31		echo FAILED
32		exit 1
33	else
34		echo SUCCESS
35	fi
36}
37
38if [ "$(id -u)" -ne 0 ]; then
39	echo need root privileges >&2
40	exit 1
41fi
42
43trap 'error_notify $?' EXIT
44
45echo check if rdomains are busy
46for n in ${RDOMAINS}; do
47	if /sbin/ifconfig | grep -v "^lo${n}:" | grep " rdomain ${n} "; then
48		echo routing domain ${n} is already used >&2
49		exit 1
50	fi
51done
52
53echo check if interfaces are busy
54for n in ${PAIRS}; do
55	/sbin/ifconfig "${n}" >/dev/null 2>&1 && \
56	    ( echo interface ${n} is already used >&2; exit 1 )
57done
58
59set -x
60
61echo setup
62ifconfig ${PAIR1} rdomain ${RDOMAIN1} up
63ifconfig ${PAIR2} rdomain ${RDOMAIN2} up
64ifconfig ${PAIR1} inet6 ${PAIR1IP6}/64
65ifconfig ${PAIR2} inet6 ${PAIR2IP6}/64
66ifconfig ${PAIR2} inet6 ${PAIR2IP6_2}/128
67ifconfig ${PAIR1} patch ${PAIR2}
68ifconfig lo${RDOMAIN1} inet 127.0.0.1/8
69ifconfig lo${RDOMAIN2} inet 127.0.0.1/8
70
71echo run bgpds
72route -T ${RDOMAIN1} exec ${BGPD} \
73	-v -f ${BGPDCONFIGDIR}/bgpd.extnh.rdomain1.conf
74sleep 2
75route -T ${RDOMAIN2} exec ${BGPD} \
76	-v -f ${BGPDCONFIGDIR}/bgpd.extnh.rdomain2_1.conf
77route -T ${RDOMAIN2} exec ${BGPD} \
78	-v -f ${BGPDCONFIGDIR}/bgpd.extnh.rdomain2_2.conf
79sleep 5
80
81echo test
82echo "router 1 in rdomain ${RDOMAIN1}" > extnh.test1.out
83route -T ${RDOMAIN1} exec bgpctl show rib | tee -a extnh.test1.out
84echo "router 2_1 in rdomain ${RDOMAIN2}" >> extnh.test1.out
85route -T ${RDOMAIN2} exec bgpctl show rib | tee -a extnh.test1.out
86
87echo check results
88diff -u ${BGPDCONFIGDIR}/extnh.test1.ok extnh.test1.out
89echo OK
90
91exit 0
92