Annotation of embedaddon/quagga/tools/multiple-bgpd.sh, revision 1.1
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 ))
! 23: PREV=$(( (($H + 3) % ${NUM}) + 1 ))
! 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: !
! 63: route-map test permit 10
! 64: set extcommunity rt ${ASN}:1
! 65: set extcommunity soo ${ASN}:2
! 66: set community ${ASN}:1
! 67: line vty
! 68: !
! 69: end
! 70: EOF
! 71: chown ${CHOWNSTR} "$CONF"
! 72: fi
! 73: # You may want to automatically add configure a local address
! 74: # on a loop interface.
! 75: #
! 76: # Solaris: ifconfig vni${H} plumb ${ADDR}/${ADDRPLEN} up
! 77: # Linux: ip address add ${ADDR}/${ADDRPLEN} dev lo 2> /dev/null
! 78: ${BGPD} -i "${PIDBASE}"/bgpd${H}.pid \
! 79: -l ${ADDR} \
! 80: -f "${CONF}" \
! 81: -P $((${VTYBASE}+${H})) \
! 82: -d
! 83: done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>