Annotation of embedaddon/quagga/tools/multiple-bgpd.sh, revision 1.1.1.2
1.1 misho 1: #!/bin/bash
2:
3: # Public domain, not copyrighted..
4:
5: NUM=5
6: VTYBASE=2610
7: ASBASE=64560
8: BGPD=/path/to/bgpd
9: PREFIX=192.168.145.
10: #PREFIX=3ffe:123:456::
11: ADDRPLEN=32
12: CONFBASE=/tmp
13: PIDBASE=/var/run/quagga
14: CHOWNSTR=quagga:quagga
15:
16: for H in `seq 1 ${NUM}` ; do
17: CONF="${CONFBASE}"/bgpd${H}.conf
18: ADDR=${PREFIX}${H}
19:
20: if [ ! -e "$CONF" ] ; then
21: # This sets up a ring of bgpd peerings
22: NEXT=$(( ($H % ${NUM}) + 1 ))
1.1.1.2 ! misho 23: PREV=$(( (($H + $NUM - 2) % ${NUM}) + 1 ))
1.1 misho 24: NEXTADDR="${PREFIX}${NEXT}"
25: NEXTAS=$((${ASBASE} + $NEXT))
26: PREVADDR="${PREFIX}${PREV}"
27: PREVAS=$((${ASBASE} + $PREV))
28: ASN=$((64560+${H}))
29:
30: # Edit config to suit.
31: cat > "$CONF" <<- EOF
32: password whatever
33: service advanced-vty
34: !
35: router bgp ${ASN}
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
44: neighbor default route-map test out
45: neighbor ${NEXTADDR} remote-as ${NEXTAS}
46: neighbor ${NEXTADDR} peer-group default
47: neighbor ${PREVADDR} remote-as ${PREVAS}
48: neighbor ${PREVADDR} peer-group default
49: !
50: address-family ipv6
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
55: neighbor default activate
56: neighbor default capability orf prefix-list both
57: neighbor default default-originate
58: neighbor default route-map test out
59: neighbor ${NEXTADDR} peer-group default
60: neighbor ${PREVADDR} peer-group default
61: exit-address-family
62: !
1.1.1.2 ! misho 63: ! bgpd still has problems with extcommunity rt/soo
1.1 misho 64: route-map test permit 10
65: set extcommunity rt ${ASN}:1
66: set extcommunity soo ${ASN}:2
67: set community ${ASN}:1
68: line vty
69: !
70: end
71: EOF
72: chown ${CHOWNSTR} "$CONF"
73: fi
74: # You may want to automatically add configure a local address
75: # on a loop interface.
76: #
77: # Solaris: ifconfig vni${H} plumb ${ADDR}/${ADDRPLEN} up
78: # Linux: ip address add ${ADDR}/${ADDRPLEN} dev lo 2> /dev/null
79: ${BGPD} -i "${PIDBASE}"/bgpd${H}.pid \
80: -l ${ADDR} \
81: -f "${CONF}" \
82: -P $((${VTYBASE}+${H})) \
83: -d
84: done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>