_(l2fib_flush_bd_reply) \
_(ip_route_add_del_reply) \
_(ip_table_add_del_reply) \
+_(ip_table_replace_begin_reply) \
+_(ip_table_flush_reply) \
+_(ip_table_replace_end_reply) \
_(ip_mroute_add_del_reply) \
_(mpls_route_add_del_reply) \
_(mpls_table_add_del_reply) \
_(proxy_arp_intfc_enable_disable_reply) \
_(sw_interface_set_unnumbered_reply) \
_(ip_neighbor_add_del_reply) \
-_(reset_fib_reply) \
_(set_ip_flow_hash_reply) \
_(sw_interface_ip6_enable_disable_reply) \
_(ip6nd_proxy_add_del_reply) \
_(SW_INTERFACE_SLAVE_DETAILS, sw_interface_slave_details) \
_(IP_ROUTE_ADD_DEL_REPLY, ip_route_add_del_reply) \
_(IP_TABLE_ADD_DEL_REPLY, ip_table_add_del_reply) \
+_(IP_TABLE_REPLACE_BEGIN_REPLY, ip_table_replace_begin_reply) \
+_(IP_TABLE_FLUSH_REPLY, ip_table_flush_reply) \
+_(IP_TABLE_REPLACE_END_REPLY, ip_table_replace_end_reply) \
_(IP_MROUTE_ADD_DEL_REPLY, ip_mroute_add_del_reply) \
_(MPLS_TABLE_ADD_DEL_REPLY, mpls_table_add_del_reply) \
_(MPLS_ROUTE_ADD_DEL_REPLY, mpls_route_add_del_reply) \
_(IP_NEIGHBOR_ADD_DEL_REPLY, ip_neighbor_add_del_reply) \
_(CREATE_VLAN_SUBIF_REPLY, create_vlan_subif_reply) \
_(CREATE_SUBIF_REPLY, create_subif_reply) \
-_(RESET_FIB_REPLY, reset_fib_reply) \
_(SET_IP_FLOW_HASH_REPLY, set_ip_flow_hash_reply) \
_(SW_INTERFACE_IP6_ENABLE_DISABLE_REPLY, \
sw_interface_ip6_enable_disable_reply) \
}
static int
-api_reset_fib (vat_main_t * vam)
+api_ip_table_replace_begin (vat_main_t * vam)
{
unformat_input_t *i = vam->input;
- vl_api_reset_fib_t *mp;
- u32 vrf_id = 0;
+ vl_api_ip_table_replace_begin_t *mp;
+ u32 table_id = 0;
u8 is_ipv6 = 0;
- u8 vrf_id_set = 0;
int ret;
while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
{
- if (unformat (i, "vrf %d", &vrf_id))
- vrf_id_set = 1;
+ if (unformat (i, "table %d", &table_id))
+ ;
else if (unformat (i, "ipv6"))
is_ipv6 = 1;
else
}
}
- if (vrf_id_set == 0)
+ M (IP_TABLE_REPLACE_BEGIN, mp);
+
+ mp->table.table_id = ntohl (table_id);
+ mp->table.is_ip6 = is_ipv6;
+
+ S (mp);
+ W (ret);
+ return ret;
+}
+
+static int
+api_ip_table_flush (vat_main_t * vam)
+{
+ unformat_input_t *i = vam->input;
+ vl_api_ip_table_flush_t *mp;
+ u32 table_id = 0;
+ u8 is_ipv6 = 0;
+
+ int ret;
+ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
{
- errmsg ("missing vrf id");
- return -99;
+ if (unformat (i, "table %d", &table_id))
+ ;
+ else if (unformat (i, "ipv6"))
+ is_ipv6 = 1;
+ else
+ {
+ clib_warning ("parse error '%U'", format_unformat_error, i);
+ return -99;
+ }
}
- M (RESET_FIB, mp);
+ M (IP_TABLE_FLUSH, mp);
- mp->vrf_id = ntohl (vrf_id);
- mp->is_ipv6 = is_ipv6;
+ mp->table.table_id = ntohl (table_id);
+ mp->table.is_ip6 = is_ipv6;
+
+ S (mp);
+ W (ret);
+ return ret;
+}
+
+static int
+api_ip_table_replace_end (vat_main_t * vam)
+{
+ unformat_input_t *i = vam->input;
+ vl_api_ip_table_replace_end_t *mp;
+ u32 table_id = 0;
+ u8 is_ipv6 = 0;
+
+ int ret;
+ while (unformat_check_input (i) != UNFORMAT_END_OF_INPUT)
+ {
+ if (unformat (i, "table %d", &table_id))
+ ;
+ else if (unformat (i, "ipv6"))
+ is_ipv6 = 1;
+ else
+ {
+ clib_warning ("parse error '%U'", format_unformat_error, i);
+ return -99;
+ }
+ }
+
+ M (IP_TABLE_REPLACE_END, mp);
+
+ mp->table.table_id = ntohl (table_id);
+ mp->table.is_ip6 = is_ipv6;
S (mp);
W (ret);
M (SR_LOCALSID_ADD_DEL, mp);
clib_memcpy (mp->localsid.addr, &localsid, sizeof (mp->localsid));
+
if (nexthop_set)
{
clib_memcpy (mp->nh_addr6, &nh_addr6, sizeof (mp->nh_addr6));
M (SET_IPFIX_EXPORTER, mp);
- memcpy (mp->collector_address, collector_address.data,
+ memcpy (mp->collector_address.un.ip4, collector_address.data,
sizeof (collector_address.data));
mp->collector_port = htons ((u16) collector_port);
- memcpy (mp->src_address, src_address.data, sizeof (src_address.data));
+ memcpy (mp->src_address.un.ip4, src_address.data,
+ sizeof (src_address.data));
mp->vrf_id = htonl (vrf_id);
mp->path_mtu = htonl (path_mtu);
mp->template_interval = htonl (template_interval);
M (L2TPV3_CREATE_TUNNEL, mp);
- clib_memcpy (mp->client_address, client_address.as_u8,
- sizeof (mp->client_address));
+ clib_memcpy (mp->client_address.un.ip6, client_address.as_u8,
+ sizeof (ip6_address_t));
- clib_memcpy (mp->our_address, our_address.as_u8, sizeof (mp->our_address));
+ clib_memcpy (mp->our_address.un.ip6, our_address.as_u8,
+ sizeof (ip6_address_t));
mp->local_session_id = ntohl (local_session_id);
mp->remote_session_id = ntohl (remote_session_id);
mp->local_cookie = clib_host_to_net_u64 (local_cookie);
mp->remote_cookie = clib_host_to_net_u64 (remote_cookie);
mp->l2_sublayer_present = l2_sublayer_present;
- mp->is_ipv6 = 1;
S (mp);
W (ret);
vat_json_init_object (node);
- clib_memcpy (&addr, mp->our_address, sizeof (addr));
+ clib_memcpy (&addr, mp->our_address.un.ip6, sizeof (addr));
vat_json_object_add_ip6 (node, "our_address", addr);
- clib_memcpy (&addr, mp->client_address, sizeof (addr));
+ clib_memcpy (&addr, mp->client_address.un.ip6, sizeof (addr));
vat_json_object_add_ip6 (node, "client_address", addr);
vat_json_node_t *lc = vat_json_object_add (node, "local_cookie");
if (unformat (input, "%U", unformat_ip4_address, &ip_addr_v4 (&ip)))
{
is_add = 1;
- ip_addr_version (&ip) = IP4;
+ ip_addr_version (&ip) = AF_IP4;
}
else
if (unformat (input, "%U", unformat_ip6_address, &ip_addr_v6 (&ip)))
{
is_add = 1;
- ip_addr_version (&ip) = IP6;
+ ip_addr_version (&ip) = AF_IP6;
}
else
{
mp->is_add = is_add;
if (is_add)
{
- mp->is_ip4 = ip_addr_version (&ip) == IP4 ? 1 : 0;
+ mp->is_ip4 = ip_addr_version (&ip) == AF_IP4 ? 1 : 0;
if (mp->is_ip4)
clib_memcpy (mp->address, &ip, 4);
else
"[outer_vlan_id <n>][inner_vlan_id <n>]\n" \
"[no_tags][one_tag][two_tags][dot1ad][exact_match][default_sub]\n" \
"[outer_vlan_id_any][inner_vlan_id_any]") \
-_(reset_fib, "vrf <n> [ipv6]") \
+_(ip_table_replace_begin, "table <n> [ipv6]") \
+_(ip_table_flush, "table <n> [ipv6]") \
+_(ip_table_replace_end, "table <n> [ipv6]") \
_(set_ip_flow_hash, \
"vrf <n> [src] [dst] [sport] [dport] [proto] [reverse] [ipv6]") \
_(sw_interface_ip6_enable_disable, \