]>
Commit | Line | Data |
---|---|---|
3a02d1f7 PJ |
1 | #!/bin/bash |
2 | ||
3 | # Public domain, not copyrighted.. | |
4 | ||
5 | NUM=5 | |
6 | VTYBASE=2610 | |
7 | ASBASE=64560 | |
8 | BGPD=/path/to/bgpd | |
f04b0e6b PJ |
9 | PREFIX=192.168.145. |
10 | #PREFIX=3ffe:123:456:: | |
11 | ADDRPLEN=32 | |
0e7c124f | 12 | CONFBASE=/tmp |
1a8c43f1 JAG |
13 | PIDBASE=/var/run/frr |
14 | CHOWNSTR=frr:frr | |
3a02d1f7 PJ |
15 | |
16 | for 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 | |
84 | done |