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>