ipip: refactor ipip.api with explicit types

Use explicit types vl_api_address/prefix in ipip.api.

Change-Id: Ib3133cebdbe4437742924efd49cde4009c4cc31b
Type: refactor
Signed-off-by: Ole Troan <ot@cisco.com>
This commit is contained in:
Ole Troan
2019-05-29 12:30:05 +02:00
committed by Paul Vinciguerra
parent 048acfbd9e
commit 288e093624
4 changed files with 84 additions and 61 deletions
src
tools/vppapigen
vnet/ipip
test

@ -13,6 +13,7 @@ top_boilerplate = '''\
* Automatically generated: please edit the input file NOT this file!
*/
#include <stdbool.h>
#if defined(vl_msg_id)||defined(vl_union_id) \\
|| defined(vl_printfun) ||defined(vl_endianfun) \\
|| defined(vl_api_version)||defined(vl_typedefs) \\

@ -1,4 +1,3 @@
/* Hey Emacs use -*- mode: C -*- */
/*
* Copyright (c) 2018 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
@ -58,13 +57,14 @@ import "vnet/ip/ip_types.api";
*/
typedef ipip_tunnel
{
u32 instance; /* If non-~0, specifies a custom dev instance */
u32 instance; /* If non-~0, specifies a custom dev instance */
vl_api_address_t src;
vl_api_address_t dst;
u32 sw_if_index; /* ignored on create, set in details/dump */
u32 table_id;
u8 tc_tos; /* If ~0, the TOS/TC value is copied from
inner packet, otherwise set to value */
vl_api_interface_index_t sw_if_index; /* ignored on create, set in
details/dump */
u32 table_id;
u8 tc_tos; /* If ~0, the TOS/TC value is copied from
inner packet, otherwise set to value */
};
/**
@ -103,14 +103,12 @@ define ipip_6rd_add_tunnel
u32 context;
u32 ip6_table_id;
u32 ip4_table_id;
u8 ip6_prefix[16];
u8 ip4_prefix[4];
u8 ip4_src[4];
u8 ip6_prefix_len;
u8 ip4_prefix_len;
u8 security_check;
u8 tc_tos; /* If ~0, the TOS/TC value is copied from
inner packet, otherwise set to value */
vl_api_ip6_prefix_t ip6_prefix;
vl_api_ip4_prefix_t ip4_prefix;
vl_api_ip4_address_t ip4_src;
bool security_check;
u8 tc_tos; /* If ~0, the TOS/TC value is copied from
inner packet, otherwise set to value */
};
define ipip_6rd_add_tunnel_reply
@ -145,9 +143,3 @@ define ipip_tunnel_details
u32 context;
vl_api_ipip_tunnel_t tunnel;
};
/*
* Local Variables:
* eval: (c-set-style "gnu")
* End:
*/

@ -178,10 +178,10 @@ vl_api_ipip_6rd_add_tunnel_t_handler (vl_api_ipip_6rd_add_tunnel_t * mp)
}
else
{
rv = sixrd_add_tunnel ((ip6_address_t *) & mp->ip6_prefix,
mp->ip6_prefix_len,
(ip4_address_t *) & mp->ip4_prefix,
mp->ip4_prefix_len,
rv = sixrd_add_tunnel ((ip6_address_t *) & mp->ip6_prefix.prefix,
mp->ip6_prefix.len,
(ip4_address_t *) & mp->ip4_prefix.prefix,
mp->ip4_prefix.len,
(ip4_address_t *) & mp->ip4_src,
mp->security_check,
ip4_fib_index, ip6_fib_index,

@ -88,9 +88,13 @@ class Test6RD(VppTestCase):
p_ether = Ether(src=self.pg0.remote_mac, dst=self.pg0.local_mac)
p_ip6 = IPv6(src="1::1", dst="2002:AC10:0202::1", nh='UDP')
rv = self.vapi.ipip_6rd_add_tunnel(0, 0, inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg0.local_ip4n, 16, 0, True)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=0,
ip4_table_id=0,
ip6_prefix='2002::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg0.local_ip4,
security_check=True)
self.tunnel_index = rv.sw_if_index
self.vapi.cli("show ip6 fib")
@ -121,10 +125,11 @@ class Test6RD(VppTestCase):
p_ether = Ether(src=self.pg2.remote_mac, dst=self.pg2.local_mac)
p_ip6 = IPv6(src="1::1", dst="2002:AC10:0402::1", nh='UDP')
rv = self.vapi.ipip_6rd_add_tunnel(20, 10,
inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg2.local_ip4n, 16, 0, True)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=20, ip4_table_id=10,
ip6_prefix='2002::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg2.local_ip4,
security_check=True)
self.tunnel_index = rv.sw_if_index
self.vapi.cli("show ip6 fib")
@ -153,14 +158,20 @@ class Test6RD(VppTestCase):
def test_6rd_ip4_to_ip6(self):
""" ip4 -> ip6 (decap) 6rd test """
rv = self.vapi.ipip_6rd_add_tunnel(0, 0, inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg0.local_ip4n, 16, 0, True)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=0,
ip4_table_id=0,
ip6_prefix='2002::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg0.local_ip4,
security_check=True)
self.tunnel_index = rv.sw_if_index
rv = self.vapi.ipip_6rd_del_tunnel(rv.sw_if_index)
rv = self.vapi.ipip_6rd_add_tunnel(0, 0, inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg0.local_ip4n, 16, 0, True)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=0,
ip4_table_id=0,
ip6_prefix='2002::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg0.local_ip4,
security_check=True)
self.tunnel_index = rv.sw_if_index
p_ip6 = (IPv6(src="2002:AC10:0202::1", dst=self.pg1.remote_ip6) /
@ -181,16 +192,20 @@ class Test6RD(VppTestCase):
def test_6rd_ip4_to_ip6_vrf(self):
""" ip4 -> ip6 (decap) 6rd VRF test """
rv = self.vapi.ipip_6rd_add_tunnel(20, 10,
inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg2.local_ip4n, 16, 0, True)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=20,
ip4_table_id=10,
ip6_prefix='2002::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg2.local_ip4,
security_check=True)
self.tunnel_index = rv.sw_if_index
rv = self.vapi.ipip_6rd_del_tunnel(rv.sw_if_index)
rv = self.vapi.ipip_6rd_add_tunnel(20, 10,
inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg2.local_ip4n, 16, 0, True)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=20,
ip4_table_id=10,
ip6_prefix='2002::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg2.local_ip4,
security_check=True)
self.tunnel_index = rv.sw_if_index
self.vapi.sw_interface_set_table(self.tunnel_index, 1, 20)
@ -214,14 +229,20 @@ class Test6RD(VppTestCase):
""" ip4 -> ip6 (decap) 6rd test """
self.tunnel_index = []
rv = self.vapi.ipip_6rd_add_tunnel(0, 0, inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg0.local_ip4n, 16, 0, True)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=0,
ip4_table_id=0,
ip6_prefix='2002::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg0.local_ip4,
security_check=True)
self.tunnel_index.append(rv.sw_if_index)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=0,
ip4_table_id=0,
ip6_prefix='2003::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg1.local_ip4,
security_check=True)
rv = self.vapi.ipip_6rd_add_tunnel(0, 0, inet_pton(AF_INET6, '2003::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg1.local_ip4n, 16, 0, True)
self.tunnel_index.append(rv.sw_if_index)
self.vapi.cli("show ip6 fib")
@ -247,10 +268,12 @@ class Test6RD(VppTestCase):
def test_6rd_ip4_to_ip6_suffix(self):
""" ip4 -> ip6 (decap) 6rd test """
rv = self.vapi.ipip_6rd_add_tunnel(0, 0, inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '172.0.0.0'),
self.pg0.local_ip4n, 16, 8, True)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=0,
ip4_table_id=0,
ip6_prefix='2002::/16',
ip4_prefix='172.0.0.0/8',
ip4_src=self.pg0.local_ip4,
security_check=True)
self.tunnel_index = rv.sw_if_index
self.vapi.cli("show ip6 fib")
@ -268,9 +291,12 @@ class Test6RD(VppTestCase):
def test_6rd_ip4_to_ip6_sec_check(self):
""" ip4 -> ip6 (decap) security check 6rd test """
rv = self.vapi.ipip_6rd_add_tunnel(0, 0, inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg0.local_ip4n, 16, 0, True)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=0,
ip4_table_id=0,
ip6_prefix='2002::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg0.local_ip4,
security_check=True)
self.tunnel_index = rv.sw_if_index
self.vapi.cli("show ip6 fib")
@ -300,9 +326,13 @@ class Test6RD(VppTestCase):
def test_6rd_bgp_tunnel(self):
""" 6rd BGP tunnel """
rv = self.vapi.ipip_6rd_add_tunnel(0, 0, inet_pton(AF_INET6, '2002::'),
inet_pton(AF_INET, '0.0.0.0'),
self.pg0.local_ip4n, 16, 0, False)
rv = self.vapi.ipip_6rd_add_tunnel(ip6_table_id=0,
ip4_table_id=0,
ip6_prefix='2002::/16',
ip4_prefix='0.0.0.0/0',
ip4_src=self.pg0.local_ip4,
security_check=False)
self.tunnel_index = rv.sw_if_index
default_route = VppIpRoute(