+
+| Initialize NAT44 in circular topology
+| | [Documentation] | Initialization of 2-node / 3-node topology with NAT44
+| | ... | between DUTs:
+| | ... | - set interfaces up
+| | ... | - set IP addresses
+| | ... | - set ARP
+| | ... | - create routes
+| | ... | - set NAT44 - only on DUT1
+| |
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| |
+| | Set interfaces in path up
+| |
+| | ${tg_if1_ip4}= | Get Variable Value | ${tg_if1_ip4} | 10.0.0.2
+| | ${tg_if1_mask}= | Get Variable Value | ${tg_if1_mask} | 20
+| | ${tg_if2_ip4}= | Get Variable Value | ${tg_if2_ip4} | 12.0.0.2
+| | ${tg_if2_mask}= | Get Variable Value | ${tg_if2_mask} | 20
+| | ${dut1_if1_ip4}= | Get Variable Value | ${dut1_if1_ip4} | 10.0.0.1
+| | ${dut1_if1_mask}= | Get Variable Value | ${dut1_if1_mask} | 20
+| | ${dut1_if2_ip4}= | Get Variable Value | ${dut1_if2_ip4} | 11.0.0.1
+| | ${dut1_if2_mask}= | Get Variable Value | ${dut2_if2_mask} | 20
+| | ${dut2_if1_ip4}= | Get Variable Value | ${dut2_if1_ip4} | 11.0.0.2
+| | ${dut2_if1_mask}= | Get Variable Value | ${dut2_if1_mask} | 20
+| | ${dut2_if2_ip4}= | Get Variable Value | ${dut2_if2_ip4} | 12.0.0.1
+| | ${dut2_if2_mask}= | Get Variable Value | ${dut2_if2_mask} | 20
+| | ${inside_net}= | Get Variable Value | ${inside_net} | 192.168.0.0
+| | ${inside_mask}= | Get Variable Value | ${inside_mask} | 16
+| | ${nat_net}= | Get Variable Value | ${nat_net} | 109.146.163.128
+| | ${nat_mask}= | Get Variable Value | ${nat_mask} | 26
+| | ${dest_net}= | Get Variable Value | ${dest_net} | 20.0.0.0
+| | ${dest_mask}= | Get Variable Value | ${dest_mask} | 24
+| |
+| | VPP Interface Set IP Address | ${dut1} | ${DUT1_${int}1}[0]
+| | ... | ${dut1_if1_ip4} | ${dut1_if1_mask}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address | ${dut1} | ${DUT1_${int}2}[0]
+| | ... | ${dut1_if2_ip4} | ${dut1_if2_mask}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address | ${dut2} | ${DUT2_${int}1}[0]
+| | ... | ${dut2_if1_ip4} | ${dut2_if1_mask}
+| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2}
+| | ... | ELSE | Set Variable | ${dut1}
+| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${DUT2_${int}2}[0]
+| | ... | ELSE | Set Variable | ${DUT1_${int}2}[0]
+| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | ${dut2_if2_ip4}
+| | ... | ${dut2_if2_mask}
+| |
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${tg_if1_ip4} | ${TG_pf1_mac}[0]
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut2_if1_ip4}
+| | ... | ${DUT2_${int}1_mac}[0]
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut1_if2_ip4}
+| | ... | ${DUT1_${int}2_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut} | ${dut_if2} | ${tg_if2_ip4} | ${TG_pf2_mac}[0]
+| |
+| | Vpp Route Add | ${dut1} | ${inside_net} | ${inside_mask}
+| | ... | gateway=${tg_if1_ip4} | interface=${DUT1_${int}1}[0]
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | ${dest_net} | ${dest_mask}
+| | ... | gateway=${dut2_if1_ip4} | interface=${DUT1_${int}2}[0]
+| | Run Keyword Unless | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | ${dest_net} | ${dest_mask}
+| | ... | gateway=${tg_if2_ip4} | interface=${DUT1_${int}2}[0]
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | ${dest_net} | ${dest_mask}
+| | ... | gateway=${tg_if2_ip4} | interface=${DUT2_${int}2}[0]
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | ${nat_net} | ${nat_mask}
+| | ... | gateway=${dut1_if2_ip4} | interface=${DUT2_${int}1}[0]
+| |
+| | Configure inside and outside interfaces
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${DUT1_${int}2}[0]
+| | Configure deterministic mode for NAT44
+| | ... | ${dut1} | ${inside_net} | ${inside_mask} | ${nat_net} | ${nat_mask}
+