}
#endif /* VPP_API_TEST_BUILTIN */
+#define VHOST_USER_POLLING_MODE 0
+#define VHOST_USER_INTERRUPT_MODE 1
+#define VHOST_USER_ADAPTIVE_MODE 2
+
+static u8 *
+api_format_vhost_user_operation_mode (u8 * s, va_list * va)
+{
+ int operation_mode = va_arg (*va, int);
+
+ switch (operation_mode)
+ {
+ case VHOST_USER_POLLING_MODE:
+ s = format (s, "%-9s", "polling");
+ break;
+ case VHOST_USER_INTERRUPT_MODE:
+ s = format (s, "%-9s", "interrupt");
+ break;
+ default:
+ s = format (s, "%-9s", "invalid");
+ }
+ return s;
+}
+
+static uword
+api_unformat_vhost_user_operation_mode (unformat_input_t * input,
+ va_list * args)
+{
+ u8 *operation_mode = va_arg (*args, u8 *);
+ uword rc = 1;
+
+ if (unformat (input, "interrupt"))
+ *operation_mode = VHOST_USER_INTERRUPT_MODE;
+ else if (unformat (input, "polling"))
+ *operation_mode = VHOST_USER_POLLING_MODE;
+ else
+ rc = 0;
+
+ return rc;
+}
+
static uword
unformat_policer_rate_type (unformat_input_t * input, va_list * args)
{
vl_api_ip4_arp_event_t_handler (vl_api_ip4_arp_event_t * mp)
{
u32 sw_if_index = ntohl (mp->sw_if_index);
- errmsg ("arp %s event: address %U new mac %U sw_if_index %d",
+ errmsg ("arp %s event: pid %d address %U new mac %U sw_if_index %d\n",
mp->mac_ip ? "mac/ip binding" : "address resolution",
- format_ip4_address, &mp->address,
+ ntohl (mp->pid), format_ip4_address, &mp->address,
format_ethernet_address, mp->new_mac, sw_if_index);
}
vl_api_ip6_nd_event_t_handler (vl_api_ip6_nd_event_t * mp)
{
u32 sw_if_index = ntohl (mp->sw_if_index);
- errmsg ("ip6 nd %s event: address %U new mac %U sw_if_index %d",
+ errmsg ("ip6 nd %s event: pid %d address %U new mac %U sw_if_index %d\n",
mp->mac_ip ? "mac/ip binding" : "address resolution",
- format_ip6_address, mp->address,
+ ntohl (mp->pid), format_ip6_address, mp->address,
format_ethernet_address, mp->new_mac, sw_if_index);
}
{
errmsg ("DHCP compl event: pid %d %s hostname %s host_addr %U "
"router_addr %U host_mac %U",
- mp->pid, mp->is_ipv6 ? "ipv6" : "ipv4", mp->hostname,
+ ntohl (mp->pid), mp->is_ipv6 ? "ipv6" : "ipv4", mp->hostname,
format_ip4_address, &mp->host_address,
format_ip4_address, &mp->router_address,
format_ethernet_address, mp->host_mac);
vat_json_object_add_string_copy (node, "name", mp->name);
vat_json_object_add_uint (node, "cir", ntohl (mp->cir));
vat_json_object_add_uint (node, "eir", ntohl (mp->eir));
- vat_json_object_add_uint (node, "cb", ntohl (mp->cb));
- vat_json_object_add_uint (node, "eb", ntohl (mp->eb));
+ vat_json_object_add_uint (node, "cb", clib_net_to_host_u64 (mp->cb));
+ vat_json_object_add_uint (node, "eb", clib_net_to_host_u64 (mp->eb));
vat_json_object_add_string_copy (node, "rate_type", rate_type_str);
vat_json_object_add_string_copy (node, "round_type", round_type_str);
vat_json_object_add_string_copy (node, "type", type_str);
/* Construct the API message */
M (DHCP_CLIENT_CONFIG, mp);
- mp->sw_if_index = ntohl (sw_if_index);
+ mp->sw_if_index = htonl (sw_if_index);
clib_memcpy (mp->hostname, hostname, vec_len (hostname));
vec_free (hostname);
mp->is_add = is_add;
mp->want_dhcp_event = disable_event ? 0 : 1;
- mp->pid = getpid ();
+ mp->pid = htonl (getpid ());
/* send it... */
S (mp);
u8 use_custom_mac = 0;
u8 *tag = 0;
int ret;
+ u8 operation_mode = VHOST_USER_POLLING_MODE;
/* Shut up coverity */
memset (hwaddr, 0, sizeof (hwaddr));
is_server = 1;
else if (unformat (i, "tag %s", &tag))
;
+ else if (unformat (i, "mode %U",
+ api_unformat_vhost_user_operation_mode,
+ &operation_mode))
+ ;
else
break;
}
M (CREATE_VHOST_USER_IF, mp);
+ mp->operation_mode = operation_mode;
mp->is_server = is_server;
clib_memcpy (mp->sock_filename, file_name, vec_len (file_name));
vec_free (file_name);
u8 sw_if_index_set = 0;
u32 sw_if_index = (u32) ~ 0;
int ret;
+ u8 operation_mode = VHOST_USER_POLLING_MODE;
while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
{
;
else if (unformat (i, "server"))
is_server = 1;
+ else if (unformat (i, "mode %U",
+ api_unformat_vhost_user_operation_mode,
+ &operation_mode))
+ ;
else
break;
}
M (MODIFY_VHOST_USER_IF, mp);
+ mp->operation_mode = operation_mode;
mp->sw_if_index = ntohl (sw_if_index);
mp->is_server = is_server;
clib_memcpy (mp->sock_filename, file_name, vec_len (file_name));
{
vat_main_t *vam = &vat_main;
- print (vam->ofp, "%-25s %3" PRIu32 " %6" PRIu32 " %8x %6d %7d %s",
+ print (vam->ofp, "%-25s %3" PRIu32 " %6" PRIu32 " %8x %6d %7d %U %s",
(char *) mp->interface_name,
ntohl (mp->sw_if_index), ntohl (mp->virtio_net_hdr_sz),
clib_net_to_host_u64 (mp->features), mp->is_server,
- ntohl (mp->num_regions), (char *) mp->sock_filename);
+ ntohl (mp->num_regions), api_format_vhost_user_operation_mode,
+ mp->operation_mode, (char *) mp->sock_filename);
print (vam->ofp, " Status: '%s'", strerror (ntohl (mp->sock_errno)));
}
vat_json_object_add_string_copy (node, "sock_filename", mp->sock_filename);
vat_json_object_add_uint (node, "num_regions", ntohl (mp->num_regions));
vat_json_object_add_uint (node, "sock_errno", ntohl (mp->sock_errno));
+ vat_json_object_add_uint (node, "mode", mp->operation_mode);
}
static int
vl_api_control_ping_t *mp_ping;
int ret;
print (vam->ofp,
- "Interface name idx hdr_sz features server regions filename");
+ "Interface name idx hdr_sz features server regions mode"
+ " filename");
/* Get list of vhost-user interfaces */
M (SW_INTERFACE_VHOST_USER_DUMP, mp);
M (WANT_IP4_ARP_EVENTS, mp);
mp->enable_disable = enable_disable;
- mp->pid = getpid ();
+ mp->pid = htonl (getpid ());
mp->address = address.as_u32;
S (mp);
M (WANT_IP6_ND_EVENTS, mp);
mp->enable_disable = enable_disable;
- mp->pid = getpid ();
+ mp->pid = htonl (getpid ());
clib_memcpy (mp->address, &address, sizeof (ip6_address_t));
S (mp);
"[translate-2-[1|2]] [push_dot1q 0] tag1 <nn> tag2 <nn>") \
_(create_vhost_user_if, \
"socket <filename> [server] [renumber <dev_instance>] " \
- "[mac <mac_address>]") \
+ "[mac <mac_address>] " \
+ "[mode <interrupt | polling>]") \
_(modify_vhost_user_if, \
"<intfc> | sw_if_index <nn> socket <filename>\n" \
- "[server] [renumber <dev_instance>]") \
+ "[server] [renumber <dev_instance>] " \
+ "[mode <interrupt | polling>]") \
_(delete_vhost_user_if, "<intfc> | sw_if_index <nn>") \
_(sw_interface_vhost_user_dump, "") \
_(show_version, "") \