summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* 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-051-22/+44
| | | | | | | 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 'testing' into beSander Vrijders2017-08-042-9/+17
|\
| * 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
|\|
| * 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).
* | build: Add check for robust mutexesSander Vrijders2017-08-037-30/+29
| | | | | | | | | | | | 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.
* | lib: Simplify initializing flowsSander Vrijders2017-08-014-326/+84
| | | | | | | | | | This refactors dev.c to have a common function called init_flow that is called whenever a flow is allocated in dev.c
* | ipcpd: Fix registration bug in DHTdimitri staessens2017-07-291-2/+2
| |
* | ipcpd: Add multithreading to schedulerdimitri staessens2017-07-291-25/+43
| | | | | | | | | | | | | | | | 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.
* | lib: Add threadpool managerdimitri staessens2017-07-265-352/+314
| | | | | | | | | | | | | | | | 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.
* | ipcpd: Retry sending DHT response messagesdimitri staessens2017-07-241-4/+16
| | | | | | | | | | | | | | This will make the remote retry sending responses when the DT component can't send the message. This is most useful at enrollment, when the remote's routing table may need to wait a bit on the routing component for a path to the new member,
* | Merge branch 'testing' into beSander Vrijders2017-07-201-8/+11
|\|
| * lib: Fix destruction of CDAP instancesdimitri staessens2017-07-201-8/+11
| | | | | | | | | | | | | | The received message list was not correctly freed upon destruction of the CDAP object. There was also still a rare case in which thread cancellation would keep a lock, blocking the IPCP shutdown, which is also fixed.
* | Merge branch 'testing' into beSander Vrijders2017-07-201-7/+19
|\|
| * lib: Fix processing state in CDAPdimitri staessens2017-07-201-7/+19
| | | | | | | | | | | | The processing state was not correctly reset at all points in the loop, causing CDAP to block the IPCP on shutdown in some cases. This also adds a missing unlock and reorders some other unlocks.
* | ipcpd: Fix DHT lookup processingdimitri staessens2017-07-201-20/+25
| | | | | | | | | | Not all returned contacts were processed when a FIND_NODE or FIND_VALUE message was returned.
* | irmd: Fix order of IPCPsSander Vrijders2017-07-181-1/+1
| | | | | | | | | | This fixes the order of the IPCPs in the IRMd, so that the right type is queried first on flow allocation.
* | Merged in dstaesse/ouroboros/be-dht (pull request #529)dimitri staessens2017-07-1816-161/+2742
|\ \ | |/ |/| | | ipcpd: Add DHT as directory in normal IPCP
| * ipcpd: Add DHT as directory in normal IPCPdimitri staessens2017-07-1816-161/+2742
| | | | | | | | | | | | | | | | | | This implements a Distributed Hash Table (DHT) based on the Kademlia protocol, with default parameters set as used in the BitTorrent Mainline DHT. This initial implementation is almost feature complete, except for some things to be done after a testing period: caching and stale peer bumping, and setting the expiration timeout via the IRM tool.
* | lib: Wait for fqueue loop at cdap_del_flowdimitri staessens2017-07-161-62/+80
| | | | | | | | | | | | | | The enrollment calls dealloc immediately after cdap_del_flow(), but the CDAP instance may still have that fd in its fqueue loop. cdap_del_flow will now wait for an fqueue loop to end before returning, to make sure the flow is not needed anymore.
* | ipcpd: Log exit status before log_fini()dimitri staessens2017-07-161-2/+2
|/
* ipcpd, lib, irmd: Hardcode shim hash algorithmsSander Vrijders2017-07-127-49/+64
| | | | | | | This will hardcode the shim hash algorithms as they don't have an enrollment phase. Fixes #44
* irmd: Shutdown sanitizer without cancellationdimitri staessens2017-07-122-12/+28
|
* ipcpd: Shutdown shim-udp without cancellationdimitri staessens2017-07-121-17/+14
|
* ipcpd: Check connmgr acceptor thread at createdimitri staessens2017-07-121-1/+2
|
* lib: Fix formatting in irm.cdimitri staessens2017-07-121-2/+1
|
* lib: Make read_msg static in cacep.cdimitri staessens2017-07-121-2/+2
|
* lib: Add secure random generatordimitri staessens2017-07-092-5/+81
| | | | | This adds a secure random number generator. It will use OS specific calls with a fallback to OpenSSL if available.
* lib: Fix bug and add test for time_utilsdimitri staessens2017-07-053-6/+173
|
* lib: Handle errors when creating cdap_req structsdimitri staessens2017-07-041-2/+13
|
* lib: Fix memleak in FRCT enrollmentdimitri staessens2017-07-031-0/+3
|
* lib, ipcpd, irmd: Add full-fledged QoSSander Vrijders2017-06-2116-56/+270
| | | | | | | This adds more Quality of Service support to Ouroboros. One part is the network specific characteristics such as bandwidth, delay, ... The other part is end-to-end QoS like reliability, window based flow control, ...
* lib: include missing headers in dev.cdimitri staessens2017-06-211-8/+8
| | | | | The dev.c source file had some missing include headers. This PR fixes inconsistencies between the definitions and declarations in ipcp-dev.h
* ipcpd: Fix flow allocation over normaldimitri staessens2017-06-192-3/+1
|
* Merged in dstaesse/ouroboros/be-macro (pull request #514)dimitri staessens2017-06-054-4/+4
|\ | | | | | | include: Fix macro for printing hash
| * include: Fix macro for printing hashdimitri staessens2017-06-044-4/+4
| |
* | ipcpd: Fix routing type configurationdimitri staessens2017-06-051-5/+6
| |
* | ipcpd: Fix flow allocation over UDP shimdimitri staessens2017-06-041-1/+1
| |
* | lib, irmd: Handle case fallthrough in gcc 7dimitri staessens2017-06-042-0/+2
|/
* ipcpd: Start DT component before flow allocatordimitri staessens2017-05-241-15/+15
|
* lib: Fix bug in bitmapdimitri staessens2017-05-242-8/+18
|
* ipcpd: Allow registering protocol machines with DTdimitri staessens2017-05-244-119/+176
| | | | | | Other protocol machines now have to register on top of the DT AE. This allows multiple instances of the same protocol machine and avoids preallocating fds for each protocol machine instance.
* lib: Fix some bugs in dev.cdimitri staessens2017-05-231-45/+55
| | | | | | | Fixed releasing an allocated fd on failure. As the sending of dealloc messages has been deprecated, dealloc was simplified by removing a stale block of code (replaced with an assertion). Fixed reading some variables without a necessary lock.