-static void *
-acl_set_heap (acl_main_t * am)
-{
- if (0 == am->acl_mheap)
- {
- if (0 == am->acl_mheap_size)
- {
- vlib_thread_main_t *tm = vlib_get_thread_main ();
- u64 per_worker_slack = 1000000LL;
- u64 per_worker_size =
- per_worker_slack +
- ((u64) am->fa_conn_table_max_entries) * sizeof (fa_session_t);
- u64 per_worker_size_with_slack = per_worker_slack + per_worker_size;
- u64 main_slack = 2000000LL;
- u64 bihash_size = (u64) am->fa_conn_table_hash_memory_size;
-
- am->acl_mheap_size =
- per_worker_size_with_slack * tm->n_vlib_mains + bihash_size +
- main_slack;
- }
- u64 max_possible = ((uword) ~ 0);
- if (am->acl_mheap_size > max_possible)
- {
- clib_warning ("ACL heap size requested: %lld, max possible %lld",
- am->acl_mheap_size, max_possible);
- }
-
- am->acl_mheap = mheap_alloc_with_lock (0 /* use VM */ ,
- am->acl_mheap_size,
- 1 /* locked */ );
- if (0 == am->acl_mheap)
- {
- clib_error
- ("ACL plugin failed to allocate main heap of %U bytes, abort",
- format_memory_size, am->acl_mheap_size);
- }
- }
- void *oldheap = clib_mem_set_heap (am->acl_mheap);
- return oldheap;
-}
-
-void *
-acl_plugin_set_heap ()
-{
- acl_main_t *am = &acl_main;
- return acl_set_heap (am);
-}
-
-void
-acl_plugin_acl_set_validate_heap (acl_main_t * am, int on)
-{
- clib_mem_set_heap (acl_set_heap (am));
-}
-
-void
-acl_plugin_acl_set_trace_heap (acl_main_t * am, int on)
-{
- clib_mem_set_heap (acl_set_heap (am));
-}
-