]> git.proxmox.com Git - mirror_frr.git/blame - tools/multiple-bgpd.sh
zebra: Refactor kernel_rtm to be a bit smarter about how it handles options
[mirror_frr.git] / tools / multiple-bgpd.sh
CommitLineData
3a02d1f7
PJ
1#!/bin/bash
2
3# Public domain, not copyrighted..
4
5NUM=5
6VTYBASE=2610
7ASBASE=64560
8BGPD=/path/to/bgpd
f04b0e6b
PJ
9PREFIX=192.168.145.
10#PREFIX=3ffe:123:456::
11ADDRPLEN=32
0e7c124f 12CONFBASE=/tmp
1a8c43f1
JAG
13PIDBASE=/var/run/frr
14CHOWNSTR=frr:frr
3a02d1f7
PJ
15
16for H in `seq 1 ${NUM}` ; do
0e7c124f 17 CONF="${CONFBASE}"/bgpd${H}.conf
f04b0e6b 18 ADDR=${PREFIX}${H}
3a02d1f7
PJ
19
20 if [ ! -e "$CONF" ] ; then
21 # This sets up a ring of bgpd peerings
22 NEXT=$(( ($H % ${NUM}) + 1 ))
50e7a388 23 PREV=$(( (($H + $NUM - 2) % ${NUM}) + 1 ))
f04b0e6b 24 NEXTADDR="${PREFIX}${NEXT}"
3a02d1f7 25 NEXTAS=$((${ASBASE} + $NEXT))
f04b0e6b 26 PREVADDR="${PREFIX}${PREV}"
3a02d1f7 27 PREVAS=$((${ASBASE} + $PREV))
c112af27 28 ASN=$((64560+${H}))
3a02d1f7
PJ
29
30 # Edit config to suit.
31 cat > "$CONF" <<- EOF
32 password whatever
33 service advanced-vty
34 !
c112af27 35 router bgp ${ASN}
3a02d1f7
PJ
36 bgp router-id ${ADDR}
37 network 10.${H}.1.0/24 pathlimit 1
38 network 10.${H}.2.0/24 pathlimit 2
39 network 10.${H}.3.0/24 pathlimit 3
40 neighbor default peer-group
41 neighbor default update-source ${ADDR}
42 neighbor default capability orf prefix-list both
43 neighbor default soft-reconfiguration inbound
c112af27 44 neighbor default route-map test out
3a02d1f7
PJ
45 neighbor ${NEXTADDR} remote-as ${NEXTAS}
46 neighbor ${NEXTADDR} peer-group default
47 neighbor ${PREVADDR} remote-as ${PREVAS}
48 neighbor ${PREVADDR} peer-group default
ce9c3cc5
PJ
49 !
50 address-family ipv6
f04b0e6b
PJ
51 network 3ffe:${H}::/48
52 network 3ffe:${H}:1::/48 pathlimit 1
53 network 3ffe:${H}:2::/48 pathlimit 3
54 network 3ffe:${H}:3::/48 pathlimit 3
ce9c3cc5
PJ
55 neighbor default activate
56 neighbor default capability orf prefix-list both
57 neighbor default default-originate
c112af27 58 neighbor default route-map test out
ce9c3cc5
PJ
59 neighbor ${NEXTADDR} peer-group default
60 neighbor ${PREVADDR} peer-group default
61 exit-address-family
62 !
50e7a388 63 ! bgpd still has problems with extcommunity rt/soo
c112af27
PJ
64 route-map test permit 10
65 set extcommunity rt ${ASN}:1
66 set extcommunity soo ${ASN}:2
67 set community ${ASN}:1
ce9c3cc5
PJ
68 line vty
69 !
70 end
3a02d1f7 71 EOF
ce9c3cc5 72 chown ${CHOWNSTR} "$CONF"
3a02d1f7
PJ
73 fi
74 # You may want to automatically add configure a local address
75 # on a loop interface.
76 #
f04b0e6b
PJ
77 # Solaris: ifconfig vni${H} plumb ${ADDR}/${ADDRPLEN} up
78 # Linux: ip address add ${ADDR}/${ADDRPLEN} dev lo 2> /dev/null
0e7c124f 79 ${BGPD} -i "${PIDBASE}"/bgpd${H}.pid \
3a02d1f7 80 -l ${ADDR} \
0e7c124f 81 -f "${CONF}" \
3a02d1f7
PJ
82 -P $((${VTYBASE}+${H})) \
83 -d
84done