aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOle Troan <ot@cisco.com>2019-05-29 12:30:05 +0200
committerPaul Vinciguerra <pvinci@vinciconsulting.com>2019-05-30 11:15:35 +0000
commit288e093624515e31a8bc0f0f870e5a9c7fa2dbaa (patch)
tree1bf4a18ed6ece71f7382b003f32678aa3e64aa60
parent048acfbd9ee6c0d476ffd87db9c1c744f3040e25 (diff)
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>
-rw-r--r--src/tools/vppapigen/vppapigen_c.py1
-rw-r--r--src/vnet/ipip/ipip.api32
-rw-r--r--src/vnet/ipip/ipip_api.c8
-rw-r--r--test/test_sixrd.py104
4 files changed, 84 insertions, 61 deletions
diff --git a/src/tools/vppapigen/vppapigen_c.py b/src/tools/vppapigen/vppapigen_c.py
index 6c4ca356f3a..b34d063c340 100644
--- a/src/tools/vppapigen/vppapigen_c.py
+++ b/src/tools/vppapigen/vppapigen_c.py
@@ -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) \\
diff --git a/src/vnet/ipip/ipip.api b/src/vnet/ipip/ipip.api
index e8051fde7f8..8a6e726eba4 100644
--- a/src/vnet/ipip/ipip.api
+++ b/src/vnet/ipip/ipip.api
@@ -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:
- */
diff --git a/src/vnet/ipip/ipip_api.c b/src/vnet/ipip/ipip_api.c
index f97aaf78bd4..35b846e5c8b 100644
--- a/src/vnet/ipip/ipip_api.c
+++ b/src/vnet/ipip/ipip_api.c
@@ -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,
diff --git a/test/test_sixrd.py b/test/test_sixrd.py
index 910313d5fa7..9eeae57d37f 100644
--- a/test/test_sixrd.py
+++ b/test/test_sixrd.py
@@ -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(