diff options
Diffstat (limited to 'src/vat')
-rw-r--r-- | src/vat/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/vat/api_format.c | 30 | ||||
l--------- | src/vat/ip_types_api.c | 1 | ||||
l--------- | src/vat/protocols.def | 1 |
4 files changed, 34 insertions, 1 deletions
diff --git a/src/vat/CMakeLists.txt b/src/vat/CMakeLists.txt index d512d9c1730..84a42f3e3f9 100644 --- a/src/vat/CMakeLists.txt +++ b/src/vat/CMakeLists.txt @@ -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 ) - diff --git a/src/vat/api_format.c b/src/vat/api_format.c index a6f53dff557..1230ab5b059 100644 --- a/src/vat/api_format.c +++ b/src/vat/api_format.c @@ -263,6 +263,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) @@ -758,6 +778,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) { diff --git a/src/vat/ip_types_api.c b/src/vat/ip_types_api.c new file mode 120000 index 00000000000..9a9dfb8b518 --- /dev/null +++ b/src/vat/ip_types_api.c @@ -0,0 +1 @@ +../vnet/ip/ip_types_api.c
\ No newline at end of file diff --git a/src/vat/protocols.def b/src/vat/protocols.def new file mode 120000 index 00000000000..dbd32f57f79 --- /dev/null +++ b/src/vat/protocols.def @@ -0,0 +1 @@ +../vnet/ip/protocols.def
\ No newline at end of file |