tcp: api clenup
Use consistent API types.
Type: fix
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Change-Id: I48f08cc657c28ad1eef50c917a560425137bb70e
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
diff --git a/src/vnet/tcp/tcp.api b/src/vnet/tcp/tcp.api
index cfef9d6..d745e02 100644
--- a/src/vnet/tcp/tcp.api
+++ b/src/vnet/tcp/tcp.api
@@ -13,8 +13,10 @@
* limitations under the License.
*/
-option version = "1.0.0";
-
+option version = "2.0.0";
+
+import "vnet/ip/ip_types.api";
+
/** \brief Configure TCP source addresses, for active-open TCP sessions
TCP src/dst ports are 16 bits, with the low-order 1024 ports
@@ -22,9 +24,9 @@
source IP addresses if one wishes to initiate a large number of
connections.
- Each of those addresses needs to have a receive adjacency -
+ Each of those addresses needs to have a receive adjacency -
either a /32 or a /128 - and vpp needs to answer (proxy) arps or
- neighbor discovery requests for the addresses.
+ neighbor discovery requests for the addresses.
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@@ -36,9 +38,7 @@
autoreply define tcp_configure_src_addresses {
u32 client_index;
u32 context;
- u8 is_ipv6;
u32 vrf_id;
- u8 first_address[16];
- u8 last_address[16];
+ vl_api_address_t first_address;
+ vl_api_address_t last_address;
};
-
diff --git a/src/vnet/tcp/tcp_api.c b/src/vnet/tcp/tcp_api.c
index db488e1..ac4314f 100644
--- a/src/vnet/tcp/tcp_api.c
+++ b/src/vnet/tcp/tcp_api.c
@@ -22,6 +22,8 @@
#include <vnet/tcp/tcp.h>
+#include <vnet/ip/ip_types_api.h>
+
#include <vnet/vnet_msg_enum.h>
#define vl_typedefs /* define message structures */
@@ -51,20 +53,28 @@
vl_api_tcp_configure_src_addresses_reply_t *rmp;
u32 vrf_id;
int rv;
+ ip46_address_t first_address, last_address;
+ ip46_type_t fa_af, la_af;
vrf_id = clib_net_to_host_u32 (mp->vrf_id);
- if (mp->is_ipv6)
+ fa_af = ip_address_decode (&mp->first_address, &first_address);
+ la_af = ip_address_decode (&mp->last_address, &last_address);
+
+ if (fa_af != la_af)
+ {
+ rv = VNET_API_ERROR_INVALID_VALUE;
+ goto error;
+ }
+
+ if (fa_af == IP46_TYPE_IP6)
rv = tcp_configure_v6_source_address_range
- (vm,
- (ip6_address_t *) mp->first_address,
- (ip6_address_t *) mp->last_address, vrf_id);
+ (vm, &first_address.ip6, &last_address.ip6, vrf_id);
else
rv = tcp_configure_v4_source_address_range
- (vm,
- (ip4_address_t *) mp->first_address,
- (ip4_address_t *) mp->last_address, vrf_id);
+ (vm, &first_address.ip4, &last_address.ip4, vrf_id);
+error:
REPLY_MACRO (VL_API_TCP_CONFIGURE_SRC_ADDRESSES_REPLY);
}