out:
rmp = vl_msg_api_alloc (sizeof (*rmp));
- rmp->_vl_msg_id = ntohs (VL_API_CLASSIFY_PCAP_LOOKUP_TABLE_REPLY);
+ rmp->_vl_msg_id =
+ ntohs (REPLY_MSG_ID_BASE + VL_API_CLASSIFY_PCAP_LOOKUP_TABLE_REPLY);
rmp->context = mp->context;
rmp->retval = ntohl (rv);
rmp->table_index = htonl (table_index);
out:
rmp = vl_msg_api_alloc (sizeof (*rmp));
- rmp->_vl_msg_id = ntohs (VL_API_CLASSIFY_PCAP_SET_TABLE_REPLY);
+ rmp->_vl_msg_id =
+ ntohs (REPLY_MSG_ID_BASE + VL_API_CLASSIFY_PCAP_SET_TABLE_REPLY);
rmp->context = mp->context;
rmp->retval = ntohl (rv);
rmp->table_index = htonl (table_index);
out:
count = vec_len (tables);
rmp = vl_msg_api_alloc_as_if_client (sizeof (*rmp) + count * sizeof (u32));
- rmp->_vl_msg_id = ntohs (VL_API_CLASSIFY_PCAP_GET_TABLES_REPLY);
+ rmp->_vl_msg_id =
+ ntohs (REPLY_MSG_ID_BASE + VL_API_CLASSIFY_PCAP_GET_TABLES_REPLY);
rmp->context = mp->context;
rmp->retval = ntohl (rv);
rmp->count = htonl (count);
out:
rmp = vl_msg_api_alloc (sizeof (*rmp));
- rmp->_vl_msg_id = ntohs ((VL_API_CLASSIFY_TRACE_LOOKUP_TABLE_REPLY));
+ rmp->_vl_msg_id =
+ ntohs ((REPLY_MSG_ID_BASE + VL_API_CLASSIFY_TRACE_LOOKUP_TABLE_REPLY));
rmp->context = mp->context;
rmp->retval = ntohl (rv);
rmp->table_index = htonl (table_index);
out:
rmp = vl_msg_api_alloc (sizeof (*rmp));
- rmp->_vl_msg_id = ntohs ((VL_API_CLASSIFY_TRACE_SET_TABLE_REPLY));
+ rmp->_vl_msg_id =
+ ntohs ((REPLY_MSG_ID_BASE + VL_API_CLASSIFY_TRACE_SET_TABLE_REPLY));
rmp->context = mp->context;
rmp->retval = ntohl (rv);
rmp->table_index = htonl (table_index);
out:
count = vec_len (tables);
rmp = vl_msg_api_alloc_as_if_client (sizeof (*rmp) + count * sizeof (u32));
- rmp->_vl_msg_id = ntohs (VL_API_CLASSIFY_TRACE_GET_TABLES_REPLY);
+ rmp->_vl_msg_id =
+ ntohs (REPLY_MSG_ID_BASE + VL_API_CLASSIFY_TRACE_GET_TABLES_REPLY);
rmp->context = mp->context;
rmp->retval = ntohl (rv);
rmp->count = htonl (count);
mp = vl_msg_api_alloc (sizeof (*mp));
clib_memset (mp, 0, sizeof (*mp));
- mp->_vl_msg_id = ntohs (VL_API_POLICER_CLASSIFY_DETAILS);
+ mp->_vl_msg_id = ntohs (REPLY_MSG_ID_BASE + VL_API_POLICER_CLASSIFY_DETAILS);
mp->context = context;
mp->sw_if_index = htonl (sw_if_index);
mp->table_index = htonl (table_index);
vl_api_classify_table_ids_reply_t *rmp;
rmp = vl_msg_api_alloc_as_if_client (sizeof (*rmp) + count * sizeof (u32));
- rmp->_vl_msg_id = ntohs (VL_API_CLASSIFY_TABLE_IDS_REPLY);
+ rmp->_vl_msg_id =
+ ntohs (REPLY_MSG_ID_BASE + VL_API_CLASSIFY_TABLE_IDS_REPLY);
rmp->context = mp->context;
rmp->count = ntohl (count);
clib_memcpy (rmp->ids, table_ids, count * sizeof (u32));
u32 table_id = ntohl (mp->table_id);
vnet_classify_table_t *t;
- /* *INDENT-OFF* */
- pool_foreach (t, cm->tables)
+ pool_foreach (t, cm->tables)
{
- if (table_id == t - cm->tables)
- {
- rmp = vl_msg_api_alloc_as_if_client
- (sizeof (*rmp) + t->match_n_vectors * sizeof (u32x4));
- rmp->_vl_msg_id = ntohs (VL_API_CLASSIFY_TABLE_INFO_REPLY);
- rmp->context = mp->context;
- rmp->table_id = ntohl(table_id);
- rmp->nbuckets = ntohl(t->nbuckets);
- rmp->match_n_vectors = ntohl(t->match_n_vectors);
- rmp->skip_n_vectors = ntohl(t->skip_n_vectors);
- rmp->active_sessions = ntohl(t->active_elements);
- rmp->next_table_index = ntohl(t->next_table_index);
- rmp->miss_next_index = ntohl(t->miss_next_index);
- rmp->mask_length = ntohl(t->match_n_vectors * sizeof (u32x4));
- clib_memcpy(rmp->mask, t->mask, t->match_n_vectors * sizeof(u32x4));
- rmp->retval = 0;
- break;
- }
- }
- /* *INDENT-ON* */
+ if (table_id == t - cm->tables)
+ {
+ rmp = vl_msg_api_alloc_as_if_client (
+ sizeof (*rmp) + t->match_n_vectors * sizeof (u32x4));
+ rmp->_vl_msg_id =
+ ntohs (REPLY_MSG_ID_BASE + VL_API_CLASSIFY_TABLE_INFO_REPLY);
+ rmp->context = mp->context;
+ rmp->table_id = ntohl (table_id);
+ rmp->nbuckets = ntohl (t->nbuckets);
+ rmp->match_n_vectors = ntohl (t->match_n_vectors);
+ rmp->skip_n_vectors = ntohl (t->skip_n_vectors);
+ rmp->active_sessions = ntohl (t->active_elements);
+ rmp->next_table_index = ntohl (t->next_table_index);
+ rmp->miss_next_index = ntohl (t->miss_next_index);
+ rmp->mask_length = ntohl (t->match_n_vectors * sizeof (u32x4));
+ clib_memcpy (rmp->mask, t->mask,
+ t->match_n_vectors * sizeof (u32x4));
+ rmp->retval = 0;
+ break;
+ }
+ }
if (rmp == 0)
{
rmp = vl_msg_api_alloc (sizeof (*rmp));
- rmp->_vl_msg_id = ntohs (VL_API_CLASSIFY_TABLE_INFO_REPLY);
+ rmp->_vl_msg_id =
+ ntohs (REPLY_MSG_ID_BASE + VL_API_CLASSIFY_TABLE_INFO_REPLY);
rmp->context = mp->context;
rmp->retval = ntohl (VNET_API_ERROR_CLASSIFY_TABLE_NOT_FOUND);
}
rmp = vl_msg_api_alloc (sizeof (*rmp));
clib_memset (rmp, 0, sizeof (*rmp));
- rmp->_vl_msg_id = ntohs (VL_API_CLASSIFY_SESSION_DETAILS);
+ rmp->_vl_msg_id =
+ ntohs (REPLY_MSG_ID_BASE + VL_API_CLASSIFY_SESSION_DETAILS);
rmp->context = context;
rmp->table_id = ntohl (table_id);
rmp->hit_next_index = ntohl (e->next_index);
mp = vl_msg_api_alloc (sizeof (*mp));
clib_memset (mp, 0, sizeof (*mp));
- mp->_vl_msg_id = ntohs (VL_API_FLOW_CLASSIFY_DETAILS);
+ mp->_vl_msg_id = ntohs (REPLY_MSG_ID_BASE + VL_API_FLOW_CLASSIFY_DETAILS);
mp->context = context;
mp->sw_if_index = htonl (sw_if_index);
mp->table_index = htonl (table_index);
REPLY_MACRO (VL_API_INPUT_ACL_SET_INTERFACE_REPLY);
}
+static void
+vl_api_punt_acl_add_del_t_handler (vl_api_punt_acl_add_del_t *mp)
+{
+ vlib_main_t *vm = vlib_get_main ();
+ vl_api_punt_acl_add_del_reply_t *rmp;
+ int rv;
+
+ rv = vnet_set_in_out_acl_intfc (
+ vm, 0 /* sw_if_index */, ~0 /* ip4_table_index */,
+ ~0 /* ip6_table_index */, ~0 /* l2_table_index */,
+ ntohl (mp->ip4_table_index), ntohl (mp->ip6_table_index), mp->is_add,
+ 0 /* is_output */);
+
+ REPLY_MACRO (VL_API_PUNT_ACL_ADD_DEL_REPLY);
+}
+
+static void
+vl_api_punt_acl_get_t_handler (vl_api_punt_acl_get_t *mp)
+{
+ vl_api_punt_acl_get_reply_t *rmp;
+ int rv = 0;
+
+ const in_out_acl_main_t *am = &in_out_acl_main;
+
+ u32 *const *tables =
+ am->classify_table_index_by_sw_if_index[IN_OUT_ACL_INPUT_TABLE_GROUP];
+ const u32 *ip4_table = tables[IN_OUT_ACL_TABLE_IP4_PUNT];
+ const u32 *ip6_table = tables[IN_OUT_ACL_TABLE_IP6_PUNT];
+ const u32 ip4_table_index = vec_len (ip4_table) ? ip4_table[0] : ~0;
+ const u32 ip6_table_index = vec_len (ip6_table) ? ip6_table[0] : ~0;
+
+ REPLY_MACRO2 (VL_API_PUNT_ACL_GET_REPLY, ({
+ rmp->ip4_table_index = ntohl (ip4_table_index);
+ rmp->ip6_table_index = ntohl (ip6_table_index);
+ }));
+}
+
static void vl_api_output_acl_set_interface_t_handler
(vl_api_output_acl_set_interface_t * mp)
{