summaryrefslogtreecommitdiff
path: root/regress/usr.sbin/bgpd/integrationtests/network_statement.sh
blob: 12eff0d9b7e2c781a7ed390a2b2ec3728cf8c9f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/ksh
#	$OpenBSD: network_statement.sh,v 1.3 2018/11/07 16:57:59 claudio Exp $

set -e

BGPD=$1
BGPDCONFIGDIR=$2
RDOMAIN1=$3
RDOMAIN2=$4
PAIR1=$5
PAIR2=$6

RDOMAINS="${RDOMAIN1} ${RDOMAIN2}"
PAIRS="${PAIR1} ${PAIR2}"
PAIR1IP=10.12.57.1
PAIR2IP=10.12.57.2
PAIR2STATIC=10.12.58.0/24
PAIR2CONNIP=10.12.59.1
PAIR2CONNPREF=24
PAIR2CONN=10.12.59.0/24
PAIR2RTABLE=10.12.60.0/24
PAIR2PRIORITY=10.12.61.0/24
PAIR2PREFIXSET=10.12.62.0/24


error_notify() {
	echo cleanup
	pkill -T ${RDOMAIN1} bgpd || true
	pkill -T ${RDOMAIN2} bgpd || true
	sleep 1
	ifconfig ${PAIR2} destroy || true
	ifconfig ${PAIR1} destroy || true
	route -qn -T ${RDOMAIN1} flush || true
	route -qn -T ${RDOMAIN2} flush || true
	ifconfig lo${RDOMAIN1} destroy || true
	ifconfig lo${RDOMAIN2} destroy || true
	if [ $1 -ne 0 ]; then
		echo FAILED
		exit 1
	else
		echo SUCCESS
	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

echo setup
ifconfig ${PAIR1} rdomain ${RDOMAIN1} ${PAIR1IP}/30 up
ifconfig ${PAIR2} rdomain ${RDOMAIN2} ${PAIR2IP}/30 up
ifconfig ${PAIR1} patch ${PAIR2}
ifconfig lo${RDOMAIN1} inet 127.0.0.1/8
ifconfig lo${RDOMAIN2} inet 127.0.0.1/8

echo add routes
route -T ${RDOMAIN2} add ${PAIR2STATIC} ${PAIR1IP}
ifconfig ${PAIR2} alias ${PAIR2CONNIP}/${PAIR2CONNPREF}
route -T ${RDOMAIN2} add -label PAIR2RTABLE ${PAIR2RTABLE} \
	${PAIR1IP}
route -T ${RDOMAIN2} add -priority 55 ${PAIR2PRIORITY} \
	${PAIR1IP}
route -T ${RDOMAIN1} exec ${BGPD} \
	-v -f ${BGPDCONFIGDIR}/bgpd.network_statement.rdomain1.conf
route -T ${RDOMAIN2} exec ${BGPD} \
	-v -f ${BGPDCONFIGDIR}/bgpd.network_statement.rdomain2.conf

sleep 2

echo test 1
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2STATIC} | \
	grep ${PAIR2STATIC}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2CONN} | \
	grep ${PAIR2CONN}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2RTABLE} | \
	grep ${PAIR2RTABLE}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2PRIORITY} | \
	grep ${PAIR2PRIORITY}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2PREFIXSET} | \
	grep ${PAIR2PREFIXSET}

echo delete routes
route -T ${RDOMAIN2} delete ${PAIR2STATIC} ${PAIR1IP}
ifconfig ${PAIR2} -alias ${PAIR2CONNIP}
route -T ${RDOMAIN2} delete -label PAIR2RTABLE ${PAIR2RTABLE} \
	${PAIR1IP}
route -T ${RDOMAIN2} delete -priority 55 ${PAIR2PRIORITY} \
	${PAIR1IP}

sleep 1

echo test 2
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2STATIC} | \
	! grep ${PAIR2STATIC}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2CONN} | \
	! grep ${PAIR2CONN}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2RTABLE} | \
	! grep ${PAIR2RTABLE}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2PRIORITY} | \
	! grep ${PAIR2PRIORITY}

sleep 1

echo add routes
route -T ${RDOMAIN2} add ${PAIR2STATIC} ${PAIR1IP}
ifconfig ${PAIR2} alias ${PAIR2CONNIP}/${PAIR2CONNPREF}
route -T ${RDOMAIN2} add -label PAIR2RTABLE ${PAIR2RTABLE} \
	${PAIR1IP}
route -T ${RDOMAIN2} add -priority 55 ${PAIR2PRIORITY} \
	${PAIR1IP}

sleep 1

echo test 3
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2STATIC} | \
	grep ${PAIR2STATIC}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2CONN} | \
	grep ${PAIR2CONN}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2RTABLE} | \
	grep ${PAIR2RTABLE}
route -T ${RDOMAIN1} exec bgpctl sh rib ${PAIR2PRIORITY} | \
	grep ${PAIR2PRIORITY}

exit 0