xref: /openbsd-src/regress/usr.sbin/bgpd/integrationtests/addpath.sh (revision 815e5984d77f050740eb121d0024d95eda1e2aa5)
1#!/bin/ksh
2#	$OpenBSD: addpath.sh,v 1.1 2025/01/14 13:15:18 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}"
15PAIR1IP=192.0.2.2
16PAIR2IP=192.0.2.11
17PAIR2IP2=192.0.2.21
18PAIR2IP3=192.0.2.31
19PAIR2IP4=192.0.2.41
20PAIR2IP5=192.0.2.51
21
22error_notify() {
23	echo cleanup
24	pkill -T ${RDOMAIN1} bgpd || true
25	pkill -T ${RDOMAIN2} bgpd || true
26	sleep 1
27	ifconfig ${PAIR2} destroy || true
28	ifconfig ${PAIR1} destroy || true
29	route -qn -T ${RDOMAIN1} flush || true
30	route -qn -T ${RDOMAIN2} flush || true
31	ifconfig lo${RDOMAIN1} destroy || true
32	ifconfig lo${RDOMAIN2} destroy || true
33	if [ $1 -ne 0 ]; then
34		echo FAILED
35		exit 1
36	else
37		echo SUCCESS
38	fi
39}
40
41if [ "$(id -u)" -ne 0 ]; then
42	echo need root privileges >&2
43	exit 1
44fi
45
46. "${BGPDCONFIGDIR}/util.sh"
47
48trap 'error_notify $?' EXIT
49
50echo check if rdomains are busy
51for n in ${RDOMAINS}; do
52	if /sbin/ifconfig | grep -v "^lo${n}:" | grep " rdomain ${n} "; then
53		echo routing domain ${n} is already used >&2
54		exit 1
55	fi
56done
57
58echo check if interfaces are busy
59for n in ${PAIRS}; do
60	/sbin/ifconfig "${n}" >/dev/null 2>&1 && \
61	    ( echo interface ${n} is already used >&2; exit 1 )
62done
63
64set -x
65
66echo setup
67ifconfig ${PAIR1} rdomain ${RDOMAIN1} ${PAIR1IP}/24 up
68ifconfig ${PAIR2} rdomain ${RDOMAIN2} ${PAIR2IP}/24 up
69ifconfig ${PAIR2} alias ${PAIR2IP2}/32
70ifconfig ${PAIR2} alias ${PAIR2IP3}/32
71ifconfig ${PAIR2} alias ${PAIR2IP4}/32
72ifconfig ${PAIR2} alias ${PAIR2IP5}/32
73ifconfig ${PAIR1} patch ${PAIR2}
74ifconfig lo${RDOMAIN1} inet 127.0.0.1/8
75ifconfig lo${RDOMAIN2} inet 127.0.0.1/8
76
77echo run bgpds
78route -T ${RDOMAIN1} exec ${BGPD} \
79	-v -f ${BGPDCONFIGDIR}/bgpd.addpath.rdomain1.conf
80sleep 2
81route -T ${RDOMAIN2} exec ${BGPD} \
82	-v -f ${BGPDCONFIGDIR}/bgpd.addpath.rdomain2_1.conf
83route -T ${RDOMAIN2} exec ${BGPD} \
84	-v -f ${BGPDCONFIGDIR}/bgpd.addpath.rdomain2_2.conf
85route -T ${RDOMAIN2} exec ${BGPD} \
86	-v -f ${BGPDCONFIGDIR}/bgpd.addpath.rdomain2_3.conf
87route -T ${RDOMAIN2} exec ${BGPD} \
88	-v -f ${BGPDCONFIGDIR}/bgpd.addpath.rdomain2_4.conf
89route -T ${RDOMAIN2} exec ${BGPD} \
90	-v -f ${BGPDCONFIGDIR}/bgpd.addpath.rdomain2_5.conf
91
92sleep 7
93
94route -T ${RDOMAIN1} exec bgpctl show
95route -T ${RDOMAIN2} exec bgpctl show rib | tee addpath.rdomain2.out
96
97diff -u ${BGPDCONFIGDIR}/addpath.rdomain2.ok addpath.rdomain2.out
98echo OK
99
100exit 0
101