aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/collections
Commit message (Collapse)AuthorAgeFilesLines
* linked-list: Change return value of find_first() and signature of its callbackTobias Brunner2017-05-262-22/+54
| | | | This avoids the unportable five pointer hack.
* linked-list: Change interface of callback for invoke_function()Tobias Brunner2017-05-262-13/+14
| | | | This avoids the unportable five pointer hack.
* linked-list: invoke_offset() doesn't take any additional arguments anymoreTobias Brunner2017-05-262-9/+5
|
* Change interface for enumerator_create_filter() callbackTobias Brunner2017-05-262-30/+22
| | | | | This avoids the unportable 5 pointer hack, but requires enumerating in the callback.
* Migrate all enumerators to venumerate() interface changeTobias Brunner2017-05-265-167/+200
|
* enumerator: Add venumerate() method to enumerator_t that takes a va_listTobias Brunner2017-05-262-8/+51
| | | | | | | | | | This will allow us to implement e.g. enumerator_cleaner without having to use that unportable 5 pointer forwarding or having to define a callback for each instance. A generic implementation for enumerate() is provided so only venumerate() has to be implemented, which may be simplified by using the VA_ARGS_VGET() macro.
* Fixed some typos, courtesy of codespellTobias Brunner2017-03-231-1/+1
|
* Use standard unsigned integer typesAndreas Steffen2016-03-242-11/+11
|
* linked-list: Add method to compare two lists of objects for equalityTobias Brunner2016-03-082-2/+75
|
* array: Add an insert/create function for value based arraysMartin Willi2015-12-072-0/+25
|
* 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: Warn about caveat with array_remove_at() and value based arraysTobias Brunner2014-09-111-0/+5
| | | | | | | | | | | | | | | | Because enumerate() for value based arrays returns a pointer directly to the internal array elements and because array_remove_at() or rather the called array_remove() may move elements over the element at the currently enumerated position, the pointer passed to enumerate() will point to a different array element after the array_remove_at() call. The caller will thus operate on the wrong element if that pointer is accessed again before calling enumerate(). For performance reasons we currently don't change the implementation to copy each array element during enumeration to a private member of the enumerator and return a pointer to that. Similarly, due to the danger of subtle bugs we don't remember the pointer passed to enumerate() to later redirect it to a copy created during the array_remove_at() call.
* enumerator: Enumerate glob(3) matches using gl_pathcMartin Willi2014-07-071-9/+6
| | | | | | | While glob should return a NULL terminated gl_pathv when having no matches, at least on OS X this is not true when using GLOB_DOOFFS. Rely on the number of matches returned in gl_pathc, which seems to be more reliable in error cases.
* collections: Add interface for read-only dictionariesTobias Brunner2014-06-191-0/+55
|
* hashtable: Add destroy_function methodTobias Brunner2014-06-192-11/+37
|
* enumerator: Add enumerator to enumerate files matching a patternTobias Brunner2014-05-152-3/+140
| | | | | | | | | | | | This enumerator is a wrapper around glob(3). If that function is not supported NULL is returned. If no files match or an error occurs during the pattern expansion an error is logged and the enumerator simply returns no items. RFC: if GLOB_ERR is not supplied glob returns GLOB_NOMATCH if e.g. the base directory of the pattern does not exist, which would otherwise result in an error. This way there is at least a clear error message in case of a typo.
* array: Allocate initial data properly if esize is 0Tobias Brunner2014-05-151-1/+1
|
* hashtable: Make key arguments constTobias Brunner2014-03-312-22/+23
| | | | | This allows using const strings etc. for lookups without cast. And keys are not modifiable anyway.
* 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-122-2/+46
| | | | Cygwin for example does not support qsort_r.
* array: Add array_bsearch functionTobias Brunner2014-02-122-0/+75
|
* array: Add array_sort functionTobias Brunner2014-02-122-1/+77
|
* array: Add an array_get() functionMartin Willi2014-01-222-1/+26
|
* 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.
* Fix various API doc issues and typosTobias Brunner2013-07-181-2/+3
| | | | Partially based on an old patch by Adrian-Ken Rueegsegger.
* hashtable: add common hashtable hash/equals functions for pointer/string keysMartin Willi2013-07-182-3/+68
|
* linked-list: Remove barely used has_more() methodTobias Brunner2013-07-172-20/+0
| | | | | | | | This required some refactoring when handling encrypted payloads. Also changed log messages so that "encrypted payload" is logged instead of "encryption payload" (even if we internally still call it that) as that's the name used in RFC 5996.
* linked-list: Don't require an argument for the item when enumeratingTobias Brunner2013-07-171-1/+4
|
* linked-list: Remove unused clone_function() methodTobias Brunner2013-07-172-24/+0
|
* linked-list: Remove barely used find_last() methodTobias Brunner2013-07-172-44/+0
|
* linked-list: Remove unused replace() methodTobias Brunner2013-07-172-25/+0
| | | | | | Its functionality can be replicated by calling insert_before() followed by remove_at(). Not the other way around, though, because remove_at() changes the enumerator position.
* array: introduce an array collection storing elements very efficientlyMartin Willi2013-07-172-0/+610
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Remove dead code in token enumeratorTobias Brunner2013-06-111-12/+2
| | | | | | Since we always search for the nearest separator (and strip them from the front of the next token) there can't be any separators left at the end of a token.
* Some minor Doxygen fixes for linked_list_tTobias Brunner2013-06-111-2/+5
|
* Moved utils.[ch] to utils folderTobias Brunner2012-10-241-1/+1
|
* Moved debug.[ch] to utils folderTobias Brunner2012-10-241-1/+1
|
* Moved data structures to new collections subfolderTobias Brunner2012-10-248-0/+2461