ipip: refactor ipip.api with explicit types 70/19870/4
authorOle Troan <ot@cisco.com>
Wed, 29 May 2019 10:30:05 +0000 (12:30 +0200)
committerPaul Vinciguerra <pvinci@vinciconsulting.com>
Thu, 30 May 2019 11:15:35 +0000 (11:15 +0000)
Use explicit types vl_api_address/prefix in ipip.api.

Change-Id: Ib3133cebdbe4437742924efd49cde4009c4cc31b
Type: refactor
Signed-off-by: Ole Troan <ot@cisco.com>
src/tools/vppapigen/vppapigen_c.py
src/vnet/ipip/ipip.api
src/vnet/ipip/ipip_api.c
test/test_sixrd.py

index 6c4ca35..b34d063 100644 (file)
@@ -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) \\
index e8051fd..8a6e726 100644 (file)
@@ -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:
- */
index f97aaf7..35b846e 100644 (file)
@@ -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,
index 910313d..9eeae57 100644 (file)
@@ -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(