vat: add ip api types parser definitions

build vat with src/vnet/ip/ip_types_api.c

Type: fix

Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Change-Id: Iab0f18bf7a89cf9512beab0629bc3a349edec383
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
This commit is contained in:
Jakub Grajciar
2020-02-26 11:01:43 +01:00
committed by Ole Trøan
parent d26b8607c9
commit 23a386b71b
5 changed files with 52 additions and 3 deletions
+2 -1
View File
@@ -29,6 +29,8 @@ add_vpp_executable(vpp_api_test ENABLE_EXPORTS
plugin.c
json_format.c
types.c
ip_types_api.c
protocols.def
DEPENDS api_headers
@@ -65,4 +67,3 @@ add_vpp_executable(vpp_restart
SOURCES restart.c
LINK_LIBRARIES svm svmdb vppinfra Threads::Threads rt
)
+30
View File
@@ -264,6 +264,26 @@ unformat_ethernet_type_host_byte_order (unformat_input_t * input,
return 0;
}
/* Parse an IP46 address. */
uword
unformat_ip46_address (unformat_input_t * input, va_list * args)
{
ip46_address_t *ip46 = va_arg (*args, ip46_address_t *);
ip46_type_t type = va_arg (*args, ip46_type_t);
if ((type != IP46_TYPE_IP6) &&
unformat (input, "%U", unformat_ip4_address, &ip46->ip4))
{
ip46_address_mask_ip4 (ip46);
return 1;
}
else if ((type != IP46_TYPE_IP4) &&
unformat (input, "%U", unformat_ip6_address, &ip46->ip6))
{
return 1;
}
return 0;
}
/* Parse an IP6 address. */
uword
unformat_ip6_address (unformat_input_t * input, va_list * args)
@@ -759,6 +779,16 @@ set_ip4_address (vl_api_address_t * a, u32 v)
}
}
void
ip_set (ip46_address_t * dst, void *src, u8 is_ip4)
{
if (is_ip4)
dst->ip4.as_u32 = ((ip4_address_t *) src)->as_u32;
else
clib_memcpy_fast (&dst->ip6, (ip6_address_t *) src,
sizeof (ip6_address_t));
}
static void
increment_mac_address (u8 * mac)
{
+1
View File
@@ -0,0 +1 @@
../vnet/ip/ip_types_api.c
+1
View File
@@ -0,0 +1 @@
../vnet/ip/protocols.def
+18 -2
View File
@@ -253,8 +253,24 @@ void
ip_prefix_encode (const fib_prefix_t * in, vl_api_prefix_t * out)
{
out->len = in->fp_len;
ip_address_encode (&in->fp_addr,
fib_proto_to_ip46 (in->fp_proto), &out->address);
ip46_type_t ip46_type;
switch (in->fp_proto)
{
case FIB_PROTOCOL_IP4:
ip46_type = (IP46_TYPE_IP4);
break;
case FIB_PROTOCOL_IP6:
ip46_type = (IP46_TYPE_IP6);
break;
case FIB_PROTOCOL_MPLS:
ip46_type = (IP46_TYPE_ANY);
break;
default:
ip46_type = (IP46_TYPE_ANY);
}
ip_address_encode (&in->fp_addr, ip46_type, &out->address);
}
void