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>