-static void
-acl_plugin_show_tables_mask_type(acl_main_t *am)
-{
- vlib_main_t *vm = am->vlib_main;
- ace_mask_type_entry_t *mte;
-
- vlib_cli_output(vm, "Mask-type entries:");
- /* *INDENT-OFF* */
- pool_foreach(mte, am->ace_mask_type_pool,
- ({
- vlib_cli_output(vm, " %3d: %016llx %016llx %016llx %016llx %016llx %016llx refcount %d",
- mte - am->ace_mask_type_pool,
- mte->mask.kv.key[0], mte->mask.kv.key[1], mte->mask.kv.key[2],
- mte->mask.kv.key[3], mte->mask.kv.key[4], mte->mask.kv.value, mte->refcount);
- }));
- /* *INDENT-ON* */
-}
-
-static void
-acl_plugin_show_tables_acl_hash_info(acl_main_t *am, u32 acl_index)
-{
- vlib_main_t *vm = am->vlib_main;
- u32 i,j;
- u64 *m;
- vlib_cli_output(vm, "Mask-ready ACL representations\n");
- for (i=0; i< vec_len(am->hash_acl_infos); i++) {
- if ((acl_index != ~0) && (acl_index != i)) {
- continue;
- }
- hash_acl_info_t *ha = &am->hash_acl_infos[i];
- vlib_cli_output(vm, "acl-index %u bitmask-ready layout\n", i);
- vlib_cli_output(vm, " applied inbound on sw_if_index list: %U\n", format_vec32, ha->inbound_sw_if_index_list, "%d");
- vlib_cli_output(vm, " applied outbound on sw_if_index list: %U\n", format_vec32, ha->outbound_sw_if_index_list, "%d");
- vlib_cli_output(vm, " mask type index bitmap: %U\n", format_bitmap_hex, ha->mask_type_index_bitmap);
- for(j=0; j<vec_len(ha->rules); j++) {
- hash_ace_info_t *pa = &ha->rules[j];
- m = (u64 *)&pa->match;
- vlib_cli_output(vm, " %4d: %016llx %016llx %016llx %016llx %016llx %016llx mask index %d acl %d rule %d action %d src/dst portrange not ^2: %d,%d\n",
- j, m[0], m[1], m[2], m[3], m[4], m[5], pa->mask_type_index,
- pa->acl_index, pa->ace_index, pa->action,
- pa->src_portrange_not_powerof2, pa->dst_portrange_not_powerof2);
- }
- }
-}
-
-static void
-acl_plugin_print_pae(vlib_main_t *vm, int j, applied_hash_ace_entry_t *pae)
-{
- vlib_cli_output(vm, " %4d: acl %d rule %d action %d bitmask-ready rule %d next %d prev %d tail %d hitcount %lld",
- j, pae->acl_index, pae->ace_index, pae->action, pae->hash_ace_info_index,
- pae->next_applied_entry_index, pae->prev_applied_entry_index, pae->tail_applied_entry_index, pae->hitcount);
-}
-
-static void
-acl_plugin_show_tables_applied_info(acl_main_t *am, u32 sw_if_index)
-{
- vlib_main_t *vm = am->vlib_main;
- u32 swi, j;
- vlib_cli_output(vm, "Applied lookup entries for interfaces");
-
- for(swi = 0; (swi < vec_len(am->input_applied_hash_acl_info_by_sw_if_index)) ||
- (swi < vec_len(am->output_applied_hash_acl_info_by_sw_if_index)) ||
- (swi < vec_len(am->input_hash_entry_vec_by_sw_if_index)) ||
- (swi < vec_len(am->output_hash_entry_vec_by_sw_if_index)); swi++) {
- if ((sw_if_index != ~0) && (sw_if_index != swi)) {
- continue;
- }
- vlib_cli_output(vm, "sw_if_index %d:", swi);
- if (swi < vec_len(am->input_applied_hash_acl_info_by_sw_if_index)) {
- applied_hash_acl_info_t *pal = &am->input_applied_hash_acl_info_by_sw_if_index[swi];
- vlib_cli_output(vm, " input lookup mask_type_index_bitmap: %U", format_bitmap_hex, pal->mask_type_index_bitmap);
- vlib_cli_output(vm, " input applied acls: %U", format_vec32, pal->applied_acls, "%d");
- }
- if (swi < vec_len(am->input_hash_entry_vec_by_sw_if_index)) {
- vlib_cli_output(vm, " input lookup applied entries:");
- for(j=0; j<vec_len(am->input_hash_entry_vec_by_sw_if_index[swi]); j++) {
- acl_plugin_print_pae(vm, j, &am->input_hash_entry_vec_by_sw_if_index[swi][j]);
- }
- }
-
- if (swi < vec_len(am->output_applied_hash_acl_info_by_sw_if_index)) {
- applied_hash_acl_info_t *pal = &am->output_applied_hash_acl_info_by_sw_if_index[swi];
- vlib_cli_output(vm, " output lookup mask_type_index_bitmap: %U", format_bitmap_hex, pal->mask_type_index_bitmap);
- vlib_cli_output(vm, " output applied acls: %U", format_vec32, pal->applied_acls, "%d");
- }
- if (swi < vec_len(am->output_hash_entry_vec_by_sw_if_index)) {
- vlib_cli_output(vm, " output lookup applied entries:");
- for(j=0; j<vec_len(am->output_hash_entry_vec_by_sw_if_index[swi]); j++) {
- acl_plugin_print_pae(vm, j, &am->output_hash_entry_vec_by_sw_if_index[swi][j]);
- }
- }
- }
-}
-
-static void
-acl_plugin_show_tables_bihash(acl_main_t *am, u32 show_bihash_verbose)
-{
- vlib_main_t *vm = am->vlib_main;
- show_hash_acl_hash(vm, am, show_bihash_verbose);
-}
-