File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / tools / multiple-bgpd.sh
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Oct 9 09:22:29 2012 UTC (11 years, 8 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, v0_99_22p0, v0_99_22, v0_99_21, HEAD
quagga

    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 + $NUM - 2) % ${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: 			! bgpd still has problems with extcommunity rt/soo
   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>