u8 host_ip6_gw_set = 0;
u32 host_ip6_prefix_len = 0;
int ret;
- int rx_ring_sz = 0, tx_ring_sz = 0;
+ u32 rx_ring_sz = 0, tx_ring_sz = 0;
memset (mac_address, 0, sizeof (mac_address));
{
random_mac = 0;
}
- else if (unformat (i, "id %s", &id))
+ else if (unformat (i, "id %u", &id))
;
else if (unformat (i, "host-if-name %s", &host_if_name))
;
mp->use_random_mac = random_mac;
- mp->id = id;
+ mp->id = ntohl (id);
mp->host_namespace_set = host_ns != 0;
mp->host_bridge_set = host_bridge != 0;
mp->host_ip4_addr_set = host_ip4_prefix_len != 0;
mp->host_ip6_addr_set = host_ip6_prefix_len != 0;
- mp->rx_ring_sz = rx_ring_sz;
- mp->tx_ring_sz = tx_ring_sz;
+ mp->rx_ring_sz = ntohs (rx_ring_sz);
+ mp->tx_ring_sz = ntohs (tx_ring_sz);
- if (random_mac)
+ if (random_mac == 0)
clib_memcpy (mp->mac_address, mac_address, 6);
if (host_mac_addr_set)
clib_memcpy (mp->host_mac_addr, host_mac_addr, 6);
}
/* Construct the API message */
- M2 (BIER_ROUTE_ADD_DEL, mp, sizeof (vl_api_fib_path3_t));
+ M2 (BIER_ROUTE_ADD_DEL, mp, sizeof (vl_api_fib_path_t));
mp->br_is_add = is_add;
mp->br_tbl_id.bt_set = set;
mp->br_bp = ntohs (bp);
mp->br_n_paths = 1;
mp->br_paths[0].n_labels = 1;
- mp->br_paths[0].label_stack[0] = ntohl (next_hop_out_label);
+ mp->br_paths[0].label_stack[0].label = ntohl (next_hop_out_label);
mp->br_paths[0].afi = (next_hop_proto_is_ip4 ? 0 : 1);
if (next_hop_proto_is_ip4)
if (mp->is_ipv6)
print (vam->ofp,
"RX Table-ID %d, Source Address %U, VSS Type %d, "
- "VSS VPN-ID '%s', VSS FIB-ID %d, VSS OUI %d",
+ "VSS ASCII VPN-ID '%s', VSS RFC2685 VPN-ID (oui:id) %d:%d",
ntohl (mp->rx_vrf_id),
format_ip6_address, mp->dhcp_src_address,
mp->vss_type, mp->vss_vpn_ascii_id,
else
print (vam->ofp,
"RX Table-ID %d, Source Address %U, VSS Type %d, "
- "VSS VPN-ID '%s', VSS FIB-ID %d, VSS OUI %d",
+ "VSS ASCII VPN-ID '%s', VSS RFC2685 VPN-ID (oui:id) %d:%d",
ntohl (mp->rx_vrf_id),
format_ip4_address, mp->dhcp_src_address,
mp->vss_type, mp->vss_vpn_ascii_id,
u8 is_add = 1;
u8 ipv4_set = 0;
u8 ipv6_set = 0;
- u8 teb = 0;
+ u8 t_type = GRE_TUNNEL_TYPE_L3;
u8 src_set = 0;
u8 dst_set = 0;
u32 outer_fib_id = 0;
+ u32 session_id = 0;
+ u32 instance = ~0;
int ret;
memset (&src4, 0, sizeof src4);
{
if (unformat (line_input, "del"))
is_add = 0;
+ else if (unformat (line_input, "instance %d", &instance))
+ ;
else if (unformat (line_input, "src %U", unformat_ip4_address, &src4))
{
src_set = 1;
else if (unformat (line_input, "outer-fib-id %d", &outer_fib_id))
;
else if (unformat (line_input, "teb"))
- teb = 1;
+ t_type = GRE_TUNNEL_TYPE_TEB;
+ else if (unformat (line_input, "erspan %d", &session_id))
+ t_type = GRE_TUNNEL_TYPE_ERSPAN;
else
{
errmsg ("parse error '%U'", format_unformat_error, line_input);
clib_memcpy (&mp->src_address, &src6, 16);
clib_memcpy (&mp->dst_address, &dst6, 16);
}
- mp->outer_fib_id = ntohl (outer_fib_id);
+ mp->instance = htonl (instance);
+ mp->outer_fib_id = htonl (outer_fib_id);
mp->is_add = is_add;
- mp->teb = teb;
+ mp->session_id = htons ((u16) session_id);
+ mp->tunnel_type = t_type;
mp->is_ipv6 = ipv6_set;
S (mp);
ip46_address_t src = to_ip46 (mp->is_ipv6, mp->src_address);
ip46_address_t dst = to_ip46 (mp->is_ipv6, mp->dst_address);
- print (vam->ofp, "%11d%24U%24U%6d%14d",
+ print (vam->ofp, "%11d%11d%24U%24U%13d%14d%12d",
ntohl (mp->sw_if_index),
+ ntohl (mp->instance),
format_ip46_address, &src, IP46_TYPE_ANY,
format_ip46_address, &dst, IP46_TYPE_ANY,
- mp->teb, ntohl (mp->outer_fib_id));
+ mp->tunnel_type, ntohl (mp->outer_fib_id), ntohl (mp->session_id));
}
static void vl_api_gre_tunnel_details_t_handler_json
vat_json_init_object (node);
vat_json_object_add_uint (node, "sw_if_index", ntohl (mp->sw_if_index));
+ vat_json_object_add_uint (node, "instance", ntohl (mp->instance));
if (!mp->is_ipv6)
{
clib_memcpy (&ip4, &mp->src_address, sizeof (ip4));
clib_memcpy (&ip6, &mp->dst_address, sizeof (ip6));
vat_json_object_add_ip6 (node, "dst_address", ip6);
}
- vat_json_object_add_uint (node, "teb", mp->teb);
+ vat_json_object_add_uint (node, "tunnel_type", mp->tunnel_type);
vat_json_object_add_uint (node, "outer_fib_id", ntohl (mp->outer_fib_id));
vat_json_object_add_uint (node, "is_ipv6", mp->is_ipv6);
+ vat_json_object_add_uint (node, "session_id", mp->session_id);
}
static int
if (!vam->json_output)
{
- print (vam->ofp, "%11s%24s%24s%6s%14s",
- "sw_if_index", "src_address", "dst_address", "teb",
- "outer_fib_id");
+ print (vam->ofp, "%11s%11s%24s%24s%13s%14s%12s",
+ "sw_if_index", "instance", "src_address", "dst_address",
+ "tunnel_type", "outer_fib_id", "session_id");
}
/* Get list of gre-tunnel interfaces */
}
static void
-vl_api_mpls_fib_path_print (vat_main_t * vam, vl_api_fib_path2_t * fp)
+vl_api_mpls_fib_path_print (vat_main_t * vam, vl_api_fib_path_t * fp)
{
if (fp->afi == IP46_TYPE_IP6)
print (vam->ofp,
static void
vl_api_mpls_fib_path_json_print (vat_json_node_t * node,
- vl_api_fib_path2_t * fp)
+ vl_api_fib_path_t * fp)
{
struct in_addr ip4;
struct in6_addr ip6;
{
vat_main_t *vam = &vat_main;
int count = ntohl (mp->mt_count);
- vl_api_fib_path2_t *fp;
+ vl_api_fib_path_t *fp;
i32 i;
print (vam->ofp, "[%d]: sw_if_index %d via:",
vat_main_t *vam = &vat_main;
vat_json_node_t *node = NULL;
int count = ntohl (mp->mt_count);
- vl_api_fib_path2_t *fp;
+ vl_api_fib_path_t *fp;
i32 i;
if (VAT_JSON_ARRAY != vam->json_tree.type)
{
vat_main_t *vam = &vat_main;
int count = ntohl (mp->count);
- vl_api_fib_path2_t *fp;
+ vl_api_fib_path_t *fp;
int i;
print (vam->ofp,
vat_main_t *vam = &vat_main;
int count = ntohl (mp->count);
vat_json_node_t *node = NULL;
- vl_api_fib_path2_t *fp;
+ vl_api_fib_path_t *fp;
int i;
if (VAT_JSON_ARRAY != vam->json_tree.type)
}
}));
/* *INDENT-ON* */
- print (vam->ofp, "%20s => %20s (%s)",
- sw_if_from_name, sw_if_to_name, states[mp->state]);
+ print (vam->ofp, "%20s => %20s (%s) %s",
+ sw_if_from_name, sw_if_to_name, states[mp->state],
+ mp->is_l2 ? "l2" : "device");
}
static void
vat_json_object_add_string_copy (node, "dst-if-name", sw_if_to_name);
}
vat_json_object_add_uint (node, "state", mp->state);
+ vat_json_object_add_uint (node, "is-l2", mp->is_l2);
}
static int
"<vpp-if-name> | sw_if_index <id>") \
_(sw_interface_tap_dump, "") \
_(tap_create_v2, \
- "name <name> [hw-addr <mac-addr>] [host-ns <name>] [rx-ring-size <num> [tx-ring-size <num>]") \
+ "id <num> [hw-addr <mac-addr>] [host-ns <name>] [rx-ring-size <num> [tx-ring-size <num>]") \
_(tap_delete_v2, \
"<vpp-if-name> | sw_if_index <id>") \
_(sw_interface_tap_v2_dump, "") \
_(vxlan_tunnel_dump, "[<intfc> | sw_if_index <nn>]") \
_(geneve_tunnel_dump, "[<intfc> | sw_if_index <nn>]") \
_(gre_add_del_tunnel, \
- "src <ip-addr> dst <ip-addr> [outer-fib-id <nn>] [teb] [del]\n") \
+ "src <ip-addr> dst <ip-addr> [outer-fib-id <nn>] [instance <n>]\n" \
+ "[teb | erspan <session-id>] [del]") \
_(gre_tunnel_dump, "[<intfc> | sw_if_index <nn>]") \
_(l2_fib_clear_table, "") \
_(l2_interface_efp_filter, "sw_if_index <nn> enable | disable") \