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:
committed by
Ole Trøan
parent
d26b8607c9
commit
23a386b71b
@@ -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
|
||||
)
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../vnet/ip/ip_types_api.c
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../vnet/ip/protocols.def
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user