}
if (acl_list_index < vec_len(am->input_sw_if_index_vec_by_acl)) {
- if (vec_len(am->input_sw_if_index_vec_by_acl[acl_list_index]) > 0) {
+ if (vec_len(vec_elt_at_index(am->input_sw_if_index_vec_by_acl, acl_list_index)) > 0) {
/* ACL is applied somewhere inbound. Refuse to delete */
return -1;
}
}
if (acl_list_index < vec_len(am->output_sw_if_index_vec_by_acl)) {
- if (vec_len(am->output_sw_if_index_vec_by_acl[acl_list_index]) > 0) {
+ if (vec_len(vec_elt_at_index(am->output_sw_if_index_vec_by_acl, acl_list_index)) > 0) {
/* ACL is applied somewhere outbound. Refuse to delete */
return -1;
}
hash_acl_delete(am, acl_list_index);
/* now we can delete the ACL itself */
- a = &am->acls[acl_list_index];
+ a = pool_elt_at_index (am->acls, acl_list_index);
if (a->rules)
vec_free (a->rules);
rv =
vnet_l2_input_classify_set_tables (sw_if_index, ip4_table_index,
ip6_table_index, ~0);
- clib_warning
- ("ACL enabling on interface sw_if_index %d, setting tables to the following: ip4: %d ip6: %d\n",
- sw_if_index, ip4_table_index, ip6_table_index);
if (rv)
{
acl_classify_add_del_table_tiny (cm, ip6_5tuple_mask,
{
int rv = -1;
acl_main_t *am = &acl_main;
- void *oldheap = acl_set_heap(am);
if (is_add)
{
rv =
rv =
acl_interface_del_inout_acl (sw_if_index, is_input, acl_list_index);
}
- clib_mem_set_heap (oldheap);
return rv;
}
{
macip_match_type_t *mvec = NULL;
macip_match_type_t *mt;
- macip_acl_list_t *a = &am->macip_acls[macip_acl_index];
+ macip_acl_list_t *a = pool_elt_at_index (am->macip_acls, macip_acl_index);
int i;
u32 match_type_index;
u32 last_table;
1);
last_table = mt->table_index;
}
- a->ip4_table_index = ~0;
- a->ip6_table_index = ~0;
+ a->ip4_table_index = last_table;
+ a->ip6_table_index = last_table;
a->l2_table_index = last_table;
/* Populate the classifier tables with rules from the MACIP ACL */
macip_destroy_classify_tables (acl_main_t * am, u32 macip_acl_index)
{
vnet_classify_main_t *cm = &vnet_classify_main;
- macip_acl_list_t *a = &am->macip_acls[macip_acl_index];
+ macip_acl_list_t *a = pool_elt_at_index (am->macip_acls, macip_acl_index);
if (a->ip4_table_index != ~0)
{
}
else
{
- a = &am->macip_acls[*acl_list_index];
+ a = pool_elt_at_index (am->macip_acls, *acl_list_index);
if (a->rules)
{
vec_free (a->rules);
/* No point in deleting MACIP ACL which is not applied */
if (~0 == macip_acl_index)
return -1;
- a = &am->macip_acls[macip_acl_index];
+ a = pool_elt_at_index (am->macip_acls, macip_acl_index);
/* remove the classifier tables off the interface L2 ACL */
rv =
vnet_set_input_acl_intfc (am->vlib_main, sw_if_index, a->ip4_table_index,
return -1;
}
void *oldheap = acl_set_heap(am);
- a = &am->macip_acls[macip_acl_index];
+ a = pool_elt_at_index (am->macip_acls, macip_acl_index);
vec_validate_init_empty (am->macip_acl_by_sw_if_index, sw_if_index, ~0);
+ clib_mem_set_heap (oldheap);
/* If there already a MACIP ACL applied, unapply it */
if (~0 != am->macip_acl_by_sw_if_index[sw_if_index])
macip_acl_interface_del_acl(am, sw_if_index);
am->macip_acl_by_sw_if_index[sw_if_index] = macip_acl_index;
- clib_mem_set_heap (oldheap);
/* Apply the classifier tables for L2 ACLs */
rv =
macip_acl_del_list (u32 acl_list_index)
{
acl_main_t *am = &acl_main;
- void *oldheap = acl_set_heap(am);
macip_acl_list_t *a;
int i;
if (pool_is_free_index (am->macip_acls, acl_list_index))
}
}
+ void *oldheap = acl_set_heap(am);
/* Now that classifier tables are detached, clean them up */
macip_destroy_classify_tables (am, acl_list_index);
/* now we can delete the ACL itself */
- a = &am->macip_acls[acl_list_index];
+ a = pool_elt_at_index (am->macip_acls, acl_list_index);
if (a->rules)
{
vec_free (a->rules);
u32 acl_list_index)
{
acl_main_t *am = &acl_main;
- void *oldheap = acl_set_heap(am);
int rv = -1;
if (is_add)
{
{
rv = macip_acl_interface_del_acl (am, sw_if_index);
}
- clib_mem_set_heap (oldheap);
return rv;
}
copy_acl_rule_to_api_rule (&rules[i], &acl->rules[i]);
}
- clib_warning("Sending acl details for ACL index %d", ntohl(mp->acl_index));
clib_mem_set_heap (oldheap);
vl_msg_api_send_shmem (q, (u8 *) & mp);
}
{
acl_index = ntohl (mp->acl_index);
if (!pool_is_free_index (am->acls, acl_index))
- {
- acl = &am->acls[acl_index];
- send_acl_details (am, q, acl, mp->context);
- }
+ {
+ acl = pool_elt_at_index (am->acls, acl_index);
+ send_acl_details (am, q, acl, mp->context);
+ }
}
if (rv == -1)
{
u32 acl_index = ntohl (mp->acl_index);
if (!pool_is_free_index (am->macip_acls, acl_index))
- {
- acl = &am->macip_acls[acl_index];
- send_macip_acl_details (am, q, acl, mp->context);
- }
+ {
+ acl = pool_elt_at_index (am->macip_acls, acl_index);
+ send_macip_acl_details (am, q, acl, mp->context);
+ }
}
}