⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_rib1.sh

📁 xorp源码hg
💻 SH
字号:
#!/usr/bin/env bash## $XORP: xorp/bgp/harness/test_rib1.sh,v 1.22 2006/09/28 15:52:26 zec Exp $### Test basic BGP and RIB interaction. Note that all the tests are run twice# once with the RIB unconfigured and once with the RIB configured.## This script started with no arguments will start all required process and# terminate them at the end of the tests.## Preconditons# 1) Run a finder process# 2) Run a FEA process.# 3) Run a RIB process.# 4) Run xorp "../xorp_bgp"# 5) Run "./test_peer -s peer1"# 6) Run "./coord"#set -eonexit(){    last=$?    if [ $last = "0" ]    then	echo "$0: Tests Succeeded"    else	echo "$0: Tests Failed"    fi    trap '' 0 2}trap onexit 0 2# srcdir is set by make for check targetif [ "X${srcdir}" = "X" ] ; then srcdir=`dirname $0` ; fi. ${srcdir}/xrl_shell_funcs.sh "". ${srcdir}/../xrl_shell_funcs.sh "". ${srcdir}/../../rib/xrl_shell_funcs.sh ""HOST=127.0.0.1AS=65008# IBGP - IPV4PORT1=10000PEER1_PORT=20001PEER1_AS=$AS# EBGP - IPV4PORT2=10001PEER2_PORT=20001PEER2_AS=65009# IBGP - IPV6PORT1_IPV6=10002PEER1_PORT_IPV6=20002PEER1_AS_IPV6=$AS# EBGP - IPV6PORT2_IPV6=10003PEER2_PORT_IPV6=20003PEER2_AS_IPV6=65009HOLDTIME=5configure_bgp(){    LOCALHOST=$HOST    ID=192.150.187.78    local_config $AS $ID    # IBGP - IPV4    PEER=$HOST    NEXT_HOP=192.150.187.78    PORT=$PORT1;PEER_PORT=$PEER1_PORT;PEER_AS=$PEER1_AS    IPTUPLE="$LOCALHOST $PORT $PEER $PEER_PORT"    add_peer $IPTUPLE $PEER_AS $NEXT_HOP $HOLDTIME    set_parameter $IPTUPLE MultiProtocol.IPv4.Unicast true    enable_peer $IPTUPLE    # EBGP - IPV4    PEER=$HOST    NEXT_HOP=192.150.187.78    PORT=$PORT2;PEER_PORT=$PEER2_PORT;PEER_AS=$PEER2_AS    IPTUPLE="$LOCALHOST $PORT $PEER $PEER_PORT"    add_peer $IPTUPLE $PEER_AS $NEXT_HOP $HOLDTIME    set_parameter $IPTUPLE MultiProtocol.IPv4.Unicast true    enable_peer $IPTUPLE    # IBGP - IPV6    PEER=$HOST    NEXT_HOP=192.150.187.78    PORT=$PORT1_IPV6;PEER_PORT=$PEER1_PORT_IPV6;PEER_AS=$PEER1_AS_IPV6    IPTUPLE="$LOCALHOST $PORT $PEER $PEER_PORT"    add_peer $IPTUPLE $PEER_AS $NEXT_HOP $HOLDTIME    set_parameter $IPTUPLE MultiProtocol.IPv6.Unicast true    enable_peer $IPTUPLE    # EBGP - IPV6    PEER=$HOST    NEXT_HOP=192.150.187.78    PORT=$PORT2_IPV6;PEER_PORT=$PEER2_PORT_IPV6;PEER_AS=$PEER2_AS_IPV6    IPTUPLE="$LOCALHOST $PORT $PEER $PEER_PORT"    add_peer $IPTUPLE $PEER_AS $NEXT_HOP $HOLDTIME    set_parameter $IPTUPLE MultiProtocol.IPv6.Unicast true    enable_peer $IPTUPLE}# Next Hops#NH1=10.10.10.10#NH2=20.20.20.20NH1=172.16.1.1NH2=172.16.2.1NH1_IPV6=40:40:40:40:40:40:40:40NH2_IPV6=50:50:50:50:50:50:50:50configure_rib(){    make_rib_errors_fatal    VIF0="vif0"    VIF1="vif1"    VIF0_IPV6="vif2"    VIF1_IPV6="vif3"    new_vif $VIF0    new_vif $VIF1    new_vif $VIF0_IPV6    new_vif $VIF1_IPV6    add_vif_addr4 $VIF0 $NH1 $NH1/24    add_vif_addr4 $VIF1 $NH2 $NH2/24    add_vif_addr6 $VIF0_IPV6 $NH1_IPV6 $NH1_IPV6/24    add_vif_addr6 $VIF1_IPV6 $NH2_IPV6 $NH2_IPV6/24}reset_ibgp(){    coord reset    coord target $HOST $PORT1    coord initialise attach peer1    # Allow the initialization to take place    sleep 1}reset_ibgp_ipv6(){    coord reset    coord target $HOST $PORT1_IPV6    coord initialise attach peer1    # Allow the initialization to take place    sleep 1}reset_ebgp(){    coord reset    coord target $HOST $PORT2    coord initialise attach peer1    # Allow the initialization to take place    sleep 1}reset_ebgp_ipv6(){    coord reset    coord target $HOST $PORT2_IPV6    coord initialise attach peer1    # Allow the initialization to take place    sleep 1}test1(){    echo "TEST1 - Send the same route to IBGP hence RIB twice"    reset_ibgp    coord peer1 establish AS $PEER1_AS holdtime 0 id 192.150.187.100    sleep 2    PACKET="packet update	origin 2	aspath 1	nexthop $NH1	nlri 10.10.10.0/24	nlri 20.20.20.20/24"    coord peer1 send $PACKET    coord peer1 send $PACKET        coord peer1 assert established}test1_ipv6(){    echo "TEST1 IPV6 - Send the same route to IBGP hence RIB twice"    reset_ibgp_ipv6    coord peer1 establish AS $PEER1_AS_IPV6 holdtime 0 id 192.150.187.100    sleep 2    NLRI1=10:10:10:10:10:00:00:00/80    NLRI2=20:20:20:20:20:00:00:00/80    PACKET="packet update	origin 2	aspath 15	nexthop6 $NH1_IPV6	nlri6 $NLRI1	nlri6 $NLRI2"    coord peer1 send $PACKET    coord peer1 send $PACKET        coord peer1 assert established}test2(){    echo "TEST2 - Send the same route to EBGP hence RIB twice"    reset_ebgp    coord peer1 establish AS $PEER2_AS holdtime 0 id 192.150.187.100    sleep 2    PACKET="packet update	origin 2	aspath $PEER2_AS	nexthop $NH1	nlri 10.10.10.0/24	nlri 20.20.20.20/24"    coord peer1 send $PACKET    coord peer1 send $PACKET        coord peer1 assert established}test3(){    echo "TEST3 - Send the same route to BGP hence RIB twice"    reset_ebgp    coord peer1 establish AS $PEER2_AS holdtime 0 id 192.150.187.100    sleep 2    PACKET="packet update	origin 2	aspath 65009	nexthop 192.150.187.2	nlri 10.10.10.0/24	nlri 20.20.20.20/24"    coord peer1 send $PACKET    sleep 2    coord peer1 send $PACKET    sleep 2    coord peer1 assert established}test4(){    if [ ${RIB_CONFIGURED:-""} == "" ]    then	return    fi    echo "TEST4 - Exercise the next hop resolver"    reset_ebgp    coord peer1 establish AS $PEER2_AS holdtime 0 id 192.150.187.100    sleep 2    PACKET1="packet update	origin 2	aspath 65009	nexthop 128.16.0.1	nlri 10.10.10.0/24	nlri 20.20.20.20/24"    PACKET2="packet update	origin 2	aspath 65009	nexthop 128.16.1.1	nlri 30.30.30.30/24	nlri 40.40.40.40/24"    # XXX This next hop should not resolve.    coord peer1 send $PACKET1    coord peer1 send $PACKET2    sleep 2    # Lets get it to resolve.    add_route4 connected true false 128.16.0.0/16 172.16.1.2 1    # Add a different route.    add_route4 connected true false 128.16.0.0/24 172.16.2.2 1        # Delete the better route.    delete_route4 connected true false 128.16.0.0/24    sleep 2    coord peer1 assert established}test5(){    if [ ${RIB_CONFIGURED:-""} == "" ]    then	return    fi    echo "TEST5 - Exercise the next hop resolver"    reset_ebgp    coord peer1 establish AS $PEER2_AS holdtime 0 id 192.150.187.100    sleep 2    PACKET1="packet update	origin 2	aspath 65009	nexthop 128.16.0.1	nlri 10.10.10.0/24	nlri 20.20.20.20/24"    PACKET2="packet update	origin 2	aspath 65009	nexthop 128.16.1.1	nlri 30.30.30.30/24	nlri 40.40.40.40/24"    # Lets get it to resolve.    add_route4 connected true false 128.16.0.0/16 172.16.1.2 1    # Add a different route.    add_route4 connected true false 128.16.0.0/24 172.16.2.2 1        coord peer1 send $PACKET1    coord peer1 send $PACKET2    sleep 2    coord peer1 assert established}test6(){    ITER=5    echo "TEST6 - Send an update packet on an EBGP $ITER times"    PACKET='packet update	origin 1	aspath 65009	nexthop 20.20.20.20 	nlri 10.10.10.0/24	nlri 20.20.20.20/24'    coord reset    coord target $HOST $PORT2    coord initialise attach peer1    # Allow the initialization to take place    sleep 1    coord peer1 establish AS $PEER2_AS holdtime 0 id 192.150.187.100    sleep 2    coord peer1 assert established    set +e    let i=0    while ((i++ < $ITER))    do	# Using the (()) syntax seems to have invoked a new shell.	# Any errors have to be explicitly propagated.	trap 'exit $?' 0 2	set -e	echo "Iteration: $i"	coord peer1 send $PACKET	coord peer1 trie sent lookup 10.10.10.0/24 aspath 65009	coord peer1 send packet update withdraw 10.10.10.0/24	coord peer1 send packet update withdraw 20.20.20.0/24	coord peer1 assert established	# Every IPC call uses up more ports. Stop sending IPC's when	# there are too few ports left.	ports=$(netstat | wc -l)	if (($ports > 900))	then	    echo "$ports sockets in use bailing"	    break	fi    done    set -e    sleep 2    coord peer1 assert established}test7(){    if [ ${RIB_CONFIGURED:-""} == "" ]    then	return    fi    echo "TEST7 - Try and force BGP to deregister interest from the RIB"    reset_ebgp    coord peer1 establish AS $PEER2_AS holdtime 0 id 192.150.187.100    PACKET_ADD1="packet update	origin 2	aspath 65009	nexthop 128.16.0.1	nlri 10.10.10.0/24"    PACKET_ADD2="packet update	origin 2	aspath 65009	nexthop 128.16.1.1	nlri 20.20.20.20/24"    PACKET_WITHDRAW="packet update	withdraw 10.10.10.0/24	withdraw 20.20.20.20/24"    # Lets get it to resolve.    add_route4 connected true false 128.16.0.0/16 172.16.1.2 1    sleep 2    # Add a different route.    add_route4 connected true false 128.16.0.0/24 172.16.2.2 1    sleep 2    coord peer1 send $PACKET_ADD1    coord peer1 send $PACKET_ADD2    sleep 2    # delete the routes     delete_route4 connected true false 128.16.0.0/24    delete_route4 connected true false 128.16.0.0/16    coord peer1 send $PACKET_WITHDRAW    sleep 2    coord peer1 assert established}test8(){    if [ ${RIB_CONFIGURED:-""} == "" ]    then	return    fi    echo "TEST8 - Exercise the next hop resolver"    reset_ebgp    coord peer1 establish AS $PEER2_AS holdtime 0 id 192.150.187.100    sleep 2    PACKET1="packet update	origin 2	aspath 65009	nexthop 128.16.0.1	nlri 10.10.10.0/24	nlri 20.20.20.20/24"    PACKET2="packet update	origin 2	aspath 65009	nexthop 128.16.1.1	nlri 30.30.30.30/24	nlri 40.40.40.40/24"    # XXX This next hop should not resolve.    coord peer1 send $PACKET1    coord peer1 send $PACKET2    sleep 2    # Lets get it to resolve.    add_route4 connected true false 128.16.0.0/16 172.16.1.2 1    # Add a different route.    add_route4 connected true false 128.16.0.0/24 172.16.2.2 2        # Delete the better route.    delete_route4 connected true false 128.16.0.0/24    sleep 2    coord peer1 assert established}test9(){    if [ ${RIB_CONFIGURED:-""} == "" ]    then	return    fi    echo "TEST9 - Check nexthop change on originated route"    reset_ebgp    #we won't use this peering, but at least it checks that BGP is    #still running    coord peer1 establish AS $PEER2_AS holdtime 0 id 192.150.187.100    sleep 2    originate_route4 10.10.10.0/24 10.69.1.1 true false    # Lets get it to resolve.    add_route4 connected true false 10.69.1.0/24 172.16.1.2 1    # Delete the route.    delete_route4 connected true false 10.69.1.0/24     sleep 2    coord peer1 assert established}test10(){    if [ ${RIB_CONFIGURED:-""} == "" ]    then	return    fi    echo "TEST10 - Nexthop resolver crashes if queuing a 0.0.0.0/0 nlri"    reset_ebgp    coord peer1 establish AS $PEER2_AS holdtime 0 id 192.150.187.100    sleep 2    PACKET1="packet update	origin 2	aspath 65009	nexthop 128.16.0.1	nlri 0.0.0.0/0	nlri 20.20.20.20/24"    # Lets get it to resolve.    add_route4 connected true false 128.16.0.0/16 172.16.1.2 1    coord peer1 send $PACKET1    sleep 2    coord peer1 assert established}TESTS_NOT_FIXED=''TESTS='test1 test1_ipv6 test2 test3 test4 test5 test6 test7 test8 test9 test10'# Include command line. ${srcdir}/args.shif [ $START_PROGRAMS = "yes" ]then    CXRL="$CALLXRL -r 10"    runit $QUIET $VERBOSE -c "$0 -s -c $*" <<EOF    ../../libxipc/xorp_finder    ../../fea/xorp_fea_dummy  = $CXRL finder://fea/common/0.1/get_target_name    ../../rib/xorp_rib        = $CXRL finder://rib/common/0.1/get_target_name    ../xorp_bgp               = $CXRL finder://bgp/common/0.1/get_target_name    ./test_peer -s peer1      = $CXRL finder://peer1/common/0.1/get_target_name    ./coord                   = $CXRL finder://coord/common/0.1/get_target_nameEOF    trap '' 0    exit $?fi# We run each test twice once with the RIB configured and once without.if [ $CONFIGURE = "yes" ]then    configure_bgpfifor i in $TESTSdo    $idoneif [ $CONFIGURE = "yes" ]then    configure_rib    RIB_CONFIGURED=truefifor i in $TESTSdo# Temporary fix to let TCP sockets created by call_xrl pass through TIME_WAIT    TIME_WAIT=`time_wait_seconds`    echo "Waiting $TIME_WAIT seconds for TCP TIME_WAIT state timeout"    sleep $TIME_WAIT    $idone# Local Variables:# mode: shell-script# sh-indentation: 4# End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -