summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * irmd, ipcpd: Listen on a dedicated accept() threaddimitri staessens2017-08-163-131/+323
| | | | | | | | | | | | | | | | | | | | | | The IRMd and IPCPs will now call accept on their command sockets from a single thread that will dispatch work to the other threads. This solves a problem on OS X and FreeBSD where accept() doesn't time out when setting SO_RCVTIMEO on the socket. Calling kqueue or select() on that socket to wait for events before calling accept() didn't solve it since select() or kqueue() might wake up multiple threads, with the non-working threads again blocked on the accept() on shutdown.
* | Merged in dstaesse/ouroboros/be-license (pull request #552)dimitri staessens2017-08-13191-270/+191
|\| | | | | | | build: Replace fsf snail mail with contact URL
| * build: Replace fsf snail mail with contact URLdimitri staessens2017-08-13191-270/+191
| |
* | Merged in dstaesse/ouroboros/be-lib-fixes (pull request #551)dimitri staessens2017-08-132-127/+144
|\| | | | | | | Be lib fixes
| * lib: Fix data race on fqueues bitmapdimitri staessens2017-08-131-126/+143
| | | | | | | | | | | | This locks the process when allocating and destroying flow_sets. The flows_lock has been renamed to lock. Refactors and fixes a memleak in ouroboros_init.
| * lib: Fix TPM thread count on failuredimitri staessens2017-08-131-1/+1
|/
* Merged in dstaesse/ouroboros/be-tpm (pull request #550)dimitri staessens2017-08-132-38/+85
|\ | | | | | | lib: Fix instability in threadpool manager
| * ipcpd: Fix tracking of outstanding DHT requestsdimitri staessens2017-08-131-7/+28
| | | | | | | | | | | | The DHT failed when receiving multiple responses in a short timeframe. The lookup struct now keeps track of the number of outstanding requests.
| * lib: Fix instability in threadpool managerdimitri staessens2017-08-121-31/+57
| | | | | | | | | | | | The threadpool manager now tracks threads to prevent cyclic behaviour where too many threads shut down and the TPM responds with creating additional threads.
* | Merged in dstaesse/ouroboros/be-apple (pull request #549)dimitri staessens2017-08-111-2/+2
|\ \ | | | | | | | | | irmd: Fix mainloop timeout on OS X
| * | irmd: Fix mainloop timeout on OS Xdimitri staessens2017-08-111-2/+2
| | |
* | | Merged in dstaesse/ouroboros/be-apple (pull request #548)dimitri staessens2017-08-1114-62/+59
|\| | | |/ |/| | | build: Fix compilation on OS X Sierra
| * build: Fix compilation on OS X Sierradimitri staessens2017-08-1114-62/+59
|/
* Merged in sandervrijders/ouroboros/be-clang (pull request #547)Sander Vrijders2017-08-104-14/+8
|\ | | | | | | lib, ipcpd, tools: Fix enum assignments
| * lib, ipcpd, tools: Fix enum assignmentsSander Vrijders2017-08-104-14/+8
|/ | | | This fixes several assignments to the wrong enum type.
* Merged in sandervrijders/ouroboros/be-gitversiongen (pull request #546)Sander Vrijders2017-08-101-7/+0
|\ | | | | | | build: Simplify GitVersionGen
| * build: Simplify GitVersionGenSander Vrijders2017-08-101-7/+0
|/ | | | | This simplifies the macro GitVersionGen so that it doesn't need to rely on the sort executable.
* Merged in dstaesse/ouroboros/be-cmake-osx (pull request #545)dimitri staessens2017-08-101-0/+2
|\ | | | | | | build: Reset LIBGCRYPT_LIBRARIES when not found
| * build: Reset LIBGCRYPT_LIBRARIES when not founddimitri staessens2017-08-101-0/+2
|/
* Merged in dstaesse/ouroboros/be-libgcrypt (pull request #544)dimitri staessens2017-08-0914-96/+176
|\ | | | | | | build, lib, ipcpd, irmd: Add support for libgcrypt
| * build, lib, ipcpd, irmd: Add support for libgcryptdimitri staessens2017-08-0914-96/+176
|/ | | | | | | | | | | | | | | | This adds support for libgcrypt. If at least version 1.7.0 of libgcrypt is present, it may be used for secure random number generation and is used for hashing in the irmd/ipcp. The hash definitions are moved to the internal hash.h header, and defined independently of the hashes that are defined as part of the directory policy for the normal IPCP. The translation is moved from the IRMd to ipcpd/ipcp.h. The bootstrap call from the IRMd expects the IPCP to return the correct hash algorithm with a dif_info struct, which is in line with the behavior of the enroll call. This also improves how some platform checks in the build system are handled.
* Merged in dstaesse/ouroboros/testing-fa (pull request #543)dimitri staessens2017-08-081-2/+4
|\ | | | | | | ipcpd: Fix assignment of fd's in flow allocator
| * ipcpd: Fix assignment of fd's in flow allocatorDimitri Staessens2017-08-081-2/+4
|/
* Merged in dstaesse/ouroboros/be-irmd-timeo (pull request #542)0.6dimitri staessens2017-08-064-36/+85
|\ | | | | | | irmd: Specify timeout per command
| * ipcpd: Fix finding values in DHTDimitri Staessens2017-08-051-5/+18
| | | | | | | | | | | | | | | | | | The DHT lookup would stop if a node returned no new useful information (i.e. the value for the key or unknown nodes closer to the key) without waiting for other pending requests that could still return useful information. Now it correctly tracks the number of outstanding requests or returns if it doesn't get a response for KAD_T_RESP seconds. This fixes multi-hop flow allocation over the normal.
| * irmd: Don't self-query an IPCPDimitri Staessens2017-08-051-4/+5
| | | | | | | | | | | | Upon flow_allocation, the IRMd queries IPCPs for the destination name. After this commit, when an IPCP allocates a flow, the IRMd won't query that IPCP.
| * irmd: Don't call ipcp_flow_dealloc under lockDimitri Staessens2017-08-051-3/+13
| | | | | | | | | | | | | | | | | | | | When a process was killed, ipcp_flow_dealloc was called under a lock, causing a deadlock in the IRMd because handling the IPCP response also needs to take the same lock (the IPCP calls flow_dealloc to finalize this). This deadlock also resulted in the IPCP always reporting that it failed to send a reply message as the deadlock effectively blocks the IRMd until its socket timeout expired and thus the IPCP was always responding to an already closed socket.
| * irmd: Specify timeout per commandDimitri Staessens2017-08-052-24/+49
| | | | | | | | | | | | | | The commands towards the IPCPs have different time requirements, but the irmd had only a single timeout value to wait for a response. This commit allows setting different timeouts for the IRMd based on the command, configurable globally.
| * Merge branch 'be' of bitbucket.com:dstaesse/ouroboros into beDimitri Staessens2017-08-0412-40/+54
| |\ | |/ |/|
* | Merge branch 'testing' into beSander Vrijders2017-08-042-9/+17
|\ \
| * \ Merged in dstaesse/ouroboros/testing-irmd (pull request #541)dimitri staessens2017-08-042-9/+17
| |\ \ | | | | | | | | | | | | irmd: Release lock before ipcp_query
| | * | ipcpd: Fix missing space in shim-eth-llcdimitri staessens2017-08-041-1/+1
| | | |
| | * | irmd: Release lock before ipcp_querydimitri staessens2017-08-041-8/+16
| |/ / | | | | | | | | | | | | | | | The blocking ipcp_query call was called under reg_lock, causing flow_allocs over the shim-eth-llc to block the irmd for prolonged timespans.
* | | Merge branch 'testing' into beSander Vrijders2017-08-034-16/+54
|\| |
| * | Merged in dstaesse/ouroboros/testing-deadlines (pull request #540)dimitri staessens2017-08-034-16/+54
| |\ \ | | | | | | | | | | | | ipcpd: Fix pthread_cond_timedwait deadlines
* | \ \ Merged in sandervrijders/ouroboros/be-hurd (pull request #539)Sander Vrijders2017-08-0310-31/+37
|\ \ \ \ | | | | | | | | | | | | | | | build: Add check for robust mutexes
| * | | | build: Add check for robust mutexesSander Vrijders2017-08-0310-31/+37
|/ / / / | | | | | | | | | | | | | | | | | | | | This adds a check for robust mutexes. The constant HAVE_ROBUST_MUTEX is set accordingly in config.h. It also adds some other fixes to make the prototype compile on the Hurd.
| | | * Merge remote-tracking branch 'origin/testing-deadlines' into beDimitri Staessens2017-08-034-16/+54
| |_|/| |/| |/
| | * ipcpd: Fix pthread_cond_timedwait deadlinesdimitri staessens2017-08-034-16/+54
| |/ | | | | | | | | | | This fixes pthread_condtimedwaits in the flow allocator of all IPCPs that had bad deadlines set (the interval instead of the actual absolute time).
* | Merged in sandervrijders/ouroboros/be-open-flow (pull request #538)Sander Vrijders2017-08-016-331/+89
|\ \ | | | | | | | | | | | | | | | lib: Simplify opening flows Approved-by: dimitri staessens <dimitri.staessens@ugent.be>
| * | lib: Simplify initializing flowsSander Vrijders2017-08-016-331/+89
|/ / | | | | | | | | This refactors dev.c to have a common function called init_flow that is called whenever a flow is allocated in dev.c
* | Merged in dstaesse/ouroboros/be-fixes (pull request #537)dimitri staessens2017-07-305-48/+64
|\ \ | | | | | | | | | Be fixes
| * | ipcpd: Fix registration bug in DHTdimitri staessens2017-07-291-2/+2
| | |
| * | ipcpd: Add multithreading to schedulerdimitri staessens2017-07-292-26/+44
| | | | | | | | | | | | | | | | | | | | | | | | The scheduler in the normal IPCP is now multithreaded. While useful in itself for scalability, it currently solves thread starvation in case of executing post_sdu operations that may require a response. This could be further revised in the future to split the SDU handling threads from the component tasks.
| * | ipcpd: Cleanup sdb after unpackeddimitri staessens2017-07-291-6/+3
| | |
| * | ipcpd: Harmonize logs in directorydimitri staessens2017-07-291-1/+5
| | |
| * | ipcpd: Some fixes in DHTdimitri staessens2017-07-291-13/+10
|/ / | | | | | | | | | | | | Fixes a memory leak when the DHT is destroyed during a send_msg. Fixes a deadlock when destroying the DHT with a pending lookup. Removes some debug logs that clutter output due to expected redundant FIND_VALUE responses.
* | Merged in dstaesse/ouroboros/be-tpm (pull request #536)dimitri staessens2017-07-267-360/+365
|\ \ | | | | | | | | | lib: Add threadpool manager
| * | lib: Add threadpool managerdimitri staessens2017-07-267-360/+365
| | | | | | | | | | | | | | | | | | | | | | | | This adds a threadpool manager component in the library that is used in the IRMd and IPCPs. The threadpool manager now doesn't detach threads but does a join when they exit. This solves a data race in the previous implementation where some threads were not completely finished upon release of some resources.
* | | Merged in dstaesse/ouroboros/be-dht-retry (pull request #535)dimitri staessens2017-07-241-4/+16
|\| | | | | | | | | | | ipcpd: Retry sending DHT response messages