#include <vat/vat.h>
#include <vppinfra/socket.h>
-#include <svm/memfd.h>
#include <vlibapi/api.h>
#include <vlibmemory/api.h>
#include <vnet/ip/ip.h>
vam->sw_if_index = ntohl (mp->sw_if_index);
vam->result_ready = 1;
}
+ vam->regenerate_interface_table = 1;
}
static void vl_api_vxlan_add_del_tunnel_reply_t_handler_json
vam->sw_if_index = ntohl (mp->sw_if_index);
vam->result_ready = 1;
}
+ vam->regenerate_interface_table = 1;
}
static void vl_api_vxlan_gpe_add_del_tunnel_reply_t_handler_json
vam->sw_if_index = ntohl (mp->sw_if_index);
vam->result_ready = 1;
}
+ vam->regenerate_interface_table = 1;
}
static void vl_api_create_vhost_user_if_reply_t_handler_json
socket_client_main_t *scm = vam->socket_client_main;
int my_fd = -1;
clib_error_t *error;
- memfd_private_t memfd;
+ ssvm_private_t memfd;
i32 retval = ntohl (mp->retval);
if (retval == 0)
vam->client_index_invalid = 1;
/* Note: this closes memfd.fd */
- retval = memfd_slave_init (&memfd);
+ retval = ssvm_slave_init_memfd (&memfd);
if (retval)
clib_warning ("WARNING: segment map returned %d", retval);
vam->sw_if_index = ntohl (mp->sw_if_index);
vam->result_ready = 1;
}
+ vam->regenerate_interface_table = 1;
}
static void vl_api_ipsec_gre_add_del_tunnel_reply_t_handler_json
/* recreate the interface name hash table */
vam->sw_if_index_by_interface_name = hash_create_string (0, sizeof (uword));
- /* Get list of ethernets */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "Ether", sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and local / loopback interfaces */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "lo", sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and packet-generator interfaces */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "pg", sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and vxlan-gpe tunnel interfaces */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "vxlan_gpe",
- sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and vxlan tunnel interfaces */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "vxlan", sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and geneve tunnel interfaces */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "geneve", sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and host (af_packet) interfaces */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "host", sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and l2tpv3 tunnel interfaces */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "l2tpv3_tunnel",
- sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and GRE tunnel interfaces */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "gre", sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and LISP-GPE interfaces */
- M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "lisp_gpe",
- sizeof (mp->name_filter) - 1);
- S (mp);
-
- /* and IPSEC tunnel interfaces */
+ /*
+ * Ask for all interface names. Otherwise, the epic catalog of
+ * name filters becomes ridiculously long, and vat ends up needing
+ * to be taught about new interface types.
+ */
M (SW_INTERFACE_DUMP, mp);
- mp->name_filter_valid = 1;
- strncpy ((char *) mp->name_filter, "ipsec", sizeof (mp->name_filter) - 1);
S (mp);
/* Use a control ping for synchronization */
u8 host_mac_addr_set = 0;
u8 *host_bridge = 0;
ip4_address_t host_ip4_addr;
+ ip4_address_t host_ip4_gw;
+ u8 host_ip4_gw_set = 0;
u32 host_ip4_prefix_len = 0;
ip6_address_t host_ip6_addr;
+ ip6_address_t host_ip6_gw;
+ u8 host_ip6_gw_set = 0;
u32 host_ip6_prefix_len = 0;
int ret;
int rx_ring_sz = 0, tx_ring_sz = 0;
else if (unformat (i, "host-ip6-addr %U/%d", unformat_ip6_address,
&host_ip6_addr, &host_ip6_prefix_len))
;
+ else if (unformat (i, "host-ip4-gw %U", unformat_ip4_address,
+ &host_ip4_gw))
+ host_ip4_gw_set = 1;
+ else if (unformat (i, "host-ip6-gw %U", unformat_ip6_address,
+ &host_ip6_gw))
+ host_ip6_gw_set = 1;
else if (unformat (i, "rx-ring-size %d", &rx_ring_sz))
;
else if (unformat (i, "tx-ring-size %d", &tx_ring_sz))
clib_memcpy (mp->host_ip4_addr, &host_ip4_addr, 4);
if (host_ip4_prefix_len)
clib_memcpy (mp->host_ip6_addr, &host_ip6_addr, 16);
-
+ if (host_ip4_gw_set)
+ clib_memcpy (mp->host_ip4_gw, &host_ip4_gw, 4);
+ if (host_ip6_gw_set)
+ clib_memcpy (mp->host_ip6_gw, &host_ip6_gw, 16);
vec_free (host_ns);
vec_free (host_if_name);
if (unformat (vam->input, "%s", &name_and_crc))
{
- message_index = vl_api_get_msg_index (name_and_crc);
+ message_index = vl_msg_api_get_msg_index (name_and_crc);
if (message_index == ~0)
{
print (vam->ofp, " '%s' not found", name_and_crc);