From 288e093624515e31a8bc0f0f870e5a9c7fa2dbaa Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Wed, 29 May 2019 12:30:05 +0200 Subject: [PATCH] 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 --- src/tools/vppapigen/vppapigen_c.py | 1 + src/vnet/ipip/ipip.api | 32 +++++------- src/vnet/ipip/ipip_api.c | 8 +-- test/test_sixrd.py | 104 ++++++++++++++++++++++++------------- 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 #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( -- 2.16.6