Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | linked-list: Don't require an argument for the item when enumerating | Tobias Brunner | 2013-07-17 | 2 | -1/+21 | |
| | ||||||
* | linked-list: Remove unused clone_function() method | Tobias Brunner | 2013-07-17 | 3 | -53/+7 | |
| | ||||||
* | linked-list: Remove barely used find_last() method | Tobias Brunner | 2013-07-17 | 3 | -67/+0 | |
| | ||||||
* | linked-list: Remove unused replace() method | Tobias Brunner | 2013-07-17 | 3 | -65/+51 | |
| | | | | | | 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. | |||||
* | auth-cfg: use array instead of linked list | Martin Willi | 2013-07-17 | 1 | -35/+26 | |
| | | | | Saves another 4 linked lists (1KB) per IKE_SA | |||||
* | unit-tests: implement tests for array collection | Martin Willi | 2013-07-17 | 4 | -1/+363 | |
| | ||||||
* | array: introduce an array collection storing elements very efficiently | Martin Willi | 2013-07-17 | 4 | -2/+613 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | |||||
* | pkcs12: Add plugin dependencies with soft dependencies on the most common ↵ | Tobias Brunner | 2013-07-15 | 1 | -0/+6 | |
| | | | | algorithms | |||||
* | leak-detective: remove hdr entry when reallocating zero bytes | Martin Willi | 2013-07-12 | 1 | -0/+6 | |
| | ||||||
* | leak-detective: print total of allocated/leaked bytes in usage/report | Martin Willi | 2013-07-12 | 1 | -5/+13 | |
| | ||||||
* | Recognize critical IssuingDistributionPoint CRL extension | Andreas Steffen | 2013-07-12 | 3 | -1/+8 | |
| | ||||||
* | leak-detective: add a usage threshold option based on the number of allocations | Martin Willi | 2013-07-10 | 1 | -6/+11 | |
| | ||||||
* | leak-detective: set_state() only affects the calling thread | Martin Willi | 2013-07-10 | 2 | -15/+2 | |
| | | | | | The only user (bfd backtraces) is fine with that, and we really should not mess the enable flag while doing allocations with other threads. | |||||
* | leak-detective: take a copy of backtrace while printing traces | Martin Willi | 2013-07-10 | 1 | -2/+3 | |
| | | | | | As we don't want to hold the lock, we must make sure backtraces keep valid while printing them. | |||||
* | backtrace: add a clone() method | Martin Willi | 2013-07-10 | 2 | -7/+44 | |
| | ||||||
* | leak-detective: remove hdr from the allocation list during realloc() | Martin Willi | 2013-07-10 | 1 | -39/+60 | |
| | | | | | | | If realloc moves an allocation, the original allocation gets freed. We therefore must remove the hdr from the list, as it is invalid. We can add it afterwards once it has been updated, allowing us to unlock the list during reallocation. | |||||
* | Use strpfx() helper where appropriate | Tobias Brunner | 2013-07-08 | 4 | -4/+4 | |
| | ||||||
* | utils: Add helper function to check a string for a given prefix | Tobias Brunner | 2013-07-08 | 1 | -0/+8 | |
| | ||||||
* | utils: Convert string helper macros to static inline functions | Tobias Brunner | 2013-07-08 | 1 | -6/+15 | |
| | ||||||
* | openssl: RAND_pseudo_bytes() returns 0 if bytes are not cryptographically strong | Martin Willi | 2013-07-04 | 1 | -9/+6 | |
| | | | | For our purposes with RNG_WEAK this is fine, so accept a zero return value. | |||||
* | processor: Simplified the main loop | Tobias Brunner | 2013-06-28 | 1 | -109/+127 | |
| | ||||||
* | processor: Don't hold the lock while destroying jobs | Tobias Brunner | 2013-06-28 | 1 | -38/+66 | |
| | | | | | | If a lock is held when queue_job() is called and the same lock is required during the destruction of a job, holding the internal lock in the processor while calling destroy() could result in a deadlock. | |||||
* | integrity-checker: Use chunk_hash_static() to calculate checksums | Tobias Brunner | 2013-06-28 | 1 | -7/+2 | |
| | ||||||
* | chunk: Add predictable hash function | Tobias Brunner | 2013-06-28 | 3 | -2/+86 | |
| | | | | | Since chunk_hash() is randomized its output is not predictable, that is, it is only within the same process. | |||||
* | plugin-loader: Removed unused path argument of load() method | Tobias Brunner | 2013-06-28 | 3 | -13/+9 | |
| | | | | | Multiple additional search paths can be added with the add_path() method. | |||||
* | integrity-checker: Fix checksum calculation after randomizing chunk_hash() | Tobias Brunner | 2013-06-27 | 1 | -2/+7 | |
| | ||||||
* | unit-tests: Print loaded plugins | Tobias Brunner | 2013-06-27 | 1 | -0/+1 | |
| | ||||||
* | unit-tests: RSA key generation might take longer than 4 seconds | Tobias Brunner | 2013-06-27 | 1 | -0/+1 | |
| | | | | | Check uses a default timeout of 4 seconds for each test case, generating keys of 6 different key sizes might take longer than that. | |||||
* | tests: Properly load plugins from build directory | Tobias Brunner | 2013-06-27 | 1 | -7/+2 | |
| | | | | | | Calling load() incrementally does not really work as dependencies wouldn't be resolved properly if a required feature was to be provided by a plugin that is loaded later with a separate call to load(). | |||||
* | plugin-loader: Method added to provide additional search paths for plugins | Tobias Brunner | 2013-06-27 | 2 | -10/+66 | |
| | ||||||
* | capabilities: Return effective UID/GID if user did not configure anything | Tobias Brunner | 2013-06-25 | 1 | -2/+2 | |
| | ||||||
* | capabilities: Report effective UID/GID after dropping capabilities | Tobias Brunner | 2013-06-25 | 1 | -1/+1 | |
| | ||||||
* | capabilities: Handle CAP_CHOWN specially as it might not be required | Tobias Brunner | 2013-06-25 | 2 | -2/+63 | |
| | ||||||
* | capabilities: Check effective UID as fallback if capabilities are not supported | Tobias Brunner | 2013-06-25 | 1 | -1/+1 | |
| | ||||||
* | dhcp: Require CAP_NET_BIND_SERVICE and CAP_NET_RAW to open/bind sockets | Tobias Brunner | 2013-06-25 | 1 | -0/+3 | |
| | ||||||
* | socket-default: Require CAP_NET_BIND_SERVICE for ports < 1024 | Tobias Brunner | 2013-06-25 | 1 | -1/+4 | |
| | | | | | Since we don't know which ports are used with socket-dynamic we can't demand the capability there, but it might still be required. | |||||
* | capabilities: Only plugins that require CAP_NET_ADMIN demand it | Tobias Brunner | 2013-06-25 | 1 | -0/+4 | |
| | | | | The daemon as such does not require this capability. | |||||
* | capabilities: Move global capabilities_t instance to libstrongswan | Tobias Brunner | 2013-06-25 | 3 | -2/+10 | |
| | ||||||
* | capabilities: Ensure required capabilities are actually held by the process/user | Tobias Brunner | 2013-06-25 | 2 | -4/+58 | |
| | ||||||
* | tun-device: Packets sent over utun devices on Mac OS X have the protocol ↵ | Tobias Brunner | 2013-06-21 | 1 | -0/+11 | |
| | | | | family prepended | |||||
* | tun-device: Avoid opening /dev/tunX multiple times (e.g. on FreeBSD) | Tobias Brunner | 2013-06-21 | 1 | -2/+6 | |
| | ||||||
* | printf-hook: Avoid double-free when freeing Vstr config | Tobias Brunner | 2013-06-21 | 1 | -1/+0 | |
| | | | | | | | Thread-specific objects get freed when the thread value object is destroyed (wasn't the case earlier, i.e. before 2b19dd35), which may cause the second call to vstr_free_conf() to fail in an assert in Vstr (depending on how it was built). | |||||
* | plugin-loader: Move logging of failed features to status() | Tobias Brunner | 2013-06-21 | 1 | -7/+11 | |
| | | | | | | | | | Still log an error message if critical features fail, as loaded plugins/features are not logged in that case. This way loaded plugins are printed before failed features and the relation is easier to make for users. It also allows programs to log this message on a different level. | |||||
* | plugin-loader: Add method to print loaded plugins on a given log level | Tobias Brunner | 2013-06-21 | 2 | -0/+18 | |
| | ||||||
* | plugin-loader: Collect statistics while loading features, print them in case ↵ | Tobias Brunner | 2013-06-21 | 1 | -69/+40 | |
| | | | | | | | features failed to load There is no need to explicitly search for failed features in critical plugins as this is now detected while loading the features. | |||||
* | plugin-loader: Use different log level if failed feature is in critical plugin | Tobias Brunner | 2013-06-21 | 1 | -2/+16 | |
| | ||||||
* | plugin-loader: Log message when failing to load plugin | Tobias Brunner | 2013-06-21 | 1 | -0/+8 | |
| | ||||||
* | plugin-loader: Reduce verbosity while loading plugins | Tobias Brunner | 2013-06-21 | 1 | -4/+4 | |
| | ||||||
* | leak-detective: (re-)whitelist some OpenSSL functions | Martin Willi | 2013-06-21 | 1 | -0/+5 | |
| | | | | | | | Some static allocations in plugins won't get freed, because in the test case process the plugins are not destroyed. If a plugin would clean up allocations done while just using the plugin, these show up as leak in the child process, letting tests fail. | |||||
* | unit-tests: load plugins in test-runner from build directory | Martin Willi | 2013-06-21 | 2 | -1/+30 | |
| |