- if_key = Topology.add_new_port(node, "gre_tunnel")
- Topology.update_interface_sw_if_index(node, if_key, sw_if_idx)
- Topology.update_interface_name(node, if_key, name)
+ try:
+ src_address = inet_pton(AF_INET6, source_ip)
+ dst_address = inet_pton(AF_INET6, destination_ip)
+ is_ipv6 = 1
+ except inet_error:
+ src_address = inet_pton(AF_INET, source_ip)
+ dst_address = inet_pton(AF_INET, destination_ip)
+ is_ipv6 = 0
+
+ cmd = 'gre_tunnel_add_del'
+ tunnel = dict(type=0,
+ instance=Constants.BITWISE_NON_ZERO,
+ src=src_address,
+ dst=dst_address,
+ outer_fib_id=0,
+ session_id=0)
+ args = dict(is_add=1,
+ tunnel=tunnel)
+ err_msg = 'Failed to create GRE tunnel interface on host {host}'.format(
+ host=node['host'])
+ with PapiExecutor(node) as papi_exec:
+ papi_resp = papi_exec.add(cmd, **args).get_replies(err_msg).\
+ verify_reply(err_msg=err_msg)
+
+ sw_if_idx = papi_resp['sw_if_index']
+ if_key = Topology.add_new_port(node, 'gre_tunnel')
+ Topology.update_interface_sw_if_index(node, if_key, sw_if_idx)
+ ifc_name = InterfaceUtil.vpp_get_interface_name(node, sw_if_idx)
+ Topology.update_interface_name(node, if_key, ifc_name)