X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Frobot%2Fip%2Fgeneve.robot;fp=resources%2Flibraries%2Frobot%2Fip%2Fgeneve.robot;h=c9de91d708548ec0ca138f54d73c462d78a95d19;hp=0000000000000000000000000000000000000000;hb=0bb14d79edb065bc97fdd11a7bfa7d1605266e08;hpb=ac776adf699e105081630c44a3e36906d9ce2903 diff --git a/resources/libraries/robot/ip/geneve.robot b/resources/libraries/robot/ip/geneve.robot new file mode 100644 index 0000000000..c9de91d708 --- /dev/null +++ b/resources/libraries/robot/ip/geneve.robot @@ -0,0 +1,74 @@ +# Copyright (c) 2020 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.GeneveUtil +| +| Documentation | Keywords for GENEVE tunnels in VPP. + +*** Keywords *** +| Initialize GENEVE L3 mode in circular topology +| | [Documentation] | Initialization of GENEVE L3 mode on DUT1. +| | +| | [Arguments] | ${with_bypass}=${False} +| | +| | Set interfaces in path up +| | +| | VPP Interface Set IP Address +| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_if1_ip4} | 24 +| | VPP Add IP Neighbor +| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${tg_if1_ip4} | ${TG_pf1_mac}[0] +| | VPP Interface Set IP Address +| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut1_if2_ip4} | 24 +| | VPP Add IP Neighbor +| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${tg_if2_ip4} | ${TG_pf2_mac}[0] +| | ${next_index}= | VPP Add Graph Node Next +| | ... | ${dut1} | geneve4-input | ethernet-input +| | +| | ${src_ip_int} = | IP To Int | ${gen_tunnel.src_ip} +| | ${dst_ip_int} = | IP To Int | ${gen_tunnel.dst_ip} +| | ${if_ip_int} = | IP To Int | ${gen_tunnel.if_ip} +| | +| | FOR | ${nr} | IN RANGE | 0 | ${n_tunnels} +| | | ${src_ip} = | Int To IP | ${${src_ip_int} + ${nr} * 256} +| | | ${dst_ip} = | Int To IP | ${${dst_ip_int} + ${nr} * 256} +| | | ${if_ip} = | Int To IP | ${${if_ip_int} + ${nr} * 256} +| | | Vpp Route Add +| | | ... | ${dut1} | ${src_ip} | ${gen_tunnel.ip_mask} +| | | ... | gateway=${tg_if1_ip4} | interface=${DUT1_${int}1}[0] +| | | ${tunnel_sw_index}= | Add Geneve Tunnel +| | | ... | ${dut1} | ${gen_tunnel.local} | ${gen_tunnel.remote} +| | | ... | ${${gen_tunnel.vni} + ${nr}} | l3_mode=${True} +| | | ... | next_index=${next_index} +| | | ${tunnel_if_key}= | Get Interface By SW Index +| | | ... | ${dut1} | ${tunnel_sw_index} +| | | ${tunnel_if_mac}= | Get Interface MAC +| | | ... | ${dut1} | ${tunnel_if_key} +| | | VPP Interface Set IP Address +| | | ... | ${dut1} | ${tunnel_if_key} | ${if_ip} | 24 +| | | VPP Add IP Neighbor +| | | ... | ${dut1} | ${tunnel_if_key} | ${dut1_if2_ip4} | ${DUT1_vf2_mac}[0] +| | | Vpp Route Add +| | | ... | ${dut1} | ${dst_ip} | ${gen_tunnel.ip_mask} +| | | ... | gateway=${dut1_if2_ip4} | interface=${tunnel_if_key} +| | | Vpp Route Add +| | | ... | ${dut1} | ${gen_tunnel.remote} | 32 +| | | ... | gateway=${tg_if2_ip4} | interface=${DUT1_${int}2}[0] +| | | VPP Add IP Neighbor +| | | ... | ${dut1} | ${tunnel_if_key} | ${gen_tunnel.local} | ${tunnel_if_mac} +| | | Vpp Route Add +| | | ... | ${dut1} | ${gen_tunnel.local} | 32 | gateway=${if_ip} +| | | Set Interface State +| | | ... | ${dut1} | ${tunnel_if_key} | up +| | END +| | All VPP Interfaces Ready Wait | ${nodes} | retries=${60}