diff options
author | Neale Ranns <nranns@cisco.com> | 2018-08-10 05:30:06 -0700 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2019-01-30 19:47:53 +0000 |
commit | 37029305c671f4e2d091d6f6c22142634e409043 (patch) | |
tree | f47257c77b860213fcd1901686874dee43ad1f73 /src/vpp | |
parent | 13b2ba2ad5527c8185dce368993a3877e7daf7a2 (diff) |
Use IP and MAC API types for neighbors
use address_t and mac_address_t for IPv6 and ARP entries
and all other API calls in ip.api aprat from the route ones,
that will follow in a separate commit
Change-Id: I67161737c2184d3f8fc1e79ebd2b55121c5b0191
Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/vpp')
-rw-r--r-- | src/vpp/api/api.c | 5 | ||||
-rw-r--r-- | src/vpp/api/custom_dump.c | 67 | ||||
-rw-r--r-- | src/vpp/api/types.c | 59 | ||||
-rw-r--r-- | src/vpp/api/types.h | 5 |
4 files changed, 85 insertions, 51 deletions
diff --git a/src/vpp/api/api.c b/src/vpp/api/api.c index ed769d284fc..b5ff3ccad71 100644 --- a/src/vpp/api/api.c +++ b/src/vpp/api/api.c @@ -59,6 +59,7 @@ #include <vnet/ip/format.h> #include <vpp/api/vpe_msg_enum.h> +#include <vpp/api/types.h> #define vl_typedefs /* define message structures */ #include <vpp/api/vpe_all_api_h.h> @@ -698,7 +699,7 @@ format_arp_event (u8 * s, va_list * args) vl_api_ip4_arp_event_t *event = va_arg (*args, vl_api_ip4_arp_event_t *); s = format (s, "pid %d: ", ntohl (event->pid)); - s = format (s, "resolution for %U", format_ip4_address, &event->address); + s = format (s, "resolution for %U", format_vl_api_ip4_address, event->ip); return s; } @@ -708,7 +709,7 @@ format_nd_event (u8 * s, va_list * args) vl_api_ip6_nd_event_t *event = va_arg (*args, vl_api_ip6_nd_event_t *); s = format (s, "pid %d: ", ntohl (event->pid)); - s = format (s, "resolution for %U", format_ip6_address, event->address); + s = format (s, "resolution for %U", format_vl_api_ip6_address, event->ip); return s; } diff --git a/src/vpp/api/custom_dump.c b/src/vpp/api/custom_dump.c index b1894a5eaf0..ab98954abbc 100644 --- a/src/vpp/api/custom_dump.c +++ b/src/vpp/api/custom_dump.c @@ -20,6 +20,7 @@ #include <vnet/vnet.h> #include <vnet/ip/ip.h> #include <vnet/ip/ip_neighbor.h> +#include <vnet/ip/ip_types_api.h> #include <vnet/unix/tuntap.h> #include <vnet/mpls/mpls.h> #include <vnet/dhcp/dhcp_proxy.h> @@ -44,6 +45,7 @@ #include <vpp/oam/oam.h> #include <vnet/ethernet/ethernet.h> +#include <vnet/ethernet/ethernet_types_api.h> #include <vnet/l2/l2_vtr.h> #include <vpp/api/vpe_msg_enum.h> @@ -897,11 +899,10 @@ static void *vl_api_proxy_arp_add_del_t_print s = format (0, "SCRIPT: proxy_arp_add_del "); s = format (s, "%U - %U ", - format_ip4_address, mp->proxy.low_address, - format_ip4_address, mp->proxy.hi_address); + format_vl_api_ip4_address, mp->proxy.low, + format_vl_api_ip4_address, mp->proxy.hi); - if (mp->proxy.vrf_id) - s = format (s, "vrf %d ", ntohl (mp->proxy.vrf_id)); + s = format (s, "table %d ", ntohl (mp->proxy.table_id)); if (mp->is_add == 0) s = format (s, "del "); @@ -1020,31 +1021,21 @@ static void *vl_api_ip_neighbor_add_del_t_print (vl_api_ip_neighbor_add_del_t * mp, void *handle) { u8 *s; - u8 null_mac[6]; - - clib_memset (null_mac, 0, sizeof (null_mac)); s = format (0, "SCRIPT: ip_neighbor_add_del "); - s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index)); + s = format (s, "sw_if_index %d ", ntohl (mp->neighbor.sw_if_index)); - if (mp->is_static) + if (IP_API_NEIGHBOR_FLAG_STATIC & ntohl (mp->neighbor.flags)) s = format (s, "is_static "); - if (mp->is_no_adj_fib) + if (IP_API_NEIGHBOR_FLAG_NO_FIB_ENTRY & ntohl (mp->neighbor.flags)) s = format (s, "is_no_fib_entry "); - if (memcmp (mp->mac_address, null_mac, 6)) - s = format (s, "mac %U ", format_ethernet_address, mp->mac_address); + s = format (s, "mac %U ", format_vl_api_mac_address, + &mp->neighbor.mac_address); - if (mp->is_ipv6) - s = - format (s, "dst %U ", format_ip6_address, - (ip6_address_t *) mp->dst_address); - else - s = - format (s, "dst %U ", format_ip4_address, - (ip4_address_t *) mp->dst_address); + s = format (s, "dst %U ", format_vl_api_address, &mp->neighbor.ip_address); if (mp->is_add == 0) s = format (s, "del "); @@ -1052,6 +1043,7 @@ static void *vl_api_ip_neighbor_add_del_t_print FINISH; } + static void *vl_api_create_vlan_subif_t_print (vl_api_create_vlan_subif_t * mp, void *handle) { @@ -1269,8 +1261,7 @@ static void *vl_api_sw_interface_ip6nd_ra_prefix_t_print s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index)); - s = format (s, "%U/%d ", format_ip6_address, mp->address, - mp->address_length); + s = format (s, "%U ", format_vl_api_prefix, &mp->prefix); s = format (s, "val_life %d ", ntohl (mp->val_lifetime)); @@ -2217,10 +2208,7 @@ static void *vl_api_ip_probe_neighbor_t_print s = format (0, "SCRIPT: ip_probe_neighbor "); s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index)); - if (mp->is_ipv6) - s = format (s, "address %U ", format_ip6_address, &mp->dst_address); - else - s = format (s, "address %U ", format_ip4_address, &mp->dst_address); + s = format (s, "address %U ", format_vl_api_address, &mp->dst); FINISH; } @@ -2263,7 +2251,7 @@ static void *vl_api_want_ip4_arp_events_t_print s = format (0, "SCRIPT: want_ip4_arp_events "); s = format (s, "pid %d address %U ", ntohl (mp->pid), - format_ip4_address, &mp->address); + format_ip4_address, mp->ip); if (mp->enable_disable == 0) s = format (s, "del "); @@ -2277,7 +2265,7 @@ static void *vl_api_want_ip6_nd_events_t_print s = format (0, "SCRIPT: want_ip6_nd_events "); s = format (s, "pid %d address %U ", ntohl (mp->pid), - format_ip6_address, mp->address); + format_vl_api_ip6_address, mp->ip); if (mp->enable_disable == 0) s = format (s, "del "); @@ -2867,12 +2855,7 @@ static void *vl_api_ip_source_and_port_range_check_add_del_t_print int i; s = format (0, "SCRIPT: ip_source_and_port_range_check_add_del "); - if (mp->is_ipv6) - s = format (s, "%U/%d ", format_ip6_address, mp->address, - mp->mask_length); - else - s = format (s, "%U/%d ", format_ip4_address, mp->address, - mp->mask_length); + s = format (s, "%U ", format_vl_api_prefix, &mp->prefix); for (i = 0; i < mp->number_of_ranges; i++) { @@ -3662,14 +3645,9 @@ static void *vl_api_ip_container_proxy_add_del_t_print { u8 *s; s = format (0, "SCRIPT: ip_container_proxy_add_del "); - if (mp->is_ip4) - s = format (s, "is_add %d address %U/%d sw_if_index %d", - mp->is_add, format_ip4_address, - (ip4_address_t *) mp->ip, mp->plen, mp->sw_if_index); - else - s = format (s, "is_add %d address %U/%d sw_if_index %d", - mp->is_add, format_ip6_address, - (ip6_address_t *) mp->ip, mp->plen, mp->sw_if_index); + s = format (s, "is_add %d prefix %U sw_if_index %d", + mp->is_add, format_vl_api_prefix, mp->sw_if_index); + FINISH; } @@ -3680,9 +3658,8 @@ static void *vl_api_qos_record_enable_disable_t_print s = format (0, "SCRIPT: qos_record_enable_disable "); s = format (s, "sw_if_index %d ", ntohl (mp->sw_if_index)); - s = - format (s, "input_source %U ", format_qos_source, - ntohl (mp->input_source)); + s = format (s, "input_source %U ", format_qos_source, + ntohl (mp->input_source)); if (!mp->enable) s = format (s, "disable "); diff --git a/src/vpp/api/types.c b/src/vpp/api/types.c index 0a48711c611..e36b8dd6781 100644 --- a/src/vpp/api/types.c +++ b/src/vpp/api/types.c @@ -48,6 +48,26 @@ format_vl_api_address_union (u8 * s, va_list * args) } u8 * +format_vl_api_ip4_address (u8 * s, va_list * args) +{ + const vl_api_ip4_address_t *addr = va_arg (*args, vl_api_ip4_address_t *); + + s = format (s, "%U", format_ip4_address, addr); + + return s; +} + +u8 * +format_vl_api_ip6_address (u8 * s, va_list * args) +{ + const vl_api_ip6_address_t *addr = va_arg (*args, vl_api_ip6_address_t *); + + s = format (s, "%U", format_ip6_address, addr); + + return s; +} + +u8 * format_vl_api_prefix (u8 * s, va_list * args) { const vl_api_prefix_t *pfx = va_arg (*args, vl_api_prefix_t *); @@ -58,6 +78,14 @@ format_vl_api_prefix (u8 * s, va_list * args) return s; } +u8 * +format_vl_api_mac_address (u8 * s, va_list * args) +{ + vl_api_mac_address_t *mac = va_arg (*args, vl_api_mac_address_t *); + + return (format (s, "%U", format_ethernet_address, mac)); +} + uword unformat_vl_api_mac_address (unformat_input_t * input, va_list * args) { @@ -81,11 +109,34 @@ unformat_vl_api_address (unformat_input_t * input, va_list * args) return (1); } -u8 * -format_vl_api_mac_address (u8 * s, va_list * args) +uword +unformat_vl_api_ip4_address (unformat_input_t * input, va_list * args) { - vl_api_mac_address_t *mac = va_arg (*args, vl_api_mac_address_t *); + vl_api_ip4_address_t *ip = va_arg (*args, vl_api_ip4_address_t *); - return (format (s, "%U", format_ethernet_address, mac)); + if (unformat (input, "%U", unformat_ip4_address, ip)) + return (1); + return (0); +} + +uword +unformat_vl_api_ip6_address (unformat_input_t * input, va_list * args) +{ + vl_api_ip6_address_t *ip = va_arg (*args, vl_api_ip6_address_t *); + + if (unformat (input, "%U", unformat_ip6_address, ip)) + return (1); + return (0); +} + +uword +unformat_vl_api_prefix (unformat_input_t * input, va_list * args) +{ + vl_api_prefix_t *pfx = va_arg (*args, vl_api_prefix_t *); + + if (unformat (input, "%U/%d", unformat_vl_api_address, &pfx->address, + &pfx->address_length)) + return (1); + return (0); } diff --git a/src/vpp/api/types.h b/src/vpp/api/types.h index 9a45639d030..cf1b26d9bfc 100644 --- a/src/vpp/api/types.h +++ b/src/vpp/api/types.h @@ -28,8 +28,13 @@ const vl_api_address_t VL_API_ZERO_ADDRESS; extern uword unformat_vl_api_mac_address (unformat_input_t * input, va_list * args); extern uword unformat_vl_api_address (unformat_input_t * input, va_list * args); +extern uword unformat_vl_api_ip4_address (unformat_input_t * input, va_list * args); +extern uword unformat_vl_api_ip6_address (unformat_input_t * input, va_list * args); +extern uword unformat_vl_api_prefix (unformat_input_t * input, va_list * args); extern u8 *format_vl_api_address (u8 * s, va_list * args); +extern u8 *format_vl_api_ip4_address (u8 * s, va_list * args); +extern u8 *format_vl_api_ip6_address (u8 * s, va_list * args); extern u8 *format_vl_api_address_union (u8 * s, va_list * args); extern u8 *format_vl_api_prefix (u8 * s, va_list * args); extern u8 *format_vl_api_mprefix (u8 * s, va_list * args); |