#include <vpp/api/types.h>
#include <vat/vat.h>
+const vl_api_mac_address_t VL_API_ZERO_MAC_ADDRESS;
+const vl_api_address_t VL_API_ZERO_ADDRESS;
+
+u8 *
+format_vl_api_address_family (u8 * s, va_list * args)
+{
+ vl_api_address_family_t af = va_arg (*args, vl_api_address_family_t);
+
+ if (ADDRESS_IP6 == clib_net_to_host_u32 (af))
+ s = format (s, "ip4");
+ else
+ s = format (s, "ip6");
+
+ return s;
+}
+
u8 *
format_vl_api_address (u8 * s, va_list * args)
{
const vl_api_address_t *addr = va_arg (*args, vl_api_address_t *);
if (ADDRESS_IP6 == clib_net_to_host_u32 (addr->af))
- s = format (s, "ip6:%U", format_ip6_address, addr->un.ip6);
+ s = format (s, "%U", format_ip6_address, addr->un.ip6);
else
- s = format (s, "ip4:%U", format_ip4_address, addr->un.ip4);
+ s = format (s, "%U", format_ip4_address, addr->un.ip4);
return s;
}
vl_api_address_family_t af = va_arg (*args, vl_api_address_family_t);
if (ADDRESS_IP6 == af)
- s = format (s, "ip6:%U", format_ip6_address, addr->ip6);
+ s = format (s, "%U", format_ip6_address, addr->ip6);
else
- s = format (s, "ip4:%U", format_ip4_address, addr->ip4);
+ s = format (s, "%U", format_ip4_address, addr->ip4);
return s;
}
return (1);
}
+uword
+unformat_vl_api_address_family (unformat_input_t * input,
+ va_list * args)
+{
+ vl_api_address_family_t *af = va_arg (*args, vl_api_address_family_t *);
+
+ if (unformat (input, "ip4") || unformat (input, "ipv4"))
+ *af = clib_host_to_net_u32(ADDRESS_IP4);
+ else if (unformat (input, "ip6") || unformat (input, "ipv6"))
+ *af = clib_host_to_net_u32(ADDRESS_IP6);
+ else
+ return (0);
+
+ return (1);
+}
+
uword
unformat_vl_api_ip4_address (unformat_input_t * input, va_list * args)
{
return (0);
}
+uword
+unformat_vl_api_mprefix (unformat_input_t * input, va_list * args)
+{
+ vl_api_mprefix_t *pfx = va_arg (*args, vl_api_mprefix_t *);
+
+ if (unformat (input, "%U/%d",
+ unformat_vl_api_ip4_address, &pfx->grp_address.ip4,
+ &pfx->grp_address_length))
+ pfx->af = ADDRESS_IP4;
+ else if (unformat (input, "%U/%d",
+ unformat_vl_api_ip6_address, &pfx->grp_address.ip6,
+ &pfx->grp_address_length))
+ pfx->af = ADDRESS_IP6;
+ else if (unformat (input, "%U %U",
+ unformat_vl_api_ip4_address, &pfx->src_address.ip4,
+ unformat_vl_api_ip4_address, &pfx->grp_address.ip4))
+ {
+ pfx->af = ADDRESS_IP4;
+ pfx->grp_address_length = 64;
+ }
+ else if (unformat (input, "%U %U",
+ unformat_vl_api_ip6_address, &pfx->src_address.ip6,
+ unformat_vl_api_ip6_address, &pfx->grp_address.ip6))
+ {
+ pfx->af = ADDRESS_IP6;
+ pfx->grp_address_length = 256;
+ }
+ else if (unformat (input, "%U",
+ unformat_vl_api_ip4_address, &pfx->grp_address.ip4))
+ {
+ pfx->af = ADDRESS_IP4;
+ pfx->grp_address_length = 32;
+ clib_memset(&pfx->src_address, 0, sizeof(pfx->src_address));
+ }
+ else if (unformat (input, "%U",
+ unformat_vl_api_ip6_address, &pfx->grp_address.ip6))
+ {
+ pfx->af = ADDRESS_IP6;
+ pfx->grp_address_length = 128;
+ clib_memset(&pfx->src_address, 0, sizeof(pfx->src_address));
+ }
+ else
+ return (0);
+
+ return (1);
+}
+