aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/collections/array.c
Commit message (Collapse)AuthorAgeFilesLines
* Migrate all enumerators to venumerate() interface changeTobias Brunner2017-05-261-3/+6
|
* Use standard unsigned integer typesAndreas Steffen2016-03-241-10/+10
|
* array: Add an insert/create function for value based arraysMartin Willi2015-12-071-0/+10
|
* array: Adjust negative index before calling remove_head|tail()Tobias Brunner2014-09-111-4/+4
| | | | For ARRAY_TAIL we most often want to call remove_tail() not remove_head().
* array: Allocate initial data properly if esize is 0Tobias Brunner2014-05-151-1/+1
|
* array: Fix removal of elements in the second half of an arrayTobias Brunner2014-03-181-1/+1
| | | | | | | Memory beyond the end of the array was moved when array elements in the second half of an array were removed. Fixes #548.
* array: Fix compilation on FreeBSDTobias Brunner2014-02-131-2/+2
|
* array: Add fallback for qsort_r using thread-local valueTobias Brunner2014-02-121-2/+34
| | | | Cygwin for example does not support qsort_r.
* array: Add array_bsearch functionTobias Brunner2014-02-121-0/+50
|
* array: Add array_sort functionTobias Brunner2014-02-121-0/+54
|
* array: Add an array_get() functionMartin Willi2014-01-221-1/+14
|
* array: Number of items in get_size() is unsignedTobias Brunner2013-07-251-1/+1
| | | | | | Otherwise, array->esize is promoted to int and if array->esize * num results in a value > 0x7fffffff the return value would be incorrect due the implicit sign extension when getting cast to size_t.
* array: introduce an array collection storing elements very efficientlyMartin Willi2013-07-171-0/+416
Currently we use the very versatile linked-list collection to store elements with variable count. This is fine, but very inefficient: Due to the many methods in the linked list, on 64-bit platforms an empty list alone is more than 200 bytes. As we currently have about 50 lists per IKE_SA/CHILD_SA pair, this takes up to 10KB just for managing the empty lists. This is about the half of memory used by an IKE_SA/CHILD_SA pair, and obviously way too much. The new array type is not an object, but a collection of functions on an abstract type. The following lists are per IKE_SA and should be considered for a replacement with more efficient arrays (this uses load-testers on-demand created dynamic configurations, other scenarios have different lists): 14 -> ike_sa_create() @ src/libcharon/sa/ike_sa.c:2198 10 -> auth_cfg_create() @ src/libstrongswan/credentials/auth_cfg.c:1088 6 -> task_manager_v2_create() @ src/libcharon/sa/ikev2/task_manager_v2.c:1505 6 -> proposal_create() @ src/libcharon/config/proposal.c:592 5 -> peer_cfg_create() @ src/libcharon/config/peer_cfg.c:657 4 -> child_sa_create() @ src/libcharon/sa/child_sa.c:1090 2 -> child_cfg_create() @ src/libcharon/config/child_cfg.c:536 1 -> ike_cfg_create() @ src/libcharon/config/ike_cfg.c:330 1 -> put_connected_peers() @ src/libcharon/sa/ike_sa_manager.c:854