aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/acl/acl.c
diff options
context:
space:
mode:
authorPavel Kotucek <pkotucek@cisco.com>2017-09-14 09:50:52 +0200
committerOle Trøan <otroan@employees.org>2017-09-19 07:24:02 +0000
commit057704ebb51a006fbfd18dba570df1ca504b4277 (patch)
treed84792b3a967b132bfffbcef1f49f778109973a6 /src/plugins/acl/acl.c
parent8d66f9d3f83a419fde67efbb2ee8697038922b7a (diff)
ACL plugin enable macip for ip4/ip6 traffic
Plus fixed problem with acl heap. Change-Id: I3d91db549ebe4595f1dab9b8780f90722540024b Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>
Diffstat (limited to 'src/plugins/acl/acl.c')
-rw-r--r--src/plugins/acl/acl.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/plugins/acl/acl.c b/src/plugins/acl/acl.c
index 21823e3ba5f..04a66864503 100644
--- a/src/plugins/acl/acl.c
+++ b/src/plugins/acl/acl.c
@@ -894,7 +894,6 @@ acl_interface_add_del_inout_acl (u32 sw_if_index, u8 is_add, u8 is_input,
{
int rv = -1;
acl_main_t *am = &acl_main;
- void *oldheap = acl_set_heap(am);
if (is_add)
{
rv =
@@ -910,7 +909,6 @@ acl_interface_add_del_inout_acl (u32 sw_if_index, u8 is_add, u8 is_input,
rv =
acl_interface_del_inout_acl (sw_if_index, is_input, acl_list_index);
}
- clib_mem_set_heap (oldheap);
return rv;
}
@@ -1075,8 +1073,8 @@ macip_create_classify_tables (acl_main_t * am, u32 macip_acl_index)
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 */
@@ -1262,11 +1260,11 @@ macip_acl_interface_add_acl (acl_main_t * am, u32 sw_if_index,
void *oldheap = acl_set_heap(am);
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 =
@@ -1279,7 +1277,6 @@ static int
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))
@@ -1296,6 +1293,7 @@ macip_acl_del_list (u32 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);
@@ -1316,7 +1314,6 @@ macip_acl_interface_add_del_acl (u32 sw_if_index, u8 is_add,
u32 acl_list_index)
{
acl_main_t *am = &acl_main;
- void *oldheap = acl_set_heap(am);
int rv = -1;
if (is_add)
{
@@ -1326,7 +1323,6 @@ macip_acl_interface_add_del_acl (u32 sw_if_index, u8 is_add,
{
rv = macip_acl_interface_del_acl (am, sw_if_index);
}
- clib_mem_set_heap (oldheap);
return rv;
}