Bug fix, can`t create new interface
[one.git] / tests / data_plane / vpp_lite_topo / lisp_test.sh
1 #!/usr/bin/env bash
2
3 if [ "$1" == "-h" ] || [ "$1" == "-help" ] ; then
4   echo "lisp_test.sh [ip4] [ip6] [ip4_ip6] [4o6] [6o4] [remote] [remote6]"
5   echo "        ip4 - test ip4 topology"
6   echo "        ip6 - test ip6 topology"
7   echo "        ip4_ip6 - test ip4 and ip6 topology"
8   echo "        4o6 - test ip4 over ip6"
9   echo "        6o4 - test ip6 over ip4"
10   echo "        remote - test statick mapping, whit out ODL"
11   echo "        remote6 - test statick mapping for IPv6, whit out ODL"
12   exit 0
13 fi
14
15 set -x
16
17 # path to vpp executable and configurations folder
18 # VPP_LITE_BIN=/vpp/build-root/install-vpp_lite_debug-native/vpp/bin/vpp
19 VPP_LITE_BIN=/home/csit/lisp_vpp/build-root/install-vpp_lite_debug-native/vpp/bin/vpp
20 VPP_LITE_CONF=`pwd`"/../configs/vpp_lite_config/"
21 VPP1_CONF="vpp1.conf"
22 VPP2_CONF="vpp2.conf"
23 ODL_CONFIG_DIR="../configs/odl/"
24 ODL_ADD_CONFIG1="add_ipv4_odl1.txt"
25 ODL_ADD_CONFIG1_4o6="add_ipv4o6_odl1.txt"
26 ODL_ADD_CONFIG1_6="add_ipv6_odl1.txt"
27 ODL_ADD_CONFIG1_6o4="add_ipv6o4_odl1.txt"
28 ODL_ADD_CONFIG2="add_ipv4_odl2.txt"
29 ODL_ADD_CONFIG2_4o6="add_ipv4o6_odl2.txt"
30 ODL_ADD_CONFIG2_6="add_ipv6_odl2.txt"
31 ODL_ADD_CONFIG2_6o4="add_ipv6o4_odl2.txt"
32 ODL_REPLACE_CONFIG2="replace_ipv4_odl2.txt"
33 ODL_REPLACE_CONFIG2_4o6="replace_ipv4o6_odl2.txt"
34 ODL_REPLACE_CONFIG2_6="replace_ipv6_odl2.txt"
35 ODL_REPLACE_CONFIG2_6o4="replace_ipv6o4_odl2.txt"
36
37 ODL_USER="admin"
38 ODL_PASSWD="admin"
39 ODL_IP="127.0.0.1"
40 ODL_PORT="8181"
41
42 function post_curl {
43   curl -X POST http://${ODL_IP}:${ODL_PORT}/restconf/operations/odl-mappingservice:${1} \
44      -H "Content-Type: application/json" --data-binary "@${ODL_CONFIG_DIR}${2}" \
45      -u ${ODL_USER}:${ODL_PASSWD}
46 }
47
48 # make sure there are no vpp instances running
49 sudo pkill vpp
50
51 # delete previous incarnations if they exist
52 sudo ip netns exec intervppns ifconfig vppbr down
53 sudo ip netns exec intervppns brctl delbr vppbr
54 sudo ip link del dev veth_vpp1 &> /dev/null
55 sudo ip link del dev veth_vpp2 &> /dev/null
56 sudo ip link del dev veth_intervpp1 &> /dev/null
57 sudo ip link del dev veth_intervpp2 &> /dev/null
58 sudo ip link del dev veth_odl &> /dev/null
59 sudo ip netns del vppns1 &> /dev/null
60 sudo ip netns del vppns2 &> /dev/null
61 sudo ip netns del intervppns &> /dev/null
62
63 if [ "$1" != "remote" ] && [ "$1" != "remote6" ]  ; then
64   curl -X DELETE http://${ODL_IP}:${ODL_PORT}/restconf/config/odl-mappingservice:mapping-database/ \
65        -u ${ODL_USER}:${ODL_PASSWD}
66 fi
67
68 if [ "$1" == "clean" ] ; then
69   exit 0;
70 fi
71
72 sleep 1
73
74 # create vpp to clients and inter-vpp namespaces
75 sudo ip netns add vppns1
76 sudo ip netns add vppns2
77 sudo ip netns add intervppns
78
79 # create vpp and odl interfaces and set them in intervppns
80 sudo ip link add veth_intervpp1 type veth peer name intervpp1
81 sudo ip link add veth_intervpp2 type veth peer name intervpp2
82 sudo ip link add veth_odl type veth peer name odl
83 sudo ip link set dev intervpp1 up
84 sudo ip link set dev intervpp2 up
85 sudo ip link set dev odl up
86 sudo ip link set dev veth_intervpp1 up netns intervppns
87 sudo ip link set dev veth_intervpp2 up netns intervppns
88 sudo ip link set dev veth_odl up netns intervppns
89
90 # create bridge in intervppns and add vpp and odl interfaces
91 sudo ip netns exec intervppns brctl addbr vppbr
92 sudo ip netns exec intervppns brctl addif vppbr veth_intervpp1
93 sudo ip netns exec intervppns brctl addif vppbr veth_intervpp2
94 sudo ip netns exec intervppns brctl addif vppbr veth_odl
95 sudo ip netns exec intervppns ifconfig vppbr up
96
97 # create and configure 1st veth client to vpp pair
98 sudo ip link add veth_vpp1 type veth peer name vpp1
99 sudo ip link set dev vpp1 up
100 sudo ip link set dev veth_vpp1 up netns vppns1
101
102 # create and configure 2nd veth client to vpp pair
103 sudo ip link add veth_vpp2 type veth peer name vpp2
104 sudo ip link set dev vpp2 up
105 sudo ip link set dev veth_vpp2 up netns vppns2
106
107 # set odl iface ip and disable checksum offloading
108 sudo ip addr add 6.0.3.100/24 dev odl
109 sudo ip addr add 6:0:3::100/64 dev odl
110 sudo ethtool --offload  odl rx off tx off
111
112 if [ "$1" == "ip6" ] ; then
113   VPP1_CONF="vpp1_6.conf"
114   VPP2_CONF="vpp2_6.conf"
115 fi
116
117 if [ "$1" == "ip4_ip6" ] ; then
118   VPP1_CONF="vpp1_ip4_6.conf"
119   VPP2_CONF="vpp2_ip4_6.conf"
120 fi
121
122 if [ "$1" == "4o6" ] ; then
123   VPP1_CONF="vpp1_4o6.conf"
124   VPP2_CONF="vpp2_4o6.conf"
125 fi
126
127 if [ "$1" == "6o4" ] ; then
128   VPP1_CONF="vpp1_6o4.conf"
129   VPP2_CONF="vpp2_6o4.conf"
130 fi
131
132 if [ "$1" == "remote" ] ; then
133   VPP1_CONF="vpp1_remote.conf"
134   VPP2_CONF="vpp2_remote.conf"
135 fi
136
137 if [ "$1" == "remote6" ] ; then
138   VPP1_CONF="vpp1_6_remote.conf"
139   VPP2_CONF="vpp2_6_remote.conf"
140 fi
141
142 # start vpp1 and vpp2 in separate chroot
143 sudo $VPP_LITE_BIN                              \
144   unix { log /tmp/vpp1.log cli-listen           \
145          localhost:5002 full-coredump           \
146          exec $VPP_LITE_CONF/${VPP1_CONF} }     \
147          api-trace { on } chroot {prefix xtr1}
148
149 sudo $VPP_LITE_BIN                              \
150   unix { log /tmp/vpp2.log cli-listen           \
151          localhost:5003 full-coredump           \
152          exec $VPP_LITE_CONF/${VPP2_CONF}}      \
153          api-trace { on } chroot {prefix xtr2}
154
155
156 if [ "$#" == 0 ] || [ "$1" == "ip4" ] ; then
157   source lisp_ip4.sh
158 fi
159
160 if [ "$1" == "ip6" ] ; then
161   source lisp_ip6.sh
162 fi
163
164 if [ "$1" == "ip4_ip6" ] ; then
165   source lisp_ip4.sh
166   source lisp_ip6.sh
167
168   ping_lisp
169   ping_lisp6
170 fi
171
172 if [ "$1" == "4o6" ] ; then
173   source lisp_ip4o6.sh
174 fi
175
176 if [ "$1" == "6o4" ] ; then
177   source lisp_ip6o4.sh
178 fi
179
180 if [ "$1" == "remote" ] ; then
181   source lisp_remote_mapping.sh
182 fi
183
184 if [ "$1" == "remote6" ] ; then
185   source lisp_6_remote_mapping.sh
186 fi
187
188 echo "Success"